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' of master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6
Conflicts: arch/microblaze/include/asm/socket.h
This commit is contained in:
@@ -2006,6 +2006,9 @@ E: paul@laufernet.com
|
|||||||
D: Soundblaster driver fixes, ISAPnP quirk
|
D: Soundblaster driver fixes, ISAPnP quirk
|
||||||
S: California, USA
|
S: California, USA
|
||||||
|
|
||||||
|
N: Jonathan Layes
|
||||||
|
D: ARPD support
|
||||||
|
|
||||||
N: Tom Lees
|
N: Tom Lees
|
||||||
E: tom@lpsg.demon.co.uk
|
E: tom@lpsg.demon.co.uk
|
||||||
W: http://www.lpsg.demon.co.uk/
|
W: http://www.lpsg.demon.co.uk/
|
||||||
@@ -3802,6 +3805,9 @@ S: van Bronckhorststraat 12
|
|||||||
S: 2612 XV Delft
|
S: 2612 XV Delft
|
||||||
S: The Netherlands
|
S: The Netherlands
|
||||||
|
|
||||||
|
N: Thomas Woller
|
||||||
|
D: CS461x Cirrus Logic sound driver
|
||||||
|
|
||||||
N: David Woodhouse
|
N: David Woodhouse
|
||||||
E: dwmw2@infradead.org
|
E: dwmw2@infradead.org
|
||||||
D: JFFS2 file system, Memory Technology Device subsystem,
|
D: JFFS2 file system, Memory Technology Device subsystem,
|
||||||
|
|||||||
@@ -94,28 +94,37 @@ What: /sys/block/<disk>/queue/physical_block_size
|
|||||||
Date: May 2009
|
Date: May 2009
|
||||||
Contact: Martin K. Petersen <martin.petersen@oracle.com>
|
Contact: Martin K. Petersen <martin.petersen@oracle.com>
|
||||||
Description:
|
Description:
|
||||||
This is the smallest unit the storage device can write
|
This is the smallest unit a physical storage device can
|
||||||
without resorting to read-modify-write operation. It is
|
write atomically. It is usually the same as the logical
|
||||||
usually the same as the logical block size but may be
|
block size but may be bigger. One example is SATA
|
||||||
bigger. One example is SATA drives with 4KB sectors
|
drives with 4KB sectors that expose a 512-byte logical
|
||||||
that expose a 512-byte logical block size to the
|
block size to the operating system. For stacked block
|
||||||
operating system.
|
devices the physical_block_size variable contains the
|
||||||
|
maximum physical_block_size of the component devices.
|
||||||
|
|
||||||
What: /sys/block/<disk>/queue/minimum_io_size
|
What: /sys/block/<disk>/queue/minimum_io_size
|
||||||
Date: April 2009
|
Date: April 2009
|
||||||
Contact: Martin K. Petersen <martin.petersen@oracle.com>
|
Contact: Martin K. Petersen <martin.petersen@oracle.com>
|
||||||
Description:
|
Description:
|
||||||
Storage devices may report a preferred minimum I/O size,
|
Storage devices may report a granularity or preferred
|
||||||
which is the smallest request the device can perform
|
minimum I/O size which is the smallest request the
|
||||||
without incurring a read-modify-write penalty. For disk
|
device can perform without incurring a performance
|
||||||
drives this is often the physical block size. For RAID
|
penalty. For disk drives this is often the physical
|
||||||
arrays it is often the stripe chunk size.
|
block size. For RAID arrays it is often the stripe
|
||||||
|
chunk size. A properly aligned multiple of
|
||||||
|
minimum_io_size is the preferred request size for
|
||||||
|
workloads where a high number of I/O operations is
|
||||||
|
desired.
|
||||||
|
|
||||||
What: /sys/block/<disk>/queue/optimal_io_size
|
What: /sys/block/<disk>/queue/optimal_io_size
|
||||||
Date: April 2009
|
Date: April 2009
|
||||||
Contact: Martin K. Petersen <martin.petersen@oracle.com>
|
Contact: Martin K. Petersen <martin.petersen@oracle.com>
|
||||||
Description:
|
Description:
|
||||||
Storage devices may report an optimal I/O size, which is
|
Storage devices may report an optimal I/O size, which is
|
||||||
the device's preferred unit of receiving I/O. This is
|
the device's preferred unit for sustained I/O. This is
|
||||||
rarely reported for disk drives. For RAID devices it is
|
rarely reported for disk drives. For RAID arrays it is
|
||||||
usually the stripe width or the internal block size.
|
usually the stripe width or the internal track size. A
|
||||||
|
properly aligned multiple of optimal_io_size is the
|
||||||
|
preferred request size for workloads where sustained
|
||||||
|
throughput is desired. If no optimal I/O size is
|
||||||
|
reported this file contains 0.
|
||||||
|
|||||||
@@ -21,6 +21,8 @@ ffff8000 ffffffff copy_user_page / clear_user_page use.
|
|||||||
For SA11xx and Xscale, this is used to
|
For SA11xx and Xscale, this is used to
|
||||||
setup a minicache mapping.
|
setup a minicache mapping.
|
||||||
|
|
||||||
|
ffff4000 ffffffff cache aliasing on ARMv6 and later CPUs.
|
||||||
|
|
||||||
ffff1000 ffff7fff Reserved.
|
ffff1000 ffff7fff Reserved.
|
||||||
Platforms must not use this address range.
|
Platforms must not use this address range.
|
||||||
|
|
||||||
|
|||||||
@@ -207,8 +207,8 @@ Attributes
|
|||||||
~~~~~~~~~~
|
~~~~~~~~~~
|
||||||
struct driver_attribute {
|
struct driver_attribute {
|
||||||
struct attribute attr;
|
struct attribute attr;
|
||||||
ssize_t (*show)(struct device_driver *, char * buf, size_t count, loff_t off);
|
ssize_t (*show)(struct device_driver *driver, char *buf);
|
||||||
ssize_t (*store)(struct device_driver *, const char * buf, size_t count, loff_t off);
|
ssize_t (*store)(struct device_driver *, const char * buf, size_t count);
|
||||||
};
|
};
|
||||||
|
|
||||||
Device drivers can export attributes via their sysfs directories.
|
Device drivers can export attributes via their sysfs directories.
|
||||||
|
|||||||
@@ -25,7 +25,7 @@ use IO::Handle;
|
|||||||
"tda10046lifeview", "av7110", "dec2000t", "dec2540t",
|
"tda10046lifeview", "av7110", "dec2000t", "dec2540t",
|
||||||
"dec3000s", "vp7041", "dibusb", "nxt2002", "nxt2004",
|
"dec3000s", "vp7041", "dibusb", "nxt2002", "nxt2004",
|
||||||
"or51211", "or51132_qam", "or51132_vsb", "bluebird",
|
"or51211", "or51132_qam", "or51132_vsb", "bluebird",
|
||||||
"opera1", "cx231xx", "cx18", "cx23885", "pvrusb2" );
|
"opera1", "cx231xx", "cx18", "cx23885", "pvrusb2", "mpc718" );
|
||||||
|
|
||||||
# Check args
|
# Check args
|
||||||
syntax() if (scalar(@ARGV) != 1);
|
syntax() if (scalar(@ARGV) != 1);
|
||||||
@@ -381,6 +381,57 @@ sub cx18 {
|
|||||||
$allfiles;
|
$allfiles;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
sub mpc718 {
|
||||||
|
my $archive = 'Yuan MPC718 TV Tuner Card 2.13.10.1016.zip';
|
||||||
|
my $url = "ftp://ftp.work.acer-euro.com/desktop/aspire_idea510/vista/Drivers/$archive";
|
||||||
|
my $fwfile = "dvb-cx18-mpc718-mt352.fw";
|
||||||
|
my $tmpdir = tempdir(DIR => "/tmp", CLEANUP => 1);
|
||||||
|
|
||||||
|
checkstandard();
|
||||||
|
wgetfile($archive, $url);
|
||||||
|
unzip($archive, $tmpdir);
|
||||||
|
|
||||||
|
my $sourcefile = "$tmpdir/Yuan MPC718 TV Tuner Card 2.13.10.1016/mpc718_32bit/yuanrap.sys";
|
||||||
|
my $found = 0;
|
||||||
|
|
||||||
|
open IN, '<', $sourcefile or die "Couldn't open $sourcefile to extract $fwfile data\n";
|
||||||
|
binmode IN;
|
||||||
|
open OUT, '>', $fwfile;
|
||||||
|
binmode OUT;
|
||||||
|
{
|
||||||
|
# Block scope because we change the line terminator variable $/
|
||||||
|
my $prevlen = 0;
|
||||||
|
my $currlen;
|
||||||
|
|
||||||
|
# Buried in the data segment are 3 runs of almost identical
|
||||||
|
# register-value pairs that end in 0x5d 0x01 which is a "TUNER GO"
|
||||||
|
# command for the MT352.
|
||||||
|
# Pull out the middle run (because it's easy) of register-value
|
||||||
|
# pairs to make the "firmware" file.
|
||||||
|
|
||||||
|
local $/ = "\x5d\x01"; # MT352 "TUNER GO"
|
||||||
|
|
||||||
|
while (<IN>) {
|
||||||
|
$currlen = length($_);
|
||||||
|
if ($prevlen == $currlen && $currlen <= 64) {
|
||||||
|
chop; chop; # Get rid of "TUNER GO"
|
||||||
|
s/^\0\0//; # get rid of leading 00 00 if it's there
|
||||||
|
printf OUT "$_";
|
||||||
|
$found = 1;
|
||||||
|
last;
|
||||||
|
}
|
||||||
|
$prevlen = $currlen;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
close OUT;
|
||||||
|
close IN;
|
||||||
|
if (!$found) {
|
||||||
|
unlink $fwfile;
|
||||||
|
die "Couldn't find valid register-value sequence in $sourcefile for $fwfile\n";
|
||||||
|
}
|
||||||
|
$fwfile;
|
||||||
|
}
|
||||||
|
|
||||||
sub cx23885 {
|
sub cx23885 {
|
||||||
my $url = "http://linuxtv.org/downloads/firmware/";
|
my $url = "http://linuxtv.org/downloads/firmware/";
|
||||||
|
|
||||||
|
|||||||
@@ -458,3 +458,13 @@ Why: Remove the old legacy 32bit machine check code. This has been
|
|||||||
but the old version has been kept around for easier testing. Note this
|
but the old version has been kept around for easier testing. Note this
|
||||||
doesn't impact the old P5 and WinChip machine check handlers.
|
doesn't impact the old P5 and WinChip machine check handlers.
|
||||||
Who: Andi Kleen <andi@firstfloor.org>
|
Who: Andi Kleen <andi@firstfloor.org>
|
||||||
|
|
||||||
|
----------------------------
|
||||||
|
|
||||||
|
What: lock_policy_rwsem_* and unlock_policy_rwsem_* will not be
|
||||||
|
exported interface anymore.
|
||||||
|
When: 2.6.33
|
||||||
|
Why: cpu_policy_rwsem has a new cleaner definition making it local to
|
||||||
|
cpufreq core and contained inside cpufreq.c. Other dependent
|
||||||
|
drivers should not use it in order to safely avoid lockdep issues.
|
||||||
|
Who: Venkatesh Pallipadi <venkatesh.pallipadi@intel.com>
|
||||||
|
|||||||
@@ -23,7 +23,8 @@ interface.
|
|||||||
Using sysfs
|
Using sysfs
|
||||||
~~~~~~~~~~~
|
~~~~~~~~~~~
|
||||||
|
|
||||||
sysfs is always compiled in. You can access it by doing:
|
sysfs is always compiled in if CONFIG_SYSFS is defined. You can access
|
||||||
|
it by doing:
|
||||||
|
|
||||||
mount -t sysfs sysfs /sys
|
mount -t sysfs sysfs /sys
|
||||||
|
|
||||||
|
|||||||
@@ -1725,8 +1725,8 @@ and is between 256 and 4096 characters. It is defined in the file
|
|||||||
oprofile.cpu_type= Force an oprofile cpu type
|
oprofile.cpu_type= Force an oprofile cpu type
|
||||||
This might be useful if you have an older oprofile
|
This might be useful if you have an older oprofile
|
||||||
userland or if you want common events.
|
userland or if you want common events.
|
||||||
Format: { archperfmon }
|
Format: { arch_perfmon }
|
||||||
archperfmon: [X86] Force use of architectural
|
arch_perfmon: [X86] Force use of architectural
|
||||||
perfmon on Intel CPUs instead of the
|
perfmon on Intel CPUs instead of the
|
||||||
CPU specific event set.
|
CPU specific event set.
|
||||||
|
|
||||||
|
|||||||
@@ -36,8 +36,6 @@ detailed description):
|
|||||||
- Bluetooth enable and disable
|
- Bluetooth enable and disable
|
||||||
- video output switching, expansion control
|
- video output switching, expansion control
|
||||||
- ThinkLight on and off
|
- ThinkLight on and off
|
||||||
- limited docking and undocking
|
|
||||||
- UltraBay eject
|
|
||||||
- CMOS/UCMS control
|
- CMOS/UCMS control
|
||||||
- LED control
|
- LED control
|
||||||
- ACPI sounds
|
- ACPI sounds
|
||||||
@@ -729,131 +727,6 @@ cannot be read or if it is unknown, thinkpad-acpi will report it as "off".
|
|||||||
It is impossible to know if the status returned through sysfs is valid.
|
It is impossible to know if the status returned through sysfs is valid.
|
||||||
|
|
||||||
|
|
||||||
Docking / undocking -- /proc/acpi/ibm/dock
|
|
||||||
------------------------------------------
|
|
||||||
|
|
||||||
Docking and undocking (e.g. with the X4 UltraBase) requires some
|
|
||||||
actions to be taken by the operating system to safely make or break
|
|
||||||
the electrical connections with the dock.
|
|
||||||
|
|
||||||
The docking feature of this driver generates the following ACPI events:
|
|
||||||
|
|
||||||
ibm/dock GDCK 00000003 00000001 -- eject request
|
|
||||||
ibm/dock GDCK 00000003 00000002 -- undocked
|
|
||||||
ibm/dock GDCK 00000000 00000003 -- docked
|
|
||||||
|
|
||||||
NOTE: These events will only be generated if the laptop was docked
|
|
||||||
when originally booted. This is due to the current lack of support for
|
|
||||||
hot plugging of devices in the Linux ACPI framework. If the laptop was
|
|
||||||
booted while not in the dock, the following message is shown in the
|
|
||||||
logs:
|
|
||||||
|
|
||||||
Mar 17 01:42:34 aero kernel: thinkpad_acpi: dock device not present
|
|
||||||
|
|
||||||
In this case, no dock-related events are generated but the dock and
|
|
||||||
undock commands described below still work. They can be executed
|
|
||||||
manually or triggered by Fn key combinations (see the example acpid
|
|
||||||
configuration files included in the driver tarball package available
|
|
||||||
on the web site).
|
|
||||||
|
|
||||||
When the eject request button on the dock is pressed, the first event
|
|
||||||
above is generated. The handler for this event should issue the
|
|
||||||
following command:
|
|
||||||
|
|
||||||
echo undock > /proc/acpi/ibm/dock
|
|
||||||
|
|
||||||
After the LED on the dock goes off, it is safe to eject the laptop.
|
|
||||||
Note: if you pressed this key by mistake, go ahead and eject the
|
|
||||||
laptop, then dock it back in. Otherwise, the dock may not function as
|
|
||||||
expected.
|
|
||||||
|
|
||||||
When the laptop is docked, the third event above is generated. The
|
|
||||||
handler for this event should issue the following command to fully
|
|
||||||
enable the dock:
|
|
||||||
|
|
||||||
echo dock > /proc/acpi/ibm/dock
|
|
||||||
|
|
||||||
The contents of the /proc/acpi/ibm/dock file shows the current status
|
|
||||||
of the dock, as provided by the ACPI framework.
|
|
||||||
|
|
||||||
The docking support in this driver does not take care of enabling or
|
|
||||||
disabling any other devices you may have attached to the dock. For
|
|
||||||
example, a CD drive plugged into the UltraBase needs to be disabled or
|
|
||||||
enabled separately. See the provided example acpid configuration files
|
|
||||||
for how this can be accomplished.
|
|
||||||
|
|
||||||
There is no support yet for PCI devices that may be attached to a
|
|
||||||
docking station, e.g. in the ThinkPad Dock II. The driver currently
|
|
||||||
does not recognize, enable or disable such devices. This means that
|
|
||||||
the only docking stations currently supported are the X-series
|
|
||||||
UltraBase docks and "dumb" port replicators like the Mini Dock (the
|
|
||||||
latter don't need any ACPI support, actually).
|
|
||||||
|
|
||||||
|
|
||||||
UltraBay eject -- /proc/acpi/ibm/bay
|
|
||||||
------------------------------------
|
|
||||||
|
|
||||||
Inserting or ejecting an UltraBay device requires some actions to be
|
|
||||||
taken by the operating system to safely make or break the electrical
|
|
||||||
connections with the device.
|
|
||||||
|
|
||||||
This feature generates the following ACPI events:
|
|
||||||
|
|
||||||
ibm/bay MSTR 00000003 00000000 -- eject request
|
|
||||||
ibm/bay MSTR 00000001 00000000 -- eject lever inserted
|
|
||||||
|
|
||||||
NOTE: These events will only be generated if the UltraBay was present
|
|
||||||
when the laptop was originally booted (on the X series, the UltraBay
|
|
||||||
is in the dock, so it may not be present if the laptop was undocked).
|
|
||||||
This is due to the current lack of support for hot plugging of devices
|
|
||||||
in the Linux ACPI framework. If the laptop was booted without the
|
|
||||||
UltraBay, the following message is shown in the logs:
|
|
||||||
|
|
||||||
Mar 17 01:42:34 aero kernel: thinkpad_acpi: bay device not present
|
|
||||||
|
|
||||||
In this case, no bay-related events are generated but the eject
|
|
||||||
command described below still works. It can be executed manually or
|
|
||||||
triggered by a hot key combination.
|
|
||||||
|
|
||||||
Sliding the eject lever generates the first event shown above. The
|
|
||||||
handler for this event should take whatever actions are necessary to
|
|
||||||
shut down the device in the UltraBay (e.g. call idectl), then issue
|
|
||||||
the following command:
|
|
||||||
|
|
||||||
echo eject > /proc/acpi/ibm/bay
|
|
||||||
|
|
||||||
After the LED on the UltraBay goes off, it is safe to pull out the
|
|
||||||
device.
|
|
||||||
|
|
||||||
When the eject lever is inserted, the second event above is
|
|
||||||
generated. The handler for this event should take whatever actions are
|
|
||||||
necessary to enable the UltraBay device (e.g. call idectl).
|
|
||||||
|
|
||||||
The contents of the /proc/acpi/ibm/bay file shows the current status
|
|
||||||
of the UltraBay, as provided by the ACPI framework.
|
|
||||||
|
|
||||||
EXPERIMENTAL warm eject support on the 600e/x, A22p and A3x (To use
|
|
||||||
this feature, you need to supply the experimental=1 parameter when
|
|
||||||
loading the module):
|
|
||||||
|
|
||||||
These models do not have a button near the UltraBay device to request
|
|
||||||
a hot eject but rather require the laptop to be put to sleep
|
|
||||||
(suspend-to-ram) before the bay device is ejected or inserted).
|
|
||||||
The sequence of steps to eject the device is as follows:
|
|
||||||
|
|
||||||
echo eject > /proc/acpi/ibm/bay
|
|
||||||
put the ThinkPad to sleep
|
|
||||||
remove the drive
|
|
||||||
resume from sleep
|
|
||||||
cat /proc/acpi/ibm/bay should show that the drive was removed
|
|
||||||
|
|
||||||
On the A3x, both the UltraBay 2000 and UltraBay Plus devices are
|
|
||||||
supported. Use "eject2" instead of "eject" for the second bay.
|
|
||||||
|
|
||||||
Note: the UltraBay eject support on the 600e/x, A22p and A3x is
|
|
||||||
EXPERIMENTAL and may not work as expected. USE WITH CAUTION!
|
|
||||||
|
|
||||||
|
|
||||||
CMOS/UCMS control
|
CMOS/UCMS control
|
||||||
-----------------
|
-----------------
|
||||||
|
|
||||||
|
|||||||
+483
-238
File diff suppressed because it is too large
Load Diff
@@ -30,9 +30,9 @@ State
|
|||||||
The validator tracks lock-class usage history into 4n + 1 separate state bits:
|
The validator tracks lock-class usage history into 4n + 1 separate state bits:
|
||||||
|
|
||||||
- 'ever held in STATE context'
|
- 'ever held in STATE context'
|
||||||
- 'ever head as readlock in STATE context'
|
- 'ever held as readlock in STATE context'
|
||||||
- 'ever head with STATE enabled'
|
- 'ever held with STATE enabled'
|
||||||
- 'ever head as readlock with STATE enabled'
|
- 'ever held as readlock with STATE enabled'
|
||||||
|
|
||||||
Where STATE can be either one of (kernel/lockdep_states.h)
|
Where STATE can be either one of (kernel/lockdep_states.h)
|
||||||
- hardirq
|
- hardirq
|
||||||
|
|||||||
@@ -73,7 +73,7 @@ The remaining CPU time will be used for user input and other tasks. Because
|
|||||||
realtime tasks have explicitly allocated the CPU time they need to perform
|
realtime tasks have explicitly allocated the CPU time they need to perform
|
||||||
their tasks, buffer underruns in the graphics or audio can be eliminated.
|
their tasks, buffer underruns in the graphics or audio can be eliminated.
|
||||||
|
|
||||||
NOTE: the above example is not fully implemented as of yet (2.6.25). We still
|
NOTE: the above example is not fully implemented yet. We still
|
||||||
lack an EDF scheduler to make non-uniform periods usable.
|
lack an EDF scheduler to make non-uniform periods usable.
|
||||||
|
|
||||||
|
|
||||||
@@ -140,14 +140,15 @@ The other option is:
|
|||||||
|
|
||||||
.o CONFIG_CGROUP_SCHED (aka "Basis for grouping tasks" = "Control groups")
|
.o CONFIG_CGROUP_SCHED (aka "Basis for grouping tasks" = "Control groups")
|
||||||
|
|
||||||
This uses the /cgroup virtual file system and "/cgroup/<cgroup>/cpu.rt_runtime_us"
|
This uses the /cgroup virtual file system and
|
||||||
to control the CPU time reserved for each control group instead.
|
"/cgroup/<cgroup>/cpu.rt_runtime_us" to control the CPU time reserved for each
|
||||||
|
control group instead.
|
||||||
|
|
||||||
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.
|
||||||
|
|
||||||
Group settings are checked against the following limits in order to keep the configuration
|
Group settings are checked against the following limits in order to keep the
|
||||||
schedulable:
|
configuration schedulable:
|
||||||
|
|
||||||
\Sum_{i} runtime_{i} / global_period <= global_runtime / global_period
|
\Sum_{i} runtime_{i} / global_period <= global_runtime / global_period
|
||||||
|
|
||||||
@@ -189,7 +190,7 @@ Implementing SCHED_EDF might take a while to complete. Priority Inheritance is
|
|||||||
the biggest challenge as the current linux PI infrastructure is geared towards
|
the biggest challenge as the current linux PI infrastructure is geared towards
|
||||||
the limited static priority levels 0-99. With deadline scheduling you need to
|
the limited static priority levels 0-99. With deadline scheduling you need to
|
||||||
do deadline inheritance (since priority is inversely proportional to the
|
do deadline inheritance (since priority is inversely proportional to the
|
||||||
deadline delta (deadline - now).
|
deadline delta (deadline - now)).
|
||||||
|
|
||||||
This means the whole PI machinery will have to be reworked - and that is one of
|
This means the whole PI machinery will have to be reworked - and that is one of
|
||||||
the most complex pieces of code we have.
|
the most complex pieces of code we have.
|
||||||
|
|||||||
@@ -101,6 +101,8 @@ card*/pcm*/xrun_debug
|
|||||||
bit 0 = Enable XRUN/jiffies debug messages
|
bit 0 = Enable XRUN/jiffies debug messages
|
||||||
bit 1 = Show stack trace at XRUN / jiffies check
|
bit 1 = Show stack trace at XRUN / jiffies check
|
||||||
bit 2 = Enable additional jiffies check
|
bit 2 = Enable additional jiffies check
|
||||||
|
bit 3 = Log hwptr update at each period interrupt
|
||||||
|
bit 4 = Log hwptr update at each snd_pcm_update_hw_ptr()
|
||||||
|
|
||||||
When the bit 0 is set, the driver will show the messages to
|
When the bit 0 is set, the driver will show the messages to
|
||||||
kernel log when an xrun is detected. The debug message is
|
kernel log when an xrun is detected. The debug message is
|
||||||
@@ -117,6 +119,9 @@ card*/pcm*/xrun_debug
|
|||||||
buggy) hardware that doesn't give smooth pointer updates.
|
buggy) hardware that doesn't give smooth pointer updates.
|
||||||
This feature is enabled via the bit 2.
|
This feature is enabled via the bit 2.
|
||||||
|
|
||||||
|
Bits 3 and 4 are for logging the hwptr records. Note that
|
||||||
|
these will give flood of kernel messages.
|
||||||
|
|
||||||
card*/pcm*/sub*/info
|
card*/pcm*/sub*/info
|
||||||
The general information of this PCM sub-stream.
|
The general information of this PCM sub-stream.
|
||||||
|
|
||||||
|
|||||||
@@ -66,7 +66,8 @@ On all - write a character to /proc/sysrq-trigger. e.g.:
|
|||||||
'b' - Will immediately reboot the system without syncing or unmounting
|
'b' - Will immediately reboot the system without syncing or unmounting
|
||||||
your disks.
|
your disks.
|
||||||
|
|
||||||
'c' - Will perform a kexec reboot in order to take a crashdump.
|
'c' - Will perform a system crash by a NULL pointer dereference.
|
||||||
|
A crashdump will be taken if configured.
|
||||||
|
|
||||||
'd' - Shows all locks that are held.
|
'd' - Shows all locks that are held.
|
||||||
|
|
||||||
@@ -141,8 +142,8 @@ useful when you want to exit a program that will not let you switch consoles.
|
|||||||
re'B'oot is good when you're unable to shut down. But you should also 'S'ync
|
re'B'oot is good when you're unable to shut down. But you should also 'S'ync
|
||||||
and 'U'mount first.
|
and 'U'mount first.
|
||||||
|
|
||||||
'C'rashdump can be used to manually trigger a crashdump when the system is hung.
|
'C'rash can be used to manually trigger a crashdump when the system is hung.
|
||||||
The kernel needs to have been built with CONFIG_KEXEC enabled.
|
Note that this just triggers a crash if there is no dump mechanism available.
|
||||||
|
|
||||||
'S'ync is great when your system is locked up, it allows you to sync your
|
'S'ync is great when your system is locked up, it allows you to sync your
|
||||||
disks and will certainly lessen the chance of data loss and fscking. Note
|
disks and will certainly lessen the chance of data loss and fscking. Note
|
||||||
|
|||||||
@@ -20,7 +20,7 @@
|
|||||||
19 -> EM2860/SAA711X Reference Design (em2860)
|
19 -> EM2860/SAA711X Reference Design (em2860)
|
||||||
20 -> AMD ATI TV Wonder HD 600 (em2880) [0438:b002]
|
20 -> AMD ATI TV Wonder HD 600 (em2880) [0438:b002]
|
||||||
21 -> eMPIA Technology, Inc. GrabBeeX+ Video Encoder (em2800) [eb1a:2801]
|
21 -> eMPIA Technology, Inc. GrabBeeX+ Video Encoder (em2800) [eb1a:2801]
|
||||||
22 -> Unknown EM2750/EM2751 webcam grabber (em2750) [eb1a:2750,eb1a:2751]
|
22 -> EM2710/EM2750/EM2751 webcam grabber (em2750) [eb1a:2750,eb1a:2751]
|
||||||
23 -> Huaqi DLCW-130 (em2750)
|
23 -> Huaqi DLCW-130 (em2750)
|
||||||
24 -> D-Link DUB-T210 TV Tuner (em2820/em2840) [2001:f112]
|
24 -> D-Link DUB-T210 TV Tuner (em2820/em2840) [2001:f112]
|
||||||
25 -> Gadmei UTV310 (em2820/em2840)
|
25 -> Gadmei UTV310 (em2820/em2840)
|
||||||
@@ -66,3 +66,4 @@
|
|||||||
68 -> Terratec AV350 (em2860) [0ccd:0084]
|
68 -> Terratec AV350 (em2860) [0ccd:0084]
|
||||||
69 -> KWorld ATSC 315U HDTV TV Box (em2882) [eb1a:a313]
|
69 -> KWorld ATSC 315U HDTV TV Box (em2882) [eb1a:a313]
|
||||||
70 -> Evga inDtube (em2882)
|
70 -> Evga inDtube (em2882)
|
||||||
|
71 -> Silvercrest Webcam 1.3mpix (em2820/em2840)
|
||||||
|
|||||||
@@ -44,7 +44,9 @@ zc3xx 0458:7007 Genius VideoCam V2
|
|||||||
zc3xx 0458:700c Genius VideoCam V3
|
zc3xx 0458:700c Genius VideoCam V3
|
||||||
zc3xx 0458:700f Genius VideoCam Web V2
|
zc3xx 0458:700f Genius VideoCam Web V2
|
||||||
sonixj 0458:7025 Genius Eye 311Q
|
sonixj 0458:7025 Genius Eye 311Q
|
||||||
|
sn9c20x 0458:7029 Genius Look 320s
|
||||||
sonixj 0458:702e Genius Slim 310 NB
|
sonixj 0458:702e Genius Slim 310 NB
|
||||||
|
sn9c20x 045e:00f4 LifeCam VX-6000 (SN9C20x + OV9650)
|
||||||
sonixj 045e:00f5 MicroSoft VX3000
|
sonixj 045e:00f5 MicroSoft VX3000
|
||||||
sonixj 045e:00f7 MicroSoft VX1000
|
sonixj 045e:00f7 MicroSoft VX1000
|
||||||
ov519 045e:028c Micro$oft xbox cam
|
ov519 045e:028c Micro$oft xbox cam
|
||||||
@@ -282,6 +284,28 @@ sonixj 0c45:613a Microdia Sonix PC Camera
|
|||||||
sonixj 0c45:613b Surfer SN-206
|
sonixj 0c45:613b Surfer SN-206
|
||||||
sonixj 0c45:613c Sonix Pccam168
|
sonixj 0c45:613c Sonix Pccam168
|
||||||
sonixj 0c45:6143 Sonix Pccam168
|
sonixj 0c45:6143 Sonix Pccam168
|
||||||
|
sn9c20x 0c45:6240 PC Camera (SN9C201 + MT9M001)
|
||||||
|
sn9c20x 0c45:6242 PC Camera (SN9C201 + MT9M111)
|
||||||
|
sn9c20x 0c45:6248 PC Camera (SN9C201 + OV9655)
|
||||||
|
sn9c20x 0c45:624e PC Camera (SN9C201 + SOI968)
|
||||||
|
sn9c20x 0c45:624f PC Camera (SN9C201 + OV9650)
|
||||||
|
sn9c20x 0c45:6251 PC Camera (SN9C201 + OV9650)
|
||||||
|
sn9c20x 0c45:6253 PC Camera (SN9C201 + OV9650)
|
||||||
|
sn9c20x 0c45:6260 PC Camera (SN9C201 + OV7670)
|
||||||
|
sn9c20x 0c45:6270 PC Camera (SN9C201 + MT9V011/MT9V111/MT9V112)
|
||||||
|
sn9c20x 0c45:627b PC Camera (SN9C201 + OV7660)
|
||||||
|
sn9c20x 0c45:627c PC Camera (SN9C201 + HV7131R)
|
||||||
|
sn9c20x 0c45:627f PC Camera (SN9C201 + OV9650)
|
||||||
|
sn9c20x 0c45:6280 PC Camera (SN9C202 + MT9M001)
|
||||||
|
sn9c20x 0c45:6282 PC Camera (SN9C202 + MT9M111)
|
||||||
|
sn9c20x 0c45:6288 PC Camera (SN9C202 + OV9655)
|
||||||
|
sn9c20x 0c45:628e PC Camera (SN9C202 + SOI968)
|
||||||
|
sn9c20x 0c45:628f PC Camera (SN9C202 + OV9650)
|
||||||
|
sn9c20x 0c45:62a0 PC Camera (SN9C202 + OV7670)
|
||||||
|
sn9c20x 0c45:62b0 PC Camera (SN9C202 + MT9V011/MT9V111/MT9V112)
|
||||||
|
sn9c20x 0c45:62b3 PC Camera (SN9C202 + OV9655)
|
||||||
|
sn9c20x 0c45:62bb PC Camera (SN9C202 + OV7660)
|
||||||
|
sn9c20x 0c45:62bc PC Camera (SN9C202 + HV7131R)
|
||||||
sunplus 0d64:0303 Sunplus FashionCam DXG
|
sunplus 0d64:0303 Sunplus FashionCam DXG
|
||||||
etoms 102c:6151 Qcam Sangha CIF
|
etoms 102c:6151 Qcam Sangha CIF
|
||||||
etoms 102c:6251 Qcam xxxxxx VGA
|
etoms 102c:6251 Qcam xxxxxx VGA
|
||||||
@@ -290,6 +314,7 @@ spca561 10fd:7e50 FlyCam Usb 100
|
|||||||
zc3xx 10fd:8050 Typhoon Webshot II USB 300k
|
zc3xx 10fd:8050 Typhoon Webshot II USB 300k
|
||||||
ov534 1415:2000 Sony HD Eye for PS3 (SLEH 00201)
|
ov534 1415:2000 Sony HD Eye for PS3 (SLEH 00201)
|
||||||
pac207 145f:013a Trust WB-1300N
|
pac207 145f:013a Trust WB-1300N
|
||||||
|
sn9c20x 145f:013d Trust WB-3600R
|
||||||
vc032x 15b8:6001 HP 2.0 Megapixel
|
vc032x 15b8:6001 HP 2.0 Megapixel
|
||||||
vc032x 15b8:6002 HP 2.0 Megapixel rz406aa
|
vc032x 15b8:6002 HP 2.0 Megapixel rz406aa
|
||||||
spca501 1776:501c Arowana 300K CMOS Camera
|
spca501 1776:501c Arowana 300K CMOS Camera
|
||||||
@@ -300,4 +325,11 @@ spca500 2899:012c Toptro Industrial
|
|||||||
spca508 8086:0110 Intel Easy PC Camera
|
spca508 8086:0110 Intel Easy PC Camera
|
||||||
spca500 8086:0630 Intel Pocket PC Camera
|
spca500 8086:0630 Intel Pocket PC Camera
|
||||||
spca506 99fa:8988 Grandtec V.cap
|
spca506 99fa:8988 Grandtec V.cap
|
||||||
|
sn9c20x a168:0610 Dino-Lite Digital Microscope (SN9C201 + HV7131R)
|
||||||
|
sn9c20x a168:0611 Dino-Lite Digital Microscope (SN9C201 + HV7131R)
|
||||||
|
sn9c20x a168:0613 Dino-Lite Digital Microscope (SN9C201 + HV7131R)
|
||||||
|
sn9c20x a168:0618 Dino-Lite Digital Microscope (SN9C201 + HV7131R)
|
||||||
|
sn9c20x a168:0614 Dino-Lite Digital Microscope (SN9C201 + MT9M111)
|
||||||
|
sn9c20x a168:0615 Dino-Lite Digital Microscope (SN9C201 + MT9M111)
|
||||||
|
sn9c20x a168:0617 Dino-Lite Digital Microscope (SN9C201 + MT9M111)
|
||||||
spca561 abcd:cdee Petcam
|
spca561 abcd:cdee Petcam
|
||||||
|
|||||||
@@ -2,3 +2,5 @@
|
|||||||
- this file
|
- this file
|
||||||
mtrr.txt
|
mtrr.txt
|
||||||
- how to use x86 Memory Type Range Registers to increase performance
|
- how to use x86 Memory Type Range Registers to increase performance
|
||||||
|
exception-tables.txt
|
||||||
|
- why and how Linux kernel uses exception tables on x86
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
Kernel level exception handling in Linux 2.1.8
|
Kernel level exception handling in Linux
|
||||||
Commentary by Joerg Pommnitz <joerg@raleigh.ibm.com>
|
Commentary by Joerg Pommnitz <joerg@raleigh.ibm.com>
|
||||||
|
|
||||||
When a process runs in kernel mode, it often has to access user
|
When a process runs in kernel mode, it often has to access user
|
||||||
@@ -29,8 +29,8 @@ page fault handler
|
|||||||
|
|
||||||
void do_page_fault(struct pt_regs *regs, unsigned long error_code)
|
void do_page_fault(struct pt_regs *regs, unsigned long error_code)
|
||||||
|
|
||||||
in arch/i386/mm/fault.c. The parameters on the stack are set up by
|
in arch/x86/mm/fault.c. The parameters on the stack are set up by
|
||||||
the low level assembly glue in arch/i386/kernel/entry.S. The parameter
|
the low level assembly glue in arch/x86/kernel/entry_32.S. The parameter
|
||||||
regs is a pointer to the saved registers on the stack, error_code
|
regs is a pointer to the saved registers on the stack, error_code
|
||||||
contains a reason code for the exception.
|
contains a reason code for the exception.
|
||||||
|
|
||||||
@@ -52,12 +52,12 @@ Where does fixup point to?
|
|||||||
|
|
||||||
Since we jump to the contents of fixup, fixup obviously points
|
Since we jump to the contents of fixup, fixup obviously points
|
||||||
to executable code. This code is hidden inside the user access macros.
|
to executable code. This code is hidden inside the user access macros.
|
||||||
I have picked the get_user macro defined in include/asm/uaccess.h as an
|
I have picked the get_user macro defined in arch/x86/include/asm/uaccess.h
|
||||||
example. The definition is somewhat hard to follow, so let's peek at
|
as an example. The definition is somewhat hard to follow, so let's peek at
|
||||||
the code generated by the preprocessor and the compiler. I selected
|
the code generated by the preprocessor and the compiler. I selected
|
||||||
the get_user call in drivers/char/console.c for a detailed examination.
|
the get_user call in drivers/char/sysrq.c for a detailed examination.
|
||||||
|
|
||||||
The original code in console.c line 1405:
|
The original code in sysrq.c line 587:
|
||||||
get_user(c, buf);
|
get_user(c, buf);
|
||||||
|
|
||||||
The preprocessor output (edited to become somewhat readable):
|
The preprocessor output (edited to become somewhat readable):
|
||||||
+938
-1853
File diff suppressed because it is too large
Load Diff
@@ -1,7 +1,7 @@
|
|||||||
VERSION = 2
|
VERSION = 2
|
||||||
PATCHLEVEL = 6
|
PATCHLEVEL = 6
|
||||||
SUBLEVEL = 31
|
SUBLEVEL = 31
|
||||||
EXTRAVERSION = -rc2
|
EXTRAVERSION = -rc5
|
||||||
NAME = Man-Eating Seals of Antiquity
|
NAME = Man-Eating Seals of Antiquity
|
||||||
|
|
||||||
# *DOCUMENTATION*
|
# *DOCUMENTATION*
|
||||||
@@ -343,7 +343,8 @@ KBUILD_CPPFLAGS := -D__KERNEL__
|
|||||||
KBUILD_CFLAGS := -Wall -Wundef -Wstrict-prototypes -Wno-trigraphs \
|
KBUILD_CFLAGS := -Wall -Wundef -Wstrict-prototypes -Wno-trigraphs \
|
||||||
-fno-strict-aliasing -fno-common \
|
-fno-strict-aliasing -fno-common \
|
||||||
-Werror-implicit-function-declaration \
|
-Werror-implicit-function-declaration \
|
||||||
-Wno-format-security
|
-Wno-format-security \
|
||||||
|
-fno-delete-null-pointer-checks
|
||||||
KBUILD_AFLAGS := -D__ASSEMBLY__
|
KBUILD_AFLAGS := -D__ASSEMBLY__
|
||||||
|
|
||||||
# Read KERNELRELEASE from include/config/kernel.release (if it exists)
|
# Read KERNELRELEASE from include/config/kernel.release (if it exists)
|
||||||
@@ -565,7 +566,7 @@ KBUILD_CFLAGS += $(call cc-option,-Wdeclaration-after-statement,)
|
|||||||
KBUILD_CFLAGS += $(call cc-option,-Wno-pointer-sign,)
|
KBUILD_CFLAGS += $(call cc-option,-Wno-pointer-sign,)
|
||||||
|
|
||||||
# disable invalid "can't wrap" optimizations for signed / pointers
|
# disable invalid "can't wrap" optimizations for signed / pointers
|
||||||
KBUILD_CFLAGS += $(call cc-option,-fwrapv)
|
KBUILD_CFLAGS += $(call cc-option,-fno-strict-overflow)
|
||||||
|
|
||||||
# revert to pre-gcc-4.4 behaviour of .eh_frame
|
# revert to pre-gcc-4.4 behaviour of .eh_frame
|
||||||
KBUILD_CFLAGS += $(call cc-option,-fno-dwarf2-cfi-asm)
|
KBUILD_CFLAGS += $(call cc-option,-fno-dwarf2-cfi-asm)
|
||||||
|
|||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user