You've already forked linux-apfs
mirror of
https://github.com/linux-apfs/linux-apfs.git
synced 2026-05-01 15:00:59 -07:00
Merge branch 'master' into for-next
Conflicts: MAINTAINERS arch/arm/mach-omap2/pm24xx.c drivers/scsi/bfa/bfa_fcpim.c Needed to update to apply fixes for which the old branch was too outdated.
This commit is contained in:
@@ -0,0 +1,22 @@
|
|||||||
|
What: /proc/<pid>/oom_adj
|
||||||
|
When: August 2012
|
||||||
|
Why: /proc/<pid>/oom_adj allows userspace to influence the oom killer's
|
||||||
|
badness heuristic used to determine which task to kill when the kernel
|
||||||
|
is out of memory.
|
||||||
|
|
||||||
|
The badness heuristic has since been rewritten since the introduction of
|
||||||
|
this tunable such that its meaning is deprecated. The value was
|
||||||
|
implemented as a bitshift on a score generated by the badness()
|
||||||
|
function that did not have any precise units of measure. With the
|
||||||
|
rewrite, the score is given as a proportion of available memory to the
|
||||||
|
task allocating pages, so using a bitshift which grows the score
|
||||||
|
exponentially is, thus, impossible to tune with fine granularity.
|
||||||
|
|
||||||
|
A much more powerful interface, /proc/<pid>/oom_score_adj, was
|
||||||
|
introduced with the oom killer rewrite that allows users to increase or
|
||||||
|
decrease the badness() score linearly. This interface will replace
|
||||||
|
/proc/<pid>/oom_adj.
|
||||||
|
|
||||||
|
A warning will be emitted to the kernel log if an application uses this
|
||||||
|
deprecated interface. After it is printed once, future warnings will be
|
||||||
|
suppressed until the kernel is rebooted.
|
||||||
@@ -0,0 +1,83 @@
|
|||||||
|
What: /sys/bus/rbd/
|
||||||
|
Date: November 2010
|
||||||
|
Contact: Yehuda Sadeh <yehuda@hq.newdream.net>,
|
||||||
|
Sage Weil <sage@newdream.net>
|
||||||
|
Description:
|
||||||
|
|
||||||
|
Being used for adding and removing rbd block devices.
|
||||||
|
|
||||||
|
Usage: <mon ip addr> <options> <pool name> <rbd image name> [snap name]
|
||||||
|
|
||||||
|
$ echo "192.168.0.1 name=admin rbd foo" > /sys/bus/rbd/add
|
||||||
|
|
||||||
|
The snapshot name can be "-" or omitted to map the image read/write. A <dev-id>
|
||||||
|
will be assigned for any registered block device. If snapshot is used, it will
|
||||||
|
be mapped read-only.
|
||||||
|
|
||||||
|
Removal of a device:
|
||||||
|
|
||||||
|
$ echo <dev-id> > /sys/bus/rbd/remove
|
||||||
|
|
||||||
|
Entries under /sys/bus/rbd/devices/<dev-id>/
|
||||||
|
--------------------------------------------
|
||||||
|
|
||||||
|
client_id
|
||||||
|
|
||||||
|
The ceph unique client id that was assigned for this specific session.
|
||||||
|
|
||||||
|
major
|
||||||
|
|
||||||
|
The block device major number.
|
||||||
|
|
||||||
|
name
|
||||||
|
|
||||||
|
The name of the rbd image.
|
||||||
|
|
||||||
|
pool
|
||||||
|
|
||||||
|
The pool where this rbd image resides. The pool-name pair is unique
|
||||||
|
per rados system.
|
||||||
|
|
||||||
|
size
|
||||||
|
|
||||||
|
The size (in bytes) of the mapped block device.
|
||||||
|
|
||||||
|
refresh
|
||||||
|
|
||||||
|
Writing to this file will reread the image header data and set
|
||||||
|
all relevant datastructures accordingly.
|
||||||
|
|
||||||
|
current_snap
|
||||||
|
|
||||||
|
The current snapshot for which the device is mapped.
|
||||||
|
|
||||||
|
create_snap
|
||||||
|
|
||||||
|
Create a snapshot:
|
||||||
|
|
||||||
|
$ echo <snap-name> > /sys/bus/rbd/devices/<dev-id>/snap_create
|
||||||
|
|
||||||
|
rollback_snap
|
||||||
|
|
||||||
|
Rolls back data to the specified snapshot. This goes over the entire
|
||||||
|
list of rados blocks and sends a rollback command to each.
|
||||||
|
|
||||||
|
$ echo <snap-name> > /sys/bus/rbd/devices/<dev-id>/snap_rollback
|
||||||
|
|
||||||
|
snap_*
|
||||||
|
|
||||||
|
A directory per each snapshot
|
||||||
|
|
||||||
|
|
||||||
|
Entries under /sys/bus/rbd/devices/<dev-id>/snap_<snap-name>
|
||||||
|
-------------------------------------------------------------
|
||||||
|
|
||||||
|
id
|
||||||
|
|
||||||
|
The rados internal snapshot id assigned for this snapshot
|
||||||
|
|
||||||
|
size
|
||||||
|
|
||||||
|
The size of the image when this snapshot was taken.
|
||||||
|
|
||||||
|
|
||||||
@@ -47,6 +47,20 @@ Date: January 2007
|
|||||||
KernelVersion: 2.6.20
|
KernelVersion: 2.6.20
|
||||||
Contact: "Corentin Chary" <corentincj@iksaif.net>
|
Contact: "Corentin Chary" <corentincj@iksaif.net>
|
||||||
Description:
|
Description:
|
||||||
Control the bluetooth device. 1 means on, 0 means off.
|
Control the wlan device. 1 means on, 0 means off.
|
||||||
This may control the led, the device or both.
|
This may control the led, the device or both.
|
||||||
Users: Lapsus
|
Users: Lapsus
|
||||||
|
|
||||||
|
What: /sys/devices/platform/asus_laptop/wimax
|
||||||
|
Date: October 2010
|
||||||
|
KernelVersion: 2.6.37
|
||||||
|
Contact: "Corentin Chary" <corentincj@iksaif.net>
|
||||||
|
Description:
|
||||||
|
Control the wimax device. 1 means on, 0 means off.
|
||||||
|
|
||||||
|
What: /sys/devices/platform/asus_laptop/wwan
|
||||||
|
Date: October 2010
|
||||||
|
KernelVersion: 2.6.37
|
||||||
|
Contact: "Corentin Chary" <corentincj@iksaif.net>
|
||||||
|
Description:
|
||||||
|
Control the wwan (3G) device. 1 means on, 0 means off.
|
||||||
|
|||||||
@@ -0,0 +1,10 @@
|
|||||||
|
What: /sys/devices/platform/eeepc-wmi/cpufv
|
||||||
|
Date: Oct 2010
|
||||||
|
KernelVersion: 2.6.37
|
||||||
|
Contact: "Corentin Chary" <corentincj@iksaif.net>
|
||||||
|
Description:
|
||||||
|
Change CPU clock configuration (write-only).
|
||||||
|
There are three available clock configuration:
|
||||||
|
* 0 -> Super Performance Mode
|
||||||
|
* 1 -> High Performance Mode
|
||||||
|
* 2 -> Power Saving Mode
|
||||||
@@ -79,10 +79,6 @@
|
|||||||
</sect2>
|
</sect2>
|
||||||
</sect1>
|
</sect1>
|
||||||
</chapter>
|
</chapter>
|
||||||
<chapter id="clk">
|
|
||||||
<title>Clock Framework Extensions</title>
|
|
||||||
!Iinclude/linux/sh_clk.h
|
|
||||||
</chapter>
|
|
||||||
<chapter id="mach">
|
<chapter id="mach">
|
||||||
<title>Machine Specific Interfaces</title>
|
<title>Machine Specific Interfaces</title>
|
||||||
<sect1 id="dreamcast">
|
<sect1 id="dreamcast">
|
||||||
|
|||||||
@@ -16,7 +16,7 @@
|
|||||||
</orgname>
|
</orgname>
|
||||||
|
|
||||||
<address>
|
<address>
|
||||||
<email>hjk@linutronix.de</email>
|
<email>hjk@hansjkoch.de</email>
|
||||||
</address>
|
</address>
|
||||||
</affiliation>
|
</affiliation>
|
||||||
</author>
|
</author>
|
||||||
@@ -114,7 +114,7 @@ GPL version 2.
|
|||||||
|
|
||||||
<para>If you know of any translations for this document, or you are
|
<para>If you know of any translations for this document, or you are
|
||||||
interested in translating it, please email me
|
interested in translating it, please email me
|
||||||
<email>hjk@linutronix.de</email>.
|
<email>hjk@hansjkoch.de</email>.
|
||||||
</para>
|
</para>
|
||||||
</sect1>
|
</sect1>
|
||||||
|
|
||||||
@@ -171,7 +171,7 @@ interested in translating it, please email me
|
|||||||
<title>Feedback</title>
|
<title>Feedback</title>
|
||||||
<para>Find something wrong with this document? (Or perhaps something
|
<para>Find something wrong with this document? (Or perhaps something
|
||||||
right?) I would love to hear from you. Please email me at
|
right?) I would love to hear from you. Please email me at
|
||||||
<email>hjk@linutronix.de</email>.</para>
|
<email>hjk@hansjkoch.de</email>.</para>
|
||||||
</sect1>
|
</sect1>
|
||||||
</chapter>
|
</chapter>
|
||||||
|
|
||||||
|
|||||||
@@ -255,9 +255,10 @@ framebuffer parameters.
|
|||||||
Kernel boot arguments
|
Kernel boot arguments
|
||||||
---------------------
|
---------------------
|
||||||
|
|
||||||
vram=<size>
|
vram=<size>[,<physaddr>]
|
||||||
- Amount of total VRAM to preallocate. For example, "10M". omapfb
|
- Amount of total VRAM to preallocate and optionally a physical start
|
||||||
allocates memory for framebuffers from VRAM.
|
memory address. For example, "10M". omapfb allocates memory for
|
||||||
|
framebuffers from VRAM.
|
||||||
|
|
||||||
omapfb.mode=<display>:<mode>[,...]
|
omapfb.mode=<display>:<mode>[,...]
|
||||||
- Default video mode for specified displays. For example,
|
- Default video mode for specified displays. For example,
|
||||||
|
|||||||
@@ -16,7 +16,7 @@ you can do so by typing:
|
|||||||
As of the Linux 2.6.10 kernel, it is now possible to change the
|
As of the Linux 2.6.10 kernel, it is now possible to change the
|
||||||
IO scheduler for a given block device on the fly (thus making it possible,
|
IO scheduler for a given block device on the fly (thus making it possible,
|
||||||
for instance, to set the CFQ scheduler for the system default, but
|
for instance, to set the CFQ scheduler for the system default, but
|
||||||
set a specific device to use the anticipatory or noop schedulers - which
|
set a specific device to use the deadline or noop schedulers - which
|
||||||
can improve that device's throughput).
|
can improve that device's throughput).
|
||||||
|
|
||||||
To set a specific scheduler, simply do this:
|
To set a specific scheduler, simply do this:
|
||||||
@@ -31,7 +31,7 @@ a "cat /sys/block/DEV/queue/scheduler" - the list of valid names
|
|||||||
will be displayed, with the currently selected scheduler in brackets:
|
will be displayed, with the currently selected scheduler in brackets:
|
||||||
|
|
||||||
# cat /sys/block/hda/queue/scheduler
|
# cat /sys/block/hda/queue/scheduler
|
||||||
noop anticipatory deadline [cfq]
|
noop deadline [cfq]
|
||||||
# echo anticipatory > /sys/block/hda/queue/scheduler
|
# echo deadline > /sys/block/hda/queue/scheduler
|
||||||
# cat /sys/block/hda/queue/scheduler
|
# cat /sys/block/hda/queue/scheduler
|
||||||
noop [anticipatory] deadline cfq
|
noop [deadline] cfq
|
||||||
|
|||||||
@@ -154,7 +154,7 @@ The stages that a patch goes through are, generally:
|
|||||||
inclusion, it should be accepted by a relevant subsystem maintainer -
|
inclusion, it should be accepted by a relevant subsystem maintainer -
|
||||||
though this acceptance is not a guarantee that the patch will make it
|
though this acceptance is not a guarantee that the patch will make it
|
||||||
all the way to the mainline. The patch will show up in the maintainer's
|
all the way to the mainline. The patch will show up in the maintainer's
|
||||||
subsystem tree and into the staging trees (described below). When the
|
subsystem tree and into the -next trees (described below). When the
|
||||||
process works, this step leads to more extensive review of the patch and
|
process works, this step leads to more extensive review of the patch and
|
||||||
the discovery of any problems resulting from the integration of this
|
the discovery of any problems resulting from the integration of this
|
||||||
patch with work being done by others.
|
patch with work being done by others.
|
||||||
@@ -236,7 +236,7 @@ finding the right maintainer. Sending patches directly to Linus is not
|
|||||||
normally the right way to go.
|
normally the right way to go.
|
||||||
|
|
||||||
|
|
||||||
2.4: STAGING TREES
|
2.4: NEXT TREES
|
||||||
|
|
||||||
The chain of subsystem trees guides the flow of patches into the kernel,
|
The chain of subsystem trees guides the flow of patches into the kernel,
|
||||||
but it also raises an interesting question: what if somebody wants to look
|
but it also raises an interesting question: what if somebody wants to look
|
||||||
@@ -250,7 +250,7 @@ changes land in the mainline kernel. One could pull changes from all of
|
|||||||
the interesting subsystem trees, but that would be a big and error-prone
|
the interesting subsystem trees, but that would be a big and error-prone
|
||||||
job.
|
job.
|
||||||
|
|
||||||
The answer comes in the form of staging trees, where subsystem trees are
|
The answer comes in the form of -next trees, where subsystem trees are
|
||||||
collected for testing and review. The older of these trees, maintained by
|
collected for testing and review. The older of these trees, maintained by
|
||||||
Andrew Morton, is called "-mm" (for memory management, which is how it got
|
Andrew Morton, is called "-mm" (for memory management, which is how it got
|
||||||
started). The -mm tree integrates patches from a long list of subsystem
|
started). The -mm tree integrates patches from a long list of subsystem
|
||||||
@@ -275,7 +275,7 @@ directory at:
|
|||||||
Use of the MMOTM tree is likely to be a frustrating experience, though;
|
Use of the MMOTM tree is likely to be a frustrating experience, though;
|
||||||
there is a definite chance that it will not even compile.
|
there is a definite chance that it will not even compile.
|
||||||
|
|
||||||
The other staging tree, started more recently, is linux-next, maintained by
|
The other -next tree, started more recently, is linux-next, maintained by
|
||||||
Stephen Rothwell. The linux-next tree is, by design, a snapshot of what
|
Stephen Rothwell. The linux-next tree is, by design, a snapshot of what
|
||||||
the mainline is expected to look like after the next merge window closes.
|
the mainline is expected to look like after the next merge window closes.
|
||||||
Linux-next trees are announced on the linux-kernel and linux-next mailing
|
Linux-next trees are announced on the linux-kernel and linux-next mailing
|
||||||
@@ -303,12 +303,25 @@ volatility of linux-next tends to make it a difficult development target.
|
|||||||
See http://lwn.net/Articles/289013/ for more information on this topic, and
|
See http://lwn.net/Articles/289013/ for more information on this topic, and
|
||||||
stay tuned; much is still in flux where linux-next is involved.
|
stay tuned; much is still in flux where linux-next is involved.
|
||||||
|
|
||||||
Besides the mmotm and linux-next trees, the kernel source tree now contains
|
2.4.1: STAGING TREES
|
||||||
the drivers/staging/ directory and many sub-directories for drivers or
|
|
||||||
filesystems that are on their way to being added to the kernel tree
|
|
||||||
proper, but they remain in drivers/staging/ while they still need more
|
|
||||||
work.
|
|
||||||
|
|
||||||
|
The kernel source tree now contains the drivers/staging/ directory, where
|
||||||
|
many sub-directories for drivers or filesystems that are on their way to
|
||||||
|
being added to the kernel tree live. They remain in drivers/staging while
|
||||||
|
they still need more work; once complete, they can be moved into the
|
||||||
|
kernel proper. This is a way to keep track of drivers that aren't
|
||||||
|
up to Linux kernel coding or quality standards, but people may want to use
|
||||||
|
them and track development.
|
||||||
|
|
||||||
|
Greg Kroah-Hartman currently (as of 2.6.36) maintains the staging tree.
|
||||||
|
Drivers that still need work are sent to him, with each driver having
|
||||||
|
its own subdirectory in drivers/staging/. Along with the driver source
|
||||||
|
files, a TODO file should be present in the directory as well. The TODO
|
||||||
|
file lists the pending work that the driver needs for acceptance into
|
||||||
|
the kernel proper, as well as a list of people that should be Cc'd for any
|
||||||
|
patches to the driver. Staging drivers that don't currently build should
|
||||||
|
have their config entries depend upon CONFIG_BROKEN. Once they can
|
||||||
|
be successfully built without outside patches, CONFIG_BROKEN can be removed.
|
||||||
|
|
||||||
2.5: TOOLS
|
2.5: TOOLS
|
||||||
|
|
||||||
|
|||||||
@@ -1,129 +0,0 @@
|
|||||||
|
|
||||||
Device Interfaces
|
|
||||||
|
|
||||||
Introduction
|
|
||||||
~~~~~~~~~~~~
|
|
||||||
|
|
||||||
Device interfaces are the logical interfaces of device classes that correlate
|
|
||||||
directly to userspace interfaces, like device nodes.
|
|
||||||
|
|
||||||
Each device class may have multiple interfaces through which you can
|
|
||||||
access the same device. An input device may support the mouse interface,
|
|
||||||
the 'evdev' interface, and the touchscreen interface. A SCSI disk would
|
|
||||||
support the disk interface, the SCSI generic interface, and possibly a raw
|
|
||||||
device interface.
|
|
||||||
|
|
||||||
Device interfaces are registered with the class they belong to. As devices
|
|
||||||
are added to the class, they are added to each interface registered with
|
|
||||||
the class. The interface is responsible for determining whether the device
|
|
||||||
supports the interface or not.
|
|
||||||
|
|
||||||
|
|
||||||
Programming Interface
|
|
||||||
~~~~~~~~~~~~~~~~~~~~~
|
|
||||||
|
|
||||||
struct device_interface {
|
|
||||||
char * name;
|
|
||||||
rwlock_t lock;
|
|
||||||
u32 devnum;
|
|
||||||
struct device_class * devclass;
|
|
||||||
|
|
||||||
struct list_head node;
|
|
||||||
struct driver_dir_entry dir;
|
|
||||||
|
|
||||||
int (*add_device)(struct device *);
|
|
||||||
int (*add_device)(struct intf_data *);
|
|
||||||
};
|
|
||||||
|
|
||||||
int interface_register(struct device_interface *);
|
|
||||||
void interface_unregister(struct device_interface *);
|
|
||||||
|
|
||||||
|
|
||||||
An interface must specify the device class it belongs to. It is added
|
|
||||||
to that class's list of interfaces on registration.
|
|
||||||
|
|
||||||
|
|
||||||
Interfaces can be added to a device class at any time. Whenever it is
|
|
||||||
added, each device in the class is passed to the interface's
|
|
||||||
add_device callback. When an interface is removed, each device is
|
|
||||||
removed from the interface.
|
|
||||||
|
|
||||||
|
|
||||||
Devices
|
|
||||||
~~~~~~~
|
|
||||||
Once a device is added to a device class, it is added to each
|
|
||||||
interface that is registered with the device class. The class
|
|
||||||
is expected to place a class-specific data structure in
|
|
||||||
struct device::class_data. The interface can use that (along with
|
|
||||||
other fields of struct device) to determine whether or not the driver
|
|
||||||
and/or device support that particular interface.
|
|
||||||
|
|
||||||
|
|
||||||
Data
|
|
||||||
~~~~
|
|
||||||
|
|
||||||
struct intf_data {
|
|
||||||
struct list_head node;
|
|
||||||
struct device_interface * intf;
|
|
||||||
struct device * dev;
|
|
||||||
u32 intf_num;
|
|
||||||
};
|
|
||||||
|
|
||||||
int interface_add_data(struct interface_data *);
|
|
||||||
|
|
||||||
The interface is responsible for allocating and initializing a struct
|
|
||||||
intf_data and calling interface_add_data() to add it to the device's list
|
|
||||||
of interfaces it belongs to. This list will be iterated over when the device
|
|
||||||
is removed from the class (instead of all possible interfaces for a class).
|
|
||||||
This structure should probably be embedded in whatever per-device data
|
|
||||||
structure the interface is allocating anyway.
|
|
||||||
|
|
||||||
Devices are enumerated within the interface. This happens in interface_add_data()
|
|
||||||
and the enumerated value is stored in the struct intf_data for that device.
|
|
||||||
|
|
||||||
sysfs
|
|
||||||
~~~~~
|
|
||||||
Each interface is given a directory in the directory of the device
|
|
||||||
class it belongs to:
|
|
||||||
|
|
||||||
Interfaces get a directory in the class's directory as well:
|
|
||||||
|
|
||||||
class/
|
|
||||||
`-- input
|
|
||||||
|-- devices
|
|
||||||
|-- drivers
|
|
||||||
|-- mouse
|
|
||||||
`-- evdev
|
|
||||||
|
|
||||||
When a device is added to the interface, a symlink is created that points
|
|
||||||
to the device's directory in the physical hierarchy:
|
|
||||||
|
|
||||||
class/
|
|
||||||
`-- input
|
|
||||||
|-- devices
|
|
||||||
| `-- 1 -> ../../../root/pci0/00:1f.0/usb_bus/00:1f.2-1:0/
|
|
||||||
|-- drivers
|
|
||||||
| `-- usb:usb_mouse -> ../../../bus/drivers/usb_mouse/
|
|
||||||
|-- mouse
|
|
||||||
| `-- 1 -> ../../../root/pci0/00:1f.0/usb_bus/00:1f.2-1:0/
|
|
||||||
`-- evdev
|
|
||||||
`-- 1 -> ../../../root/pci0/00:1f.0/usb_bus/00:1f.2-1:0/
|
|
||||||
|
|
||||||
|
|
||||||
Future Plans
|
|
||||||
~~~~~~~~~~~~
|
|
||||||
A device interface is correlated directly with a userspace interface
|
|
||||||
for a device, specifically a device node. For instance, a SCSI disk
|
|
||||||
exposes at least two interfaces to userspace: the standard SCSI disk
|
|
||||||
interface and the SCSI generic interface. It might also export a raw
|
|
||||||
device interface.
|
|
||||||
|
|
||||||
Many interfaces have a major number associated with them and each
|
|
||||||
device gets a minor number. Or, multiple interfaces might share one
|
|
||||||
major number, and each will receive a range of minor numbers (like in
|
|
||||||
the case of input devices).
|
|
||||||
|
|
||||||
These major and minor numbers could be stored in the interface
|
|
||||||
structure. Major and minor allocations could happen when the interface
|
|
||||||
is registered with the class, or via a helper function.
|
|
||||||
|
|
||||||
@@ -196,7 +196,7 @@ csrow3.
|
|||||||
The representation of the above is reflected in the directory tree
|
The representation of the above is reflected in the directory tree
|
||||||
in EDAC's sysfs interface. Starting in directory
|
in EDAC's sysfs interface. Starting in directory
|
||||||
/sys/devices/system/edac/mc each memory controller will be represented
|
/sys/devices/system/edac/mc each memory controller will be represented
|
||||||
by its own 'mcX' directory, where 'X" is the index of the MC.
|
by its own 'mcX' directory, where 'X' is the index of the MC.
|
||||||
|
|
||||||
|
|
||||||
..../edac/mc/
|
..../edac/mc/
|
||||||
@@ -207,7 +207,7 @@ by its own 'mcX' directory, where 'X" is the index of the MC.
|
|||||||
....
|
....
|
||||||
|
|
||||||
Under each 'mcX' directory each 'csrowX' is again represented by a
|
Under each 'mcX' directory each 'csrowX' is again represented by a
|
||||||
'csrowX', where 'X" is the csrow index:
|
'csrowX', where 'X' is the csrow index:
|
||||||
|
|
||||||
|
|
||||||
.../mc/mc0/
|
.../mc/mc0/
|
||||||
@@ -232,7 +232,7 @@ EDAC control and attribute files.
|
|||||||
|
|
||||||
|
|
||||||
In 'mcX' directories are EDAC control and attribute files for
|
In 'mcX' directories are EDAC control and attribute files for
|
||||||
this 'X" instance of the memory controllers:
|
this 'X' instance of the memory controllers:
|
||||||
|
|
||||||
|
|
||||||
Counter reset control file:
|
Counter reset control file:
|
||||||
@@ -343,7 +343,7 @@ Sdram memory scrubbing rate:
|
|||||||
'csrowX' DIRECTORIES
|
'csrowX' DIRECTORIES
|
||||||
|
|
||||||
In the 'csrowX' directories are EDAC control and attribute files for
|
In the 'csrowX' directories are EDAC control and attribute files for
|
||||||
this 'X" instance of csrow:
|
this 'X' instance of csrow:
|
||||||
|
|
||||||
|
|
||||||
Total Uncorrectable Errors count attribute file:
|
Total Uncorrectable Errors count attribute file:
|
||||||
|
|||||||
@@ -4,33 +4,41 @@ please mail me.
|
|||||||
Geert Uytterhoeven <geert@linux-m68k.org>
|
Geert Uytterhoeven <geert@linux-m68k.org>
|
||||||
|
|
||||||
00-INDEX
|
00-INDEX
|
||||||
- this file
|
- this file.
|
||||||
arkfb.txt
|
arkfb.txt
|
||||||
- info on the fbdev driver for ARK Logic chips.
|
- info on the fbdev driver for ARK Logic chips.
|
||||||
aty128fb.txt
|
aty128fb.txt
|
||||||
- info on the ATI Rage128 frame buffer driver.
|
- info on the ATI Rage128 frame buffer driver.
|
||||||
cirrusfb.txt
|
cirrusfb.txt
|
||||||
- info on the driver for Cirrus Logic chipsets.
|
- info on the driver for Cirrus Logic chipsets.
|
||||||
|
cmap_xfbdev.txt
|
||||||
|
- an introduction to fbdev's cmap structures.
|
||||||
deferred_io.txt
|
deferred_io.txt
|
||||||
- an introduction to deferred IO.
|
- an introduction to deferred IO.
|
||||||
|
efifb.txt
|
||||||
|
- info on the EFI platform driver for Intel based Apple computers.
|
||||||
|
ep93xx-fb.txt
|
||||||
|
- info on the driver for EP93xx LCD controller.
|
||||||
fbcon.txt
|
fbcon.txt
|
||||||
- intro to and usage guide for the framebuffer console (fbcon).
|
- intro to and usage guide for the framebuffer console (fbcon).
|
||||||
framebuffer.txt
|
framebuffer.txt
|
||||||
- introduction to frame buffer devices.
|
- introduction to frame buffer devices.
|
||||||
imacfb.txt
|
gxfb.txt
|
||||||
- info on the generic EFI platform driver for Intel based Macs.
|
- info on the framebuffer driver for AMD Geode GX2 based processors.
|
||||||
intel810.txt
|
intel810.txt
|
||||||
- documentation for the Intel 810/815 framebuffer driver.
|
- documentation for the Intel 810/815 framebuffer driver.
|
||||||
intelfb.txt
|
intelfb.txt
|
||||||
- docs for Intel 830M/845G/852GM/855GM/865G/915G/945G fb driver.
|
- docs for Intel 830M/845G/852GM/855GM/865G/915G/945G fb driver.
|
||||||
internals.txt
|
internals.txt
|
||||||
- quick overview of frame buffer device internals.
|
- quick overview of frame buffer device internals.
|
||||||
|
lxfb.txt
|
||||||
|
- info on the framebuffer driver for AMD Geode LX based processors.
|
||||||
matroxfb.txt
|
matroxfb.txt
|
||||||
- info on the Matrox framebuffer driver for Alpha, Intel and PPC.
|
- info on the Matrox framebuffer driver for Alpha, Intel and PPC.
|
||||||
|
metronomefb.txt
|
||||||
|
- info on the driver for the Metronome display controller.
|
||||||
modedb.txt
|
modedb.txt
|
||||||
- info on the video mode database.
|
- info on the video mode database.
|
||||||
matroxfb.txt
|
|
||||||
- info on the Matrox frame buffer driver.
|
|
||||||
pvr2fb.txt
|
pvr2fb.txt
|
||||||
- info on the PowerVR 2 frame buffer driver.
|
- info on the PowerVR 2 frame buffer driver.
|
||||||
pxafb.txt
|
pxafb.txt
|
||||||
@@ -39,13 +47,23 @@ s3fb.txt
|
|||||||
- info on the fbdev driver for S3 Trio/Virge chips.
|
- info on the fbdev driver for S3 Trio/Virge chips.
|
||||||
sa1100fb.txt
|
sa1100fb.txt
|
||||||
- information about the driver for the SA-1100 LCD controller.
|
- information about the driver for the SA-1100 LCD controller.
|
||||||
|
sh7760fb.txt
|
||||||
|
- info on the SH7760/SH7763 integrated LCDC Framebuffer driver.
|
||||||
sisfb.txt
|
sisfb.txt
|
||||||
- info on the framebuffer device driver for various SiS chips.
|
- info on the framebuffer device driver for various SiS chips.
|
||||||
sstfb.txt
|
sstfb.txt
|
||||||
- info on the frame buffer driver for 3dfx' Voodoo Graphics boards.
|
- info on the frame buffer driver for 3dfx' Voodoo Graphics boards.
|
||||||
tgafb.txt
|
tgafb.txt
|
||||||
- info on the TGA (DECChip 21030) frame buffer driver
|
- info on the TGA (DECChip 21030) frame buffer driver.
|
||||||
|
tridentfb.txt
|
||||||
|
info on the framebuffer driver for some Trident chip based cards.
|
||||||
|
uvesafb.txt
|
||||||
|
- info on the userspace VESA (VBE2+ compliant) frame buffer device.
|
||||||
vesafb.txt
|
vesafb.txt
|
||||||
- info on the VESA frame buffer device
|
- info on the VESA frame buffer device.
|
||||||
|
viafb.modes
|
||||||
|
- list of modes for VIA Integration Graphic Chip.
|
||||||
|
viafb.txt
|
||||||
|
- info on the VIA Integration Graphic Chip console framebuffer driver.
|
||||||
vt8623fb.txt
|
vt8623fb.txt
|
||||||
- info on the fb driver for the graphics core in VIA VT8623 chipsets.
|
- info on the fb driver for the graphics core in VIA VT8623 chipsets.
|
||||||
|
|||||||
@@ -554,3 +554,13 @@ Why: This is a legacy interface which have been replaced by a more
|
|||||||
Who: NeilBrown <neilb@suse.de>
|
Who: NeilBrown <neilb@suse.de>
|
||||||
|
|
||||||
----------------------------
|
----------------------------
|
||||||
|
|
||||||
|
What: i2c_adapter.id
|
||||||
|
When: June 2011
|
||||||
|
Why: This field is deprecated. I2C device drivers shouldn't change their
|
||||||
|
behavior based on the underlying I2C adapter. Instead, the I2C
|
||||||
|
adapter driver should instantiate the I2C devices and provide the
|
||||||
|
needed platform-specific information.
|
||||||
|
Who: Jean Delvare <khali@linux-fr.org>
|
||||||
|
|
||||||
|
----------------------------
|
||||||
|
|||||||
@@ -173,12 +173,13 @@ prototypes:
|
|||||||
sector_t (*bmap)(struct address_space *, sector_t);
|
sector_t (*bmap)(struct address_space *, sector_t);
|
||||||
int (*invalidatepage) (struct page *, unsigned long);
|
int (*invalidatepage) (struct page *, unsigned long);
|
||||||
int (*releasepage) (struct page *, int);
|
int (*releasepage) (struct page *, int);
|
||||||
|
void (*freepage)(struct page *);
|
||||||
int (*direct_IO)(int, struct kiocb *, const struct iovec *iov,
|
int (*direct_IO)(int, struct kiocb *, const struct iovec *iov,
|
||||||
loff_t offset, unsigned long nr_segs);
|
loff_t offset, unsigned long nr_segs);
|
||||||
int (*launder_page) (struct page *);
|
int (*launder_page) (struct page *);
|
||||||
|
|
||||||
locking rules:
|
locking rules:
|
||||||
All except set_page_dirty may block
|
All except set_page_dirty and freepage may block
|
||||||
|
|
||||||
BKL PageLocked(page) i_mutex
|
BKL PageLocked(page) i_mutex
|
||||||
writepage: no yes, unlocks (see below)
|
writepage: no yes, unlocks (see below)
|
||||||
@@ -193,6 +194,7 @@ perform_write: no n/a yes
|
|||||||
bmap: no
|
bmap: no
|
||||||
invalidatepage: no yes
|
invalidatepage: no yes
|
||||||
releasepage: no yes
|
releasepage: no yes
|
||||||
|
freepage: no yes
|
||||||
direct_IO: no
|
direct_IO: no
|
||||||
launder_page: no yes
|
launder_page: no yes
|
||||||
|
|
||||||
@@ -288,6 +290,9 @@ buffers from the page in preparation for freeing it. It returns zero to
|
|||||||
indicate that the buffers are (or may be) freeable. If ->releasepage is zero,
|
indicate that the buffers are (or may be) freeable. If ->releasepage is zero,
|
||||||
the kernel assumes that the fs has no private interest in the buffers.
|
the kernel assumes that the fs has no private interest in the buffers.
|
||||||
|
|
||||||
|
->freepage() is called when the kernel is done dropping the page
|
||||||
|
from the page cache.
|
||||||
|
|
||||||
->launder_page() may be called prior to releasing a page if
|
->launder_page() may be called prior to releasing a page if
|
||||||
it is still found to be dirty. It returns zero if the page was successfully
|
it is still found to be dirty. It returns zero if the page was successfully
|
||||||
cleaned, or an error value if not. Note that in order to prevent the page
|
cleaned, or an error value if not. Note that in order to prevent the page
|
||||||
@@ -322,7 +327,6 @@ fl_release_private: yes yes
|
|||||||
prototypes:
|
prototypes:
|
||||||
int (*fl_compare_owner)(struct file_lock *, struct file_lock *);
|
int (*fl_compare_owner)(struct file_lock *, struct file_lock *);
|
||||||
void (*fl_notify)(struct file_lock *); /* unblock callback */
|
void (*fl_notify)(struct file_lock *); /* unblock callback */
|
||||||
void (*fl_copy_lock)(struct file_lock *, struct file_lock *);
|
|
||||||
void (*fl_release_private)(struct file_lock *);
|
void (*fl_release_private)(struct file_lock *);
|
||||||
void (*fl_break)(struct file_lock *); /* break_lease callback */
|
void (*fl_break)(struct file_lock *); /* break_lease callback */
|
||||||
|
|
||||||
@@ -330,7 +334,6 @@ locking rules:
|
|||||||
BKL may block
|
BKL may block
|
||||||
fl_compare_owner: yes no
|
fl_compare_owner: yes no
|
||||||
fl_notify: yes no
|
fl_notify: yes no
|
||||||
fl_copy_lock: yes no
|
|
||||||
fl_release_private: yes yes
|
fl_release_private: yes yes
|
||||||
fl_break: yes no
|
fl_break: yes no
|
||||||
|
|
||||||
|
|||||||
@@ -89,7 +89,7 @@ static ssize_t childless_storeme_write(struct childless *childless,
|
|||||||
char *p = (char *) page;
|
char *p = (char *) page;
|
||||||
|
|
||||||
tmp = simple_strtoul(p, &p, 10);
|
tmp = simple_strtoul(p, &p, 10);
|
||||||
if (!p || (*p && (*p != '\n')))
|
if ((*p != '\0') && (*p != '\n'))
|
||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
|
|
||||||
if (tmp > INT_MAX)
|
if (tmp > INT_MAX)
|
||||||
|
|||||||
@@ -534,6 +534,7 @@ struct address_space_operations {
|
|||||||
sector_t (*bmap)(struct address_space *, sector_t);
|
sector_t (*bmap)(struct address_space *, sector_t);
|
||||||
int (*invalidatepage) (struct page *, unsigned long);
|
int (*invalidatepage) (struct page *, unsigned long);
|
||||||
int (*releasepage) (struct page *, int);
|
int (*releasepage) (struct page *, int);
|
||||||
|
void (*freepage)(struct page *);
|
||||||
ssize_t (*direct_IO)(int, struct kiocb *, const struct iovec *iov,
|
ssize_t (*direct_IO)(int, struct kiocb *, const struct iovec *iov,
|
||||||
loff_t offset, unsigned long nr_segs);
|
loff_t offset, unsigned long nr_segs);
|
||||||
struct page* (*get_xip_page)(struct address_space *, sector_t,
|
struct page* (*get_xip_page)(struct address_space *, sector_t,
|
||||||
@@ -660,11 +661,10 @@ struct address_space_operations {
|
|||||||
releasepage: releasepage is called on PagePrivate pages to indicate
|
releasepage: releasepage is called on PagePrivate pages to indicate
|
||||||
that the page should be freed if possible. ->releasepage
|
that the page should be freed if possible. ->releasepage
|
||||||
should remove any private data from the page and clear the
|
should remove any private data from the page and clear the
|
||||||
PagePrivate flag. It may also remove the page from the
|
PagePrivate flag. If releasepage() fails for some reason, it must
|
||||||
address_space. If this fails for some reason, it may indicate
|
indicate failure with a 0 return value.
|
||||||
failure with a 0 return value.
|
releasepage() is used in two distinct though related cases. The
|
||||||
This is used in two distinct though related cases. The first
|
first is when the VM finds a clean page with no active users and
|
||||||
is when the VM finds a clean page with no active users and
|
|
||||||
wants to make it a free page. If ->releasepage succeeds, the
|
wants to make it a free page. If ->releasepage succeeds, the
|
||||||
page will be removed from the address_space and become free.
|
page will be removed from the address_space and become free.
|
||||||
|
|
||||||
@@ -679,6 +679,12 @@ struct address_space_operations {
|
|||||||
need to ensure this. Possibly it can clear the PageUptodate
|
need to ensure this. Possibly it can clear the PageUptodate
|
||||||
bit if it cannot free private data yet.
|
bit if it cannot free private data yet.
|
||||||
|
|
||||||
|
freepage: freepage is called once the page is no longer visible in
|
||||||
|
the page cache in order to allow the cleanup of any private
|
||||||
|
data. Since it may be called by the memory reclaimer, it
|
||||||
|
should not assume that the original address_space mapping still
|
||||||
|
exists, and it should not block.
|
||||||
|
|
||||||
direct_IO: called by the generic read/write routines to perform
|
direct_IO: called by the generic read/write routines to perform
|
||||||
direct_IO - that is IO requests which bypass the page cache
|
direct_IO - that is IO requests which bypass the page cache
|
||||||
and transfer data directly between the storage and the
|
and transfer data directly between the storage and the
|
||||||
|
|||||||
@@ -794,17 +794,6 @@ designed.
|
|||||||
|
|
||||||
Roadmap:
|
Roadmap:
|
||||||
|
|
||||||
2.6.37 Remove experimental tag from mount option
|
|
||||||
=> should be roughly 6 months after initial merge
|
|
||||||
=> enough time to:
|
|
||||||
=> gain confidence and fix problems reported by early
|
|
||||||
adopters (a.k.a. guinea pigs)
|
|
||||||
=> address worst performance regressions and undesired
|
|
||||||
behaviours
|
|
||||||
=> start tuning/optimising code for parallelism
|
|
||||||
=> start tuning/optimising algorithms consuming
|
|
||||||
excessive CPU time
|
|
||||||
|
|
||||||
2.6.39 Switch default mount option to use delayed logging
|
2.6.39 Switch default mount option to use delayed logging
|
||||||
=> should be roughly 12 months after initial merge
|
=> should be roughly 12 months after initial merge
|
||||||
=> enough time to shake out remaining problems before next round of
|
=> enough time to shake out remaining problems before next round of
|
||||||
|
|||||||
@@ -617,6 +617,16 @@ and have the following read/write attributes:
|
|||||||
is configured as an output, this value may be written;
|
is configured as an output, this value may be written;
|
||||||
any nonzero value is treated as high.
|
any nonzero value is treated as high.
|
||||||
|
|
||||||
|
If the pin can be configured as interrupt-generating interrupt
|
||||||
|
and if it has been configured to generate interrupts (see the
|
||||||
|
description of "edge"), you can poll(2) on that file and
|
||||||
|
poll(2) will return whenever the interrupt was triggered. If
|
||||||
|
you use poll(2), set the events POLLPRI and POLLERR. If you
|
||||||
|
use select(2), set the file descriptor in exceptfds. After
|
||||||
|
poll(2) returns, either lseek(2) to the beginning of the sysfs
|
||||||
|
file and read the new value or close the file and re-open it
|
||||||
|
to read the value.
|
||||||
|
|
||||||
"edge" ... reads as either "none", "rising", "falling", or
|
"edge" ... reads as either "none", "rising", "falling", or
|
||||||
"both". Write these strings to select the signal edge(s)
|
"both". Write these strings to select the signal edge(s)
|
||||||
that will make poll(2) on the "value" file return.
|
that will make poll(2) on the "value" file return.
|
||||||
|
|||||||
@@ -11,7 +11,7 @@ Authors:
|
|||||||
Mark M. Hoffman <mhoffman@lightlink.com>
|
Mark M. Hoffman <mhoffman@lightlink.com>
|
||||||
Ported to 2.6 by Eric J. Bowersox <ericb@aspsys.com>
|
Ported to 2.6 by Eric J. Bowersox <ericb@aspsys.com>
|
||||||
Adapted to 2.6.20 by Carsten Emde <ce@osadl.org>
|
Adapted to 2.6.20 by Carsten Emde <ce@osadl.org>
|
||||||
Modified for mainline integration by Hans J. Koch <hjk@linutronix.de>
|
Modified for mainline integration by Hans J. Koch <hjk@hansjkoch.de>
|
||||||
|
|
||||||
Module Parameters
|
Module Parameters
|
||||||
-----------------
|
-----------------
|
||||||
|
|||||||
@@ -8,7 +8,7 @@ Supported chips:
|
|||||||
Datasheet: http://pdfserv.maxim-ic.com/en/ds/MAX6650-MAX6651.pdf
|
Datasheet: http://pdfserv.maxim-ic.com/en/ds/MAX6650-MAX6651.pdf
|
||||||
|
|
||||||
Authors:
|
Authors:
|
||||||
Hans J. Koch <hjk@linutronix.de>
|
Hans J. Koch <hjk@hansjkoch.de>
|
||||||
John Morris <john.morris@spirentcom.com>
|
John Morris <john.morris@spirentcom.com>
|
||||||
Claus Gindhart <claus.gindhart@kontron.com>
|
Claus Gindhart <claus.gindhart@kontron.com>
|
||||||
|
|
||||||
|
|||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user