Merge commit 'v2.6.34-rc6' into x86/cpu
This commit is contained in:
commit
d7be0ce6af
|
@ -16,6 +16,15 @@
|
||||||
</address>
|
</address>
|
||||||
</affiliation>
|
</affiliation>
|
||||||
</author>
|
</author>
|
||||||
|
<author>
|
||||||
|
<firstname>William</firstname>
|
||||||
|
<surname>Cohen</surname>
|
||||||
|
<affiliation>
|
||||||
|
<address>
|
||||||
|
<email>wcohen@redhat.com</email>
|
||||||
|
</address>
|
||||||
|
</affiliation>
|
||||||
|
</author>
|
||||||
</authorgroup>
|
</authorgroup>
|
||||||
|
|
||||||
<legalnotice>
|
<legalnotice>
|
||||||
|
@ -91,4 +100,8 @@
|
||||||
!Iinclude/trace/events/signal.h
|
!Iinclude/trace/events/signal.h
|
||||||
</chapter>
|
</chapter>
|
||||||
|
|
||||||
|
<chapter id="block">
|
||||||
|
<title>Block IO</title>
|
||||||
|
!Iinclude/trace/events/block.h
|
||||||
|
</chapter>
|
||||||
</book>
|
</book>
|
||||||
|
|
|
@ -234,7 +234,7 @@ process is as follows:
|
||||||
Linus, usually the patches that have already been included in the
|
Linus, usually the patches that have already been included in the
|
||||||
-next kernel for a few weeks. The preferred way to submit big changes
|
-next kernel for a few weeks. The preferred way to submit big changes
|
||||||
is using git (the kernel's source management tool, more information
|
is using git (the kernel's source management tool, more information
|
||||||
can be found at http://git.or.cz/) but plain patches are also just
|
can be found at http://git-scm.com/) but plain patches are also just
|
||||||
fine.
|
fine.
|
||||||
- After two weeks a -rc1 kernel is released it is now possible to push
|
- After two weeks a -rc1 kernel is released it is now possible to push
|
||||||
only patches that do not include new features that could affect the
|
only patches that do not include new features that could affect the
|
||||||
|
|
|
@ -34,7 +34,7 @@ NMI handler.
|
||||||
cpu = smp_processor_id();
|
cpu = smp_processor_id();
|
||||||
++nmi_count(cpu);
|
++nmi_count(cpu);
|
||||||
|
|
||||||
if (!rcu_dereference(nmi_callback)(regs, cpu))
|
if (!rcu_dereference_sched(nmi_callback)(regs, cpu))
|
||||||
default_do_nmi(regs);
|
default_do_nmi(regs);
|
||||||
|
|
||||||
nmi_exit();
|
nmi_exit();
|
||||||
|
@ -47,12 +47,13 @@ function pointer. If this handler returns zero, do_nmi() invokes the
|
||||||
default_do_nmi() function to handle a machine-specific NMI. Finally,
|
default_do_nmi() function to handle a machine-specific NMI. Finally,
|
||||||
preemption is restored.
|
preemption is restored.
|
||||||
|
|
||||||
Strictly speaking, rcu_dereference() is not needed, since this code runs
|
In theory, rcu_dereference_sched() is not needed, since this code runs
|
||||||
only on i386, which does not need rcu_dereference() anyway. However,
|
only on i386, which in theory does not need rcu_dereference_sched()
|
||||||
it is a good documentation aid, particularly for anyone attempting to
|
anyway. However, in practice it is a good documentation aid, particularly
|
||||||
do something similar on Alpha.
|
for anyone attempting to do something similar on Alpha or on systems
|
||||||
|
with aggressive optimizing compilers.
|
||||||
|
|
||||||
Quick Quiz: Why might the rcu_dereference() be necessary on Alpha,
|
Quick Quiz: Why might the rcu_dereference_sched() be necessary on Alpha,
|
||||||
given that the code referenced by the pointer is read-only?
|
given that the code referenced by the pointer is read-only?
|
||||||
|
|
||||||
|
|
||||||
|
@ -99,17 +100,21 @@ invoke irq_enter() and irq_exit() on NMI entry and exit, respectively.
|
||||||
|
|
||||||
Answer to Quick Quiz
|
Answer to Quick Quiz
|
||||||
|
|
||||||
Why might the rcu_dereference() be necessary on Alpha, given
|
Why might the rcu_dereference_sched() be necessary on Alpha, given
|
||||||
that the code referenced by the pointer is read-only?
|
that the code referenced by the pointer is read-only?
|
||||||
|
|
||||||
Answer: The caller to set_nmi_callback() might well have
|
Answer: The caller to set_nmi_callback() might well have
|
||||||
initialized some data that is to be used by the
|
initialized some data that is to be used by the new NMI
|
||||||
new NMI handler. In this case, the rcu_dereference()
|
handler. In this case, the rcu_dereference_sched() would
|
||||||
would be needed, because otherwise a CPU that received
|
be needed, because otherwise a CPU that received an NMI
|
||||||
an NMI just after the new handler was set might see
|
just after the new handler was set might see the pointer
|
||||||
the pointer to the new NMI handler, but the old
|
to the new NMI handler, but the old pre-initialized
|
||||||
pre-initialized version of the handler's data.
|
version of the handler's data.
|
||||||
|
|
||||||
More important, the rcu_dereference() makes it clear
|
This same sad story can happen on other CPUs when using
|
||||||
to someone reading the code that the pointer is being
|
a compiler with aggressive pointer-value speculation
|
||||||
protected by RCU.
|
optimizations.
|
||||||
|
|
||||||
|
More important, the rcu_dereference_sched() makes it
|
||||||
|
clear to someone reading the code that the pointer is
|
||||||
|
being protected by RCU-sched.
|
||||||
|
|
|
@ -260,7 +260,8 @@ over a rather long period of time, but improvements are always welcome!
|
||||||
The reason that it is permissible to use RCU list-traversal
|
The reason that it is permissible to use RCU list-traversal
|
||||||
primitives when the update-side lock is held is that doing so
|
primitives when the update-side lock is held is that doing so
|
||||||
can be quite helpful in reducing code bloat when common code is
|
can be quite helpful in reducing code bloat when common code is
|
||||||
shared between readers and updaters.
|
shared between readers and updaters. Additional primitives
|
||||||
|
are provided for this case, as discussed in lockdep.txt.
|
||||||
|
|
||||||
10. Conversely, if you are in an RCU read-side critical section,
|
10. Conversely, if you are in an RCU read-side critical section,
|
||||||
and you don't hold the appropriate update-side lock, you -must-
|
and you don't hold the appropriate update-side lock, you -must-
|
||||||
|
@ -344,8 +345,8 @@ over a rather long period of time, but improvements are always welcome!
|
||||||
requiring SRCU's read-side deadlock immunity or low read-side
|
requiring SRCU's read-side deadlock immunity or low read-side
|
||||||
realtime latency.
|
realtime latency.
|
||||||
|
|
||||||
Note that, rcu_assign_pointer() and rcu_dereference() relate to
|
Note that, rcu_assign_pointer() relates to SRCU just as they do
|
||||||
SRCU just as they do to other forms of RCU.
|
to other forms of RCU.
|
||||||
|
|
||||||
15. The whole point of call_rcu(), synchronize_rcu(), and friends
|
15. The whole point of call_rcu(), synchronize_rcu(), and friends
|
||||||
is to wait until all pre-existing readers have finished before
|
is to wait until all pre-existing readers have finished before
|
||||||
|
|
|
@ -32,9 +32,20 @@ checking of rcu_dereference() primitives:
|
||||||
srcu_dereference(p, sp):
|
srcu_dereference(p, sp):
|
||||||
Check for SRCU read-side critical section.
|
Check for SRCU read-side critical section.
|
||||||
rcu_dereference_check(p, c):
|
rcu_dereference_check(p, c):
|
||||||
Use explicit check expression "c".
|
Use explicit check expression "c". This is useful in
|
||||||
|
code that is invoked by both readers and updaters.
|
||||||
rcu_dereference_raw(p)
|
rcu_dereference_raw(p)
|
||||||
Don't check. (Use sparingly, if at all.)
|
Don't check. (Use sparingly, if at all.)
|
||||||
|
rcu_dereference_protected(p, c):
|
||||||
|
Use explicit check expression "c", and omit all barriers
|
||||||
|
and compiler constraints. This is useful when the data
|
||||||
|
structure cannot change, for example, in code that is
|
||||||
|
invoked only by updaters.
|
||||||
|
rcu_access_pointer(p):
|
||||||
|
Return the value of the pointer and omit all barriers,
|
||||||
|
but retain the compiler constraints that prevent duplicating
|
||||||
|
or coalescsing. This is useful when when testing the
|
||||||
|
value of the pointer itself, for example, against NULL.
|
||||||
|
|
||||||
The rcu_dereference_check() check expression can be any boolean
|
The rcu_dereference_check() check expression can be any boolean
|
||||||
expression, but would normally include one of the rcu_read_lock_held()
|
expression, but would normally include one of the rcu_read_lock_held()
|
||||||
|
@ -59,7 +70,20 @@ In case (1), the pointer is picked up in an RCU-safe manner for vanilla
|
||||||
RCU read-side critical sections, in case (2) the ->file_lock prevents
|
RCU read-side critical sections, in case (2) the ->file_lock prevents
|
||||||
any change from taking place, and finally, in case (3) the current task
|
any change from taking place, and finally, in case (3) the current task
|
||||||
is the only task accessing the file_struct, again preventing any change
|
is the only task accessing the file_struct, again preventing any change
|
||||||
from taking place.
|
from taking place. If the above statement was invoked only from updater
|
||||||
|
code, it could instead be written as follows:
|
||||||
|
|
||||||
|
file = rcu_dereference_protected(fdt->fd[fd],
|
||||||
|
lockdep_is_held(&files->file_lock) ||
|
||||||
|
atomic_read(&files->count) == 1);
|
||||||
|
|
||||||
|
This would verify cases #2 and #3 above, and furthermore lockdep would
|
||||||
|
complain if this was used in an RCU read-side critical section unless one
|
||||||
|
of these two cases held. Because rcu_dereference_protected() omits all
|
||||||
|
barriers and compiler constraints, it generates better code than do the
|
||||||
|
other flavors of rcu_dereference(). On the other hand, it is illegal
|
||||||
|
to use rcu_dereference_protected() if either the RCU-protected pointer
|
||||||
|
or the RCU-protected data that it points to can change concurrently.
|
||||||
|
|
||||||
There are currently only "universal" versions of the rcu_assign_pointer()
|
There are currently only "universal" versions of the rcu_assign_pointer()
|
||||||
and RCU list-/tree-traversal primitives, which do not (yet) check for
|
and RCU list-/tree-traversal primitives, which do not (yet) check for
|
||||||
|
|
|
@ -840,6 +840,12 @@ SRCU: Initialization/cleanup
|
||||||
init_srcu_struct
|
init_srcu_struct
|
||||||
cleanup_srcu_struct
|
cleanup_srcu_struct
|
||||||
|
|
||||||
|
All: lockdep-checked RCU-protected pointer access
|
||||||
|
|
||||||
|
rcu_dereference_check
|
||||||
|
rcu_dereference_protected
|
||||||
|
rcu_access_pointer
|
||||||
|
|
||||||
See the comment headers in the source code (or the docbook generated
|
See the comment headers in the source code (or the docbook generated
|
||||||
from them) for more information.
|
from them) for more information.
|
||||||
|
|
||||||
|
|
|
@ -1162,8 +1162,8 @@ where a driver received a request ala this before:
|
||||||
|
|
||||||
As mentioned, there is no virtual mapping of a bio. For DMA, this is
|
As mentioned, there is no virtual mapping of a bio. For DMA, this is
|
||||||
not a problem as the driver probably never will need a virtual mapping.
|
not a problem as the driver probably never will need a virtual mapping.
|
||||||
Instead it needs a bus mapping (pci_map_page for a single segment or
|
Instead it needs a bus mapping (dma_map_page for a single segment or
|
||||||
use blk_rq_map_sg for scatter gather) to be able to ship it to the driver. For
|
use dma_map_sg for scatter gather) to be able to ship it to the driver. For
|
||||||
PIO drivers (or drivers that need to revert to PIO transfer once in a
|
PIO drivers (or drivers that need to revert to PIO transfer once in a
|
||||||
while (IDE for example)), where the CPU is doing the actual data
|
while (IDE for example)), where the CPU is doing the actual data
|
||||||
transfer a virtual mapping is needed. If the driver supports highmem I/O,
|
transfer a virtual mapping is needed. If the driver supports highmem I/O,
|
||||||
|
|
|
@ -235,8 +235,7 @@ containing the following files describing that cgroup:
|
||||||
- cgroup.procs: list of tgids in the cgroup. This list is not
|
- cgroup.procs: list of tgids in the cgroup. This list is not
|
||||||
guaranteed to be sorted or free of duplicate tgids, and userspace
|
guaranteed to be sorted or free of duplicate tgids, and userspace
|
||||||
should sort/uniquify the list if this property is required.
|
should sort/uniquify the list if this property is required.
|
||||||
Writing a tgid into this file moves all threads with that tgid into
|
This is a read-only file, for now.
|
||||||
this cgroup.
|
|
||||||
- notify_on_release flag: run the release agent on exit?
|
- notify_on_release flag: run the release agent on exit?
|
||||||
- release_agent: the path to use for release notifications (this file
|
- release_agent: the path to use for release notifications (this file
|
||||||
exists in the top cgroup only)
|
exists in the top cgroup only)
|
||||||
|
|
|
@ -25,6 +25,7 @@
|
||||||
#include <linux/module.h>
|
#include <linux/module.h>
|
||||||
#include <linux/moduleparam.h>
|
#include <linux/moduleparam.h>
|
||||||
#include <linux/skbuff.h>
|
#include <linux/skbuff.h>
|
||||||
|
#include <linux/slab.h>
|
||||||
#include <linux/timer.h>
|
#include <linux/timer.h>
|
||||||
|
|
||||||
#include <linux/connector.h>
|
#include <linux/connector.h>
|
||||||
|
|
|
@ -1,9 +1,9 @@
|
||||||
|
|
||||||
What is imacfb?
|
What is efifb?
|
||||||
===============
|
===============
|
||||||
|
|
||||||
This is a generic EFI platform driver for Intel based Apple computers.
|
This is a generic EFI platform driver for Intel based Apple computers.
|
||||||
Imacfb is only for EFI booted Intel Macs.
|
efifb is only for EFI booted Intel Macs.
|
||||||
|
|
||||||
Supported Hardware
|
Supported Hardware
|
||||||
==================
|
==================
|
||||||
|
@ -16,16 +16,16 @@ MacMini
|
||||||
How to use it?
|
How to use it?
|
||||||
==============
|
==============
|
||||||
|
|
||||||
Imacfb does not have any kind of autodetection of your machine.
|
efifb does not have any kind of autodetection of your machine.
|
||||||
You have to add the following kernel parameters in your elilo.conf:
|
You have to add the following kernel parameters in your elilo.conf:
|
||||||
Macbook :
|
Macbook :
|
||||||
video=imacfb:macbook
|
video=efifb:macbook
|
||||||
MacMini :
|
MacMini :
|
||||||
video=imacfb:mini
|
video=efifb:mini
|
||||||
Macbook Pro 15", iMac 17" :
|
Macbook Pro 15", iMac 17" :
|
||||||
video=imacfb:i17
|
video=efifb:i17
|
||||||
Macbook Pro 17", iMac 20" :
|
Macbook Pro 17", iMac 20" :
|
||||||
video=imacfb:i20
|
video=efifb:i20
|
||||||
|
|
||||||
--
|
--
|
||||||
Edgar Hucek <gimli@dark-green.com>
|
Edgar Hucek <gimli@dark-green.com>
|
|
@ -37,6 +37,15 @@ For Plan 9 From User Space applications (http://swtch.com/plan9)
|
||||||
|
|
||||||
mount -t 9p `namespace`/acme /mnt/9 -o trans=unix,uname=$USER
|
mount -t 9p `namespace`/acme /mnt/9 -o trans=unix,uname=$USER
|
||||||
|
|
||||||
|
For server running on QEMU host with virtio transport:
|
||||||
|
|
||||||
|
mount -t 9p -o trans=virtio <mount_tag> /mnt/9
|
||||||
|
|
||||||
|
where mount_tag is the tag associated by the server to each of the exported
|
||||||
|
mount points. Each 9P export is seen by the client as a virtio device with an
|
||||||
|
associated "mount_tag" property. Available mount tags can be
|
||||||
|
seen by reading /sys/bus/virtio/drivers/9pnet_virtio/virtio<n>/mount_tag files.
|
||||||
|
|
||||||
OPTIONS
|
OPTIONS
|
||||||
=======
|
=======
|
||||||
|
|
||||||
|
@ -47,7 +56,7 @@ OPTIONS
|
||||||
fd - used passed file descriptors for connection
|
fd - used passed file descriptors for connection
|
||||||
(see rfdno and wfdno)
|
(see rfdno and wfdno)
|
||||||
virtio - connect to the next virtio channel available
|
virtio - connect to the next virtio channel available
|
||||||
(from lguest or KVM with trans_virtio module)
|
(from QEMU with trans_virtio module)
|
||||||
rdma - connect to a specified RDMA channel
|
rdma - connect to a specified RDMA channel
|
||||||
|
|
||||||
uname=name user name to attempt mount as on the remote server. The
|
uname=name user name to attempt mount as on the remote server. The
|
||||||
|
@ -85,7 +94,12 @@ OPTIONS
|
||||||
|
|
||||||
port=n port to connect to on the remote server
|
port=n port to connect to on the remote server
|
||||||
|
|
||||||
noextend force legacy mode (no 9p2000.u semantics)
|
noextend force legacy mode (no 9p2000.u or 9p2000.L semantics)
|
||||||
|
|
||||||
|
version=name Select 9P protocol version. Valid options are:
|
||||||
|
9p2000 - Legacy mode (same as noextend)
|
||||||
|
9p2000.u - Use 9P2000.u protocol
|
||||||
|
9p2000.L - Use 9P2000.L protocol
|
||||||
|
|
||||||
dfltuid attempt to mount as a particular uid
|
dfltuid attempt to mount as a particular uid
|
||||||
|
|
||||||
|
|
|
@ -68,6 +68,22 @@ like:
|
||||||
SYN_MT_REPORT
|
SYN_MT_REPORT
|
||||||
SYN_REPORT
|
SYN_REPORT
|
||||||
|
|
||||||
|
Here is the sequence after lifting one of the fingers:
|
||||||
|
|
||||||
|
ABS_MT_POSITION_X
|
||||||
|
ABS_MT_POSITION_Y
|
||||||
|
SYN_MT_REPORT
|
||||||
|
SYN_REPORT
|
||||||
|
|
||||||
|
And here is the sequence after lifting the remaining finger:
|
||||||
|
|
||||||
|
SYN_MT_REPORT
|
||||||
|
SYN_REPORT
|
||||||
|
|
||||||
|
If the driver reports one of BTN_TOUCH or ABS_PRESSURE in addition to the
|
||||||
|
ABS_MT events, the last SYN_MT_REPORT event may be omitted. Otherwise, the
|
||||||
|
last SYN_REPORT will be dropped by the input core, resulting in no
|
||||||
|
zero-finger event reaching userland.
|
||||||
|
|
||||||
Event Semantics
|
Event Semantics
|
||||||
---------------
|
---------------
|
||||||
|
@ -217,11 +233,6 @@ where examples can be found.
|
||||||
difference between the contact position and the approaching tool position
|
difference between the contact position and the approaching tool position
|
||||||
could be used to derive tilt.
|
could be used to derive tilt.
|
||||||
[2] The list can of course be extended.
|
[2] The list can of course be extended.
|
||||||
[3] The multi-touch X driver is currently in the prototyping stage. At the
|
[3] Multitouch X driver project: http://bitmath.org/code/multitouch/.
|
||||||
time of writing (April 2009), the MT protocol is not yet merged, and the
|
|
||||||
prototype implements finger matching, basic mouse support and two-finger
|
|
||||||
scrolling. The project aims at improving the quality of current multi-touch
|
|
||||||
functionality available in the Synaptics X driver, and in addition
|
|
||||||
implement more advanced gestures.
|
|
||||||
[4] See the section on event computation.
|
[4] See the section on event computation.
|
||||||
[5] See the section on finger tracking.
|
[5] See the section on finger tracking.
|
||||||
|
|
|
@ -320,11 +320,6 @@ and is between 256 and 4096 characters. It is defined in the file
|
||||||
amd_iommu= [HW,X86-84]
|
amd_iommu= [HW,X86-84]
|
||||||
Pass parameters to the AMD IOMMU driver in the system.
|
Pass parameters to the AMD IOMMU driver in the system.
|
||||||
Possible values are:
|
Possible values are:
|
||||||
isolate - enable device isolation (each device, as far
|
|
||||||
as possible, will get its own protection
|
|
||||||
domain) [default]
|
|
||||||
share - put every device behind one IOMMU into the
|
|
||||||
same protection domain
|
|
||||||
fullflush - enable flushing of IO/TLB entries when
|
fullflush - enable flushing of IO/TLB entries when
|
||||||
they are unmapped. Otherwise they are
|
they are unmapped. Otherwise they are
|
||||||
flushed before they will be reused, which
|
flushed before they will be reused, which
|
||||||
|
@ -1199,7 +1194,7 @@ and is between 256 and 4096 characters. It is defined in the file
|
||||||
|
|
||||||
libata.force= [LIBATA] Force configurations. The format is comma
|
libata.force= [LIBATA] Force configurations. The format is comma
|
||||||
separated list of "[ID:]VAL" where ID is
|
separated list of "[ID:]VAL" where ID is
|
||||||
PORT[:DEVICE]. PORT and DEVICE are decimal numbers
|
PORT[.DEVICE]. PORT and DEVICE are decimal numbers
|
||||||
matching port, link or device. Basically, it matches
|
matching port, link or device. Basically, it matches
|
||||||
the ATA ID string printed on console by libata. If
|
the ATA ID string printed on console by libata. If
|
||||||
the whole ID part is omitted, the last PORT and DEVICE
|
the whole ID part is omitted, the last PORT and DEVICE
|
||||||
|
|
|
@ -0,0 +1,143 @@
|
||||||
|
STMicroelectronics 10/100/1000 Synopsys Ethernet driver
|
||||||
|
|
||||||
|
Copyright (C) 2007-2010 STMicroelectronics Ltd
|
||||||
|
Author: Giuseppe Cavallaro <peppe.cavallaro@st.com>
|
||||||
|
|
||||||
|
This is the driver for the MAC 10/100/1000 on-chip Ethernet controllers
|
||||||
|
(Synopsys IP blocks); it has been fully tested on STLinux platforms.
|
||||||
|
|
||||||
|
Currently this network device driver is for all STM embedded MAC/GMAC
|
||||||
|
(7xxx SoCs).
|
||||||
|
|
||||||
|
DWC Ether MAC 10/100/1000 Universal version 3.41a and DWC Ether MAC 10/100
|
||||||
|
Universal version 4.0 have been used for developing the first code
|
||||||
|
implementation.
|
||||||
|
|
||||||
|
Please, for more information also visit: www.stlinux.com
|
||||||
|
|
||||||
|
1) Kernel Configuration
|
||||||
|
The kernel configuration option is STMMAC_ETH:
|
||||||
|
Device Drivers ---> Network device support ---> Ethernet (1000 Mbit) --->
|
||||||
|
STMicroelectronics 10/100/1000 Ethernet driver (STMMAC_ETH)
|
||||||
|
|
||||||
|
2) Driver parameters list:
|
||||||
|
debug: message level (0: no output, 16: all);
|
||||||
|
phyaddr: to manually provide the physical address to the PHY device;
|
||||||
|
dma_rxsize: DMA rx ring size;
|
||||||
|
dma_txsize: DMA tx ring size;
|
||||||
|
buf_sz: DMA buffer size;
|
||||||
|
tc: control the HW FIFO threshold;
|
||||||
|
tx_coe: Enable/Disable Tx Checksum Offload engine;
|
||||||
|
watchdog: transmit timeout (in milliseconds);
|
||||||
|
flow_ctrl: Flow control ability [on/off];
|
||||||
|
pause: Flow Control Pause Time;
|
||||||
|
tmrate: timer period (only if timer optimisation is configured).
|
||||||
|
|
||||||
|
3) Command line options
|
||||||
|
Driver parameters can be also passed in command line by using:
|
||||||
|
stmmaceth=dma_rxsize:128,dma_txsize:512
|
||||||
|
|
||||||
|
4) Driver information and notes
|
||||||
|
|
||||||
|
4.1) Transmit process
|
||||||
|
The xmit method is invoked when the kernel needs to transmit a packet; it sets
|
||||||
|
the descriptors in the ring and informs the DMA engine that there is a packet
|
||||||
|
ready to be transmitted.
|
||||||
|
Once the controller has finished transmitting the packet, an interrupt is
|
||||||
|
triggered; So the driver will be able to release the socket buffers.
|
||||||
|
By default, the driver sets the NETIF_F_SG bit in the features field of the
|
||||||
|
net_device structure enabling the scatter/gather feature.
|
||||||
|
|
||||||
|
4.2) Receive process
|
||||||
|
When one or more packets are received, an interrupt happens. The interrupts
|
||||||
|
are not queued so the driver has to scan all the descriptors in the ring during
|
||||||
|
the receive process.
|
||||||
|
This is based on NAPI so the interrupt handler signals only if there is work to be
|
||||||
|
done, and it exits.
|
||||||
|
Then the poll method will be scheduled at some future point.
|
||||||
|
The incoming packets are stored, by the DMA, in a list of pre-allocated socket
|
||||||
|
buffers in order to avoid the memcpy (Zero-copy).
|
||||||
|
|
||||||
|
4.3) Timer-Driver Interrupt
|
||||||
|
Instead of having the device that asynchronously notifies the frame receptions, the
|
||||||
|
driver configures a timer to generate an interrupt at regular intervals.
|
||||||
|
Based on the granularity of the timer, the frames that are received by the device
|
||||||
|
will experience different levels of latency. Some NICs have dedicated timer
|
||||||
|
device to perform this task. STMMAC can use either the RTC device or the TMU
|
||||||
|
channel 2 on STLinux platforms.
|
||||||
|
The timers frequency can be passed to the driver as parameter; when change it,
|
||||||
|
take care of both hardware capability and network stability/performance impact.
|
||||||
|
Several performance tests on STM platforms showed this optimisation allows to spare
|
||||||
|
the CPU while having the maximum throughput.
|
||||||
|
|
||||||
|
4.4) WOL
|
||||||
|
Wake up on Lan feature through Magic Frame is only supported for the GMAC
|
||||||
|
core.
|
||||||
|
|
||||||
|
4.5) DMA descriptors
|
||||||
|
Driver handles both normal and enhanced descriptors. The latter has been only
|
||||||
|
tested on DWC Ether MAC 10/100/1000 Universal version 3.41a.
|
||||||
|
|
||||||
|
4.6) Ethtool support
|
||||||
|
Ethtool is supported. Driver statistics and internal errors can be taken using:
|
||||||
|
ethtool -S ethX command. It is possible to dump registers etc.
|
||||||
|
|
||||||
|
4.7) Jumbo and Segmentation Offloading
|
||||||
|
Jumbo frames are supported and tested for the GMAC.
|
||||||
|
The GSO has been also added but it's performed in software.
|
||||||
|
LRO is not supported.
|
||||||
|
|
||||||
|
4.8) Physical
|
||||||
|
The driver is compatible with PAL to work with PHY and GPHY devices.
|
||||||
|
|
||||||
|
4.9) Platform information
|
||||||
|
Several information came from the platform; please refer to the
|
||||||
|
driver's Header file in include/linux directory.
|
||||||
|
|
||||||
|
struct plat_stmmacenet_data {
|
||||||
|
int bus_id;
|
||||||
|
int pbl;
|
||||||
|
int has_gmac;
|
||||||
|
void (*fix_mac_speed)(void *priv, unsigned int speed);
|
||||||
|
void (*bus_setup)(unsigned long ioaddr);
|
||||||
|
#ifdef CONFIG_STM_DRIVERS
|
||||||
|
struct stm_pad_config *pad_config;
|
||||||
|
#endif
|
||||||
|
void *bsp_priv;
|
||||||
|
};
|
||||||
|
|
||||||
|
Where:
|
||||||
|
- pbl (Programmable Burst Length) is maximum number of
|
||||||
|
beats to be transferred in one DMA transaction.
|
||||||
|
GMAC also enables the 4xPBL by default.
|
||||||
|
- fix_mac_speed and bus_setup are used to configure internal target
|
||||||
|
registers (on STM platforms);
|
||||||
|
- has_gmac: GMAC core is on board (get it at run-time in the next step);
|
||||||
|
- bus_id: bus identifier.
|
||||||
|
|
||||||
|
struct plat_stmmacphy_data {
|
||||||
|
int bus_id;
|
||||||
|
int phy_addr;
|
||||||
|
unsigned int phy_mask;
|
||||||
|
int interface;
|
||||||
|
int (*phy_reset)(void *priv);
|
||||||
|
void *priv;
|
||||||
|
};
|
||||||
|
|
||||||
|
Where:
|
||||||
|
- bus_id: bus identifier;
|
||||||
|
- phy_addr: physical address used for the attached phy device;
|
||||||
|
set it to -1 to get it at run-time;
|
||||||
|
- interface: physical MII interface mode;
|
||||||
|
- phy_reset: hook to reset HW function.
|
||||||
|
|
||||||
|
TODO:
|
||||||
|
- Continue to make the driver more generic and suitable for other Synopsys
|
||||||
|
Ethernet controllers used on other architectures (i.e. ARM).
|
||||||
|
- 10G controllers are not supported.
|
||||||
|
- MAC uses Normal descriptors and GMAC uses enhanced ones.
|
||||||
|
This is a limit that should be reviewed. MAC could want to
|
||||||
|
use the enhanced structure.
|
||||||
|
- Checksumming: Rx/Tx csum is done in HW in case of GMAC only.
|
||||||
|
- Review the timer optimisation code to use an embedded device that seems to be
|
||||||
|
available in new chip generations.
|
|
@ -41,11 +41,12 @@ SOF_TIMESTAMPING_SOFTWARE: return system time stamp generated in
|
||||||
SOF_TIMESTAMPING_TX/RX determine how time stamps are generated.
|
SOF_TIMESTAMPING_TX/RX determine how time stamps are generated.
|
||||||
SOF_TIMESTAMPING_RAW/SYS determine how they are reported in the
|
SOF_TIMESTAMPING_RAW/SYS determine how they are reported in the
|
||||||
following control message:
|
following control message:
|
||||||
struct scm_timestamping {
|
|
||||||
struct timespec systime;
|
struct scm_timestamping {
|
||||||
struct timespec hwtimetrans;
|
struct timespec systime;
|
||||||
struct timespec hwtimeraw;
|
struct timespec hwtimetrans;
|
||||||
};
|
struct timespec hwtimeraw;
|
||||||
|
};
|
||||||
|
|
||||||
recvmsg() can be used to get this control message for regular incoming
|
recvmsg() can be used to get this control message for regular incoming
|
||||||
packets. For send time stamps the outgoing packet is looped back to
|
packets. For send time stamps the outgoing packet is looped back to
|
||||||
|
@ -87,12 +88,13 @@ by the network device and will be empty without that support.
|
||||||
SIOCSHWTSTAMP:
|
SIOCSHWTSTAMP:
|
||||||
|
|
||||||
Hardware time stamping must also be initialized for each device driver
|
Hardware time stamping must also be initialized for each device driver
|
||||||
that is expected to do hardware time stamping. The parameter is:
|
that is expected to do hardware time stamping. The parameter is defined in
|
||||||
|
/include/linux/net_tstamp.h as:
|
||||||
|
|
||||||
struct hwtstamp_config {
|
struct hwtstamp_config {
|
||||||
int flags; /* no flags defined right now, must be zero */
|
int flags; /* no flags defined right now, must be zero */
|
||||||
int tx_type; /* HWTSTAMP_TX_* */
|
int tx_type; /* HWTSTAMP_TX_* */
|
||||||
int rx_filter; /* HWTSTAMP_FILTER_* */
|
int rx_filter; /* HWTSTAMP_FILTER_* */
|
||||||
};
|
};
|
||||||
|
|
||||||
Desired behavior is passed into the kernel and to a specific device by
|
Desired behavior is passed into the kernel and to a specific device by
|
||||||
|
@ -139,42 +141,56 @@ enum {
|
||||||
/* time stamp any incoming packet */
|
/* time stamp any incoming packet */
|
||||||
HWTSTAMP_FILTER_ALL,
|
HWTSTAMP_FILTER_ALL,
|
||||||
|
|
||||||
/* return value: time stamp all packets requested plus some others */
|
/* return value: time stamp all packets requested plus some others */
|
||||||
HWTSTAMP_FILTER_SOME,
|
HWTSTAMP_FILTER_SOME,
|
||||||
|
|
||||||
/* PTP v1, UDP, any kind of event packet */
|
/* PTP v1, UDP, any kind of event packet */
|
||||||
HWTSTAMP_FILTER_PTP_V1_L4_EVENT,
|
HWTSTAMP_FILTER_PTP_V1_L4_EVENT,
|
||||||
|
|
||||||
...
|
/* for the complete list of values, please check
|
||||||
|
* the include file /include/linux/net_tstamp.h
|
||||||
|
*/
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
DEVICE IMPLEMENTATION
|
DEVICE IMPLEMENTATION
|
||||||
|
|
||||||
A driver which supports hardware time stamping must support the
|
A driver which supports hardware time stamping must support the
|
||||||
SIOCSHWTSTAMP ioctl. Time stamps for received packets must be stored
|
SIOCSHWTSTAMP ioctl and update the supplied struct hwtstamp_config with
|
||||||
in the skb with skb_hwtstamp_set().
|
the actual values as described in the section on SIOCSHWTSTAMP.
|
||||||
|
|
||||||
|
Time stamps for received packets must be stored in the skb. To get a pointer
|
||||||
|
to the shared time stamp structure of the skb call skb_hwtstamps(). Then
|
||||||
|
set the time stamps in the structure:
|
||||||
|
|
||||||
|
struct skb_shared_hwtstamps {
|
||||||
|
/* hardware time stamp transformed into duration
|
||||||
|
* since arbitrary point in time
|
||||||
|
*/
|
||||||
|
ktime_t hwtstamp;
|
||||||
|
ktime_t syststamp; /* hwtstamp transformed to system time base */
|
||||||
|
};
|
||||||
|
|
||||||
Time stamps for outgoing packets are to be generated as follows:
|
Time stamps for outgoing packets are to be generated as follows:
|
||||||
- In hard_start_xmit(), check if skb_hwtstamp_check_tx_hardware()
|
- In hard_start_xmit(), check if skb_tx(skb)->hardware is set no-zero.
|
||||||
returns non-zero. If yes, then the driver is expected
|
If yes, then the driver is expected to do hardware time stamping.
|
||||||
to do hardware time stamping.
|
|
||||||
- If this is possible for the skb and requested, then declare
|
- If this is possible for the skb and requested, then declare
|
||||||
that the driver is doing the time stamping by calling
|
that the driver is doing the time stamping by setting the field
|
||||||
skb_hwtstamp_tx_in_progress(). A driver not supporting
|
skb_tx(skb)->in_progress non-zero. You might want to keep a pointer
|
||||||
hardware time stamping doesn't do that. A driver must never
|
to the associated skb for the next step and not free the skb. A driver
|
||||||
touch sk_buff::tstamp! It is used to store how time stamping
|
not supporting hardware time stamping doesn't do that. A driver must
|
||||||
for an outgoing packets is to be done.
|
never touch sk_buff::tstamp! It is used to store software generated
|
||||||
|
time stamps by the network subsystem.
|
||||||
- As soon as the driver has sent the packet and/or obtained a
|
- As soon as the driver has sent the packet and/or obtained a
|
||||||
hardware time stamp for it, it passes the time stamp back by
|
hardware time stamp for it, it passes the time stamp back by
|
||||||
calling skb_hwtstamp_tx() with the original skb, the raw
|
calling skb_hwtstamp_tx() with the original skb, the raw
|
||||||
hardware time stamp and a handle to the device (necessary
|
hardware time stamp. skb_hwtstamp_tx() clones the original skb and
|
||||||
to convert the hardware time stamp to system time). If obtaining
|
adds the timestamps, therefore the original skb has to be freed now.
|
||||||
the hardware time stamp somehow fails, then the driver should
|
If obtaining the hardware time stamp somehow fails, then the driver
|
||||||
not fall back to software time stamping. The rationale is that
|
should not fall back to software time stamping. The rationale is that
|
||||||
this would occur at a later time in the processing pipeline
|
this would occur at a later time in the processing pipeline than other
|
||||||
than other software time stamping and therefore could lead
|
software time stamping and therefore could lead to unexpected deltas
|
||||||
to unexpected deltas between time stamps.
|
between time stamps.
|
||||||
- If the driver did not call skb_hwtstamp_tx_in_progress(), then
|
- If the driver did not call set skb_tx(skb)->in_progress, then
|
||||||
dev_hard_start_xmit() checks whether software time stamping
|
dev_hard_start_xmit() checks whether software time stamping
|
||||||
is wanted as fallback and potentially generates the time stamp.
|
is wanted as fallback and potentially generates the time stamp.
|
||||||
|
|
|
@ -21,6 +21,15 @@ Required properties:
|
||||||
- fsl,qe-num-snums: define how many serial number(SNUM) the QE can use for the
|
- fsl,qe-num-snums: define how many serial number(SNUM) the QE can use for the
|
||||||
threads.
|
threads.
|
||||||
|
|
||||||
|
Optional properties:
|
||||||
|
- fsl,firmware-phandle:
|
||||||
|
Usage: required only if there is no fsl,qe-firmware child node
|
||||||
|
Value type: <phandle>
|
||||||
|
Definition: Points to a firmware node (see "QE Firmware Node" below)
|
||||||
|
that contains the firmware that should be uploaded for this QE.
|
||||||
|
The compatible property for the firmware node should say,
|
||||||
|
"fsl,qe-firmware".
|
||||||
|
|
||||||
Recommended properties
|
Recommended properties
|
||||||
- brg-frequency : the internal clock source frequency for baud-rate
|
- brg-frequency : the internal clock source frequency for baud-rate
|
||||||
generators in Hz.
|
generators in Hz.
|
||||||
|
@ -59,3 +68,48 @@ Example:
|
||||||
reg = <0 c000>;
|
reg = <0 c000>;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
* QE Firmware Node
|
||||||
|
|
||||||
|
This node defines a firmware binary that is embedded in the device tree, for
|
||||||
|
the purpose of passing the firmware from bootloader to the kernel, or from
|
||||||
|
the hypervisor to the guest.
|
||||||
|
|
||||||
|
The firmware node itself contains the firmware binary contents, a compatible
|
||||||
|
property, and any firmware-specific properties. The node should be placed
|
||||||
|
inside a QE node that needs it. Doing so eliminates the need for a
|
||||||
|
fsl,firmware-phandle property. Other QE nodes that need the same firmware
|
||||||
|
should define an fsl,firmware-phandle property that points to the firmware node
|
||||||
|
in the first QE node.
|
||||||
|
|
||||||
|
The fsl,firmware property can be specified in the DTS (possibly using incbin)
|
||||||
|
or can be inserted by the boot loader at boot time.
|
||||||
|
|
||||||
|
Required properties:
|
||||||
|
- compatible
|
||||||
|
Usage: required
|
||||||
|
Value type: <string>
|
||||||
|
Definition: A standard property. Specify a string that indicates what
|
||||||
|
kind of firmware it is. For QE, this should be "fsl,qe-firmware".
|
||||||
|
|
||||||
|
- fsl,firmware
|
||||||
|
Usage: required
|
||||||
|
Value type: <prop-encoded-array>, encoded as an array of bytes
|
||||||
|
Definition: A standard property. This property contains the firmware
|
||||||
|
binary "blob".
|
||||||
|
|
||||||
|
Example:
|
||||||
|
qe1@e0080000 {
|
||||||
|
compatible = "fsl,qe";
|
||||||
|
qe_firmware:qe-firmware {
|
||||||
|
compatible = "fsl,qe-firmware";
|
||||||
|
fsl,firmware = [0x70 0xcd 0x00 0x00 0x01 0x46 0x45 ...];
|
||||||
|
};
|
||||||
|
...
|
||||||
|
};
|
||||||
|
|
||||||
|
qe2@e0090000 {
|
||||||
|
compatible = "fsl,qe";
|
||||||
|
fsl,firmware-phandle = <&qe_firmware>;
|
||||||
|
...
|
||||||
|
};
|
||||||
|
|
|
@ -119,10 +119,18 @@ the codec slots 0 and 1 no matter what the hardware reports.
|
||||||
|
|
||||||
Interrupt Handling
|
Interrupt Handling
|
||||||
~~~~~~~~~~~~~~~~~~
|
~~~~~~~~~~~~~~~~~~
|
||||||
In rare but some cases, the interrupt isn't properly handled as
|
HD-audio driver uses MSI as default (if available) since 2.6.33
|
||||||
default. You would notice this by the DMA transfer error reported by
|
kernel as MSI works better on some machines, and in general, it's
|
||||||
ALSA PCM core, for example. Using MSI might help in such a case.
|
better for performance. However, Nvidia controllers showed bad
|
||||||
Pass `enable_msi=1` option for enabling MSI.
|
regressions with MSI (especially in a combination with AMD chipset),
|
||||||
|
thus we disabled MSI for them.
|
||||||
|
|
||||||
|
There seem also still other devices that don't work with MSI. If you
|
||||||
|
see a regression wrt the sound quality (stuttering, etc) or a lock-up
|
||||||
|
in the recent kernel, try to pass `enable_msi=0` option to disable
|
||||||
|
MSI. If it works, you can add the known bad device to the blacklist
|
||||||
|
defined in hda_intel.c. In such a case, please report and give the
|
||||||
|
patch back to the upstream developer.
|
||||||
|
|
||||||
|
|
||||||
HD-AUDIO CODEC
|
HD-AUDIO CODEC
|
||||||
|
|
|
@ -18,16 +18,15 @@ Rules on what kind of patches are accepted, and which ones are not, into the
|
||||||
- It cannot contain any "trivial" fixes in it (spelling changes,
|
- It cannot contain any "trivial" fixes in it (spelling changes,
|
||||||
whitespace cleanups, etc).
|
whitespace cleanups, etc).
|
||||||
- It must follow the Documentation/SubmittingPatches rules.
|
- It must follow the Documentation/SubmittingPatches rules.
|
||||||
- It or an equivalent fix must already exist in Linus' tree. Quote the
|
- It or an equivalent fix must already exist in Linus' tree (upstream).
|
||||||
respective commit ID in Linus' tree in your patch submission to -stable.
|
|
||||||
|
|
||||||
|
|
||||||
Procedure for submitting patches to the -stable tree:
|
Procedure for submitting patches to the -stable tree:
|
||||||
|
|
||||||
- Send the patch, after verifying that it follows the above rules, to
|
- Send the patch, after verifying that it follows the above rules, to
|
||||||
stable@kernel.org.
|
stable@kernel.org. You must note the upstream commit ID in the changelog
|
||||||
- To have the patch automatically included in the stable tree, add the
|
of your submission.
|
||||||
the tag
|
- To have the patch automatically included in the stable tree, add the tag
|
||||||
Cc: stable@kernel.org
|
Cc: stable@kernel.org
|
||||||
in the sign-off area. Once the patch is merged it will be applied to
|
in the sign-off area. Once the patch is merged it will be applied to
|
||||||
the stable tree without anything else needing to be done by the author
|
the stable tree without anything else needing to be done by the author
|
||||||
|
|
|
@ -17,9 +17,6 @@ int main(void)
|
||||||
ret = -1;
|
ret = -1;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
ret = fsync(fd);
|
|
||||||
if (ret)
|
|
||||||
break;
|
|
||||||
sleep(10);
|
sleep(10);
|
||||||
}
|
}
|
||||||
close(fd);
|
close(fd);
|
||||||
|
|
|
@ -31,6 +31,8 @@ static void keep_alive(void)
|
||||||
*/
|
*/
|
||||||
int main(int argc, char *argv[])
|
int main(int argc, char *argv[])
|
||||||
{
|
{
|
||||||
|
int flags;
|
||||||
|
|
||||||
fd = open("/dev/watchdog", O_WRONLY);
|
fd = open("/dev/watchdog", O_WRONLY);
|
||||||
|
|
||||||
if (fd == -1) {
|
if (fd == -1) {
|
||||||
|
@ -41,12 +43,14 @@ int main(int argc, char *argv[])
|
||||||
|
|
||||||
if (argc > 1) {
|
if (argc > 1) {
|
||||||
if (!strncasecmp(argv[1], "-d", 2)) {
|
if (!strncasecmp(argv[1], "-d", 2)) {
|
||||||
ioctl(fd, WDIOC_SETOPTIONS, WDIOS_DISABLECARD);
|
flags = WDIOS_DISABLECARD;
|
||||||
|
ioctl(fd, WDIOC_SETOPTIONS, &flags);
|
||||||
fprintf(stderr, "Watchdog card disabled.\n");
|
fprintf(stderr, "Watchdog card disabled.\n");
|
||||||
fflush(stderr);
|
fflush(stderr);
|
||||||
exit(0);
|
exit(0);
|
||||||
} else if (!strncasecmp(argv[1], "-e", 2)) {
|
} else if (!strncasecmp(argv[1], "-e", 2)) {
|
||||||
ioctl(fd, WDIOC_SETOPTIONS, WDIOS_ENABLECARD);
|
flags = WDIOS_ENABLECARD;
|
||||||
|
ioctl(fd, WDIOC_SETOPTIONS, &flags);
|
||||||
fprintf(stderr, "Watchdog card enabled.\n");
|
fprintf(stderr, "Watchdog card enabled.\n");
|
||||||
fflush(stderr);
|
fflush(stderr);
|
||||||
exit(0);
|
exit(0);
|
||||||
|
|
|
@ -222,11 +222,10 @@ returned value is the temperature in degrees fahrenheit.
|
||||||
ioctl(fd, WDIOC_GETTEMP, &temperature);
|
ioctl(fd, WDIOC_GETTEMP, &temperature);
|
||||||
|
|
||||||
Finally the SETOPTIONS ioctl can be used to control some aspects of
|
Finally the SETOPTIONS ioctl can be used to control some aspects of
|
||||||
the cards operation; right now the pcwd driver is the only one
|
the cards operation.
|
||||||
supporting this ioctl.
|
|
||||||
|
|
||||||
int options = 0;
|
int options = 0;
|
||||||
ioctl(fd, WDIOC_SETOPTIONS, options);
|
ioctl(fd, WDIOC_SETOPTIONS, &options);
|
||||||
|
|
||||||
The following options are available:
|
The following options are available:
|
||||||
|
|
||||||
|
|
40
MAINTAINERS
40
MAINTAINERS
|
@ -485,8 +485,8 @@ S: Maintained
|
||||||
F: drivers/input/mouse/bcm5974.c
|
F: drivers/input/mouse/bcm5974.c
|
||||||
|
|
||||||
APPLE SMC DRIVER
|
APPLE SMC DRIVER
|
||||||
M: Nicolas Boichat <nicolas@boichat.ch>
|
M: Henrik Rydberg <rydberg@euromail.se>
|
||||||
L: mactel-linux-devel@lists.sourceforge.net
|
L: lm-sensors@lm-sensors.org
|
||||||
S: Maintained
|
S: Maintained
|
||||||
F: drivers/hwmon/applesmc.c
|
F: drivers/hwmon/applesmc.c
|
||||||
|
|
||||||
|
@ -971,6 +971,16 @@ L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
|
||||||
W: http://www.mcuos.com
|
W: http://www.mcuos.com
|
||||||
S: Maintained
|
S: Maintained
|
||||||
|
|
||||||
|
ARM/U300 MACHINE SUPPORT
|
||||||
|
M: Linus Walleij <linus.walleij@stericsson.com>
|
||||||
|
L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
|
||||||
|
S: Supported
|
||||||
|
F: arch/arm/mach-u300/
|
||||||
|
F: drivers/i2c/busses/i2c-stu300.c
|
||||||
|
F: drivers/rtc/rtc-coh901331.c
|
||||||
|
F: drivers/watchdog/coh901327_wdt.c
|
||||||
|
F: drivers/dma/coh901318*
|
||||||
|
|
||||||
ARM/U8500 ARM ARCHITECTURE
|
ARM/U8500 ARM ARCHITECTURE
|
||||||
M: Srinidhi Kasagar <srinidhi.kasagar@stericsson.com>
|
M: Srinidhi Kasagar <srinidhi.kasagar@stericsson.com>
|
||||||
L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
|
L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
|
||||||
|
@ -1950,7 +1960,7 @@ F: lib/kobj*
|
||||||
|
|
||||||
DRM DRIVERS
|
DRM DRIVERS
|
||||||
M: David Airlie <airlied@linux.ie>
|
M: David Airlie <airlied@linux.ie>
|
||||||
L: dri-devel@lists.sourceforge.net
|
L: dri-devel@lists.freedesktop.org
|
||||||
T: git git://git.kernel.org/pub/scm/linux/kernel/git/airlied/drm-2.6.git
|
T: git git://git.kernel.org/pub/scm/linux/kernel/git/airlied/drm-2.6.git
|
||||||
S: Maintained
|
S: Maintained
|
||||||
F: drivers/gpu/drm/
|
F: drivers/gpu/drm/
|
||||||
|
@ -2474,12 +2484,6 @@ L: linuxppc-dev@ozlabs.org
|
||||||
S: Odd Fixes
|
S: Odd Fixes
|
||||||
F: drivers/char/hvc_*
|
F: drivers/char/hvc_*
|
||||||
|
|
||||||
VIRTIO CONSOLE DRIVER
|
|
||||||
M: Amit Shah <amit.shah@redhat.com>
|
|
||||||
L: virtualization@lists.linux-foundation.org
|
|
||||||
S: Maintained
|
|
||||||
F: drivers/char/virtio_console.c
|
|
||||||
|
|
||||||
iSCSI BOOT FIRMWARE TABLE (iBFT) DRIVER
|
iSCSI BOOT FIRMWARE TABLE (iBFT) DRIVER
|
||||||
M: Peter Jones <pjones@redhat.com>
|
M: Peter Jones <pjones@redhat.com>
|
||||||
M: Konrad Rzeszutek Wilk <konrad@kernel.org>
|
M: Konrad Rzeszutek Wilk <konrad@kernel.org>
|
||||||
|
@ -4478,17 +4482,17 @@ S: Maintained
|
||||||
F: drivers/ata/sata_promise.*
|
F: drivers/ata/sata_promise.*
|
||||||
|
|
||||||
PS3 NETWORK SUPPORT
|
PS3 NETWORK SUPPORT
|
||||||
M: Geoff Levand <geoffrey.levand@am.sony.com>
|
M: Geoff Levand <geoff@infradead.org>
|
||||||
L: netdev@vger.kernel.org
|
L: netdev@vger.kernel.org
|
||||||
L: cbe-oss-dev@ozlabs.org
|
L: cbe-oss-dev@ozlabs.org
|
||||||
S: Supported
|
S: Maintained
|
||||||
F: drivers/net/ps3_gelic_net.*
|
F: drivers/net/ps3_gelic_net.*
|
||||||
|
|
||||||
PS3 PLATFORM SUPPORT
|
PS3 PLATFORM SUPPORT
|
||||||
M: Geoff Levand <geoffrey.levand@am.sony.com>
|
M: Geoff Levand <geoff@infradead.org>
|
||||||
L: linuxppc-dev@ozlabs.org
|
L: linuxppc-dev@ozlabs.org
|
||||||
L: cbe-oss-dev@ozlabs.org
|
L: cbe-oss-dev@ozlabs.org
|
||||||
S: Supported
|
S: Maintained
|
||||||
F: arch/powerpc/boot/ps3*
|
F: arch/powerpc/boot/ps3*
|
||||||
F: arch/powerpc/include/asm/lv1call.h
|
F: arch/powerpc/include/asm/lv1call.h
|
||||||
F: arch/powerpc/include/asm/ps3*.h
|
F: arch/powerpc/include/asm/ps3*.h
|
||||||
|
@ -4787,12 +4791,11 @@ F: drivers/s390/crypto/
|
||||||
|
|
||||||
S390 ZFCP DRIVER
|
S390 ZFCP DRIVER
|
||||||
M: Christof Schmitt <christof.schmitt@de.ibm.com>
|
M: Christof Schmitt <christof.schmitt@de.ibm.com>
|
||||||
M: Martin Peschke <mp3@de.ibm.com>
|
M: Swen Schillig <swen@vnet.ibm.com>
|
||||||
M: linux390@de.ibm.com
|
M: linux390@de.ibm.com
|
||||||
L: linux-s390@vger.kernel.org
|
L: linux-s390@vger.kernel.org
|
||||||
W: http://www.ibm.com/developerworks/linux/linux390/
|
W: http://www.ibm.com/developerworks/linux/linux390/
|
||||||
S: Supported
|
S: Supported
|
||||||
F: Documentation/s390/zfcpdump.txt
|
|
||||||
F: drivers/s390/scsi/zfcp_*
|
F: drivers/s390/scsi/zfcp_*
|
||||||
|
|
||||||
S390 IUCV NETWORK LAYER
|
S390 IUCV NETWORK LAYER
|
||||||
|
@ -5971,6 +5974,13 @@ S: Maintained
|
||||||
F: Documentation/filesystems/vfat.txt
|
F: Documentation/filesystems/vfat.txt
|
||||||
F: fs/fat/
|
F: fs/fat/
|
||||||
|
|
||||||
|
VIRTIO CONSOLE DRIVER
|
||||||
|
M: Amit Shah <amit.shah@redhat.com>
|
||||||
|
L: virtualization@lists.linux-foundation.org
|
||||||
|
S: Maintained
|
||||||
|
F: drivers/char/virtio_console.c
|
||||||
|
F: include/linux/virtio_console.h
|
||||||
|
|
||||||
VIRTIO HOST (VHOST)
|
VIRTIO HOST (VHOST)
|
||||||
M: "Michael S. Tsirkin" <mst@redhat.com>
|
M: "Michael S. Tsirkin" <mst@redhat.com>
|
||||||
L: kvm@vger.kernel.org
|
L: kvm@vger.kernel.org
|
||||||
|
|
4
Makefile
4
Makefile
|
@ -1,8 +1,8 @@
|
||||||
VERSION = 2
|
VERSION = 2
|
||||||
PATCHLEVEL = 6
|
PATCHLEVEL = 6
|
||||||
SUBLEVEL = 34
|
SUBLEVEL = 34
|
||||||
EXTRAVERSION = -rc3
|
EXTRAVERSION = -rc6
|
||||||
NAME = Man-Eating Seals of Antiquity
|
NAME = Sheep on Meth
|
||||||
|
|
||||||
# *DOCUMENTATION*
|
# *DOCUMENTATION*
|
||||||
# To see a list of typical targets execute "make help"
|
# To see a list of typical targets execute "make help"
|
||||||
|
|
|
@ -8,6 +8,7 @@
|
||||||
* based significantly on the arch/alpha/boot/main.c of Linus Torvalds
|
* based significantly on the arch/alpha/boot/main.c of Linus Torvalds
|
||||||
*/
|
*/
|
||||||
#include <linux/kernel.h>
|
#include <linux/kernel.h>
|
||||||
|
#include <linux/slab.h>
|
||||||
#include <linux/string.h>
|
#include <linux/string.h>
|
||||||
#include <generated/utsrelease.h>
|
#include <generated/utsrelease.h>
|
||||||
#include <linux/mm.h>
|
#include <linux/mm.h>
|
||||||
|
|
|
@ -10,6 +10,7 @@
|
||||||
* and the decompression code from MILO.
|
* and the decompression code from MILO.
|
||||||
*/
|
*/
|
||||||
#include <linux/kernel.h>
|
#include <linux/kernel.h>
|
||||||
|
#include <linux/slab.h>
|
||||||
#include <linux/string.h>
|
#include <linux/string.h>
|
||||||
#include <generated/utsrelease.h>
|
#include <generated/utsrelease.h>
|
||||||
#include <linux/mm.h>
|
#include <linux/mm.h>
|
||||||
|
|
|
@ -6,6 +6,7 @@
|
||||||
* This file is the bootloader for the Linux/AXP kernel
|
* This file is the bootloader for the Linux/AXP kernel
|
||||||
*/
|
*/
|
||||||
#include <linux/kernel.h>
|
#include <linux/kernel.h>
|
||||||
|
#include <linux/slab.h>
|
||||||
#include <linux/string.h>
|
#include <linux/string.h>
|
||||||
#include <generated/utsrelease.h>
|
#include <generated/utsrelease.h>
|
||||||
#include <linux/mm.h>
|
#include <linux/mm.h>
|
||||||
|
|
|
@ -19,6 +19,7 @@
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include <linux/kernel.h>
|
#include <linux/kernel.h>
|
||||||
|
#include <linux/slab.h>
|
||||||
|
|
||||||
#include <asm/uaccess.h>
|
#include <asm/uaccess.h>
|
||||||
|
|
||||||
|
|
|
@ -18,7 +18,6 @@
|
||||||
#include <linux/sched.h>
|
#include <linux/sched.h>
|
||||||
#include <linux/ptrace.h>
|
#include <linux/ptrace.h>
|
||||||
#include <linux/interrupt.h>
|
#include <linux/interrupt.h>
|
||||||
#include <linux/slab.h>
|
|
||||||
#include <linux/random.h>
|
#include <linux/random.h>
|
||||||
#include <linux/init.h>
|
#include <linux/init.h>
|
||||||
#include <linux/irq.h>
|
#include <linux/irq.h>
|
||||||
|
|
|
@ -20,7 +20,6 @@
|
||||||
#include <linux/syscalls.h>
|
#include <linux/syscalls.h>
|
||||||
#include <linux/unistd.h>
|
#include <linux/unistd.h>
|
||||||
#include <linux/ptrace.h>
|
#include <linux/ptrace.h>
|
||||||
#include <linux/slab.h>
|
|
||||||
#include <linux/user.h>
|
#include <linux/user.h>
|
||||||
#include <linux/utsname.h>
|
#include <linux/utsname.h>
|
||||||
#include <linux/time.h>
|
#include <linux/time.h>
|
||||||
|
@ -37,6 +36,7 @@
|
||||||
#include <linux/uio.h>
|
#include <linux/uio.h>
|
||||||
#include <linux/vfs.h>
|
#include <linux/vfs.h>
|
||||||
#include <linux/rcupdate.h>
|
#include <linux/rcupdate.h>
|
||||||
|
#include <linux/slab.h>
|
||||||
|
|
||||||
#include <asm/fpu.h>
|
#include <asm/fpu.h>
|
||||||
#include <asm/io.h>
|
#include <asm/io.h>
|
||||||
|
|
|
@ -7,6 +7,7 @@
|
||||||
#include <linux/pci.h>
|
#include <linux/pci.h>
|
||||||
#include <linux/init.h>
|
#include <linux/init.h>
|
||||||
#include <linux/bootmem.h>
|
#include <linux/bootmem.h>
|
||||||
|
#include <linux/gfp.h>
|
||||||
#include <linux/capability.h>
|
#include <linux/capability.h>
|
||||||
#include <linux/mm.h>
|
#include <linux/mm.h>
|
||||||
#include <linux/errno.h>
|
#include <linux/errno.h>
|
||||||
|
|
|
@ -10,6 +10,7 @@
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include <linux/sched.h>
|
#include <linux/sched.h>
|
||||||
|
#include <linux/slab.h>
|
||||||
#include <linux/pci.h>
|
#include <linux/pci.h>
|
||||||
|
|
||||||
static int hose_mmap_page_range(struct pci_controller *hose,
|
static int hose_mmap_page_range(struct pci_controller *hose,
|
||||||
|
|
|
@ -5,7 +5,7 @@
|
||||||
#include <linux/kernel.h>
|
#include <linux/kernel.h>
|
||||||
#include <linux/mm.h>
|
#include <linux/mm.h>
|
||||||
#include <linux/pci.h>
|
#include <linux/pci.h>
|
||||||
#include <linux/slab.h>
|
#include <linux/gfp.h>
|
||||||
#include <linux/bootmem.h>
|
#include <linux/bootmem.h>
|
||||||
#include <linux/scatterlist.h>
|
#include <linux/scatterlist.h>
|
||||||
#include <linux/log2.h>
|
#include <linux/log2.h>
|
||||||
|
|
|
@ -17,7 +17,6 @@
|
||||||
#include <linux/stddef.h>
|
#include <linux/stddef.h>
|
||||||
#include <linux/unistd.h>
|
#include <linux/unistd.h>
|
||||||
#include <linux/ptrace.h>
|
#include <linux/ptrace.h>
|
||||||
#include <linux/slab.h>
|
|
||||||
#include <linux/user.h>
|
#include <linux/user.h>
|
||||||
#include <linux/time.h>
|
#include <linux/time.h>
|
||||||
#include <linux/major.h>
|
#include <linux/major.h>
|
||||||
|
@ -28,6 +27,7 @@
|
||||||
#include <linux/reboot.h>
|
#include <linux/reboot.h>
|
||||||
#include <linux/tty.h>
|
#include <linux/tty.h>
|
||||||
#include <linux/console.h>
|
#include <linux/console.h>
|
||||||
|
#include <linux/slab.h>
|
||||||
|
|
||||||
#include <asm/reg.h>
|
#include <asm/reg.h>
|
||||||
#include <asm/uaccess.h>
|
#include <asm/uaccess.h>
|
||||||
|
|
|
@ -11,7 +11,6 @@
|
||||||
#include <linux/errno.h>
|
#include <linux/errno.h>
|
||||||
#include <linux/ptrace.h>
|
#include <linux/ptrace.h>
|
||||||
#include <linux/user.h>
|
#include <linux/user.h>
|
||||||
#include <linux/slab.h>
|
|
||||||
#include <linux/security.h>
|
#include <linux/security.h>
|
||||||
#include <linux/signal.h>
|
#include <linux/signal.h>
|
||||||
|
|
||||||
|
|
|
@ -3,7 +3,6 @@
|
||||||
*/
|
*/
|
||||||
#include <linux/kernel.h>
|
#include <linux/kernel.h>
|
||||||
|
|
||||||
#include <linux/slab.h>
|
|
||||||
#include <linux/mm.h>
|
#include <linux/mm.h>
|
||||||
#include <linux/init.h>
|
#include <linux/init.h>
|
||||||
#include <linux/delay.h>
|
#include <linux/delay.h>
|
||||||
|
|
|
@ -4,7 +4,6 @@
|
||||||
|
|
||||||
#include <linux/kernel.h>
|
#include <linux/kernel.h>
|
||||||
|
|
||||||
#include <linux/slab.h>
|
|
||||||
#include <linux/mm.h>
|
#include <linux/mm.h>
|
||||||
#include <linux/init.h>
|
#include <linux/init.h>
|
||||||
#include <linux/delay.h>
|
#include <linux/delay.h>
|
||||||
|
|
|
@ -30,6 +30,7 @@
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include <linux/kernel.h>
|
#include <linux/kernel.h>
|
||||||
|
#include <linux/gfp.h>
|
||||||
#include <linux/module.h>
|
#include <linux/module.h>
|
||||||
#include <linux/init.h>
|
#include <linux/init.h>
|
||||||
#include <linux/proc_fs.h>
|
#include <linux/proc_fs.h>
|
||||||
|
|
|
@ -20,6 +20,7 @@
|
||||||
#include <linux/init.h>
|
#include <linux/init.h>
|
||||||
#include <linux/bootmem.h> /* max_low_pfn */
|
#include <linux/bootmem.h> /* max_low_pfn */
|
||||||
#include <linux/vmalloc.h>
|
#include <linux/vmalloc.h>
|
||||||
|
#include <linux/gfp.h>
|
||||||
|
|
||||||
#include <asm/system.h>
|
#include <asm/system.h>
|
||||||
#include <asm/uaccess.h>
|
#include <asm/uaccess.h>
|
||||||
|
|
|
@ -253,6 +253,7 @@ config ARCH_REALVIEW
|
||||||
select GENERIC_TIME
|
select GENERIC_TIME
|
||||||
select GENERIC_CLOCKEVENTS
|
select GENERIC_CLOCKEVENTS
|
||||||
select ARCH_WANT_OPTIONAL_GPIOLIB
|
select ARCH_WANT_OPTIONAL_GPIOLIB
|
||||||
|
select GPIO_PL061 if GPIOLIB
|
||||||
help
|
help
|
||||||
This enables support for ARM Ltd RealView boards.
|
This enables support for ARM Ltd RealView boards.
|
||||||
|
|
||||||
|
|
|
@ -172,7 +172,7 @@ not_angel:
|
||||||
adr r0, LC0
|
adr r0, LC0
|
||||||
ARM( ldmia r0, {r1, r2, r3, r4, r5, r6, r11, ip, sp})
|
ARM( ldmia r0, {r1, r2, r3, r4, r5, r6, r11, ip, sp})
|
||||||
THUMB( ldmia r0, {r1, r2, r3, r4, r5, r6, r11, ip} )
|
THUMB( ldmia r0, {r1, r2, r3, r4, r5, r6, r11, ip} )
|
||||||
THUMB( ldr sp, [r0, #28] )
|
THUMB( ldr sp, [r0, #32] )
|
||||||
subs r0, r0, r1 @ calculate the delta offset
|
subs r0, r0, r1 @ calculate the delta offset
|
||||||
|
|
||||||
@ if delta is zero, we are
|
@ if delta is zero, we are
|
||||||
|
|
|
@ -18,6 +18,7 @@
|
||||||
#include <linux/string.h>
|
#include <linux/string.h>
|
||||||
#include <linux/mutex.h>
|
#include <linux/mutex.h>
|
||||||
#include <linux/clk.h>
|
#include <linux/clk.h>
|
||||||
|
#include <linux/slab.h>
|
||||||
|
|
||||||
#include <asm/clkdev.h>
|
#include <asm/clkdev.h>
|
||||||
#include <mach/clkdev.h>
|
#include <mach/clkdev.h>
|
||||||
|
|
|
@ -21,7 +21,6 @@
|
||||||
#include <linux/ptrace.h>
|
#include <linux/ptrace.h>
|
||||||
#include <linux/interrupt.h>
|
#include <linux/interrupt.h>
|
||||||
#include <linux/mm.h>
|
#include <linux/mm.h>
|
||||||
#include <linux/slab.h>
|
|
||||||
#include <linux/init.h>
|
#include <linux/init.h>
|
||||||
#include <linux/ioport.h>
|
#include <linux/ioport.h>
|
||||||
#include <linux/irq.h>
|
#include <linux/irq.h>
|
||||||
|
|
|
@ -1,13 +1,13 @@
|
||||||
#
|
#
|
||||||
# Automatically generated make config: don't edit
|
# Automatically generated make config: don't edit
|
||||||
# Linux kernel version: 2.6.31-rc3
|
# Linux kernel version: 2.6.34-rc2
|
||||||
# Fri Jul 17 12:07:28 2009
|
# Mon Mar 29 12:01:41 2010
|
||||||
#
|
#
|
||||||
CONFIG_ARM=y
|
CONFIG_ARM=y
|
||||||
CONFIG_SYS_SUPPORTS_APM_EMULATION=y
|
CONFIG_SYS_SUPPORTS_APM_EMULATION=y
|
||||||
CONFIG_GENERIC_TIME=y
|
CONFIG_GENERIC_TIME=y
|
||||||
CONFIG_GENERIC_CLOCKEVENTS=y
|
CONFIG_GENERIC_CLOCKEVENTS=y
|
||||||
CONFIG_MMU=y
|
CONFIG_HAVE_PROC_CPU=y
|
||||||
CONFIG_GENERIC_HARDIRQS=y
|
CONFIG_GENERIC_HARDIRQS=y
|
||||||
CONFIG_STACKTRACE_SUPPORT=y
|
CONFIG_STACKTRACE_SUPPORT=y
|
||||||
CONFIG_HAVE_LATENCYTOP_SUPPORT=y
|
CONFIG_HAVE_LATENCYTOP_SUPPORT=y
|
||||||
|
@ -18,6 +18,7 @@ CONFIG_GENERIC_IRQ_PROBE=y
|
||||||
CONFIG_RWSEM_GENERIC_SPINLOCK=y
|
CONFIG_RWSEM_GENERIC_SPINLOCK=y
|
||||||
CONFIG_GENERIC_HWEIGHT=y
|
CONFIG_GENERIC_HWEIGHT=y
|
||||||
CONFIG_GENERIC_CALIBRATE_DELAY=y
|
CONFIG_GENERIC_CALIBRATE_DELAY=y
|
||||||
|
CONFIG_NEED_DMA_MAP_STATE=y
|
||||||
CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y
|
CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y
|
||||||
CONFIG_VECTORS_BASE=0xffff0000
|
CONFIG_VECTORS_BASE=0xffff0000
|
||||||
CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
|
CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
|
||||||
|
@ -32,6 +33,12 @@ CONFIG_LOCK_KERNEL=y
|
||||||
CONFIG_INIT_ENV_ARG_LIMIT=32
|
CONFIG_INIT_ENV_ARG_LIMIT=32
|
||||||
CONFIG_LOCALVERSION=""
|
CONFIG_LOCALVERSION=""
|
||||||
# CONFIG_LOCALVERSION_AUTO is not set
|
# CONFIG_LOCALVERSION_AUTO is not set
|
||||||
|
CONFIG_HAVE_KERNEL_GZIP=y
|
||||||
|
CONFIG_HAVE_KERNEL_LZO=y
|
||||||
|
CONFIG_KERNEL_GZIP=y
|
||||||
|
# CONFIG_KERNEL_BZIP2 is not set
|
||||||
|
# CONFIG_KERNEL_LZMA is not set
|
||||||
|
# CONFIG_KERNEL_LZO is not set
|
||||||
# CONFIG_SWAP is not set
|
# CONFIG_SWAP is not set
|
||||||
CONFIG_SYSVIPC=y
|
CONFIG_SYSVIPC=y
|
||||||
CONFIG_SYSVIPC_SYSCTL=y
|
CONFIG_SYSVIPC_SYSCTL=y
|
||||||
|
@ -43,21 +50,22 @@ CONFIG_SYSVIPC_SYSCTL=y
|
||||||
#
|
#
|
||||||
# RCU Subsystem
|
# RCU Subsystem
|
||||||
#
|
#
|
||||||
CONFIG_CLASSIC_RCU=y
|
CONFIG_TREE_RCU=y
|
||||||
# CONFIG_TREE_RCU is not set
|
# CONFIG_TREE_PREEMPT_RCU is not set
|
||||||
# CONFIG_PREEMPT_RCU is not set
|
# CONFIG_TINY_RCU is not set
|
||||||
|
# CONFIG_RCU_TRACE is not set
|
||||||
|
CONFIG_RCU_FANOUT=32
|
||||||
|
# CONFIG_RCU_FANOUT_EXACT is not set
|
||||||
# CONFIG_TREE_RCU_TRACE is not set
|
# CONFIG_TREE_RCU_TRACE is not set
|
||||||
# CONFIG_PREEMPT_RCU_TRACE is not set
|
|
||||||
# CONFIG_IKCONFIG is not set
|
# CONFIG_IKCONFIG is not set
|
||||||
CONFIG_LOG_BUF_SHIFT=17
|
CONFIG_LOG_BUF_SHIFT=17
|
||||||
# CONFIG_GROUP_SCHED is not set
|
|
||||||
# CONFIG_CGROUPS is not set
|
|
||||||
# CONFIG_SYSFS_DEPRECATED_V2 is not set
|
# CONFIG_SYSFS_DEPRECATED_V2 is not set
|
||||||
# CONFIG_RELAY is not set
|
# CONFIG_RELAY is not set
|
||||||
# CONFIG_NAMESPACES is not set
|
# CONFIG_NAMESPACES is not set
|
||||||
# CONFIG_BLK_DEV_INITRD is not set
|
# CONFIG_BLK_DEV_INITRD is not set
|
||||||
CONFIG_CC_OPTIMIZE_FOR_SIZE=y
|
CONFIG_CC_OPTIMIZE_FOR_SIZE=y
|
||||||
CONFIG_SYSCTL=y
|
CONFIG_SYSCTL=y
|
||||||
|
CONFIG_ANON_INODES=y
|
||||||
CONFIG_EMBEDDED=y
|
CONFIG_EMBEDDED=y
|
||||||
CONFIG_UID16=y
|
CONFIG_UID16=y
|
||||||
CONFIG_SYSCTL_SYSCALL=y
|
CONFIG_SYSCTL_SYSCALL=y
|
||||||
|
@ -75,19 +83,21 @@ CONFIG_FUTEX=y
|
||||||
# CONFIG_EVENTFD is not set
|
# CONFIG_EVENTFD is not set
|
||||||
CONFIG_SHMEM=y
|
CONFIG_SHMEM=y
|
||||||
# CONFIG_AIO is not set
|
# CONFIG_AIO is not set
|
||||||
|
CONFIG_HAVE_PERF_EVENTS=y
|
||||||
|
CONFIG_PERF_USE_VMALLOC=y
|
||||||
|
|
||||||
#
|
#
|
||||||
# Performance Counters
|
# Kernel Performance Events And Counters
|
||||||
#
|
#
|
||||||
|
CONFIG_PERF_EVENTS=y
|
||||||
|
CONFIG_PERF_COUNTERS=y
|
||||||
# CONFIG_VM_EVENT_COUNTERS is not set
|
# CONFIG_VM_EVENT_COUNTERS is not set
|
||||||
# CONFIG_SLUB_DEBUG is not set
|
# CONFIG_SLUB_DEBUG is not set
|
||||||
# CONFIG_STRIP_ASM_SYMS is not set
|
|
||||||
# CONFIG_COMPAT_BRK is not set
|
# CONFIG_COMPAT_BRK is not set
|
||||||
# CONFIG_SLAB is not set
|
# CONFIG_SLAB is not set
|
||||||
CONFIG_SLUB=y
|
CONFIG_SLUB=y
|
||||||
# CONFIG_SLOB is not set
|
# CONFIG_SLOB is not set
|
||||||
# CONFIG_PROFILING is not set
|
# CONFIG_PROFILING is not set
|
||||||
# CONFIG_MARKERS is not set
|
|
||||||
CONFIG_HAVE_OPROFILE=y
|
CONFIG_HAVE_OPROFILE=y
|
||||||
# CONFIG_KPROBES is not set
|
# CONFIG_KPROBES is not set
|
||||||
CONFIG_HAVE_KPROBES=y
|
CONFIG_HAVE_KPROBES=y
|
||||||
|
@ -115,24 +125,53 @@ CONFIG_LBDAF=y
|
||||||
# IO Schedulers
|
# IO Schedulers
|
||||||
#
|
#
|
||||||
CONFIG_IOSCHED_NOOP=y
|
CONFIG_IOSCHED_NOOP=y
|
||||||
# CONFIG_IOSCHED_AS is not set
|
|
||||||
# CONFIG_IOSCHED_DEADLINE is not set
|
# CONFIG_IOSCHED_DEADLINE is not set
|
||||||
# CONFIG_IOSCHED_CFQ is not set
|
# CONFIG_IOSCHED_CFQ is not set
|
||||||
# CONFIG_DEFAULT_AS is not set
|
|
||||||
# CONFIG_DEFAULT_DEADLINE is not set
|
# CONFIG_DEFAULT_DEADLINE is not set
|
||||||
# CONFIG_DEFAULT_CFQ is not set
|
# CONFIG_DEFAULT_CFQ is not set
|
||||||
CONFIG_DEFAULT_NOOP=y
|
CONFIG_DEFAULT_NOOP=y
|
||||||
CONFIG_DEFAULT_IOSCHED="noop"
|
CONFIG_DEFAULT_IOSCHED="noop"
|
||||||
|
# CONFIG_INLINE_SPIN_TRYLOCK is not set
|
||||||
|
# CONFIG_INLINE_SPIN_TRYLOCK_BH is not set
|
||||||
|
# CONFIG_INLINE_SPIN_LOCK is not set
|
||||||
|
# CONFIG_INLINE_SPIN_LOCK_BH is not set
|
||||||
|
# CONFIG_INLINE_SPIN_LOCK_IRQ is not set
|
||||||
|
# CONFIG_INLINE_SPIN_LOCK_IRQSAVE is not set
|
||||||
|
# CONFIG_INLINE_SPIN_UNLOCK is not set
|
||||||
|
# CONFIG_INLINE_SPIN_UNLOCK_BH is not set
|
||||||
|
# CONFIG_INLINE_SPIN_UNLOCK_IRQ is not set
|
||||||
|
# CONFIG_INLINE_SPIN_UNLOCK_IRQRESTORE is not set
|
||||||
|
# CONFIG_INLINE_READ_TRYLOCK is not set
|
||||||
|
# CONFIG_INLINE_READ_LOCK is not set
|
||||||
|
# CONFIG_INLINE_READ_LOCK_BH is not set
|
||||||
|
# CONFIG_INLINE_READ_LOCK_IRQ is not set
|
||||||
|
# CONFIG_INLINE_READ_LOCK_IRQSAVE is not set
|
||||||
|
# CONFIG_INLINE_READ_UNLOCK is not set
|
||||||
|
# CONFIG_INLINE_READ_UNLOCK_BH is not set
|
||||||
|
# CONFIG_INLINE_READ_UNLOCK_IRQ is not set
|
||||||
|
# CONFIG_INLINE_READ_UNLOCK_IRQRESTORE is not set
|
||||||
|
# CONFIG_INLINE_WRITE_TRYLOCK is not set
|
||||||
|
# CONFIG_INLINE_WRITE_LOCK is not set
|
||||||
|
# CONFIG_INLINE_WRITE_LOCK_BH is not set
|
||||||
|
# CONFIG_INLINE_WRITE_LOCK_IRQ is not set
|
||||||
|
# CONFIG_INLINE_WRITE_LOCK_IRQSAVE is not set
|
||||||
|
# CONFIG_INLINE_WRITE_UNLOCK is not set
|
||||||
|
# CONFIG_INLINE_WRITE_UNLOCK_BH is not set
|
||||||
|
# CONFIG_INLINE_WRITE_UNLOCK_IRQ is not set
|
||||||
|
# CONFIG_INLINE_WRITE_UNLOCK_IRQRESTORE is not set
|
||||||
|
# CONFIG_MUTEX_SPIN_ON_OWNER is not set
|
||||||
# CONFIG_FREEZER is not set
|
# CONFIG_FREEZER is not set
|
||||||
|
|
||||||
#
|
#
|
||||||
# System Type
|
# System Type
|
||||||
#
|
#
|
||||||
|
CONFIG_MMU=y
|
||||||
# CONFIG_ARCH_AAEC2000 is not set
|
# CONFIG_ARCH_AAEC2000 is not set
|
||||||
# CONFIG_ARCH_INTEGRATOR is not set
|
# CONFIG_ARCH_INTEGRATOR is not set
|
||||||
# CONFIG_ARCH_REALVIEW is not set
|
# CONFIG_ARCH_REALVIEW is not set
|
||||||
# CONFIG_ARCH_VERSATILE is not set
|
# CONFIG_ARCH_VERSATILE is not set
|
||||||
# CONFIG_ARCH_AT91 is not set
|
# CONFIG_ARCH_AT91 is not set
|
||||||
|
CONFIG_ARCH_BCMRING=y
|
||||||
# CONFIG_ARCH_CLPS711X is not set
|
# CONFIG_ARCH_CLPS711X is not set
|
||||||
# CONFIG_ARCH_GEMINI is not set
|
# CONFIG_ARCH_GEMINI is not set
|
||||||
# CONFIG_ARCH_EBSA110 is not set
|
# CONFIG_ARCH_EBSA110 is not set
|
||||||
|
@ -149,6 +188,7 @@ CONFIG_DEFAULT_IOSCHED="noop"
|
||||||
# CONFIG_ARCH_IXP2000 is not set
|
# CONFIG_ARCH_IXP2000 is not set
|
||||||
# CONFIG_ARCH_IXP4XX is not set
|
# CONFIG_ARCH_IXP4XX is not set
|
||||||
# CONFIG_ARCH_L7200 is not set
|
# CONFIG_ARCH_L7200 is not set
|
||||||
|
# CONFIG_ARCH_DOVE is not set
|
||||||
# CONFIG_ARCH_KIRKWOOD is not set
|
# CONFIG_ARCH_KIRKWOOD is not set
|
||||||
# CONFIG_ARCH_LOKI is not set
|
# CONFIG_ARCH_LOKI is not set
|
||||||
# CONFIG_ARCH_MV78XX0 is not set
|
# CONFIG_ARCH_MV78XX0 is not set
|
||||||
|
@ -157,19 +197,26 @@ CONFIG_DEFAULT_IOSCHED="noop"
|
||||||
# CONFIG_ARCH_KS8695 is not set
|
# CONFIG_ARCH_KS8695 is not set
|
||||||
# CONFIG_ARCH_NS9XXX is not set
|
# CONFIG_ARCH_NS9XXX is not set
|
||||||
# CONFIG_ARCH_W90X900 is not set
|
# CONFIG_ARCH_W90X900 is not set
|
||||||
|
# CONFIG_ARCH_NUC93X is not set
|
||||||
# CONFIG_ARCH_PNX4008 is not set
|
# CONFIG_ARCH_PNX4008 is not set
|
||||||
# CONFIG_ARCH_PXA is not set
|
# CONFIG_ARCH_PXA is not set
|
||||||
# CONFIG_ARCH_MSM is not set
|
# CONFIG_ARCH_MSM is not set
|
||||||
|
# CONFIG_ARCH_SHMOBILE is not set
|
||||||
# CONFIG_ARCH_RPC is not set
|
# CONFIG_ARCH_RPC is not set
|
||||||
# CONFIG_ARCH_SA1100 is not set
|
# CONFIG_ARCH_SA1100 is not set
|
||||||
# CONFIG_ARCH_S3C2410 is not set
|
# CONFIG_ARCH_S3C2410 is not set
|
||||||
# CONFIG_ARCH_S3C64XX is not set
|
# CONFIG_ARCH_S3C64XX is not set
|
||||||
|
# CONFIG_ARCH_S5P6440 is not set
|
||||||
|
# CONFIG_ARCH_S5P6442 is not set
|
||||||
|
# CONFIG_ARCH_S5PC1XX is not set
|
||||||
|
# CONFIG_ARCH_S5PV210 is not set
|
||||||
# CONFIG_ARCH_SHARK is not set
|
# CONFIG_ARCH_SHARK is not set
|
||||||
# CONFIG_ARCH_LH7A40X is not set
|
# CONFIG_ARCH_LH7A40X is not set
|
||||||
# CONFIG_ARCH_U300 is not set
|
# CONFIG_ARCH_U300 is not set
|
||||||
|
# CONFIG_ARCH_U8500 is not set
|
||||||
|
# CONFIG_ARCH_NOMADIK is not set
|
||||||
# CONFIG_ARCH_DAVINCI is not set
|
# CONFIG_ARCH_DAVINCI is not set
|
||||||
# CONFIG_ARCH_OMAP is not set
|
# CONFIG_ARCH_OMAP is not set
|
||||||
CONFIG_ARCH_BCMRING=y
|
|
||||||
# CONFIG_ARCH_FPGA11107 is not set
|
# CONFIG_ARCH_FPGA11107 is not set
|
||||||
CONFIG_ARCH_BCM11107=y
|
CONFIG_ARCH_BCM11107=y
|
||||||
|
|
||||||
|
@ -185,7 +232,7 @@ CONFIG_CPU_V6=y
|
||||||
CONFIG_CPU_32v6K=y
|
CONFIG_CPU_32v6K=y
|
||||||
CONFIG_CPU_32v6=y
|
CONFIG_CPU_32v6=y
|
||||||
CONFIG_CPU_ABRT_EV6=y
|
CONFIG_CPU_ABRT_EV6=y
|
||||||
CONFIG_CPU_PABRT_NOIFAR=y
|
CONFIG_CPU_PABRT_V6=y
|
||||||
CONFIG_CPU_CACHE_V6=y
|
CONFIG_CPU_CACHE_V6=y
|
||||||
CONFIG_CPU_CACHE_VIPT=y
|
CONFIG_CPU_CACHE_VIPT=y
|
||||||
CONFIG_CPU_COPY_V6=y
|
CONFIG_CPU_COPY_V6=y
|
||||||
|
@ -201,6 +248,8 @@ CONFIG_ARM_THUMB=y
|
||||||
# CONFIG_CPU_ICACHE_DISABLE is not set
|
# CONFIG_CPU_ICACHE_DISABLE is not set
|
||||||
# CONFIG_CPU_DCACHE_DISABLE is not set
|
# CONFIG_CPU_DCACHE_DISABLE is not set
|
||||||
# CONFIG_CPU_BPREDICT_DISABLE is not set
|
# CONFIG_CPU_BPREDICT_DISABLE is not set
|
||||||
|
CONFIG_ARM_L1_CACHE_SHIFT=5
|
||||||
|
CONFIG_CPU_HAS_PMU=y
|
||||||
# CONFIG_ARM_ERRATA_411920 is not set
|
# CONFIG_ARM_ERRATA_411920 is not set
|
||||||
CONFIG_COMMON_CLKDEV=y
|
CONFIG_COMMON_CLKDEV=y
|
||||||
|
|
||||||
|
@ -222,6 +271,8 @@ CONFIG_VMSPLIT_3G=y
|
||||||
# CONFIG_VMSPLIT_2G is not set
|
# CONFIG_VMSPLIT_2G is not set
|
||||||
# CONFIG_VMSPLIT_1G is not set
|
# CONFIG_VMSPLIT_1G is not set
|
||||||
CONFIG_PAGE_OFFSET=0xC0000000
|
CONFIG_PAGE_OFFSET=0xC0000000
|
||||||
|
# CONFIG_PREEMPT_NONE is not set
|
||||||
|
# CONFIG_PREEMPT_VOLUNTARY is not set
|
||||||
CONFIG_PREEMPT=y
|
CONFIG_PREEMPT=y
|
||||||
CONFIG_HZ=100
|
CONFIG_HZ=100
|
||||||
CONFIG_AEABI=y
|
CONFIG_AEABI=y
|
||||||
|
@ -229,6 +280,7 @@ CONFIG_AEABI=y
|
||||||
# CONFIG_ARCH_SPARSEMEM_DEFAULT is not set
|
# CONFIG_ARCH_SPARSEMEM_DEFAULT is not set
|
||||||
# CONFIG_ARCH_SELECT_MEMORY_MODEL is not set
|
# CONFIG_ARCH_SELECT_MEMORY_MODEL is not set
|
||||||
# CONFIG_HIGHMEM is not set
|
# CONFIG_HIGHMEM is not set
|
||||||
|
CONFIG_HW_PERF_EVENTS=y
|
||||||
CONFIG_SELECT_MEMORY_MODEL=y
|
CONFIG_SELECT_MEMORY_MODEL=y
|
||||||
CONFIG_FLATMEM_MANUAL=y
|
CONFIG_FLATMEM_MANUAL=y
|
||||||
# CONFIG_DISCONTIGMEM_MANUAL is not set
|
# CONFIG_DISCONTIGMEM_MANUAL is not set
|
||||||
|
@ -240,8 +292,7 @@ CONFIG_SPLIT_PTLOCK_CPUS=4
|
||||||
# CONFIG_PHYS_ADDR_T_64BIT is not set
|
# CONFIG_PHYS_ADDR_T_64BIT is not set
|
||||||
CONFIG_ZONE_DMA_FLAG=0
|
CONFIG_ZONE_DMA_FLAG=0
|
||||||
CONFIG_VIRT_TO_BUS=y
|
CONFIG_VIRT_TO_BUS=y
|
||||||
CONFIG_HAVE_MLOCK=y
|
# CONFIG_KSM is not set
|
||||||
CONFIG_HAVE_MLOCKED_PAGE_BIT=y
|
|
||||||
CONFIG_DEFAULT_MMAP_MIN_ADDR=4096
|
CONFIG_DEFAULT_MMAP_MIN_ADDR=4096
|
||||||
CONFIG_ALIGNMENT_TRAP=y
|
CONFIG_ALIGNMENT_TRAP=y
|
||||||
CONFIG_UACCESS_WITH_MEMCPY=y
|
CONFIG_UACCESS_WITH_MEMCPY=y
|
||||||
|
@ -335,9 +386,9 @@ CONFIG_PREVENT_FIRMWARE_BUILD=y
|
||||||
# CONFIG_CONNECTOR is not set
|
# CONFIG_CONNECTOR is not set
|
||||||
CONFIG_MTD=y
|
CONFIG_MTD=y
|
||||||
# CONFIG_MTD_DEBUG is not set
|
# CONFIG_MTD_DEBUG is not set
|
||||||
|
# CONFIG_MTD_TESTS is not set
|
||||||
CONFIG_MTD_CONCAT=y
|
CONFIG_MTD_CONCAT=y
|
||||||
CONFIG_MTD_PARTITIONS=y
|
CONFIG_MTD_PARTITIONS=y
|
||||||
# CONFIG_MTD_TESTS is not set
|
|
||||||
# CONFIG_MTD_REDBOOT_PARTS is not set
|
# CONFIG_MTD_REDBOOT_PARTS is not set
|
||||||
CONFIG_MTD_CMDLINE_PARTS=y
|
CONFIG_MTD_CMDLINE_PARTS=y
|
||||||
# CONFIG_MTD_AFS_PARTS is not set
|
# CONFIG_MTD_AFS_PARTS is not set
|
||||||
|
@ -433,6 +484,10 @@ CONFIG_MTD_NAND_BCM_UMI_HWCS=y
|
||||||
CONFIG_BLK_DEV=y
|
CONFIG_BLK_DEV=y
|
||||||
# CONFIG_BLK_DEV_COW_COMMON is not set
|
# CONFIG_BLK_DEV_COW_COMMON is not set
|
||||||
# CONFIG_BLK_DEV_LOOP is not set
|
# CONFIG_BLK_DEV_LOOP is not set
|
||||||
|
|
||||||
|
#
|
||||||
|
# DRBD disabled because PROC_FS, INET or CONNECTOR not selected
|
||||||
|
#
|
||||||
# CONFIG_BLK_DEV_NBD is not set
|
# CONFIG_BLK_DEV_NBD is not set
|
||||||
# CONFIG_BLK_DEV_RAM is not set
|
# CONFIG_BLK_DEV_RAM is not set
|
||||||
# CONFIG_CDROM_PKTCDVD is not set
|
# CONFIG_CDROM_PKTCDVD is not set
|
||||||
|
@ -444,6 +499,7 @@ CONFIG_HAVE_IDE=y
|
||||||
#
|
#
|
||||||
# SCSI device support
|
# SCSI device support
|
||||||
#
|
#
|
||||||
|
CONFIG_SCSI_MOD=y
|
||||||
# CONFIG_RAID_ATTRS is not set
|
# CONFIG_RAID_ATTRS is not set
|
||||||
# CONFIG_SCSI is not set
|
# CONFIG_SCSI is not set
|
||||||
# CONFIG_SCSI_DMA is not set
|
# CONFIG_SCSI_DMA is not set
|
||||||
|
@ -452,6 +508,7 @@ CONFIG_HAVE_IDE=y
|
||||||
# CONFIG_MD is not set
|
# CONFIG_MD is not set
|
||||||
# CONFIG_NETDEVICES is not set
|
# CONFIG_NETDEVICES is not set
|
||||||
# CONFIG_ISDN is not set
|
# CONFIG_ISDN is not set
|
||||||
|
# CONFIG_PHONE is not set
|
||||||
|
|
||||||
#
|
#
|
||||||
# Input device support
|
# Input device support
|
||||||
|
@ -459,6 +516,7 @@ CONFIG_HAVE_IDE=y
|
||||||
CONFIG_INPUT=y
|
CONFIG_INPUT=y
|
||||||
# CONFIG_INPUT_FF_MEMLESS is not set
|
# CONFIG_INPUT_FF_MEMLESS is not set
|
||||||
# CONFIG_INPUT_POLLDEV is not set
|
# CONFIG_INPUT_POLLDEV is not set
|
||||||
|
# CONFIG_INPUT_SPARSEKMAP is not set
|
||||||
|
|
||||||
#
|
#
|
||||||
# Userland interfaces
|
# Userland interfaces
|
||||||
|
@ -508,6 +566,7 @@ CONFIG_SERIAL_AMBA_PL011=y
|
||||||
CONFIG_SERIAL_AMBA_PL011_CONSOLE=y
|
CONFIG_SERIAL_AMBA_PL011_CONSOLE=y
|
||||||
CONFIG_SERIAL_CORE=y
|
CONFIG_SERIAL_CORE=y
|
||||||
CONFIG_SERIAL_CORE_CONSOLE=y
|
CONFIG_SERIAL_CORE_CONSOLE=y
|
||||||
|
# CONFIG_SERIAL_TIMBERDALE is not set
|
||||||
CONFIG_UNIX98_PTYS=y
|
CONFIG_UNIX98_PTYS=y
|
||||||
# CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set
|
# CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set
|
||||||
CONFIG_LEGACY_PTYS=y
|
CONFIG_LEGACY_PTYS=y
|
||||||
|
@ -519,13 +578,17 @@ CONFIG_LEGACY_PTY_COUNT=64
|
||||||
# CONFIG_TCG_TPM is not set
|
# CONFIG_TCG_TPM is not set
|
||||||
# CONFIG_I2C is not set
|
# CONFIG_I2C is not set
|
||||||
# CONFIG_SPI is not set
|
# CONFIG_SPI is not set
|
||||||
|
|
||||||
|
#
|
||||||
|
# PPS support
|
||||||
|
#
|
||||||
|
# CONFIG_PPS is not set
|
||||||
CONFIG_ARCH_WANT_OPTIONAL_GPIOLIB=y
|
CONFIG_ARCH_WANT_OPTIONAL_GPIOLIB=y
|
||||||
# CONFIG_GPIOLIB is not set
|
# CONFIG_GPIOLIB is not set
|
||||||
# CONFIG_W1 is not set
|
# CONFIG_W1 is not set
|
||||||
# CONFIG_POWER_SUPPLY is not set
|
# CONFIG_POWER_SUPPLY is not set
|
||||||
# CONFIG_HWMON is not set
|
# CONFIG_HWMON is not set
|
||||||
# CONFIG_THERMAL is not set
|
# CONFIG_THERMAL is not set
|
||||||
# CONFIG_THERMAL_HWMON is not set
|
|
||||||
# CONFIG_WATCHDOG is not set
|
# CONFIG_WATCHDOG is not set
|
||||||
CONFIG_SSB_POSSIBLE=y
|
CONFIG_SSB_POSSIBLE=y
|
||||||
|
|
||||||
|
@ -541,6 +604,7 @@ CONFIG_SSB_POSSIBLE=y
|
||||||
# CONFIG_MFD_SM501 is not set
|
# CONFIG_MFD_SM501 is not set
|
||||||
# CONFIG_HTC_PASIC3 is not set
|
# CONFIG_HTC_PASIC3 is not set
|
||||||
# CONFIG_MFD_TMIO is not set
|
# CONFIG_MFD_TMIO is not set
|
||||||
|
# CONFIG_REGULATOR is not set
|
||||||
# CONFIG_MEDIA_SUPPORT is not set
|
# CONFIG_MEDIA_SUPPORT is not set
|
||||||
|
|
||||||
#
|
#
|
||||||
|
@ -566,14 +630,17 @@ CONFIG_DUMMY_CONSOLE=y
|
||||||
# CONFIG_USB_SUPPORT is not set
|
# CONFIG_USB_SUPPORT is not set
|
||||||
# CONFIG_MMC is not set
|
# CONFIG_MMC is not set
|
||||||
# CONFIG_MEMSTICK is not set
|
# CONFIG_MEMSTICK is not set
|
||||||
# CONFIG_ACCESSIBILITY is not set
|
|
||||||
# CONFIG_NEW_LEDS is not set
|
# CONFIG_NEW_LEDS is not set
|
||||||
|
# CONFIG_ACCESSIBILITY is not set
|
||||||
CONFIG_RTC_LIB=y
|
CONFIG_RTC_LIB=y
|
||||||
# CONFIG_RTC_CLASS is not set
|
# CONFIG_RTC_CLASS is not set
|
||||||
# CONFIG_DMADEVICES is not set
|
# CONFIG_DMADEVICES is not set
|
||||||
# CONFIG_AUXDISPLAY is not set
|
# CONFIG_AUXDISPLAY is not set
|
||||||
# CONFIG_REGULATOR is not set
|
|
||||||
# CONFIG_UIO is not set
|
# CONFIG_UIO is not set
|
||||||
|
|
||||||
|
#
|
||||||
|
# TI VLYNQ
|
||||||
|
#
|
||||||
# CONFIG_STAGING is not set
|
# CONFIG_STAGING is not set
|
||||||
|
|
||||||
#
|
#
|
||||||
|
@ -589,9 +656,12 @@ CONFIG_FS_POSIX_ACL=y
|
||||||
# CONFIG_GFS2_FS is not set
|
# CONFIG_GFS2_FS is not set
|
||||||
# CONFIG_OCFS2_FS is not set
|
# CONFIG_OCFS2_FS is not set
|
||||||
# CONFIG_BTRFS_FS is not set
|
# CONFIG_BTRFS_FS is not set
|
||||||
|
# CONFIG_NILFS2_FS is not set
|
||||||
# CONFIG_FILE_LOCKING is not set
|
# CONFIG_FILE_LOCKING is not set
|
||||||
# CONFIG_FSNOTIFY is not set
|
# CONFIG_FSNOTIFY is not set
|
||||||
|
# CONFIG_DNOTIFY is not set
|
||||||
# CONFIG_INOTIFY is not set
|
# CONFIG_INOTIFY is not set
|
||||||
|
# CONFIG_INOTIFY_USER is not set
|
||||||
# CONFIG_QUOTA is not set
|
# CONFIG_QUOTA is not set
|
||||||
# CONFIG_AUTOFS_FS is not set
|
# CONFIG_AUTOFS_FS is not set
|
||||||
# CONFIG_AUTOFS4_FS is not set
|
# CONFIG_AUTOFS4_FS is not set
|
||||||
|
@ -647,6 +717,7 @@ CONFIG_JFFS2_ZLIB=y
|
||||||
# CONFIG_JFFS2_LZO is not set
|
# CONFIG_JFFS2_LZO is not set
|
||||||
CONFIG_JFFS2_RTIME=y
|
CONFIG_JFFS2_RTIME=y
|
||||||
# CONFIG_JFFS2_RUBIN is not set
|
# CONFIG_JFFS2_RUBIN is not set
|
||||||
|
# CONFIG_LOGFS is not set
|
||||||
# CONFIG_CRAMFS is not set
|
# CONFIG_CRAMFS is not set
|
||||||
# CONFIG_SQUASHFS is not set
|
# CONFIG_SQUASHFS is not set
|
||||||
# CONFIG_VXFS_FS is not set
|
# CONFIG_VXFS_FS is not set
|
||||||
|
@ -657,7 +728,6 @@ CONFIG_JFFS2_RTIME=y
|
||||||
# CONFIG_ROMFS_FS is not set
|
# CONFIG_ROMFS_FS is not set
|
||||||
# CONFIG_SYSV_FS is not set
|
# CONFIG_SYSV_FS is not set
|
||||||
# CONFIG_UFS_FS is not set
|
# CONFIG_UFS_FS is not set
|
||||||
# CONFIG_NILFS2_FS is not set
|
|
||||||
# CONFIG_NETWORK_FILESYSTEMS is not set
|
# CONFIG_NETWORK_FILESYSTEMS is not set
|
||||||
|
|
||||||
#
|
#
|
||||||
|
@ -675,11 +745,12 @@ CONFIG_MSDOS_PARTITION=y
|
||||||
CONFIG_ENABLE_MUST_CHECK=y
|
CONFIG_ENABLE_MUST_CHECK=y
|
||||||
CONFIG_FRAME_WARN=1024
|
CONFIG_FRAME_WARN=1024
|
||||||
CONFIG_MAGIC_SYSRQ=y
|
CONFIG_MAGIC_SYSRQ=y
|
||||||
|
# CONFIG_STRIP_ASM_SYMS is not set
|
||||||
# CONFIG_UNUSED_SYMBOLS is not set
|
# CONFIG_UNUSED_SYMBOLS is not set
|
||||||
# CONFIG_DEBUG_FS is not set
|
# CONFIG_DEBUG_FS is not set
|
||||||
CONFIG_HEADERS_CHECK=y
|
CONFIG_HEADERS_CHECK=y
|
||||||
# CONFIG_DEBUG_KERNEL is not set
|
# CONFIG_DEBUG_KERNEL is not set
|
||||||
# CONFIG_DEBUG_BUGVERBOSE is not set
|
CONFIG_DEBUG_BUGVERBOSE=y
|
||||||
# CONFIG_DEBUG_MEMORY_INIT is not set
|
# CONFIG_DEBUG_MEMORY_INIT is not set
|
||||||
CONFIG_FRAME_POINTER=y
|
CONFIG_FRAME_POINTER=y
|
||||||
# CONFIG_RCU_CPU_STALL_DETECTOR is not set
|
# CONFIG_RCU_CPU_STALL_DETECTOR is not set
|
||||||
|
@ -693,6 +764,7 @@ CONFIG_TRACING_SUPPORT=y
|
||||||
CONFIG_HAVE_ARCH_KGDB=y
|
CONFIG_HAVE_ARCH_KGDB=y
|
||||||
# CONFIG_ARM_UNWIND is not set
|
# CONFIG_ARM_UNWIND is not set
|
||||||
# CONFIG_DEBUG_USER is not set
|
# CONFIG_DEBUG_USER is not set
|
||||||
|
# CONFIG_OC_ETM is not set
|
||||||
|
|
||||||
#
|
#
|
||||||
# Security options
|
# Security options
|
||||||
|
@ -700,7 +772,11 @@ CONFIG_HAVE_ARCH_KGDB=y
|
||||||
# CONFIG_KEYS is not set
|
# CONFIG_KEYS is not set
|
||||||
# CONFIG_SECURITY is not set
|
# CONFIG_SECURITY is not set
|
||||||
# CONFIG_SECURITYFS is not set
|
# CONFIG_SECURITYFS is not set
|
||||||
# CONFIG_SECURITY_FILE_CAPABILITIES is not set
|
# CONFIG_DEFAULT_SECURITY_SELINUX is not set
|
||||||
|
# CONFIG_DEFAULT_SECURITY_SMACK is not set
|
||||||
|
# CONFIG_DEFAULT_SECURITY_TOMOYO is not set
|
||||||
|
CONFIG_DEFAULT_SECURITY_DAC=y
|
||||||
|
CONFIG_DEFAULT_SECURITY=""
|
||||||
# CONFIG_CRYPTO is not set
|
# CONFIG_CRYPTO is not set
|
||||||
# CONFIG_BINARY_PRINTF is not set
|
# CONFIG_BINARY_PRINTF is not set
|
||||||
|
|
||||||
|
|
|
@ -1058,7 +1058,6 @@ CONFIG_JFFS2_CMODE_PRIORITY=y
|
||||||
# CONFIG_ROMFS_FS is not set
|
# CONFIG_ROMFS_FS is not set
|
||||||
# CONFIG_SYSV_FS is not set
|
# CONFIG_SYSV_FS is not set
|
||||||
# CONFIG_UFS_FS is not set
|
# CONFIG_UFS_FS is not set
|
||||||
# CONFIG_NILFS2_FS is not set
|
|
||||||
CONFIG_NETWORK_FILESYSTEMS=y
|
CONFIG_NETWORK_FILESYSTEMS=y
|
||||||
# CONFIG_NFS_FS is not set
|
# CONFIG_NFS_FS is not set
|
||||||
# CONFIG_NFSD is not set
|
# CONFIG_NFSD is not set
|
||||||
|
|
|
@ -661,7 +661,7 @@ CONFIG_DEVKMEM=y
|
||||||
CONFIG_SERIAL_8250=y
|
CONFIG_SERIAL_8250=y
|
||||||
CONFIG_SERIAL_8250_CONSOLE=y
|
CONFIG_SERIAL_8250_CONSOLE=y
|
||||||
CONFIG_SERIAL_8250_NR_UARTS=32
|
CONFIG_SERIAL_8250_NR_UARTS=32
|
||||||
CONFIG_SERIAL_8250_RUNTIME_UARTS=4
|
CONFIG_SERIAL_8250_RUNTIME_UARTS=1
|
||||||
CONFIG_SERIAL_8250_EXTENDED=y
|
CONFIG_SERIAL_8250_EXTENDED=y
|
||||||
CONFIG_SERIAL_8250_MANY_PORTS=y
|
CONFIG_SERIAL_8250_MANY_PORTS=y
|
||||||
CONFIG_SERIAL_8250_SHARE_IRQ=y
|
CONFIG_SERIAL_8250_SHARE_IRQ=y
|
||||||
|
|
|
@ -680,7 +680,7 @@ CONFIG_DEVKMEM=y
|
||||||
CONFIG_SERIAL_8250=y
|
CONFIG_SERIAL_8250=y
|
||||||
CONFIG_SERIAL_8250_CONSOLE=y
|
CONFIG_SERIAL_8250_CONSOLE=y
|
||||||
CONFIG_SERIAL_8250_NR_UARTS=32
|
CONFIG_SERIAL_8250_NR_UARTS=32
|
||||||
CONFIG_SERIAL_8250_RUNTIME_UARTS=4
|
CONFIG_SERIAL_8250_RUNTIME_UARTS=1
|
||||||
CONFIG_SERIAL_8250_EXTENDED=y
|
CONFIG_SERIAL_8250_EXTENDED=y
|
||||||
CONFIG_SERIAL_8250_MANY_PORTS=y
|
CONFIG_SERIAL_8250_MANY_PORTS=y
|
||||||
CONFIG_SERIAL_8250_SHARE_IRQ=y
|
CONFIG_SERIAL_8250_SHARE_IRQ=y
|
||||||
|
|
|
@ -59,8 +59,6 @@ CONFIG_FAIR_GROUP_SCHED=y
|
||||||
CONFIG_USER_SCHED=y
|
CONFIG_USER_SCHED=y
|
||||||
# CONFIG_CGROUP_SCHED is not set
|
# CONFIG_CGROUP_SCHED is not set
|
||||||
# CONFIG_CGROUPS is not set
|
# CONFIG_CGROUPS is not set
|
||||||
CONFIG_SYSFS_DEPRECATED=y
|
|
||||||
CONFIG_SYSFS_DEPRECATED_V2=y
|
|
||||||
# CONFIG_RELAY is not set
|
# CONFIG_RELAY is not set
|
||||||
# CONFIG_NAMESPACES is not set
|
# CONFIG_NAMESPACES is not set
|
||||||
CONFIG_BLK_DEV_INITRD=y
|
CONFIG_BLK_DEV_INITRD=y
|
||||||
|
@ -480,7 +478,6 @@ CONFIG_BT_HIDP=m
|
||||||
# CONFIG_BT_HCIBFUSB is not set
|
# CONFIG_BT_HCIBFUSB is not set
|
||||||
# CONFIG_BT_HCIVHCI is not set
|
# CONFIG_BT_HCIVHCI is not set
|
||||||
# CONFIG_AF_RXRPC is not set
|
# CONFIG_AF_RXRPC is not set
|
||||||
# CONFIG_PHONET is not set
|
|
||||||
CONFIG_WIRELESS=y
|
CONFIG_WIRELESS=y
|
||||||
CONFIG_CFG80211=y
|
CONFIG_CFG80211=y
|
||||||
# CONFIG_CFG80211_REG_DEBUG is not set
|
# CONFIG_CFG80211_REG_DEBUG is not set
|
||||||
|
|
|
@ -149,10 +149,10 @@
|
||||||
|
|
||||||
#define USER(x...) \
|
#define USER(x...) \
|
||||||
9999: x; \
|
9999: x; \
|
||||||
.section __ex_table,"a"; \
|
.pushsection __ex_table,"a"; \
|
||||||
.align 3; \
|
.align 3; \
|
||||||
.long 9999b,9001f; \
|
.long 9999b,9001f; \
|
||||||
.previous
|
.popsection
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* SMP data memory barrier
|
* SMP data memory barrier
|
||||||
|
@ -193,10 +193,10 @@
|
||||||
.error "Unsupported inc macro argument"
|
.error "Unsupported inc macro argument"
|
||||||
.endif
|
.endif
|
||||||
|
|
||||||
.section __ex_table,"a"
|
.pushsection __ex_table,"a"
|
||||||
.align 3
|
.align 3
|
||||||
.long 9999b, \abort
|
.long 9999b, \abort
|
||||||
.previous
|
.popsection
|
||||||
.endm
|
.endm
|
||||||
|
|
||||||
.macro usracc, instr, reg, ptr, inc, cond, rept, abort
|
.macro usracc, instr, reg, ptr, inc, cond, rept, abort
|
||||||
|
@ -234,10 +234,10 @@
|
||||||
.error "Unsupported inc macro argument"
|
.error "Unsupported inc macro argument"
|
||||||
.endif
|
.endif
|
||||||
|
|
||||||
.section __ex_table,"a"
|
.pushsection __ex_table,"a"
|
||||||
.align 3
|
.align 3
|
||||||
.long 9999b, \abort
|
.long 9999b, \abort
|
||||||
.previous
|
.popsection
|
||||||
.endr
|
.endr
|
||||||
.endm
|
.endm
|
||||||
|
|
||||||
|
|
|
@ -15,6 +15,7 @@
|
||||||
#include <asm/glue.h>
|
#include <asm/glue.h>
|
||||||
#include <asm/shmparam.h>
|
#include <asm/shmparam.h>
|
||||||
#include <asm/cachetype.h>
|
#include <asm/cachetype.h>
|
||||||
|
#include <asm/outercache.h>
|
||||||
|
|
||||||
#define CACHE_COLOUR(vaddr) ((vaddr & (SHMLBA - 1)) >> PAGE_SHIFT)
|
#define CACHE_COLOUR(vaddr) ((vaddr & (SHMLBA - 1)) >> PAGE_SHIFT)
|
||||||
|
|
||||||
|
@ -219,12 +220,6 @@ struct cpu_cache_fns {
|
||||||
void (*dma_flush_range)(const void *, const void *);
|
void (*dma_flush_range)(const void *, const void *);
|
||||||
};
|
};
|
||||||
|
|
||||||
struct outer_cache_fns {
|
|
||||||
void (*inv_range)(unsigned long, unsigned long);
|
|
||||||
void (*clean_range)(unsigned long, unsigned long);
|
|
||||||
void (*flush_range)(unsigned long, unsigned long);
|
|
||||||
};
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Select the calling method
|
* Select the calling method
|
||||||
*/
|
*/
|
||||||
|
@ -281,37 +276,6 @@ extern void dmac_flush_range(const void *, const void *);
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef CONFIG_OUTER_CACHE
|
|
||||||
|
|
||||||
extern struct outer_cache_fns outer_cache;
|
|
||||||
|
|
||||||
static inline void outer_inv_range(unsigned long start, unsigned long end)
|
|
||||||
{
|
|
||||||
if (outer_cache.inv_range)
|
|
||||||
outer_cache.inv_range(start, end);
|
|
||||||
}
|
|
||||||
static inline void outer_clean_range(unsigned long start, unsigned long end)
|
|
||||||
{
|
|
||||||
if (outer_cache.clean_range)
|
|
||||||
outer_cache.clean_range(start, end);
|
|
||||||
}
|
|
||||||
static inline void outer_flush_range(unsigned long start, unsigned long end)
|
|
||||||
{
|
|
||||||
if (outer_cache.flush_range)
|
|
||||||
outer_cache.flush_range(start, end);
|
|
||||||
}
|
|
||||||
|
|
||||||
#else
|
|
||||||
|
|
||||||
static inline void outer_inv_range(unsigned long start, unsigned long end)
|
|
||||||
{ }
|
|
||||||
static inline void outer_clean_range(unsigned long start, unsigned long end)
|
|
||||||
{ }
|
|
||||||
static inline void outer_flush_range(unsigned long start, unsigned long end)
|
|
||||||
{ }
|
|
||||||
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Copy user data from/to a page which is mapped into a different
|
* Copy user data from/to a page which is mapped into a different
|
||||||
* processes address space. Really, we want to allow our "user
|
* processes address space. Really, we want to allow our "user
|
||||||
|
|
|
@ -13,6 +13,7 @@
|
||||||
#define __ASM_CLKDEV_H
|
#define __ASM_CLKDEV_H
|
||||||
|
|
||||||
struct clk;
|
struct clk;
|
||||||
|
struct device;
|
||||||
|
|
||||||
struct clk_lookup {
|
struct clk_lookup {
|
||||||
struct list_head node;
|
struct list_head node;
|
||||||
|
|
|
@ -21,14 +21,14 @@
|
||||||
"2: strt %0, [%2]\n" \
|
"2: strt %0, [%2]\n" \
|
||||||
" mov %0, #0\n" \
|
" mov %0, #0\n" \
|
||||||
"3:\n" \
|
"3:\n" \
|
||||||
" .section __ex_table,\"a\"\n" \
|
" .pushsection __ex_table,\"a\"\n" \
|
||||||
" .align 3\n" \
|
" .align 3\n" \
|
||||||
" .long 1b, 4f, 2b, 4f\n" \
|
" .long 1b, 4f, 2b, 4f\n" \
|
||||||
" .previous\n" \
|
" .popsection\n" \
|
||||||
" .section .fixup,\"ax\"\n" \
|
" .pushsection .fixup,\"ax\"\n" \
|
||||||
"4: mov %0, %4\n" \
|
"4: mov %0, %4\n" \
|
||||||
" b 3b\n" \
|
" b 3b\n" \
|
||||||
" .previous" \
|
" .popsection" \
|
||||||
: "=&r" (ret), "=&r" (oldval) \
|
: "=&r" (ret), "=&r" (oldval) \
|
||||||
: "r" (uaddr), "r" (oparg), "Ir" (-EFAULT) \
|
: "r" (uaddr), "r" (oparg), "Ir" (-EFAULT) \
|
||||||
: "cc", "memory")
|
: "cc", "memory")
|
||||||
|
@ -102,14 +102,14 @@ futex_atomic_cmpxchg_inatomic(int __user *uaddr, int oldval, int newval)
|
||||||
" it eq @ explicit IT needed for the 2b label\n"
|
" it eq @ explicit IT needed for the 2b label\n"
|
||||||
"2: streqt %2, [%3]\n"
|
"2: streqt %2, [%3]\n"
|
||||||
"3:\n"
|
"3:\n"
|
||||||
" .section __ex_table,\"a\"\n"
|
" .pushsection __ex_table,\"a\"\n"
|
||||||
" .align 3\n"
|
" .align 3\n"
|
||||||
" .long 1b, 4f, 2b, 4f\n"
|
" .long 1b, 4f, 2b, 4f\n"
|
||||||
" .previous\n"
|
" .popsection\n"
|
||||||
" .section .fixup,\"ax\"\n"
|
" .pushsection .fixup,\"ax\"\n"
|
||||||
"4: mov %0, %4\n"
|
"4: mov %0, %4\n"
|
||||||
" b 3b\n"
|
" b 3b\n"
|
||||||
" .previous"
|
" .popsection"
|
||||||
: "=&r" (val)
|
: "=&r" (val)
|
||||||
: "r" (oldval), "r" (newval), "r" (uaddr), "Ir" (-EFAULT)
|
: "r" (oldval), "r" (newval), "r" (uaddr), "Ir" (-EFAULT)
|
||||||
: "cc", "memory");
|
: "cc", "memory");
|
||||||
|
|
|
@ -11,7 +11,11 @@
|
||||||
|
|
||||||
#define kmap_prot PAGE_KERNEL
|
#define kmap_prot PAGE_KERNEL
|
||||||
|
|
||||||
#define flush_cache_kmaps() flush_cache_all()
|
#define flush_cache_kmaps() \
|
||||||
|
do { \
|
||||||
|
if (cache_is_vivt()) \
|
||||||
|
flush_cache_all(); \
|
||||||
|
} while (0)
|
||||||
|
|
||||||
extern pte_t *pkmap_page_table;
|
extern pte_t *pkmap_page_table;
|
||||||
|
|
||||||
|
@ -21,11 +25,20 @@ extern void *kmap_high(struct page *page);
|
||||||
extern void *kmap_high_get(struct page *page);
|
extern void *kmap_high_get(struct page *page);
|
||||||
extern void kunmap_high(struct page *page);
|
extern void kunmap_high(struct page *page);
|
||||||
|
|
||||||
|
extern void *kmap_high_l1_vipt(struct page *page, pte_t *saved_pte);
|
||||||
|
extern void kunmap_high_l1_vipt(struct page *page, pte_t saved_pte);
|
||||||
|
|
||||||
|
/*
|
||||||
|
* The following functions are already defined by <linux/highmem.h>
|
||||||
|
* when CONFIG_HIGHMEM is not set.
|
||||||
|
*/
|
||||||
|
#ifdef CONFIG_HIGHMEM
|
||||||
extern void *kmap(struct page *page);
|
extern void *kmap(struct page *page);
|
||||||
extern void kunmap(struct page *page);
|
extern void kunmap(struct page *page);
|
||||||
extern void *kmap_atomic(struct page *page, enum km_type type);
|
extern void *kmap_atomic(struct page *page, enum km_type type);
|
||||||
extern void kunmap_atomic(void *kvaddr, enum km_type type);
|
extern void kunmap_atomic(void *kvaddr, enum km_type type);
|
||||||
extern void *kmap_atomic_pfn(unsigned long pfn, enum km_type type);
|
extern void *kmap_atomic_pfn(unsigned long pfn, enum km_type type);
|
||||||
extern struct page *kmap_atomic_to_page(const void *ptr);
|
extern struct page *kmap_atomic_to_page(const void *ptr);
|
||||||
|
#endif
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -17,6 +17,7 @@
|
||||||
|
|
||||||
#ifndef __ASSEMBLY__
|
#ifndef __ASSEMBLY__
|
||||||
struct irqaction;
|
struct irqaction;
|
||||||
|
struct pt_regs;
|
||||||
extern void migrate_irqs(void);
|
extern void migrate_irqs(void);
|
||||||
|
|
||||||
extern void asm_do_IRQ(unsigned int, struct pt_regs *);
|
extern void asm_do_IRQ(unsigned int, struct pt_regs *);
|
||||||
|
|
|
@ -18,6 +18,7 @@ enum km_type {
|
||||||
KM_IRQ1,
|
KM_IRQ1,
|
||||||
KM_SOFTIRQ0,
|
KM_SOFTIRQ0,
|
||||||
KM_SOFTIRQ1,
|
KM_SOFTIRQ1,
|
||||||
|
KM_L1_CACHE,
|
||||||
KM_L2_CACHE,
|
KM_L2_CACHE,
|
||||||
KM_TYPE_NR
|
KM_TYPE_NR
|
||||||
};
|
};
|
||||||
|
|
|
@ -0,0 +1,75 @@
|
||||||
|
/*
|
||||||
|
* arch/arm/include/asm/outercache.h
|
||||||
|
*
|
||||||
|
* Copyright (C) 2010 ARM Ltd.
|
||||||
|
* Written by Catalin Marinas <catalin.marinas@arm.com>
|
||||||
|
*
|
||||||
|
* This program is free software; you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU General Public License version 2 as
|
||||||
|
* published by the Free Software Foundation.
|
||||||
|
*
|
||||||
|
* 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.
|
||||||
|
*
|
||||||
|
* 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
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef __ASM_OUTERCACHE_H
|
||||||
|
#define __ASM_OUTERCACHE_H
|
||||||
|
|
||||||
|
struct outer_cache_fns {
|
||||||
|
void (*inv_range)(unsigned long, unsigned long);
|
||||||
|
void (*clean_range)(unsigned long, unsigned long);
|
||||||
|
void (*flush_range)(unsigned long, unsigned long);
|
||||||
|
#ifdef CONFIG_OUTER_CACHE_SYNC
|
||||||
|
void (*sync)(void);
|
||||||
|
#endif
|
||||||
|
};
|
||||||
|
|
||||||
|
#ifdef CONFIG_OUTER_CACHE
|
||||||
|
|
||||||
|
extern struct outer_cache_fns outer_cache;
|
||||||
|
|
||||||
|
static inline void outer_inv_range(unsigned long start, unsigned long end)
|
||||||
|
{
|
||||||
|
if (outer_cache.inv_range)
|
||||||
|
outer_cache.inv_range(start, end);
|
||||||
|
}
|
||||||
|
static inline void outer_clean_range(unsigned long start, unsigned long end)
|
||||||
|
{
|
||||||
|
if (outer_cache.clean_range)
|
||||||
|
outer_cache.clean_range(start, end);
|
||||||
|
}
|
||||||
|
static inline void outer_flush_range(unsigned long start, unsigned long end)
|
||||||
|
{
|
||||||
|
if (outer_cache.flush_range)
|
||||||
|
outer_cache.flush_range(start, end);
|
||||||
|
}
|
||||||
|
|
||||||
|
#else
|
||||||
|
|
||||||
|
static inline void outer_inv_range(unsigned long start, unsigned long end)
|
||||||
|
{ }
|
||||||
|
static inline void outer_clean_range(unsigned long start, unsigned long end)
|
||||||
|
{ }
|
||||||
|
static inline void outer_flush_range(unsigned long start, unsigned long end)
|
||||||
|
{ }
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef CONFIG_OUTER_CACHE_SYNC
|
||||||
|
static inline void outer_sync(void)
|
||||||
|
{
|
||||||
|
if (outer_cache.sync)
|
||||||
|
outer_cache.sync();
|
||||||
|
}
|
||||||
|
#else
|
||||||
|
static inline void outer_sync(void)
|
||||||
|
{ }
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#endif /* __ASM_OUTERCACHE_H */
|
|
@ -60,6 +60,8 @@
|
||||||
#include <linux/linkage.h>
|
#include <linux/linkage.h>
|
||||||
#include <linux/irqflags.h>
|
#include <linux/irqflags.h>
|
||||||
|
|
||||||
|
#include <asm/outercache.h>
|
||||||
|
|
||||||
#define __exception __attribute__((section(".exception.text")))
|
#define __exception __attribute__((section(".exception.text")))
|
||||||
|
|
||||||
struct thread_info;
|
struct thread_info;
|
||||||
|
@ -137,10 +139,12 @@ extern unsigned int user_debug;
|
||||||
#define dmb() __asm__ __volatile__ ("" : : : "memory")
|
#define dmb() __asm__ __volatile__ ("" : : : "memory")
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if __LINUX_ARM_ARCH__ >= 7 || defined(CONFIG_SMP)
|
#ifdef CONFIG_ARCH_HAS_BARRIERS
|
||||||
#define mb() dmb()
|
#include <mach/barriers.h>
|
||||||
|
#elif __LINUX_ARM_ARCH__ >= 7 || defined(CONFIG_SMP)
|
||||||
|
#define mb() do { dsb(); outer_sync(); } while (0)
|
||||||
#define rmb() dmb()
|
#define rmb() dmb()
|
||||||
#define wmb() dmb()
|
#define wmb() mb()
|
||||||
#else
|
#else
|
||||||
#define mb() do { if (arch_is_coherent()) dmb(); else barrier(); } while (0)
|
#define mb() do { if (arch_is_coherent()) dmb(); else barrier(); } while (0)
|
||||||
#define rmb() do { if (arch_is_coherent()) dmb(); else barrier(); } while (0)
|
#define rmb() do { if (arch_is_coherent()) dmb(); else barrier(); } while (0)
|
||||||
|
@ -152,9 +156,9 @@ extern unsigned int user_debug;
|
||||||
#define smp_rmb() barrier()
|
#define smp_rmb() barrier()
|
||||||
#define smp_wmb() barrier()
|
#define smp_wmb() barrier()
|
||||||
#else
|
#else
|
||||||
#define smp_mb() mb()
|
#define smp_mb() dmb()
|
||||||
#define smp_rmb() rmb()
|
#define smp_rmb() dmb()
|
||||||
#define smp_wmb() wmb()
|
#define smp_wmb() dmb()
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#define read_barrier_depends() do { } while(0)
|
#define read_barrier_depends() do { } while(0)
|
||||||
|
|
|
@ -229,16 +229,16 @@ do { \
|
||||||
__asm__ __volatile__( \
|
__asm__ __volatile__( \
|
||||||
"1: ldrbt %1,[%2]\n" \
|
"1: ldrbt %1,[%2]\n" \
|
||||||
"2:\n" \
|
"2:\n" \
|
||||||
" .section .fixup,\"ax\"\n" \
|
" .pushsection .fixup,\"ax\"\n" \
|
||||||
" .align 2\n" \
|
" .align 2\n" \
|
||||||
"3: mov %0, %3\n" \
|
"3: mov %0, %3\n" \
|
||||||
" mov %1, #0\n" \
|
" mov %1, #0\n" \
|
||||||
" b 2b\n" \
|
" b 2b\n" \
|
||||||
" .previous\n" \
|
" .popsection\n" \
|
||||||
" .section __ex_table,\"a\"\n" \
|
" .pushsection __ex_table,\"a\"\n" \
|
||||||
" .align 3\n" \
|
" .align 3\n" \
|
||||||
" .long 1b, 3b\n" \
|
" .long 1b, 3b\n" \
|
||||||
" .previous" \
|
" .popsection" \
|
||||||
: "+r" (err), "=&r" (x) \
|
: "+r" (err), "=&r" (x) \
|
||||||
: "r" (addr), "i" (-EFAULT) \
|
: "r" (addr), "i" (-EFAULT) \
|
||||||
: "cc")
|
: "cc")
|
||||||
|
@ -265,16 +265,16 @@ do { \
|
||||||
__asm__ __volatile__( \
|
__asm__ __volatile__( \
|
||||||
"1: ldrt %1,[%2]\n" \
|
"1: ldrt %1,[%2]\n" \
|
||||||
"2:\n" \
|
"2:\n" \
|
||||||
" .section .fixup,\"ax\"\n" \
|
" .pushsection .fixup,\"ax\"\n" \
|
||||||
" .align 2\n" \
|
" .align 2\n" \
|
||||||
"3: mov %0, %3\n" \
|
"3: mov %0, %3\n" \
|
||||||
" mov %1, #0\n" \
|
" mov %1, #0\n" \
|
||||||
" b 2b\n" \
|
" b 2b\n" \
|
||||||
" .previous\n" \
|
" .popsection\n" \
|
||||||
" .section __ex_table,\"a\"\n" \
|
" .pushsection __ex_table,\"a\"\n" \
|
||||||
" .align 3\n" \
|
" .align 3\n" \
|
||||||
" .long 1b, 3b\n" \
|
" .long 1b, 3b\n" \
|
||||||
" .previous" \
|
" .popsection" \
|
||||||
: "+r" (err), "=&r" (x) \
|
: "+r" (err), "=&r" (x) \
|
||||||
: "r" (addr), "i" (-EFAULT) \
|
: "r" (addr), "i" (-EFAULT) \
|
||||||
: "cc")
|
: "cc")
|
||||||
|
@ -310,15 +310,15 @@ do { \
|
||||||
__asm__ __volatile__( \
|
__asm__ __volatile__( \
|
||||||
"1: strbt %1,[%2]\n" \
|
"1: strbt %1,[%2]\n" \
|
||||||
"2:\n" \
|
"2:\n" \
|
||||||
" .section .fixup,\"ax\"\n" \
|
" .pushsection .fixup,\"ax\"\n" \
|
||||||
" .align 2\n" \
|
" .align 2\n" \
|
||||||
"3: mov %0, %3\n" \
|
"3: mov %0, %3\n" \
|
||||||
" b 2b\n" \
|
" b 2b\n" \
|
||||||
" .previous\n" \
|
" .popsection\n" \
|
||||||
" .section __ex_table,\"a\"\n" \
|
" .pushsection __ex_table,\"a\"\n" \
|
||||||
" .align 3\n" \
|
" .align 3\n" \
|
||||||
" .long 1b, 3b\n" \
|
" .long 1b, 3b\n" \
|
||||||
" .previous" \
|
" .popsection" \
|
||||||
: "+r" (err) \
|
: "+r" (err) \
|
||||||
: "r" (x), "r" (__pu_addr), "i" (-EFAULT) \
|
: "r" (x), "r" (__pu_addr), "i" (-EFAULT) \
|
||||||
: "cc")
|
: "cc")
|
||||||
|
@ -343,15 +343,15 @@ do { \
|
||||||
__asm__ __volatile__( \
|
__asm__ __volatile__( \
|
||||||
"1: strt %1,[%2]\n" \
|
"1: strt %1,[%2]\n" \
|
||||||
"2:\n" \
|
"2:\n" \
|
||||||
" .section .fixup,\"ax\"\n" \
|
" .pushsection .fixup,\"ax\"\n" \
|
||||||
" .align 2\n" \
|
" .align 2\n" \
|
||||||
"3: mov %0, %3\n" \
|
"3: mov %0, %3\n" \
|
||||||
" b 2b\n" \
|
" b 2b\n" \
|
||||||
" .previous\n" \
|
" .popsection\n" \
|
||||||
" .section __ex_table,\"a\"\n" \
|
" .pushsection __ex_table,\"a\"\n" \
|
||||||
" .align 3\n" \
|
" .align 3\n" \
|
||||||
" .long 1b, 3b\n" \
|
" .long 1b, 3b\n" \
|
||||||
" .previous" \
|
" .popsection" \
|
||||||
: "+r" (err) \
|
: "+r" (err) \
|
||||||
: "r" (x), "r" (__pu_addr), "i" (-EFAULT) \
|
: "r" (x), "r" (__pu_addr), "i" (-EFAULT) \
|
||||||
: "cc")
|
: "cc")
|
||||||
|
@ -371,16 +371,16 @@ do { \
|
||||||
THUMB( "1: strt " __reg_oper1 ", [%1]\n" ) \
|
THUMB( "1: strt " __reg_oper1 ", [%1]\n" ) \
|
||||||
THUMB( "2: strt " __reg_oper0 ", [%1, #4]\n" ) \
|
THUMB( "2: strt " __reg_oper0 ", [%1, #4]\n" ) \
|
||||||
"3:\n" \
|
"3:\n" \
|
||||||
" .section .fixup,\"ax\"\n" \
|
" .pushsection .fixup,\"ax\"\n" \
|
||||||
" .align 2\n" \
|
" .align 2\n" \
|
||||||
"4: mov %0, %3\n" \
|
"4: mov %0, %3\n" \
|
||||||
" b 3b\n" \
|
" b 3b\n" \
|
||||||
" .previous\n" \
|
" .popsection\n" \
|
||||||
" .section __ex_table,\"a\"\n" \
|
" .pushsection __ex_table,\"a\"\n" \
|
||||||
" .align 3\n" \
|
" .align 3\n" \
|
||||||
" .long 1b, 4b\n" \
|
" .long 1b, 4b\n" \
|
||||||
" .long 2b, 4b\n" \
|
" .long 2b, 4b\n" \
|
||||||
" .previous" \
|
" .popsection" \
|
||||||
: "+r" (err), "+r" (__pu_addr) \
|
: "+r" (err), "+r" (__pu_addr) \
|
||||||
: "r" (x), "i" (-EFAULT) \
|
: "r" (x), "i" (-EFAULT) \
|
||||||
: "cc")
|
: "cc")
|
||||||
|
|
|
@ -59,23 +59,22 @@ struct iwmmxt_sigframe {
|
||||||
#endif /* CONFIG_IWMMXT */
|
#endif /* CONFIG_IWMMXT */
|
||||||
|
|
||||||
#ifdef CONFIG_VFP
|
#ifdef CONFIG_VFP
|
||||||
#if __LINUX_ARM_ARCH__ < 6
|
|
||||||
/* For ARM pre-v6, we use fstmiax and fldmiax. This adds one extra
|
|
||||||
* word after the registers, and a word of padding at the end for
|
|
||||||
* alignment. */
|
|
||||||
#define VFP_MAGIC 0x56465001
|
#define VFP_MAGIC 0x56465001
|
||||||
#define VFP_STORAGE_SIZE 152
|
|
||||||
#else
|
|
||||||
#define VFP_MAGIC 0x56465002
|
|
||||||
#define VFP_STORAGE_SIZE 144
|
|
||||||
#endif
|
|
||||||
|
|
||||||
struct vfp_sigframe
|
struct vfp_sigframe
|
||||||
{
|
{
|
||||||
unsigned long magic;
|
unsigned long magic;
|
||||||
unsigned long size;
|
unsigned long size;
|
||||||
union vfp_state storage;
|
struct user_vfp ufp;
|
||||||
};
|
struct user_vfp_exc ufp_exc;
|
||||||
|
} __attribute__((__aligned__(8)));
|
||||||
|
|
||||||
|
/*
|
||||||
|
* 8 byte for magic and size, 264 byte for ufp, 12 bytes for ufp_exc,
|
||||||
|
* 4 bytes padding.
|
||||||
|
*/
|
||||||
|
#define VFP_STORAGE_SIZE sizeof(struct vfp_sigframe)
|
||||||
|
|
||||||
#endif /* CONFIG_VFP */
|
#endif /* CONFIG_VFP */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -91,7 +90,7 @@ struct aux_sigframe {
|
||||||
#ifdef CONFIG_IWMMXT
|
#ifdef CONFIG_IWMMXT
|
||||||
struct iwmmxt_sigframe iwmmxt;
|
struct iwmmxt_sigframe iwmmxt;
|
||||||
#endif
|
#endif
|
||||||
#if 0 && defined CONFIG_VFP /* Not yet saved. */
|
#ifdef CONFIG_VFP
|
||||||
struct vfp_sigframe vfp;
|
struct vfp_sigframe vfp;
|
||||||
#endif
|
#endif
|
||||||
/* Something that isn't a valid magic number for any coprocessor. */
|
/* Something that isn't a valid magic number for any coprocessor. */
|
||||||
|
|
|
@ -83,11 +83,21 @@ struct user{
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* User specific VFP registers. If only VFPv2 is present, registers 16 to 31
|
* User specific VFP registers. If only VFPv2 is present, registers 16 to 31
|
||||||
* are ignored by the ptrace system call.
|
* are ignored by the ptrace system call and the signal handler.
|
||||||
*/
|
*/
|
||||||
struct user_vfp {
|
struct user_vfp {
|
||||||
unsigned long long fpregs[32];
|
unsigned long long fpregs[32];
|
||||||
unsigned long fpscr;
|
unsigned long fpscr;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/*
|
||||||
|
* VFP exception registers exposed to user space during signal delivery.
|
||||||
|
* Fields not relavant to the current VFP architecture are ignored.
|
||||||
|
*/
|
||||||
|
struct user_vfp_exc {
|
||||||
|
unsigned long fpexc;
|
||||||
|
unsigned long fpinst;
|
||||||
|
unsigned long fpinst2;
|
||||||
|
};
|
||||||
|
|
||||||
#endif /* _ARM_USER_H */
|
#endif /* _ARM_USER_H */
|
||||||
|
|
|
@ -523,16 +523,16 @@ ENDPROC(__und_usr)
|
||||||
/*
|
/*
|
||||||
* The out of line fixup for the ldrt above.
|
* The out of line fixup for the ldrt above.
|
||||||
*/
|
*/
|
||||||
.section .fixup, "ax"
|
.pushsection .fixup, "ax"
|
||||||
4: mov pc, r9
|
4: mov pc, r9
|
||||||
.previous
|
.popsection
|
||||||
.section __ex_table,"a"
|
.pushsection __ex_table,"a"
|
||||||
.long 1b, 4b
|
.long 1b, 4b
|
||||||
#if __LINUX_ARM_ARCH__ >= 7
|
#if __LINUX_ARM_ARCH__ >= 7
|
||||||
.long 2b, 4b
|
.long 2b, 4b
|
||||||
.long 3b, 4b
|
.long 3b, 4b
|
||||||
#endif
|
#endif
|
||||||
.previous
|
.popsection
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Check whether the instruction is a co-processor instruction.
|
* Check whether the instruction is a co-processor instruction.
|
||||||
|
@ -679,7 +679,7 @@ do_fpe:
|
||||||
.data
|
.data
|
||||||
ENTRY(fp_enter)
|
ENTRY(fp_enter)
|
||||||
.word no_fp
|
.word no_fp
|
||||||
.previous
|
.text
|
||||||
|
|
||||||
ENTRY(no_fp)
|
ENTRY(no_fp)
|
||||||
mov pc, lr
|
mov pc, lr
|
||||||
|
|
|
@ -62,15 +62,15 @@ int ftrace_modify_code(unsigned long pc, unsigned char *old_code,
|
||||||
" movne %0, #2 \n"
|
" movne %0, #2 \n"
|
||||||
"3:\n"
|
"3:\n"
|
||||||
|
|
||||||
".section .fixup, \"ax\"\n"
|
".pushsection .fixup, \"ax\"\n"
|
||||||
"4: mov %0, #1 \n"
|
"4: mov %0, #1 \n"
|
||||||
" b 3b \n"
|
" b 3b \n"
|
||||||
".previous\n"
|
".popsection\n"
|
||||||
|
|
||||||
".section __ex_table, \"a\"\n"
|
".pushsection __ex_table, \"a\"\n"
|
||||||
" .long 1b, 4b \n"
|
" .long 1b, 4b \n"
|
||||||
" .long 2b, 4b \n"
|
" .long 2b, 4b \n"
|
||||||
".previous\n"
|
".popsection\n"
|
||||||
|
|
||||||
: "=r"(err), "=r"(replaced)
|
: "=r"(err), "=r"(replaced)
|
||||||
: "r"(pc), "r"(new), "r"(old), "0"(err), "1"(replaced)
|
: "r"(pc), "r"(new), "r"(old), "0"(err), "1"(replaced)
|
||||||
|
|
|
@ -27,7 +27,6 @@
|
||||||
#include <linux/ioport.h>
|
#include <linux/ioport.h>
|
||||||
#include <linux/interrupt.h>
|
#include <linux/interrupt.h>
|
||||||
#include <linux/irq.h>
|
#include <linux/irq.h>
|
||||||
#include <linux/slab.h>
|
|
||||||
#include <linux/random.h>
|
#include <linux/random.h>
|
||||||
#include <linux/smp.h>
|
#include <linux/smp.h>
|
||||||
#include <linux/init.h>
|
#include <linux/init.h>
|
||||||
|
|
|
@ -22,6 +22,7 @@
|
||||||
#include <linux/kernel.h>
|
#include <linux/kernel.h>
|
||||||
#include <linux/kprobes.h>
|
#include <linux/kprobes.h>
|
||||||
#include <linux/module.h>
|
#include <linux/module.h>
|
||||||
|
#include <linux/slab.h>
|
||||||
#include <linux/stop_machine.h>
|
#include <linux/stop_machine.h>
|
||||||
#include <linux/stringify.h>
|
#include <linux/stringify.h>
|
||||||
#include <asm/traps.h>
|
#include <asm/traps.h>
|
||||||
|
@ -393,6 +394,14 @@ void __kprobes jprobe_return(void)
|
||||||
/*
|
/*
|
||||||
* Setup an empty pt_regs. Fill SP and PC fields as
|
* Setup an empty pt_regs. Fill SP and PC fields as
|
||||||
* they're needed by longjmp_break_handler.
|
* they're needed by longjmp_break_handler.
|
||||||
|
*
|
||||||
|
* We allocate some slack between the original SP and start of
|
||||||
|
* our fabricated regs. To be precise we want to have worst case
|
||||||
|
* covered which is STMFD with all 16 regs so we allocate 2 *
|
||||||
|
* sizeof(struct_pt_regs)).
|
||||||
|
*
|
||||||
|
* This is to prevent any simulated instruction from writing
|
||||||
|
* over the regs when they are accessing the stack.
|
||||||
*/
|
*/
|
||||||
"sub sp, %0, %1 \n\t"
|
"sub sp, %0, %1 \n\t"
|
||||||
"ldr r0, ="__stringify(JPROBE_MAGIC_ADDR)"\n\t"
|
"ldr r0, ="__stringify(JPROBE_MAGIC_ADDR)"\n\t"
|
||||||
|
@ -410,7 +419,7 @@ void __kprobes jprobe_return(void)
|
||||||
"ldmia sp, {r0 - pc} \n\t"
|
"ldmia sp, {r0 - pc} \n\t"
|
||||||
:
|
:
|
||||||
: "r" (kcb->jprobe_saved_regs.ARM_sp),
|
: "r" (kcb->jprobe_saved_regs.ARM_sp),
|
||||||
"I" (sizeof(struct pt_regs)),
|
"I" (sizeof(struct pt_regs) * 2),
|
||||||
"J" (offsetof(struct pt_regs, ARM_sp)),
|
"J" (offsetof(struct pt_regs, ARM_sp)),
|
||||||
"J" (offsetof(struct pt_regs, ARM_pc)),
|
"J" (offsetof(struct pt_regs, ARM_pc)),
|
||||||
"J" (offsetof(struct pt_regs, ARM_cpsr))
|
"J" (offsetof(struct pt_regs, ARM_cpsr))
|
||||||
|
|
|
@ -16,9 +16,9 @@
|
||||||
#include <linux/mm.h>
|
#include <linux/mm.h>
|
||||||
#include <linux/elf.h>
|
#include <linux/elf.h>
|
||||||
#include <linux/vmalloc.h>
|
#include <linux/vmalloc.h>
|
||||||
#include <linux/slab.h>
|
|
||||||
#include <linux/fs.h>
|
#include <linux/fs.h>
|
||||||
#include <linux/string.h>
|
#include <linux/string.h>
|
||||||
|
#include <linux/gfp.h>
|
||||||
|
|
||||||
#include <asm/pgtable.h>
|
#include <asm/pgtable.h>
|
||||||
#include <asm/sections.h>
|
#include <asm/sections.h>
|
||||||
|
|
|
@ -16,7 +16,6 @@
|
||||||
#include <linux/mm.h>
|
#include <linux/mm.h>
|
||||||
#include <linux/stddef.h>
|
#include <linux/stddef.h>
|
||||||
#include <linux/unistd.h>
|
#include <linux/unistd.h>
|
||||||
#include <linux/slab.h>
|
|
||||||
#include <linux/user.h>
|
#include <linux/user.h>
|
||||||
#include <linux/delay.h>
|
#include <linux/delay.h>
|
||||||
#include <linux/reboot.h>
|
#include <linux/reboot.h>
|
||||||
|
@ -356,7 +355,7 @@ EXPORT_SYMBOL(dump_fpu);
|
||||||
* the thread function, and r3 points to the exit function.
|
* the thread function, and r3 points to the exit function.
|
||||||
*/
|
*/
|
||||||
extern void kernel_thread_helper(void);
|
extern void kernel_thread_helper(void);
|
||||||
asm( ".section .text\n"
|
asm( ".pushsection .text\n"
|
||||||
" .align\n"
|
" .align\n"
|
||||||
" .type kernel_thread_helper, #function\n"
|
" .type kernel_thread_helper, #function\n"
|
||||||
"kernel_thread_helper:\n"
|
"kernel_thread_helper:\n"
|
||||||
|
@ -364,11 +363,11 @@ asm( ".section .text\n"
|
||||||
" mov lr, r3\n"
|
" mov lr, r3\n"
|
||||||
" mov pc, r2\n"
|
" mov pc, r2\n"
|
||||||
" .size kernel_thread_helper, . - kernel_thread_helper\n"
|
" .size kernel_thread_helper, . - kernel_thread_helper\n"
|
||||||
" .previous");
|
" .popsection");
|
||||||
|
|
||||||
#ifdef CONFIG_ARM_UNWIND
|
#ifdef CONFIG_ARM_UNWIND
|
||||||
extern void kernel_thread_exit(long code);
|
extern void kernel_thread_exit(long code);
|
||||||
asm( ".section .text\n"
|
asm( ".pushsection .text\n"
|
||||||
" .align\n"
|
" .align\n"
|
||||||
" .type kernel_thread_exit, #function\n"
|
" .type kernel_thread_exit, #function\n"
|
||||||
"kernel_thread_exit:\n"
|
"kernel_thread_exit:\n"
|
||||||
|
@ -378,7 +377,7 @@ asm( ".section .text\n"
|
||||||
" nop\n"
|
" nop\n"
|
||||||
" .fnend\n"
|
" .fnend\n"
|
||||||
" .size kernel_thread_exit, . - kernel_thread_exit\n"
|
" .size kernel_thread_exit, . - kernel_thread_exit\n"
|
||||||
" .previous");
|
" .popsection");
|
||||||
#else
|
#else
|
||||||
#define kernel_thread_exit do_exit
|
#define kernel_thread_exit do_exit
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -18,6 +18,7 @@
|
||||||
#include <asm/cacheflush.h>
|
#include <asm/cacheflush.h>
|
||||||
#include <asm/ucontext.h>
|
#include <asm/ucontext.h>
|
||||||
#include <asm/unistd.h>
|
#include <asm/unistd.h>
|
||||||
|
#include <asm/vfp.h>
|
||||||
|
|
||||||
#include "ptrace.h"
|
#include "ptrace.h"
|
||||||
#include "signal.h"
|
#include "signal.h"
|
||||||
|
@ -175,6 +176,90 @@ static int restore_iwmmxt_context(struct iwmmxt_sigframe *frame)
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#ifdef CONFIG_VFP
|
||||||
|
|
||||||
|
static int preserve_vfp_context(struct vfp_sigframe __user *frame)
|
||||||
|
{
|
||||||
|
struct thread_info *thread = current_thread_info();
|
||||||
|
struct vfp_hard_struct *h = &thread->vfpstate.hard;
|
||||||
|
const unsigned long magic = VFP_MAGIC;
|
||||||
|
const unsigned long size = VFP_STORAGE_SIZE;
|
||||||
|
int err = 0;
|
||||||
|
|
||||||
|
vfp_sync_hwstate(thread);
|
||||||
|
__put_user_error(magic, &frame->magic, err);
|
||||||
|
__put_user_error(size, &frame->size, err);
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Copy the floating point registers. There can be unused
|
||||||
|
* registers see asm/hwcap.h for details.
|
||||||
|
*/
|
||||||
|
err |= __copy_to_user(&frame->ufp.fpregs, &h->fpregs,
|
||||||
|
sizeof(h->fpregs));
|
||||||
|
/*
|
||||||
|
* Copy the status and control register.
|
||||||
|
*/
|
||||||
|
__put_user_error(h->fpscr, &frame->ufp.fpscr, err);
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Copy the exception registers.
|
||||||
|
*/
|
||||||
|
__put_user_error(h->fpexc, &frame->ufp_exc.fpexc, err);
|
||||||
|
__put_user_error(h->fpinst, &frame->ufp_exc.fpinst, err);
|
||||||
|
__put_user_error(h->fpinst2, &frame->ufp_exc.fpinst2, err);
|
||||||
|
|
||||||
|
return err ? -EFAULT : 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
static int restore_vfp_context(struct vfp_sigframe __user *frame)
|
||||||
|
{
|
||||||
|
struct thread_info *thread = current_thread_info();
|
||||||
|
struct vfp_hard_struct *h = &thread->vfpstate.hard;
|
||||||
|
unsigned long magic;
|
||||||
|
unsigned long size;
|
||||||
|
unsigned long fpexc;
|
||||||
|
int err = 0;
|
||||||
|
|
||||||
|
__get_user_error(magic, &frame->magic, err);
|
||||||
|
__get_user_error(size, &frame->size, err);
|
||||||
|
|
||||||
|
if (err)
|
||||||
|
return -EFAULT;
|
||||||
|
if (magic != VFP_MAGIC || size != VFP_STORAGE_SIZE)
|
||||||
|
return -EINVAL;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Copy the floating point registers. There can be unused
|
||||||
|
* registers see asm/hwcap.h for details.
|
||||||
|
*/
|
||||||
|
err |= __copy_from_user(&h->fpregs, &frame->ufp.fpregs,
|
||||||
|
sizeof(h->fpregs));
|
||||||
|
/*
|
||||||
|
* Copy the status and control register.
|
||||||
|
*/
|
||||||
|
__get_user_error(h->fpscr, &frame->ufp.fpscr, err);
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Sanitise and restore the exception registers.
|
||||||
|
*/
|
||||||
|
__get_user_error(fpexc, &frame->ufp_exc.fpexc, err);
|
||||||
|
/* Ensure the VFP is enabled. */
|
||||||
|
fpexc |= FPEXC_EN;
|
||||||
|
/* Ensure FPINST2 is invalid and the exception flag is cleared. */
|
||||||
|
fpexc &= ~(FPEXC_EX | FPEXC_FP2V);
|
||||||
|
h->fpexc = fpexc;
|
||||||
|
|
||||||
|
__get_user_error(h->fpinst, &frame->ufp_exc.fpinst, err);
|
||||||
|
__get_user_error(h->fpinst2, &frame->ufp_exc.fpinst2, err);
|
||||||
|
|
||||||
|
if (!err)
|
||||||
|
vfp_flush_hwstate(thread);
|
||||||
|
|
||||||
|
return err ? -EFAULT : 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Do a signal return; undo the signal stack. These are aligned to 64-bit.
|
* Do a signal return; undo the signal stack. These are aligned to 64-bit.
|
||||||
*/
|
*/
|
||||||
|
@ -233,8 +318,8 @@ static int restore_sigframe(struct pt_regs *regs, struct sigframe __user *sf)
|
||||||
err |= restore_iwmmxt_context(&aux->iwmmxt);
|
err |= restore_iwmmxt_context(&aux->iwmmxt);
|
||||||
#endif
|
#endif
|
||||||
#ifdef CONFIG_VFP
|
#ifdef CONFIG_VFP
|
||||||
// if (err == 0)
|
if (err == 0)
|
||||||
// err |= vfp_restore_state(&sf->aux.vfp);
|
err |= restore_vfp_context(&aux->vfp);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
return err;
|
return err;
|
||||||
|
@ -348,8 +433,8 @@ setup_sigframe(struct sigframe __user *sf, struct pt_regs *regs, sigset_t *set)
|
||||||
err |= preserve_iwmmxt_context(&aux->iwmmxt);
|
err |= preserve_iwmmxt_context(&aux->iwmmxt);
|
||||||
#endif
|
#endif
|
||||||
#ifdef CONFIG_VFP
|
#ifdef CONFIG_VFP
|
||||||
// if (err == 0)
|
if (err == 0)
|
||||||
// err |= vfp_save_state(&sf->aux.vfp);
|
err |= preserve_vfp_context(&aux->vfp);
|
||||||
#endif
|
#endif
|
||||||
__put_user_error(0, &aux->end_magic, err);
|
__put_user_error(0, &aux->end_magic, err);
|
||||||
|
|
||||||
|
|
|
@ -15,7 +15,6 @@
|
||||||
#include <linux/module.h>
|
#include <linux/module.h>
|
||||||
#include <linux/errno.h>
|
#include <linux/errno.h>
|
||||||
#include <linux/sched.h>
|
#include <linux/sched.h>
|
||||||
#include <linux/slab.h>
|
|
||||||
#include <linux/mm.h>
|
#include <linux/mm.h>
|
||||||
#include <linux/sem.h>
|
#include <linux/sem.h>
|
||||||
#include <linux/msg.h>
|
#include <linux/msg.h>
|
||||||
|
@ -27,6 +26,7 @@
|
||||||
#include <linux/file.h>
|
#include <linux/file.h>
|
||||||
#include <linux/ipc.h>
|
#include <linux/ipc.h>
|
||||||
#include <linux/uaccess.h>
|
#include <linux/uaccess.h>
|
||||||
|
#include <linux/slab.h>
|
||||||
|
|
||||||
/* Fork a new task - this creates a new program thread.
|
/* Fork a new task - this creates a new program thread.
|
||||||
* This is called indirectly via a small wrapper
|
* This is called indirectly via a small wrapper
|
||||||
|
|
|
@ -110,13 +110,13 @@ no_frame: ldmfd sp!, {r4 - r8, pc}
|
||||||
ENDPROC(__backtrace)
|
ENDPROC(__backtrace)
|
||||||
ENDPROC(c_backtrace)
|
ENDPROC(c_backtrace)
|
||||||
|
|
||||||
.section __ex_table,"a"
|
.pushsection __ex_table,"a"
|
||||||
.align 3
|
.align 3
|
||||||
.long 1001b, 1006b
|
.long 1001b, 1006b
|
||||||
.long 1002b, 1006b
|
.long 1002b, 1006b
|
||||||
.long 1003b, 1006b
|
.long 1003b, 1006b
|
||||||
.long 1004b, 1006b
|
.long 1004b, 1006b
|
||||||
.previous
|
.popsection
|
||||||
|
|
||||||
#define instr r4
|
#define instr r4
|
||||||
#define reg r5
|
#define reg r5
|
||||||
|
|
|
@ -46,8 +46,8 @@ USER( strnebt r2, [r0])
|
||||||
ldmfd sp!, {r1, pc}
|
ldmfd sp!, {r1, pc}
|
||||||
ENDPROC(__clear_user)
|
ENDPROC(__clear_user)
|
||||||
|
|
||||||
.section .fixup,"ax"
|
.pushsection .fixup,"ax"
|
||||||
.align 0
|
.align 0
|
||||||
9001: ldmfd sp!, {r0, pc}
|
9001: ldmfd sp!, {r0, pc}
|
||||||
.previous
|
.popsection
|
||||||
|
|
||||||
|
|
|
@ -90,7 +90,7 @@ ENTRY(__copy_from_user)
|
||||||
|
|
||||||
ENDPROC(__copy_from_user)
|
ENDPROC(__copy_from_user)
|
||||||
|
|
||||||
.section .fixup,"ax"
|
.pushsection .fixup,"ax"
|
||||||
.align 0
|
.align 0
|
||||||
copy_abort_preamble
|
copy_abort_preamble
|
||||||
ldmfd sp!, {r1, r2}
|
ldmfd sp!, {r1, r2}
|
||||||
|
@ -100,5 +100,5 @@ ENDPROC(__copy_from_user)
|
||||||
bl __memzero
|
bl __memzero
|
||||||
ldr r0, [sp], #4
|
ldr r0, [sp], #4
|
||||||
copy_abort_end
|
copy_abort_end
|
||||||
.previous
|
.popsection
|
||||||
|
|
||||||
|
|
|
@ -94,12 +94,12 @@ WEAK(__copy_to_user)
|
||||||
|
|
||||||
ENDPROC(__copy_to_user)
|
ENDPROC(__copy_to_user)
|
||||||
|
|
||||||
.section .fixup,"ax"
|
.pushsection .fixup,"ax"
|
||||||
.align 0
|
.align 0
|
||||||
copy_abort_preamble
|
copy_abort_preamble
|
||||||
ldmfd sp!, {r1, r2, r3}
|
ldmfd sp!, {r1, r2, r3}
|
||||||
sub r0, r0, r1
|
sub r0, r0, r1
|
||||||
rsb r0, r0, r2
|
rsb r0, r0, r2
|
||||||
copy_abort_end
|
copy_abort_end
|
||||||
.previous
|
.popsection
|
||||||
|
|
||||||
|
|
|
@ -68,7 +68,7 @@
|
||||||
* so properly, we would have to add in whatever registers were loaded before
|
* so properly, we would have to add in whatever registers were loaded before
|
||||||
* the fault, which, with the current asm above is not predictable.
|
* the fault, which, with the current asm above is not predictable.
|
||||||
*/
|
*/
|
||||||
.section .fixup,"ax"
|
.pushsection .fixup,"ax"
|
||||||
.align 4
|
.align 4
|
||||||
9001: mov r4, #-EFAULT
|
9001: mov r4, #-EFAULT
|
||||||
ldr r5, [fp, #4] @ *err_ptr
|
ldr r5, [fp, #4] @ *err_ptr
|
||||||
|
@ -80,4 +80,4 @@
|
||||||
strneb r0, [r1], #1
|
strneb r0, [r1], #1
|
||||||
bne 9002b
|
bne 9002b
|
||||||
load_regs
|
load_regs
|
||||||
.previous
|
.popsection
|
||||||
|
|
|
@ -64,9 +64,9 @@ __get_user_bad:
|
||||||
mov pc, lr
|
mov pc, lr
|
||||||
ENDPROC(__get_user_bad)
|
ENDPROC(__get_user_bad)
|
||||||
|
|
||||||
.section __ex_table, "a"
|
.pushsection __ex_table, "a"
|
||||||
.long 1b, __get_user_bad
|
.long 1b, __get_user_bad
|
||||||
.long 2b, __get_user_bad
|
.long 2b, __get_user_bad
|
||||||
.long 3b, __get_user_bad
|
.long 3b, __get_user_bad
|
||||||
.long 4b, __get_user_bad
|
.long 4b, __get_user_bad
|
||||||
.previous
|
.popsection
|
||||||
|
|
|
@ -74,7 +74,7 @@ ENTRY(memmove)
|
||||||
rsb ip, ip, #32
|
rsb ip, ip, #32
|
||||||
addne pc, pc, ip @ C is always clear here
|
addne pc, pc, ip @ C is always clear here
|
||||||
b 7f
|
b 7f
|
||||||
6: nop
|
6: W(nop)
|
||||||
W(ldr) r3, [r1, #-4]!
|
W(ldr) r3, [r1, #-4]!
|
||||||
W(ldr) r4, [r1, #-4]!
|
W(ldr) r4, [r1, #-4]!
|
||||||
W(ldr) r5, [r1, #-4]!
|
W(ldr) r5, [r1, #-4]!
|
||||||
|
@ -85,7 +85,7 @@ ENTRY(memmove)
|
||||||
|
|
||||||
add pc, pc, ip
|
add pc, pc, ip
|
||||||
nop
|
nop
|
||||||
nop
|
W(nop)
|
||||||
W(str) r3, [r0, #-4]!
|
W(str) r3, [r0, #-4]!
|
||||||
W(str) r4, [r0, #-4]!
|
W(str) r4, [r0, #-4]!
|
||||||
W(str) r5, [r0, #-4]!
|
W(str) r5, [r0, #-4]!
|
||||||
|
|
|
@ -81,11 +81,11 @@ __put_user_bad:
|
||||||
mov pc, lr
|
mov pc, lr
|
||||||
ENDPROC(__put_user_bad)
|
ENDPROC(__put_user_bad)
|
||||||
|
|
||||||
.section __ex_table, "a"
|
.pushsection __ex_table, "a"
|
||||||
.long 1b, __put_user_bad
|
.long 1b, __put_user_bad
|
||||||
.long 2b, __put_user_bad
|
.long 2b, __put_user_bad
|
||||||
.long 3b, __put_user_bad
|
.long 3b, __put_user_bad
|
||||||
.long 4b, __put_user_bad
|
.long 4b, __put_user_bad
|
||||||
.long 5b, __put_user_bad
|
.long 5b, __put_user_bad
|
||||||
.long 6b, __put_user_bad
|
.long 6b, __put_user_bad
|
||||||
.previous
|
.popsection
|
||||||
|
|
|
@ -33,11 +33,11 @@ ENTRY(__strncpy_from_user)
|
||||||
mov pc, lr
|
mov pc, lr
|
||||||
ENDPROC(__strncpy_from_user)
|
ENDPROC(__strncpy_from_user)
|
||||||
|
|
||||||
.section .fixup,"ax"
|
.pushsection .fixup,"ax"
|
||||||
.align 0
|
.align 0
|
||||||
9001: mov r3, #0
|
9001: mov r3, #0
|
||||||
strb r3, [r0, #0] @ null terminate
|
strb r3, [r0, #0] @ null terminate
|
||||||
mov r0, #-EFAULT
|
mov r0, #-EFAULT
|
||||||
mov pc, lr
|
mov pc, lr
|
||||||
.previous
|
.popsection
|
||||||
|
|
||||||
|
|
|
@ -33,8 +33,8 @@ ENTRY(__strnlen_user)
|
||||||
mov pc, lr
|
mov pc, lr
|
||||||
ENDPROC(__strnlen_user)
|
ENDPROC(__strnlen_user)
|
||||||
|
|
||||||
.section .fixup,"ax"
|
.pushsection .fixup,"ax"
|
||||||
.align 0
|
.align 0
|
||||||
9001: mov r0, #0
|
9001: mov r0, #0
|
||||||
mov pc, lr
|
mov pc, lr
|
||||||
.previous
|
.popsection
|
||||||
|
|
|
@ -279,10 +279,10 @@ USER( strgtbt r3, [r0], #1) @ May fault
|
||||||
b .Lc2u_finished
|
b .Lc2u_finished
|
||||||
ENDPROC(__copy_to_user)
|
ENDPROC(__copy_to_user)
|
||||||
|
|
||||||
.section .fixup,"ax"
|
.pushsection .fixup,"ax"
|
||||||
.align 0
|
.align 0
|
||||||
9001: ldmfd sp!, {r0, r4 - r7, pc}
|
9001: ldmfd sp!, {r0, r4 - r7, pc}
|
||||||
.previous
|
.popsection
|
||||||
|
|
||||||
/* Prototype: unsigned long __copy_from_user(void *to,const void *from,unsigned long n);
|
/* Prototype: unsigned long __copy_from_user(void *to,const void *from,unsigned long n);
|
||||||
* Purpose : copy a block from user memory to kernel memory
|
* Purpose : copy a block from user memory to kernel memory
|
||||||
|
@ -545,7 +545,7 @@ USER( ldrgtbt r3, [r1], #1) @ May fault
|
||||||
b .Lcfu_finished
|
b .Lcfu_finished
|
||||||
ENDPROC(__copy_from_user)
|
ENDPROC(__copy_from_user)
|
||||||
|
|
||||||
.section .fixup,"ax"
|
.pushsection .fixup,"ax"
|
||||||
.align 0
|
.align 0
|
||||||
/*
|
/*
|
||||||
* We took an exception. r0 contains a pointer to
|
* We took an exception. r0 contains a pointer to
|
||||||
|
@ -559,5 +559,5 @@ ENDPROC(__copy_from_user)
|
||||||
blne __memzero
|
blne __memzero
|
||||||
mov r0, r4
|
mov r0, r4
|
||||||
ldmfd sp!, {r4 - r7, pc}
|
ldmfd sp!, {r4 - r7, pc}
|
||||||
.previous
|
.popsection
|
||||||
|
|
||||||
|
|
|
@ -16,6 +16,7 @@
|
||||||
#include <linux/mm.h>
|
#include <linux/mm.h>
|
||||||
#include <linux/sched.h>
|
#include <linux/sched.h>
|
||||||
#include <linux/hardirq.h> /* for in_atomic() */
|
#include <linux/hardirq.h> /* for in_atomic() */
|
||||||
|
#include <linux/gfp.h>
|
||||||
#include <asm/current.h>
|
#include <asm/current.h>
|
||||||
#include <asm/page.h>
|
#include <asm/page.h>
|
||||||
|
|
||||||
|
|
|
@ -20,6 +20,7 @@
|
||||||
#include <linux/timex.h>
|
#include <linux/timex.h>
|
||||||
#include <linux/signal.h>
|
#include <linux/signal.h>
|
||||||
#include <linux/clk.h>
|
#include <linux/clk.h>
|
||||||
|
#include <linux/gfp.h>
|
||||||
|
|
||||||
#include <mach/hardware.h>
|
#include <mach/hardware.h>
|
||||||
#include <asm/irq.h>
|
#include <asm/irq.h>
|
||||||
|
|
|
@ -16,8 +16,8 @@ obj-$(CONFIG_ARCH_AT91SAM9261) += at91sam9261.o at91sam926x_time.o at91sam9261_d
|
||||||
obj-$(CONFIG_ARCH_AT91SAM9G10) += at91sam9261.o at91sam926x_time.o at91sam9261_devices.o sam9_smc.o
|
obj-$(CONFIG_ARCH_AT91SAM9G10) += at91sam9261.o at91sam926x_time.o at91sam9261_devices.o sam9_smc.o
|
||||||
obj-$(CONFIG_ARCH_AT91SAM9263) += at91sam9263.o at91sam926x_time.o at91sam9263_devices.o sam9_smc.o
|
obj-$(CONFIG_ARCH_AT91SAM9263) += at91sam9263.o at91sam926x_time.o at91sam9263_devices.o sam9_smc.o
|
||||||
obj-$(CONFIG_ARCH_AT91SAM9RL) += at91sam9rl.o at91sam926x_time.o at91sam9rl_devices.o sam9_smc.o
|
obj-$(CONFIG_ARCH_AT91SAM9RL) += at91sam9rl.o at91sam926x_time.o at91sam9rl_devices.o sam9_smc.o
|
||||||
obj-$(CONFIG_ARCH_AT91SAM9G20) += at91sam9260.o at91sam926x_time.o at91sam9260_devices.o sam9_smc.o
|
obj-$(CONFIG_ARCH_AT91SAM9G20) += at91sam9260.o at91sam926x_time.o at91sam9260_devices.o sam9_smc.o
|
||||||
obj-$(CONFIG_ARCH_AT91SAM9G45) += at91sam9g45.o at91sam926x_time.o at91sam9g45_devices.o sam9_smc.o
|
obj-$(CONFIG_ARCH_AT91SAM9G45) += at91sam9g45.o at91sam926x_time.o at91sam9g45_devices.o sam9_smc.o
|
||||||
obj-$(CONFIG_ARCH_AT91CAP9) += at91cap9.o at91sam926x_time.o at91cap9_devices.o sam9_smc.o
|
obj-$(CONFIG_ARCH_AT91CAP9) += at91cap9.o at91sam926x_time.o at91cap9_devices.o sam9_smc.o
|
||||||
obj-$(CONFIG_ARCH_AT572D940HF) += at572d940hf.o at91sam926x_time.o at572d940hf_devices.o sam9_smc.o
|
obj-$(CONFIG_ARCH_AT572D940HF) += at572d940hf.o at91sam926x_time.o at572d940hf_devices.o sam9_smc.o
|
||||||
obj-$(CONFIG_ARCH_AT91X40) += at91x40.o at91x40_time.o
|
obj-$(CONFIG_ARCH_AT91X40) += at91x40.o at91x40_time.o
|
||||||
|
|
|
@ -175,8 +175,6 @@ ENTRY(at91_slow_clock)
|
||||||
orr r3, r3, #(1 << 29) /* bit 29 always set */
|
orr r3, r3, #(1 << 29) /* bit 29 always set */
|
||||||
str r3, [r1, #(AT91_CKGR_PLLAR - AT91_PMC)]
|
str r3, [r1, #(AT91_CKGR_PLLAR - AT91_PMC)]
|
||||||
|
|
||||||
wait_pllalock
|
|
||||||
|
|
||||||
/* Save PLLB setting and disable it */
|
/* Save PLLB setting and disable it */
|
||||||
ldr r3, [r1, #(AT91_CKGR_PLLBR - AT91_PMC)]
|
ldr r3, [r1, #(AT91_CKGR_PLLBR - AT91_PMC)]
|
||||||
str r3, .saved_pllbr
|
str r3, .saved_pllbr
|
||||||
|
@ -184,8 +182,6 @@ ENTRY(at91_slow_clock)
|
||||||
mov r3, #AT91_PMC_PLLCOUNT
|
mov r3, #AT91_PMC_PLLCOUNT
|
||||||
str r3, [r1, #(AT91_CKGR_PLLBR - AT91_PMC)]
|
str r3, [r1, #(AT91_CKGR_PLLBR - AT91_PMC)]
|
||||||
|
|
||||||
wait_pllblock
|
|
||||||
|
|
||||||
/* Turn off the main oscillator */
|
/* Turn off the main oscillator */
|
||||||
ldr r3, [r1, #(AT91_CKGR_MOR - AT91_PMC)]
|
ldr r3, [r1, #(AT91_CKGR_MOR - AT91_PMC)]
|
||||||
bic r3, r3, #AT91_PMC_MOSCEN
|
bic r3, r3, #AT91_PMC_MOSCEN
|
||||||
|
@ -205,13 +201,25 @@ ENTRY(at91_slow_clock)
|
||||||
ldr r3, .saved_pllbr
|
ldr r3, .saved_pllbr
|
||||||
str r3, [r1, #(AT91_CKGR_PLLBR - AT91_PMC)]
|
str r3, [r1, #(AT91_CKGR_PLLBR - AT91_PMC)]
|
||||||
|
|
||||||
|
tst r3, #(AT91_PMC_MUL & 0xff0000)
|
||||||
|
bne 1f
|
||||||
|
tst r3, #(AT91_PMC_MUL & ~0xff0000)
|
||||||
|
beq 2f
|
||||||
|
1:
|
||||||
wait_pllblock
|
wait_pllblock
|
||||||
|
2:
|
||||||
|
|
||||||
/* Restore PLLA setting */
|
/* Restore PLLA setting */
|
||||||
ldr r3, .saved_pllar
|
ldr r3, .saved_pllar
|
||||||
str r3, [r1, #(AT91_CKGR_PLLAR - AT91_PMC)]
|
str r3, [r1, #(AT91_CKGR_PLLAR - AT91_PMC)]
|
||||||
|
|
||||||
|
tst r3, #(AT91_PMC_MUL & 0xff0000)
|
||||||
|
bne 3f
|
||||||
|
tst r3, #(AT91_PMC_MUL & ~0xff0000)
|
||||||
|
beq 4f
|
||||||
|
3:
|
||||||
wait_pllalock
|
wait_pllalock
|
||||||
|
4:
|
||||||
|
|
||||||
#ifdef SLOWDOWN_MASTER_CLOCK
|
#ifdef SLOWDOWN_MASTER_CLOCK
|
||||||
/*
|
/*
|
||||||
|
|
|
@ -28,6 +28,7 @@
|
||||||
#include <linux/interrupt.h>
|
#include <linux/interrupt.h>
|
||||||
#include <linux/irqreturn.h>
|
#include <linux/irqreturn.h>
|
||||||
#include <linux/proc_fs.h>
|
#include <linux/proc_fs.h>
|
||||||
|
#include <linux/slab.h>
|
||||||
|
|
||||||
#include <mach/timer.h>
|
#include <mach/timer.h>
|
||||||
|
|
||||||
|
@ -2220,11 +2221,15 @@ EXPORT_SYMBOL(dma_map_create_descriptor_ring);
|
||||||
int dma_unmap(DMA_MemMap_t *memMap, /* Stores state information about the map */
|
int dma_unmap(DMA_MemMap_t *memMap, /* Stores state information about the map */
|
||||||
int dirtied /* non-zero if any of the pages were modified */
|
int dirtied /* non-zero if any of the pages were modified */
|
||||||
) {
|
) {
|
||||||
|
|
||||||
|
int rc = 0;
|
||||||
int regionIdx;
|
int regionIdx;
|
||||||
int segmentIdx;
|
int segmentIdx;
|
||||||
DMA_Region_t *region;
|
DMA_Region_t *region;
|
||||||
DMA_Segment_t *segment;
|
DMA_Segment_t *segment;
|
||||||
|
|
||||||
|
down(&memMap->lock);
|
||||||
|
|
||||||
for (regionIdx = 0; regionIdx < memMap->numRegionsUsed; regionIdx++) {
|
for (regionIdx = 0; regionIdx < memMap->numRegionsUsed; regionIdx++) {
|
||||||
region = &memMap->region[regionIdx];
|
region = &memMap->region[regionIdx];
|
||||||
|
|
||||||
|
@ -2238,7 +2243,8 @@ int dma_unmap(DMA_MemMap_t *memMap, /* Stores state information about the map */
|
||||||
printk(KERN_ERR
|
printk(KERN_ERR
|
||||||
"%s: vmalloc'd pages are not yet supported\n",
|
"%s: vmalloc'd pages are not yet supported\n",
|
||||||
__func__);
|
__func__);
|
||||||
return -EINVAL;
|
rc = -EINVAL;
|
||||||
|
goto out;
|
||||||
}
|
}
|
||||||
|
|
||||||
case DMA_MEM_TYPE_KMALLOC:
|
case DMA_MEM_TYPE_KMALLOC:
|
||||||
|
@ -2275,7 +2281,8 @@ int dma_unmap(DMA_MemMap_t *memMap, /* Stores state information about the map */
|
||||||
printk(KERN_ERR
|
printk(KERN_ERR
|
||||||
"%s: Unsupported memory type: %d\n",
|
"%s: Unsupported memory type: %d\n",
|
||||||
__func__, region->memType);
|
__func__, region->memType);
|
||||||
return -EINVAL;
|
rc = -EINVAL;
|
||||||
|
goto out;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2313,9 +2320,10 @@ int dma_unmap(DMA_MemMap_t *memMap, /* Stores state information about the map */
|
||||||
memMap->numRegionsUsed = 0;
|
memMap->numRegionsUsed = 0;
|
||||||
memMap->inUse = 0;
|
memMap->inUse = 0;
|
||||||
|
|
||||||
|
out:
|
||||||
up(&memMap->lock);
|
up(&memMap->lock);
|
||||||
|
|
||||||
return 0;
|
return rc;
|
||||||
}
|
}
|
||||||
|
|
||||||
EXPORT_SYMBOL(dma_unmap);
|
EXPORT_SYMBOL(dma_unmap);
|
||||||
|
|
|
@ -22,6 +22,7 @@
|
||||||
#include <linux/leds.h>
|
#include <linux/leds.h>
|
||||||
#include <linux/mtd/mtd.h>
|
#include <linux/mtd/mtd.h>
|
||||||
#include <linux/mtd/partitions.h>
|
#include <linux/mtd/partitions.h>
|
||||||
|
#include <linux/slab.h>
|
||||||
#include <linux/mtd/nand.h>
|
#include <linux/mtd/nand.h>
|
||||||
#include <linux/input.h>
|
#include <linux/input.h>
|
||||||
#include <linux/spi/spi.h>
|
#include <linux/spi/spi.h>
|
||||||
|
|
|
@ -758,7 +758,6 @@ static u8 dm365_default_priorities[DAVINCI_N_AINTC_IRQ] = {
|
||||||
[IRQ_MMCINT] = 7,
|
[IRQ_MMCINT] = 7,
|
||||||
[IRQ_DM365_MMCINT1] = 7,
|
[IRQ_DM365_MMCINT1] = 7,
|
||||||
[IRQ_DM365_PWMINT3] = 7,
|
[IRQ_DM365_PWMINT3] = 7,
|
||||||
[IRQ_DDRINT] = 4,
|
|
||||||
[IRQ_AEMIFINT] = 2,
|
[IRQ_AEMIFINT] = 2,
|
||||||
[IRQ_DM365_SDIOINT1] = 2,
|
[IRQ_DM365_SDIOINT1] = 2,
|
||||||
[IRQ_TINT0_TINT12] = 7,
|
[IRQ_TINT0_TINT12] = 7,
|
||||||
|
|
|
@ -23,6 +23,7 @@
|
||||||
#include <linux/interrupt.h>
|
#include <linux/interrupt.h>
|
||||||
#include <linux/platform_device.h>
|
#include <linux/platform_device.h>
|
||||||
#include <linux/io.h>
|
#include <linux/io.h>
|
||||||
|
#include <linux/slab.h>
|
||||||
|
|
||||||
#include <mach/edma.h>
|
#include <mach/edma.h>
|
||||||
|
|
||||||
|
@ -1266,7 +1267,8 @@ int edma_start(unsigned channel)
|
||||||
/* EDMA channel with event association */
|
/* EDMA channel with event association */
|
||||||
pr_debug("EDMA: ER%d %08x\n", j,
|
pr_debug("EDMA: ER%d %08x\n", j,
|
||||||
edma_shadow0_read_array(ctlr, SH_ER, j));
|
edma_shadow0_read_array(ctlr, SH_ER, j));
|
||||||
/* Clear any pending error */
|
/* Clear any pending event or error */
|
||||||
|
edma_write_array(ctlr, EDMA_ECR, j, mask);
|
||||||
edma_write_array(ctlr, EDMA_EMCR, j, mask);
|
edma_write_array(ctlr, EDMA_EMCR, j, mask);
|
||||||
/* Clear any SER */
|
/* Clear any SER */
|
||||||
edma_shadow0_write_array(ctlr, SH_SECR, j, mask);
|
edma_shadow0_write_array(ctlr, SH_SECR, j, mask);
|
||||||
|
|
|
@ -3,7 +3,7 @@
|
||||||
*
|
*
|
||||||
* Author: Mark A. Greer <mgreer@mvista.com>
|
* Author: Mark A. Greer <mgreer@mvista.com>
|
||||||
*
|
*
|
||||||
* 2007, 2009 (c) MontaVista Software, Inc. This file is licensed under
|
* 2007, 2009-2010 (c) MontaVista Software, Inc. This file is licensed under
|
||||||
* the terms of the GNU General Public License version 2. This program
|
* the terms of the GNU General Public License version 2. This program
|
||||||
* is licensed "as is" without any warranty of any kind, whether express
|
* is licensed "as is" without any warranty of any kind, whether express
|
||||||
* or implied.
|
* or implied.
|
||||||
|
@ -13,7 +13,9 @@
|
||||||
|
|
||||||
#include <video/da8xx-fb.h>
|
#include <video/da8xx-fb.h>
|
||||||
|
|
||||||
|
#include <linux/platform_device.h>
|
||||||
#include <linux/davinci_emac.h>
|
#include <linux/davinci_emac.h>
|
||||||
|
|
||||||
#include <mach/serial.h>
|
#include <mach/serial.h>
|
||||||
#include <mach/edma.h>
|
#include <mach/edma.h>
|
||||||
#include <mach/i2c.h>
|
#include <mach/i2c.h>
|
||||||
|
@ -144,6 +146,10 @@ extern const short da850_mmcsd0_pins[];
|
||||||
extern const short da850_nand_pins[];
|
extern const short da850_nand_pins[];
|
||||||
extern const short da850_nor_pins[];
|
extern const short da850_nor_pins[];
|
||||||
|
|
||||||
|
#ifdef CONFIG_DAVINCI_MUX
|
||||||
int da8xx_pinmux_setup(const short pins[]);
|
int da8xx_pinmux_setup(const short pins[]);
|
||||||
|
#else
|
||||||
|
static inline int da8xx_pinmux_setup(const short pins[]) { return 0; }
|
||||||
|
#endif
|
||||||
|
|
||||||
#endif /* __ASM_ARCH_DAVINCI_DA8XX_H */
|
#endif /* __ASM_ARCH_DAVINCI_DA8XX_H */
|
||||||
|
|
|
@ -253,8 +253,6 @@ static void __init timer_init(void)
|
||||||
irq = USING_COMPARE(t) ? dtip[i].cmp_irq : irq;
|
irq = USING_COMPARE(t) ? dtip[i].cmp_irq : irq;
|
||||||
setup_irq(irq, &t->irqaction);
|
setup_irq(irq, &t->irqaction);
|
||||||
}
|
}
|
||||||
|
|
||||||
timer32_config(&timers[i]);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -331,6 +329,7 @@ static void __init davinci_timer_init(void)
|
||||||
unsigned int clocksource_id;
|
unsigned int clocksource_id;
|
||||||
static char err[] __initdata = KERN_ERR
|
static char err[] __initdata = KERN_ERR
|
||||||
"%s: can't register clocksource!\n";
|
"%s: can't register clocksource!\n";
|
||||||
|
int i;
|
||||||
|
|
||||||
clockevent_id = soc_info->timer_info->clockevent_id;
|
clockevent_id = soc_info->timer_info->clockevent_id;
|
||||||
clocksource_id = soc_info->timer_info->clocksource_id;
|
clocksource_id = soc_info->timer_info->clocksource_id;
|
||||||
|
@ -389,6 +388,9 @@ static void __init davinci_timer_init(void)
|
||||||
|
|
||||||
clockevent_davinci.cpumask = cpumask_of(0);
|
clockevent_davinci.cpumask = cpumask_of(0);
|
||||||
clockevents_register_device(&clockevent_davinci);
|
clockevents_register_device(&clockevent_davinci);
|
||||||
|
|
||||||
|
for (i=0; i< ARRAY_SIZE(timers); i++)
|
||||||
|
timer32_config(&timers[i]);
|
||||||
}
|
}
|
||||||
|
|
||||||
struct sys_timer davinci_timer = {
|
struct sys_timer davinci_timer = {
|
||||||
|
|
|
@ -25,7 +25,7 @@
|
||||||
#include <mach/hardware.h>
|
#include <mach/hardware.h>
|
||||||
|
|
||||||
/*************************************************************************
|
/*************************************************************************
|
||||||
* GPIO handling for EP93xx
|
* Interrupt handling for EP93xx on-chip GPIOs
|
||||||
*************************************************************************/
|
*************************************************************************/
|
||||||
static unsigned char gpio_int_unmasked[3];
|
static unsigned char gpio_int_unmasked[3];
|
||||||
static unsigned char gpio_int_enabled[3];
|
static unsigned char gpio_int_enabled[3];
|
||||||
|
@ -40,7 +40,7 @@ static const u8 eoi_register_offset[3] = { 0x98, 0xb4, 0x54 };
|
||||||
static const u8 int_en_register_offset[3] = { 0x9c, 0xb8, 0x58 };
|
static const u8 int_en_register_offset[3] = { 0x9c, 0xb8, 0x58 };
|
||||||
static const u8 int_debounce_register_offset[3] = { 0xa8, 0xc4, 0x64 };
|
static const u8 int_debounce_register_offset[3] = { 0xa8, 0xc4, 0x64 };
|
||||||
|
|
||||||
void ep93xx_gpio_update_int_params(unsigned port)
|
static void ep93xx_gpio_update_int_params(unsigned port)
|
||||||
{
|
{
|
||||||
BUG_ON(port > 2);
|
BUG_ON(port > 2);
|
||||||
|
|
||||||
|
@ -56,7 +56,7 @@ void ep93xx_gpio_update_int_params(unsigned port)
|
||||||
EP93XX_GPIO_REG(int_en_register_offset[port]));
|
EP93XX_GPIO_REG(int_en_register_offset[port]));
|
||||||
}
|
}
|
||||||
|
|
||||||
void ep93xx_gpio_int_mask(unsigned line)
|
static inline void ep93xx_gpio_int_mask(unsigned line)
|
||||||
{
|
{
|
||||||
gpio_int_unmasked[line >> 3] &= ~(1 << (line & 7));
|
gpio_int_unmasked[line >> 3] &= ~(1 << (line & 7));
|
||||||
}
|
}
|
||||||
|
|
|
@ -14,7 +14,6 @@
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include <linux/sched.h>
|
#include <linux/sched.h>
|
||||||
#include <linux/slab.h>
|
|
||||||
#include <linux/mman.h>
|
#include <linux/mman.h>
|
||||||
#include <linux/init.h>
|
#include <linux/init.h>
|
||||||
#include <linux/interrupt.h>
|
#include <linux/interrupt.h>
|
||||||
|
|
|
@ -13,7 +13,6 @@
|
||||||
#include <linux/types.h>
|
#include <linux/types.h>
|
||||||
#include <linux/kernel.h>
|
#include <linux/kernel.h>
|
||||||
#include <linux/cpufreq.h>
|
#include <linux/cpufreq.h>
|
||||||
#include <linux/slab.h>
|
|
||||||
#include <linux/sched.h>
|
#include <linux/sched.h>
|
||||||
#include <linux/smp.h>
|
#include <linux/smp.h>
|
||||||
#include <linux/init.h>
|
#include <linux/init.h>
|
||||||
|
|
|
@ -21,6 +21,7 @@
|
||||||
#include <linux/amba/bus.h>
|
#include <linux/amba/bus.h>
|
||||||
#include <linux/amba/clcd.h>
|
#include <linux/amba/clcd.h>
|
||||||
#include <linux/io.h>
|
#include <linux/io.h>
|
||||||
|
#include <linux/slab.h>
|
||||||
|
|
||||||
#include <asm/clkdev.h>
|
#include <asm/clkdev.h>
|
||||||
#include <mach/clkdev.h>
|
#include <mach/clkdev.h>
|
||||||
|
|
|
@ -13,7 +13,6 @@
|
||||||
#include <linux/list.h>
|
#include <linux/list.h>
|
||||||
#include <linux/platform_device.h>
|
#include <linux/platform_device.h>
|
||||||
#include <linux/dma-mapping.h>
|
#include <linux/dma-mapping.h>
|
||||||
#include <linux/slab.h>
|
|
||||||
#include <linux/string.h>
|
#include <linux/string.h>
|
||||||
#include <linux/sysdev.h>
|
#include <linux/sysdev.h>
|
||||||
#include <linux/amba/bus.h>
|
#include <linux/amba/bus.h>
|
||||||
|
@ -21,6 +20,7 @@
|
||||||
#include <linux/amba/clcd.h>
|
#include <linux/amba/clcd.h>
|
||||||
#include <linux/amba/mmci.h>
|
#include <linux/amba/mmci.h>
|
||||||
#include <linux/io.h>
|
#include <linux/io.h>
|
||||||
|
#include <linux/gfp.h>
|
||||||
|
|
||||||
#include <asm/clkdev.h>
|
#include <asm/clkdev.h>
|
||||||
#include <mach/clkdev.h>
|
#include <mach/clkdev.h>
|
||||||
|
|
|
@ -22,7 +22,6 @@
|
||||||
*/
|
*/
|
||||||
#include <linux/kernel.h>
|
#include <linux/kernel.h>
|
||||||
#include <linux/pci.h>
|
#include <linux/pci.h>
|
||||||
#include <linux/slab.h>
|
|
||||||
#include <linux/ioport.h>
|
#include <linux/ioport.h>
|
||||||
#include <linux/interrupt.h>
|
#include <linux/interrupt.h>
|
||||||
#include <linux/spinlock.h>
|
#include <linux/spinlock.h>
|
||||||
|
|
|
@ -18,6 +18,7 @@
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include <linux/pci.h>
|
#include <linux/pci.h>
|
||||||
|
#include <linux/slab.h>
|
||||||
#include <linux/delay.h>
|
#include <linux/delay.h>
|
||||||
#include <linux/jiffies.h>
|
#include <linux/jiffies.h>
|
||||||
#include <asm/irq.h>
|
#include <asm/irq.h>
|
||||||
|
|
|
@ -19,7 +19,6 @@
|
||||||
#include <linux/pci.h>
|
#include <linux/pci.h>
|
||||||
#include <linux/pm.h>
|
#include <linux/pm.h>
|
||||||
#include <linux/string.h>
|
#include <linux/string.h>
|
||||||
#include <linux/slab.h>
|
|
||||||
#include <linux/serial_core.h>
|
#include <linux/serial_core.h>
|
||||||
#include <linux/serial_8250.h>
|
#include <linux/serial_8250.h>
|
||||||
#include <linux/mtd/physmap.h>
|
#include <linux/mtd/physmap.h>
|
||||||
|
|
|
@ -21,7 +21,6 @@
|
||||||
#include <linux/pci.h>
|
#include <linux/pci.h>
|
||||||
#include <linux/pm.h>
|
#include <linux/pm.h>
|
||||||
#include <linux/string.h>
|
#include <linux/string.h>
|
||||||
#include <linux/slab.h>
|
|
||||||
#include <linux/serial_core.h>
|
#include <linux/serial_core.h>
|
||||||
#include <linux/serial_8250.h>
|
#include <linux/serial_8250.h>
|
||||||
#include <linux/mtd/physmap.h>
|
#include <linux/mtd/physmap.h>
|
||||||
|
|
|
@ -18,7 +18,6 @@
|
||||||
#include <linux/kernel.h>
|
#include <linux/kernel.h>
|
||||||
#include <linux/pci.h>
|
#include <linux/pci.h>
|
||||||
#include <linux/string.h>
|
#include <linux/string.h>
|
||||||
#include <linux/slab.h>
|
|
||||||
#include <linux/serial_core.h>
|
#include <linux/serial_core.h>
|
||||||
#include <linux/serial_8250.h>
|
#include <linux/serial_8250.h>
|
||||||
#include <linux/mtd/physmap.h>
|
#include <linux/mtd/physmap.h>
|
||||||
|
|
|
@ -23,7 +23,6 @@
|
||||||
#include <linux/pci.h>
|
#include <linux/pci.h>
|
||||||
#include <linux/pm.h>
|
#include <linux/pm.h>
|
||||||
#include <linux/string.h>
|
#include <linux/string.h>
|
||||||
#include <linux/slab.h>
|
|
||||||
#include <linux/serial_core.h>
|
#include <linux/serial_core.h>
|
||||||
#include <linux/serial_8250.h>
|
#include <linux/serial_8250.h>
|
||||||
#include <linux/mtd/physmap.h>
|
#include <linux/mtd/physmap.h>
|
||||||
|
|
|
@ -17,7 +17,6 @@
|
||||||
#include <linux/kernel.h>
|
#include <linux/kernel.h>
|
||||||
#include <linux/pci.h>
|
#include <linux/pci.h>
|
||||||
#include <linux/string.h>
|
#include <linux/string.h>
|
||||||
#include <linux/slab.h>
|
|
||||||
#include <linux/serial_core.h>
|
#include <linux/serial_core.h>
|
||||||
#include <linux/serial_8250.h>
|
#include <linux/serial_8250.h>
|
||||||
#include <linux/mtd/physmap.h>
|
#include <linux/mtd/physmap.h>
|
||||||
|
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue