mirror of https://gitee.com/openkylin/linux.git
Merge branch 'master' of ../linux-2.6/
This commit is contained in:
commit
8d3c202be2
|
@ -109,6 +109,8 @@ cpu-hotplug.txt
|
|||
- document describing CPU hotplug support in the Linux kernel.
|
||||
cpu-load.txt
|
||||
- document describing how CPU load statistics are collected.
|
||||
cpuidle/
|
||||
- info on CPU_IDLE, CPU idle state management subsystem.
|
||||
cpusets.txt
|
||||
- documents the cpusets feature; assign CPUs and Mem to a set of tasks.
|
||||
cputopology.txt
|
||||
|
|
|
@ -8,7 +8,7 @@
|
|||
|
||||
DOCBOOKS := wanbook.xml z8530book.xml mcabook.xml videobook.xml \
|
||||
kernel-hacking.xml kernel-locking.xml deviceiobook.xml \
|
||||
procfs-guide.xml writing_usb_driver.xml \
|
||||
procfs-guide.xml writing_usb_driver.xml networking.xml \
|
||||
kernel-api.xml filesystems.xml lsm.xml usb.xml \
|
||||
gadget.xml libata.xml mtdnand.xml librs.xml rapidio.xml \
|
||||
genericirq.xml s390-drivers.xml uio-howto.xml scsi.xml
|
||||
|
|
|
@ -398,4 +398,24 @@ an example.
|
|||
|
||||
</chapter>
|
||||
|
||||
<chapter id="splice">
|
||||
<title>splice API</title>
|
||||
<para>
|
||||
splice is a method for moving blocks of data around inside the
|
||||
kernel, without continually transferring them between the kernel
|
||||
and user space.
|
||||
</para>
|
||||
!Ffs/splice.c
|
||||
</chapter>
|
||||
|
||||
<chapter id="pipes">
|
||||
<title>pipes API</title>
|
||||
<para>
|
||||
Pipe interfaces are all for in-kernel (builtin image) use.
|
||||
They are not exported for use by modules.
|
||||
</para>
|
||||
!Iinclude/linux/pipe_fs_i.h
|
||||
!Ffs/pipe.c
|
||||
</chapter>
|
||||
|
||||
</book>
|
||||
|
|
|
@ -204,65 +204,6 @@ X!Ilib/string.c
|
|||
</sect1>
|
||||
</chapter>
|
||||
|
||||
<chapter id="netcore">
|
||||
<title>Linux Networking</title>
|
||||
<sect1><title>Networking Base Types</title>
|
||||
!Iinclude/linux/net.h
|
||||
</sect1>
|
||||
<sect1><title>Socket Buffer Functions</title>
|
||||
!Iinclude/linux/skbuff.h
|
||||
!Iinclude/net/sock.h
|
||||
!Enet/socket.c
|
||||
!Enet/core/skbuff.c
|
||||
!Enet/core/sock.c
|
||||
!Enet/core/datagram.c
|
||||
!Enet/core/stream.c
|
||||
</sect1>
|
||||
<sect1><title>Socket Filter</title>
|
||||
!Enet/core/filter.c
|
||||
</sect1>
|
||||
<sect1><title>Generic Network Statistics</title>
|
||||
!Iinclude/linux/gen_stats.h
|
||||
!Enet/core/gen_stats.c
|
||||
!Enet/core/gen_estimator.c
|
||||
</sect1>
|
||||
<sect1><title>SUN RPC subsystem</title>
|
||||
<!-- The !D functionality is not perfect, garbage has to be protected by comments
|
||||
!Dnet/sunrpc/sunrpc_syms.c
|
||||
-->
|
||||
!Enet/sunrpc/xdr.c
|
||||
!Enet/sunrpc/svcsock.c
|
||||
!Enet/sunrpc/sched.c
|
||||
</sect1>
|
||||
</chapter>
|
||||
|
||||
<chapter id="netdev">
|
||||
<title>Network device support</title>
|
||||
<sect1><title>Driver Support</title>
|
||||
!Enet/core/dev.c
|
||||
!Enet/ethernet/eth.c
|
||||
!Enet/sched/sch_generic.c
|
||||
!Iinclude/linux/etherdevice.h
|
||||
!Iinclude/linux/netdevice.h
|
||||
</sect1>
|
||||
<sect1><title>PHY Support</title>
|
||||
!Edrivers/net/phy/phy.c
|
||||
!Idrivers/net/phy/phy.c
|
||||
!Edrivers/net/phy/phy_device.c
|
||||
!Idrivers/net/phy/phy_device.c
|
||||
!Edrivers/net/phy/mdio_bus.c
|
||||
!Idrivers/net/phy/mdio_bus.c
|
||||
</sect1>
|
||||
<!-- FIXME: Removed for now since no structured comments in source
|
||||
<sect1><title>Wireless</title>
|
||||
X!Enet/core/wireless.c
|
||||
</sect1>
|
||||
-->
|
||||
<sect1><title>Synchronous PPP</title>
|
||||
!Edrivers/net/wan/syncppp.c
|
||||
</sect1>
|
||||
</chapter>
|
||||
|
||||
<chapter id="modload">
|
||||
<title>Module Support</title>
|
||||
<sect1><title>Module Loading</title>
|
||||
|
@ -508,11 +449,6 @@ X!Isound/sound_firmware.c
|
|||
!Edrivers/serial/8250.c
|
||||
</chapter>
|
||||
|
||||
<chapter id="z85230">
|
||||
<title>Z85230 Support Library</title>
|
||||
!Edrivers/net/wan/z85230.c
|
||||
</chapter>
|
||||
|
||||
<chapter id="fbdev">
|
||||
<title>Frame Buffer Library</title>
|
||||
|
||||
|
@ -712,24 +648,4 @@ X!Idrivers/video/console/fonts.c
|
|||
!Edrivers/i2c/i2c-core.c
|
||||
</chapter>
|
||||
|
||||
<chapter id="splice">
|
||||
<title>splice API</title>
|
||||
<para>
|
||||
splice is a method for moving blocks of data around inside the
|
||||
kernel, without continually transferring them between the kernel
|
||||
and user space.
|
||||
</para>
|
||||
!Ffs/splice.c
|
||||
</chapter>
|
||||
|
||||
<chapter id="pipes">
|
||||
<title>pipes API</title>
|
||||
<para>
|
||||
Pipe interfaces are all for in-kernel (builtin image) use.
|
||||
They are not exported for use by modules.
|
||||
</para>
|
||||
!Iinclude/linux/pipe_fs_i.h
|
||||
!Ffs/pipe.c
|
||||
</chapter>
|
||||
|
||||
</book>
|
||||
|
|
|
@ -0,0 +1,106 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.1.2//EN"
|
||||
"http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd" []>
|
||||
|
||||
<book id="LinuxNetworking">
|
||||
<bookinfo>
|
||||
<title>Linux Networking and Network Devices APIs</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="netcore">
|
||||
<title>Linux Networking</title>
|
||||
<sect1><title>Networking Base Types</title>
|
||||
!Iinclude/linux/net.h
|
||||
</sect1>
|
||||
<sect1><title>Socket Buffer Functions</title>
|
||||
!Iinclude/linux/skbuff.h
|
||||
!Iinclude/net/sock.h
|
||||
!Enet/socket.c
|
||||
!Enet/core/skbuff.c
|
||||
!Enet/core/sock.c
|
||||
!Enet/core/datagram.c
|
||||
!Enet/core/stream.c
|
||||
</sect1>
|
||||
<sect1><title>Socket Filter</title>
|
||||
!Enet/core/filter.c
|
||||
</sect1>
|
||||
<sect1><title>Generic Network Statistics</title>
|
||||
!Iinclude/linux/gen_stats.h
|
||||
!Enet/core/gen_stats.c
|
||||
!Enet/core/gen_estimator.c
|
||||
</sect1>
|
||||
<sect1><title>SUN RPC subsystem</title>
|
||||
<!-- The !D functionality is not perfect, garbage has to be protected by comments
|
||||
!Dnet/sunrpc/sunrpc_syms.c
|
||||
-->
|
||||
!Enet/sunrpc/xdr.c
|
||||
!Enet/sunrpc/svc_xprt.c
|
||||
!Enet/sunrpc/xprt.c
|
||||
!Enet/sunrpc/sched.c
|
||||
!Enet/sunrpc/socklib.c
|
||||
!Enet/sunrpc/stats.c
|
||||
!Enet/sunrpc/rpc_pipe.c
|
||||
!Enet/sunrpc/rpcb_clnt.c
|
||||
!Enet/sunrpc/clnt.c
|
||||
</sect1>
|
||||
</chapter>
|
||||
|
||||
<chapter id="netdev">
|
||||
<title>Network device support</title>
|
||||
<sect1><title>Driver Support</title>
|
||||
!Enet/core/dev.c
|
||||
!Enet/ethernet/eth.c
|
||||
!Enet/sched/sch_generic.c
|
||||
!Iinclude/linux/etherdevice.h
|
||||
!Iinclude/linux/netdevice.h
|
||||
</sect1>
|
||||
<sect1><title>PHY Support</title>
|
||||
!Edrivers/net/phy/phy.c
|
||||
!Idrivers/net/phy/phy.c
|
||||
!Edrivers/net/phy/phy_device.c
|
||||
!Idrivers/net/phy/phy_device.c
|
||||
!Edrivers/net/phy/mdio_bus.c
|
||||
!Idrivers/net/phy/mdio_bus.c
|
||||
</sect1>
|
||||
<!-- FIXME: Removed for now since no structured comments in source
|
||||
<sect1><title>Wireless</title>
|
||||
X!Enet/core/wireless.c
|
||||
</sect1>
|
||||
-->
|
||||
<sect1><title>Synchronous PPP</title>
|
||||
!Edrivers/net/wan/syncppp.c
|
||||
</sect1>
|
||||
</chapter>
|
||||
|
||||
</book>
|
|
@ -25,7 +25,7 @@ the NMI handler to take the default machine-specific action.
|
|||
This nmi_callback variable is a global function pointer to the current
|
||||
NMI handler.
|
||||
|
||||
fastcall void do_nmi(struct pt_regs * regs, long error_code)
|
||||
void do_nmi(struct pt_regs * regs, long error_code)
|
||||
{
|
||||
int cpu;
|
||||
|
||||
|
|
|
@ -20,7 +20,11 @@ kernel patches.
|
|||
4: ppc64 is a good architecture for cross-compilation checking because it
|
||||
tends to use `unsigned long' for 64-bit quantities.
|
||||
|
||||
5: Matches kernel coding style(!)
|
||||
5: Check your patch for general style as detailed in
|
||||
Documentation/CodingStyle. Check for trivial violations with the
|
||||
patch style checker prior to submission (scripts/checkpatch.pl).
|
||||
You should be able to justify all violations that remain in
|
||||
your patch.
|
||||
|
||||
6: Any new or modified CONFIG options don't muck up the config menu.
|
||||
|
||||
|
@ -79,13 +83,3 @@ kernel patches.
|
|||
23: Tested after it has been merged into the -mm patchset to make sure
|
||||
that it still works with all of the other queued patches and various
|
||||
changes in the VM, VFS, and other subsystems.
|
||||
|
||||
24: Avoid whitespace damage such as indenting with spaces or whitespace
|
||||
at the end of lines. You can test this by feeding the patch to
|
||||
"git apply --check --whitespace=error-all"
|
||||
|
||||
25: Check your patch for general style as detailed in
|
||||
Documentation/CodingStyle. Check for trivial violations with the
|
||||
patch style checker prior to submission (scripts/checkpatch.pl).
|
||||
You should be able to justify all violations that remain in
|
||||
your patch.
|
||||
|
|
|
@ -186,7 +186,8 @@ If the atomic value v is not equal to u, this function adds a to v, and
|
|||
returns non zero. If v is equal to u then it returns zero. This is done as
|
||||
an atomic operation.
|
||||
|
||||
atomic_add_unless requires explicit memory barriers around the operation.
|
||||
atomic_add_unless requires explicit memory barriers around the operation
|
||||
unless it fails (returns 0).
|
||||
|
||||
atomic_inc_not_zero, equivalent to atomic_add_unless(v, 1, 0)
|
||||
|
||||
|
|
|
@ -28,7 +28,7 @@ CONTENTS:
|
|||
4. Questions
|
||||
|
||||
1. Control Groups
|
||||
==========
|
||||
=================
|
||||
|
||||
1.1 What are cgroups ?
|
||||
----------------------
|
||||
|
@ -143,10 +143,10 @@ proliferation of such cgroups.
|
|||
|
||||
Also lets say that the administrator would like to give enhanced network
|
||||
access temporarily to a student's browser (since it is night and the user
|
||||
wants to do online gaming :) OR give one of the students simulation
|
||||
wants to do online gaming :)) OR give one of the students simulation
|
||||
apps enhanced CPU power,
|
||||
|
||||
With ability to write pids directly to resource classes, its just a
|
||||
With ability to write pids directly to resource classes, it's just a
|
||||
matter of :
|
||||
|
||||
# echo pid > /mnt/network/<new_class>/tasks
|
||||
|
@ -227,10 +227,13 @@ Each cgroup is represented by a directory in the cgroup file system
|
|||
containing the following files describing that cgroup:
|
||||
|
||||
- tasks: list of tasks (by pid) attached to that cgroup
|
||||
- notify_on_release flag: run /sbin/cgroup_release_agent on exit?
|
||||
- releasable flag: cgroup currently removeable?
|
||||
- notify_on_release flag: run the release agent on exit?
|
||||
- release_agent: the path to use for release notifications (this file
|
||||
exists in the top cgroup only)
|
||||
|
||||
Other subsystems such as cpusets may add additional files in each
|
||||
cgroup dir
|
||||
cgroup dir.
|
||||
|
||||
New cgroups are created using the mkdir system call or shell
|
||||
command. The properties of a cgroup, such as its flags, are
|
||||
|
@ -257,7 +260,7 @@ performance.
|
|||
To allow access from a cgroup to the css_sets (and hence tasks)
|
||||
that comprise it, a set of cg_cgroup_link objects form a lattice;
|
||||
each cg_cgroup_link is linked into a list of cg_cgroup_links for
|
||||
a single cgroup on its cont_link_list field, and a list of
|
||||
a single cgroup on its cgrp_link_list field, and a list of
|
||||
cg_cgroup_links for a single css_set on its cg_link_list.
|
||||
|
||||
Thus the set of tasks in a cgroup can be listed by iterating over
|
||||
|
@ -271,9 +274,6 @@ for cgroups, with a minimum of additional kernel code.
|
|||
1.4 What does notify_on_release do ?
|
||||
------------------------------------
|
||||
|
||||
*** notify_on_release is disabled in the current patch set. It will be
|
||||
*** reactivated in a future patch in a less-intrusive manner
|
||||
|
||||
If the notify_on_release flag is enabled (1) in a cgroup, then
|
||||
whenever the last task in the cgroup leaves (exits or attaches to
|
||||
some other cgroup) and the last child cgroup of that cgroup
|
||||
|
@ -360,8 +360,8 @@ Now you want to do something with this cgroup.
|
|||
|
||||
In this directory you can find several files:
|
||||
# ls
|
||||
notify_on_release release_agent tasks
|
||||
(plus whatever files are added by the attached subsystems)
|
||||
notify_on_release releasable tasks
|
||||
(plus whatever files added by the attached subsystems)
|
||||
|
||||
Now attach your shell to this cgroup:
|
||||
# /bin/echo $$ > tasks
|
||||
|
@ -404,19 +404,13 @@ with a subsystem id which will be assigned by the cgroup system.
|
|||
Other fields in the cgroup_subsys object include:
|
||||
|
||||
- subsys_id: a unique array index for the subsystem, indicating which
|
||||
entry in cgroup->subsys[] this subsystem should be
|
||||
managing. Initialized by cgroup_register_subsys(); prior to this
|
||||
it should be initialized to -1
|
||||
entry in cgroup->subsys[] this subsystem should be managing.
|
||||
|
||||
- hierarchy: an index indicating which hierarchy, if any, this
|
||||
subsystem is currently attached to. If this is -1, then the
|
||||
subsystem is not attached to any hierarchy, and all tasks should be
|
||||
considered to be members of the subsystem's top_cgroup. It should
|
||||
be initialized to -1.
|
||||
- name: should be initialized to a unique subsystem name. Should be
|
||||
no longer than MAX_CGROUP_TYPE_NAMELEN.
|
||||
|
||||
- name: should be initialized to a unique subsystem name prior to
|
||||
calling cgroup_register_subsystem. Should be no longer than
|
||||
MAX_CGROUP_TYPE_NAMELEN
|
||||
- early_init: indicate if the subsystem needs early initialization
|
||||
at system boot.
|
||||
|
||||
Each cgroup object created by the system has an array of pointers,
|
||||
indexed by subsystem id; this pointer is entirely managed by the
|
||||
|
@ -434,8 +428,6 @@ situation.
|
|||
See kernel/cgroup.c for more details.
|
||||
|
||||
Subsystems can take/release the cgroup_mutex via the functions
|
||||
cgroup_lock()/cgroup_unlock(), and can
|
||||
take/release the callback_mutex via the functions
|
||||
cgroup_lock()/cgroup_unlock().
|
||||
|
||||
Accessing a task's cgroup pointer may be done in the following ways:
|
||||
|
@ -444,7 +436,7 @@ Accessing a task's cgroup pointer may be done in the following ways:
|
|||
- inside an rcu_read_lock() section via rcu_dereference()
|
||||
|
||||
3.3 Subsystem API
|
||||
--------------------------
|
||||
-----------------
|
||||
|
||||
Each subsystem should:
|
||||
|
||||
|
@ -455,7 +447,8 @@ Each subsystem may export the following methods. The only mandatory
|
|||
methods are create/destroy. Any others that are null are presumed to
|
||||
be successful no-ops.
|
||||
|
||||
struct cgroup_subsys_state *create(struct cgroup *cont)
|
||||
struct cgroup_subsys_state *create(struct cgroup_subsys *ss,
|
||||
struct cgroup *cgrp)
|
||||
(cgroup_mutex held by caller)
|
||||
|
||||
Called to create a subsystem state object for a cgroup. The
|
||||
|
@ -470,7 +463,7 @@ identified by the passed cgroup object having a NULL parent (since
|
|||
it's the root of the hierarchy) and may be an appropriate place for
|
||||
initialization code.
|
||||
|
||||
void destroy(struct cgroup *cont)
|
||||
void destroy(struct cgroup_subsys *ss, struct cgroup *cgrp)
|
||||
(cgroup_mutex held by caller)
|
||||
|
||||
The cgroup system is about to destroy the passed cgroup; the subsystem
|
||||
|
@ -481,7 +474,14 @@ cgroup->parent is still valid. (Note - can also be called for a
|
|||
newly-created cgroup if an error occurs after this subsystem's
|
||||
create() method has been called for the new cgroup).
|
||||
|
||||
int can_attach(struct cgroup_subsys *ss, struct cgroup *cont,
|
||||
void pre_destroy(struct cgroup_subsys *ss, struct cgroup *cgrp);
|
||||
(cgroup_mutex held by caller)
|
||||
|
||||
Called before checking the reference count on each subsystem. This may
|
||||
be useful for subsystems which have some extra references even if
|
||||
there are not tasks in the cgroup.
|
||||
|
||||
int can_attach(struct cgroup_subsys *ss, struct cgroup *cgrp,
|
||||
struct task_struct *task)
|
||||
(cgroup_mutex held by caller)
|
||||
|
||||
|
@ -492,8 +492,8 @@ unspecified task can be moved into the cgroup. Note that this isn't
|
|||
called on a fork. If this method returns 0 (success) then this should
|
||||
remain valid while the caller holds cgroup_mutex.
|
||||
|
||||
void attach(struct cgroup_subsys *ss, struct cgroup *cont,
|
||||
struct cgroup *old_cont, struct task_struct *task)
|
||||
void attach(struct cgroup_subsys *ss, struct cgroup *cgrp,
|
||||
struct cgroup *old_cgrp, struct task_struct *task)
|
||||
|
||||
Called after the task has been attached to the cgroup, to allow any
|
||||
post-attachment activity that requires memory allocations or blocking.
|
||||
|
@ -505,9 +505,9 @@ registration for all existing tasks.
|
|||
|
||||
void exit(struct cgroup_subsys *ss, struct task_struct *task)
|
||||
|
||||
Called during task exit
|
||||
Called during task exit.
|
||||
|
||||
int populate(struct cgroup_subsys *ss, struct cgroup *cont)
|
||||
int populate(struct cgroup_subsys *ss, struct cgroup *cgrp)
|
||||
|
||||
Called after creation of a cgroup to allow a subsystem to populate
|
||||
the cgroup directory with file entries. The subsystem should make
|
||||
|
@ -516,7 +516,7 @@ include/linux/cgroup.h for details). Note that although this
|
|||
method can return an error code, the error code is currently not
|
||||
always handled well.
|
||||
|
||||
void post_clone(struct cgroup_subsys *ss, struct cgroup *cont)
|
||||
void post_clone(struct cgroup_subsys *ss, struct cgroup *cgrp)
|
||||
|
||||
Called at the end of cgroup_clone() to do any paramater
|
||||
initialization which might be required before a task could attach. For
|
||||
|
|
|
@ -170,14 +170,14 @@ NOTE: We can use a suffix (k, K, m, M, g or G) to indicate values in kilo,
|
|||
mega or gigabytes.
|
||||
|
||||
# cat /cgroups/0/memory.limit_in_bytes
|
||||
4194304 Bytes
|
||||
4194304
|
||||
|
||||
NOTE: The interface has now changed to display the usage in bytes
|
||||
instead of pages
|
||||
|
||||
We can check the usage:
|
||||
# cat /cgroups/0/memory.usage_in_bytes
|
||||
1216512 Bytes
|
||||
1216512
|
||||
|
||||
A successful write to this file does not guarantee a successful set of
|
||||
this limit to the value written into the file. This can be due to a
|
||||
|
@ -187,7 +187,7 @@ this file after a write to guarantee the value committed by the kernel.
|
|||
|
||||
# echo -n 1 > memory.limit_in_bytes
|
||||
# cat memory.limit_in_bytes
|
||||
4096 Bytes
|
||||
4096
|
||||
|
||||
The memory.failcnt field gives the number of times that the cgroup limit was
|
||||
exceeded.
|
||||
|
@ -233,13 +233,6 @@ cgroup might have some charge associated with it, even though all
|
|||
tasks have migrated away from it. Such charges are automatically dropped at
|
||||
rmdir() if there are no tasks.
|
||||
|
||||
4.4 Choosing what to account -- Page Cache (unmapped) vs RSS (mapped)?
|
||||
|
||||
The type of memory accounted by the cgroup can be limited to just
|
||||
mapped pages by writing "1" to memory.control_type field
|
||||
|
||||
echo -n 1 > memory.control_type
|
||||
|
||||
5. TODO
|
||||
|
||||
1. Add support for accounting huge pages (as a separate controller)
|
||||
|
@ -262,18 +255,19 @@ References
|
|||
3. Emelianov, Pavel. Resource controllers based on process cgroups
|
||||
http://lkml.org/lkml/2007/3/6/198
|
||||
4. Emelianov, Pavel. RSS controller based on process cgroups (v2)
|
||||
http://lkml.org/lkml/2007/4/9/74
|
||||
http://lkml.org/lkml/2007/4/9/78
|
||||
5. Emelianov, Pavel. RSS controller based on process cgroups (v3)
|
||||
http://lkml.org/lkml/2007/5/30/244
|
||||
6. Menage, Paul. Control Groups v10, http://lwn.net/Articles/236032/
|
||||
7. Vaidyanathan, Srinivasan, Control Groups: Pagecache accounting and control
|
||||
subsystem (v3), http://lwn.net/Articles/235534/
|
||||
8. Singh, Balbir. RSS controller V2 test results (lmbench),
|
||||
8. Singh, Balbir. RSS controller v2 test results (lmbench),
|
||||
http://lkml.org/lkml/2007/5/17/232
|
||||
9. Singh, Balbir. RSS controller V2 AIM9 results
|
||||
9. Singh, Balbir. RSS controller v2 AIM9 results
|
||||
http://lkml.org/lkml/2007/5/18/1
|
||||
10. Singh, Balbir. Memory controller v6 results,
|
||||
10. Singh, Balbir. Memory controller v6 test results,
|
||||
http://lkml.org/lkml/2007/8/19/36
|
||||
11. Singh, Balbir. Memory controller v6, http://lkml.org/lkml/2007/8/17/69
|
||||
11. Singh, Balbir. Memory controller introduction (v6),
|
||||
http://lkml.org/lkml/2007/8/17/69
|
||||
12. Corbet, Jonathan, Controlling memory use in cgroups,
|
||||
http://lwn.net/Articles/243795/
|
||||
|
|
|
@ -0,0 +1,23 @@
|
|||
|
||||
Supporting multiple CPU idle levels in kernel
|
||||
|
||||
cpuidle
|
||||
|
||||
General Information:
|
||||
|
||||
Various CPUs today support multiple idle levels that are differentiated
|
||||
by varying exit latencies and power consumption during idle.
|
||||
cpuidle is a generic in-kernel infrastructure that separates
|
||||
idle policy (governor) from idle mechanism (driver) and provides a
|
||||
standardized infrastructure to support independent development of
|
||||
governors and drivers.
|
||||
|
||||
cpuidle resides under drivers/cpuidle.
|
||||
|
||||
Boot options:
|
||||
"cpuidle_sysfs_switch"
|
||||
enables current_governor interface in /sys/devices/system/cpu/cpuidle/,
|
||||
which can be used to switch governors at run time. This boot option
|
||||
is meant for developer testing only. In normal usage, kernel picks the
|
||||
best governor based on governor ratings.
|
||||
SEE ALSO: sysfs.txt in this directory.
|
|
@ -0,0 +1,31 @@
|
|||
|
||||
|
||||
Supporting multiple CPU idle levels in kernel
|
||||
|
||||
cpuidle drivers
|
||||
|
||||
|
||||
|
||||
|
||||
cpuidle driver hooks into the cpuidle infrastructure and handles the
|
||||
architecture/platform dependent part of CPU idle states. Driver
|
||||
provides the platform idle state detection capability and also
|
||||
has mechanisms in place to support actual entry-exit into CPU idle states.
|
||||
|
||||
cpuidle driver initializes the cpuidle_device structure for each CPU device
|
||||
and registers with cpuidle using cpuidle_register_device.
|
||||
|
||||
It can also support the dynamic changes (like battery <-> AC), by using
|
||||
cpuidle_pause_and_lock, cpuidle_disable_device and cpuidle_enable_device,
|
||||
cpuidle_resume_and_unlock.
|
||||
|
||||
Interfaces:
|
||||
extern int cpuidle_register_driver(struct cpuidle_driver *drv);
|
||||
extern void cpuidle_unregister_driver(struct cpuidle_driver *drv);
|
||||
extern int cpuidle_register_device(struct cpuidle_device *dev);
|
||||
extern void cpuidle_unregister_device(struct cpuidle_device *dev);
|
||||
|
||||
extern void cpuidle_pause_and_lock(void);
|
||||
extern void cpuidle_resume_and_unlock(void);
|
||||
extern int cpuidle_enable_device(struct cpuidle_device *dev);
|
||||
extern void cpuidle_disable_device(struct cpuidle_device *dev);
|
|
@ -0,0 +1,29 @@
|
|||
|
||||
|
||||
|
||||
Supporting multiple CPU idle levels in kernel
|
||||
|
||||
cpuidle governors
|
||||
|
||||
|
||||
|
||||
|
||||
cpuidle governor is policy routine that decides what idle state to enter at
|
||||
any given time. cpuidle core uses different callbacks to the governor.
|
||||
|
||||
* enable() to enable governor for a particular device
|
||||
* disable() to disable governor for a particular device
|
||||
* select() to select an idle state to enter
|
||||
* reflect() called after returning from the idle state, which can be used
|
||||
by the governor for some record keeping.
|
||||
|
||||
More than one governor can be registered at the same time and
|
||||
users can switch between drivers using /sysfs interface (when enabled).
|
||||
More than one governor part is supported for developers to easily experiment
|
||||
with different governors. By default, most optimal governor based on your
|
||||
kernel configuration and platform will be selected by cpuidle.
|
||||
|
||||
Interfaces:
|
||||
extern int cpuidle_register_governor(struct cpuidle_governor *gov);
|
||||
extern void cpuidle_unregister_governor(struct cpuidle_governor *gov);
|
||||
struct cpuidle_governor
|
|
@ -0,0 +1,79 @@
|
|||
|
||||
|
||||
Supporting multiple CPU idle levels in kernel
|
||||
|
||||
cpuidle sysfs
|
||||
|
||||
System global cpuidle related information and tunables are under
|
||||
/sys/devices/system/cpu/cpuidle
|
||||
|
||||
The current interfaces in this directory has self-explanatory names:
|
||||
* current_driver
|
||||
* current_governor_ro
|
||||
|
||||
With cpuidle_sysfs_switch boot option (meant for developer testing)
|
||||
following objects are visible instead.
|
||||
* current_driver
|
||||
* available_governors
|
||||
* current_governor
|
||||
In this case users can switch the governor at run time by writing
|
||||
to current_governor.
|
||||
|
||||
|
||||
Per logical CPU specific cpuidle information are under
|
||||
/sys/devices/system/cpu/cpuX/cpuidle
|
||||
for each online cpu X
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
# ls -lR /sys/devices/system/cpu/cpu0/cpuidle/
|
||||
/sys/devices/system/cpu/cpu0/cpuidle/:
|
||||
total 0
|
||||
drwxr-xr-x 2 root root 0 Feb 8 10:42 state0
|
||||
drwxr-xr-x 2 root root 0 Feb 8 10:42 state1
|
||||
drwxr-xr-x 2 root root 0 Feb 8 10:42 state2
|
||||
drwxr-xr-x 2 root root 0 Feb 8 10:42 state3
|
||||
|
||||
/sys/devices/system/cpu/cpu0/cpuidle/state0:
|
||||
total 0
|
||||
-r--r--r-- 1 root root 4096 Feb 8 10:42 desc
|
||||
-r--r--r-- 1 root root 4096 Feb 8 10:42 latency
|
||||
-r--r--r-- 1 root root 4096 Feb 8 10:42 name
|
||||
-r--r--r-- 1 root root 4096 Feb 8 10:42 power
|
||||
-r--r--r-- 1 root root 4096 Feb 8 10:42 time
|
||||
-r--r--r-- 1 root root 4096 Feb 8 10:42 usage
|
||||
|
||||
/sys/devices/system/cpu/cpu0/cpuidle/state1:
|
||||
total 0
|
||||
-r--r--r-- 1 root root 4096 Feb 8 10:42 desc
|
||||
-r--r--r-- 1 root root 4096 Feb 8 10:42 latency
|
||||
-r--r--r-- 1 root root 4096 Feb 8 10:42 name
|
||||
-r--r--r-- 1 root root 4096 Feb 8 10:42 power
|
||||
-r--r--r-- 1 root root 4096 Feb 8 10:42 time
|
||||
-r--r--r-- 1 root root 4096 Feb 8 10:42 usage
|
||||
|
||||
/sys/devices/system/cpu/cpu0/cpuidle/state2:
|
||||
total 0
|
||||
-r--r--r-- 1 root root 4096 Feb 8 10:42 desc
|
||||
-r--r--r-- 1 root root 4096 Feb 8 10:42 latency
|
||||
-r--r--r-- 1 root root 4096 Feb 8 10:42 name
|
||||
-r--r--r-- 1 root root 4096 Feb 8 10:42 power
|
||||
-r--r--r-- 1 root root 4096 Feb 8 10:42 time
|
||||
-r--r--r-- 1 root root 4096 Feb 8 10:42 usage
|
||||
|
||||
/sys/devices/system/cpu/cpu0/cpuidle/state3:
|
||||
total 0
|
||||
-r--r--r-- 1 root root 4096 Feb 8 10:42 desc
|
||||
-r--r--r-- 1 root root 4096 Feb 8 10:42 latency
|
||||
-r--r--r-- 1 root root 4096 Feb 8 10:42 name
|
||||
-r--r--r-- 1 root root 4096 Feb 8 10:42 power
|
||||
-r--r--r-- 1 root root 4096 Feb 8 10:42 time
|
||||
-r--r--r-- 1 root root 4096 Feb 8 10:42 usage
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
|
||||
* desc : Small description about the idle state (string)
|
||||
* latency : Latency to exit out of this idle state (in microseconds)
|
||||
* name : Name of the idle state (string)
|
||||
* power : Power consumed while in this idle state (in milliwatts)
|
||||
* time : Total time spent in this idle state (in microseconds)
|
||||
* usage : Number of times this state was entered (count)
|
|
@ -209,7 +209,7 @@ and name space for cpusets, with a minimum of additional kernel code.
|
|||
The cpus and mems files in the root (top_cpuset) cpuset are
|
||||
read-only. The cpus file automatically tracks the value of
|
||||
cpu_online_map using a CPU hotplug notifier, and the mems file
|
||||
automatically tracks the value of node_states[N_MEMORY]--i.e.,
|
||||
automatically tracks the value of node_states[N_HIGH_MEMORY]--i.e.,
|
||||
nodes with memory--using the cpuset_track_online_nodes() hook.
|
||||
|
||||
|
||||
|
|
|
@ -0,0 +1,79 @@
|
|||
Kernel driver adt7473
|
||||
======================
|
||||
|
||||
Supported chips:
|
||||
* Analog Devices ADT7473
|
||||
Prefix: 'adt7473'
|
||||
Addresses scanned: I2C 0x2C, 0x2D, 0x2E
|
||||
Datasheet: Publicly available at the Analog Devices website
|
||||
|
||||
Author: Darrick J. Wong
|
||||
|
||||
Description
|
||||
-----------
|
||||
|
||||
This driver implements support for the Analog Devices ADT7473 chip family.
|
||||
|
||||
The LM85 uses the 2-wire interface compatible with the SMBUS 2.0
|
||||
specification. Using an analog to digital converter it measures three (3)
|
||||
temperatures and two (2) voltages. It has three (3) 16-bit counters for
|
||||
measuring fan speed. There are three (3) PWM outputs that can be used
|
||||
to control fan speed.
|
||||
|
||||
A sophisticated control system for the PWM outputs is designed into the
|
||||
LM85 that allows fan speed to be adjusted automatically based on any of the
|
||||
three temperature sensors. Each PWM output is individually adjustable and
|
||||
programmable. Once configured, the ADT7473 will adjust the PWM outputs in
|
||||
response to the measured temperatures without further host intervention.
|
||||
This feature can also be disabled for manual control of the PWM's.
|
||||
|
||||
Each of the measured inputs (voltage, temperature, fan speed) has
|
||||
corresponding high/low limit values. The ADT7473 will signal an ALARM if
|
||||
any measured value exceeds either limit.
|
||||
|
||||
The ADT7473 samples all inputs continuously. The driver will not read
|
||||
the registers more often than once every other second. Further,
|
||||
configuration data is only read once per minute.
|
||||
|
||||
Special Features
|
||||
----------------
|
||||
|
||||
The ADT7473 have a 10-bit ADC and can therefore measure temperatures
|
||||
with 0.25 degC resolution. Temperature readings can be configured either
|
||||
for twos complement format or "Offset 64" format, wherein 63 is subtracted
|
||||
from the raw value to get the temperature value.
|
||||
|
||||
The Analog Devices datasheet is very detailed and describes a procedure for
|
||||
determining an optimal configuration for the automatic PWM control.
|
||||
|
||||
Hardware Configurations
|
||||
-----------------------
|
||||
|
||||
The ADT7473 chips have an optional SMBALERT output that can be used to
|
||||
signal the chipset in case a limit is exceeded or the temperature sensors
|
||||
fail. Individual sensor interrupts can be masked so they won't trigger
|
||||
SMBALERT. The SMBALERT output if configured replaces the PWM2 function.
|
||||
|
||||
Configuration Notes
|
||||
-------------------
|
||||
|
||||
Besides standard interfaces driver adds the following:
|
||||
|
||||
* PWM Control
|
||||
|
||||
* pwm#_auto_point1_pwm and pwm#_auto_point1_temp and
|
||||
* pwm#_auto_point2_pwm and pwm#_auto_point2_temp -
|
||||
|
||||
point1: Set the pwm speed at a lower temperature bound.
|
||||
point2: Set the pwm speed at a higher temperature bound.
|
||||
|
||||
The ADT7473 will scale the pwm between the lower and higher pwm speed when
|
||||
the temperature is between the two temperature boundaries. PWM values range
|
||||
from 0 (off) to 255 (full speed).
|
||||
|
||||
Notes
|
||||
-----
|
||||
|
||||
The NVIDIA binary driver presents an ADT7473 chip via an on-card i2c bus.
|
||||
Unfortunately, they fail to set the i2c adapter class, so this driver may
|
||||
fail to find the chip until the nvidia driver is patched.
|
|
@ -4,9 +4,10 @@ Kernel driver coretemp
|
|||
Supported chips:
|
||||
* All Intel Core family
|
||||
Prefix: 'coretemp'
|
||||
CPUID: family 0x6, models 0xe, 0xf, 0x16
|
||||
CPUID: family 0x6, models 0xe, 0xf, 0x16, 0x17
|
||||
Datasheet: Intel 64 and IA-32 Architectures Software Developer's Manual
|
||||
Volume 3A: System Programming Guide
|
||||
http://softwarecommunity.intel.com/Wiki/Mobility/720.htm
|
||||
|
||||
Author: Rudolf Marek
|
||||
|
||||
|
@ -25,7 +26,8 @@ may be raised, if the temperature grows enough (more than TjMax) to trigger
|
|||
the Out-Of-Spec bit. Following table summarizes the exported sysfs files:
|
||||
|
||||
temp1_input - Core temperature (in millidegrees Celsius).
|
||||
temp1_crit - Maximum junction temperature (in millidegrees Celsius).
|
||||
temp1_max - All cooling devices should be turned on (on Core2).
|
||||
temp1_crit - Maximum junction temperature (in millidegrees Celsius).
|
||||
temp1_crit_alarm - Set when Out-of-spec bit is set, never clears.
|
||||
Correct CPU operation is no longer guaranteed.
|
||||
temp1_label - Contains string "Core X", where X is processor
|
||||
|
|
|
@ -1,12 +1,14 @@
|
|||
Most (all) Intel-MP compliant SMP boards have the so-called 'IO-APIC',
|
||||
which is an enhanced interrupt controller, it enables us to route
|
||||
hardware interrupts to multiple CPUs, or to CPU groups.
|
||||
which is an enhanced interrupt controller. It enables us to route
|
||||
hardware interrupts to multiple CPUs, or to CPU groups. Without an
|
||||
IO-APIC, interrupts from hardware will be delivered only to the
|
||||
CPU which boots the operating system (usually CPU#0).
|
||||
|
||||
Linux supports all variants of compliant SMP boards, including ones with
|
||||
multiple IO-APICs. (multiple IO-APICs are used in high-end servers to
|
||||
distribute IRQ load further).
|
||||
multiple IO-APICs. Multiple IO-APICs are used in high-end servers to
|
||||
distribute IRQ load further.
|
||||
|
||||
There are (a few) known breakages in certain older boards, which bugs are
|
||||
There are (a few) known breakages in certain older boards, such bugs are
|
||||
usually worked around by the kernel. If your MP-compliant SMP board does
|
||||
not boot Linux, then consult the linux-smp mailing list archives first.
|
||||
|
||||
|
@ -28,18 +30,18 @@ If your box boots fine with enabled IO-APIC IRQs, then your
|
|||
hell:~>
|
||||
<----------------------------
|
||||
|
||||
some interrupts are still listed as 'XT PIC', but this is not a problem,
|
||||
Some interrupts are still listed as 'XT PIC', but this is not a problem;
|
||||
none of those IRQ sources is performance-critical.
|
||||
|
||||
|
||||
in the unlikely case that your board does not create a working mp-table,
|
||||
In the unlikely case that your board does not create a working mp-table,
|
||||
you can use the pirq= boot parameter to 'hand-construct' IRQ entries. This
|
||||
is nontrivial though and cannot be automated. One sample /etc/lilo.conf
|
||||
is non-trivial though and cannot be automated. One sample /etc/lilo.conf
|
||||
entry:
|
||||
|
||||
append="pirq=15,11,10"
|
||||
|
||||
the actual numbers depend on your system, on your PCI cards and on their
|
||||
The actual numbers depend on your system, on your PCI cards and on their
|
||||
PCI slot position. Usually PCI slots are 'daisy chained' before they are
|
||||
connected to the PCI chipset IRQ routing facility (the incoming PIRQ1-4
|
||||
lines):
|
||||
|
@ -54,7 +56,7 @@ lines):
|
|||
PIRQ1 ----| |- `----| |- `----| |- `----| |--------| |
|
||||
`-' `-' `-' `-' `-'
|
||||
|
||||
every PCI card emits a PCI IRQ, which can be INTA,INTB,INTC,INTD:
|
||||
Every PCI card emits a PCI IRQ, which can be INTA, INTB, INTC or INTD:
|
||||
|
||||
,-.
|
||||
INTD--| |
|
||||
|
@ -95,21 +97,21 @@ card (IRQ11) in Slot3, and have Slot1 empty:
|
|||
[value '0' is a generic 'placeholder', reserved for empty (or non-IRQ emitting)
|
||||
slots.]
|
||||
|
||||
generally, it's always possible to find out the correct pirq= settings, just
|
||||
Generally, it's always possible to find out the correct pirq= settings, just
|
||||
permute all IRQ numbers properly ... it will take some time though. An
|
||||
'incorrect' pirq line will cause the booting process to hang, or a device
|
||||
won't function properly (if it's inserted as eg. a module).
|
||||
won't function properly (e.g. if it's inserted as a module).
|
||||
|
||||
If you have 2 PCI buses, then you can use up to 8 pirq values. Although such
|
||||
If you have 2 PCI buses, then you can use up to 8 pirq values, although such
|
||||
boards tend to have a good configuration.
|
||||
|
||||
Be prepared that it might happen that you need some strange pirq line:
|
||||
|
||||
append="pirq=0,0,0,0,0,0,9,11"
|
||||
|
||||
use smart try-and-err techniques to find out the correct pirq line ...
|
||||
Use smart trial-and-error techniques to find out the correct pirq line ...
|
||||
|
||||
good luck and mail to linux-smp@vger.kernel.org or
|
||||
Good luck and mail to linux-smp@vger.kernel.org or
|
||||
linux-kernel@vger.kernel.org if you have any problems that are not covered
|
||||
by this document.
|
||||
|
||||
|
|
|
@ -11,69 +11,69 @@ comment or update of this file, please try to update Original(English)
|
|||
file at first.
|
||||
|
||||
==================================
|
||||
ããã¯ã
|
||||
これは、
|
||||
linux-2.6.24/Documentation/stable_kernel_rules.txt
|
||||
ã®å訳ã§ãã
|
||||
の和訳です。
|
||||
|
||||
翻訳å£ä½ï¼ JF ããã¸ã§ã¯ã < http://www.linux.or.jp/JF/ >
|
||||
翻訳æ¥ï¼ 2007/12/30
|
||||
翻訳è
ï¼ Tsugikazu Shibata <tshibata at ab dot jp dot nec dot com>
|
||||
æ ¡æ£è
ï¼ æ¦äºä¼¸å
ããã<takei at webmasters dot gr dot jp>
|
||||
ããããã (Seiji Kaneko) <skaneko at a2 dot mbn dot or dot jp>
|
||||
å°æ é
å
¸ãã (Masanori Kobayasi) <zap03216 at nifty dot ne dot jp>
|
||||
éå£ãã (Kenji Noguchi) <tokyo246 at gmail dot com>
|
||||
ç¥å®®ä¿¡å¤ªéãã <jin at libjingu dot jp>
|
||||
翻訳団体: JF プロジェクト < http://www.linux.or.jp/JF/ >
|
||||
翻訳日: 2007/12/30
|
||||
翻訳者: Tsugikazu Shibata <tshibata at ab dot jp dot nec dot com>
|
||||
校正者: 武井伸光さん、<takei at webmasters dot gr dot jp>
|
||||
かねこさん (Seiji Kaneko) <skaneko at a2 dot mbn dot or dot jp>
|
||||
小林 雅典さん (Masanori Kobayasi) <zap03216 at nifty dot ne dot jp>
|
||||
野口さん (Kenji Noguchi) <tokyo246 at gmail dot com>
|
||||
神宮信太郎さん <jin at libjingu dot jp>
|
||||
==================================
|
||||
|
||||
ãã£ã¨ç¥ãããã£ã Linux 2.6 -stable ãªãªã¼ã¹ã®å
¨ã¦
|
||||
ずっと知りたかった Linux 2.6 -stable リリースの全て
|
||||
|
||||
"-stable" ããªã¼ã«ã©ã®ãããªç¨®é¡ã®ããããåãå
¥ããããããã©ã®ãããª
|
||||
ãã®ãåãå
¥ããããªãããã«ã¤ãã¦ã®è¦å-
|
||||
"-stable" ツリーにどのような種類のパッチが受け入れられるか、どのような
|
||||
ものが受け入れられないか、についての規則-
|
||||
|
||||
- æããã«æ£ããããã¹ãããã¦ãããã®ã§ãªããã°ãªããªãã
|
||||
- æè(å¤æ´è¡ã®åå¾)ãå«ã㦠100 è¡ãã大ããã¦ã¯ãããªãã
|
||||
- ãã ä¸åã®ãã¨ã ããä¿®æ£ãã¦ããã¹ãã
|
||||
- çãæ©ã¾ãã¦ããæ¬ç©ã®ãã°ãä¿®æ£ããªããã°ãªããªãã("ããã¯ãã°ã§
|
||||
ãããããããªãã..." ã®ãããªãã®ã§ã¯ãªã)
|
||||
- ãã«ãã¨ã©ã¼(CONFIG_BROKENã«ãªã£ã¦ãããã®ãé¤ã), oops, ãã³ã°ããã¼
|
||||
ã¿ç ´å£ãç¾å®ã®ã»ãã¥ãªãã£åé¡ããã®ä» "ãããããã¯ãã¡ã ã"ã¨ãã
|
||||
ãããªãã®ãä¿®æ£ããªããã°ãªããªããçãè¨ãã°ãé大ãªåé¡ã
|
||||
- ã©ã®ããã«ç«¶åç¶æ
ãçºçãããã®èª¬æãä¸ç·ã«æ¸ããã¦ããªãéãã
|
||||
"çè«çã«ã¯ç«¶åç¶æ
ã«ãªã"ãããªãã®ã¯ä¸å¯ã
|
||||
- ãããªãäºç´°ãªä¿®æ£ãå«ãããã¨ã¯ã§ããªãã(ã¹ãã«ã®ä¿®æ£ã空ç½ã®ã¯ãªã¼
|
||||
ã³ã¢ãããªã©)
|
||||
- 対å¿ãããµãã·ã¹ãã ã¡ã³ãããåãå
¥ãããã®ã§ãªããã°ãªããªãã
|
||||
- Documentation/SubmittingPatches ã®è¦åã«å¾ã£ããã®ã§ãªããã°ãªããªãã
|
||||
- 明らかに正しく、テストされているものでなければならない。
|
||||
- 文脈(変更行の前後)を含めて 100 行より大きくてはいけない。
|
||||
- ただ一個のことだけを修正しているべき。
|
||||
- 皆を悩ませている本物のバグを修正しなければならない。("これはバグで
|
||||
あるかもしれないが..." のようなものではない)
|
||||
- ビルドエラー(CONFIG_BROKENになっているものを除く), oops, ハング、デー
|
||||
タ破壊、現実のセキュリティ問題、その他 "ああ、これはダメだね"という
|
||||
ようなものを修正しなければならない。短く言えば、重大な問題。
|
||||
- どのように競合状態が発生するかの説明も一緒に書かれていない限り、
|
||||
"理論的には競合状態になる"ようなものは不可。
|
||||
- いかなる些細な修正も含めることはできない。(スペルの修正、空白のクリー
|
||||
ンアップなど)
|
||||
- 対応するサブシステムメンテナが受け入れたものでなければならない。
|
||||
- Documentation/SubmittingPatches の規則に従ったものでなければならない。
|
||||
|
||||
-stable ããªã¼ã«ããããéä»ããæç¶ã-
|
||||
-stable ツリーにパッチを送付する手続き-
|
||||
|
||||
- ä¸è¨ã®è¦åã«å¾ã£ã¦ãããã確èªããå¾ã«ãstable@kernel.org ã«ããã
|
||||
ãéãã
|
||||
- éä¿¡è
ã¯ãããããã¥ã¼ã«åãä»ããããéã«ã¯ ACK ããå´ä¸ãããå ´å
|
||||
ã«ã¯ NAK ãåãåãããã®åå¿ã¯éçºè
ãã¡ã®ã¹ã±ã¸ã¥ã¼ã«ã«ãã£ã¦ãæ°
|
||||
æ¥ãããå ´åãããã
|
||||
- ããåãåããããããããã¯ä»ã®éçºè
ãã¡ã®ã¬ãã¥ã¼ã®ããã«
|
||||
-stable ãã¥ã¼ã«è¿½å ãããã
|
||||
- ã»ãã¥ãªãã£ãããã¯ãã®ã¨ã¤ãªã¢ã¹ (stable@kernel.org) ã«éãããã¹
|
||||
ãã§ã¯ãªãã代ããã« security@kernel.org ã®ã¢ãã¬ã¹ã«éãããã
|
||||
- 上記の規則に従っているかを確認した後に、stable@kernel.org にパッチ
|
||||
を送る。
|
||||
- 送信者はパッチがキューに受け付けられた際には ACK を、却下された場合
|
||||
には NAK を受け取る。この反応は開発者たちのスケジュールによって、数
|
||||
日かかる場合がある。
|
||||
- もし受け取られたら、パッチは他の開発者たちのレビューのために
|
||||
-stable キューに追加される。
|
||||
- セキュリティパッチはこのエイリアス (stable@kernel.org) に送られるべ
|
||||
きではなく、代わりに security@kernel.org のアドレスに送られる。
|
||||
|
||||
ã¬ãã¥ã¼ãµã¤ã¯ã«-
|
||||
レビューサイクル-
|
||||
|
||||
- -stable ã¡ã³ãããã¬ãã¥ã¼ãµã¤ã¯ã«ã決ããã¨ãããããã¯ã¬ãã¥ã¼å§
|
||||
å¡ä¼ã¨ããããå½±é¿ããé åã®ã¡ã³ãã(æä¾è
ããã®é åã®ã¡ã³ããã§ç¡
|
||||
ãéã)ã«éãããlinux-kernel ã¡ã¼ãªã³ã°ãªã¹ãã«CCãããã
|
||||
- ã¬ãã¥ã¼å§å¡ä¼ã¯ 48æéã®éã« ACK ã NAK ãåºãã
|
||||
- ããããããå§å¡ä¼ã®ã¡ã³ãããå´ä¸ããããã¡ã³ããéãã¡ã³ããæ°ä»
|
||||
ããªãã£ãåé¡ãæã¡ããããlinux-kernel ã¡ã³ãããããã«ç°è°ãå±ã
|
||||
ãå ´åã«ã¯ããããã¯ãã¥ã¼ããåé¤ãããã
|
||||
- ã¬ãã¥ã¼ãµã¤ã¯ã«ã®æå¾ã«ãACK ãåãããããã¯ææ°ã® -stable ãªãªã¼
|
||||
ã¹ã«è¿½å ããããã®å¾ã«æ°ãã -stable ãªãªã¼ã¹ãè¡ãããã
|
||||
- ã»ãã¥ãªãã£ãããã¯ãé常ã®ã¬ãã¥ã¼ãµã¤ã¯ã«ãéãããã»ãã¥ãªãã£
|
||||
ã«ã¼ãã«ãã¼ã ããç´æ¥ -stable ããªã¼ã«åãä»ããããã
|
||||
ãã®æç¶ãã®è©³ç´°ã«ã¤ãã¦ã¯ kernel security ãã¼ã ã«åãåããããã¨ã
|
||||
- -stable メンテナがレビューサイクルを決めるとき、パッチはレビュー委
|
||||
員会とパッチが影響する領域のメンテナ(提供者がその領域のメンテナで無
|
||||
い限り)に送られ、linux-kernel メーリングリストにCCされる。
|
||||
- レビュー委員会は 48時間の間に ACK か NAK を出す。
|
||||
- もしパッチが委員会のメンバから却下されるか、メンテナ達やメンバが気付
|
||||
かなかった問題が持ちあがり、linux-kernel メンバがパッチに異議を唱え
|
||||
た場合には、パッチはキューから削除される。
|
||||
- レビューサイクルの最後に、ACK を受けたパッチは最新の -stable リリー
|
||||
スに追加され、その後に新しい -stable リリースが行われる。
|
||||
- セキュリティパッチは、通常のレビューサイクルを通らず、セキュリティ
|
||||
カーネルチームから直接 -stable ツリーに受け付けられる。
|
||||
この手続きの詳細については kernel security チームに問い合わせること。
|
||||
|
||||
ã¬ãã¥ã¼å§å¡ä¼-
|
||||
レビュー委員会-
|
||||
|
||||
- ãã®å§å¡ä¼ã¯ããã®ã¿ã¹ã¯ã«ã¤ãã¦æ´»åããå¤ãã®ãã©ã³ãã£ã¢ã¨ãå°æ°ã®
|
||||
éãã©ã³ãã£ã¢ã®ã«ã¼ãã«éçºè
éã§æ§æããã¦ããã
|
||||
- この委員会は、このタスクについて活動する多くのボランティアと、少数の
|
||||
非ボランティアのカーネル開発者達で構成されている。
|
||||
|
||||
|
|
|
@ -950,6 +950,41 @@ and is between 256 and 4096 characters. It is defined in the file
|
|||
when set.
|
||||
Format: <int>
|
||||
|
||||
libata.force= [LIBATA] Force configurations. The format is comma
|
||||
separated list of "[ID:]VAL" where ID is
|
||||
PORT[:DEVICE]. PORT and DEVICE are decimal numbers
|
||||
matching port, link or device. Basically, it matches
|
||||
the ATA ID string printed on console by libata. If
|
||||
the whole ID part is omitted, the last PORT and DEVICE
|
||||
values are used. If ID hasn't been specified yet, the
|
||||
configuration applies to all ports, links and devices.
|
||||
|
||||
If only DEVICE is omitted, the parameter applies to
|
||||
the port and all links and devices behind it. DEVICE
|
||||
number of 0 either selects the first device or the
|
||||
first fan-out link behind PMP device. It does not
|
||||
select the host link. DEVICE number of 15 selects the
|
||||
host link and device attached to it.
|
||||
|
||||
The VAL specifies the configuration to force. As long
|
||||
as there's no ambiguity shortcut notation is allowed.
|
||||
For example, both 1.5 and 1.5G would work for 1.5Gbps.
|
||||
The following configurations can be forced.
|
||||
|
||||
* Cable type: 40c, 80c, short40c, unk, ign or sata.
|
||||
Any ID with matching PORT is used.
|
||||
|
||||
* SATA link speed limit: 1.5Gbps or 3.0Gbps.
|
||||
|
||||
* Transfer mode: pio[0-7], mwdma[0-4] and udma[0-7].
|
||||
udma[/][16,25,33,44,66,100,133] notation is also
|
||||
allowed.
|
||||
|
||||
* [no]ncq: Turn on or off NCQ.
|
||||
|
||||
If there are multiple matching configurations changing
|
||||
the same attribute, the last one is used.
|
||||
|
||||
load_ramdisk= [RAM] List of ramdisks to load from floppy
|
||||
See Documentation/ramdisk.txt.
|
||||
|
||||
|
@ -1056,8 +1091,6 @@ and is between 256 and 4096 characters. It is defined in the file
|
|||
[SCSI] Maximum number of LUNs received.
|
||||
Should be between 1 and 16384.
|
||||
|
||||
mca-pentium [BUGS=X86-32]
|
||||
|
||||
mcatest= [IA-64]
|
||||
|
||||
mce [X86-32] Machine Check Exception
|
||||
|
|
|
@ -92,9 +92,8 @@ handler has run. Up to MAX_STACK_SIZE bytes are copied -- e.g.,
|
|||
64 bytes on i386.
|
||||
|
||||
Note that the probed function's args may be passed on the stack
|
||||
or in registers (e.g., for x86_64 or for an i386 fastcall function).
|
||||
The jprobe will work in either case, so long as the handler's
|
||||
prototype matches that of the probed function.
|
||||
or in registers. The jprobe will work in either case, so long as the
|
||||
handler's prototype matches that of the probed function.
|
||||
|
||||
1.3 Return Probes
|
||||
|
||||
|
@ -270,9 +269,9 @@ Kprobes runs the handler whose address is jp->entry.
|
|||
The handler should have the same arg list and return type as the probed
|
||||
function; and just before it returns, it must call jprobe_return().
|
||||
(The handler never actually returns, since jprobe_return() returns
|
||||
control to Kprobes.) If the probed function is declared asmlinkage,
|
||||
fastcall, or anything else that affects how args are passed, the
|
||||
handler's declaration must match.
|
||||
control to Kprobes.) If the probed function is declared asmlinkage
|
||||
or anything else that affects how args are passed, the handler's
|
||||
declaration must match.
|
||||
|
||||
register_jprobe() returns 0 on success, or a negative errno otherwise.
|
||||
|
||||
|
|
|
@ -160,7 +160,7 @@ Hot keys
|
|||
procfs: /proc/acpi/ibm/hotkey
|
||||
sysfs device attribute: hotkey_*
|
||||
|
||||
In a ThinkPad, the ACPI HKEY handler is responsible for comunicating
|
||||
In a ThinkPad, the ACPI HKEY handler is responsible for communicating
|
||||
some important events and also keyboard hot key presses to the operating
|
||||
system. Enabling the hotkey functionality of thinkpad-acpi signals the
|
||||
firmware that such a driver is present, and modifies how the ThinkPad
|
||||
|
@ -193,7 +193,7 @@ Not all bits in the mask can be modified. Not all bits that can be
|
|||
modified do anything. Not all hot keys can be individually controlled
|
||||
by the mask. Some models do not support the mask at all, and in those
|
||||
models, hot keys cannot be controlled individually. The behaviour of
|
||||
the mask is, therefore, higly dependent on the ThinkPad model.
|
||||
the mask is, therefore, highly dependent on the ThinkPad model.
|
||||
|
||||
Note that unmasking some keys prevents their default behavior. For
|
||||
example, if Fn+F5 is unmasked, that key will no longer enable/disable
|
||||
|
@ -288,7 +288,7 @@ sysfs notes:
|
|||
in ACPI event mode, volume up/down/mute are reported as
|
||||
separate events, but this behaviour may be corrected in
|
||||
future releases of this driver, in which case the
|
||||
ThinkPad volume mixer user interface semanthics will be
|
||||
ThinkPad volume mixer user interface semantics will be
|
||||
enforced.
|
||||
|
||||
hotkey_poll_freq:
|
||||
|
@ -306,13 +306,20 @@ sysfs notes:
|
|||
The recommended polling frequency is 10Hz.
|
||||
|
||||
hotkey_radio_sw:
|
||||
if the ThinkPad has a hardware radio switch, this
|
||||
If the ThinkPad has a hardware radio switch, this
|
||||
attribute will read 0 if the switch is in the "radios
|
||||
disabled" postition, and 1 if the switch is in the
|
||||
disabled" position, and 1 if the switch is in the
|
||||
"radios enabled" position.
|
||||
|
||||
This attribute has poll()/select() support.
|
||||
|
||||
hotkey_tablet_mode:
|
||||
If the ThinkPad has tablet capabilities, this attribute
|
||||
will read 0 if the ThinkPad is in normal mode, and
|
||||
1 if the ThinkPad is in tablet mode.
|
||||
|
||||
This attribute has poll()/select() support.
|
||||
|
||||
hotkey_report_mode:
|
||||
Returns the state of the procfs ACPI event report mode
|
||||
filter for hot keys. If it is set to 1 (the default),
|
||||
|
@ -339,7 +346,7 @@ sysfs notes:
|
|||
wakeup_hotunplug_complete:
|
||||
Set to 1 if the system was waken up because of an
|
||||
undock or bay ejection request, and that request
|
||||
was sucessfully completed. At this point, it might
|
||||
was successfully completed. At this point, it might
|
||||
be useful to send the system back to sleep, at the
|
||||
user's choice. Refer to HKEY events 0x4003 and
|
||||
0x3003, below.
|
||||
|
@ -392,7 +399,7 @@ event code Key Notes
|
|||
Lenovo: battery
|
||||
|
||||
0x1004 0x03 FN+F4 Sleep button (ACPI sleep button
|
||||
semanthics, i.e. sleep-to-RAM).
|
||||
semantics, i.e. sleep-to-RAM).
|
||||
It is always generate some kind
|
||||
of event, either the hot key
|
||||
event or a ACPI sleep button
|
||||
|
@ -403,12 +410,12 @@ event code Key Notes
|
|||
time passes.
|
||||
|
||||
0x1005 0x04 FN+F5 Radio. Enables/disables
|
||||
the internal BlueTooth hardware
|
||||
the internal Bluetooth hardware
|
||||
and W-WAN card if left in control
|
||||
of the firmware. Does not affect
|
||||
the WLAN card.
|
||||
Should be used to turn on/off all
|
||||
radios (bluetooth+W-WAN+WLAN),
|
||||
radios (Bluetooth+W-WAN+WLAN),
|
||||
really.
|
||||
|
||||
0x1006 0x05 FN+F6 -
|
||||
|
@ -417,7 +424,7 @@ event code Key Notes
|
|||
Do you feel lucky today?
|
||||
|
||||
0x1008 0x07 FN+F8 IBM: toggle screen expand
|
||||
Lenovo: configure ultranav
|
||||
Lenovo: configure UltraNav
|
||||
|
||||
0x1009 0x08 FN+F9 -
|
||||
.. .. ..
|
||||
|
@ -447,7 +454,7 @@ event code Key Notes
|
|||
0x1011 0x10 FN+END Brightness down. See brightness
|
||||
up for details.
|
||||
|
||||
0x1012 0x11 FN+PGUP Thinklight toggle. This key is
|
||||
0x1012 0x11 FN+PGUP ThinkLight toggle. This key is
|
||||
always handled by the firmware,
|
||||
even when unmasked.
|
||||
|
||||
|
@ -469,7 +476,7 @@ event code Key Notes
|
|||
key is always handled by the
|
||||
firmware, even when unmasked.
|
||||
|
||||
0x1018 0x17 THINKPAD Thinkpad/Access IBM/Lenovo key
|
||||
0x1018 0x17 THINKPAD ThinkPad/Access IBM/Lenovo key
|
||||
|
||||
0x1019 0x18 unknown
|
||||
.. .. ..
|
||||
|
@ -488,9 +495,17 @@ If a key is mapped to KEY_UNKNOWN, it generates an input event that
|
|||
includes an scan code. If a key is mapped to anything else, it will
|
||||
generate input device EV_KEY events.
|
||||
|
||||
In addition to the EV_KEY events, thinkpad-acpi may also issue EV_SW
|
||||
events for switches:
|
||||
|
||||
SW_RADIO T60 and later hardare rfkill rocker switch
|
||||
SW_TABLET_MODE Tablet ThinkPads HKEY events 0x5009 and 0x500A
|
||||
|
||||
Non hot-key ACPI HKEY event map:
|
||||
0x5001 Lid closed
|
||||
0x5002 Lid opened
|
||||
0x5009 Tablet swivel: switched to tablet mode
|
||||
0x500A Tablet swivel: switched to normal mode
|
||||
0x7000 Radio Switch may have changed state
|
||||
|
||||
The above events are not propagated by the driver, except for legacy
|
||||
|
@ -505,9 +520,7 @@ The above events are never propagated by the driver.
|
|||
|
||||
0x3003 Bay ejection (see 0x2x05) complete, can sleep again
|
||||
0x4003 Undocked (see 0x2x04), can sleep again
|
||||
0x5009 Tablet swivel: switched to tablet mode
|
||||
0x500A Tablet swivel: switched to normal mode
|
||||
0x500B Tablet pen insterted into its storage bay
|
||||
0x500B Tablet pen inserted into its storage bay
|
||||
0x500C Tablet pen removed from its storage bay
|
||||
0x5010 Brightness level changed (newer Lenovo BIOSes)
|
||||
|
||||
|
@ -539,7 +552,7 @@ sysfs (it is read-only).
|
|||
If the hotkey_report_mode module parameter is set to 1 or 2, it cannot
|
||||
be changed later through sysfs (any writes will return -EPERM to signal
|
||||
that hotkey_report_mode was locked. On 2.6.23 and later, where
|
||||
hotkey_report_mode cannot be changed at all, writes will return -EACES).
|
||||
hotkey_report_mode cannot be changed at all, writes will return -EACCES).
|
||||
|
||||
hotkey_report_mode set to 1 makes the driver export through the procfs
|
||||
ACPI event interface all hot key presses (which are *also* sent to the
|
||||
|
@ -584,7 +597,7 @@ Sysfs notes:
|
|||
0: disables Bluetooth / Bluetooth is disabled
|
||||
1: enables Bluetooth / Bluetooth is enabled.
|
||||
|
||||
Note: this interface will be probably be superseeded by the
|
||||
Note: this interface will be probably be superseded by the
|
||||
generic rfkill class, so it is NOT to be considered stable yet.
|
||||
|
||||
Video output control -- /proc/acpi/ibm/video
|
||||
|
@ -791,12 +804,12 @@ on the X40 (tpb is the ThinkPad Buttons utility):
|
|||
1 - Related to "Volume up" key press
|
||||
2 - Related to "Mute on" key press
|
||||
3 - Related to "Access IBM" key press
|
||||
4 - Related to "LCD brightness up" key pess
|
||||
4 - Related to "LCD brightness up" key press
|
||||
5 - Related to "LCD brightness down" key press
|
||||
11 - Related to "toggle screen expansion" key press/function
|
||||
12 - Related to "ThinkLight on"
|
||||
13 - Related to "ThinkLight off"
|
||||
14 - Related to "ThinkLight" key press (toggle thinklight)
|
||||
14 - Related to "ThinkLight" key press (toggle ThinkLight)
|
||||
|
||||
The cmos command interface is prone to firmware split-brain problems, as
|
||||
in newer ThinkPads it is just a compatibility layer. Do not use it, it is
|
||||
|
@ -1024,7 +1037,7 @@ There are two interfaces to the firmware for direct brightness control,
|
|||
EC and CMOS. To select which one should be used, use the
|
||||
brightness_mode module parameter: brightness_mode=1 selects EC mode,
|
||||
brightness_mode=2 selects CMOS mode, brightness_mode=3 selects both EC
|
||||
and CMOS. The driver tries to autodetect which interface to use.
|
||||
and CMOS. The driver tries to auto-detect which interface to use.
|
||||
|
||||
When display backlight brightness controls are available through the
|
||||
standard ACPI interface, it is best to use it instead of this direct
|
||||
|
@ -1266,8 +1279,8 @@ experimental=1 parameter when loading the module.
|
|||
This feature shows the presence and current state of a W-WAN (Sierra
|
||||
Wireless EV-DO) device.
|
||||
|
||||
It was tested on a Lenovo Thinkpad X60. It should probably work on other
|
||||
Thinkpad models which come with this module installed.
|
||||
It was tested on a Lenovo ThinkPad X60. It should probably work on other
|
||||
ThinkPad models which come with this module installed.
|
||||
|
||||
Procfs notes:
|
||||
|
||||
|
@ -1286,7 +1299,7 @@ Sysfs notes:
|
|||
0: disables WWAN card / WWAN card is disabled
|
||||
1: enables WWAN card / WWAN card is enabled.
|
||||
|
||||
Note: this interface will be probably be superseeded by the
|
||||
Note: this interface will be probably be superseded by the
|
||||
generic rfkill class, so it is NOT to be considered stable yet.
|
||||
|
||||
Multiple Commands, Module Parameters
|
||||
|
@ -1309,7 +1322,7 @@ Enabling debugging output
|
|||
The module takes a debug parameter which can be used to selectively
|
||||
enable various classes of debugging output, for example:
|
||||
|
||||
modprobe ibm_acpi debug=0xffff
|
||||
modprobe thinkpad_acpi debug=0xffff
|
||||
|
||||
will enable all debugging output classes. It takes a bitmask, so
|
||||
to enable more than one output class, just add their values.
|
||||
|
@ -1356,7 +1369,7 @@ Sysfs interface changelog:
|
|||
NVRAM is compiled out by the user because it is
|
||||
unneeded/undesired in the first place).
|
||||
0x020101: Marker for thinkpad-acpi with hot key NVRAM polling
|
||||
and proper hotkey_mask semanthics (version 8 of the
|
||||
and proper hotkey_mask semantics (version 8 of the
|
||||
NVRAM polling patch). Some development snapshots of
|
||||
0.18 had an earlier version that did strange things
|
||||
to hotkey_mask.
|
||||
|
|
|
@ -1493,7 +1493,7 @@ explicit lock operations, described later). These include:
|
|||
atomic_dec_and_test();
|
||||
atomic_sub_and_test();
|
||||
atomic_add_negative();
|
||||
atomic_add_unless();
|
||||
atomic_add_unless(); /* when succeeds (returns 1) */
|
||||
test_and_set_bit();
|
||||
test_and_clear_bit();
|
||||
test_and_change_bit();
|
||||
|
|
|
@ -310,9 +310,12 @@ used with suspend-to-disk:
|
|||
PM_EVENT_SUSPEND -- quiesce the driver and put hardware into a low-power
|
||||
state. When used with system sleep states like "suspend-to-RAM" or
|
||||
"standby", the upcoming resume() call will often be able to rely on
|
||||
state kept in hardware, or issue system wakeup events. When used
|
||||
instead with suspend-to-disk, few devices support this capability;
|
||||
most are completely powered off.
|
||||
state kept in hardware, or issue system wakeup events.
|
||||
|
||||
PM_EVENT_HIBERNATE -- Put hardware into a low-power state and enable wakeup
|
||||
events as appropriate. It is only used with hibernation
|
||||
(suspend-to-disk) and few devices are able to wake up the system from
|
||||
this state; most are completely powered off.
|
||||
|
||||
PM_EVENT_FREEZE -- quiesce the driver, but don't necessarily change into
|
||||
any low power mode. A system snapshot is about to be taken, often
|
||||
|
@ -329,8 +332,8 @@ used with suspend-to-disk:
|
|||
wakeup events nor DMA are allowed.
|
||||
|
||||
To enter "standby" (ACPI S1) or "Suspend to RAM" (STR, ACPI S3) states, or
|
||||
the similarly named APM states, only PM_EVENT_SUSPEND is used; for "Suspend
|
||||
to Disk" (STD, hibernate, ACPI S4), all of those event codes are used.
|
||||
the similarly named APM states, only PM_EVENT_SUSPEND is used; the other event
|
||||
codes are used for hibernation ("Suspend to Disk", STD, ACPI S4).
|
||||
|
||||
There's also PM_EVENT_ON, a value which never appears as a suspend event
|
||||
but is sometimes used to record the "not suspended" device state.
|
||||
|
|
|
@ -0,0 +1,59 @@
|
|||
|
||||
|
||||
Real-Time group scheduling.
|
||||
|
||||
The problem space:
|
||||
|
||||
In order to schedule multiple groups of realtime tasks each group must
|
||||
be assigned a fixed portion of the CPU time available. Without a minimum
|
||||
guarantee a realtime group can obviously fall short. A fuzzy upper limit
|
||||
is of no use since it cannot be relied upon. Which leaves us with just
|
||||
the single fixed portion.
|
||||
|
||||
CPU time is divided by means of specifying how much time can be spent
|
||||
running in a given period. Say a frame fixed realtime renderer must
|
||||
deliver 25 frames a second, which yields a period of 0.04s. Now say
|
||||
it will also have to play some music and respond to input, leaving it
|
||||
with around 80% for the graphics. We can then give this group a runtime
|
||||
of 0.8 * 0.04s = 0.032s.
|
||||
|
||||
This way the graphics group will have a 0.04s period with a 0.032s runtime
|
||||
limit.
|
||||
|
||||
Now if the audio thread needs to refill the DMA buffer every 0.005s, but
|
||||
needs only about 3% CPU time to do so, it can do with a 0.03 * 0.005s
|
||||
= 0.00015s.
|
||||
|
||||
|
||||
The Interface:
|
||||
|
||||
system wide:
|
||||
|
||||
/proc/sys/kernel/sched_rt_period_ms
|
||||
/proc/sys/kernel/sched_rt_runtime_us
|
||||
|
||||
CONFIG_FAIR_USER_SCHED
|
||||
|
||||
/sys/kernel/uids/<uid>/cpu_rt_runtime_us
|
||||
|
||||
or
|
||||
|
||||
CONFIG_FAIR_CGROUP_SCHED
|
||||
|
||||
/cgroup/<cgroup>/cpu.rt_runtime_us
|
||||
|
||||
[ time is specified in us because the interface is s32; this gives an
|
||||
operating range of ~35m to 1us ]
|
||||
|
||||
The period takes values in [ 1, INT_MAX ], runtime in [ -1, INT_MAX - 1 ].
|
||||
|
||||
A runtime of -1 specifies runtime == period, ie. no limit.
|
||||
|
||||
New groups get the period from /proc/sys/kernel/sched_rt_period_us and
|
||||
a runtime of 0.
|
||||
|
||||
Settings are constrained to:
|
||||
|
||||
\Sum_{i} runtime_{i} / global_period <= global_runtime / global_period
|
||||
|
||||
in order to keep the configuration schedulable.
|
|
@ -16,8 +16,9 @@ Rules on what kind of patches are accepted, and which ones are not, into the
|
|||
race can be exploited is also provided.
|
||||
- It cannot contain any "trivial" fixes in it (spelling changes,
|
||||
whitespace cleanups, etc).
|
||||
- It must be accepted by the relevant subsystem maintainer.
|
||||
- It must follow the Documentation/SubmittingPatches rules.
|
||||
- It or an equivalent fix must already exist in Linus' tree. Quote the
|
||||
respective commit ID in Linus' tree in your patch submission to -stable.
|
||||
|
||||
|
||||
Procedure for submitting patches to the -stable tree:
|
||||
|
@ -28,7 +29,9 @@ Procedure for submitting patches to the -stable tree:
|
|||
queue, or a NAK if the patch is rejected. This response might take a few
|
||||
days, according to the developer's schedules.
|
||||
- If accepted, the patch will be added to the -stable queue, for review by
|
||||
other developers.
|
||||
other developers and by the relevant subsystem maintainer.
|
||||
- If the stable@kernel.org address is added to a patch, when it goes into
|
||||
Linus's tree it will automatically be emailed to the stable team.
|
||||
- Security patches should not be sent to this alias, but instead to the
|
||||
documented security@kernel.org address.
|
||||
|
||||
|
|
|
@ -29,7 +29,7 @@ show up in /proc/sys/kernel:
|
|||
- java-interpreter [ binfmt_java, obsolete ]
|
||||
- kstack_depth_to_print [ X86 only ]
|
||||
- l2cr [ PPC only ]
|
||||
- modprobe ==> Documentation/kmod.txt
|
||||
- modprobe ==> Documentation/debugging-modules.txt
|
||||
- msgmax
|
||||
- msgmnb
|
||||
- msgmni
|
||||
|
|
|
@ -8,7 +8,7 @@
|
|||
7 -> Leadtek Winfast USB II (em2800)
|
||||
8 -> Kworld USB2800 (em2800)
|
||||
9 -> Pinnacle Dazzle DVC 90/DVC 100 (em2820/em2840) [2304:0207,2304:021a]
|
||||
10 -> Hauppauge WinTV HVR 900 (em2880) [2040:6500]
|
||||
10 -> Hauppauge WinTV HVR 900 (em2880) [2040:6500,2040:6502]
|
||||
11 -> Terratec Hybrid XS (em2880) [0ccd:0042]
|
||||
12 -> Kworld PVR TV 2800 RF (em2820/em2840)
|
||||
13 -> Terratec Prodigy XS (em2880) [0ccd:0047]
|
||||
|
|
|
@ -92,9 +92,9 @@
|
|||
91 -> AVerMedia A169 B [1461:7360]
|
||||
92 -> AVerMedia A169 B1 [1461:6360]
|
||||
93 -> Medion 7134 Bridge #2 [16be:0005]
|
||||
94 -> LifeView FlyDVB-T Hybrid Cardbus/MSI TV @nywhere A/D NB [5168:3306,5168:3502,4e42:3502]
|
||||
94 -> LifeView FlyDVB-T Hybrid Cardbus/MSI TV @nywhere A/D NB [5168:3306,5168:3502,5168:3307,4e42:3502]
|
||||
95 -> LifeView FlyVIDEO3000 (NTSC) [5169:0138]
|
||||
96 -> Medion Md8800 Quadro [16be:0007,16be:0008]
|
||||
96 -> Medion Md8800 Quadro [16be:0007,16be:0008,16be:000d]
|
||||
97 -> LifeView FlyDVB-S /Acorp TV134DS [5168:0300,4e42:0300]
|
||||
98 -> Proteus Pro 2309 [0919:2003]
|
||||
99 -> AVerMedia TV Hybrid A16AR [1461:2c00]
|
||||
|
@ -129,3 +129,5 @@
|
|||
128 -> Beholder BeholdTV Columbus TVFM [0000:5201]
|
||||
129 -> Beholder BeholdTV 607 / BeholdTV 609 [5ace:6070,5ace:6071,5ace:6072,5ace:6073,5ace:6090,5ace:6091,5ace:6092,5ace:6093]
|
||||
130 -> Beholder BeholdTV M6 / BeholdTV M6 Extra [5ace:6190,5ace:6193]
|
||||
131 -> Twinhan Hybrid DTV-DVB 3056 PCI [1822:0022]
|
||||
132 -> Genius TVGO AM11MCE
|
||||
|
|
|
@ -25,7 +25,7 @@ modprobe zr364xx debug=X mode=Y
|
|||
- debug : set to 1 to enable verbose debug messages
|
||||
- mode : 0 = 320x240, 1 = 160x120, 2 = 640x480
|
||||
You can then use the camera with V4L2 compatible applications, for example Ekiga.
|
||||
To capture a single image, try this: dd if=/dev/video0 of=test.jpg bs=1 count=1
|
||||
To capture a single image, try this: dd if=/dev/video0 of=test.jpg bs=1M count=1
|
||||
|
||||
links :
|
||||
http://mxhaard.free.fr/ (support for many others cams including some Aiptek PocketDV)
|
||||
|
@ -63,3 +63,5 @@ Vendor Product Distributor Model
|
|||
0x06d6 0x0034 Trust Powerc@m 750
|
||||
0x0a17 0x0062 Pentax Optio 50L
|
||||
0x06d6 0x003b Trust Powerc@m 970Z
|
||||
0x0a17 0x004e Pentax Optio 50
|
||||
0x041e 0x405d Creative DiVi CAM 516
|
||||
|
|
|
@ -1123,7 +1123,7 @@ void read_slab_dir(void)
|
|||
char *t;
|
||||
int count;
|
||||
|
||||
if (chdir("/sys/kernel/slab"))
|
||||
if (chdir("/sys/kernel/slab") && chdir("/sys/slab"))
|
||||
fatal("SYSFS support for SLUB not active\n");
|
||||
|
||||
dir = opendir(".");
|
||||
|
|
54
MAINTAINERS
54
MAINTAINERS
|
@ -640,8 +640,8 @@ S: Maintained
|
|||
ASYNCHRONOUS TRANSFERS/TRANSFORMS API
|
||||
P: Dan Williams
|
||||
M: dan.j.williams@intel.com
|
||||
P: Shannon Nelson
|
||||
M: shannon.nelson@intel.com
|
||||
P: Maciej Sosnowski
|
||||
M: maciej.sosnowski@intel.com
|
||||
L: linux-kernel@vger.kernel.org
|
||||
W: http://sourceforge.net/projects/xscaleiop
|
||||
S: Supported
|
||||
|
@ -697,7 +697,7 @@ S: Supported
|
|||
ATMEL LCDFB DRIVER
|
||||
P: Nicolas Ferre
|
||||
M: nicolas.ferre@atmel.com
|
||||
L: linux-fbdev-devel@lists.sourceforge.net (subscribers-only)
|
||||
L: linux-fbdev-devel@lists.sourceforge.net (moderated for non-subscribers)
|
||||
S: Maintained
|
||||
|
||||
ATMEL MACB ETHERNET DRIVER
|
||||
|
@ -1202,7 +1202,7 @@ S: Maintained
|
|||
CYBLAFB FRAMEBUFFER DRIVER
|
||||
P: Knut Petersen
|
||||
M: Knut_Petersen@t-online.de
|
||||
L: linux-fbdev-devel@lists.sourceforge.net (subscribers-only)
|
||||
L: linux-fbdev-devel@lists.sourceforge.net (moderated for non-subscribers)
|
||||
S: Maintained
|
||||
|
||||
CYCLADES 2X SYNC CARD DRIVER
|
||||
|
@ -1255,8 +1255,8 @@ W: http://linux-net.osdl.org/index.php/DCCP
|
|||
S: Maintained
|
||||
|
||||
DECnet NETWORK LAYER
|
||||
P: Patrick Caulfield
|
||||
M: patrick@tykepenguin.com
|
||||
P: Christine Caulfield
|
||||
M: christine.caulfield@googlemail.com
|
||||
W: http://linux-decnet.sourceforge.net
|
||||
L: linux-decnet-user@lists.sourceforge.net
|
||||
S: Maintained
|
||||
|
@ -1318,14 +1318,13 @@ L: linux-kernel@vger.kernel.org
|
|||
S: Maintained
|
||||
|
||||
DISTRIBUTED LOCK MANAGER
|
||||
P: Patrick Caulfield
|
||||
M: pcaulfie@redhat.com
|
||||
P: Christine Caulfield
|
||||
M: ccaulfie@redhat.com
|
||||
P: David Teigland
|
||||
M: teigland@redhat.com
|
||||
L: cluster-devel@redhat.com
|
||||
W: http://sources.redhat.com/cluster/
|
||||
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
|
||||
T: git kernel.org:/pub/scm/linux/kernel/git/teigland/dlm.git
|
||||
S: Supported
|
||||
|
||||
DAVICOM FAST ETHERNET (DMFE) NETWORK DRIVER
|
||||
|
@ -1335,8 +1334,8 @@ L: netdev@vger.kernel.org
|
|||
S: Maintained
|
||||
|
||||
DMA GENERIC OFFLOAD ENGINE SUBSYSTEM
|
||||
P: Shannon Nelson
|
||||
M: shannon.nelson@intel.com
|
||||
P: Maciej Sosnowski
|
||||
M: maciej.sosnowski@intel.com
|
||||
P: Dan Williams
|
||||
M: dan.j.williams@intel.com
|
||||
L: linux-kernel@vger.kernel.org
|
||||
|
@ -1580,7 +1579,7 @@ S: Supported
|
|||
FRAMEBUFFER LAYER
|
||||
P: Antonino Daplas
|
||||
M: adaplas@gmail.com
|
||||
L: linux-fbdev-devel@lists.sourceforge.net (subscribers-only)
|
||||
L: linux-fbdev-devel@lists.sourceforge.net (moderated for non-subscribers)
|
||||
W: http://linux-fbdev.sourceforge.net/
|
||||
S: Maintained
|
||||
|
||||
|
@ -1616,6 +1615,7 @@ S: Maintained
|
|||
FILESYSTEMS (VFS and infrastructure)
|
||||
P: Alexander Viro
|
||||
M: viro@zeniv.linux.org.uk
|
||||
L: linux-fsdevel@vger.kernel.org
|
||||
S: Maintained
|
||||
|
||||
FIREWIRE SUBSYSTEM (drivers/firewire, <linux/firewire*.h>)
|
||||
|
@ -1712,9 +1712,7 @@ T: git lm-sensors.org:/kernel/mhoffman/hwmon-2.6.git release
|
|||
S: Maintained
|
||||
|
||||
HARDWARE RANDOM NUMBER GENERATOR CORE
|
||||
P: Michael Buesch
|
||||
M: mb@bu3sch.de
|
||||
S: Maintained
|
||||
S: Orphaned
|
||||
|
||||
HARD DRIVE ACTIVE PROTECTION SYSTEM (HDAPS) DRIVER
|
||||
P: Robert Love
|
||||
|
@ -1923,7 +1921,7 @@ S: Maintained
|
|||
|
||||
IDE/ATAPI CDROM DRIVER
|
||||
P: Borislav Petkov
|
||||
M: bbpetkov@yahoo.de
|
||||
M: petkovbb@gmail.com
|
||||
L: linux-ide@vger.kernel.org
|
||||
S: Maintained
|
||||
|
||||
|
@ -1964,7 +1962,7 @@ L: linux1394-devel@lists.sourceforge.net
|
|||
S: Maintained
|
||||
|
||||
IMS TWINTURBO FRAMEBUFFER DRIVER
|
||||
L: linux-fbdev-devel@lists.sourceforge.net (subscribers-only)
|
||||
L: linux-fbdev-devel@lists.sourceforge.net (moderated for non-subscribers)
|
||||
S: Orphan
|
||||
|
||||
INFINIBAND SUBSYSTEM
|
||||
|
@ -1998,13 +1996,13 @@ S: Maintained
|
|||
INTEL FRAMEBUFFER DRIVER (excluding 810 and 815)
|
||||
P: Sylvain Meyer
|
||||
M: sylvain.meyer@worldonline.fr
|
||||
L: linux-fbdev-devel@lists.sourceforge.net (subscribers-only)
|
||||
L: linux-fbdev-devel@lists.sourceforge.net (moderated for non-subscribers)
|
||||
S: Maintained
|
||||
|
||||
INTEL 810/815 FRAMEBUFFER DRIVER
|
||||
P: Antonino Daplas
|
||||
M: adaplas@gmail.com
|
||||
L: linux-fbdev-devel@lists.sourceforge.net (subscribers-only)
|
||||
L: linux-fbdev-devel@lists.sourceforge.net (moderated for non-subscribers)
|
||||
S: Maintained
|
||||
|
||||
INTEL IA32 MICROCODE UPDATE SUPPORT
|
||||
|
@ -2013,8 +2011,8 @@ M: tigran@aivazian.fsnet.co.uk
|
|||
S: Maintained
|
||||
|
||||
INTEL I/OAT DMA DRIVER
|
||||
P: Shannon Nelson
|
||||
M: shannon.nelson@intel.com
|
||||
P: Maciej Sosnowski
|
||||
M: maciej.sosnowski@intel.com
|
||||
L: linux-kernel@vger.kernel.org
|
||||
S: Supported
|
||||
|
||||
|
@ -2600,7 +2598,7 @@ S: Odd Fixes for 2.4; Maintained for 2.6.
|
|||
MATROX FRAMEBUFFER DRIVER
|
||||
P: Petr Vandrovec
|
||||
M: vandrove@vc.cvut.cz
|
||||
L: linux-fbdev-devel@lists.sourceforge.net (subscribers-only)
|
||||
L: linux-fbdev-devel@lists.sourceforge.net (moderated for non-subscribers)
|
||||
S: Maintained
|
||||
|
||||
MAX6650 HARDWARE MONITOR AND FAN CONTROLLER DRIVER
|
||||
|
@ -2909,7 +2907,7 @@ S: Maintained
|
|||
NVIDIA (rivafb and nvidiafb) FRAMEBUFFER DRIVER
|
||||
P: Antonino Daplas
|
||||
M: adaplas@gmail.com
|
||||
L: linux-fbdev-devel@lists.sourceforge.net (subscribers-only)
|
||||
L: linux-fbdev-devel@lists.sourceforge.net (moderated for non-subscribers)
|
||||
S: Maintained
|
||||
|
||||
OPENCORES I2C BUS DRIVER
|
||||
|
@ -3238,13 +3236,13 @@ S: Maintained
|
|||
RADEON FRAMEBUFFER DISPLAY DRIVER
|
||||
P: Benjamin Herrenschmidt
|
||||
M: benh@kernel.crashing.org
|
||||
L: linux-fbdev-devel@lists.sourceforge.net (subscribers-only)
|
||||
L: linux-fbdev-devel@lists.sourceforge.net (moderated for non-subscribers)
|
||||
S: Maintained
|
||||
|
||||
RAGE128 FRAMEBUFFER DISPLAY DRIVER
|
||||
P: Paul Mackerras
|
||||
M: paulus@samba.org
|
||||
L: linux-fbdev-devel@lists.sourceforge.net (subscribers-only)
|
||||
L: linux-fbdev-devel@lists.sourceforge.net (moderated for non-subscribers)
|
||||
S: Maintained
|
||||
|
||||
RAYLINK/WEBGEAR 802.11 WIRELESS LAN DRIVER
|
||||
|
@ -3349,7 +3347,7 @@ S: Maintained
|
|||
S3 SAVAGE FRAMEBUFFER DRIVER
|
||||
P: Antonino Daplas
|
||||
M: adaplas@gmail.com
|
||||
L: linux-fbdev-devel@lists.sourceforge.net (subscribers-only)
|
||||
L: linux-fbdev-devel@lists.sourceforge.net (moderated for non-subscribers)
|
||||
S: Maintained
|
||||
|
||||
S390
|
||||
|
@ -4261,7 +4259,7 @@ S: Maintained
|
|||
|
||||
VT8231 HARDWARE MONITOR DRIVER
|
||||
P: Roger Lucas
|
||||
M: roger@planbit.co.uk
|
||||
M: vt8231@hiddenengine.co.uk
|
||||
L: lm-sensors@lm-sensors.org
|
||||
S: Maintained
|
||||
|
||||
|
|
15
Makefile
15
Makefile
|
@ -1,8 +1,8 @@
|
|||
VERSION = 2
|
||||
PATCHLEVEL = 6
|
||||
SUBLEVEL = 25
|
||||
EXTRAVERSION = -rc1
|
||||
NAME = Arr Matey! A Hairy Bilge Rat!
|
||||
EXTRAVERSION = -rc2
|
||||
NAME = Funky Weasel is Jiggy wit it
|
||||
|
||||
# *DOCUMENTATION*
|
||||
# To see a list of typical targets execute "make help"
|
||||
|
@ -507,6 +507,10 @@ else
|
|||
KBUILD_CFLAGS += -O2
|
||||
endif
|
||||
|
||||
# Force gcc to behave correct even for buggy distributions
|
||||
# Arch Makefiles may override this setting
|
||||
KBUILD_CFLAGS += $(call cc-option, -fno-stack-protector)
|
||||
|
||||
include $(srctree)/arch/$(SRCARCH)/Makefile
|
||||
|
||||
ifdef CONFIG_FRAME_POINTER
|
||||
|
@ -525,9 +529,6 @@ ifdef CONFIG_DEBUG_SECTION_MISMATCH
|
|||
KBUILD_CFLAGS += $(call cc-option, -fno-inline-functions-called-once)
|
||||
endif
|
||||
|
||||
# Force gcc to behave correct even for buggy distributions
|
||||
KBUILD_CFLAGS += $(call cc-option, -fno-stack-protector)
|
||||
|
||||
# arch Makefile may override CC so keep this after arch Makefile is included
|
||||
NOSTDINC_FLAGS += -nostdinc -isystem $(shell $(CC) -print-file-name=include)
|
||||
CHECKFLAGS += $(NOSTDINC_FLAGS)
|
||||
|
@ -810,7 +811,9 @@ endif
|
|||
$(Q)rm -f .old_version
|
||||
|
||||
# build vmlinux.o first to catch section mismatch errors early
|
||||
$(kallsyms.o): vmlinux.o
|
||||
ifdef CONFIG_KALLSYMS
|
||||
.tmp_vmlinux1: vmlinux.o
|
||||
endif
|
||||
vmlinux.o: $(vmlinux-lds) $(vmlinux-init) $(vmlinux-main) FORCE
|
||||
$(call if_changed_rule,vmlinux-modpost)
|
||||
|
||||
|
|
|
@ -259,8 +259,8 @@ osf_statfs(char __user *path, struct osf_statfs __user *buffer, unsigned long bu
|
|||
|
||||
retval = user_path_walk(path, &nd);
|
||||
if (!retval) {
|
||||
retval = do_osf_statfs(nd.dentry, buffer, bufsiz);
|
||||
path_release(&nd);
|
||||
retval = do_osf_statfs(nd.path.dentry, buffer, bufsiz);
|
||||
path_put(&nd.path);
|
||||
}
|
||||
return retval;
|
||||
}
|
||||
|
|
|
@ -119,13 +119,8 @@ irqreturn_t timer_interrupt(int irq, void *dev)
|
|||
state.partial_tick = delta & ((1UL << FIX_SHIFT) - 1);
|
||||
nticks = delta >> FIX_SHIFT;
|
||||
|
||||
while (nticks > 0) {
|
||||
do_timer(1);
|
||||
#ifndef CONFIG_SMP
|
||||
update_process_times(user_mode(get_irq_regs()));
|
||||
#endif
|
||||
nticks--;
|
||||
}
|
||||
if (nticks)
|
||||
do_timer(nticks);
|
||||
|
||||
/*
|
||||
* If we have an externally synchronized Linux clock, then update
|
||||
|
@ -141,6 +136,12 @@ irqreturn_t timer_interrupt(int irq, void *dev)
|
|||
}
|
||||
|
||||
write_sequnlock(&xtime_lock);
|
||||
|
||||
#ifndef CONFIG_SMP
|
||||
while (nticks--)
|
||||
update_process_times(user_mode(get_irq_regs()));
|
||||
#endif
|
||||
|
||||
return IRQ_HANDLED;
|
||||
}
|
||||
|
||||
|
|
|
@ -192,9 +192,13 @@ static struct mv643xx_eth_platform_data qnap_ts209_eth_data = {
|
|||
/*****************************************************************************
|
||||
* RTC S35390A on I2C bus
|
||||
****************************************************************************/
|
||||
|
||||
#define TS209_RTC_GPIO 3
|
||||
|
||||
static struct i2c_board_info __initdata qnap_ts209_i2c_rtc = {
|
||||
.driver_name = "rtc-s35390a",
|
||||
.addr = 0x30,
|
||||
.irq = 0,
|
||||
};
|
||||
|
||||
/****************************************************************************
|
||||
|
@ -328,7 +332,18 @@ static void __init qnap_ts209_init(void)
|
|||
|
||||
platform_add_devices(qnap_ts209_devices,
|
||||
ARRAY_SIZE(qnap_ts209_devices));
|
||||
|
||||
/* Get RTC IRQ and register the chip */
|
||||
if (gpio_request(TS209_RTC_GPIO, "rtc") == 0) {
|
||||
if (gpio_direction_input(TS209_RTC_GPIO) == 0)
|
||||
qnap_ts209_i2c_rtc.irq = gpio_to_irq(TS209_RTC_GPIO);
|
||||
else
|
||||
gpio_free(TS209_RTC_GPIO);
|
||||
}
|
||||
if (qnap_ts209_i2c_rtc.irq == 0)
|
||||
pr_warning("qnap_ts209_init: failed to get RTC IRQ\n");
|
||||
i2c_register_board_info(0, &qnap_ts209_i2c_rtc, 1);
|
||||
|
||||
orion_eth_init(&qnap_ts209_eth_data);
|
||||
orion_sata_init(&qnap_ts209_sata_data);
|
||||
}
|
||||
|
|
|
@ -23,18 +23,27 @@ static LIST_HEAD(clocks);
|
|||
static DEFINE_MUTEX(clocks_mutex);
|
||||
static DEFINE_SPINLOCK(clocks_lock);
|
||||
|
||||
static struct clk *clk_lookup(struct device *dev, const char *id)
|
||||
{
|
||||
struct clk *p;
|
||||
|
||||
list_for_each_entry(p, &clocks, node)
|
||||
if (strcmp(id, p->name) == 0 && p->dev == dev)
|
||||
return p;
|
||||
|
||||
return NULL;
|
||||
}
|
||||
|
||||
struct clk *clk_get(struct device *dev, const char *id)
|
||||
{
|
||||
struct clk *p, *clk = ERR_PTR(-ENOENT);
|
||||
|
||||
mutex_lock(&clocks_mutex);
|
||||
list_for_each_entry(p, &clocks, node) {
|
||||
if (strcmp(id, p->name) == 0 &&
|
||||
(p->dev == NULL || p->dev == dev)) {
|
||||
clk = p;
|
||||
break;
|
||||
}
|
||||
}
|
||||
p = clk_lookup(dev, id);
|
||||
if (!p)
|
||||
p = clk_lookup(NULL, id);
|
||||
if (p)
|
||||
clk = p;
|
||||
mutex_unlock(&clocks_mutex);
|
||||
|
||||
return clk;
|
||||
|
|
|
@ -134,7 +134,7 @@ static int pxa_set_target(struct cpufreq_policy *policy,
|
|||
struct cpufreq_frequency_table *pxa_freqs_table;
|
||||
pxa_freqs_t *pxa_freq_settings;
|
||||
struct cpufreq_freqs freqs;
|
||||
int idx;
|
||||
unsigned int idx;
|
||||
unsigned long flags;
|
||||
unsigned int unused, preset_mdrefr, postset_mdrefr;
|
||||
void *ramstart = phys_to_virt(0xa0000000);
|
||||
|
@ -233,6 +233,11 @@ static int pxa_set_target(struct cpufreq_policy *policy,
|
|||
return 0;
|
||||
}
|
||||
|
||||
static unsigned int pxa_cpufreq_get(unsigned int cpu)
|
||||
{
|
||||
return get_clk_frequency_khz(0);
|
||||
}
|
||||
|
||||
static int pxa_cpufreq_init(struct cpufreq_policy *policy)
|
||||
{
|
||||
int i;
|
||||
|
@ -269,6 +274,7 @@ static struct cpufreq_driver pxa_cpufreq_driver = {
|
|||
.verify = pxa_verify_policy,
|
||||
.target = pxa_set_target,
|
||||
.init = pxa_cpufreq_init,
|
||||
.get = pxa_cpufreq_get,
|
||||
.name = "PXA25x",
|
||||
};
|
||||
|
||||
|
|
|
@ -137,9 +137,6 @@ irqreturn_t timer_interrupt(int irq, void *dummy)
|
|||
|
||||
do_timer(1);
|
||||
|
||||
#ifndef CONFIG_SMP
|
||||
update_process_times(user_mode(get_irq_regs()));
|
||||
#endif
|
||||
profile_tick(CPU_PROFILING);
|
||||
|
||||
/*
|
||||
|
@ -161,6 +158,11 @@ irqreturn_t timer_interrupt(int irq, void *dummy)
|
|||
last_rtc_update = xtime.tv_sec - 600;
|
||||
}
|
||||
write_sequnlock(&xtime_lock);
|
||||
|
||||
#ifndef CONFIG_SMP
|
||||
update_process_times(user_mode(get_irq_regs()));
|
||||
#endif
|
||||
|
||||
return IRQ_HANDLED;
|
||||
}
|
||||
|
||||
|
|
|
@ -126,15 +126,13 @@ static void decode_address(char *buf, unsigned long address)
|
|||
struct vm_area_struct *vma = vml->vma;
|
||||
|
||||
if (address >= vma->vm_start && address < vma->vm_end) {
|
||||
char _tmpbuf[256];
|
||||
char *name = p->comm;
|
||||
struct file *file = vma->vm_file;
|
||||
if (file) {
|
||||
char _tmpbuf[256];
|
||||
name = d_path(file->f_dentry,
|
||||
file->f_vfsmnt,
|
||||
_tmpbuf,
|
||||
sizeof(_tmpbuf));
|
||||
}
|
||||
|
||||
if (file)
|
||||
name = d_path(&file->f_path, _tmpbuf,
|
||||
sizeof(_tmpbuf));
|
||||
|
||||
/* FLAT does not have its text aligned to the start of
|
||||
* the map while FDPIC ELF does ...
|
||||
|
|
|
@ -1,252 +1,259 @@
|
|||
/*#************************************************************************#*/
|
||||
/*#-------------------------------------------------------------------------*/
|
||||
/*# */
|
||||
/*# FUNCTION NAME: memset() */
|
||||
/*# */
|
||||
/*# PARAMETERS: void* dst; Destination address. */
|
||||
/*# int c; Value of byte to write. */
|
||||
/*# int len; Number of bytes to write. */
|
||||
/*# */
|
||||
/*# RETURNS: dst. */
|
||||
/*# */
|
||||
/*# DESCRIPTION: Sets the memory dst of length len bytes to c, as standard. */
|
||||
/*# Framework taken from memcpy. This routine is */
|
||||
/*# very sensitive to compiler changes in register allocation. */
|
||||
/*# Should really be rewritten to avoid this problem. */
|
||||
/*# */
|
||||
/*#-------------------------------------------------------------------------*/
|
||||
/*# */
|
||||
/*# HISTORY */
|
||||
/*# */
|
||||
/*# DATE NAME CHANGES */
|
||||
/*# ---- ---- ------- */
|
||||
/*# 990713 HP Tired of watching this function (or */
|
||||
/*# really, the nonoptimized generic */
|
||||
/*# implementation) take up 90% of simulator */
|
||||
/*# output. Measurements needed. */
|
||||
/*# */
|
||||
/*#-------------------------------------------------------------------------*/
|
||||
/* A memset for CRIS.
|
||||
Copyright (C) 1999-2005 Axis Communications.
|
||||
All rights reserved.
|
||||
|
||||
#include <linux/types.h>
|
||||
Redistribution and use in source and binary forms, with or without
|
||||
modification, are permitted provided that the following conditions
|
||||
are met:
|
||||
|
||||
/* No, there's no macro saying 12*4, since it is "hard" to get it into
|
||||
the asm in a good way. Thus better to expose the problem everywhere.
|
||||
*/
|
||||
1. Redistributions of source code must retain the above copyright
|
||||
notice, this list of conditions and the following disclaimer.
|
||||
|
||||
/* Assuming 1 cycle per dword written or read (ok, not really true), and
|
||||
one per instruction, then 43+3*(n/48-1) <= 24+24*(n/48-1)
|
||||
so n >= 45.7; n >= 0.9; we win on the first full 48-byte block to set. */
|
||||
2. Neither the name of Axis Communications nor the names of its
|
||||
contributors may be used to endorse or promote products derived
|
||||
from this software without specific prior written permission.
|
||||
|
||||
#define ZERO_BLOCK_SIZE (1*12*4)
|
||||
THIS SOFTWARE IS PROVIDED BY AXIS COMMUNICATIONS AND ITS CONTRIBUTORS
|
||||
``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||
LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
||||
A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL AXIS
|
||||
COMMUNICATIONS OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
|
||||
INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
|
||||
SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
||||
HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
|
||||
STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
|
||||
IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
||||
POSSIBILITY OF SUCH DAMAGE. */
|
||||
|
||||
void *memset(void *pdst,
|
||||
int c,
|
||||
size_t plen)
|
||||
/* FIXME: This file should really only be used for reference, as the
|
||||
result is somewhat depending on gcc generating what we expect rather
|
||||
than what we describe. An assembly file should be used instead. */
|
||||
|
||||
/* Note the multiple occurrence of the expression "12*4", including the
|
||||
asm. It is hard to get it into the asm in a good way. Thus better to
|
||||
expose the problem everywhere: no macro. */
|
||||
|
||||
/* Assuming one cycle per dword written or read (ok, not really true; the
|
||||
world is not ideal), and one cycle per instruction, then 43+3*(n/48-1)
|
||||
<= 24+24*(n/48-1) so n >= 45.7; n >= 0.9; we win on the first full
|
||||
48-byte block to set. */
|
||||
|
||||
#define MEMSET_BY_BLOCK_THRESHOLD (1 * 48)
|
||||
|
||||
/* No name ambiguities in this file. */
|
||||
__asm__ (".syntax no_register_prefix");
|
||||
|
||||
void *memset(void *pdst, int c, unsigned int plen)
|
||||
{
|
||||
/* Ok. Now we want the parameters put in special registers.
|
||||
Make sure the compiler is able to make something useful of this. */
|
||||
/* Now we want the parameters in special registers. Make sure the
|
||||
compiler does something usable with this. */
|
||||
|
||||
register char *return_dst __asm__ ("r10") = pdst;
|
||||
register int n __asm__ ("r12") = plen;
|
||||
register int lc __asm__ ("r11") = c;
|
||||
|
||||
/* Most apps use memset sanely. Only those memsetting about 3..4
|
||||
bytes or less get penalized compared to the generic implementation
|
||||
- and that's not really sane use. */
|
||||
/* Most apps use memset sanely. Memsetting about 3..4 bytes or less get
|
||||
penalized here compared to the generic implementation. */
|
||||
|
||||
/* Ugh. This is fragile at best. Check with newer GCC releases, if
|
||||
they compile cascaded "x |= x << 8" sanely! */
|
||||
__asm__("movu.b %0,$r13\n\t"
|
||||
"lslq 8,$r13\n\t"
|
||||
"move.b %0,$r13\n\t"
|
||||
"move.d $r13,%0\n\t"
|
||||
"lslq 16,$r13\n\t"
|
||||
"or.d $r13,%0"
|
||||
: "=r" (lc) : "0" (lc) : "r13");
|
||||
/* This is fragile performancewise at best. Check with newer GCC
|
||||
releases, if they compile cascaded "x |= x << 8" to sane code. */
|
||||
__asm__("movu.b %0,r13 \n\
|
||||
lslq 8,r13 \n\
|
||||
move.b %0,r13 \n\
|
||||
move.d r13,%0 \n\
|
||||
lslq 16,r13 \n\
|
||||
or.d r13,%0"
|
||||
: "=r" (lc) /* Inputs. */
|
||||
: "0" (lc) /* Outputs. */
|
||||
: "r13"); /* Trash. */
|
||||
|
||||
{
|
||||
register char *dst __asm__ ("r13") = pdst;
|
||||
|
||||
/* This is NONPORTABLE, but since this whole routine is */
|
||||
/* grossly nonportable that doesn't matter. */
|
||||
if (((unsigned long) pdst & 3) != 0
|
||||
/* Oops! n = 0 must be a valid call, regardless of alignment. */
|
||||
&& n >= 3)
|
||||
{
|
||||
if ((unsigned long) dst & 1)
|
||||
{
|
||||
*dst = (char) lc;
|
||||
n--;
|
||||
dst++;
|
||||
}
|
||||
|
||||
if (((unsigned long) pdst & 3) != 0
|
||||
/* Oops! n=0 must be a legal call, regardless of alignment. */
|
||||
&& n >= 3)
|
||||
{
|
||||
if ((unsigned long)dst & 1)
|
||||
{
|
||||
*dst = (char) lc;
|
||||
n--;
|
||||
dst++;
|
||||
}
|
||||
if ((unsigned long) dst & 2)
|
||||
{
|
||||
*(short *) dst = lc;
|
||||
n -= 2;
|
||||
dst += 2;
|
||||
}
|
||||
}
|
||||
|
||||
if ((unsigned long)dst & 2)
|
||||
{
|
||||
*(short *)dst = lc;
|
||||
n -= 2;
|
||||
dst += 2;
|
||||
}
|
||||
}
|
||||
|
||||
/* Now the fun part. For the threshold value of this, check the equation
|
||||
above. */
|
||||
/* Decide which copying method to use. */
|
||||
if (n >= ZERO_BLOCK_SIZE)
|
||||
{
|
||||
/* For large copies we use 'movem' */
|
||||
|
||||
/* It is not optimal to tell the compiler about clobbering any
|
||||
registers; that will move the saving/restoring of those registers
|
||||
to the function prologue/epilogue, and make non-movem sizes
|
||||
suboptimal.
|
||||
|
||||
This method is not foolproof; it assumes that the "asm reg"
|
||||
declarations at the beginning of the function really are used
|
||||
here (beware: they may be moved to temporary registers).
|
||||
This way, we do not have to save/move the registers around into
|
||||
temporaries; we can safely use them straight away.
|
||||
|
||||
If you want to check that the allocation was right; then
|
||||
check the equalities in the first comment. It should say
|
||||
"r13=r13, r12=r12, r11=r11" */
|
||||
__asm__ volatile ("\n\
|
||||
;; Check that the following is true (same register names on \n\
|
||||
;; both sides of equal sign, as in r8=r8): \n\
|
||||
;; %0=r13, %1=r12, %4=r11 \n\
|
||||
;; \n\
|
||||
;; Save the registers we'll clobber in the movem process \n\
|
||||
;; on the stack. Don't mention them to gcc, it will only be \n\
|
||||
;; upset. \n\
|
||||
subq 11*4,$sp \n\
|
||||
movem $r10,[$sp] \n\
|
||||
/* Decide which setting method to use. */
|
||||
if (n >= MEMSET_BY_BLOCK_THRESHOLD)
|
||||
{
|
||||
/* It is not optimal to tell the compiler about clobbering any
|
||||
registers; that will move the saving/restoring of those registers
|
||||
to the function prologue/epilogue, and make non-block sizes
|
||||
suboptimal. */
|
||||
__asm__ volatile
|
||||
("\
|
||||
;; GCC does promise correct register allocations, but let's \n\
|
||||
;; make sure it keeps its promises. \n\
|
||||
.ifnc %0-%1-%4,$r13-$r12-$r11 \n\
|
||||
.error \"GCC reg alloc bug: %0-%1-%4 != $r13-$r12-$r11\" \n\
|
||||
.endif \n\
|
||||
\n\
|
||||
move.d $r11,$r0 \n\
|
||||
move.d $r11,$r1 \n\
|
||||
move.d $r11,$r2 \n\
|
||||
move.d $r11,$r3 \n\
|
||||
move.d $r11,$r4 \n\
|
||||
move.d $r11,$r5 \n\
|
||||
move.d $r11,$r6 \n\
|
||||
move.d $r11,$r7 \n\
|
||||
move.d $r11,$r8 \n\
|
||||
move.d $r11,$r9 \n\
|
||||
move.d $r11,$r10 \n\
|
||||
;; Save the registers we'll clobber in the movem process \n\
|
||||
;; on the stack. Don't mention them to gcc, it will only be \n\
|
||||
;; upset. \n\
|
||||
subq 11*4,sp \n\
|
||||
movem r10,[sp] \n\
|
||||
\n\
|
||||
;; Now we've got this: \n\
|
||||
;; r13 - dst \n\
|
||||
;; r12 - n \n\
|
||||
move.d r11,r0 \n\
|
||||
move.d r11,r1 \n\
|
||||
move.d r11,r2 \n\
|
||||
move.d r11,r3 \n\
|
||||
move.d r11,r4 \n\
|
||||
move.d r11,r5 \n\
|
||||
move.d r11,r6 \n\
|
||||
move.d r11,r7 \n\
|
||||
move.d r11,r8 \n\
|
||||
move.d r11,r9 \n\
|
||||
move.d r11,r10 \n\
|
||||
\n\
|
||||
;; Update n for the first loop \n\
|
||||
subq 12*4,$r12 \n\
|
||||
;; Now we've got this: \n\
|
||||
;; r13 - dst \n\
|
||||
;; r12 - n \n\
|
||||
\n\
|
||||
;; Update n for the first loop \n\
|
||||
subq 12*4,r12 \n\
|
||||
0: \n\
|
||||
subq 12*4,$r12 \n\
|
||||
bge 0b \n\
|
||||
movem $r11,[$r13+] \n\
|
||||
"
|
||||
#ifdef __arch_common_v10_v32
|
||||
/* Cater to branch offset difference between v32 and v10. We
|
||||
assume the branch below has an 8-bit offset. */
|
||||
" setf\n"
|
||||
#endif
|
||||
" subq 12*4,r12 \n\
|
||||
bge 0b \n\
|
||||
movem r11,[r13+] \n\
|
||||
\n\
|
||||
addq 12*4,$r12 ;; compensate for last loop underflowing n \n\
|
||||
;; Compensate for last loop underflowing n. \n\
|
||||
addq 12*4,r12 \n\
|
||||
\n\
|
||||
;; Restore registers from stack \n\
|
||||
movem [$sp+],$r10"
|
||||
;; Restore registers from stack. \n\
|
||||
movem [sp+],r10"
|
||||
|
||||
/* Outputs */ : "=r" (dst), "=r" (n)
|
||||
/* Inputs */ : "0" (dst), "1" (n), "r" (lc));
|
||||
/* Outputs. */
|
||||
: "=r" (dst), "=r" (n)
|
||||
|
||||
}
|
||||
/* Inputs. */
|
||||
: "0" (dst), "1" (n), "r" (lc));
|
||||
}
|
||||
|
||||
/* Either we directly starts copying, using dword copying
|
||||
in a loop, or we copy as much as possible with 'movem'
|
||||
and then the last block (<44 bytes) is copied here.
|
||||
This will work since 'movem' will have updated src,dst,n. */
|
||||
/* An ad-hoc unroll, used for 4*12-1..16 bytes. */
|
||||
while (n >= 16)
|
||||
{
|
||||
*(long *) dst = lc; dst += 4;
|
||||
*(long *) dst = lc; dst += 4;
|
||||
*(long *) dst = lc; dst += 4;
|
||||
*(long *) dst = lc; dst += 4;
|
||||
n -= 16;
|
||||
}
|
||||
|
||||
while ( n >= 16 )
|
||||
{
|
||||
*((long*)dst)++ = lc;
|
||||
*((long*)dst)++ = lc;
|
||||
*((long*)dst)++ = lc;
|
||||
*((long*)dst)++ = lc;
|
||||
n -= 16;
|
||||
}
|
||||
|
||||
/* A switch() is definitely the fastest although it takes a LOT of code.
|
||||
* Particularly if you inline code this.
|
||||
*/
|
||||
switch (n)
|
||||
{
|
||||
{
|
||||
case 0:
|
||||
break;
|
||||
|
||||
case 1:
|
||||
*(char*)dst = (char) lc;
|
||||
*dst = (char) lc;
|
||||
break;
|
||||
|
||||
case 2:
|
||||
*(short*)dst = (short) lc;
|
||||
*(short *) dst = (short) lc;
|
||||
break;
|
||||
|
||||
case 3:
|
||||
*((short*)dst)++ = (short) lc;
|
||||
*(char*)dst = (char) lc;
|
||||
*(short *) dst = (short) lc; dst += 2;
|
||||
*dst = (char) lc;
|
||||
break;
|
||||
|
||||
case 4:
|
||||
*((long*)dst)++ = lc;
|
||||
*(long *) dst = lc;
|
||||
break;
|
||||
|
||||
case 5:
|
||||
*((long*)dst)++ = lc;
|
||||
*(char*)dst = (char) lc;
|
||||
*(long *) dst = lc; dst += 4;
|
||||
*dst = (char) lc;
|
||||
break;
|
||||
|
||||
case 6:
|
||||
*((long*)dst)++ = lc;
|
||||
*(short*)dst = (short) lc;
|
||||
*(long *) dst = lc; dst += 4;
|
||||
*(short *) dst = (short) lc;
|
||||
break;
|
||||
|
||||
case 7:
|
||||
*((long*)dst)++ = lc;
|
||||
*((short*)dst)++ = (short) lc;
|
||||
*(char*)dst = (char) lc;
|
||||
*(long *) dst = lc; dst += 4;
|
||||
*(short *) dst = (short) lc; dst += 2;
|
||||
*dst = (char) lc;
|
||||
break;
|
||||
|
||||
case 8:
|
||||
*((long*)dst)++ = lc;
|
||||
*((long*)dst)++ = lc;
|
||||
*(long *) dst = lc; dst += 4;
|
||||
*(long *) dst = lc;
|
||||
break;
|
||||
|
||||
case 9:
|
||||
*((long*)dst)++ = lc;
|
||||
*((long*)dst)++ = lc;
|
||||
*(char*)dst = (char) lc;
|
||||
*(long *) dst = lc; dst += 4;
|
||||
*(long *) dst = lc; dst += 4;
|
||||
*dst = (char) lc;
|
||||
break;
|
||||
|
||||
case 10:
|
||||
*((long*)dst)++ = lc;
|
||||
*((long*)dst)++ = lc;
|
||||
*(short*)dst = (short) lc;
|
||||
*(long *) dst = lc; dst += 4;
|
||||
*(long *) dst = lc; dst += 4;
|
||||
*(short *) dst = (short) lc;
|
||||
break;
|
||||
|
||||
case 11:
|
||||
*((long*)dst)++ = lc;
|
||||
*((long*)dst)++ = lc;
|
||||
*((short*)dst)++ = (short) lc;
|
||||
*(char*)dst = (char) lc;
|
||||
*(long *) dst = lc; dst += 4;
|
||||
*(long *) dst = lc; dst += 4;
|
||||
*(short *) dst = (short) lc; dst += 2;
|
||||
*dst = (char) lc;
|
||||
break;
|
||||
|
||||
case 12:
|
||||
*((long*)dst)++ = lc;
|
||||
*((long*)dst)++ = lc;
|
||||
*((long*)dst)++ = lc;
|
||||
*(long *) dst = lc; dst += 4;
|
||||
*(long *) dst = lc; dst += 4;
|
||||
*(long *) dst = lc;
|
||||
break;
|
||||
|
||||
case 13:
|
||||
*((long*)dst)++ = lc;
|
||||
*((long*)dst)++ = lc;
|
||||
*((long*)dst)++ = lc;
|
||||
*(char*)dst = (char) lc;
|
||||
*(long *) dst = lc; dst += 4;
|
||||
*(long *) dst = lc; dst += 4;
|
||||
*(long *) dst = lc; dst += 4;
|
||||
*dst = (char) lc;
|
||||
break;
|
||||
|
||||
case 14:
|
||||
*((long*)dst)++ = lc;
|
||||
*((long*)dst)++ = lc;
|
||||
*((long*)dst)++ = lc;
|
||||
*(short*)dst = (short) lc;
|
||||
*(long *) dst = lc; dst += 4;
|
||||
*(long *) dst = lc; dst += 4;
|
||||
*(long *) dst = lc; dst += 4;
|
||||
*(short *) dst = (short) lc;
|
||||
break;
|
||||
|
||||
case 15:
|
||||
*((long*)dst)++ = lc;
|
||||
*((long*)dst)++ = lc;
|
||||
*((long*)dst)++ = lc;
|
||||
*((short*)dst)++ = (short) lc;
|
||||
*(char*)dst = (char) lc;
|
||||
*(long *) dst = lc; dst += 4;
|
||||
*(long *) dst = lc; dst += 4;
|
||||
*(long *) dst = lc; dst += 4;
|
||||
*(short *) dst = (short) lc; dst += 2;
|
||||
*dst = (char) lc;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return return_dst; /* destination pointer. */
|
||||
} /* memset() */
|
||||
return return_dst;
|
||||
}
|
||||
|
|
|
@ -1,253 +1,259 @@
|
|||
/*#************************************************************************#*/
|
||||
/*#-------------------------------------------------------------------------*/
|
||||
/*# */
|
||||
/*# FUNCTION NAME: memset() */
|
||||
/*# */
|
||||
/*# PARAMETERS: void* dst; Destination address. */
|
||||
/*# int c; Value of byte to write. */
|
||||
/*# int len; Number of bytes to write. */
|
||||
/*# */
|
||||
/*# RETURNS: dst. */
|
||||
/*# */
|
||||
/*# DESCRIPTION: Sets the memory dst of length len bytes to c, as standard. */
|
||||
/*# Framework taken from memcpy. This routine is */
|
||||
/*# very sensitive to compiler changes in register allocation. */
|
||||
/*# Should really be rewritten to avoid this problem. */
|
||||
/*# */
|
||||
/*#-------------------------------------------------------------------------*/
|
||||
/*# */
|
||||
/*# HISTORY */
|
||||
/*# */
|
||||
/*# DATE NAME CHANGES */
|
||||
/*# ---- ---- ------- */
|
||||
/*# 990713 HP Tired of watching this function (or */
|
||||
/*# really, the nonoptimized generic */
|
||||
/*# implementation) take up 90% of simulator */
|
||||
/*# output. Measurements needed. */
|
||||
/*# */
|
||||
/*#-------------------------------------------------------------------------*/
|
||||
/* A memset for CRIS.
|
||||
Copyright (C) 1999-2005 Axis Communications.
|
||||
All rights reserved.
|
||||
|
||||
#include <linux/types.h>
|
||||
Redistribution and use in source and binary forms, with or without
|
||||
modification, are permitted provided that the following conditions
|
||||
are met:
|
||||
|
||||
/* No, there's no macro saying 12*4, since it is "hard" to get it into
|
||||
the asm in a good way. Thus better to expose the problem everywhere.
|
||||
*/
|
||||
1. Redistributions of source code must retain the above copyright
|
||||
notice, this list of conditions and the following disclaimer.
|
||||
|
||||
/* Assuming 1 cycle per dword written or read (ok, not really true), and
|
||||
one per instruction, then 43+3*(n/48-1) <= 24+24*(n/48-1)
|
||||
so n >= 45.7; n >= 0.9; we win on the first full 48-byte block to set. */
|
||||
2. Neither the name of Axis Communications nor the names of its
|
||||
contributors may be used to endorse or promote products derived
|
||||
from this software without specific prior written permission.
|
||||
|
||||
#define ZERO_BLOCK_SIZE (1*12*4)
|
||||
THIS SOFTWARE IS PROVIDED BY AXIS COMMUNICATIONS AND ITS CONTRIBUTORS
|
||||
``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||
LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
||||
A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL AXIS
|
||||
COMMUNICATIONS OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
|
||||
INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
|
||||
SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
||||
HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
|
||||
STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
|
||||
IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
||||
POSSIBILITY OF SUCH DAMAGE. */
|
||||
|
||||
void *memset(void *pdst,
|
||||
int c,
|
||||
size_t plen)
|
||||
/* FIXME: This file should really only be used for reference, as the
|
||||
result is somewhat depending on gcc generating what we expect rather
|
||||
than what we describe. An assembly file should be used instead. */
|
||||
|
||||
/* Note the multiple occurrence of the expression "12*4", including the
|
||||
asm. It is hard to get it into the asm in a good way. Thus better to
|
||||
expose the problem everywhere: no macro. */
|
||||
|
||||
/* Assuming one cycle per dword written or read (ok, not really true; the
|
||||
world is not ideal), and one cycle per instruction, then 43+3*(n/48-1)
|
||||
<= 24+24*(n/48-1) so n >= 45.7; n >= 0.9; we win on the first full
|
||||
48-byte block to set. */
|
||||
|
||||
#define MEMSET_BY_BLOCK_THRESHOLD (1 * 48)
|
||||
|
||||
/* No name ambiguities in this file. */
|
||||
__asm__ (".syntax no_register_prefix");
|
||||
|
||||
void *memset(void *pdst, int c, unsigned int plen)
|
||||
{
|
||||
/* Ok. Now we want the parameters put in special registers.
|
||||
Make sure the compiler is able to make something useful of this. */
|
||||
/* Now we want the parameters in special registers. Make sure the
|
||||
compiler does something usable with this. */
|
||||
|
||||
register char *return_dst __asm__ ("r10") = pdst;
|
||||
register int n __asm__ ("r12") = plen;
|
||||
register int lc __asm__ ("r11") = c;
|
||||
|
||||
/* Most apps use memset sanely. Only those memsetting about 3..4
|
||||
bytes or less get penalized compared to the generic implementation
|
||||
- and that's not really sane use. */
|
||||
/* Most apps use memset sanely. Memsetting about 3..4 bytes or less get
|
||||
penalized here compared to the generic implementation. */
|
||||
|
||||
/* Ugh. This is fragile at best. Check with newer GCC releases, if
|
||||
they compile cascaded "x |= x << 8" sanely! */
|
||||
__asm__("movu.b %0,$r13 \n\
|
||||
lslq 8,$r13 \n\
|
||||
move.b %0,$r13 \n\
|
||||
move.d $r13,%0 \n\
|
||||
lslq 16,$r13 \n\
|
||||
or.d $r13,%0"
|
||||
: "=r" (lc) : "0" (lc) : "r13");
|
||||
/* This is fragile performancewise at best. Check with newer GCC
|
||||
releases, if they compile cascaded "x |= x << 8" to sane code. */
|
||||
__asm__("movu.b %0,r13 \n\
|
||||
lslq 8,r13 \n\
|
||||
move.b %0,r13 \n\
|
||||
move.d r13,%0 \n\
|
||||
lslq 16,r13 \n\
|
||||
or.d r13,%0"
|
||||
: "=r" (lc) /* Inputs. */
|
||||
: "0" (lc) /* Outputs. */
|
||||
: "r13"); /* Trash. */
|
||||
|
||||
{
|
||||
register char *dst __asm__ ("r13") = pdst;
|
||||
|
||||
/* This is NONPORTABLE, but since this whole routine is */
|
||||
/* grossly nonportable that doesn't matter. */
|
||||
if (((unsigned long) pdst & 3) != 0
|
||||
/* Oops! n = 0 must be a valid call, regardless of alignment. */
|
||||
&& n >= 3)
|
||||
{
|
||||
if ((unsigned long) dst & 1)
|
||||
{
|
||||
*dst = (char) lc;
|
||||
n--;
|
||||
dst++;
|
||||
}
|
||||
|
||||
if (((unsigned long) pdst & 3) != 0
|
||||
/* Oops! n=0 must be a legal call, regardless of alignment. */
|
||||
&& n >= 3)
|
||||
{
|
||||
if ((unsigned long)dst & 1)
|
||||
{
|
||||
*dst = (char) lc;
|
||||
n--;
|
||||
dst++;
|
||||
}
|
||||
if ((unsigned long) dst & 2)
|
||||
{
|
||||
*(short *) dst = lc;
|
||||
n -= 2;
|
||||
dst += 2;
|
||||
}
|
||||
}
|
||||
|
||||
if ((unsigned long)dst & 2)
|
||||
{
|
||||
*(short *)dst = lc;
|
||||
n -= 2;
|
||||
dst += 2;
|
||||
}
|
||||
}
|
||||
|
||||
/* Now the fun part. For the threshold value of this, check the equation
|
||||
above. */
|
||||
/* Decide which copying method to use. */
|
||||
if (n >= ZERO_BLOCK_SIZE)
|
||||
{
|
||||
/* For large copies we use 'movem' */
|
||||
|
||||
/* It is not optimal to tell the compiler about clobbering any
|
||||
registers; that will move the saving/restoring of those registers
|
||||
to the function prologue/epilogue, and make non-movem sizes
|
||||
suboptimal.
|
||||
|
||||
This method is not foolproof; it assumes that the "asm reg"
|
||||
declarations at the beginning of the function really are used
|
||||
here (beware: they may be moved to temporary registers).
|
||||
This way, we do not have to save/move the registers around into
|
||||
temporaries; we can safely use them straight away.
|
||||
|
||||
If you want to check that the allocation was right; then
|
||||
check the equalities in the first comment. It should say
|
||||
"r13=r13, r12=r12, r11=r11" */
|
||||
__asm__ volatile (" \n\
|
||||
;; Check that the register asm declaration got right. \n\
|
||||
;; The GCC manual says it will work, but there *has* been bugs. \n\
|
||||
.ifnc %0-%1-%4,$r13-$r12-$r11 \n\
|
||||
.err \n\
|
||||
.endif \n\
|
||||
/* Decide which setting method to use. */
|
||||
if (n >= MEMSET_BY_BLOCK_THRESHOLD)
|
||||
{
|
||||
/* It is not optimal to tell the compiler about clobbering any
|
||||
registers; that will move the saving/restoring of those registers
|
||||
to the function prologue/epilogue, and make non-block sizes
|
||||
suboptimal. */
|
||||
__asm__ volatile
|
||||
("\
|
||||
;; GCC does promise correct register allocations, but let's \n\
|
||||
;; make sure it keeps its promises. \n\
|
||||
.ifnc %0-%1-%4,$r13-$r12-$r11 \n\
|
||||
.error \"GCC reg alloc bug: %0-%1-%4 != $r13-$r12-$r11\" \n\
|
||||
.endif \n\
|
||||
\n\
|
||||
;; Save the registers we'll clobber in the movem process \n\
|
||||
;; on the stack. Don't mention them to gcc, it will only be \n\
|
||||
;; upset. \n\
|
||||
subq 11*4,$sp \n\
|
||||
movem $r10,[$sp] \n\
|
||||
;; Save the registers we'll clobber in the movem process \n\
|
||||
;; on the stack. Don't mention them to gcc, it will only be \n\
|
||||
;; upset. \n\
|
||||
subq 11*4,sp \n\
|
||||
movem r10,[sp] \n\
|
||||
\n\
|
||||
move.d $r11,$r0 \n\
|
||||
move.d $r11,$r1 \n\
|
||||
move.d $r11,$r2 \n\
|
||||
move.d $r11,$r3 \n\
|
||||
move.d $r11,$r4 \n\
|
||||
move.d $r11,$r5 \n\
|
||||
move.d $r11,$r6 \n\
|
||||
move.d $r11,$r7 \n\
|
||||
move.d $r11,$r8 \n\
|
||||
move.d $r11,$r9 \n\
|
||||
move.d $r11,$r10 \n\
|
||||
move.d r11,r0 \n\
|
||||
move.d r11,r1 \n\
|
||||
move.d r11,r2 \n\
|
||||
move.d r11,r3 \n\
|
||||
move.d r11,r4 \n\
|
||||
move.d r11,r5 \n\
|
||||
move.d r11,r6 \n\
|
||||
move.d r11,r7 \n\
|
||||
move.d r11,r8 \n\
|
||||
move.d r11,r9 \n\
|
||||
move.d r11,r10 \n\
|
||||
\n\
|
||||
;; Now we've got this: \n\
|
||||
;; r13 - dst \n\
|
||||
;; r12 - n \n\
|
||||
;; Now we've got this: \n\
|
||||
;; r13 - dst \n\
|
||||
;; r12 - n \n\
|
||||
\n\
|
||||
;; Update n for the first loop \n\
|
||||
subq 12*4,$r12 \n\
|
||||
;; Update n for the first loop \n\
|
||||
subq 12*4,r12 \n\
|
||||
0: \n\
|
||||
subq 12*4,$r12 \n\
|
||||
bge 0b \n\
|
||||
movem $r11,[$r13+] \n\
|
||||
"
|
||||
#ifdef __arch_common_v10_v32
|
||||
/* Cater to branch offset difference between v32 and v10. We
|
||||
assume the branch below has an 8-bit offset. */
|
||||
" setf\n"
|
||||
#endif
|
||||
" subq 12*4,r12 \n\
|
||||
bge 0b \n\
|
||||
movem r11,[r13+] \n\
|
||||
\n\
|
||||
addq 12*4,$r12 ;; compensate for last loop underflowing n \n\
|
||||
;; Compensate for last loop underflowing n. \n\
|
||||
addq 12*4,r12 \n\
|
||||
\n\
|
||||
;; Restore registers from stack \n\
|
||||
movem [$sp+],$r10"
|
||||
;; Restore registers from stack. \n\
|
||||
movem [sp+],r10"
|
||||
|
||||
/* Outputs */ : "=r" (dst), "=r" (n)
|
||||
/* Inputs */ : "0" (dst), "1" (n), "r" (lc));
|
||||
}
|
||||
/* Outputs. */
|
||||
: "=r" (dst), "=r" (n)
|
||||
|
||||
/* Either we directly starts copying, using dword copying
|
||||
in a loop, or we copy as much as possible with 'movem'
|
||||
and then the last block (<44 bytes) is copied here.
|
||||
This will work since 'movem' will have updated src,dst,n. */
|
||||
/* Inputs. */
|
||||
: "0" (dst), "1" (n), "r" (lc));
|
||||
}
|
||||
|
||||
while ( n >= 16 )
|
||||
{
|
||||
*((long*)dst)++ = lc;
|
||||
*((long*)dst)++ = lc;
|
||||
*((long*)dst)++ = lc;
|
||||
*((long*)dst)++ = lc;
|
||||
n -= 16;
|
||||
}
|
||||
/* An ad-hoc unroll, used for 4*12-1..16 bytes. */
|
||||
while (n >= 16)
|
||||
{
|
||||
*(long *) dst = lc; dst += 4;
|
||||
*(long *) dst = lc; dst += 4;
|
||||
*(long *) dst = lc; dst += 4;
|
||||
*(long *) dst = lc; dst += 4;
|
||||
n -= 16;
|
||||
}
|
||||
|
||||
/* A switch() is definitely the fastest although it takes a LOT of code.
|
||||
* Particularly if you inline code this.
|
||||
*/
|
||||
switch (n)
|
||||
{
|
||||
{
|
||||
case 0:
|
||||
break;
|
||||
|
||||
case 1:
|
||||
*(char*)dst = (char) lc;
|
||||
*dst = (char) lc;
|
||||
break;
|
||||
|
||||
case 2:
|
||||
*(short*)dst = (short) lc;
|
||||
*(short *) dst = (short) lc;
|
||||
break;
|
||||
|
||||
case 3:
|
||||
*((short*)dst)++ = (short) lc;
|
||||
*(char*)dst = (char) lc;
|
||||
*(short *) dst = (short) lc; dst += 2;
|
||||
*dst = (char) lc;
|
||||
break;
|
||||
|
||||
case 4:
|
||||
*((long*)dst)++ = lc;
|
||||
*(long *) dst = lc;
|
||||
break;
|
||||
|
||||
case 5:
|
||||
*((long*)dst)++ = lc;
|
||||
*(char*)dst = (char) lc;
|
||||
*(long *) dst = lc; dst += 4;
|
||||
*dst = (char) lc;
|
||||
break;
|
||||
|
||||
case 6:
|
||||
*((long*)dst)++ = lc;
|
||||
*(short*)dst = (short) lc;
|
||||
*(long *) dst = lc; dst += 4;
|
||||
*(short *) dst = (short) lc;
|
||||
break;
|
||||
|
||||
case 7:
|
||||
*((long*)dst)++ = lc;
|
||||
*((short*)dst)++ = (short) lc;
|
||||
*(char*)dst = (char) lc;
|
||||
*(long *) dst = lc; dst += 4;
|
||||
*(short *) dst = (short) lc; dst += 2;
|
||||
*dst = (char) lc;
|
||||
break;
|
||||
|
||||
case 8:
|
||||
*((long*)dst)++ = lc;
|
||||
*((long*)dst)++ = lc;
|
||||
*(long *) dst = lc; dst += 4;
|
||||
*(long *) dst = lc;
|
||||
break;
|
||||
|
||||
case 9:
|
||||
*((long*)dst)++ = lc;
|
||||
*((long*)dst)++ = lc;
|
||||
*(char*)dst = (char) lc;
|
||||
*(long *) dst = lc; dst += 4;
|
||||
*(long *) dst = lc; dst += 4;
|
||||
*dst = (char) lc;
|
||||
break;
|
||||
|
||||
case 10:
|
||||
*((long*)dst)++ = lc;
|
||||
*((long*)dst)++ = lc;
|
||||
*(short*)dst = (short) lc;
|
||||
*(long *) dst = lc; dst += 4;
|
||||
*(long *) dst = lc; dst += 4;
|
||||
*(short *) dst = (short) lc;
|
||||
break;
|
||||
|
||||
case 11:
|
||||
*((long*)dst)++ = lc;
|
||||
*((long*)dst)++ = lc;
|
||||
*((short*)dst)++ = (short) lc;
|
||||
*(char*)dst = (char) lc;
|
||||
*(long *) dst = lc; dst += 4;
|
||||
*(long *) dst = lc; dst += 4;
|
||||
*(short *) dst = (short) lc; dst += 2;
|
||||
*dst = (char) lc;
|
||||
break;
|
||||
|
||||
case 12:
|
||||
*((long*)dst)++ = lc;
|
||||
*((long*)dst)++ = lc;
|
||||
*((long*)dst)++ = lc;
|
||||
*(long *) dst = lc; dst += 4;
|
||||
*(long *) dst = lc; dst += 4;
|
||||
*(long *) dst = lc;
|
||||
break;
|
||||
|
||||
case 13:
|
||||
*((long*)dst)++ = lc;
|
||||
*((long*)dst)++ = lc;
|
||||
*((long*)dst)++ = lc;
|
||||
*(char*)dst = (char) lc;
|
||||
*(long *) dst = lc; dst += 4;
|
||||
*(long *) dst = lc; dst += 4;
|
||||
*(long *) dst = lc; dst += 4;
|
||||
*dst = (char) lc;
|
||||
break;
|
||||
|
||||
case 14:
|
||||
*((long*)dst)++ = lc;
|
||||
*((long*)dst)++ = lc;
|
||||
*((long*)dst)++ = lc;
|
||||
*(short*)dst = (short) lc;
|
||||
*(long *) dst = lc; dst += 4;
|
||||
*(long *) dst = lc; dst += 4;
|
||||
*(long *) dst = lc; dst += 4;
|
||||
*(short *) dst = (short) lc;
|
||||
break;
|
||||
|
||||
case 15:
|
||||
*((long*)dst)++ = lc;
|
||||
*((long*)dst)++ = lc;
|
||||
*((long*)dst)++ = lc;
|
||||
*((short*)dst)++ = (short) lc;
|
||||
*(char*)dst = (char) lc;
|
||||
*(long *) dst = lc; dst += 4;
|
||||
*(long *) dst = lc; dst += 4;
|
||||
*(long *) dst = lc; dst += 4;
|
||||
*(short *) dst = (short) lc; dst += 2;
|
||||
*dst = (char) lc;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return return_dst; /* destination pointer. */
|
||||
} /* memset() */
|
||||
return return_dst;
|
||||
}
|
||||
|
|
|
@ -1494,9 +1494,11 @@ sys_call_table:
|
|||
.long sys_epoll_pwait
|
||||
.long sys_utimensat /* 320 */
|
||||
.long sys_signalfd
|
||||
.long sys_ni_syscall
|
||||
.long sys_timerfd_create
|
||||
.long sys_eventfd
|
||||
.long sys_fallocate
|
||||
.long sys_timerfd_settime /* 325 */
|
||||
.long sys_timerfd_gettime
|
||||
|
||||
|
||||
syscall_table_size = (. - sys_call_table)
|
||||
|
|
|
@ -63,6 +63,7 @@ static irqreturn_t timer_interrupt(int irq, void *dummy)
|
|||
/* last time the cmos clock got updated */
|
||||
static long last_rtc_update = 0;
|
||||
|
||||
profile_tick(CPU_PROFILING);
|
||||
/*
|
||||
* Here we are in the timer irq handler. We just have irqs locally
|
||||
* disabled but we don't know if the timer_bh is running on the other
|
||||
|
@ -73,8 +74,6 @@ static irqreturn_t timer_interrupt(int irq, void *dummy)
|
|||
write_seqlock(&xtime_lock);
|
||||
|
||||
do_timer(1);
|
||||
update_process_times(user_mode(get_irq_regs()));
|
||||
profile_tick(CPU_PROFILING);
|
||||
|
||||
/*
|
||||
* If we have an externally synchronized Linux clock, then update
|
||||
|
@ -99,6 +98,9 @@ static irqreturn_t timer_interrupt(int irq, void *dummy)
|
|||
#endif /* CONFIG_HEARTBEAT */
|
||||
|
||||
write_sequnlock(&xtime_lock);
|
||||
|
||||
update_process_times(user_mode(get_irq_regs()));
|
||||
|
||||
return IRQ_HANDLED;
|
||||
}
|
||||
|
||||
|
|
|
@ -76,9 +76,6 @@ SECTIONS
|
|||
*(.data.init_task)
|
||||
}
|
||||
|
||||
. = ALIGN(4096);
|
||||
.data.page_aligned : { *(.data.idt) }
|
||||
|
||||
. = ALIGN(L1_CACHE_BYTES);
|
||||
.data.cacheline_aligned : { *(.data.cacheline_aligned) }
|
||||
|
||||
|
@ -105,11 +102,9 @@ SECTIONS
|
|||
SCHED_TEXT
|
||||
LOCK_TEXT
|
||||
#ifdef CONFIG_DEBUG_INFO
|
||||
*(
|
||||
INIT_TEXT
|
||||
EXIT_TEXT
|
||||
.exitcall.exit
|
||||
)
|
||||
*(.exitcall.exit)
|
||||
#endif
|
||||
*(.fixup)
|
||||
*(.gnu.warning)
|
||||
|
|
|
@ -1,51 +1,98 @@
|
|||
#
|
||||
# Automatically generated make config: don't edit
|
||||
# Linux kernel version: 2.6.11-rc1
|
||||
# Sun Jan 16 17:24:38 2005
|
||||
# Linux kernel version: 2.6.25-rc1
|
||||
# Fri Feb 15 17:13:14 2008
|
||||
#
|
||||
CONFIG_H8300=y
|
||||
# CONFIG_MMU is not set
|
||||
# CONFIG_SWAP is not set
|
||||
CONFIG_ZONE_DMA=y
|
||||
# CONFIG_FPU is not set
|
||||
CONFIG_UID16=y
|
||||
CONFIG_RWSEM_GENERIC_SPINLOCK=y
|
||||
# CONFIG_RWSEM_XCHGADD_ALGORITHM is not set
|
||||
# CONFIG_ARCH_HAS_ILOG2_U32 is not set
|
||||
# CONFIG_ARCH_HAS_ILOG2_U64 is not set
|
||||
CONFIG_GENERIC_FIND_NEXT_BIT=y
|
||||
CONFIG_GENERIC_HWEIGHT=y
|
||||
CONFIG_GENERIC_HARDIRQS=y
|
||||
CONFIG_GENERIC_CALIBRATE_DELAY=y
|
||||
CONFIG_GENERIC_TIME=y
|
||||
CONFIG_TIME_LOW_RES=y
|
||||
CONFIG_ARCH_SUPPORTS_AOUT=y
|
||||
CONFIG_NO_IOPORT=y
|
||||
CONFIG_NO_DMA=y
|
||||
CONFIG_ISA=y
|
||||
# CONFIG_PCI is not set
|
||||
|
||||
#
|
||||
# Code maturity level options
|
||||
#
|
||||
CONFIG_EXPERIMENTAL=y
|
||||
CONFIG_CLEAN_COMPILE=y
|
||||
CONFIG_BROKEN_ON_SMP=y
|
||||
CONFIG_HZ=100
|
||||
CONFIG_C_SYMBOL_PREFIX=y
|
||||
CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
|
||||
|
||||
#
|
||||
# General setup
|
||||
#
|
||||
CONFIG_EXPERIMENTAL=y
|
||||
CONFIG_BROKEN_ON_SMP=y
|
||||
CONFIG_INIT_ENV_ARG_LIMIT=32
|
||||
CONFIG_LOCALVERSION=""
|
||||
# CONFIG_LOCALVERSION_AUTO is not set
|
||||
# CONFIG_SYSVIPC is not set
|
||||
# CONFIG_BSD_PROCESS_ACCT is not set
|
||||
# CONFIG_SYSCTL is not set
|
||||
# CONFIG_AUDIT is not set
|
||||
CONFIG_LOG_BUF_SHIFT=14
|
||||
# CONFIG_HOTPLUG is not set
|
||||
# CONFIG_IKCONFIG is not set
|
||||
CONFIG_LOG_BUF_SHIFT=14
|
||||
# CONFIG_CGROUPS is not set
|
||||
# CONFIG_FAIR_GROUP_SCHED is not set
|
||||
# CONFIG_SYSFS_DEPRECATED is not set
|
||||
# CONFIG_RELAY is not set
|
||||
# CONFIG_NAMESPACES is not set
|
||||
# CONFIG_BLK_DEV_INITRD is not set
|
||||
CONFIG_CC_OPTIMIZE_FOR_SIZE=y
|
||||
CONFIG_SYSCTL=y
|
||||
CONFIG_EMBEDDED=y
|
||||
# CONFIG_UID16 is not set
|
||||
# CONFIG_SYSCTL_SYSCALL is not set
|
||||
# CONFIG_KALLSYMS is not set
|
||||
# CONFIG_HOTPLUG is not set
|
||||
CONFIG_PRINTK=y
|
||||
CONFIG_BUG=y
|
||||
CONFIG_ELF_CORE=y
|
||||
# CONFIG_COMPAT_BRK is not set
|
||||
# CONFIG_BASE_FULL is not set
|
||||
# CONFIG_FUTEX is not set
|
||||
# CONFIG_EPOLL is not set
|
||||
CONFIG_CC_OPTIMIZE_FOR_SIZE=y
|
||||
CONFIG_CC_ALIGN_FUNCTIONS=0
|
||||
CONFIG_CC_ALIGN_LABELS=0
|
||||
CONFIG_CC_ALIGN_LOOPS=0
|
||||
CONFIG_CC_ALIGN_JUMPS=0
|
||||
# CONFIG_SIGNALFD is not set
|
||||
# CONFIG_TIMERFD is not set
|
||||
# CONFIG_EVENTFD is not set
|
||||
# CONFIG_VM_EVENT_COUNTERS is not set
|
||||
# CONFIG_SLAB is not set
|
||||
# CONFIG_SLUB is not set
|
||||
CONFIG_SLOB=y
|
||||
# CONFIG_PROFILING is not set
|
||||
# CONFIG_MARKERS is not set
|
||||
# CONFIG_HAVE_OPROFILE is not set
|
||||
# CONFIG_HAVE_KPROBES is not set
|
||||
CONFIG_TINY_SHMEM=y
|
||||
CONFIG_BASE_SMALL=1
|
||||
# CONFIG_MODULES is not set
|
||||
CONFIG_BLOCK=y
|
||||
# CONFIG_LBD is not set
|
||||
# CONFIG_BLK_DEV_IO_TRACE is not set
|
||||
# CONFIG_LSF is not set
|
||||
# CONFIG_BLK_DEV_BSG is not set
|
||||
|
||||
#
|
||||
# Loadable module support
|
||||
# IO Schedulers
|
||||
#
|
||||
# CONFIG_MODULES is not set
|
||||
CONFIG_IOSCHED_NOOP=y
|
||||
# CONFIG_IOSCHED_AS is not set
|
||||
# CONFIG_IOSCHED_DEADLINE is not set
|
||||
# CONFIG_IOSCHED_CFQ is not set
|
||||
# CONFIG_DEFAULT_AS is not set
|
||||
# CONFIG_DEFAULT_DEADLINE is not set
|
||||
# CONFIG_DEFAULT_CFQ is not set
|
||||
CONFIG_DEFAULT_NOOP=y
|
||||
CONFIG_DEFAULT_IOSCHED="noop"
|
||||
CONFIG_CLASSIC_RCU=y
|
||||
# CONFIG_PREEMPT_RCU is not set
|
||||
|
||||
#
|
||||
# Processor type and features
|
||||
|
@ -62,14 +109,26 @@ CONFIG_H8300H_GENERIC=y
|
|||
# Detail Selection
|
||||
#
|
||||
# CONFIG_H83002 is not set
|
||||
# CONFIG_H83007 is not set
|
||||
CONFIG_H83007=y
|
||||
# CONFIG_H83048 is not set
|
||||
CONFIG_H83068=y
|
||||
# CONFIG_H83068 is not set
|
||||
CONFIG_CPU_CLOCK=20000
|
||||
# CONFIG_RAMKERNEL is not set
|
||||
CONFIG_ROMKERNEL=y
|
||||
CONFIG_RAMKERNEL=y
|
||||
# CONFIG_ROMKERNEL is not set
|
||||
CONFIG_CPU_H8300H=y
|
||||
# CONFIG_PREEMPT is not set
|
||||
CONFIG_SELECT_MEMORY_MODEL=y
|
||||
CONFIG_FLATMEM_MANUAL=y
|
||||
# CONFIG_DISCONTIGMEM_MANUAL is not set
|
||||
# CONFIG_SPARSEMEM_MANUAL is not set
|
||||
CONFIG_FLATMEM=y
|
||||
CONFIG_FLAT_NODE_MEM_MAP=y
|
||||
# CONFIG_SPARSEMEM_STATIC is not set
|
||||
# CONFIG_SPARSEMEM_VMEMMAP_ENABLE is not set
|
||||
CONFIG_SPLIT_PTLOCK_CPUS=4
|
||||
# CONFIG_RESOURCES_64BIT is not set
|
||||
CONFIG_ZONE_DMA_FLAG=1
|
||||
CONFIG_VIRT_TO_BUS=y
|
||||
|
||||
#
|
||||
# Executable file formats
|
||||
|
@ -77,34 +136,42 @@ CONFIG_CPU_H8300H=y
|
|||
CONFIG_BINFMT_FLAT=y
|
||||
CONFIG_BINFMT_ZFLAT=y
|
||||
# CONFIG_BINFMT_SHARED_FLAT is not set
|
||||
# CONFIG_BINFMT_MISC is not set
|
||||
CONFIG_BINFMT_MISC=y
|
||||
|
||||
#
|
||||
# Networking
|
||||
#
|
||||
# CONFIG_NET is not set
|
||||
|
||||
#
|
||||
# Generic Driver Options
|
||||
#
|
||||
# CONFIG_STANDALONE is not set
|
||||
CONFIG_STANDALONE=y
|
||||
# CONFIG_PREVENT_FIRMWARE_BUILD is not set
|
||||
# CONFIG_FW_LOADER is not set
|
||||
# CONFIG_DEBUG_DRIVER is not set
|
||||
|
||||
#
|
||||
# Memory Technology Devices (MTD)
|
||||
#
|
||||
# CONFIG_SYS_HYPERVISOR is not set
|
||||
CONFIG_MTD=y
|
||||
# CONFIG_MTD_DEBUG is not set
|
||||
# CONFIG_MTD_CONCAT is not set
|
||||
CONFIG_MTD_PARTITIONS=y
|
||||
CONFIG_MTD_CONCAT=y
|
||||
# CONFIG_MTD_REDBOOT_PARTS is not set
|
||||
CONFIG_MTD_REDBOOT_PARTS=y
|
||||
CONFIG_MTD_REDBOOT_DIRECTORY_BLOCK=-1
|
||||
# CONFIG_MTD_REDBOOT_PARTS_UNALLOCATED is not set
|
||||
# CONFIG_MTD_REDBOOT_PARTS_READONLY is not set
|
||||
# CONFIG_MTD_CMDLINE_PARTS is not set
|
||||
|
||||
#
|
||||
# User Modules And Translation Layers
|
||||
#
|
||||
CONFIG_MTD_CHAR=y
|
||||
CONFIG_MTD_BLOCK=y
|
||||
# CONFIG_MTD_BLKDEVS is not set
|
||||
# CONFIG_MTD_BLOCK is not set
|
||||
# CONFIG_MTD_BLOCK_RO is not set
|
||||
# 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
|
||||
# CONFIG_MTD_OOPS is not set
|
||||
|
||||
#
|
||||
# RAM/ROM/Flash chip drivers
|
||||
|
@ -129,7 +196,9 @@ CONFIG_MTD_ROM=y
|
|||
# Mapping drivers for chip access
|
||||
#
|
||||
# CONFIG_MTD_COMPLEX_MAPPINGS is not set
|
||||
# CONFIG_MTD_PHYSMAP is not set
|
||||
CONFIG_MTD_UCLINUX=y
|
||||
# CONFIG_MTD_PLATRAM is not set
|
||||
|
||||
#
|
||||
# Self-contained MTD device drivers
|
||||
|
@ -137,7 +206,6 @@ CONFIG_MTD_UCLINUX=y
|
|||
# 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
|
||||
|
||||
#
|
||||
|
@ -146,63 +214,27 @@ CONFIG_MTD_UCLINUX=y
|
|||
# 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
|
||||
# CONFIG_MTD_ONENAND is not set
|
||||
|
||||
#
|
||||
# Block devices
|
||||
#
|
||||
# CONFIG_BLK_DEV_FD is not set
|
||||
# CONFIG_BLK_DEV_XD is not set
|
||||
# CONFIG_BLK_DEV_LOOP is not set
|
||||
# CONFIG_BLK_DEV_RAM is not set
|
||||
CONFIG_BLK_DEV_RAM_COUNT=16
|
||||
CONFIG_INITRAMFS_SOURCE=""
|
||||
# CONFIG_CDROM_PKTCDVD is not set
|
||||
|
||||
#
|
||||
# IO Schedulers
|
||||
#
|
||||
CONFIG_IOSCHED_NOOP=y
|
||||
# CONFIG_IOSCHED_AS is not set
|
||||
# CONFIG_IOSCHED_DEADLINE is not set
|
||||
# CONFIG_IOSCHED_CFQ is not set
|
||||
|
||||
#
|
||||
# ATA/ATAPI/MFM/RLL support
|
||||
# UBI - Unsorted block images
|
||||
#
|
||||
# CONFIG_MTD_UBI is not set
|
||||
# CONFIG_BLK_DEV is not set
|
||||
CONFIG_HAVE_IDE=y
|
||||
# CONFIG_IDE is not set
|
||||
|
||||
#
|
||||
# Networking support
|
||||
#
|
||||
# CONFIG_NET is not set
|
||||
# CONFIG_NETPOLL is not set
|
||||
# CONFIG_NET_POLL_CONTROLLER is not set
|
||||
|
||||
#
|
||||
# Input device support
|
||||
#
|
||||
# CONFIG_INPUT is not set
|
||||
|
||||
#
|
||||
# Userland interfaces
|
||||
# Hardware I/O ports
|
||||
#
|
||||
|
||||
#
|
||||
# Input I/O drivers
|
||||
#
|
||||
# CONFIG_GAMEPORT is not set
|
||||
CONFIG_SOUND_GAMEPORT=y
|
||||
# CONFIG_SERIO is not set
|
||||
# CONFIG_SERIO_I8042 is not set
|
||||
|
||||
#
|
||||
# Input Device Drivers
|
||||
#
|
||||
# CONFIG_GAMEPORT is not set
|
||||
|
||||
#
|
||||
# Character devices
|
||||
|
@ -223,45 +255,31 @@ CONFIG_SOUND_GAMEPORT=y
|
|||
# Non-8250 serial port support
|
||||
#
|
||||
CONFIG_SERIAL_SH_SCI=y
|
||||
CONFIG_SERIAL_SH_SCI_NR_UARTS=2
|
||||
CONFIG_SERIAL_SH_SCI_CONSOLE=y
|
||||
CONFIG_SERIAL_CORE=y
|
||||
CONFIG_SERIAL_CORE_CONSOLE=y
|
||||
|
||||
#
|
||||
# I2C support
|
||||
#
|
||||
# CONFIG_I2C is not set
|
||||
|
||||
#
|
||||
# USB support
|
||||
#
|
||||
# CONFIG_USB_ARCH_HAS_HCD is not set
|
||||
# CONFIG_USB_ARCH_HAS_OHCI is not set
|
||||
|
||||
#
|
||||
# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support' may also be needed; see USB_STORAGE Help for more information
|
||||
#
|
||||
|
||||
#
|
||||
# USB Gadget Support
|
||||
#
|
||||
# CONFIG_USB_GADGET is not set
|
||||
# CONFIG_HWMON is not set
|
||||
# CONFIG_USB_SUPPORT is not set
|
||||
|
||||
#
|
||||
# File systems
|
||||
#
|
||||
# CONFIG_EXT2_FS is not set
|
||||
# CONFIG_EXT3_FS is not set
|
||||
# CONFIG_JBD is not set
|
||||
# CONFIG_EXT4DEV_FS is not set
|
||||
# CONFIG_REISERFS_FS is not set
|
||||
# CONFIG_JFS_FS is not set
|
||||
# CONFIG_FS_POSIX_ACL is not set
|
||||
# CONFIG_XFS_FS is not set
|
||||
# CONFIG_MINIX_FS is not set
|
||||
CONFIG_ROMFS_FS=y
|
||||
# CONFIG_QUOTA is not set
|
||||
# CONFIG_GFS2_FS is not set
|
||||
# CONFIG_DNOTIFY is not set
|
||||
# CONFIG_INOTIFY is not set
|
||||
# CONFIG_QUOTA is not set
|
||||
# CONFIG_AUTOFS_FS is not set
|
||||
# CONFIG_AUTOFS4_FS is not set
|
||||
# CONFIG_FUSE_FS is not set
|
||||
|
||||
#
|
||||
# CD-ROM/DVD Filesystems
|
||||
|
@ -280,11 +298,11 @@ CONFIG_ROMFS_FS=y
|
|||
# Pseudo filesystems
|
||||
#
|
||||
CONFIG_PROC_FS=y
|
||||
# CONFIG_SYSFS is not set
|
||||
# CONFIG_DEVFS_FS is not set
|
||||
CONFIG_PROC_SYSCTL=y
|
||||
CONFIG_SYSFS=y
|
||||
# CONFIG_TMPFS is not set
|
||||
# CONFIG_HUGETLB_PAGE is not set
|
||||
CONFIG_RAMFS=y
|
||||
# CONFIG_CONFIGFS_FS is not set
|
||||
|
||||
#
|
||||
# Miscellaneous filesystems
|
||||
|
@ -296,12 +314,13 @@ CONFIG_RAMFS=y
|
|||
# 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_MINIX_FS is not set
|
||||
# CONFIG_HPFS_FS is not set
|
||||
# CONFIG_QNX4FS_FS is not set
|
||||
CONFIG_ROMFS_FS=y
|
||||
# CONFIG_SYSV_FS is not set
|
||||
# CONFIG_UFS_FS is not set
|
||||
|
||||
|
@ -310,22 +329,23 @@ CONFIG_RAMFS=y
|
|||
#
|
||||
# CONFIG_PARTITION_ADVANCED is not set
|
||||
CONFIG_MSDOS_PARTITION=y
|
||||
|
||||
#
|
||||
# Native Language Support
|
||||
#
|
||||
# CONFIG_NLS is not set
|
||||
|
||||
#
|
||||
# Kernel hacking
|
||||
#
|
||||
CONFIG_DEBUG_KERNEL=y
|
||||
# CONFIG_SCHEDSTATS is not set
|
||||
# CONFIG_DEBUG_KOBJECT is not set
|
||||
# CONFIG_PRINTK_TIME is not set
|
||||
# CONFIG_ENABLE_WARN_DEPRECATED is not set
|
||||
# CONFIG_ENABLE_MUST_CHECK is not set
|
||||
# CONFIG_MAGIC_SYSRQ is not set
|
||||
# CONFIG_UNUSED_SYMBOLS is not set
|
||||
# CONFIG_DEBUG_FS is not set
|
||||
CONFIG_FULLDEBUG=y
|
||||
# CONFIG_HEADERS_CHECK is not set
|
||||
# CONFIG_DEBUG_KERNEL is not set
|
||||
# CONFIG_SAMPLES is not set
|
||||
# CONFIG_FULLDEBUG is not set
|
||||
# CONFIG_HIGHPROFILE is not set
|
||||
CONFIG_NO_KERNEL_MSG=y
|
||||
# CONFIG_NO_KERNEL_MSG is not set
|
||||
# CONFIG_SYSCALL_PRINT is not set
|
||||
# CONFIG_GDB_DEBUG is not set
|
||||
# CONFIG_SH_STANDARD_BIOS is not set
|
||||
|
@ -337,20 +357,17 @@ CONFIG_NO_KERNEL_MSG=y
|
|||
#
|
||||
# CONFIG_KEYS is not set
|
||||
# CONFIG_SECURITY is not set
|
||||
|
||||
#
|
||||
# Cryptographic options
|
||||
#
|
||||
# CONFIG_SECURITY_FILE_CAPABILITIES is not set
|
||||
# CONFIG_CRYPTO is not set
|
||||
|
||||
#
|
||||
# Hardware crypto devices
|
||||
#
|
||||
|
||||
#
|
||||
# Library routines
|
||||
#
|
||||
# CONFIG_CRC_CCITT is not set
|
||||
CONFIG_CRC32=y
|
||||
# CONFIG_CRC16 is not set
|
||||
# CONFIG_CRC_ITU_T is not set
|
||||
# CONFIG_CRC32 is not set
|
||||
# CONFIG_CRC7 is not set
|
||||
# CONFIG_LIBCRC32C is not set
|
||||
CONFIG_ZLIB_INFLATE=y
|
||||
CONFIG_HAS_IOMEM=y
|
||||
|
|
|
@ -26,7 +26,7 @@
|
|||
|
||||
extern unsigned long *interrupt_redirect_table;
|
||||
extern const int h8300_saved_vectors[];
|
||||
extern const unsigned long h8300_trap_table[];
|
||||
extern const h8300_vector h8300_trap_table[];
|
||||
int h8300_enable_irq_pin(unsigned int irq);
|
||||
void h8300_disable_irq_pin(unsigned int irq);
|
||||
|
||||
|
@ -116,7 +116,7 @@ static void __init setup_vector(void)
|
|||
{
|
||||
int i;
|
||||
unsigned long *ramvec,*ramvec_p;
|
||||
const unsigned long *trap_entry;
|
||||
const h8300_vector *trap_entry;
|
||||
const int *saved_vector;
|
||||
|
||||
ramvec = get_vector_address();
|
||||
|
|
|
@ -352,7 +352,7 @@ static void setup_frame (int sig, struct k_sigaction *ka,
|
|||
ret = (unsigned char *)(ka->sa.sa_restorer);
|
||||
else {
|
||||
/* sub.l er0,er0; mov.b #__NR_sigreturn,r0l; trapa #0 */
|
||||
err != __put_user(0x1a80f800 + (__NR_sigreturn & 0xff),
|
||||
err |= __put_user(0x1a80f800 + (__NR_sigreturn & 0xff),
|
||||
(unsigned long *)(frame->retcode + 0));
|
||||
err |= __put_user(0x5700, (unsigned short *)(frame->retcode + 4));
|
||||
}
|
||||
|
@ -428,7 +428,7 @@ static void setup_rt_frame (int sig, struct k_sigaction *ka, siginfo_t *info,
|
|||
ret = (unsigned char *)(ka->sa.sa_restorer);
|
||||
else {
|
||||
/* sub.l er0,er0; mov.b #__NR_sigreturn,r0l; trapa #0 */
|
||||
err != __put_user(0x1a80f800 + (__NR_sigreturn & 0xff),
|
||||
err |= __put_user(0x1a80f800 + (__NR_sigreturn & 0xff),
|
||||
(unsigned long *)(frame->retcode + 0));
|
||||
err |= __put_user(0x5700, (unsigned short *)(frame->retcode + 4));
|
||||
}
|
||||
|
|
|
@ -4,4 +4,4 @@
|
|||
# Reuse any files we can from the H8/300H
|
||||
#
|
||||
|
||||
obj-y := irq_pin.o ptrace_h8300h.o
|
||||
obj-y := irq.o ptrace_h8300h.o
|
||||
|
|
|
@ -0,0 +1,82 @@
|
|||
/*
|
||||
* Interrupt handling H8/300H depend.
|
||||
* Yoshinori Sato <ysato@users.sourceforge.jp>
|
||||
*
|
||||
*/
|
||||
|
||||
#include <linux/init.h>
|
||||
#include <linux/errno.h>
|
||||
|
||||
#include <asm/ptrace.h>
|
||||
#include <asm/traps.h>
|
||||
#include <asm/irq.h>
|
||||
#include <asm/io.h>
|
||||
#include <asm/gpio.h>
|
||||
#include <asm/regs306x.h>
|
||||
|
||||
const int __initdata h8300_saved_vectors[] = {
|
||||
#if defined(CONFIG_GDB_DEBUG)
|
||||
TRAP3_VEC, /* TRAPA #3 is GDB breakpoint */
|
||||
#endif
|
||||
-1,
|
||||
};
|
||||
|
||||
const h8300_vector __initdata h8300_trap_table[] = {
|
||||
0, 0, 0, 0, 0, 0, 0, 0,
|
||||
system_call,
|
||||
0,
|
||||
0,
|
||||
trace_break,
|
||||
};
|
||||
|
||||
int h8300_enable_irq_pin(unsigned int irq)
|
||||
{
|
||||
int bitmask;
|
||||
if (irq < EXT_IRQ0 || irq > EXT_IRQ5)
|
||||
return 0;
|
||||
|
||||
/* initialize IRQ pin */
|
||||
bitmask = 1 << (irq - EXT_IRQ0);
|
||||
switch(irq) {
|
||||
case EXT_IRQ0:
|
||||
case EXT_IRQ1:
|
||||
case EXT_IRQ2:
|
||||
case EXT_IRQ3:
|
||||
if (H8300_GPIO_RESERVE(H8300_GPIO_P8, bitmask) == 0)
|
||||
return -EBUSY;
|
||||
H8300_GPIO_DDR(H8300_GPIO_P8, bitmask, H8300_GPIO_INPUT);
|
||||
break;
|
||||
case EXT_IRQ4:
|
||||
case EXT_IRQ5:
|
||||
if (H8300_GPIO_RESERVE(H8300_GPIO_P9, bitmask) == 0)
|
||||
return -EBUSY;
|
||||
H8300_GPIO_DDR(H8300_GPIO_P9, bitmask, H8300_GPIO_INPUT);
|
||||
break;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
void h8300_disable_irq_pin(unsigned int irq)
|
||||
{
|
||||
int bitmask;
|
||||
if (irq < EXT_IRQ0 || irq > EXT_IRQ5)
|
||||
return;
|
||||
|
||||
/* disable interrupt & release IRQ pin */
|
||||
bitmask = 1 << (irq - EXT_IRQ0);
|
||||
switch(irq) {
|
||||
case EXT_IRQ0:
|
||||
case EXT_IRQ1:
|
||||
case EXT_IRQ2:
|
||||
case EXT_IRQ3:
|
||||
*(volatile unsigned char *)IER &= ~bitmask;
|
||||
H8300_GPIO_FREE(H8300_GPIO_P8, bitmask);
|
||||
break ;
|
||||
case EXT_IRQ4:
|
||||
case EXT_IRQ5:
|
||||
*(volatile unsigned char *)IER &= ~bitmask;
|
||||
H8300_GPIO_FREE(H8300_GPIO_P9, bitmask);
|
||||
break;
|
||||
}
|
||||
}
|
|
@ -1,304 +0,0 @@
|
|||
/*
|
||||
* linux/arch/h8300/platform/h8s/ints.c
|
||||
*
|
||||
* Yoshinori Sato <ysato@users.sourceforge.jp>
|
||||
*
|
||||
* Based on linux/arch/$(ARCH)/platform/$(PLATFORM)/ints.c
|
||||
*
|
||||
* This file is subject to the terms and conditions of the GNU General Public
|
||||
* License. See the file COPYING in the main directory of this archive
|
||||
* for more details.
|
||||
*
|
||||
* Copyright 1996 Roman Zippel
|
||||
* Copyright 1999 D. Jeff Dionne <jeff@rt-control.com>
|
||||
*/
|
||||
|
||||
#include <linux/module.h>
|
||||
#include <linux/types.h>
|
||||
#include <linux/kernel.h>
|
||||
#include <linux/sched.h>
|
||||
#include <linux/kernel_stat.h>
|
||||
#include <linux/seq_file.h>
|
||||
#include <linux/init.h>
|
||||
#include <linux/interrupt.h>
|
||||
#include <linux/bootmem.h>
|
||||
#include <linux/random.h>
|
||||
#include <linux/hardirq.h>
|
||||
|
||||
#include <asm/system.h>
|
||||
#include <asm/irq.h>
|
||||
#include <asm/traps.h>
|
||||
#include <asm/io.h>
|
||||
#include <asm/setup.h>
|
||||
#include <asm/gpio.h>
|
||||
#include <asm/regs267x.h>
|
||||
#include <asm/errno.h>
|
||||
|
||||
/*
|
||||
* This structure has only 4 elements for speed reasons
|
||||
*/
|
||||
typedef struct irq_handler {
|
||||
irqreturn_t (*handler)(int, void *, struct pt_regs *);
|
||||
int flags;
|
||||
int count;
|
||||
void *dev_id;
|
||||
const char *devname;
|
||||
} irq_handler_t;
|
||||
|
||||
static irq_handler_t *irq_list[NR_IRQS];
|
||||
|
||||
/* IRQ pin assignment */
|
||||
struct irq_pins {
|
||||
unsigned char port_no;
|
||||
unsigned char bit_no;
|
||||
};
|
||||
/* ISTR = 0 */
|
||||
static const struct irq_pins irq_assign_table0[16]={
|
||||
{H8300_GPIO_P5,H8300_GPIO_B0},{H8300_GPIO_P5,H8300_GPIO_B1},
|
||||
{H8300_GPIO_P5,H8300_GPIO_B2},{H8300_GPIO_P5,H8300_GPIO_B3},
|
||||
{H8300_GPIO_P5,H8300_GPIO_B4},{H8300_GPIO_P5,H8300_GPIO_B5},
|
||||
{H8300_GPIO_P5,H8300_GPIO_B6},{H8300_GPIO_P5,H8300_GPIO_B7},
|
||||
{H8300_GPIO_P6,H8300_GPIO_B0},{H8300_GPIO_P6,H8300_GPIO_B1},
|
||||
{H8300_GPIO_P6,H8300_GPIO_B2},{H8300_GPIO_P6,H8300_GPIO_B3},
|
||||
{H8300_GPIO_P6,H8300_GPIO_B4},{H8300_GPIO_P6,H8300_GPIO_B5},
|
||||
{H8300_GPIO_PF,H8300_GPIO_B1},{H8300_GPIO_PF,H8300_GPIO_B2},
|
||||
};
|
||||
/* ISTR = 1 */
|
||||
static const struct irq_pins irq_assign_table1[16]={
|
||||
{H8300_GPIO_P8,H8300_GPIO_B0},{H8300_GPIO_P8,H8300_GPIO_B1},
|
||||
{H8300_GPIO_P8,H8300_GPIO_B2},{H8300_GPIO_P8,H8300_GPIO_B3},
|
||||
{H8300_GPIO_P8,H8300_GPIO_B4},{H8300_GPIO_P8,H8300_GPIO_B5},
|
||||
{H8300_GPIO_PH,H8300_GPIO_B2},{H8300_GPIO_PH,H8300_GPIO_B3},
|
||||
{H8300_GPIO_P2,H8300_GPIO_B0},{H8300_GPIO_P2,H8300_GPIO_B1},
|
||||
{H8300_GPIO_P2,H8300_GPIO_B2},{H8300_GPIO_P2,H8300_GPIO_B3},
|
||||
{H8300_GPIO_P2,H8300_GPIO_B4},{H8300_GPIO_P2,H8300_GPIO_B5},
|
||||
{H8300_GPIO_P2,H8300_GPIO_B6},{H8300_GPIO_P2,H8300_GPIO_B7},
|
||||
};
|
||||
|
||||
static short use_kmalloc = 0;
|
||||
|
||||
extern unsigned long *interrupt_redirect_table;
|
||||
|
||||
#define CPU_VECTOR ((unsigned long *)0x000000)
|
||||
#define ADDR_MASK (0xffffff)
|
||||
|
||||
static inline unsigned long *get_vector_address(void)
|
||||
{
|
||||
volatile unsigned long *rom_vector = CPU_VECTOR;
|
||||
unsigned long base,tmp;
|
||||
int vec_no;
|
||||
|
||||
base = rom_vector[EXT_IRQ0] & ADDR_MASK;
|
||||
|
||||
/* check romvector format */
|
||||
for (vec_no = EXT_IRQ1; vec_no <= EXT_IRQ15; vec_no++) {
|
||||
if ((base+(vec_no - EXT_IRQ0)*4) != (rom_vector[vec_no] & ADDR_MASK))
|
||||
return NULL;
|
||||
}
|
||||
|
||||
/* ramvector base address */
|
||||
base -= EXT_IRQ0*4;
|
||||
|
||||
/* writerble check */
|
||||
tmp = ~(*(unsigned long *)base);
|
||||
(*(unsigned long *)base) = tmp;
|
||||
if ((*(unsigned long *)base) != tmp)
|
||||
return NULL;
|
||||
return (unsigned long *)base;
|
||||
}
|
||||
|
||||
void __init init_IRQ(void)
|
||||
{
|
||||
#if defined(CONFIG_RAMKERNEL)
|
||||
int i;
|
||||
unsigned long *ramvec,*ramvec_p;
|
||||
unsigned long break_vec;
|
||||
|
||||
ramvec = get_vector_address();
|
||||
if (ramvec == NULL)
|
||||
panic("interrupt vector serup failed.");
|
||||
else
|
||||
printk("virtual vector at 0x%08lx\n",(unsigned long)ramvec);
|
||||
|
||||
#if defined(CONFIG_GDB_DEBUG)
|
||||
/* save original break vector */
|
||||
break_vec = ramvec[TRAP3_VEC];
|
||||
#else
|
||||
break_vec = VECTOR(trace_break);
|
||||
#endif
|
||||
|
||||
/* create redirect table */
|
||||
for (ramvec_p = ramvec, i = 0; i < NR_IRQS; i++)
|
||||
*ramvec_p++ = REDIRECT(interrupt_entry);
|
||||
|
||||
/* set special vector */
|
||||
ramvec[TRAP0_VEC] = VECTOR(system_call);
|
||||
ramvec[TRAP3_VEC] = break_vec;
|
||||
interrupt_redirect_table = ramvec;
|
||||
#ifdef DUMP_VECTOR
|
||||
ramvec_p = ramvec;
|
||||
for (i = 0; i < NR_IRQS; i++) {
|
||||
if ((i % 8) == 0)
|
||||
printk("\n%p: ",ramvec_p);
|
||||
printk("%p ",*ramvec_p);
|
||||
ramvec_p++;
|
||||
}
|
||||
printk("\n");
|
||||
#endif
|
||||
#endif
|
||||
}
|
||||
|
||||
int request_irq(unsigned int irq,
|
||||
irqreturn_t (*handler)(int, void *, struct pt_regs *),
|
||||
unsigned long flags, const char *devname, void *dev_id)
|
||||
{
|
||||
unsigned short ptn = 1 << (irq - EXT_IRQ0);
|
||||
irq_handler_t *irq_handle;
|
||||
if (irq < 0 || irq >= NR_IRQS) {
|
||||
printk("Incorrect IRQ %d from %s\n", irq, devname);
|
||||
return -EINVAL;
|
||||
}
|
||||
if (irq_list[irq])
|
||||
return -EBUSY; /* already used */
|
||||
if (irq >= EXT_IRQ0 && irq <= EXT_IRQ15) {
|
||||
/* initialize IRQ pin */
|
||||
unsigned int port_no,bit_no;
|
||||
if (*(volatile unsigned short *)ITSR & ptn) {
|
||||
port_no = irq_assign_table1[irq - EXT_IRQ0].port_no;
|
||||
bit_no = irq_assign_table1[irq - EXT_IRQ0].bit_no;
|
||||
} else {
|
||||
port_no = irq_assign_table0[irq - EXT_IRQ0].port_no;
|
||||
bit_no = irq_assign_table0[irq - EXT_IRQ0].bit_no;
|
||||
}
|
||||
if (H8300_GPIO_RESERVE(port_no, bit_no) == 0)
|
||||
return -EBUSY; /* pin already use */
|
||||
H8300_GPIO_DDR(port_no, bit_no, H8300_GPIO_INPUT);
|
||||
*(volatile unsigned short *)ISR &= ~ptn; /* ISR clear */
|
||||
}
|
||||
|
||||
if (use_kmalloc)
|
||||
irq_handle = kmalloc(sizeof(irq_handler_t), GFP_ATOMIC);
|
||||
else {
|
||||
/* use bootmem allocator */
|
||||
irq_handle = (irq_handler_t *)alloc_bootmem(sizeof(irq_handler_t));
|
||||
irq_handle = (irq_handler_t *)((unsigned long)irq_handle | 0x80000000);
|
||||
}
|
||||
|
||||
if (irq_handle == NULL)
|
||||
return -ENOMEM;
|
||||
|
||||
irq_handle->handler = handler;
|
||||
irq_handle->flags = flags;
|
||||
irq_handle->count = 0;
|
||||
irq_handle->dev_id = dev_id;
|
||||
irq_handle->devname = devname;
|
||||
irq_list[irq] = irq_handle;
|
||||
if (irq_handle->flags & IRQF_SAMPLE_RANDOM)
|
||||
rand_initialize_irq(irq);
|
||||
|
||||
/* enable interrupt */
|
||||
/* compatible i386 */
|
||||
if (irq >= EXT_IRQ0 && irq <= EXT_IRQ15)
|
||||
*(volatile unsigned short *)IER |= ptn;
|
||||
return 0;
|
||||
}
|
||||
|
||||
EXPORT_SYMBOL(request_irq);
|
||||
|
||||
void free_irq(unsigned int irq, void *dev_id)
|
||||
{
|
||||
if (irq >= NR_IRQS)
|
||||
return;
|
||||
if (irq_list[irq]->dev_id != dev_id)
|
||||
printk("%s: Removing probably wrong IRQ %d from %s\n",
|
||||
__FUNCTION__, irq, irq_list[irq]->devname);
|
||||
if (irq >= EXT_IRQ0 && irq <= EXT_IRQ15) {
|
||||
/* disable interrupt & release IRQ pin */
|
||||
unsigned short port_no,bit_no;
|
||||
*(volatile unsigned short *)ISR &= ~(1 << (irq - EXT_IRQ0));
|
||||
*(volatile unsigned short *)IER |= 1 << (irq - EXT_IRQ0);
|
||||
if (*(volatile unsigned short *)ITSR & (1 << (irq - EXT_IRQ0))) {
|
||||
port_no = irq_assign_table1[irq - EXT_IRQ0].port_no;
|
||||
bit_no = irq_assign_table1[irq - EXT_IRQ0].bit_no;
|
||||
} else {
|
||||
port_no = irq_assign_table0[irq - EXT_IRQ0].port_no;
|
||||
bit_no = irq_assign_table0[irq - EXT_IRQ0].bit_no;
|
||||
}
|
||||
H8300_GPIO_FREE(port_no, bit_no);
|
||||
}
|
||||
if (((unsigned long)irq_list[irq] & 0x80000000) == 0) {
|
||||
kfree(irq_list[irq]);
|
||||
irq_list[irq] = NULL;
|
||||
}
|
||||
}
|
||||
|
||||
EXPORT_SYMBOL(free_irq);
|
||||
|
||||
unsigned long probe_irq_on (void)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
EXPORT_SYMBOL(probe_irq_on);
|
||||
|
||||
int probe_irq_off (unsigned long irqs)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
EXPORT_SYMBOL(probe_irq_off);
|
||||
|
||||
void enable_irq(unsigned int irq)
|
||||
{
|
||||
if (irq >= EXT_IRQ0 && irq <= EXT_IRQ15)
|
||||
*(volatile unsigned short *)IER |= 1 << (irq - EXT_IRQ0);
|
||||
}
|
||||
|
||||
void disable_irq(unsigned int irq)
|
||||
{
|
||||
if (irq >= EXT_IRQ0 && irq <= EXT_IRQ15)
|
||||
*(volatile unsigned short *)IER &= ~(1 << (irq - EXT_IRQ0));
|
||||
}
|
||||
|
||||
asmlinkage void process_int(unsigned long vec, struct pt_regs *fp)
|
||||
{
|
||||
irq_enter();
|
||||
/* ISR clear */
|
||||
/* compatible i386 */
|
||||
if (vec >= EXT_IRQ0 && vec <= EXT_IRQ15)
|
||||
*(volatile unsigned short *)ISR &= ~(1 << (vec - EXT_IRQ0));
|
||||
if (vec < NR_IRQS) {
|
||||
if (irq_list[vec]) {
|
||||
irq_list[vec]->handler(vec, irq_list[vec]->dev_id, fp);
|
||||
irq_list[vec]->count++;
|
||||
if (irq_list[vec]->flags & IRQF_SAMPLE_RANDOM)
|
||||
add_interrupt_randomness(vec);
|
||||
}
|
||||
} else {
|
||||
BUG();
|
||||
}
|
||||
irq_exit();
|
||||
}
|
||||
|
||||
int show_interrupts(struct seq_file *p, void *v)
|
||||
{
|
||||
int i = *(loff_t *) v;
|
||||
|
||||
if ((i < NR_IRQS) && (irq_list[i] !=NULL)) {
|
||||
seq_printf(p, "%3d: %10u ",i,irq_list[i]->count);
|
||||
seq_printf(p, "%s\n", irq_list[i]->devname);
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
void init_irq_proc(void)
|
||||
{
|
||||
}
|
||||
|
||||
static int __init enable_kmalloc(void)
|
||||
{
|
||||
use_kmalloc = 1;
|
||||
return 0;
|
||||
}
|
||||
core_initcall(enable_kmalloc);
|
|
@ -27,11 +27,11 @@ const int __initdata h8300_saved_vectors[]={
|
|||
};
|
||||
|
||||
/* trap entry table */
|
||||
const unsigned long __initdata h8300_trap_table[NR_TRAPS]={
|
||||
const H8300_VECTOR __initdata h8300_trap_table[] = {
|
||||
0,0,0,0,0,
|
||||
(unsigned long)trace_break, /* TRACE */
|
||||
trace_break, /* TRACE */
|
||||
0,0,
|
||||
(unsigned long)system_call, /* TRAPA #0 */
|
||||
system_call, /* TRAPA #0 */
|
||||
0,0,0,0,0,0,0
|
||||
};
|
||||
|
||||
|
@ -50,7 +50,7 @@ static const struct irq_pins irq_assign_table0[16]={
|
|||
{H8300_GPIO_P6,H8300_GPIO_B2},{H8300_GPIO_P6,H8300_GPIO_B3},
|
||||
{H8300_GPIO_P6,H8300_GPIO_B4},{H8300_GPIO_P6,H8300_GPIO_B5},
|
||||
{H8300_GPIO_PF,H8300_GPIO_B1},{H8300_GPIO_PF,H8300_GPIO_B2},
|
||||
};
|
||||
};
|
||||
/* ISTR = 1 */
|
||||
static const struct irq_pins irq_assign_table1[16]={
|
||||
{H8300_GPIO_P8,H8300_GPIO_B0},{H8300_GPIO_P8,H8300_GPIO_B1},
|
|
@ -42,14 +42,12 @@ irqreturn_t arch_timer_interrupt(int irq, void *dummy)
|
|||
/* last time the cmos clock got updated */
|
||||
static long last_rtc_update=0;
|
||||
|
||||
if (current->pid)
|
||||
profile_tick(CPU_PROFILING);
|
||||
|
||||
write_seqlock(&xtime_lock);
|
||||
|
||||
do_timer(1);
|
||||
#ifndef CONFIG_SMP
|
||||
update_process_times(user_mode(get_irq_regs()));
|
||||
#endif
|
||||
if (current->pid)
|
||||
profile_tick(CPU_PROFILING);
|
||||
|
||||
/*
|
||||
* If we have an externally synchronized Linux clock, then update
|
||||
|
@ -67,6 +65,10 @@ irqreturn_t arch_timer_interrupt(int irq, void *dummy)
|
|||
}
|
||||
|
||||
write_sequnlock(&xtime_lock);
|
||||
|
||||
#ifndef CONFIG_SMP
|
||||
update_process_times(user_mode(get_irq_regs()));
|
||||
#endif
|
||||
return(IRQ_HANDLED);
|
||||
}
|
||||
|
||||
|
|
|
@ -12,9 +12,7 @@
|
|||
# EXTRA_AFLAGS += -DTRAP_DBG_INTERRUPT
|
||||
#
|
||||
|
||||
ifdef CONFIG_FULLDEBUG
|
||||
EXTRA_AFLAGS += -DDEBUGGER_COMPATIBLE_CACHE=1
|
||||
endif
|
||||
asflags-$(CONFIG_FULLDEBUG) := -DDEBUGGER_COMPATIBLE_CACHE=1
|
||||
|
||||
obj-y := config.o
|
||||
|
||||
|
|
|
@ -12,9 +12,7 @@
|
|||
# EXTRA_AFLAGS += -DTRAP_DBG_INTERRUPT
|
||||
#
|
||||
|
||||
ifdef CONFIG_FULLDEBUG
|
||||
EXTRA_AFLAGS += -DDEBUGGER_COMPATIBLE_CACHE=1
|
||||
endif
|
||||
asflags-$(CONFIG_FULLDEBUG) := -DDEBUGGER_COMPATIBLE_CACHE=1
|
||||
|
||||
obj-y := config.o
|
||||
|
||||
|
|
|
@ -12,8 +12,6 @@
|
|||
# EXTRA_AFLAGS += -DTRAP_DBG_INTERRUPT
|
||||
#
|
||||
|
||||
ifdef CONFIG_FULLDEBUG
|
||||
EXTRA_AFLAGS += -DDEBUGGER_COMPATIBLE_CACHE=1
|
||||
endif
|
||||
asflags-$(CONFIG_FULLDEBUG) := -DDEBUGGER_COMPATIBLE_CACHE=1
|
||||
|
||||
obj-y := config.o
|
||||
|
|
|
@ -12,8 +12,6 @@
|
|||
# EXTRA_AFLAGS += -DTRAP_DBG_INTERRUPT
|
||||
#
|
||||
|
||||
ifdef CONFIG_FULLDEBUG
|
||||
EXTRA_AFLAGS += -DDEBUGGER_COMPATIBLE_CACHE=1
|
||||
endif
|
||||
asflags-$(CONFIG_FULLDEBUG) := -DDEBUGGER_COMPATIBLE_CACHE=1
|
||||
|
||||
obj-y := config.o
|
||||
|
|
|
@ -12,9 +12,7 @@
|
|||
# EXTRA_AFLAGS += -DTRAP_DBG_INTERRUPT
|
||||
#
|
||||
|
||||
ifdef CONFIG_FULLDEBUG
|
||||
EXTRA_AFLAGS += -DDEBUGGER_COMPATIBLE_CACHE=1
|
||||
endif
|
||||
asflags-$(CONFIG_FULLDEBUG) := -DDEBUGGER_COMPATIBLE_CACHE=1
|
||||
|
||||
obj-y := config.o
|
||||
|
||||
|
|
|
@ -12,9 +12,7 @@
|
|||
# EXTRA_AFLAGS += -DTRAP_DBG_INTERRUPT
|
||||
#
|
||||
|
||||
ifdef CONFIG_FULLDEBUG
|
||||
EXTRA_AFLAGS += -DDEBUGGER_COMPATIBLE_CACHE=1
|
||||
endif
|
||||
asflags-$(CONFIG_FULLDEBUG) := -DDEBUGGER_COMPATIBLE_CACHE=1
|
||||
|
||||
obj-y := config.o
|
||||
|
||||
|
|
|
@ -12,9 +12,7 @@
|
|||
# EXTRA_AFLAGS += -DTRAP_DBG_INTERRUPT
|
||||
#
|
||||
|
||||
ifdef CONFIG_FULLDEBUG
|
||||
EXTRA_AFLAGS += -DDEBUGGER_COMPATIBLE_CACHE=1
|
||||
endif
|
||||
asflags-$(CONFIG_FULLDEBUG) := -DDEBUGGER_COMPATIBLE_CACHE=1
|
||||
|
||||
obj-y := config.o
|
||||
|
||||
|
|
|
@ -12,9 +12,7 @@
|
|||
# EXTRA_AFLAGS += -DTRAP_DBG_INTERRUPT
|
||||
#
|
||||
|
||||
ifdef CONFIG_FULLDEBUG
|
||||
EXTRA_AFLAGS += -DDEBUGGER_COMPATIBLE_CACHE=1
|
||||
endif
|
||||
asflags-$(CONFIG_FULLDEBUG) := -DDEBUGGER_COMPATIBLE_CACHE=1
|
||||
|
||||
obj-y := config.o
|
||||
|
||||
|
|
|
@ -12,9 +12,7 @@
|
|||
# EXTRA_AFLAGS += -DTRAP_DBG_INTERRUPT
|
||||
#
|
||||
|
||||
ifdef CONFIG_FULLDEBUG
|
||||
EXTRA_AFLAGS += -DDEBUGGER_COMPATIBLE_CACHE=1
|
||||
endif
|
||||
asflags-$(CONFIG_FULLDEBUG) := -DDEBUGGER_COMPATIBLE_CACHE=1
|
||||
|
||||
obj-y += config.o
|
||||
|
||||
|
|
|
@ -12,9 +12,7 @@
|
|||
# EXTRA_AFLAGS += -DTRAP_DBG_INTERRUPT
|
||||
#
|
||||
|
||||
ifdef CONFIG_FULLDEBUG
|
||||
EXTRA_AFLAGS += -DDEBUGGER_COMPATIBLE_CACHE=1
|
||||
endif
|
||||
asflags-$(CONFIG_FULLDEBUG) := -DDEBUGGER_COMPATIBLE_CACHE=1
|
||||
|
||||
#obj-y := config.o usb-mcf532x.o spi-mcf532x.o
|
||||
obj-y := config.o
|
||||
|
|
|
@ -12,9 +12,7 @@
|
|||
# EXTRA_AFLAGS += -DTRAP_DBG_INTERRUPT
|
||||
#
|
||||
|
||||
ifdef CONFIG_FULLDEBUG
|
||||
EXTRA_AFLAGS += -DDEBUGGER_COMPATIBLE_CACHE=1
|
||||
endif
|
||||
asflags-$(CONFIG_FULLDEBUG) := -DDEBUGGER_COMPATIBLE_CACHE=1
|
||||
|
||||
obj-y := config.o
|
||||
|
||||
|
|
|
@ -12,9 +12,7 @@
|
|||
# EXTRA_AFLAGS += -DTRAP_DBG_INTERRUPT
|
||||
#
|
||||
|
||||
ifdef CONFIG_FULLDEBUG
|
||||
AFLAGS += -DDEBUGGER_COMPATIBLE_CACHE=1
|
||||
endif
|
||||
asflags-$(CONFIG_FULLDEBUG) := -DDEBUGGER_COMPATIBLE_CACHE=1
|
||||
|
||||
obj-$(CONFIG_COLDFIRE) += dma.o entry.o vectors.o
|
||||
obj-$(CONFIG_M5206) += timers.o
|
||||
|
|
|
@ -197,14 +197,13 @@ ENTRY(fasthandler)
|
|||
RESTORE_LOCAL
|
||||
|
||||
ENTRY(ret_from_interrupt)
|
||||
jeq 2f
|
||||
1:
|
||||
RESTORE_ALL
|
||||
2:
|
||||
moveb %sp@(PT_SR),%d0
|
||||
andl #0x7,%d0
|
||||
jhi 1b
|
||||
jeq 1f
|
||||
|
||||
RESTORE_ALL
|
||||
|
||||
1:
|
||||
/* check if we need to do software interrupts */
|
||||
movel irq_stat+CPUSTAT_SOFTIRQ_PENDING,%d0
|
||||
jeq ret_from_exception
|
||||
|
|
|
@ -148,25 +148,32 @@ irqreturn_t coldfire_profile_tick(int irq, void *dummy)
|
|||
/* Reset ColdFire timer2 */
|
||||
__raw_writeb(MCFTIMER_TER_CAP | MCFTIMER_TER_REF, PA(MCFTIMER_TER));
|
||||
if (current->pid)
|
||||
profile_tick(CPU_PROFILING, regs);
|
||||
profile_tick(CPU_PROFILING);
|
||||
return IRQ_HANDLED;
|
||||
}
|
||||
|
||||
/***************************************************************************/
|
||||
|
||||
static struct irqaction coldfire_profile_irq = {
|
||||
.name = "profile timer",
|
||||
.flags = IRQF_DISABLED | IRQF_TIMER,
|
||||
.handler = coldfire_profile_tick,
|
||||
};
|
||||
|
||||
void coldfire_profile_init(void)
|
||||
{
|
||||
printk(KERN_INFO "PROFILE: lodging TIMER2 @ %dHz as profile timer\n", PROFILEHZ);
|
||||
printk(KERN_INFO "PROFILE: lodging TIMER2 @ %dHz as profile timer\n",
|
||||
PROFILEHZ);
|
||||
|
||||
setup_irq(mcf_profilevector, &coldfire_profile_irq);
|
||||
|
||||
/* Set up TIMER 2 as high speed profile clock */
|
||||
__raw_writew(MCFTIMER_TMR_DISABLE, PA(MCFTIMER_TMR));
|
||||
|
||||
__raw_writetrr(((MCF_CLK / 16) / PROFILEHZ), PA(MCFTIMER_TRR));
|
||||
__raw_writetrr(((MCF_BUSCLK / 16) / PROFILEHZ), PA(MCFTIMER_TRR));
|
||||
__raw_writew(MCFTIMER_TMR_ENORI | MCFTIMER_TMR_CLK16 |
|
||||
MCFTIMER_TMR_RESTART | MCFTIMER_TMR_ENABLE, PA(MCFTIMER_TMR));
|
||||
|
||||
request_irq(mcf_profilevector, coldfire_profile_tick,
|
||||
(IRQF_DISABLED | IRQ_FLG_FAST), "profile timer", NULL);
|
||||
mcf_settimericr(2, 7);
|
||||
}
|
||||
|
||||
|
|
|
@ -92,17 +92,17 @@ static int bcm47xx_get_invariants(struct ssb_bus *bus,
|
|||
iv->sprom.revision = 3;
|
||||
|
||||
if (cfe_getenv("et0macaddr", buf, sizeof(buf)) >= 0)
|
||||
str2eaddr(buf, iv->sprom.r1.et0mac);
|
||||
str2eaddr(buf, iv->sprom.et0mac);
|
||||
if (cfe_getenv("et1macaddr", buf, sizeof(buf)) >= 0)
|
||||
str2eaddr(buf, iv->sprom.r1.et1mac);
|
||||
str2eaddr(buf, iv->sprom.et1mac);
|
||||
if (cfe_getenv("et0phyaddr", buf, sizeof(buf)) >= 0)
|
||||
iv->sprom.r1.et0phyaddr = simple_strtoul(buf, NULL, 10);
|
||||
iv->sprom.et0phyaddr = simple_strtoul(buf, NULL, 10);
|
||||
if (cfe_getenv("et1phyaddr", buf, sizeof(buf)) >= 0)
|
||||
iv->sprom.r1.et1phyaddr = simple_strtoul(buf, NULL, 10);
|
||||
iv->sprom.et1phyaddr = simple_strtoul(buf, NULL, 10);
|
||||
if (cfe_getenv("et0mdcport", buf, sizeof(buf)) >= 0)
|
||||
iv->sprom.r1.et0mdcport = simple_strtoul(buf, NULL, 10);
|
||||
iv->sprom.et0mdcport = simple_strtoul(buf, NULL, 10);
|
||||
if (cfe_getenv("et1mdcport", buf, sizeof(buf)) >= 0)
|
||||
iv->sprom.r1.et1mdcport = simple_strtoul(buf, NULL, 10);
|
||||
iv->sprom.et1mdcport = simple_strtoul(buf, NULL, 10);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
|
|
@ -9,6 +9,7 @@
|
|||
#include <linux/platform_device.h>
|
||||
#include <linux/module.h>
|
||||
#include <linux/leds.h>
|
||||
#include <linux/mtd/physmap.h>
|
||||
#include <linux/ssb/ssb.h>
|
||||
#include <asm/mach-bcm47xx/bcm47xx.h>
|
||||
|
||||
|
@ -43,6 +44,61 @@ static struct platform_device wgt634u_gpio_leds = {
|
|||
}
|
||||
};
|
||||
|
||||
|
||||
/* 8MiB flash. The struct mtd_partition matches original Netgear WGT634U
|
||||
firmware. */
|
||||
static struct mtd_partition wgt634u_partitions[] = {
|
||||
{
|
||||
.name = "cfe",
|
||||
.offset = 0,
|
||||
.size = 0x60000, /* 384k */
|
||||
.mask_flags = MTD_WRITEABLE /* force read-only */
|
||||
},
|
||||
{
|
||||
.name = "config",
|
||||
.offset = 0x60000,
|
||||
.size = 0x20000 /* 128k */
|
||||
},
|
||||
{
|
||||
.name = "linux",
|
||||
.offset = 0x80000,
|
||||
.size = 0x140000 /* 1280k */
|
||||
},
|
||||
{
|
||||
.name = "jffs",
|
||||
.offset = 0x1c0000,
|
||||
.size = 0x620000 /* 6272k */
|
||||
},
|
||||
{
|
||||
.name = "nvram",
|
||||
.offset = 0x7e0000,
|
||||
.size = 0x20000 /* 128k */
|
||||
},
|
||||
};
|
||||
|
||||
static struct physmap_flash_data wgt634u_flash_data = {
|
||||
.parts = wgt634u_partitions,
|
||||
.nr_parts = ARRAY_SIZE(wgt634u_partitions)
|
||||
};
|
||||
|
||||
static struct resource wgt634u_flash_resource = {
|
||||
.flags = IORESOURCE_MEM,
|
||||
};
|
||||
|
||||
static struct platform_device wgt634u_flash = {
|
||||
.name = "physmap-flash",
|
||||
.id = 0,
|
||||
.dev = { .platform_data = &wgt634u_flash_data, },
|
||||
.resource = &wgt634u_flash_resource,
|
||||
.num_resources = 1,
|
||||
};
|
||||
|
||||
/* Platform devices */
|
||||
static struct platform_device *wgt634u_devices[] __initdata = {
|
||||
&wgt634u_flash,
|
||||
&wgt634u_gpio_leds,
|
||||
};
|
||||
|
||||
static int __init wgt634u_init(void)
|
||||
{
|
||||
/* There is no easy way to detect that we are running on a WGT634U
|
||||
|
@ -50,13 +106,20 @@ static int __init wgt634u_init(void)
|
|||
* been allocated ranges 00:09:5b:xx:xx:xx and 00:0f:b5:xx:xx:xx.
|
||||
*/
|
||||
|
||||
u8 *et0mac = ssb_bcm47xx.sprom.r1.et0mac;
|
||||
u8 *et0mac = ssb_bcm47xx.sprom.et0mac;
|
||||
|
||||
if (et0mac[0] == 0x00 &&
|
||||
((et0mac[1] == 0x09 && et0mac[2] == 0x5b) ||
|
||||
(et0mac[1] == 0x0f && et0mac[2] == 0xb5)))
|
||||
return platform_device_register(&wgt634u_gpio_leds);
|
||||
else
|
||||
(et0mac[1] == 0x0f && et0mac[2] == 0xb5))) {
|
||||
struct ssb_mipscore *mcore = &ssb_bcm47xx.mipscore;
|
||||
wgt634u_flash_data.width = mcore->flash_buswidth;
|
||||
wgt634u_flash_resource.start = mcore->flash_window;
|
||||
wgt634u_flash_resource.end = mcore->flash_window
|
||||
+ mcore->flash_window_size
|
||||
- 1;
|
||||
return platform_add_devices(wgt634u_devices,
|
||||
ARRAY_SIZE(wgt634u_devices));
|
||||
} else
|
||||
return -ENODEV;
|
||||
}
|
||||
|
||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -0,0 +1,891 @@
|
|||
#
|
||||
# Automatically generated make config: don't edit
|
||||
# Linux kernel version: 2.6.25-rc1
|
||||
# Mon Feb 11 15:58:54 2008
|
||||
#
|
||||
CONFIG_MIPS=y
|
||||
|
||||
#
|
||||
# Machine selection
|
||||
#
|
||||
# CONFIG_MACH_ALCHEMY is not set
|
||||
# CONFIG_BASLER_EXCITE is not set
|
||||
# CONFIG_BCM47XX is not set
|
||||
# CONFIG_MIPS_COBALT is not set
|
||||
# CONFIG_MACH_DECSTATION is not set
|
||||
# CONFIG_MACH_JAZZ is not set
|
||||
# CONFIG_LASAT is not set
|
||||
# CONFIG_LEMOTE_FULONG is not set
|
||||
# CONFIG_MIPS_ATLAS is not set
|
||||
# CONFIG_MIPS_MALTA is not set
|
||||
# CONFIG_MIPS_SEAD is not set
|
||||
# CONFIG_MIPS_SIM is not set
|
||||
# CONFIG_MARKEINS is not set
|
||||
# CONFIG_MACH_VR41XX is not set
|
||||
# CONFIG_PNX8550_JBS is not set
|
||||
# CONFIG_PNX8550_STB810 is not set
|
||||
# CONFIG_PMC_MSP is not set
|
||||
# CONFIG_PMC_YOSEMITE is not set
|
||||
# CONFIG_SGI_IP22 is not set
|
||||
# CONFIG_SGI_IP27 is not set
|
||||
CONFIG_SGI_IP28=y
|
||||
# CONFIG_SGI_IP32 is not set
|
||||
# CONFIG_SIBYTE_CRHINE is not set
|
||||
# CONFIG_SIBYTE_CARMEL is not set
|
||||
# CONFIG_SIBYTE_CRHONE is not set
|
||||
# CONFIG_SIBYTE_RHONE is not set
|
||||
# CONFIG_SIBYTE_SWARM is not set
|
||||
# CONFIG_SIBYTE_LITTLESUR is not set
|
||||
# CONFIG_SIBYTE_SENTOSA is not set
|
||||
# CONFIG_SIBYTE_BIGSUR is not set
|
||||
# CONFIG_SNI_RM is not set
|
||||
# CONFIG_TOSHIBA_JMR3927 is not set
|
||||
# CONFIG_TOSHIBA_RBTX4927 is not set
|
||||
# CONFIG_TOSHIBA_RBTX4938 is not set
|
||||
# CONFIG_WR_PPMC is not set
|
||||
CONFIG_RWSEM_GENERIC_SPINLOCK=y
|
||||
# CONFIG_ARCH_HAS_ILOG2_U32 is not set
|
||||
# CONFIG_ARCH_HAS_ILOG2_U64 is not set
|
||||
CONFIG_ARCH_SUPPORTS_OPROFILE=y
|
||||
CONFIG_GENERIC_FIND_NEXT_BIT=y
|
||||
CONFIG_GENERIC_HWEIGHT=y
|
||||
CONFIG_GENERIC_CALIBRATE_DELAY=y
|
||||
CONFIG_GENERIC_CLOCKEVENTS=y
|
||||
CONFIG_GENERIC_TIME=y
|
||||
CONFIG_GENERIC_CMOS_UPDATE=y
|
||||
CONFIG_SCHED_NO_NO_OMIT_FRAME_POINTER=y
|
||||
# CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ is not set
|
||||
CONFIG_ARC=y
|
||||
CONFIG_CEVT_R4K=y
|
||||
CONFIG_CSRC_R4K=y
|
||||
CONFIG_DMA_NONCOHERENT=y
|
||||
CONFIG_DMA_NEED_PCI_MAP_STATE=y
|
||||
CONFIG_EARLY_PRINTK=y
|
||||
CONFIG_SYS_HAS_EARLY_PRINTK=y
|
||||
# CONFIG_HOTPLUG_CPU is not set
|
||||
CONFIG_I8259=y
|
||||
# CONFIG_NO_IOPORT is not set
|
||||
CONFIG_GENERIC_ISA_DMA=y
|
||||
CONFIG_GENERIC_ISA_DMA_SUPPORT_BROKEN=y
|
||||
CONFIG_CPU_BIG_ENDIAN=y
|
||||
# CONFIG_CPU_LITTLE_ENDIAN is not set
|
||||
CONFIG_SYS_SUPPORTS_BIG_ENDIAN=y
|
||||
CONFIG_IRQ_CPU=y
|
||||
CONFIG_SWAP_IO_SPACE=y
|
||||
CONFIG_SGI_HAS_DS1286=y
|
||||
CONFIG_SGI_HAS_INDYDOG=y
|
||||
CONFIG_SGI_HAS_SEEQ=y
|
||||
CONFIG_SGI_HAS_WD93=y
|
||||
CONFIG_SGI_HAS_ZILOG=y
|
||||
CONFIG_SGI_HAS_I8042=y
|
||||
CONFIG_DEFAULT_SGI_PARTITION=y
|
||||
CONFIG_MIPS_L1_CACHE_SHIFT=7
|
||||
CONFIG_ARC_CONSOLE=y
|
||||
CONFIG_ARC_PROMLIB=y
|
||||
CONFIG_ARC64=y
|
||||
CONFIG_BOOT_ELF64=y
|
||||
|
||||
#
|
||||
# CPU selection
|
||||
#
|
||||
# CONFIG_CPU_LOONGSON2 is not set
|
||||
# CONFIG_CPU_MIPS32_R1 is not set
|
||||
# CONFIG_CPU_MIPS32_R2 is not set
|
||||
# CONFIG_CPU_MIPS64_R1 is not set
|
||||
# CONFIG_CPU_MIPS64_R2 is not set
|
||||
# CONFIG_CPU_R3000 is not set
|
||||
# CONFIG_CPU_TX39XX is not set
|
||||
# CONFIG_CPU_VR41XX is not set
|
||||
# CONFIG_CPU_R4300 is not set
|
||||
# CONFIG_CPU_R4X00 is not set
|
||||
# CONFIG_CPU_TX49XX is not set
|
||||
# CONFIG_CPU_R5000 is not set
|
||||
# CONFIG_CPU_R5432 is not set
|
||||
# CONFIG_CPU_R6000 is not set
|
||||
# CONFIG_CPU_NEVADA is not set
|
||||
# CONFIG_CPU_R8000 is not set
|
||||
CONFIG_CPU_R10000=y
|
||||
# CONFIG_CPU_RM7000 is not set
|
||||
# CONFIG_CPU_RM9000 is not set
|
||||
# CONFIG_CPU_SB1 is not set
|
||||
CONFIG_SYS_HAS_CPU_R10000=y
|
||||
CONFIG_SYS_SUPPORTS_64BIT_KERNEL=y
|
||||
CONFIG_CPU_SUPPORTS_32BIT_KERNEL=y
|
||||
CONFIG_CPU_SUPPORTS_64BIT_KERNEL=y
|
||||
|
||||
#
|
||||
# Kernel type
|
||||
#
|
||||
# CONFIG_32BIT is not set
|
||||
CONFIG_64BIT=y
|
||||
CONFIG_PAGE_SIZE_4KB=y
|
||||
# CONFIG_PAGE_SIZE_8KB is not set
|
||||
# CONFIG_PAGE_SIZE_16KB is not set
|
||||
# CONFIG_PAGE_SIZE_64KB is not set
|
||||
CONFIG_CPU_HAS_PREFETCH=y
|
||||
CONFIG_MIPS_MT_DISABLED=y
|
||||
# CONFIG_MIPS_MT_SMP is not set
|
||||
# CONFIG_MIPS_MT_SMTC is not set
|
||||
CONFIG_CPU_HAS_LLSC=y
|
||||
CONFIG_CPU_HAS_SYNC=y
|
||||
CONFIG_GENERIC_HARDIRQS=y
|
||||
CONFIG_GENERIC_IRQ_PROBE=y
|
||||
CONFIG_CPU_SUPPORTS_HIGHMEM=y
|
||||
CONFIG_ARCH_FLATMEM_ENABLE=y
|
||||
CONFIG_ARCH_POPULATES_NODE_MAP=y
|
||||
CONFIG_SELECT_MEMORY_MODEL=y
|
||||
CONFIG_FLATMEM_MANUAL=y
|
||||
# CONFIG_DISCONTIGMEM_MANUAL is not set
|
||||
# CONFIG_SPARSEMEM_MANUAL is not set
|
||||
CONFIG_FLATMEM=y
|
||||
CONFIG_FLAT_NODE_MEM_MAP=y
|
||||
# CONFIG_SPARSEMEM_STATIC is not set
|
||||
# CONFIG_SPARSEMEM_VMEMMAP_ENABLE is not set
|
||||
CONFIG_SPLIT_PTLOCK_CPUS=4
|
||||
CONFIG_RESOURCES_64BIT=y
|
||||
CONFIG_ZONE_DMA_FLAG=0
|
||||
CONFIG_VIRT_TO_BUS=y
|
||||
# CONFIG_TICK_ONESHOT is not set
|
||||
# CONFIG_NO_HZ is not set
|
||||
# CONFIG_HIGH_RES_TIMERS is not set
|
||||
CONFIG_GENERIC_CLOCKEVENTS_BUILD=y
|
||||
# CONFIG_HZ_48 is not set
|
||||
# CONFIG_HZ_100 is not set
|
||||
# CONFIG_HZ_128 is not set
|
||||
CONFIG_HZ_250=y
|
||||
# CONFIG_HZ_256 is not set
|
||||
# CONFIG_HZ_1000 is not set
|
||||
# CONFIG_HZ_1024 is not set
|
||||
CONFIG_SYS_SUPPORTS_ARBIT_HZ=y
|
||||
CONFIG_HZ=250
|
||||
# CONFIG_PREEMPT_NONE is not set
|
||||
CONFIG_PREEMPT_VOLUNTARY=y
|
||||
# CONFIG_PREEMPT is not set
|
||||
# CONFIG_RCU_TRACE is not set
|
||||
# CONFIG_MIPS_INSANE_LARGE is not set
|
||||
# CONFIG_KEXEC is not set
|
||||
CONFIG_SECCOMP=y
|
||||
CONFIG_LOCKDEP_SUPPORT=y
|
||||
CONFIG_STACKTRACE_SUPPORT=y
|
||||
CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
|
||||
|
||||
#
|
||||
# General setup
|
||||
#
|
||||
CONFIG_EXPERIMENTAL=y
|
||||
CONFIG_BROKEN_ON_SMP=y
|
||||
CONFIG_INIT_ENV_ARG_LIMIT=32
|
||||
CONFIG_LOCALVERSION=""
|
||||
CONFIG_LOCALVERSION_AUTO=y
|
||||
CONFIG_SWAP=y
|
||||
CONFIG_SYSVIPC=y
|
||||
CONFIG_SYSVIPC_SYSCTL=y
|
||||
# CONFIG_POSIX_MQUEUE is not set
|
||||
# CONFIG_BSD_PROCESS_ACCT is not set
|
||||
# CONFIG_TASKSTATS is not set
|
||||
# CONFIG_AUDIT is not set
|
||||
CONFIG_IKCONFIG=y
|
||||
CONFIG_IKCONFIG_PROC=y
|
||||
CONFIG_LOG_BUF_SHIFT=14
|
||||
# CONFIG_CGROUPS is not set
|
||||
CONFIG_FAIR_GROUP_SCHED=y
|
||||
CONFIG_FAIR_USER_SCHED=y
|
||||
# CONFIG_FAIR_CGROUP_SCHED is not set
|
||||
CONFIG_SYSFS_DEPRECATED=y
|
||||
CONFIG_RELAY=y
|
||||
# CONFIG_NAMESPACES is not set
|
||||
# CONFIG_BLK_DEV_INITRD is not set
|
||||
# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
|
||||
CONFIG_SYSCTL=y
|
||||
CONFIG_EMBEDDED=y
|
||||
CONFIG_SYSCTL_SYSCALL=y
|
||||
CONFIG_KALLSYMS=y
|
||||
# CONFIG_KALLSYMS_EXTRA_PASS is not set
|
||||
# CONFIG_HOTPLUG is not set
|
||||
CONFIG_PRINTK=y
|
||||
CONFIG_BUG=y
|
||||
CONFIG_ELF_CORE=y
|
||||
CONFIG_COMPAT_BRK=y
|
||||
CONFIG_BASE_FULL=y
|
||||
CONFIG_FUTEX=y
|
||||
CONFIG_ANON_INODES=y
|
||||
CONFIG_EPOLL=y
|
||||
CONFIG_SIGNALFD=y
|
||||
CONFIG_TIMERFD=y
|
||||
CONFIG_EVENTFD=y
|
||||
CONFIG_SHMEM=y
|
||||
CONFIG_VM_EVENT_COUNTERS=y
|
||||
CONFIG_SLAB=y
|
||||
# CONFIG_SLUB is not set
|
||||
# CONFIG_SLOB is not set
|
||||
# CONFIG_PROFILING is not set
|
||||
# CONFIG_MARKERS is not set
|
||||
CONFIG_HAVE_OPROFILE=y
|
||||
# CONFIG_HAVE_KPROBES is not set
|
||||
# CONFIG_PROC_PAGE_MONITOR is not set
|
||||
CONFIG_SLABINFO=y
|
||||
CONFIG_RT_MUTEXES=y
|
||||
# CONFIG_TINY_SHMEM is not set
|
||||
CONFIG_BASE_SMALL=0
|
||||
CONFIG_MODULES=y
|
||||
CONFIG_MODULE_UNLOAD=y
|
||||
# CONFIG_MODULE_FORCE_UNLOAD is not set
|
||||
CONFIG_MODVERSIONS=y
|
||||
CONFIG_MODULE_SRCVERSION_ALL=y
|
||||
CONFIG_KMOD=y
|
||||
CONFIG_BLOCK=y
|
||||
# CONFIG_BLK_DEV_IO_TRACE is not set
|
||||
# CONFIG_BLK_DEV_BSG is not set
|
||||
CONFIG_BLOCK_COMPAT=y
|
||||
|
||||
#
|
||||
# IO Schedulers
|
||||
#
|
||||
CONFIG_IOSCHED_NOOP=y
|
||||
CONFIG_IOSCHED_AS=y
|
||||
CONFIG_IOSCHED_DEADLINE=y
|
||||
CONFIG_IOSCHED_CFQ=y
|
||||
CONFIG_DEFAULT_AS=y
|
||||
# CONFIG_DEFAULT_DEADLINE is not set
|
||||
# CONFIG_DEFAULT_CFQ is not set
|
||||
# CONFIG_DEFAULT_NOOP is not set
|
||||
CONFIG_DEFAULT_IOSCHED="anticipatory"
|
||||
CONFIG_CLASSIC_RCU=y
|
||||
# CONFIG_PREEMPT_RCU is not set
|
||||
|
||||
#
|
||||
# Bus options (PCI, PCMCIA, EISA, ISA, TC)
|
||||
#
|
||||
CONFIG_HW_HAS_EISA=y
|
||||
# CONFIG_ARCH_SUPPORTS_MSI is not set
|
||||
CONFIG_ISA=y
|
||||
CONFIG_EISA=y
|
||||
CONFIG_EISA_NAMES=y
|
||||
CONFIG_MMU=y
|
||||
CONFIG_I8253=y
|
||||
|
||||
#
|
||||
# Executable file formats
|
||||
#
|
||||
CONFIG_BINFMT_ELF=y
|
||||
# CONFIG_BINFMT_MISC is not set
|
||||
CONFIG_MIPS32_COMPAT=y
|
||||
CONFIG_COMPAT=y
|
||||
CONFIG_SYSVIPC_COMPAT=y
|
||||
CONFIG_MIPS32_O32=y
|
||||
CONFIG_MIPS32_N32=y
|
||||
CONFIG_BINFMT_ELF32=y
|
||||
|
||||
#
|
||||
# Power management options
|
||||
#
|
||||
CONFIG_ARCH_SUSPEND_POSSIBLE=y
|
||||
CONFIG_PM=y
|
||||
# CONFIG_PM_LEGACY is not set
|
||||
# CONFIG_PM_DEBUG is not set
|
||||
# CONFIG_SUSPEND is not set
|
||||
|
||||
#
|
||||
# Networking
|
||||
#
|
||||
CONFIG_NET=y
|
||||
|
||||
#
|
||||
# Networking options
|
||||
#
|
||||
CONFIG_PACKET=y
|
||||
CONFIG_PACKET_MMAP=y
|
||||
CONFIG_UNIX=y
|
||||
CONFIG_XFRM=y
|
||||
# CONFIG_XFRM_USER is not set
|
||||
# CONFIG_XFRM_SUB_POLICY is not set
|
||||
CONFIG_XFRM_MIGRATE=y
|
||||
# CONFIG_XFRM_STATISTICS is not set
|
||||
CONFIG_NET_KEY=y
|
||||
CONFIG_NET_KEY_MIGRATE=y
|
||||
CONFIG_INET=y
|
||||
CONFIG_IP_MULTICAST=y
|
||||
# CONFIG_IP_ADVANCED_ROUTER is not set
|
||||
CONFIG_IP_FIB_HASH=y
|
||||
CONFIG_IP_PNP=y
|
||||
CONFIG_IP_PNP_DHCP=y
|
||||
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_IP_MROUTE 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_XFRM_TUNNEL is not set
|
||||
# CONFIG_INET_TUNNEL is not set
|
||||
# CONFIG_INET_XFRM_MODE_TRANSPORT is not set
|
||||
# CONFIG_INET_XFRM_MODE_TUNNEL is not set
|
||||
# CONFIG_INET_XFRM_MODE_BEET is not set
|
||||
# CONFIG_INET_LRO is not set
|
||||
CONFIG_INET_DIAG=y
|
||||
CONFIG_INET_TCP_DIAG=y
|
||||
# CONFIG_TCP_CONG_ADVANCED is not set
|
||||
CONFIG_TCP_CONG_CUBIC=y
|
||||
CONFIG_DEFAULT_TCP_CONG="cubic"
|
||||
CONFIG_TCP_MD5SIG=y
|
||||
# CONFIG_IPV6 is not set
|
||||
# CONFIG_INET6_XFRM_TUNNEL is not set
|
||||
# CONFIG_INET6_TUNNEL is not set
|
||||
# CONFIG_NETWORK_SECMARK is not set
|
||||
# CONFIG_NETFILTER is not set
|
||||
# CONFIG_IP_DCCP is not set
|
||||
# CONFIG_IP_SCTP is not set
|
||||
# CONFIG_TIPC 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_ECONET is not set
|
||||
# CONFIG_WAN_ROUTER is not set
|
||||
# CONFIG_NET_SCHED is not set
|
||||
|
||||
#
|
||||
# Network testing
|
||||
#
|
||||
# CONFIG_NET_PKTGEN is not set
|
||||
# CONFIG_HAMRADIO is not set
|
||||
# CONFIG_CAN is not set
|
||||
# CONFIG_IRDA is not set
|
||||
# CONFIG_BT is not set
|
||||
# CONFIG_AF_RXRPC is not set
|
||||
|
||||
#
|
||||
# Wireless
|
||||
#
|
||||
# CONFIG_CFG80211 is not set
|
||||
# CONFIG_WIRELESS_EXT is not set
|
||||
# CONFIG_MAC80211 is not set
|
||||
# CONFIG_IEEE80211 is not set
|
||||
# CONFIG_RFKILL is not set
|
||||
# CONFIG_NET_9P is not set
|
||||
|
||||
#
|
||||
# Device Drivers
|
||||
#
|
||||
|
||||
#
|
||||
# Generic Driver Options
|
||||
#
|
||||
CONFIG_STANDALONE=y
|
||||
CONFIG_PREVENT_FIRMWARE_BUILD=y
|
||||
# CONFIG_SYS_HYPERVISOR is not set
|
||||
# CONFIG_CONNECTOR is not set
|
||||
# CONFIG_MTD is not set
|
||||
# CONFIG_PARPORT is not set
|
||||
# CONFIG_PNP is not set
|
||||
CONFIG_BLK_DEV=y
|
||||
# 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 is not set
|
||||
# CONFIG_CDROM_PKTCDVD is not set
|
||||
# CONFIG_ATA_OVER_ETH is not set
|
||||
# CONFIG_MISC_DEVICES is not set
|
||||
CONFIG_HAVE_IDE=y
|
||||
# CONFIG_IDE is not set
|
||||
|
||||
#
|
||||
# SCSI device support
|
||||
#
|
||||
# CONFIG_RAID_ATTRS is not set
|
||||
CONFIG_SCSI=y
|
||||
CONFIG_SCSI_DMA=y
|
||||
# CONFIG_SCSI_TGT is not set
|
||||
# CONFIG_SCSI_NETLINK is not set
|
||||
CONFIG_SCSI_PROC_FS=y
|
||||
|
||||
#
|
||||
# SCSI support type (disk, tape, CD-ROM)
|
||||
#
|
||||
CONFIG_BLK_DEV_SD=y
|
||||
# CONFIG_CHR_DEV_ST is not set
|
||||
# CONFIG_CHR_DEV_OSST is not set
|
||||
CONFIG_BLK_DEV_SR=y
|
||||
# CONFIG_BLK_DEV_SR_VENDOR is not set
|
||||
# CONFIG_CHR_DEV_SG is not set
|
||||
# CONFIG_CHR_DEV_SCH is not set
|
||||
|
||||
#
|
||||
# Some SCSI devices (e.g. CD jukebox) support multiple LUNs
|
||||
#
|
||||
# CONFIG_SCSI_MULTI_LUN is not set
|
||||
CONFIG_SCSI_CONSTANTS=y
|
||||
# CONFIG_SCSI_LOGGING is not set
|
||||
# CONFIG_SCSI_SCAN_ASYNC is not set
|
||||
CONFIG_SCSI_WAIT_SCAN=m
|
||||
|
||||
#
|
||||
# SCSI Transports
|
||||
#
|
||||
# CONFIG_SCSI_SPI_ATTRS is not set
|
||||
# CONFIG_SCSI_FC_ATTRS is not set
|
||||
# CONFIG_SCSI_ISCSI_ATTRS is not set
|
||||
# CONFIG_SCSI_SAS_LIBSAS is not set
|
||||
# CONFIG_SCSI_SRP_ATTRS is not set
|
||||
CONFIG_SCSI_LOWLEVEL=y
|
||||
# CONFIG_ISCSI_TCP is not set
|
||||
CONFIG_SGIWD93_SCSI=y
|
||||
# CONFIG_SCSI_AHA1740 is not set
|
||||
# CONFIG_SCSI_AIC7XXX is not set
|
||||
# CONFIG_SCSI_AIC7XXX_OLD is not set
|
||||
# CONFIG_SCSI_ADVANSYS is not set
|
||||
# CONFIG_SCSI_IN2000 is not set
|
||||
# CONFIG_SCSI_DTC3280 is not set
|
||||
# CONFIG_SCSI_FUTURE_DOMAIN is not set
|
||||
# CONFIG_SCSI_GENERIC_NCR5380 is not set
|
||||
# CONFIG_SCSI_GENERIC_NCR5380_MMIO is not set
|
||||
# CONFIG_SCSI_NCR53C406A is not set
|
||||
# CONFIG_SCSI_PAS16 is not set
|
||||
# CONFIG_SCSI_QLOGIC_FAS is not set
|
||||
# CONFIG_SCSI_SIM710 is not set
|
||||
# CONFIG_SCSI_SYM53C416 is not set
|
||||
# CONFIG_SCSI_T128 is not set
|
||||
# CONFIG_SCSI_DEBUG is not set
|
||||
# CONFIG_ATA is not set
|
||||
# CONFIG_MD is not set
|
||||
CONFIG_NETDEVICES=y
|
||||
# CONFIG_NETDEVICES_MULTIQUEUE is not set
|
||||
CONFIG_DUMMY=m
|
||||
# CONFIG_BONDING is not set
|
||||
# CONFIG_MACVLAN is not set
|
||||
# CONFIG_EQUALIZER is not set
|
||||
# CONFIG_TUN is not set
|
||||
# CONFIG_VETH is not set
|
||||
# CONFIG_ARCNET is not set
|
||||
# CONFIG_PHYLIB is not set
|
||||
CONFIG_NET_ETHERNET=y
|
||||
# CONFIG_MII is not set
|
||||
# CONFIG_AX88796 is not set
|
||||
# CONFIG_NET_VENDOR_3COM is not set
|
||||
# CONFIG_NET_VENDOR_SMC is not set
|
||||
# CONFIG_DM9000 is not set
|
||||
# CONFIG_NET_VENDOR_RACAL is not set
|
||||
# CONFIG_NET_TULIP is not set
|
||||
# CONFIG_AT1700 is not set
|
||||
# CONFIG_DEPCA is not set
|
||||
# CONFIG_HP100 is not set
|
||||
# CONFIG_NET_ISA is not set
|
||||
# CONFIG_IBM_NEW_EMAC_ZMII is not set
|
||||
# CONFIG_IBM_NEW_EMAC_RGMII is not set
|
||||
# CONFIG_IBM_NEW_EMAC_TAH is not set
|
||||
# CONFIG_IBM_NEW_EMAC_EMAC4 is not set
|
||||
# CONFIG_NET_PCI is not set
|
||||
# CONFIG_B44 is not set
|
||||
CONFIG_SGISEEQ=y
|
||||
# CONFIG_NETDEV_1000 is not set
|
||||
# CONFIG_NETDEV_10000 is not set
|
||||
# CONFIG_TR is not set
|
||||
|
||||
#
|
||||
# Wireless LAN
|
||||
#
|
||||
# CONFIG_WLAN_PRE80211 is not set
|
||||
# CONFIG_WLAN_80211 is not set
|
||||
# CONFIG_WAN is not set
|
||||
# CONFIG_FDDI is not set
|
||||
# CONFIG_PPP is not set
|
||||
# CONFIG_SLIP is not set
|
||||
# CONFIG_NETCONSOLE is not set
|
||||
# CONFIG_NETPOLL is not set
|
||||
# CONFIG_NET_POLL_CONTROLLER is not set
|
||||
# CONFIG_ISDN is not set
|
||||
# CONFIG_PHONE is not set
|
||||
|
||||
#
|
||||
# Input device support
|
||||
#
|
||||
CONFIG_INPUT=y
|
||||
# CONFIG_INPUT_FF_MEMLESS is not set
|
||||
# CONFIG_INPUT_POLLDEV is not set
|
||||
|
||||
#
|
||||
# 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_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_KEYBOARD_STOWAWAY is not set
|
||||
CONFIG_INPUT_MOUSE=y
|
||||
CONFIG_MOUSE_PS2=y
|
||||
# CONFIG_MOUSE_PS2_ALPS is not set
|
||||
CONFIG_MOUSE_PS2_LOGIPS2PP=y
|
||||
# CONFIG_MOUSE_PS2_SYNAPTICS is not set
|
||||
# CONFIG_MOUSE_PS2_LIFEBOOK is not set
|
||||
CONFIG_MOUSE_PS2_TRACKPOINT=y
|
||||
# CONFIG_MOUSE_PS2_TOUCHKIT is not set
|
||||
# CONFIG_MOUSE_SERIAL is not set
|
||||
# CONFIG_MOUSE_INPORT is not set
|
||||
# CONFIG_MOUSE_LOGIBM is not set
|
||||
# CONFIG_MOUSE_PC110PAD is not set
|
||||
# CONFIG_MOUSE_VSXXXAA is not set
|
||||
# CONFIG_INPUT_JOYSTICK is not set
|
||||
# CONFIG_INPUT_TABLET is not set
|
||||
# CONFIG_INPUT_TOUCHSCREEN is not set
|
||||
# CONFIG_INPUT_MISC is not set
|
||||
|
||||
#
|
||||
# Hardware I/O ports
|
||||
#
|
||||
CONFIG_SERIO=y
|
||||
CONFIG_SERIO_I8042=y
|
||||
CONFIG_SERIO_SERPORT=y
|
||||
CONFIG_SERIO_LIBPS2=y
|
||||
# CONFIG_SERIO_RAW is not set
|
||||
# CONFIG_GAMEPORT is not set
|
||||
|
||||
#
|
||||
# Character devices
|
||||
#
|
||||
CONFIG_VT=y
|
||||
CONFIG_VT_CONSOLE=y
|
||||
CONFIG_HW_CONSOLE=y
|
||||
CONFIG_VT_HW_CONSOLE_BINDING=y
|
||||
# CONFIG_SERIAL_NONSTANDARD is not set
|
||||
|
||||
#
|
||||
# Serial drivers
|
||||
#
|
||||
# CONFIG_SERIAL_8250 is not set
|
||||
|
||||
#
|
||||
# Non-8250 serial port support
|
||||
#
|
||||
CONFIG_SERIAL_IP22_ZILOG=y
|
||||
CONFIG_SERIAL_IP22_ZILOG_CONSOLE=y
|
||||
CONFIG_SERIAL_CORE=y
|
||||
CONFIG_SERIAL_CORE_CONSOLE=y
|
||||
CONFIG_UNIX98_PTYS=y
|
||||
CONFIG_LEGACY_PTYS=y
|
||||
CONFIG_LEGACY_PTY_COUNT=256
|
||||
# CONFIG_IPMI_HANDLER is not set
|
||||
# CONFIG_HW_RANDOM is not set
|
||||
# CONFIG_RTC is not set
|
||||
CONFIG_SGI_DS1286=y
|
||||
# CONFIG_DTLK is not set
|
||||
# CONFIG_R3964 is not set
|
||||
# CONFIG_RAW_DRIVER is not set
|
||||
# CONFIG_TCG_TPM is not set
|
||||
CONFIG_DEVPORT=y
|
||||
# CONFIG_I2C is not set
|
||||
|
||||
#
|
||||
# SPI support
|
||||
#
|
||||
# CONFIG_SPI is not set
|
||||
# CONFIG_SPI_MASTER is not set
|
||||
# CONFIG_W1 is not set
|
||||
# CONFIG_POWER_SUPPLY is not set
|
||||
# CONFIG_HWMON is not set
|
||||
# CONFIG_THERMAL is not set
|
||||
CONFIG_WATCHDOG=y
|
||||
# CONFIG_WATCHDOG_NOWAYOUT is not set
|
||||
|
||||
#
|
||||
# Watchdog Device Drivers
|
||||
#
|
||||
# CONFIG_SOFT_WATCHDOG is not set
|
||||
CONFIG_INDYDOG=y
|
||||
|
||||
#
|
||||
# ISA-based Watchdog Cards
|
||||
#
|
||||
# CONFIG_PCWATCHDOG is not set
|
||||
# CONFIG_MIXCOMWD is not set
|
||||
# CONFIG_WDT is not set
|
||||
|
||||
#
|
||||
# Sonics Silicon Backplane
|
||||
#
|
||||
CONFIG_SSB_POSSIBLE=y
|
||||
# CONFIG_SSB is not set
|
||||
|
||||
#
|
||||
# Multifunction device drivers
|
||||
#
|
||||
# CONFIG_MFD_SM501 is not set
|
||||
|
||||
#
|
||||
# Multimedia devices
|
||||
#
|
||||
# CONFIG_VIDEO_DEV is not set
|
||||
# CONFIG_DVB_CORE is not set
|
||||
# CONFIG_DAB is not set
|
||||
|
||||
#
|
||||
# Graphics support
|
||||
#
|
||||
# CONFIG_VGASTATE is not set
|
||||
# CONFIG_VIDEO_OUTPUT_CONTROL is not set
|
||||
# CONFIG_FB is not set
|
||||
# CONFIG_BACKLIGHT_LCD_SUPPORT is not set
|
||||
|
||||
#
|
||||
# Display device support
|
||||
#
|
||||
# CONFIG_DISPLAY_SUPPORT is not set
|
||||
|
||||
#
|
||||
# Console display driver support
|
||||
#
|
||||
# CONFIG_VGA_CONSOLE is not set
|
||||
# CONFIG_MDA_CONSOLE is not set
|
||||
CONFIG_DUMMY_CONSOLE=y
|
||||
|
||||
#
|
||||
# Sound
|
||||
#
|
||||
# CONFIG_SOUND is not set
|
||||
CONFIG_HID_SUPPORT=y
|
||||
CONFIG_HID=y
|
||||
# CONFIG_HID_DEBUG is not set
|
||||
# CONFIG_HIDRAW is not set
|
||||
CONFIG_USB_SUPPORT=y
|
||||
# CONFIG_USB_ARCH_HAS_HCD is not set
|
||||
# CONFIG_USB_ARCH_HAS_OHCI is not set
|
||||
# CONFIG_USB_ARCH_HAS_EHCI is not set
|
||||
|
||||
#
|
||||
# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support'
|
||||
#
|
||||
# CONFIG_USB_GADGET is not set
|
||||
# CONFIG_MMC is not set
|
||||
# CONFIG_MEMSTICK is not set
|
||||
# CONFIG_NEW_LEDS is not set
|
||||
CONFIG_RTC_LIB=y
|
||||
# CONFIG_RTC_CLASS is not set
|
||||
|
||||
#
|
||||
# Userspace I/O
|
||||
#
|
||||
# CONFIG_UIO is not set
|
||||
|
||||
#
|
||||
# File systems
|
||||
#
|
||||
CONFIG_EXT2_FS=y
|
||||
# CONFIG_EXT2_FS_XATTR is not set
|
||||
# CONFIG_EXT2_FS_XIP is not set
|
||||
CONFIG_EXT3_FS=y
|
||||
CONFIG_EXT3_FS_XATTR=y
|
||||
CONFIG_EXT3_FS_POSIX_ACL=y
|
||||
CONFIG_EXT3_FS_SECURITY=y
|
||||
# CONFIG_EXT4DEV_FS is not set
|
||||
CONFIG_JBD=y
|
||||
CONFIG_FS_MBCACHE=y
|
||||
# CONFIG_REISERFS_FS is not set
|
||||
# CONFIG_JFS_FS is not set
|
||||
CONFIG_FS_POSIX_ACL=y
|
||||
# CONFIG_XFS_FS is not set
|
||||
# CONFIG_GFS2_FS is not set
|
||||
# CONFIG_OCFS2_FS is not set
|
||||
CONFIG_DNOTIFY=y
|
||||
CONFIG_INOTIFY=y
|
||||
CONFIG_INOTIFY_USER=y
|
||||
CONFIG_QUOTA=y
|
||||
# CONFIG_QUOTA_NETLINK_INTERFACE is not set
|
||||
CONFIG_PRINT_QUOTA_WARNING=y
|
||||
# CONFIG_QFMT_V1 is not set
|
||||
# CONFIG_QFMT_V2 is not set
|
||||
CONFIG_QUOTACTL=y
|
||||
# CONFIG_AUTOFS_FS is not set
|
||||
# CONFIG_AUTOFS4_FS is not set
|
||||
# CONFIG_FUSE_FS is not set
|
||||
CONFIG_GENERIC_ACL=y
|
||||
|
||||
#
|
||||
# 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_PROC_KCORE=y
|
||||
CONFIG_PROC_SYSCTL=y
|
||||
CONFIG_SYSFS=y
|
||||
CONFIG_TMPFS=y
|
||||
CONFIG_TMPFS_POSIX_ACL=y
|
||||
# CONFIG_HUGETLB_PAGE is not set
|
||||
# CONFIG_CONFIGFS_FS is not set
|
||||
|
||||
#
|
||||
# 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_CRAMFS is not set
|
||||
# CONFIG_VXFS_FS is not set
|
||||
# CONFIG_MINIX_FS is not set
|
||||
# CONFIG_HPFS_FS is not set
|
||||
# CONFIG_QNX4FS_FS is not set
|
||||
# CONFIG_ROMFS_FS is not set
|
||||
# CONFIG_SYSV_FS is not set
|
||||
# CONFIG_UFS_FS is not set
|
||||
CONFIG_NETWORK_FILESYSTEMS=y
|
||||
CONFIG_NFS_FS=y
|
||||
CONFIG_NFS_V3=y
|
||||
CONFIG_NFS_V3_ACL=y
|
||||
# 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_LOCKD_V4=y
|
||||
CONFIG_NFS_ACL_SUPPORT=y
|
||||
CONFIG_NFS_COMMON=y
|
||||
CONFIG_SUNRPC=y
|
||||
# CONFIG_SUNRPC_BIND34 is not set
|
||||
# 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=y
|
||||
# CONFIG_BSD_DISKLABEL is not set
|
||||
# CONFIG_MINIX_SUBPARTITION is not set
|
||||
# CONFIG_SOLARIS_X86_PARTITION is not set
|
||||
# CONFIG_UNIXWARE_DISKLABEL is not set
|
||||
# CONFIG_LDM_PARTITION is not set
|
||||
CONFIG_SGI_PARTITION=y
|
||||
# CONFIG_ULTRIX_PARTITION is not set
|
||||
# CONFIG_SUN_PARTITION is not set
|
||||
# CONFIG_KARMA_PARTITION is not set
|
||||
# CONFIG_EFI_PARTITION is not set
|
||||
# CONFIG_SYSV68_PARTITION is not set
|
||||
# CONFIG_NLS is not set
|
||||
# CONFIG_DLM is not set
|
||||
|
||||
#
|
||||
# Kernel hacking
|
||||
#
|
||||
CONFIG_TRACE_IRQFLAGS_SUPPORT=y
|
||||
# CONFIG_PRINTK_TIME is not set
|
||||
CONFIG_ENABLE_WARN_DEPRECATED=y
|
||||
CONFIG_ENABLE_MUST_CHECK=y
|
||||
CONFIG_MAGIC_SYSRQ=y
|
||||
# CONFIG_UNUSED_SYMBOLS is not set
|
||||
# CONFIG_DEBUG_FS is not set
|
||||
# CONFIG_HEADERS_CHECK is not set
|
||||
# CONFIG_DEBUG_KERNEL is not set
|
||||
# CONFIG_SAMPLES is not set
|
||||
CONFIG_CMDLINE=""
|
||||
|
||||
#
|
||||
# Security options
|
||||
#
|
||||
# CONFIG_KEYS is not set
|
||||
# CONFIG_SECURITY is not set
|
||||
# CONFIG_SECURITY_FILE_CAPABILITIES is not set
|
||||
CONFIG_CRYPTO=y
|
||||
CONFIG_CRYPTO_ALGAPI=y
|
||||
# CONFIG_CRYPTO_SEQIV is not set
|
||||
CONFIG_CRYPTO_MANAGER=y
|
||||
# CONFIG_CRYPTO_HMAC is not set
|
||||
# CONFIG_CRYPTO_XCBC is not set
|
||||
# CONFIG_CRYPTO_NULL is not set
|
||||
# CONFIG_CRYPTO_MD4 is not set
|
||||
CONFIG_CRYPTO_MD5=y
|
||||
# CONFIG_CRYPTO_SHA1 is not set
|
||||
# CONFIG_CRYPTO_SHA256 is not set
|
||||
# CONFIG_CRYPTO_SHA512 is not set
|
||||
# CONFIG_CRYPTO_WP512 is not set
|
||||
# CONFIG_CRYPTO_TGR192 is not set
|
||||
# CONFIG_CRYPTO_GF128MUL is not set
|
||||
# CONFIG_CRYPTO_ECB is not set
|
||||
# CONFIG_CRYPTO_CBC is not set
|
||||
# CONFIG_CRYPTO_PCBC is not set
|
||||
# CONFIG_CRYPTO_LRW is not set
|
||||
# CONFIG_CRYPTO_XTS is not set
|
||||
# CONFIG_CRYPTO_CTR is not set
|
||||
# CONFIG_CRYPTO_GCM is not set
|
||||
# CONFIG_CRYPTO_CCM is not set
|
||||
# CONFIG_CRYPTO_CRYPTD is not set
|
||||
# CONFIG_CRYPTO_DES is not set
|
||||
# CONFIG_CRYPTO_FCRYPT is not set
|
||||
# CONFIG_CRYPTO_BLOWFISH is not set
|
||||
# CONFIG_CRYPTO_TWOFISH is not set
|
||||
# CONFIG_CRYPTO_SERPENT is not set
|
||||
# CONFIG_CRYPTO_AES is not set
|
||||
# CONFIG_CRYPTO_CAST5 is not set
|
||||
# CONFIG_CRYPTO_CAST6 is not set
|
||||
# CONFIG_CRYPTO_TEA is not set
|
||||
# CONFIG_CRYPTO_ARC4 is not set
|
||||
# CONFIG_CRYPTO_KHAZAD is not set
|
||||
# CONFIG_CRYPTO_ANUBIS is not set
|
||||
# CONFIG_CRYPTO_SEED is not set
|
||||
# CONFIG_CRYPTO_SALSA20 is not set
|
||||
# CONFIG_CRYPTO_DEFLATE is not set
|
||||
# CONFIG_CRYPTO_MICHAEL_MIC is not set
|
||||
# CONFIG_CRYPTO_CRC32C is not set
|
||||
# CONFIG_CRYPTO_CAMELLIA is not set
|
||||
# CONFIG_CRYPTO_TEST is not set
|
||||
# CONFIG_CRYPTO_AUTHENC is not set
|
||||
# CONFIG_CRYPTO_LZO is not set
|
||||
# CONFIG_CRYPTO_HW is not set
|
||||
|
||||
#
|
||||
# Library routines
|
||||
#
|
||||
# CONFIG_CRC_CCITT is not set
|
||||
# CONFIG_CRC16 is not set
|
||||
# CONFIG_CRC_ITU_T is not set
|
||||
# CONFIG_CRC32 is not set
|
||||
# CONFIG_CRC7 is not set
|
||||
# CONFIG_LIBCRC32C is not set
|
||||
CONFIG_PLIST=y
|
||||
CONFIG_HAS_IOMEM=y
|
||||
CONFIG_HAS_IOPORT=y
|
||||
CONFIG_HAS_DMA=y
|
|
@ -1,800 +0,0 @@
|
|||
#
|
||||
# Automatically generated make config: don't edit
|
||||
# Linux kernel version: 2.6.20
|
||||
# Tue Feb 20 21:47:39 2007
|
||||
#
|
||||
CONFIG_MIPS=y
|
||||
|
||||
#
|
||||
# Machine selection
|
||||
#
|
||||
CONFIG_ZONE_DMA=y
|
||||
# CONFIG_MIPS_MTX1 is not set
|
||||
# CONFIG_MIPS_BOSPORUS is not set
|
||||
# CONFIG_MIPS_PB1000 is not set
|
||||
# CONFIG_MIPS_PB1100 is not set
|
||||
# CONFIG_MIPS_PB1500 is not set
|
||||
# CONFIG_MIPS_PB1550 is not set
|
||||
# CONFIG_MIPS_PB1200 is not set
|
||||
# CONFIG_MIPS_DB1000 is not set
|
||||
# CONFIG_MIPS_DB1100 is not set
|
||||
# CONFIG_MIPS_DB1500 is not set
|
||||
# CONFIG_MIPS_DB1550 is not set
|
||||
# CONFIG_MIPS_DB1200 is not set
|
||||
# CONFIG_MIPS_MIRAGE is not set
|
||||
# CONFIG_BASLER_EXCITE is not set
|
||||
# CONFIG_MIPS_COBALT is not set
|
||||
# CONFIG_MACH_DECSTATION is not set
|
||||
# CONFIG_MACH_JAZZ is not set
|
||||
# CONFIG_MIPS_ATLAS is not set
|
||||
# CONFIG_MIPS_MALTA is not set
|
||||
# CONFIG_MIPS_SEAD is not set
|
||||
# CONFIG_WR_PPMC is not set
|
||||
# CONFIG_MIPS_SIM is not set
|
||||
# CONFIG_MOMENCO_JAGUAR_ATX is not set
|
||||
# CONFIG_MIPS_XXS1500 is not set
|
||||
# CONFIG_PNX8550_JBS is not set
|
||||
# CONFIG_PNX8550_STB810 is not set
|
||||
# CONFIG_MACH_VR41XX is not set
|
||||
# CONFIG_PMC_YOSEMITE is not set
|
||||
# CONFIG_MARKEINS is not set
|
||||
# CONFIG_SGI_IP22 is not set
|
||||
# CONFIG_SGI_IP27 is not set
|
||||
# CONFIG_SGI_IP32 is not set
|
||||
# CONFIG_SIBYTE_BIGSUR is not set
|
||||
# CONFIG_SIBYTE_SWARM is not set
|
||||
# CONFIG_SIBYTE_SENTOSA is not set
|
||||
# CONFIG_SIBYTE_RHONE is not set
|
||||
# CONFIG_SIBYTE_CARMEL is not set
|
||||
# CONFIG_SIBYTE_LITTLESUR is not set
|
||||
# CONFIG_SIBYTE_CRHINE is not set
|
||||
# CONFIG_SIBYTE_CRHONE is not set
|
||||
# CONFIG_SNI_RM is not set
|
||||
# CONFIG_TOSHIBA_JMR3927 is not set
|
||||
# CONFIG_TOSHIBA_RBTX4927 is not set
|
||||
# CONFIG_TOSHIBA_RBTX4938 is not set
|
||||
CONFIG_RWSEM_GENERIC_SPINLOCK=y
|
||||
# CONFIG_ARCH_HAS_ILOG2_U32 is not set
|
||||
# CONFIG_ARCH_HAS_ILOG2_U64 is not set
|
||||
CONFIG_GENERIC_FIND_NEXT_BIT=y
|
||||
CONFIG_GENERIC_HWEIGHT=y
|
||||
CONFIG_GENERIC_CALIBRATE_DELAY=y
|
||||
CONFIG_GENERIC_TIME=y
|
||||
CONFIG_SCHED_NO_NO_OMIT_FRAME_POINTER=y
|
||||
CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y
|
||||
CONFIG_DMA_COHERENT=y
|
||||
CONFIG_GENERIC_ISA_DMA=y
|
||||
CONFIG_I8259=y
|
||||
CONFIG_CPU_BIG_ENDIAN=y
|
||||
# CONFIG_CPU_LITTLE_ENDIAN is not set
|
||||
CONFIG_SYS_SUPPORTS_BIG_ENDIAN=y
|
||||
CONFIG_SYS_SUPPORTS_LITTLE_ENDIAN=y
|
||||
CONFIG_SWAP_IO_SPACE=y
|
||||
CONFIG_MIPS_L1_CACHE_SHIFT=5
|
||||
CONFIG_HAVE_STD_PC_SERIAL_PORT=y
|
||||
|
||||
#
|
||||
# CPU selection
|
||||
#
|
||||
CONFIG_CPU_MIPS32_R1=y
|
||||
# CONFIG_CPU_MIPS32_R2 is not set
|
||||
# CONFIG_CPU_MIPS64_R1 is not set
|
||||
# CONFIG_CPU_MIPS64_R2 is not set
|
||||
# CONFIG_CPU_R3000 is not set
|
||||
# CONFIG_CPU_TX39XX is not set
|
||||
# CONFIG_CPU_VR41XX is not set
|
||||
# CONFIG_CPU_R4300 is not set
|
||||
# CONFIG_CPU_R4X00 is not set
|
||||
# CONFIG_CPU_TX49XX is not set
|
||||
# CONFIG_CPU_R5000 is not set
|
||||
# CONFIG_CPU_R5432 is not set
|
||||
# CONFIG_CPU_R6000 is not set
|
||||
# CONFIG_CPU_NEVADA is not set
|
||||
# CONFIG_CPU_R8000 is not set
|
||||
# CONFIG_CPU_R10000 is not set
|
||||
# CONFIG_CPU_RM7000 is not set
|
||||
# CONFIG_CPU_RM9000 is not set
|
||||
# CONFIG_CPU_SB1 is not set
|
||||
CONFIG_SYS_HAS_CPU_MIPS32_R1=y
|
||||
CONFIG_CPU_MIPS32=y
|
||||
CONFIG_CPU_MIPSR1=y
|
||||
CONFIG_SYS_SUPPORTS_32BIT_KERNEL=y
|
||||
CONFIG_CPU_SUPPORTS_32BIT_KERNEL=y
|
||||
|
||||
#
|
||||
# Kernel type
|
||||
#
|
||||
CONFIG_32BIT=y
|
||||
# CONFIG_64BIT is not set
|
||||
CONFIG_PAGE_SIZE_4KB=y
|
||||
# CONFIG_PAGE_SIZE_8KB is not set
|
||||
# CONFIG_PAGE_SIZE_16KB is not set
|
||||
# CONFIG_PAGE_SIZE_64KB is not set
|
||||
CONFIG_CPU_HAS_PREFETCH=y
|
||||
CONFIG_MIPS_MT_DISABLED=y
|
||||
# CONFIG_MIPS_MT_SMP is not set
|
||||
# CONFIG_MIPS_MT_SMTC is not set
|
||||
# CONFIG_MIPS_VPE_LOADER is not set
|
||||
# CONFIG_64BIT_PHYS_ADDR is not set
|
||||
CONFIG_CPU_HAS_LLSC=y
|
||||
CONFIG_CPU_HAS_SYNC=y
|
||||
CONFIG_GENERIC_HARDIRQS=y
|
||||
CONFIG_GENERIC_IRQ_PROBE=y
|
||||
CONFIG_CPU_SUPPORTS_HIGHMEM=y
|
||||
CONFIG_ARCH_FLATMEM_ENABLE=y
|
||||
CONFIG_ARCH_SPARSEMEM_ENABLE=y
|
||||
CONFIG_FLATMEM=y
|
||||
CONFIG_FLAT_NODE_MEM_MAP=y
|
||||
CONFIG_SPARSEMEM_STATIC=y
|
||||
CONFIG_SPLIT_PTLOCK_CPUS=4
|
||||
# CONFIG_RESOURCES_64BIT is not set
|
||||
CONFIG_ZONE_DMA_FLAG=1
|
||||
# CONFIG_HZ_48 is not set
|
||||
CONFIG_HZ_100=y
|
||||
# CONFIG_HZ_128 is not set
|
||||
# CONFIG_HZ_250 is not set
|
||||
# CONFIG_HZ_256 is not set
|
||||
# CONFIG_HZ_1000 is not set
|
||||
# CONFIG_HZ_1024 is not set
|
||||
CONFIG_SYS_SUPPORTS_ARBIT_HZ=y
|
||||
CONFIG_HZ=100
|
||||
CONFIG_PREEMPT_NONE=y
|
||||
# CONFIG_PREEMPT_VOLUNTARY is not set
|
||||
# CONFIG_PREEMPT is not set
|
||||
CONFIG_LOCKDEP_SUPPORT=y
|
||||
CONFIG_STACKTRACE_SUPPORT=y
|
||||
CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
|
||||
|
||||
#
|
||||
# Code maturity level options
|
||||
#
|
||||
# CONFIG_EXPERIMENTAL is not set
|
||||
CONFIG_BROKEN_ON_SMP=y
|
||||
CONFIG_INIT_ENV_ARG_LIMIT=32
|
||||
|
||||
#
|
||||
# General setup
|
||||
#
|
||||
CONFIG_LOCALVERSION=""
|
||||
CONFIG_LOCALVERSION_AUTO=y
|
||||
# CONFIG_SWAP is not set
|
||||
# CONFIG_SYSVIPC is not set
|
||||
# CONFIG_BSD_PROCESS_ACCT is not set
|
||||
# CONFIG_TASKSTATS is not set
|
||||
# CONFIG_UTS_NS is not set
|
||||
# CONFIG_AUDIT is not set
|
||||
# CONFIG_IKCONFIG is not set
|
||||
CONFIG_SYSFS_DEPRECATED=y
|
||||
CONFIG_RELAY=y
|
||||
CONFIG_SYSCTL=y
|
||||
CONFIG_EMBEDDED=y
|
||||
CONFIG_SYSCTL_SYSCALL=y
|
||||
CONFIG_KALLSYMS=y
|
||||
# CONFIG_KALLSYMS_EXTRA_PASS is not set
|
||||
# CONFIG_HOTPLUG is not set
|
||||
CONFIG_PRINTK=y
|
||||
# CONFIG_BUG is not set
|
||||
CONFIG_ELF_CORE=y
|
||||
# CONFIG_BASE_FULL is not set
|
||||
# CONFIG_FUTEX is not set
|
||||
# CONFIG_EPOLL is not set
|
||||
# CONFIG_SHMEM is not set
|
||||
CONFIG_SLAB=y
|
||||
CONFIG_VM_EVENT_COUNTERS=y
|
||||
CONFIG_TINY_SHMEM=y
|
||||
CONFIG_BASE_SMALL=1
|
||||
# CONFIG_SLOB is not set
|
||||
|
||||
#
|
||||
# Loadable module support
|
||||
#
|
||||
# CONFIG_MODULES is not set
|
||||
|
||||
#
|
||||
# Block layer
|
||||
#
|
||||
CONFIG_BLOCK=y
|
||||
# CONFIG_LBD is not set
|
||||
# CONFIG_BLK_DEV_IO_TRACE is not set
|
||||
# CONFIG_LSF is not set
|
||||
|
||||
#
|
||||
# IO Schedulers
|
||||
#
|
||||
CONFIG_IOSCHED_NOOP=y
|
||||
# CONFIG_IOSCHED_AS is not set
|
||||
# CONFIG_IOSCHED_DEADLINE is not set
|
||||
# CONFIG_IOSCHED_CFQ is not set
|
||||
# CONFIG_DEFAULT_AS is not set
|
||||
# CONFIG_DEFAULT_DEADLINE is not set
|
||||
# CONFIG_DEFAULT_CFQ is not set
|
||||
CONFIG_DEFAULT_NOOP=y
|
||||
CONFIG_DEFAULT_IOSCHED="noop"
|
||||
|
||||
#
|
||||
# Bus options (PCI, PCMCIA, EISA, ISA, TC)
|
||||
#
|
||||
CONFIG_ISA=y
|
||||
CONFIG_MMU=y
|
||||
CONFIG_PCSPEAKER=y
|
||||
|
||||
#
|
||||
# PCCARD (PCMCIA/CardBus) support
|
||||
#
|
||||
|
||||
#
|
||||
# PCI Hotplug Support
|
||||
#
|
||||
|
||||
#
|
||||
# Executable file formats
|
||||
#
|
||||
CONFIG_BINFMT_ELF=y
|
||||
# CONFIG_BINFMT_MISC is not set
|
||||
CONFIG_TRAD_SIGNALS=y
|
||||
|
||||
#
|
||||
# Power management options
|
||||
#
|
||||
CONFIG_PM=y
|
||||
# CONFIG_PM_LEGACY is not set
|
||||
# CONFIG_PM_DEBUG is not set
|
||||
# CONFIG_PM_SYSFS_DEPRECATED is not set
|
||||
|
||||
#
|
||||
# Networking
|
||||
#
|
||||
CONFIG_NET=y
|
||||
|
||||
#
|
||||
# Networking options
|
||||
#
|
||||
# CONFIG_NETDEBUG is not set
|
||||
CONFIG_PACKET=y
|
||||
CONFIG_PACKET_MMAP=y
|
||||
CONFIG_UNIX=y
|
||||
CONFIG_XFRM=y
|
||||
# CONFIG_XFRM_USER is not set
|
||||
# CONFIG_NET_KEY is not set
|
||||
CONFIG_INET=y
|
||||
CONFIG_IP_MULTICAST=y
|
||||
# CONFIG_IP_ADVANCED_ROUTER is not set
|
||||
CONFIG_IP_FIB_HASH=y
|
||||
CONFIG_IP_PNP=y
|
||||
CONFIG_IP_PNP_DHCP=y
|
||||
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_IP_MROUTE 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_XFRM_TUNNEL is not set
|
||||
# CONFIG_INET_TUNNEL is not set
|
||||
CONFIG_INET_XFRM_MODE_TRANSPORT=y
|
||||
CONFIG_INET_XFRM_MODE_TUNNEL=y
|
||||
CONFIG_INET_XFRM_MODE_BEET=y
|
||||
CONFIG_INET_DIAG=y
|
||||
CONFIG_INET_TCP_DIAG=y
|
||||
# CONFIG_TCP_CONG_ADVANCED is not set
|
||||
CONFIG_TCP_CONG_CUBIC=y
|
||||
CONFIG_DEFAULT_TCP_CONG="cubic"
|
||||
# CONFIG_IPV6 is not set
|
||||
# CONFIG_INET6_XFRM_TUNNEL is not set
|
||||
# CONFIG_INET6_TUNNEL is not set
|
||||
CONFIG_NETWORK_SECMARK=y
|
||||
# CONFIG_NETFILTER 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
|
||||
|
||||
#
|
||||
# QoS and/or fair queueing
|
||||
#
|
||||
# CONFIG_NET_SCHED is not set
|
||||
|
||||
#
|
||||
# Network testing
|
||||
#
|
||||
# CONFIG_NET_PKTGEN is not set
|
||||
# CONFIG_HAMRADIO is not set
|
||||
# CONFIG_IRDA is not set
|
||||
# CONFIG_BT is not set
|
||||
# CONFIG_IEEE80211 is not set
|
||||
|
||||
#
|
||||
# Device Drivers
|
||||
#
|
||||
|
||||
#
|
||||
# Generic Driver Options
|
||||
#
|
||||
CONFIG_STANDALONE=y
|
||||
# CONFIG_PREVENT_FIRMWARE_BUILD is not set
|
||||
# CONFIG_SYS_HYPERVISOR is not set
|
||||
|
||||
#
|
||||
# Connector - unified userspace <-> kernelspace linker
|
||||
#
|
||||
CONFIG_CONNECTOR=y
|
||||
CONFIG_PROC_EVENTS=y
|
||||
|
||||
#
|
||||
# Memory Technology Devices (MTD)
|
||||
#
|
||||
# CONFIG_MTD is not set
|
||||
|
||||
#
|
||||
# Parallel port support
|
||||
#
|
||||
# CONFIG_PARPORT is not set
|
||||
|
||||
#
|
||||
# Plug and Play support
|
||||
#
|
||||
# CONFIG_PNP is not set
|
||||
# CONFIG_PNPACPI is not set
|
||||
|
||||
#
|
||||
# Block devices
|
||||
#
|
||||
# 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 is not set
|
||||
# CONFIG_BLK_DEV_INITRD is not set
|
||||
# CONFIG_CDROM_PKTCDVD is not set
|
||||
# CONFIG_ATA_OVER_ETH is not set
|
||||
|
||||
#
|
||||
# Misc devices
|
||||
#
|
||||
|
||||
#
|
||||
# ATA/ATAPI/MFM/RLL support
|
||||
#
|
||||
# CONFIG_IDE is not set
|
||||
|
||||
#
|
||||
# SCSI device support
|
||||
#
|
||||
# CONFIG_RAID_ATTRS 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
|
||||
|
||||
#
|
||||
# Old CD-ROM drivers (not SCSI, not IDE)
|
||||
#
|
||||
# CONFIG_CD_NO_IDESCSI is not set
|
||||
|
||||
#
|
||||
# Multi-device support (RAID and LVM)
|
||||
#
|
||||
# CONFIG_MD is not set
|
||||
|
||||
#
|
||||
# Fusion MPT device support
|
||||
#
|
||||
# CONFIG_FUSION is not set
|
||||
|
||||
#
|
||||
# IEEE 1394 (FireWire) support
|
||||
#
|
||||
|
||||
#
|
||||
# I2O device support
|
||||
#
|
||||
|
||||
#
|
||||
# Network device support
|
||||
#
|
||||
CONFIG_NETDEVICES=y
|
||||
# CONFIG_DUMMY is not set
|
||||
# CONFIG_BONDING is not set
|
||||
# CONFIG_EQUALIZER is not set
|
||||
# CONFIG_TUN is not set
|
||||
|
||||
#
|
||||
# ARCnet devices
|
||||
#
|
||||
# CONFIG_ARCNET is not set
|
||||
|
||||
#
|
||||
# PHY device support
|
||||
#
|
||||
# CONFIG_PHYLIB is not set
|
||||
|
||||
#
|
||||
# Ethernet (10 or 100Mbit)
|
||||
#
|
||||
CONFIG_NET_ETHERNET=y
|
||||
# CONFIG_MII is not set
|
||||
# CONFIG_NET_VENDOR_3COM is not set
|
||||
# CONFIG_NET_VENDOR_SMC is not set
|
||||
# CONFIG_DM9000 is not set
|
||||
# CONFIG_NET_VENDOR_RACAL is not set
|
||||
# CONFIG_DEPCA is not set
|
||||
# CONFIG_HP100 is not set
|
||||
CONFIG_NET_ISA=y
|
||||
# CONFIG_E2100 is not set
|
||||
# CONFIG_EWRK3 is not set
|
||||
# CONFIG_EEXPRESS is not set
|
||||
# CONFIG_EEXPRESS_PRO is not set
|
||||
# CONFIG_HPLAN_PLUS is not set
|
||||
# CONFIG_HPLAN is not set
|
||||
# CONFIG_LP486E is not set
|
||||
# CONFIG_ETH16I is not set
|
||||
CONFIG_NE2000=y
|
||||
# CONFIG_NET_PCI is not set
|
||||
|
||||
#
|
||||
# Ethernet (1000 Mbit)
|
||||
#
|
||||
|
||||
#
|
||||
# Ethernet (10000 Mbit)
|
||||
#
|
||||
|
||||
#
|
||||
# Token Ring devices
|
||||
#
|
||||
# CONFIG_TR is not set
|
||||
|
||||
#
|
||||
# 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_NETPOLL is not set
|
||||
# CONFIG_NET_POLL_CONTROLLER is not set
|
||||
|
||||
#
|
||||
# ISDN subsystem
|
||||
#
|
||||
# CONFIG_ISDN is not set
|
||||
|
||||
#
|
||||
# Telephony Support
|
||||
#
|
||||
# CONFIG_PHONE is not set
|
||||
|
||||
#
|
||||
# Input device support
|
||||
#
|
||||
CONFIG_INPUT=y
|
||||
# CONFIG_INPUT_FF_MEMLESS is not set
|
||||
|
||||
#
|
||||
# Userland interfaces
|
||||
#
|
||||
# CONFIG_INPUT_MOUSEDEV is not set
|
||||
# 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 is not set
|
||||
# CONFIG_INPUT_MOUSE 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 is not set
|
||||
# CONFIG_GAMEPORT is not set
|
||||
|
||||
#
|
||||
# Character devices
|
||||
#
|
||||
CONFIG_VT=y
|
||||
CONFIG_VT_CONSOLE=y
|
||||
CONFIG_HW_CONSOLE=y
|
||||
CONFIG_VT_HW_CONSOLE_BINDING=y
|
||||
# CONFIG_SERIAL_NONSTANDARD is not set
|
||||
|
||||
#
|
||||
# Serial drivers
|
||||
#
|
||||
CONFIG_SERIAL_8250=y
|
||||
CONFIG_SERIAL_8250_CONSOLE=y
|
||||
CONFIG_SERIAL_8250_NR_UARTS=4
|
||||
CONFIG_SERIAL_8250_RUNTIME_UARTS=4
|
||||
# CONFIG_SERIAL_8250_EXTENDED is not set
|
||||
|
||||
#
|
||||
# Non-8250 serial port support
|
||||
#
|
||||
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_HW_RANDOM is not set
|
||||
# CONFIG_RTC is not set
|
||||
# CONFIG_GEN_RTC is not set
|
||||
# CONFIG_DTLK is not set
|
||||
# CONFIG_R3964 is not set
|
||||
# CONFIG_RAW_DRIVER is not set
|
||||
|
||||
#
|
||||
# TPM devices
|
||||
#
|
||||
|
||||
#
|
||||
# I2C support
|
||||
#
|
||||
# CONFIG_I2C is not set
|
||||
|
||||
#
|
||||
# SPI support
|
||||
#
|
||||
# CONFIG_SPI is not set
|
||||
# CONFIG_SPI_MASTER is not set
|
||||
|
||||
#
|
||||
# Dallas's 1-wire bus
|
||||
#
|
||||
# CONFIG_W1 is not set
|
||||
|
||||
#
|
||||
# Hardware Monitoring support
|
||||
#
|
||||
# CONFIG_HWMON is not set
|
||||
# CONFIG_HWMON_VID is not set
|
||||
|
||||
#
|
||||
# Multimedia devices
|
||||
#
|
||||
# CONFIG_VIDEO_DEV is not set
|
||||
|
||||
#
|
||||
# Digital Video Broadcasting Devices
|
||||
#
|
||||
# CONFIG_DVB is not set
|
||||
|
||||
#
|
||||
# Graphics support
|
||||
#
|
||||
# CONFIG_FIRMWARE_EDID is not set
|
||||
# CONFIG_FB is not set
|
||||
|
||||
#
|
||||
# Console display driver support
|
||||
#
|
||||
CONFIG_VGA_CONSOLE=y
|
||||
# CONFIG_VGACON_SOFT_SCROLLBACK is not set
|
||||
# CONFIG_MDA_CONSOLE is not set
|
||||
CONFIG_DUMMY_CONSOLE=y
|
||||
# CONFIG_BACKLIGHT_LCD_SUPPORT is not set
|
||||
|
||||
#
|
||||
# Sound
|
||||
#
|
||||
# CONFIG_SOUND is not set
|
||||
|
||||
#
|
||||
# HID Devices
|
||||
#
|
||||
CONFIG_HID=y
|
||||
# CONFIG_HID_DEBUG is not set
|
||||
|
||||
#
|
||||
# USB support
|
||||
#
|
||||
# CONFIG_USB_ARCH_HAS_HCD is not set
|
||||
# CONFIG_USB_ARCH_HAS_OHCI is not set
|
||||
# CONFIG_USB_ARCH_HAS_EHCI is not set
|
||||
|
||||
#
|
||||
# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support'
|
||||
#
|
||||
|
||||
#
|
||||
# USB Gadget Support
|
||||
#
|
||||
# CONFIG_USB_GADGET is not set
|
||||
|
||||
#
|
||||
# MMC/SD Card support
|
||||
#
|
||||
# CONFIG_MMC is not set
|
||||
|
||||
#
|
||||
# LED devices
|
||||
#
|
||||
# CONFIG_NEW_LEDS is not set
|
||||
|
||||
#
|
||||
# LED drivers
|
||||
#
|
||||
|
||||
#
|
||||
# LED Triggers
|
||||
#
|
||||
|
||||
#
|
||||
# InfiniBand support
|
||||
#
|
||||
|
||||
#
|
||||
# EDAC - error detection and reporting (RAS) (EXPERIMENTAL)
|
||||
#
|
||||
|
||||
#
|
||||
# Real Time Clock
|
||||
#
|
||||
|
||||
#
|
||||
# DMA Engine support
|
||||
#
|
||||
# CONFIG_DMA_ENGINE is not set
|
||||
|
||||
#
|
||||
# DMA Clients
|
||||
#
|
||||
|
||||
#
|
||||
# DMA Devices
|
||||
#
|
||||
|
||||
#
|
||||
# Auxiliary Display support
|
||||
#
|
||||
|
||||
#
|
||||
# Virtualization
|
||||
#
|
||||
|
||||
#
|
||||
# File systems
|
||||
#
|
||||
# CONFIG_EXT2_FS is not set
|
||||
# CONFIG_EXT3_FS is not set
|
||||
# CONFIG_REISERFS_FS is not set
|
||||
# CONFIG_JFS_FS is not set
|
||||
CONFIG_FS_POSIX_ACL=y
|
||||
# CONFIG_XFS_FS is not set
|
||||
# CONFIG_OCFS2_FS is not set
|
||||
# CONFIG_MINIX_FS is not set
|
||||
# CONFIG_ROMFS_FS is not set
|
||||
CONFIG_INOTIFY=y
|
||||
CONFIG_INOTIFY_USER=y
|
||||
# CONFIG_QUOTA is not set
|
||||
# CONFIG_DNOTIFY is not set
|
||||
# CONFIG_AUTOFS_FS is not set
|
||||
# CONFIG_AUTOFS4_FS is not set
|
||||
CONFIG_FUSE_FS=y
|
||||
CONFIG_GENERIC_ACL=y
|
||||
|
||||
#
|
||||
# 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_PROC_KCORE=y
|
||||
CONFIG_PROC_SYSCTL=y
|
||||
CONFIG_SYSFS=y
|
||||
CONFIG_TMPFS=y
|
||||
CONFIG_TMPFS_POSIX_ACL=y
|
||||
# CONFIG_HUGETLB_PAGE is not set
|
||||
CONFIG_RAMFS=y
|
||||
|
||||
#
|
||||
# Miscellaneous filesystems
|
||||
#
|
||||
# CONFIG_HFSPLUS_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=y
|
||||
# CONFIG_NFS_V3_ACL is not set
|
||||
CONFIG_NFS_DIRECTIO=y
|
||||
# CONFIG_NFSD is not set
|
||||
CONFIG_ROOT_NFS=y
|
||||
CONFIG_LOCKD=y
|
||||
CONFIG_LOCKD_V4=y
|
||||
CONFIG_NFS_COMMON=y
|
||||
CONFIG_SUNRPC=y
|
||||
# CONFIG_SMB_FS is not set
|
||||
# CONFIG_CIFS is not set
|
||||
# CONFIG_NCP_FS is not set
|
||||
# CONFIG_CODA_FS is not set
|
||||
|
||||
#
|
||||
# Partition Types
|
||||
#
|
||||
# CONFIG_PARTITION_ADVANCED is not set
|
||||
CONFIG_MSDOS_PARTITION=y
|
||||
|
||||
#
|
||||
# Native Language Support
|
||||
#
|
||||
# CONFIG_NLS is not set
|
||||
|
||||
#
|
||||
# Kernel hacking
|
||||
#
|
||||
CONFIG_TRACE_IRQFLAGS_SUPPORT=y
|
||||
# CONFIG_PRINTK_TIME is not set
|
||||
CONFIG_ENABLE_MUST_CHECK=y
|
||||
# CONFIG_MAGIC_SYSRQ is not set
|
||||
# CONFIG_UNUSED_SYMBOLS is not set
|
||||
# CONFIG_DEBUG_FS is not set
|
||||
# CONFIG_HEADERS_CHECK is not set
|
||||
# CONFIG_DEBUG_KERNEL is not set
|
||||
CONFIG_LOG_BUF_SHIFT=14
|
||||
CONFIG_CROSSCOMPILE=y
|
||||
CONFIG_CMDLINE=""
|
||||
|
||||
#
|
||||
# Security options
|
||||
#
|
||||
# CONFIG_KEYS is not set
|
||||
# CONFIG_SECURITY is not set
|
||||
|
||||
#
|
||||
# Cryptographic options
|
||||
#
|
||||
# CONFIG_CRYPTO is not set
|
||||
|
||||
#
|
||||
# Library routines
|
||||
#
|
||||
CONFIG_BITREVERSE=y
|
||||
# CONFIG_CRC_CCITT is not set
|
||||
# CONFIG_CRC16 is not set
|
||||
CONFIG_CRC32=y
|
||||
# CONFIG_LIBCRC32C is not set
|
||||
CONFIG_HAS_IOMEM=y
|
||||
CONFIG_HAS_IOPORT=y
|
|
@ -33,6 +33,7 @@ static struct irq_chip rm7k_irq_controller = {
|
|||
.mask = mask_rm7k_irq,
|
||||
.mask_ack = mask_rm7k_irq,
|
||||
.unmask = unmask_rm7k_irq,
|
||||
.eoi = unmask_rm7k_irq
|
||||
};
|
||||
|
||||
void __init rm7k_cpu_irq_init(void)
|
||||
|
|
|
@ -75,6 +75,7 @@ static struct irq_chip rm9k_irq_controller = {
|
|||
.mask = mask_rm9k_irq,
|
||||
.mask_ack = mask_rm9k_irq,
|
||||
.unmask = unmask_rm9k_irq,
|
||||
.eoi = unmask_rm9k_irq
|
||||
};
|
||||
|
||||
static struct irq_chip rm9k_perfcounter_irq = {
|
||||
|
|
|
@ -36,7 +36,7 @@ unsigned long mt_fpemul_threshold = 0;
|
|||
*/
|
||||
static inline struct task_struct *find_process_by_pid(pid_t pid)
|
||||
{
|
||||
return pid ? find_task_by_pid(pid) : current;
|
||||
return pid ? find_task_by_vpid(pid) : current;
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -663,6 +663,9 @@ einval: li v0, -EINVAL
|
|||
sys sys_ni_syscall 0
|
||||
sys sys_eventfd 1
|
||||
sys sys_fallocate 6 /* 4320 */
|
||||
sys sys_timerfd_create 2
|
||||
sys sys_timerfd_gettime 2
|
||||
sys sys_timerfd_settime 4
|
||||
.endm
|
||||
|
||||
/* We pre-compute the number of _instruction_ bytes needed to
|
||||
|
|
|
@ -478,4 +478,7 @@ sys_call_table:
|
|||
PTR sys_ni_syscall
|
||||
PTR sys_eventfd
|
||||
PTR sys_fallocate
|
||||
PTR sys_timerfd_create /* 5280 */
|
||||
PTR sys_timerfd_gettime
|
||||
PTR sys_timerfd_settime
|
||||
.size sys_call_table,.-sys_call_table
|
||||
|
|
|
@ -404,4 +404,7 @@ EXPORT(sysn32_call_table)
|
|||
PTR sys_ni_syscall
|
||||
PTR sys_eventfd
|
||||
PTR sys_fallocate
|
||||
PTR sys_timerfd_create
|
||||
PTR sys_timerfd_gettime /* 5285 */
|
||||
PTR sys_timerfd_settime
|
||||
.size sysn32_call_table,.-sysn32_call_table
|
||||
|
|
|
@ -526,4 +526,7 @@ sys_call_table:
|
|||
PTR sys_ni_syscall
|
||||
PTR sys_eventfd
|
||||
PTR sys32_fallocate /* 4320 */
|
||||
PTR sys_timerfd_create
|
||||
PTR sys_timerfd_gettime
|
||||
PTR sys_timerfd_settime
|
||||
.size sys_call_table,.-sys_call_table
|
||||
|
|
|
@ -111,7 +111,7 @@ asmlinkage int irix_prctl(unsigned option, ...)
|
|||
printk("irix_prctl[%s:%d]: Wants PR_ISBLOCKED\n",
|
||||
current->comm, current->pid);
|
||||
read_lock(&tasklist_lock);
|
||||
task = find_task_by_pid(va_arg(args, pid_t));
|
||||
task = find_task_by_vpid(va_arg(args, pid_t));
|
||||
error = -ESRCH;
|
||||
if (error)
|
||||
error = (task->run_list.next != NULL);
|
||||
|
@ -694,7 +694,7 @@ asmlinkage int irix_statfs(const char __user *path,
|
|||
if (error)
|
||||
goto out;
|
||||
|
||||
error = vfs_statfs(nd.dentry, &kbuf);
|
||||
error = vfs_statfs(nd.path.dentry, &kbuf);
|
||||
if (error)
|
||||
goto dput_and_out;
|
||||
|
||||
|
@ -711,7 +711,7 @@ asmlinkage int irix_statfs(const char __user *path,
|
|||
}
|
||||
|
||||
dput_and_out:
|
||||
path_release(&nd);
|
||||
path_put(&nd.path);
|
||||
out:
|
||||
return error;
|
||||
}
|
||||
|
@ -1360,7 +1360,7 @@ asmlinkage int irix_statvfs(char __user *fname, struct irix_statvfs __user *buf)
|
|||
error = user_path_walk(fname, &nd);
|
||||
if (error)
|
||||
goto out;
|
||||
error = vfs_statfs(nd.dentry, &kbuf);
|
||||
error = vfs_statfs(nd.path.dentry, &kbuf);
|
||||
if (error)
|
||||
goto dput_and_out;
|
||||
|
||||
|
@ -1385,7 +1385,7 @@ asmlinkage int irix_statvfs(char __user *fname, struct irix_statvfs __user *buf)
|
|||
error |= __put_user(0, &buf->f_fstr[i]);
|
||||
|
||||
dput_and_out:
|
||||
path_release(&nd);
|
||||
path_put(&nd.path);
|
||||
out:
|
||||
return error;
|
||||
}
|
||||
|
@ -1611,7 +1611,7 @@ asmlinkage int irix_statvfs64(char __user *fname, struct irix_statvfs64 __user *
|
|||
error = user_path_walk(fname, &nd);
|
||||
if (error)
|
||||
goto out;
|
||||
error = vfs_statfs(nd.dentry, &kbuf);
|
||||
error = vfs_statfs(nd.path.dentry, &kbuf);
|
||||
if (error)
|
||||
goto dput_and_out;
|
||||
|
||||
|
@ -1636,7 +1636,7 @@ asmlinkage int irix_statvfs64(char __user *fname, struct irix_statvfs64 __user *
|
|||
error |= __put_user(0, &buf->f_fstr[i]);
|
||||
|
||||
dput_and_out:
|
||||
path_release(&nd);
|
||||
path_put(&nd.path);
|
||||
out:
|
||||
return error;
|
||||
}
|
||||
|
|
|
@ -364,20 +364,23 @@ static inline int has_valid_asid(const struct mm_struct *mm)
|
|||
static inline void local_r4k_flush_cache_range(void * args)
|
||||
{
|
||||
struct vm_area_struct *vma = args;
|
||||
int exec = vma->vm_flags & VM_EXEC;
|
||||
|
||||
if (!(has_valid_asid(vma->vm_mm)))
|
||||
return;
|
||||
|
||||
r4k_blast_dcache();
|
||||
if (exec)
|
||||
r4k_blast_icache();
|
||||
}
|
||||
|
||||
static void r4k_flush_cache_range(struct vm_area_struct *vma,
|
||||
unsigned long start, unsigned long end)
|
||||
{
|
||||
if (!cpu_has_dc_aliases)
|
||||
return;
|
||||
int exec = vma->vm_flags & VM_EXEC;
|
||||
|
||||
r4k_on_each_cpu(local_r4k_flush_cache_range, vma, 1, 1);
|
||||
if (cpu_has_dc_aliases || (exec && !cpu_has_ic_fills_f_dc))
|
||||
r4k_on_each_cpu(local_r4k_flush_cache_range, vma, 1, 1);
|
||||
}
|
||||
|
||||
static inline void local_r4k_flush_cache_mm(void * args)
|
||||
|
|
|
@ -92,12 +92,17 @@ EXPORT_SYMBOL(__flush_dcache_page);
|
|||
|
||||
void __flush_anon_page(struct page *page, unsigned long vmaddr)
|
||||
{
|
||||
if (pages_do_alias((unsigned long)page_address(page), vmaddr)) {
|
||||
void *kaddr;
|
||||
unsigned long addr = (unsigned long) page_address(page);
|
||||
|
||||
kaddr = kmap_coherent(page, vmaddr);
|
||||
flush_data_cache_page((unsigned long)kaddr);
|
||||
kunmap_coherent();
|
||||
if (pages_do_alias(addr, vmaddr)) {
|
||||
if (page_mapped(page) && !Page_dcache_dirty(page)) {
|
||||
void *kaddr;
|
||||
|
||||
kaddr = kmap_coherent(page, vmaddr);
|
||||
flush_data_cache_page((unsigned long)kaddr);
|
||||
kunmap_coherent();
|
||||
} else
|
||||
flush_data_cache_page(addr);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -211,7 +211,8 @@ void copy_user_highpage(struct page *to, struct page *from,
|
|||
void *vfrom, *vto;
|
||||
|
||||
vto = kmap_atomic(to, KM_USER1);
|
||||
if (cpu_has_dc_aliases && page_mapped(from)) {
|
||||
if (cpu_has_dc_aliases &&
|
||||
page_mapped(from) && !Page_dcache_dirty(from)) {
|
||||
vfrom = kmap_coherent(from, vaddr);
|
||||
copy_page(vto, vfrom);
|
||||
kunmap_coherent();
|
||||
|
@ -234,7 +235,8 @@ void copy_to_user_page(struct vm_area_struct *vma,
|
|||
struct page *page, unsigned long vaddr, void *dst, const void *src,
|
||||
unsigned long len)
|
||||
{
|
||||
if (cpu_has_dc_aliases && page_mapped(page)) {
|
||||
if (cpu_has_dc_aliases &&
|
||||
page_mapped(page) && !Page_dcache_dirty(page)) {
|
||||
void *vto = kmap_coherent(page, vaddr) + (vaddr & ~PAGE_MASK);
|
||||
memcpy(vto, src, len);
|
||||
kunmap_coherent();
|
||||
|
@ -253,7 +255,8 @@ void copy_from_user_page(struct vm_area_struct *vma,
|
|||
struct page *page, unsigned long vaddr, void *dst, const void *src,
|
||||
unsigned long len)
|
||||
{
|
||||
if (cpu_has_dc_aliases && page_mapped(page)) {
|
||||
if (cpu_has_dc_aliases &&
|
||||
page_mapped(page) && !Page_dcache_dirty(page)) {
|
||||
void *vfrom = kmap_coherent(page, vaddr) + (vaddr & ~PAGE_MASK);
|
||||
memcpy(dst, vfrom, len);
|
||||
kunmap_coherent();
|
||||
|
|
|
@ -216,7 +216,7 @@ void sb1_dma_init(void)
|
|||
int i;
|
||||
|
||||
for (i = 0; i < DM_NUM_CHANNELS; i++) {
|
||||
const u64 base_val = CPHYSADDR(&page_descr[i]) |
|
||||
const u64 base_val = CPHYSADDR((unsigned long)&page_descr[i]) |
|
||||
V_DM_DSCR_BASE_RINGSZ(1);
|
||||
void *base_reg = IOADDR(A_DM_REGISTER(i, R_DM_DSCR_BASE));
|
||||
|
||||
|
@ -228,11 +228,11 @@ void sb1_dma_init(void)
|
|||
|
||||
void clear_page(void *page)
|
||||
{
|
||||
u64 to_phys = CPHYSADDR(page);
|
||||
u64 to_phys = CPHYSADDR((unsigned long)page);
|
||||
unsigned int cpu = smp_processor_id();
|
||||
|
||||
/* if the page is not in KSEG0, use old way */
|
||||
if ((long)KSEGX(page) != (long)CKSEG0)
|
||||
if ((long)KSEGX((unsigned long)page) != (long)CKSEG0)
|
||||
return clear_page_cpu(page);
|
||||
|
||||
page_descr[cpu].dscr_a = to_phys | M_DM_DSCRA_ZERO_MEM |
|
||||
|
@ -252,13 +252,13 @@ void clear_page(void *page)
|
|||
|
||||
void copy_page(void *to, void *from)
|
||||
{
|
||||
u64 from_phys = CPHYSADDR(from);
|
||||
u64 to_phys = CPHYSADDR(to);
|
||||
u64 from_phys = CPHYSADDR((unsigned long)from);
|
||||
u64 to_phys = CPHYSADDR((unsigned long)to);
|
||||
unsigned int cpu = smp_processor_id();
|
||||
|
||||
/* if any page is not in KSEG0, use old way */
|
||||
if ((long)KSEGX(to) != (long)CKSEG0
|
||||
|| (long)KSEGX(from) != (long)CKSEG0)
|
||||
if ((long)KSEGX((unsigned long)to) != (long)CKSEG0
|
||||
|| (long)KSEGX((unsigned long)from) != (long)CKSEG0)
|
||||
return copy_page_cpu(to, from);
|
||||
|
||||
page_descr[cpu].dscr_a = to_phys | M_DM_DSCRA_L2C_DEST |
|
||||
|
|
|
@ -177,8 +177,15 @@ static int pcibios_enable_resources(struct pci_dev *dev, int mask)
|
|||
continue;
|
||||
|
||||
r = &dev->resource[idx];
|
||||
if (!(r->flags & (IORESOURCE_IO | IORESOURCE_MEM)))
|
||||
continue;
|
||||
if ((idx == PCI_ROM_RESOURCE) &&
|
||||
(!(r->flags & IORESOURCE_ROM_ENABLE)))
|
||||
continue;
|
||||
if (!r->start && r->end) {
|
||||
printk(KERN_ERR "PCI: Device %s not available because of resource collisions\n", pci_name(dev));
|
||||
printk(KERN_ERR "PCI: Device %s not available "
|
||||
"because of resource collisions\n",
|
||||
pci_name(dev));
|
||||
return -EINVAL;
|
||||
}
|
||||
if (r->flags & IORESOURCE_IO)
|
||||
|
@ -186,10 +193,9 @@ static int pcibios_enable_resources(struct pci_dev *dev, int mask)
|
|||
if (r->flags & IORESOURCE_MEM)
|
||||
cmd |= PCI_COMMAND_MEMORY;
|
||||
}
|
||||
if (dev->resource[PCI_ROM_RESOURCE].start)
|
||||
cmd |= PCI_COMMAND_MEMORY;
|
||||
if (cmd != old_cmd) {
|
||||
printk("PCI: Enabling device %s (%04x -> %04x)\n", pci_name(dev), old_cmd, cmd);
|
||||
printk("PCI: Enabling device %s (%04x -> %04x)\n",
|
||||
pci_name(dev), old_cmd, cmd);
|
||||
pci_write_config_word(dev, PCI_COMMAND, cmd);
|
||||
}
|
||||
return 0;
|
||||
|
|
|
@ -110,7 +110,6 @@ static void __cpuinit bcm1480_smp_finish(void)
|
|||
|
||||
sb1480_clockevent_init();
|
||||
local_irq_enable();
|
||||
bcm1480_smp_finish();
|
||||
}
|
||||
|
||||
/*
|
||||
|
|
|
@ -63,6 +63,10 @@ config GENERIC_HARDIRQS
|
|||
config HOTPLUG_CPU
|
||||
def_bool n
|
||||
|
||||
config HZ
|
||||
int
|
||||
default 1000
|
||||
|
||||
mainmenu "Matsushita MN10300/AM33 Kernel Configuration"
|
||||
|
||||
source "init/Kconfig"
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
#
|
||||
# Automatically generated make config: don't edit
|
||||
# Linux kernel version: 2.6.24-rc2
|
||||
# Fri Nov 16 13:36:38 2007
|
||||
# Linux kernel version: 2.6.25-rc2
|
||||
# Tue Feb 19 18:52:24 2008
|
||||
#
|
||||
CONFIG_MN10300=y
|
||||
CONFIG_AM33=y
|
||||
|
@ -21,6 +21,7 @@ CONFIG_ARCH_HAS_ILOG2_U32=y
|
|||
# CONFIG_ARCH_SUPPORTS_AOUT is not set
|
||||
CONFIG_GENERIC_HARDIRQS=y
|
||||
# CONFIG_HOTPLUG_CPU is not set
|
||||
CONFIG_HZ=1000
|
||||
CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
|
||||
|
||||
#
|
||||
|
@ -38,15 +39,16 @@ CONFIG_SYSVIPC_SYSCTL=y
|
|||
CONFIG_BSD_PROCESS_ACCT=y
|
||||
# CONFIG_BSD_PROCESS_ACCT_V3 is not set
|
||||
# CONFIG_TASKSTATS is not set
|
||||
# CONFIG_USER_NS is not set
|
||||
# CONFIG_PID_NS is not set
|
||||
# CONFIG_AUDIT is not set
|
||||
# CONFIG_IKCONFIG is not set
|
||||
CONFIG_LOG_BUF_SHIFT=14
|
||||
# CONFIG_CGROUPS is not set
|
||||
# CONFIG_FAIR_GROUP_SCHED is not set
|
||||
# CONFIG_GROUP_SCHED is not set
|
||||
# CONFIG_USER_SCHED is not set
|
||||
# CONFIG_CGROUP_SCHED is not set
|
||||
# CONFIG_SYSFS_DEPRECATED is not set
|
||||
# CONFIG_RELAY is not set
|
||||
# CONFIG_NAMESPACES is not set
|
||||
# CONFIG_BLK_DEV_INITRD is not set
|
||||
# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
|
||||
CONFIG_SYSCTL=y
|
||||
|
@ -57,22 +59,33 @@ CONFIG_SYSCTL_SYSCALL=y
|
|||
CONFIG_PRINTK=y
|
||||
CONFIG_BUG=y
|
||||
CONFIG_ELF_CORE=y
|
||||
CONFIG_COMPAT_BRK=y
|
||||
CONFIG_BASE_FULL=y
|
||||
CONFIG_FUTEX=y
|
||||
CONFIG_ANON_INODES=y
|
||||
CONFIG_EPOLL=y
|
||||
CONFIG_SIGNALFD=y
|
||||
CONFIG_TIMERFD=y
|
||||
CONFIG_EVENTFD=y
|
||||
CONFIG_SHMEM=y
|
||||
# CONFIG_VM_EVENT_COUNTERS is not set
|
||||
CONFIG_SLAB=y
|
||||
# CONFIG_SLUB is not set
|
||||
# CONFIG_SLOB is not set
|
||||
CONFIG_PROFILING=y
|
||||
# CONFIG_MARKERS is not set
|
||||
CONFIG_OPROFILE=y
|
||||
# CONFIG_HAVE_OPROFILE is not set
|
||||
# CONFIG_HAVE_KPROBES is not set
|
||||
# CONFIG_PROC_PAGE_MONITOR is not set
|
||||
CONFIG_SLABINFO=y
|
||||
CONFIG_RT_MUTEXES=y
|
||||
# CONFIG_TINY_SHMEM is not set
|
||||
CONFIG_BASE_SMALL=0
|
||||
# CONFIG_MODULES is not set
|
||||
# CONFIG_BLOCK is not set
|
||||
CONFIG_CLASSIC_RCU=y
|
||||
# CONFIG_PREEMPT_RCU is not set
|
||||
|
||||
#
|
||||
# Matsushita MN10300 system setup
|
||||
|
@ -206,6 +219,7 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
|
|||
#
|
||||
# CONFIG_NET_PKTGEN is not set
|
||||
# CONFIG_HAMRADIO is not set
|
||||
# CONFIG_CAN is not set
|
||||
# CONFIG_IRDA is not set
|
||||
# CONFIG_BT is not set
|
||||
# CONFIG_AF_RXRPC is not set
|
||||
|
@ -311,6 +325,8 @@ CONFIG_MTD_PHYSMAP_BANKWIDTH=2
|
|||
# CONFIG_PARPORT is not set
|
||||
CONFIG_MISC_DEVICES=y
|
||||
# CONFIG_EEPROM_93CX6 is not set
|
||||
# CONFIG_ENCLOSURE_SERVICES is not set
|
||||
# CONFIG_HAVE_IDE is not set
|
||||
|
||||
#
|
||||
# SCSI device support
|
||||
|
@ -345,7 +361,6 @@ CONFIG_SMC91X=y
|
|||
# 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
|
||||
# CONFIG_NETPOLL is not set
|
||||
# CONFIG_NET_POLL_CONTROLLER is not set
|
||||
|
@ -405,6 +420,7 @@ CONFIG_RTC=y
|
|||
# CONFIG_W1 is not set
|
||||
# CONFIG_POWER_SUPPLY is not set
|
||||
# CONFIG_HWMON is not set
|
||||
# CONFIG_THERMAL is not set
|
||||
# CONFIG_WATCHDOG is not set
|
||||
|
||||
#
|
||||
|
@ -444,6 +460,7 @@ CONFIG_SSB_POSSIBLE=y
|
|||
# CONFIG_SOUND is not set
|
||||
# CONFIG_USB_SUPPORT is not set
|
||||
# CONFIG_MMC is not set
|
||||
# CONFIG_MEMSTICK is not set
|
||||
# CONFIG_NEW_LEDS is not set
|
||||
# CONFIG_RTC_CLASS is not set
|
||||
|
||||
|
@ -455,10 +472,10 @@ CONFIG_SSB_POSSIBLE=y
|
|||
#
|
||||
# File systems
|
||||
#
|
||||
CONFIG_DNOTIFY=y
|
||||
CONFIG_INOTIFY=y
|
||||
CONFIG_INOTIFY_USER=y
|
||||
# CONFIG_QUOTA is not set
|
||||
CONFIG_DNOTIFY=y
|
||||
# CONFIG_AUTOFS_FS is not set
|
||||
# CONFIG_AUTOFS4_FS is not set
|
||||
# CONFIG_FUSE_FS is not set
|
||||
|
@ -554,5 +571,3 @@ CONFIG_HAS_DMA=y
|
|||
#
|
||||
# Profiling support
|
||||
#
|
||||
CONFIG_PROFILING=y
|
||||
CONFIG_OPROFILE=y
|
||||
|
|
|
@ -196,6 +196,7 @@ int gdbstub_io_rx_char(unsigned char *_ch, int nonblock)
|
|||
try_again:
|
||||
/* pull chars out of the buffer */
|
||||
ix = gdbstub_rx_outp;
|
||||
barrier();
|
||||
if (ix == gdbstub_rx_inp) {
|
||||
if (nonblock)
|
||||
return -EAGAIN;
|
||||
|
@ -207,6 +208,7 @@ int gdbstub_io_rx_char(unsigned char *_ch, int nonblock)
|
|||
|
||||
ch = gdbstub_rx_buffer[ix++];
|
||||
st = gdbstub_rx_buffer[ix++];
|
||||
barrier();
|
||||
gdbstub_rx_outp = ix & (PAGE_SIZE - 1);
|
||||
|
||||
st &= SC01STR_RXF | SC01STR_RBF | SC01STR_FEF | SC01STR_PEF |
|
||||
|
|
|
@ -84,11 +84,13 @@ static irqreturn_t timer_interrupt(int irq, void *dev_id)
|
|||
/* advance the kernel's time tracking system */
|
||||
profile_tick(CPU_PROFILING);
|
||||
do_timer(1);
|
||||
update_process_times(user_mode(get_irq_regs()));
|
||||
check_rtc_time();
|
||||
}
|
||||
|
||||
write_sequnlock(&xtime_lock);
|
||||
|
||||
update_process_times(user_mode(get_irq_regs()));
|
||||
|
||||
return IRQ_HANDLED;
|
||||
}
|
||||
|
||||
|
|
|
@ -391,7 +391,7 @@ static asmlinkage void unsupported_syscall(struct pt_regs *regs,
|
|||
if (code == EXCEP_SYSCALL15 && !user_mode(regs)) {
|
||||
if (report_bug(regs->pc, regs) == BUG_TRAP_TYPE_BUG) {
|
||||
#ifdef CONFIG_GDBSTUB
|
||||
__gdbstub_bug_trap();
|
||||
gdbstub_intercept(regs, code);
|
||||
#endif
|
||||
}
|
||||
}
|
||||
|
|
|
@ -219,10 +219,10 @@ asmlinkage long hpux_statfs(const char __user *path,
|
|||
error = user_path_walk(path, &nd);
|
||||
if (!error) {
|
||||
struct hpux_statfs tmp;
|
||||
error = vfs_statfs_hpux(nd.dentry, &tmp);
|
||||
error = vfs_statfs_hpux(nd.path.dentry, &tmp);
|
||||
if (!error && copy_to_user(buf, &tmp, sizeof(tmp)))
|
||||
error = -EFAULT;
|
||||
path_release(&nd);
|
||||
path_put(&nd.path);
|
||||
}
|
||||
return error;
|
||||
}
|
||||
|
|
|
@ -442,10 +442,6 @@ config SECCOMP
|
|||
|
||||
If unsure, say Y. Only embedded should say N here.
|
||||
|
||||
config WANT_DEVICE_TREE
|
||||
bool
|
||||
default n
|
||||
|
||||
endmenu
|
||||
|
||||
config ISA_DMA_API
|
||||
|
|
|
@ -176,7 +176,7 @@ define archhelp
|
|||
@echo ' *_defconfig - Select default config from arch/$(ARCH)/configs'
|
||||
endef
|
||||
|
||||
install: vdso_install
|
||||
install:
|
||||
$(Q)$(MAKE) $(build)=$(boot) install
|
||||
|
||||
vdso_install:
|
||||
|
|
|
@ -35,10 +35,10 @@ endif
|
|||
|
||||
BOOTCFLAGS += -I$(obj) -I$(srctree)/$(obj) -I$(srctree)/$(src)/libfdt
|
||||
|
||||
$(obj)/4xx.o: BOOTCFLAGS += -mcpu=440
|
||||
$(obj)/ebony.o: BOOTCFLAGS += -mcpu=440
|
||||
$(obj)/cuboot-taishan.o: BOOTCFLAGS += -mcpu=440
|
||||
$(obj)/cuboot-katmai.o: BOOTCFLAGS += -mcpu=440
|
||||
$(obj)/4xx.o: BOOTCFLAGS += -mcpu=405
|
||||
$(obj)/ebony.o: BOOTCFLAGS += -mcpu=405
|
||||
$(obj)/cuboot-taishan.o: BOOTCFLAGS += -mcpu=405
|
||||
$(obj)/cuboot-katmai.o: BOOTCFLAGS += -mcpu=405
|
||||
$(obj)/treeboot-walnut.o: BOOTCFLAGS += -mcpu=405
|
||||
|
||||
|
||||
|
@ -147,6 +147,8 @@ HOSTCFLAGS += -I$(src)/dtc-src/ -I$(src)/libfdt/
|
|||
targets += dtc-src/dtc-parser.tab.c
|
||||
targets += dtc-src/dtc-lexer.lex.c
|
||||
|
||||
clean-files += dtc-src/dtc-parser.tab.h
|
||||
|
||||
ifdef DTC_GENPARSER
|
||||
BISON = bison
|
||||
FLEX = flex
|
||||
|
|
|
@ -185,7 +185,6 @@ UART3: serial@ef600600 {
|
|||
};
|
||||
|
||||
IIC0: i2c@ef600700 {
|
||||
device_type = "i2c";
|
||||
compatible = "ibm,iic-440ep", "ibm,iic-440gp", "ibm,iic";
|
||||
reg = <ef600700 14>;
|
||||
interrupt-parent = <&UIC0>;
|
||||
|
@ -193,7 +192,6 @@ IIC0: i2c@ef600700 {
|
|||
};
|
||||
|
||||
IIC1: i2c@ef600800 {
|
||||
device_type = "i2c";
|
||||
compatible = "ibm,iic-440ep", "ibm,iic-440gp", "ibm,iic";
|
||||
reg = <ef600800 14>;
|
||||
interrupt-parent = <&UIC0>;
|
||||
|
@ -201,7 +199,6 @@ IIC1: i2c@ef600800 {
|
|||
};
|
||||
|
||||
ZMII0: emac-zmii@ef600d00 {
|
||||
device_type = "zmii-interface";
|
||||
compatible = "ibm,zmii-440ep", "ibm,zmii-440gp", "ibm,zmii";
|
||||
reg = <ef600d00 c>;
|
||||
};
|
||||
|
|
|
@ -216,7 +216,6 @@ UART1: serial@40000300 {
|
|||
|
||||
IIC0: i2c@40000400 {
|
||||
/* FIXME */
|
||||
device_type = "i2c";
|
||||
compatible = "ibm,iic-440gp", "ibm,iic";
|
||||
reg = <40000400 14>;
|
||||
interrupt-parent = <&UIC0>;
|
||||
|
@ -224,7 +223,6 @@ IIC0: i2c@40000400 {
|
|||
};
|
||||
IIC1: i2c@40000500 {
|
||||
/* FIXME */
|
||||
device_type = "i2c";
|
||||
compatible = "ibm,iic-440gp", "ibm,iic";
|
||||
reg = <40000500 14>;
|
||||
interrupt-parent = <&UIC0>;
|
||||
|
|
|
@ -187,7 +187,6 @@ UART2: serial@10000600 {
|
|||
};
|
||||
|
||||
IIC0: i2c@10000400 {
|
||||
device_type = "i2c";
|
||||
compatible = "ibm,iic-440spe", "ibm,iic-440gp", "ibm,iic";
|
||||
reg = <10000400 14>;
|
||||
interrupt-parent = <&UIC0>;
|
||||
|
@ -195,7 +194,6 @@ IIC0: i2c@10000400 {
|
|||
};
|
||||
|
||||
IIC1: i2c@10000500 {
|
||||
device_type = "i2c";
|
||||
compatible = "ibm,iic-440spe", "ibm,iic-440gp", "ibm,iic";
|
||||
reg = <10000500 14>;
|
||||
interrupt-parent = <&UIC0>;
|
||||
|
|
|
@ -182,7 +182,6 @@ UART1: serial@ef600300 {
|
|||
};
|
||||
|
||||
IIC0: i2c@ef600400 {
|
||||
device_type = "i2c";
|
||||
compatible = "ibm,iic-405ex", "ibm,iic";
|
||||
reg = <ef600400 14>;
|
||||
interrupt-parent = <&UIC0>;
|
||||
|
@ -190,7 +189,6 @@ IIC0: i2c@ef600400 {
|
|||
};
|
||||
|
||||
IIC1: i2c@ef600500 {
|
||||
device_type = "i2c";
|
||||
compatible = "ibm,iic-405ex", "ibm,iic";
|
||||
reg = <ef600500 14>;
|
||||
interrupt-parent = <&UIC0>;
|
||||
|
@ -199,7 +197,6 @@ IIC1: i2c@ef600500 {
|
|||
|
||||
|
||||
RGMII0: emac-rgmii@ef600b00 {
|
||||
device_type = "rgmii-interface";
|
||||
compatible = "ibm,rgmii-405ex", "ibm,rgmii";
|
||||
reg = <ef600b00 104>;
|
||||
has-mdio;
|
||||
|
|
|
@ -182,7 +182,6 @@ UART1: serial@ef600300 {
|
|||
};
|
||||
|
||||
IIC0: i2c@ef600400 {
|
||||
device_type = "i2c";
|
||||
compatible = "ibm,iic-405ex", "ibm,iic";
|
||||
reg = <ef600400 14>;
|
||||
interrupt-parent = <&UIC0>;
|
||||
|
@ -190,7 +189,6 @@ IIC0: i2c@ef600400 {
|
|||
};
|
||||
|
||||
IIC1: i2c@ef600500 {
|
||||
device_type = "i2c";
|
||||
compatible = "ibm,iic-405ex", "ibm,iic";
|
||||
reg = <ef600500 14>;
|
||||
interrupt-parent = <&UIC0>;
|
||||
|
@ -199,7 +197,6 @@ IIC1: i2c@ef600500 {
|
|||
|
||||
|
||||
RGMII0: emac-rgmii@ef600b00 {
|
||||
device_type = "rgmii-interface";
|
||||
compatible = "ibm,rgmii-405ex", "ibm,rgmii";
|
||||
reg = <ef600b00 104>;
|
||||
has-mdio;
|
||||
|
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue