Merge commit 'v3.0-rc5' into sched/core
Merge reason: Move to a (much) newer base. Signed-off-by: Ingo Molnar <mingo@elte.hu>
This commit is contained in:
8
CREDITS
8
CREDITS
@@ -518,6 +518,14 @@ N: Zach Brown
|
|||||||
E: zab@zabbo.net
|
E: zab@zabbo.net
|
||||||
D: maestro pci sound
|
D: maestro pci sound
|
||||||
|
|
||||||
|
M: David Brownell
|
||||||
|
D: Kernel engineer, mentor, and friend. Maintained USB EHCI and
|
||||||
|
D: gadget layers, SPI subsystem, GPIO subsystem, and more than a few
|
||||||
|
D: device drivers. His encouragement also helped many engineers get
|
||||||
|
D: started working on the Linux kernel. David passed away in early
|
||||||
|
D: 2011, and will be greatly missed.
|
||||||
|
W: https://lkml.org/lkml/2011/4/5/36
|
||||||
|
|
||||||
N: Gary Brubaker
|
N: Gary Brubaker
|
||||||
E: xavyer@ix.netcom.com
|
E: xavyer@ix.netcom.com
|
||||||
D: USB Serial Empeg Empeg-car Mark I/II Driver
|
D: USB Serial Empeg Empeg-car Mark I/II Driver
|
||||||
|
@@ -192,10 +192,6 @@ kernel-docs.txt
|
|||||||
- listing of various WWW + books that document kernel internals.
|
- listing of various WWW + books that document kernel internals.
|
||||||
kernel-parameters.txt
|
kernel-parameters.txt
|
||||||
- summary listing of command line / boot prompt args for the kernel.
|
- summary listing of command line / boot prompt args for the kernel.
|
||||||
keys-request-key.txt
|
|
||||||
- description of the kernel key request service.
|
|
||||||
keys.txt
|
|
||||||
- description of the kernel key retention service.
|
|
||||||
kobject.txt
|
kobject.txt
|
||||||
- info of the kobject infrastructure of the Linux kernel.
|
- info of the kobject infrastructure of the Linux kernel.
|
||||||
kprobes.txt
|
kprobes.txt
|
||||||
@@ -294,6 +290,8 @@ scheduler/
|
|||||||
- directory with info on the scheduler.
|
- directory with info on the scheduler.
|
||||||
scsi/
|
scsi/
|
||||||
- directory with info on Linux scsi support.
|
- directory with info on Linux scsi support.
|
||||||
|
security/
|
||||||
|
- directory that contains security-related info
|
||||||
serial/
|
serial/
|
||||||
- directory with info on the low level serial API.
|
- directory with info on the low level serial API.
|
||||||
serial-console.txt
|
serial-console.txt
|
||||||
|
@@ -0,0 +1,56 @@
|
|||||||
|
What: /sys/class/backlight/<backlight>/<ambient light zone>_max
|
||||||
|
What: /sys/class/backlight/<backlight>/l1_daylight_max
|
||||||
|
What: /sys/class/backlight/<backlight>/l2_bright_max
|
||||||
|
What: /sys/class/backlight/<backlight>/l3_office_max
|
||||||
|
What: /sys/class/backlight/<backlight>/l4_indoor_max
|
||||||
|
What: /sys/class/backlight/<backlight>/l5_dark_max
|
||||||
|
Date: Mai 2011
|
||||||
|
KernelVersion: 2.6.40
|
||||||
|
Contact: device-drivers-devel@blackfin.uclinux.org
|
||||||
|
Description:
|
||||||
|
Control the maximum brightness for <ambient light zone>
|
||||||
|
on this <backlight>. Values are between 0 and 127. This file
|
||||||
|
will also show the brightness level stored for this
|
||||||
|
<ambient light zone>.
|
||||||
|
|
||||||
|
What: /sys/class/backlight/<backlight>/<ambient light zone>_dim
|
||||||
|
What: /sys/class/backlight/<backlight>/l2_bright_dim
|
||||||
|
What: /sys/class/backlight/<backlight>/l3_office_dim
|
||||||
|
What: /sys/class/backlight/<backlight>/l4_indoor_dim
|
||||||
|
What: /sys/class/backlight/<backlight>/l5_dark_dim
|
||||||
|
Date: Mai 2011
|
||||||
|
KernelVersion: 2.6.40
|
||||||
|
Contact: device-drivers-devel@blackfin.uclinux.org
|
||||||
|
Description:
|
||||||
|
Control the dim brightness for <ambient light zone>
|
||||||
|
on this <backlight>. Values are between 0 and 127, typically
|
||||||
|
set to 0. Full off when the backlight is disabled.
|
||||||
|
This file will also show the dim brightness level stored for
|
||||||
|
this <ambient light zone>.
|
||||||
|
|
||||||
|
What: /sys/class/backlight/<backlight>/ambient_light_level
|
||||||
|
Date: Mai 2011
|
||||||
|
KernelVersion: 2.6.40
|
||||||
|
Contact: device-drivers-devel@blackfin.uclinux.org
|
||||||
|
Description:
|
||||||
|
Get conversion value of the light sensor.
|
||||||
|
This value is updated every 80 ms (when the light sensor
|
||||||
|
is enabled). Returns integer between 0 (dark) and
|
||||||
|
8000 (max ambient brightness)
|
||||||
|
|
||||||
|
What: /sys/class/backlight/<backlight>/ambient_light_zone
|
||||||
|
Date: Mai 2011
|
||||||
|
KernelVersion: 2.6.40
|
||||||
|
Contact: device-drivers-devel@blackfin.uclinux.org
|
||||||
|
Description:
|
||||||
|
Get/Set current ambient light zone. Reading returns
|
||||||
|
integer between 1..5 (1 = daylight, 2 = bright, ..., 5 = dark).
|
||||||
|
Writing a value between 1..5 forces the backlight controller
|
||||||
|
to enter the corresponding ambient light zone.
|
||||||
|
Writing 0 returns to normal/automatic ambient light level
|
||||||
|
operation. The ambient light sensing feature on these devices
|
||||||
|
is an extension to the API documented in
|
||||||
|
Documentation/ABI/stable/sysfs-class-backlight.
|
||||||
|
It can be enabled by writing the value stored in
|
||||||
|
/sys/class/backlight/<backlight>/max_brightness to
|
||||||
|
/sys/class/backlight/<backlight>/brightness.
|
@@ -141,13 +141,15 @@ struct dtv_properties {
|
|||||||
</row></tbody></tgroup></informaltable>
|
</row></tbody></tgroup></informaltable>
|
||||||
</section>
|
</section>
|
||||||
|
|
||||||
|
<section>
|
||||||
|
<title>Property types</title>
|
||||||
<para>
|
<para>
|
||||||
On <link linkend="FE_GET_PROPERTY">FE_GET_PROPERTY</link>/<link linkend="FE_SET_PROPERTY">FE_SET_PROPERTY</link>,
|
On <link linkend="FE_GET_PROPERTY">FE_GET_PROPERTY</link>/<link linkend="FE_SET_PROPERTY">FE_SET_PROPERTY</link>,
|
||||||
the actual action is determined by the dtv_property cmd/data pairs. With one single ioctl, is possible to
|
the actual action is determined by the dtv_property cmd/data pairs. With one single ioctl, is possible to
|
||||||
get/set up to 64 properties. The actual meaning of each property is described on the next sections.
|
get/set up to 64 properties. The actual meaning of each property is described on the next sections.
|
||||||
</para>
|
</para>
|
||||||
|
|
||||||
<para>The Available frontend property types are:</para>
|
<para>The available frontend property types are:</para>
|
||||||
<programlisting>
|
<programlisting>
|
||||||
#define DTV_UNDEFINED 0
|
#define DTV_UNDEFINED 0
|
||||||
#define DTV_TUNE 1
|
#define DTV_TUNE 1
|
||||||
@@ -193,6 +195,7 @@ get/set up to 64 properties. The actual meaning of each property is described on
|
|||||||
#define DTV_ISDBT_LAYER_ENABLED 41
|
#define DTV_ISDBT_LAYER_ENABLED 41
|
||||||
#define DTV_ISDBS_TS_ID 42
|
#define DTV_ISDBS_TS_ID 42
|
||||||
</programlisting>
|
</programlisting>
|
||||||
|
</section>
|
||||||
|
|
||||||
<section id="fe_property_common">
|
<section id="fe_property_common">
|
||||||
<title>Parameters that are common to all Digital TV standards</title>
|
<title>Parameters that are common to all Digital TV standards</title>
|
||||||
|
@@ -293,6 +293,7 @@
|
|||||||
<!ENTITY sub-yuyv SYSTEM "v4l/pixfmt-yuyv.xml">
|
<!ENTITY sub-yuyv SYSTEM "v4l/pixfmt-yuyv.xml">
|
||||||
<!ENTITY sub-yvyu SYSTEM "v4l/pixfmt-yvyu.xml">
|
<!ENTITY sub-yvyu SYSTEM "v4l/pixfmt-yvyu.xml">
|
||||||
<!ENTITY sub-srggb10 SYSTEM "v4l/pixfmt-srggb10.xml">
|
<!ENTITY sub-srggb10 SYSTEM "v4l/pixfmt-srggb10.xml">
|
||||||
|
<!ENTITY sub-srggb12 SYSTEM "v4l/pixfmt-srggb12.xml">
|
||||||
<!ENTITY sub-srggb8 SYSTEM "v4l/pixfmt-srggb8.xml">
|
<!ENTITY sub-srggb8 SYSTEM "v4l/pixfmt-srggb8.xml">
|
||||||
<!ENTITY sub-y10 SYSTEM "v4l/pixfmt-y10.xml">
|
<!ENTITY sub-y10 SYSTEM "v4l/pixfmt-y10.xml">
|
||||||
<!ENTITY sub-y12 SYSTEM "v4l/pixfmt-y12.xml">
|
<!ENTITY sub-y12 SYSTEM "v4l/pixfmt-y12.xml">
|
||||||
@@ -373,9 +374,9 @@
|
|||||||
<!ENTITY sub-media-indices SYSTEM "media-indices.tmpl">
|
<!ENTITY sub-media-indices SYSTEM "media-indices.tmpl">
|
||||||
|
|
||||||
<!ENTITY sub-media-controller SYSTEM "v4l/media-controller.xml">
|
<!ENTITY sub-media-controller SYSTEM "v4l/media-controller.xml">
|
||||||
<!ENTITY sub-media-open SYSTEM "v4l/media-func-open.xml">
|
<!ENTITY sub-media-func-open SYSTEM "v4l/media-func-open.xml">
|
||||||
<!ENTITY sub-media-close SYSTEM "v4l/media-func-close.xml">
|
<!ENTITY sub-media-func-close SYSTEM "v4l/media-func-close.xml">
|
||||||
<!ENTITY sub-media-ioctl SYSTEM "v4l/media-func-ioctl.xml">
|
<!ENTITY sub-media-func-ioctl SYSTEM "v4l/media-func-ioctl.xml">
|
||||||
<!ENTITY sub-media-ioc-device-info SYSTEM "v4l/media-ioc-device-info.xml">
|
<!ENTITY sub-media-ioc-device-info SYSTEM "v4l/media-ioc-device-info.xml">
|
||||||
<!ENTITY sub-media-ioc-enum-entities SYSTEM "v4l/media-ioc-enum-entities.xml">
|
<!ENTITY sub-media-ioc-enum-entities SYSTEM "v4l/media-ioc-enum-entities.xml">
|
||||||
<!ENTITY sub-media-ioc-enum-links SYSTEM "v4l/media-ioc-enum-links.xml">
|
<!ENTITY sub-media-ioc-enum-links SYSTEM "v4l/media-ioc-enum-links.xml">
|
||||||
|
@@ -189,8 +189,7 @@ static void __iomem *baseaddr;
|
|||||||
<title>Partition defines</title>
|
<title>Partition defines</title>
|
||||||
<para>
|
<para>
|
||||||
If you want to divide your device into partitions, then
|
If you want to divide your device into partitions, then
|
||||||
enable the configuration switch CONFIG_MTD_PARTITIONS and define
|
define a partitioning scheme suitable to your board.
|
||||||
a partitioning scheme suitable to your board.
|
|
||||||
</para>
|
</para>
|
||||||
<programlisting>
|
<programlisting>
|
||||||
#define NUM_PARTITIONS 2
|
#define NUM_PARTITIONS 2
|
||||||
|
@@ -78,9 +78,9 @@
|
|||||||
<appendix id="media-user-func">
|
<appendix id="media-user-func">
|
||||||
<title>Function Reference</title>
|
<title>Function Reference</title>
|
||||||
<!-- Keep this alphabetically sorted. -->
|
<!-- Keep this alphabetically sorted. -->
|
||||||
&sub-media-open;
|
&sub-media-func-open;
|
||||||
&sub-media-close;
|
&sub-media-func-close;
|
||||||
&sub-media-ioctl;
|
&sub-media-func-ioctl;
|
||||||
<!-- All ioctls go here. -->
|
<!-- All ioctls go here. -->
|
||||||
&sub-media-ioc-device-info;
|
&sub-media-ioc-device-info;
|
||||||
&sub-media-ioc-enum-entities;
|
&sub-media-ioc-enum-entities;
|
||||||
|
@@ -673,6 +673,7 @@ access the palette, this must be done with ioctls of the Linux framebuffer API.<
|
|||||||
&sub-srggb8;
|
&sub-srggb8;
|
||||||
&sub-sbggr16;
|
&sub-sbggr16;
|
||||||
&sub-srggb10;
|
&sub-srggb10;
|
||||||
|
&sub-srggb12;
|
||||||
</section>
|
</section>
|
||||||
|
|
||||||
<section id="yuv-formats">
|
<section id="yuv-formats">
|
||||||
|
@@ -2531,13 +2531,13 @@
|
|||||||
<constant>_JPEG</constant> prefix the format code is made of
|
<constant>_JPEG</constant> prefix the format code is made of
|
||||||
the following information.
|
the following information.
|
||||||
<itemizedlist>
|
<itemizedlist>
|
||||||
<listitem>The number of bus samples per entropy encoded byte.</listitem>
|
<listitem><para>The number of bus samples per entropy encoded byte.</para></listitem>
|
||||||
<listitem>The bus width.</listitem>
|
<listitem><para>The bus width.</para></listitem>
|
||||||
</itemizedlist>
|
</itemizedlist>
|
||||||
|
</para>
|
||||||
|
|
||||||
<para>For instance, for a JPEG baseline process and an 8-bit bus width
|
<para>For instance, for a JPEG baseline process and an 8-bit bus width
|
||||||
the format will be named <constant>V4L2_MBUS_FMT_JPEG_1X8</constant>.
|
the format will be named <constant>V4L2_MBUS_FMT_JPEG_1X8</constant>.
|
||||||
</para>
|
|
||||||
</para>
|
</para>
|
||||||
|
|
||||||
<para>The following table lists existing JPEG compressed formats.</para>
|
<para>The following table lists existing JPEG compressed formats.</para>
|
||||||
|
@@ -99,18 +99,11 @@ o "qp" indicates that RCU still expects a quiescent state from
|
|||||||
|
|
||||||
o "dt" is the current value of the dyntick counter that is incremented
|
o "dt" is the current value of the dyntick counter that is incremented
|
||||||
when entering or leaving dynticks idle state, either by the
|
when entering or leaving dynticks idle state, either by the
|
||||||
scheduler or by irq. The number after the "/" is the interrupt
|
scheduler or by irq. This number is even if the CPU is in
|
||||||
nesting depth when in dyntick-idle state, or one greater than
|
dyntick idle mode and odd otherwise. The number after the first
|
||||||
the interrupt-nesting depth otherwise.
|
"/" is the interrupt nesting depth when in dyntick-idle state,
|
||||||
|
or one greater than the interrupt-nesting depth otherwise.
|
||||||
This field is displayed only for CONFIG_NO_HZ kernels.
|
The number after the second "/" is the NMI nesting depth.
|
||||||
|
|
||||||
o "dn" is the current value of the dyntick counter that is incremented
|
|
||||||
when entering or leaving dynticks idle state via NMI. If both
|
|
||||||
the "dt" and "dn" values are even, then this CPU is in dynticks
|
|
||||||
idle mode and may be ignored by RCU. If either of these two
|
|
||||||
counters is odd, then RCU must be alert to the possibility of
|
|
||||||
an RCU read-side critical section running on this CPU.
|
|
||||||
|
|
||||||
This field is displayed only for CONFIG_NO_HZ kernels.
|
This field is displayed only for CONFIG_NO_HZ kernels.
|
||||||
|
|
||||||
|
@@ -21,7 +21,7 @@ information will not be available.
|
|||||||
To extract cgroup statistics a utility very similar to getdelays.c
|
To extract cgroup statistics a utility very similar to getdelays.c
|
||||||
has been developed, the sample output of the utility is shown below
|
has been developed, the sample output of the utility is shown below
|
||||||
|
|
||||||
~/balbir/cgroupstats # ./getdelays -C "/cgroup/a"
|
~/balbir/cgroupstats # ./getdelays -C "/sys/fs/cgroup/a"
|
||||||
sleeping 1, blocked 0, running 1, stopped 0, uninterruptible 0
|
sleeping 1, blocked 0, running 1, stopped 0, uninterruptible 0
|
||||||
~/balbir/cgroupstats # ./getdelays -C "/cgroup"
|
~/balbir/cgroupstats # ./getdelays -C "/sys/fs/cgroup"
|
||||||
sleeping 155, blocked 0, running 1, stopped 0, uninterruptible 2
|
sleeping 155, blocked 0, running 1, stopped 0, uninterruptible 2
|
||||||
|
@@ -66,3 +66,8 @@ Note: We can use a kernel with multiple custom ACPI method running,
|
|||||||
But each individual write to debugfs can implement a SINGLE
|
But each individual write to debugfs can implement a SINGLE
|
||||||
method override. i.e. if we want to insert/override multiple
|
method override. i.e. if we want to insert/override multiple
|
||||||
ACPI methods, we need to redo step c) ~ g) for multiple times.
|
ACPI methods, we need to redo step c) ~ g) for multiple times.
|
||||||
|
|
||||||
|
Note: Be aware that root can mis-use this driver to modify arbitrary
|
||||||
|
memory and gain additional rights, if root's privileges got
|
||||||
|
restricted (for example if root is not allowed to load additional
|
||||||
|
modules after boot).
|
||||||
|
@@ -65,13 +65,19 @@ looks at the connected hardware is beyond the scope of this document.
|
|||||||
The boot loader must ultimately be able to provide a MACH_TYPE_xxx
|
The boot loader must ultimately be able to provide a MACH_TYPE_xxx
|
||||||
value to the kernel. (see linux/arch/arm/tools/mach-types).
|
value to the kernel. (see linux/arch/arm/tools/mach-types).
|
||||||
|
|
||||||
|
4. Setup boot data
|
||||||
4. Setup the kernel tagged list
|
------------------
|
||||||
-------------------------------
|
|
||||||
|
|
||||||
Existing boot loaders: OPTIONAL, HIGHLY RECOMMENDED
|
Existing boot loaders: OPTIONAL, HIGHLY RECOMMENDED
|
||||||
New boot loaders: MANDATORY
|
New boot loaders: MANDATORY
|
||||||
|
|
||||||
|
The boot loader must provide either a tagged list or a dtb image for
|
||||||
|
passing configuration data to the kernel. The physical address of the
|
||||||
|
boot data is passed to the kernel in register r2.
|
||||||
|
|
||||||
|
4a. Setup the kernel tagged list
|
||||||
|
--------------------------------
|
||||||
|
|
||||||
The boot loader must create and initialise the kernel tagged list.
|
The boot loader must create and initialise the kernel tagged list.
|
||||||
A valid tagged list starts with ATAG_CORE and ends with ATAG_NONE.
|
A valid tagged list starts with ATAG_CORE and ends with ATAG_NONE.
|
||||||
The ATAG_CORE tag may or may not be empty. An empty ATAG_CORE tag
|
The ATAG_CORE tag may or may not be empty. An empty ATAG_CORE tag
|
||||||
@@ -101,6 +107,24 @@ The tagged list must be placed in a region of memory where neither
|
|||||||
the kernel decompressor nor initrd 'bootp' program will overwrite
|
the kernel decompressor nor initrd 'bootp' program will overwrite
|
||||||
it. The recommended placement is in the first 16KiB of RAM.
|
it. The recommended placement is in the first 16KiB of RAM.
|
||||||
|
|
||||||
|
4b. Setup the device tree
|
||||||
|
-------------------------
|
||||||
|
|
||||||
|
The boot loader must load a device tree image (dtb) into system ram
|
||||||
|
at a 64bit aligned address and initialize it with the boot data. The
|
||||||
|
dtb format is documented in Documentation/devicetree/booting-without-of.txt.
|
||||||
|
The kernel will look for the dtb magic value of 0xd00dfeed at the dtb
|
||||||
|
physical address to determine if a dtb has been passed instead of a
|
||||||
|
tagged list.
|
||||||
|
|
||||||
|
The boot loader must pass at a minimum the size and location of the
|
||||||
|
system memory, and the root filesystem location. The dtb must be
|
||||||
|
placed in a region of memory where the kernel decompressor will not
|
||||||
|
overwrite it. The recommended placement is in the first 16KiB of RAM
|
||||||
|
with the caveat that it may not be located at physical address 0 since
|
||||||
|
the kernel interprets a value of 0 in r2 to mean neither a tagged list
|
||||||
|
nor a dtb were passed.
|
||||||
|
|
||||||
5. Calling the kernel image
|
5. Calling the kernel image
|
||||||
---------------------------
|
---------------------------
|
||||||
|
|
||||||
@@ -125,7 +149,8 @@ In either case, the following conditions must be met:
|
|||||||
- CPU register settings
|
- CPU register settings
|
||||||
r0 = 0,
|
r0 = 0,
|
||||||
r1 = machine type number discovered in (3) above.
|
r1 = machine type number discovered in (3) above.
|
||||||
r2 = physical address of tagged list in system RAM.
|
r2 = physical address of tagged list in system RAM, or
|
||||||
|
physical address of device tree block (dtb) in system RAM
|
||||||
|
|
||||||
- CPU mode
|
- CPU mode
|
||||||
All forms of interrupts must be disabled (IRQs and FIQs)
|
All forms of interrupts must be disabled (IRQs and FIQs)
|
||||||
|
@@ -14,7 +14,6 @@ Introduction
|
|||||||
- S3C24XX: See Documentation/arm/Samsung-S3C24XX/Overview.txt for full list
|
- S3C24XX: See Documentation/arm/Samsung-S3C24XX/Overview.txt for full list
|
||||||
- S3C64XX: S3C6400 and S3C6410
|
- S3C64XX: S3C6400 and S3C6410
|
||||||
- S5P6440
|
- S5P6440
|
||||||
- S5P6442
|
|
||||||
- S5PC100
|
- S5PC100
|
||||||
- S5PC110 / S5PV210
|
- S5PC110 / S5PV210
|
||||||
|
|
||||||
@@ -36,7 +35,6 @@ Configuration
|
|||||||
unifying all the SoCs into one kernel.
|
unifying all the SoCs into one kernel.
|
||||||
|
|
||||||
s5p6440_defconfig - S5P6440 specific default configuration
|
s5p6440_defconfig - S5P6440 specific default configuration
|
||||||
s5p6442_defconfig - S5P6442 specific default configuration
|
|
||||||
s5pc100_defconfig - S5PC100 specific default configuration
|
s5pc100_defconfig - S5PC100 specific default configuration
|
||||||
s5pc110_defconfig - S5PC110 specific default configuration
|
s5pc110_defconfig - S5PC110 specific default configuration
|
||||||
s5pv210_defconfig - S5PV210 specific default configuration
|
s5pv210_defconfig - S5PV210 specific default configuration
|
||||||
|
@@ -28,16 +28,19 @@ cgroups. Here is what you can do.
|
|||||||
- Enable group scheduling in CFQ
|
- Enable group scheduling in CFQ
|
||||||
CONFIG_CFQ_GROUP_IOSCHED=y
|
CONFIG_CFQ_GROUP_IOSCHED=y
|
||||||
|
|
||||||
- Compile and boot into kernel and mount IO controller (blkio).
|
- Compile and boot into kernel and mount IO controller (blkio); see
|
||||||
|
cgroups.txt, Why are cgroups needed?.
|
||||||
|
|
||||||
mount -t cgroup -o blkio none /cgroup
|
mount -t tmpfs cgroup_root /sys/fs/cgroup
|
||||||
|
mkdir /sys/fs/cgroup/blkio
|
||||||
|
mount -t cgroup -o blkio none /sys/fs/cgroup/blkio
|
||||||
|
|
||||||
- Create two cgroups
|
- Create two cgroups
|
||||||
mkdir -p /cgroup/test1/ /cgroup/test2
|
mkdir -p /sys/fs/cgroup/blkio/test1/ /sys/fs/cgroup/blkio/test2
|
||||||
|
|
||||||
- Set weights of group test1 and test2
|
- Set weights of group test1 and test2
|
||||||
echo 1000 > /cgroup/test1/blkio.weight
|
echo 1000 > /sys/fs/cgroup/blkio/test1/blkio.weight
|
||||||
echo 500 > /cgroup/test2/blkio.weight
|
echo 500 > /sys/fs/cgroup/blkio/test2/blkio.weight
|
||||||
|
|
||||||
- Create two same size files (say 512MB each) on same disk (file1, file2) and
|
- Create two same size files (say 512MB each) on same disk (file1, file2) and
|
||||||
launch two dd threads in different cgroup to read those files.
|
launch two dd threads in different cgroup to read those files.
|
||||||
@@ -46,12 +49,12 @@ cgroups. Here is what you can do.
|
|||||||
echo 3 > /proc/sys/vm/drop_caches
|
echo 3 > /proc/sys/vm/drop_caches
|
||||||
|
|
||||||
dd if=/mnt/sdb/zerofile1 of=/dev/null &
|
dd if=/mnt/sdb/zerofile1 of=/dev/null &
|
||||||
echo $! > /cgroup/test1/tasks
|
echo $! > /sys/fs/cgroup/blkio/test1/tasks
|
||||||
cat /cgroup/test1/tasks
|
cat /sys/fs/cgroup/blkio/test1/tasks
|
||||||
|
|
||||||
dd if=/mnt/sdb/zerofile2 of=/dev/null &
|
dd if=/mnt/sdb/zerofile2 of=/dev/null &
|
||||||
echo $! > /cgroup/test2/tasks
|
echo $! > /sys/fs/cgroup/blkio/test2/tasks
|
||||||
cat /cgroup/test2/tasks
|
cat /sys/fs/cgroup/blkio/test2/tasks
|
||||||
|
|
||||||
- At macro level, first dd should finish first. To get more precise data, keep
|
- At macro level, first dd should finish first. To get more precise data, keep
|
||||||
on looking at (with the help of script), at blkio.disk_time and
|
on looking at (with the help of script), at blkio.disk_time and
|
||||||
@@ -68,13 +71,13 @@ Throttling/Upper Limit policy
|
|||||||
- Enable throttling in block layer
|
- Enable throttling in block layer
|
||||||
CONFIG_BLK_DEV_THROTTLING=y
|
CONFIG_BLK_DEV_THROTTLING=y
|
||||||
|
|
||||||
- Mount blkio controller
|
- Mount blkio controller (see cgroups.txt, Why are cgroups needed?)
|
||||||
mount -t cgroup -o blkio none /cgroup/blkio
|
mount -t cgroup -o blkio none /sys/fs/cgroup/blkio
|
||||||
|
|
||||||
- Specify a bandwidth rate on particular device for root group. The format
|
- Specify a bandwidth rate on particular device for root group. The format
|
||||||
for policy is "<major>:<minor> <byes_per_second>".
|
for policy is "<major>:<minor> <byes_per_second>".
|
||||||
|
|
||||||
echo "8:16 1048576" > /cgroup/blkio/blkio.read_bps_device
|
echo "8:16 1048576" > /sys/fs/cgroup/blkio/blkio.read_bps_device
|
||||||
|
|
||||||
Above will put a limit of 1MB/second on reads happening for root group
|
Above will put a limit of 1MB/second on reads happening for root group
|
||||||
on device having major/minor number 8:16.
|
on device having major/minor number 8:16.
|
||||||
@@ -108,7 +111,7 @@ Hierarchical Cgroups
|
|||||||
CFQ and throttling will practically treat all groups at same level.
|
CFQ and throttling will practically treat all groups at same level.
|
||||||
|
|
||||||
pivot
|
pivot
|
||||||
/ | \ \
|
/ / \ \
|
||||||
root test1 test2 test3
|
root test1 test2 test3
|
||||||
|
|
||||||
Down the line we can implement hierarchical accounting/control support
|
Down the line we can implement hierarchical accounting/control support
|
||||||
@@ -149,7 +152,7 @@ Proportional weight policy files
|
|||||||
|
|
||||||
Following is the format.
|
Following is the format.
|
||||||
|
|
||||||
#echo dev_maj:dev_minor weight > /path/to/cgroup/blkio.weight_device
|
# echo dev_maj:dev_minor weight > blkio.weight_device
|
||||||
Configure weight=300 on /dev/sdb (8:16) in this cgroup
|
Configure weight=300 on /dev/sdb (8:16) in this cgroup
|
||||||
# echo 8:16 300 > blkio.weight_device
|
# echo 8:16 300 > blkio.weight_device
|
||||||
# cat blkio.weight_device
|
# cat blkio.weight_device
|
||||||
|
@@ -138,11 +138,11 @@ With the ability to classify tasks differently for different resources
|
|||||||
the admin can easily set up a script which receives exec notifications
|
the admin can easily set up a script which receives exec notifications
|
||||||
and depending on who is launching the browser he can
|
and depending on who is launching the browser he can
|
||||||
|
|
||||||
# echo browser_pid > /mnt/<restype>/<userclass>/tasks
|
# echo browser_pid > /sys/fs/cgroup/<restype>/<userclass>/tasks
|
||||||
|
|
||||||
With only a single hierarchy, he now would potentially have to create
|
With only a single hierarchy, he now would potentially have to create
|
||||||
a separate cgroup for every browser launched and associate it with
|
a separate cgroup for every browser launched and associate it with
|
||||||
approp network and other resource class. This may lead to
|
appropriate network and other resource class. This may lead to
|
||||||
proliferation of such cgroups.
|
proliferation of such cgroups.
|
||||||
|
|
||||||
Also lets say that the administrator would like to give enhanced network
|
Also lets say that the administrator would like to give enhanced network
|
||||||
@@ -153,9 +153,9 @@ apps enhanced CPU power,
|
|||||||
With ability to write pids directly to resource classes, it's just a
|
With ability to write pids directly to resource classes, it's just a
|
||||||
matter of :
|
matter of :
|
||||||
|
|
||||||
# echo pid > /mnt/network/<new_class>/tasks
|
# echo pid > /sys/fs/cgroup/network/<new_class>/tasks
|
||||||
(after some time)
|
(after some time)
|
||||||
# echo pid > /mnt/network/<orig_class>/tasks
|
# echo pid > /sys/fs/cgroup/network/<orig_class>/tasks
|
||||||
|
|
||||||
Without this ability, he would have to split the cgroup into
|
Without this ability, he would have to split the cgroup into
|
||||||
multiple separate ones and then associate the new cgroups with the
|
multiple separate ones and then associate the new cgroups with the
|
||||||
@@ -310,21 +310,24 @@ subsystem, this is the case for the cpuset.
|
|||||||
To start a new job that is to be contained within a cgroup, using
|
To start a new job that is to be contained within a cgroup, using
|
||||||
the "cpuset" cgroup subsystem, the steps are something like:
|
the "cpuset" cgroup subsystem, the steps are something like:
|
||||||
|
|
||||||
1) mkdir /dev/cgroup
|
1) mount -t tmpfs cgroup_root /sys/fs/cgroup
|
||||||
2) mount -t cgroup -ocpuset cpuset /dev/cgroup
|
2) mkdir /sys/fs/cgroup/cpuset
|
||||||
3) Create the new cgroup by doing mkdir's and write's (or echo's) in
|
3) mount -t cgroup -ocpuset cpuset /sys/fs/cgroup/cpuset
|
||||||
the /dev/cgroup virtual file system.
|
4) Create the new cgroup by doing mkdir's and write's (or echo's) in
|
||||||
4) Start a task that will be the "founding father" of the new job.
|
the /sys/fs/cgroup virtual file system.
|
||||||
5) Attach that task to the new cgroup by writing its pid to the
|
5) Start a task that will be the "founding father" of the new job.
|
||||||
/dev/cgroup tasks file for that cgroup.
|
6) Attach that task to the new cgroup by writing its pid to the
|
||||||
6) fork, exec or clone the job tasks from this founding father task.
|
/sys/fs/cgroup/cpuset/tasks file for that cgroup.
|
||||||
|
7) fork, exec or clone the job tasks from this founding father task.
|
||||||
|
|
||||||
For example, the following sequence of commands will setup a cgroup
|
For example, the following sequence of commands will setup a cgroup
|
||||||
named "Charlie", containing just CPUs 2 and 3, and Memory Node 1,
|
named "Charlie", containing just CPUs 2 and 3, and Memory Node 1,
|
||||||
and then start a subshell 'sh' in that cgroup:
|
and then start a subshell 'sh' in that cgroup:
|
||||||
|
|
||||||
mount -t cgroup cpuset -ocpuset /dev/cgroup
|
mount -t tmpfs cgroup_root /sys/fs/cgroup
|
||||||
cd /dev/cgroup
|
mkdir /sys/fs/cgroup/cpuset
|
||||||
|
mount -t cgroup cpuset -ocpuset /sys/fs/cgroup/cpuset
|
||||||
|
cd /sys/fs/cgroup/cpuset
|
||||||
mkdir Charlie
|
mkdir Charlie
|
||||||
cd Charlie
|
cd Charlie
|
||||||
/bin/echo 2-3 > cpuset.cpus
|
/bin/echo 2-3 > cpuset.cpus
|
||||||
@@ -345,7 +348,7 @@ Creating, modifying, using the cgroups can be done through the cgroup
|
|||||||
virtual filesystem.
|
virtual filesystem.
|
||||||
|
|
||||||
To mount a cgroup hierarchy with all available subsystems, type:
|
To mount a cgroup hierarchy with all available subsystems, type:
|
||||||
# mount -t cgroup xxx /dev/cgroup
|
# mount -t cgroup xxx /sys/fs/cgroup
|
||||||
|
|
||||||
The "xxx" is not interpreted by the cgroup code, but will appear in
|
The "xxx" is not interpreted by the cgroup code, but will appear in
|
||||||
/proc/mounts so may be any useful identifying string that you like.
|
/proc/mounts so may be any useful identifying string that you like.
|
||||||
@@ -354,23 +357,32 @@ Note: Some subsystems do not work without some user input first. For instance,
|
|||||||
if cpusets are enabled the user will have to populate the cpus and mems files
|
if cpusets are enabled the user will have to populate the cpus and mems files
|
||||||
for each new cgroup created before that group can be used.
|
for each new cgroup created before that group can be used.
|
||||||
|
|
||||||
|
As explained in section `1.2 Why are cgroups needed?' you should create
|
||||||
|
different hierarchies of cgroups for each single resource or group of
|
||||||
|
resources you want to control. Therefore, you should mount a tmpfs on
|
||||||
|
/sys/fs/cgroup and create directories for each cgroup resource or resource
|
||||||
|
group.
|
||||||
|
|
||||||
|
# mount -t tmpfs cgroup_root /sys/fs/cgroup
|
||||||
|
# mkdir /sys/fs/cgroup/rg1
|
||||||
|
|
||||||
To mount a cgroup hierarchy with just the cpuset and memory
|
To mount a cgroup hierarchy with just the cpuset and memory
|
||||||
subsystems, type:
|
subsystems, type:
|
||||||
# mount -t cgroup -o cpuset,memory hier1 /dev/cgroup
|
# mount -t cgroup -o cpuset,memory hier1 /sys/fs/cgroup/rg1
|
||||||
|
|
||||||
To change the set of subsystems bound to a mounted hierarchy, just
|
To change the set of subsystems bound to a mounted hierarchy, just
|
||||||
remount with different options:
|
remount with different options:
|
||||||
# mount -o remount,cpuset,blkio hier1 /dev/cgroup
|
# mount -o remount,cpuset,blkio hier1 /sys/fs/cgroup/rg1
|
||||||
|
|
||||||
Now memory is removed from the hierarchy and blkio is added.
|
Now memory is removed from the hierarchy and blkio is added.
|
||||||
|
|
||||||
Note this will add blkio to the hierarchy but won't remove memory or
|
Note this will add blkio to the hierarchy but won't remove memory or
|
||||||
cpuset, because the new options are appended to the old ones:
|
cpuset, because the new options are appended to the old ones:
|
||||||
# mount -o remount,blkio /dev/cgroup
|
# mount -o remount,blkio /sys/fs/cgroup/rg1
|
||||||
|
|
||||||
To Specify a hierarchy's release_agent:
|
To Specify a hierarchy's release_agent:
|
||||||
# mount -t cgroup -o cpuset,release_agent="/sbin/cpuset_release_agent" \
|
# mount -t cgroup -o cpuset,release_agent="/sbin/cpuset_release_agent" \
|
||||||
xxx /dev/cgroup
|
xxx /sys/fs/cgroup/rg1
|
||||||
|
|
||||||
Note that specifying 'release_agent' more than once will return failure.
|
Note that specifying 'release_agent' more than once will return failure.
|
||||||
|
|
||||||
@@ -379,17 +391,17 @@ when the hierarchy consists of a single (root) cgroup. Supporting
|
|||||||
the ability to arbitrarily bind/unbind subsystems from an existing
|
the ability to arbitrarily bind/unbind subsystems from an existing
|
||||||
cgroup hierarchy is intended to be implemented in the future.
|
cgroup hierarchy is intended to be implemented in the future.
|
||||||
|
|
||||||
Then under /dev/cgroup you can find a tree that corresponds to the
|
Then under /sys/fs/cgroup/rg1 you can find a tree that corresponds to the
|
||||||
tree of the cgroups in the system. For instance, /dev/cgroup
|
tree of the cgroups in the system. For instance, /sys/fs/cgroup/rg1
|
||||||
is the cgroup that holds the whole system.
|
is the cgroup that holds the whole system.
|
||||||
|
|
||||||
If you want to change the value of release_agent:
|
If you want to change the value of release_agent:
|
||||||
# echo "/sbin/new_release_agent" > /dev/cgroup/release_agent
|
# echo "/sbin/new_release_agent" > /sys/fs/cgroup/rg1/release_agent
|
||||||
|
|
||||||
It can also be changed via remount.
|
It can also be changed via remount.
|
||||||
|
|
||||||
If you want to create a new cgroup under /dev/cgroup:
|
If you want to create a new cgroup under /sys/fs/cgroup/rg1:
|
||||||
# cd /dev/cgroup
|
# cd /sys/fs/cgroup/rg1
|
||||||
# mkdir my_cgroup
|
# mkdir my_cgroup
|
||||||
|
|
||||||
Now you want to do something with this cgroup.
|
Now you want to do something with this cgroup.
|
||||||
|
@@ -10,26 +10,25 @@ directly present in its group.
|
|||||||
|
|
||||||
Accounting groups can be created by first mounting the cgroup filesystem.
|
Accounting groups can be created by first mounting the cgroup filesystem.
|
||||||
|
|
||||||
# mkdir /cgroups
|
# mount -t cgroup -ocpuacct none /sys/fs/cgroup
|
||||||
# mount -t cgroup -ocpuacct none /cgroups
|
|
||||||
|
|
||||||
With the above step, the initial or the parent accounting group
|
With the above step, the initial or the parent accounting group becomes
|
||||||
becomes visible at /cgroups. At bootup, this group includes all the
|
visible at /sys/fs/cgroup. At bootup, this group includes all the tasks in
|
||||||
tasks in the system. /cgroups/tasks lists the tasks in this cgroup.
|
the system. /sys/fs/cgroup/tasks lists the tasks in this cgroup.
|
||||||
/cgroups/cpuacct.usage gives the CPU time (in nanoseconds) obtained by
|
/sys/fs/cgroup/cpuacct.usage gives the CPU time (in nanoseconds) obtained
|
||||||
this group which is essentially the CPU time obtained by all the tasks
|
by this group which is essentially the CPU time obtained by all the tasks
|
||||||
in the system.
|
in the system.
|
||||||
|
|
||||||
New accounting groups can be created under the parent group /cgroups.
|
New accounting groups can be created under the parent group /sys/fs/cgroup.
|
||||||
|
|
||||||
# cd /cgroups
|
# cd /sys/fs/cgroup
|
||||||
# mkdir g1
|
# mkdir g1
|
||||||
# echo $$ > g1
|
# echo $$ > g1
|
||||||
|
|
||||||
The above steps create a new group g1 and move the current shell
|
The above steps create a new group g1 and move the current shell
|
||||||
process (bash) into it. CPU time consumed by this bash and its children
|
process (bash) into it. CPU time consumed by this bash and its children
|
||||||
can be obtained from g1/cpuacct.usage and the same is accumulated in
|
can be obtained from g1/cpuacct.usage and the same is accumulated in
|
||||||
/cgroups/cpuacct.usage also.
|
/sys/fs/cgroup/cpuacct.usage also.
|
||||||
|
|
||||||
cpuacct.stat file lists a few statistics which further divide the
|
cpuacct.stat file lists a few statistics which further divide the
|
||||||
CPU time obtained by the cgroup into user and system times. Currently
|
CPU time obtained by the cgroup into user and system times. Currently
|
||||||
|
@@ -661,21 +661,21 @@ than stress the kernel.
|
|||||||
|
|
||||||
To start a new job that is to be contained within a cpuset, the steps are:
|
To start a new job that is to be contained within a cpuset, the steps are:
|
||||||
|
|
||||||
1) mkdir /dev/cpuset
|
1) mkdir /sys/fs/cgroup/cpuset
|
||||||
2) mount -t cgroup -ocpuset cpuset /dev/cpuset
|
2) mount -t cgroup -ocpuset cpuset /sys/fs/cgroup/cpuset
|
||||||
3) Create the new cpuset by doing mkdir's and write's (or echo's) in
|
3) Create the new cpuset by doing mkdir's and write's (or echo's) in
|
||||||
the /dev/cpuset virtual file system.
|
the /sys/fs/cgroup/cpuset virtual file system.
|
||||||
4) Start a task that will be the "founding father" of the new job.
|
4) Start a task that will be the "founding father" of the new job.
|
||||||
5) Attach that task to the new cpuset by writing its pid to the
|
5) Attach that task to the new cpuset by writing its pid to the
|
||||||
/dev/cpuset tasks file for that cpuset.
|
/sys/fs/cgroup/cpuset tasks file for that cpuset.
|
||||||
6) fork, exec or clone the job tasks from this founding father task.
|
6) fork, exec or clone the job tasks from this founding father task.
|
||||||
|
|
||||||
For example, the following sequence of commands will setup a cpuset
|
For example, the following sequence of commands will setup a cpuset
|
||||||
named "Charlie", containing just CPUs 2 and 3, and Memory Node 1,
|
named "Charlie", containing just CPUs 2 and 3, and Memory Node 1,
|
||||||
and then start a subshell 'sh' in that cpuset:
|
and then start a subshell 'sh' in that cpuset:
|
||||||
|
|
||||||
mount -t cgroup -ocpuset cpuset /dev/cpuset
|
mount -t cgroup -ocpuset cpuset /sys/fs/cgroup/cpuset
|
||||||
cd /dev/cpuset
|
cd /sys/fs/cgroup/cpuset
|
||||||
mkdir Charlie
|
mkdir Charlie
|
||||||
cd Charlie
|
cd Charlie
|
||||||
/bin/echo 2-3 > cpuset.cpus
|
/bin/echo 2-3 > cpuset.cpus
|
||||||
@@ -710,14 +710,14 @@ Creating, modifying, using the cpusets can be done through the cpuset
|
|||||||
virtual filesystem.
|
virtual filesystem.
|
||||||
|
|
||||||
To mount it, type:
|
To mount it, type:
|
||||||
# mount -t cgroup -o cpuset cpuset /dev/cpuset
|
# mount -t cgroup -o cpuset cpuset /sys/fs/cgroup/cpuset
|
||||||
|
|
||||||
Then under /dev/cpuset you can find a tree that corresponds to the
|
Then under /sys/fs/cgroup/cpuset you can find a tree that corresponds to the
|
||||||
tree of the cpusets in the system. For instance, /dev/cpuset
|
tree of the cpusets in the system. For instance, /sys/fs/cgroup/cpuset
|
||||||
is the cpuset that holds the whole system.
|
is the cpuset that holds the whole system.
|
||||||
|
|
||||||
If you want to create a new cpuset under /dev/cpuset:
|
If you want to create a new cpuset under /sys/fs/cgroup/cpuset:
|
||||||
# cd /dev/cpuset
|
# cd /sys/fs/cgroup/cpuset
|
||||||
# mkdir my_cpuset
|
# mkdir my_cpuset
|
||||||
|
|
||||||
Now you want to do something with this cpuset.
|
Now you want to do something with this cpuset.
|
||||||
@@ -765,12 +765,12 @@ wrapper around the cgroup filesystem.
|
|||||||
|
|
||||||
The command
|
The command
|
||||||
|
|
||||||
mount -t cpuset X /dev/cpuset
|
mount -t cpuset X /sys/fs/cgroup/cpuset
|
||||||
|
|
||||||
is equivalent to
|
is equivalent to
|
||||||
|
|
||||||
mount -t cgroup -ocpuset,noprefix X /dev/cpuset
|
mount -t cgroup -ocpuset,noprefix X /sys/fs/cgroup/cpuset
|
||||||
echo "/sbin/cpuset_release_agent" > /dev/cpuset/release_agent
|
echo "/sbin/cpuset_release_agent" > /sys/fs/cgroup/cpuset/release_agent
|
||||||
|
|
||||||
2.2 Adding/removing cpus
|
2.2 Adding/removing cpus
|
||||||
------------------------
|
------------------------
|
||||||
|
@@ -22,16 +22,16 @@ removed from the child(ren).
|
|||||||
An entry is added using devices.allow, and removed using
|
An entry is added using devices.allow, and removed using
|
||||||
devices.deny. For instance
|
devices.deny. For instance
|
||||||
|
|
||||||
echo 'c 1:3 mr' > /cgroups/1/devices.allow
|
echo 'c 1:3 mr' > /sys/fs/cgroup/1/devices.allow
|
||||||
|
|
||||||
allows cgroup 1 to read and mknod the device usually known as
|
allows cgroup 1 to read and mknod the device usually known as
|
||||||
/dev/null. Doing
|
/dev/null. Doing
|
||||||
|
|
||||||
echo a > /cgroups/1/devices.deny
|
echo a > /sys/fs/cgroup/1/devices.deny
|
||||||
|
|
||||||
will remove the default 'a *:* rwm' entry. Doing
|
will remove the default 'a *:* rwm' entry. Doing
|
||||||
|
|
||||||
echo a > /cgroups/1/devices.allow
|
echo a > /sys/fs/cgroup/1/devices.allow
|
||||||
|
|
||||||
will add the 'a *:* rwm' entry to the whitelist.
|
will add the 'a *:* rwm' entry to the whitelist.
|
||||||
|
|
||||||
|
@@ -59,28 +59,28 @@ is non-freezable.
|
|||||||
|
|
||||||
* Examples of usage :
|
* Examples of usage :
|
||||||
|
|
||||||
# mkdir /containers
|
# mkdir /sys/fs/cgroup/freezer
|
||||||
# mount -t cgroup -ofreezer freezer /containers
|
# mount -t cgroup -ofreezer freezer /sys/fs/cgroup/freezer
|
||||||
# mkdir /containers/0
|
# mkdir /sys/fs/cgroup/freezer/0
|
||||||
# echo $some_pid > /containers/0/tasks
|
# echo $some_pid > /sys/fs/cgroup/freezer/0/tasks
|
||||||
|
|
||||||
to get status of the freezer subsystem :
|
to get status of the freezer subsystem :
|
||||||
|
|
||||||
# cat /containers/0/freezer.state
|
# cat /sys/fs/cgroup/freezer/0/freezer.state
|
||||||
THAWED
|
THAWED
|
||||||
|
|
||||||
to freeze all tasks in the container :
|
to freeze all tasks in the container :
|
||||||
|
|
||||||
# echo FROZEN > /containers/0/freezer.state
|
# echo FROZEN > /sys/fs/cgroup/freezer/0/freezer.state
|
||||||
# cat /containers/0/freezer.state
|
# cat /sys/fs/cgroup/freezer/0/freezer.state
|
||||||
FREEZING
|
FREEZING
|
||||||
# cat /containers/0/freezer.state
|
# cat /sys/fs/cgroup/freezer/0/freezer.state
|
||||||
FROZEN
|
FROZEN
|
||||||
|
|
||||||
to unfreeze all tasks in the container :
|
to unfreeze all tasks in the container :
|
||||||
|
|
||||||
# echo THAWED > /containers/0/freezer.state
|
# echo THAWED > /sys/fs/cgroup/freezer/0/freezer.state
|
||||||
# cat /containers/0/freezer.state
|
# cat /sys/fs/cgroup/freezer/0/freezer.state
|
||||||
THAWED
|
THAWED
|
||||||
|
|
||||||
This is the basic mechanism which should do the right thing for user space task
|
This is the basic mechanism which should do the right thing for user space task
|
||||||
|
@@ -1,8 +1,8 @@
|
|||||||
Memory Resource Controller
|
Memory Resource Controller
|
||||||
|
|
||||||
NOTE: The Memory Resource Controller has been generically been referred
|
NOTE: The Memory Resource Controller has generically been referred to as the
|
||||||
to as the memory controller in this document. Do not confuse memory
|
memory controller in this document. Do not confuse memory controller
|
||||||
controller used here with the memory controller that is used in hardware.
|
used here with the memory controller that is used in hardware.
|
||||||
|
|
||||||
(For editors)
|
(For editors)
|
||||||
In this document:
|
In this document:
|
||||||
@@ -70,6 +70,7 @@ Brief summary of control files.
|
|||||||
(See sysctl's vm.swappiness)
|
(See sysctl's vm.swappiness)
|
||||||
memory.move_charge_at_immigrate # set/show controls of moving charges
|
memory.move_charge_at_immigrate # set/show controls of moving charges
|
||||||
memory.oom_control # set/show oom controls.
|
memory.oom_control # set/show oom controls.
|
||||||
|
memory.numa_stat # show the number of memory usage per numa node
|
||||||
|
|
||||||
1. History
|
1. History
|
||||||
|
|
||||||
@@ -181,7 +182,7 @@ behind this approach is that a cgroup that aggressively uses a shared
|
|||||||
page will eventually get charged for it (once it is uncharged from
|
page will eventually get charged for it (once it is uncharged from
|
||||||
the cgroup that brought it in -- this will happen on memory pressure).
|
the cgroup that brought it in -- this will happen on memory pressure).
|
||||||
|
|
||||||
Exception: If CONFIG_CGROUP_CGROUP_MEM_RES_CTLR_SWAP is not used..
|
Exception: If CONFIG_CGROUP_CGROUP_MEM_RES_CTLR_SWAP is not used.
|
||||||
When you do swapoff and make swapped-out pages of shmem(tmpfs) to
|
When you do swapoff and make swapped-out pages of shmem(tmpfs) to
|
||||||
be backed into memory in force, charges for pages are accounted against the
|
be backed into memory in force, charges for pages are accounted against the
|
||||||
caller of swapoff rather than the users of shmem.
|
caller of swapoff rather than the users of shmem.
|
||||||
@@ -213,7 +214,7 @@ affecting global LRU, memory+swap limit is better than just limiting swap from
|
|||||||
OS point of view.
|
OS point of view.
|
||||||
|
|
||||||
* What happens when a cgroup hits memory.memsw.limit_in_bytes
|
* What happens when a cgroup hits memory.memsw.limit_in_bytes
|
||||||
When a cgroup his memory.memsw.limit_in_bytes, it's useless to do swap-out
|
When a cgroup hits memory.memsw.limit_in_bytes, it's useless to do swap-out
|
||||||
in this cgroup. Then, swap-out will not be done by cgroup routine and file
|
in this cgroup. Then, swap-out will not be done by cgroup routine and file
|
||||||
caches are dropped. But as mentioned above, global LRU can do swapout memory
|
caches are dropped. But as mentioned above, global LRU can do swapout memory
|
||||||
from it for sanity of the system's memory management state. You can't forbid
|
from it for sanity of the system's memory management state. You can't forbid
|
||||||
@@ -263,16 +264,17 @@ b. Enable CONFIG_RESOURCE_COUNTERS
|
|||||||
c. Enable CONFIG_CGROUP_MEM_RES_CTLR
|
c. Enable CONFIG_CGROUP_MEM_RES_CTLR
|
||||||
d. Enable CONFIG_CGROUP_MEM_RES_CTLR_SWAP (to use swap extension)
|
d. Enable CONFIG_CGROUP_MEM_RES_CTLR_SWAP (to use swap extension)
|
||||||
|
|
||||||
1. Prepare the cgroups
|
1. Prepare the cgroups (see cgroups.txt, Why are cgroups needed?)
|
||||||
# mkdir -p /cgroups
|
# mount -t tmpfs none /sys/fs/cgroup
|
||||||
# mount -t cgroup none /cgroups -o memory
|
# mkdir /sys/fs/cgroup/memory
|
||||||
|
# mount -t cgroup none /sys/fs/cgroup/memory -o memory
|
||||||
|
|
||||||
2. Make the new group and move bash into it
|
2. Make the new group and move bash into it
|
||||||
# mkdir /cgroups/0
|
# mkdir /sys/fs/cgroup/memory/0
|
||||||
# echo $$ > /cgroups/0/tasks
|
# echo $$ > /sys/fs/cgroup/memory/0/tasks
|
||||||
|
|
||||||
Since now we're in the 0 cgroup, we can alter the memory limit:
|
Since now we're in the 0 cgroup, we can alter the memory limit:
|
||||||
# echo 4M > /cgroups/0/memory.limit_in_bytes
|
# echo 4M > /sys/fs/cgroup/memory/0/memory.limit_in_bytes
|
||||||
|
|
||||||
NOTE: We can use a suffix (k, K, m, M, g or G) to indicate values in kilo,
|
NOTE: We can use a suffix (k, K, m, M, g or G) to indicate values in kilo,
|
||||||
mega or gigabytes. (Here, Kilo, Mega, Giga are Kibibytes, Mebibytes, Gibibytes.)
|
mega or gigabytes. (Here, Kilo, Mega, Giga are Kibibytes, Mebibytes, Gibibytes.)
|
||||||
@@ -280,11 +282,11 @@ mega or gigabytes. (Here, Kilo, Mega, Giga are Kibibytes, Mebibytes, Gibibytes.)
|
|||||||
NOTE: We can write "-1" to reset the *.limit_in_bytes(unlimited).
|
NOTE: We can write "-1" to reset the *.limit_in_bytes(unlimited).
|
||||||
NOTE: We cannot set limits on the root cgroup any more.
|
NOTE: We cannot set limits on the root cgroup any more.
|
||||||
|
|
||||||
# cat /cgroups/0/memory.limit_in_bytes
|
# cat /sys/fs/cgroup/memory/0/memory.limit_in_bytes
|
||||||
4194304
|
4194304
|
||||||
|
|
||||||
We can check the usage:
|
We can check the usage:
|
||||||
# cat /cgroups/0/memory.usage_in_bytes
|
# cat /sys/fs/cgroup/memory/0/memory.usage_in_bytes
|
||||||
1216512
|
1216512
|
||||||
|
|
||||||
A successful write to this file does not guarantee a successful set of
|
A successful write to this file does not guarantee a successful set of
|
||||||
@@ -464,6 +466,24 @@ value for efficient access. (Of course, when necessary, it's synchronized.)
|
|||||||
If you want to know more exact memory usage, you should use RSS+CACHE(+SWAP)
|
If you want to know more exact memory usage, you should use RSS+CACHE(+SWAP)
|
||||||
value in memory.stat(see 5.2).
|
value in memory.stat(see 5.2).
|
||||||
|
|
||||||
|
5.6 numa_stat
|
||||||
|
|
||||||
|
This is similar to numa_maps but operates on a per-memcg basis. This is
|
||||||
|
useful for providing visibility into the numa locality information within
|
||||||
|
an memcg since the pages are allowed to be allocated from any physical
|
||||||
|
node. One of the usecases is evaluating application performance by
|
||||||
|
combining this information with the application's cpu allocation.
|
||||||
|
|
||||||
|
We export "total", "file", "anon" and "unevictable" pages per-node for
|
||||||
|
each memcg. The ouput format of memory.numa_stat is:
|
||||||
|
|
||||||
|
total=<total pages> N0=<node 0 pages> N1=<node 1 pages> ...
|
||||||
|
file=<total file pages> N0=<node 0 pages> N1=<node 1 pages> ...
|
||||||
|
anon=<total anon pages> N0=<node 0 pages> N1=<node 1 pages> ...
|
||||||
|
unevictable=<total anon pages> N0=<node 0 pages> N1=<node 1 pages> ...
|
||||||
|
|
||||||
|
And we have total = file + anon + unevictable.
|
||||||
|
|
||||||
6. Hierarchy support
|
6. Hierarchy support
|
||||||
|
|
||||||
The memory controller supports a deep hierarchy and hierarchical accounting.
|
The memory controller supports a deep hierarchy and hierarchical accounting.
|
||||||
@@ -471,13 +491,13 @@ The hierarchy is created by creating the appropriate cgroups in the
|
|||||||
cgroup filesystem. Consider for example, the following cgroup filesystem
|
cgroup filesystem. Consider for example, the following cgroup filesystem
|
||||||
hierarchy
|
hierarchy
|
||||||
|
|
||||||
root
|
root
|
||||||
/ | \
|
/ | \
|
||||||
/ | \
|
/ | \
|
||||||
a b c
|
a b c
|
||||||
| \
|
| \
|
||||||
| \
|
| \
|
||||||
d e
|
d e
|
||||||
|
|
||||||
In the diagram above, with hierarchical accounting enabled, all memory
|
In the diagram above, with hierarchical accounting enabled, all memory
|
||||||
usage of e, is accounted to its ancestors up until the root (i.e, c and root),
|
usage of e, is accounted to its ancestors up until the root (i.e, c and root),
|
||||||
|
@@ -12,8 +12,9 @@ Table of Contents
|
|||||||
=================
|
=================
|
||||||
|
|
||||||
I - Introduction
|
I - Introduction
|
||||||
1) Entry point for arch/powerpc
|
1) Entry point for arch/arm
|
||||||
2) Entry point for arch/x86
|
2) Entry point for arch/powerpc
|
||||||
|
3) Entry point for arch/x86
|
||||||
|
|
||||||
II - The DT block format
|
II - The DT block format
|
||||||
1) Header
|
1) Header
|
||||||
@@ -148,7 +149,46 @@ upgrades without significantly impacting the kernel code or cluttering
|
|||||||
it with special cases.
|
it with special cases.
|
||||||
|
|
||||||
|
|
||||||
1) Entry point for arch/powerpc
|
1) Entry point for arch/arm
|
||||||
|
---------------------------
|
||||||
|
|
||||||
|
There is one single entry point to the kernel, at the start
|
||||||
|
of the kernel image. That entry point supports two calling
|
||||||
|
conventions. A summary of the interface is described here. A full
|
||||||
|
description of the boot requirements is documented in
|
||||||
|
Documentation/arm/Booting
|
||||||
|
|
||||||
|
a) ATAGS interface. Minimal information is passed from firmware
|
||||||
|
to the kernel with a tagged list of predefined parameters.
|
||||||
|
|
||||||
|
r0 : 0
|
||||||
|
|
||||||
|
r1 : Machine type number
|
||||||
|
|
||||||
|
r2 : Physical address of tagged list in system RAM
|
||||||
|
|
||||||
|
b) Entry with a flattened device-tree block. Firmware loads the
|
||||||
|
physical address of the flattened device tree block (dtb) into r2,
|
||||||
|
r1 is not used, but it is considered good practise to use a valid
|
||||||
|
machine number as described in Documentation/arm/Booting.
|
||||||
|
|
||||||
|
r0 : 0
|
||||||
|
|
||||||
|
r1 : Valid machine type number. When using a device tree,
|
||||||
|
a single machine type number will often be assigned to
|
||||||
|
represent a class or family of SoCs.
|
||||||
|
|
||||||
|
r2 : physical pointer to the device-tree block
|
||||||
|
(defined in chapter II) in RAM. Device tree can be located
|
||||||
|
anywhere in system RAM, but it should be aligned on a 64 bit
|
||||||
|
boundary.
|
||||||
|
|
||||||
|
The kernel will differentiate between ATAGS and device tree booting by
|
||||||
|
reading the memory pointed to by r2 and looking for either the flattened
|
||||||
|
device tree block magic value (0xd00dfeed) or the ATAG_CORE value at
|
||||||
|
offset 0x4 from r2 (0x54410001).
|
||||||
|
|
||||||
|
2) Entry point for arch/powerpc
|
||||||
-------------------------------
|
-------------------------------
|
||||||
|
|
||||||
There is one single entry point to the kernel, at the start
|
There is one single entry point to the kernel, at the start
|
||||||
@@ -226,7 +266,7 @@ it with special cases.
|
|||||||
cannot support both configurations with Book E and configurations
|
cannot support both configurations with Book E and configurations
|
||||||
with classic Powerpc architectures.
|
with classic Powerpc architectures.
|
||||||
|
|
||||||
2) Entry point for arch/x86
|
3) Entry point for arch/x86
|
||||||
-------------------------------
|
-------------------------------
|
||||||
|
|
||||||
There is one single 32bit entry point to the kernel at code32_start,
|
There is one single 32bit entry point to the kernel at code32_start,
|
||||||
|
@@ -1 +1,96 @@
|
|||||||
See Documentation/crypto/async-tx-api.txt
|
DMA Engine API Guide
|
||||||
|
====================
|
||||||
|
|
||||||
|
Vinod Koul <vinod dot koul at intel.com>
|
||||||
|
|
||||||
|
NOTE: For DMA Engine usage in async_tx please see:
|
||||||
|
Documentation/crypto/async-tx-api.txt
|
||||||
|
|
||||||
|
|
||||||
|
Below is a guide to device driver writers on how to use the Slave-DMA API of the
|
||||||
|
DMA Engine. This is applicable only for slave DMA usage only.
|
||||||
|
|
||||||
|
The slave DMA usage consists of following steps
|
||||||
|
1. Allocate a DMA slave channel
|
||||||
|
2. Set slave and controller specific parameters
|
||||||
|
3. Get a descriptor for transaction
|
||||||
|
4. Submit the transaction and wait for callback notification
|
||||||
|
|
||||||
|
1. Allocate a DMA slave channel
|
||||||
|
Channel allocation is slightly different in the slave DMA context, client
|
||||||
|
drivers typically need a channel from a particular DMA controller only and even
|
||||||
|
in some cases a specific channel is desired. To request a channel
|
||||||
|
dma_request_channel() API is used.
|
||||||
|
|
||||||
|
Interface:
|
||||||
|
struct dma_chan *dma_request_channel(dma_cap_mask_t mask,
|
||||||
|
dma_filter_fn filter_fn,
|
||||||
|
void *filter_param);
|
||||||
|
where dma_filter_fn is defined as:
|
||||||
|
typedef bool (*dma_filter_fn)(struct dma_chan *chan, void *filter_param);
|
||||||
|
|
||||||
|
When the optional 'filter_fn' parameter is set to NULL dma_request_channel
|
||||||
|
simply returns the first channel that satisfies the capability mask. Otherwise,
|
||||||
|
when the mask parameter is insufficient for specifying the necessary channel,
|
||||||
|
the filter_fn routine can be used to disposition the available channels in the
|
||||||
|
system. The filter_fn routine is called once for each free channel in the
|
||||||
|
system. Upon seeing a suitable channel filter_fn returns DMA_ACK which flags
|
||||||
|
that channel to be the return value from dma_request_channel. A channel
|
||||||
|
allocated via this interface is exclusive to the caller, until
|
||||||
|
dma_release_channel() is called.
|
||||||
|
|
||||||
|
2. Set slave and controller specific parameters
|
||||||
|
Next step is always to pass some specific information to the DMA driver. Most of
|
||||||
|
the generic information which a slave DMA can use is in struct dma_slave_config.
|
||||||
|
It allows the clients to specify DMA direction, DMA addresses, bus widths, DMA
|
||||||
|
burst lengths etc. If some DMA controllers have more parameters to be sent then
|
||||||
|
they should try to embed struct dma_slave_config in their controller specific
|
||||||
|
structure. That gives flexibility to client to pass more parameters, if
|
||||||
|
required.
|
||||||
|
|
||||||
|
Interface:
|
||||||
|
int dmaengine_slave_config(struct dma_chan *chan,
|
||||||
|
struct dma_slave_config *config)
|
||||||
|
|
||||||
|
3. Get a descriptor for transaction
|
||||||
|
For slave usage the various modes of slave transfers supported by the
|
||||||
|
DMA-engine are:
|
||||||
|
slave_sg - DMA a list of scatter gather buffers from/to a peripheral
|
||||||
|
dma_cyclic - Perform a cyclic DMA operation from/to a peripheral till the
|
||||||
|
operation is explicitly stopped.
|
||||||
|
The non NULL return of this transfer API represents a "descriptor" for the given
|
||||||
|
transaction.
|
||||||
|
|
||||||
|
Interface:
|
||||||
|
struct dma_async_tx_descriptor *(*chan->device->device_prep_dma_sg)(
|
||||||
|
struct dma_chan *chan,
|
||||||
|
struct scatterlist *dst_sg, unsigned int dst_nents,
|
||||||
|
struct scatterlist *src_sg, unsigned int src_nents,
|
||||||
|
unsigned long flags);
|
||||||
|
struct dma_async_tx_descriptor *(*chan->device->device_prep_dma_cyclic)(
|
||||||
|
struct dma_chan *chan, dma_addr_t buf_addr, size_t buf_len,
|
||||||
|
size_t period_len, enum dma_data_direction direction);
|
||||||
|
|
||||||
|
4. Submit the transaction and wait for callback notification
|
||||||
|
To schedule the transaction to be scheduled by dma device, the "descriptor"
|
||||||
|
returned in above (3) needs to be submitted.
|
||||||
|
To tell the dma driver that a transaction is ready to be serviced, the
|
||||||
|
descriptor->submit() callback needs to be invoked. This chains the descriptor to
|
||||||
|
the pending queue.
|
||||||
|
The transactions in the pending queue can be activated by calling the
|
||||||
|
issue_pending API. If channel is idle then the first transaction in queue is
|
||||||
|
started and subsequent ones queued up.
|
||||||
|
On completion of the DMA operation the next in queue is submitted and a tasklet
|
||||||
|
triggered. The tasklet would then call the client driver completion callback
|
||||||
|
routine for notification, if set.
|
||||||
|
Interface:
|
||||||
|
void dma_async_issue_pending(struct dma_chan *chan);
|
||||||
|
|
||||||
|
==============================================================================
|
||||||
|
|
||||||
|
Additional usage notes for dma driver writers
|
||||||
|
1/ Although DMA engine specifies that completion callback routines cannot submit
|
||||||
|
any new operations, but typically for slave DMA subsequent transaction may not
|
||||||
|
be available for submit prior to callback routine being called. This requirement
|
||||||
|
is not a requirement for DMA-slave devices. But they should take care to drop
|
||||||
|
the spin-lock they might be holding before calling the callback routine
|
||||||
|
@@ -6,6 +6,42 @@ be removed from this file.
|
|||||||
|
|
||||||
---------------------------
|
---------------------------
|
||||||
|
|
||||||
|
What: x86 floppy disable_hlt
|
||||||
|
When: 2012
|
||||||
|
Why: ancient workaround of dubious utility clutters the
|
||||||
|
code used by everybody else.
|
||||||
|
Who: Len Brown <len.brown@intel.com>
|
||||||
|
|
||||||
|
---------------------------
|
||||||
|
|
||||||
|
What: CONFIG_APM_CPU_IDLE, and its ability to call APM BIOS in idle
|
||||||
|
When: 2012
|
||||||
|
Why: This optional sub-feature of APM is of dubious reliability,
|
||||||
|
and ancient APM laptops are likely better served by calling HLT.
|
||||||
|
Deleting CONFIG_APM_CPU_IDLE allows x86 to stop exporting
|
||||||
|
the pm_idle function pointer to modules.
|
||||||
|
Who: Len Brown <len.brown@intel.com>
|
||||||
|
|
||||||
|
----------------------------
|
||||||
|
|
||||||
|
What: x86_32 "no-hlt" cmdline param
|
||||||
|
When: 2012
|
||||||
|
Why: remove a branch from idle path, simplify code used by everybody.
|
||||||
|
This option disabled the use of HLT in idle and machine_halt()
|
||||||
|
for hardware that was flakey 15-years ago. Today we have
|
||||||
|
"idle=poll" that removed HLT from idle, and so if such a machine
|
||||||
|
is still running the upstream kernel, "idle=poll" is likely sufficient.
|
||||||
|
Who: Len Brown <len.brown@intel.com>
|
||||||
|
|
||||||
|
----------------------------
|
||||||
|
|
||||||
|
What: x86 "idle=mwait" cmdline param
|
||||||
|
When: 2012
|
||||||
|
Why: simplify x86 idle code
|
||||||
|
Who: Len Brown <len.brown@intel.com>
|
||||||
|
|
||||||
|
----------------------------
|
||||||
|
|
||||||
What: PRISM54
|
What: PRISM54
|
||||||
When: 2.6.34
|
When: 2.6.34
|
||||||
|
|
||||||
@@ -445,23 +481,6 @@ Who: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>
|
|||||||
|
|
||||||
----------------------------
|
----------------------------
|
||||||
|
|
||||||
What: namespace cgroup (ns_cgroup)
|
|
||||||
When: 2.6.38
|
|
||||||
Why: The ns_cgroup leads to some problems:
|
|
||||||
* cgroup creation is out-of-control
|
|
||||||
* cgroup name can conflict when pids are looping
|
|
||||||
* it is not possible to have a single process handling
|
|
||||||
a lot of namespaces without falling in a exponential creation time
|
|
||||||
* we may want to create a namespace without creating a cgroup
|
|
||||||
|
|
||||||
The ns_cgroup is replaced by a compatibility flag 'clone_children',
|
|
||||||
where a newly created cgroup will copy the parent cgroup values.
|
|
||||||
The userspace has to manually create a cgroup and add a task to
|
|
||||||
the 'tasks' file.
|
|
||||||
Who: Daniel Lezcano <daniel.lezcano@free.fr>
|
|
||||||
|
|
||||||
----------------------------
|
|
||||||
|
|
||||||
What: iwlwifi disable_hw_scan module parameters
|
What: iwlwifi disable_hw_scan module parameters
|
||||||
When: 2.6.40
|
When: 2.6.40
|
||||||
Why: Hareware scan is the prefer method for iwlwifi devices for
|
Why: Hareware scan is the prefer method for iwlwifi devices for
|
||||||
|
@@ -104,7 +104,7 @@ of the locking scheme for directory operations.
|
|||||||
prototypes:
|
prototypes:
|
||||||
struct inode *(*alloc_inode)(struct super_block *sb);
|
struct inode *(*alloc_inode)(struct super_block *sb);
|
||||||
void (*destroy_inode)(struct inode *);
|
void (*destroy_inode)(struct inode *);
|
||||||
void (*dirty_inode) (struct inode *);
|
void (*dirty_inode) (struct inode *, int flags);
|
||||||
int (*write_inode) (struct inode *, struct writeback_control *wbc);
|
int (*write_inode) (struct inode *, struct writeback_control *wbc);
|
||||||
int (*drop_inode) (struct inode *);
|
int (*drop_inode) (struct inode *);
|
||||||
void (*evict_inode) (struct inode *);
|
void (*evict_inode) (struct inode *);
|
||||||
@@ -126,7 +126,7 @@ locking rules:
|
|||||||
s_umount
|
s_umount
|
||||||
alloc_inode:
|
alloc_inode:
|
||||||
destroy_inode:
|
destroy_inode:
|
||||||
dirty_inode: (must not sleep)
|
dirty_inode:
|
||||||
write_inode:
|
write_inode:
|
||||||
drop_inode: !!!inode->i_lock!!!
|
drop_inode: !!!inode->i_lock!!!
|
||||||
evict_inode:
|
evict_inode:
|
||||||
|
@@ -47,8 +47,8 @@ request-key will find the first matching line and corresponding program. In
|
|||||||
this case, /some/other/program will handle all uid lookups and
|
this case, /some/other/program will handle all uid lookups and
|
||||||
/usr/sbin/nfs.idmap will handle gid, user, and group lookups.
|
/usr/sbin/nfs.idmap will handle gid, user, and group lookups.
|
||||||
|
|
||||||
See <file:Documentation/keys-request-keys.txt> for more information about the
|
See <file:Documentation/security/keys-request-keys.txt> for more information
|
||||||
request-key function.
|
about the request-key function.
|
||||||
|
|
||||||
|
|
||||||
=========
|
=========
|
||||||
|
@@ -843,6 +843,7 @@ Provides counts of softirq handlers serviced since boot time, for each cpu.
|
|||||||
TASKLET: 0 0 0 290
|
TASKLET: 0 0 0 290
|
||||||
SCHED: 27035 26983 26971 26746
|
SCHED: 27035 26983 26971 26746
|
||||||
HRTIMER: 0 0 0 0
|
HRTIMER: 0 0 0 0
|
||||||
|
RCU: 1678 1769 2178 2250
|
||||||
|
|
||||||
|
|
||||||
1.3 IDE devices in /proc/ide
|
1.3 IDE devices in /proc/ide
|
||||||
|
@@ -211,7 +211,7 @@ struct super_operations {
|
|||||||
struct inode *(*alloc_inode)(struct super_block *sb);
|
struct inode *(*alloc_inode)(struct super_block *sb);
|
||||||
void (*destroy_inode)(struct inode *);
|
void (*destroy_inode)(struct inode *);
|
||||||
|
|
||||||
void (*dirty_inode) (struct inode *);
|
void (*dirty_inode) (struct inode *, int flags);
|
||||||
int (*write_inode) (struct inode *, int);
|
int (*write_inode) (struct inode *, int);
|
||||||
void (*drop_inode) (struct inode *);
|
void (*drop_inode) (struct inode *);
|
||||||
void (*delete_inode) (struct inode *);
|
void (*delete_inode) (struct inode *);
|
||||||
|
@@ -999,7 +999,10 @@ bytes respectively. Such letter suffixes can also be entirely omitted.
|
|||||||
With this option on every unmap_single operation will
|
With this option on every unmap_single operation will
|
||||||
result in a hardware IOTLB flush operation as opposed
|
result in a hardware IOTLB flush operation as opposed
|
||||||
to batching them for performance.
|
to batching them for performance.
|
||||||
|
sp_off [Default Off]
|
||||||
|
By default, super page will be supported if Intel IOMMU
|
||||||
|
has the capability. With this option, super page will
|
||||||
|
not be supported.
|
||||||
intremap= [X86-64, Intel-IOMMU]
|
intremap= [X86-64, Intel-IOMMU]
|
||||||
Format: { on (default) | off | nosid }
|
Format: { on (default) | off | nosid }
|
||||||
on enable Interrupt Remapping (default)
|
on enable Interrupt Remapping (default)
|
||||||
@@ -2595,6 +2598,8 @@ bytes respectively. Such letter suffixes can also be entirely omitted.
|
|||||||
unlock ejectable media);
|
unlock ejectable media);
|
||||||
m = MAX_SECTORS_64 (don't transfer more
|
m = MAX_SECTORS_64 (don't transfer more
|
||||||
than 64 sectors = 32 KB at a time);
|
than 64 sectors = 32 KB at a time);
|
||||||
|
n = INITIAL_READ10 (force a retry of the
|
||||||
|
initial READ(10) command);
|
||||||
o = CAPACITY_OK (accept the capacity
|
o = CAPACITY_OK (accept the capacity
|
||||||
reported by the device);
|
reported by the device);
|
||||||
r = IGNORE_RESIDUE (the device reports
|
r = IGNORE_RESIDUE (the device reports
|
||||||
|
@@ -11,7 +11,9 @@ with the difference that the orphan objects are not freed but only
|
|||||||
reported via /sys/kernel/debug/kmemleak. A similar method is used by the
|
reported via /sys/kernel/debug/kmemleak. A similar method is used by the
|
||||||
Valgrind tool (memcheck --leak-check) to detect the memory leaks in
|
Valgrind tool (memcheck --leak-check) to detect the memory leaks in
|
||||||
user-space applications.
|
user-space applications.
|
||||||
Kmemleak is supported on x86, arm, powerpc, sparc, sh, microblaze and tile.
|
|
||||||
|
Please check DEBUG_KMEMLEAK dependencies in lib/Kconfig.debug for supported
|
||||||
|
architectures.
|
||||||
|
|
||||||
Usage
|
Usage
|
||||||
-----
|
-----
|
||||||
|
@@ -1,184 +0,0 @@
|
|||||||
Acer Laptop WMI Extras Driver
|
|
||||||
http://code.google.com/p/aceracpi
|
|
||||||
Version 0.3
|
|
||||||
4th April 2009
|
|
||||||
|
|
||||||
Copyright 2007-2009 Carlos Corbacho <carlos@strangeworlds.co.uk>
|
|
||||||
|
|
||||||
acer-wmi is a driver to allow you to control various parts of your Acer laptop
|
|
||||||
hardware under Linux which are exposed via ACPI-WMI.
|
|
||||||
|
|
||||||
This driver completely replaces the old out-of-tree acer_acpi, which I am
|
|
||||||
currently maintaining for bug fixes only on pre-2.6.25 kernels. All development
|
|
||||||
work is now focused solely on acer-wmi.
|
|
||||||
|
|
||||||
Disclaimer
|
|
||||||
**********
|
|
||||||
|
|
||||||
Acer and Wistron have provided nothing towards the development acer_acpi or
|
|
||||||
acer-wmi. All information we have has been through the efforts of the developers
|
|
||||||
and the users to discover as much as possible about the hardware.
|
|
||||||
|
|
||||||
As such, I do warn that this could break your hardware - this is extremely
|
|
||||||
unlikely of course, but please bear this in mind.
|
|
||||||
|
|
||||||
Background
|
|
||||||
**********
|
|
||||||
|
|
||||||
acer-wmi is derived from acer_acpi, originally developed by Mark
|
|
||||||
Smith in 2005, then taken over by Carlos Corbacho in 2007, in order to activate
|
|
||||||
the wireless LAN card under a 64-bit version of Linux, as acerhk[1] (the
|
|
||||||
previous solution to the problem) relied on making 32 bit BIOS calls which are
|
|
||||||
not possible in kernel space from a 64 bit OS.
|
|
||||||
|
|
||||||
[1] acerhk: http://www.cakey.de/acerhk/
|
|
||||||
|
|
||||||
Supported Hardware
|
|
||||||
******************
|
|
||||||
|
|
||||||
NOTE: The Acer Aspire One is not supported hardware. It cannot work with
|
|
||||||
acer-wmi until Acer fix their ACPI-WMI implementation on them, so has been
|
|
||||||
blacklisted until that happens.
|
|
||||||
|
|
||||||
Please see the website for the current list of known working hardware:
|
|
||||||
|
|
||||||
http://code.google.com/p/aceracpi/wiki/SupportedHardware
|
|
||||||
|
|
||||||
If your laptop is not listed, or listed as unknown, and works with acer-wmi,
|
|
||||||
please contact me with a copy of the DSDT.
|
|
||||||
|
|
||||||
If your Acer laptop doesn't work with acer-wmi, I would also like to see the
|
|
||||||
DSDT.
|
|
||||||
|
|
||||||
To send me the DSDT, as root/sudo:
|
|
||||||
|
|
||||||
cat /sys/firmware/acpi/tables/DSDT > dsdt
|
|
||||||
|
|
||||||
And send me the resulting 'dsdt' file.
|
|
||||||
|
|
||||||
Usage
|
|
||||||
*****
|
|
||||||
|
|
||||||
On Acer laptops, acer-wmi should already be autoloaded based on DMI matching.
|
|
||||||
For non-Acer laptops, until WMI based autoloading support is added, you will
|
|
||||||
need to manually load acer-wmi.
|
|
||||||
|
|
||||||
acer-wmi creates /sys/devices/platform/acer-wmi, and fills it with various
|
|
||||||
files whose usage is detailed below, which enables you to control some of the
|
|
||||||
following (varies between models):
|
|
||||||
|
|
||||||
* the wireless LAN card radio
|
|
||||||
* inbuilt Bluetooth adapter
|
|
||||||
* inbuilt 3G card
|
|
||||||
* mail LED of your laptop
|
|
||||||
* brightness of the LCD panel
|
|
||||||
|
|
||||||
Wireless
|
|
||||||
********
|
|
||||||
|
|
||||||
With regards to wireless, all acer-wmi does is enable the radio on the card. It
|
|
||||||
is not responsible for the wireless LED - once the radio is enabled, this is
|
|
||||||
down to the wireless driver for your card. So the behaviour of the wireless LED,
|
|
||||||
once you enable the radio, will depend on your hardware and driver combination.
|
|
||||||
|
|
||||||
e.g. With the BCM4318 on the Acer Aspire 5020 series:
|
|
||||||
|
|
||||||
ndiswrapper: Light blinks on when transmitting
|
|
||||||
b43: Solid light, blinks off when transmitting
|
|
||||||
|
|
||||||
Wireless radio control is unconditionally enabled - all Acer laptops that support
|
|
||||||
acer-wmi come with built-in wireless. However, should you feel so inclined to
|
|
||||||
ever wish to remove the card, or swap it out at some point, please get in touch
|
|
||||||
with me, as we may well be able to gain some data on wireless card detection.
|
|
||||||
|
|
||||||
The wireless radio is exposed through rfkill.
|
|
||||||
|
|
||||||
Bluetooth
|
|
||||||
*********
|
|
||||||
|
|
||||||
For bluetooth, this is an internal USB dongle, so once enabled, you will get
|
|
||||||
a USB device connection event, and a new USB device appears. When you disable
|
|
||||||
bluetooth, you get the reverse - a USB device disconnect event, followed by the
|
|
||||||
device disappearing again.
|
|
||||||
|
|
||||||
Bluetooth is autodetected by acer-wmi, so if you do not have a bluetooth module
|
|
||||||
installed in your laptop, this file won't exist (please be aware that it is
|
|
||||||
quite common for Acer not to fit bluetooth to their laptops - so just because
|
|
||||||
you have a bluetooth button on the laptop, doesn't mean that bluetooth is
|
|
||||||
installed).
|
|
||||||
|
|
||||||
For the adventurously minded - if you want to buy an internal bluetooth
|
|
||||||
module off the internet that is compatible with your laptop and fit it, then
|
|
||||||
it will work just fine with acer-wmi.
|
|
||||||
|
|
||||||
Bluetooth is exposed through rfkill.
|
|
||||||
|
|
||||||
3G
|
|
||||||
**
|
|
||||||
|
|
||||||
3G is currently not autodetected, so the 'threeg' file is always created under
|
|
||||||
sysfs. So far, no-one in possession of an Acer laptop with 3G built-in appears to
|
|
||||||
have tried Linux, or reported back, so we don't have any information on this.
|
|
||||||
|
|
||||||
If you have an Acer laptop that does have a 3G card in, please contact me so we
|
|
||||||
can properly detect these, and find out a bit more about them.
|
|
||||||
|
|
||||||
To read the status of the 3G card (0=off, 1=on):
|
|
||||||
cat /sys/devices/platform/acer-wmi/threeg
|
|
||||||
|
|
||||||
To enable the 3G card:
|
|
||||||
echo 1 > /sys/devices/platform/acer-wmi/threeg
|
|
||||||
|
|
||||||
To disable the 3G card:
|
|
||||||
echo 0 > /sys/devices/platform/acer-wmi/threeg
|
|
||||||
|
|
||||||
To set the state of the 3G card when loading acer-wmi, pass:
|
|
||||||
threeg=X (where X is 0 or 1)
|
|
||||||
|
|
||||||
Mail LED
|
|
||||||
********
|
|
||||||
|
|
||||||
This can be found in most older Acer laptops supported by acer-wmi, and many
|
|
||||||
newer ones - it is built into the 'mail' button, and blinks when active.
|
|
||||||
|
|
||||||
On newer (WMID) laptops though, we have no way of detecting the mail LED. If
|
|
||||||
your laptop identifies itself in dmesg as a WMID model, then please try loading
|
|
||||||
acer_acpi with:
|
|
||||||
|
|
||||||
force_series=2490
|
|
||||||
|
|
||||||
This will use a known alternative method of reading/ writing the mail LED. If
|
|
||||||
it works, please report back to me with the DMI data from your laptop so this
|
|
||||||
can be added to acer-wmi.
|
|
||||||
|
|
||||||
The LED is exposed through the LED subsystem, and can be found in:
|
|
||||||
|
|
||||||
/sys/devices/platform/acer-wmi/leds/acer-wmi::mail/
|
|
||||||
|
|
||||||
The mail LED is autodetected, so if you don't have one, the LED device won't
|
|
||||||
be registered.
|
|
||||||
|
|
||||||
Backlight
|
|
||||||
*********
|
|
||||||
|
|
||||||
The backlight brightness control is available on all acer-wmi supported
|
|
||||||
hardware. The maximum brightness level is usually 15, but on some newer laptops
|
|
||||||
it's 10 (this is again autodetected).
|
|
||||||
|
|
||||||
The backlight is exposed through the backlight subsystem, and can be found in:
|
|
||||||
|
|
||||||
/sys/devices/platform/acer-wmi/backlight/acer-wmi/
|
|
||||||
|
|
||||||
Credits
|
|
||||||
*******
|
|
||||||
|
|
||||||
Olaf Tauber, who did the real hard work when he developed acerhk
|
|
||||||
http://www.cakey.de/acerhk/
|
|
||||||
All the authors of laptop ACPI modules in the kernel, whose work
|
|
||||||
was an inspiration in the early days of acer_acpi
|
|
||||||
Mathieu Segaud, who solved the problem with having to modprobe the driver
|
|
||||||
twice in acer_acpi 0.2.
|
|
||||||
Jim Ramsay, who added support for the WMID interface
|
|
||||||
Mark Smith, who started the original acer_acpi
|
|
||||||
|
|
||||||
And the many people who have used both acer_acpi and acer-wmi.
|
|
@@ -12,8 +12,9 @@ Because things like lock contention can severely impact performance.
|
|||||||
- HOW
|
- HOW
|
||||||
|
|
||||||
Lockdep already has hooks in the lock functions and maps lock instances to
|
Lockdep already has hooks in the lock functions and maps lock instances to
|
||||||
lock classes. We build on that. The graph below shows the relation between
|
lock classes. We build on that (see Documentation/lockdep-design.txt).
|
||||||
the lock functions and the various hooks therein.
|
The graph below shows the relation between the lock functions and the various
|
||||||
|
hooks therein.
|
||||||
|
|
||||||
__acquire
|
__acquire
|
||||||
|
|
|
|
||||||
@@ -128,6 +129,37 @@ points are the points we're contending with.
|
|||||||
|
|
||||||
The integer part of the time values is in us.
|
The integer part of the time values is in us.
|
||||||
|
|
||||||
|
Dealing with nested locks, subclasses may appear:
|
||||||
|
|
||||||
|
32...............................................................................................................................................................................................
|
||||||
|
33
|
||||||
|
34 &rq->lock: 13128 13128 0.43 190.53 103881.26 97454 3453404 0.00 401.11 13224683.11
|
||||||
|
35 ---------
|
||||||
|
36 &rq->lock 645 [<ffffffff8103bfc4>] task_rq_lock+0x43/0x75
|
||||||
|
37 &rq->lock 297 [<ffffffff8104ba65>] try_to_wake_up+0x127/0x25a
|
||||||
|
38 &rq->lock 360 [<ffffffff8103c4c5>] select_task_rq_fair+0x1f0/0x74a
|
||||||
|
39 &rq->lock 428 [<ffffffff81045f98>] scheduler_tick+0x46/0x1fb
|
||||||
|
40 ---------
|
||||||
|
41 &rq->lock 77 [<ffffffff8103bfc4>] task_rq_lock+0x43/0x75
|
||||||
|
42 &rq->lock 174 [<ffffffff8104ba65>] try_to_wake_up+0x127/0x25a
|
||||||
|
43 &rq->lock 4715 [<ffffffff8103ed4b>] double_rq_lock+0x42/0x54
|
||||||
|
44 &rq->lock 893 [<ffffffff81340524>] schedule+0x157/0x7b8
|
||||||
|
45
|
||||||
|
46...............................................................................................................................................................................................
|
||||||
|
47
|
||||||
|
48 &rq->lock/1: 11526 11488 0.33 388.73 136294.31 21461 38404 0.00 37.93 109388.53
|
||||||
|
49 -----------
|
||||||
|
50 &rq->lock/1 11526 [<ffffffff8103ed58>] double_rq_lock+0x4f/0x54
|
||||||
|
51 -----------
|
||||||
|
52 &rq->lock/1 5645 [<ffffffff8103ed4b>] double_rq_lock+0x42/0x54
|
||||||
|
53 &rq->lock/1 1224 [<ffffffff81340524>] schedule+0x157/0x7b8
|
||||||
|
54 &rq->lock/1 4336 [<ffffffff8103ed58>] double_rq_lock+0x4f/0x54
|
||||||
|
55 &rq->lock/1 181 [<ffffffff8104ba65>] try_to_wake_up+0x127/0x25a
|
||||||
|
|
||||||
|
Line 48 shows statistics for the second subclass (/1) of &rq->lock class
|
||||||
|
(subclass starts from 0), since in this case, as line 50 suggests,
|
||||||
|
double_rq_lock actually acquires a nested lock of two spinlocks.
|
||||||
|
|
||||||
View the top contending locks:
|
View the top contending locks:
|
||||||
|
|
||||||
# grep : /proc/lock_stat | head
|
# grep : /proc/lock_stat | head
|
||||||
|
@@ -555,7 +555,7 @@ also have
|
|||||||
sync_min
|
sync_min
|
||||||
sync_max
|
sync_max
|
||||||
The two values, given as numbers of sectors, indicate a range
|
The two values, given as numbers of sectors, indicate a range
|
||||||
withing the array where 'check'/'repair' will operate. Must be
|
within the array where 'check'/'repair' will operate. Must be
|
||||||
a multiple of chunk_size. When it reaches "sync_max" it will
|
a multiple of chunk_size. When it reaches "sync_max" it will
|
||||||
pause, rather than complete.
|
pause, rather than complete.
|
||||||
You can use 'select' or 'poll' on "sync_completed" to wait for
|
You can use 'select' or 'poll' on "sync_completed" to wait for
|
||||||
|
@@ -139,8 +139,8 @@ the key will be discarded and recreated when the data it holds has expired.
|
|||||||
dns_query() returns a copy of the value attached to the key, or an error if
|
dns_query() returns a copy of the value attached to the key, or an error if
|
||||||
that is indicated instead.
|
that is indicated instead.
|
||||||
|
|
||||||
See <file:Documentation/keys-request-key.txt> for further information about
|
See <file:Documentation/security/keys-request-key.txt> for further
|
||||||
request-key function.
|
information about request-key function.
|
||||||
|
|
||||||
|
|
||||||
=========
|
=========
|
||||||
|
@@ -520,59 +520,20 @@ Support for power domains is provided through the pwr_domain field of struct
|
|||||||
device. This field is a pointer to an object of type struct dev_power_domain,
|
device. This field is a pointer to an object of type struct dev_power_domain,
|
||||||
defined in include/linux/pm.h, providing a set of power management callbacks
|
defined in include/linux/pm.h, providing a set of power management callbacks
|
||||||
analogous to the subsystem-level and device driver callbacks that are executed
|
analogous to the subsystem-level and device driver callbacks that are executed
|
||||||
for the given device during all power transitions, in addition to the respective
|
for the given device during all power transitions, instead of the respective
|
||||||
subsystem-level callbacks. Specifically, the power domain "suspend" callbacks
|
subsystem-level callbacks. Specifically, if a device's pm_domain pointer is
|
||||||
(i.e. ->runtime_suspend(), ->suspend(), ->freeze(), ->poweroff(), etc.) are
|
not NULL, the ->suspend() callback from the object pointed to by it will be
|
||||||
executed after the analogous subsystem-level callbacks, while the power domain
|
executed instead of its subsystem's (e.g. bus type's) ->suspend() callback and
|
||||||
"resume" callbacks (i.e. ->runtime_resume(), ->resume(), ->thaw(), ->restore,
|
anlogously for all of the remaining callbacks. In other words, power management
|
||||||
etc.) are executed before the analogous subsystem-level callbacks. Error codes
|
domain callbacks, if defined for the given device, always take precedence over
|
||||||
returned by the "suspend" and "resume" power domain callbacks are ignored.
|
the callbacks provided by the device's subsystem (e.g. bus type).
|
||||||
|
|
||||||
Power domain ->runtime_idle() callback is executed before the subsystem-level
|
The support for device power management domains is only relevant to platforms
|
||||||
->runtime_idle() callback and the result returned by it is not ignored. Namely,
|
needing to use the same device driver power management callbacks in many
|
||||||
if it returns error code, the subsystem-level ->runtime_idle() callback will not
|
different power domain configurations and wanting to avoid incorporating the
|
||||||
be called and the helper function rpm_idle() executing it will return error
|
support for power domains into subsystem-level callbacks, for example by
|
||||||
code. This mechanism is intended to help platforms where saving device state
|
modifying the platform bus type. Other platforms need not implement it or take
|
||||||
is a time consuming operation and should only be carried out if all devices
|
it into account in any way.
|
||||||
in the power domain are idle, before turning off the shared power resource(s).
|
|
||||||
Namely, the power domain ->runtime_idle() callback may return error code until
|
|
||||||
the pm_runtime_idle() helper (or its asychronous version) has been called for
|
|
||||||
all devices in the power domain (it is recommended that the returned error code
|
|
||||||
be -EBUSY in those cases), preventing the subsystem-level ->runtime_idle()
|
|
||||||
callback from being run prematurely.
|
|
||||||
|
|
||||||
The support for device power domains is only relevant to platforms needing to
|
|
||||||
use the same subsystem-level (e.g. platform bus type) and device driver power
|
|
||||||
management callbacks in many different power domain configurations and wanting
|
|
||||||
to avoid incorporating the support for power domains into the subsystem-level
|
|
||||||
callbacks. The other platforms need not implement it or take it into account
|
|
||||||
in any way.
|
|
||||||
|
|
||||||
|
|
||||||
System Devices
|
|
||||||
--------------
|
|
||||||
System devices (sysdevs) follow a slightly different API, which can be found in
|
|
||||||
|
|
||||||
include/linux/sysdev.h
|
|
||||||
drivers/base/sys.c
|
|
||||||
|
|
||||||
System devices will be suspended with interrupts disabled, and after all other
|
|
||||||
devices have been suspended. On resume, they will be resumed before any other
|
|
||||||
devices, and also with interrupts disabled. These things occur in special
|
|
||||||
"sysdev_driver" phases, which affect only system devices.
|
|
||||||
|
|
||||||
Thus, after the suspend_noirq (or freeze_noirq or poweroff_noirq) phase, when
|
|
||||||
the non-boot CPUs are all offline and IRQs are disabled on the remaining online
|
|
||||||
CPU, then a sysdev_driver.suspend phase is carried out, and the system enters a
|
|
||||||
sleep state (or a system image is created). During resume (or after the image
|
|
||||||
has been created or loaded) a sysdev_driver.resume phase is carried out, IRQs
|
|
||||||
are enabled on the only online CPU, the non-boot CPUs are enabled, and the
|
|
||||||
resume_noirq (or thaw_noirq or restore_noirq) phase begins.
|
|
||||||
|
|
||||||
Code to actually enter and exit the system-wide low power state sometimes
|
|
||||||
involves hardware details that are only known to the boot firmware, and
|
|
||||||
may leave a CPU running software (from SRAM or flash memory) that monitors
|
|
||||||
the system and manages its wakeup sequence.
|
|
||||||
|
|
||||||
|
|
||||||
Device Low Power (suspend) States
|
Device Low Power (suspend) States
|
||||||
|
@@ -53,11 +53,11 @@ static struct regulator_init_data regulator1_data = {
|
|||||||
|
|
||||||
Regulator-1 supplies power to Regulator-2. This relationship must be registered
|
Regulator-1 supplies power to Regulator-2. This relationship must be registered
|
||||||
with the core so that Regulator-1 is also enabled when Consumer A enables its
|
with the core so that Regulator-1 is also enabled when Consumer A enables its
|
||||||
supply (Regulator-2). The supply regulator is set by the supply_regulator_dev
|
supply (Regulator-2). The supply regulator is set by the supply_regulator
|
||||||
field below:-
|
field below:-
|
||||||
|
|
||||||
static struct regulator_init_data regulator2_data = {
|
static struct regulator_init_data regulator2_data = {
|
||||||
.supply_regulator_dev = &platform_regulator1_device.dev,
|
.supply_regulator = "regulator_name",
|
||||||
.constraints = {
|
.constraints = {
|
||||||
.min_uV = 1800000,
|
.min_uV = 1800000,
|
||||||
.max_uV = 2000000,
|
.max_uV = 2000000,
|
||||||
|
@@ -566,11 +566,6 @@ to do this is:
|
|||||||
pm_runtime_set_active(dev);
|
pm_runtime_set_active(dev);
|
||||||
pm_runtime_enable(dev);
|
pm_runtime_enable(dev);
|
||||||
|
|
||||||
The PM core always increments the run-time usage counter before calling the
|
|
||||||
->prepare() callback and decrements it after calling the ->complete() callback.
|
|
||||||
Hence disabling run-time PM temporarily like this will not cause any run-time
|
|
||||||
suspend callbacks to be lost.
|
|
||||||
|
|
||||||
7. Generic subsystem callbacks
|
7. Generic subsystem callbacks
|
||||||
|
|
||||||
Subsystems may wish to conserve code space by using the set of generic power
|
Subsystems may wish to conserve code space by using the set of generic power
|
||||||
|
@@ -9,7 +9,121 @@ If variable is of Type, use printk format specifier:
|
|||||||
size_t %zu or %zx
|
size_t %zu or %zx
|
||||||
ssize_t %zd or %zx
|
ssize_t %zd or %zx
|
||||||
|
|
||||||
Raw pointer value SHOULD be printed with %p.
|
Raw pointer value SHOULD be printed with %p. The kernel supports
|
||||||
|
the following extended format specifiers for pointer types:
|
||||||
|
|
||||||
|
Symbols/Function Pointers:
|
||||||
|
|
||||||
|
%pF versatile_init+0x0/0x110
|
||||||
|
%pf versatile_init
|
||||||
|
%pS versatile_init+0x0/0x110
|
||||||
|
%ps versatile_init
|
||||||
|
%pB prev_fn_of_versatile_init+0x88/0x88
|
||||||
|
|
||||||
|
For printing symbols and function pointers. The 'S' and 's' specifiers
|
||||||
|
result in the symbol name with ('S') or without ('s') offsets. Where
|
||||||
|
this is used on a kernel without KALLSYMS - the symbol address is
|
||||||
|
printed instead.
|
||||||
|
|
||||||
|
The 'B' specifier results in the symbol name with offsets and should be
|
||||||
|
used when printing stack backtraces. The specifier takes into
|
||||||
|
consideration the effect of compiler optimisations which may occur
|
||||||
|
when tail-call's are used and marked with the noreturn GCC attribute.
|
||||||
|
|
||||||
|
On ia64, ppc64 and parisc64 architectures function pointers are
|
||||||
|
actually function descriptors which must first be resolved. The 'F' and
|
||||||
|
'f' specifiers perform this resolution and then provide the same
|
||||||
|
functionality as the 'S' and 's' specifiers.
|
||||||
|
|
||||||
|
Kernel Pointers:
|
||||||
|
|
||||||
|
%pK 0x01234567 or 0x0123456789abcdef
|
||||||
|
|
||||||
|
For printing kernel pointers which should be hidden from unprivileged
|
||||||
|
users. The behaviour of %pK depends on the kptr_restrict sysctl - see
|
||||||
|
Documentation/sysctl/kernel.txt for more details.
|
||||||
|
|
||||||
|
Struct Resources:
|
||||||
|
|
||||||
|
%pr [mem 0x60000000-0x6fffffff flags 0x2200] or
|
||||||
|
[mem 0x0000000060000000-0x000000006fffffff flags 0x2200]
|
||||||
|
%pR [mem 0x60000000-0x6fffffff pref] or
|
||||||
|
[mem 0x0000000060000000-0x000000006fffffff pref]
|
||||||
|
|
||||||
|
For printing struct resources. The 'R' and 'r' specifiers result in a
|
||||||
|
printed resource with ('R') or without ('r') a decoded flags member.
|
||||||
|
|
||||||
|
MAC/FDDI addresses:
|
||||||
|
|
||||||
|
%pM 00:01:02:03:04:05
|
||||||
|
%pMF 00-01-02-03-04-05
|
||||||
|
%pm 000102030405
|
||||||
|
|
||||||
|
For printing 6-byte MAC/FDDI addresses in hex notation. The 'M' and 'm'
|
||||||
|
specifiers result in a printed address with ('M') or without ('m') byte
|
||||||
|
separators. The default byte separator is the colon (':').
|
||||||
|
|
||||||
|
Where FDDI addresses are concerned the 'F' specifier can be used after
|
||||||
|
the 'M' specifier to use dash ('-') separators instead of the default
|
||||||
|
separator.
|
||||||
|
|
||||||
|
IPv4 addresses:
|
||||||
|
|
||||||
|
%pI4 1.2.3.4
|
||||||
|
%pi4 001.002.003.004
|
||||||
|
%p[Ii][hnbl]
|
||||||
|
|
||||||
|
For printing IPv4 dot-separated decimal addresses. The 'I4' and 'i4'
|
||||||
|
specifiers result in a printed address with ('i4') or without ('I4')
|
||||||
|
leading zeros.
|
||||||
|
|
||||||
|
The additional 'h', 'n', 'b', and 'l' specifiers are used to specify
|
||||||
|
host, network, big or little endian order addresses respectively. Where
|
||||||
|
no specifier is provided the default network/big endian order is used.
|
||||||
|
|
||||||
|
IPv6 addresses:
|
||||||
|
|
||||||
|
%pI6 0001:0002:0003:0004:0005:0006:0007:0008
|
||||||
|
%pi6 00010002000300040005000600070008
|
||||||
|
%pI6c 1:2:3:4:5:6:7:8
|
||||||
|
|
||||||
|
For printing IPv6 network-order 16-bit hex addresses. The 'I6' and 'i6'
|
||||||
|
specifiers result in a printed address with ('I6') or without ('i6')
|
||||||
|
colon-separators. Leading zeros are always used.
|
||||||
|
|
||||||
|
The additional 'c' specifier can be used with the 'I' specifier to
|
||||||
|
print a compressed IPv6 address as described by
|
||||||
|
http://tools.ietf.org/html/rfc5952
|
||||||
|
|
||||||
|
UUID/GUID addresses:
|
||||||
|
|
||||||
|
%pUb 00010203-0405-0607-0809-0a0b0c0d0e0f
|
||||||
|
%pUB 00010203-0405-0607-0809-0A0B0C0D0E0F
|
||||||
|
%pUl 03020100-0504-0706-0809-0a0b0c0e0e0f
|
||||||
|
%pUL 03020100-0504-0706-0809-0A0B0C0E0E0F
|
||||||
|
|
||||||
|
For printing 16-byte UUID/GUIDs addresses. The additional 'l', 'L',
|
||||||
|
'b' and 'B' specifiers are used to specify a little endian order in
|
||||||
|
lower ('l') or upper case ('L') hex characters - and big endian order
|
||||||
|
in lower ('b') or upper case ('B') hex characters.
|
||||||
|
|
||||||
|
Where no additional specifiers are used the default little endian
|
||||||
|
order with lower case hex characters will be printed.
|
||||||
|
|
||||||
|
struct va_format:
|
||||||
|
|
||||||
|
%pV
|
||||||
|
|
||||||
|
For printing struct va_format structures. These contain a format string
|
||||||
|
and va_list as follows:
|
||||||
|
|
||||||
|
struct va_format {
|
||||||
|
const char *fmt;
|
||||||
|
va_list *va;
|
||||||
|
};
|
||||||
|
|
||||||
|
Do not use this feature without some mechanism to verify the
|
||||||
|
correctness of the format string and va_list arguments.
|
||||||
|
|
||||||
u64 SHOULD be printed with %llu/%llx, (unsigned long long):
|
u64 SHOULD be printed with %llu/%llx, (unsigned long long):
|
||||||
|
|
||||||
@@ -32,4 +146,5 @@ Reminder: sizeof() result is of type size_t.
|
|||||||
Thank you for your cooperation and attention.
|
Thank you for your cooperation and attention.
|
||||||
|
|
||||||
|
|
||||||
By Randy Dunlap <rdunlap@xenotime.net>
|
By Randy Dunlap <rdunlap@xenotime.net> and
|
||||||
|
Andrew Murray <amurray@mpc-data.co.uk>
|
||||||
|
@@ -223,9 +223,10 @@ When CONFIG_FAIR_GROUP_SCHED is defined, a "cpu.shares" file is created for each
|
|||||||
group created using the pseudo filesystem. See example steps below to create
|
group created using the pseudo filesystem. See example steps below to create
|
||||||
task groups and modify their CPU share using the "cgroups" pseudo filesystem.
|
task groups and modify their CPU share using the "cgroups" pseudo filesystem.
|
||||||
|
|
||||||
# mkdir /dev/cpuctl
|
# mount -t tmpfs cgroup_root /sys/fs/cgroup
|
||||||
# mount -t cgroup -ocpu none /dev/cpuctl
|
# mkdir /sys/fs/cgroup/cpu
|
||||||
# cd /dev/cpuctl
|
# mount -t cgroup -ocpu none /sys/fs/cgroup/cpu
|
||||||
|
# cd /sys/fs/cgroup/cpu
|
||||||
|
|
||||||
# mkdir multimedia # create "multimedia" group of tasks
|
# mkdir multimedia # create "multimedia" group of tasks
|
||||||
# mkdir browser # create "browser" group of tasks
|
# mkdir browser # create "browser" group of tasks
|
||||||
|
@@ -129,9 +129,8 @@ priority!
|
|||||||
Enabling CONFIG_RT_GROUP_SCHED lets you explicitly allocate real
|
Enabling CONFIG_RT_GROUP_SCHED lets you explicitly allocate real
|
||||||
CPU bandwidth to task groups.
|
CPU bandwidth to task groups.
|
||||||
|
|
||||||
This uses the /cgroup virtual file system and
|
This uses the cgroup virtual file system and "<cgroup>/cpu.rt_runtime_us"
|
||||||
"/cgroup/<cgroup>/cpu.rt_runtime_us" to control the CPU time reserved for each
|
to control the CPU time reserved for each control group.
|
||||||
control group.
|
|
||||||
|
|
||||||
For more information on working with control groups, you should read
|
For more information on working with control groups, you should read
|
||||||
Documentation/cgroups/cgroups.txt as well.
|
Documentation/cgroups/cgroups.txt as well.
|
||||||
@@ -150,7 +149,7 @@ For now, this can be simplified to just the following (but see Future plans):
|
|||||||
===============
|
===============
|
||||||
|
|
||||||
There is work in progress to make the scheduling period for each group
|
There is work in progress to make the scheduling period for each group
|
||||||
("/cgroup/<cgroup>/cpu.rt_period_us") configurable as well.
|
("<cgroup>/cpu.rt_period_us") configurable as well.
|
||||||
|
|
||||||
The constraint on the period is that a subgroup must have a smaller or
|
The constraint on the period is that a subgroup must have a smaller or
|
||||||
equal period to its parent. But realistically its not very useful _yet_
|
equal period to its parent. But realistically its not very useful _yet_
|
||||||
|
@@ -1,3 +1,17 @@
|
|||||||
|
Release Date : Wed. May 11, 2011 17:00:00 PST 2010 -
|
||||||
|
(emaild-id:megaraidlinux@lsi.com)
|
||||||
|
Adam Radford
|
||||||
|
Current Version : 00.00.05.38-rc1
|
||||||
|
Old Version : 00.00.05.34-rc1
|
||||||
|
1. Remove MSI-X black list, use MFI_REG_STATE.ready.msiEnable.
|
||||||
|
2. Remove un-used function megasas_return_cmd_for_smid().
|
||||||
|
3. Check MFI_REG_STATE.fault.resetAdapter in megasas_reset_fusion().
|
||||||
|
4. Disable interrupts/free_irq() in megasas_shutdown().
|
||||||
|
5. Fix bug where AENs could be lost in probe() and resume().
|
||||||
|
6. Convert 6,10,12 byte CDB's to 16 byte CDB for large LBA's for FastPath
|
||||||
|
IO.
|
||||||
|
7. Add 1078 OCR support.
|
||||||
|
-------------------------------------------------------------------------------
|
||||||
Release Date : Thu. Feb 24, 2011 17:00:00 PST 2010 -
|
Release Date : Thu. Feb 24, 2011 17:00:00 PST 2010 -
|
||||||
(emaild-id:megaraidlinux@lsi.com)
|
(emaild-id:megaraidlinux@lsi.com)
|
||||||
Adam Radford
|
Adam Radford
|
||||||
|
18
Documentation/security/00-INDEX
Normal file
18
Documentation/security/00-INDEX
Normal file
@@ -0,0 +1,18 @@
|
|||||||
|
00-INDEX
|
||||||
|
- this file.
|
||||||
|
SELinux.txt
|
||||||
|
- how to get started with the SELinux security enhancement.
|
||||||
|
Smack.txt
|
||||||
|
- documentation on the Smack Linux Security Module.
|
||||||
|
apparmor.txt
|
||||||
|
- documentation on the AppArmor security extension.
|
||||||
|
credentials.txt
|
||||||
|
- documentation about credentials in Linux.
|
||||||
|
keys-request-key.txt
|
||||||
|
- description of the kernel key request service.
|
||||||
|
keys-trusted-encrypted.txt
|
||||||
|
- info on the Trusted and Encrypted keys in the kernel key ring service.
|
||||||
|
keys.txt
|
||||||
|
- description of the kernel key retention service.
|
||||||
|
tomoyo.txt
|
||||||
|
- documentation on the TOMOYO Linux Security Module.
|
@@ -216,7 +216,7 @@ The Linux kernel supports the following types of credentials:
|
|||||||
When a process accesses a key, if not already present, it will normally be
|
When a process accesses a key, if not already present, it will normally be
|
||||||
cached on one of these keyrings for future accesses to find.
|
cached on one of these keyrings for future accesses to find.
|
||||||
|
|
||||||
For more information on using keys, see Documentation/keys.txt.
|
For more information on using keys, see Documentation/security/keys.txt.
|
||||||
|
|
||||||
(5) LSM
|
(5) LSM
|
||||||
|
|
@@ -3,8 +3,8 @@
|
|||||||
===================
|
===================
|
||||||
|
|
||||||
The key request service is part of the key retention service (refer to
|
The key request service is part of the key retention service (refer to
|
||||||
Documentation/keys.txt). This document explains more fully how the requesting
|
Documentation/security/keys.txt). This document explains more fully how
|
||||||
algorithm works.
|
the requesting algorithm works.
|
||||||
|
|
||||||
The process starts by either the kernel requesting a service by calling
|
The process starts by either the kernel requesting a service by calling
|
||||||
request_key*():
|
request_key*():
|
@@ -434,7 +434,7 @@ The main syscalls are:
|
|||||||
/sbin/request-key will be invoked in an attempt to obtain a key. The
|
/sbin/request-key will be invoked in an attempt to obtain a key. The
|
||||||
callout_info string will be passed as an argument to the program.
|
callout_info string will be passed as an argument to the program.
|
||||||
|
|
||||||
See also Documentation/keys-request-key.txt.
|
See also Documentation/security/keys-request-key.txt.
|
||||||
|
|
||||||
|
|
||||||
The keyctl syscall functions are:
|
The keyctl syscall functions are:
|
||||||
@@ -864,7 +864,7 @@ payload contents" for more information.
|
|||||||
If successful, the key will have been attached to the default keyring for
|
If successful, the key will have been attached to the default keyring for
|
||||||
implicitly obtained request-key keys, as set by KEYCTL_SET_REQKEY_KEYRING.
|
implicitly obtained request-key keys, as set by KEYCTL_SET_REQKEY_KEYRING.
|
||||||
|
|
||||||
See also Documentation/keys-request-key.txt.
|
See also Documentation/security/keys-request-key.txt.
|
||||||
|
|
||||||
|
|
||||||
(*) To search for a key, passing auxiliary data to the upcaller, call:
|
(*) To search for a key, passing auxiliary data to the upcaller, call:
|
@@ -1,5 +1,5 @@
|
|||||||
# This creates the demonstration utility "lguest" which runs a Linux guest.
|
# This creates the demonstration utility "lguest" which runs a Linux guest.
|
||||||
# Missing headers? Add "-I../../include -I../../arch/x86/include"
|
# Missing headers? Add "-I../../../include -I../../../arch/x86/include"
|
||||||
CFLAGS:=-m32 -Wall -Wmissing-declarations -Wmissing-prototypes -O3 -U_FORTIFY_SOURCE
|
CFLAGS:=-m32 -Wall -Wmissing-declarations -Wmissing-prototypes -O3 -U_FORTIFY_SOURCE
|
||||||
|
|
||||||
all: lguest
|
all: lguest
|
||||||
|
@@ -49,7 +49,7 @@
|
|||||||
#include <linux/virtio_rng.h>
|
#include <linux/virtio_rng.h>
|
||||||
#include <linux/virtio_ring.h>
|
#include <linux/virtio_ring.h>
|
||||||
#include <asm/bootparam.h>
|
#include <asm/bootparam.h>
|
||||||
#include "../../include/linux/lguest_launcher.h"
|
#include "../../../include/linux/lguest_launcher.h"
|
||||||
/*L:110
|
/*L:110
|
||||||
* We can ignore the 42 include files we need for this program, but I do want
|
* We can ignore the 42 include files we need for this program, but I do want
|
||||||
* to draw attention to the use of kernel-style types.
|
* to draw attention to the use of kernel-style types.
|
||||||
@@ -135,9 +135,6 @@ struct device {
|
|||||||
/* Is it operational */
|
/* Is it operational */
|
||||||
bool running;
|
bool running;
|
||||||
|
|
||||||
/* Does Guest want an intrrupt on empty? */
|
|
||||||
bool irq_on_empty;
|
|
||||||
|
|
||||||
/* Device-specific data. */
|
/* Device-specific data. */
|
||||||
void *priv;
|
void *priv;
|
||||||
};
|
};
|
||||||
@@ -637,10 +634,7 @@ static void trigger_irq(struct virtqueue *vq)
|
|||||||
|
|
||||||
/* If they don't want an interrupt, don't send one... */
|
/* If they don't want an interrupt, don't send one... */
|
||||||
if (vq->vring.avail->flags & VRING_AVAIL_F_NO_INTERRUPT) {
|
if (vq->vring.avail->flags & VRING_AVAIL_F_NO_INTERRUPT) {
|
||||||
/* ... unless they've asked us to force one on empty. */
|
return;
|
||||||
if (!vq->dev->irq_on_empty
|
|
||||||
|| lg_last_avail(vq) != vq->vring.avail->idx)
|
|
||||||
return;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Send the Guest an interrupt tell them we used something up. */
|
/* Send the Guest an interrupt tell them we used something up. */
|
||||||
@@ -1057,15 +1051,6 @@ static void create_thread(struct virtqueue *vq)
|
|||||||
close(vq->eventfd);
|
close(vq->eventfd);
|
||||||
}
|
}
|
||||||
|
|
||||||
static bool accepted_feature(struct device *dev, unsigned int bit)
|
|
||||||
{
|
|
||||||
const u8 *features = get_feature_bits(dev) + dev->feature_len;
|
|
||||||
|
|
||||||
if (dev->feature_len < bit / CHAR_BIT)
|
|
||||||
return false;
|
|
||||||
return features[bit / CHAR_BIT] & (1 << (bit % CHAR_BIT));
|
|
||||||
}
|
|
||||||
|
|
||||||
static void start_device(struct device *dev)
|
static void start_device(struct device *dev)
|
||||||
{
|
{
|
||||||
unsigned int i;
|
unsigned int i;
|
||||||
@@ -1079,8 +1064,6 @@ static void start_device(struct device *dev)
|
|||||||
verbose(" %02x", get_feature_bits(dev)
|
verbose(" %02x", get_feature_bits(dev)
|
||||||
[dev->feature_len+i]);
|
[dev->feature_len+i]);
|
||||||
|
|
||||||
dev->irq_on_empty = accepted_feature(dev, VIRTIO_F_NOTIFY_ON_EMPTY);
|
|
||||||
|
|
||||||
for (vq = dev->vq; vq; vq = vq->next) {
|
for (vq = dev->vq; vq; vq = vq->next) {
|
||||||
if (vq->service)
|
if (vq->service)
|
||||||
create_thread(vq);
|
create_thread(vq);
|
||||||
@@ -1564,7 +1547,6 @@ static void setup_tun_net(char *arg)
|
|||||||
/* Set up the tun device. */
|
/* Set up the tun device. */
|
||||||
configure_device(ipfd, tapif, ip);
|
configure_device(ipfd, tapif, ip);
|
||||||
|
|
||||||
add_feature(dev, VIRTIO_F_NOTIFY_ON_EMPTY);
|
|
||||||
/* Expect Guest to handle everything except UFO */
|
/* Expect Guest to handle everything except UFO */
|
||||||
add_feature(dev, VIRTIO_NET_F_CSUM);
|
add_feature(dev, VIRTIO_NET_F_CSUM);
|
||||||
add_feature(dev, VIRTIO_NET_F_GUEST_CSUM);
|
add_feature(dev, VIRTIO_NET_F_GUEST_CSUM);
|
||||||
|
@@ -129,12 +129,12 @@ Limit injection to pages owned by memgroup. Specified by inode number
|
|||||||
of the memcg.
|
of the memcg.
|
||||||
|
|
||||||
Example:
|
Example:
|
||||||
mkdir /cgroup/hwpoison
|
mkdir /sys/fs/cgroup/mem/hwpoison
|
||||||
|
|
||||||
usemem -m 100 -s 1000 &
|
usemem -m 100 -s 1000 &
|
||||||
echo `jobs -p` > /cgroup/hwpoison/tasks
|
echo `jobs -p` > /sys/fs/cgroup/mem/hwpoison/tasks
|
||||||
|
|
||||||
memcg_ino=$(ls -id /cgroup/hwpoison | cut -f1 -d' ')
|
memcg_ino=$(ls -id /sys/fs/cgroup/mem/hwpoison | cut -f1 -d' ')
|
||||||
echo $memcg_ino > /debug/hwpoison/corrupt-filter-memcg
|
echo $memcg_ino > /debug/hwpoison/corrupt-filter-memcg
|
||||||
|
|
||||||
page-types -p `pidof init` --hwpoison # shall do nothing
|
page-types -p `pidof init` --hwpoison # shall do nothing
|
||||||
|
98
MAINTAINERS
98
MAINTAINERS
@@ -223,10 +223,8 @@ S: Maintained
|
|||||||
F: drivers/platform/x86/acerhdf.c
|
F: drivers/platform/x86/acerhdf.c
|
||||||
|
|
||||||
ACER WMI LAPTOP EXTRAS
|
ACER WMI LAPTOP EXTRAS
|
||||||
M: Carlos Corbacho <carlos@strangeworlds.co.uk>
|
M: Joey Lee <jlee@novell.com>
|
||||||
L: aceracpi@googlegroups.com (subscribers-only)
|
|
||||||
L: platform-driver-x86@vger.kernel.org
|
L: platform-driver-x86@vger.kernel.org
|
||||||
W: http://code.google.com/p/aceracpi
|
|
||||||
S: Maintained
|
S: Maintained
|
||||||
F: drivers/platform/x86/acer-wmi.c
|
F: drivers/platform/x86/acer-wmi.c
|
||||||
|
|
||||||
@@ -271,10 +269,8 @@ S: Supported
|
|||||||
F: drivers/acpi/video.c
|
F: drivers/acpi/video.c
|
||||||
|
|
||||||
ACPI WMI DRIVER
|
ACPI WMI DRIVER
|
||||||
M: Carlos Corbacho <carlos@strangeworlds.co.uk>
|
|
||||||
L: platform-driver-x86@vger.kernel.org
|
L: platform-driver-x86@vger.kernel.org
|
||||||
W: http://www.lesswatts.org/projects/acpi/
|
S: Orphan
|
||||||
S: Maintained
|
|
||||||
F: drivers/platform/x86/wmi.c
|
F: drivers/platform/x86/wmi.c
|
||||||
|
|
||||||
AD1889 ALSA SOUND DRIVER
|
AD1889 ALSA SOUND DRIVER
|
||||||
@@ -1743,7 +1739,7 @@ S: Supported
|
|||||||
F: drivers/net/enic/
|
F: drivers/net/enic/
|
||||||
|
|
||||||
CIRRUS LOGIC EP93XX ETHERNET DRIVER
|
CIRRUS LOGIC EP93XX ETHERNET DRIVER
|
||||||
M: Lennert Buytenhek <kernel@wantstofly.org>
|
M: Hartley Sweeten <hsweeten@visionengravers.com>
|
||||||
L: netdev@vger.kernel.org
|
L: netdev@vger.kernel.org
|
||||||
S: Maintained
|
S: Maintained
|
||||||
F: drivers/net/arm/ep93xx_eth.c
|
F: drivers/net/arm/ep93xx_eth.c
|
||||||
@@ -1893,7 +1889,6 @@ L: cpufreq@vger.kernel.org
|
|||||||
W: http://www.codemonkey.org.uk/projects/cpufreq/
|
W: http://www.codemonkey.org.uk/projects/cpufreq/
|
||||||
T: git git://git.kernel.org/pub/scm/linux/kernel/git/davej/cpufreq.git
|
T: git git://git.kernel.org/pub/scm/linux/kernel/git/davej/cpufreq.git
|
||||||
S: Maintained
|
S: Maintained
|
||||||
F: arch/x86/kernel/cpu/cpufreq/
|
|
||||||
F: drivers/cpufreq/
|
F: drivers/cpufreq/
|
||||||
F: include/linux/cpufreq.h
|
F: include/linux/cpufreq.h
|
||||||
|
|
||||||
@@ -2178,6 +2173,8 @@ M: Dan Williams <dan.j.williams@intel.com>
|
|||||||
S: Supported
|
S: Supported
|
||||||
F: drivers/dma/
|
F: drivers/dma/
|
||||||
F: include/linux/dma*
|
F: include/linux/dma*
|
||||||
|
T: git git://git.kernel.org/pub/scm/linux/kernel/git/djbw/async_tx.git
|
||||||
|
T: git git://git.infradead.org/users/vkoul/slave-dma.git (slave-dma)
|
||||||
|
|
||||||
DME1737 HARDWARE MONITOR DRIVER
|
DME1737 HARDWARE MONITOR DRIVER
|
||||||
M: Juerg Haefliger <juergh@gmail.com>
|
M: Juerg Haefliger <juergh@gmail.com>
|
||||||
@@ -2294,8 +2291,7 @@ F: drivers/scsi/eata_pio.*
|
|||||||
|
|
||||||
EBTABLES
|
EBTABLES
|
||||||
M: Bart De Schuymer <bart.de.schuymer@pandora.be>
|
M: Bart De Schuymer <bart.de.schuymer@pandora.be>
|
||||||
L: ebtables-user@lists.sourceforge.net
|
L: netfilter-devel@vger.kernel.org
|
||||||
L: ebtables-devel@lists.sourceforge.net
|
|
||||||
W: http://ebtables.sourceforge.net/
|
W: http://ebtables.sourceforge.net/
|
||||||
S: Maintained
|
S: Maintained
|
||||||
F: include/linux/netfilter_bridge/ebt_*.h
|
F: include/linux/netfilter_bridge/ebt_*.h
|
||||||
@@ -2304,7 +2300,7 @@ F: net/bridge/netfilter/ebt*.c
|
|||||||
ECRYPT FILE SYSTEM
|
ECRYPT FILE SYSTEM
|
||||||
M: Tyler Hicks <tyhicks@linux.vnet.ibm.com>
|
M: Tyler Hicks <tyhicks@linux.vnet.ibm.com>
|
||||||
M: Dustin Kirkland <kirkland@canonical.com>
|
M: Dustin Kirkland <kirkland@canonical.com>
|
||||||
L: ecryptfs-devel@lists.launchpad.net
|
L: ecryptfs@vger.kernel.org
|
||||||
W: https://launchpad.net/ecryptfs
|
W: https://launchpad.net/ecryptfs
|
||||||
S: Supported
|
S: Supported
|
||||||
F: Documentation/filesystems/ecryptfs.txt
|
F: Documentation/filesystems/ecryptfs.txt
|
||||||
@@ -2584,6 +2580,13 @@ S: Maintained
|
|||||||
F: drivers/hwmon/f75375s.c
|
F: drivers/hwmon/f75375s.c
|
||||||
F: include/linux/f75375s.h
|
F: include/linux/f75375s.h
|
||||||
|
|
||||||
|
FIREWIRE AUDIO DRIVERS
|
||||||
|
M: Clemens Ladisch <clemens@ladisch.de>
|
||||||
|
L: alsa-devel@alsa-project.org (moderated for non-subscribers)
|
||||||
|
T: git git://git.alsa-project.org/alsa-kernel.git
|
||||||
|
S: Maintained
|
||||||
|
F: sound/firewire/
|
||||||
|
|
||||||
FIREWIRE SUBSYSTEM
|
FIREWIRE SUBSYSTEM
|
||||||
M: Stefan Richter <stefanr@s5r6.in-berlin.de>
|
M: Stefan Richter <stefanr@s5r6.in-berlin.de>
|
||||||
L: linux1394-devel@lists.sourceforge.net
|
L: linux1394-devel@lists.sourceforge.net
|
||||||
@@ -3024,9 +3027,8 @@ S: Maintained
|
|||||||
F: drivers/net/wireless/hostap/
|
F: drivers/net/wireless/hostap/
|
||||||
|
|
||||||
HP COMPAQ TC1100 TABLET WMI EXTRAS DRIVER
|
HP COMPAQ TC1100 TABLET WMI EXTRAS DRIVER
|
||||||
M: Carlos Corbacho <carlos@strangeworlds.co.uk>
|
|
||||||
L: platform-driver-x86@vger.kernel.org
|
L: platform-driver-x86@vger.kernel.org
|
||||||
S: Odd Fixes
|
S: Orphan
|
||||||
F: drivers/platform/x86/tc1100-wmi.c
|
F: drivers/platform/x86/tc1100-wmi.c
|
||||||
|
|
||||||
HP100: Driver for HP 10/100 Mbit/s Voice Grade Network Adapter Series
|
HP100: Driver for HP 10/100 Mbit/s Voice Grade Network Adapter Series
|
||||||
@@ -3719,7 +3721,7 @@ KEYS/KEYRINGS:
|
|||||||
M: David Howells <dhowells@redhat.com>
|
M: David Howells <dhowells@redhat.com>
|
||||||
L: keyrings@linux-nfs.org
|
L: keyrings@linux-nfs.org
|
||||||
S: Maintained
|
S: Maintained
|
||||||
F: Documentation/keys.txt
|
F: Documentation/security/keys.txt
|
||||||
F: include/linux/key.h
|
F: include/linux/key.h
|
||||||
F: include/linux/key-type.h
|
F: include/linux/key-type.h
|
||||||
F: include/keys/
|
F: include/keys/
|
||||||
@@ -3731,7 +3733,7 @@ M: Mimi Zohar <zohar@us.ibm.com>
|
|||||||
L: linux-security-module@vger.kernel.org
|
L: linux-security-module@vger.kernel.org
|
||||||
L: keyrings@linux-nfs.org
|
L: keyrings@linux-nfs.org
|
||||||
S: Supported
|
S: Supported
|
||||||
F: Documentation/keys-trusted-encrypted.txt
|
F: Documentation/security/keys-trusted-encrypted.txt
|
||||||
F: include/keys/trusted-type.h
|
F: include/keys/trusted-type.h
|
||||||
F: security/keys/trusted.c
|
F: security/keys/trusted.c
|
||||||
F: security/keys/trusted.h
|
F: security/keys/trusted.h
|
||||||
@@ -3742,7 +3744,7 @@ M: David Safford <safford@watson.ibm.com>
|
|||||||
L: linux-security-module@vger.kernel.org
|
L: linux-security-module@vger.kernel.org
|
||||||
L: keyrings@linux-nfs.org
|
L: keyrings@linux-nfs.org
|
||||||
S: Supported
|
S: Supported
|
||||||
F: Documentation/keys-trusted-encrypted.txt
|
F: Documentation/security/keys-trusted-encrypted.txt
|
||||||
F: include/keys/encrypted-type.h
|
F: include/keys/encrypted-type.h
|
||||||
F: security/keys/encrypted.c
|
F: security/keys/encrypted.c
|
||||||
F: security/keys/encrypted.h
|
F: security/keys/encrypted.h
|
||||||
@@ -3816,6 +3818,12 @@ S: Maintained
|
|||||||
F: drivers/leds/
|
F: drivers/leds/
|
||||||
F: include/linux/leds.h
|
F: include/linux/leds.h
|
||||||
|
|
||||||
|
LEGACY EEPROM DRIVER
|
||||||
|
M: Jean Delvare <khali@linux-fr.org>
|
||||||
|
S: Maintained
|
||||||
|
F: Documentation/misc-devices/eeprom
|
||||||
|
F: drivers/misc/eeprom/eeprom.c
|
||||||
|
|
||||||
LEGO USB Tower driver
|
LEGO USB Tower driver
|
||||||
M: Juergen Stuber <starblue@users.sourceforge.net>
|
M: Juergen Stuber <starblue@users.sourceforge.net>
|
||||||
L: legousb-devel@lists.sourceforge.net
|
L: legousb-devel@lists.sourceforge.net
|
||||||
@@ -4141,7 +4149,7 @@ F: include/linux/mm.h
|
|||||||
F: mm/
|
F: mm/
|
||||||
|
|
||||||
MEMORY RESOURCE CONTROLLER
|
MEMORY RESOURCE CONTROLLER
|
||||||
M: Balbir Singh <balbir@linux.vnet.ibm.com>
|
M: Balbir Singh <bsingharora@gmail.com>
|
||||||
M: Daisuke Nishimura <nishimura@mxp.nes.nec.co.jp>
|
M: Daisuke Nishimura <nishimura@mxp.nes.nec.co.jp>
|
||||||
M: KAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com>
|
M: KAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com>
|
||||||
L: linux-mm@kvack.org
|
L: linux-mm@kvack.org
|
||||||
@@ -4248,8 +4256,7 @@ F: drivers/mmc/
|
|||||||
F: include/linux/mmc/
|
F: include/linux/mmc/
|
||||||
|
|
||||||
MULTIMEDIA CARD (MMC) ETC. OVER SPI
|
MULTIMEDIA CARD (MMC) ETC. OVER SPI
|
||||||
M: David Brownell <dbrownell@users.sourceforge.net>
|
S: Orphan
|
||||||
S: Odd Fixes
|
|
||||||
F: drivers/mmc/host/mmc_spi.c
|
F: drivers/mmc/host/mmc_spi.c
|
||||||
F: include/linux/spi/mmc_spi.h
|
F: include/linux/spi/mmc_spi.h
|
||||||
|
|
||||||
@@ -4599,7 +4606,6 @@ F: drivers/media/video/omap3isp/*
|
|||||||
|
|
||||||
OMAP USB SUPPORT
|
OMAP USB SUPPORT
|
||||||
M: Felipe Balbi <balbi@ti.com>
|
M: Felipe Balbi <balbi@ti.com>
|
||||||
M: David Brownell <dbrownell@users.sourceforge.net>
|
|
||||||
L: linux-usb@vger.kernel.org
|
L: linux-usb@vger.kernel.org
|
||||||
L: linux-omap@vger.kernel.org
|
L: linux-omap@vger.kernel.org
|
||||||
T: git git://git.kernel.org/pub/scm/linux/kernel/git/balbi/usb.git
|
T: git git://git.kernel.org/pub/scm/linux/kernel/git/balbi/usb.git
|
||||||
@@ -4888,7 +4894,7 @@ F: mm/percpu*.c
|
|||||||
F: arch/*/include/asm/percpu.h
|
F: arch/*/include/asm/percpu.h
|
||||||
|
|
||||||
PER-TASK DELAY ACCOUNTING
|
PER-TASK DELAY ACCOUNTING
|
||||||
M: Balbir Singh <balbir@linux.vnet.ibm.com>
|
M: Balbir Singh <bsingharora@gmail.com>
|
||||||
S: Maintained
|
S: Maintained
|
||||||
F: include/linux/delayacct.h
|
F: include/linux/delayacct.h
|
||||||
F: kernel/delayacct.c
|
F: kernel/delayacct.c
|
||||||
@@ -4943,6 +4949,7 @@ T: git git://git.kernel.org/pub/scm/linux/kernel/git/epip/linux-2.6-unicore32.gi
|
|||||||
F: drivers/input/serio/i8042-unicore32io.h
|
F: drivers/input/serio/i8042-unicore32io.h
|
||||||
F: drivers/i2c/busses/i2c-puv3.c
|
F: drivers/i2c/busses/i2c-puv3.c
|
||||||
F: drivers/video/fb-puv3.c
|
F: drivers/video/fb-puv3.c
|
||||||
|
F: drivers/rtc/rtc-puv3.c
|
||||||
|
|
||||||
PMC SIERRA MaxRAID DRIVER
|
PMC SIERRA MaxRAID DRIVER
|
||||||
M: Anil Ravindranath <anil_ravindranath@pmc-sierra.com>
|
M: Anil Ravindranath <anil_ravindranath@pmc-sierra.com>
|
||||||
@@ -5444,6 +5451,13 @@ L: linux-serial@vger.kernel.org
|
|||||||
S: Maintained
|
S: Maintained
|
||||||
F: drivers/tty/serial
|
F: drivers/tty/serial
|
||||||
|
|
||||||
|
SYNOPSYS DESIGNWARE DMAC DRIVER
|
||||||
|
M: Viresh Kumar <viresh.kumar@st.com>
|
||||||
|
S: Maintained
|
||||||
|
F: include/linux/dw_dmac.h
|
||||||
|
F: drivers/dma/dw_dmac_regs.h
|
||||||
|
F: drivers/dma/dw_dmac.c
|
||||||
|
|
||||||
TIMEKEEPING, NTP
|
TIMEKEEPING, NTP
|
||||||
M: John Stultz <johnstul@us.ibm.com>
|
M: John Stultz <johnstul@us.ibm.com>
|
||||||
M: Thomas Gleixner <tglx@linutronix.de>
|
M: Thomas Gleixner <tglx@linutronix.de>
|
||||||
@@ -5508,7 +5522,7 @@ F: drivers/scsi/sg.c
|
|||||||
F: include/scsi/sg.h
|
F: include/scsi/sg.h
|
||||||
|
|
||||||
SCSI SUBSYSTEM
|
SCSI SUBSYSTEM
|
||||||
M: "James E.J. Bottomley" <James.Bottomley@suse.de>
|
M: "James E.J. Bottomley" <JBottomley@parallels.com>
|
||||||
L: linux-scsi@vger.kernel.org
|
L: linux-scsi@vger.kernel.org
|
||||||
T: git git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi-misc-2.6.git
|
T: git git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi-misc-2.6.git
|
||||||
T: git git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi-rc-fixes-2.6.git
|
T: git git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi-rc-fixes-2.6.git
|
||||||
@@ -5973,7 +5987,6 @@ F: Documentation/serial/specialix.txt
|
|||||||
F: drivers/staging/tty/specialix*
|
F: drivers/staging/tty/specialix*
|
||||||
|
|
||||||
SPI SUBSYSTEM
|
SPI SUBSYSTEM
|
||||||
M: David Brownell <dbrownell@users.sourceforge.net>
|
|
||||||
M: Grant Likely <grant.likely@secretlab.ca>
|
M: Grant Likely <grant.likely@secretlab.ca>
|
||||||
L: spi-devel-general@lists.sourceforge.net
|
L: spi-devel-general@lists.sourceforge.net
|
||||||
Q: http://patchwork.kernel.org/project/spi-devel-general/list/
|
Q: http://patchwork.kernel.org/project/spi-devel-general/list/
|
||||||
@@ -6077,8 +6090,19 @@ F: Documentation/filesystems/sysv-fs.txt
|
|||||||
F: fs/sysv/
|
F: fs/sysv/
|
||||||
F: include/linux/sysv_fs.h
|
F: include/linux/sysv_fs.h
|
||||||
|
|
||||||
|
TARGET SUBSYSTEM
|
||||||
|
M: Nicholas A. Bellinger <nab@linux-iscsi.org>
|
||||||
|
L: linux-scsi@vger.kernel.org
|
||||||
|
L: http://groups.google.com/group/linux-iscsi-target-dev
|
||||||
|
W: http://www.linux-iscsi.org
|
||||||
|
T: git git://git.kernel.org/pub/scm/linux/kernel/git/nab/lio-core-2.6.git master
|
||||||
|
S: Supported
|
||||||
|
F: drivers/target/
|
||||||
|
F: include/target/
|
||||||
|
F: Documentation/target/
|
||||||
|
|
||||||
TASKSTATS STATISTICS INTERFACE
|
TASKSTATS STATISTICS INTERFACE
|
||||||
M: Balbir Singh <balbir@linux.vnet.ibm.com>
|
M: Balbir Singh <bsingharora@gmail.com>
|
||||||
S: Maintained
|
S: Maintained
|
||||||
F: Documentation/accounting/taskstats*
|
F: Documentation/accounting/taskstats*
|
||||||
F: include/linux/taskstats*
|
F: include/linux/taskstats*
|
||||||
@@ -6410,9 +6434,8 @@ S: Maintained
|
|||||||
F: drivers/usb/misc/rio500*
|
F: drivers/usb/misc/rio500*
|
||||||
|
|
||||||
USB EHCI DRIVER
|
USB EHCI DRIVER
|
||||||
M: David Brownell <dbrownell@users.sourceforge.net>
|
|
||||||
L: linux-usb@vger.kernel.org
|
L: linux-usb@vger.kernel.org
|
||||||
S: Odd Fixes
|
S: Orphan
|
||||||
F: Documentation/usb/ehci.txt
|
F: Documentation/usb/ehci.txt
|
||||||
F: drivers/usb/host/ehci*
|
F: drivers/usb/host/ehci*
|
||||||
|
|
||||||
@@ -6426,9 +6449,10 @@ S: Maintained
|
|||||||
F: drivers/media/video/et61x251/
|
F: drivers/media/video/et61x251/
|
||||||
|
|
||||||
USB GADGET/PERIPHERAL SUBSYSTEM
|
USB GADGET/PERIPHERAL SUBSYSTEM
|
||||||
M: David Brownell <dbrownell@users.sourceforge.net>
|
M: Felipe Balbi <balbi@ti.com>
|
||||||
L: linux-usb@vger.kernel.org
|
L: linux-usb@vger.kernel.org
|
||||||
W: http://www.linux-usb.org/gadget
|
W: http://www.linux-usb.org/gadget
|
||||||
|
T: git git://git.kernel.org/pub/scm/linux/kernel/git/balbi/usb.git
|
||||||
S: Maintained
|
S: Maintained
|
||||||
F: drivers/usb/gadget/
|
F: drivers/usb/gadget/
|
||||||
F: include/linux/usb/gadget*
|
F: include/linux/usb/gadget*
|
||||||
@@ -6438,7 +6462,7 @@ M: Jiri Kosina <jkosina@suse.cz>
|
|||||||
L: linux-usb@vger.kernel.org
|
L: linux-usb@vger.kernel.org
|
||||||
T: git git://git.kernel.org/pub/scm/linux/kernel/git/jikos/hid.git
|
T: git git://git.kernel.org/pub/scm/linux/kernel/git/jikos/hid.git
|
||||||
S: Maintained
|
S: Maintained
|
||||||
F: Documentation/usb/hiddev.txt
|
F: Documentation/hid/hiddev.txt
|
||||||
F: drivers/hid/usbhid/
|
F: drivers/hid/usbhid/
|
||||||
|
|
||||||
USB ISP116X DRIVER
|
USB ISP116X DRIVER
|
||||||
@@ -6470,9 +6494,8 @@ S: Maintained
|
|||||||
F: sound/usb/midi.*
|
F: sound/usb/midi.*
|
||||||
|
|
||||||
USB OHCI DRIVER
|
USB OHCI DRIVER
|
||||||
M: David Brownell <dbrownell@users.sourceforge.net>
|
|
||||||
L: linux-usb@vger.kernel.org
|
L: linux-usb@vger.kernel.org
|
||||||
S: Odd Fixes
|
S: Orphan
|
||||||
F: Documentation/usb/ohci.txt
|
F: Documentation/usb/ohci.txt
|
||||||
F: drivers/usb/host/ohci*
|
F: drivers/usb/host/ohci*
|
||||||
|
|
||||||
@@ -6698,6 +6721,14 @@ S: Maintained
|
|||||||
F: Documentation/filesystems/vfat.txt
|
F: Documentation/filesystems/vfat.txt
|
||||||
F: fs/fat/
|
F: fs/fat/
|
||||||
|
|
||||||
|
VIDEOBUF2 FRAMEWORK
|
||||||
|
M: Pawel Osciak <pawel@osciak.com>
|
||||||
|
M: Marek Szyprowski <m.szyprowski@samsung.com>
|
||||||
|
L: linux-media@vger.kernel.org
|
||||||
|
S: Maintained
|
||||||
|
F: drivers/media/video/videobuf2-*
|
||||||
|
F: include/media/videobuf2-*
|
||||||
|
|
||||||
VIRTIO CONSOLE DRIVER
|
VIRTIO CONSOLE DRIVER
|
||||||
M: Amit Shah <amit.shah@redhat.com>
|
M: Amit Shah <amit.shah@redhat.com>
|
||||||
L: virtualization@lists.linux-foundation.org
|
L: virtualization@lists.linux-foundation.org
|
||||||
@@ -6975,6 +7006,13 @@ T: git git://git.kernel.org/pub/scm/linux/kernel/git/mjg59/platform-drivers-x86.
|
|||||||
S: Maintained
|
S: Maintained
|
||||||
F: drivers/platform/x86
|
F: drivers/platform/x86
|
||||||
|
|
||||||
|
X86 MCE INFRASTRUCTURE
|
||||||
|
M: Tony Luck <tony.luck@intel.com>
|
||||||
|
M: Borislav Petkov <bp@amd64.org>
|
||||||
|
L: linux-edac@vger.kernel.org
|
||||||
|
S: Maintained
|
||||||
|
F: arch/x86/kernel/cpu/mcheck/*
|
||||||
|
|
||||||
XEN HYPERVISOR INTERFACE
|
XEN HYPERVISOR INTERFACE
|
||||||
M: Jeremy Fitzhardinge <jeremy.fitzhardinge@citrix.com>
|
M: Jeremy Fitzhardinge <jeremy.fitzhardinge@citrix.com>
|
||||||
M: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
|
M: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
|
||||||
|
27
Makefile
27
Makefile
@@ -1,8 +1,8 @@
|
|||||||
VERSION = 2
|
VERSION = 3
|
||||||
PATCHLEVEL = 6
|
PATCHLEVEL = 0
|
||||||
SUBLEVEL = 39
|
SUBLEVEL = 0
|
||||||
EXTRAVERSION =
|
EXTRAVERSION = -rc5
|
||||||
NAME = Flesh-Eating Bats with Fangs
|
NAME = Sneaky Weasel
|
||||||
|
|
||||||
# *DOCUMENTATION*
|
# *DOCUMENTATION*
|
||||||
# To see a list of typical targets execute "make help"
|
# To see a list of typical targets execute "make help"
|
||||||
@@ -378,7 +378,7 @@ KBUILD_LDFLAGS_MODULE := -T $(srctree)/scripts/module-common.lds
|
|||||||
|
|
||||||
# Read KERNELRELEASE from include/config/kernel.release (if it exists)
|
# Read KERNELRELEASE from include/config/kernel.release (if it exists)
|
||||||
KERNELRELEASE = $(shell cat include/config/kernel.release 2> /dev/null)
|
KERNELRELEASE = $(shell cat include/config/kernel.release 2> /dev/null)
|
||||||
KERNELVERSION = $(VERSION).$(PATCHLEVEL).$(SUBLEVEL)$(EXTRAVERSION)
|
KERNELVERSION = $(VERSION)$(if $(PATCHLEVEL),.$(PATCHLEVEL)$(if $(SUBLEVEL),.$(SUBLEVEL)))$(EXTRAVERSION)
|
||||||
|
|
||||||
export VERSION PATCHLEVEL SUBLEVEL KERNELRELEASE KERNELVERSION
|
export VERSION PATCHLEVEL SUBLEVEL KERNELRELEASE KERNELVERSION
|
||||||
export ARCH SRCARCH CONFIG_SHELL HOSTCC HOSTCFLAGS CROSS_COMPILE AS LD CC
|
export ARCH SRCARCH CONFIG_SHELL HOSTCC HOSTCFLAGS CROSS_COMPILE AS LD CC
|
||||||
@@ -1005,7 +1005,7 @@ endef
|
|||||||
|
|
||||||
define filechk_version.h
|
define filechk_version.h
|
||||||
(echo \#define LINUX_VERSION_CODE $(shell \
|
(echo \#define LINUX_VERSION_CODE $(shell \
|
||||||
expr $(VERSION) \* 65536 + $(PATCHLEVEL) \* 256 + $(SUBLEVEL)); \
|
expr $(VERSION) \* 65536 + 0$(PATCHLEVEL) \* 256 + 0$(SUBLEVEL)); \
|
||||||
echo '#define KERNEL_VERSION(a,b,c) (((a) << 16) + ((b) << 8) + (c))';)
|
echo '#define KERNEL_VERSION(a,b,c) (((a) << 16) + ((b) << 8) + (c))';)
|
||||||
endef
|
endef
|
||||||
|
|
||||||
@@ -1110,11 +1110,6 @@ modules_install: _modinst_ _modinst_post
|
|||||||
|
|
||||||
PHONY += _modinst_
|
PHONY += _modinst_
|
||||||
_modinst_:
|
_modinst_:
|
||||||
@if [ -z "`$(DEPMOD) -V 2>/dev/null | grep module-init-tools`" ]; then \
|
|
||||||
echo "Warning: you may need to install module-init-tools"; \
|
|
||||||
echo "See http://www.codemonkey.org.uk/docs/post-halloween-2.6.txt";\
|
|
||||||
sleep 1; \
|
|
||||||
fi
|
|
||||||
@rm -rf $(MODLIB)/kernel
|
@rm -rf $(MODLIB)/kernel
|
||||||
@rm -f $(MODLIB)/source
|
@rm -f $(MODLIB)/source
|
||||||
@mkdir -p $(MODLIB)/kernel
|
@mkdir -p $(MODLIB)/kernel
|
||||||
@@ -1531,12 +1526,8 @@ quiet_cmd_rmfiles = $(if $(wildcard $(rm-files)),CLEAN $(wildcard $(rm-files))
|
|||||||
|
|
||||||
# Run depmod only if we have System.map and depmod is executable
|
# Run depmod only if we have System.map and depmod is executable
|
||||||
quiet_cmd_depmod = DEPMOD $(KERNELRELEASE)
|
quiet_cmd_depmod = DEPMOD $(KERNELRELEASE)
|
||||||
cmd_depmod = \
|
cmd_depmod = $(CONFIG_SHELL) $(srctree)/scripts/depmod.sh $(DEPMOD) \
|
||||||
if [ -r System.map -a -x $(DEPMOD) ]; then \
|
$(KERNELRELEASE)
|
||||||
$(DEPMOD) -ae -F System.map \
|
|
||||||
$(if $(strip $(INSTALL_MOD_PATH)), -b $(INSTALL_MOD_PATH) ) \
|
|
||||||
$(KERNELRELEASE); \
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Create temporary dir for module support files
|
# Create temporary dir for module support files
|
||||||
# clean it up only when building all modules
|
# clean it up only when building all modules
|
||||||
|
@@ -56,7 +56,6 @@ PLAT_NODE_DATA_LOCALNR(unsigned long p, int n)
|
|||||||
* Given a kernel address, find the home node of the underlying memory.
|
* Given a kernel address, find the home node of the underlying memory.
|
||||||
*/
|
*/
|
||||||
#define kvaddr_to_nid(kaddr) pa_to_nid(__pa(kaddr))
|
#define kvaddr_to_nid(kaddr) pa_to_nid(__pa(kaddr))
|
||||||
#define node_start_pfn(nid) (NODE_DATA(nid)->node_start_pfn)
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Given a kaddr, LOCAL_BASE_ADDR finds the owning node of the memory
|
* Given a kaddr, LOCAL_BASE_ADDR finds the owning node of the memory
|
||||||
|
@@ -456,10 +456,11 @@
|
|||||||
#define __NR_open_by_handle_at 498
|
#define __NR_open_by_handle_at 498
|
||||||
#define __NR_clock_adjtime 499
|
#define __NR_clock_adjtime 499
|
||||||
#define __NR_syncfs 500
|
#define __NR_syncfs 500
|
||||||
|
#define __NR_setns 501
|
||||||
|
|
||||||
#ifdef __KERNEL__
|
#ifdef __KERNEL__
|
||||||
|
|
||||||
#define NR_SYSCALLS 501
|
#define NR_SYSCALLS 502
|
||||||
|
|
||||||
#define __ARCH_WANT_IPC_PARSE_VERSION
|
#define __ARCH_WANT_IPC_PARSE_VERSION
|
||||||
#define __ARCH_WANT_OLD_READDIR
|
#define __ARCH_WANT_OLD_READDIR
|
||||||
|
@@ -409,7 +409,7 @@ SYSCALL_DEFINE2(osf_getdomainname, char __user *, name, int, namelen)
|
|||||||
return -EFAULT;
|
return -EFAULT;
|
||||||
|
|
||||||
len = namelen;
|
len = namelen;
|
||||||
if (namelen > 32)
|
if (len > 32)
|
||||||
len = 32;
|
len = 32;
|
||||||
|
|
||||||
down_read(&uts_sem);
|
down_read(&uts_sem);
|
||||||
@@ -594,7 +594,7 @@ SYSCALL_DEFINE3(osf_sysinfo, int, command, char __user *, buf, long, count)
|
|||||||
down_read(&uts_sem);
|
down_read(&uts_sem);
|
||||||
res = sysinfo_table[offset];
|
res = sysinfo_table[offset];
|
||||||
len = strlen(res)+1;
|
len = strlen(res)+1;
|
||||||
if (len > count)
|
if ((unsigned long)len > (unsigned long)count)
|
||||||
len = count;
|
len = count;
|
||||||
if (copy_to_user(buf, res, len))
|
if (copy_to_user(buf, res, len))
|
||||||
err = -EFAULT;
|
err = -EFAULT;
|
||||||
@@ -649,7 +649,7 @@ SYSCALL_DEFINE5(osf_getsysinfo, unsigned long, op, void __user *, buffer,
|
|||||||
return 1;
|
return 1;
|
||||||
|
|
||||||
case GSI_GET_HWRPB:
|
case GSI_GET_HWRPB:
|
||||||
if (nbytes < sizeof(*hwrpb))
|
if (nbytes > sizeof(*hwrpb))
|
||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
if (copy_to_user(buffer, hwrpb, nbytes) != 0)
|
if (copy_to_user(buffer, hwrpb, nbytes) != 0)
|
||||||
return -EFAULT;
|
return -EFAULT;
|
||||||
@@ -1008,6 +1008,7 @@ SYSCALL_DEFINE4(osf_wait4, pid_t, pid, int __user *, ustatus, int, options,
|
|||||||
{
|
{
|
||||||
struct rusage r;
|
struct rusage r;
|
||||||
long ret, err;
|
long ret, err;
|
||||||
|
unsigned int status = 0;
|
||||||
mm_segment_t old_fs;
|
mm_segment_t old_fs;
|
||||||
|
|
||||||
if (!ur)
|
if (!ur)
|
||||||
@@ -1016,13 +1017,15 @@ SYSCALL_DEFINE4(osf_wait4, pid_t, pid, int __user *, ustatus, int, options,
|
|||||||
old_fs = get_fs();
|
old_fs = get_fs();
|
||||||
|
|
||||||
set_fs (KERNEL_DS);
|
set_fs (KERNEL_DS);
|
||||||
ret = sys_wait4(pid, ustatus, options, (struct rusage __user *) &r);
|
ret = sys_wait4(pid, (unsigned int __user *) &status, options,
|
||||||
|
(struct rusage __user *) &r);
|
||||||
set_fs (old_fs);
|
set_fs (old_fs);
|
||||||
|
|
||||||
if (!access_ok(VERIFY_WRITE, ur, sizeof(*ur)))
|
if (!access_ok(VERIFY_WRITE, ur, sizeof(*ur)))
|
||||||
return -EFAULT;
|
return -EFAULT;
|
||||||
|
|
||||||
err = 0;
|
err = 0;
|
||||||
|
err |= put_user(status, ustatus);
|
||||||
err |= __put_user(r.ru_utime.tv_sec, &ur->ru_utime.tv_sec);
|
err |= __put_user(r.ru_utime.tv_sec, &ur->ru_utime.tv_sec);
|
||||||
err |= __put_user(r.ru_utime.tv_usec, &ur->ru_utime.tv_usec);
|
err |= __put_user(r.ru_utime.tv_usec, &ur->ru_utime.tv_usec);
|
||||||
err |= __put_user(r.ru_stime.tv_sec, &ur->ru_stime.tv_sec);
|
err |= __put_user(r.ru_stime.tv_sec, &ur->ru_stime.tv_sec);
|
||||||
|
@@ -519,6 +519,7 @@ sys_call_table:
|
|||||||
.quad sys_open_by_handle_at
|
.quad sys_open_by_handle_at
|
||||||
.quad sys_clock_adjtime
|
.quad sys_clock_adjtime
|
||||||
.quad sys_syncfs /* 500 */
|
.quad sys_syncfs /* 500 */
|
||||||
|
.quad sys_setns
|
||||||
|
|
||||||
.size sys_call_table, . - sys_call_table
|
.size sys_call_table, . - sys_call_table
|
||||||
.type sys_call_table, @object
|
.type sys_call_table, @object
|
||||||
|
@@ -294,6 +294,8 @@ config ARCH_AT91
|
|||||||
bool "Atmel AT91"
|
bool "Atmel AT91"
|
||||||
select ARCH_REQUIRE_GPIOLIB
|
select ARCH_REQUIRE_GPIOLIB
|
||||||
select HAVE_CLK
|
select HAVE_CLK
|
||||||
|
select CLKDEV_LOOKUP
|
||||||
|
select ARM_PATCH_PHYS_VIRT if MMU
|
||||||
help
|
help
|
||||||
This enables support for systems based on the Atmel AT91RM9200,
|
This enables support for systems based on the Atmel AT91RM9200,
|
||||||
AT91SAM9 and AT91CAP9 processors.
|
AT91SAM9 and AT91CAP9 processors.
|
||||||
@@ -730,16 +732,6 @@ config ARCH_S5P64X0
|
|||||||
Samsung S5P64X0 CPU based systems, such as the Samsung SMDK6440,
|
Samsung S5P64X0 CPU based systems, such as the Samsung SMDK6440,
|
||||||
SMDK6450.
|
SMDK6450.
|
||||||
|
|
||||||
config ARCH_S5P6442
|
|
||||||
bool "Samsung S5P6442"
|
|
||||||
select CPU_V6
|
|
||||||
select GENERIC_GPIO
|
|
||||||
select HAVE_CLK
|
|
||||||
select ARCH_USES_GETTIMEOFFSET
|
|
||||||
select HAVE_S3C2410_WATCHDOG if WATCHDOG
|
|
||||||
help
|
|
||||||
Samsung S5P6442 CPU based systems
|
|
||||||
|
|
||||||
config ARCH_S5PC100
|
config ARCH_S5PC100
|
||||||
bool "Samsung S5PC100"
|
bool "Samsung S5PC100"
|
||||||
select GENERIC_GPIO
|
select GENERIC_GPIO
|
||||||
@@ -991,8 +983,6 @@ endif
|
|||||||
|
|
||||||
source "arch/arm/mach-s5p64x0/Kconfig"
|
source "arch/arm/mach-s5p64x0/Kconfig"
|
||||||
|
|
||||||
source "arch/arm/mach-s5p6442/Kconfig"
|
|
||||||
|
|
||||||
source "arch/arm/mach-s5pc100/Kconfig"
|
source "arch/arm/mach-s5pc100/Kconfig"
|
||||||
|
|
||||||
source "arch/arm/mach-s5pv210/Kconfig"
|
source "arch/arm/mach-s5pv210/Kconfig"
|
||||||
@@ -1399,7 +1389,6 @@ config NR_CPUS
|
|||||||
config HOTPLUG_CPU
|
config HOTPLUG_CPU
|
||||||
bool "Support for hot-pluggable CPUs (EXPERIMENTAL)"
|
bool "Support for hot-pluggable CPUs (EXPERIMENTAL)"
|
||||||
depends on SMP && HOTPLUG && EXPERIMENTAL
|
depends on SMP && HOTPLUG && EXPERIMENTAL
|
||||||
depends on !ARCH_MSM
|
|
||||||
help
|
help
|
||||||
Say Y here to experiment with turning CPUs off and on. CPUs
|
Say Y here to experiment with turning CPUs off and on. CPUs
|
||||||
can be controlled through /sys/devices/system/cpu.
|
can be controlled through /sys/devices/system/cpu.
|
||||||
@@ -1420,7 +1409,7 @@ source kernel/Kconfig.preempt
|
|||||||
config HZ
|
config HZ
|
||||||
int
|
int
|
||||||
default 200 if ARCH_EBSA110 || ARCH_S3C2410 || ARCH_S5P64X0 || \
|
default 200 if ARCH_EBSA110 || ARCH_S3C2410 || ARCH_S5P64X0 || \
|
||||||
ARCH_S5P6442 || ARCH_S5PV210 || ARCH_EXYNOS4
|
ARCH_S5PV210 || ARCH_EXYNOS4
|
||||||
default OMAP_32K_TIMER_HZ if ARCH_OMAP && OMAP_32K_TIMER
|
default OMAP_32K_TIMER_HZ if ARCH_OMAP && OMAP_32K_TIMER
|
||||||
default AT91_TIMER_HZ if ARCH_AT91
|
default AT91_TIMER_HZ if ARCH_AT91
|
||||||
default SHMOBILE_TIMER_HZ if ARCH_SHMOBILE
|
default SHMOBILE_TIMER_HZ if ARCH_SHMOBILE
|
||||||
@@ -1516,6 +1505,9 @@ config ARCH_SPARSEMEM_DEFAULT
|
|||||||
config ARCH_SELECT_MEMORY_MODEL
|
config ARCH_SELECT_MEMORY_MODEL
|
||||||
def_bool ARCH_SPARSEMEM_ENABLE
|
def_bool ARCH_SPARSEMEM_ENABLE
|
||||||
|
|
||||||
|
config HAVE_ARCH_PFN_VALID
|
||||||
|
def_bool ARCH_HAS_HOLES_MEMORYMODEL || !SPARSEMEM
|
||||||
|
|
||||||
config HIGHMEM
|
config HIGHMEM
|
||||||
bool "High Memory Support"
|
bool "High Memory Support"
|
||||||
depends on MMU
|
depends on MMU
|
||||||
@@ -1683,6 +1675,13 @@ endmenu
|
|||||||
|
|
||||||
menu "Boot options"
|
menu "Boot options"
|
||||||
|
|
||||||
|
config USE_OF
|
||||||
|
bool "Flattened Device Tree support"
|
||||||
|
select OF
|
||||||
|
select OF_EARLY_FLATTREE
|
||||||
|
help
|
||||||
|
Include support for flattened device tree machine descriptions.
|
||||||
|
|
||||||
# Compressed boot loader in ROM. Yes, we really want to ask about
|
# Compressed boot loader in ROM. Yes, we really want to ask about
|
||||||
# TEXT and BSS so we preserve their values in the config files.
|
# TEXT and BSS so we preserve their values in the config files.
|
||||||
config ZBOOT_ROM_TEXT
|
config ZBOOT_ROM_TEXT
|
||||||
@@ -2021,7 +2020,7 @@ menu "Power management options"
|
|||||||
source "kernel/power/Kconfig"
|
source "kernel/power/Kconfig"
|
||||||
|
|
||||||
config ARCH_SUSPEND_POSSIBLE
|
config ARCH_SUSPEND_POSSIBLE
|
||||||
depends on !ARCH_S5P64X0 && !ARCH_S5P6442 && !ARCH_S5PC100
|
depends on !ARCH_S5P64X0 && !ARCH_S5PC100
|
||||||
depends on CPU_ARM920T || CPU_ARM926T || CPU_SA1100 || \
|
depends on CPU_ARM920T || CPU_ARM926T || CPU_SA1100 || \
|
||||||
CPU_V6 || CPU_V6K || CPU_V7 || CPU_XSC3 || CPU_XSCALE
|
CPU_V6 || CPU_V6K || CPU_V7 || CPU_XSC3 || CPU_XSCALE
|
||||||
def_bool y
|
def_bool y
|
||||||
|
@@ -176,7 +176,6 @@ machine-$(CONFIG_ARCH_S3C2410) := s3c2410 s3c2400 s3c2412 s3c2416 s3c2440 s3c24
|
|||||||
machine-$(CONFIG_ARCH_S3C24A0) := s3c24a0
|
machine-$(CONFIG_ARCH_S3C24A0) := s3c24a0
|
||||||
machine-$(CONFIG_ARCH_S3C64XX) := s3c64xx
|
machine-$(CONFIG_ARCH_S3C64XX) := s3c64xx
|
||||||
machine-$(CONFIG_ARCH_S5P64X0) := s5p64x0
|
machine-$(CONFIG_ARCH_S5P64X0) := s5p64x0
|
||||||
machine-$(CONFIG_ARCH_S5P6442) := s5p6442
|
|
||||||
machine-$(CONFIG_ARCH_S5PC100) := s5pc100
|
machine-$(CONFIG_ARCH_S5PC100) := s5pc100
|
||||||
machine-$(CONFIG_ARCH_S5PV210) := s5pv210
|
machine-$(CONFIG_ARCH_S5PV210) := s5pv210
|
||||||
machine-$(CONFIG_ARCH_EXYNOS4) := exynos4
|
machine-$(CONFIG_ARCH_EXYNOS4) := exynos4
|
||||||
|
@@ -597,6 +597,8 @@ __common_mmu_cache_on:
|
|||||||
sub pc, lr, r0, lsr #32 @ properly flush pipeline
|
sub pc, lr, r0, lsr #32 @ properly flush pipeline
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#define PROC_ENTRY_SIZE (4*5)
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Here follow the relocatable cache support functions for the
|
* Here follow the relocatable cache support functions for the
|
||||||
* various processors. This is a generic hook for locating an
|
* various processors. This is a generic hook for locating an
|
||||||
@@ -624,7 +626,7 @@ call_cache_fn: adr r12, proc_types
|
|||||||
ARM( addeq pc, r12, r3 ) @ call cache function
|
ARM( addeq pc, r12, r3 ) @ call cache function
|
||||||
THUMB( addeq r12, r3 )
|
THUMB( addeq r12, r3 )
|
||||||
THUMB( moveq pc, r12 ) @ call cache function
|
THUMB( moveq pc, r12 ) @ call cache function
|
||||||
add r12, r12, #4*5
|
add r12, r12, #PROC_ENTRY_SIZE
|
||||||
b 1b
|
b 1b
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@@ -691,9 +693,9 @@ proc_types:
|
|||||||
|
|
||||||
.word 0x41069260 @ ARM926EJ-S (v5TEJ)
|
.word 0x41069260 @ ARM926EJ-S (v5TEJ)
|
||||||
.word 0xff0ffff0
|
.word 0xff0ffff0
|
||||||
b __arm926ejs_mmu_cache_on
|
W(b) __arm926ejs_mmu_cache_on
|
||||||
b __armv4_mmu_cache_off
|
W(b) __armv4_mmu_cache_off
|
||||||
b __armv5tej_mmu_cache_flush
|
W(b) __armv5tej_mmu_cache_flush
|
||||||
|
|
||||||
.word 0x00007000 @ ARM7 IDs
|
.word 0x00007000 @ ARM7 IDs
|
||||||
.word 0x0000f000
|
.word 0x0000f000
|
||||||
@@ -794,6 +796,16 @@ proc_types:
|
|||||||
|
|
||||||
.size proc_types, . - proc_types
|
.size proc_types, . - proc_types
|
||||||
|
|
||||||
|
/*
|
||||||
|
* If you get a "non-constant expression in ".if" statement"
|
||||||
|
* error from the assembler on this line, check that you have
|
||||||
|
* not accidentally written a "b" instruction where you should
|
||||||
|
* have written W(b).
|
||||||
|
*/
|
||||||
|
.if (. - proc_types) % PROC_ENTRY_SIZE != 0
|
||||||
|
.error "The size of one or more proc_types entries is wrong."
|
||||||
|
.endif
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Turn off the Cache and MMU. ARMv3 does not support
|
* Turn off the Cache and MMU. ARMv3 does not support
|
||||||
* reading the control register, but ARMv4 does.
|
* reading the control register, but ARMv4 does.
|
||||||
|
@@ -7,7 +7,7 @@ config ARM_VIC
|
|||||||
config ARM_VIC_NR
|
config ARM_VIC_NR
|
||||||
int
|
int
|
||||||
default 4 if ARCH_S5PV210
|
default 4 if ARCH_S5PV210
|
||||||
default 3 if ARCH_S5P6442 || ARCH_S5PC100
|
default 3 if ARCH_S5PC100
|
||||||
default 2
|
default 2
|
||||||
depends on ARM_VIC
|
depends on ARM_VIC
|
||||||
help
|
help
|
||||||
|
@@ -1,358 +0,0 @@
|
|||||||
CONFIG_EXPERIMENTAL=y
|
|
||||||
CONFIG_LOCALVERSION="-AT572D940HF"
|
|
||||||
# CONFIG_LOCALVERSION_AUTO is not set
|
|
||||||
CONFIG_SYSVIPC=y
|
|
||||||
CONFIG_POSIX_MQUEUE=y
|
|
||||||
CONFIG_BSD_PROCESS_ACCT=y
|
|
||||||
CONFIG_BSD_PROCESS_ACCT_V3=y
|
|
||||||
CONFIG_TASKSTATS=y
|
|
||||||
CONFIG_TASK_XACCT=y
|
|
||||||
CONFIG_TASK_IO_ACCOUNTING=y
|
|
||||||
CONFIG_AUDIT=y
|
|
||||||
CONFIG_CGROUPS=y
|
|
||||||
CONFIG_CGROUP_CPUACCT=y
|
|
||||||
CONFIG_CGROUP_SCHED=y
|
|
||||||
CONFIG_RT_GROUP_SCHED=y
|
|
||||||
CONFIG_SYSFS_DEPRECATED_V2=y
|
|
||||||
CONFIG_RELAY=y
|
|
||||||
CONFIG_BLK_DEV_INITRD=y
|
|
||||||
# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
|
|
||||||
CONFIG_EXPERT=y
|
|
||||||
CONFIG_SLAB=y
|
|
||||||
CONFIG_PROFILING=y
|
|
||||||
CONFIG_OPROFILE=m
|
|
||||||
CONFIG_KPROBES=y
|
|
||||||
CONFIG_MODULES=y
|
|
||||||
CONFIG_MODULE_UNLOAD=y
|
|
||||||
CONFIG_MODVERSIONS=y
|
|
||||||
CONFIG_MODULE_SRCVERSION_ALL=y
|
|
||||||
# CONFIG_BLK_DEV_BSG is not set
|
|
||||||
CONFIG_ARCH_AT91=y
|
|
||||||
CONFIG_ARCH_AT572D940HF=y
|
|
||||||
CONFIG_MACH_AT572D940HFEB=y
|
|
||||||
CONFIG_AT91_PROGRAMMABLE_CLOCKS=y
|
|
||||||
CONFIG_NO_HZ=y
|
|
||||||
CONFIG_HIGH_RES_TIMERS=y
|
|
||||||
CONFIG_PREEMPT=y
|
|
||||||
CONFIG_CMDLINE="mem=48M console=ttyS0 initrd=0x21100000,3145728 root=/dev/ram0 rw ip=172.16.1.181"
|
|
||||||
CONFIG_KEXEC=y
|
|
||||||
CONFIG_FPE_NWFPE=y
|
|
||||||
CONFIG_FPE_NWFPE_XP=y
|
|
||||||
CONFIG_NET=y
|
|
||||||
CONFIG_PACKET=m
|
|
||||||
CONFIG_UNIX=y
|
|
||||||
CONFIG_INET=y
|
|
||||||
# CONFIG_INET_XFRM_MODE_TRANSPORT is not set
|
|
||||||
# CONFIG_INET_XFRM_MODE_TUNNEL is not set
|
|
||||||
# CONFIG_INET_XFRM_MODE_BEET is not set
|
|
||||||
# CONFIG_INET_LRO is not set
|
|
||||||
# CONFIG_INET_DIAG is not set
|
|
||||||
# CONFIG_IPV6 is not set
|
|
||||||
CONFIG_NET_PKTGEN=m
|
|
||||||
CONFIG_NET_TCPPROBE=m
|
|
||||||
CONFIG_CAN=m
|
|
||||||
CONFIG_CAN_RAW=m
|
|
||||||
CONFIG_CAN_BCM=m
|
|
||||||
CONFIG_CAN_VCAN=m
|
|
||||||
CONFIG_CAN_DEBUG_DEVICES=y
|
|
||||||
CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"
|
|
||||||
CONFIG_CONNECTOR=m
|
|
||||||
CONFIG_MTD=m
|
|
||||||
CONFIG_MTD_DEBUG=y
|
|
||||||
CONFIG_MTD_DEBUG_VERBOSE=1
|
|
||||||
CONFIG_MTD_CONCAT=m
|
|
||||||
CONFIG_MTD_PARTITIONS=y
|
|
||||||
CONFIG_MTD_CHAR=m
|
|
||||||
CONFIG_MTD_BLOCK=m
|
|
||||||
CONFIG_MTD_BLOCK_RO=m
|
|
||||||
CONFIG_FTL=m
|
|
||||||
CONFIG_NFTL=m
|
|
||||||
CONFIG_NFTL_RW=y
|
|
||||||
CONFIG_INFTL=m
|
|
||||||
CONFIG_RFD_FTL=m
|
|
||||||
CONFIG_SSFDC=m
|
|
||||||
CONFIG_MTD_OOPS=m
|
|
||||||
CONFIG_MTD_CFI=m
|
|
||||||
CONFIG_MTD_JEDECPROBE=m
|
|
||||||
CONFIG_MTD_CFI_INTELEXT=m
|
|
||||||
CONFIG_MTD_CFI_AMDSTD=m
|
|
||||||
CONFIG_MTD_CFI_STAA=m
|
|
||||||
CONFIG_MTD_ROM=m
|
|
||||||
CONFIG_MTD_ABSENT=m
|
|
||||||
CONFIG_MTD_COMPLEX_MAPPINGS=y
|
|
||||||
CONFIG_MTD_PHYSMAP=m
|
|
||||||
CONFIG_MTD_PLATRAM=m
|
|
||||||
CONFIG_MTD_DATAFLASH=m
|
|
||||||
CONFIG_MTD_M25P80=m
|
|
||||||
CONFIG_MTD_SLRAM=m
|
|
||||||
CONFIG_MTD_PHRAM=m
|
|
||||||
CONFIG_MTD_MTDRAM=m
|
|
||||||
CONFIG_MTD_BLOCK2MTD=m
|
|
||||||
CONFIG_MTD_NAND=m
|
|
||||||
CONFIG_MTD_NAND_VERIFY_WRITE=y
|
|
||||||
CONFIG_MTD_NAND_DISKONCHIP=m
|
|
||||||
CONFIG_MTD_NAND_NANDSIM=m
|
|
||||||
CONFIG_MTD_NAND_PLATFORM=m
|
|
||||||
CONFIG_MTD_ALAUDA=m
|
|
||||||
CONFIG_MTD_UBI=m
|
|
||||||
CONFIG_MTD_UBI_GLUEBI=m
|
|
||||||
CONFIG_BLK_DEV_LOOP=y
|
|
||||||
CONFIG_BLK_DEV_CRYPTOLOOP=m
|
|
||||||
CONFIG_BLK_DEV_NBD=m
|
|
||||||
CONFIG_BLK_DEV_RAM=y
|
|
||||||
CONFIG_BLK_DEV_RAM_SIZE=65536
|
|
||||||
CONFIG_ATMEL_TCLIB=y
|
|
||||||
CONFIG_ATMEL_SSC=m
|
|
||||||
CONFIG_SENSORS_TSL2550=m
|
|
||||||
CONFIG_DS1682=m
|
|
||||||
CONFIG_RAID_ATTRS=m
|
|
||||||
CONFIG_SCSI=m
|
|
||||||
CONFIG_SCSI_TGT=m
|
|
||||||
# CONFIG_SCSI_PROC_FS is not set
|
|
||||||
CONFIG_BLK_DEV_SD=m
|
|
||||||
CONFIG_BLK_DEV_SR=m
|
|
||||||
CONFIG_CHR_DEV_SG=m
|
|
||||||
CONFIG_CHR_DEV_SCH=m
|
|
||||||
CONFIG_SCSI_MULTI_LUN=y
|
|
||||||
CONFIG_SCSI_CONSTANTS=y
|
|
||||||
CONFIG_SCSI_LOGGING=y
|
|
||||||
CONFIG_SCSI_SCAN_ASYNC=y
|
|
||||||
CONFIG_SCSI_ISCSI_ATTRS=m
|
|
||||||
CONFIG_NETDEVICES=y
|
|
||||||
CONFIG_DUMMY=m
|
|
||||||
CONFIG_BONDING=m
|
|
||||||
CONFIG_MACVLAN=m
|
|
||||||
CONFIG_EQUALIZER=m
|
|
||||||
CONFIG_TUN=m
|
|
||||||
CONFIG_VETH=m
|
|
||||||
CONFIG_PHYLIB=y
|
|
||||||
CONFIG_MARVELL_PHY=m
|
|
||||||
CONFIG_DAVICOM_PHY=m
|
|
||||||
CONFIG_QSEMI_PHY=m
|
|
||||||
CONFIG_LXT_PHY=m
|
|
||||||
CONFIG_CICADA_PHY=m
|
|
||||||
CONFIG_VITESSE_PHY=m
|
|
||||||
CONFIG_SMSC_PHY=m
|
|
||||||
CONFIG_BROADCOM_PHY=m
|
|
||||||
CONFIG_ICPLUS_PHY=m
|
|
||||||
CONFIG_MDIO_BITBANG=m
|
|
||||||
CONFIG_NET_ETHERNET=y
|
|
||||||
# CONFIG_NETDEV_1000 is not set
|
|
||||||
# CONFIG_NETDEV_10000 is not set
|
|
||||||
CONFIG_USB_ZD1201=m
|
|
||||||
CONFIG_HOSTAP=m
|
|
||||||
CONFIG_HOSTAP_FIRMWARE=y
|
|
||||||
CONFIG_HOSTAP_FIRMWARE_NVRAM=y
|
|
||||||
CONFIG_USB_CATC=m
|
|
||||||
CONFIG_USB_KAWETH=m
|
|
||||||
CONFIG_USB_PEGASUS=m
|
|
||||||
CONFIG_USB_RTL8150=m
|
|
||||||
CONFIG_USB_USBNET=m
|
|
||||||
CONFIG_USB_NET_DM9601=m
|
|
||||||
CONFIG_USB_NET_GL620A=m
|
|
||||||
CONFIG_USB_NET_PLUSB=m
|
|
||||||
CONFIG_USB_NET_MCS7830=m
|
|
||||||
CONFIG_USB_NET_RNDIS_HOST=m
|
|
||||||
CONFIG_USB_ALI_M5632=y
|
|
||||||
CONFIG_USB_AN2720=y
|
|
||||||
CONFIG_USB_EPSON2888=y
|
|
||||||
CONFIG_USB_KC2190=y
|
|
||||||
# CONFIG_USB_NET_ZAURUS is not set
|
|
||||||
CONFIG_INPUT_MOUSEDEV=m
|
|
||||||
CONFIG_INPUT_EVDEV=m
|
|
||||||
CONFIG_INPUT_EVBUG=m
|
|
||||||
CONFIG_KEYBOARD_LKKBD=m
|
|
||||||
CONFIG_KEYBOARD_GPIO=m
|
|
||||||
CONFIG_KEYBOARD_NEWTON=m
|
|
||||||
CONFIG_KEYBOARD_STOWAWAY=m
|
|
||||||
CONFIG_KEYBOARD_SUNKBD=m
|
|
||||||
CONFIG_KEYBOARD_XTKBD=m
|
|
||||||
CONFIG_MOUSE_PS2=m
|
|
||||||
CONFIG_MOUSE_SERIAL=m
|
|
||||||
CONFIG_MOUSE_APPLETOUCH=m
|
|
||||||
CONFIG_MOUSE_VSXXXAA=m
|
|
||||||
CONFIG_MOUSE_GPIO=m
|
|
||||||
CONFIG_INPUT_MISC=y
|
|
||||||
CONFIG_INPUT_UINPUT=m
|
|
||||||
CONFIG_SERIO_SERPORT=m
|
|
||||||
CONFIG_SERIO_RAW=m
|
|
||||||
CONFIG_VT_HW_CONSOLE_BINDING=y
|
|
||||||
CONFIG_SERIAL_NONSTANDARD=y
|
|
||||||
CONFIG_N_HDLC=m
|
|
||||||
CONFIG_SPECIALIX=m
|
|
||||||
CONFIG_STALDRV=y
|
|
||||||
CONFIG_SERIAL_ATMEL=y
|
|
||||||
CONFIG_SERIAL_ATMEL_CONSOLE=y
|
|
||||||
CONFIG_IPMI_HANDLER=m
|
|
||||||
CONFIG_IPMI_DEVICE_INTERFACE=m
|
|
||||||
CONFIG_IPMI_SI=m
|
|
||||||
CONFIG_IPMI_WATCHDOG=m
|
|
||||||
CONFIG_IPMI_POWEROFF=m
|
|
||||||
CONFIG_HW_RANDOM=y
|
|
||||||
CONFIG_R3964=m
|
|
||||||
CONFIG_RAW_DRIVER=m
|
|
||||||
CONFIG_TCG_TPM=m
|
|
||||||
CONFIG_TCG_NSC=m
|
|
||||||
CONFIG_TCG_ATMEL=m
|
|
||||||
CONFIG_I2C=m
|
|
||||||
CONFIG_I2C_CHARDEV=m
|
|
||||||
CONFIG_SPI=y
|
|
||||||
CONFIG_SPI_ATMEL=y
|
|
||||||
CONFIG_SPI_BITBANG=m
|
|
||||||
CONFIG_SPI_SPIDEV=m
|
|
||||||
# CONFIG_HWMON is not set
|
|
||||||
# CONFIG_VGA_CONSOLE is not set
|
|
||||||
CONFIG_SOUND=m
|
|
||||||
CONFIG_SND=m
|
|
||||||
CONFIG_SND_SEQUENCER=m
|
|
||||||
CONFIG_SND_SEQ_DUMMY=m
|
|
||||||
CONFIG_SND_MIXER_OSS=m
|
|
||||||
CONFIG_SND_PCM_OSS=m
|
|
||||||
# CONFIG_SND_PCM_OSS_PLUGINS is not set
|
|
||||||
CONFIG_SND_SEQUENCER_OSS=y
|
|
||||||
CONFIG_SND_DYNAMIC_MINORS=y
|
|
||||||
# CONFIG_SND_VERBOSE_PROCFS is not set
|
|
||||||
CONFIG_SND_DUMMY=m
|
|
||||||
CONFIG_SND_VIRMIDI=m
|
|
||||||
CONFIG_SND_USB_AUDIO=m
|
|
||||||
CONFIG_SND_USB_CAIAQ=m
|
|
||||||
CONFIG_SND_USB_CAIAQ_INPUT=y
|
|
||||||
CONFIG_HID=m
|
|
||||||
CONFIG_HIDRAW=y
|
|
||||||
CONFIG_USB_HID=m
|
|
||||||
CONFIG_USB_HIDDEV=y
|
|
||||||
CONFIG_USB_KBD=m
|
|
||||||
CONFIG_USB_MOUSE=m
|
|
||||||
CONFIG_HID_A4TECH=m
|
|
||||||
CONFIG_HID_APPLE=m
|
|
||||||
CONFIG_HID_BELKIN=m
|
|
||||||
CONFIG_HID_CHERRY=m
|
|
||||||
CONFIG_HID_CHICONY=m
|
|
||||||
CONFIG_HID_CYPRESS=m
|
|
||||||
CONFIG_HID_EZKEY=m
|
|
||||||
CONFIG_HID_GYRATION=m
|
|
||||||
CONFIG_HID_LOGITECH=m
|
|
||||||
CONFIG_HID_MICROSOFT=m
|
|
||||||
CONFIG_HID_MONTEREY=m
|
|
||||||
CONFIG_HID_PANTHERLORD=m
|
|
||||||
CONFIG_HID_PETALYNX=m
|
|
||||||
CONFIG_HID_SAMSUNG=m
|
|
||||||
CONFIG_HID_SONY=m
|
|
||||||
CONFIG_HID_SUNPLUS=m
|
|
||||||
CONFIG_USB=y
|
|
||||||
CONFIG_USB_DEVICEFS=y
|
|
||||||
# CONFIG_USB_DEVICE_CLASS is not set
|
|
||||||
CONFIG_USB_DYNAMIC_MINORS=y
|
|
||||||
CONFIG_USB_MON=y
|
|
||||||
CONFIG_USB_OHCI_HCD=y
|
|
||||||
CONFIG_USB_STORAGE=m
|
|
||||||
CONFIG_USB_STORAGE_DATAFAB=m
|
|
||||||
CONFIG_USB_STORAGE_FREECOM=m
|
|
||||||
CONFIG_USB_STORAGE_ISD200=m
|
|
||||||
CONFIG_USB_STORAGE_USBAT=m
|
|
||||||
CONFIG_USB_STORAGE_SDDR09=m
|
|
||||||
CONFIG_USB_STORAGE_SDDR55=m
|
|
||||||
CONFIG_USB_STORAGE_JUMPSHOT=m
|
|
||||||
CONFIG_USB_STORAGE_ALAUDA=m
|
|
||||||
CONFIG_USB_STORAGE_KARMA=m
|
|
||||||
CONFIG_USB_LIBUSUAL=y
|
|
||||||
CONFIG_USB_SERIAL=m
|
|
||||||
CONFIG_USB_EZUSB=y
|
|
||||||
CONFIG_USB_SERIAL_GENERIC=y
|
|
||||||
CONFIG_USB_SERIAL_PL2303=m
|
|
||||||
CONFIG_USB_SERIAL_SPCP8X5=m
|
|
||||||
CONFIG_USB_SERIAL_DEBUG=m
|
|
||||||
CONFIG_USB_EMI62=m
|
|
||||||
CONFIG_USB_EMI26=m
|
|
||||||
CONFIG_USB_ADUTUX=m
|
|
||||||
CONFIG_USB_TEST=m
|
|
||||||
CONFIG_USB_GADGET=m
|
|
||||||
CONFIG_USB_GADGET_DEBUG_FILES=y
|
|
||||||
CONFIG_USB_GADGET_DEBUG_FS=y
|
|
||||||
CONFIG_USB_ZERO=m
|
|
||||||
CONFIG_USB_ETH=m
|
|
||||||
CONFIG_USB_GADGETFS=m
|
|
||||||
CONFIG_USB_FILE_STORAGE=m
|
|
||||||
CONFIG_USB_G_SERIAL=m
|
|
||||||
CONFIG_USB_MIDI_GADGET=m
|
|
||||||
CONFIG_MMC=y
|
|
||||||
CONFIG_SDIO_UART=m
|
|
||||||
CONFIG_MMC_AT91=m
|
|
||||||
CONFIG_MMC_SPI=m
|
|
||||||
CONFIG_NEW_LEDS=y
|
|
||||||
CONFIG_LEDS_CLASS=m
|
|
||||||
CONFIG_LEDS_GPIO=m
|
|
||||||
CONFIG_LEDS_TRIGGERS=y
|
|
||||||
CONFIG_LEDS_TRIGGER_TIMER=m
|
|
||||||
CONFIG_LEDS_TRIGGER_HEARTBEAT=m
|
|
||||||
CONFIG_RTC_CLASS=y
|
|
||||||
CONFIG_RTC_INTF_DEV_UIE_EMUL=y
|
|
||||||
CONFIG_RTC_DRV_DS1307=m
|
|
||||||
CONFIG_RTC_DRV_DS1305=y
|
|
||||||
CONFIG_EXT2_FS=y
|
|
||||||
CONFIG_EXT2_FS_XATTR=y
|
|
||||||
CONFIG_EXT2_FS_POSIX_ACL=y
|
|
||||||
CONFIG_EXT2_FS_SECURITY=y
|
|
||||||
CONFIG_EXT3_FS=y
|
|
||||||
CONFIG_EXT3_FS_POSIX_ACL=y
|
|
||||||
CONFIG_EXT3_FS_SECURITY=y
|
|
||||||
CONFIG_JBD_DEBUG=y
|
|
||||||
CONFIG_REISERFS_FS=m
|
|
||||||
CONFIG_REISERFS_CHECK=y
|
|
||||||
CONFIG_REISERFS_PROC_INFO=y
|
|
||||||
CONFIG_REISERFS_FS_XATTR=y
|
|
||||||
CONFIG_REISERFS_FS_POSIX_ACL=y
|
|
||||||
CONFIG_REISERFS_FS_SECURITY=y
|
|
||||||
CONFIG_INOTIFY=y
|
|
||||||
CONFIG_FUSE_FS=m
|
|
||||||
CONFIG_MSDOS_FS=m
|
|
||||||
CONFIG_VFAT_FS=y
|
|
||||||
CONFIG_NTFS_FS=m
|
|
||||||
CONFIG_NTFS_RW=y
|
|
||||||
CONFIG_TMPFS=y
|
|
||||||
CONFIG_TMPFS_POSIX_ACL=y
|
|
||||||
CONFIG_JFFS2_FS=m
|
|
||||||
CONFIG_JFFS2_COMPRESSION_OPTIONS=y
|
|
||||||
CONFIG_JFFS2_LZO=y
|
|
||||||
CONFIG_JFFS2_CMODE_FAVOURLZO=y
|
|
||||||
CONFIG_CRAMFS=m
|
|
||||||
CONFIG_NFS_FS=m
|
|
||||||
CONFIG_NFS_V3=y
|
|
||||||
CONFIG_NFS_V3_ACL=y
|
|
||||||
CONFIG_NFS_V4=y
|
|
||||||
CONFIG_NFSD=m
|
|
||||||
CONFIG_NFSD_V3_ACL=y
|
|
||||||
CONFIG_NFSD_V4=y
|
|
||||||
CONFIG_CIFS=m
|
|
||||||
CONFIG_CIFS_WEAK_PW_HASH=y
|
|
||||||
CONFIG_PARTITION_ADVANCED=y
|
|
||||||
CONFIG_MAC_PARTITION=y
|
|
||||||
CONFIG_BSD_DISKLABEL=y
|
|
||||||
CONFIG_MINIX_SUBPARTITION=y
|
|
||||||
CONFIG_SOLARIS_X86_PARTITION=y
|
|
||||||
CONFIG_UNIXWARE_DISKLABEL=y
|
|
||||||
CONFIG_LDM_PARTITION=y
|
|
||||||
CONFIG_LDM_DEBUG=y
|
|
||||||
CONFIG_SGI_PARTITION=y
|
|
||||||
CONFIG_SUN_PARTITION=y
|
|
||||||
CONFIG_NLS_DEFAULT="cp437"
|
|
||||||
CONFIG_NLS_CODEPAGE_437=y
|
|
||||||
CONFIG_NLS_CODEPAGE_850=m
|
|
||||||
CONFIG_NLS_ASCII=y
|
|
||||||
CONFIG_NLS_ISO8859_1=y
|
|
||||||
CONFIG_NLS_UTF8=m
|
|
||||||
CONFIG_DLM=m
|
|
||||||
CONFIG_PRINTK_TIME=y
|
|
||||||
CONFIG_MAGIC_SYSRQ=y
|
|
||||||
CONFIG_UNUSED_SYMBOLS=y
|
|
||||||
CONFIG_DEBUG_FS=y
|
|
||||||
# CONFIG_RCU_CPU_STALL_DETECTOR is not set
|
|
||||||
CONFIG_SYSCTL_SYSCALL_CHECK=y
|
|
||||||
CONFIG_CRYPTO=y
|
|
||||||
CONFIG_CRYPTO_GF128MUL=m
|
|
||||||
CONFIG_CRYPTO_HMAC=y
|
|
||||||
CONFIG_CRYPTO_MD5=y
|
|
||||||
# CONFIG_CRYPTO_ANSI_CPRNG is not set
|
|
||||||
# CONFIG_CRYPTO_HW is not set
|
|
||||||
CONFIG_CRC_CCITT=m
|
|
||||||
CONFIG_CRC16=m
|
|
@@ -1,9 +1,13 @@
|
|||||||
CONFIG_EXPERIMENTAL=y
|
CONFIG_EXPERIMENTAL=y
|
||||||
# CONFIG_LOCALVERSION_AUTO is not set
|
# CONFIG_LOCALVERSION_AUTO is not set
|
||||||
|
CONFIG_KERNEL_LZMA=y
|
||||||
# CONFIG_SWAP is not set
|
# CONFIG_SWAP is not set
|
||||||
CONFIG_SYSVIPC=y
|
CONFIG_SYSVIPC=y
|
||||||
|
CONFIG_IKCONFIG=y
|
||||||
|
CONFIG_IKCONFIG_PROC=y
|
||||||
CONFIG_LOG_BUF_SHIFT=14
|
CONFIG_LOG_BUF_SHIFT=14
|
||||||
CONFIG_BLK_DEV_INITRD=y
|
CONFIG_NAMESPACES=y
|
||||||
|
CONFIG_EMBEDDED=y
|
||||||
CONFIG_SLAB=y
|
CONFIG_SLAB=y
|
||||||
CONFIG_MODULES=y
|
CONFIG_MODULES=y
|
||||||
CONFIG_MODULE_UNLOAD=y
|
CONFIG_MODULE_UNLOAD=y
|
||||||
@@ -15,18 +19,27 @@ CONFIG_ARCH_AT91SAM9261=y
|
|||||||
CONFIG_MACH_AT91SAM9261EK=y
|
CONFIG_MACH_AT91SAM9261EK=y
|
||||||
CONFIG_AT91_PROGRAMMABLE_CLOCKS=y
|
CONFIG_AT91_PROGRAMMABLE_CLOCKS=y
|
||||||
# CONFIG_ARM_THUMB is not set
|
# CONFIG_ARM_THUMB is not set
|
||||||
|
CONFIG_AEABI=y
|
||||||
|
# CONFIG_OABI_COMPAT is not set
|
||||||
CONFIG_ZBOOT_ROM_TEXT=0x0
|
CONFIG_ZBOOT_ROM_TEXT=0x0
|
||||||
CONFIG_ZBOOT_ROM_BSS=0x0
|
CONFIG_ZBOOT_ROM_BSS=0x0
|
||||||
CONFIG_CMDLINE="mem=64M console=ttyS0,115200 initrd=0x21100000,3145728 root=/dev/ram0 rw"
|
CONFIG_CMDLINE="mem=64M console=ttyS0,115200 initrd=0x21100000,3145728 root=/dev/ram0 rw"
|
||||||
CONFIG_FPE_NWFPE=y
|
CONFIG_AUTO_ZRELADDR=y
|
||||||
|
CONFIG_VFP=y
|
||||||
|
# CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set
|
||||||
CONFIG_NET=y
|
CONFIG_NET=y
|
||||||
CONFIG_PACKET=y
|
CONFIG_PACKET=y
|
||||||
CONFIG_UNIX=y
|
CONFIG_UNIX=y
|
||||||
CONFIG_INET=y
|
CONFIG_INET=y
|
||||||
|
CONFIG_IP_MULTICAST=y
|
||||||
CONFIG_IP_PNP=y
|
CONFIG_IP_PNP=y
|
||||||
|
CONFIG_IP_PNP_DHCP=y
|
||||||
CONFIG_IP_PNP_BOOTP=y
|
CONFIG_IP_PNP_BOOTP=y
|
||||||
# CONFIG_INET_LRO is not set
|
# CONFIG_INET_LRO is not set
|
||||||
# CONFIG_IPV6 is not set
|
# CONFIG_IPV6 is not set
|
||||||
|
CONFIG_CFG80211=y
|
||||||
|
CONFIG_LIB80211=y
|
||||||
|
CONFIG_MAC80211=y
|
||||||
CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"
|
CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"
|
||||||
CONFIG_MTD=y
|
CONFIG_MTD=y
|
||||||
CONFIG_MTD_PARTITIONS=y
|
CONFIG_MTD_PARTITIONS=y
|
||||||
@@ -34,8 +47,12 @@ CONFIG_MTD_CMDLINE_PARTS=y
|
|||||||
CONFIG_MTD_BLOCK=y
|
CONFIG_MTD_BLOCK=y
|
||||||
CONFIG_MTD_NAND=y
|
CONFIG_MTD_NAND=y
|
||||||
CONFIG_MTD_NAND_ATMEL=y
|
CONFIG_MTD_NAND_ATMEL=y
|
||||||
|
CONFIG_MTD_UBI=y
|
||||||
|
CONFIG_MTD_UBI_GLUEBI=y
|
||||||
CONFIG_BLK_DEV_RAM=y
|
CONFIG_BLK_DEV_RAM=y
|
||||||
CONFIG_BLK_DEV_RAM_SIZE=8192
|
CONFIG_BLK_DEV_RAM_SIZE=8192
|
||||||
|
CONFIG_MISC_DEVICES=y
|
||||||
|
CONFIG_ATMEL_TCLIB=y
|
||||||
CONFIG_ATMEL_SSC=y
|
CONFIG_ATMEL_SSC=y
|
||||||
CONFIG_SCSI=y
|
CONFIG_SCSI=y
|
||||||
CONFIG_BLK_DEV_SD=y
|
CONFIG_BLK_DEV_SD=y
|
||||||
@@ -45,12 +62,27 @@ CONFIG_NET_ETHERNET=y
|
|||||||
CONFIG_DM9000=y
|
CONFIG_DM9000=y
|
||||||
# CONFIG_NETDEV_1000 is not set
|
# CONFIG_NETDEV_1000 is not set
|
||||||
# CONFIG_NETDEV_10000 is not set
|
# CONFIG_NETDEV_10000 is not set
|
||||||
|
CONFIG_USB_ZD1201=m
|
||||||
|
CONFIG_RTL8187=m
|
||||||
|
CONFIG_LIBERTAS=m
|
||||||
|
CONFIG_LIBERTAS_USB=m
|
||||||
|
CONFIG_LIBERTAS_SDIO=m
|
||||||
|
CONFIG_LIBERTAS_SPI=m
|
||||||
|
CONFIG_RT2X00=m
|
||||||
|
CONFIG_RT2500USB=m
|
||||||
|
CONFIG_RT73USB=m
|
||||||
|
CONFIG_ZD1211RW=m
|
||||||
|
CONFIG_INPUT_POLLDEV=m
|
||||||
# CONFIG_INPUT_MOUSEDEV_PSAUX is not set
|
# CONFIG_INPUT_MOUSEDEV_PSAUX is not set
|
||||||
|
CONFIG_INPUT_MOUSEDEV_SCREEN_X=240
|
||||||
|
CONFIG_INPUT_MOUSEDEV_SCREEN_Y=320
|
||||||
|
CONFIG_INPUT_EVDEV=y
|
||||||
# CONFIG_KEYBOARD_ATKBD is not set
|
# CONFIG_KEYBOARD_ATKBD is not set
|
||||||
CONFIG_KEYBOARD_GPIO=y
|
CONFIG_KEYBOARD_GPIO=y
|
||||||
# CONFIG_INPUT_MOUSE is not set
|
# CONFIG_INPUT_MOUSE is not set
|
||||||
CONFIG_INPUT_TOUCHSCREEN=y
|
CONFIG_INPUT_TOUCHSCREEN=y
|
||||||
CONFIG_TOUCHSCREEN_ADS7846=y
|
CONFIG_TOUCHSCREEN_ADS7846=y
|
||||||
|
CONFIG_DEVPTS_MULTIPLE_INSTANCES=y
|
||||||
CONFIG_SERIAL_ATMEL=y
|
CONFIG_SERIAL_ATMEL=y
|
||||||
CONFIG_SERIAL_ATMEL_CONSOLE=y
|
CONFIG_SERIAL_ATMEL_CONSOLE=y
|
||||||
CONFIG_HW_RANDOM=y
|
CONFIG_HW_RANDOM=y
|
||||||
@@ -65,31 +97,62 @@ CONFIG_WATCHDOG_NOWAYOUT=y
|
|||||||
CONFIG_AT91SAM9X_WATCHDOG=y
|
CONFIG_AT91SAM9X_WATCHDOG=y
|
||||||
CONFIG_FB=y
|
CONFIG_FB=y
|
||||||
CONFIG_FB_ATMEL=y
|
CONFIG_FB_ATMEL=y
|
||||||
# CONFIG_VGA_CONSOLE is not set
|
CONFIG_BACKLIGHT_LCD_SUPPORT=y
|
||||||
|
# CONFIG_LCD_CLASS_DEVICE is not set
|
||||||
|
CONFIG_BACKLIGHT_CLASS_DEVICE=y
|
||||||
|
CONFIG_BACKLIGHT_ATMEL_LCDC=y
|
||||||
|
# CONFIG_BACKLIGHT_GENERIC is not set
|
||||||
|
CONFIG_FRAMEBUFFER_CONSOLE=y
|
||||||
|
CONFIG_FRAMEBUFFER_CONSOLE_DETECT_PRIMARY=y
|
||||||
|
CONFIG_LOGO=y
|
||||||
|
CONFIG_SOUND=y
|
||||||
|
CONFIG_SND=y
|
||||||
|
CONFIG_SND_SEQUENCER=y
|
||||||
|
CONFIG_SND_MIXER_OSS=y
|
||||||
|
CONFIG_SND_PCM_OSS=y
|
||||||
|
# CONFIG_SND_SUPPORT_OLD_API is not set
|
||||||
|
# CONFIG_SND_VERBOSE_PROCFS is not set
|
||||||
|
# CONFIG_SND_DRIVERS is not set
|
||||||
|
# CONFIG_SND_ARM is not set
|
||||||
|
CONFIG_SND_AT73C213=y
|
||||||
|
CONFIG_SND_USB_AUDIO=m
|
||||||
# CONFIG_USB_HID is not set
|
# CONFIG_USB_HID is not set
|
||||||
CONFIG_USB=y
|
CONFIG_USB=y
|
||||||
CONFIG_USB_DEVICEFS=y
|
CONFIG_USB_DEVICEFS=y
|
||||||
CONFIG_USB_MON=y
|
|
||||||
CONFIG_USB_OHCI_HCD=y
|
CONFIG_USB_OHCI_HCD=y
|
||||||
CONFIG_USB_STORAGE=y
|
CONFIG_USB_STORAGE=y
|
||||||
CONFIG_USB_STORAGE_DEBUG=y
|
|
||||||
CONFIG_USB_GADGET=y
|
CONFIG_USB_GADGET=y
|
||||||
CONFIG_USB_ZERO=m
|
CONFIG_USB_ZERO=m
|
||||||
|
CONFIG_USB_ETH=m
|
||||||
CONFIG_USB_GADGETFS=m
|
CONFIG_USB_GADGETFS=m
|
||||||
CONFIG_USB_FILE_STORAGE=m
|
CONFIG_USB_FILE_STORAGE=m
|
||||||
CONFIG_USB_G_SERIAL=m
|
CONFIG_USB_G_SERIAL=m
|
||||||
CONFIG_MMC=y
|
CONFIG_MMC=y
|
||||||
CONFIG_MMC_AT91=m
|
CONFIG_MMC_AT91=m
|
||||||
|
CONFIG_NEW_LEDS=y
|
||||||
|
CONFIG_LEDS_CLASS=y
|
||||||
|
CONFIG_LEDS_GPIO=y
|
||||||
|
CONFIG_LEDS_TRIGGERS=y
|
||||||
|
CONFIG_LEDS_TRIGGER_TIMER=y
|
||||||
|
CONFIG_LEDS_TRIGGER_HEARTBEAT=y
|
||||||
|
CONFIG_LEDS_TRIGGER_GPIO=y
|
||||||
CONFIG_RTC_CLASS=y
|
CONFIG_RTC_CLASS=y
|
||||||
CONFIG_RTC_DRV_AT91SAM9=y
|
CONFIG_RTC_DRV_AT91SAM9=y
|
||||||
CONFIG_EXT2_FS=y
|
CONFIG_MSDOS_FS=y
|
||||||
CONFIG_INOTIFY=y
|
|
||||||
CONFIG_VFAT_FS=y
|
CONFIG_VFAT_FS=y
|
||||||
CONFIG_TMPFS=y
|
CONFIG_TMPFS=y
|
||||||
CONFIG_CRAMFS=y
|
CONFIG_UBIFS_FS=y
|
||||||
|
CONFIG_UBIFS_FS_ADVANCED_COMPR=y
|
||||||
|
CONFIG_SQUASHFS=y
|
||||||
|
CONFIG_SQUASHFS_LZO=y
|
||||||
|
CONFIG_SQUASHFS_XZ=y
|
||||||
|
CONFIG_NFS_FS=y
|
||||||
|
CONFIG_NFS_V3=y
|
||||||
|
CONFIG_ROOT_NFS=y
|
||||||
CONFIG_NLS_CODEPAGE_437=y
|
CONFIG_NLS_CODEPAGE_437=y
|
||||||
CONFIG_NLS_CODEPAGE_850=y
|
CONFIG_NLS_CODEPAGE_850=y
|
||||||
CONFIG_NLS_ISO8859_1=y
|
CONFIG_NLS_ISO8859_1=y
|
||||||
CONFIG_DEBUG_KERNEL=y
|
CONFIG_NLS_ISO8859_15=y
|
||||||
CONFIG_DEBUG_USER=y
|
CONFIG_NLS_UTF8=y
|
||||||
CONFIG_DEBUG_LL=y
|
CONFIG_FTRACE=y
|
||||||
|
CONFIG_CRC_CCITT=m
|
@@ -1,9 +1,13 @@
|
|||||||
CONFIG_EXPERIMENTAL=y
|
CONFIG_EXPERIMENTAL=y
|
||||||
# CONFIG_LOCALVERSION_AUTO is not set
|
# CONFIG_LOCALVERSION_AUTO is not set
|
||||||
|
CONFIG_KERNEL_LZMA=y
|
||||||
# CONFIG_SWAP is not set
|
# CONFIG_SWAP is not set
|
||||||
CONFIG_SYSVIPC=y
|
CONFIG_SYSVIPC=y
|
||||||
|
CONFIG_IKCONFIG=y
|
||||||
|
CONFIG_IKCONFIG_PROC=y
|
||||||
CONFIG_LOG_BUF_SHIFT=14
|
CONFIG_LOG_BUF_SHIFT=14
|
||||||
CONFIG_BLK_DEV_INITRD=y
|
CONFIG_NAMESPACES=y
|
||||||
|
CONFIG_EMBEDDED=y
|
||||||
CONFIG_SLAB=y
|
CONFIG_SLAB=y
|
||||||
CONFIG_MODULES=y
|
CONFIG_MODULES=y
|
||||||
CONFIG_MODULE_UNLOAD=y
|
CONFIG_MODULE_UNLOAD=y
|
||||||
@@ -13,53 +17,81 @@ CONFIG_MODULE_UNLOAD=y
|
|||||||
CONFIG_ARCH_AT91=y
|
CONFIG_ARCH_AT91=y
|
||||||
CONFIG_ARCH_AT91SAM9263=y
|
CONFIG_ARCH_AT91SAM9263=y
|
||||||
CONFIG_MACH_AT91SAM9263EK=y
|
CONFIG_MACH_AT91SAM9263EK=y
|
||||||
|
CONFIG_MACH_USB_A9263=y
|
||||||
|
CONFIG_MACH_NEOCORE926=y
|
||||||
CONFIG_MTD_AT91_DATAFLASH_CARD=y
|
CONFIG_MTD_AT91_DATAFLASH_CARD=y
|
||||||
# CONFIG_ARM_THUMB is not set
|
# CONFIG_ARM_THUMB is not set
|
||||||
|
CONFIG_AEABI=y
|
||||||
|
# CONFIG_OABI_COMPAT is not set
|
||||||
CONFIG_ZBOOT_ROM_TEXT=0x0
|
CONFIG_ZBOOT_ROM_TEXT=0x0
|
||||||
CONFIG_ZBOOT_ROM_BSS=0x0
|
CONFIG_ZBOOT_ROM_BSS=0x0
|
||||||
CONFIG_CMDLINE="mem=64M console=ttyS0,115200 initrd=0x21100000,3145728 root=/dev/ram0 rw"
|
CONFIG_CMDLINE="mem=64M console=ttyS0,115200 initrd=0x21100000,3145728 root=/dev/ram0 rw"
|
||||||
CONFIG_FPE_NWFPE=y
|
CONFIG_AUTO_ZRELADDR=y
|
||||||
CONFIG_NET=y
|
CONFIG_NET=y
|
||||||
CONFIG_PACKET=y
|
CONFIG_PACKET=y
|
||||||
CONFIG_UNIX=y
|
CONFIG_UNIX=y
|
||||||
|
CONFIG_NET_KEY=y
|
||||||
CONFIG_INET=y
|
CONFIG_INET=y
|
||||||
|
CONFIG_IP_MULTICAST=y
|
||||||
|
CONFIG_IP_ADVANCED_ROUTER=y
|
||||||
|
CONFIG_IP_ROUTE_VERBOSE=y
|
||||||
CONFIG_IP_PNP=y
|
CONFIG_IP_PNP=y
|
||||||
|
CONFIG_IP_PNP_DHCP=y
|
||||||
CONFIG_IP_PNP_BOOTP=y
|
CONFIG_IP_PNP_BOOTP=y
|
||||||
CONFIG_IP_PNP_RARP=y
|
CONFIG_IP_PNP_RARP=y
|
||||||
|
CONFIG_NET_IPIP=y
|
||||||
|
CONFIG_IP_MROUTE=y
|
||||||
|
CONFIG_IP_PIMSM_V1=y
|
||||||
|
CONFIG_IP_PIMSM_V2=y
|
||||||
# CONFIG_INET_XFRM_MODE_TRANSPORT is not set
|
# CONFIG_INET_XFRM_MODE_TRANSPORT is not set
|
||||||
# CONFIG_INET_XFRM_MODE_TUNNEL is not set
|
# CONFIG_INET_XFRM_MODE_TUNNEL is not set
|
||||||
# CONFIG_INET_XFRM_MODE_BEET is not set
|
# CONFIG_INET_XFRM_MODE_BEET is not set
|
||||||
# CONFIG_INET_LRO is not set
|
# CONFIG_INET_LRO is not set
|
||||||
# CONFIG_INET_DIAG is not set
|
# CONFIG_INET_DIAG is not set
|
||||||
# CONFIG_IPV6 is not set
|
CONFIG_IPV6=y
|
||||||
CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"
|
CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"
|
||||||
CONFIG_MTD=y
|
CONFIG_MTD=y
|
||||||
CONFIG_MTD_PARTITIONS=y
|
CONFIG_MTD_PARTITIONS=y
|
||||||
CONFIG_MTD_CMDLINE_PARTS=y
|
CONFIG_MTD_CMDLINE_PARTS=y
|
||||||
CONFIG_MTD_CHAR=y
|
CONFIG_MTD_CHAR=y
|
||||||
CONFIG_MTD_BLOCK=y
|
CONFIG_MTD_BLOCK=y
|
||||||
|
CONFIG_NFTL=y
|
||||||
|
CONFIG_NFTL_RW=y
|
||||||
CONFIG_MTD_DATAFLASH=y
|
CONFIG_MTD_DATAFLASH=y
|
||||||
|
CONFIG_MTD_BLOCK2MTD=y
|
||||||
CONFIG_MTD_NAND=y
|
CONFIG_MTD_NAND=y
|
||||||
CONFIG_MTD_NAND_ATMEL=y
|
CONFIG_MTD_NAND_ATMEL=y
|
||||||
|
CONFIG_MTD_NAND_ATMEL_ECC_SOFT=y
|
||||||
|
CONFIG_MTD_UBI=y
|
||||||
|
CONFIG_MTD_UBI_GLUEBI=y
|
||||||
CONFIG_BLK_DEV_LOOP=y
|
CONFIG_BLK_DEV_LOOP=y
|
||||||
CONFIG_BLK_DEV_RAM=y
|
CONFIG_BLK_DEV_RAM=y
|
||||||
CONFIG_BLK_DEV_RAM_SIZE=8192
|
CONFIG_BLK_DEV_RAM_SIZE=8192
|
||||||
CONFIG_ATMEL_SSC=y
|
CONFIG_MISC_DEVICES=y
|
||||||
|
CONFIG_ATMEL_PWM=y
|
||||||
|
CONFIG_ATMEL_TCLIB=y
|
||||||
CONFIG_SCSI=y
|
CONFIG_SCSI=y
|
||||||
CONFIG_BLK_DEV_SD=y
|
CONFIG_BLK_DEV_SD=y
|
||||||
CONFIG_SCSI_MULTI_LUN=y
|
CONFIG_SCSI_MULTI_LUN=y
|
||||||
CONFIG_NETDEVICES=y
|
CONFIG_NETDEVICES=y
|
||||||
CONFIG_NET_ETHERNET=y
|
|
||||||
CONFIG_MII=y
|
CONFIG_MII=y
|
||||||
|
CONFIG_SMSC_PHY=y
|
||||||
|
CONFIG_NET_ETHERNET=y
|
||||||
CONFIG_MACB=y
|
CONFIG_MACB=y
|
||||||
|
# CONFIG_NETDEV_1000 is not set
|
||||||
|
# CONFIG_NETDEV_10000 is not set
|
||||||
|
CONFIG_USB_ZD1201=m
|
||||||
|
CONFIG_INPUT_POLLDEV=m
|
||||||
# CONFIG_INPUT_MOUSEDEV_PSAUX is not set
|
# CONFIG_INPUT_MOUSEDEV_PSAUX is not set
|
||||||
|
CONFIG_INPUT_MOUSEDEV_SCREEN_X=240
|
||||||
|
CONFIG_INPUT_MOUSEDEV_SCREEN_Y=320
|
||||||
CONFIG_INPUT_EVDEV=y
|
CONFIG_INPUT_EVDEV=y
|
||||||
# CONFIG_KEYBOARD_ATKBD is not set
|
# CONFIG_KEYBOARD_ATKBD is not set
|
||||||
CONFIG_KEYBOARD_GPIO=y
|
CONFIG_KEYBOARD_GPIO=y
|
||||||
# CONFIG_INPUT_MOUSE is not set
|
# CONFIG_INPUT_MOUSE is not set
|
||||||
CONFIG_INPUT_TOUCHSCREEN=y
|
CONFIG_INPUT_TOUCHSCREEN=y
|
||||||
CONFIG_TOUCHSCREEN_ADS7846=y
|
CONFIG_TOUCHSCREEN_ADS7846=y
|
||||||
# CONFIG_SERIO is not set
|
CONFIG_LEGACY_PTY_COUNT=4
|
||||||
CONFIG_SERIAL_ATMEL=y
|
CONFIG_SERIAL_ATMEL=y
|
||||||
CONFIG_SERIAL_ATMEL_CONSOLE=y
|
CONFIG_SERIAL_ATMEL_CONSOLE=y
|
||||||
CONFIG_HW_RANDOM=y
|
CONFIG_HW_RANDOM=y
|
||||||
@@ -74,8 +106,25 @@ CONFIG_WATCHDOG_NOWAYOUT=y
|
|||||||
CONFIG_AT91SAM9X_WATCHDOG=y
|
CONFIG_AT91SAM9X_WATCHDOG=y
|
||||||
CONFIG_FB=y
|
CONFIG_FB=y
|
||||||
CONFIG_FB_ATMEL=y
|
CONFIG_FB_ATMEL=y
|
||||||
# CONFIG_VGA_CONSOLE is not set
|
CONFIG_BACKLIGHT_LCD_SUPPORT=y
|
||||||
# CONFIG_USB_HID is not set
|
CONFIG_LCD_CLASS_DEVICE=y
|
||||||
|
CONFIG_BACKLIGHT_CLASS_DEVICE=y
|
||||||
|
CONFIG_BACKLIGHT_ATMEL_LCDC=y
|
||||||
|
CONFIG_FRAMEBUFFER_CONSOLE=y
|
||||||
|
CONFIG_FRAMEBUFFER_CONSOLE_DETECT_PRIMARY=y
|
||||||
|
CONFIG_LOGO=y
|
||||||
|
CONFIG_SOUND=y
|
||||||
|
CONFIG_SND=y
|
||||||
|
CONFIG_SND_SEQUENCER=y
|
||||||
|
CONFIG_SND_MIXER_OSS=y
|
||||||
|
CONFIG_SND_PCM_OSS=y
|
||||||
|
# CONFIG_SND_SUPPORT_OLD_API is not set
|
||||||
|
# CONFIG_SND_VERBOSE_PROCFS is not set
|
||||||
|
# CONFIG_SND_DRIVERS is not set
|
||||||
|
# CONFIG_SND_ARM is not set
|
||||||
|
CONFIG_SND_ATMEL_AC97C=y
|
||||||
|
# CONFIG_SND_SPI is not set
|
||||||
|
CONFIG_SND_USB_AUDIO=m
|
||||||
CONFIG_USB=y
|
CONFIG_USB=y
|
||||||
CONFIG_USB_DEVICEFS=y
|
CONFIG_USB_DEVICEFS=y
|
||||||
CONFIG_USB_MON=y
|
CONFIG_USB_MON=y
|
||||||
@@ -83,24 +132,37 @@ CONFIG_USB_OHCI_HCD=y
|
|||||||
CONFIG_USB_STORAGE=y
|
CONFIG_USB_STORAGE=y
|
||||||
CONFIG_USB_GADGET=y
|
CONFIG_USB_GADGET=y
|
||||||
CONFIG_USB_ZERO=m
|
CONFIG_USB_ZERO=m
|
||||||
|
CONFIG_USB_ETH=m
|
||||||
CONFIG_USB_GADGETFS=m
|
CONFIG_USB_GADGETFS=m
|
||||||
CONFIG_USB_FILE_STORAGE=m
|
CONFIG_USB_FILE_STORAGE=m
|
||||||
CONFIG_USB_G_SERIAL=m
|
CONFIG_USB_G_SERIAL=m
|
||||||
CONFIG_MMC=y
|
CONFIG_MMC=y
|
||||||
|
CONFIG_SDIO_UART=m
|
||||||
CONFIG_MMC_AT91=m
|
CONFIG_MMC_AT91=m
|
||||||
|
CONFIG_NEW_LEDS=y
|
||||||
|
CONFIG_LEDS_CLASS=y
|
||||||
|
CONFIG_LEDS_ATMEL_PWM=y
|
||||||
|
CONFIG_LEDS_GPIO=y
|
||||||
|
CONFIG_LEDS_TRIGGERS=y
|
||||||
|
CONFIG_LEDS_TRIGGER_HEARTBEAT=y
|
||||||
CONFIG_RTC_CLASS=y
|
CONFIG_RTC_CLASS=y
|
||||||
CONFIG_RTC_DRV_AT91SAM9=y
|
CONFIG_RTC_DRV_AT91SAM9=y
|
||||||
CONFIG_EXT2_FS=y
|
CONFIG_EXT2_FS=y
|
||||||
CONFIG_INOTIFY=y
|
CONFIG_FUSE_FS=m
|
||||||
CONFIG_VFAT_FS=y
|
CONFIG_VFAT_FS=y
|
||||||
CONFIG_TMPFS=y
|
CONFIG_TMPFS=y
|
||||||
CONFIG_JFFS2_FS=y
|
CONFIG_JFFS2_FS=y
|
||||||
|
CONFIG_UBIFS_FS=y
|
||||||
|
CONFIG_UBIFS_FS_ADVANCED_COMPR=y
|
||||||
CONFIG_CRAMFS=y
|
CONFIG_CRAMFS=y
|
||||||
CONFIG_NFS_FS=y
|
CONFIG_NFS_FS=y
|
||||||
|
CONFIG_NFS_V3=y
|
||||||
|
CONFIG_NFS_V3_ACL=y
|
||||||
|
CONFIG_NFS_V4=y
|
||||||
CONFIG_ROOT_NFS=y
|
CONFIG_ROOT_NFS=y
|
||||||
CONFIG_NLS_CODEPAGE_437=y
|
CONFIG_NLS_CODEPAGE_437=y
|
||||||
CONFIG_NLS_CODEPAGE_850=y
|
CONFIG_NLS_CODEPAGE_850=y
|
||||||
CONFIG_NLS_ISO8859_1=y
|
CONFIG_NLS_ISO8859_1=y
|
||||||
CONFIG_DEBUG_KERNEL=y
|
CONFIG_FTRACE=y
|
||||||
CONFIG_DEBUG_USER=y
|
CONFIG_DEBUG_USER=y
|
||||||
CONFIG_DEBUG_LL=y
|
CONFIG_XZ_DEC=y
|
@@ -157,7 +157,7 @@ CONFIG_LEDS_GPIO=m
|
|||||||
CONFIG_LEDS_TRIGGERS=y
|
CONFIG_LEDS_TRIGGERS=y
|
||||||
CONFIG_LEDS_TRIGGER_TIMER=m
|
CONFIG_LEDS_TRIGGER_TIMER=m
|
||||||
CONFIG_LEDS_TRIGGER_HEARTBEAT=m
|
CONFIG_LEDS_TRIGGER_HEARTBEAT=m
|
||||||
CONFIG_RTC_CLASS=m
|
CONFIG_RTC_CLASS=y
|
||||||
CONFIG_EXT2_FS=y
|
CONFIG_EXT2_FS=y
|
||||||
CONFIG_EXT3_FS=y
|
CONFIG_EXT3_FS=y
|
||||||
CONFIG_XFS_FS=m
|
CONFIG_XFS_FS=m
|
||||||
|
@@ -8,7 +8,9 @@ CONFIG_ARCH_EXYNOS4=y
|
|||||||
CONFIG_S3C_LOWLEVEL_UART_PORT=1
|
CONFIG_S3C_LOWLEVEL_UART_PORT=1
|
||||||
CONFIG_MACH_SMDKC210=y
|
CONFIG_MACH_SMDKC210=y
|
||||||
CONFIG_MACH_SMDKV310=y
|
CONFIG_MACH_SMDKV310=y
|
||||||
|
CONFIG_MACH_ARMLEX4210=y
|
||||||
CONFIG_MACH_UNIVERSAL_C210=y
|
CONFIG_MACH_UNIVERSAL_C210=y
|
||||||
|
CONFIG_MACH_NURI=y
|
||||||
CONFIG_NO_HZ=y
|
CONFIG_NO_HZ=y
|
||||||
CONFIG_HIGH_RES_TIMERS=y
|
CONFIG_HIGH_RES_TIMERS=y
|
||||||
CONFIG_SMP=y
|
CONFIG_SMP=y
|
||||||
|
@@ -1,104 +0,0 @@
|
|||||||
CONFIG_EXPERIMENTAL=y
|
|
||||||
# CONFIG_LOCALVERSION_AUTO is not set
|
|
||||||
# CONFIG_SWAP is not set
|
|
||||||
CONFIG_SYSVIPC=y
|
|
||||||
CONFIG_BLK_DEV_INITRD=y
|
|
||||||
# CONFIG_COMPAT_BRK is not set
|
|
||||||
CONFIG_MODULES=y
|
|
||||||
CONFIG_MODULE_UNLOAD=y
|
|
||||||
# CONFIG_BLK_DEV_BSG is not set
|
|
||||||
# CONFIG_IOSCHED_DEADLINE is not set
|
|
||||||
# CONFIG_IOSCHED_CFQ is not set
|
|
||||||
CONFIG_ARCH_AT91=y
|
|
||||||
CONFIG_ARCH_AT91SAM9263=y
|
|
||||||
CONFIG_MACH_NEOCORE926=y
|
|
||||||
CONFIG_MTD_AT91_DATAFLASH_CARD=y
|
|
||||||
CONFIG_ZBOOT_ROM_TEXT=0x0
|
|
||||||
CONFIG_ZBOOT_ROM_BSS=0x0
|
|
||||||
CONFIG_FPE_NWFPE=y
|
|
||||||
CONFIG_NET=y
|
|
||||||
CONFIG_PACKET=y
|
|
||||||
CONFIG_UNIX=y
|
|
||||||
CONFIG_NET_KEY=y
|
|
||||||
CONFIG_INET=y
|
|
||||||
CONFIG_IP_PNP=y
|
|
||||||
CONFIG_IP_PNP_DHCP=y
|
|
||||||
CONFIG_IP_PNP_BOOTP=y
|
|
||||||
CONFIG_IP_PNP_RARP=y
|
|
||||||
CONFIG_NET_IPIP=y
|
|
||||||
# CONFIG_INET_LRO is not set
|
|
||||||
CONFIG_IPV6=y
|
|
||||||
CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"
|
|
||||||
# CONFIG_PREVENT_FIRMWARE_BUILD is not set
|
|
||||||
CONFIG_MTD=y
|
|
||||||
CONFIG_MTD_PARTITIONS=y
|
|
||||||
CONFIG_MTD_CHAR=y
|
|
||||||
CONFIG_MTD_BLOCK=y
|
|
||||||
CONFIG_NFTL=y
|
|
||||||
CONFIG_NFTL_RW=y
|
|
||||||
CONFIG_MTD_BLOCK2MTD=y
|
|
||||||
CONFIG_MTD_NAND=y
|
|
||||||
CONFIG_MTD_NAND_ECC_SMC=y
|
|
||||||
CONFIG_MTD_NAND_VERIFY_WRITE=y
|
|
||||||
CONFIG_MTD_NAND_ATMEL=y
|
|
||||||
CONFIG_MTD_NAND_PLATFORM=y
|
|
||||||
CONFIG_BLK_DEV_LOOP=y
|
|
||||||
CONFIG_BLK_DEV_NBD=y
|
|
||||||
CONFIG_ATMEL_PWM=y
|
|
||||||
CONFIG_ATMEL_TCLIB=y
|
|
||||||
CONFIG_SCSI=y
|
|
||||||
CONFIG_CHR_DEV_SG=y
|
|
||||||
CONFIG_NETDEVICES=y
|
|
||||||
CONFIG_SMSC_PHY=y
|
|
||||||
CONFIG_NET_ETHERNET=y
|
|
||||||
CONFIG_MACB=y
|
|
||||||
# CONFIG_NETDEV_1000 is not set
|
|
||||||
# CONFIG_NETDEV_10000 is not set
|
|
||||||
# CONFIG_INPUT_MOUSEDEV_PSAUX is not set
|
|
||||||
CONFIG_INPUT_EVDEV=y
|
|
||||||
CONFIG_INPUT_TOUCHSCREEN=y
|
|
||||||
CONFIG_TOUCHSCREEN_ADS7846=y
|
|
||||||
CONFIG_VT_HW_CONSOLE_BINDING=y
|
|
||||||
# CONFIG_DEVKMEM is not set
|
|
||||||
CONFIG_SERIAL_NONSTANDARD=y
|
|
||||||
CONFIG_SERIAL_ATMEL=y
|
|
||||||
CONFIG_SERIAL_ATMEL_CONSOLE=y
|
|
||||||
# CONFIG_SERIAL_ATMEL_PDC is not set
|
|
||||||
# CONFIG_HW_RANDOM is not set
|
|
||||||
CONFIG_I2C=y
|
|
||||||
CONFIG_I2C_CHARDEV=y
|
|
||||||
CONFIG_SPI=y
|
|
||||||
CONFIG_SPI_ATMEL=y
|
|
||||||
# CONFIG_HWMON is not set
|
|
||||||
CONFIG_VIDEO_OUTPUT_CONTROL=y
|
|
||||||
CONFIG_FB=y
|
|
||||||
CONFIG_FB_ATMEL=y
|
|
||||||
CONFIG_BACKLIGHT_LCD_SUPPORT=y
|
|
||||||
CONFIG_LCD_CLASS_DEVICE=y
|
|
||||||
CONFIG_BACKLIGHT_CLASS_DEVICE=y
|
|
||||||
CONFIG_BACKLIGHT_ATMEL_LCDC=y
|
|
||||||
# CONFIG_VGA_CONSOLE is not set
|
|
||||||
CONFIG_FRAMEBUFFER_CONSOLE=y
|
|
||||||
CONFIG_FRAMEBUFFER_CONSOLE_DETECT_PRIMARY=y
|
|
||||||
CONFIG_LOGO=y
|
|
||||||
CONFIG_USB=y
|
|
||||||
CONFIG_USB_DEVICEFS=y
|
|
||||||
CONFIG_USB_MON=y
|
|
||||||
CONFIG_USB_OHCI_HCD=y
|
|
||||||
CONFIG_USB_STORAGE=y
|
|
||||||
CONFIG_MMC=y
|
|
||||||
CONFIG_SDIO_UART=y
|
|
||||||
CONFIG_MMC_AT91=m
|
|
||||||
CONFIG_EXT2_FS=y
|
|
||||||
# CONFIG_DNOTIFY is not set
|
|
||||||
CONFIG_AUTOFS_FS=y
|
|
||||||
CONFIG_VFAT_FS=y
|
|
||||||
CONFIG_TMPFS=y
|
|
||||||
CONFIG_JFFS2_FS=y
|
|
||||||
CONFIG_JFFS2_FS_WBUF_VERIFY=y
|
|
||||||
CONFIG_NFS_FS=y
|
|
||||||
CONFIG_ROOT_NFS=y
|
|
||||||
# CONFIG_ENABLE_WARN_DEPRECATED is not set
|
|
||||||
# CONFIG_ENABLE_MUST_CHECK is not set
|
|
||||||
CONFIG_SYSCTL_SYSCALL_CHECK=y
|
|
||||||
# CONFIG_CRYPTO_HW is not set
|
|
@@ -60,7 +60,7 @@ CONFIG_FB_ARMCLCD=y
|
|||||||
# CONFIG_VGA_CONSOLE is not set
|
# CONFIG_VGA_CONSOLE is not set
|
||||||
CONFIG_FRAMEBUFFER_CONSOLE=y
|
CONFIG_FRAMEBUFFER_CONSOLE=y
|
||||||
CONFIG_LOGO=y
|
CONFIG_LOGO=y
|
||||||
CONFIG_RTC_CLASS=m
|
CONFIG_RTC_CLASS=y
|
||||||
CONFIG_INOTIFY=y
|
CONFIG_INOTIFY=y
|
||||||
CONFIG_TMPFS=y
|
CONFIG_TMPFS=y
|
||||||
CONFIG_JFFS2_FS=y
|
CONFIG_JFFS2_FS=y
|
||||||
|
@@ -1,65 +0,0 @@
|
|||||||
CONFIG_EXPERIMENTAL=y
|
|
||||||
CONFIG_SYSFS_DEPRECATED_V2=y
|
|
||||||
CONFIG_BLK_DEV_INITRD=y
|
|
||||||
CONFIG_KALLSYMS_ALL=y
|
|
||||||
CONFIG_MODULES=y
|
|
||||||
CONFIG_MODULE_UNLOAD=y
|
|
||||||
# CONFIG_BLK_DEV_BSG is not set
|
|
||||||
CONFIG_ARCH_S5P6442=y
|
|
||||||
CONFIG_S3C_LOWLEVEL_UART_PORT=1
|
|
||||||
CONFIG_MACH_SMDK6442=y
|
|
||||||
CONFIG_CPU_32v6K=y
|
|
||||||
CONFIG_AEABI=y
|
|
||||||
CONFIG_CMDLINE="root=/dev/ram0 rw ramdisk=8192 initrd=0x20800000,8M console=ttySAC1,115200 init=/linuxrc"
|
|
||||||
CONFIG_FPE_NWFPE=y
|
|
||||||
CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"
|
|
||||||
# CONFIG_PREVENT_FIRMWARE_BUILD is not set
|
|
||||||
CONFIG_BLK_DEV_LOOP=y
|
|
||||||
CONFIG_BLK_DEV_RAM=y
|
|
||||||
CONFIG_BLK_DEV_RAM_SIZE=8192
|
|
||||||
# CONFIG_MISC_DEVICES is not set
|
|
||||||
CONFIG_SCSI=y
|
|
||||||
CONFIG_BLK_DEV_SD=y
|
|
||||||
CONFIG_CHR_DEV_SG=y
|
|
||||||
CONFIG_INPUT_EVDEV=y
|
|
||||||
# CONFIG_INPUT_KEYBOARD is not set
|
|
||||||
# CONFIG_INPUT_MOUSE is not set
|
|
||||||
CONFIG_INPUT_TOUCHSCREEN=y
|
|
||||||
CONFIG_SERIAL_8250=y
|
|
||||||
CONFIG_SERIAL_8250_NR_UARTS=3
|
|
||||||
CONFIG_SERIAL_SAMSUNG=y
|
|
||||||
CONFIG_SERIAL_SAMSUNG_CONSOLE=y
|
|
||||||
CONFIG_HW_RANDOM=y
|
|
||||||
# CONFIG_HWMON is not set
|
|
||||||
# CONFIG_VGA_CONSOLE is not set
|
|
||||||
# CONFIG_HID_SUPPORT is not set
|
|
||||||
# CONFIG_USB_SUPPORT is not set
|
|
||||||
CONFIG_EXT2_FS=y
|
|
||||||
CONFIG_INOTIFY=y
|
|
||||||
CONFIG_MSDOS_FS=y
|
|
||||||
CONFIG_VFAT_FS=y
|
|
||||||
CONFIG_TMPFS=y
|
|
||||||
CONFIG_TMPFS_POSIX_ACL=y
|
|
||||||
CONFIG_CRAMFS=y
|
|
||||||
CONFIG_ROMFS_FS=y
|
|
||||||
CONFIG_PARTITION_ADVANCED=y
|
|
||||||
CONFIG_BSD_DISKLABEL=y
|
|
||||||
CONFIG_SOLARIS_X86_PARTITION=y
|
|
||||||
CONFIG_NLS_CODEPAGE_437=y
|
|
||||||
CONFIG_NLS_ASCII=y
|
|
||||||
CONFIG_NLS_ISO8859_1=y
|
|
||||||
CONFIG_MAGIC_SYSRQ=y
|
|
||||||
CONFIG_DEBUG_KERNEL=y
|
|
||||||
CONFIG_DEBUG_RT_MUTEXES=y
|
|
||||||
CONFIG_DEBUG_SPINLOCK=y
|
|
||||||
CONFIG_DEBUG_MUTEXES=y
|
|
||||||
CONFIG_DEBUG_SPINLOCK_SLEEP=y
|
|
||||||
CONFIG_DEBUG_INFO=y
|
|
||||||
# CONFIG_RCU_CPU_STALL_DETECTOR is not set
|
|
||||||
CONFIG_SYSCTL_SYSCALL_CHECK=y
|
|
||||||
# CONFIG_ARM_UNWIND is not set
|
|
||||||
CONFIG_DEBUG_USER=y
|
|
||||||
CONFIG_DEBUG_ERRORS=y
|
|
||||||
CONFIG_DEBUG_LL=y
|
|
||||||
CONFIG_DEBUG_S3C_UART=1
|
|
||||||
CONFIG_CRC_CCITT=y
|
|
@@ -1,106 +0,0 @@
|
|||||||
CONFIG_EXPERIMENTAL=y
|
|
||||||
# CONFIG_LOCALVERSION_AUTO is not set
|
|
||||||
# CONFIG_SWAP is not set
|
|
||||||
CONFIG_SYSVIPC=y
|
|
||||||
CONFIG_LOG_BUF_SHIFT=14
|
|
||||||
# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
|
|
||||||
CONFIG_SLAB=y
|
|
||||||
CONFIG_MODULES=y
|
|
||||||
CONFIG_MODULE_UNLOAD=y
|
|
||||||
# CONFIG_BLK_DEV_BSG is not set
|
|
||||||
# CONFIG_IOSCHED_DEADLINE is not set
|
|
||||||
# CONFIG_IOSCHED_CFQ is not set
|
|
||||||
CONFIG_ARCH_AT91=y
|
|
||||||
CONFIG_ARCH_AT91SAM9263=y
|
|
||||||
CONFIG_MACH_USB_A9263=y
|
|
||||||
CONFIG_AT91_SLOW_CLOCK=y
|
|
||||||
# CONFIG_ARM_THUMB is not set
|
|
||||||
CONFIG_AEABI=y
|
|
||||||
CONFIG_ZBOOT_ROM_TEXT=0x0
|
|
||||||
CONFIG_ZBOOT_ROM_BSS=0x0
|
|
||||||
CONFIG_CMDLINE="mem=64M console=ttyS0,115200"
|
|
||||||
CONFIG_FPE_NWFPE=y
|
|
||||||
CONFIG_PM=y
|
|
||||||
CONFIG_NET=y
|
|
||||||
CONFIG_PACKET=y
|
|
||||||
CONFIG_UNIX=y
|
|
||||||
CONFIG_INET=y
|
|
||||||
CONFIG_IP_MULTICAST=y
|
|
||||||
CONFIG_IP_ADVANCED_ROUTER=y
|
|
||||||
CONFIG_IP_ROUTE_VERBOSE=y
|
|
||||||
CONFIG_IP_PNP=y
|
|
||||||
CONFIG_IP_PNP_BOOTP=y
|
|
||||||
CONFIG_IP_PNP_RARP=y
|
|
||||||
CONFIG_IP_MROUTE=y
|
|
||||||
CONFIG_IP_PIMSM_V1=y
|
|
||||||
CONFIG_IP_PIMSM_V2=y
|
|
||||||
# CONFIG_INET_XFRM_MODE_TRANSPORT is not set
|
|
||||||
# CONFIG_INET_XFRM_MODE_TUNNEL is not set
|
|
||||||
# CONFIG_INET_XFRM_MODE_BEET is not set
|
|
||||||
# CONFIG_INET_LRO is not set
|
|
||||||
# CONFIG_INET_DIAG is not set
|
|
||||||
# CONFIG_IPV6 is not set
|
|
||||||
CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"
|
|
||||||
CONFIG_MTD=y
|
|
||||||
CONFIG_MTD_PARTITIONS=y
|
|
||||||
CONFIG_MTD_CMDLINE_PARTS=y
|
|
||||||
CONFIG_MTD_CHAR=y
|
|
||||||
CONFIG_MTD_BLOCK=y
|
|
||||||
CONFIG_MTD_DATAFLASH=y
|
|
||||||
CONFIG_MTD_NAND=y
|
|
||||||
CONFIG_MTD_NAND_ATMEL=y
|
|
||||||
CONFIG_MTD_NAND_ATMEL_ECC_SOFT=y
|
|
||||||
CONFIG_BLK_DEV_LOOP=y
|
|
||||||
# CONFIG_MISC_DEVICES is not set
|
|
||||||
CONFIG_SCSI=y
|
|
||||||
CONFIG_BLK_DEV_SD=y
|
|
||||||
CONFIG_SCSI_MULTI_LUN=y
|
|
||||||
CONFIG_NETDEVICES=y
|
|
||||||
CONFIG_NET_ETHERNET=y
|
|
||||||
CONFIG_MII=y
|
|
||||||
CONFIG_MACB=y
|
|
||||||
# CONFIG_INPUT_MOUSEDEV_PSAUX is not set
|
|
||||||
CONFIG_INPUT_EVDEV=y
|
|
||||||
CONFIG_INPUT_EVBUG=y
|
|
||||||
# CONFIG_KEYBOARD_ATKBD is not set
|
|
||||||
CONFIG_KEYBOARD_GPIO=y
|
|
||||||
# CONFIG_INPUT_MOUSE is not set
|
|
||||||
# CONFIG_SERIO is not set
|
|
||||||
CONFIG_SERIAL_ATMEL=y
|
|
||||||
CONFIG_SERIAL_ATMEL_CONSOLE=y
|
|
||||||
CONFIG_HW_RANDOM=y
|
|
||||||
CONFIG_SPI=y
|
|
||||||
CONFIG_SPI_ATMEL=y
|
|
||||||
# CONFIG_HWMON is not set
|
|
||||||
# CONFIG_VGA_CONSOLE is not set
|
|
||||||
# CONFIG_USB_HID is not set
|
|
||||||
CONFIG_USB=y
|
|
||||||
CONFIG_USB_DEVICEFS=y
|
|
||||||
CONFIG_USB_MON=y
|
|
||||||
CONFIG_USB_OHCI_HCD=y
|
|
||||||
CONFIG_USB_STORAGE=y
|
|
||||||
CONFIG_USB_GADGET=y
|
|
||||||
CONFIG_USB_ETH=m
|
|
||||||
CONFIG_NEW_LEDS=y
|
|
||||||
CONFIG_LEDS_CLASS=y
|
|
||||||
CONFIG_LEDS_GPIO=y
|
|
||||||
CONFIG_LEDS_TRIGGERS=y
|
|
||||||
CONFIG_LEDS_TRIGGER_HEARTBEAT=y
|
|
||||||
CONFIG_EXT2_FS=y
|
|
||||||
CONFIG_INOTIFY=y
|
|
||||||
CONFIG_FUSE_FS=m
|
|
||||||
CONFIG_VFAT_FS=y
|
|
||||||
CONFIG_TMPFS=y
|
|
||||||
CONFIG_JFFS2_FS=y
|
|
||||||
CONFIG_NFS_FS=y
|
|
||||||
CONFIG_NFS_V3=y
|
|
||||||
CONFIG_NFS_V3_ACL=y
|
|
||||||
CONFIG_NFS_V4=y
|
|
||||||
CONFIG_ROOT_NFS=y
|
|
||||||
CONFIG_NLS_CODEPAGE_437=y
|
|
||||||
CONFIG_NLS_CODEPAGE_850=y
|
|
||||||
CONFIG_NLS_ISO8859_1=y
|
|
||||||
CONFIG_DEBUG_KERNEL=y
|
|
||||||
CONFIG_DEBUG_USER=y
|
|
||||||
CONFIG_DEBUG_LL=y
|
|
||||||
# CONFIG_CRYPTO_HW is not set
|
|
@@ -142,7 +142,7 @@ CONFIG_USB_GADGETFS=m
|
|||||||
CONFIG_USB_FILE_STORAGE=m
|
CONFIG_USB_FILE_STORAGE=m
|
||||||
CONFIG_USB_G_SERIAL=m
|
CONFIG_USB_G_SERIAL=m
|
||||||
CONFIG_USB_G_PRINTER=m
|
CONFIG_USB_G_PRINTER=m
|
||||||
CONFIG_RTC_CLASS=m
|
CONFIG_RTC_CLASS=y
|
||||||
CONFIG_RTC_DRV_DS1307=m
|
CONFIG_RTC_DRV_DS1307=m
|
||||||
CONFIG_RTC_DRV_SA1100=m
|
CONFIG_RTC_DRV_SA1100=m
|
||||||
CONFIG_EXT2_FS=m
|
CONFIG_EXT2_FS=m
|
||||||
|
@@ -73,7 +73,7 @@ CONFIG_SENSORS_MAX6650=m
|
|||||||
# CONFIG_VGA_CONSOLE is not set
|
# CONFIG_VGA_CONSOLE is not set
|
||||||
# CONFIG_HID_SUPPORT is not set
|
# CONFIG_HID_SUPPORT is not set
|
||||||
# CONFIG_USB_SUPPORT is not set
|
# CONFIG_USB_SUPPORT is not set
|
||||||
CONFIG_RTC_CLASS=m
|
CONFIG_RTC_CLASS=y
|
||||||
CONFIG_RTC_DRV_SA1100=m
|
CONFIG_RTC_DRV_SA1100=m
|
||||||
CONFIG_DMADEVICES=y
|
CONFIG_DMADEVICES=y
|
||||||
# CONFIG_DNOTIFY is not set
|
# CONFIG_DNOTIFY is not set
|
||||||
|
@@ -158,7 +158,7 @@ CONFIG_LEDS_TRIGGER_HEARTBEAT=m
|
|||||||
CONFIG_LEDS_TRIGGER_BACKLIGHT=m
|
CONFIG_LEDS_TRIGGER_BACKLIGHT=m
|
||||||
CONFIG_LEDS_TRIGGER_GPIO=m
|
CONFIG_LEDS_TRIGGER_GPIO=m
|
||||||
CONFIG_LEDS_TRIGGER_DEFAULT_ON=m
|
CONFIG_LEDS_TRIGGER_DEFAULT_ON=m
|
||||||
CONFIG_RTC_CLASS=m
|
CONFIG_RTC_CLASS=y
|
||||||
CONFIG_RTC_DRV_ISL1208=m
|
CONFIG_RTC_DRV_ISL1208=m
|
||||||
CONFIG_RTC_DRV_PXA=m
|
CONFIG_RTC_DRV_PXA=m
|
||||||
CONFIG_EXT2_FS=y
|
CONFIG_EXT2_FS=y
|
||||||
|
@@ -13,6 +13,9 @@
|
|||||||
* Do not include any C declarations in this file - it is included by
|
* Do not include any C declarations in this file - it is included by
|
||||||
* assembler source.
|
* assembler source.
|
||||||
*/
|
*/
|
||||||
|
#ifndef __ASM_ASSEMBLER_H__
|
||||||
|
#define __ASM_ASSEMBLER_H__
|
||||||
|
|
||||||
#ifndef __ASSEMBLY__
|
#ifndef __ASSEMBLY__
|
||||||
#error "Only include this from assembly code"
|
#error "Only include this from assembly code"
|
||||||
#endif
|
#endif
|
||||||
@@ -290,3 +293,4 @@
|
|||||||
.macro ldrusr, reg, ptr, inc, cond=al, rept=1, abort=9001f
|
.macro ldrusr, reg, ptr, inc, cond=al, rept=1, abort=9001f
|
||||||
usracc ldr, \reg, \ptr, \inc, \cond, \rept, \abort
|
usracc ldr, \reg, \ptr, \inc, \cond, \rept, \abort
|
||||||
.endm
|
.endm
|
||||||
|
#endif /* __ASM_ASSEMBLER_H__ */
|
||||||
|
@@ -1,3 +1,5 @@
|
|||||||
|
#include <asm/assembler.h>
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Interrupt handling. Preserves r7, r8, r9
|
* Interrupt handling. Preserves r7, r8, r9
|
||||||
*/
|
*/
|
||||||
|
@@ -4,6 +4,13 @@
|
|||||||
* Support for FIQ on ARM architectures.
|
* Support for FIQ on ARM architectures.
|
||||||
* Written by Philip Blundell <philb@gnu.org>, 1998
|
* Written by Philip Blundell <philb@gnu.org>, 1998
|
||||||
* Re-written by Russell King
|
* Re-written by Russell King
|
||||||
|
*
|
||||||
|
* NOTE: The FIQ mode registers are not magically preserved across
|
||||||
|
* suspend/resume.
|
||||||
|
*
|
||||||
|
* Drivers which require these registers to be preserved across power
|
||||||
|
* management operations must implement appropriate suspend/resume handlers to
|
||||||
|
* save and restore them.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef __ASM_FIQ_H
|
#ifndef __ASM_FIQ_H
|
||||||
@@ -29,9 +36,21 @@ struct fiq_handler {
|
|||||||
extern int claim_fiq(struct fiq_handler *f);
|
extern int claim_fiq(struct fiq_handler *f);
|
||||||
extern void release_fiq(struct fiq_handler *f);
|
extern void release_fiq(struct fiq_handler *f);
|
||||||
extern void set_fiq_handler(void *start, unsigned int length);
|
extern void set_fiq_handler(void *start, unsigned int length);
|
||||||
extern void set_fiq_regs(struct pt_regs *regs);
|
|
||||||
extern void get_fiq_regs(struct pt_regs *regs);
|
|
||||||
extern void enable_fiq(int fiq);
|
extern void enable_fiq(int fiq);
|
||||||
extern void disable_fiq(int fiq);
|
extern void disable_fiq(int fiq);
|
||||||
|
|
||||||
|
/* helpers defined in fiqasm.S: */
|
||||||
|
extern void __set_fiq_regs(unsigned long const *regs);
|
||||||
|
extern void __get_fiq_regs(unsigned long *regs);
|
||||||
|
|
||||||
|
static inline void set_fiq_regs(struct pt_regs const *regs)
|
||||||
|
{
|
||||||
|
__set_fiq_regs(®s->ARM_r8);
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline void get_fiq_regs(struct pt_regs *regs)
|
||||||
|
{
|
||||||
|
__get_fiq_regs(®s->ARM_r8);
|
||||||
|
}
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
@@ -18,6 +18,8 @@ struct machine_desc {
|
|||||||
unsigned int nr; /* architecture number */
|
unsigned int nr; /* architecture number */
|
||||||
const char *name; /* architecture name */
|
const char *name; /* architecture name */
|
||||||
unsigned long boot_params; /* tagged list */
|
unsigned long boot_params; /* tagged list */
|
||||||
|
const char **dt_compat; /* array of device tree
|
||||||
|
* 'compatible' strings */
|
||||||
|
|
||||||
unsigned int nr_irqs; /* number of IRQs */
|
unsigned int nr_irqs; /* number of IRQs */
|
||||||
|
|
||||||
@@ -47,6 +49,13 @@ struct machine_desc {
|
|||||||
*/
|
*/
|
||||||
extern struct machine_desc *machine_desc;
|
extern struct machine_desc *machine_desc;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Machine type table - also only accessible during boot
|
||||||
|
*/
|
||||||
|
extern struct machine_desc __arch_info_begin[], __arch_info_end[];
|
||||||
|
#define for_each_machine_desc(p) \
|
||||||
|
for (p = __arch_info_begin; p < __arch_info_end; p++)
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Set of macros to define architecture features. This is built into
|
* Set of macros to define architecture features. This is built into
|
||||||
* a table by the linker.
|
* a table by the linker.
|
||||||
|
@@ -197,7 +197,7 @@ typedef unsigned long pgprot_t;
|
|||||||
|
|
||||||
typedef struct page *pgtable_t;
|
typedef struct page *pgtable_t;
|
||||||
|
|
||||||
#ifndef CONFIG_SPARSEMEM
|
#ifdef CONFIG_HAVE_ARCH_PFN_VALID
|
||||||
extern int pfn_valid(unsigned long);
|
extern int pfn_valid(unsigned long);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
37
arch/arm/include/asm/prom.h
Normal file
37
arch/arm/include/asm/prom.h
Normal file
@@ -0,0 +1,37 @@
|
|||||||
|
/*
|
||||||
|
* arch/arm/include/asm/prom.h
|
||||||
|
*
|
||||||
|
* Copyright (C) 2009 Canonical Ltd. <jeremy.kerr@canonical.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.
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
#ifndef __ASMARM_PROM_H
|
||||||
|
#define __ASMARM_PROM_H
|
||||||
|
|
||||||
|
#ifdef CONFIG_OF
|
||||||
|
|
||||||
|
#include <asm/setup.h>
|
||||||
|
#include <asm/irq.h>
|
||||||
|
|
||||||
|
static inline void irq_dispose_mapping(unsigned int virq)
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
extern struct machine_desc *setup_machine_fdt(unsigned int dt_phys);
|
||||||
|
extern void arm_dt_memblock_reserve(void);
|
||||||
|
|
||||||
|
#else /* CONFIG_OF */
|
||||||
|
|
||||||
|
static inline struct machine_desc *setup_machine_fdt(unsigned int dt_phys)
|
||||||
|
{
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline void arm_dt_memblock_reserve(void) { }
|
||||||
|
|
||||||
|
#endif /* CONFIG_OF */
|
||||||
|
#endif /* ASMARM_PROM_H */
|
@@ -217,6 +217,10 @@ extern struct meminfo meminfo;
|
|||||||
#define bank_phys_end(bank) ((bank)->start + (bank)->size)
|
#define bank_phys_end(bank) ((bank)->start + (bank)->size)
|
||||||
#define bank_phys_size(bank) (bank)->size
|
#define bank_phys_size(bank) (bank)->size
|
||||||
|
|
||||||
|
extern int arm_add_memory(phys_addr_t start, unsigned long size);
|
||||||
|
extern void early_print(const char *str, ...);
|
||||||
|
extern void dump_machine_table(void);
|
||||||
|
|
||||||
#endif /* __KERNEL__ */
|
#endif /* __KERNEL__ */
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
@@ -70,6 +70,7 @@ extern void platform_smp_prepare_cpus(unsigned int);
|
|||||||
*/
|
*/
|
||||||
struct secondary_data {
|
struct secondary_data {
|
||||||
unsigned long pgdir;
|
unsigned long pgdir;
|
||||||
|
unsigned long swapper_pg_dir;
|
||||||
void *stack;
|
void *stack;
|
||||||
};
|
};
|
||||||
extern struct secondary_data secondary_data;
|
extern struct secondary_data secondary_data;
|
||||||
|
@@ -400,6 +400,8 @@
|
|||||||
#define __NR_open_by_handle_at (__NR_SYSCALL_BASE+371)
|
#define __NR_open_by_handle_at (__NR_SYSCALL_BASE+371)
|
||||||
#define __NR_clock_adjtime (__NR_SYSCALL_BASE+372)
|
#define __NR_clock_adjtime (__NR_SYSCALL_BASE+372)
|
||||||
#define __NR_syncfs (__NR_SYSCALL_BASE+373)
|
#define __NR_syncfs (__NR_SYSCALL_BASE+373)
|
||||||
|
#define __NR_sendmmsg (__NR_SYSCALL_BASE+374)
|
||||||
|
#define __NR_setns (__NR_SYSCALL_BASE+375)
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* The following SWIs are ARM private.
|
* The following SWIs are ARM private.
|
||||||
|
@@ -24,7 +24,7 @@ obj-$(CONFIG_OC_ETM) += etm.o
|
|||||||
|
|
||||||
obj-$(CONFIG_ISA_DMA_API) += dma.o
|
obj-$(CONFIG_ISA_DMA_API) += dma.o
|
||||||
obj-$(CONFIG_ARCH_ACORN) += ecard.o
|
obj-$(CONFIG_ARCH_ACORN) += ecard.o
|
||||||
obj-$(CONFIG_FIQ) += fiq.o
|
obj-$(CONFIG_FIQ) += fiq.o fiqasm.o
|
||||||
obj-$(CONFIG_MODULES) += armksyms.o module.o
|
obj-$(CONFIG_MODULES) += armksyms.o module.o
|
||||||
obj-$(CONFIG_ARTHUR) += arthur.o
|
obj-$(CONFIG_ARTHUR) += arthur.o
|
||||||
obj-$(CONFIG_ISA_DMA) += dma-isa.o
|
obj-$(CONFIG_ISA_DMA) += dma-isa.o
|
||||||
@@ -44,6 +44,7 @@ obj-$(CONFIG_ARM_THUMBEE) += thumbee.o
|
|||||||
obj-$(CONFIG_KGDB) += kgdb.o
|
obj-$(CONFIG_KGDB) += kgdb.o
|
||||||
obj-$(CONFIG_ARM_UNWIND) += unwind.o
|
obj-$(CONFIG_ARM_UNWIND) += unwind.o
|
||||||
obj-$(CONFIG_HAVE_TCM) += tcm.o
|
obj-$(CONFIG_HAVE_TCM) += tcm.o
|
||||||
|
obj-$(CONFIG_OF) += devtree.o
|
||||||
obj-$(CONFIG_CRASH_DUMP) += crash_dump.o
|
obj-$(CONFIG_CRASH_DUMP) += crash_dump.o
|
||||||
obj-$(CONFIG_SWP_EMULATE) += swp_emulate.o
|
obj-$(CONFIG_SWP_EMULATE) += swp_emulate.o
|
||||||
CFLAGS_swp_emulate.o := -Wa,-march=armv7-a
|
CFLAGS_swp_emulate.o := -Wa,-march=armv7-a
|
||||||
|
@@ -383,6 +383,8 @@
|
|||||||
CALL(sys_open_by_handle_at)
|
CALL(sys_open_by_handle_at)
|
||||||
CALL(sys_clock_adjtime)
|
CALL(sys_clock_adjtime)
|
||||||
CALL(sys_syncfs)
|
CALL(sys_syncfs)
|
||||||
|
CALL(sys_sendmmsg)
|
||||||
|
/* 375 */ CALL(sys_setns)
|
||||||
#ifndef syscalls_counted
|
#ifndef syscalls_counted
|
||||||
.equ syscalls_padding, ((NR_syscalls + 3) & ~3) - NR_syscalls
|
.equ syscalls_padding, ((NR_syscalls + 3) & ~3) - NR_syscalls
|
||||||
#define syscalls_counted
|
#define syscalls_counted
|
||||||
|
148
arch/arm/kernel/devtree.c
Normal file
148
arch/arm/kernel/devtree.c
Normal file
@@ -0,0 +1,148 @@
|
|||||||
|
/*
|
||||||
|
* linux/arch/arm/kernel/devtree.c
|
||||||
|
*
|
||||||
|
* Copyright (C) 2009 Canonical Ltd. <jeremy.kerr@canonical.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.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include <linux/init.h>
|
||||||
|
#include <linux/module.h>
|
||||||
|
#include <linux/errno.h>
|
||||||
|
#include <linux/types.h>
|
||||||
|
#include <linux/bootmem.h>
|
||||||
|
#include <linux/memblock.h>
|
||||||
|
#include <linux/of.h>
|
||||||
|
#include <linux/of_fdt.h>
|
||||||
|
#include <linux/of_irq.h>
|
||||||
|
#include <linux/of_platform.h>
|
||||||
|
|
||||||
|
#include <asm/setup.h>
|
||||||
|
#include <asm/page.h>
|
||||||
|
#include <asm/mach/arch.h>
|
||||||
|
#include <asm/mach-types.h>
|
||||||
|
|
||||||
|
void __init early_init_dt_add_memory_arch(u64 base, u64 size)
|
||||||
|
{
|
||||||
|
arm_add_memory(base, size);
|
||||||
|
}
|
||||||
|
|
||||||
|
void * __init early_init_dt_alloc_memory_arch(u64 size, u64 align)
|
||||||
|
{
|
||||||
|
return alloc_bootmem_align(size, align);
|
||||||
|
}
|
||||||
|
|
||||||
|
void __init arm_dt_memblock_reserve(void)
|
||||||
|
{
|
||||||
|
u64 *reserve_map, base, size;
|
||||||
|
|
||||||
|
if (!initial_boot_params)
|
||||||
|
return;
|
||||||
|
|
||||||
|
/* Reserve the dtb region */
|
||||||
|
memblock_reserve(virt_to_phys(initial_boot_params),
|
||||||
|
be32_to_cpu(initial_boot_params->totalsize));
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Process the reserve map. This will probably overlap the initrd
|
||||||
|
* and dtb locations which are already reserved, but overlaping
|
||||||
|
* doesn't hurt anything
|
||||||
|
*/
|
||||||
|
reserve_map = ((void*)initial_boot_params) +
|
||||||
|
be32_to_cpu(initial_boot_params->off_mem_rsvmap);
|
||||||
|
while (1) {
|
||||||
|
base = be64_to_cpup(reserve_map++);
|
||||||
|
size = be64_to_cpup(reserve_map++);
|
||||||
|
if (!size)
|
||||||
|
break;
|
||||||
|
memblock_reserve(base, size);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* setup_machine_fdt - Machine setup when an dtb was passed to the kernel
|
||||||
|
* @dt_phys: physical address of dt blob
|
||||||
|
*
|
||||||
|
* If a dtb was passed to the kernel in r2, then use it to choose the
|
||||||
|
* correct machine_desc and to setup the system.
|
||||||
|
*/
|
||||||
|
struct machine_desc * __init setup_machine_fdt(unsigned int dt_phys)
|
||||||
|
{
|
||||||
|
struct boot_param_header *devtree;
|
||||||
|
struct machine_desc *mdesc, *mdesc_best = NULL;
|
||||||
|
unsigned int score, mdesc_score = ~1;
|
||||||
|
unsigned long dt_root;
|
||||||
|
const char *model;
|
||||||
|
|
||||||
|
if (!dt_phys)
|
||||||
|
return NULL;
|
||||||
|
|
||||||
|
devtree = phys_to_virt(dt_phys);
|
||||||
|
|
||||||
|
/* check device tree validity */
|
||||||
|
if (be32_to_cpu(devtree->magic) != OF_DT_HEADER)
|
||||||
|
return NULL;
|
||||||
|
|
||||||
|
/* Search the mdescs for the 'best' compatible value match */
|
||||||
|
initial_boot_params = devtree;
|
||||||
|
dt_root = of_get_flat_dt_root();
|
||||||
|
for_each_machine_desc(mdesc) {
|
||||||
|
score = of_flat_dt_match(dt_root, mdesc->dt_compat);
|
||||||
|
if (score > 0 && score < mdesc_score) {
|
||||||
|
mdesc_best = mdesc;
|
||||||
|
mdesc_score = score;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (!mdesc_best) {
|
||||||
|
const char *prop;
|
||||||
|
long size;
|
||||||
|
|
||||||
|
early_print("\nError: unrecognized/unsupported "
|
||||||
|
"device tree compatible list:\n[ ");
|
||||||
|
|
||||||
|
prop = of_get_flat_dt_prop(dt_root, "compatible", &size);
|
||||||
|
while (size > 0) {
|
||||||
|
early_print("'%s' ", prop);
|
||||||
|
size -= strlen(prop) + 1;
|
||||||
|
prop += strlen(prop) + 1;
|
||||||
|
}
|
||||||
|
early_print("]\n\n");
|
||||||
|
|
||||||
|
dump_machine_table(); /* does not return */
|
||||||
|
}
|
||||||
|
|
||||||
|
model = of_get_flat_dt_prop(dt_root, "model", NULL);
|
||||||
|
if (!model)
|
||||||
|
model = of_get_flat_dt_prop(dt_root, "compatible", NULL);
|
||||||
|
if (!model)
|
||||||
|
model = "<unknown>";
|
||||||
|
pr_info("Machine: %s, model: %s\n", mdesc_best->name, model);
|
||||||
|
|
||||||
|
/* Retrieve various information from the /chosen node */
|
||||||
|
of_scan_flat_dt(early_init_dt_scan_chosen, boot_command_line);
|
||||||
|
/* Initialize {size,address}-cells info */
|
||||||
|
of_scan_flat_dt(early_init_dt_scan_root, NULL);
|
||||||
|
/* Setup memory, calling early_init_dt_add_memory_arch */
|
||||||
|
of_scan_flat_dt(early_init_dt_scan_memory, NULL);
|
||||||
|
|
||||||
|
/* Change machine number to match the mdesc we're using */
|
||||||
|
__machine_arch_type = mdesc_best->nr;
|
||||||
|
|
||||||
|
return mdesc_best;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* irq_create_of_mapping - Hook to resolve OF irq specifier into a Linux irq#
|
||||||
|
*
|
||||||
|
* Currently the mapping mechanism is trivial; simple flat hwirq numbers are
|
||||||
|
* mapped 1:1 onto Linux irq numbers. Cascaded irq controllers are not
|
||||||
|
* supported.
|
||||||
|
*/
|
||||||
|
unsigned int irq_create_of_mapping(struct device_node *controller,
|
||||||
|
const u32 *intspec, unsigned int intsize)
|
||||||
|
{
|
||||||
|
return intspec[0];
|
||||||
|
}
|
||||||
|
EXPORT_SYMBOL_GPL(irq_create_of_mapping);
|
@@ -435,6 +435,10 @@ __irq_usr:
|
|||||||
usr_entry
|
usr_entry
|
||||||
kuser_cmpxchg_check
|
kuser_cmpxchg_check
|
||||||
|
|
||||||
|
#ifdef CONFIG_IRQSOFF_TRACER
|
||||||
|
bl trace_hardirqs_off
|
||||||
|
#endif
|
||||||
|
|
||||||
get_thread_info tsk
|
get_thread_info tsk
|
||||||
#ifdef CONFIG_PREEMPT
|
#ifdef CONFIG_PREEMPT
|
||||||
ldr r8, [tsk, #TI_PREEMPT] @ get preempt count
|
ldr r8, [tsk, #TI_PREEMPT] @ get preempt count
|
||||||
@@ -453,7 +457,7 @@ __irq_usr:
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
mov why, #0
|
mov why, #0
|
||||||
b ret_to_user
|
b ret_to_user_from_irq
|
||||||
UNWIND(.fnend )
|
UNWIND(.fnend )
|
||||||
ENDPROC(__irq_usr)
|
ENDPROC(__irq_usr)
|
||||||
|
|
||||||
|
@@ -64,6 +64,7 @@ work_resched:
|
|||||||
ENTRY(ret_to_user)
|
ENTRY(ret_to_user)
|
||||||
ret_slow_syscall:
|
ret_slow_syscall:
|
||||||
disable_irq @ disable interrupts
|
disable_irq @ disable interrupts
|
||||||
|
ENTRY(ret_to_user_from_irq)
|
||||||
ldr r1, [tsk, #TI_FLAGS]
|
ldr r1, [tsk, #TI_FLAGS]
|
||||||
tst r1, #_TIF_WORK_MASK
|
tst r1, #_TIF_WORK_MASK
|
||||||
bne work_pending
|
bne work_pending
|
||||||
@@ -75,6 +76,7 @@ no_work_pending:
|
|||||||
arch_ret_to_user r1, lr
|
arch_ret_to_user r1, lr
|
||||||
|
|
||||||
restore_user_regs fast = 0, offset = 0
|
restore_user_regs fast = 0, offset = 0
|
||||||
|
ENDPROC(ret_to_user_from_irq)
|
||||||
ENDPROC(ret_to_user)
|
ENDPROC(ret_to_user)
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@@ -89,47 +89,6 @@ void set_fiq_handler(void *start, unsigned int length)
|
|||||||
flush_icache_range(0x1c, 0x1c + length);
|
flush_icache_range(0x1c, 0x1c + length);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
|
||||||
* Taking an interrupt in FIQ mode is death, so both these functions
|
|
||||||
* disable irqs for the duration. Note - these functions are almost
|
|
||||||
* entirely coded in assembly.
|
|
||||||
*/
|
|
||||||
void __naked set_fiq_regs(struct pt_regs *regs)
|
|
||||||
{
|
|
||||||
register unsigned long tmp;
|
|
||||||
asm volatile (
|
|
||||||
"mov ip, sp\n\
|
|
||||||
stmfd sp!, {fp, ip, lr, pc}\n\
|
|
||||||
sub fp, ip, #4\n\
|
|
||||||
mrs %0, cpsr\n\
|
|
||||||
msr cpsr_c, %2 @ select FIQ mode\n\
|
|
||||||
mov r0, r0\n\
|
|
||||||
ldmia %1, {r8 - r14}\n\
|
|
||||||
msr cpsr_c, %0 @ return to SVC mode\n\
|
|
||||||
mov r0, r0\n\
|
|
||||||
ldmfd sp, {fp, sp, pc}"
|
|
||||||
: "=&r" (tmp)
|
|
||||||
: "r" (®s->ARM_r8), "I" (PSR_I_BIT | PSR_F_BIT | FIQ_MODE));
|
|
||||||
}
|
|
||||||
|
|
||||||
void __naked get_fiq_regs(struct pt_regs *regs)
|
|
||||||
{
|
|
||||||
register unsigned long tmp;
|
|
||||||
asm volatile (
|
|
||||||
"mov ip, sp\n\
|
|
||||||
stmfd sp!, {fp, ip, lr, pc}\n\
|
|
||||||
sub fp, ip, #4\n\
|
|
||||||
mrs %0, cpsr\n\
|
|
||||||
msr cpsr_c, %2 @ select FIQ mode\n\
|
|
||||||
mov r0, r0\n\
|
|
||||||
stmia %1, {r8 - r14}\n\
|
|
||||||
msr cpsr_c, %0 @ return to SVC mode\n\
|
|
||||||
mov r0, r0\n\
|
|
||||||
ldmfd sp, {fp, sp, pc}"
|
|
||||||
: "=&r" (tmp)
|
|
||||||
: "r" (®s->ARM_r8), "I" (PSR_I_BIT | PSR_F_BIT | FIQ_MODE));
|
|
||||||
}
|
|
||||||
|
|
||||||
int claim_fiq(struct fiq_handler *f)
|
int claim_fiq(struct fiq_handler *f)
|
||||||
{
|
{
|
||||||
int ret = 0;
|
int ret = 0;
|
||||||
@@ -174,8 +133,8 @@ void disable_fiq(int fiq)
|
|||||||
}
|
}
|
||||||
|
|
||||||
EXPORT_SYMBOL(set_fiq_handler);
|
EXPORT_SYMBOL(set_fiq_handler);
|
||||||
EXPORT_SYMBOL(set_fiq_regs);
|
EXPORT_SYMBOL(__set_fiq_regs); /* defined in fiqasm.S */
|
||||||
EXPORT_SYMBOL(get_fiq_regs);
|
EXPORT_SYMBOL(__get_fiq_regs); /* defined in fiqasm.S */
|
||||||
EXPORT_SYMBOL(claim_fiq);
|
EXPORT_SYMBOL(claim_fiq);
|
||||||
EXPORT_SYMBOL(release_fiq);
|
EXPORT_SYMBOL(release_fiq);
|
||||||
EXPORT_SYMBOL(enable_fiq);
|
EXPORT_SYMBOL(enable_fiq);
|
||||||
|
49
arch/arm/kernel/fiqasm.S
Normal file
49
arch/arm/kernel/fiqasm.S
Normal file
@@ -0,0 +1,49 @@
|
|||||||
|
/*
|
||||||
|
* linux/arch/arm/kernel/fiqasm.S
|
||||||
|
*
|
||||||
|
* Derived from code originally in linux/arch/arm/kernel/fiq.c:
|
||||||
|
*
|
||||||
|
* Copyright (C) 1998 Russell King
|
||||||
|
* Copyright (C) 1998, 1999 Phil Blundell
|
||||||
|
* Copyright (C) 2011, Linaro Limited
|
||||||
|
*
|
||||||
|
* FIQ support written by Philip Blundell <philb@gnu.org>, 1998.
|
||||||
|
*
|
||||||
|
* FIQ support re-written by Russell King to be more generic
|
||||||
|
*
|
||||||
|
* v7/Thumb-2 compatibility modifications by Linaro Limited, 2011.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include <linux/linkage.h>
|
||||||
|
#include <asm/assembler.h>
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Taking an interrupt in FIQ mode is death, so both these functions
|
||||||
|
* disable irqs for the duration.
|
||||||
|
*/
|
||||||
|
|
||||||
|
ENTRY(__set_fiq_regs)
|
||||||
|
mov r2, #PSR_I_BIT | PSR_F_BIT | FIQ_MODE
|
||||||
|
mrs r1, cpsr
|
||||||
|
msr cpsr_c, r2 @ select FIQ mode
|
||||||
|
mov r0, r0 @ avoid hazard prior to ARMv4
|
||||||
|
ldmia r0!, {r8 - r12}
|
||||||
|
ldr sp, [r0], #4
|
||||||
|
ldr lr, [r0]
|
||||||
|
msr cpsr_c, r1 @ return to SVC mode
|
||||||
|
mov r0, r0 @ avoid hazard prior to ARMv4
|
||||||
|
mov pc, lr
|
||||||
|
ENDPROC(__set_fiq_regs)
|
||||||
|
|
||||||
|
ENTRY(__get_fiq_regs)
|
||||||
|
mov r2, #PSR_I_BIT | PSR_F_BIT | FIQ_MODE
|
||||||
|
mrs r1, cpsr
|
||||||
|
msr cpsr_c, r2 @ select FIQ mode
|
||||||
|
mov r0, r0 @ avoid hazard prior to ARMv4
|
||||||
|
stmia r0!, {r8 - r12}
|
||||||
|
str sp, [r0], #4
|
||||||
|
str lr, [r0]
|
||||||
|
msr cpsr_c, r1 @ return to SVC mode
|
||||||
|
mov r0, r0 @ avoid hazard prior to ARMv4
|
||||||
|
mov pc, lr
|
||||||
|
ENDPROC(__get_fiq_regs)
|
@@ -15,6 +15,12 @@
|
|||||||
#define ATAG_CORE_SIZE ((2*4 + 3*4) >> 2)
|
#define ATAG_CORE_SIZE ((2*4 + 3*4) >> 2)
|
||||||
#define ATAG_CORE_SIZE_EMPTY ((2*4) >> 2)
|
#define ATAG_CORE_SIZE_EMPTY ((2*4) >> 2)
|
||||||
|
|
||||||
|
#ifdef CONFIG_CPU_BIG_ENDIAN
|
||||||
|
#define OF_DT_MAGIC 0xd00dfeed
|
||||||
|
#else
|
||||||
|
#define OF_DT_MAGIC 0xedfe0dd0 /* 0xd00dfeed in big-endian */
|
||||||
|
#endif
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Exception handling. Something went wrong and we can't proceed. We
|
* Exception handling. Something went wrong and we can't proceed. We
|
||||||
* ought to tell the user, but since we don't have any guarantee that
|
* ought to tell the user, but since we don't have any guarantee that
|
||||||
@@ -28,20 +34,26 @@
|
|||||||
|
|
||||||
/* Determine validity of the r2 atags pointer. The heuristic requires
|
/* Determine validity of the r2 atags pointer. The heuristic requires
|
||||||
* that the pointer be aligned, in the first 16k of physical RAM and
|
* that the pointer be aligned, in the first 16k of physical RAM and
|
||||||
* that the ATAG_CORE marker is first and present. Future revisions
|
* that the ATAG_CORE marker is first and present. If CONFIG_OF_FLATTREE
|
||||||
|
* is selected, then it will also accept a dtb pointer. Future revisions
|
||||||
* of this function may be more lenient with the physical address and
|
* of this function may be more lenient with the physical address and
|
||||||
* may also be able to move the ATAGS block if necessary.
|
* may also be able to move the ATAGS block if necessary.
|
||||||
*
|
*
|
||||||
* Returns:
|
* Returns:
|
||||||
* r2 either valid atags pointer, or zero
|
* r2 either valid atags pointer, valid dtb pointer, or zero
|
||||||
* r5, r6 corrupted
|
* r5, r6 corrupted
|
||||||
*/
|
*/
|
||||||
__vet_atags:
|
__vet_atags:
|
||||||
tst r2, #0x3 @ aligned?
|
tst r2, #0x3 @ aligned?
|
||||||
bne 1f
|
bne 1f
|
||||||
|
|
||||||
ldr r5, [r2, #0] @ is first tag ATAG_CORE?
|
ldr r5, [r2, #0]
|
||||||
cmp r5, #ATAG_CORE_SIZE
|
#ifdef CONFIG_OF_FLATTREE
|
||||||
|
ldr r6, =OF_DT_MAGIC @ is it a DTB?
|
||||||
|
cmp r5, r6
|
||||||
|
beq 2f
|
||||||
|
#endif
|
||||||
|
cmp r5, #ATAG_CORE_SIZE @ is first tag ATAG_CORE?
|
||||||
cmpne r5, #ATAG_CORE_SIZE_EMPTY
|
cmpne r5, #ATAG_CORE_SIZE_EMPTY
|
||||||
bne 1f
|
bne 1f
|
||||||
ldr r5, [r2, #4]
|
ldr r5, [r2, #4]
|
||||||
@@ -49,7 +61,7 @@ __vet_atags:
|
|||||||
cmp r5, r6
|
cmp r5, r6
|
||||||
bne 1f
|
bne 1f
|
||||||
|
|
||||||
mov pc, lr @ atag pointer is ok
|
2: mov pc, lr @ atag/dtb pointer is ok
|
||||||
|
|
||||||
1: mov r2, #0
|
1: mov r2, #0
|
||||||
mov pc, lr
|
mov pc, lr
|
||||||
@@ -61,7 +73,7 @@ ENDPROC(__vet_atags)
|
|||||||
*
|
*
|
||||||
* r0 = cp#15 control register
|
* r0 = cp#15 control register
|
||||||
* r1 = machine ID
|
* r1 = machine ID
|
||||||
* r2 = atags pointer
|
* r2 = atags/dtb pointer
|
||||||
* r9 = processor ID
|
* r9 = processor ID
|
||||||
*/
|
*/
|
||||||
__INIT
|
__INIT
|
||||||
|
@@ -59,7 +59,7 @@
|
|||||||
*
|
*
|
||||||
* This is normally called from the decompressor code. The requirements
|
* This is normally called from the decompressor code. The requirements
|
||||||
* are: MMU = off, D-cache = off, I-cache = dont care, r0 = 0,
|
* are: MMU = off, D-cache = off, I-cache = dont care, r0 = 0,
|
||||||
* r1 = machine nr, r2 = atags pointer.
|
* r1 = machine nr, r2 = atags or dtb pointer.
|
||||||
*
|
*
|
||||||
* This code is mostly position independent, so if you link the kernel at
|
* This code is mostly position independent, so if you link the kernel at
|
||||||
* 0xc0008000, you call this at __pa(0xc0008000).
|
* 0xc0008000, you call this at __pa(0xc0008000).
|
||||||
@@ -91,7 +91,7 @@ ENTRY(stext)
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* r1 = machine no, r2 = atags,
|
* r1 = machine no, r2 = atags or dtb,
|
||||||
* r8 = phys_offset, r9 = cpuid, r10 = procinfo
|
* r8 = phys_offset, r9 = cpuid, r10 = procinfo
|
||||||
*/
|
*/
|
||||||
bl __vet_atags
|
bl __vet_atags
|
||||||
@@ -113,6 +113,7 @@ ENTRY(stext)
|
|||||||
ldr r13, =__mmap_switched @ address to jump to after
|
ldr r13, =__mmap_switched @ address to jump to after
|
||||||
@ mmu has been enabled
|
@ mmu has been enabled
|
||||||
adr lr, BSYM(1f) @ return (PIC) address
|
adr lr, BSYM(1f) @ return (PIC) address
|
||||||
|
mov r8, r4 @ set TTBR1 to swapper_pg_dir
|
||||||
ARM( add pc, r10, #PROCINFO_INITFUNC )
|
ARM( add pc, r10, #PROCINFO_INITFUNC )
|
||||||
THUMB( add r12, r10, #PROCINFO_INITFUNC )
|
THUMB( add r12, r10, #PROCINFO_INITFUNC )
|
||||||
THUMB( mov pc, r12 )
|
THUMB( mov pc, r12 )
|
||||||
@@ -302,8 +303,10 @@ ENTRY(secondary_startup)
|
|||||||
*/
|
*/
|
||||||
adr r4, __secondary_data
|
adr r4, __secondary_data
|
||||||
ldmia r4, {r5, r7, r12} @ address to jump to after
|
ldmia r4, {r5, r7, r12} @ address to jump to after
|
||||||
sub r4, r4, r5 @ mmu has been enabled
|
sub lr, r4, r5 @ mmu has been enabled
|
||||||
ldr r4, [r7, r4] @ get secondary_data.pgdir
|
ldr r4, [r7, lr] @ get secondary_data.pgdir
|
||||||
|
add r7, r7, #4
|
||||||
|
ldr r8, [r7, lr] @ get secondary_data.swapper_pg_dir
|
||||||
adr lr, BSYM(__enable_mmu) @ return address
|
adr lr, BSYM(__enable_mmu) @ return address
|
||||||
mov r13, r12 @ __secondary_switched address
|
mov r13, r12 @ __secondary_switched address
|
||||||
ARM( add pc, r10, #PROCINFO_INITFUNC ) @ initialise processor
|
ARM( add pc, r10, #PROCINFO_INITFUNC ) @ initialise processor
|
||||||
@@ -339,7 +342,7 @@ __secondary_data:
|
|||||||
*
|
*
|
||||||
* r0 = cp#15 control register
|
* r0 = cp#15 control register
|
||||||
* r1 = machine ID
|
* r1 = machine ID
|
||||||
* r2 = atags pointer
|
* r2 = atags or dtb pointer
|
||||||
* r4 = page table pointer
|
* r4 = page table pointer
|
||||||
* r9 = processor ID
|
* r9 = processor ID
|
||||||
* r13 = *virtual* address to jump to upon completion
|
* r13 = *virtual* address to jump to upon completion
|
||||||
@@ -376,7 +379,7 @@ ENDPROC(__enable_mmu)
|
|||||||
*
|
*
|
||||||
* r0 = cp#15 control register
|
* r0 = cp#15 control register
|
||||||
* r1 = machine ID
|
* r1 = machine ID
|
||||||
* r2 = atags pointer
|
* r2 = atags or dtb pointer
|
||||||
* r9 = processor ID
|
* r9 = processor ID
|
||||||
* r13 = *virtual* address to jump to upon completion
|
* r13 = *virtual* address to jump to upon completion
|
||||||
*
|
*
|
||||||
|
@@ -193,8 +193,17 @@ apply_relocate(Elf32_Shdr *sechdrs, const char *strtab, unsigned int symindex,
|
|||||||
offset -= 0x02000000;
|
offset -= 0x02000000;
|
||||||
offset += sym->st_value - loc;
|
offset += sym->st_value - loc;
|
||||||
|
|
||||||
/* only Thumb addresses allowed (no interworking) */
|
/*
|
||||||
if (!(offset & 1) ||
|
* For function symbols, only Thumb addresses are
|
||||||
|
* allowed (no interworking).
|
||||||
|
*
|
||||||
|
* For non-function symbols, the destination
|
||||||
|
* has no specific ARM/Thumb disposition, so
|
||||||
|
* the branch is resolved under the assumption
|
||||||
|
* that interworking is not required.
|
||||||
|
*/
|
||||||
|
if ((ELF32_ST_TYPE(sym->st_info) == STT_FUNC &&
|
||||||
|
!(offset & 1)) ||
|
||||||
offset <= (s32)0xff000000 ||
|
offset <= (s32)0xff000000 ||
|
||||||
offset >= (s32)0x01000000) {
|
offset >= (s32)0x01000000) {
|
||||||
pr_err("%s: section %u reloc %u sym '%s': relocation %u out of range (%#lx -> %#x)\n",
|
pr_err("%s: section %u reloc %u sym '%s': relocation %u out of range (%#lx -> %#x)\n",
|
||||||
|
@@ -20,6 +20,7 @@
|
|||||||
#include <linux/screen_info.h>
|
#include <linux/screen_info.h>
|
||||||
#include <linux/init.h>
|
#include <linux/init.h>
|
||||||
#include <linux/kexec.h>
|
#include <linux/kexec.h>
|
||||||
|
#include <linux/of_fdt.h>
|
||||||
#include <linux/crash_dump.h>
|
#include <linux/crash_dump.h>
|
||||||
#include <linux/root_dev.h>
|
#include <linux/root_dev.h>
|
||||||
#include <linux/cpu.h>
|
#include <linux/cpu.h>
|
||||||
@@ -42,6 +43,7 @@
|
|||||||
#include <asm/cachetype.h>
|
#include <asm/cachetype.h>
|
||||||
#include <asm/tlbflush.h>
|
#include <asm/tlbflush.h>
|
||||||
|
|
||||||
|
#include <asm/prom.h>
|
||||||
#include <asm/mach/arch.h>
|
#include <asm/mach/arch.h>
|
||||||
#include <asm/mach/irq.h>
|
#include <asm/mach/irq.h>
|
||||||
#include <asm/mach/time.h>
|
#include <asm/mach/time.h>
|
||||||
@@ -309,7 +311,7 @@ static void __init cacheid_init(void)
|
|||||||
*/
|
*/
|
||||||
extern struct proc_info_list *lookup_processor_type(unsigned int);
|
extern struct proc_info_list *lookup_processor_type(unsigned int);
|
||||||
|
|
||||||
static void __init early_print(const char *str, ...)
|
void __init early_print(const char *str, ...)
|
||||||
{
|
{
|
||||||
extern void printascii(const char *);
|
extern void printascii(const char *);
|
||||||
char buf[256];
|
char buf[256];
|
||||||
@@ -439,25 +441,12 @@ void cpu_init(void)
|
|||||||
: "r14");
|
: "r14");
|
||||||
}
|
}
|
||||||
|
|
||||||
static struct machine_desc * __init setup_machine(unsigned int nr)
|
void __init dump_machine_table(void)
|
||||||
{
|
{
|
||||||
extern struct machine_desc __arch_info_begin[], __arch_info_end[];
|
|
||||||
struct machine_desc *p;
|
struct machine_desc *p;
|
||||||
|
|
||||||
/*
|
early_print("Available machine support:\n\nID (hex)\tNAME\n");
|
||||||
* locate machine in the list of supported machines.
|
for_each_machine_desc(p)
|
||||||
*/
|
|
||||||
for (p = __arch_info_begin; p < __arch_info_end; p++)
|
|
||||||
if (nr == p->nr) {
|
|
||||||
printk("Machine: %s\n", p->name);
|
|
||||||
return p;
|
|
||||||
}
|
|
||||||
|
|
||||||
early_print("\n"
|
|
||||||
"Error: unrecognized/unsupported machine ID (r1 = 0x%08x).\n\n"
|
|
||||||
"Available machine support:\n\nID (hex)\tNAME\n", nr);
|
|
||||||
|
|
||||||
for (p = __arch_info_begin; p < __arch_info_end; p++)
|
|
||||||
early_print("%08x\t%s\n", p->nr, p->name);
|
early_print("%08x\t%s\n", p->nr, p->name);
|
||||||
|
|
||||||
early_print("\nPlease check your kernel config and/or bootloader.\n");
|
early_print("\nPlease check your kernel config and/or bootloader.\n");
|
||||||
@@ -466,7 +455,7 @@ static struct machine_desc * __init setup_machine(unsigned int nr)
|
|||||||
/* can't use cpu_relax() here as it may require MMU setup */;
|
/* can't use cpu_relax() here as it may require MMU setup */;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int __init arm_add_memory(phys_addr_t start, unsigned long size)
|
int __init arm_add_memory(phys_addr_t start, unsigned long size)
|
||||||
{
|
{
|
||||||
struct membank *bank = &meminfo.bank[meminfo.nr_banks];
|
struct membank *bank = &meminfo.bank[meminfo.nr_banks];
|
||||||
|
|
||||||
@@ -801,23 +790,29 @@ static void __init squash_mem_tags(struct tag *tag)
|
|||||||
tag->hdr.tag = ATAG_NONE;
|
tag->hdr.tag = ATAG_NONE;
|
||||||
}
|
}
|
||||||
|
|
||||||
void __init setup_arch(char **cmdline_p)
|
static struct machine_desc * __init setup_machine_tags(unsigned int nr)
|
||||||
{
|
{
|
||||||
struct tag *tags = (struct tag *)&init_tags;
|
struct tag *tags = (struct tag *)&init_tags;
|
||||||
struct machine_desc *mdesc;
|
struct machine_desc *mdesc = NULL, *p;
|
||||||
char *from = default_command_line;
|
char *from = default_command_line;
|
||||||
|
|
||||||
init_tags.mem.start = PHYS_OFFSET;
|
init_tags.mem.start = PHYS_OFFSET;
|
||||||
|
|
||||||
unwind_init();
|
/*
|
||||||
|
* locate machine in the list of supported machines.
|
||||||
|
*/
|
||||||
|
for_each_machine_desc(p)
|
||||||
|
if (nr == p->nr) {
|
||||||
|
printk("Machine: %s\n", p->name);
|
||||||
|
mdesc = p;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
setup_processor();
|
if (!mdesc) {
|
||||||
mdesc = setup_machine(machine_arch_type);
|
early_print("\nError: unrecognized/unsupported machine ID"
|
||||||
machine_desc = mdesc;
|
" (r1 = 0x%08x).\n\n", nr);
|
||||||
machine_name = mdesc->name;
|
dump_machine_table(); /* does not return */
|
||||||
|
}
|
||||||
if (mdesc->soft_reboot)
|
|
||||||
reboot_setup("s");
|
|
||||||
|
|
||||||
if (__atags_pointer)
|
if (__atags_pointer)
|
||||||
tags = phys_to_virt(__atags_pointer);
|
tags = phys_to_virt(__atags_pointer);
|
||||||
@@ -849,8 +844,17 @@ void __init setup_arch(char **cmdline_p)
|
|||||||
if (tags->hdr.tag != ATAG_CORE)
|
if (tags->hdr.tag != ATAG_CORE)
|
||||||
convert_to_tag_list(tags);
|
convert_to_tag_list(tags);
|
||||||
#endif
|
#endif
|
||||||
if (tags->hdr.tag != ATAG_CORE)
|
|
||||||
|
if (tags->hdr.tag != ATAG_CORE) {
|
||||||
|
#if defined(CONFIG_OF)
|
||||||
|
/*
|
||||||
|
* If CONFIG_OF is set, then assume this is a reasonably
|
||||||
|
* modern system that should pass boot parameters
|
||||||
|
*/
|
||||||
|
early_print("Warning: Neither atags nor dtb found\n");
|
||||||
|
#endif
|
||||||
tags = (struct tag *)&init_tags;
|
tags = (struct tag *)&init_tags;
|
||||||
|
}
|
||||||
|
|
||||||
if (mdesc->fixup)
|
if (mdesc->fixup)
|
||||||
mdesc->fixup(mdesc, tags, &from, &meminfo);
|
mdesc->fixup(mdesc, tags, &from, &meminfo);
|
||||||
@@ -862,14 +866,34 @@ void __init setup_arch(char **cmdline_p)
|
|||||||
parse_tags(tags);
|
parse_tags(tags);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* parse_early_param needs a boot_command_line */
|
||||||
|
strlcpy(boot_command_line, from, COMMAND_LINE_SIZE);
|
||||||
|
|
||||||
|
return mdesc;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void __init setup_arch(char **cmdline_p)
|
||||||
|
{
|
||||||
|
struct machine_desc *mdesc;
|
||||||
|
|
||||||
|
unwind_init();
|
||||||
|
|
||||||
|
setup_processor();
|
||||||
|
mdesc = setup_machine_fdt(__atags_pointer);
|
||||||
|
if (!mdesc)
|
||||||
|
mdesc = setup_machine_tags(machine_arch_type);
|
||||||
|
machine_desc = mdesc;
|
||||||
|
machine_name = mdesc->name;
|
||||||
|
|
||||||
|
if (mdesc->soft_reboot)
|
||||||
|
reboot_setup("s");
|
||||||
|
|
||||||
init_mm.start_code = (unsigned long) _text;
|
init_mm.start_code = (unsigned long) _text;
|
||||||
init_mm.end_code = (unsigned long) _etext;
|
init_mm.end_code = (unsigned long) _etext;
|
||||||
init_mm.end_data = (unsigned long) _edata;
|
init_mm.end_data = (unsigned long) _edata;
|
||||||
init_mm.brk = (unsigned long) _end;
|
init_mm.brk = (unsigned long) _end;
|
||||||
|
|
||||||
/* parse_early_param needs a boot_command_line */
|
|
||||||
strlcpy(boot_command_line, from, COMMAND_LINE_SIZE);
|
|
||||||
|
|
||||||
/* populate cmd_line too for later use, preserving boot_command_line */
|
/* populate cmd_line too for later use, preserving boot_command_line */
|
||||||
strlcpy(cmd_line, boot_command_line, COMMAND_LINE_SIZE);
|
strlcpy(cmd_line, boot_command_line, COMMAND_LINE_SIZE);
|
||||||
*cmdline_p = cmd_line;
|
*cmdline_p = cmd_line;
|
||||||
@@ -881,6 +905,8 @@ void __init setup_arch(char **cmdline_p)
|
|||||||
paging_init(mdesc);
|
paging_init(mdesc);
|
||||||
request_standard_resources(mdesc);
|
request_standard_resources(mdesc);
|
||||||
|
|
||||||
|
unflatten_device_tree();
|
||||||
|
|
||||||
#ifdef CONFIG_SMP
|
#ifdef CONFIG_SMP
|
||||||
if (is_smp())
|
if (is_smp())
|
||||||
smp_init_cpus();
|
smp_init_cpus();
|
||||||
|
@@ -105,6 +105,7 @@ int __cpuinit __cpu_up(unsigned int cpu)
|
|||||||
*/
|
*/
|
||||||
secondary_data.stack = task_stack_page(idle) + THREAD_START_SP;
|
secondary_data.stack = task_stack_page(idle) + THREAD_START_SP;
|
||||||
secondary_data.pgdir = virt_to_phys(pgd);
|
secondary_data.pgdir = virt_to_phys(pgd);
|
||||||
|
secondary_data.swapper_pg_dir = virt_to_phys(swapper_pg_dir);
|
||||||
__cpuc_flush_dcache_area(&secondary_data, sizeof(secondary_data));
|
__cpuc_flush_dcache_area(&secondary_data, sizeof(secondary_data));
|
||||||
outer_clean_range(__pa(&secondary_data), __pa(&secondary_data + 1));
|
outer_clean_range(__pa(&secondary_data), __pa(&secondary_data + 1));
|
||||||
|
|
||||||
@@ -317,9 +318,13 @@ asmlinkage void __cpuinit secondary_start_kernel(void)
|
|||||||
smp_store_cpu_info(cpu);
|
smp_store_cpu_info(cpu);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* OK, now it's safe to let the boot CPU continue
|
* OK, now it's safe to let the boot CPU continue. Wait for
|
||||||
|
* the CPU migration code to notice that the CPU is online
|
||||||
|
* before we continue.
|
||||||
*/
|
*/
|
||||||
set_cpu_online(cpu, true);
|
set_cpu_online(cpu, true);
|
||||||
|
while (!cpu_active(cpu))
|
||||||
|
cpu_relax();
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* OK, it's off to the idle thread for us
|
* OK, it's off to the idle thread for us
|
||||||
|
@@ -139,7 +139,7 @@ static void dump_instr(const char *lvl, struct pt_regs *regs)
|
|||||||
fs = get_fs();
|
fs = get_fs();
|
||||||
set_fs(KERNEL_DS);
|
set_fs(KERNEL_DS);
|
||||||
|
|
||||||
for (i = -4; i < 1; i++) {
|
for (i = -4; i < 1 + !!thumb; i++) {
|
||||||
unsigned int val, bad;
|
unsigned int val, bad;
|
||||||
|
|
||||||
if (thumb)
|
if (thumb)
|
||||||
@@ -563,7 +563,7 @@ asmlinkage int arm_syscall(int no, struct pt_regs *regs)
|
|||||||
if (!pmd_present(*pmd))
|
if (!pmd_present(*pmd))
|
||||||
goto bad_access;
|
goto bad_access;
|
||||||
pte = pte_offset_map_lock(mm, pmd, addr, &ptl);
|
pte = pte_offset_map_lock(mm, pmd, addr, &ptl);
|
||||||
if (!pte_present(*pte) || !pte_dirty(*pte)) {
|
if (!pte_present(*pte) || !pte_write(*pte) || !pte_dirty(*pte)) {
|
||||||
pte_unmap_unlock(pte, ptl);
|
pte_unmap_unlock(pte, ptl);
|
||||||
goto bad_access;
|
goto bad_access;
|
||||||
}
|
}
|
||||||
|
@@ -35,7 +35,7 @@ Boston, MA 02111-1307, USA. */
|
|||||||
|
|
||||||
#include <linux/linkage.h>
|
#include <linux/linkage.h>
|
||||||
#include <asm/assembler.h>
|
#include <asm/assembler.h>
|
||||||
|
#include <asm/unwind.h>
|
||||||
|
|
||||||
.macro ARM_DIV_BODY dividend, divisor, result, curbit
|
.macro ARM_DIV_BODY dividend, divisor, result, curbit
|
||||||
|
|
||||||
@@ -207,6 +207,7 @@ Boston, MA 02111-1307, USA. */
|
|||||||
|
|
||||||
ENTRY(__udivsi3)
|
ENTRY(__udivsi3)
|
||||||
ENTRY(__aeabi_uidiv)
|
ENTRY(__aeabi_uidiv)
|
||||||
|
UNWIND(.fnstart)
|
||||||
|
|
||||||
subs r2, r1, #1
|
subs r2, r1, #1
|
||||||
moveq pc, lr
|
moveq pc, lr
|
||||||
@@ -230,10 +231,12 @@ ENTRY(__aeabi_uidiv)
|
|||||||
mov r0, r0, lsr r2
|
mov r0, r0, lsr r2
|
||||||
mov pc, lr
|
mov pc, lr
|
||||||
|
|
||||||
|
UNWIND(.fnend)
|
||||||
ENDPROC(__udivsi3)
|
ENDPROC(__udivsi3)
|
||||||
ENDPROC(__aeabi_uidiv)
|
ENDPROC(__aeabi_uidiv)
|
||||||
|
|
||||||
ENTRY(__umodsi3)
|
ENTRY(__umodsi3)
|
||||||
|
UNWIND(.fnstart)
|
||||||
|
|
||||||
subs r2, r1, #1 @ compare divisor with 1
|
subs r2, r1, #1 @ compare divisor with 1
|
||||||
bcc Ldiv0
|
bcc Ldiv0
|
||||||
@@ -247,10 +250,12 @@ ENTRY(__umodsi3)
|
|||||||
|
|
||||||
mov pc, lr
|
mov pc, lr
|
||||||
|
|
||||||
|
UNWIND(.fnend)
|
||||||
ENDPROC(__umodsi3)
|
ENDPROC(__umodsi3)
|
||||||
|
|
||||||
ENTRY(__divsi3)
|
ENTRY(__divsi3)
|
||||||
ENTRY(__aeabi_idiv)
|
ENTRY(__aeabi_idiv)
|
||||||
|
UNWIND(.fnstart)
|
||||||
|
|
||||||
cmp r1, #0
|
cmp r1, #0
|
||||||
eor ip, r0, r1 @ save the sign of the result.
|
eor ip, r0, r1 @ save the sign of the result.
|
||||||
@@ -287,10 +292,12 @@ ENTRY(__aeabi_idiv)
|
|||||||
rsbmi r0, r0, #0
|
rsbmi r0, r0, #0
|
||||||
mov pc, lr
|
mov pc, lr
|
||||||
|
|
||||||
|
UNWIND(.fnend)
|
||||||
ENDPROC(__divsi3)
|
ENDPROC(__divsi3)
|
||||||
ENDPROC(__aeabi_idiv)
|
ENDPROC(__aeabi_idiv)
|
||||||
|
|
||||||
ENTRY(__modsi3)
|
ENTRY(__modsi3)
|
||||||
|
UNWIND(.fnstart)
|
||||||
|
|
||||||
cmp r1, #0
|
cmp r1, #0
|
||||||
beq Ldiv0
|
beq Ldiv0
|
||||||
@@ -310,11 +317,14 @@ ENTRY(__modsi3)
|
|||||||
rsbmi r0, r0, #0
|
rsbmi r0, r0, #0
|
||||||
mov pc, lr
|
mov pc, lr
|
||||||
|
|
||||||
|
UNWIND(.fnend)
|
||||||
ENDPROC(__modsi3)
|
ENDPROC(__modsi3)
|
||||||
|
|
||||||
#ifdef CONFIG_AEABI
|
#ifdef CONFIG_AEABI
|
||||||
|
|
||||||
ENTRY(__aeabi_uidivmod)
|
ENTRY(__aeabi_uidivmod)
|
||||||
|
UNWIND(.fnstart)
|
||||||
|
UNWIND(.save {r0, r1, ip, lr} )
|
||||||
|
|
||||||
stmfd sp!, {r0, r1, ip, lr}
|
stmfd sp!, {r0, r1, ip, lr}
|
||||||
bl __aeabi_uidiv
|
bl __aeabi_uidiv
|
||||||
@@ -323,10 +333,12 @@ ENTRY(__aeabi_uidivmod)
|
|||||||
sub r1, r1, r3
|
sub r1, r1, r3
|
||||||
mov pc, lr
|
mov pc, lr
|
||||||
|
|
||||||
|
UNWIND(.fnend)
|
||||||
ENDPROC(__aeabi_uidivmod)
|
ENDPROC(__aeabi_uidivmod)
|
||||||
|
|
||||||
ENTRY(__aeabi_idivmod)
|
ENTRY(__aeabi_idivmod)
|
||||||
|
UNWIND(.fnstart)
|
||||||
|
UNWIND(.save {r0, r1, ip, lr} )
|
||||||
stmfd sp!, {r0, r1, ip, lr}
|
stmfd sp!, {r0, r1, ip, lr}
|
||||||
bl __aeabi_idiv
|
bl __aeabi_idiv
|
||||||
ldmfd sp!, {r1, r2, ip, lr}
|
ldmfd sp!, {r1, r2, ip, lr}
|
||||||
@@ -334,15 +346,18 @@ ENTRY(__aeabi_idivmod)
|
|||||||
sub r1, r1, r3
|
sub r1, r1, r3
|
||||||
mov pc, lr
|
mov pc, lr
|
||||||
|
|
||||||
|
UNWIND(.fnend)
|
||||||
ENDPROC(__aeabi_idivmod)
|
ENDPROC(__aeabi_idivmod)
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
Ldiv0:
|
Ldiv0:
|
||||||
|
UNWIND(.fnstart)
|
||||||
|
UNWIND(.pad #4)
|
||||||
|
UNWIND(.save {lr})
|
||||||
str lr, [sp, #-8]!
|
str lr, [sp, #-8]!
|
||||||
bl __div0
|
bl __div0
|
||||||
mov r0, #0 @ About as wrong as it could be.
|
mov r0, #0 @ About as wrong as it could be.
|
||||||
ldr pc, [sp], #8
|
ldr pc, [sp], #8
|
||||||
|
UNWIND(.fnend)
|
||||||
|
ENDPROC(Ldiv0)
|
||||||
|
@@ -3,9 +3,6 @@ if ARCH_AT91
|
|||||||
config HAVE_AT91_DATAFLASH_CARD
|
config HAVE_AT91_DATAFLASH_CARD
|
||||||
bool
|
bool
|
||||||
|
|
||||||
config HAVE_NAND_ATMEL_BUSWIDTH_16
|
|
||||||
bool
|
|
||||||
|
|
||||||
config HAVE_AT91_USART3
|
config HAVE_AT91_USART3
|
||||||
bool
|
bool
|
||||||
|
|
||||||
@@ -85,11 +82,6 @@ config ARCH_AT91CAP9
|
|||||||
select HAVE_FB_ATMEL
|
select HAVE_FB_ATMEL
|
||||||
select HAVE_NET_MACB
|
select HAVE_NET_MACB
|
||||||
|
|
||||||
config ARCH_AT572D940HF
|
|
||||||
bool "AT572D940HF"
|
|
||||||
select CPU_ARM926T
|
|
||||||
select GENERIC_CLOCKEVENTS
|
|
||||||
|
|
||||||
config ARCH_AT91X40
|
config ARCH_AT91X40
|
||||||
bool "AT91x40"
|
bool "AT91x40"
|
||||||
select ARCH_USES_GETTIMEOFFSET
|
select ARCH_USES_GETTIMEOFFSET
|
||||||
@@ -209,7 +201,6 @@ comment "AT91SAM9260 / AT91SAM9XE Board Type"
|
|||||||
config MACH_AT91SAM9260EK
|
config MACH_AT91SAM9260EK
|
||||||
bool "Atmel AT91SAM9260-EK / AT91SAM9XE Evaluation Kit"
|
bool "Atmel AT91SAM9260-EK / AT91SAM9XE Evaluation Kit"
|
||||||
select HAVE_AT91_DATAFLASH_CARD
|
select HAVE_AT91_DATAFLASH_CARD
|
||||||
select HAVE_NAND_ATMEL_BUSWIDTH_16
|
|
||||||
help
|
help
|
||||||
Select this if you are using Atmel's AT91SAM9260-EK or AT91SAM9XE Evaluation Kit
|
Select this if you are using Atmel's AT91SAM9260-EK or AT91SAM9XE Evaluation Kit
|
||||||
<http://www.atmel.com/dyn/products/tools_card.asp?tool_id=3933>
|
<http://www.atmel.com/dyn/products/tools_card.asp?tool_id=3933>
|
||||||
@@ -270,7 +261,6 @@ comment "AT91SAM9261 Board Type"
|
|||||||
config MACH_AT91SAM9261EK
|
config MACH_AT91SAM9261EK
|
||||||
bool "Atmel AT91SAM9261-EK Evaluation Kit"
|
bool "Atmel AT91SAM9261-EK Evaluation Kit"
|
||||||
select HAVE_AT91_DATAFLASH_CARD
|
select HAVE_AT91_DATAFLASH_CARD
|
||||||
select HAVE_NAND_ATMEL_BUSWIDTH_16
|
|
||||||
help
|
help
|
||||||
Select this if you are using Atmel's AT91SAM9261-EK Evaluation Kit.
|
Select this if you are using Atmel's AT91SAM9261-EK Evaluation Kit.
|
||||||
<http://www.atmel.com/dyn/products/tools_card.asp?tool_id=3820>
|
<http://www.atmel.com/dyn/products/tools_card.asp?tool_id=3820>
|
||||||
@@ -286,7 +276,6 @@ comment "AT91SAM9G10 Board Type"
|
|||||||
config MACH_AT91SAM9G10EK
|
config MACH_AT91SAM9G10EK
|
||||||
bool "Atmel AT91SAM9G10-EK Evaluation Kit"
|
bool "Atmel AT91SAM9G10-EK Evaluation Kit"
|
||||||
select HAVE_AT91_DATAFLASH_CARD
|
select HAVE_AT91_DATAFLASH_CARD
|
||||||
select HAVE_NAND_ATMEL_BUSWIDTH_16
|
|
||||||
help
|
help
|
||||||
Select this if you are using Atmel's AT91SAM9G10-EK Evaluation Kit.
|
Select this if you are using Atmel's AT91SAM9G10-EK Evaluation Kit.
|
||||||
<http://www.atmel.com/dyn/products/tools_card.asp?tool_id=4588>
|
<http://www.atmel.com/dyn/products/tools_card.asp?tool_id=4588>
|
||||||
@@ -302,7 +291,6 @@ comment "AT91SAM9263 Board Type"
|
|||||||
config MACH_AT91SAM9263EK
|
config MACH_AT91SAM9263EK
|
||||||
bool "Atmel AT91SAM9263-EK Evaluation Kit"
|
bool "Atmel AT91SAM9263-EK Evaluation Kit"
|
||||||
select HAVE_AT91_DATAFLASH_CARD
|
select HAVE_AT91_DATAFLASH_CARD
|
||||||
select HAVE_NAND_ATMEL_BUSWIDTH_16
|
|
||||||
help
|
help
|
||||||
Select this if you are using Atmel's AT91SAM9263-EK Evaluation Kit.
|
Select this if you are using Atmel's AT91SAM9263-EK Evaluation Kit.
|
||||||
<http://www.atmel.com/dyn/products/tools_card.asp?tool_id=4057>
|
<http://www.atmel.com/dyn/products/tools_card.asp?tool_id=4057>
|
||||||
@@ -343,7 +331,6 @@ comment "AT91SAM9G20 Board Type"
|
|||||||
config MACH_AT91SAM9G20EK
|
config MACH_AT91SAM9G20EK
|
||||||
bool "Atmel AT91SAM9G20-EK Evaluation Kit"
|
bool "Atmel AT91SAM9G20-EK Evaluation Kit"
|
||||||
select HAVE_AT91_DATAFLASH_CARD
|
select HAVE_AT91_DATAFLASH_CARD
|
||||||
select HAVE_NAND_ATMEL_BUSWIDTH_16
|
|
||||||
help
|
help
|
||||||
Select this if you are using Atmel's AT91SAM9G20-EK Evaluation Kit
|
Select this if you are using Atmel's AT91SAM9G20-EK Evaluation Kit
|
||||||
that embeds only one SD/MMC slot.
|
that embeds only one SD/MMC slot.
|
||||||
@@ -351,7 +338,6 @@ config MACH_AT91SAM9G20EK
|
|||||||
config MACH_AT91SAM9G20EK_2MMC
|
config MACH_AT91SAM9G20EK_2MMC
|
||||||
depends on MACH_AT91SAM9G20EK
|
depends on MACH_AT91SAM9G20EK
|
||||||
bool "Atmel AT91SAM9G20-EK Evaluation Kit with 2 SD/MMC Slots"
|
bool "Atmel AT91SAM9G20-EK Evaluation Kit with 2 SD/MMC Slots"
|
||||||
select HAVE_NAND_ATMEL_BUSWIDTH_16
|
|
||||||
help
|
help
|
||||||
Select this if you are using an Atmel AT91SAM9G20-EK Evaluation Kit
|
Select this if you are using an Atmel AT91SAM9G20-EK Evaluation Kit
|
||||||
with 2 SD/MMC Slots. This is the case for AT91SAM9G20-EK rev. C and
|
with 2 SD/MMC Slots. This is the case for AT91SAM9G20-EK rev. C and
|
||||||
@@ -416,7 +402,6 @@ comment "AT91SAM9G45 Board Type"
|
|||||||
|
|
||||||
config MACH_AT91SAM9M10G45EK
|
config MACH_AT91SAM9M10G45EK
|
||||||
bool "Atmel AT91SAM9M10G45-EK Evaluation Kits"
|
bool "Atmel AT91SAM9M10G45-EK Evaluation Kits"
|
||||||
select HAVE_NAND_ATMEL_BUSWIDTH_16
|
|
||||||
help
|
help
|
||||||
Select this if you are using Atmel's AT91SAM9G45-EKES Evaluation Kit.
|
Select this if you are using Atmel's AT91SAM9G45-EKES Evaluation Kit.
|
||||||
"ES" at the end of the name means that this board is an
|
"ES" at the end of the name means that this board is an
|
||||||
@@ -433,7 +418,6 @@ comment "AT91CAP9 Board Type"
|
|||||||
config MACH_AT91CAP9ADK
|
config MACH_AT91CAP9ADK
|
||||||
bool "Atmel AT91CAP9A-DK Evaluation Kit"
|
bool "Atmel AT91CAP9A-DK Evaluation Kit"
|
||||||
select HAVE_AT91_DATAFLASH_CARD
|
select HAVE_AT91_DATAFLASH_CARD
|
||||||
select HAVE_NAND_ATMEL_BUSWIDTH_16
|
|
||||||
help
|
help
|
||||||
Select this if you are using Atmel's AT91CAP9A-DK Evaluation Kit.
|
Select this if you are using Atmel's AT91CAP9A-DK Evaluation Kit.
|
||||||
<http://www.atmel.com/dyn/products/tools_card.asp?tool_id=4138>
|
<http://www.atmel.com/dyn/products/tools_card.asp?tool_id=4138>
|
||||||
@@ -442,23 +426,6 @@ endif
|
|||||||
|
|
||||||
# ----------------------------------------------------------
|
# ----------------------------------------------------------
|
||||||
|
|
||||||
if ARCH_AT572D940HF
|
|
||||||
|
|
||||||
comment "AT572D940HF Board Type"
|
|
||||||
|
|
||||||
config MACH_AT572D940HFEB
|
|
||||||
bool "AT572D940HF-EK"
|
|
||||||
depends on ARCH_AT572D940HF
|
|
||||||
select HAVE_AT91_DATAFLASH_CARD
|
|
||||||
select HAVE_NAND_ATMEL_BUSWIDTH_16
|
|
||||||
help
|
|
||||||
Select this if you are using Atmel's AT572D940HF-EK evaluation kit.
|
|
||||||
<http://www.atmel.com/products/diopsis/default.asp>
|
|
||||||
|
|
||||||
endif
|
|
||||||
|
|
||||||
# ----------------------------------------------------------
|
|
||||||
|
|
||||||
if ARCH_AT91X40
|
if ARCH_AT91X40
|
||||||
|
|
||||||
comment "AT91X40 Board Type"
|
comment "AT91X40 Board Type"
|
||||||
@@ -483,13 +450,6 @@ config MTD_AT91_DATAFLASH_CARD
|
|||||||
help
|
help
|
||||||
Enable support for the DataFlash card.
|
Enable support for the DataFlash card.
|
||||||
|
|
||||||
config MTD_NAND_ATMEL_BUSWIDTH_16
|
|
||||||
bool "Enable 16-bit data bus interface to NAND flash"
|
|
||||||
depends on HAVE_NAND_ATMEL_BUSWIDTH_16
|
|
||||||
help
|
|
||||||
On AT91SAM926x boards both types of NAND flash can be present
|
|
||||||
(8 and 16 bit data bus width).
|
|
||||||
|
|
||||||
# ----------------------------------------------------------
|
# ----------------------------------------------------------
|
||||||
|
|
||||||
comment "AT91 Feature Selections"
|
comment "AT91 Feature Selections"
|
||||||
|
@@ -19,7 +19,6 @@ obj-$(CONFIG_ARCH_AT91SAM9RL) += at91sam9rl.o at91sam926x_time.o at91sam9rl_devi
|
|||||||
obj-$(CONFIG_ARCH_AT91SAM9G20) += at91sam9260.o at91sam926x_time.o at91sam9260_devices.o sam9_smc.o at91sam9_alt_reset.o
|
obj-$(CONFIG_ARCH_AT91SAM9G20) += at91sam9260.o at91sam926x_time.o at91sam9260_devices.o sam9_smc.o at91sam9_alt_reset.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_AT91X40) += at91x40.o at91x40_time.o
|
obj-$(CONFIG_ARCH_AT91X40) += at91x40.o at91x40_time.o
|
||||||
|
|
||||||
# AT91RM9200 board-specific support
|
# AT91RM9200 board-specific support
|
||||||
@@ -78,9 +77,6 @@ obj-$(CONFIG_MACH_AT91SAM9M10G45EK) += board-sam9m10g45ek.o
|
|||||||
# AT91CAP9 board-specific support
|
# AT91CAP9 board-specific support
|
||||||
obj-$(CONFIG_MACH_AT91CAP9ADK) += board-cap9adk.o
|
obj-$(CONFIG_MACH_AT91CAP9ADK) += board-cap9adk.o
|
||||||
|
|
||||||
# AT572D940HF board-specific support
|
|
||||||
obj-$(CONFIG_MACH_AT572D940HFEB) += board-at572d940hf_ek.o
|
|
||||||
|
|
||||||
# AT91X40 board-specific support
|
# AT91X40 board-specific support
|
||||||
obj-$(CONFIG_MACH_AT91EB01) += board-eb01.o
|
obj-$(CONFIG_MACH_AT91EB01) += board-eb01.o
|
||||||
|
|
||||||
|
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user