Auto merge with /home/aegl/GIT/linus
This commit is contained in:
35
Documentation/acpi-hotkey.txt
Normal file
35
Documentation/acpi-hotkey.txt
Normal file
@@ -0,0 +1,35 @@
|
|||||||
|
driver/acpi/hotkey.c implement:
|
||||||
|
1. /proc/acpi/hotkey/event_config
|
||||||
|
(event based hotkey or event config interface):
|
||||||
|
a. add a event based hotkey(event) :
|
||||||
|
echo "0:bus::action:method:num:num" > event_config
|
||||||
|
|
||||||
|
b. delete a event based hotkey(event):
|
||||||
|
echo "1:::::num:num" > event_config
|
||||||
|
|
||||||
|
c. modify a event based hotkey(event):
|
||||||
|
echo "2:bus::action:method:num:num" > event_config
|
||||||
|
|
||||||
|
2. /proc/acpi/hotkey/poll_config
|
||||||
|
(polling based hotkey or event config interface):
|
||||||
|
a.add a polling based hotkey(event) :
|
||||||
|
echo "0:bus:method:action:method:num" > poll_config
|
||||||
|
this adding command will create a proc file
|
||||||
|
/proc/acpi/hotkey/method, which is used to get
|
||||||
|
result of polling.
|
||||||
|
|
||||||
|
b.delete a polling based hotkey(event):
|
||||||
|
echo "1:::::num" > event_config
|
||||||
|
|
||||||
|
c.modify a polling based hotkey(event):
|
||||||
|
echo "2:bus:method:action:method:num" > poll_config
|
||||||
|
|
||||||
|
3./proc/acpi/hotkey/action
|
||||||
|
(interface to call aml method associated with a
|
||||||
|
specific hotkey(event))
|
||||||
|
echo "event_num:event_type:event_argument" >
|
||||||
|
/proc/acpi/hotkey/action.
|
||||||
|
The result of the execution of this aml method is
|
||||||
|
attached to /proc/acpi/hotkey/poll_method, which is dnyamically
|
||||||
|
created. Please use command "cat /proc/acpi/hotkey/polling_method"
|
||||||
|
to retrieve it.
|
||||||
138
Documentation/filesystems/inotify.txt
Normal file
138
Documentation/filesystems/inotify.txt
Normal file
@@ -0,0 +1,138 @@
|
|||||||
|
inotify
|
||||||
|
a powerful yet simple file change notification system
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Document started 15 Mar 2005 by Robert Love <rml@novell.com>
|
||||||
|
|
||||||
|
(i) User Interface
|
||||||
|
|
||||||
|
Inotify is controlled by a set of three sys calls
|
||||||
|
|
||||||
|
First step in using inotify is to initialise an inotify instance
|
||||||
|
|
||||||
|
int fd = inotify_init ();
|
||||||
|
|
||||||
|
Change events are managed by "watches". A watch is an (object,mask) pair where
|
||||||
|
the object is a file or directory and the mask is a bit mask of one or more
|
||||||
|
inotify events that the application wishes to receive. See <linux/inotify.h>
|
||||||
|
for valid events. A watch is referenced by a watch descriptor, or wd.
|
||||||
|
|
||||||
|
Watches are added via a path to the file.
|
||||||
|
|
||||||
|
Watches on a directory will return events on any files inside of the directory.
|
||||||
|
|
||||||
|
Adding a watch is simple,
|
||||||
|
|
||||||
|
int wd = inotify_add_watch (fd, path, mask);
|
||||||
|
|
||||||
|
You can add a large number of files via something like
|
||||||
|
|
||||||
|
for each file to watch {
|
||||||
|
int wd = inotify_add_watch (fd, file, mask);
|
||||||
|
}
|
||||||
|
|
||||||
|
You can update an existing watch in the same manner, by passing in a new mask.
|
||||||
|
|
||||||
|
An existing watch is removed via the INOTIFY_IGNORE ioctl, for example
|
||||||
|
|
||||||
|
inotify_rm_watch (fd, wd);
|
||||||
|
|
||||||
|
Events are provided in the form of an inotify_event structure that is read(2)
|
||||||
|
from a inotify instance fd. The filename is of dynamic length and follows the
|
||||||
|
struct. It is of size len. The filename is padded with null bytes to ensure
|
||||||
|
proper alignment. This padding is reflected in len.
|
||||||
|
|
||||||
|
You can slurp multiple events by passing a large buffer, for example
|
||||||
|
|
||||||
|
size_t len = read (fd, buf, BUF_LEN);
|
||||||
|
|
||||||
|
Will return as many events as are available and fit in BUF_LEN.
|
||||||
|
|
||||||
|
each inotify instance fd is also select()- and poll()-able.
|
||||||
|
|
||||||
|
You can find the size of the current event queue via the FIONREAD ioctl.
|
||||||
|
|
||||||
|
All watches are destroyed and cleaned up on close.
|
||||||
|
|
||||||
|
|
||||||
|
(ii) Internal Kernel Implementation
|
||||||
|
|
||||||
|
Each open inotify instance is associated with an inotify_device structure.
|
||||||
|
|
||||||
|
Each watch is associated with an inotify_watch structure. Watches are chained
|
||||||
|
off of each associated device and each associated inode.
|
||||||
|
|
||||||
|
See fs/inotify.c for the locking and lifetime rules.
|
||||||
|
|
||||||
|
|
||||||
|
(iii) Rationale
|
||||||
|
|
||||||
|
Q: What is the design decision behind not tying the watch to the open fd of
|
||||||
|
the watched object?
|
||||||
|
|
||||||
|
A: Watches are associated with an open inotify device, not an open file.
|
||||||
|
This solves the primary problem with dnotify: keeping the file open pins
|
||||||
|
the file and thus, worse, pins the mount. Dnotify is therefore infeasible
|
||||||
|
for use on a desktop system with removable media as the media cannot be
|
||||||
|
unmounted.
|
||||||
|
|
||||||
|
Q: What is the design decision behind using an-fd-per-device as opposed to
|
||||||
|
an fd-per-watch?
|
||||||
|
|
||||||
|
A: An fd-per-watch quickly consumes more file descriptors than are allowed,
|
||||||
|
more fd's than are feasible to manage, and more fd's than are optimally
|
||||||
|
select()-able. Yes, root can bump the per-process fd limit and yes, users
|
||||||
|
can use epoll, but requiring both is a silly and extraneous requirement.
|
||||||
|
A watch consumes less memory than an open file, separating the number
|
||||||
|
spaces is thus sensible. The current design is what user-space developers
|
||||||
|
want: Users initialize inotify, once, and add n watches, requiring but one fd
|
||||||
|
and no twiddling with fd limits. Initializing an inotify instance two
|
||||||
|
thousand times is silly. If we can implement user-space's preferences
|
||||||
|
cleanly--and we can, the idr layer makes stuff like this trivial--then we
|
||||||
|
should.
|
||||||
|
|
||||||
|
There are other good arguments. With a single fd, there is a single
|
||||||
|
item to block on, which is mapped to a single queue of events. The single
|
||||||
|
fd returns all watch events and also any potential out-of-band data. If
|
||||||
|
every fd was a separate watch,
|
||||||
|
|
||||||
|
- There would be no way to get event ordering. Events on file foo and
|
||||||
|
file bar would pop poll() on both fd's, but there would be no way to tell
|
||||||
|
which happened first. A single queue trivially gives you ordering. Such
|
||||||
|
ordering is crucial to existing applications such as Beagle. Imagine
|
||||||
|
"mv a b ; mv b a" events without ordering.
|
||||||
|
|
||||||
|
- We'd have to maintain n fd's and n internal queues with state,
|
||||||
|
versus just one. It is a lot messier in the kernel. A single, linear
|
||||||
|
queue is the data structure that makes sense.
|
||||||
|
|
||||||
|
- User-space developers prefer the current API. The Beagle guys, for
|
||||||
|
example, love it. Trust me, I asked. It is not a surprise: Who'd want
|
||||||
|
to manage and block on 1000 fd's via select?
|
||||||
|
|
||||||
|
- You'd have to manage the fd's, as an example: Call close() when you
|
||||||
|
received a delete event.
|
||||||
|
|
||||||
|
- No way to get out of band data.
|
||||||
|
|
||||||
|
- 1024 is still too low. ;-)
|
||||||
|
|
||||||
|
When you talk about designing a file change notification system that
|
||||||
|
scales to 1000s of directories, juggling 1000s of fd's just does not seem
|
||||||
|
the right interface. It is too heavy.
|
||||||
|
|
||||||
|
Q: Why the system call approach?
|
||||||
|
|
||||||
|
A: The poor user-space interface is the second biggest problem with dnotify.
|
||||||
|
Signals are a terrible, terrible interface for file notification. Or for
|
||||||
|
anything, for that matter. The ideal solution, from all perspectives, is a
|
||||||
|
file descriptor-based one that allows basic file I/O and poll/select.
|
||||||
|
Obtaining the fd and managing the watches could have been done either via a
|
||||||
|
device file or a family of new system calls. We decided to implement a
|
||||||
|
family of system calls because that is the preffered approach for new kernel
|
||||||
|
features and it means our user interface requirements.
|
||||||
|
|
||||||
|
Additionally, it _is_ possible to more than one instance and
|
||||||
|
juggle more than one queue and thus more than one associated fd.
|
||||||
|
|
||||||
@@ -2,10 +2,10 @@ Kernel driver max6875
|
|||||||
=====================
|
=====================
|
||||||
|
|
||||||
Supported chips:
|
Supported chips:
|
||||||
* Maxim max6874, max6875
|
* Maxim MAX6874, MAX6875
|
||||||
Prefixes: 'max6875'
|
Prefix: 'max6875'
|
||||||
Addresses scanned: 0x50, 0x52
|
Addresses scanned: 0x50, 0x52
|
||||||
Datasheets:
|
Datasheet:
|
||||||
http://pdfserv.maxim-ic.com/en/ds/MAX6874-MAX6875.pdf
|
http://pdfserv.maxim-ic.com/en/ds/MAX6874-MAX6875.pdf
|
||||||
|
|
||||||
Author: Ben Gardner <bgardner@wabtec.com>
|
Author: Ben Gardner <bgardner@wabtec.com>
|
||||||
@@ -23,14 +23,26 @@ Module Parameters
|
|||||||
Description
|
Description
|
||||||
-----------
|
-----------
|
||||||
|
|
||||||
The MAXIM max6875 is a EEPROM-programmable power-supply sequencer/supervisor.
|
The Maxim MAX6875 is an EEPROM-programmable power-supply sequencer/supervisor.
|
||||||
It provides timed outputs that can be used as a watchdog, if properly wired.
|
It provides timed outputs that can be used as a watchdog, if properly wired.
|
||||||
It also provides 512 bytes of user EEPROM.
|
It also provides 512 bytes of user EEPROM.
|
||||||
|
|
||||||
At reset, the max6875 reads the configuration eeprom into its configuration
|
At reset, the MAX6875 reads the configuration EEPROM into its configuration
|
||||||
registers. The chip then begins to operate according to the values in the
|
registers. The chip then begins to operate according to the values in the
|
||||||
registers.
|
registers.
|
||||||
|
|
||||||
|
The Maxim MAX6874 is a similar, mostly compatible device, with more intputs
|
||||||
|
and outputs:
|
||||||
|
|
||||||
|
vin gpi vout
|
||||||
|
MAX6874 6 4 8
|
||||||
|
MAX6875 4 3 5
|
||||||
|
|
||||||
|
MAX6874 chips can have four different addresses (as opposed to only two for
|
||||||
|
the MAX6875). The additional addresses (0x54 and 0x56) are not probed by
|
||||||
|
this driver by default, but the probe module parameter can be used if
|
||||||
|
needed.
|
||||||
|
|
||||||
See the datasheet for details on how to program the EEPROM.
|
See the datasheet for details on how to program the EEPROM.
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -14,9 +14,12 @@ C example
|
|||||||
=========
|
=========
|
||||||
|
|
||||||
So let's say you want to access an i2c adapter from a C program. The
|
So let's say you want to access an i2c adapter from a C program. The
|
||||||
first thing to do is `#include <linux/i2c.h>" and "#include <linux/i2c-dev.h>.
|
first thing to do is "#include <linux/i2c-dev.h>". Please note that
|
||||||
Yes, I know, you should never include kernel header files, but until glibc
|
there are two files named "i2c-dev.h" out there, one is distributed
|
||||||
knows about i2c, there is not much choice.
|
with the Linux kernel and is meant to be included from kernel
|
||||||
|
driver code, the other one is distributed with lm_sensors and is
|
||||||
|
meant to be included from user-space programs. You obviously want
|
||||||
|
the second one here.
|
||||||
|
|
||||||
Now, you have to decide which adapter you want to access. You should
|
Now, you have to decide which adapter you want to access. You should
|
||||||
inspect /sys/class/i2c-dev/ to decide this. Adapter numbers are assigned
|
inspect /sys/class/i2c-dev/ to decide this. Adapter numbers are assigned
|
||||||
@@ -78,7 +81,7 @@ Full interface description
|
|||||||
==========================
|
==========================
|
||||||
|
|
||||||
The following IOCTLs are defined and fully supported
|
The following IOCTLs are defined and fully supported
|
||||||
(see also i2c-dev.h and i2c.h):
|
(see also i2c-dev.h):
|
||||||
|
|
||||||
ioctl(file,I2C_SLAVE,long addr)
|
ioctl(file,I2C_SLAVE,long addr)
|
||||||
Change slave address. The address is passed in the 7 lower bits of the
|
Change slave address. The address is passed in the 7 lower bits of the
|
||||||
@@ -97,10 +100,10 @@ ioctl(file,I2C_PEC,long select)
|
|||||||
ioctl(file,I2C_FUNCS,unsigned long *funcs)
|
ioctl(file,I2C_FUNCS,unsigned long *funcs)
|
||||||
Gets the adapter functionality and puts it in *funcs.
|
Gets the adapter functionality and puts it in *funcs.
|
||||||
|
|
||||||
ioctl(file,I2C_RDWR,struct i2c_ioctl_rdwr_data *msgset)
|
ioctl(file,I2C_RDWR,struct i2c_rdwr_ioctl_data *msgset)
|
||||||
|
|
||||||
Do combined read/write transaction without stop in between.
|
Do combined read/write transaction without stop in between.
|
||||||
The argument is a pointer to a struct i2c_ioctl_rdwr_data {
|
The argument is a pointer to a struct i2c_rdwr_ioctl_data {
|
||||||
|
|
||||||
struct i2c_msg *msgs; /* ptr to array of simple messages */
|
struct i2c_msg *msgs; /* ptr to array of simple messages */
|
||||||
int nmsgs; /* number of messages to exchange */
|
int nmsgs; /* number of messages to exchange */
|
||||||
|
|||||||
@@ -27,7 +27,6 @@ address.
|
|||||||
static struct i2c_driver foo_driver = {
|
static struct i2c_driver foo_driver = {
|
||||||
.owner = THIS_MODULE,
|
.owner = THIS_MODULE,
|
||||||
.name = "Foo version 2.3 driver",
|
.name = "Foo version 2.3 driver",
|
||||||
.id = I2C_DRIVERID_FOO, /* from i2c-id.h, optional */
|
|
||||||
.flags = I2C_DF_NOTIFY,
|
.flags = I2C_DF_NOTIFY,
|
||||||
.attach_adapter = &foo_attach_adapter,
|
.attach_adapter = &foo_attach_adapter,
|
||||||
.detach_client = &foo_detach_client,
|
.detach_client = &foo_detach_client,
|
||||||
@@ -37,12 +36,6 @@ static struct i2c_driver foo_driver = {
|
|||||||
The name can be chosen freely, and may be upto 40 characters long. Please
|
The name can be chosen freely, and may be upto 40 characters long. Please
|
||||||
use something descriptive here.
|
use something descriptive here.
|
||||||
|
|
||||||
If used, the id should be a unique ID. The range 0xf000 to 0xffff is
|
|
||||||
reserved for local use, and you can use one of those until you start
|
|
||||||
distributing the driver, at which time you should contact the i2c authors
|
|
||||||
to get your own ID(s). Note that most of the time you don't need an ID
|
|
||||||
at all so you can just omit it.
|
|
||||||
|
|
||||||
Don't worry about the flags field; just put I2C_DF_NOTIFY into it. This
|
Don't worry about the flags field; just put I2C_DF_NOTIFY into it. This
|
||||||
means that your driver will be notified when new adapters are found.
|
means that your driver will be notified when new adapters are found.
|
||||||
This is almost always what you want.
|
This is almost always what you want.
|
||||||
|
|||||||
@@ -37,7 +37,7 @@ restrictions referred to are that the relevant option is valid if:
|
|||||||
IA-32 IA-32 aka i386 architecture is enabled.
|
IA-32 IA-32 aka i386 architecture is enabled.
|
||||||
IA-64 IA-64 architecture is enabled.
|
IA-64 IA-64 architecture is enabled.
|
||||||
IOSCHED More than one I/O scheduler is enabled.
|
IOSCHED More than one I/O scheduler is enabled.
|
||||||
IP_PNP IP DCHP, BOOTP, or RARP is enabled.
|
IP_PNP IP DHCP, BOOTP, or RARP is enabled.
|
||||||
ISAPNP ISA PnP code is enabled.
|
ISAPNP ISA PnP code is enabled.
|
||||||
ISDN Appropriate ISDN support is enabled.
|
ISDN Appropriate ISDN support is enabled.
|
||||||
JOY Appropriate joystick support is enabled.
|
JOY Appropriate joystick support is enabled.
|
||||||
|
|||||||
@@ -1,6 +1,13 @@
|
|||||||
This file details changes in 2.6 which affect PCMCIA card driver authors:
|
This file details changes in 2.6 which affect PCMCIA card driver authors:
|
||||||
|
|
||||||
* in-kernel device<->driver matching
|
* event handler initialization in struct pcmcia_driver (as of 2.6.13)
|
||||||
|
The event handler is notified of all events, and must be initialized
|
||||||
|
as the event() callback in the driver's struct pcmcia_driver.
|
||||||
|
|
||||||
|
* pcmcia/version.h should not be used (as of 2.6.13)
|
||||||
|
This file will be removed eventually.
|
||||||
|
|
||||||
|
* in-kernel device<->driver matching (as of 2.6.13)
|
||||||
PCMCIA devices and their correct drivers can now be matched in
|
PCMCIA devices and their correct drivers can now be matched in
|
||||||
kernelspace. See 'devicetable.txt' for details.
|
kernelspace. See 'devicetable.txt' for details.
|
||||||
|
|
||||||
|
|||||||
@@ -297,6 +297,7 @@ Vendor ID Product ID
|
|||||||
0x0c45 0x602a
|
0x0c45 0x602a
|
||||||
0x0c45 0x602b
|
0x0c45 0x602b
|
||||||
0x0c45 0x602c
|
0x0c45 0x602c
|
||||||
|
0x0c45 0x602d
|
||||||
0x0c45 0x6030
|
0x0c45 0x6030
|
||||||
0x0c45 0x6080
|
0x0c45 0x6080
|
||||||
0x0c45 0x6082
|
0x0c45 0x6082
|
||||||
@@ -333,6 +334,7 @@ Model Manufacturer
|
|||||||
----- ------------
|
----- ------------
|
||||||
HV7131D Hynix Semiconductor, Inc.
|
HV7131D Hynix Semiconductor, Inc.
|
||||||
MI-0343 Micron Technology, Inc.
|
MI-0343 Micron Technology, Inc.
|
||||||
|
OV7630 OmniVision Technologies, Inc.
|
||||||
PAS106B PixArt Imaging, Inc.
|
PAS106B PixArt Imaging, Inc.
|
||||||
PAS202BCB PixArt Imaging, Inc.
|
PAS202BCB PixArt Imaging, Inc.
|
||||||
TAS5110C1B Taiwan Advanced Sensor Corporation
|
TAS5110C1B Taiwan Advanced Sensor Corporation
|
||||||
@@ -470,9 +472,11 @@ order):
|
|||||||
- Luca Capello for the donation of a webcam;
|
- Luca Capello for the donation of a webcam;
|
||||||
- Joao Rodrigo Fuzaro, Joao Limirio, Claudio Filho and Caio Begotti for the
|
- Joao Rodrigo Fuzaro, Joao Limirio, Claudio Filho and Caio Begotti for the
|
||||||
donation of a webcam;
|
donation of a webcam;
|
||||||
|
- Jon Hollstrom for the donation of a webcam;
|
||||||
- Carlos Eduardo Medaglia Dyonisio, who added the support for the PAS202BCB
|
- Carlos Eduardo Medaglia Dyonisio, who added the support for the PAS202BCB
|
||||||
image sensor;
|
image sensor;
|
||||||
- Stefano Mozzi, who donated 45 EU;
|
- Stefano Mozzi, who donated 45 EU;
|
||||||
|
- Andrew Pearce for the donation of a webcam;
|
||||||
- Bertrik Sikken, who reverse-engineered and documented the Huffman compression
|
- Bertrik Sikken, who reverse-engineered and documented the Huffman compression
|
||||||
algorithm used in the SN9C10x controllers and implemented the first decoder;
|
algorithm used in the SN9C10x controllers and implemented the first decoder;
|
||||||
- Mizuno Takafumi for the donation of a webcam;
|
- Mizuno Takafumi for the donation of a webcam;
|
||||||
|
|||||||
@@ -101,6 +101,13 @@ Here is the list of words, from left to right:
|
|||||||
or 3 and 2 positions, correspondingly.
|
or 3 and 2 positions, correspondingly.
|
||||||
- URB Status. This field makes no sense for submissions, but is present
|
- URB Status. This field makes no sense for submissions, but is present
|
||||||
to help scripts with parsing. In error case, it contains the error code.
|
to help scripts with parsing. In error case, it contains the error code.
|
||||||
|
In case of a setup packet, it contains a Setup Tag. If scripts read a number
|
||||||
|
in this field, the proceed to read Data Length. Otherwise, they read
|
||||||
|
the setup packet before reading the Data Length.
|
||||||
|
- Setup packet, if present, consists of 5 words: one of each for bmRequestType,
|
||||||
|
bRequest, wValue, wIndex, wLength, as specified by the USB Specification 2.0.
|
||||||
|
These words are safe to decode if Setup Tag was 's'. Otherwise, the setup
|
||||||
|
packet was present, but not captured, and the fields contain filler.
|
||||||
- Data Length. This is the actual length in the URB.
|
- Data Length. This is the actual length in the URB.
|
||||||
- Data tag. The usbmon may not always capture data, even if length is nonzero.
|
- Data tag. The usbmon may not always capture data, even if length is nonzero.
|
||||||
Only if tag is '=', the data words are present.
|
Only if tag is '=', the data words are present.
|
||||||
@@ -125,25 +132,31 @@ class ParsedLine {
|
|||||||
String data_str = st.nextToken();
|
String data_str = st.nextToken();
|
||||||
int len = data_str.length() / 2;
|
int len = data_str.length() / 2;
|
||||||
int i;
|
int i;
|
||||||
|
int b; // byte is signed, apparently?! XXX
|
||||||
for (i = 0; i < len; i++) {
|
for (i = 0; i < len; i++) {
|
||||||
data[data_len] = Byte.parseByte(
|
// data[data_len] = Byte.parseByte(
|
||||||
|
// data_str.substring(i*2, i*2 + 2),
|
||||||
|
// 16);
|
||||||
|
b = Integer.parseInt(
|
||||||
data_str.substring(i*2, i*2 + 2),
|
data_str.substring(i*2, i*2 + 2),
|
||||||
16);
|
16);
|
||||||
|
if (b >= 128)
|
||||||
|
b *= -1;
|
||||||
|
data[data_len] = (byte) b;
|
||||||
data_len++;
|
data_len++;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
This format is obviously deficient. For example, the setup packet for control
|
This format may be changed in the future.
|
||||||
transfers is not delivered. This will change in the future.
|
|
||||||
|
|
||||||
Examples:
|
Examples:
|
||||||
|
|
||||||
An input control transfer to get a port status:
|
An input control transfer to get a port status.
|
||||||
|
|
||||||
d74ff9a0 2640288196 S Ci:001:00 -115 4 <
|
d5ea89a0 3575914555 S Ci:001:00 s a3 00 0000 0003 0004 4 <
|
||||||
d74ff9a0 2640288202 C Ci:001:00 0 4 = 01010100
|
d5ea89a0 3575914560 C Ci:001:00 0 4 = 01050000
|
||||||
|
|
||||||
An output bulk transfer to send a SCSI command 0x5E in a 31-byte Bulk wrapper
|
An output bulk transfer to send a SCSI command 0x5E in a 31-byte Bulk wrapper
|
||||||
to a storage device at address 5:
|
to a storage device at address 5:
|
||||||
|
|||||||
@@ -27,3 +27,5 @@ card=25 - Digital-Logic MICROSPACE Entertainment Center (MEC)
|
|||||||
card=26 - IODATA GV/BCTV7E
|
card=26 - IODATA GV/BCTV7E
|
||||||
card=27 - PixelView PlayTV Ultra Pro (Stereo)
|
card=27 - PixelView PlayTV Ultra Pro (Stereo)
|
||||||
card=28 - DViCO FusionHDTV 3 Gold-T
|
card=28 - DViCO FusionHDTV 3 Gold-T
|
||||||
|
card=29 - ADS Tech Instant TV DVB-T PCI
|
||||||
|
card=30 - TerraTec Cinergy 1400 DVB-T
|
||||||
|
|||||||
@@ -34,6 +34,7 @@
|
|||||||
33 -> AVerMedia DVD EZMaker [1461:10ff]
|
33 -> AVerMedia DVD EZMaker [1461:10ff]
|
||||||
34 -> Noval Prime TV 7133
|
34 -> Noval Prime TV 7133
|
||||||
35 -> AverMedia AverTV Studio 305 [1461:2115]
|
35 -> AverMedia AverTV Studio 305 [1461:2115]
|
||||||
|
36 -> UPMOST PURPLE TV [12ab:0800]
|
||||||
37 -> Items MuchTV Plus / IT-005
|
37 -> Items MuchTV Plus / IT-005
|
||||||
38 -> Terratec Cinergy 200 TV [153B:1152]
|
38 -> Terratec Cinergy 200 TV [153B:1152]
|
||||||
39 -> LifeView FlyTV Platinum Mini [5168:0212]
|
39 -> LifeView FlyTV Platinum Mini [5168:0212]
|
||||||
@@ -43,20 +44,21 @@
|
|||||||
43 -> :Zolid Xpert TV7134
|
43 -> :Zolid Xpert TV7134
|
||||||
44 -> Empire PCI TV-Radio LE
|
44 -> Empire PCI TV-Radio LE
|
||||||
45 -> Avermedia AVerTV Studio 307 [1461:9715]
|
45 -> Avermedia AVerTV Studio 307 [1461:9715]
|
||||||
46 -> AVerMedia Cardbus TV/Radio [1461:d6ee]
|
46 -> AVerMedia Cardbus TV/Radio (E500) [1461:d6ee]
|
||||||
47 -> Terratec Cinergy 400 mobile [153b:1162]
|
47 -> Terratec Cinergy 400 mobile [153b:1162]
|
||||||
48 -> Terratec Cinergy 600 TV MK3 [153B:1158]
|
48 -> Terratec Cinergy 600 TV MK3 [153B:1158]
|
||||||
49 -> Compro VideoMate Gold+ Pal [185b:c200]
|
49 -> Compro VideoMate Gold+ Pal [185b:c200]
|
||||||
50 -> Pinnacle PCTV 300i DVB-T + PAL [11bd:002d]
|
50 -> Pinnacle PCTV 300i DVB-T + PAL [11bd:002d]
|
||||||
51 -> ProVideo PV952 [1540:9524]
|
51 -> ProVideo PV952 [1540:9524]
|
||||||
52 -> AverMedia AverTV/305 [1461:2108]
|
52 -> AverMedia AverTV/305 [1461:2108]
|
||||||
|
53 -> ASUS TV-FM 7135 [1043:4845]
|
||||||
54 -> LifeView FlyTV Platinum FM [5168:0214,1489:0214]
|
54 -> LifeView FlyTV Platinum FM [5168:0214,1489:0214]
|
||||||
55 -> LifeView FlyDVB-T DUO [5168:0306]
|
55 -> LifeView FlyDVB-T DUO [5168:0502,5168:0306]
|
||||||
56 -> Avermedia AVerTV 307 [1461:a70a]
|
56 -> Avermedia AVerTV 307 [1461:a70a]
|
||||||
57 -> Avermedia AVerTV GO 007 FM [1461:f31f]
|
57 -> Avermedia AVerTV GO 007 FM [1461:f31f]
|
||||||
58 -> ADS Tech Instant TV (saa7135) [1421:0350,1421:0370]
|
58 -> ADS Tech Instant TV (saa7135) [1421:0350,1421:0370]
|
||||||
59 -> Kworld/Tevion V-Stream Xpert TV PVR7134
|
59 -> Kworld/Tevion V-Stream Xpert TV PVR7134
|
||||||
60 -> Typhoon DVB-T Duo Digital/Analog Cardbus
|
60 -> Typhoon DVB-T Duo Digital/Analog Cardbus [4e42:0502]
|
||||||
61 -> Philips TOUGH DVB-T reference design
|
61 -> Philips TOUGH DVB-T reference design [1131:2004]
|
||||||
62 -> Compro VideoMate TV Gold+II
|
62 -> Compro VideoMate TV Gold+II
|
||||||
63 -> Kworld Xpert TV PVR7134
|
63 -> Kworld Xpert TV PVR7134
|
||||||
|
|||||||
@@ -56,9 +56,9 @@ tuner=54 - tda8290+75
|
|||||||
tuner=55 - LG PAL (TAPE series)
|
tuner=55 - LG PAL (TAPE series)
|
||||||
tuner=56 - Philips PAL/SECAM multi (FQ1216AME MK4)
|
tuner=56 - Philips PAL/SECAM multi (FQ1216AME MK4)
|
||||||
tuner=57 - Philips FQ1236A MK4
|
tuner=57 - Philips FQ1236A MK4
|
||||||
tuner=58 - Ymec TVision TVF-8531MF
|
tuner=58 - Ymec TVision TVF-8531MF/8831MF/8731MF
|
||||||
tuner=59 - Ymec TVision TVF-5533MF
|
tuner=59 - Ymec TVision TVF-5533MF
|
||||||
tuner=60 - Thomson DDT 7611 (ATSC/NTSC)
|
tuner=60 - Thomson DDT 7611 (ATSC/NTSC)
|
||||||
tuner=61 - Tena TNF9533-D/IF
|
tuner=61 - Tena TNF9533-D/IF/TNF9533-B/DF
|
||||||
tuner=62 - Philips TEA5767HN FM Radio
|
tuner=62 - Philips TEA5767HN FM Radio
|
||||||
tuner=63 - Philips FMD1216ME MK3 Hybrid Tuner
|
tuner=63 - Philips FMD1216ME MK3 Hybrid Tuner
|
||||||
|
|||||||
@@ -34,4 +34,8 @@ MO_OUTPUT_FORMAT (0x310164)
|
|||||||
2: HACTEXT
|
2: HACTEXT
|
||||||
1: HSFMT
|
1: HSFMT
|
||||||
|
|
||||||
|
0x47 is the sync byte for MPEG-2 transport stream packets.
|
||||||
|
Datasheet incorrectly states to use 47 decimal. 188 is the length.
|
||||||
|
All DVB compliant frontends output packets with this start code.
|
||||||
|
|
||||||
=================================================================================
|
=================================================================================
|
||||||
|
|||||||
@@ -1240,7 +1240,7 @@ S: Maintained
|
|||||||
|
|
||||||
IRDA SUBSYSTEM
|
IRDA SUBSYSTEM
|
||||||
P: Jean Tourrilhes
|
P: Jean Tourrilhes
|
||||||
L: irda-users@lists.sourceforge.net
|
L: irda-users@lists.sourceforge.net (subscribers-only)
|
||||||
W: http://irda.sourceforge.net/
|
W: http://irda.sourceforge.net/
|
||||||
S: Maintained
|
S: Maintained
|
||||||
|
|
||||||
|
|||||||
2
Makefile
2
Makefile
@@ -1,7 +1,7 @@
|
|||||||
VERSION = 2
|
VERSION = 2
|
||||||
PATCHLEVEL = 6
|
PATCHLEVEL = 6
|
||||||
SUBLEVEL = 13
|
SUBLEVEL = 13
|
||||||
EXTRAVERSION =-rc2
|
EXTRAVERSION =-rc3
|
||||||
NAME=Woozy Numbat
|
NAME=Woozy Numbat
|
||||||
|
|
||||||
# *DOCUMENTATION*
|
# *DOCUMENTATION*
|
||||||
|
|||||||
@@ -596,6 +596,8 @@ source "fs/Kconfig.binfmt"
|
|||||||
|
|
||||||
endmenu
|
endmenu
|
||||||
|
|
||||||
|
source "net/Kconfig"
|
||||||
|
|
||||||
source "drivers/Kconfig"
|
source "drivers/Kconfig"
|
||||||
|
|
||||||
source "fs/Kconfig"
|
source "fs/Kconfig"
|
||||||
|
|||||||
@@ -700,6 +700,8 @@ config APM
|
|||||||
|
|
||||||
endmenu
|
endmenu
|
||||||
|
|
||||||
|
source "net/Kconfig"
|
||||||
|
|
||||||
menu "Device Drivers"
|
menu "Device Drivers"
|
||||||
|
|
||||||
source "drivers/base/Kconfig"
|
source "drivers/base/Kconfig"
|
||||||
@@ -732,7 +734,7 @@ source "drivers/ieee1394/Kconfig"
|
|||||||
|
|
||||||
source "drivers/message/i2o/Kconfig"
|
source "drivers/message/i2o/Kconfig"
|
||||||
|
|
||||||
source "net/Kconfig"
|
source "drivers/net/Kconfig"
|
||||||
|
|
||||||
source "drivers/isdn/Kconfig"
|
source "drivers/isdn/Kconfig"
|
||||||
|
|
||||||
@@ -744,6 +746,8 @@ source "drivers/char/Kconfig"
|
|||||||
|
|
||||||
source "drivers/i2c/Kconfig"
|
source "drivers/i2c/Kconfig"
|
||||||
|
|
||||||
|
source "drivers/hwmon/Kconfig"
|
||||||
|
|
||||||
#source "drivers/l3/Kconfig"
|
#source "drivers/l3/Kconfig"
|
||||||
|
|
||||||
source "drivers/misc/Kconfig"
|
source "drivers/misc/Kconfig"
|
||||||
|
|||||||
@@ -36,7 +36,7 @@
|
|||||||
* The present bitmask indicates that the CPU is physically present.
|
* The present bitmask indicates that the CPU is physically present.
|
||||||
* The online bitmask indicates that the CPU is up and running.
|
* The online bitmask indicates that the CPU is up and running.
|
||||||
*/
|
*/
|
||||||
cpumask_t cpu_present_mask;
|
cpumask_t cpu_possible_map;
|
||||||
cpumask_t cpu_online_map;
|
cpumask_t cpu_online_map;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@@ -235,7 +235,8 @@ void __init smp_prepare_boot_cpu(void)
|
|||||||
{
|
{
|
||||||
unsigned int cpu = smp_processor_id();
|
unsigned int cpu = smp_processor_id();
|
||||||
|
|
||||||
cpu_set(cpu, cpu_present_mask);
|
cpu_set(cpu, cpu_possible_map);
|
||||||
|
cpu_set(cpu, cpu_present_map);
|
||||||
cpu_set(cpu, cpu_online_map);
|
cpu_set(cpu, cpu_online_map);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -355,7 +356,7 @@ void show_ipi_list(struct seq_file *p)
|
|||||||
|
|
||||||
seq_puts(p, "IPI:");
|
seq_puts(p, "IPI:");
|
||||||
|
|
||||||
for_each_online_cpu(cpu)
|
for_each_present_cpu(cpu)
|
||||||
seq_printf(p, " %10lu", per_cpu(ipi_data, cpu).ipi_count);
|
seq_printf(p, " %10lu", per_cpu(ipi_data, cpu).ipi_count);
|
||||||
|
|
||||||
seq_putc(p, '\n');
|
seq_putc(p, '\n');
|
||||||
|
|||||||
@@ -174,11 +174,13 @@ void __init smp_prepare_cpus(unsigned int max_cpus)
|
|||||||
max_cpus = ncores;
|
max_cpus = ncores;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Initialise the present mask - this tells us which CPUs should
|
* Initialise the possible/present maps.
|
||||||
* be present.
|
* cpu_possible_map describes the set of CPUs which may be present
|
||||||
|
* cpu_present_map describes the set of CPUs populated
|
||||||
*/
|
*/
|
||||||
for (i = 0; i < max_cpus; i++) {
|
for (i = 0; i < max_cpus; i++) {
|
||||||
cpu_set(i, cpu_present_mask);
|
cpu_set(i, cpu_possible_map);
|
||||||
|
cpu_set(i, cpu_present_map);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|||||||
@@ -13,7 +13,6 @@
|
|||||||
#include <linux/init.h>
|
#include <linux/init.h>
|
||||||
#include <linux/kernel_stat.h>
|
#include <linux/kernel_stat.h>
|
||||||
#include <linux/sched.h>
|
#include <linux/sched.h>
|
||||||
#include <linux/version.h>
|
|
||||||
|
|
||||||
#include <asm/io.h>
|
#include <asm/io.h>
|
||||||
#include <asm/hardware.h>
|
#include <asm/hardware.h>
|
||||||
|
|||||||
@@ -24,7 +24,6 @@
|
|||||||
#include "fpa11.h"
|
#include "fpa11.h"
|
||||||
|
|
||||||
#include <linux/module.h>
|
#include <linux/module.h>
|
||||||
#include <linux/version.h>
|
|
||||||
#include <linux/config.h>
|
#include <linux/config.h>
|
||||||
|
|
||||||
/* XXX */
|
/* XXX */
|
||||||
|
|||||||
@@ -25,7 +25,6 @@
|
|||||||
|
|
||||||
#include <linux/config.h>
|
#include <linux/config.h>
|
||||||
#include <linux/module.h>
|
#include <linux/module.h>
|
||||||
#include <linux/version.h>
|
|
||||||
#include <linux/types.h>
|
#include <linux/types.h>
|
||||||
#include <linux/errno.h>
|
#include <linux/errno.h>
|
||||||
#include <linux/kernel.h>
|
#include <linux/kernel.h>
|
||||||
|
|||||||
@@ -183,6 +183,8 @@ source "mm/Kconfig"
|
|||||||
|
|
||||||
endmenu
|
endmenu
|
||||||
|
|
||||||
|
source "net/Kconfig"
|
||||||
|
|
||||||
source "drivers/base/Kconfig"
|
source "drivers/base/Kconfig"
|
||||||
|
|
||||||
source "drivers/parport/Kconfig"
|
source "drivers/parport/Kconfig"
|
||||||
@@ -193,7 +195,7 @@ source "drivers/block/Kconfig"
|
|||||||
|
|
||||||
source "drivers/md/Kconfig"
|
source "drivers/md/Kconfig"
|
||||||
|
|
||||||
source "net/Kconfig"
|
source "drivers/net/Kconfig"
|
||||||
|
|
||||||
source "drivers/ide/Kconfig"
|
source "drivers/ide/Kconfig"
|
||||||
|
|
||||||
|
|||||||
@@ -122,6 +122,8 @@ source arch/cris/arch-v10/Kconfig
|
|||||||
|
|
||||||
endmenu
|
endmenu
|
||||||
|
|
||||||
|
source "net/Kconfig"
|
||||||
|
|
||||||
# bring in ETRAX built-in drivers
|
# bring in ETRAX built-in drivers
|
||||||
menu "Drivers for built-in interfaces"
|
menu "Drivers for built-in interfaces"
|
||||||
source arch/cris/arch-v10/drivers/Kconfig
|
source arch/cris/arch-v10/drivers/Kconfig
|
||||||
@@ -149,7 +151,7 @@ source "drivers/ieee1394/Kconfig"
|
|||||||
|
|
||||||
source "drivers/message/i2o/Kconfig"
|
source "drivers/message/i2o/Kconfig"
|
||||||
|
|
||||||
source "net/Kconfig"
|
source "drivers/net/Kconfig"
|
||||||
|
|
||||||
source "drivers/isdn/Kconfig"
|
source "drivers/isdn/Kconfig"
|
||||||
|
|
||||||
|
|||||||
@@ -346,6 +346,8 @@ source "fs/Kconfig.binfmt"
|
|||||||
|
|
||||||
endmenu
|
endmenu
|
||||||
|
|
||||||
|
source "net/Kconfig"
|
||||||
|
|
||||||
source "drivers/Kconfig"
|
source "drivers/Kconfig"
|
||||||
|
|
||||||
source "fs/Kconfig"
|
source "fs/Kconfig"
|
||||||
|
|||||||
@@ -60,7 +60,7 @@ void __init pcibios_fixup_irqs(void)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void __init pcibios_penalize_isa_irq(int irq)
|
void __init pcibios_penalize_isa_irq(int irq, int active)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -55,6 +55,8 @@ source "fs/Kconfig.binfmt"
|
|||||||
|
|
||||||
endmenu
|
endmenu
|
||||||
|
|
||||||
|
source "net/Kconfig"
|
||||||
|
|
||||||
source "drivers/base/Kconfig"
|
source "drivers/base/Kconfig"
|
||||||
|
|
||||||
source "drivers/mtd/Kconfig"
|
source "drivers/mtd/Kconfig"
|
||||||
@@ -65,7 +67,7 @@ source "drivers/ide/Kconfig"
|
|||||||
|
|
||||||
source "arch/h8300/Kconfig.ide"
|
source "arch/h8300/Kconfig.ide"
|
||||||
|
|
||||||
source "net/Kconfig"
|
source "drivers/net/Kconfig"
|
||||||
|
|
||||||
#
|
#
|
||||||
# input - input/joystick depends on it. As does USB.
|
# input - input/joystick depends on it. As does USB.
|
||||||
@@ -179,6 +181,8 @@ source "drivers/serial/Kconfig"
|
|||||||
|
|
||||||
source "drivers/i2c/Kconfig"
|
source "drivers/i2c/Kconfig"
|
||||||
|
|
||||||
|
source "drivers/hwmon/Kconfig"
|
||||||
|
|
||||||
source "drivers/usb/Kconfig"
|
source "drivers/usb/Kconfig"
|
||||||
|
|
||||||
endmenu
|
endmenu
|
||||||
|
|||||||
@@ -1285,6 +1285,8 @@ source "fs/Kconfig.binfmt"
|
|||||||
|
|
||||||
endmenu
|
endmenu
|
||||||
|
|
||||||
|
source "net/Kconfig"
|
||||||
|
|
||||||
source "drivers/Kconfig"
|
source "drivers/Kconfig"
|
||||||
|
|
||||||
source "fs/Kconfig"
|
source "fs/Kconfig"
|
||||||
|
|||||||
@@ -2,3 +2,7 @@ obj-$(CONFIG_ACPI_BOOT) := boot.o
|
|||||||
obj-$(CONFIG_X86_IO_APIC) += earlyquirk.o
|
obj-$(CONFIG_X86_IO_APIC) += earlyquirk.o
|
||||||
obj-$(CONFIG_ACPI_SLEEP) += sleep.o wakeup.o
|
obj-$(CONFIG_ACPI_SLEEP) += sleep.o wakeup.o
|
||||||
|
|
||||||
|
ifneq ($(CONFIG_ACPI_PROCESSOR),)
|
||||||
|
obj-y += cstate.o
|
||||||
|
endif
|
||||||
|
|
||||||
|
|||||||
103
arch/i386/kernel/acpi/cstate.c
Normal file
103
arch/i386/kernel/acpi/cstate.c
Normal file
@@ -0,0 +1,103 @@
|
|||||||
|
/*
|
||||||
|
* arch/i386/kernel/acpi/cstate.c
|
||||||
|
*
|
||||||
|
* Copyright (C) 2005 Intel Corporation
|
||||||
|
* Venkatesh Pallipadi <venkatesh.pallipadi@intel.com>
|
||||||
|
* - Added _PDC for SMP C-states on Intel CPUs
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include <linux/kernel.h>
|
||||||
|
#include <linux/module.h>
|
||||||
|
#include <linux/init.h>
|
||||||
|
#include <linux/acpi.h>
|
||||||
|
|
||||||
|
#include <acpi/processor.h>
|
||||||
|
#include <asm/acpi.h>
|
||||||
|
|
||||||
|
static void acpi_processor_power_init_intel_pdc(struct acpi_processor_power
|
||||||
|
*pow)
|
||||||
|
{
|
||||||
|
struct acpi_object_list *obj_list;
|
||||||
|
union acpi_object *obj;
|
||||||
|
u32 *buf;
|
||||||
|
|
||||||
|
/* allocate and initialize pdc. It will be used later. */
|
||||||
|
obj_list = kmalloc(sizeof(struct acpi_object_list), GFP_KERNEL);
|
||||||
|
if (!obj_list) {
|
||||||
|
printk(KERN_ERR "Memory allocation error\n");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
obj = kmalloc(sizeof(union acpi_object), GFP_KERNEL);
|
||||||
|
if (!obj) {
|
||||||
|
printk(KERN_ERR "Memory allocation error\n");
|
||||||
|
kfree(obj_list);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
buf = kmalloc(12, GFP_KERNEL);
|
||||||
|
if (!buf) {
|
||||||
|
printk(KERN_ERR "Memory allocation error\n");
|
||||||
|
kfree(obj);
|
||||||
|
kfree(obj_list);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
buf[0] = ACPI_PDC_REVISION_ID;
|
||||||
|
buf[1] = 1;
|
||||||
|
buf[2] = ACPI_PDC_C_CAPABILITY_SMP;
|
||||||
|
|
||||||
|
obj->type = ACPI_TYPE_BUFFER;
|
||||||
|
obj->buffer.length = 12;
|
||||||
|
obj->buffer.pointer = (u8 *) buf;
|
||||||
|
obj_list->count = 1;
|
||||||
|
obj_list->pointer = obj;
|
||||||
|
pow->pdc = obj_list;
|
||||||
|
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Initialize _PDC data based on the CPU vendor */
|
||||||
|
void acpi_processor_power_init_pdc(struct acpi_processor_power *pow,
|
||||||
|
unsigned int cpu)
|
||||||
|
{
|
||||||
|
struct cpuinfo_x86 *c = cpu_data + cpu;
|
||||||
|
|
||||||
|
pow->pdc = NULL;
|
||||||
|
if (c->x86_vendor == X86_VENDOR_INTEL)
|
||||||
|
acpi_processor_power_init_intel_pdc(pow);
|
||||||
|
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
EXPORT_SYMBOL(acpi_processor_power_init_pdc);
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Initialize bm_flags based on the CPU cache properties
|
||||||
|
* On SMP it depends on cache configuration
|
||||||
|
* - When cache is not shared among all CPUs, we flush cache
|
||||||
|
* before entering C3.
|
||||||
|
* - When cache is shared among all CPUs, we use bm_check
|
||||||
|
* mechanism as in UP case
|
||||||
|
*
|
||||||
|
* This routine is called only after all the CPUs are online
|
||||||
|
*/
|
||||||
|
void acpi_processor_power_init_bm_check(struct acpi_processor_flags *flags,
|
||||||
|
unsigned int cpu)
|
||||||
|
{
|
||||||
|
struct cpuinfo_x86 *c = cpu_data + cpu;
|
||||||
|
|
||||||
|
flags->bm_check = 0;
|
||||||
|
if (num_online_cpus() == 1)
|
||||||
|
flags->bm_check = 1;
|
||||||
|
else if (c->x86_vendor == X86_VENDOR_INTEL) {
|
||||||
|
/*
|
||||||
|
* Today all CPUs that support C3 share cache.
|
||||||
|
* TBD: This needs to look at cache shared map, once
|
||||||
|
* multi-core detection patch makes to the base.
|
||||||
|
*/
|
||||||
|
flags->bm_check = 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
EXPORT_SYMBOL(acpi_processor_power_init_bm_check);
|
||||||
@@ -74,8 +74,9 @@ wakeup_code:
|
|||||||
movw %ax,%fs
|
movw %ax,%fs
|
||||||
movw $0x0e00 + 'i', %fs:(0x12)
|
movw $0x0e00 + 'i', %fs:(0x12)
|
||||||
|
|
||||||
# need a gdt
|
# need a gdt -- use lgdtl to force 32-bit operands, in case
|
||||||
lgdt real_save_gdt - wakeup_code
|
# the GDT is located past 16 megabytes.
|
||||||
|
lgdtl real_save_gdt - wakeup_code
|
||||||
|
|
||||||
movl real_save_cr0 - wakeup_code, %eax
|
movl real_save_cr0 - wakeup_code, %eax
|
||||||
movl %eax, %cr0
|
movl %eax, %cr0
|
||||||
|
|||||||
@@ -375,7 +375,7 @@ static int centrino_cpu_init_acpi(struct cpufreq_policy *policy)
|
|||||||
arg0.buffer.pointer = (u8 *) arg0_buf;
|
arg0.buffer.pointer = (u8 *) arg0_buf;
|
||||||
arg0_buf[0] = ACPI_PDC_REVISION_ID;
|
arg0_buf[0] = ACPI_PDC_REVISION_ID;
|
||||||
arg0_buf[1] = 1;
|
arg0_buf[1] = 1;
|
||||||
arg0_buf[2] = ACPI_PDC_EST_CAPABILITY_SMP | ACPI_PDC_EST_CAPABILITY_MSR;
|
arg0_buf[2] = ACPI_PDC_EST_CAPABILITY_SMP_MSR;
|
||||||
|
|
||||||
p.pdc = &arg_list;
|
p.pdc = &arg_list;
|
||||||
|
|
||||||
|
|||||||
@@ -291,3 +291,6 @@ ENTRY(sys_call_table)
|
|||||||
.long sys_keyctl
|
.long sys_keyctl
|
||||||
.long sys_ioprio_set
|
.long sys_ioprio_set
|
||||||
.long sys_ioprio_get /* 290 */
|
.long sys_ioprio_get /* 290 */
|
||||||
|
.long sys_inotify_init
|
||||||
|
.long sys_inotify_add_watch
|
||||||
|
.long sys_inotify_rm_watch
|
||||||
|
|||||||
@@ -36,6 +36,7 @@
|
|||||||
* Power off function, if any
|
* Power off function, if any
|
||||||
*/
|
*/
|
||||||
void (*pm_power_off)(void);
|
void (*pm_power_off)(void);
|
||||||
|
EXPORT_SYMBOL(pm_power_off);
|
||||||
|
|
||||||
int voyager_level = 0;
|
int voyager_level = 0;
|
||||||
|
|
||||||
|
|||||||
@@ -10,6 +10,7 @@
|
|||||||
* the voyager hal to provide the functionality
|
* the voyager hal to provide the functionality
|
||||||
*/
|
*/
|
||||||
#include <linux/config.h>
|
#include <linux/config.h>
|
||||||
|
#include <linux/module.h>
|
||||||
#include <linux/mm.h>
|
#include <linux/mm.h>
|
||||||
#include <linux/kernel_stat.h>
|
#include <linux/kernel_stat.h>
|
||||||
#include <linux/delay.h>
|
#include <linux/delay.h>
|
||||||
@@ -40,6 +41,7 @@ static unsigned long cpu_irq_affinity[NR_CPUS] __cacheline_aligned = { [0 ... NR
|
|||||||
/* per CPU data structure (for /proc/cpuinfo et al), visible externally
|
/* per CPU data structure (for /proc/cpuinfo et al), visible externally
|
||||||
* indexed physically */
|
* indexed physically */
|
||||||
struct cpuinfo_x86 cpu_data[NR_CPUS] __cacheline_aligned;
|
struct cpuinfo_x86 cpu_data[NR_CPUS] __cacheline_aligned;
|
||||||
|
EXPORT_SYMBOL(cpu_data);
|
||||||
|
|
||||||
/* physical ID of the CPU used to boot the system */
|
/* physical ID of the CPU used to boot the system */
|
||||||
unsigned char boot_cpu_id;
|
unsigned char boot_cpu_id;
|
||||||
@@ -72,6 +74,7 @@ static volatile unsigned long smp_invalidate_needed;
|
|||||||
/* Bitmask of currently online CPUs - used by setup.c for
|
/* Bitmask of currently online CPUs - used by setup.c for
|
||||||
/proc/cpuinfo, visible externally but still physical */
|
/proc/cpuinfo, visible externally but still physical */
|
||||||
cpumask_t cpu_online_map = CPU_MASK_NONE;
|
cpumask_t cpu_online_map = CPU_MASK_NONE;
|
||||||
|
EXPORT_SYMBOL(cpu_online_map);
|
||||||
|
|
||||||
/* Bitmask of CPUs present in the system - exported by i386_syms.c, used
|
/* Bitmask of CPUs present in the system - exported by i386_syms.c, used
|
||||||
* by scheduler but indexed physically */
|
* by scheduler but indexed physically */
|
||||||
@@ -238,6 +241,7 @@ static cpumask_t smp_commenced_mask = CPU_MASK_NONE;
|
|||||||
/* This is for the new dynamic CPU boot code */
|
/* This is for the new dynamic CPU boot code */
|
||||||
cpumask_t cpu_callin_map = CPU_MASK_NONE;
|
cpumask_t cpu_callin_map = CPU_MASK_NONE;
|
||||||
cpumask_t cpu_callout_map = CPU_MASK_NONE;
|
cpumask_t cpu_callout_map = CPU_MASK_NONE;
|
||||||
|
EXPORT_SYMBOL(cpu_callout_map);
|
||||||
|
|
||||||
/* The per processor IRQ masks (these are usually kept in sync) */
|
/* The per processor IRQ masks (these are usually kept in sync) */
|
||||||
static __u16 vic_irq_mask[NR_CPUS] __cacheline_aligned;
|
static __u16 vic_irq_mask[NR_CPUS] __cacheline_aligned;
|
||||||
@@ -978,6 +982,7 @@ void flush_tlb_page(struct vm_area_struct * vma, unsigned long va)
|
|||||||
|
|
||||||
preempt_enable();
|
preempt_enable();
|
||||||
}
|
}
|
||||||
|
EXPORT_SYMBOL(flush_tlb_page);
|
||||||
|
|
||||||
/* enable the requested IRQs */
|
/* enable the requested IRQs */
|
||||||
static void
|
static void
|
||||||
@@ -1109,6 +1114,7 @@ smp_call_function (void (*func) (void *info), void *info, int retry,
|
|||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
EXPORT_SYMBOL(smp_call_function);
|
||||||
|
|
||||||
/* Sorry about the name. In an APIC based system, the APICs
|
/* Sorry about the name. In an APIC based system, the APICs
|
||||||
* themselves are programmed to send a timer interrupt. This is used
|
* themselves are programmed to send a timer interrupt. This is used
|
||||||
|
|||||||
@@ -1051,24 +1051,28 @@ static int __init pcibios_irq_init(void)
|
|||||||
subsys_initcall(pcibios_irq_init);
|
subsys_initcall(pcibios_irq_init);
|
||||||
|
|
||||||
|
|
||||||
static void pirq_penalize_isa_irq(int irq)
|
static void pirq_penalize_isa_irq(int irq, int active)
|
||||||
{
|
{
|
||||||
/*
|
/*
|
||||||
* If any ISAPnP device reports an IRQ in its list of possible
|
* If any ISAPnP device reports an IRQ in its list of possible
|
||||||
* IRQ's, we try to avoid assigning it to PCI devices.
|
* IRQ's, we try to avoid assigning it to PCI devices.
|
||||||
*/
|
*/
|
||||||
if (irq < 16)
|
if (irq < 16) {
|
||||||
|
if (active)
|
||||||
|
pirq_penalty[irq] += 1000;
|
||||||
|
else
|
||||||
pirq_penalty[irq] += 100;
|
pirq_penalty[irq] += 100;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void pcibios_penalize_isa_irq(int irq)
|
void pcibios_penalize_isa_irq(int irq, int active)
|
||||||
{
|
{
|
||||||
#ifdef CONFIG_ACPI_PCI
|
#ifdef CONFIG_ACPI_PCI
|
||||||
if (!acpi_noirq)
|
if (!acpi_noirq)
|
||||||
acpi_penalize_isa_irq(irq);
|
acpi_penalize_isa_irq(irq, active);
|
||||||
else
|
else
|
||||||
#endif
|
#endif
|
||||||
pirq_penalize_isa_irq(irq);
|
pirq_penalize_isa_irq(irq, active);
|
||||||
}
|
}
|
||||||
|
|
||||||
static int pirq_enable_irq(struct pci_dev *dev)
|
static int pirq_enable_irq(struct pci_dev *dev)
|
||||||
|
|||||||
@@ -21,7 +21,7 @@ static int pci_visws_enable_irq(struct pci_dev *dev) { return 0; }
|
|||||||
|
|
||||||
int (*pcibios_enable_irq)(struct pci_dev *dev) = &pci_visws_enable_irq;
|
int (*pcibios_enable_irq)(struct pci_dev *dev) = &pci_visws_enable_irq;
|
||||||
|
|
||||||
void __init pcibios_penalize_isa_irq(int irq) {}
|
void __init pcibios_penalize_isa_irq(int irq, int active) {}
|
||||||
|
|
||||||
|
|
||||||
unsigned int pci_bus0, pci_bus1;
|
unsigned int pci_bus0, pci_bus1;
|
||||||
|
|||||||
@@ -416,6 +416,8 @@ endmenu
|
|||||||
|
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
source "net/Kconfig"
|
||||||
|
|
||||||
source "drivers/Kconfig"
|
source "drivers/Kconfig"
|
||||||
|
|
||||||
source "fs/Kconfig"
|
source "fs/Kconfig"
|
||||||
|
|||||||
@@ -11,6 +11,7 @@
|
|||||||
* Copyright (C) 2001 Jenna Hall <jenna.s.hall@intel.com>
|
* Copyright (C) 2001 Jenna Hall <jenna.s.hall@intel.com>
|
||||||
* Copyright (C) 2001 Takayoshi Kochi <t-kochi@bq.jp.nec.com>
|
* Copyright (C) 2001 Takayoshi Kochi <t-kochi@bq.jp.nec.com>
|
||||||
* Copyright (C) 2002 Erich Focht <efocht@ess.nec.de>
|
* Copyright (C) 2002 Erich Focht <efocht@ess.nec.de>
|
||||||
|
* Copyright (C) 2004 Ashok Raj <ashok.raj@intel.com>
|
||||||
*
|
*
|
||||||
* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
*
|
*
|
||||||
@@ -67,6 +68,11 @@ EXPORT_SYMBOL(pm_power_off);
|
|||||||
unsigned char acpi_kbd_controller_present = 1;
|
unsigned char acpi_kbd_controller_present = 1;
|
||||||
unsigned char acpi_legacy_devices;
|
unsigned char acpi_legacy_devices;
|
||||||
|
|
||||||
|
static unsigned int __initdata acpi_madt_rev;
|
||||||
|
|
||||||
|
unsigned int acpi_cpei_override;
|
||||||
|
unsigned int acpi_cpei_phys_cpuid;
|
||||||
|
|
||||||
#define MAX_SAPICS 256
|
#define MAX_SAPICS 256
|
||||||
u16 ia64_acpiid_to_sapicid[MAX_SAPICS] =
|
u16 ia64_acpiid_to_sapicid[MAX_SAPICS] =
|
||||||
{ [0 ... MAX_SAPICS - 1] = -1 };
|
{ [0 ... MAX_SAPICS - 1] = -1 };
|
||||||
@@ -265,10 +271,56 @@ acpi_parse_plat_int_src (
|
|||||||
(plintsrc->flags.trigger == 1) ? IOSAPIC_EDGE : IOSAPIC_LEVEL);
|
(plintsrc->flags.trigger == 1) ? IOSAPIC_EDGE : IOSAPIC_LEVEL);
|
||||||
|
|
||||||
platform_intr_list[plintsrc->type] = vector;
|
platform_intr_list[plintsrc->type] = vector;
|
||||||
|
if (acpi_madt_rev > 1) {
|
||||||
|
acpi_cpei_override = plintsrc->plint_flags.cpei_override_flag;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Save the physical id, so we can check when its being removed
|
||||||
|
*/
|
||||||
|
acpi_cpei_phys_cpuid = ((plintsrc->id << 8) | (plintsrc->eid)) & 0xffff;
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
unsigned int can_cpei_retarget(void)
|
||||||
|
{
|
||||||
|
extern int cpe_vector;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Only if CPEI is supported and the override flag
|
||||||
|
* is present, otherwise return that its re-targettable
|
||||||
|
* if we are in polling mode.
|
||||||
|
*/
|
||||||
|
if (cpe_vector > 0 && !acpi_cpei_override)
|
||||||
|
return 0;
|
||||||
|
else
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
unsigned int is_cpu_cpei_target(unsigned int cpu)
|
||||||
|
{
|
||||||
|
unsigned int logical_id;
|
||||||
|
|
||||||
|
logical_id = cpu_logical_id(acpi_cpei_phys_cpuid);
|
||||||
|
|
||||||
|
if (logical_id == cpu)
|
||||||
|
return 1;
|
||||||
|
else
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
void set_cpei_target_cpu(unsigned int cpu)
|
||||||
|
{
|
||||||
|
acpi_cpei_phys_cpuid = cpu_physical_id(cpu);
|
||||||
|
}
|
||||||
|
|
||||||
|
unsigned int get_cpei_target_cpu(void)
|
||||||
|
{
|
||||||
|
return acpi_cpei_phys_cpuid;
|
||||||
|
}
|
||||||
|
|
||||||
static int __init
|
static int __init
|
||||||
acpi_parse_int_src_ovr (
|
acpi_parse_int_src_ovr (
|
||||||
acpi_table_entry_header *header, const unsigned long end)
|
acpi_table_entry_header *header, const unsigned long end)
|
||||||
@@ -326,6 +378,8 @@ acpi_parse_madt (unsigned long phys_addr, unsigned long size)
|
|||||||
|
|
||||||
acpi_madt = (struct acpi_table_madt *) __va(phys_addr);
|
acpi_madt = (struct acpi_table_madt *) __va(phys_addr);
|
||||||
|
|
||||||
|
acpi_madt_rev = acpi_madt->header.revision;
|
||||||
|
|
||||||
/* remember the value for reference after free_initmem() */
|
/* remember the value for reference after free_initmem() */
|
||||||
#ifdef CONFIG_ITANIUM
|
#ifdef CONFIG_ITANIUM
|
||||||
has_8259 = 1; /* Firmware on old Itanium systems is broken */
|
has_8259 = 1; /* Firmware on old Itanium systems is broken */
|
||||||
|
|||||||
@@ -271,7 +271,7 @@ ia64_mca_log_sal_error_record(int sal_info_type)
|
|||||||
|
|
||||||
#ifdef CONFIG_ACPI
|
#ifdef CONFIG_ACPI
|
||||||
|
|
||||||
static int cpe_vector = -1;
|
int cpe_vector = -1;
|
||||||
|
|
||||||
static irqreturn_t
|
static irqreturn_t
|
||||||
ia64_mca_cpe_int_handler (int cpe_irq, void *arg, struct pt_regs *ptregs)
|
ia64_mca_cpe_int_handler (int cpe_irq, void *arg, struct pt_regs *ptregs)
|
||||||
|
|||||||
@@ -196,6 +196,7 @@ update_pal_halt_status(int status)
|
|||||||
void
|
void
|
||||||
default_idle (void)
|
default_idle (void)
|
||||||
{
|
{
|
||||||
|
local_irq_enable();
|
||||||
while (!need_resched())
|
while (!need_resched())
|
||||||
if (can_do_pal_halt)
|
if (can_do_pal_halt)
|
||||||
safe_halt();
|
safe_halt();
|
||||||
|
|||||||
@@ -41,6 +41,8 @@
|
|||||||
#include <linux/serial_core.h>
|
#include <linux/serial_core.h>
|
||||||
#include <linux/efi.h>
|
#include <linux/efi.h>
|
||||||
#include <linux/initrd.h>
|
#include <linux/initrd.h>
|
||||||
|
#include <linux/platform.h>
|
||||||
|
#include <linux/pm.h>
|
||||||
|
|
||||||
#include <asm/ia32.h>
|
#include <asm/ia32.h>
|
||||||
#include <asm/machvec.h>
|
#include <asm/machvec.h>
|
||||||
@@ -816,6 +818,7 @@ cpu_init (void)
|
|||||||
/* size of physical stacked register partition plus 8 bytes: */
|
/* size of physical stacked register partition plus 8 bytes: */
|
||||||
__get_cpu_var(ia64_phys_stacked_size_p8) = num_phys_stacked*8 + 8;
|
__get_cpu_var(ia64_phys_stacked_size_p8) = num_phys_stacked*8 + 8;
|
||||||
platform_cpu_init();
|
platform_cpu_init();
|
||||||
|
pm_idle = default_idle;
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
|
|||||||
@@ -36,6 +36,13 @@ int arch_register_cpu(int num)
|
|||||||
parent = &sysfs_nodes[cpu_to_node(num)];
|
parent = &sysfs_nodes[cpu_to_node(num)];
|
||||||
#endif /* CONFIG_NUMA */
|
#endif /* CONFIG_NUMA */
|
||||||
|
|
||||||
|
/*
|
||||||
|
* If CPEI cannot be re-targetted, and this is
|
||||||
|
* CPEI target, then dont create the control file
|
||||||
|
*/
|
||||||
|
if (!can_cpei_retarget() && is_cpu_cpei_target(num))
|
||||||
|
sysfs_cpus[num].cpu.no_control = 1;
|
||||||
|
|
||||||
return register_cpu(&sysfs_cpus[num].cpu, num, parent);
|
return register_cpu(&sysfs_cpus[num].cpu, num, parent);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -359,6 +359,8 @@ source "fs/Kconfig.binfmt"
|
|||||||
|
|
||||||
endmenu
|
endmenu
|
||||||
|
|
||||||
|
source "net/Kconfig"
|
||||||
|
|
||||||
source "drivers/Kconfig"
|
source "drivers/Kconfig"
|
||||||
|
|
||||||
source "fs/Kconfig"
|
source "fs/Kconfig"
|
||||||
|
|||||||
@@ -450,6 +450,8 @@ source "drivers/zorro/Kconfig"
|
|||||||
|
|
||||||
endmenu
|
endmenu
|
||||||
|
|
||||||
|
source "net/Kconfig"
|
||||||
|
|
||||||
source "drivers/Kconfig"
|
source "drivers/Kconfig"
|
||||||
|
|
||||||
menu "Character devices"
|
menu "Character devices"
|
||||||
|
|||||||
@@ -575,6 +575,8 @@ config PM
|
|||||||
|
|
||||||
endmenu
|
endmenu
|
||||||
|
|
||||||
|
source "net/Kconfig"
|
||||||
|
|
||||||
source "drivers/Kconfig"
|
source "drivers/Kconfig"
|
||||||
|
|
||||||
source "fs/Kconfig"
|
source "fs/Kconfig"
|
||||||
|
|||||||
@@ -1640,6 +1640,8 @@ config PM
|
|||||||
|
|
||||||
endmenu
|
endmenu
|
||||||
|
|
||||||
|
source "net/Kconfig"
|
||||||
|
|
||||||
source "drivers/Kconfig"
|
source "drivers/Kconfig"
|
||||||
|
|
||||||
source "fs/Kconfig"
|
source "fs/Kconfig"
|
||||||
|
|||||||
@@ -190,6 +190,8 @@ source "fs/Kconfig.binfmt"
|
|||||||
|
|
||||||
endmenu
|
endmenu
|
||||||
|
|
||||||
|
source "net/Kconfig"
|
||||||
|
|
||||||
source "drivers/Kconfig"
|
source "drivers/Kconfig"
|
||||||
|
|
||||||
source "fs/Kconfig"
|
source "fs/Kconfig"
|
||||||
|
|||||||
@@ -1355,6 +1355,8 @@ config PIN_TLB
|
|||||||
depends on ADVANCED_OPTIONS && 8xx
|
depends on ADVANCED_OPTIONS && 8xx
|
||||||
endmenu
|
endmenu
|
||||||
|
|
||||||
|
source "net/Kconfig"
|
||||||
|
|
||||||
source "drivers/Kconfig"
|
source "drivers/Kconfig"
|
||||||
|
|
||||||
source "fs/Kconfig"
|
source "fs/Kconfig"
|
||||||
|
|||||||
@@ -28,6 +28,12 @@ typedef NORET_TYPE void (*relocate_new_kernel_t)(
|
|||||||
const extern unsigned char relocate_new_kernel[];
|
const extern unsigned char relocate_new_kernel[];
|
||||||
const extern unsigned int relocate_new_kernel_size;
|
const extern unsigned int relocate_new_kernel_size;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Provide a dummy crash_notes definition while crash dump arrives to ppc.
|
||||||
|
* This prevents breakage of crash_notes attribute in kernel/ksysfs.c.
|
||||||
|
*/
|
||||||
|
void *crash_notes = NULL;
|
||||||
|
|
||||||
void machine_shutdown(void)
|
void machine_shutdown(void)
|
||||||
{
|
{
|
||||||
if (ppc_md.machine_shutdown)
|
if (ppc_md.machine_shutdown)
|
||||||
|
|||||||
@@ -429,6 +429,8 @@ config CMDLINE
|
|||||||
|
|
||||||
endmenu
|
endmenu
|
||||||
|
|
||||||
|
source "net/Kconfig"
|
||||||
|
|
||||||
source "drivers/Kconfig"
|
source "drivers/Kconfig"
|
||||||
|
|
||||||
source "fs/Kconfig"
|
source "fs/Kconfig"
|
||||||
|
|||||||
@@ -465,6 +465,8 @@ config KEXEC
|
|||||||
|
|
||||||
endmenu
|
endmenu
|
||||||
|
|
||||||
|
source "net/Kconfig"
|
||||||
|
|
||||||
config PCMCIA
|
config PCMCIA
|
||||||
bool
|
bool
|
||||||
default n
|
default n
|
||||||
@@ -475,7 +477,7 @@ source "drivers/scsi/Kconfig"
|
|||||||
|
|
||||||
source "drivers/s390/Kconfig"
|
source "drivers/s390/Kconfig"
|
||||||
|
|
||||||
source "net/Kconfig"
|
source "drivers/net/Kconfig"
|
||||||
|
|
||||||
source "fs/Kconfig"
|
source "fs/Kconfig"
|
||||||
|
|
||||||
|
|||||||
@@ -784,6 +784,8 @@ config EMBEDDED_RAMDISK_IMAGE
|
|||||||
|
|
||||||
endmenu
|
endmenu
|
||||||
|
|
||||||
|
source "net/Kconfig"
|
||||||
|
|
||||||
source "drivers/Kconfig"
|
source "drivers/Kconfig"
|
||||||
|
|
||||||
source "fs/Kconfig"
|
source "fs/Kconfig"
|
||||||
|
|||||||
@@ -268,6 +268,8 @@ source "fs/Kconfig.binfmt"
|
|||||||
|
|
||||||
endmenu
|
endmenu
|
||||||
|
|
||||||
|
source "net/Kconfig"
|
||||||
|
|
||||||
source "drivers/Kconfig"
|
source "drivers/Kconfig"
|
||||||
|
|
||||||
source "fs/Kconfig"
|
source "fs/Kconfig"
|
||||||
|
|||||||
@@ -268,6 +268,8 @@ source "mm/Kconfig"
|
|||||||
|
|
||||||
endmenu
|
endmenu
|
||||||
|
|
||||||
|
source "net/Kconfig"
|
||||||
|
|
||||||
source "drivers/Kconfig"
|
source "drivers/Kconfig"
|
||||||
|
|
||||||
if !SUN4
|
if !SUN4
|
||||||
|
|||||||
@@ -525,6 +525,8 @@ source "mm/Kconfig"
|
|||||||
|
|
||||||
endmenu
|
endmenu
|
||||||
|
|
||||||
|
source "net/Kconfig"
|
||||||
|
|
||||||
source "drivers/base/Kconfig"
|
source "drivers/base/Kconfig"
|
||||||
|
|
||||||
source "drivers/video/Kconfig"
|
source "drivers/video/Kconfig"
|
||||||
@@ -551,7 +553,7 @@ endif
|
|||||||
|
|
||||||
source "drivers/ieee1394/Kconfig"
|
source "drivers/ieee1394/Kconfig"
|
||||||
|
|
||||||
source "net/Kconfig"
|
source "drivers/net/Kconfig"
|
||||||
|
|
||||||
source "drivers/isdn/Kconfig"
|
source "drivers/isdn/Kconfig"
|
||||||
|
|
||||||
@@ -647,6 +649,8 @@ source "drivers/input/Kconfig"
|
|||||||
|
|
||||||
source "drivers/i2c/Kconfig"
|
source "drivers/i2c/Kconfig"
|
||||||
|
|
||||||
|
source "drivers/hwmon/Kconfig"
|
||||||
|
|
||||||
source "fs/Kconfig"
|
source "fs/Kconfig"
|
||||||
|
|
||||||
source "drivers/media/Kconfig"
|
source "drivers/media/Kconfig"
|
||||||
|
|||||||
@@ -45,8 +45,8 @@ extern void calibrate_delay(void);
|
|||||||
/* Please don't make this stuff initdata!!! --DaveM */
|
/* Please don't make this stuff initdata!!! --DaveM */
|
||||||
static unsigned char boot_cpu_id;
|
static unsigned char boot_cpu_id;
|
||||||
|
|
||||||
cpumask_t cpu_online_map = CPU_MASK_NONE __read_mostly;
|
cpumask_t cpu_online_map __read_mostly = CPU_MASK_NONE;
|
||||||
cpumask_t phys_cpu_present_map = CPU_MASK_NONE __read_mostly;
|
cpumask_t phys_cpu_present_map __read_mostly = CPU_MASK_NONE;
|
||||||
static cpumask_t smp_commenced_mask;
|
static cpumask_t smp_commenced_mask;
|
||||||
static cpumask_t cpu_callout_map;
|
static cpumask_t cpu_callout_map;
|
||||||
|
|
||||||
|
|||||||
@@ -275,6 +275,8 @@ endmenu
|
|||||||
|
|
||||||
source "init/Kconfig"
|
source "init/Kconfig"
|
||||||
|
|
||||||
|
source "net/Kconfig"
|
||||||
|
|
||||||
source "drivers/base/Kconfig"
|
source "drivers/base/Kconfig"
|
||||||
|
|
||||||
source "arch/um/Kconfig_char"
|
source "arch/um/Kconfig_char"
|
||||||
@@ -287,7 +289,7 @@ config NETDEVICES
|
|||||||
|
|
||||||
source "arch/um/Kconfig_net"
|
source "arch/um/Kconfig_net"
|
||||||
|
|
||||||
source "net/Kconfig"
|
source "drivers/net/Kconfig"
|
||||||
|
|
||||||
source "fs/Kconfig"
|
source "fs/Kconfig"
|
||||||
|
|
||||||
|
|||||||
@@ -140,7 +140,8 @@ endef
|
|||||||
#When cleaning we don't include .config, so we don't include
|
#When cleaning we don't include .config, so we don't include
|
||||||
#TT or skas makefiles and don't clean skas_ptregs.h.
|
#TT or skas makefiles and don't clean skas_ptregs.h.
|
||||||
CLEAN_FILES += linux x.i gmon.out $(ARCH_DIR)/include/uml-config.h \
|
CLEAN_FILES += linux x.i gmon.out $(ARCH_DIR)/include/uml-config.h \
|
||||||
$(GEN_HEADERS) $(ARCH_DIR)/include/skas_ptregs.h
|
$(GEN_HEADERS) $(ARCH_DIR)/include/skas_ptregs.h \
|
||||||
|
$(ARCH_DIR)/include/user_constants.h
|
||||||
|
|
||||||
MRPROPER_FILES += $(SYMLINK_HEADERS) $(ARCH_SYMLINKS) \
|
MRPROPER_FILES += $(SYMLINK_HEADERS) $(ARCH_SYMLINKS) \
|
||||||
$(addprefix $(ARCH_DIR)/kernel/,$(KERN_SYMLINKS)) $(ARCH_DIR)/os \
|
$(addprefix $(ARCH_DIR)/kernel/,$(KERN_SYMLINKS)) $(ARCH_DIR)/os \
|
||||||
|
|||||||
@@ -250,6 +250,8 @@ source "fs/Kconfig.binfmt"
|
|||||||
|
|
||||||
endmenu
|
endmenu
|
||||||
|
|
||||||
|
source "net/Kconfig"
|
||||||
|
|
||||||
#############################################################################
|
#############################################################################
|
||||||
|
|
||||||
source "drivers/base/Kconfig"
|
source "drivers/base/Kconfig"
|
||||||
@@ -283,7 +285,7 @@ source "drivers/ieee1394/Kconfig"
|
|||||||
|
|
||||||
source "drivers/message/i2o/Kconfig"
|
source "drivers/message/i2o/Kconfig"
|
||||||
|
|
||||||
source "net/Kconfig"
|
source "drivers/net/Kconfig"
|
||||||
|
|
||||||
source "drivers/isdn/Kconfig"
|
source "drivers/isdn/Kconfig"
|
||||||
|
|
||||||
|
|||||||
@@ -515,6 +515,8 @@ config UID16
|
|||||||
|
|
||||||
endmenu
|
endmenu
|
||||||
|
|
||||||
|
source "net/Kconfig"
|
||||||
|
|
||||||
source drivers/Kconfig
|
source drivers/Kconfig
|
||||||
|
|
||||||
source "drivers/firmware/Kconfig"
|
source "drivers/firmware/Kconfig"
|
||||||
|
|||||||
@@ -62,8 +62,8 @@ SECTIONS
|
|||||||
}
|
}
|
||||||
|
|
||||||
#define VSYSCALL_ADDR (-10*1024*1024)
|
#define VSYSCALL_ADDR (-10*1024*1024)
|
||||||
#define VSYSCALL_PHYS_ADDR ((LOADADDR(.data.cacheline_aligned) + SIZEOF(.data.cacheline_aligned) + 4095) & ~(4095))
|
#define VSYSCALL_PHYS_ADDR ((LOADADDR(.data.read_mostly) + SIZEOF(.data.read_mostly) + 4095) & ~(4095))
|
||||||
#define VSYSCALL_VIRT_ADDR ((ADDR(.data.cacheline_aligned) + SIZEOF(.data.cacheline_aligned) + 4095) & ~(4095))
|
#define VSYSCALL_VIRT_ADDR ((ADDR(.data.read_mostly) + SIZEOF(.data.read_mostly) + 4095) & ~(4095))
|
||||||
|
|
||||||
#define VLOAD_OFFSET (VSYSCALL_ADDR - VSYSCALL_PHYS_ADDR)
|
#define VLOAD_OFFSET (VSYSCALL_ADDR - VSYSCALL_PHYS_ADDR)
|
||||||
#define VLOAD(x) (ADDR(x) - VLOAD_OFFSET)
|
#define VLOAD(x) (ADDR(x) - VLOAD_OFFSET)
|
||||||
|
|||||||
@@ -228,6 +228,8 @@ source "fs/Kconfig.binfmt"
|
|||||||
|
|
||||||
endmenu
|
endmenu
|
||||||
|
|
||||||
|
source "net/Kconfig"
|
||||||
|
|
||||||
source "drivers/Kconfig"
|
source "drivers/Kconfig"
|
||||||
|
|
||||||
source "fs/Kconfig"
|
source "fs/Kconfig"
|
||||||
|
|||||||
@@ -15,7 +15,6 @@
|
|||||||
#include <asm/processor.h>
|
#include <asm/processor.h>
|
||||||
|
|
||||||
#include <linux/types.h>
|
#include <linux/types.h>
|
||||||
#include <linux/sched.h>
|
|
||||||
#include <linux/stddef.h>
|
#include <linux/stddef.h>
|
||||||
#include <linux/thread_info.h>
|
#include <linux/thread_info.h>
|
||||||
#include <linux/ptrace.h>
|
#include <linux/ptrace.h>
|
||||||
|
|||||||
@@ -69,7 +69,7 @@ int sys_pipe(int __user *userfds)
|
|||||||
/*
|
/*
|
||||||
* Common code for old and new mmaps.
|
* Common code for old and new mmaps.
|
||||||
*/
|
*/
|
||||||
long sys_mmap2(unsigned long addr, unsigned long len, unsigned long prot,
|
long sys_mmap(unsigned long addr, unsigned long len, unsigned long prot,
|
||||||
unsigned long flags, unsigned long fd, unsigned long pgoff)
|
unsigned long flags, unsigned long fd, unsigned long pgoff)
|
||||||
{
|
{
|
||||||
int error = -EBADF;
|
int error = -EBADF;
|
||||||
|
|||||||
@@ -42,7 +42,7 @@ SYSCALL(sys_mknod, 3)
|
|||||||
SYSCALL(sys_chmod, 2) /* 15 */
|
SYSCALL(sys_chmod, 2) /* 15 */
|
||||||
SYSCALL(sys_lchown, 3)
|
SYSCALL(sys_lchown, 3)
|
||||||
SYSCALL(sys_ni_syscall, 0)
|
SYSCALL(sys_ni_syscall, 0)
|
||||||
SYSCALL(sys_stat, 2)
|
SYSCALL(sys_newstat, 2)
|
||||||
SYSCALL(sys_lseek, 3)
|
SYSCALL(sys_lseek, 3)
|
||||||
SYSCALL(sys_getpid, 0) /* 20 */
|
SYSCALL(sys_getpid, 0) /* 20 */
|
||||||
SYSCALL(sys_mount, 5)
|
SYSCALL(sys_mount, 5)
|
||||||
@@ -52,7 +52,7 @@ SYSCALL(sys_getuid, 0)
|
|||||||
SYSCALL(sys_ni_syscall, 1) /* 25 */
|
SYSCALL(sys_ni_syscall, 1) /* 25 */
|
||||||
SYSCALL(sys_ptrace, 4)
|
SYSCALL(sys_ptrace, 4)
|
||||||
SYSCALL(sys_ni_syscall, 1)
|
SYSCALL(sys_ni_syscall, 1)
|
||||||
SYSCALL(sys_fstat, 2)
|
SYSCALL(sys_newfstat, 2)
|
||||||
SYSCALL(sys_ni_syscall, 0)
|
SYSCALL(sys_ni_syscall, 0)
|
||||||
SYSCALL(sys_utime, 2) /* 30 */
|
SYSCALL(sys_utime, 2) /* 30 */
|
||||||
SYSCALL(sys_ni_syscall, 0)
|
SYSCALL(sys_ni_syscall, 0)
|
||||||
@@ -108,7 +108,7 @@ SYSCALL(sys_getgroups, 2) /* 80 */
|
|||||||
SYSCALL(sys_setgroups, 2)
|
SYSCALL(sys_setgroups, 2)
|
||||||
SYSCALL(sys_ni_syscall, 0)
|
SYSCALL(sys_ni_syscall, 0)
|
||||||
SYSCALL(sys_symlink, 2)
|
SYSCALL(sys_symlink, 2)
|
||||||
SYSCALL(sys_lstat, 2)
|
SYSCALL(sys_newlstat, 2)
|
||||||
SYSCALL(sys_readlink, 3) /* 85 */
|
SYSCALL(sys_readlink, 3) /* 85 */
|
||||||
SYSCALL(sys_uselib, 1)
|
SYSCALL(sys_uselib, 1)
|
||||||
SYSCALL(sys_swapon, 2)
|
SYSCALL(sys_swapon, 2)
|
||||||
|
|||||||
@@ -29,6 +29,7 @@
|
|||||||
#include <linux/module.h>
|
#include <linux/module.h>
|
||||||
#include <linux/stringify.h>
|
#include <linux/stringify.h>
|
||||||
#include <linux/kallsyms.h>
|
#include <linux/kallsyms.h>
|
||||||
|
#include <linux/delay.h>
|
||||||
|
|
||||||
#include <asm/ptrace.h>
|
#include <asm/ptrace.h>
|
||||||
#include <asm/timex.h>
|
#include <asm/timex.h>
|
||||||
@@ -488,8 +489,7 @@ void die(const char * str, struct pt_regs * regs, long err)
|
|||||||
|
|
||||||
if (panic_on_oops) {
|
if (panic_on_oops) {
|
||||||
printk(KERN_EMERG "Fatal exception: panic in 5 seconds\n");
|
printk(KERN_EMERG "Fatal exception: panic in 5 seconds\n");
|
||||||
set_current_state(TASK_UNINTERRUPTIBLE);
|
ssleep(5);
|
||||||
schedule_timeout(5 * HZ);
|
|
||||||
panic("Fatal exception");
|
panic("Fatal exception");
|
||||||
}
|
}
|
||||||
do_exit(err);
|
do_exit(err);
|
||||||
|
|||||||
@@ -90,10 +90,10 @@ SECTIONS
|
|||||||
*(.literal .text)
|
*(.literal .text)
|
||||||
*(.srom.text)
|
*(.srom.text)
|
||||||
VMLINUX_SYMBOL(__sched_text_start) = .;
|
VMLINUX_SYMBOL(__sched_text_start) = .;
|
||||||
*(.sched.text.literal .sched.text)
|
*(.sched.literal .sched.text)
|
||||||
VMLINUX_SYMBOL(__sched_text_end) = .;
|
VMLINUX_SYMBOL(__sched_text_end) = .;
|
||||||
VMLINUX_SYMBOL(__lock_text_start) = .;
|
VMLINUX_SYMBOL(__lock_text_start) = .;
|
||||||
*(.spinlock.text.literal .spinlock.text)
|
*(.spinlock.literal .spinlock.text)
|
||||||
VMLINUX_SYMBOL(__lock_text_end) = .;
|
VMLINUX_SYMBOL(__lock_text_end) = .;
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -164,7 +164,7 @@ SECTIONS
|
|||||||
__init_begin = .;
|
__init_begin = .;
|
||||||
.init.text : {
|
.init.text : {
|
||||||
_sinittext = .;
|
_sinittext = .;
|
||||||
*(.init.text.literal) *(.init.text)
|
*(.init.literal) *(.init.text)
|
||||||
_einittext = .;
|
_einittext = .;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -28,7 +28,7 @@ source "drivers/message/i2o/Kconfig"
|
|||||||
|
|
||||||
source "drivers/macintosh/Kconfig"
|
source "drivers/macintosh/Kconfig"
|
||||||
|
|
||||||
source "net/Kconfig"
|
source "drivers/net/Kconfig"
|
||||||
|
|
||||||
source "drivers/isdn/Kconfig"
|
source "drivers/isdn/Kconfig"
|
||||||
|
|
||||||
@@ -44,6 +44,8 @@ source "drivers/i2c/Kconfig"
|
|||||||
|
|
||||||
source "drivers/w1/Kconfig"
|
source "drivers/w1/Kconfig"
|
||||||
|
|
||||||
|
source "drivers/hwmon/Kconfig"
|
||||||
|
|
||||||
source "drivers/misc/Kconfig"
|
source "drivers/misc/Kconfig"
|
||||||
|
|
||||||
source "drivers/media/Kconfig"
|
source "drivers/media/Kconfig"
|
||||||
|
|||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user