mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-09-29 13:53:33 +00:00
Merge branch 'master'
This commit is contained in:
commit
4bf311ddfb
1097 changed files with 18558 additions and 10101 deletions
10
CREDITS
10
CREDITS
|
@ -528,11 +528,11 @@ S: Oxford
|
||||||
S: United Kingdom
|
S: United Kingdom
|
||||||
|
|
||||||
N: Luiz Fernando N. Capitulino
|
N: Luiz Fernando N. Capitulino
|
||||||
E: lcapitulino@terra.com.br
|
E: lcapitulino@mandriva.com.br
|
||||||
E: lcapitulino@prefeitura.sp.gov.br
|
E: lcapitulino@gmail.com
|
||||||
W: http://www.telecentros.sp.gov.br
|
W: http://www.cpu.eti.br
|
||||||
D: Little fixes and a lot of janitorial work
|
D: misc kernel hacking
|
||||||
S: E-GOV Telecentros SP
|
S: Mandriva
|
||||||
S: Brazil
|
S: Brazil
|
||||||
|
|
||||||
N: Remy Card
|
N: Remy Card
|
||||||
|
|
|
@ -698,12 +698,12 @@ these interfaces. Remember that, as defined, consistent mappings are
|
||||||
always going to be SAC addressable.
|
always going to be SAC addressable.
|
||||||
|
|
||||||
The first thing your driver needs to do is query the PCI platform
|
The first thing your driver needs to do is query the PCI platform
|
||||||
layer with your devices DAC addressing capabilities:
|
layer if it is capable of handling your devices DAC addressing
|
||||||
|
capabilities:
|
||||||
|
|
||||||
int pci_dac_set_dma_mask(struct pci_dev *pdev, u64 mask);
|
int pci_dac_dma_supported(struct pci_dev *hwdev, u64 mask);
|
||||||
|
|
||||||
This routine behaves identically to pci_set_dma_mask. You may not
|
You may not use the following interfaces if this routine fails.
|
||||||
use the following interfaces if this routine fails.
|
|
||||||
|
|
||||||
Next, DMA addresses using this API are kept track of using the
|
Next, DMA addresses using this API are kept track of using the
|
||||||
dma64_addr_t type. It is guaranteed to be big enough to hold any
|
dma64_addr_t type. It is guaranteed to be big enough to hold any
|
||||||
|
|
|
@ -687,8 +687,9 @@ diff shows how closely related RCU and reader-writer locking can be.
|
||||||
+ spin_lock(&listmutex);
|
+ spin_lock(&listmutex);
|
||||||
list_for_each_entry(p, head, lp) {
|
list_for_each_entry(p, head, lp) {
|
||||||
if (p->key == key) {
|
if (p->key == key) {
|
||||||
list_del(&p->list);
|
- list_del(&p->list);
|
||||||
- write_unlock(&listmutex);
|
- write_unlock(&listmutex);
|
||||||
|
+ list_del_rcu(&p->list);
|
||||||
+ spin_unlock(&listmutex);
|
+ spin_unlock(&listmutex);
|
||||||
+ synchronize_rcu();
|
+ synchronize_rcu();
|
||||||
kfree(p);
|
kfree(p);
|
||||||
|
@ -736,7 +737,7 @@ Or, for those who prefer a side-by-side listing:
|
||||||
5 write_lock(&listmutex); 5 spin_lock(&listmutex);
|
5 write_lock(&listmutex); 5 spin_lock(&listmutex);
|
||||||
6 list_for_each_entry(p, head, lp) { 6 list_for_each_entry(p, head, lp) {
|
6 list_for_each_entry(p, head, lp) { 6 list_for_each_entry(p, head, lp) {
|
||||||
7 if (p->key == key) { 7 if (p->key == key) {
|
7 if (p->key == key) { 7 if (p->key == key) {
|
||||||
8 list_del(&p->list); 8 list_del(&p->list);
|
8 list_del(&p->list); 8 list_del_rcu(&p->list);
|
||||||
9 write_unlock(&listmutex); 9 spin_unlock(&listmutex);
|
9 write_unlock(&listmutex); 9 spin_unlock(&listmutex);
|
||||||
10 synchronize_rcu();
|
10 synchronize_rcu();
|
||||||
10 kfree(p); 11 kfree(p);
|
10 kfree(p); 11 kfree(p);
|
||||||
|
|
|
@ -1,57 +1,63 @@
|
||||||
Linux Kernel patch sumbittal checklist
|
Linux Kernel patch sumbittal checklist
|
||||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
Here are some basic things that developers should do if they
|
Here are some basic things that developers should do if they want to see their
|
||||||
want to see their kernel patch submittals accepted quicker.
|
kernel patch submissions accepted more quickly.
|
||||||
|
|
||||||
These are all above and beyond the documentation that is provided
|
These are all above and beyond the documentation that is provided in
|
||||||
in Documentation/SubmittingPatches and elsewhere about submitting
|
Documentation/SubmittingPatches and elsewhere regarding submitting Linux
|
||||||
Linux kernel patches.
|
kernel patches.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
- Builds cleanly with applicable or modified CONFIG options =y, =m, and =n.
|
1: Builds cleanly with applicable or modified CONFIG options =y, =m, and
|
||||||
No gcc warnings/errors, no linker warnings/errors.
|
=n. No gcc warnings/errors, no linker warnings/errors.
|
||||||
|
|
||||||
- Passes allnoconfig, allmodconfig
|
2: Passes allnoconfig, allmodconfig
|
||||||
|
|
||||||
- Builds on multiple CPU arch-es by using local cross-compile tools
|
3: Builds on multiple CPU architectures by using local cross-compile tools
|
||||||
or something like PLM at OSDL.
|
or something like PLM at OSDL.
|
||||||
|
|
||||||
- ppc64 is a good architecture for cross-compilation checking because it
|
4: ppc64 is a good architecture for cross-compilation checking because it
|
||||||
tends to use `unsigned long' for 64-bit quantities.
|
tends to use `unsigned long' for 64-bit quantities.
|
||||||
|
|
||||||
- Matches kernel coding style(!)
|
5: Matches kernel coding style(!)
|
||||||
|
|
||||||
- Any new or modified CONFIG options don't muck up the config menu.
|
6: Any new or modified CONFIG options don't muck up the config menu.
|
||||||
|
|
||||||
- All new Kconfig options have help text.
|
7: All new Kconfig options have help text.
|
||||||
|
|
||||||
- Has been carefully reviewed with respect to relevant Kconfig
|
8: Has been carefully reviewed with respect to relevant Kconfig
|
||||||
combinations. This is very hard to get right with testing --
|
combinations. This is very hard to get right with testing -- brainpower
|
||||||
brainpower pays off here.
|
pays off here.
|
||||||
|
|
||||||
- Check cleanly with sparse.
|
9: Check cleanly with sparse.
|
||||||
|
|
||||||
- Use 'make checkstack' and 'make namespacecheck' and fix any
|
10: Use 'make checkstack' and 'make namespacecheck' and fix any problems
|
||||||
problems that they find. Note: checkstack does not point out
|
that they find. Note: checkstack does not point out problems explicitly,
|
||||||
problems explicitly, but any one function that uses more than
|
but any one function that uses more than 512 bytes on the stack is a
|
||||||
512 bytes on the stack is a candidate for change.
|
candidate for change.
|
||||||
|
|
||||||
- Include kernel-doc to document global kernel APIs. (Not required
|
11: Include kernel-doc to document global kernel APIs. (Not required for
|
||||||
for static functions, but OK there also.) Use 'make htmldocs'
|
static functions, but OK there also.) Use 'make htmldocs' or 'make
|
||||||
or 'make mandocs' to check the kernel-doc and fix any issues.
|
mandocs' to check the kernel-doc and fix any issues.
|
||||||
|
|
||||||
- Has been tested with CONFIG_PREEMPT, CONFIG_DEBUG_PREEMPT,
|
12: Has been tested with CONFIG_PREEMPT, CONFIG_DEBUG_PREEMPT,
|
||||||
CONFIG_DEBUG_SLAB, CONFIG_DEBUG_PAGEALLOC, CONFIG_DEBUG_MUTEXES,
|
CONFIG_DEBUG_SLAB, CONFIG_DEBUG_PAGEALLOC, CONFIG_DEBUG_MUTEXES,
|
||||||
CONFIG_DEBUG_SPINLOCK, CONFIG_DEBUG_SPINLOCK_SLEEP all simultaneously
|
CONFIG_DEBUG_SPINLOCK, CONFIG_DEBUG_SPINLOCK_SLEEP all simultaneously
|
||||||
enabled.
|
enabled.
|
||||||
|
|
||||||
- Has been build- and runtime tested with and without CONFIG_SMP and
|
13: Has been build- and runtime tested with and without CONFIG_SMP and
|
||||||
CONFIG_PREEMPT.
|
CONFIG_PREEMPT.
|
||||||
|
|
||||||
- If the patch affects IO/Disk, etc: has been tested with and without
|
14: If the patch affects IO/Disk, etc: has been tested with and without
|
||||||
CONFIG_LBD.
|
CONFIG_LBD.
|
||||||
|
|
||||||
|
15: All codepaths have been exercised with all lockdep features enabled.
|
||||||
|
|
||||||
2006-APR-27
|
16: All new /proc entries are documented under Documentation/
|
||||||
|
|
||||||
|
17: All new kernel boot parameters are documented in
|
||||||
|
Documentation/kernel-parameters.txt.
|
||||||
|
|
||||||
|
18: All new module parameters are documented with MODULE_PARM_DESC()
|
||||||
|
|
110
Documentation/accounting/delay-accounting.txt
Normal file
110
Documentation/accounting/delay-accounting.txt
Normal file
|
@ -0,0 +1,110 @@
|
||||||
|
Delay accounting
|
||||||
|
----------------
|
||||||
|
|
||||||
|
Tasks encounter delays in execution when they wait
|
||||||
|
for some kernel resource to become available e.g. a
|
||||||
|
runnable task may wait for a free CPU to run on.
|
||||||
|
|
||||||
|
The per-task delay accounting functionality measures
|
||||||
|
the delays experienced by a task while
|
||||||
|
|
||||||
|
a) waiting for a CPU (while being runnable)
|
||||||
|
b) completion of synchronous block I/O initiated by the task
|
||||||
|
c) swapping in pages
|
||||||
|
|
||||||
|
and makes these statistics available to userspace through
|
||||||
|
the taskstats interface.
|
||||||
|
|
||||||
|
Such delays provide feedback for setting a task's cpu priority,
|
||||||
|
io priority and rss limit values appropriately. Long delays for
|
||||||
|
important tasks could be a trigger for raising its corresponding priority.
|
||||||
|
|
||||||
|
The functionality, through its use of the taskstats interface, also provides
|
||||||
|
delay statistics aggregated for all tasks (or threads) belonging to a
|
||||||
|
thread group (corresponding to a traditional Unix process). This is a commonly
|
||||||
|
needed aggregation that is more efficiently done by the kernel.
|
||||||
|
|
||||||
|
Userspace utilities, particularly resource management applications, can also
|
||||||
|
aggregate delay statistics into arbitrary groups. To enable this, delay
|
||||||
|
statistics of a task are available both during its lifetime as well as on its
|
||||||
|
exit, ensuring continuous and complete monitoring can be done.
|
||||||
|
|
||||||
|
|
||||||
|
Interface
|
||||||
|
---------
|
||||||
|
|
||||||
|
Delay accounting uses the taskstats interface which is described
|
||||||
|
in detail in a separate document in this directory. Taskstats returns a
|
||||||
|
generic data structure to userspace corresponding to per-pid and per-tgid
|
||||||
|
statistics. The delay accounting functionality populates specific fields of
|
||||||
|
this structure. See
|
||||||
|
include/linux/taskstats.h
|
||||||
|
for a description of the fields pertaining to delay accounting.
|
||||||
|
It will generally be in the form of counters returning the cumulative
|
||||||
|
delay seen for cpu, sync block I/O, swapin etc.
|
||||||
|
|
||||||
|
Taking the difference of two successive readings of a given
|
||||||
|
counter (say cpu_delay_total) for a task will give the delay
|
||||||
|
experienced by the task waiting for the corresponding resource
|
||||||
|
in that interval.
|
||||||
|
|
||||||
|
When a task exits, records containing the per-task statistics
|
||||||
|
are sent to userspace without requiring a command. If it is the last exiting
|
||||||
|
task of a thread group, the per-tgid statistics are also sent. More details
|
||||||
|
are given in the taskstats interface description.
|
||||||
|
|
||||||
|
The getdelays.c userspace utility in this directory allows simple commands to
|
||||||
|
be run and the corresponding delay statistics to be displayed. It also serves
|
||||||
|
as an example of using the taskstats interface.
|
||||||
|
|
||||||
|
Usage
|
||||||
|
-----
|
||||||
|
|
||||||
|
Compile the kernel with
|
||||||
|
CONFIG_TASK_DELAY_ACCT=y
|
||||||
|
CONFIG_TASKSTATS=y
|
||||||
|
|
||||||
|
Enable the accounting at boot time by adding
|
||||||
|
the following to the kernel boot options
|
||||||
|
delayacct
|
||||||
|
|
||||||
|
and after the system has booted up, use a utility
|
||||||
|
similar to getdelays.c to access the delays
|
||||||
|
seen by a given task or a task group (tgid).
|
||||||
|
The utility also allows a given command to be
|
||||||
|
executed and the corresponding delays to be
|
||||||
|
seen.
|
||||||
|
|
||||||
|
General format of the getdelays command
|
||||||
|
|
||||||
|
getdelays [-t tgid] [-p pid] [-c cmd...]
|
||||||
|
|
||||||
|
|
||||||
|
Get delays, since system boot, for pid 10
|
||||||
|
# ./getdelays -p 10
|
||||||
|
(output similar to next case)
|
||||||
|
|
||||||
|
Get sum of delays, since system boot, for all pids with tgid 5
|
||||||
|
# ./getdelays -t 5
|
||||||
|
|
||||||
|
|
||||||
|
CPU count real total virtual total delay total
|
||||||
|
7876 92005750 100000000 24001500
|
||||||
|
IO count delay total
|
||||||
|
0 0
|
||||||
|
MEM count delay total
|
||||||
|
0 0
|
||||||
|
|
||||||
|
Get delays seen in executing a given simple command
|
||||||
|
# ./getdelays -c ls /
|
||||||
|
|
||||||
|
bin data1 data3 data5 dev home media opt root srv sys usr
|
||||||
|
boot data2 data4 data6 etc lib mnt proc sbin subdomain tmp var
|
||||||
|
|
||||||
|
|
||||||
|
CPU count real total virtual total delay total
|
||||||
|
6 4000250 4000000 0
|
||||||
|
IO count delay total
|
||||||
|
0 0
|
||||||
|
MEM count delay total
|
||||||
|
0 0
|
396
Documentation/accounting/getdelays.c
Normal file
396
Documentation/accounting/getdelays.c
Normal file
|
@ -0,0 +1,396 @@
|
||||||
|
/* getdelays.c
|
||||||
|
*
|
||||||
|
* Utility to get per-pid and per-tgid delay accounting statistics
|
||||||
|
* Also illustrates usage of the taskstats interface
|
||||||
|
*
|
||||||
|
* Copyright (C) Shailabh Nagar, IBM Corp. 2005
|
||||||
|
* Copyright (C) Balbir Singh, IBM Corp. 2006
|
||||||
|
* Copyright (c) Jay Lan, SGI. 2006
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include <stdio.h>
|
||||||
|
#include <stdlib.h>
|
||||||
|
#include <errno.h>
|
||||||
|
#include <unistd.h>
|
||||||
|
#include <poll.h>
|
||||||
|
#include <string.h>
|
||||||
|
#include <fcntl.h>
|
||||||
|
#include <sys/types.h>
|
||||||
|
#include <sys/stat.h>
|
||||||
|
#include <sys/socket.h>
|
||||||
|
#include <sys/types.h>
|
||||||
|
#include <signal.h>
|
||||||
|
|
||||||
|
#include <linux/genetlink.h>
|
||||||
|
#include <linux/taskstats.h>
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Generic macros for dealing with netlink sockets. Might be duplicated
|
||||||
|
* elsewhere. It is recommended that commercial grade applications use
|
||||||
|
* libnl or libnetlink and use the interfaces provided by the library
|
||||||
|
*/
|
||||||
|
#define GENLMSG_DATA(glh) ((void *)(NLMSG_DATA(glh) + GENL_HDRLEN))
|
||||||
|
#define GENLMSG_PAYLOAD(glh) (NLMSG_PAYLOAD(glh, 0) - GENL_HDRLEN)
|
||||||
|
#define NLA_DATA(na) ((void *)((char*)(na) + NLA_HDRLEN))
|
||||||
|
#define NLA_PAYLOAD(len) (len - NLA_HDRLEN)
|
||||||
|
|
||||||
|
#define err(code, fmt, arg...) do { printf(fmt, ##arg); exit(code); } while (0)
|
||||||
|
int done = 0;
|
||||||
|
int rcvbufsz=0;
|
||||||
|
|
||||||
|
char name[100];
|
||||||
|
int dbg=0, print_delays=0;
|
||||||
|
__u64 stime, utime;
|
||||||
|
#define PRINTF(fmt, arg...) { \
|
||||||
|
if (dbg) { \
|
||||||
|
printf(fmt, ##arg); \
|
||||||
|
} \
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Maximum size of response requested or message sent */
|
||||||
|
#define MAX_MSG_SIZE 256
|
||||||
|
/* Maximum number of cpus expected to be specified in a cpumask */
|
||||||
|
#define MAX_CPUS 32
|
||||||
|
/* Maximum length of pathname to log file */
|
||||||
|
#define MAX_FILENAME 256
|
||||||
|
|
||||||
|
struct msgtemplate {
|
||||||
|
struct nlmsghdr n;
|
||||||
|
struct genlmsghdr g;
|
||||||
|
char buf[MAX_MSG_SIZE];
|
||||||
|
};
|
||||||
|
|
||||||
|
char cpumask[100+6*MAX_CPUS];
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Create a raw netlink socket and bind
|
||||||
|
*/
|
||||||
|
static int create_nl_socket(int protocol)
|
||||||
|
{
|
||||||
|
int fd;
|
||||||
|
struct sockaddr_nl local;
|
||||||
|
|
||||||
|
fd = socket(AF_NETLINK, SOCK_RAW, protocol);
|
||||||
|
if (fd < 0)
|
||||||
|
return -1;
|
||||||
|
|
||||||
|
if (rcvbufsz)
|
||||||
|
if (setsockopt(fd, SOL_SOCKET, SO_RCVBUF,
|
||||||
|
&rcvbufsz, sizeof(rcvbufsz)) < 0) {
|
||||||
|
printf("Unable to set socket rcv buf size to %d\n",
|
||||||
|
rcvbufsz);
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
memset(&local, 0, sizeof(local));
|
||||||
|
local.nl_family = AF_NETLINK;
|
||||||
|
|
||||||
|
if (bind(fd, (struct sockaddr *) &local, sizeof(local)) < 0)
|
||||||
|
goto error;
|
||||||
|
|
||||||
|
return fd;
|
||||||
|
error:
|
||||||
|
close(fd);
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
int send_cmd(int sd, __u16 nlmsg_type, __u32 nlmsg_pid,
|
||||||
|
__u8 genl_cmd, __u16 nla_type,
|
||||||
|
void *nla_data, int nla_len)
|
||||||
|
{
|
||||||
|
struct nlattr *na;
|
||||||
|
struct sockaddr_nl nladdr;
|
||||||
|
int r, buflen;
|
||||||
|
char *buf;
|
||||||
|
|
||||||
|
struct msgtemplate msg;
|
||||||
|
|
||||||
|
msg.n.nlmsg_len = NLMSG_LENGTH(GENL_HDRLEN);
|
||||||
|
msg.n.nlmsg_type = nlmsg_type;
|
||||||
|
msg.n.nlmsg_flags = NLM_F_REQUEST;
|
||||||
|
msg.n.nlmsg_seq = 0;
|
||||||
|
msg.n.nlmsg_pid = nlmsg_pid;
|
||||||
|
msg.g.cmd = genl_cmd;
|
||||||
|
msg.g.version = 0x1;
|
||||||
|
na = (struct nlattr *) GENLMSG_DATA(&msg);
|
||||||
|
na->nla_type = nla_type;
|
||||||
|
na->nla_len = nla_len + 1 + NLA_HDRLEN;
|
||||||
|
memcpy(NLA_DATA(na), nla_data, nla_len);
|
||||||
|
msg.n.nlmsg_len += NLMSG_ALIGN(na->nla_len);
|
||||||
|
|
||||||
|
buf = (char *) &msg;
|
||||||
|
buflen = msg.n.nlmsg_len ;
|
||||||
|
memset(&nladdr, 0, sizeof(nladdr));
|
||||||
|
nladdr.nl_family = AF_NETLINK;
|
||||||
|
while ((r = sendto(sd, buf, buflen, 0, (struct sockaddr *) &nladdr,
|
||||||
|
sizeof(nladdr))) < buflen) {
|
||||||
|
if (r > 0) {
|
||||||
|
buf += r;
|
||||||
|
buflen -= r;
|
||||||
|
} else if (errno != EAGAIN)
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Probe the controller in genetlink to find the family id
|
||||||
|
* for the TASKSTATS family
|
||||||
|
*/
|
||||||
|
int get_family_id(int sd)
|
||||||
|
{
|
||||||
|
struct {
|
||||||
|
struct nlmsghdr n;
|
||||||
|
struct genlmsghdr g;
|
||||||
|
char buf[256];
|
||||||
|
} ans;
|
||||||
|
|
||||||
|
int id, rc;
|
||||||
|
struct nlattr *na;
|
||||||
|
int rep_len;
|
||||||
|
|
||||||
|
strcpy(name, TASKSTATS_GENL_NAME);
|
||||||
|
rc = send_cmd(sd, GENL_ID_CTRL, getpid(), CTRL_CMD_GETFAMILY,
|
||||||
|
CTRL_ATTR_FAMILY_NAME, (void *)name,
|
||||||
|
strlen(TASKSTATS_GENL_NAME)+1);
|
||||||
|
|
||||||
|
rep_len = recv(sd, &ans, sizeof(ans), 0);
|
||||||
|
if (ans.n.nlmsg_type == NLMSG_ERROR ||
|
||||||
|
(rep_len < 0) || !NLMSG_OK((&ans.n), rep_len))
|
||||||
|
return 0;
|
||||||
|
|
||||||
|
na = (struct nlattr *) GENLMSG_DATA(&ans);
|
||||||
|
na = (struct nlattr *) ((char *) na + NLA_ALIGN(na->nla_len));
|
||||||
|
if (na->nla_type == CTRL_ATTR_FAMILY_ID) {
|
||||||
|
id = *(__u16 *) NLA_DATA(na);
|
||||||
|
}
|
||||||
|
return id;
|
||||||
|
}
|
||||||
|
|
||||||
|
void print_delayacct(struct taskstats *t)
|
||||||
|
{
|
||||||
|
printf("\n\nCPU %15s%15s%15s%15s\n"
|
||||||
|
" %15llu%15llu%15llu%15llu\n"
|
||||||
|
"IO %15s%15s\n"
|
||||||
|
" %15llu%15llu\n"
|
||||||
|
"MEM %15s%15s\n"
|
||||||
|
" %15llu%15llu\n\n",
|
||||||
|
"count", "real total", "virtual total", "delay total",
|
||||||
|
t->cpu_count, t->cpu_run_real_total, t->cpu_run_virtual_total,
|
||||||
|
t->cpu_delay_total,
|
||||||
|
"count", "delay total",
|
||||||
|
t->blkio_count, t->blkio_delay_total,
|
||||||
|
"count", "delay total", t->swapin_count, t->swapin_delay_total);
|
||||||
|
}
|
||||||
|
|
||||||
|
int main(int argc, char *argv[])
|
||||||
|
{
|
||||||
|
int c, rc, rep_len, aggr_len, len2, cmd_type;
|
||||||
|
__u16 id;
|
||||||
|
__u32 mypid;
|
||||||
|
|
||||||
|
struct nlattr *na;
|
||||||
|
int nl_sd = -1;
|
||||||
|
int len = 0;
|
||||||
|
pid_t tid = 0;
|
||||||
|
pid_t rtid = 0;
|
||||||
|
|
||||||
|
int fd = 0;
|
||||||
|
int count = 0;
|
||||||
|
int write_file = 0;
|
||||||
|
int maskset = 0;
|
||||||
|
char logfile[128];
|
||||||
|
int loop = 0;
|
||||||
|
|
||||||
|
struct msgtemplate msg;
|
||||||
|
|
||||||
|
while (1) {
|
||||||
|
c = getopt(argc, argv, "dw:r:m:t:p:v:l");
|
||||||
|
if (c < 0)
|
||||||
|
break;
|
||||||
|
|
||||||
|
switch (c) {
|
||||||
|
case 'd':
|
||||||
|
printf("print delayacct stats ON\n");
|
||||||
|
print_delays = 1;
|
||||||
|
break;
|
||||||
|
case 'w':
|
||||||
|
strncpy(logfile, optarg, MAX_FILENAME);
|
||||||
|
printf("write to file %s\n", logfile);
|
||||||
|
write_file = 1;
|
||||||
|
break;
|
||||||
|
case 'r':
|
||||||
|
rcvbufsz = atoi(optarg);
|
||||||
|
printf("receive buf size %d\n", rcvbufsz);
|
||||||
|
if (rcvbufsz < 0)
|
||||||
|
err(1, "Invalid rcv buf size\n");
|
||||||
|
break;
|
||||||
|
case 'm':
|
||||||
|
strncpy(cpumask, optarg, sizeof(cpumask));
|
||||||
|
maskset = 1;
|
||||||
|
printf("cpumask %s maskset %d\n", cpumask, maskset);
|
||||||
|
break;
|
||||||
|
case 't':
|
||||||
|
tid = atoi(optarg);
|
||||||
|
if (!tid)
|
||||||
|
err(1, "Invalid tgid\n");
|
||||||
|
cmd_type = TASKSTATS_CMD_ATTR_TGID;
|
||||||
|
print_delays = 1;
|
||||||
|
break;
|
||||||
|
case 'p':
|
||||||
|
tid = atoi(optarg);
|
||||||
|
if (!tid)
|
||||||
|
err(1, "Invalid pid\n");
|
||||||
|
cmd_type = TASKSTATS_CMD_ATTR_PID;
|
||||||
|
print_delays = 1;
|
||||||
|
break;
|
||||||
|
case 'v':
|
||||||
|
printf("debug on\n");
|
||||||
|
dbg = 1;
|
||||||
|
break;
|
||||||
|
case 'l':
|
||||||
|
printf("listen forever\n");
|
||||||
|
loop = 1;
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
printf("Unknown option %d\n", c);
|
||||||
|
exit(-1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (write_file) {
|
||||||
|
fd = open(logfile, O_WRONLY | O_CREAT | O_TRUNC,
|
||||||
|
S_IRUSR | S_IWUSR | S_IRGRP | S_IROTH);
|
||||||
|
if (fd == -1) {
|
||||||
|
perror("Cannot open output file\n");
|
||||||
|
exit(1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if ((nl_sd = create_nl_socket(NETLINK_GENERIC)) < 0)
|
||||||
|
err(1, "error creating Netlink socket\n");
|
||||||
|
|
||||||
|
|
||||||
|
mypid = getpid();
|
||||||
|
id = get_family_id(nl_sd);
|
||||||
|
if (!id) {
|
||||||
|
printf("Error getting family id, errno %d", errno);
|
||||||
|
goto err;
|
||||||
|
}
|
||||||
|
PRINTF("family id %d\n", id);
|
||||||
|
|
||||||
|
if (maskset) {
|
||||||
|
rc = send_cmd(nl_sd, id, mypid, TASKSTATS_CMD_GET,
|
||||||
|
TASKSTATS_CMD_ATTR_REGISTER_CPUMASK,
|
||||||
|
&cpumask, sizeof(cpumask));
|
||||||
|
PRINTF("Sent register cpumask, retval %d\n", rc);
|
||||||
|
if (rc < 0) {
|
||||||
|
printf("error sending register cpumask\n");
|
||||||
|
goto err;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (tid) {
|
||||||
|
rc = send_cmd(nl_sd, id, mypid, TASKSTATS_CMD_GET,
|
||||||
|
cmd_type, &tid, sizeof(__u32));
|
||||||
|
PRINTF("Sent pid/tgid, retval %d\n", rc);
|
||||||
|
if (rc < 0) {
|
||||||
|
printf("error sending tid/tgid cmd\n");
|
||||||
|
goto done;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
do {
|
||||||
|
int i;
|
||||||
|
|
||||||
|
rep_len = recv(nl_sd, &msg, sizeof(msg), 0);
|
||||||
|
PRINTF("received %d bytes\n", rep_len);
|
||||||
|
|
||||||
|
if (rep_len < 0) {
|
||||||
|
printf("nonfatal reply error: errno %d\n", errno);
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
if (msg.n.nlmsg_type == NLMSG_ERROR ||
|
||||||
|
!NLMSG_OK((&msg.n), rep_len)) {
|
||||||
|
printf("fatal reply error, errno %d\n", errno);
|
||||||
|
goto done;
|
||||||
|
}
|
||||||
|
|
||||||
|
PRINTF("nlmsghdr size=%d, nlmsg_len=%d, rep_len=%d\n",
|
||||||
|
sizeof(struct nlmsghdr), msg.n.nlmsg_len, rep_len);
|
||||||
|
|
||||||
|
|
||||||
|
rep_len = GENLMSG_PAYLOAD(&msg.n);
|
||||||
|
|
||||||
|
na = (struct nlattr *) GENLMSG_DATA(&msg);
|
||||||
|
len = 0;
|
||||||
|
i = 0;
|
||||||
|
while (len < rep_len) {
|
||||||
|
len += NLA_ALIGN(na->nla_len);
|
||||||
|
switch (na->nla_type) {
|
||||||
|
case TASKSTATS_TYPE_AGGR_TGID:
|
||||||
|
/* Fall through */
|
||||||
|
case TASKSTATS_TYPE_AGGR_PID:
|
||||||
|
aggr_len = NLA_PAYLOAD(na->nla_len);
|
||||||
|
len2 = 0;
|
||||||
|
/* For nested attributes, na follows */
|
||||||
|
na = (struct nlattr *) NLA_DATA(na);
|
||||||
|
done = 0;
|
||||||
|
while (len2 < aggr_len) {
|
||||||
|
switch (na->nla_type) {
|
||||||
|
case TASKSTATS_TYPE_PID:
|
||||||
|
rtid = *(int *) NLA_DATA(na);
|
||||||
|
if (print_delays)
|
||||||
|
printf("PID\t%d\n", rtid);
|
||||||
|
break;
|
||||||
|
case TASKSTATS_TYPE_TGID:
|
||||||
|
rtid = *(int *) NLA_DATA(na);
|
||||||
|
if (print_delays)
|
||||||
|
printf("TGID\t%d\n", rtid);
|
||||||
|
break;
|
||||||
|
case TASKSTATS_TYPE_STATS:
|
||||||
|
count++;
|
||||||
|
if (print_delays)
|
||||||
|
print_delayacct((struct taskstats *) NLA_DATA(na));
|
||||||
|
if (fd) {
|
||||||
|
if (write(fd, NLA_DATA(na), na->nla_len) < 0) {
|
||||||
|
err(1,"write error\n");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (!loop)
|
||||||
|
goto done;
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
printf("Unknown nested nla_type %d\n", na->nla_type);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
len2 += NLA_ALIGN(na->nla_len);
|
||||||
|
na = (struct nlattr *) ((char *) na + len2);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
default:
|
||||||
|
printf("Unknown nla_type %d\n", na->nla_type);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
na = (struct nlattr *) (GENLMSG_DATA(&msg) + len);
|
||||||
|
}
|
||||||
|
} while (loop);
|
||||||
|
done:
|
||||||
|
if (maskset) {
|
||||||
|
rc = send_cmd(nl_sd, id, mypid, TASKSTATS_CMD_GET,
|
||||||
|
TASKSTATS_CMD_ATTR_DEREGISTER_CPUMASK,
|
||||||
|
&cpumask, sizeof(cpumask));
|
||||||
|
printf("Sent deregister mask, retval %d\n", rc);
|
||||||
|
if (rc < 0)
|
||||||
|
err(rc, "error sending deregister cpumask\n");
|
||||||
|
}
|
||||||
|
err:
|
||||||
|
close(nl_sd);
|
||||||
|
if (fd)
|
||||||
|
close(fd);
|
||||||
|
return 0;
|
||||||
|
}
|
181
Documentation/accounting/taskstats.txt
Normal file
181
Documentation/accounting/taskstats.txt
Normal file
|
@ -0,0 +1,181 @@
|
||||||
|
Per-task statistics interface
|
||||||
|
-----------------------------
|
||||||
|
|
||||||
|
|
||||||
|
Taskstats is a netlink-based interface for sending per-task and
|
||||||
|
per-process statistics from the kernel to userspace.
|
||||||
|
|
||||||
|
Taskstats was designed for the following benefits:
|
||||||
|
|
||||||
|
- efficiently provide statistics during lifetime of a task and on its exit
|
||||||
|
- unified interface for multiple accounting subsystems
|
||||||
|
- extensibility for use by future accounting patches
|
||||||
|
|
||||||
|
Terminology
|
||||||
|
-----------
|
||||||
|
|
||||||
|
"pid", "tid" and "task" are used interchangeably and refer to the standard
|
||||||
|
Linux task defined by struct task_struct. per-pid stats are the same as
|
||||||
|
per-task stats.
|
||||||
|
|
||||||
|
"tgid", "process" and "thread group" are used interchangeably and refer to the
|
||||||
|
tasks that share an mm_struct i.e. the traditional Unix process. Despite the
|
||||||
|
use of tgid, there is no special treatment for the task that is thread group
|
||||||
|
leader - a process is deemed alive as long as it has any task belonging to it.
|
||||||
|
|
||||||
|
Usage
|
||||||
|
-----
|
||||||
|
|
||||||
|
To get statistics during a task's lifetime, userspace opens a unicast netlink
|
||||||
|
socket (NETLINK_GENERIC family) and sends commands specifying a pid or a tgid.
|
||||||
|
The response contains statistics for a task (if pid is specified) or the sum of
|
||||||
|
statistics for all tasks of the process (if tgid is specified).
|
||||||
|
|
||||||
|
To obtain statistics for tasks which are exiting, the userspace listener
|
||||||
|
sends a register command and specifies a cpumask. Whenever a task exits on
|
||||||
|
one of the cpus in the cpumask, its per-pid statistics are sent to the
|
||||||
|
registered listener. Using cpumasks allows the data received by one listener
|
||||||
|
to be limited and assists in flow control over the netlink interface and is
|
||||||
|
explained in more detail below.
|
||||||
|
|
||||||
|
If the exiting task is the last thread exiting its thread group,
|
||||||
|
an additional record containing the per-tgid stats is also sent to userspace.
|
||||||
|
The latter contains the sum of per-pid stats for all threads in the thread
|
||||||
|
group, both past and present.
|
||||||
|
|
||||||
|
getdelays.c is a simple utility demonstrating usage of the taskstats interface
|
||||||
|
for reporting delay accounting statistics. Users can register cpumasks,
|
||||||
|
send commands and process responses, listen for per-tid/tgid exit data,
|
||||||
|
write the data received to a file and do basic flow control by increasing
|
||||||
|
receive buffer sizes.
|
||||||
|
|
||||||
|
Interface
|
||||||
|
---------
|
||||||
|
|
||||||
|
The user-kernel interface is encapsulated in include/linux/taskstats.h
|
||||||
|
|
||||||
|
To avoid this documentation becoming obsolete as the interface evolves, only
|
||||||
|
an outline of the current version is given. taskstats.h always overrides the
|
||||||
|
description here.
|
||||||
|
|
||||||
|
struct taskstats is the common accounting structure for both per-pid and
|
||||||
|
per-tgid data. It is versioned and can be extended by each accounting subsystem
|
||||||
|
that is added to the kernel. The fields and their semantics are defined in the
|
||||||
|
taskstats.h file.
|
||||||
|
|
||||||
|
The data exchanged between user and kernel space is a netlink message belonging
|
||||||
|
to the NETLINK_GENERIC family and using the netlink attributes interface.
|
||||||
|
The messages are in the format
|
||||||
|
|
||||||
|
+----------+- - -+-------------+-------------------+
|
||||||
|
| nlmsghdr | Pad | genlmsghdr | taskstats payload |
|
||||||
|
+----------+- - -+-------------+-------------------+
|
||||||
|
|
||||||
|
|
||||||
|
The taskstats payload is one of the following three kinds:
|
||||||
|
|
||||||
|
1. Commands: Sent from user to kernel. Commands to get data on
|
||||||
|
a pid/tgid consist of one attribute, of type TASKSTATS_CMD_ATTR_PID/TGID,
|
||||||
|
containing a u32 pid or tgid in the attribute payload. The pid/tgid denotes
|
||||||
|
the task/process for which userspace wants statistics.
|
||||||
|
|
||||||
|
Commands to register/deregister interest in exit data from a set of cpus
|
||||||
|
consist of one attribute, of type
|
||||||
|
TASKSTATS_CMD_ATTR_REGISTER/DEREGISTER_CPUMASK and contain a cpumask in the
|
||||||
|
attribute payload. The cpumask is specified as an ascii string of
|
||||||
|
comma-separated cpu ranges e.g. to listen to exit data from cpus 1,2,3,5,7,8
|
||||||
|
the cpumask would be "1-3,5,7-8". If userspace forgets to deregister interest
|
||||||
|
in cpus before closing the listening socket, the kernel cleans up its interest
|
||||||
|
set over time. However, for the sake of efficiency, an explicit deregistration
|
||||||
|
is advisable.
|
||||||
|
|
||||||
|
2. Response for a command: sent from the kernel in response to a userspace
|
||||||
|
command. The payload is a series of three attributes of type:
|
||||||
|
|
||||||
|
a) TASKSTATS_TYPE_AGGR_PID/TGID : attribute containing no payload but indicates
|
||||||
|
a pid/tgid will be followed by some stats.
|
||||||
|
|
||||||
|
b) TASKSTATS_TYPE_PID/TGID: attribute whose payload is the pid/tgid whose stats
|
||||||
|
is being returned.
|
||||||
|
|
||||||
|
c) TASKSTATS_TYPE_STATS: attribute with a struct taskstsats as payload. The
|
||||||
|
same structure is used for both per-pid and per-tgid stats.
|
||||||
|
|
||||||
|
3. New message sent by kernel whenever a task exits. The payload consists of a
|
||||||
|
series of attributes of the following type:
|
||||||
|
|
||||||
|
a) TASKSTATS_TYPE_AGGR_PID: indicates next two attributes will be pid+stats
|
||||||
|
b) TASKSTATS_TYPE_PID: contains exiting task's pid
|
||||||
|
c) TASKSTATS_TYPE_STATS: contains the exiting task's per-pid stats
|
||||||
|
d) TASKSTATS_TYPE_AGGR_TGID: indicates next two attributes will be tgid+stats
|
||||||
|
e) TASKSTATS_TYPE_TGID: contains tgid of process to which task belongs
|
||||||
|
f) TASKSTATS_TYPE_STATS: contains the per-tgid stats for exiting task's process
|
||||||
|
|
||||||
|
|
||||||
|
per-tgid stats
|
||||||
|
--------------
|
||||||
|
|
||||||
|
Taskstats provides per-process stats, in addition to per-task stats, since
|
||||||
|
resource management is often done at a process granularity and aggregating task
|
||||||
|
stats in userspace alone is inefficient and potentially inaccurate (due to lack
|
||||||
|
of atomicity).
|
||||||
|
|
||||||
|
However, maintaining per-process, in addition to per-task stats, within the
|
||||||
|
kernel has space and time overheads. To address this, the taskstats code
|
||||||
|
accumalates each exiting task's statistics into a process-wide data structure.
|
||||||
|
When the last task of a process exits, the process level data accumalated also
|
||||||
|
gets sent to userspace (along with the per-task data).
|
||||||
|
|
||||||
|
When a user queries to get per-tgid data, the sum of all other live threads in
|
||||||
|
the group is added up and added to the accumalated total for previously exited
|
||||||
|
threads of the same thread group.
|
||||||
|
|
||||||
|
Extending taskstats
|
||||||
|
-------------------
|
||||||
|
|
||||||
|
There are two ways to extend the taskstats interface to export more
|
||||||
|
per-task/process stats as patches to collect them get added to the kernel
|
||||||
|
in future:
|
||||||
|
|
||||||
|
1. Adding more fields to the end of the existing struct taskstats. Backward
|
||||||
|
compatibility is ensured by the version number within the
|
||||||
|
structure. Userspace will use only the fields of the struct that correspond
|
||||||
|
to the version its using.
|
||||||
|
|
||||||
|
2. Defining separate statistic structs and using the netlink attributes
|
||||||
|
interface to return them. Since userspace processes each netlink attribute
|
||||||
|
independently, it can always ignore attributes whose type it does not
|
||||||
|
understand (because it is using an older version of the interface).
|
||||||
|
|
||||||
|
|
||||||
|
Choosing between 1. and 2. is a matter of trading off flexibility and
|
||||||
|
overhead. If only a few fields need to be added, then 1. is the preferable
|
||||||
|
path since the kernel and userspace don't need to incur the overhead of
|
||||||
|
processing new netlink attributes. But if the new fields expand the existing
|
||||||
|
struct too much, requiring disparate userspace accounting utilities to
|
||||||
|
unnecessarily receive large structures whose fields are of no interest, then
|
||||||
|
extending the attributes structure would be worthwhile.
|
||||||
|
|
||||||
|
Flow control for taskstats
|
||||||
|
--------------------------
|
||||||
|
|
||||||
|
When the rate of task exits becomes large, a listener may not be able to keep
|
||||||
|
up with the kernel's rate of sending per-tid/tgid exit data leading to data
|
||||||
|
loss. This possibility gets compounded when the taskstats structure gets
|
||||||
|
extended and the number of cpus grows large.
|
||||||
|
|
||||||
|
To avoid losing statistics, userspace should do one or more of the following:
|
||||||
|
|
||||||
|
- increase the receive buffer sizes for the netlink sockets opened by
|
||||||
|
listeners to receive exit data.
|
||||||
|
|
||||||
|
- create more listeners and reduce the number of cpus being listened to by
|
||||||
|
each listener. In the extreme case, there could be one listener for each cpu.
|
||||||
|
Users may also consider setting the cpu affinity of the listener to the subset
|
||||||
|
of cpus to which it listens, especially if they are listening to just one cpu.
|
||||||
|
|
||||||
|
Despite these measures, if the userspace receives ENOBUFS error messages
|
||||||
|
indicated overflow of receive buffers, it should take measures to handle the
|
||||||
|
loss of data.
|
||||||
|
|
||||||
|
----
|
|
@ -35,15 +35,14 @@ the vendor should tie the parity status bits to 0 if they do not intend
|
||||||
to generate parity. Some vendors do not do this, and thus the parity bit
|
to generate parity. Some vendors do not do this, and thus the parity bit
|
||||||
can "float" giving false positives.
|
can "float" giving false positives.
|
||||||
|
|
||||||
The PCI Parity EDAC device has the ability to "skip" known flaky
|
[There are patches in the kernel queue which will allow for storage of
|
||||||
cards during the parity scan. These are set by the parity "blacklist"
|
quirks of PCI devices reporting false parity positives. The 2.6.18
|
||||||
interface in the sysfs for PCI Parity. (See the PCI section in the sysfs
|
kernel should have those patches included. When that becomes available,
|
||||||
section below.) There is also a parity "whitelist" which is used as
|
then EDAC will be patched to utilize that information to "skip" such
|
||||||
an explicit list of devices to scan, while the blacklist is a list
|
devices.]
|
||||||
of devices to skip.
|
|
||||||
|
|
||||||
EDAC will have future error detectors that will be added or integrated
|
EDAC will have future error detectors that will be integrated with
|
||||||
into EDAC in the following list:
|
EDAC or added to it, in the following list:
|
||||||
|
|
||||||
MCE Machine Check Exception
|
MCE Machine Check Exception
|
||||||
MCA Machine Check Architecture
|
MCA Machine Check Architecture
|
||||||
|
@ -93,22 +92,24 @@ EDAC lives in the /sys/devices/system/edac directory. Within this directory
|
||||||
there currently reside 2 'edac' components:
|
there currently reside 2 'edac' components:
|
||||||
|
|
||||||
mc memory controller(s) system
|
mc memory controller(s) system
|
||||||
pci PCI status system
|
pci PCI control and status system
|
||||||
|
|
||||||
|
|
||||||
============================================================================
|
============================================================================
|
||||||
Memory Controller (mc) Model
|
Memory Controller (mc) Model
|
||||||
|
|
||||||
First a background on the memory controller's model abstracted in EDAC.
|
First a background on the memory controller's model abstracted in EDAC.
|
||||||
Each mc device controls a set of DIMM memory modules. These modules are
|
Each 'mc' device controls a set of DIMM memory modules. These modules are
|
||||||
laid out in a Chip-Select Row (csrowX) and Channel table (chX). There can
|
laid out in a Chip-Select Row (csrowX) and Channel table (chX). There can
|
||||||
be multiple csrows and two channels.
|
be multiple csrows and multiple channels.
|
||||||
|
|
||||||
Memory controllers allow for several csrows, with 8 csrows being a typical value.
|
Memory controllers allow for several csrows, with 8 csrows being a typical value.
|
||||||
Yet, the actual number of csrows depends on the electrical "loading"
|
Yet, the actual number of csrows depends on the electrical "loading"
|
||||||
of a given motherboard, memory controller and DIMM characteristics.
|
of a given motherboard, memory controller and DIMM characteristics.
|
||||||
|
|
||||||
Dual channels allows for 128 bit data transfers to the CPU from memory.
|
Dual channels allows for 128 bit data transfers to the CPU from memory.
|
||||||
|
Some newer chipsets allow for more than 2 channels, like Fully Buffered DIMMs
|
||||||
|
(FB-DIMMs). The following example will assume 2 channels:
|
||||||
|
|
||||||
|
|
||||||
Channel 0 Channel 1
|
Channel 0 Channel 1
|
||||||
|
@ -234,23 +235,15 @@ Polling period control file:
|
||||||
The time period, in milliseconds, for polling for error information.
|
The time period, in milliseconds, for polling for error information.
|
||||||
Too small a value wastes resources. Too large a value might delay
|
Too small a value wastes resources. Too large a value might delay
|
||||||
necessary handling of errors and might loose valuable information for
|
necessary handling of errors and might loose valuable information for
|
||||||
locating the error. 1000 milliseconds (once each second) is about
|
locating the error. 1000 milliseconds (once each second) is the current
|
||||||
right for most uses.
|
default. Systems which require all the bandwidth they can get, may
|
||||||
|
increase this.
|
||||||
|
|
||||||
LOAD TIME: module/kernel parameter: poll_msec=[0|1]
|
LOAD TIME: module/kernel parameter: poll_msec=[0|1]
|
||||||
|
|
||||||
RUN TIME: echo "1000" >/sys/devices/system/edac/mc/poll_msec
|
RUN TIME: echo "1000" >/sys/devices/system/edac/mc/poll_msec
|
||||||
|
|
||||||
|
|
||||||
Module Version read-only attribute file:
|
|
||||||
|
|
||||||
'mc_version'
|
|
||||||
|
|
||||||
The EDAC CORE module's version and compile date are shown here to
|
|
||||||
indicate what EDAC is running.
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
============================================================================
|
============================================================================
|
||||||
'mcX' DIRECTORIES
|
'mcX' DIRECTORIES
|
||||||
|
|
||||||
|
@ -284,35 +277,6 @@ Seconds since last counter reset control file:
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
DIMM capability attribute file:
|
|
||||||
|
|
||||||
'edac_capability'
|
|
||||||
|
|
||||||
The EDAC (Error Detection and Correction) capabilities/modes of
|
|
||||||
the memory controller hardware.
|
|
||||||
|
|
||||||
|
|
||||||
DIMM Current Capability attribute file:
|
|
||||||
|
|
||||||
'edac_current_capability'
|
|
||||||
|
|
||||||
The EDAC capabilities available with the hardware
|
|
||||||
configuration. This may not be the same as "EDAC capability"
|
|
||||||
if the correct memory is not used. If a memory controller is
|
|
||||||
capable of EDAC, but DIMMs without check bits are in use, then
|
|
||||||
Parity, SECDED, S4ECD4ED capabilities will not be available
|
|
||||||
even though the memory controller might be capable of those
|
|
||||||
modes with the proper memory loaded.
|
|
||||||
|
|
||||||
|
|
||||||
Memory Type supported on this controller attribute file:
|
|
||||||
|
|
||||||
'supported_mem_type'
|
|
||||||
|
|
||||||
This attribute file displays the memory type, usually
|
|
||||||
buffered and unbuffered DIMMs.
|
|
||||||
|
|
||||||
|
|
||||||
Memory Controller name attribute file:
|
Memory Controller name attribute file:
|
||||||
|
|
||||||
'mc_name'
|
'mc_name'
|
||||||
|
@ -321,16 +285,6 @@ Memory Controller name attribute file:
|
||||||
that is being utilized.
|
that is being utilized.
|
||||||
|
|
||||||
|
|
||||||
Memory Controller Module name attribute file:
|
|
||||||
|
|
||||||
'module_name'
|
|
||||||
|
|
||||||
This attribute file displays the memory controller module name,
|
|
||||||
version and date built. The name of the memory controller
|
|
||||||
hardware - some drivers work with multiple controllers and
|
|
||||||
this field shows which hardware is present.
|
|
||||||
|
|
||||||
|
|
||||||
Total memory managed by this memory controller attribute file:
|
Total memory managed by this memory controller attribute file:
|
||||||
|
|
||||||
'size_mb'
|
'size_mb'
|
||||||
|
@ -432,6 +386,9 @@ Memory Type attribute file:
|
||||||
|
|
||||||
This attribute file will display what type of memory is currently
|
This attribute file will display what type of memory is currently
|
||||||
on this csrow. Normally, either buffered or unbuffered memory.
|
on this csrow. Normally, either buffered or unbuffered memory.
|
||||||
|
Examples:
|
||||||
|
Registered-DDR
|
||||||
|
Unbuffered-DDR
|
||||||
|
|
||||||
|
|
||||||
EDAC Mode of operation attribute file:
|
EDAC Mode of operation attribute file:
|
||||||
|
@ -446,8 +403,13 @@ Device type attribute file:
|
||||||
|
|
||||||
'dev_type'
|
'dev_type'
|
||||||
|
|
||||||
This attribute file will display what type of DIMM device is
|
This attribute file will display what type of DRAM device is
|
||||||
being utilized. Example: x4
|
being utilized on this DIMM.
|
||||||
|
Examples:
|
||||||
|
x1
|
||||||
|
x2
|
||||||
|
x4
|
||||||
|
x8
|
||||||
|
|
||||||
|
|
||||||
Channel 0 CE Count attribute file:
|
Channel 0 CE Count attribute file:
|
||||||
|
@ -522,10 +484,10 @@ SYSTEM LOGGING
|
||||||
If logging for UEs and CEs are enabled then system logs will have
|
If logging for UEs and CEs are enabled then system logs will have
|
||||||
error notices indicating errors that have been detected:
|
error notices indicating errors that have been detected:
|
||||||
|
|
||||||
MC0: CE page 0x283, offset 0xce0, grain 8, syndrome 0x6ec3, row 0,
|
EDAC MC0: CE page 0x283, offset 0xce0, grain 8, syndrome 0x6ec3, row 0,
|
||||||
channel 1 "DIMM_B1": amd76x_edac
|
channel 1 "DIMM_B1": amd76x_edac
|
||||||
|
|
||||||
MC0: CE page 0x1e5, offset 0xfb0, grain 8, syndrome 0xb741, row 0,
|
EDAC MC0: CE page 0x1e5, offset 0xfb0, grain 8, syndrome 0xb741, row 0,
|
||||||
channel 1 "DIMM_B1": amd76x_edac
|
channel 1 "DIMM_B1": amd76x_edac
|
||||||
|
|
||||||
|
|
||||||
|
@ -610,64 +572,4 @@ Parity Count:
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
PCI Device Whitelist:
|
|
||||||
|
|
||||||
'pci_parity_whitelist'
|
|
||||||
|
|
||||||
This control file allows for an explicit list of PCI devices to be
|
|
||||||
scanned for parity errors. Only devices found on this list will
|
|
||||||
be examined. The list is a line of hexadecimal VENDOR and DEVICE
|
|
||||||
ID tuples:
|
|
||||||
|
|
||||||
1022:7450,1434:16a6
|
|
||||||
|
|
||||||
One or more can be inserted, separated by a comma.
|
|
||||||
|
|
||||||
To write the above list doing the following as one command line:
|
|
||||||
|
|
||||||
echo "1022:7450,1434:16a6"
|
|
||||||
> /sys/devices/system/edac/pci/pci_parity_whitelist
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
To display what the whitelist is, simply 'cat' the same file.
|
|
||||||
|
|
||||||
|
|
||||||
PCI Device Blacklist:
|
|
||||||
|
|
||||||
'pci_parity_blacklist'
|
|
||||||
|
|
||||||
This control file allows for a list of PCI devices to be
|
|
||||||
skipped for scanning.
|
|
||||||
The list is a line of hexadecimal VENDOR and DEVICE ID tuples:
|
|
||||||
|
|
||||||
1022:7450,1434:16a6
|
|
||||||
|
|
||||||
One or more can be inserted, separated by a comma.
|
|
||||||
|
|
||||||
To write the above list doing the following as one command line:
|
|
||||||
|
|
||||||
echo "1022:7450,1434:16a6"
|
|
||||||
> /sys/devices/system/edac/pci/pci_parity_blacklist
|
|
||||||
|
|
||||||
|
|
||||||
To display what the whitelist currently contains,
|
|
||||||
simply 'cat' the same file.
|
|
||||||
|
|
||||||
=======================================================================
|
=======================================================================
|
||||||
|
|
||||||
PCI Vendor and Devices IDs can be obtained with the lspci command. Using
|
|
||||||
the -n option lspci will display the vendor and device IDs. The system
|
|
||||||
administrator will have to determine which devices should be scanned or
|
|
||||||
skipped.
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
The two lists (white and black) are prioritized. blacklist is the lower
|
|
||||||
priority and will NOT be utilized when a whitelist has been set.
|
|
||||||
Turn OFF a whitelist by an empty echo command:
|
|
||||||
|
|
||||||
echo > /sys/devices/system/edac/pci/pci_parity_whitelist
|
|
||||||
|
|
||||||
and any previous blacklist will be utilized.
|
|
||||||
|
|
||||||
|
|
|
@ -55,14 +55,6 @@ Who: Mauro Carvalho Chehab <mchehab@brturbo.com.br>
|
||||||
|
|
||||||
---------------------------
|
---------------------------
|
||||||
|
|
||||||
What: remove EXPORT_SYMBOL(insert_resource)
|
|
||||||
When: April 2006
|
|
||||||
Files: kernel/resource.c
|
|
||||||
Why: No modular usage in the kernel.
|
|
||||||
Who: Adrian Bunk <bunk@stusta.de>
|
|
||||||
|
|
||||||
---------------------------
|
|
||||||
|
|
||||||
What: PCMCIA control ioctl (needed for pcmcia-cs [cardmgr, cardctl])
|
What: PCMCIA control ioctl (needed for pcmcia-cs [cardmgr, cardctl])
|
||||||
When: November 2005
|
When: November 2005
|
||||||
Files: drivers/pcmcia/: pcmcia_ioctl.c
|
Files: drivers/pcmcia/: pcmcia_ioctl.c
|
||||||
|
@ -166,17 +158,6 @@ Who: Arjan van de Ven <arjan@linux.intel.com>
|
||||||
|
|
||||||
---------------------------
|
---------------------------
|
||||||
|
|
||||||
What: remove EXPORT_SYMBOL(tasklist_lock)
|
|
||||||
When: August 2006
|
|
||||||
Files: kernel/fork.c
|
|
||||||
Why: tasklist_lock protects the kernel internal task list. Modules have
|
|
||||||
no business looking at it, and all instances in drivers have been due
|
|
||||||
to use of too-lowlevel APIs. Having this symbol exported prevents
|
|
||||||
moving to more scalable locking schemes for the task list.
|
|
||||||
Who: Christoph Hellwig <hch@lst.de>
|
|
||||||
|
|
||||||
---------------------------
|
|
||||||
|
|
||||||
What: mount/umount uevents
|
What: mount/umount uevents
|
||||||
When: February 2007
|
When: February 2007
|
||||||
Why: These events are not correct, and do not properly let userspace know
|
Why: These events are not correct, and do not properly let userspace know
|
||||||
|
@ -266,3 +247,14 @@ Why: The interrupt related SA_* flags are replaced by IRQF_* to move them
|
||||||
Who: Thomas Gleixner <tglx@linutronix.de>
|
Who: Thomas Gleixner <tglx@linutronix.de>
|
||||||
|
|
||||||
---------------------------
|
---------------------------
|
||||||
|
|
||||||
|
What: i2c-ite and i2c-algo-ite drivers
|
||||||
|
When: September 2006
|
||||||
|
Why: These drivers never compiled since they were added to the kernel
|
||||||
|
tree 5 years ago. This feature removal can be reevaluated if
|
||||||
|
someone shows interest in the drivers, fixes them and takes over
|
||||||
|
maintenance.
|
||||||
|
http://marc.theaimsgroup.com/?l=linux-mips&m=115040510817448
|
||||||
|
Who: Jean Delvare <khali@linux-fr.org>
|
||||||
|
|
||||||
|
---------------------------
|
||||||
|
|
|
@ -142,8 +142,8 @@ see also dquot_operations section.
|
||||||
|
|
||||||
--------------------------- file_system_type ---------------------------
|
--------------------------- file_system_type ---------------------------
|
||||||
prototypes:
|
prototypes:
|
||||||
struct int (*get_sb) (struct file_system_type *, int,
|
int (*get_sb) (struct file_system_type *, int,
|
||||||
const char *, void *, struct vfsmount *);
|
const char *, void *, struct vfsmount *);
|
||||||
void (*kill_sb) (struct super_block *);
|
void (*kill_sb) (struct super_block *);
|
||||||
locking rules:
|
locking rules:
|
||||||
may block BKL
|
may block BKL
|
||||||
|
|
|
@ -113,8 +113,8 @@ members are defined:
|
||||||
struct file_system_type {
|
struct file_system_type {
|
||||||
const char *name;
|
const char *name;
|
||||||
int fs_flags;
|
int fs_flags;
|
||||||
struct int (*get_sb) (struct file_system_type *, int,
|
int (*get_sb) (struct file_system_type *, int,
|
||||||
const char *, void *, struct vfsmount *);
|
const char *, void *, struct vfsmount *);
|
||||||
void (*kill_sb) (struct super_block *);
|
void (*kill_sb) (struct super_block *);
|
||||||
struct module *owner;
|
struct module *owner;
|
||||||
struct file_system_type * next;
|
struct file_system_type * next;
|
||||||
|
|
|
@ -2,13 +2,36 @@ Kernel driver abituguru
|
||||||
=======================
|
=======================
|
||||||
|
|
||||||
Supported chips:
|
Supported chips:
|
||||||
* Abit uGuru (Hardware Monitor part only)
|
* Abit uGuru revision 1-3 (Hardware Monitor part only)
|
||||||
Prefix: 'abituguru'
|
Prefix: 'abituguru'
|
||||||
Addresses scanned: ISA 0x0E0
|
Addresses scanned: ISA 0x0E0
|
||||||
Datasheet: Not available, this driver is based on reverse engineering.
|
Datasheet: Not available, this driver is based on reverse engineering.
|
||||||
A "Datasheet" has been written based on the reverse engineering it
|
A "Datasheet" has been written based on the reverse engineering it
|
||||||
should be available in the same dir as this file under the name
|
should be available in the same dir as this file under the name
|
||||||
abituguru-datasheet.
|
abituguru-datasheet.
|
||||||
|
Note:
|
||||||
|
The uGuru is a microcontroller with onboard firmware which programs
|
||||||
|
it to behave as a hwmon IC. There are many different revisions of the
|
||||||
|
firmware and thus effectivly many different revisions of the uGuru.
|
||||||
|
Below is an incomplete list with which revisions are used for which
|
||||||
|
Motherboards:
|
||||||
|
uGuru 1.00 ~ 1.24 (AI7, KV8-MAX3, AN7) (1)
|
||||||
|
uGuru 2.0.0.0 ~ 2.0.4.2 (KV8-PRO)
|
||||||
|
uGuru 2.1.0.0 ~ 2.1.2.8 (AS8, AV8, AA8, AG8, AA8XE, AX8)
|
||||||
|
uGuru 2.2.0.0 ~ 2.2.0.6 (AA8 Fatal1ty)
|
||||||
|
uGuru 2.3.0.0 ~ 2.3.0.9 (AN8)
|
||||||
|
uGuru 3.0.0.0 ~ 3.0.1.2 (AW8, AL8, NI8)
|
||||||
|
uGuru 4.xxxxx? (AT8 32X) (2)
|
||||||
|
1) For revisions 2 and 3 uGuru's the driver can autodetect the
|
||||||
|
sensortype (Volt or Temp) for bank1 sensors, for revision 1 uGuru's
|
||||||
|
this doesnot always work. For these uGuru's the autodection can
|
||||||
|
be overriden with the bank1_types module param. For all 3 known
|
||||||
|
revison 1 motherboards the correct use of this param is:
|
||||||
|
bank1_types=1,1,0,0,0,0,0,2,0,0,0,0,2,0,0,1
|
||||||
|
You may also need to specify the fan_sensors option for these boards
|
||||||
|
fan_sensors=5
|
||||||
|
2) The current version of the abituguru driver is known to NOT work
|
||||||
|
on these Motherboards
|
||||||
|
|
||||||
Authors:
|
Authors:
|
||||||
Hans de Goede <j.w.r.degoede@hhs.nl>,
|
Hans de Goede <j.w.r.degoede@hhs.nl>,
|
||||||
|
@ -22,6 +45,11 @@ Module Parameters
|
||||||
* force: bool Force detection. Note this parameter only causes the
|
* force: bool Force detection. Note this parameter only causes the
|
||||||
detection to be skipped, if the uGuru can't be read
|
detection to be skipped, if the uGuru can't be read
|
||||||
the module initialization (insmod) will still fail.
|
the module initialization (insmod) will still fail.
|
||||||
|
* bank1_types: int[] Bank1 sensortype autodetection override:
|
||||||
|
-1 autodetect (default)
|
||||||
|
0 volt sensor
|
||||||
|
1 temp sensor
|
||||||
|
2 not connected
|
||||||
* fan_sensors: int Tell the driver how many fan speed sensors there are
|
* fan_sensors: int Tell the driver how many fan speed sensors there are
|
||||||
on your motherboard. Default: 0 (autodetect).
|
on your motherboard. Default: 0 (autodetect).
|
||||||
* pwms: int Tell the driver how many fan speed controls (fan
|
* pwms: int Tell the driver how many fan speed controls (fan
|
||||||
|
@ -29,7 +57,7 @@ Module Parameters
|
||||||
* verbose: int How verbose should the driver be? (0-3):
|
* verbose: int How verbose should the driver be? (0-3):
|
||||||
0 normal output
|
0 normal output
|
||||||
1 + verbose error reporting
|
1 + verbose error reporting
|
||||||
2 + sensors type probing info\n"
|
2 + sensors type probing info (default)
|
||||||
3 + retryable error reporting
|
3 + retryable error reporting
|
||||||
Default: 2 (the driver is still in the testing phase)
|
Default: 2 (the driver is still in the testing phase)
|
||||||
|
|
||||||
|
|
|
@ -42,8 +42,8 @@ I suspect that this driver could be made to work for the following SiS
|
||||||
chipsets as well: 635, and 635T. If anyone owns a board with those chips
|
chipsets as well: 635, and 635T. If anyone owns a board with those chips
|
||||||
AND is willing to risk crashing & burning an otherwise well-behaved kernel
|
AND is willing to risk crashing & burning an otherwise well-behaved kernel
|
||||||
in the name of progress... please contact me at <mhoffman@lightlink.com> or
|
in the name of progress... please contact me at <mhoffman@lightlink.com> or
|
||||||
via the project's mailing list: <lm-sensors@lm-sensors.org>. Please
|
via the project's mailing list: <i2c@lm-sensors.org>. Please send bug
|
||||||
send bug reports and/or success stories as well.
|
reports and/or success stories as well.
|
||||||
|
|
||||||
|
|
||||||
TO DOs
|
TO DOs
|
||||||
|
|
|
@ -448,6 +448,8 @@ running once the system is up.
|
||||||
Format: <area>[,<node>]
|
Format: <area>[,<node>]
|
||||||
See also Documentation/networking/decnet.txt.
|
See also Documentation/networking/decnet.txt.
|
||||||
|
|
||||||
|
delayacct [KNL] Enable per-task delay accounting
|
||||||
|
|
||||||
dhash_entries= [KNL]
|
dhash_entries= [KNL]
|
||||||
Set number of hash buckets for dentry cache.
|
Set number of hash buckets for dentry cache.
|
||||||
|
|
||||||
|
|
|
@ -1015,10 +1015,9 @@ CPU from reordering them.
|
||||||
There are some more advanced barrier functions:
|
There are some more advanced barrier functions:
|
||||||
|
|
||||||
(*) set_mb(var, value)
|
(*) set_mb(var, value)
|
||||||
(*) set_wmb(var, value)
|
|
||||||
|
|
||||||
These assign the value to the variable and then insert at least a write
|
This assigns the value to the variable and then inserts at least a write
|
||||||
barrier after it, depending on the function. They aren't guaranteed to
|
barrier after it, depending on the function. It isn't guaranteed to
|
||||||
insert anything more than a compiler barrier in a UP compilation.
|
insert anything more than a compiler barrier in a UP compilation.
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -65,7 +65,7 @@ the following functions or values:
|
||||||
1. (optional) set up RTC routines
|
1. (optional) set up RTC routines
|
||||||
2. (optional) calibrate and set the mips_counter_frequency
|
2. (optional) calibrate and set the mips_counter_frequency
|
||||||
|
|
||||||
b) board_timer_setup - a function pointer. Invoked at the end of time_init()
|
b) plat_timer_setup - a function pointer. Invoked at the end of time_init()
|
||||||
1. (optional) over-ride any decisions made in time_init()
|
1. (optional) over-ride any decisions made in time_init()
|
||||||
2. set up the irqaction for timer interrupt.
|
2. set up the irqaction for timer interrupt.
|
||||||
3. enable the timer interrupt
|
3. enable the timer interrupt
|
||||||
|
@ -116,19 +116,17 @@ Step 2: the machine setup() function
|
||||||
|
|
||||||
If you supply board_time_init(), set the function poointer.
|
If you supply board_time_init(), set the function poointer.
|
||||||
|
|
||||||
Set the function pointer board_timer_setup() (mandatory)
|
|
||||||
|
|
||||||
|
Step 3: implement rtc routines, board_time_init() and plat_timer_setup()
|
||||||
Step 3: implement rtc routines, board_time_init() and board_timer_setup()
|
|
||||||
if needed.
|
if needed.
|
||||||
|
|
||||||
board_time_init() -
|
board_time_init() -
|
||||||
a) (optional) set up RTC routines,
|
a) (optional) set up RTC routines,
|
||||||
b) (optional) calibrate and set the mips_counter_frequency
|
b) (optional) calibrate and set the mips_counter_frequency
|
||||||
(only needed if you intended to use fixed_rate_gettimeoffset
|
(only needed if you intended to use fixed_rate_gettimeoffset
|
||||||
or use cpu counter as timer interrupt source)
|
or use cpu counter as timer interrupt source)
|
||||||
|
|
||||||
board_timer_setup() -
|
plat_timer_setup() -
|
||||||
a) (optional) over-write any choices made above by time_init().
|
a) (optional) over-write any choices made above by time_init().
|
||||||
b) machine specific code should setup the timer irqaction.
|
b) machine specific code should setup the timer irqaction.
|
||||||
c) enable the timer interrupt
|
c) enable the timer interrupt
|
||||||
|
|
|
@ -4,15 +4,16 @@ Mounting the root filesystem via NFS (nfsroot)
|
||||||
Written 1996 by Gero Kuhlmann <gero@gkminix.han.de>
|
Written 1996 by Gero Kuhlmann <gero@gkminix.han.de>
|
||||||
Updated 1997 by Martin Mares <mj@atrey.karlin.mff.cuni.cz>
|
Updated 1997 by Martin Mares <mj@atrey.karlin.mff.cuni.cz>
|
||||||
Updated 2006 by Nico Schottelius <nico-kernel-nfsroot@schottelius.org>
|
Updated 2006 by Nico Schottelius <nico-kernel-nfsroot@schottelius.org>
|
||||||
|
Updated 2006 by Horms <horms@verge.net.au>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
If you want to use a diskless system, as an X-terminal or printer
|
In order to use a diskless system, such as an X-terminal or printer server
|
||||||
server for example, you have to put your root filesystem onto a
|
for example, it is necessary for the root filesystem to be present on a
|
||||||
non-disk device. This can either be a ramdisk (see initrd.txt in
|
non-disk device. This may be an initramfs (see Documentation/filesystems/
|
||||||
this directory for further information) or a filesystem mounted
|
ramfs-rootfs-initramfs.txt), a ramdisk (see Documenation/initrd.txt) or a
|
||||||
via NFS. The following text describes on how to use NFS for the
|
filesystem mounted via NFS. The following text describes on how to use NFS
|
||||||
root filesystem. For the rest of this text 'client' means the
|
for the root filesystem. For the rest of this text 'client' means the
|
||||||
diskless system, and 'server' means the NFS server.
|
diskless system, and 'server' means the NFS server.
|
||||||
|
|
||||||
|
|
||||||
|
@ -21,11 +22,13 @@ diskless system, and 'server' means the NFS server.
|
||||||
1.) Enabling nfsroot capabilities
|
1.) Enabling nfsroot capabilities
|
||||||
-----------------------------
|
-----------------------------
|
||||||
|
|
||||||
In order to use nfsroot you have to select support for NFS during
|
In order to use nfsroot, NFS client support needs to be selected as
|
||||||
kernel configuration. Note that NFS cannot be loaded as a module
|
built-in during configuration. Once this has been selected, the nfsroot
|
||||||
in this case. The configuration script will then ask you whether
|
option will become available, which should also be selected.
|
||||||
you want to use nfsroot, and if yes what kind of auto configuration
|
|
||||||
system you want to use. Selecting both BOOTP and RARP is safe.
|
In the networking options, kernel level autoconfiguration can be selected,
|
||||||
|
along with the types of autoconfiguration to support. Selecting all of
|
||||||
|
DHCP, BOOTP and RARP is safe.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -33,11 +36,10 @@ system you want to use. Selecting both BOOTP and RARP is safe.
|
||||||
2.) Kernel command line
|
2.) Kernel command line
|
||||||
-------------------
|
-------------------
|
||||||
|
|
||||||
When the kernel has been loaded by a boot loader (either by loadlin,
|
When the kernel has been loaded by a boot loader (see below) it needs to be
|
||||||
LILO or a network boot program) it has to be told what root fs device
|
told what root fs device to use. And in the case of nfsroot, where to find
|
||||||
to use, and where to find the server and the name of the directory
|
both the server and the name of the directory on the server to mount as root.
|
||||||
on the server to mount as root. This can be established by a couple
|
This can be established using the following kernel command line parameters:
|
||||||
of kernel command line parameters:
|
|
||||||
|
|
||||||
|
|
||||||
root=/dev/nfs
|
root=/dev/nfs
|
||||||
|
@ -49,23 +51,21 @@ root=/dev/nfs
|
||||||
|
|
||||||
nfsroot=[<server-ip>:]<root-dir>[,<nfs-options>]
|
nfsroot=[<server-ip>:]<root-dir>[,<nfs-options>]
|
||||||
|
|
||||||
If the `nfsroot' parameter is NOT given on the command line, the default
|
If the `nfsroot' parameter is NOT given on the command line,
|
||||||
"/tftpboot/%s" will be used.
|
the default "/tftpboot/%s" will be used.
|
||||||
|
|
||||||
<server-ip> Specifies the IP address of the NFS server. If this field
|
<server-ip> Specifies the IP address of the NFS server.
|
||||||
is not given, the default address as determined by the
|
The default address is determined by the `ip' parameter
|
||||||
`ip' variable (see below) is used. One use of this
|
(see below). This parameter allows the use of different
|
||||||
parameter is for example to allow using different servers
|
servers for IP autoconfiguration and NFS.
|
||||||
for RARP and NFS. Usually you can leave this blank.
|
|
||||||
|
|
||||||
<root-dir> Name of the directory on the server to mount as root. If
|
<root-dir> Name of the directory on the server to mount as root.
|
||||||
there is a "%s" token in the string, the token will be
|
If there is a "%s" token in the string, it will be
|
||||||
replaced by the ASCII-representation of the client's IP
|
replaced by the ASCII-representation of the client's
|
||||||
address.
|
IP address.
|
||||||
|
|
||||||
<nfs-options> Standard NFS options. All options are separated by commas.
|
<nfs-options> Standard NFS options. All options are separated by commas.
|
||||||
If the options field is not given, the following defaults
|
The following defaults are used:
|
||||||
will be used:
|
|
||||||
port = as given by server portmap daemon
|
port = as given by server portmap daemon
|
||||||
rsize = 1024
|
rsize = 1024
|
||||||
wsize = 1024
|
wsize = 1024
|
||||||
|
@ -81,129 +81,174 @@ nfsroot=[<server-ip>:]<root-dir>[,<nfs-options>]
|
||||||
ip=<client-ip>:<server-ip>:<gw-ip>:<netmask>:<hostname>:<device>:<autoconf>
|
ip=<client-ip>:<server-ip>:<gw-ip>:<netmask>:<hostname>:<device>:<autoconf>
|
||||||
|
|
||||||
This parameter tells the kernel how to configure IP addresses of devices
|
This parameter tells the kernel how to configure IP addresses of devices
|
||||||
and also how to set up the IP routing table. It was originally called `nfsaddrs',
|
and also how to set up the IP routing table. It was originally called
|
||||||
but now the boot-time IP configuration works independently of NFS, so it
|
`nfsaddrs', but now the boot-time IP configuration works independently of
|
||||||
was renamed to `ip' and the old name remained as an alias for compatibility
|
NFS, so it was renamed to `ip' and the old name remained as an alias for
|
||||||
reasons.
|
compatibility reasons.
|
||||||
|
|
||||||
If this parameter is missing from the kernel command line, all fields are
|
If this parameter is missing from the kernel command line, all fields are
|
||||||
assumed to be empty, and the defaults mentioned below apply. In general
|
assumed to be empty, and the defaults mentioned below apply. In general
|
||||||
this means that the kernel tries to configure everything using both
|
this means that the kernel tries to configure everything using
|
||||||
RARP and BOOTP (depending on what has been enabled during kernel confi-
|
autoconfiguration.
|
||||||
guration, and if both what protocol answer got in first).
|
|
||||||
|
|
||||||
<client-ip> IP address of the client. If empty, the address will either
|
|
||||||
be determined by RARP or BOOTP. What protocol is used de-
|
|
||||||
pends on what has been enabled during kernel configuration
|
|
||||||
and on the <autoconf> parameter. If this parameter is not
|
|
||||||
empty, neither RARP nor BOOTP will be used.
|
|
||||||
|
|
||||||
<server-ip> IP address of the NFS server. If RARP is used to determine
|
|
||||||
the client address and this parameter is NOT empty only
|
|
||||||
replies from the specified server are accepted. To use
|
|
||||||
different RARP and NFS server, specify your RARP server
|
|
||||||
here (or leave it blank), and specify your NFS server in
|
|
||||||
the `nfsroot' parameter (see above). If this entry is blank
|
|
||||||
the address of the server is used which answered the RARP
|
|
||||||
or BOOTP request.
|
|
||||||
|
|
||||||
<gw-ip> IP address of a gateway if the server is on a different
|
|
||||||
subnet. If this entry is empty no gateway is used and the
|
|
||||||
server is assumed to be on the local network, unless a
|
|
||||||
value has been received by BOOTP.
|
|
||||||
|
|
||||||
<netmask> Netmask for local network interface. If this is empty,
|
|
||||||
the netmask is derived from the client IP address assuming
|
|
||||||
classful addressing, unless overridden in BOOTP reply.
|
|
||||||
|
|
||||||
<hostname> Name of the client. If empty, the client IP address is
|
|
||||||
used in ASCII notation, or the value received by BOOTP.
|
|
||||||
|
|
||||||
<device> Name of network device to use. If this is empty, all
|
|
||||||
devices are used for RARP and BOOTP requests, and the
|
|
||||||
first one we receive a reply on is configured. If you have
|
|
||||||
only one device, you can safely leave this blank.
|
|
||||||
|
|
||||||
<autoconf> Method to use for autoconfiguration. If this is either
|
|
||||||
'rarp' or 'bootp', the specified protocol is used.
|
|
||||||
If the value is 'both' or empty, both protocols are used
|
|
||||||
so far as they have been enabled during kernel configura-
|
|
||||||
tion. 'off' means no autoconfiguration.
|
|
||||||
|
|
||||||
The <autoconf> parameter can appear alone as the value to the `ip'
|
The <autoconf> parameter can appear alone as the value to the `ip'
|
||||||
parameter (without all the ':' characters before) in which case auto-
|
parameter (without all the ':' characters before) in which case auto-
|
||||||
configuration is used.
|
configuration is used.
|
||||||
|
|
||||||
|
<client-ip> IP address of the client.
|
||||||
|
|
||||||
|
Default: Determined using autoconfiguration.
|
||||||
|
|
||||||
|
<server-ip> IP address of the NFS server. If RARP is used to determine
|
||||||
|
the client address and this parameter is NOT empty only
|
||||||
|
replies from the specified server are accepted.
|
||||||
|
|
||||||
|
Only required for for NFS root. That is autoconfiguration
|
||||||
|
will not be triggered if it is missing and NFS root is not
|
||||||
|
in operation.
|
||||||
|
|
||||||
|
Default: Determined using autoconfiguration.
|
||||||
|
The address of the autoconfiguration server is used.
|
||||||
|
|
||||||
|
<gw-ip> IP address of a gateway if the server is on a different subnet.
|
||||||
|
|
||||||
|
Default: Determined using autoconfiguration.
|
||||||
|
|
||||||
|
<netmask> Netmask for local network interface. If unspecified
|
||||||
|
the netmask is derived from the client IP address assuming
|
||||||
|
classful addressing.
|
||||||
|
|
||||||
|
Default: Determined using autoconfiguration.
|
||||||
|
|
||||||
|
<hostname> Name of the client. May be supplied by autoconfiguration,
|
||||||
|
but its absence will not trigger autoconfiguration.
|
||||||
|
|
||||||
|
Default: Client IP address is used in ASCII notation.
|
||||||
|
|
||||||
|
<device> Name of network device to use.
|
||||||
|
|
||||||
|
Default: If the host only has one device, it is used.
|
||||||
|
Otherwise the device is determined using
|
||||||
|
autoconfiguration. This is done by sending
|
||||||
|
autoconfiguration requests out of all devices,
|
||||||
|
and using the device that received the first reply.
|
||||||
|
|
||||||
|
<autoconf> Method to use for autoconfiguration. In the case of options
|
||||||
|
which specify multiple autoconfiguration protocols,
|
||||||
|
requests are sent using all protocols, and the first one
|
||||||
|
to reply is used.
|
||||||
|
|
||||||
|
Only autoconfiguration protocols that have been compiled
|
||||||
|
into the kernel will be used, regardless of the value of
|
||||||
|
this option.
|
||||||
|
|
||||||
|
off or none: don't use autoconfiguration (default)
|
||||||
|
on or any: use any protocol available in the kernel
|
||||||
|
dhcp: use DHCP
|
||||||
|
bootp: use BOOTP
|
||||||
|
rarp: use RARP
|
||||||
|
both: use both BOOTP and RARP but not DHCP
|
||||||
|
(old option kept for backwards compatibility)
|
||||||
|
|
||||||
|
Default: any
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
3.) Kernel loader
|
|
||||||
-------------
|
|
||||||
|
|
||||||
To get the kernel into memory different approaches can be used. They
|
3.) Boot Loader
|
||||||
depend on what facilities are available:
|
----------
|
||||||
|
|
||||||
|
To get the kernel into memory different approaches can be used.
|
||||||
|
They depend on various facilities being available:
|
||||||
|
|
||||||
|
|
||||||
3.1) Writing the kernel onto a floppy using dd:
|
3.1) Booting from a floppy using syslinux
|
||||||
As always you can just write the kernel onto a floppy using dd,
|
|
||||||
but then it's not possible to use kernel command lines at all.
|
|
||||||
To substitute the 'root=' parameter, create a dummy device on any
|
|
||||||
linux system with major number 0 and minor number 255 using mknod:
|
|
||||||
|
|
||||||
mknod /dev/boot255 c 0 255
|
When building kernels, an easy way to create a boot floppy that uses
|
||||||
|
syslinux is to use the zdisk or bzdisk make targets which use
|
||||||
|
and bzimage images respectively. Both targets accept the
|
||||||
|
FDARGS parameter which can be used to set the kernel command line.
|
||||||
|
|
||||||
Then copy the kernel zImage file onto a floppy using dd:
|
e.g.
|
||||||
|
make bzdisk FDARGS="root=/dev/nfs"
|
||||||
|
|
||||||
dd if=/usr/src/linux/arch/i386/boot/zImage of=/dev/fd0
|
Note that the user running this command will need to have
|
||||||
|
access to the floppy drive device, /dev/fd0
|
||||||
|
|
||||||
And finally use rdev to set the root device:
|
For more information on syslinux, including how to create bootdisks
|
||||||
|
for prebuilt kernels, see http://syslinux.zytor.com/
|
||||||
|
|
||||||
rdev /dev/fd0 /dev/boot255
|
N.B: Previously it was possible to write a kernel directly to
|
||||||
|
a floppy using dd, configure the boot device using rdev, and
|
||||||
|
boot using the resulting floppy. Linux no longer supports this
|
||||||
|
method of booting.
|
||||||
|
|
||||||
You can then remove the dummy device /dev/boot255 again. There
|
3.2) Booting from a cdrom using isolinux
|
||||||
is no real device available for it.
|
|
||||||
The other two kernel command line parameters cannot be substi-
|
When building kernels, an easy way to create a bootable cdrom that
|
||||||
tuted with rdev. Therefore, using this method the kernel will
|
uses isolinux is to use the isoimage target which uses a bzimage
|
||||||
by default use RARP and/or BOOTP, and if it gets an answer via
|
image. Like zdisk and bzdisk, this target accepts the FDARGS
|
||||||
RARP will mount the directory /tftpboot/<client-ip>/ as its
|
parameter which can be used to set the kernel command line.
|
||||||
root. If it got a BOOTP answer the directory name in that answer
|
|
||||||
is used.
|
e.g.
|
||||||
|
make isoimage FDARGS="root=/dev/nfs"
|
||||||
|
|
||||||
|
The resulting iso image will be arch/<ARCH>/boot/image.iso
|
||||||
|
This can be written to a cdrom using a variety of tools including
|
||||||
|
cdrecord.
|
||||||
|
|
||||||
|
e.g.
|
||||||
|
cdrecord dev=ATAPI:1,0,0 arch/i386/boot/image.iso
|
||||||
|
|
||||||
|
For more information on isolinux, including how to create bootdisks
|
||||||
|
for prebuilt kernels, see http://syslinux.zytor.com/
|
||||||
|
|
||||||
3.2) Using LILO
|
3.2) Using LILO
|
||||||
When using LILO you can specify all necessary command line
|
When using LILO all the necessary command line parameters may be
|
||||||
parameters with the 'append=' command in the LILO configuration
|
specified using the 'append=' directive in the LILO configuration
|
||||||
file. However, to use the 'root=' command you also need to
|
file.
|
||||||
set up a dummy device as described in 3.1 above. For how to use
|
|
||||||
LILO and its 'append=' command please refer to the LILO
|
However, to use the 'root=' directive you also need to create
|
||||||
documentation.
|
a dummy root device, which may be removed after LILO is run.
|
||||||
|
|
||||||
|
mknod /dev/boot255 c 0 255
|
||||||
|
|
||||||
|
For information on configuring LILO, please refer to its documentation.
|
||||||
|
|
||||||
3.3) Using GRUB
|
3.3) Using GRUB
|
||||||
When you use GRUB, you simply append the parameters after the kernel
|
When using GRUB, kernel parameter are simply appended after the kernel
|
||||||
specification: "kernel <kernel> <parameters>" (without the quotes).
|
specification: kernel <kernel> <parameters>
|
||||||
|
|
||||||
3.4) Using loadlin
|
3.4) Using loadlin
|
||||||
When you want to boot Linux from a DOS command prompt without
|
loadlin may be used to boot Linux from a DOS command prompt without
|
||||||
having a local hard disk to mount as root, you can use loadlin.
|
requiring a local hard disk to mount as root. This has not been
|
||||||
I was told that it works, but haven't used it myself yet. In
|
thoroughly tested by the authors of this document, but in general
|
||||||
general you should be able to create a kernel command line simi-
|
it should be possible configure the kernel command line similarly
|
||||||
lar to how LILO is doing it. Please refer to the loadlin docu-
|
to the configuration of LILO.
|
||||||
mentation for further information.
|
|
||||||
|
Please refer to the loadlin documentation for further information.
|
||||||
|
|
||||||
3.5) Using a boot ROM
|
3.5) Using a boot ROM
|
||||||
This is probably the most elegant way of booting a diskless
|
This is probably the most elegant way of booting a diskless client.
|
||||||
client. With a boot ROM the kernel gets loaded using the TFTP
|
With a boot ROM the kernel is loaded using the TFTP protocol. The
|
||||||
protocol. As far as I know, no commercial boot ROMs yet
|
authors of this document are not aware of any no commercial boot
|
||||||
support booting Linux over the network, but there are two
|
ROMs that support booting Linux over the network. However, there
|
||||||
free implementations of a boot ROM available on sunsite.unc.edu
|
are two free implementations of a boot ROM, netboot-nfs and
|
||||||
and its mirrors. They are called 'netboot-nfs' and 'etherboot'.
|
etherboot, both of which are available on sunsite.unc.edu, and both
|
||||||
Both contain everything you need to boot a diskless Linux client.
|
of which contain everything you need to boot a diskless Linux client.
|
||||||
|
|
||||||
3.6) Using pxelinux
|
3.6) Using pxelinux
|
||||||
Using pxelinux you specify the kernel you built with
|
Pxelinux may be used to boot linux using the PXE boot loader
|
||||||
|
which is present on many modern network cards.
|
||||||
|
|
||||||
|
When using pxelinux, the kernel image is specified using
|
||||||
"kernel <relative-path-below /tftpboot>". The nfsroot parameters
|
"kernel <relative-path-below /tftpboot>". The nfsroot parameters
|
||||||
are passed to the kernel by adding them to the "append" line.
|
are passed to the kernel by adding them to the "append" line.
|
||||||
You may perhaps also want to fine tune the console output,
|
It is common to use serial console in conjunction with pxeliunx,
|
||||||
see Documentation/serial-console.txt for serial console help.
|
see Documentation/serial-console.txt for more information.
|
||||||
|
|
||||||
|
For more information on isolinux, including how to create bootdisks
|
||||||
|
for prebuilt kernels, see http://syslinux.zytor.com/
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -6,7 +6,7 @@ Contents:
|
||||||
1) Overview
|
1) Overview
|
||||||
2) Kernel Command Line Parameters
|
2) Kernel Command Line Parameters
|
||||||
3) Using "rdev -r"
|
3) Using "rdev -r"
|
||||||
4) An Example of Creating a Compressed RAM Disk
|
4) An Example of Creating a Compressed RAM Disk
|
||||||
|
|
||||||
|
|
||||||
1) Overview
|
1) Overview
|
||||||
|
@ -34,7 +34,7 @@ make it clearer. The original "ramdisk=<ram_size>" has been kept around for
|
||||||
compatibility reasons, but it may be removed in the future.
|
compatibility reasons, but it may be removed in the future.
|
||||||
|
|
||||||
The new RAM disk also has the ability to load compressed RAM disk images,
|
The new RAM disk also has the ability to load compressed RAM disk images,
|
||||||
allowing one to squeeze more programs onto an average installation or
|
allowing one to squeeze more programs onto an average installation or
|
||||||
rescue floppy disk.
|
rescue floppy disk.
|
||||||
|
|
||||||
|
|
||||||
|
@ -51,7 +51,7 @@ default is 4096 (4 MB) (8192 (8 MB) on S390).
|
||||||
===================
|
===================
|
||||||
|
|
||||||
This parameter tells the RAM disk driver how many bytes to use per block. The
|
This parameter tells the RAM disk driver how many bytes to use per block. The
|
||||||
default is 512.
|
default is 1024 (BLOCK_SIZE).
|
||||||
|
|
||||||
|
|
||||||
3) Using "rdev -r"
|
3) Using "rdev -r"
|
||||||
|
@ -70,7 +70,7 @@ These numbers are no magical secrets, as seen below:
|
||||||
./arch/i386/kernel/setup.c:#define RAMDISK_PROMPT_FLAG 0x8000
|
./arch/i386/kernel/setup.c:#define RAMDISK_PROMPT_FLAG 0x8000
|
||||||
./arch/i386/kernel/setup.c:#define RAMDISK_LOAD_FLAG 0x4000
|
./arch/i386/kernel/setup.c:#define RAMDISK_LOAD_FLAG 0x4000
|
||||||
|
|
||||||
Consider a typical two floppy disk setup, where you will have the
|
Consider a typical two floppy disk setup, where you will have the
|
||||||
kernel on disk one, and have already put a RAM disk image onto disk #2.
|
kernel on disk one, and have already put a RAM disk image onto disk #2.
|
||||||
|
|
||||||
Hence you want to set bits 0 to 13 as 0, meaning that your RAM disk
|
Hence you want to set bits 0 to 13 as 0, meaning that your RAM disk
|
||||||
|
@ -97,12 +97,12 @@ Since the default start = 0 and the default prompt = 1, you could use:
|
||||||
append = "load_ramdisk=1"
|
append = "load_ramdisk=1"
|
||||||
|
|
||||||
|
|
||||||
4) An Example of Creating a Compressed RAM Disk
|
4) An Example of Creating a Compressed RAM Disk
|
||||||
----------------------------------------------
|
----------------------------------------------
|
||||||
|
|
||||||
To create a RAM disk image, you will need a spare block device to
|
To create a RAM disk image, you will need a spare block device to
|
||||||
construct it on. This can be the RAM disk device itself, or an
|
construct it on. This can be the RAM disk device itself, or an
|
||||||
unused disk partition (such as an unmounted swap partition). For this
|
unused disk partition (such as an unmounted swap partition). For this
|
||||||
example, we will use the RAM disk device, "/dev/ram0".
|
example, we will use the RAM disk device, "/dev/ram0".
|
||||||
|
|
||||||
Note: This technique should not be done on a machine with less than 8 MB
|
Note: This technique should not be done on a machine with less than 8 MB
|
||||||
|
|
|
@ -1172,7 +1172,7 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
/* PCI IDs */
|
/* PCI IDs */
|
||||||
static struct pci_device_id snd_mychip_ids[] __devinitdata = {
|
static struct pci_device_id snd_mychip_ids[] = {
|
||||||
{ PCI_VENDOR_ID_FOO, PCI_DEVICE_ID_BAR,
|
{ PCI_VENDOR_ID_FOO, PCI_DEVICE_ID_BAR,
|
||||||
PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0, },
|
PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0, },
|
||||||
....
|
....
|
||||||
|
@ -1565,7 +1565,7 @@
|
||||||
<informalexample>
|
<informalexample>
|
||||||
<programlisting>
|
<programlisting>
|
||||||
<![CDATA[
|
<![CDATA[
|
||||||
static struct pci_device_id snd_mychip_ids[] __devinitdata = {
|
static struct pci_device_id snd_mychip_ids[] = {
|
||||||
{ PCI_VENDOR_ID_FOO, PCI_DEVICE_ID_BAR,
|
{ PCI_VENDOR_ID_FOO, PCI_DEVICE_ID_BAR,
|
||||||
PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0, },
|
PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0, },
|
||||||
....
|
....
|
||||||
|
|
|
@ -399,10 +399,10 @@ REINER SCT cyberJack pinpad/e-com USB chipcard reader
|
||||||
|
|
||||||
Prolific PL2303 Driver
|
Prolific PL2303 Driver
|
||||||
|
|
||||||
This driver support any device that has the PL2303 chip from Prolific
|
This driver supports any device that has the PL2303 chip from Prolific
|
||||||
in it. This includes a number of single port USB to serial
|
in it. This includes a number of single port USB to serial
|
||||||
converters and USB GPS devices. Devices from Aten (the UC-232) and
|
converters and USB GPS devices. Devices from Aten (the UC-232) and
|
||||||
IO-Data work with this driver.
|
IO-Data work with this driver, as does the DCU-11 mobile-phone cable.
|
||||||
|
|
||||||
For any questions or problems with this driver, please contact Greg
|
For any questions or problems with this driver, please contact Greg
|
||||||
Kroah-Hartman at greg@kroah.com
|
Kroah-Hartman at greg@kroah.com
|
||||||
|
|
49
MAINTAINERS
49
MAINTAINERS
|
@ -274,7 +274,7 @@ S: Maintained
|
||||||
ALI1563 I2C DRIVER
|
ALI1563 I2C DRIVER
|
||||||
P: Rudolf Marek
|
P: Rudolf Marek
|
||||||
M: r.marek@sh.cvut.cz
|
M: r.marek@sh.cvut.cz
|
||||||
L: lm-sensors@lm-sensors.org
|
L: i2c@lm-sensors.org
|
||||||
S: Maintained
|
S: Maintained
|
||||||
|
|
||||||
ALPHA PORT
|
ALPHA PORT
|
||||||
|
@ -601,6 +601,15 @@ W: http://linuxtv.org
|
||||||
T: git kernel.org:/pub/scm/linux/kernel/git/mchehab/v4l-dvb.git
|
T: git kernel.org:/pub/scm/linux/kernel/git/mchehab/v4l-dvb.git
|
||||||
S: Maintained
|
S: Maintained
|
||||||
|
|
||||||
|
CALGARY x86-64 IOMMU
|
||||||
|
P: Muli Ben-Yehuda
|
||||||
|
M: muli@il.ibm.com
|
||||||
|
P: Jon D. Mason
|
||||||
|
M: jdmason@us.ibm.com
|
||||||
|
L: linux-kernel@vger.kernel.org
|
||||||
|
L: discuss@x86-64.org
|
||||||
|
S: Maintained
|
||||||
|
|
||||||
COMMON INTERNET FILE SYSTEM (CIFS)
|
COMMON INTERNET FILE SYSTEM (CIFS)
|
||||||
P: Steve French
|
P: Steve French
|
||||||
M: sfrench@samba.org
|
M: sfrench@samba.org
|
||||||
|
@ -762,6 +771,7 @@ M: aliakc@web.de
|
||||||
P: Jamie Lenehan
|
P: Jamie Lenehan
|
||||||
M: lenehan@twibble.org
|
M: lenehan@twibble.org
|
||||||
W: http://twibble.org/dist/dc395x/
|
W: http://twibble.org/dist/dc395x/
|
||||||
|
L: dc395x@twibble.org
|
||||||
L: http://lists.twibble.org/mailman/listinfo/dc395x/
|
L: http://lists.twibble.org/mailman/listinfo/dc395x/
|
||||||
S: Maintained
|
S: Maintained
|
||||||
|
|
||||||
|
@ -1258,7 +1268,7 @@ S: Maintained
|
||||||
I2C SUBSYSTEM
|
I2C SUBSYSTEM
|
||||||
P: Jean Delvare
|
P: Jean Delvare
|
||||||
M: khali@linux-fr.org
|
M: khali@linux-fr.org
|
||||||
L: lm-sensors@lm-sensors.org
|
L: i2c@lm-sensors.org
|
||||||
W: http://www.lm-sensors.nu/
|
W: http://www.lm-sensors.nu/
|
||||||
T: quilt kernel.org/pub/linux/kernel/people/gregkh/gregkh-2.6/
|
T: quilt kernel.org/pub/linux/kernel/people/gregkh/gregkh-2.6/
|
||||||
S: Maintained
|
S: Maintained
|
||||||
|
@ -1510,6 +1520,7 @@ P: Yi Zhu
|
||||||
M: yi.zhu@intel.com
|
M: yi.zhu@intel.com
|
||||||
P: James Ketrenos
|
P: James Ketrenos
|
||||||
M: jketreno@linux.intel.com
|
M: jketreno@linux.intel.com
|
||||||
|
L: ipw2100-devel@lists.sourceforge.net
|
||||||
L: http://lists.sourceforge.net/mailman/listinfo/ipw2100-devel
|
L: http://lists.sourceforge.net/mailman/listinfo/ipw2100-devel
|
||||||
W: http://ipw2100.sourceforge.net
|
W: http://ipw2100.sourceforge.net
|
||||||
S: Supported
|
S: Supported
|
||||||
|
@ -1519,6 +1530,7 @@ P: Yi Zhu
|
||||||
M: yi.zhu@intel.com
|
M: yi.zhu@intel.com
|
||||||
P: James Ketrenos
|
P: James Ketrenos
|
||||||
M: jketreno@linux.intel.com
|
M: jketreno@linux.intel.com
|
||||||
|
L: ipw2100-devel@lists.sourceforge.net
|
||||||
L: http://lists.sourceforge.net/mailman/listinfo/ipw2100-devel
|
L: http://lists.sourceforge.net/mailman/listinfo/ipw2100-devel
|
||||||
W: http://ipw2200.sourceforge.net
|
W: http://ipw2200.sourceforge.net
|
||||||
S: Supported
|
S: Supported
|
||||||
|
@ -2102,7 +2114,7 @@ S: Maintained
|
||||||
OPENCORES I2C BUS DRIVER
|
OPENCORES I2C BUS DRIVER
|
||||||
P: Peter Korsgaard
|
P: Peter Korsgaard
|
||||||
M: jacmet@sunsite.dk
|
M: jacmet@sunsite.dk
|
||||||
L: lm-sensors@lm-sensors.org
|
L: i2c@lm-sensors.org
|
||||||
S: Maintained
|
S: Maintained
|
||||||
|
|
||||||
ORACLE CLUSTER FILESYSTEM 2 (OCFS2)
|
ORACLE CLUSTER FILESYSTEM 2 (OCFS2)
|
||||||
|
@ -2235,6 +2247,7 @@ S: Maintained
|
||||||
|
|
||||||
PCMCIA SUBSYSTEM
|
PCMCIA SUBSYSTEM
|
||||||
P: Linux PCMCIA Team
|
P: Linux PCMCIA Team
|
||||||
|
L: linux-pcmcia@lists.infradead.org
|
||||||
L: http://lists.infradead.org/mailman/listinfo/linux-pcmcia
|
L: http://lists.infradead.org/mailman/listinfo/linux-pcmcia
|
||||||
T: git kernel.org:/pub/scm/linux/kernel/git/brodo/pcmcia-2.6.git
|
T: git kernel.org:/pub/scm/linux/kernel/git/brodo/pcmcia-2.6.git
|
||||||
S: Maintained
|
S: Maintained
|
||||||
|
@ -2245,6 +2258,12 @@ M: tsbogend@alpha.franken.de
|
||||||
L: netdev@vger.kernel.org
|
L: netdev@vger.kernel.org
|
||||||
S: Maintained
|
S: Maintained
|
||||||
|
|
||||||
|
PER-TASK DELAY ACCOUNTING
|
||||||
|
P: Shailabh Nagar
|
||||||
|
M: nagar@watson.ibm.com
|
||||||
|
L: linux-kernel@vger.kernel.org
|
||||||
|
S: Maintained
|
||||||
|
|
||||||
PERSONALITY HANDLING
|
PERSONALITY HANDLING
|
||||||
P: Christoph Hellwig
|
P: Christoph Hellwig
|
||||||
M: hch@infradead.org
|
M: hch@infradead.org
|
||||||
|
@ -2684,6 +2703,11 @@ M: shemminger@osdl.org
|
||||||
L: netdev@vger.kernel.org
|
L: netdev@vger.kernel.org
|
||||||
S: Maintained
|
S: Maintained
|
||||||
|
|
||||||
|
SOEKRIS NET48XX LED SUPPORT
|
||||||
|
P: Chris Boot
|
||||||
|
M: bootc@bootc.net
|
||||||
|
S: Maintained
|
||||||
|
|
||||||
SPARC (sparc32):
|
SPARC (sparc32):
|
||||||
P: William L. Irwin
|
P: William L. Irwin
|
||||||
M: wli@holomorphy.com
|
M: wli@holomorphy.com
|
||||||
|
@ -2756,11 +2780,23 @@ P: Christoph Hellwig
|
||||||
M: hch@infradead.org
|
M: hch@infradead.org
|
||||||
S: Maintained
|
S: Maintained
|
||||||
|
|
||||||
|
TC CLASSIFIER
|
||||||
|
P: Jamal Hadi Salim
|
||||||
|
M: hadi@cyberus.ca
|
||||||
|
L: netdev@vger.kernel.org
|
||||||
|
S: Maintained
|
||||||
|
|
||||||
TI OMAP RANDOM NUMBER GENERATOR SUPPORT
|
TI OMAP RANDOM NUMBER GENERATOR SUPPORT
|
||||||
P: Deepak Saxena
|
P: Deepak Saxena
|
||||||
M: dsaxena@plexity.net
|
M: dsaxena@plexity.net
|
||||||
S: Maintained
|
S: Maintained
|
||||||
|
|
||||||
|
TASKSTATS STATISTICS INTERFACE
|
||||||
|
P: Shailabh Nagar
|
||||||
|
M: nagar@watson.ibm.com
|
||||||
|
L: linux-kernel@vger.kernel.org
|
||||||
|
S: Maintained
|
||||||
|
|
||||||
TI PARALLEL LINK CABLE DRIVER
|
TI PARALLEL LINK CABLE DRIVER
|
||||||
P: Romain Lievin
|
P: Romain Lievin
|
||||||
M: roms@lpg.ticalc.org
|
M: roms@lpg.ticalc.org
|
||||||
|
@ -3136,7 +3172,7 @@ S: Maintained
|
||||||
VIAPRO SMBUS DRIVER
|
VIAPRO SMBUS DRIVER
|
||||||
P: Jean Delvare
|
P: Jean Delvare
|
||||||
M: khali@linux-fr.org
|
M: khali@linux-fr.org
|
||||||
L: lm-sensors@lm-sensors.org
|
L: i2c@lm-sensors.org
|
||||||
S: Maintained
|
S: Maintained
|
||||||
|
|
||||||
UCLINUX (AND M68KNOMMU)
|
UCLINUX (AND M68KNOMMU)
|
||||||
|
@ -3184,6 +3220,11 @@ S: Maintained
|
||||||
W1 DALLAS'S 1-WIRE BUS
|
W1 DALLAS'S 1-WIRE BUS
|
||||||
P: Evgeniy Polyakov
|
P: Evgeniy Polyakov
|
||||||
M: johnpol@2ka.mipt.ru
|
M: johnpol@2ka.mipt.ru
|
||||||
|
S: Maintained
|
||||||
|
|
||||||
|
W83791D HARDWARE MONITORING DRIVER
|
||||||
|
P: Charles Spirakis
|
||||||
|
M: bezaur@gmail.com
|
||||||
L: lm-sensors@lm-sensors.org
|
L: lm-sensors@lm-sensors.org
|
||||||
S: Maintained
|
S: Maintained
|
||||||
|
|
||||||
|
|
2
Makefile
2
Makefile
|
@ -1,7 +1,7 @@
|
||||||
VERSION = 2
|
VERSION = 2
|
||||||
PATCHLEVEL = 6
|
PATCHLEVEL = 6
|
||||||
SUBLEVEL = 18
|
SUBLEVEL = 18
|
||||||
EXTRAVERSION = -rc1
|
EXTRAVERSION = -rc2
|
||||||
NAME=Crazed Snow-Weasel
|
NAME=Crazed Snow-Weasel
|
||||||
|
|
||||||
# *DOCUMENTATION*
|
# *DOCUMENTATION*
|
||||||
|
|
|
@ -14,6 +14,7 @@
|
||||||
#include <linux/in.h>
|
#include <linux/in.h>
|
||||||
#include <linux/in6.h>
|
#include <linux/in6.h>
|
||||||
#include <linux/pci.h>
|
#include <linux/pci.h>
|
||||||
|
#include <linux/screen_info.h>
|
||||||
#include <linux/tty.h>
|
#include <linux/tty.h>
|
||||||
#include <linux/mm.h>
|
#include <linux/mm.h>
|
||||||
#include <linux/delay.h>
|
#include <linux/delay.h>
|
||||||
|
|
|
@ -25,6 +25,7 @@
|
||||||
#include <linux/time.h>
|
#include <linux/time.h>
|
||||||
#include <linux/major.h>
|
#include <linux/major.h>
|
||||||
#include <linux/stat.h>
|
#include <linux/stat.h>
|
||||||
|
#include <linux/vt.h>
|
||||||
#include <linux/mman.h>
|
#include <linux/mman.h>
|
||||||
#include <linux/elfcore.h>
|
#include <linux/elfcore.h>
|
||||||
#include <linux/reboot.h>
|
#include <linux/reboot.h>
|
||||||
|
|
|
@ -19,7 +19,7 @@
|
||||||
#include <linux/slab.h>
|
#include <linux/slab.h>
|
||||||
#include <linux/user.h>
|
#include <linux/user.h>
|
||||||
#include <linux/a.out.h>
|
#include <linux/a.out.h>
|
||||||
#include <linux/tty.h>
|
#include <linux/screen_info.h>
|
||||||
#include <linux/delay.h>
|
#include <linux/delay.h>
|
||||||
#include <linux/config.h> /* CONFIG_ALPHA_LCA etc */
|
#include <linux/config.h> /* CONFIG_ALPHA_LCA etc */
|
||||||
#include <linux/mc146818rtc.h>
|
#include <linux/mc146818rtc.h>
|
||||||
|
|
|
@ -16,7 +16,7 @@
|
||||||
#include <linux/sched.h>
|
#include <linux/sched.h>
|
||||||
#include <linux/pci.h>
|
#include <linux/pci.h>
|
||||||
#include <linux/init.h>
|
#include <linux/init.h>
|
||||||
#include <linux/tty.h>
|
#include <linux/screen_info.h>
|
||||||
|
|
||||||
#include <asm/compiler.h>
|
#include <asm/compiler.h>
|
||||||
#include <asm/ptrace.h>
|
#include <asm/ptrace.h>
|
||||||
|
|
|
@ -506,7 +506,7 @@ locomo_init_one_child(struct locomo *lchip, struct locomo_dev_info *info)
|
||||||
goto out;
|
goto out;
|
||||||
}
|
}
|
||||||
|
|
||||||
strncpy(dev->dev.bus_id,info->name,sizeof(dev->dev.bus_id));
|
strncpy(dev->dev.bus_id, info->name, sizeof(dev->dev.bus_id));
|
||||||
/*
|
/*
|
||||||
* If the parent device has a DMA mask associated with it,
|
* If the parent device has a DMA mask associated with it,
|
||||||
* propagate it down to the children.
|
* propagate it down to the children.
|
||||||
|
@ -729,7 +729,6 @@ __locomo_probe(struct device *me, struct resource *mem, int irq)
|
||||||
|
|
||||||
for (i = 0; i < ARRAY_SIZE(locomo_devices); i++)
|
for (i = 0; i < ARRAY_SIZE(locomo_devices); i++)
|
||||||
locomo_init_one_child(lchip, &locomo_devices[i]);
|
locomo_init_one_child(lchip, &locomo_devices[i]);
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
out:
|
out:
|
||||||
|
|
|
@ -412,8 +412,10 @@ static int sharpsl_check_battery_temp(void)
|
||||||
val = get_select_val(buff);
|
val = get_select_val(buff);
|
||||||
|
|
||||||
dev_dbg(sharpsl_pm.dev, "Temperature: %d\n", val);
|
dev_dbg(sharpsl_pm.dev, "Temperature: %d\n", val);
|
||||||
if (val > sharpsl_pm.machinfo->charge_on_temp)
|
if (val > sharpsl_pm.machinfo->charge_on_temp) {
|
||||||
|
printk(KERN_WARNING "Not charging: temperature out of limits.\n");
|
||||||
return -1;
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,14 +1,18 @@
|
||||||
#
|
#
|
||||||
# Automatically generated make config: don't edit
|
# Automatically generated make config: don't edit
|
||||||
# Linux kernel version: 2.6.17-rc2
|
# Linux kernel version: 2.6.18-rc1
|
||||||
# Wed Apr 19 21:21:01 2006
|
# Sun Jul 9 15:21:30 2006
|
||||||
#
|
#
|
||||||
CONFIG_ARM=y
|
CONFIG_ARM=y
|
||||||
CONFIG_MMU=y
|
CONFIG_MMU=y
|
||||||
|
CONFIG_GENERIC_HARDIRQS=y
|
||||||
|
CONFIG_HARDIRQS_SW_RESEND=y
|
||||||
|
CONFIG_GENERIC_IRQ_PROBE=y
|
||||||
CONFIG_RWSEM_GENERIC_SPINLOCK=y
|
CONFIG_RWSEM_GENERIC_SPINLOCK=y
|
||||||
CONFIG_GENERIC_HWEIGHT=y
|
CONFIG_GENERIC_HWEIGHT=y
|
||||||
CONFIG_GENERIC_CALIBRATE_DELAY=y
|
CONFIG_GENERIC_CALIBRATE_DELAY=y
|
||||||
CONFIG_VECTORS_BASE=0xffff0000
|
CONFIG_VECTORS_BASE=0xffff0000
|
||||||
|
CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
|
||||||
|
|
||||||
#
|
#
|
||||||
# Code maturity level options
|
# Code maturity level options
|
||||||
|
@ -43,14 +47,15 @@ CONFIG_PRINTK=y
|
||||||
CONFIG_BUG=y
|
CONFIG_BUG=y
|
||||||
CONFIG_ELF_CORE=y
|
CONFIG_ELF_CORE=y
|
||||||
CONFIG_BASE_FULL=y
|
CONFIG_BASE_FULL=y
|
||||||
|
CONFIG_RT_MUTEXES=y
|
||||||
CONFIG_FUTEX=y
|
CONFIG_FUTEX=y
|
||||||
CONFIG_EPOLL=y
|
CONFIG_EPOLL=y
|
||||||
CONFIG_SHMEM=y
|
CONFIG_SHMEM=y
|
||||||
CONFIG_SLAB=y
|
CONFIG_SLAB=y
|
||||||
|
CONFIG_VM_EVENT_COUNTERS=y
|
||||||
# CONFIG_TINY_SHMEM is not set
|
# CONFIG_TINY_SHMEM is not set
|
||||||
CONFIG_BASE_SMALL=0
|
CONFIG_BASE_SMALL=0
|
||||||
# CONFIG_SLOB is not set
|
# CONFIG_SLOB is not set
|
||||||
CONFIG_OBSOLETE_INTERMODULE=y
|
|
||||||
|
|
||||||
#
|
#
|
||||||
# Loadable module support
|
# Loadable module support
|
||||||
|
@ -83,18 +88,26 @@ CONFIG_DEFAULT_IOSCHED="deadline"
|
||||||
#
|
#
|
||||||
# System Type
|
# System Type
|
||||||
#
|
#
|
||||||
|
# CONFIG_ARCH_AAEC2000 is not set
|
||||||
|
# CONFIG_ARCH_INTEGRATOR is not set
|
||||||
|
# CONFIG_ARCH_REALVIEW is not set
|
||||||
|
# CONFIG_ARCH_VERSATILE is not set
|
||||||
|
# CONFIG_ARCH_AT91 is not set
|
||||||
# CONFIG_ARCH_CLPS7500 is not set
|
# CONFIG_ARCH_CLPS7500 is not set
|
||||||
# CONFIG_ARCH_CLPS711X is not set
|
# CONFIG_ARCH_CLPS711X is not set
|
||||||
# CONFIG_ARCH_CO285 is not set
|
# CONFIG_ARCH_CO285 is not set
|
||||||
# CONFIG_ARCH_EBSA110 is not set
|
# CONFIG_ARCH_EBSA110 is not set
|
||||||
CONFIG_ARCH_EP93XX=y
|
CONFIG_ARCH_EP93XX=y
|
||||||
# CONFIG_ARCH_FOOTBRIDGE is not set
|
# CONFIG_ARCH_FOOTBRIDGE is not set
|
||||||
# CONFIG_ARCH_INTEGRATOR is not set
|
# CONFIG_ARCH_NETX is not set
|
||||||
|
# CONFIG_ARCH_H720X is not set
|
||||||
|
# CONFIG_ARCH_IMX is not set
|
||||||
# CONFIG_ARCH_IOP3XX is not set
|
# CONFIG_ARCH_IOP3XX is not set
|
||||||
# CONFIG_ARCH_IXP4XX is not set
|
# CONFIG_ARCH_IXP4XX is not set
|
||||||
# CONFIG_ARCH_IXP2000 is not set
|
# CONFIG_ARCH_IXP2000 is not set
|
||||||
# CONFIG_ARCH_IXP23XX is not set
|
# CONFIG_ARCH_IXP23XX is not set
|
||||||
# CONFIG_ARCH_L7200 is not set
|
# CONFIG_ARCH_L7200 is not set
|
||||||
|
# CONFIG_ARCH_PNX4008 is not set
|
||||||
# CONFIG_ARCH_PXA is not set
|
# CONFIG_ARCH_PXA is not set
|
||||||
# CONFIG_ARCH_RPC is not set
|
# CONFIG_ARCH_RPC is not set
|
||||||
# CONFIG_ARCH_SA1100 is not set
|
# CONFIG_ARCH_SA1100 is not set
|
||||||
|
@ -102,20 +115,18 @@ CONFIG_ARCH_EP93XX=y
|
||||||
# CONFIG_ARCH_SHARK is not set
|
# CONFIG_ARCH_SHARK is not set
|
||||||
# CONFIG_ARCH_LH7A40X is not set
|
# CONFIG_ARCH_LH7A40X is not set
|
||||||
# CONFIG_ARCH_OMAP is not set
|
# CONFIG_ARCH_OMAP is not set
|
||||||
# CONFIG_ARCH_VERSATILE is not set
|
|
||||||
# CONFIG_ARCH_REALVIEW is not set
|
|
||||||
# CONFIG_ARCH_IMX is not set
|
|
||||||
# CONFIG_ARCH_H720X is not set
|
|
||||||
# CONFIG_ARCH_AAEC2000 is not set
|
|
||||||
# CONFIG_ARCH_AT91RM9200 is not set
|
|
||||||
|
|
||||||
#
|
#
|
||||||
# Cirrus EP93xx Implementation Options
|
# Cirrus EP93xx Implementation Options
|
||||||
#
|
#
|
||||||
|
CONFIG_CRUNCH=y
|
||||||
|
|
||||||
#
|
#
|
||||||
# EP93xx Platforms
|
# EP93xx Platforms
|
||||||
#
|
#
|
||||||
|
CONFIG_MACH_EDB9302=y
|
||||||
|
CONFIG_MACH_EDB9315=y
|
||||||
|
CONFIG_MACH_EDB9315A=y
|
||||||
CONFIG_MACH_GESBC9312=y
|
CONFIG_MACH_GESBC9312=y
|
||||||
CONFIG_MACH_TS72XX=y
|
CONFIG_MACH_TS72XX=y
|
||||||
|
|
||||||
|
@ -166,6 +177,7 @@ CONFIG_FLATMEM=y
|
||||||
CONFIG_FLAT_NODE_MEM_MAP=y
|
CONFIG_FLAT_NODE_MEM_MAP=y
|
||||||
# CONFIG_SPARSEMEM_STATIC is not set
|
# CONFIG_SPARSEMEM_STATIC is not set
|
||||||
CONFIG_SPLIT_PTLOCK_CPUS=4096
|
CONFIG_SPLIT_PTLOCK_CPUS=4096
|
||||||
|
# CONFIG_RESOURCES_64BIT is not set
|
||||||
CONFIG_ALIGNMENT_TRAP=y
|
CONFIG_ALIGNMENT_TRAP=y
|
||||||
|
|
||||||
#
|
#
|
||||||
|
@ -233,6 +245,8 @@ CONFIG_SYN_COOKIES=y
|
||||||
# CONFIG_INET_IPCOMP is not set
|
# CONFIG_INET_IPCOMP is not set
|
||||||
# CONFIG_INET_XFRM_TUNNEL is not set
|
# CONFIG_INET_XFRM_TUNNEL is not set
|
||||||
# CONFIG_INET_TUNNEL is not set
|
# CONFIG_INET_TUNNEL is not set
|
||||||
|
CONFIG_INET_XFRM_MODE_TRANSPORT=y
|
||||||
|
CONFIG_INET_XFRM_MODE_TUNNEL=y
|
||||||
CONFIG_INET_DIAG=y
|
CONFIG_INET_DIAG=y
|
||||||
CONFIG_INET_TCP_DIAG=y
|
CONFIG_INET_TCP_DIAG=y
|
||||||
# CONFIG_TCP_CONG_ADVANCED is not set
|
# CONFIG_TCP_CONG_ADVANCED is not set
|
||||||
|
@ -240,6 +254,7 @@ CONFIG_TCP_CONG_BIC=y
|
||||||
# CONFIG_IPV6 is not set
|
# CONFIG_IPV6 is not set
|
||||||
# CONFIG_INET6_XFRM_TUNNEL is not set
|
# CONFIG_INET6_XFRM_TUNNEL is not set
|
||||||
# CONFIG_INET6_TUNNEL is not set
|
# CONFIG_INET6_TUNNEL is not set
|
||||||
|
# CONFIG_NETWORK_SECMARK is not set
|
||||||
# CONFIG_NETFILTER is not set
|
# CONFIG_NETFILTER is not set
|
||||||
|
|
||||||
#
|
#
|
||||||
|
@ -294,6 +309,7 @@ CONFIG_STANDALONE=y
|
||||||
CONFIG_PREVENT_FIRMWARE_BUILD=y
|
CONFIG_PREVENT_FIRMWARE_BUILD=y
|
||||||
# CONFIG_FW_LOADER is not set
|
# CONFIG_FW_LOADER is not set
|
||||||
# CONFIG_DEBUG_DRIVER is not set
|
# CONFIG_DEBUG_DRIVER is not set
|
||||||
|
# CONFIG_SYS_HYPERVISOR is not set
|
||||||
|
|
||||||
#
|
#
|
||||||
# Connector - unified userspace <-> kernelspace linker
|
# Connector - unified userspace <-> kernelspace linker
|
||||||
|
@ -386,6 +402,8 @@ CONFIG_MTD_PHYSMAP_BANKWIDTH=1
|
||||||
#
|
#
|
||||||
CONFIG_MTD_NAND=y
|
CONFIG_MTD_NAND=y
|
||||||
CONFIG_MTD_NAND_VERIFY_WRITE=y
|
CONFIG_MTD_NAND_VERIFY_WRITE=y
|
||||||
|
# CONFIG_MTD_NAND_ECC_SMC is not set
|
||||||
|
CONFIG_MTD_NAND_TS7250=y
|
||||||
CONFIG_MTD_NAND_IDS=y
|
CONFIG_MTD_NAND_IDS=y
|
||||||
# CONFIG_MTD_NAND_DISKONCHIP is not set
|
# CONFIG_MTD_NAND_DISKONCHIP is not set
|
||||||
# CONFIG_MTD_NAND_NANDSIM is not set
|
# CONFIG_MTD_NAND_NANDSIM is not set
|
||||||
|
@ -582,6 +600,7 @@ CONFIG_EP93XX_WATCHDOG=y
|
||||||
# USB-based Watchdog Cards
|
# USB-based Watchdog Cards
|
||||||
#
|
#
|
||||||
# CONFIG_USBPCWATCHDOG is not set
|
# CONFIG_USBPCWATCHDOG is not set
|
||||||
|
# CONFIG_HW_RANDOM is not set
|
||||||
# CONFIG_NVRAM is not set
|
# CONFIG_NVRAM is not set
|
||||||
# CONFIG_DTLK is not set
|
# CONFIG_DTLK is not set
|
||||||
# CONFIG_R3964 is not set
|
# CONFIG_R3964 is not set
|
||||||
|
@ -613,6 +632,7 @@ CONFIG_I2C_ALGOBIT=y
|
||||||
#
|
#
|
||||||
# I2C Hardware Bus support
|
# I2C Hardware Bus support
|
||||||
#
|
#
|
||||||
|
# CONFIG_I2C_OCORES is not set
|
||||||
# CONFIG_I2C_PARPORT_LIGHT is not set
|
# CONFIG_I2C_PARPORT_LIGHT is not set
|
||||||
# CONFIG_I2C_STUB is not set
|
# CONFIG_I2C_STUB is not set
|
||||||
# CONFIG_I2C_PCA_ISA is not set
|
# CONFIG_I2C_PCA_ISA is not set
|
||||||
|
@ -641,13 +661,13 @@ CONFIG_I2C_DEBUG_CHIP=y
|
||||||
#
|
#
|
||||||
# Dallas's 1-wire bus
|
# Dallas's 1-wire bus
|
||||||
#
|
#
|
||||||
# CONFIG_W1 is not set
|
|
||||||
|
|
||||||
#
|
#
|
||||||
# Hardware Monitoring support
|
# Hardware Monitoring support
|
||||||
#
|
#
|
||||||
CONFIG_HWMON=y
|
CONFIG_HWMON=y
|
||||||
# CONFIG_HWMON_VID is not set
|
# CONFIG_HWMON_VID is not set
|
||||||
|
# CONFIG_SENSORS_ABITUGURU is not set
|
||||||
# CONFIG_SENSORS_ADM1021 is not set
|
# CONFIG_SENSORS_ADM1021 is not set
|
||||||
# CONFIG_SENSORS_ADM1025 is not set
|
# CONFIG_SENSORS_ADM1025 is not set
|
||||||
# CONFIG_SENSORS_ADM1026 is not set
|
# CONFIG_SENSORS_ADM1026 is not set
|
||||||
|
@ -675,8 +695,10 @@ CONFIG_HWMON=y
|
||||||
# CONFIG_SENSORS_MAX1619 is not set
|
# CONFIG_SENSORS_MAX1619 is not set
|
||||||
# CONFIG_SENSORS_PC87360 is not set
|
# CONFIG_SENSORS_PC87360 is not set
|
||||||
# CONFIG_SENSORS_SMSC47M1 is not set
|
# CONFIG_SENSORS_SMSC47M1 is not set
|
||||||
|
# CONFIG_SENSORS_SMSC47M192 is not set
|
||||||
# CONFIG_SENSORS_SMSC47B397 is not set
|
# CONFIG_SENSORS_SMSC47B397 is not set
|
||||||
# CONFIG_SENSORS_W83781D is not set
|
# CONFIG_SENSORS_W83781D is not set
|
||||||
|
# CONFIG_SENSORS_W83791D is not set
|
||||||
# CONFIG_SENSORS_W83792D is not set
|
# CONFIG_SENSORS_W83792D is not set
|
||||||
# CONFIG_SENSORS_W83L785TS is not set
|
# CONFIG_SENSORS_W83L785TS is not set
|
||||||
# CONFIG_SENSORS_W83627HF is not set
|
# CONFIG_SENSORS_W83627HF is not set
|
||||||
|
@ -704,6 +726,7 @@ CONFIG_HWMON=y
|
||||||
# Multimedia devices
|
# Multimedia devices
|
||||||
#
|
#
|
||||||
# CONFIG_VIDEO_DEV is not set
|
# CONFIG_VIDEO_DEV is not set
|
||||||
|
CONFIG_VIDEO_V4L2=y
|
||||||
|
|
||||||
#
|
#
|
||||||
# Digital Video Broadcasting Devices
|
# Digital Video Broadcasting Devices
|
||||||
|
@ -714,6 +737,7 @@ CONFIG_HWMON=y
|
||||||
#
|
#
|
||||||
# Graphics support
|
# Graphics support
|
||||||
#
|
#
|
||||||
|
# CONFIG_FIRMWARE_EDID is not set
|
||||||
# CONFIG_FB is not set
|
# CONFIG_FB is not set
|
||||||
|
|
||||||
#
|
#
|
||||||
|
@ -806,6 +830,7 @@ CONFIG_USB_SERIAL_CONSOLE=y
|
||||||
# CONFIG_USB_SERIAL_GENERIC is not set
|
# CONFIG_USB_SERIAL_GENERIC is not set
|
||||||
# CONFIG_USB_SERIAL_AIRPRIME is not set
|
# CONFIG_USB_SERIAL_AIRPRIME is not set
|
||||||
# CONFIG_USB_SERIAL_ANYDATA is not set
|
# CONFIG_USB_SERIAL_ANYDATA is not set
|
||||||
|
# CONFIG_USB_SERIAL_ARK3116 is not set
|
||||||
# CONFIG_USB_SERIAL_BELKIN is not set
|
# CONFIG_USB_SERIAL_BELKIN is not set
|
||||||
# CONFIG_USB_SERIAL_WHITEHEAT is not set
|
# CONFIG_USB_SERIAL_WHITEHEAT is not set
|
||||||
# CONFIG_USB_SERIAL_DIGI_ACCELEPORT is not set
|
# CONFIG_USB_SERIAL_DIGI_ACCELEPORT is not set
|
||||||
|
@ -833,6 +858,7 @@ CONFIG_USB_SERIAL_PL2303=y
|
||||||
# CONFIG_USB_SERIAL_TI is not set
|
# CONFIG_USB_SERIAL_TI is not set
|
||||||
# CONFIG_USB_SERIAL_CYBERJACK is not set
|
# CONFIG_USB_SERIAL_CYBERJACK is not set
|
||||||
# CONFIG_USB_SERIAL_XIRCOM is not set
|
# CONFIG_USB_SERIAL_XIRCOM is not set
|
||||||
|
# CONFIG_USB_SERIAL_OPTION is not set
|
||||||
# CONFIG_USB_SERIAL_OMNINET is not set
|
# CONFIG_USB_SERIAL_OMNINET is not set
|
||||||
|
|
||||||
#
|
#
|
||||||
|
@ -845,10 +871,12 @@ CONFIG_USB_SERIAL_PL2303=y
|
||||||
# CONFIG_USB_LEGOTOWER is not set
|
# CONFIG_USB_LEGOTOWER is not set
|
||||||
# CONFIG_USB_LCD is not set
|
# CONFIG_USB_LCD is not set
|
||||||
# CONFIG_USB_LED is not set
|
# CONFIG_USB_LED is not set
|
||||||
|
# CONFIG_USB_CY7C63 is not set
|
||||||
# CONFIG_USB_CYTHERM is not set
|
# CONFIG_USB_CYTHERM is not set
|
||||||
# CONFIG_USB_PHIDGETKIT is not set
|
# CONFIG_USB_PHIDGETKIT is not set
|
||||||
# CONFIG_USB_PHIDGETSERVO is not set
|
# CONFIG_USB_PHIDGETSERVO is not set
|
||||||
# CONFIG_USB_IDMOUSE is not set
|
# CONFIG_USB_IDMOUSE is not set
|
||||||
|
# CONFIG_USB_APPLEDISPLAY is not set
|
||||||
# CONFIG_USB_LD is not set
|
# CONFIG_USB_LD is not set
|
||||||
# CONFIG_USB_TEST is not set
|
# CONFIG_USB_TEST is not set
|
||||||
|
|
||||||
|
@ -880,17 +908,24 @@ CONFIG_RTC_HCTOSYS_DEVICE="rtc0"
|
||||||
CONFIG_RTC_INTF_SYSFS=y
|
CONFIG_RTC_INTF_SYSFS=y
|
||||||
CONFIG_RTC_INTF_PROC=y
|
CONFIG_RTC_INTF_PROC=y
|
||||||
CONFIG_RTC_INTF_DEV=y
|
CONFIG_RTC_INTF_DEV=y
|
||||||
|
# CONFIG_RTC_INTF_DEV_UIE_EMUL is not set
|
||||||
|
|
||||||
#
|
#
|
||||||
# RTC drivers
|
# RTC drivers
|
||||||
#
|
#
|
||||||
# CONFIG_RTC_DRV_X1205 is not set
|
# CONFIG_RTC_DRV_X1205 is not set
|
||||||
|
# CONFIG_RTC_DRV_DS1307 is not set
|
||||||
|
# CONFIG_RTC_DRV_DS1553 is not set
|
||||||
# CONFIG_RTC_DRV_DS1672 is not set
|
# CONFIG_RTC_DRV_DS1672 is not set
|
||||||
|
# CONFIG_RTC_DRV_DS1742 is not set
|
||||||
# CONFIG_RTC_DRV_PCF8563 is not set
|
# CONFIG_RTC_DRV_PCF8563 is not set
|
||||||
|
# CONFIG_RTC_DRV_PCF8583 is not set
|
||||||
# CONFIG_RTC_DRV_RS5C372 is not set
|
# CONFIG_RTC_DRV_RS5C372 is not set
|
||||||
CONFIG_RTC_DRV_M48T86=y
|
CONFIG_RTC_DRV_M48T86=y
|
||||||
CONFIG_RTC_DRV_EP93XX=y
|
CONFIG_RTC_DRV_EP93XX=y
|
||||||
|
# CONFIG_RTC_DRV_PL031 is not set
|
||||||
# CONFIG_RTC_DRV_TEST is not set
|
# CONFIG_RTC_DRV_TEST is not set
|
||||||
|
# CONFIG_RTC_DRV_V3020 is not set
|
||||||
|
|
||||||
#
|
#
|
||||||
# File systems
|
# File systems
|
||||||
|
@ -910,6 +945,7 @@ CONFIG_JBD=y
|
||||||
# CONFIG_MINIX_FS is not set
|
# CONFIG_MINIX_FS is not set
|
||||||
# CONFIG_ROMFS_FS is not set
|
# CONFIG_ROMFS_FS is not set
|
||||||
CONFIG_INOTIFY=y
|
CONFIG_INOTIFY=y
|
||||||
|
CONFIG_INOTIFY_USER=y
|
||||||
# CONFIG_QUOTA is not set
|
# CONFIG_QUOTA is not set
|
||||||
CONFIG_DNOTIFY=y
|
CONFIG_DNOTIFY=y
|
||||||
# CONFIG_AUTOFS_FS is not set
|
# CONFIG_AUTOFS_FS is not set
|
||||||
|
@ -957,6 +993,7 @@ CONFIG_JFFS2_FS=y
|
||||||
CONFIG_JFFS2_FS_DEBUG=0
|
CONFIG_JFFS2_FS_DEBUG=0
|
||||||
CONFIG_JFFS2_FS_WRITEBUFFER=y
|
CONFIG_JFFS2_FS_WRITEBUFFER=y
|
||||||
# CONFIG_JFFS2_SUMMARY is not set
|
# CONFIG_JFFS2_SUMMARY is not set
|
||||||
|
# CONFIG_JFFS2_FS_XATTR is not set
|
||||||
# CONFIG_JFFS2_COMPRESSION_OPTIONS is not set
|
# CONFIG_JFFS2_COMPRESSION_OPTIONS is not set
|
||||||
CONFIG_JFFS2_ZLIB=y
|
CONFIG_JFFS2_ZLIB=y
|
||||||
CONFIG_JFFS2_RTIME=y
|
CONFIG_JFFS2_RTIME=y
|
||||||
|
@ -986,6 +1023,7 @@ CONFIG_SUNRPC=y
|
||||||
# CONFIG_RPCSEC_GSS_SPKM3 is not set
|
# CONFIG_RPCSEC_GSS_SPKM3 is not set
|
||||||
# CONFIG_SMB_FS is not set
|
# CONFIG_SMB_FS is not set
|
||||||
# CONFIG_CIFS is not set
|
# CONFIG_CIFS is not set
|
||||||
|
# CONFIG_CIFS_DEBUG2 is not set
|
||||||
# CONFIG_NCP_FS is not set
|
# CONFIG_NCP_FS is not set
|
||||||
# CONFIG_CODA_FS is not set
|
# CONFIG_CODA_FS is not set
|
||||||
# CONFIG_AFS_FS is not set
|
# CONFIG_AFS_FS is not set
|
||||||
|
@ -1066,15 +1104,20 @@ CONFIG_NLS_ISO8859_1=y
|
||||||
#
|
#
|
||||||
# CONFIG_PRINTK_TIME is not set
|
# CONFIG_PRINTK_TIME is not set
|
||||||
CONFIG_MAGIC_SYSRQ=y
|
CONFIG_MAGIC_SYSRQ=y
|
||||||
|
# CONFIG_UNUSED_SYMBOLS is not set
|
||||||
CONFIG_DEBUG_KERNEL=y
|
CONFIG_DEBUG_KERNEL=y
|
||||||
CONFIG_LOG_BUF_SHIFT=14
|
CONFIG_LOG_BUF_SHIFT=14
|
||||||
CONFIG_DETECT_SOFTLOCKUP=y
|
CONFIG_DETECT_SOFTLOCKUP=y
|
||||||
# CONFIG_SCHEDSTATS is not set
|
# CONFIG_SCHEDSTATS is not set
|
||||||
CONFIG_DEBUG_SLAB=y
|
CONFIG_DEBUG_SLAB=y
|
||||||
# CONFIG_DEBUG_SLAB_LEAK is not set
|
# CONFIG_DEBUG_SLAB_LEAK is not set
|
||||||
CONFIG_DEBUG_MUTEXES=y
|
# CONFIG_DEBUG_RT_MUTEXES is not set
|
||||||
|
# CONFIG_RT_MUTEX_TESTER is not set
|
||||||
CONFIG_DEBUG_SPINLOCK=y
|
CONFIG_DEBUG_SPINLOCK=y
|
||||||
|
CONFIG_DEBUG_MUTEXES=y
|
||||||
|
# CONFIG_DEBUG_RWSEMS is not set
|
||||||
# CONFIG_DEBUG_SPINLOCK_SLEEP is not set
|
# CONFIG_DEBUG_SPINLOCK_SLEEP is not set
|
||||||
|
# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set
|
||||||
# CONFIG_DEBUG_KOBJECT is not set
|
# CONFIG_DEBUG_KOBJECT is not set
|
||||||
CONFIG_DEBUG_BUGVERBOSE=y
|
CONFIG_DEBUG_BUGVERBOSE=y
|
||||||
# CONFIG_DEBUG_INFO is not set
|
# CONFIG_DEBUG_INFO is not set
|
||||||
|
@ -1114,3 +1157,4 @@ CONFIG_CRC32=y
|
||||||
CONFIG_LIBCRC32C=y
|
CONFIG_LIBCRC32C=y
|
||||||
CONFIG_ZLIB_INFLATE=y
|
CONFIG_ZLIB_INFLATE=y
|
||||||
CONFIG_ZLIB_DEFLATE=y
|
CONFIG_ZLIB_DEFLATE=y
|
||||||
|
CONFIG_PLIST=y
|
||||||
|
|
|
@ -1,14 +1,18 @@
|
||||||
#
|
#
|
||||||
# Automatically generated make config: don't edit
|
# Automatically generated make config: don't edit
|
||||||
# Linux kernel version: 2.6.17-rc2
|
# Linux kernel version: 2.6.18-rc1
|
||||||
# Wed Apr 19 21:12:49 2006
|
# Sun Jul 9 15:28:50 2006
|
||||||
#
|
#
|
||||||
CONFIG_ARM=y
|
CONFIG_ARM=y
|
||||||
CONFIG_MMU=y
|
CONFIG_MMU=y
|
||||||
|
CONFIG_GENERIC_HARDIRQS=y
|
||||||
|
CONFIG_HARDIRQS_SW_RESEND=y
|
||||||
|
CONFIG_GENERIC_IRQ_PROBE=y
|
||||||
CONFIG_RWSEM_GENERIC_SPINLOCK=y
|
CONFIG_RWSEM_GENERIC_SPINLOCK=y
|
||||||
CONFIG_GENERIC_HWEIGHT=y
|
CONFIG_GENERIC_HWEIGHT=y
|
||||||
CONFIG_GENERIC_CALIBRATE_DELAY=y
|
CONFIG_GENERIC_CALIBRATE_DELAY=y
|
||||||
CONFIG_VECTORS_BASE=0xffff0000
|
CONFIG_VECTORS_BASE=0xffff0000
|
||||||
|
CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
|
||||||
|
|
||||||
#
|
#
|
||||||
# Code maturity level options
|
# Code maturity level options
|
||||||
|
@ -43,14 +47,15 @@ CONFIG_PRINTK=y
|
||||||
CONFIG_BUG=y
|
CONFIG_BUG=y
|
||||||
CONFIG_ELF_CORE=y
|
CONFIG_ELF_CORE=y
|
||||||
CONFIG_BASE_FULL=y
|
CONFIG_BASE_FULL=y
|
||||||
|
CONFIG_RT_MUTEXES=y
|
||||||
CONFIG_FUTEX=y
|
CONFIG_FUTEX=y
|
||||||
CONFIG_EPOLL=y
|
CONFIG_EPOLL=y
|
||||||
CONFIG_SHMEM=y
|
CONFIG_SHMEM=y
|
||||||
CONFIG_SLAB=y
|
CONFIG_SLAB=y
|
||||||
|
CONFIG_VM_EVENT_COUNTERS=y
|
||||||
# CONFIG_TINY_SHMEM is not set
|
# CONFIG_TINY_SHMEM is not set
|
||||||
CONFIG_BASE_SMALL=0
|
CONFIG_BASE_SMALL=0
|
||||||
# CONFIG_SLOB is not set
|
# CONFIG_SLOB is not set
|
||||||
CONFIG_OBSOLETE_INTERMODULE=y
|
|
||||||
|
|
||||||
#
|
#
|
||||||
# Loadable module support
|
# Loadable module support
|
||||||
|
@ -83,18 +88,26 @@ CONFIG_DEFAULT_IOSCHED="anticipatory"
|
||||||
#
|
#
|
||||||
# System Type
|
# System Type
|
||||||
#
|
#
|
||||||
|
# CONFIG_ARCH_AAEC2000 is not set
|
||||||
|
# CONFIG_ARCH_INTEGRATOR is not set
|
||||||
|
# CONFIG_ARCH_REALVIEW is not set
|
||||||
|
# CONFIG_ARCH_VERSATILE is not set
|
||||||
|
# CONFIG_ARCH_AT91 is not set
|
||||||
# CONFIG_ARCH_CLPS7500 is not set
|
# CONFIG_ARCH_CLPS7500 is not set
|
||||||
# CONFIG_ARCH_CLPS711X is not set
|
# CONFIG_ARCH_CLPS711X is not set
|
||||||
# CONFIG_ARCH_CO285 is not set
|
# CONFIG_ARCH_CO285 is not set
|
||||||
# CONFIG_ARCH_EBSA110 is not set
|
# CONFIG_ARCH_EBSA110 is not set
|
||||||
# CONFIG_ARCH_EP93XX is not set
|
# CONFIG_ARCH_EP93XX is not set
|
||||||
# CONFIG_ARCH_FOOTBRIDGE is not set
|
# CONFIG_ARCH_FOOTBRIDGE is not set
|
||||||
# CONFIG_ARCH_INTEGRATOR is not set
|
# CONFIG_ARCH_NETX is not set
|
||||||
|
# CONFIG_ARCH_H720X is not set
|
||||||
|
# CONFIG_ARCH_IMX is not set
|
||||||
# CONFIG_ARCH_IOP3XX is not set
|
# CONFIG_ARCH_IOP3XX is not set
|
||||||
# CONFIG_ARCH_IXP4XX is not set
|
# CONFIG_ARCH_IXP4XX is not set
|
||||||
CONFIG_ARCH_IXP2000=y
|
CONFIG_ARCH_IXP2000=y
|
||||||
# CONFIG_ARCH_IXP23XX is not set
|
# CONFIG_ARCH_IXP23XX is not set
|
||||||
# CONFIG_ARCH_L7200 is not set
|
# CONFIG_ARCH_L7200 is not set
|
||||||
|
# CONFIG_ARCH_PNX4008 is not set
|
||||||
# CONFIG_ARCH_PXA is not set
|
# CONFIG_ARCH_PXA is not set
|
||||||
# CONFIG_ARCH_RPC is not set
|
# CONFIG_ARCH_RPC is not set
|
||||||
# CONFIG_ARCH_SA1100 is not set
|
# CONFIG_ARCH_SA1100 is not set
|
||||||
|
@ -102,12 +115,6 @@ CONFIG_ARCH_IXP2000=y
|
||||||
# CONFIG_ARCH_SHARK is not set
|
# CONFIG_ARCH_SHARK is not set
|
||||||
# CONFIG_ARCH_LH7A40X is not set
|
# CONFIG_ARCH_LH7A40X is not set
|
||||||
# CONFIG_ARCH_OMAP is not set
|
# CONFIG_ARCH_OMAP is not set
|
||||||
# CONFIG_ARCH_VERSATILE is not set
|
|
||||||
# CONFIG_ARCH_REALVIEW is not set
|
|
||||||
# CONFIG_ARCH_IMX is not set
|
|
||||||
# CONFIG_ARCH_H720X is not set
|
|
||||||
# CONFIG_ARCH_AAEC2000 is not set
|
|
||||||
# CONFIG_ARCH_AT91RM9200 is not set
|
|
||||||
CONFIG_ARCH_SUPPORTS_BIG_ENDIAN=y
|
CONFIG_ARCH_SUPPORTS_BIG_ENDIAN=y
|
||||||
|
|
||||||
#
|
#
|
||||||
|
@ -171,6 +178,7 @@ CONFIG_FLATMEM=y
|
||||||
CONFIG_FLAT_NODE_MEM_MAP=y
|
CONFIG_FLAT_NODE_MEM_MAP=y
|
||||||
# CONFIG_SPARSEMEM_STATIC is not set
|
# CONFIG_SPARSEMEM_STATIC is not set
|
||||||
CONFIG_SPLIT_PTLOCK_CPUS=4096
|
CONFIG_SPLIT_PTLOCK_CPUS=4096
|
||||||
|
# CONFIG_RESOURCES_64BIT is not set
|
||||||
CONFIG_ALIGNMENT_TRAP=y
|
CONFIG_ALIGNMENT_TRAP=y
|
||||||
|
|
||||||
#
|
#
|
||||||
|
@ -218,6 +226,8 @@ CONFIG_NET=y
|
||||||
CONFIG_PACKET=y
|
CONFIG_PACKET=y
|
||||||
CONFIG_PACKET_MMAP=y
|
CONFIG_PACKET_MMAP=y
|
||||||
CONFIG_UNIX=y
|
CONFIG_UNIX=y
|
||||||
|
CONFIG_XFRM=y
|
||||||
|
# CONFIG_XFRM_USER is not set
|
||||||
# CONFIG_NET_KEY is not set
|
# CONFIG_NET_KEY is not set
|
||||||
CONFIG_INET=y
|
CONFIG_INET=y
|
||||||
# CONFIG_IP_MULTICAST is not set
|
# CONFIG_IP_MULTICAST is not set
|
||||||
|
@ -236,6 +246,8 @@ CONFIG_SYN_COOKIES=y
|
||||||
# CONFIG_INET_IPCOMP is not set
|
# CONFIG_INET_IPCOMP is not set
|
||||||
# CONFIG_INET_XFRM_TUNNEL is not set
|
# CONFIG_INET_XFRM_TUNNEL is not set
|
||||||
# CONFIG_INET_TUNNEL is not set
|
# CONFIG_INET_TUNNEL is not set
|
||||||
|
CONFIG_INET_XFRM_MODE_TRANSPORT=y
|
||||||
|
CONFIG_INET_XFRM_MODE_TUNNEL=y
|
||||||
CONFIG_INET_DIAG=y
|
CONFIG_INET_DIAG=y
|
||||||
CONFIG_INET_TCP_DIAG=y
|
CONFIG_INET_TCP_DIAG=y
|
||||||
# CONFIG_TCP_CONG_ADVANCED is not set
|
# CONFIG_TCP_CONG_ADVANCED is not set
|
||||||
|
@ -243,6 +255,7 @@ CONFIG_TCP_CONG_BIC=y
|
||||||
# CONFIG_IPV6 is not set
|
# CONFIG_IPV6 is not set
|
||||||
# CONFIG_INET6_XFRM_TUNNEL is not set
|
# CONFIG_INET6_XFRM_TUNNEL is not set
|
||||||
# CONFIG_INET6_TUNNEL is not set
|
# CONFIG_INET6_TUNNEL is not set
|
||||||
|
# CONFIG_NETWORK_SECMARK is not set
|
||||||
# CONFIG_NETFILTER is not set
|
# CONFIG_NETFILTER is not set
|
||||||
|
|
||||||
#
|
#
|
||||||
|
@ -297,6 +310,7 @@ CONFIG_STANDALONE=y
|
||||||
# CONFIG_PREVENT_FIRMWARE_BUILD is not set
|
# CONFIG_PREVENT_FIRMWARE_BUILD is not set
|
||||||
# CONFIG_FW_LOADER is not set
|
# CONFIG_FW_LOADER is not set
|
||||||
# CONFIG_DEBUG_DRIVER is not set
|
# CONFIG_DEBUG_DRIVER is not set
|
||||||
|
# CONFIG_SYS_HYPERVISOR is not set
|
||||||
|
|
||||||
#
|
#
|
||||||
# Connector - unified userspace <-> kernelspace linker
|
# Connector - unified userspace <-> kernelspace linker
|
||||||
|
@ -525,6 +539,7 @@ CONFIG_ENP2611_MSF_NET=y
|
||||||
# CONFIG_CHELSIO_T1 is not set
|
# CONFIG_CHELSIO_T1 is not set
|
||||||
# CONFIG_IXGB is not set
|
# CONFIG_IXGB is not set
|
||||||
# CONFIG_S2IO is not set
|
# CONFIG_S2IO is not set
|
||||||
|
# CONFIG_MYRI10GE is not set
|
||||||
|
|
||||||
#
|
#
|
||||||
# Token Ring devices
|
# Token Ring devices
|
||||||
|
@ -542,7 +557,6 @@ CONFIG_ENP2611_MSF_NET=y
|
||||||
CONFIG_WAN=y
|
CONFIG_WAN=y
|
||||||
# CONFIG_DSCC4 is not set
|
# CONFIG_DSCC4 is not set
|
||||||
# CONFIG_LANMEDIA is not set
|
# CONFIG_LANMEDIA is not set
|
||||||
# CONFIG_SYNCLINK_SYNCPPP is not set
|
|
||||||
CONFIG_HDLC=y
|
CONFIG_HDLC=y
|
||||||
CONFIG_HDLC_RAW=y
|
CONFIG_HDLC_RAW=y
|
||||||
# CONFIG_HDLC_RAW_ETH is not set
|
# CONFIG_HDLC_RAW_ETH is not set
|
||||||
|
@ -654,6 +668,7 @@ CONFIG_IXP2000_WATCHDOG=y
|
||||||
#
|
#
|
||||||
# CONFIG_PCIPCWATCHDOG is not set
|
# CONFIG_PCIPCWATCHDOG is not set
|
||||||
# CONFIG_WDTPCI is not set
|
# CONFIG_WDTPCI is not set
|
||||||
|
# CONFIG_HW_RANDOM is not set
|
||||||
# CONFIG_NVRAM is not set
|
# CONFIG_NVRAM is not set
|
||||||
# CONFIG_DTLK is not set
|
# CONFIG_DTLK is not set
|
||||||
# CONFIG_R3964 is not set
|
# CONFIG_R3964 is not set
|
||||||
|
@ -697,6 +712,7 @@ CONFIG_I2C_ALGOBIT=y
|
||||||
# CONFIG_I2C_PIIX4 is not set
|
# CONFIG_I2C_PIIX4 is not set
|
||||||
CONFIG_I2C_IXP2000=y
|
CONFIG_I2C_IXP2000=y
|
||||||
# CONFIG_I2C_NFORCE2 is not set
|
# CONFIG_I2C_NFORCE2 is not set
|
||||||
|
# CONFIG_I2C_OCORES is not set
|
||||||
# CONFIG_I2C_PARPORT_LIGHT is not set
|
# CONFIG_I2C_PARPORT_LIGHT is not set
|
||||||
# CONFIG_I2C_PROSAVAGE is not set
|
# CONFIG_I2C_PROSAVAGE is not set
|
||||||
# CONFIG_I2C_SAVAGE4 is not set
|
# CONFIG_I2C_SAVAGE4 is not set
|
||||||
|
@ -733,13 +749,13 @@ CONFIG_SENSORS_EEPROM=y
|
||||||
#
|
#
|
||||||
# Dallas's 1-wire bus
|
# Dallas's 1-wire bus
|
||||||
#
|
#
|
||||||
# CONFIG_W1 is not set
|
|
||||||
|
|
||||||
#
|
#
|
||||||
# Hardware Monitoring support
|
# Hardware Monitoring support
|
||||||
#
|
#
|
||||||
CONFIG_HWMON=y
|
CONFIG_HWMON=y
|
||||||
# CONFIG_HWMON_VID is not set
|
# CONFIG_HWMON_VID is not set
|
||||||
|
# CONFIG_SENSORS_ABITUGURU is not set
|
||||||
# CONFIG_SENSORS_ADM1021 is not set
|
# CONFIG_SENSORS_ADM1021 is not set
|
||||||
# CONFIG_SENSORS_ADM1025 is not set
|
# CONFIG_SENSORS_ADM1025 is not set
|
||||||
# CONFIG_SENSORS_ADM1026 is not set
|
# CONFIG_SENSORS_ADM1026 is not set
|
||||||
|
@ -768,10 +784,12 @@ CONFIG_HWMON=y
|
||||||
# CONFIG_SENSORS_PC87360 is not set
|
# CONFIG_SENSORS_PC87360 is not set
|
||||||
# CONFIG_SENSORS_SIS5595 is not set
|
# CONFIG_SENSORS_SIS5595 is not set
|
||||||
# CONFIG_SENSORS_SMSC47M1 is not set
|
# CONFIG_SENSORS_SMSC47M1 is not set
|
||||||
|
# CONFIG_SENSORS_SMSC47M192 is not set
|
||||||
# CONFIG_SENSORS_SMSC47B397 is not set
|
# CONFIG_SENSORS_SMSC47B397 is not set
|
||||||
# CONFIG_SENSORS_VIA686A is not set
|
# CONFIG_SENSORS_VIA686A is not set
|
||||||
# CONFIG_SENSORS_VT8231 is not set
|
# CONFIG_SENSORS_VT8231 is not set
|
||||||
# CONFIG_SENSORS_W83781D is not set
|
# CONFIG_SENSORS_W83781D is not set
|
||||||
|
# CONFIG_SENSORS_W83791D is not set
|
||||||
# CONFIG_SENSORS_W83792D is not set
|
# CONFIG_SENSORS_W83792D is not set
|
||||||
# CONFIG_SENSORS_W83L785TS is not set
|
# CONFIG_SENSORS_W83L785TS is not set
|
||||||
# CONFIG_SENSORS_W83627HF is not set
|
# CONFIG_SENSORS_W83627HF is not set
|
||||||
|
@ -799,6 +817,7 @@ CONFIG_HWMON=y
|
||||||
# Multimedia devices
|
# Multimedia devices
|
||||||
#
|
#
|
||||||
# CONFIG_VIDEO_DEV is not set
|
# CONFIG_VIDEO_DEV is not set
|
||||||
|
CONFIG_VIDEO_V4L2=y
|
||||||
|
|
||||||
#
|
#
|
||||||
# Digital Video Broadcasting Devices
|
# Digital Video Broadcasting Devices
|
||||||
|
@ -808,6 +827,7 @@ CONFIG_HWMON=y
|
||||||
#
|
#
|
||||||
# Graphics support
|
# Graphics support
|
||||||
#
|
#
|
||||||
|
# CONFIG_FIRMWARE_EDID is not set
|
||||||
# CONFIG_FB is not set
|
# CONFIG_FB is not set
|
||||||
|
|
||||||
#
|
#
|
||||||
|
@ -866,6 +886,7 @@ CONFIG_FS_POSIX_ACL=y
|
||||||
# CONFIG_MINIX_FS is not set
|
# CONFIG_MINIX_FS is not set
|
||||||
# CONFIG_ROMFS_FS is not set
|
# CONFIG_ROMFS_FS is not set
|
||||||
CONFIG_INOTIFY=y
|
CONFIG_INOTIFY=y
|
||||||
|
CONFIG_INOTIFY_USER=y
|
||||||
# CONFIG_QUOTA is not set
|
# CONFIG_QUOTA is not set
|
||||||
CONFIG_DNOTIFY=y
|
CONFIG_DNOTIFY=y
|
||||||
# CONFIG_AUTOFS_FS is not set
|
# CONFIG_AUTOFS_FS is not set
|
||||||
|
@ -910,6 +931,7 @@ CONFIG_JFFS2_FS=y
|
||||||
CONFIG_JFFS2_FS_DEBUG=0
|
CONFIG_JFFS2_FS_DEBUG=0
|
||||||
CONFIG_JFFS2_FS_WRITEBUFFER=y
|
CONFIG_JFFS2_FS_WRITEBUFFER=y
|
||||||
# CONFIG_JFFS2_SUMMARY is not set
|
# CONFIG_JFFS2_SUMMARY is not set
|
||||||
|
# CONFIG_JFFS2_FS_XATTR is not set
|
||||||
# CONFIG_JFFS2_COMPRESSION_OPTIONS is not set
|
# CONFIG_JFFS2_COMPRESSION_OPTIONS is not set
|
||||||
CONFIG_JFFS2_ZLIB=y
|
CONFIG_JFFS2_ZLIB=y
|
||||||
CONFIG_JFFS2_RTIME=y
|
CONFIG_JFFS2_RTIME=y
|
||||||
|
@ -939,6 +961,7 @@ CONFIG_SUNRPC=y
|
||||||
# CONFIG_RPCSEC_GSS_SPKM3 is not set
|
# CONFIG_RPCSEC_GSS_SPKM3 is not set
|
||||||
# CONFIG_SMB_FS is not set
|
# CONFIG_SMB_FS is not set
|
||||||
# CONFIG_CIFS is not set
|
# CONFIG_CIFS is not set
|
||||||
|
# CONFIG_CIFS_DEBUG2 is not set
|
||||||
# CONFIG_NCP_FS is not set
|
# CONFIG_NCP_FS is not set
|
||||||
# CONFIG_CODA_FS is not set
|
# CONFIG_CODA_FS is not set
|
||||||
# CONFIG_AFS_FS is not set
|
# CONFIG_AFS_FS is not set
|
||||||
|
@ -980,14 +1003,19 @@ CONFIG_MSDOS_PARTITION=y
|
||||||
#
|
#
|
||||||
# CONFIG_PRINTK_TIME is not set
|
# CONFIG_PRINTK_TIME is not set
|
||||||
CONFIG_MAGIC_SYSRQ=y
|
CONFIG_MAGIC_SYSRQ=y
|
||||||
|
# CONFIG_UNUSED_SYMBOLS is not set
|
||||||
CONFIG_DEBUG_KERNEL=y
|
CONFIG_DEBUG_KERNEL=y
|
||||||
CONFIG_LOG_BUF_SHIFT=14
|
CONFIG_LOG_BUF_SHIFT=14
|
||||||
CONFIG_DETECT_SOFTLOCKUP=y
|
CONFIG_DETECT_SOFTLOCKUP=y
|
||||||
# CONFIG_SCHEDSTATS is not set
|
# CONFIG_SCHEDSTATS is not set
|
||||||
# CONFIG_DEBUG_SLAB is not set
|
# CONFIG_DEBUG_SLAB is not set
|
||||||
CONFIG_DEBUG_MUTEXES=y
|
# CONFIG_DEBUG_RT_MUTEXES is not set
|
||||||
|
# CONFIG_RT_MUTEX_TESTER is not set
|
||||||
# CONFIG_DEBUG_SPINLOCK is not set
|
# CONFIG_DEBUG_SPINLOCK is not set
|
||||||
|
CONFIG_DEBUG_MUTEXES=y
|
||||||
|
# CONFIG_DEBUG_RWSEMS is not set
|
||||||
# CONFIG_DEBUG_SPINLOCK_SLEEP is not set
|
# CONFIG_DEBUG_SPINLOCK_SLEEP is not set
|
||||||
|
# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set
|
||||||
# CONFIG_DEBUG_KOBJECT is not set
|
# CONFIG_DEBUG_KOBJECT is not set
|
||||||
CONFIG_DEBUG_BUGVERBOSE=y
|
CONFIG_DEBUG_BUGVERBOSE=y
|
||||||
# CONFIG_DEBUG_INFO is not set
|
# CONFIG_DEBUG_INFO is not set
|
||||||
|
@ -1027,3 +1055,4 @@ CONFIG_CRC32=y
|
||||||
# CONFIG_LIBCRC32C is not set
|
# CONFIG_LIBCRC32C is not set
|
||||||
CONFIG_ZLIB_INFLATE=y
|
CONFIG_ZLIB_INFLATE=y
|
||||||
CONFIG_ZLIB_DEFLATE=y
|
CONFIG_ZLIB_DEFLATE=y
|
||||||
|
CONFIG_PLIST=y
|
||||||
|
|
|
@ -1,14 +1,18 @@
|
||||||
#
|
#
|
||||||
# Automatically generated make config: don't edit
|
# Automatically generated make config: don't edit
|
||||||
# Linux kernel version: 2.6.17-rc2
|
# Linux kernel version: 2.6.18-rc1
|
||||||
# Wed Apr 19 21:13:50 2006
|
# Sun Jul 9 14:13:35 2006
|
||||||
#
|
#
|
||||||
CONFIG_ARM=y
|
CONFIG_ARM=y
|
||||||
CONFIG_MMU=y
|
CONFIG_MMU=y
|
||||||
|
CONFIG_GENERIC_HARDIRQS=y
|
||||||
|
CONFIG_HARDIRQS_SW_RESEND=y
|
||||||
|
CONFIG_GENERIC_IRQ_PROBE=y
|
||||||
CONFIG_RWSEM_GENERIC_SPINLOCK=y
|
CONFIG_RWSEM_GENERIC_SPINLOCK=y
|
||||||
CONFIG_GENERIC_HWEIGHT=y
|
CONFIG_GENERIC_HWEIGHT=y
|
||||||
CONFIG_GENERIC_CALIBRATE_DELAY=y
|
CONFIG_GENERIC_CALIBRATE_DELAY=y
|
||||||
CONFIG_VECTORS_BASE=0xffff0000
|
CONFIG_VECTORS_BASE=0xffff0000
|
||||||
|
CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
|
||||||
|
|
||||||
#
|
#
|
||||||
# Code maturity level options
|
# Code maturity level options
|
||||||
|
@ -43,14 +47,15 @@ CONFIG_PRINTK=y
|
||||||
CONFIG_BUG=y
|
CONFIG_BUG=y
|
||||||
CONFIG_ELF_CORE=y
|
CONFIG_ELF_CORE=y
|
||||||
CONFIG_BASE_FULL=y
|
CONFIG_BASE_FULL=y
|
||||||
|
CONFIG_RT_MUTEXES=y
|
||||||
CONFIG_FUTEX=y
|
CONFIG_FUTEX=y
|
||||||
CONFIG_EPOLL=y
|
CONFIG_EPOLL=y
|
||||||
CONFIG_SHMEM=y
|
CONFIG_SHMEM=y
|
||||||
CONFIG_SLAB=y
|
CONFIG_SLAB=y
|
||||||
|
CONFIG_VM_EVENT_COUNTERS=y
|
||||||
# CONFIG_TINY_SHMEM is not set
|
# CONFIG_TINY_SHMEM is not set
|
||||||
CONFIG_BASE_SMALL=0
|
CONFIG_BASE_SMALL=0
|
||||||
# CONFIG_SLOB is not set
|
# CONFIG_SLOB is not set
|
||||||
CONFIG_OBSOLETE_INTERMODULE=y
|
|
||||||
|
|
||||||
#
|
#
|
||||||
# Loadable module support
|
# Loadable module support
|
||||||
|
@ -83,18 +88,26 @@ CONFIG_DEFAULT_IOSCHED="anticipatory"
|
||||||
#
|
#
|
||||||
# System Type
|
# System Type
|
||||||
#
|
#
|
||||||
|
# CONFIG_ARCH_AAEC2000 is not set
|
||||||
|
# CONFIG_ARCH_INTEGRATOR is not set
|
||||||
|
# CONFIG_ARCH_REALVIEW is not set
|
||||||
|
# CONFIG_ARCH_VERSATILE is not set
|
||||||
|
# CONFIG_ARCH_AT91 is not set
|
||||||
# CONFIG_ARCH_CLPS7500 is not set
|
# CONFIG_ARCH_CLPS7500 is not set
|
||||||
# CONFIG_ARCH_CLPS711X is not set
|
# CONFIG_ARCH_CLPS711X is not set
|
||||||
# CONFIG_ARCH_CO285 is not set
|
# CONFIG_ARCH_CO285 is not set
|
||||||
# CONFIG_ARCH_EBSA110 is not set
|
# CONFIG_ARCH_EBSA110 is not set
|
||||||
# CONFIG_ARCH_EP93XX is not set
|
# CONFIG_ARCH_EP93XX is not set
|
||||||
# CONFIG_ARCH_FOOTBRIDGE is not set
|
# CONFIG_ARCH_FOOTBRIDGE is not set
|
||||||
# CONFIG_ARCH_INTEGRATOR is not set
|
# CONFIG_ARCH_NETX is not set
|
||||||
|
# CONFIG_ARCH_H720X is not set
|
||||||
|
# CONFIG_ARCH_IMX is not set
|
||||||
# CONFIG_ARCH_IOP3XX is not set
|
# CONFIG_ARCH_IOP3XX is not set
|
||||||
# CONFIG_ARCH_IXP4XX is not set
|
# CONFIG_ARCH_IXP4XX is not set
|
||||||
# CONFIG_ARCH_IXP2000 is not set
|
# CONFIG_ARCH_IXP2000 is not set
|
||||||
CONFIG_ARCH_IXP23XX=y
|
CONFIG_ARCH_IXP23XX=y
|
||||||
# CONFIG_ARCH_L7200 is not set
|
# CONFIG_ARCH_L7200 is not set
|
||||||
|
# CONFIG_ARCH_PNX4008 is not set
|
||||||
# CONFIG_ARCH_PXA is not set
|
# CONFIG_ARCH_PXA is not set
|
||||||
# CONFIG_ARCH_RPC is not set
|
# CONFIG_ARCH_RPC is not set
|
||||||
# CONFIG_ARCH_SA1100 is not set
|
# CONFIG_ARCH_SA1100 is not set
|
||||||
|
@ -102,12 +115,6 @@ CONFIG_ARCH_IXP23XX=y
|
||||||
# CONFIG_ARCH_SHARK is not set
|
# CONFIG_ARCH_SHARK is not set
|
||||||
# CONFIG_ARCH_LH7A40X is not set
|
# CONFIG_ARCH_LH7A40X is not set
|
||||||
# CONFIG_ARCH_OMAP is not set
|
# CONFIG_ARCH_OMAP is not set
|
||||||
# CONFIG_ARCH_VERSATILE is not set
|
|
||||||
# CONFIG_ARCH_REALVIEW is not set
|
|
||||||
# CONFIG_ARCH_IMX is not set
|
|
||||||
# CONFIG_ARCH_H720X is not set
|
|
||||||
# CONFIG_ARCH_AAEC2000 is not set
|
|
||||||
# CONFIG_ARCH_AT91RM9200 is not set
|
|
||||||
CONFIG_ARCH_SUPPORTS_BIG_ENDIAN=y
|
CONFIG_ARCH_SUPPORTS_BIG_ENDIAN=y
|
||||||
|
|
||||||
#
|
#
|
||||||
|
@ -165,6 +172,7 @@ CONFIG_FLATMEM=y
|
||||||
CONFIG_FLAT_NODE_MEM_MAP=y
|
CONFIG_FLAT_NODE_MEM_MAP=y
|
||||||
# CONFIG_SPARSEMEM_STATIC is not set
|
# CONFIG_SPARSEMEM_STATIC is not set
|
||||||
CONFIG_SPLIT_PTLOCK_CPUS=4096
|
CONFIG_SPLIT_PTLOCK_CPUS=4096
|
||||||
|
CONFIG_RESOURCES_64BIT=y
|
||||||
CONFIG_ALIGNMENT_TRAP=y
|
CONFIG_ALIGNMENT_TRAP=y
|
||||||
|
|
||||||
#
|
#
|
||||||
|
@ -212,6 +220,8 @@ CONFIG_NET=y
|
||||||
CONFIG_PACKET=y
|
CONFIG_PACKET=y
|
||||||
CONFIG_PACKET_MMAP=y
|
CONFIG_PACKET_MMAP=y
|
||||||
CONFIG_UNIX=y
|
CONFIG_UNIX=y
|
||||||
|
CONFIG_XFRM=y
|
||||||
|
# CONFIG_XFRM_USER is not set
|
||||||
# CONFIG_NET_KEY is not set
|
# CONFIG_NET_KEY is not set
|
||||||
CONFIG_INET=y
|
CONFIG_INET=y
|
||||||
# CONFIG_IP_MULTICAST is not set
|
# CONFIG_IP_MULTICAST is not set
|
||||||
|
@ -230,6 +240,8 @@ CONFIG_SYN_COOKIES=y
|
||||||
# CONFIG_INET_IPCOMP is not set
|
# CONFIG_INET_IPCOMP is not set
|
||||||
# CONFIG_INET_XFRM_TUNNEL is not set
|
# CONFIG_INET_XFRM_TUNNEL is not set
|
||||||
# CONFIG_INET_TUNNEL is not set
|
# CONFIG_INET_TUNNEL is not set
|
||||||
|
CONFIG_INET_XFRM_MODE_TRANSPORT=y
|
||||||
|
CONFIG_INET_XFRM_MODE_TUNNEL=y
|
||||||
CONFIG_INET_DIAG=y
|
CONFIG_INET_DIAG=y
|
||||||
CONFIG_INET_TCP_DIAG=y
|
CONFIG_INET_TCP_DIAG=y
|
||||||
# CONFIG_TCP_CONG_ADVANCED is not set
|
# CONFIG_TCP_CONG_ADVANCED is not set
|
||||||
|
@ -237,6 +249,7 @@ CONFIG_TCP_CONG_BIC=y
|
||||||
# CONFIG_IPV6 is not set
|
# CONFIG_IPV6 is not set
|
||||||
# CONFIG_INET6_XFRM_TUNNEL is not set
|
# CONFIG_INET6_XFRM_TUNNEL is not set
|
||||||
# CONFIG_INET6_TUNNEL is not set
|
# CONFIG_INET6_TUNNEL is not set
|
||||||
|
# CONFIG_NETWORK_SECMARK is not set
|
||||||
# CONFIG_NETFILTER is not set
|
# CONFIG_NETFILTER is not set
|
||||||
|
|
||||||
#
|
#
|
||||||
|
@ -291,6 +304,7 @@ CONFIG_STANDALONE=y
|
||||||
# CONFIG_PREVENT_FIRMWARE_BUILD is not set
|
# CONFIG_PREVENT_FIRMWARE_BUILD is not set
|
||||||
# CONFIG_FW_LOADER is not set
|
# CONFIG_FW_LOADER is not set
|
||||||
# CONFIG_DEBUG_DRIVER is not set
|
# CONFIG_DEBUG_DRIVER is not set
|
||||||
|
# CONFIG_SYS_HYPERVISOR is not set
|
||||||
|
|
||||||
#
|
#
|
||||||
# Connector - unified userspace <-> kernelspace linker
|
# Connector - unified userspace <-> kernelspace linker
|
||||||
|
@ -520,6 +534,7 @@ CONFIG_BLK_DEV_SD=y
|
||||||
# CONFIG_MEGARAID_LEGACY is not set
|
# CONFIG_MEGARAID_LEGACY is not set
|
||||||
# CONFIG_MEGARAID_SAS is not set
|
# CONFIG_MEGARAID_SAS is not set
|
||||||
# CONFIG_SCSI_SATA is not set
|
# CONFIG_SCSI_SATA is not set
|
||||||
|
# CONFIG_SCSI_HPTIOP is not set
|
||||||
# CONFIG_SCSI_DMX3191D is not set
|
# CONFIG_SCSI_DMX3191D is not set
|
||||||
# CONFIG_SCSI_FUTURE_DOMAIN is not set
|
# CONFIG_SCSI_FUTURE_DOMAIN is not set
|
||||||
# CONFIG_SCSI_IPS is not set
|
# CONFIG_SCSI_IPS is not set
|
||||||
|
@ -641,6 +656,7 @@ CONFIG_E1000_NAPI=y
|
||||||
# CONFIG_CHELSIO_T1 is not set
|
# CONFIG_CHELSIO_T1 is not set
|
||||||
# CONFIG_IXGB is not set
|
# CONFIG_IXGB is not set
|
||||||
# CONFIG_S2IO is not set
|
# CONFIG_S2IO is not set
|
||||||
|
# CONFIG_MYRI10GE is not set
|
||||||
|
|
||||||
#
|
#
|
||||||
# Token Ring devices
|
# Token Ring devices
|
||||||
|
@ -658,7 +674,6 @@ CONFIG_E1000_NAPI=y
|
||||||
CONFIG_WAN=y
|
CONFIG_WAN=y
|
||||||
# CONFIG_DSCC4 is not set
|
# CONFIG_DSCC4 is not set
|
||||||
# CONFIG_LANMEDIA is not set
|
# CONFIG_LANMEDIA is not set
|
||||||
# CONFIG_SYNCLINK_SYNCPPP is not set
|
|
||||||
CONFIG_HDLC=y
|
CONFIG_HDLC=y
|
||||||
CONFIG_HDLC_RAW=y
|
CONFIG_HDLC_RAW=y
|
||||||
# CONFIG_HDLC_RAW_ETH is not set
|
# CONFIG_HDLC_RAW_ETH is not set
|
||||||
|
@ -775,6 +790,7 @@ CONFIG_WATCHDOG=y
|
||||||
# USB-based Watchdog Cards
|
# USB-based Watchdog Cards
|
||||||
#
|
#
|
||||||
# CONFIG_USBPCWATCHDOG is not set
|
# CONFIG_USBPCWATCHDOG is not set
|
||||||
|
# CONFIG_HW_RANDOM is not set
|
||||||
# CONFIG_NVRAM is not set
|
# CONFIG_NVRAM is not set
|
||||||
# CONFIG_DTLK is not set
|
# CONFIG_DTLK is not set
|
||||||
# CONFIG_R3964 is not set
|
# CONFIG_R3964 is not set
|
||||||
|
@ -817,6 +833,7 @@ CONFIG_I2C_ALGOBIT=y
|
||||||
# CONFIG_I2C_I810 is not set
|
# CONFIG_I2C_I810 is not set
|
||||||
# CONFIG_I2C_PIIX4 is not set
|
# CONFIG_I2C_PIIX4 is not set
|
||||||
# CONFIG_I2C_NFORCE2 is not set
|
# CONFIG_I2C_NFORCE2 is not set
|
||||||
|
# CONFIG_I2C_OCORES is not set
|
||||||
# CONFIG_I2C_PARPORT_LIGHT is not set
|
# CONFIG_I2C_PARPORT_LIGHT is not set
|
||||||
# CONFIG_I2C_PROSAVAGE is not set
|
# CONFIG_I2C_PROSAVAGE is not set
|
||||||
# CONFIG_I2C_SAVAGE4 is not set
|
# CONFIG_I2C_SAVAGE4 is not set
|
||||||
|
@ -853,13 +870,13 @@ CONFIG_SENSORS_EEPROM=y
|
||||||
#
|
#
|
||||||
# Dallas's 1-wire bus
|
# Dallas's 1-wire bus
|
||||||
#
|
#
|
||||||
# CONFIG_W1 is not set
|
|
||||||
|
|
||||||
#
|
#
|
||||||
# Hardware Monitoring support
|
# Hardware Monitoring support
|
||||||
#
|
#
|
||||||
CONFIG_HWMON=y
|
CONFIG_HWMON=y
|
||||||
# CONFIG_HWMON_VID is not set
|
# CONFIG_HWMON_VID is not set
|
||||||
|
# CONFIG_SENSORS_ABITUGURU is not set
|
||||||
# CONFIG_SENSORS_ADM1021 is not set
|
# CONFIG_SENSORS_ADM1021 is not set
|
||||||
# CONFIG_SENSORS_ADM1025 is not set
|
# CONFIG_SENSORS_ADM1025 is not set
|
||||||
# CONFIG_SENSORS_ADM1026 is not set
|
# CONFIG_SENSORS_ADM1026 is not set
|
||||||
|
@ -888,10 +905,12 @@ CONFIG_HWMON=y
|
||||||
# CONFIG_SENSORS_PC87360 is not set
|
# CONFIG_SENSORS_PC87360 is not set
|
||||||
# CONFIG_SENSORS_SIS5595 is not set
|
# CONFIG_SENSORS_SIS5595 is not set
|
||||||
# CONFIG_SENSORS_SMSC47M1 is not set
|
# CONFIG_SENSORS_SMSC47M1 is not set
|
||||||
|
# CONFIG_SENSORS_SMSC47M192 is not set
|
||||||
# CONFIG_SENSORS_SMSC47B397 is not set
|
# CONFIG_SENSORS_SMSC47B397 is not set
|
||||||
# CONFIG_SENSORS_VIA686A is not set
|
# CONFIG_SENSORS_VIA686A is not set
|
||||||
# CONFIG_SENSORS_VT8231 is not set
|
# CONFIG_SENSORS_VT8231 is not set
|
||||||
# CONFIG_SENSORS_W83781D is not set
|
# CONFIG_SENSORS_W83781D is not set
|
||||||
|
# CONFIG_SENSORS_W83791D is not set
|
||||||
# CONFIG_SENSORS_W83792D is not set
|
# CONFIG_SENSORS_W83792D is not set
|
||||||
# CONFIG_SENSORS_W83L785TS is not set
|
# CONFIG_SENSORS_W83L785TS is not set
|
||||||
# CONFIG_SENSORS_W83627HF is not set
|
# CONFIG_SENSORS_W83627HF is not set
|
||||||
|
@ -919,6 +938,7 @@ CONFIG_HWMON=y
|
||||||
# Multimedia devices
|
# Multimedia devices
|
||||||
#
|
#
|
||||||
# CONFIG_VIDEO_DEV is not set
|
# CONFIG_VIDEO_DEV is not set
|
||||||
|
CONFIG_VIDEO_V4L2=y
|
||||||
|
|
||||||
#
|
#
|
||||||
# Digital Video Broadcasting Devices
|
# Digital Video Broadcasting Devices
|
||||||
|
@ -929,6 +949,7 @@ CONFIG_HWMON=y
|
||||||
#
|
#
|
||||||
# Graphics support
|
# Graphics support
|
||||||
#
|
#
|
||||||
|
# CONFIG_FIRMWARE_EDID is not set
|
||||||
# CONFIG_FB is not set
|
# CONFIG_FB is not set
|
||||||
|
|
||||||
#
|
#
|
||||||
|
@ -959,6 +980,7 @@ CONFIG_USB=y
|
||||||
CONFIG_USB_EHCI_HCD=y
|
CONFIG_USB_EHCI_HCD=y
|
||||||
# CONFIG_USB_EHCI_SPLIT_ISO is not set
|
# CONFIG_USB_EHCI_SPLIT_ISO is not set
|
||||||
# CONFIG_USB_EHCI_ROOT_HUB_TT is not set
|
# CONFIG_USB_EHCI_ROOT_HUB_TT is not set
|
||||||
|
# CONFIG_USB_EHCI_TT_NEWSCHED is not set
|
||||||
# CONFIG_USB_ISP116X_HCD is not set
|
# CONFIG_USB_ISP116X_HCD is not set
|
||||||
CONFIG_USB_OHCI_HCD=y
|
CONFIG_USB_OHCI_HCD=y
|
||||||
# CONFIG_USB_OHCI_BIG_ENDIAN is not set
|
# CONFIG_USB_OHCI_BIG_ENDIAN is not set
|
||||||
|
@ -1050,10 +1072,12 @@ CONFIG_USB_MON=y
|
||||||
# CONFIG_USB_LEGOTOWER is not set
|
# CONFIG_USB_LEGOTOWER is not set
|
||||||
# CONFIG_USB_LCD is not set
|
# CONFIG_USB_LCD is not set
|
||||||
# CONFIG_USB_LED is not set
|
# CONFIG_USB_LED is not set
|
||||||
|
# CONFIG_USB_CY7C63 is not set
|
||||||
# CONFIG_USB_CYTHERM is not set
|
# CONFIG_USB_CYTHERM is not set
|
||||||
# CONFIG_USB_PHIDGETKIT is not set
|
# CONFIG_USB_PHIDGETKIT is not set
|
||||||
# CONFIG_USB_PHIDGETSERVO is not set
|
# CONFIG_USB_PHIDGETSERVO is not set
|
||||||
# CONFIG_USB_IDMOUSE is not set
|
# CONFIG_USB_IDMOUSE is not set
|
||||||
|
# CONFIG_USB_APPLEDISPLAY is not set
|
||||||
# CONFIG_USB_SISUSBVGA is not set
|
# CONFIG_USB_SISUSBVGA is not set
|
||||||
# CONFIG_USB_LD is not set
|
# CONFIG_USB_LD is not set
|
||||||
|
|
||||||
|
@ -1100,6 +1124,7 @@ CONFIG_FS_POSIX_ACL=y
|
||||||
# CONFIG_MINIX_FS is not set
|
# CONFIG_MINIX_FS is not set
|
||||||
# CONFIG_ROMFS_FS is not set
|
# CONFIG_ROMFS_FS is not set
|
||||||
CONFIG_INOTIFY=y
|
CONFIG_INOTIFY=y
|
||||||
|
CONFIG_INOTIFY_USER=y
|
||||||
# CONFIG_QUOTA is not set
|
# CONFIG_QUOTA is not set
|
||||||
CONFIG_DNOTIFY=y
|
CONFIG_DNOTIFY=y
|
||||||
# CONFIG_AUTOFS_FS is not set
|
# CONFIG_AUTOFS_FS is not set
|
||||||
|
@ -1146,6 +1171,7 @@ CONFIG_JFFS2_FS=y
|
||||||
CONFIG_JFFS2_FS_DEBUG=0
|
CONFIG_JFFS2_FS_DEBUG=0
|
||||||
CONFIG_JFFS2_FS_WRITEBUFFER=y
|
CONFIG_JFFS2_FS_WRITEBUFFER=y
|
||||||
# CONFIG_JFFS2_SUMMARY is not set
|
# CONFIG_JFFS2_SUMMARY is not set
|
||||||
|
# CONFIG_JFFS2_FS_XATTR is not set
|
||||||
# CONFIG_JFFS2_COMPRESSION_OPTIONS is not set
|
# CONFIG_JFFS2_COMPRESSION_OPTIONS is not set
|
||||||
CONFIG_JFFS2_ZLIB=y
|
CONFIG_JFFS2_ZLIB=y
|
||||||
CONFIG_JFFS2_RTIME=y
|
CONFIG_JFFS2_RTIME=y
|
||||||
|
@ -1175,6 +1201,7 @@ CONFIG_SUNRPC=y
|
||||||
# CONFIG_RPCSEC_GSS_SPKM3 is not set
|
# CONFIG_RPCSEC_GSS_SPKM3 is not set
|
||||||
# CONFIG_SMB_FS is not set
|
# CONFIG_SMB_FS is not set
|
||||||
# CONFIG_CIFS is not set
|
# CONFIG_CIFS is not set
|
||||||
|
# CONFIG_CIFS_DEBUG2 is not set
|
||||||
# CONFIG_NCP_FS is not set
|
# CONFIG_NCP_FS is not set
|
||||||
# CONFIG_CODA_FS is not set
|
# CONFIG_CODA_FS is not set
|
||||||
# CONFIG_AFS_FS is not set
|
# CONFIG_AFS_FS is not set
|
||||||
|
@ -1255,14 +1282,19 @@ CONFIG_NLS_CODEPAGE_437=y
|
||||||
#
|
#
|
||||||
# CONFIG_PRINTK_TIME is not set
|
# CONFIG_PRINTK_TIME is not set
|
||||||
CONFIG_MAGIC_SYSRQ=y
|
CONFIG_MAGIC_SYSRQ=y
|
||||||
|
# CONFIG_UNUSED_SYMBOLS is not set
|
||||||
CONFIG_DEBUG_KERNEL=y
|
CONFIG_DEBUG_KERNEL=y
|
||||||
CONFIG_LOG_BUF_SHIFT=14
|
CONFIG_LOG_BUF_SHIFT=14
|
||||||
CONFIG_DETECT_SOFTLOCKUP=y
|
CONFIG_DETECT_SOFTLOCKUP=y
|
||||||
# CONFIG_SCHEDSTATS is not set
|
# CONFIG_SCHEDSTATS is not set
|
||||||
# CONFIG_DEBUG_SLAB is not set
|
# CONFIG_DEBUG_SLAB is not set
|
||||||
CONFIG_DEBUG_MUTEXES=y
|
# CONFIG_DEBUG_RT_MUTEXES is not set
|
||||||
|
# CONFIG_RT_MUTEX_TESTER is not set
|
||||||
# CONFIG_DEBUG_SPINLOCK is not set
|
# CONFIG_DEBUG_SPINLOCK is not set
|
||||||
|
CONFIG_DEBUG_MUTEXES=y
|
||||||
|
# CONFIG_DEBUG_RWSEMS is not set
|
||||||
# CONFIG_DEBUG_SPINLOCK_SLEEP is not set
|
# CONFIG_DEBUG_SPINLOCK_SLEEP is not set
|
||||||
|
# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set
|
||||||
# CONFIG_DEBUG_KOBJECT is not set
|
# CONFIG_DEBUG_KOBJECT is not set
|
||||||
CONFIG_DEBUG_BUGVERBOSE=y
|
CONFIG_DEBUG_BUGVERBOSE=y
|
||||||
# CONFIG_DEBUG_INFO is not set
|
# CONFIG_DEBUG_INFO is not set
|
||||||
|
@ -1302,3 +1334,4 @@ CONFIG_CRC32=y
|
||||||
# CONFIG_LIBCRC32C is not set
|
# CONFIG_LIBCRC32C is not set
|
||||||
CONFIG_ZLIB_INFLATE=y
|
CONFIG_ZLIB_INFLATE=y
|
||||||
CONFIG_ZLIB_DEFLATE=y
|
CONFIG_ZLIB_DEFLATE=y
|
||||||
|
CONFIG_PLIST=y
|
||||||
|
|
|
@ -1,15 +1,19 @@
|
||||||
#
|
#
|
||||||
# Automatically generated make config: don't edit
|
# Automatically generated make config: don't edit
|
||||||
# Linux kernel version: 2.6.17-git2
|
# Linux kernel version: 2.6.18-rc1
|
||||||
# Wed Jun 21 22:20:18 2006
|
# Sun Jul 9 14:15:23 2006
|
||||||
#
|
#
|
||||||
CONFIG_ARM=y
|
CONFIG_ARM=y
|
||||||
CONFIG_MMU=y
|
CONFIG_MMU=y
|
||||||
|
CONFIG_GENERIC_HARDIRQS=y
|
||||||
|
CONFIG_HARDIRQS_SW_RESEND=y
|
||||||
|
CONFIG_GENERIC_IRQ_PROBE=y
|
||||||
CONFIG_RWSEM_GENERIC_SPINLOCK=y
|
CONFIG_RWSEM_GENERIC_SPINLOCK=y
|
||||||
CONFIG_GENERIC_HWEIGHT=y
|
CONFIG_GENERIC_HWEIGHT=y
|
||||||
CONFIG_GENERIC_CALIBRATE_DELAY=y
|
CONFIG_GENERIC_CALIBRATE_DELAY=y
|
||||||
CONFIG_ARCH_MTD_XIP=y
|
CONFIG_ARCH_MTD_XIP=y
|
||||||
CONFIG_VECTORS_BASE=0xffff0000
|
CONFIG_VECTORS_BASE=0xffff0000
|
||||||
|
CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
|
||||||
|
|
||||||
#
|
#
|
||||||
# Code maturity level options
|
# Code maturity level options
|
||||||
|
@ -43,10 +47,12 @@ CONFIG_PRINTK=y
|
||||||
CONFIG_BUG=y
|
CONFIG_BUG=y
|
||||||
CONFIG_ELF_CORE=y
|
CONFIG_ELF_CORE=y
|
||||||
CONFIG_BASE_FULL=y
|
CONFIG_BASE_FULL=y
|
||||||
|
CONFIG_RT_MUTEXES=y
|
||||||
CONFIG_FUTEX=y
|
CONFIG_FUTEX=y
|
||||||
CONFIG_EPOLL=y
|
CONFIG_EPOLL=y
|
||||||
CONFIG_SHMEM=y
|
CONFIG_SHMEM=y
|
||||||
CONFIG_SLAB=y
|
CONFIG_SLAB=y
|
||||||
|
CONFIG_VM_EVENT_COUNTERS=y
|
||||||
# CONFIG_TINY_SHMEM is not set
|
# CONFIG_TINY_SHMEM is not set
|
||||||
CONFIG_BASE_SMALL=0
|
CONFIG_BASE_SMALL=0
|
||||||
# CONFIG_SLOB is not set
|
# CONFIG_SLOB is not set
|
||||||
|
@ -85,7 +91,7 @@ CONFIG_DEFAULT_IOSCHED="anticipatory"
|
||||||
# CONFIG_ARCH_INTEGRATOR is not set
|
# CONFIG_ARCH_INTEGRATOR is not set
|
||||||
# CONFIG_ARCH_REALVIEW is not set
|
# CONFIG_ARCH_REALVIEW is not set
|
||||||
# CONFIG_ARCH_VERSATILE is not set
|
# CONFIG_ARCH_VERSATILE is not set
|
||||||
# CONFIG_ARCH_AT91RM9200 is not set
|
# CONFIG_ARCH_AT91 is not set
|
||||||
# CONFIG_ARCH_CLPS7500 is not set
|
# CONFIG_ARCH_CLPS7500 is not set
|
||||||
# CONFIG_ARCH_CLPS711X is not set
|
# CONFIG_ARCH_CLPS711X is not set
|
||||||
# CONFIG_ARCH_CO285 is not set
|
# CONFIG_ARCH_CO285 is not set
|
||||||
|
@ -117,6 +123,7 @@ CONFIG_MACH_LOGICPD_PXA270=y
|
||||||
# CONFIG_MACH_MAINSTONE is not set
|
# CONFIG_MACH_MAINSTONE is not set
|
||||||
# CONFIG_ARCH_PXA_IDP is not set
|
# CONFIG_ARCH_PXA_IDP is not set
|
||||||
# CONFIG_PXA_SHARPSL is not set
|
# CONFIG_PXA_SHARPSL is not set
|
||||||
|
# CONFIG_MACH_TRIZEPS4 is not set
|
||||||
CONFIG_PXA27x=y
|
CONFIG_PXA27x=y
|
||||||
CONFIG_IWMMXT=y
|
CONFIG_IWMMXT=y
|
||||||
|
|
||||||
|
@ -161,6 +168,7 @@ CONFIG_FLATMEM=y
|
||||||
CONFIG_FLAT_NODE_MEM_MAP=y
|
CONFIG_FLAT_NODE_MEM_MAP=y
|
||||||
# CONFIG_SPARSEMEM_STATIC is not set
|
# CONFIG_SPARSEMEM_STATIC is not set
|
||||||
CONFIG_SPLIT_PTLOCK_CPUS=4096
|
CONFIG_SPLIT_PTLOCK_CPUS=4096
|
||||||
|
# CONFIG_RESOURCES_64BIT is not set
|
||||||
CONFIG_ALIGNMENT_TRAP=y
|
CONFIG_ALIGNMENT_TRAP=y
|
||||||
|
|
||||||
#
|
#
|
||||||
|
@ -194,8 +202,6 @@ CONFIG_BINFMT_ELF=y
|
||||||
# Power management options
|
# Power management options
|
||||||
#
|
#
|
||||||
# CONFIG_PM is not set
|
# CONFIG_PM is not set
|
||||||
# CONFIG_PM_LEGACY is not set
|
|
||||||
# CONFIG_PM_DEBUG is not set
|
|
||||||
# CONFIG_APM is not set
|
# CONFIG_APM is not set
|
||||||
|
|
||||||
#
|
#
|
||||||
|
@ -293,6 +299,7 @@ CONFIG_STANDALONE=y
|
||||||
CONFIG_PREVENT_FIRMWARE_BUILD=y
|
CONFIG_PREVENT_FIRMWARE_BUILD=y
|
||||||
# CONFIG_FW_LOADER is not set
|
# CONFIG_FW_LOADER is not set
|
||||||
# CONFIG_DEBUG_DRIVER is not set
|
# CONFIG_DEBUG_DRIVER is not set
|
||||||
|
# CONFIG_SYS_HYPERVISOR is not set
|
||||||
|
|
||||||
#
|
#
|
||||||
# Connector - unified userspace <-> kernelspace linker
|
# Connector - unified userspace <-> kernelspace linker
|
||||||
|
@ -561,6 +568,7 @@ CONFIG_SERIO_LIBPS2=y
|
||||||
CONFIG_VT=y
|
CONFIG_VT=y
|
||||||
CONFIG_VT_CONSOLE=y
|
CONFIG_VT_CONSOLE=y
|
||||||
CONFIG_HW_CONSOLE=y
|
CONFIG_HW_CONSOLE=y
|
||||||
|
# CONFIG_VT_HW_CONSOLE_BINDING is not set
|
||||||
# CONFIG_SERIAL_NONSTANDARD is not set
|
# CONFIG_SERIAL_NONSTANDARD is not set
|
||||||
|
|
||||||
#
|
#
|
||||||
|
@ -588,6 +596,7 @@ CONFIG_LEGACY_PTY_COUNT=256
|
||||||
# Watchdog Cards
|
# Watchdog Cards
|
||||||
#
|
#
|
||||||
# CONFIG_WATCHDOG is not set
|
# CONFIG_WATCHDOG is not set
|
||||||
|
# CONFIG_HW_RANDOM is not set
|
||||||
# CONFIG_NVRAM is not set
|
# CONFIG_NVRAM is not set
|
||||||
# CONFIG_DTLK is not set
|
# CONFIG_DTLK is not set
|
||||||
# CONFIG_R3964 is not set
|
# CONFIG_R3964 is not set
|
||||||
|
@ -617,13 +626,13 @@ CONFIG_LEGACY_PTY_COUNT=256
|
||||||
#
|
#
|
||||||
# Dallas's 1-wire bus
|
# Dallas's 1-wire bus
|
||||||
#
|
#
|
||||||
# CONFIG_W1 is not set
|
|
||||||
|
|
||||||
#
|
#
|
||||||
# Hardware Monitoring support
|
# Hardware Monitoring support
|
||||||
#
|
#
|
||||||
CONFIG_HWMON=y
|
CONFIG_HWMON=y
|
||||||
# CONFIG_HWMON_VID is not set
|
# CONFIG_HWMON_VID is not set
|
||||||
|
# CONFIG_SENSORS_ABITUGURU is not set
|
||||||
# CONFIG_SENSORS_F71805F is not set
|
# CONFIG_SENSORS_F71805F is not set
|
||||||
# CONFIG_HWMON_DEBUG_CHIP is not set
|
# CONFIG_HWMON_DEBUG_CHIP is not set
|
||||||
|
|
||||||
|
@ -658,12 +667,13 @@ CONFIG_VIDEO_V4L2=y
|
||||||
#
|
#
|
||||||
# Graphics support
|
# Graphics support
|
||||||
#
|
#
|
||||||
|
# CONFIG_FIRMWARE_EDID is not set
|
||||||
CONFIG_FB=y
|
CONFIG_FB=y
|
||||||
CONFIG_FB_CFB_FILLRECT=y
|
CONFIG_FB_CFB_FILLRECT=y
|
||||||
CONFIG_FB_CFB_COPYAREA=y
|
CONFIG_FB_CFB_COPYAREA=y
|
||||||
CONFIG_FB_CFB_IMAGEBLIT=y
|
CONFIG_FB_CFB_IMAGEBLIT=y
|
||||||
# CONFIG_FB_MACMODES is not set
|
# CONFIG_FB_MACMODES is not set
|
||||||
CONFIG_FB_FIRMWARE_EDID=y
|
# CONFIG_FB_BACKLIGHT is not set
|
||||||
# CONFIG_FB_MODE_HELPERS is not set
|
# CONFIG_FB_MODE_HELPERS is not set
|
||||||
# CONFIG_FB_TILEBLITTING is not set
|
# CONFIG_FB_TILEBLITTING is not set
|
||||||
# CONFIG_FB_S1D13XXX is not set
|
# CONFIG_FB_S1D13XXX is not set
|
||||||
|
@ -822,6 +832,7 @@ CONFIG_JFFS2_FS=y
|
||||||
CONFIG_JFFS2_FS_DEBUG=0
|
CONFIG_JFFS2_FS_DEBUG=0
|
||||||
CONFIG_JFFS2_FS_WRITEBUFFER=y
|
CONFIG_JFFS2_FS_WRITEBUFFER=y
|
||||||
# CONFIG_JFFS2_SUMMARY is not set
|
# CONFIG_JFFS2_SUMMARY is not set
|
||||||
|
# CONFIG_JFFS2_FS_XATTR is not set
|
||||||
# CONFIG_JFFS2_COMPRESSION_OPTIONS is not set
|
# CONFIG_JFFS2_COMPRESSION_OPTIONS is not set
|
||||||
CONFIG_JFFS2_ZLIB=y
|
CONFIG_JFFS2_ZLIB=y
|
||||||
CONFIG_JFFS2_RTIME=y
|
CONFIG_JFFS2_RTIME=y
|
||||||
|
@ -849,6 +860,7 @@ CONFIG_SUNRPC=y
|
||||||
# CONFIG_RPCSEC_GSS_SPKM3 is not set
|
# CONFIG_RPCSEC_GSS_SPKM3 is not set
|
||||||
# CONFIG_SMB_FS is not set
|
# CONFIG_SMB_FS is not set
|
||||||
# CONFIG_CIFS is not set
|
# CONFIG_CIFS is not set
|
||||||
|
# CONFIG_CIFS_DEBUG2 is not set
|
||||||
# CONFIG_NCP_FS is not set
|
# CONFIG_NCP_FS is not set
|
||||||
# CONFIG_CODA_FS is not set
|
# CONFIG_CODA_FS is not set
|
||||||
# CONFIG_AFS_FS is not set
|
# CONFIG_AFS_FS is not set
|
||||||
|
@ -914,14 +926,19 @@ CONFIG_NLS_ISO8859_1=y
|
||||||
#
|
#
|
||||||
# CONFIG_PRINTK_TIME is not set
|
# CONFIG_PRINTK_TIME is not set
|
||||||
CONFIG_MAGIC_SYSRQ=y
|
CONFIG_MAGIC_SYSRQ=y
|
||||||
|
# CONFIG_UNUSED_SYMBOLS is not set
|
||||||
CONFIG_DEBUG_KERNEL=y
|
CONFIG_DEBUG_KERNEL=y
|
||||||
CONFIG_LOG_BUF_SHIFT=14
|
CONFIG_LOG_BUF_SHIFT=14
|
||||||
CONFIG_DETECT_SOFTLOCKUP=y
|
CONFIG_DETECT_SOFTLOCKUP=y
|
||||||
# CONFIG_SCHEDSTATS is not set
|
# CONFIG_SCHEDSTATS is not set
|
||||||
# CONFIG_DEBUG_SLAB is not set
|
# CONFIG_DEBUG_SLAB is not set
|
||||||
# CONFIG_DEBUG_MUTEXES is not set
|
# CONFIG_DEBUG_RT_MUTEXES is not set
|
||||||
|
# CONFIG_RT_MUTEX_TESTER is not set
|
||||||
# CONFIG_DEBUG_SPINLOCK is not set
|
# CONFIG_DEBUG_SPINLOCK is not set
|
||||||
|
# CONFIG_DEBUG_MUTEXES is not set
|
||||||
|
# CONFIG_DEBUG_RWSEMS is not set
|
||||||
# CONFIG_DEBUG_SPINLOCK_SLEEP is not set
|
# CONFIG_DEBUG_SPINLOCK_SLEEP is not set
|
||||||
|
# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set
|
||||||
# CONFIG_DEBUG_KOBJECT is not set
|
# CONFIG_DEBUG_KOBJECT is not set
|
||||||
CONFIG_DEBUG_BUGVERBOSE=y
|
CONFIG_DEBUG_BUGVERBOSE=y
|
||||||
CONFIG_DEBUG_INFO=y
|
CONFIG_DEBUG_INFO=y
|
||||||
|
@ -961,3 +978,4 @@ CONFIG_CRC32=y
|
||||||
# CONFIG_LIBCRC32C is not set
|
# CONFIG_LIBCRC32C is not set
|
||||||
CONFIG_ZLIB_INFLATE=y
|
CONFIG_ZLIB_INFLATE=y
|
||||||
CONFIG_ZLIB_DEFLATE=y
|
CONFIG_ZLIB_DEFLATE=y
|
||||||
|
CONFIG_PLIST=y
|
||||||
|
|
|
@ -1,14 +1,18 @@
|
||||||
#
|
#
|
||||||
# Automatically generated make config: don't edit
|
# Automatically generated make config: don't edit
|
||||||
# Linux kernel version: 2.6.17-git10
|
# Linux kernel version: 2.6.18-rc1
|
||||||
# Mon Jun 26 13:45:44 2006
|
# Sun Jul 9 14:16:20 2006
|
||||||
#
|
#
|
||||||
CONFIG_ARM=y
|
CONFIG_ARM=y
|
||||||
CONFIG_MMU=y
|
CONFIG_MMU=y
|
||||||
|
CONFIG_GENERIC_HARDIRQS=y
|
||||||
|
CONFIG_HARDIRQS_SW_RESEND=y
|
||||||
|
CONFIG_GENERIC_IRQ_PROBE=y
|
||||||
CONFIG_RWSEM_GENERIC_SPINLOCK=y
|
CONFIG_RWSEM_GENERIC_SPINLOCK=y
|
||||||
CONFIG_GENERIC_HWEIGHT=y
|
CONFIG_GENERIC_HWEIGHT=y
|
||||||
CONFIG_GENERIC_CALIBRATE_DELAY=y
|
CONFIG_GENERIC_CALIBRATE_DELAY=y
|
||||||
CONFIG_VECTORS_BASE=0xffff0000
|
CONFIG_VECTORS_BASE=0xffff0000
|
||||||
|
CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
|
||||||
|
|
||||||
#
|
#
|
||||||
# Code maturity level options
|
# Code maturity level options
|
||||||
|
@ -42,10 +46,12 @@ CONFIG_PRINTK=y
|
||||||
CONFIG_BUG=y
|
CONFIG_BUG=y
|
||||||
CONFIG_ELF_CORE=y
|
CONFIG_ELF_CORE=y
|
||||||
CONFIG_BASE_FULL=y
|
CONFIG_BASE_FULL=y
|
||||||
|
CONFIG_RT_MUTEXES=y
|
||||||
CONFIG_FUTEX=y
|
CONFIG_FUTEX=y
|
||||||
CONFIG_EPOLL=y
|
CONFIG_EPOLL=y
|
||||||
CONFIG_SHMEM=y
|
CONFIG_SHMEM=y
|
||||||
CONFIG_SLAB=y
|
CONFIG_SLAB=y
|
||||||
|
CONFIG_VM_EVENT_COUNTERS=y
|
||||||
# CONFIG_TINY_SHMEM is not set
|
# CONFIG_TINY_SHMEM is not set
|
||||||
CONFIG_BASE_SMALL=0
|
CONFIG_BASE_SMALL=0
|
||||||
# CONFIG_SLOB is not set
|
# CONFIG_SLOB is not set
|
||||||
|
@ -86,7 +92,6 @@ CONFIG_DEFAULT_IOSCHED="anticipatory"
|
||||||
# CONFIG_ARCH_REALVIEW is not set
|
# CONFIG_ARCH_REALVIEW is not set
|
||||||
# CONFIG_ARCH_VERSATILE is not set
|
# CONFIG_ARCH_VERSATILE is not set
|
||||||
CONFIG_ARCH_AT91=y
|
CONFIG_ARCH_AT91=y
|
||||||
CONFIG_ARCH_AT91RM9200=y
|
|
||||||
# CONFIG_ARCH_CLPS7500 is not set
|
# CONFIG_ARCH_CLPS7500 is not set
|
||||||
# CONFIG_ARCH_CLPS711X is not set
|
# CONFIG_ARCH_CLPS711X is not set
|
||||||
# CONFIG_ARCH_CO285 is not set
|
# CONFIG_ARCH_CO285 is not set
|
||||||
|
@ -111,9 +116,16 @@ CONFIG_ARCH_AT91RM9200=y
|
||||||
# CONFIG_ARCH_OMAP is not set
|
# CONFIG_ARCH_OMAP is not set
|
||||||
|
|
||||||
#
|
#
|
||||||
# AT91RM9200 Implementations
|
# Atmel AT91 System-on-Chip
|
||||||
#
|
#
|
||||||
|
|
||||||
|
#
|
||||||
|
# Atmel AT91 Processors
|
||||||
|
#
|
||||||
|
CONFIG_ARCH_AT91RM9200=y
|
||||||
|
# CONFIG_ARCH_AT91SAM9260 is not set
|
||||||
|
# CONFIG_ARCH_AT91SAM9261 is not set
|
||||||
|
|
||||||
#
|
#
|
||||||
# AT91RM9200 Board Type
|
# AT91RM9200 Board Type
|
||||||
#
|
#
|
||||||
|
@ -123,12 +135,12 @@ CONFIG_MACH_ONEARM=y
|
||||||
# CONFIG_MACH_CSB337 is not set
|
# CONFIG_MACH_CSB337 is not set
|
||||||
# CONFIG_MACH_CSB637 is not set
|
# CONFIG_MACH_CSB637 is not set
|
||||||
# CONFIG_MACH_CARMEVA is not set
|
# CONFIG_MACH_CARMEVA is not set
|
||||||
# CONFIG_MACH_KB9200 is not set
|
|
||||||
# CONFIG_MACH_ATEB9200 is not set
|
# CONFIG_MACH_ATEB9200 is not set
|
||||||
|
# CONFIG_MACH_KB9200 is not set
|
||||||
# CONFIG_MACH_KAFA is not set
|
# CONFIG_MACH_KAFA is not set
|
||||||
|
|
||||||
#
|
#
|
||||||
# AT91RM9200 Feature Selections
|
# AT91 Feature Selections
|
||||||
#
|
#
|
||||||
CONFIG_AT91_PROGRAMMABLE_CLOCKS=y
|
CONFIG_AT91_PROGRAMMABLE_CLOCKS=y
|
||||||
|
|
||||||
|
@ -186,6 +198,7 @@ CONFIG_FLATMEM=y
|
||||||
CONFIG_FLAT_NODE_MEM_MAP=y
|
CONFIG_FLAT_NODE_MEM_MAP=y
|
||||||
# CONFIG_SPARSEMEM_STATIC is not set
|
# CONFIG_SPARSEMEM_STATIC is not set
|
||||||
CONFIG_SPLIT_PTLOCK_CPUS=4096
|
CONFIG_SPLIT_PTLOCK_CPUS=4096
|
||||||
|
# CONFIG_RESOURCES_64BIT is not set
|
||||||
CONFIG_LEDS=y
|
CONFIG_LEDS=y
|
||||||
CONFIG_LEDS_TIMER=y
|
CONFIG_LEDS_TIMER=y
|
||||||
# CONFIG_LEDS_CPU is not set
|
# CONFIG_LEDS_CPU is not set
|
||||||
|
@ -600,6 +613,7 @@ CONFIG_AT91_WATCHDOG=y
|
||||||
# USB-based Watchdog Cards
|
# USB-based Watchdog Cards
|
||||||
#
|
#
|
||||||
# CONFIG_USBPCWATCHDOG is not set
|
# CONFIG_USBPCWATCHDOG is not set
|
||||||
|
# CONFIG_HW_RANDOM is not set
|
||||||
# CONFIG_NVRAM is not set
|
# CONFIG_NVRAM is not set
|
||||||
# CONFIG_DTLK is not set
|
# CONFIG_DTLK is not set
|
||||||
# CONFIG_R3964 is not set
|
# CONFIG_R3964 is not set
|
||||||
|
@ -743,6 +757,7 @@ CONFIG_VIDEO_V4L2=y
|
||||||
#
|
#
|
||||||
# Graphics support
|
# Graphics support
|
||||||
#
|
#
|
||||||
|
# CONFIG_FIRMWARE_EDID is not set
|
||||||
# CONFIG_FB is not set
|
# CONFIG_FB is not set
|
||||||
|
|
||||||
#
|
#
|
||||||
|
@ -980,6 +995,7 @@ CONFIG_SUNRPC=y
|
||||||
# CONFIG_RPCSEC_GSS_SPKM3 is not set
|
# CONFIG_RPCSEC_GSS_SPKM3 is not set
|
||||||
# CONFIG_SMB_FS is not set
|
# CONFIG_SMB_FS is not set
|
||||||
# CONFIG_CIFS is not set
|
# CONFIG_CIFS is not set
|
||||||
|
# CONFIG_CIFS_DEBUG2 is not set
|
||||||
# CONFIG_NCP_FS is not set
|
# CONFIG_NCP_FS is not set
|
||||||
# CONFIG_CODA_FS is not set
|
# CONFIG_CODA_FS is not set
|
||||||
# CONFIG_AFS_FS is not set
|
# CONFIG_AFS_FS is not set
|
||||||
|
@ -1006,14 +1022,19 @@ CONFIG_MSDOS_PARTITION=y
|
||||||
#
|
#
|
||||||
# CONFIG_PRINTK_TIME is not set
|
# CONFIG_PRINTK_TIME is not set
|
||||||
# CONFIG_MAGIC_SYSRQ is not set
|
# CONFIG_MAGIC_SYSRQ is not set
|
||||||
|
# CONFIG_UNUSED_SYMBOLS is not set
|
||||||
CONFIG_DEBUG_KERNEL=y
|
CONFIG_DEBUG_KERNEL=y
|
||||||
CONFIG_LOG_BUF_SHIFT=14
|
CONFIG_LOG_BUF_SHIFT=14
|
||||||
CONFIG_DETECT_SOFTLOCKUP=y
|
CONFIG_DETECT_SOFTLOCKUP=y
|
||||||
# CONFIG_SCHEDSTATS is not set
|
# CONFIG_SCHEDSTATS is not set
|
||||||
# CONFIG_DEBUG_SLAB is not set
|
# CONFIG_DEBUG_SLAB is not set
|
||||||
# CONFIG_DEBUG_MUTEXES is not set
|
# CONFIG_DEBUG_RT_MUTEXES is not set
|
||||||
|
# CONFIG_RT_MUTEX_TESTER is not set
|
||||||
# CONFIG_DEBUG_SPINLOCK is not set
|
# CONFIG_DEBUG_SPINLOCK is not set
|
||||||
|
# CONFIG_DEBUG_MUTEXES is not set
|
||||||
|
# CONFIG_DEBUG_RWSEMS is not set
|
||||||
# CONFIG_DEBUG_SPINLOCK_SLEEP is not set
|
# CONFIG_DEBUG_SPINLOCK_SLEEP is not set
|
||||||
|
# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set
|
||||||
# CONFIG_DEBUG_KOBJECT is not set
|
# CONFIG_DEBUG_KOBJECT is not set
|
||||||
CONFIG_DEBUG_BUGVERBOSE=y
|
CONFIG_DEBUG_BUGVERBOSE=y
|
||||||
# CONFIG_DEBUG_INFO is not set
|
# CONFIG_DEBUG_INFO is not set
|
||||||
|
@ -1052,3 +1073,4 @@ CONFIG_DEBUG_LL=y
|
||||||
CONFIG_CRC32=y
|
CONFIG_CRC32=y
|
||||||
# CONFIG_LIBCRC32C is not set
|
# CONFIG_LIBCRC32C is not set
|
||||||
CONFIG_ZLIB_INFLATE=y
|
CONFIG_ZLIB_INFLATE=y
|
||||||
|
CONFIG_PLIST=y
|
||||||
|
|
|
@ -370,17 +370,6 @@ void __devinit pcibios_fixup_bus(struct pci_bus *bus)
|
||||||
features &= ~(PCI_COMMAND_SERR | PCI_COMMAND_PARITY);
|
features &= ~(PCI_COMMAND_SERR | PCI_COMMAND_PARITY);
|
||||||
|
|
||||||
switch (dev->class >> 8) {
|
switch (dev->class >> 8) {
|
||||||
#if defined(CONFIG_ISA) || defined(CONFIG_EISA)
|
|
||||||
case PCI_CLASS_BRIDGE_ISA:
|
|
||||||
case PCI_CLASS_BRIDGE_EISA:
|
|
||||||
/*
|
|
||||||
* If this device is an ISA bridge, set isa_bridge
|
|
||||||
* to point at this device. We will then go looking
|
|
||||||
* for things like keyboard, etc.
|
|
||||||
*/
|
|
||||||
isa_bridge = dev;
|
|
||||||
break;
|
|
||||||
#endif
|
|
||||||
case PCI_CLASS_BRIDGE_PCI:
|
case PCI_CLASS_BRIDGE_PCI:
|
||||||
pci_read_config_word(dev, PCI_BRIDGE_CONTROL, &status);
|
pci_read_config_word(dev, PCI_BRIDGE_CONTROL, &status);
|
||||||
status |= PCI_BRIDGE_CTL_PARITY|PCI_BRIDGE_CTL_MASTER_ABORT;
|
status |= PCI_BRIDGE_CTL_PARITY|PCI_BRIDGE_CTL_MASTER_ABORT;
|
||||||
|
|
|
@ -167,6 +167,16 @@ void __init init_IRQ(void)
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef CONFIG_HOTPLUG_CPU
|
#ifdef CONFIG_HOTPLUG_CPU
|
||||||
|
|
||||||
|
static void route_irq(struct irqdesc *desc, unsigned int irq, unsigned int cpu)
|
||||||
|
{
|
||||||
|
pr_debug("IRQ%u: moving from cpu%u to cpu%u\n", irq, desc->cpu, cpu);
|
||||||
|
|
||||||
|
spin_lock_irq(&desc->lock);
|
||||||
|
desc->chip->set_affinity(irq, cpumask_of_cpu(cpu));
|
||||||
|
spin_unlock_irq(&desc->lock);
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* The CPU has been marked offline. Migrate IRQs off this CPU. If
|
* The CPU has been marked offline. Migrate IRQs off this CPU. If
|
||||||
* the affinity settings do not allow other CPUs, force them onto any
|
* the affinity settings do not allow other CPUs, force them onto any
|
||||||
|
|
|
@ -17,7 +17,7 @@
|
||||||
#include <linux/console.h>
|
#include <linux/console.h>
|
||||||
#include <linux/bootmem.h>
|
#include <linux/bootmem.h>
|
||||||
#include <linux/seq_file.h>
|
#include <linux/seq_file.h>
|
||||||
#include <linux/tty.h>
|
#include <linux/screen_info.h>
|
||||||
#include <linux/init.h>
|
#include <linux/init.h>
|
||||||
#include <linux/root_dev.h>
|
#include <linux/root_dev.h>
|
||||||
#include <linux/cpu.h>
|
#include <linux/cpu.h>
|
||||||
|
|
|
@ -83,8 +83,8 @@ static struct scoop_pcmcia_config collie_pcmcia_config = {
|
||||||
|
|
||||||
|
|
||||||
static struct mcp_plat_data collie_mcp_data = {
|
static struct mcp_plat_data collie_mcp_data = {
|
||||||
.mccr0 = MCCR0_ADM,
|
.mccr0 = MCCR0_ADM | MCCR0_ExtClk,
|
||||||
.sclk_rate = 11981000,
|
.sclk_rate = 9216000,
|
||||||
};
|
};
|
||||||
|
|
||||||
#ifdef CONFIG_SHARP_LOCOMO
|
#ifdef CONFIG_SHARP_LOCOMO
|
||||||
|
|
|
@ -9,6 +9,9 @@
|
||||||
* Li-ion batteries are angry beasts, and they like to explode. This driver is not finished,
|
* Li-ion batteries are angry beasts, and they like to explode. This driver is not finished,
|
||||||
* and sometimes charges them when it should not. If it makes angry lithium to come your way...
|
* and sometimes charges them when it should not. If it makes angry lithium to come your way...
|
||||||
* ...well, you have been warned.
|
* ...well, you have been warned.
|
||||||
|
*
|
||||||
|
* Actually, this should be quite safe, it seems sharp leaves charger enabled by default,
|
||||||
|
* and my collie did not explode (yet).
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include <linux/module.h>
|
#include <linux/module.h>
|
||||||
|
@ -40,9 +43,8 @@ static void collie_charger_init(void)
|
||||||
{
|
{
|
||||||
int err;
|
int err;
|
||||||
|
|
||||||
if (sharpsl_param.adadj != -1) {
|
if (sharpsl_param.adadj != -1)
|
||||||
ad_revise = sharpsl_param.adadj;
|
ad_revise = sharpsl_param.adadj;
|
||||||
}
|
|
||||||
|
|
||||||
/* Register interrupt handler. */
|
/* Register interrupt handler. */
|
||||||
if ((err = request_irq(COLLIE_IRQ_GPIO_AC_IN, sharpsl_ac_isr, IRQF_DISABLED,
|
if ((err = request_irq(COLLIE_IRQ_GPIO_AC_IN, sharpsl_ac_isr, IRQF_DISABLED,
|
||||||
|
@ -72,27 +74,17 @@ static void collie_measure_temp(int on)
|
||||||
|
|
||||||
static void collie_charge(int on)
|
static void collie_charge(int on)
|
||||||
{
|
{
|
||||||
if (on) {
|
extern struct platform_device colliescoop_device;
|
||||||
printk("Should start charger\n");
|
|
||||||
} else {
|
|
||||||
printk("Should stop charger\n");
|
|
||||||
}
|
|
||||||
#ifdef I_AM_SURE
|
|
||||||
|
|
||||||
/* Zaurus seems to contain LTC1731 ; it should know when to
|
/* Zaurus seems to contain LTC1731; it should know when to
|
||||||
* stop charging itself, so setting charge on should be
|
* stop charging itself, so setting charge on should be
|
||||||
* relatively harmless (as long as it is not done too often).
|
* relatively harmless (as long as it is not done too often).
|
||||||
*/
|
*/
|
||||||
#define CF_BUF_CTRL_BASE 0xF0800000
|
|
||||||
#define SCOOP_REG(adr) (*(volatile unsigned short*)(CF_BUF_CTRL_BASE+(adr)))
|
|
||||||
#define SCOOP_REG_GPWR SCOOP_REG(SCOOP_GPWR)
|
|
||||||
|
|
||||||
if (on) {
|
if (on) {
|
||||||
set_scoop_gpio(&colliescoop_device.dev, COLLIE_SCP_CHARGE_ON);
|
set_scoop_gpio(&colliescoop_device.dev, COLLIE_SCP_CHARGE_ON);
|
||||||
} else {
|
} else {
|
||||||
reset_scoop_gpio(&colliescoop_device.dev, COLLIE_SCP_CHARGE_ON);
|
reset_scoop_gpio(&colliescoop_device.dev, COLLIE_SCP_CHARGE_ON);
|
||||||
}
|
}
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static void collie_discharge(int on)
|
static void collie_discharge(int on)
|
||||||
|
@ -127,7 +119,6 @@ int collie_read_backup_battery(void)
|
||||||
|
|
||||||
ucb1x00_adc_enable(ucb);
|
ucb1x00_adc_enable(ucb);
|
||||||
|
|
||||||
/* Gives 75..130 */
|
|
||||||
ucb1x00_io_write(ucb, COLLIE_TC35143_GPIO_BBAT_ON, 0);
|
ucb1x00_io_write(ucb, COLLIE_TC35143_GPIO_BBAT_ON, 0);
|
||||||
voltage = ucb1x00_adc_read(ucb, UCB_ADC_INP_AD1, UCB_SYNC);
|
voltage = ucb1x00_adc_read(ucb, UCB_ADC_INP_AD1, UCB_SYNC);
|
||||||
|
|
||||||
|
@ -146,9 +137,8 @@ int collie_read_main_battery(void)
|
||||||
ucb1x00_adc_enable(ucb);
|
ucb1x00_adc_enable(ucb);
|
||||||
ucb1x00_io_write(ucb, 0, COLLIE_TC35143_GPIO_BBAT_ON);
|
ucb1x00_io_write(ucb, 0, COLLIE_TC35143_GPIO_BBAT_ON);
|
||||||
ucb1x00_io_write(ucb, COLLIE_TC35143_GPIO_MBAT_ON, 0);
|
ucb1x00_io_write(ucb, COLLIE_TC35143_GPIO_MBAT_ON, 0);
|
||||||
/* gives values 160..255 with battery removed... and
|
|
||||||
145..255 with battery inserted. (on AC), goes as low as
|
mdelay(1);
|
||||||
80 on DC. */
|
|
||||||
voltage = ucb1x00_adc_read(ucb, UCB_ADC_INP_AD1, UCB_SYNC);
|
voltage = ucb1x00_adc_read(ucb, UCB_ADC_INP_AD1, UCB_SYNC);
|
||||||
|
|
||||||
ucb1x00_io_write(ucb, 0, COLLIE_TC35143_GPIO_MBAT_ON);
|
ucb1x00_io_write(ucb, 0, COLLIE_TC35143_GPIO_MBAT_ON);
|
||||||
|
@ -192,7 +182,7 @@ static unsigned long read_devdata(int which)
|
||||||
case SHARPSL_BATT_TEMP:
|
case SHARPSL_BATT_TEMP:
|
||||||
return collie_read_temp();
|
return collie_read_temp();
|
||||||
case SHARPSL_ACIN_VOLT:
|
case SHARPSL_ACIN_VOLT:
|
||||||
return 0x1;
|
return 500;
|
||||||
case SHARPSL_STATUS_ACIN: {
|
case SHARPSL_STATUS_ACIN: {
|
||||||
int ret = GPLR & COLLIE_GPIO_AC_IN;
|
int ret = GPLR & COLLIE_GPIO_AC_IN;
|
||||||
printk("AC status = %d\n", ret);
|
printk("AC status = %d\n", ret);
|
||||||
|
@ -208,10 +198,33 @@ static unsigned long read_devdata(int which)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
struct battery_thresh collie_battery_levels_acin[] = {
|
||||||
|
{ 420, 100},
|
||||||
|
{ 417, 95},
|
||||||
|
{ 415, 90},
|
||||||
|
{ 413, 80},
|
||||||
|
{ 411, 75},
|
||||||
|
{ 408, 70},
|
||||||
|
{ 406, 60},
|
||||||
|
{ 403, 50},
|
||||||
|
{ 398, 40},
|
||||||
|
{ 391, 25},
|
||||||
|
{ 10, 5},
|
||||||
|
{ 0, 0},
|
||||||
|
};
|
||||||
|
|
||||||
struct battery_thresh collie_battery_levels[] = {
|
struct battery_thresh collie_battery_levels[] = {
|
||||||
{ 368, 100},
|
{ 394, 100},
|
||||||
{ 358, 25},
|
{ 390, 95},
|
||||||
{ 356, 5},
|
{ 380, 90},
|
||||||
|
{ 370, 80},
|
||||||
|
{ 368, 75}, /* From sharp code: battery high with frontlight */
|
||||||
|
{ 366, 70}, /* 60..90 -- fake values invented by me for testing */
|
||||||
|
{ 364, 60},
|
||||||
|
{ 362, 50},
|
||||||
|
{ 360, 40},
|
||||||
|
{ 358, 25}, /* From sharp code: battery low with frontlight */
|
||||||
|
{ 356, 5}, /* From sharp code: battery verylow with frontlight */
|
||||||
{ 0, 0},
|
{ 0, 0},
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -226,13 +239,21 @@ struct sharpsl_charger_machinfo collie_pm_machinfo = {
|
||||||
.postsuspend = collie_postsuspend,
|
.postsuspend = collie_postsuspend,
|
||||||
.charger_wakeup = collie_charger_wakeup,
|
.charger_wakeup = collie_charger_wakeup,
|
||||||
.should_wakeup = collie_should_wakeup,
|
.should_wakeup = collie_should_wakeup,
|
||||||
.bat_levels = 3,
|
.bat_levels = 12,
|
||||||
.bat_levels_noac = collie_battery_levels,
|
.bat_levels_noac = collie_battery_levels,
|
||||||
.bat_levels_acin = collie_battery_levels,
|
.bat_levels_acin = collie_battery_levels_acin,
|
||||||
.status_high_acin = 368,
|
.status_high_acin = 368,
|
||||||
.status_low_acin = 358,
|
.status_low_acin = 358,
|
||||||
.status_high_noac = 368,
|
.status_high_noac = 368,
|
||||||
.status_low_noac = 358,
|
.status_low_noac = 358,
|
||||||
|
.charge_on_volt = 350, /* spitz uses 2.90V, but lets play it safe. */
|
||||||
|
.charge_on_temp = 550,
|
||||||
|
.charge_acin_high = 550, /* collie does not seem to have sensor for this, anyway */
|
||||||
|
.charge_acin_low = 450, /* ignored, too */
|
||||||
|
.fatal_acin_volt = 356,
|
||||||
|
.fatal_noacin_volt = 356,
|
||||||
|
|
||||||
|
.batfull_irq = 1, /* We do not want periodical charge restarts */
|
||||||
};
|
};
|
||||||
|
|
||||||
static int __init collie_pm_ucb_add(struct ucb1x00_dev *pdev)
|
static int __init collie_pm_ucb_add(struct ucb1x00_dev *pdev)
|
||||||
|
|
|
@ -35,6 +35,7 @@
|
||||||
#include <asm/hardware/arm_timer.h>
|
#include <asm/hardware/arm_timer.h>
|
||||||
#include <asm/hardware/icst307.h>
|
#include <asm/hardware/icst307.h>
|
||||||
#include <asm/hardware/vic.h>
|
#include <asm/hardware/vic.h>
|
||||||
|
#include <asm/mach-types.h>
|
||||||
|
|
||||||
#include <asm/mach/arch.h>
|
#include <asm/mach/arch.h>
|
||||||
#include <asm/mach/flash.h>
|
#include <asm/mach/flash.h>
|
||||||
|
@ -352,11 +353,7 @@ static const struct icst307_params versatile_oscvco_params = {
|
||||||
static void versatile_oscvco_set(struct clk *clk, struct icst307_vco vco)
|
static void versatile_oscvco_set(struct clk *clk, struct icst307_vco vco)
|
||||||
{
|
{
|
||||||
void __iomem *sys_lock = __io_address(VERSATILE_SYS_BASE) + VERSATILE_SYS_LOCK_OFFSET;
|
void __iomem *sys_lock = __io_address(VERSATILE_SYS_BASE) + VERSATILE_SYS_LOCK_OFFSET;
|
||||||
#if defined(CONFIG_ARCH_VERSATILE_PB)
|
void __iomem *sys_osc = __io_address(VERSATILE_SYS_BASE) + VERSATILE_SYS_OSCCLCD_OFFSET;
|
||||||
void __iomem *sys_osc = __io_address(VERSATILE_SYS_BASE) + VERSATILE_SYS_OSC4_OFFSET;
|
|
||||||
#elif defined(CONFIG_MACH_VERSATILE_AB)
|
|
||||||
void __iomem *sys_osc = __io_address(VERSATILE_SYS_BASE) + VERSATILE_SYS_OSC1_OFFSET;
|
|
||||||
#endif
|
|
||||||
u32 val;
|
u32 val;
|
||||||
|
|
||||||
val = readl(sys_osc) & ~0x7ffff;
|
val = readl(sys_osc) & ~0x7ffff;
|
||||||
|
@ -529,7 +526,7 @@ static void versatile_clcd_disable(struct clcd_fb *fb)
|
||||||
/*
|
/*
|
||||||
* If the LCD is Sanyo 2x5 in on the IB2 board, turn the back-light off
|
* If the LCD is Sanyo 2x5 in on the IB2 board, turn the back-light off
|
||||||
*/
|
*/
|
||||||
if (fb->panel == &sanyo_2_5_in) {
|
if (machine_is_versatile_ab() && fb->panel == &sanyo_2_5_in) {
|
||||||
void __iomem *versatile_ib2_ctrl = __io_address(VERSATILE_IB2_CTRL);
|
void __iomem *versatile_ib2_ctrl = __io_address(VERSATILE_IB2_CTRL);
|
||||||
unsigned long ctrl;
|
unsigned long ctrl;
|
||||||
|
|
||||||
|
@ -578,7 +575,7 @@ static void versatile_clcd_enable(struct clcd_fb *fb)
|
||||||
/*
|
/*
|
||||||
* If the LCD is Sanyo 2x5 in on the IB2 board, turn the back-light on
|
* If the LCD is Sanyo 2x5 in on the IB2 board, turn the back-light on
|
||||||
*/
|
*/
|
||||||
if (fb->panel == &sanyo_2_5_in) {
|
if (machine_is_versatile_ab() && fb->panel == &sanyo_2_5_in) {
|
||||||
void __iomem *versatile_ib2_ctrl = __io_address(VERSATILE_IB2_CTRL);
|
void __iomem *versatile_ib2_ctrl = __io_address(VERSATILE_IB2_CTRL);
|
||||||
unsigned long ctrl;
|
unsigned long ctrl;
|
||||||
|
|
||||||
|
|
|
@ -61,7 +61,7 @@ typedef struct {
|
||||||
u16 __padding;
|
u16 __padding;
|
||||||
#endif
|
#endif
|
||||||
u64 low;
|
u64 low;
|
||||||
} floatx80;
|
} __attribute__ ((packed,aligned(4))) floatx80;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
-------------------------------------------------------------------------------
|
-------------------------------------------------------------------------------
|
||||||
|
|
|
@ -17,7 +17,7 @@
|
||||||
#include <linux/console.h>
|
#include <linux/console.h>
|
||||||
#include <linux/bootmem.h>
|
#include <linux/bootmem.h>
|
||||||
#include <linux/seq_file.h>
|
#include <linux/seq_file.h>
|
||||||
#include <linux/tty.h>
|
#include <linux/screen_info.h>
|
||||||
#include <linux/init.h>
|
#include <linux/init.h>
|
||||||
#include <linux/root_dev.h>
|
#include <linux/root_dev.h>
|
||||||
|
|
||||||
|
|
|
@ -450,9 +450,9 @@ int __init eeprom_init(void)
|
||||||
static int eeprom_open(struct inode * inode, struct file * file)
|
static int eeprom_open(struct inode * inode, struct file * file)
|
||||||
{
|
{
|
||||||
|
|
||||||
if(MINOR(inode->i_rdev) != EEPROM_MINOR_NR)
|
if(iminor(inode) != EEPROM_MINOR_NR)
|
||||||
return -ENXIO;
|
return -ENXIO;
|
||||||
if(MAJOR(inode->i_rdev) != EEPROM_MAJOR_NR)
|
if(imajor(inode) != EEPROM_MAJOR_NR)
|
||||||
return -ENXIO;
|
return -ENXIO;
|
||||||
|
|
||||||
if( eeprom.size > 0 )
|
if( eeprom.size > 0 )
|
||||||
|
|
|
@ -435,7 +435,7 @@ static int
|
||||||
gpio_open(struct inode *inode, struct file *filp)
|
gpio_open(struct inode *inode, struct file *filp)
|
||||||
{
|
{
|
||||||
struct gpio_private *priv;
|
struct gpio_private *priv;
|
||||||
int p = MINOR(inode->i_rdev);
|
int p = iminor(inode);
|
||||||
|
|
||||||
if (p > GPIO_MINOR_LAST)
|
if (p > GPIO_MINOR_LAST)
|
||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
|
|
|
@ -2302,7 +2302,7 @@ static int cryptocop_job_setup(struct cryptocop_prio_job **pj, struct cryptocop_
|
||||||
|
|
||||||
static int cryptocop_open(struct inode *inode, struct file *filp)
|
static int cryptocop_open(struct inode *inode, struct file *filp)
|
||||||
{
|
{
|
||||||
int p = MINOR(inode->i_rdev);
|
int p = iminor(inode);
|
||||||
|
|
||||||
if (p != CRYPTOCOP_MINOR) return -EINVAL;
|
if (p != CRYPTOCOP_MINOR) return -EINVAL;
|
||||||
|
|
||||||
|
|
|
@ -418,7 +418,7 @@ static int
|
||||||
gpio_open(struct inode *inode, struct file *filp)
|
gpio_open(struct inode *inode, struct file *filp)
|
||||||
{
|
{
|
||||||
struct gpio_private *priv;
|
struct gpio_private *priv;
|
||||||
int p = MINOR(inode->i_rdev);
|
int p = iminor(inode);
|
||||||
|
|
||||||
if (p > GPIO_MINOR_LAST)
|
if (p > GPIO_MINOR_LAST)
|
||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
|
|
|
@ -324,14 +324,12 @@ pcf8563_ioctl(struct inode *inode, struct file *filp, unsigned int cmd, unsigned
|
||||||
int
|
int
|
||||||
pcf8563_open(struct inode *inode, struct file *filp)
|
pcf8563_open(struct inode *inode, struct file *filp)
|
||||||
{
|
{
|
||||||
MOD_INC_USE_COUNT;
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
int
|
int
|
||||||
pcf8563_release(struct inode *inode, struct file *filp)
|
pcf8563_release(struct inode *inode, struct file *filp)
|
||||||
{
|
{
|
||||||
MOD_DEC_USE_COUNT;
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -340,7 +340,7 @@ static inline int sync_data_avail_to_end(struct sync_port *port)
|
||||||
|
|
||||||
static int sync_serial_open(struct inode *inode, struct file *file)
|
static int sync_serial_open(struct inode *inode, struct file *file)
|
||||||
{
|
{
|
||||||
int dev = MINOR(inode->i_rdev);
|
int dev = iminor(inode);
|
||||||
sync_port* port;
|
sync_port* port;
|
||||||
reg_dma_rw_cfg cfg = {.en = regk_dma_yes};
|
reg_dma_rw_cfg cfg = {.en = regk_dma_yes};
|
||||||
reg_dma_rw_intr_mask intr_mask = {.data = regk_dma_yes};
|
reg_dma_rw_intr_mask intr_mask = {.data = regk_dma_yes};
|
||||||
|
@ -486,7 +486,7 @@ static int sync_serial_open(struct inode *inode, struct file *file)
|
||||||
|
|
||||||
static int sync_serial_release(struct inode *inode, struct file *file)
|
static int sync_serial_release(struct inode *inode, struct file *file)
|
||||||
{
|
{
|
||||||
int dev = MINOR(inode->i_rdev);
|
int dev = iminor(inode);
|
||||||
sync_port* port;
|
sync_port* port;
|
||||||
|
|
||||||
if (dev < 0 || dev >= NUMBER_OF_PORTS || !ports[dev].enabled)
|
if (dev < 0 || dev >= NUMBER_OF_PORTS || !ports[dev].enabled)
|
||||||
|
@ -504,7 +504,7 @@ static int sync_serial_release(struct inode *inode, struct file *file)
|
||||||
|
|
||||||
static unsigned int sync_serial_poll(struct file *file, poll_table *wait)
|
static unsigned int sync_serial_poll(struct file *file, poll_table *wait)
|
||||||
{
|
{
|
||||||
int dev = MINOR(file->f_dentry->d_inode->i_rdev);
|
int dev = iminor(file->f_dentry->d_inode);
|
||||||
unsigned int mask = 0;
|
unsigned int mask = 0;
|
||||||
sync_port* port;
|
sync_port* port;
|
||||||
DEBUGPOLL( static unsigned int prev_mask = 0; );
|
DEBUGPOLL( static unsigned int prev_mask = 0; );
|
||||||
|
@ -531,7 +531,7 @@ static int sync_serial_ioctl(struct inode *inode, struct file *file,
|
||||||
unsigned int cmd, unsigned long arg)
|
unsigned int cmd, unsigned long arg)
|
||||||
{
|
{
|
||||||
int return_val = 0;
|
int return_val = 0;
|
||||||
int dev = MINOR(file->f_dentry->d_inode->i_rdev);
|
int dev = iminor(file->f_dentry->d_inode);
|
||||||
sync_port* port;
|
sync_port* port;
|
||||||
reg_sser_rw_tr_cfg tr_cfg;
|
reg_sser_rw_tr_cfg tr_cfg;
|
||||||
reg_sser_rw_rec_cfg rec_cfg;
|
reg_sser_rw_rec_cfg rec_cfg;
|
||||||
|
@ -789,7 +789,7 @@ static int sync_serial_ioctl(struct inode *inode, struct file *file,
|
||||||
static ssize_t sync_serial_write(struct file * file, const char * buf,
|
static ssize_t sync_serial_write(struct file * file, const char * buf,
|
||||||
size_t count, loff_t *ppos)
|
size_t count, loff_t *ppos)
|
||||||
{
|
{
|
||||||
int dev = MINOR(file->f_dentry->d_inode->i_rdev);
|
int dev = iminor(file->f_dentry->d_inode);
|
||||||
DECLARE_WAITQUEUE(wait, current);
|
DECLARE_WAITQUEUE(wait, current);
|
||||||
sync_port *port;
|
sync_port *port;
|
||||||
unsigned long c, c1;
|
unsigned long c, c1;
|
||||||
|
@ -919,7 +919,7 @@ static ssize_t sync_serial_write(struct file * file, const char * buf,
|
||||||
static ssize_t sync_serial_read(struct file * file, char * buf,
|
static ssize_t sync_serial_read(struct file * file, char * buf,
|
||||||
size_t count, loff_t *ppos)
|
size_t count, loff_t *ppos)
|
||||||
{
|
{
|
||||||
int dev = MINOR(file->f_dentry->d_inode->i_rdev);
|
int dev = iminor(file->f_dentry->d_inode);
|
||||||
int avail;
|
int avail;
|
||||||
sync_port *port;
|
sync_port *port;
|
||||||
unsigned char* start;
|
unsigned char* start;
|
||||||
|
|
|
@ -15,7 +15,7 @@
|
||||||
#include <linux/bootmem.h>
|
#include <linux/bootmem.h>
|
||||||
#include <asm/pgtable.h>
|
#include <asm/pgtable.h>
|
||||||
#include <linux/seq_file.h>
|
#include <linux/seq_file.h>
|
||||||
#include <linux/tty.h>
|
#include <linux/screen_info.h>
|
||||||
#include <linux/utsname.h>
|
#include <linux/utsname.h>
|
||||||
#include <linux/pfn.h>
|
#include <linux/pfn.h>
|
||||||
|
|
||||||
|
|
|
@ -1 +1,115 @@
|
||||||
/* Dummy asm-offsets.c file. Required by kbuild and ready to be used - hint! */
|
/*
|
||||||
|
* Generate definitions needed by assembly language modules.
|
||||||
|
* This code generates raw asm output which is post-processed
|
||||||
|
* to extract and format the required data.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include <linux/sched.h>
|
||||||
|
#include <linux/signal.h>
|
||||||
|
#include <linux/personality.h>
|
||||||
|
#include <asm/registers.h>
|
||||||
|
#include <asm/ucontext.h>
|
||||||
|
#include <asm/processor.h>
|
||||||
|
#include <asm/thread_info.h>
|
||||||
|
#include <asm/gdb-stub.h>
|
||||||
|
|
||||||
|
#define DEFINE(sym, val) \
|
||||||
|
asm volatile("\n->" #sym " %0 " #val : : "i" (val))
|
||||||
|
|
||||||
|
#define DEF_PTREG(sym, reg) \
|
||||||
|
asm volatile("\n->" #sym " %0 offsetof(struct pt_regs, " #reg ")" \
|
||||||
|
: : "i" (offsetof(struct pt_regs, reg)))
|
||||||
|
|
||||||
|
#define DEF_IREG(sym, reg) \
|
||||||
|
asm volatile("\n->" #sym " %0 offsetof(struct user_context, " #reg ")" \
|
||||||
|
: : "i" (offsetof(struct user_context, reg)))
|
||||||
|
|
||||||
|
#define DEF_FREG(sym, reg) \
|
||||||
|
asm volatile("\n->" #sym " %0 offsetof(struct user_context, " #reg ")" \
|
||||||
|
: : "i" (offsetof(struct user_context, reg)))
|
||||||
|
|
||||||
|
#define DEF_0REG(sym, reg) \
|
||||||
|
asm volatile("\n->" #sym " %0 offsetof(struct frv_frame0, " #reg ")" \
|
||||||
|
: : "i" (offsetof(struct frv_frame0, reg)))
|
||||||
|
|
||||||
|
#define BLANK() asm volatile("\n->" : : )
|
||||||
|
|
||||||
|
#define OFFSET(sym, str, mem) \
|
||||||
|
DEFINE(sym, offsetof(struct str, mem));
|
||||||
|
|
||||||
|
void foo(void)
|
||||||
|
{
|
||||||
|
/* offsets into the thread_info structure */
|
||||||
|
OFFSET(TI_TASK, thread_info, task);
|
||||||
|
OFFSET(TI_EXEC_DOMAIN, thread_info, exec_domain);
|
||||||
|
OFFSET(TI_FLAGS, thread_info, flags);
|
||||||
|
OFFSET(TI_STATUS, thread_info, status);
|
||||||
|
OFFSET(TI_CPU, thread_info, cpu);
|
||||||
|
OFFSET(TI_PREEMPT_COUNT, thread_info, preempt_count);
|
||||||
|
OFFSET(TI_ADDR_LIMIT, thread_info, addr_limit);
|
||||||
|
OFFSET(TI_RESTART_BLOCK, thread_info, restart_block);
|
||||||
|
BLANK();
|
||||||
|
|
||||||
|
/* offsets into register file storage */
|
||||||
|
DEF_PTREG(REG_PSR, psr);
|
||||||
|
DEF_PTREG(REG_ISR, isr);
|
||||||
|
DEF_PTREG(REG_CCR, ccr);
|
||||||
|
DEF_PTREG(REG_CCCR, cccr);
|
||||||
|
DEF_PTREG(REG_LR, lr);
|
||||||
|
DEF_PTREG(REG_LCR, lcr);
|
||||||
|
DEF_PTREG(REG_PC, pc);
|
||||||
|
DEF_PTREG(REG__STATUS, __status);
|
||||||
|
DEF_PTREG(REG_SYSCALLNO, syscallno);
|
||||||
|
DEF_PTREG(REG_ORIG_GR8, orig_gr8);
|
||||||
|
DEF_PTREG(REG_GNER0, gner0);
|
||||||
|
DEF_PTREG(REG_GNER1, gner1);
|
||||||
|
DEF_PTREG(REG_IACC0, iacc0);
|
||||||
|
DEF_PTREG(REG_TBR, tbr);
|
||||||
|
DEF_PTREG(REG_GR0, tbr);
|
||||||
|
DEFINE(REG__END, sizeof(struct pt_regs));
|
||||||
|
BLANK();
|
||||||
|
|
||||||
|
DEF_0REG(REG_DCR, debug.dcr);
|
||||||
|
DEF_0REG(REG_IBAR0, debug.ibar[0]);
|
||||||
|
DEF_0REG(REG_DBAR0, debug.dbar[0]);
|
||||||
|
DEF_0REG(REG_DBDR00, debug.dbdr[0][0]);
|
||||||
|
DEF_0REG(REG_DBMR00, debug.dbmr[0][0]);
|
||||||
|
BLANK();
|
||||||
|
|
||||||
|
DEF_IREG(__INT_GR0, i.gr[0]);
|
||||||
|
DEF_FREG(__USER_FPMEDIA, f);
|
||||||
|
DEF_FREG(__FPMEDIA_FR0, f.fr[0]);
|
||||||
|
DEF_FREG(__FPMEDIA_FNER0, f.fner[0]);
|
||||||
|
DEF_FREG(__FPMEDIA_MSR0, f.msr[0]);
|
||||||
|
DEF_FREG(__FPMEDIA_ACC0, f.acc[0]);
|
||||||
|
DEF_FREG(__FPMEDIA_ACCG0, f.accg[0]);
|
||||||
|
DEF_FREG(__FPMEDIA_FSR0, f.fsr[0]);
|
||||||
|
BLANK();
|
||||||
|
|
||||||
|
DEFINE(NR_PT_REGS, sizeof(struct pt_regs) / 4);
|
||||||
|
DEFINE(NR_USER_INT_REGS, sizeof(struct user_int_regs) / 4);
|
||||||
|
DEFINE(NR_USER_FPMEDIA_REGS, sizeof(struct user_fpmedia_regs) / 4);
|
||||||
|
DEFINE(NR_USER_CONTEXT, sizeof(struct user_context) / 4);
|
||||||
|
DEFINE(FRV_FRAME0_SIZE, sizeof(struct frv_frame0));
|
||||||
|
BLANK();
|
||||||
|
|
||||||
|
/* offsets into thread_struct */
|
||||||
|
OFFSET(__THREAD_FRAME, thread_struct, frame);
|
||||||
|
OFFSET(__THREAD_CURR, thread_struct, curr);
|
||||||
|
OFFSET(__THREAD_SP, thread_struct, sp);
|
||||||
|
OFFSET(__THREAD_FP, thread_struct, fp);
|
||||||
|
OFFSET(__THREAD_LR, thread_struct, lr);
|
||||||
|
OFFSET(__THREAD_PC, thread_struct, pc);
|
||||||
|
OFFSET(__THREAD_GR16, thread_struct, gr[0]);
|
||||||
|
OFFSET(__THREAD_SCHED_LR, thread_struct, sched_lr);
|
||||||
|
OFFSET(__THREAD_FRAME0, thread_struct, frame0);
|
||||||
|
OFFSET(__THREAD_USER, thread_struct, user);
|
||||||
|
BLANK();
|
||||||
|
|
||||||
|
/* offsets into frv_debug_status */
|
||||||
|
OFFSET(DEBUG_BPSR, frv_debug_status, bpsr);
|
||||||
|
OFFSET(DEBUG_DCR, frv_debug_status, dcr);
|
||||||
|
OFFSET(DEBUG_BRR, frv_debug_status, brr);
|
||||||
|
OFFSET(DEBUG_NMAR, frv_debug_status, nmar);
|
||||||
|
BLANK();
|
||||||
|
}
|
||||||
|
|
|
@ -9,11 +9,11 @@
|
||||||
* 2 of the License, or (at your option) any later version.
|
* 2 of the License, or (at your option) any later version.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include <linux/sys.h>
|
|
||||||
#include <linux/linkage.h>
|
#include <linux/linkage.h>
|
||||||
#include <asm/setup.h>
|
#include <asm/setup.h>
|
||||||
#include <asm/segment.h>
|
#include <asm/segment.h>
|
||||||
#include <asm/ptrace.h>
|
#include <asm/ptrace.h>
|
||||||
|
#include <asm/thread_info.h>
|
||||||
#include <asm/spr-regs.h>
|
#include <asm/spr-regs.h>
|
||||||
|
|
||||||
#include <asm/errno.h>
|
#include <asm/errno.h>
|
||||||
|
@ -23,13 +23,11 @@
|
||||||
#
|
#
|
||||||
.section .bss.stack
|
.section .bss.stack
|
||||||
.globl __break_user_context
|
.globl __break_user_context
|
||||||
.balign 8192
|
.balign THREAD_SIZE
|
||||||
__break_stack:
|
__break_stack:
|
||||||
.space (8192 - (USER_CONTEXT_SIZE + REG__DEBUG_XTRA)) & ~7
|
.space THREAD_SIZE - FRV_FRAME0_SIZE
|
||||||
__break_stack_tos:
|
__break_frame_0:
|
||||||
.space REG__DEBUG_XTRA
|
.space FRV_FRAME0_SIZE
|
||||||
__break_user_context:
|
|
||||||
.space USER_CONTEXT_SIZE
|
|
||||||
|
|
||||||
#
|
#
|
||||||
# miscellaneous variables
|
# miscellaneous variables
|
||||||
|
@ -74,8 +72,8 @@ __entry_break:
|
||||||
#endif
|
#endif
|
||||||
LEDS 0x1001,gr31
|
LEDS 0x1001,gr31
|
||||||
|
|
||||||
sethi.p %hi(__break_user_context),gr31
|
sethi.p %hi(__break_frame_0),gr31
|
||||||
setlo %lo(__break_user_context),gr31
|
setlo %lo(__break_frame_0),gr31
|
||||||
|
|
||||||
stdi gr2,@(gr31,#REG_GR(2))
|
stdi gr2,@(gr31,#REG_GR(2))
|
||||||
movsg ccr,gr3
|
movsg ccr,gr3
|
||||||
|
@ -585,8 +583,8 @@ __break_continue:
|
||||||
# set up the kernel stack pointer
|
# set up the kernel stack pointer
|
||||||
sti sp,@(gr31,#REG_SP)
|
sti sp,@(gr31,#REG_SP)
|
||||||
|
|
||||||
sethi.p %hi(__break_stack_tos),sp
|
sethi.p %hi(__break_frame_0),sp
|
||||||
setlo %lo(__break_stack_tos),sp
|
setlo %lo(__break_frame_0),sp
|
||||||
|
|
||||||
# finish building the exception frame
|
# finish building the exception frame
|
||||||
stdi gr4 ,@(gr31,#REG_GR(4))
|
stdi gr4 ,@(gr31,#REG_GR(4))
|
||||||
|
@ -651,9 +649,12 @@ __break_continue:
|
||||||
movsg nmar,gr5
|
movsg nmar,gr5
|
||||||
movsg dcr,gr6
|
movsg dcr,gr6
|
||||||
|
|
||||||
stdi gr4 ,@(gr31,#REG_BRR)
|
sethi.p %hi(__debug_status),gr7
|
||||||
sti gr19,@(gr31,#REG_BPSR)
|
setlo %lo(__debug_status),gr7
|
||||||
sti.p gr6 ,@(gr31,#REG_DCR)
|
|
||||||
|
stdi gr4 ,@(gr7,#DEBUG_BRR)
|
||||||
|
sti gr19,@(gr7,#DEBUG_BPSR)
|
||||||
|
sti.p gr6 ,@(gr7,#DEBUG_DCR)
|
||||||
|
|
||||||
# trap exceptions during break handling and disable h/w breakpoints/watchpoints
|
# trap exceptions during break handling and disable h/w breakpoints/watchpoints
|
||||||
sethi %hi(DCR_EBE),gr5
|
sethi %hi(DCR_EBE),gr5
|
||||||
|
@ -698,7 +699,10 @@ __break_continue:
|
||||||
lddi @(gr31,#REG_PSR) ,gr22
|
lddi @(gr31,#REG_PSR) ,gr22
|
||||||
ldi @(gr31,#REG_PC) ,gr21
|
ldi @(gr31,#REG_PC) ,gr21
|
||||||
ldi @(gr31,#REG_TBR) ,gr20
|
ldi @(gr31,#REG_TBR) ,gr20
|
||||||
ldi.p @(gr31,#REG_DCR) ,gr6
|
|
||||||
|
sethi.p %hi(__debug_status),gr6
|
||||||
|
setlo %lo(__debug_status),gr6
|
||||||
|
ldi.p @(gr6,#DEBUG_DCR) ,gr6
|
||||||
|
|
||||||
andi gr22,#PSR_S,gr19 /* rebuild BPSR */
|
andi gr22,#PSR_S,gr19 /* rebuild BPSR */
|
||||||
andi.p gr22,#PSR_ET,gr5
|
andi.p gr22,#PSR_ET,gr5
|
||||||
|
|
|
@ -39,10 +39,9 @@ do { \
|
||||||
gdbstub_do_rx(); \
|
gdbstub_do_rx(); \
|
||||||
} while(!FLOWCTL_QUERY(LINE))
|
} while(!FLOWCTL_QUERY(LINE))
|
||||||
|
|
||||||
static void __init debug_stub_init(void);
|
struct frv_debug_status __debug_status;
|
||||||
|
|
||||||
extern asmlinkage void __break_hijack_kernel_event(void);
|
static void __init debug_stub_init(void);
|
||||||
extern asmlinkage void __break_hijack_kernel_event_breaks_here(void);
|
|
||||||
|
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
/*
|
/*
|
||||||
|
@ -67,7 +66,7 @@ asmlinkage void debug_stub(void)
|
||||||
__set_HSR(0, hsr0 & ~HSR0_ETMD);
|
__set_HSR(0, hsr0 & ~HSR0_ETMD);
|
||||||
|
|
||||||
/* disable single stepping */
|
/* disable single stepping */
|
||||||
__debug_regs->dcr &= ~DCR_SE;
|
__debug_status.dcr &= ~DCR_SE;
|
||||||
|
|
||||||
/* kernel mode can propose an exception be handled in debug mode by jumping to a special
|
/* kernel mode can propose an exception be handled in debug mode by jumping to a special
|
||||||
* location */
|
* location */
|
||||||
|
@ -76,8 +75,8 @@ asmlinkage void debug_stub(void)
|
||||||
* the top kernel context */
|
* the top kernel context */
|
||||||
*__debug_frame = *__frame;
|
*__debug_frame = *__frame;
|
||||||
__frame = __debug_frame->next_frame;
|
__frame = __debug_frame->next_frame;
|
||||||
__debug_regs->brr = (__debug_frame->tbr & TBR_TT) << 12;
|
__debug_status.brr = (__debug_frame->tbr & TBR_TT) << 12;
|
||||||
__debug_regs->brr |= BRR_EB;
|
__debug_status.brr |= BRR_EB;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (__debug_frame->pc == (unsigned long) __debug_bug_trap + 4) {
|
if (__debug_frame->pc == (unsigned long) __debug_bug_trap + 4) {
|
||||||
|
@ -124,7 +123,7 @@ static void __init debug_stub_init(void)
|
||||||
__debug_frame->pc = (unsigned long) start_kernel;
|
__debug_frame->pc = (unsigned long) start_kernel;
|
||||||
|
|
||||||
/* enable the debug events we want to trap */
|
/* enable the debug events we want to trap */
|
||||||
__debug_regs->dcr = DCR_EBE;
|
__debug_status.dcr = DCR_EBE;
|
||||||
|
|
||||||
#ifdef CONFIG_GDBSTUB
|
#ifdef CONFIG_GDBSTUB
|
||||||
gdbstub_init();
|
gdbstub_init();
|
||||||
|
|
|
@ -27,7 +27,6 @@
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include <linux/sys.h>
|
|
||||||
#include <linux/linkage.h>
|
#include <linux/linkage.h>
|
||||||
#include <asm/thread_info.h>
|
#include <asm/thread_info.h>
|
||||||
#include <asm/setup.h>
|
#include <asm/setup.h>
|
||||||
|
|
|
@ -124,6 +124,7 @@
|
||||||
#include <linux/slab.h>
|
#include <linux/slab.h>
|
||||||
#include <linux/nmi.h>
|
#include <linux/nmi.h>
|
||||||
|
|
||||||
|
#include <asm/asm-offsets.h>
|
||||||
#include <asm/pgtable.h>
|
#include <asm/pgtable.h>
|
||||||
#include <asm/system.h>
|
#include <asm/system.h>
|
||||||
#include <asm/gdb-stub.h>
|
#include <asm/gdb-stub.h>
|
||||||
|
@ -136,7 +137,6 @@ extern void debug_to_serial(const char *p, int n);
|
||||||
extern void gdbstub_console_write(struct console *co, const char *p, unsigned n);
|
extern void gdbstub_console_write(struct console *co, const char *p, unsigned n);
|
||||||
|
|
||||||
extern volatile uint32_t __break_error_detect[3]; /* ESFR1, ESR15, EAR15 */
|
extern volatile uint32_t __break_error_detect[3]; /* ESFR1, ESR15, EAR15 */
|
||||||
extern struct user_context __break_user_context;
|
|
||||||
|
|
||||||
struct __debug_amr {
|
struct __debug_amr {
|
||||||
unsigned long L, P;
|
unsigned long L, P;
|
||||||
|
@ -926,6 +926,7 @@ static int gdbstub_set_breakpoint(unsigned long type, unsigned long addr, unsign
|
||||||
if (!(__debug_regs->dcr & DCR_IBE0)) {
|
if (!(__debug_regs->dcr & DCR_IBE0)) {
|
||||||
//gdbstub_printk("set h/w break 0: %08lx\n", addr);
|
//gdbstub_printk("set h/w break 0: %08lx\n", addr);
|
||||||
__debug_regs->dcr |= DCR_IBE0;
|
__debug_regs->dcr |= DCR_IBE0;
|
||||||
|
__debug_regs->ibar[0] = addr;
|
||||||
asm volatile("movgs %0,ibar0" : : "r"(addr));
|
asm volatile("movgs %0,ibar0" : : "r"(addr));
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
@ -933,6 +934,7 @@ static int gdbstub_set_breakpoint(unsigned long type, unsigned long addr, unsign
|
||||||
if (!(__debug_regs->dcr & DCR_IBE1)) {
|
if (!(__debug_regs->dcr & DCR_IBE1)) {
|
||||||
//gdbstub_printk("set h/w break 1: %08lx\n", addr);
|
//gdbstub_printk("set h/w break 1: %08lx\n", addr);
|
||||||
__debug_regs->dcr |= DCR_IBE1;
|
__debug_regs->dcr |= DCR_IBE1;
|
||||||
|
__debug_regs->ibar[1] = addr;
|
||||||
asm volatile("movgs %0,ibar1" : : "r"(addr));
|
asm volatile("movgs %0,ibar1" : : "r"(addr));
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
@ -940,6 +942,7 @@ static int gdbstub_set_breakpoint(unsigned long type, unsigned long addr, unsign
|
||||||
if (!(__debug_regs->dcr & DCR_IBE2)) {
|
if (!(__debug_regs->dcr & DCR_IBE2)) {
|
||||||
//gdbstub_printk("set h/w break 2: %08lx\n", addr);
|
//gdbstub_printk("set h/w break 2: %08lx\n", addr);
|
||||||
__debug_regs->dcr |= DCR_IBE2;
|
__debug_regs->dcr |= DCR_IBE2;
|
||||||
|
__debug_regs->ibar[2] = addr;
|
||||||
asm volatile("movgs %0,ibar2" : : "r"(addr));
|
asm volatile("movgs %0,ibar2" : : "r"(addr));
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
@ -947,6 +950,7 @@ static int gdbstub_set_breakpoint(unsigned long type, unsigned long addr, unsign
|
||||||
if (!(__debug_regs->dcr & DCR_IBE3)) {
|
if (!(__debug_regs->dcr & DCR_IBE3)) {
|
||||||
//gdbstub_printk("set h/w break 3: %08lx\n", addr);
|
//gdbstub_printk("set h/w break 3: %08lx\n", addr);
|
||||||
__debug_regs->dcr |= DCR_IBE3;
|
__debug_regs->dcr |= DCR_IBE3;
|
||||||
|
__debug_regs->ibar[3] = addr;
|
||||||
asm volatile("movgs %0,ibar3" : : "r"(addr));
|
asm volatile("movgs %0,ibar3" : : "r"(addr));
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
@ -971,7 +975,14 @@ static int gdbstub_set_breakpoint(unsigned long type, unsigned long addr, unsign
|
||||||
if (!(__debug_regs->dcr & (DCR_DRBE0|DCR_DWBE0))) {
|
if (!(__debug_regs->dcr & (DCR_DRBE0|DCR_DWBE0))) {
|
||||||
//gdbstub_printk("set h/w watchpoint 0 type %ld: %08lx\n", type, addr);
|
//gdbstub_printk("set h/w watchpoint 0 type %ld: %08lx\n", type, addr);
|
||||||
tmp = type==2 ? DCR_DWBE0 : type==3 ? DCR_DRBE0 : DCR_DRBE0|DCR_DWBE0;
|
tmp = type==2 ? DCR_DWBE0 : type==3 ? DCR_DRBE0 : DCR_DRBE0|DCR_DWBE0;
|
||||||
|
|
||||||
__debug_regs->dcr |= tmp;
|
__debug_regs->dcr |= tmp;
|
||||||
|
__debug_regs->dbar[0] = addr;
|
||||||
|
__debug_regs->dbmr[0][0] = dbmr.mask0;
|
||||||
|
__debug_regs->dbmr[0][1] = dbmr.mask1;
|
||||||
|
__debug_regs->dbdr[0][0] = 0;
|
||||||
|
__debug_regs->dbdr[0][1] = 0;
|
||||||
|
|
||||||
asm volatile(" movgs %0,dbar0 \n"
|
asm volatile(" movgs %0,dbar0 \n"
|
||||||
" movgs %1,dbmr00 \n"
|
" movgs %1,dbmr00 \n"
|
||||||
" movgs %2,dbmr01 \n"
|
" movgs %2,dbmr01 \n"
|
||||||
|
@ -984,7 +995,14 @@ static int gdbstub_set_breakpoint(unsigned long type, unsigned long addr, unsign
|
||||||
if (!(__debug_regs->dcr & (DCR_DRBE1|DCR_DWBE1))) {
|
if (!(__debug_regs->dcr & (DCR_DRBE1|DCR_DWBE1))) {
|
||||||
//gdbstub_printk("set h/w watchpoint 1 type %ld: %08lx\n", type, addr);
|
//gdbstub_printk("set h/w watchpoint 1 type %ld: %08lx\n", type, addr);
|
||||||
tmp = type==2 ? DCR_DWBE1 : type==3 ? DCR_DRBE1 : DCR_DRBE1|DCR_DWBE1;
|
tmp = type==2 ? DCR_DWBE1 : type==3 ? DCR_DRBE1 : DCR_DRBE1|DCR_DWBE1;
|
||||||
|
|
||||||
__debug_regs->dcr |= tmp;
|
__debug_regs->dcr |= tmp;
|
||||||
|
__debug_regs->dbar[1] = addr;
|
||||||
|
__debug_regs->dbmr[1][0] = dbmr.mask0;
|
||||||
|
__debug_regs->dbmr[1][1] = dbmr.mask1;
|
||||||
|
__debug_regs->dbdr[1][0] = 0;
|
||||||
|
__debug_regs->dbdr[1][1] = 0;
|
||||||
|
|
||||||
asm volatile(" movgs %0,dbar1 \n"
|
asm volatile(" movgs %0,dbar1 \n"
|
||||||
" movgs %1,dbmr10 \n"
|
" movgs %1,dbmr10 \n"
|
||||||
" movgs %2,dbmr11 \n"
|
" movgs %2,dbmr11 \n"
|
||||||
|
@ -1047,6 +1065,7 @@ int gdbstub_clear_breakpoint(unsigned long type, unsigned long addr, unsigned lo
|
||||||
if (__debug_regs->dcr & DCR_IBE0 && __get_ibar(0) == addr) {
|
if (__debug_regs->dcr & DCR_IBE0 && __get_ibar(0) == addr) {
|
||||||
//gdbstub_printk("clear h/w break 0: %08lx\n", addr);
|
//gdbstub_printk("clear h/w break 0: %08lx\n", addr);
|
||||||
__debug_regs->dcr &= ~DCR_IBE0;
|
__debug_regs->dcr &= ~DCR_IBE0;
|
||||||
|
__debug_regs->ibar[0] = 0;
|
||||||
asm volatile("movgs gr0,ibar0");
|
asm volatile("movgs gr0,ibar0");
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
@ -1054,6 +1073,7 @@ int gdbstub_clear_breakpoint(unsigned long type, unsigned long addr, unsigned lo
|
||||||
if (__debug_regs->dcr & DCR_IBE1 && __get_ibar(1) == addr) {
|
if (__debug_regs->dcr & DCR_IBE1 && __get_ibar(1) == addr) {
|
||||||
//gdbstub_printk("clear h/w break 1: %08lx\n", addr);
|
//gdbstub_printk("clear h/w break 1: %08lx\n", addr);
|
||||||
__debug_regs->dcr &= ~DCR_IBE1;
|
__debug_regs->dcr &= ~DCR_IBE1;
|
||||||
|
__debug_regs->ibar[1] = 0;
|
||||||
asm volatile("movgs gr0,ibar1");
|
asm volatile("movgs gr0,ibar1");
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
@ -1061,6 +1081,7 @@ int gdbstub_clear_breakpoint(unsigned long type, unsigned long addr, unsigned lo
|
||||||
if (__debug_regs->dcr & DCR_IBE2 && __get_ibar(2) == addr) {
|
if (__debug_regs->dcr & DCR_IBE2 && __get_ibar(2) == addr) {
|
||||||
//gdbstub_printk("clear h/w break 2: %08lx\n", addr);
|
//gdbstub_printk("clear h/w break 2: %08lx\n", addr);
|
||||||
__debug_regs->dcr &= ~DCR_IBE2;
|
__debug_regs->dcr &= ~DCR_IBE2;
|
||||||
|
__debug_regs->ibar[2] = 0;
|
||||||
asm volatile("movgs gr0,ibar2");
|
asm volatile("movgs gr0,ibar2");
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
@ -1068,6 +1089,7 @@ int gdbstub_clear_breakpoint(unsigned long type, unsigned long addr, unsigned lo
|
||||||
if (__debug_regs->dcr & DCR_IBE3 && __get_ibar(3) == addr) {
|
if (__debug_regs->dcr & DCR_IBE3 && __get_ibar(3) == addr) {
|
||||||
//gdbstub_printk("clear h/w break 3: %08lx\n", addr);
|
//gdbstub_printk("clear h/w break 3: %08lx\n", addr);
|
||||||
__debug_regs->dcr &= ~DCR_IBE3;
|
__debug_regs->dcr &= ~DCR_IBE3;
|
||||||
|
__debug_regs->ibar[3] = 0;
|
||||||
asm volatile("movgs gr0,ibar3");
|
asm volatile("movgs gr0,ibar3");
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
@ -1104,6 +1126,12 @@ int gdbstub_clear_breakpoint(unsigned long type, unsigned long addr, unsigned lo
|
||||||
|
|
||||||
//gdbstub_printk("clear h/w watchpoint 0 type %ld: %08lx\n", type, addr);
|
//gdbstub_printk("clear h/w watchpoint 0 type %ld: %08lx\n", type, addr);
|
||||||
__debug_regs->dcr &= ~(DCR_DRBE0|DCR_DWBE0);
|
__debug_regs->dcr &= ~(DCR_DRBE0|DCR_DWBE0);
|
||||||
|
__debug_regs->dbar[0] = 0;
|
||||||
|
__debug_regs->dbmr[0][0] = 0;
|
||||||
|
__debug_regs->dbmr[0][1] = 0;
|
||||||
|
__debug_regs->dbdr[0][0] = 0;
|
||||||
|
__debug_regs->dbdr[0][1] = 0;
|
||||||
|
|
||||||
asm volatile(" movgs gr0,dbar0 \n"
|
asm volatile(" movgs gr0,dbar0 \n"
|
||||||
" movgs gr0,dbmr00 \n"
|
" movgs gr0,dbmr00 \n"
|
||||||
" movgs gr0,dbmr01 \n"
|
" movgs gr0,dbmr01 \n"
|
||||||
|
@ -1123,6 +1151,12 @@ int gdbstub_clear_breakpoint(unsigned long type, unsigned long addr, unsigned lo
|
||||||
|
|
||||||
//gdbstub_printk("clear h/w watchpoint 1 type %ld: %08lx\n", type, addr);
|
//gdbstub_printk("clear h/w watchpoint 1 type %ld: %08lx\n", type, addr);
|
||||||
__debug_regs->dcr &= ~(DCR_DRBE1|DCR_DWBE1);
|
__debug_regs->dcr &= ~(DCR_DRBE1|DCR_DWBE1);
|
||||||
|
__debug_regs->dbar[1] = 0;
|
||||||
|
__debug_regs->dbmr[1][0] = 0;
|
||||||
|
__debug_regs->dbmr[1][1] = 0;
|
||||||
|
__debug_regs->dbdr[1][0] = 0;
|
||||||
|
__debug_regs->dbdr[1][1] = 0;
|
||||||
|
|
||||||
asm volatile(" movgs gr0,dbar1 \n"
|
asm volatile(" movgs gr0,dbar1 \n"
|
||||||
" movgs gr0,dbmr10 \n"
|
" movgs gr0,dbmr10 \n"
|
||||||
" movgs gr0,dbmr11 \n"
|
" movgs gr0,dbmr11 \n"
|
||||||
|
@ -1163,7 +1197,7 @@ static void gdbstub_check_breakpoint(void)
|
||||||
*/
|
*/
|
||||||
static void __attribute__((unused)) gdbstub_show_regs(void)
|
static void __attribute__((unused)) gdbstub_show_regs(void)
|
||||||
{
|
{
|
||||||
uint32_t *reg;
|
unsigned long *reg;
|
||||||
int loop;
|
int loop;
|
||||||
|
|
||||||
gdbstub_printk("\n");
|
gdbstub_printk("\n");
|
||||||
|
@ -1172,11 +1206,11 @@ static void __attribute__((unused)) gdbstub_show_regs(void)
|
||||||
__debug_frame,
|
__debug_frame,
|
||||||
__debug_frame->psr & PSR_S ? "kernel" : "user");
|
__debug_frame->psr & PSR_S ? "kernel" : "user");
|
||||||
|
|
||||||
reg = (uint32_t *) __debug_frame;
|
reg = (unsigned long *) __debug_frame;
|
||||||
for (loop = 0; loop < REG__END; loop++) {
|
for (loop = 0; loop < NR_PT_REGS; loop++) {
|
||||||
printk("%s %08x", regnames[loop + 0], reg[loop + 0]);
|
printk("%s %08lx", regnames[loop + 0], reg[loop + 0]);
|
||||||
|
|
||||||
if (loop == REG__END - 1 || loop % 5 == 4)
|
if (loop == NR_PT_REGS - 1 || loop % 5 == 4)
|
||||||
printk("\n");
|
printk("\n");
|
||||||
else
|
else
|
||||||
printk(" | ");
|
printk(" | ");
|
||||||
|
@ -1191,13 +1225,8 @@ static void __attribute__((unused)) gdbstub_show_regs(void)
|
||||||
*/
|
*/
|
||||||
static void __attribute__((unused)) gdbstub_dump_debugregs(void)
|
static void __attribute__((unused)) gdbstub_dump_debugregs(void)
|
||||||
{
|
{
|
||||||
unsigned long x;
|
gdbstub_printk("DCR %08lx ", __debug_status.dcr);
|
||||||
|
gdbstub_printk("BRR %08lx\n", __debug_status.brr);
|
||||||
x = __debug_regs->dcr;
|
|
||||||
gdbstub_printk("DCR %08lx ", x);
|
|
||||||
|
|
||||||
x = __debug_regs->brr;
|
|
||||||
gdbstub_printk("BRR %08lx\n", x);
|
|
||||||
|
|
||||||
gdbstub_printk("IBAR0 %08lx ", __get_ibar(0));
|
gdbstub_printk("IBAR0 %08lx ", __get_ibar(0));
|
||||||
gdbstub_printk("IBAR1 %08lx ", __get_ibar(1));
|
gdbstub_printk("IBAR1 %08lx ", __get_ibar(1));
|
||||||
|
@ -1360,7 +1389,7 @@ void gdbstub(int sigval)
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
save_user_regs(&__break_user_context);
|
save_user_regs(&__debug_frame0->uc);
|
||||||
|
|
||||||
#if 0
|
#if 0
|
||||||
gdbstub_printk("--> gdbstub() %08x %p %08x %08x\n",
|
gdbstub_printk("--> gdbstub() %08x %p %08x %08x\n",
|
||||||
|
@ -1389,8 +1418,8 @@ void gdbstub(int sigval)
|
||||||
__debug_frame->psr &= ~PSR_S;
|
__debug_frame->psr &= ~PSR_S;
|
||||||
if (__debug_frame->psr & PSR_PS)
|
if (__debug_frame->psr & PSR_PS)
|
||||||
__debug_frame->psr |= PSR_S;
|
__debug_frame->psr |= PSR_S;
|
||||||
__debug_regs->brr = (__debug_frame->tbr & TBR_TT) << 12;
|
__debug_status.brr = (__debug_frame->tbr & TBR_TT) << 12;
|
||||||
__debug_regs->brr |= BRR_EB;
|
__debug_status.brr |= BRR_EB;
|
||||||
sigval = SIGINT;
|
sigval = SIGINT;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1404,15 +1433,15 @@ void gdbstub(int sigval)
|
||||||
__debug_frame->psr &= ~PSR_S;
|
__debug_frame->psr &= ~PSR_S;
|
||||||
if (__debug_frame->psr & PSR_PS)
|
if (__debug_frame->psr & PSR_PS)
|
||||||
__debug_frame->psr |= PSR_S;
|
__debug_frame->psr |= PSR_S;
|
||||||
__debug_regs->brr = (__debug_frame->tbr & TBR_TT) << 12;
|
__debug_status.brr = (__debug_frame->tbr & TBR_TT) << 12;
|
||||||
__debug_regs->brr |= BRR_EB;
|
__debug_status.brr |= BRR_EB;
|
||||||
sigval = SIGXCPU;
|
sigval = SIGXCPU;
|
||||||
}
|
}
|
||||||
|
|
||||||
LEDS(0x5002);
|
LEDS(0x5002);
|
||||||
|
|
||||||
/* after a BREAK insn, the PC lands on the far side of it */
|
/* after a BREAK insn, the PC lands on the far side of it */
|
||||||
if (__debug_regs->brr & BRR_SB)
|
if (__debug_status.brr & BRR_SB)
|
||||||
gdbstub_check_breakpoint();
|
gdbstub_check_breakpoint();
|
||||||
|
|
||||||
LEDS(0x5003);
|
LEDS(0x5003);
|
||||||
|
@ -1431,7 +1460,7 @@ void gdbstub(int sigval)
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!sigval)
|
if (!sigval)
|
||||||
sigval = gdbstub_compute_signal(__debug_regs->brr);
|
sigval = gdbstub_compute_signal(__debug_status.brr);
|
||||||
|
|
||||||
LEDS(0x5004);
|
LEDS(0x5004);
|
||||||
|
|
||||||
|
@ -1441,7 +1470,7 @@ void gdbstub(int sigval)
|
||||||
if (sigval != SIGINT && sigval != SIGTRAP && sigval != SIGILL) {
|
if (sigval != SIGINT && sigval != SIGTRAP && sigval != SIGILL) {
|
||||||
static const char title[] = "Break ";
|
static const char title[] = "Break ";
|
||||||
static const char crlf[] = "\r\n";
|
static const char crlf[] = "\r\n";
|
||||||
unsigned long brr = __debug_regs->brr;
|
unsigned long brr = __debug_status.brr;
|
||||||
char hx;
|
char hx;
|
||||||
|
|
||||||
ptr = output_buffer;
|
ptr = output_buffer;
|
||||||
|
@ -1565,28 +1594,24 @@ void gdbstub(int sigval)
|
||||||
ptr = mem2hex(&zero, ptr, 4, 0);
|
ptr = mem2hex(&zero, ptr, 4, 0);
|
||||||
|
|
||||||
for (loop = 1; loop <= 27; loop++)
|
for (loop = 1; loop <= 27; loop++)
|
||||||
ptr = mem2hex((unsigned long *)__debug_frame + REG_GR(loop),
|
ptr = mem2hex(&__debug_user_context->i.gr[loop], ptr, 4, 0);
|
||||||
ptr, 4, 0);
|
|
||||||
temp = (unsigned long) __frame;
|
temp = (unsigned long) __frame;
|
||||||
ptr = mem2hex(&temp, ptr, 4, 0);
|
ptr = mem2hex(&temp, ptr, 4, 0);
|
||||||
ptr = mem2hex((unsigned long *)__debug_frame + REG_GR(29), ptr, 4, 0);
|
ptr = mem2hex(&__debug_user_context->i.gr[29], ptr, 4, 0);
|
||||||
ptr = mem2hex((unsigned long *)__debug_frame + REG_GR(30), ptr, 4, 0);
|
ptr = mem2hex(&__debug_user_context->i.gr[30], ptr, 4, 0);
|
||||||
#ifdef CONFIG_MMU
|
#ifdef CONFIG_MMU
|
||||||
ptr = mem2hex((unsigned long *)__debug_frame + REG_GR(31), ptr, 4, 0);
|
ptr = mem2hex(&__debug_user_context->i.gr[31], ptr, 4, 0);
|
||||||
#else
|
#else
|
||||||
temp = (unsigned long) __debug_frame;
|
temp = (unsigned long) __debug_frame;
|
||||||
ptr = mem2hex(&temp, ptr, 4, 0);
|
ptr = mem2hex(&temp, ptr, 4, 0);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
for (loop = 32; loop <= 63; loop++)
|
for (loop = 32; loop <= 63; loop++)
|
||||||
ptr = mem2hex((unsigned long *)__debug_frame + REG_GR(loop),
|
ptr = mem2hex(&__debug_user_context->i.gr[loop], ptr, 4, 0);
|
||||||
ptr, 4, 0);
|
|
||||||
|
|
||||||
/* deal with FR0-FR63 */
|
/* deal with FR0-FR63 */
|
||||||
for (loop = 0; loop <= 63; loop++)
|
for (loop = 0; loop <= 63; loop++)
|
||||||
ptr = mem2hex((unsigned long *)&__break_user_context +
|
ptr = mem2hex(&__debug_user_context->f.fr[loop], ptr, 4, 0);
|
||||||
__FPMEDIA_FR(loop),
|
|
||||||
ptr, 4, 0);
|
|
||||||
|
|
||||||
/* deal with special registers */
|
/* deal with special registers */
|
||||||
ptr = mem2hex(&__debug_frame->pc, ptr, 4, 0);
|
ptr = mem2hex(&__debug_frame->pc, ptr, 4, 0);
|
||||||
|
@ -1597,7 +1622,7 @@ void gdbstub(int sigval)
|
||||||
ptr = mem2hex(&zero, ptr, 4, 0);
|
ptr = mem2hex(&zero, ptr, 4, 0);
|
||||||
ptr = mem2hex(&zero, ptr, 4, 0);
|
ptr = mem2hex(&zero, ptr, 4, 0);
|
||||||
ptr = mem2hex(&__debug_frame->tbr, ptr, 4, 0);
|
ptr = mem2hex(&__debug_frame->tbr, ptr, 4, 0);
|
||||||
ptr = mem2hex(&__debug_regs->brr , ptr, 4, 0);
|
ptr = mem2hex(&__debug_status.brr , ptr, 4, 0);
|
||||||
|
|
||||||
asm volatile("movsg dbar0,%0" : "=r"(dbar));
|
asm volatile("movsg dbar0,%0" : "=r"(dbar));
|
||||||
ptr = mem2hex(&dbar, ptr, 4, 0);
|
ptr = mem2hex(&dbar, ptr, 4, 0);
|
||||||
|
@ -1622,21 +1647,21 @@ void gdbstub(int sigval)
|
||||||
|
|
||||||
ptr = mem2hex(&__debug_frame->iacc0, ptr, 8, 0);
|
ptr = mem2hex(&__debug_frame->iacc0, ptr, 8, 0);
|
||||||
|
|
||||||
ptr = mem2hex(&__break_user_context.f.fsr[0], ptr, 4, 0);
|
ptr = mem2hex(&__debug_user_context->f.fsr[0], ptr, 4, 0);
|
||||||
|
|
||||||
for (loop = 0; loop <= 7; loop++)
|
for (loop = 0; loop <= 7; loop++)
|
||||||
ptr = mem2hex(&__break_user_context.f.acc[loop], ptr, 4, 0);
|
ptr = mem2hex(&__debug_user_context->f.acc[loop], ptr, 4, 0);
|
||||||
|
|
||||||
ptr = mem2hex(&__break_user_context.f.accg, ptr, 8, 0);
|
ptr = mem2hex(&__debug_user_context->f.accg, ptr, 8, 0);
|
||||||
|
|
||||||
for (loop = 0; loop <= 1; loop++)
|
for (loop = 0; loop <= 1; loop++)
|
||||||
ptr = mem2hex(&__break_user_context.f.msr[loop], ptr, 4, 0);
|
ptr = mem2hex(&__debug_user_context->f.msr[loop], ptr, 4, 0);
|
||||||
|
|
||||||
ptr = mem2hex(&__debug_frame->gner0, ptr, 4, 0);
|
ptr = mem2hex(&__debug_frame->gner0, ptr, 4, 0);
|
||||||
ptr = mem2hex(&__debug_frame->gner1, ptr, 4, 0);
|
ptr = mem2hex(&__debug_frame->gner1, ptr, 4, 0);
|
||||||
|
|
||||||
ptr = mem2hex(&__break_user_context.f.fner[0], ptr, 4, 0);
|
ptr = mem2hex(&__debug_user_context->f.fner[0], ptr, 4, 0);
|
||||||
ptr = mem2hex(&__break_user_context.f.fner[1], ptr, 4, 0);
|
ptr = mem2hex(&__debug_user_context->f.fner[1], ptr, 4, 0);
|
||||||
|
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
@ -1648,8 +1673,7 @@ void gdbstub(int sigval)
|
||||||
ptr = hex2mem(ptr, &temp, 4);
|
ptr = hex2mem(ptr, &temp, 4);
|
||||||
|
|
||||||
for (loop = 1; loop <= 27; loop++)
|
for (loop = 1; loop <= 27; loop++)
|
||||||
ptr = hex2mem(ptr, (unsigned long *)__debug_frame + REG_GR(loop),
|
ptr = hex2mem(ptr, &__debug_user_context->i.gr[loop], 4);
|
||||||
4);
|
|
||||||
|
|
||||||
ptr = hex2mem(ptr, &temp, 4);
|
ptr = hex2mem(ptr, &temp, 4);
|
||||||
__frame = (struct pt_regs *) temp;
|
__frame = (struct pt_regs *) temp;
|
||||||
|
@ -1662,14 +1686,11 @@ void gdbstub(int sigval)
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
for (loop = 32; loop <= 63; loop++)
|
for (loop = 32; loop <= 63; loop++)
|
||||||
ptr = hex2mem(ptr, (unsigned long *)__debug_frame + REG_GR(loop),
|
ptr = hex2mem(ptr, &__debug_user_context->i.gr[loop], 4);
|
||||||
4);
|
|
||||||
|
|
||||||
/* deal with FR0-FR63 */
|
/* deal with FR0-FR63 */
|
||||||
for (loop = 0; loop <= 63; loop++)
|
for (loop = 0; loop <= 63; loop++)
|
||||||
ptr = mem2hex((unsigned long *)&__break_user_context +
|
ptr = mem2hex(&__debug_user_context->f.fr[loop], ptr, 4, 0);
|
||||||
__FPMEDIA_FR(loop),
|
|
||||||
ptr, 4, 0);
|
|
||||||
|
|
||||||
/* deal with special registers */
|
/* deal with special registers */
|
||||||
ptr = hex2mem(ptr, &__debug_frame->pc, 4);
|
ptr = hex2mem(ptr, &__debug_frame->pc, 4);
|
||||||
|
@ -1694,21 +1715,21 @@ void gdbstub(int sigval)
|
||||||
|
|
||||||
ptr = hex2mem(ptr, &__debug_frame->iacc0, 8);
|
ptr = hex2mem(ptr, &__debug_frame->iacc0, 8);
|
||||||
|
|
||||||
ptr = hex2mem(ptr, &__break_user_context.f.fsr[0], 4);
|
ptr = hex2mem(ptr, &__debug_user_context->f.fsr[0], 4);
|
||||||
|
|
||||||
for (loop = 0; loop <= 7; loop++)
|
for (loop = 0; loop <= 7; loop++)
|
||||||
ptr = hex2mem(ptr, &__break_user_context.f.acc[loop], 4);
|
ptr = hex2mem(ptr, &__debug_user_context->f.acc[loop], 4);
|
||||||
|
|
||||||
ptr = hex2mem(ptr, &__break_user_context.f.accg, 8);
|
ptr = hex2mem(ptr, &__debug_user_context->f.accg, 8);
|
||||||
|
|
||||||
for (loop = 0; loop <= 1; loop++)
|
for (loop = 0; loop <= 1; loop++)
|
||||||
ptr = hex2mem(ptr, &__break_user_context.f.msr[loop], 4);
|
ptr = hex2mem(ptr, &__debug_user_context->f.msr[loop], 4);
|
||||||
|
|
||||||
ptr = hex2mem(ptr, &__debug_frame->gner0, 4);
|
ptr = hex2mem(ptr, &__debug_frame->gner0, 4);
|
||||||
ptr = hex2mem(ptr, &__debug_frame->gner1, 4);
|
ptr = hex2mem(ptr, &__debug_frame->gner1, 4);
|
||||||
|
|
||||||
ptr = hex2mem(ptr, &__break_user_context.f.fner[0], 4);
|
ptr = hex2mem(ptr, &__debug_user_context->f.fner[0], 4);
|
||||||
ptr = hex2mem(ptr, &__break_user_context.f.fner[1], 4);
|
ptr = hex2mem(ptr, &__debug_user_context->f.fner[1], 4);
|
||||||
|
|
||||||
gdbstub_strcpy(output_buffer,"OK");
|
gdbstub_strcpy(output_buffer,"OK");
|
||||||
break;
|
break;
|
||||||
|
@ -1769,52 +1790,52 @@ void gdbstub(int sigval)
|
||||||
case GDB_REG_GR(0):
|
case GDB_REG_GR(0):
|
||||||
break;
|
break;
|
||||||
case GDB_REG_GR(1) ... GDB_REG_GR(63):
|
case GDB_REG_GR(1) ... GDB_REG_GR(63):
|
||||||
__break_user_context.i.gr[addr - GDB_REG_GR(0)] = temp;
|
__debug_user_context->i.gr[addr - GDB_REG_GR(0)] = temp;
|
||||||
break;
|
break;
|
||||||
case GDB_REG_FR(0) ... GDB_REG_FR(63):
|
case GDB_REG_FR(0) ... GDB_REG_FR(63):
|
||||||
__break_user_context.f.fr[addr - GDB_REG_FR(0)] = temp;
|
__debug_user_context->f.fr[addr - GDB_REG_FR(0)] = temp;
|
||||||
break;
|
break;
|
||||||
case GDB_REG_PC:
|
case GDB_REG_PC:
|
||||||
__break_user_context.i.pc = temp;
|
__debug_user_context->i.pc = temp;
|
||||||
break;
|
break;
|
||||||
case GDB_REG_PSR:
|
case GDB_REG_PSR:
|
||||||
__break_user_context.i.psr = temp;
|
__debug_user_context->i.psr = temp;
|
||||||
break;
|
break;
|
||||||
case GDB_REG_CCR:
|
case GDB_REG_CCR:
|
||||||
__break_user_context.i.ccr = temp;
|
__debug_user_context->i.ccr = temp;
|
||||||
break;
|
break;
|
||||||
case GDB_REG_CCCR:
|
case GDB_REG_CCCR:
|
||||||
__break_user_context.i.cccr = temp;
|
__debug_user_context->i.cccr = temp;
|
||||||
break;
|
break;
|
||||||
case GDB_REG_BRR:
|
case GDB_REG_BRR:
|
||||||
__debug_regs->brr = temp;
|
__debug_status.brr = temp;
|
||||||
break;
|
break;
|
||||||
case GDB_REG_LR:
|
case GDB_REG_LR:
|
||||||
__break_user_context.i.lr = temp;
|
__debug_user_context->i.lr = temp;
|
||||||
break;
|
break;
|
||||||
case GDB_REG_LCR:
|
case GDB_REG_LCR:
|
||||||
__break_user_context.i.lcr = temp;
|
__debug_user_context->i.lcr = temp;
|
||||||
break;
|
break;
|
||||||
case GDB_REG_FSR0:
|
case GDB_REG_FSR0:
|
||||||
__break_user_context.f.fsr[0] = temp;
|
__debug_user_context->f.fsr[0] = temp;
|
||||||
break;
|
break;
|
||||||
case GDB_REG_ACC(0) ... GDB_REG_ACC(7):
|
case GDB_REG_ACC(0) ... GDB_REG_ACC(7):
|
||||||
__break_user_context.f.acc[addr - GDB_REG_ACC(0)] = temp;
|
__debug_user_context->f.acc[addr - GDB_REG_ACC(0)] = temp;
|
||||||
break;
|
break;
|
||||||
case GDB_REG_ACCG(0):
|
case GDB_REG_ACCG(0):
|
||||||
*(uint32_t *) &__break_user_context.f.accg[0] = temp;
|
*(uint32_t *) &__debug_user_context->f.accg[0] = temp;
|
||||||
break;
|
break;
|
||||||
case GDB_REG_ACCG(4):
|
case GDB_REG_ACCG(4):
|
||||||
*(uint32_t *) &__break_user_context.f.accg[4] = temp;
|
*(uint32_t *) &__debug_user_context->f.accg[4] = temp;
|
||||||
break;
|
break;
|
||||||
case GDB_REG_MSR(0) ... GDB_REG_MSR(1):
|
case GDB_REG_MSR(0) ... GDB_REG_MSR(1):
|
||||||
__break_user_context.f.msr[addr - GDB_REG_MSR(0)] = temp;
|
__debug_user_context->f.msr[addr - GDB_REG_MSR(0)] = temp;
|
||||||
break;
|
break;
|
||||||
case GDB_REG_GNER(0) ... GDB_REG_GNER(1):
|
case GDB_REG_GNER(0) ... GDB_REG_GNER(1):
|
||||||
__break_user_context.i.gner[addr - GDB_REG_GNER(0)] = temp;
|
__debug_user_context->i.gner[addr - GDB_REG_GNER(0)] = temp;
|
||||||
break;
|
break;
|
||||||
case GDB_REG_FNER(0) ... GDB_REG_FNER(1):
|
case GDB_REG_FNER(0) ... GDB_REG_FNER(1):
|
||||||
__break_user_context.f.fner[addr - GDB_REG_FNER(0)] = temp;
|
__debug_user_context->f.fner[addr - GDB_REG_FNER(0)] = temp;
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
temp2 = 0;
|
temp2 = 0;
|
||||||
|
@ -1850,6 +1871,7 @@ void gdbstub(int sigval)
|
||||||
/* step to next instruction */
|
/* step to next instruction */
|
||||||
case 's':
|
case 's':
|
||||||
__debug_regs->dcr |= DCR_SE;
|
__debug_regs->dcr |= DCR_SE;
|
||||||
|
__debug_status.dcr |= DCR_SE;
|
||||||
goto done;
|
goto done;
|
||||||
|
|
||||||
/* set baud rate (bBB) */
|
/* set baud rate (bBB) */
|
||||||
|
@ -1934,7 +1956,7 @@ void gdbstub(int sigval)
|
||||||
}
|
}
|
||||||
|
|
||||||
done:
|
done:
|
||||||
restore_user_regs(&__break_user_context);
|
restore_user_regs(&__debug_frame0->uc);
|
||||||
|
|
||||||
//gdbstub_dump_debugregs();
|
//gdbstub_dump_debugregs();
|
||||||
//gdbstub_printk("<-- gdbstub() %08x\n", __debug_frame->pc);
|
//gdbstub_printk("<-- gdbstub() %08x\n", __debug_frame->pc);
|
||||||
|
@ -1966,7 +1988,6 @@ void __init gdbstub_init(void)
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
gdbstub_printk("%s", gdbstub_banner);
|
gdbstub_printk("%s", gdbstub_banner);
|
||||||
gdbstub_printk("DCR: %x\n", __debug_regs->dcr);
|
|
||||||
|
|
||||||
gdbstub_io_init();
|
gdbstub_io_init();
|
||||||
|
|
||||||
|
|
|
@ -11,6 +11,7 @@
|
||||||
|
|
||||||
#include <linux/threads.h>
|
#include <linux/threads.h>
|
||||||
#include <linux/linkage.h>
|
#include <linux/linkage.h>
|
||||||
|
#include <asm/thread_info.h>
|
||||||
#include <asm/ptrace.h>
|
#include <asm/ptrace.h>
|
||||||
#include <asm/page.h>
|
#include <asm/page.h>
|
||||||
#include <asm/spr-regs.h>
|
#include <asm/spr-regs.h>
|
||||||
|
|
|
@ -51,6 +51,9 @@ extern void (*__power_switch_wake_cleanup)(void);
|
||||||
/* time.c */
|
/* time.c */
|
||||||
extern void time_divisor_init(void);
|
extern void time_divisor_init(void);
|
||||||
|
|
||||||
|
/* cmode.S */
|
||||||
|
extern asmlinkage void frv_change_cmode(int);
|
||||||
|
|
||||||
|
|
||||||
#endif /* __ASSEMBLY__ */
|
#endif /* __ASSEMBLY__ */
|
||||||
#endif /* _FRV_LOCAL_H */
|
#endif /* _FRV_LOCAL_H */
|
||||||
|
|
|
@ -26,11 +26,6 @@
|
||||||
|
|
||||||
#include "local.h"
|
#include "local.h"
|
||||||
|
|
||||||
void (*pm_power_off)(void);
|
|
||||||
EXPORT_SYMBOL(pm_power_off);
|
|
||||||
|
|
||||||
extern void frv_change_cmode(int);
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Debug macros
|
* Debug macros
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -10,6 +10,7 @@
|
||||||
* 2 of the License, or (at your option) any later version.
|
* 2 of the License, or (at your option) any later version.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
#include <linux/module.h>
|
||||||
#include <linux/errno.h>
|
#include <linux/errno.h>
|
||||||
#include <linux/sched.h>
|
#include <linux/sched.h>
|
||||||
#include <linux/kernel.h>
|
#include <linux/kernel.h>
|
||||||
|
@ -25,6 +26,7 @@
|
||||||
#include <linux/reboot.h>
|
#include <linux/reboot.h>
|
||||||
#include <linux/interrupt.h>
|
#include <linux/interrupt.h>
|
||||||
|
|
||||||
|
#include <asm/asm-offsets.h>
|
||||||
#include <asm/uaccess.h>
|
#include <asm/uaccess.h>
|
||||||
#include <asm/system.h>
|
#include <asm/system.h>
|
||||||
#include <asm/setup.h>
|
#include <asm/setup.h>
|
||||||
|
@ -38,6 +40,9 @@ asmlinkage void ret_from_fork(void);
|
||||||
|
|
||||||
#include <asm/pgalloc.h>
|
#include <asm/pgalloc.h>
|
||||||
|
|
||||||
|
void (*pm_power_off)(void);
|
||||||
|
EXPORT_SYMBOL(pm_power_off);
|
||||||
|
|
||||||
struct task_struct *alloc_task_struct(void)
|
struct task_struct *alloc_task_struct(void)
|
||||||
{
|
{
|
||||||
struct task_struct *p = kmalloc(THREAD_SIZE, GFP_KERNEL);
|
struct task_struct *p = kmalloc(THREAD_SIZE, GFP_KERNEL);
|
||||||
|
@ -203,7 +208,7 @@ int copy_thread(int nr, unsigned long clone_flags,
|
||||||
|
|
||||||
regs0 = __kernel_frame0_ptr;
|
regs0 = __kernel_frame0_ptr;
|
||||||
childregs0 = (struct pt_regs *)
|
childregs0 = (struct pt_regs *)
|
||||||
(task_stack_page(p) + THREAD_SIZE - USER_CONTEXT_SIZE);
|
(task_stack_page(p) + THREAD_SIZE - FRV_FRAME0_SIZE);
|
||||||
childregs = childregs0;
|
childregs = childregs0;
|
||||||
|
|
||||||
/* set up the userspace frame (the only place that the USP is stored) */
|
/* set up the userspace frame (the only place that the USP is stored) */
|
||||||
|
@ -367,3 +372,11 @@ int elf_check_arch(const struct elf32_hdr *hdr)
|
||||||
|
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int dump_fpu(struct pt_regs *regs, elf_fpregset_t *fpregs)
|
||||||
|
{
|
||||||
|
memcpy(fpregs,
|
||||||
|
¤t->thread.user->f,
|
||||||
|
sizeof(current->thread.user->f));
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
|
@ -11,6 +11,7 @@
|
||||||
# 2 of the License, or (at your option) any later version.
|
# 2 of the License, or (at your option) any later version.
|
||||||
#
|
#
|
||||||
###############################################################################
|
###############################################################################
|
||||||
|
|
||||||
#include <linux/linkage.h>
|
#include <linux/linkage.h>
|
||||||
#include <asm/thread_info.h>
|
#include <asm/thread_info.h>
|
||||||
#include <asm/processor.h>
|
#include <asm/processor.h>
|
||||||
|
@ -30,7 +31,7 @@
|
||||||
# address of frame 0 (userspace) on current kernel stack
|
# address of frame 0 (userspace) on current kernel stack
|
||||||
.globl __kernel_frame0_ptr
|
.globl __kernel_frame0_ptr
|
||||||
__kernel_frame0_ptr:
|
__kernel_frame0_ptr:
|
||||||
.long init_thread_union + THREAD_SIZE - USER_CONTEXT_SIZE
|
.long init_thread_union + THREAD_SIZE - FRV_FRAME0_SIZE
|
||||||
|
|
||||||
# address of current task
|
# address of current task
|
||||||
.globl __kernel_current_task
|
.globl __kernel_current_task
|
||||||
|
|
|
@ -20,6 +20,7 @@
|
||||||
#include <linux/init.h>
|
#include <linux/init.h>
|
||||||
#include <linux/module.h>
|
#include <linux/module.h>
|
||||||
|
|
||||||
|
#include <asm/asm-offsets.h>
|
||||||
#include <asm/setup.h>
|
#include <asm/setup.h>
|
||||||
#include <asm/fpu.h>
|
#include <asm/fpu.h>
|
||||||
#include <asm/system.h>
|
#include <asm/system.h>
|
||||||
|
@ -279,20 +280,20 @@ static const char *regnames[] = {
|
||||||
|
|
||||||
void show_regs(struct pt_regs *regs)
|
void show_regs(struct pt_regs *regs)
|
||||||
{
|
{
|
||||||
uint32_t *reg;
|
unsigned long *reg;
|
||||||
int loop;
|
int loop;
|
||||||
|
|
||||||
printk("\n");
|
printk("\n");
|
||||||
|
|
||||||
printk("Frame: @%08x [%s]\n",
|
printk("Frame: @%08lx [%s]\n",
|
||||||
(uint32_t) regs,
|
(unsigned long) regs,
|
||||||
regs->psr & PSR_S ? "kernel" : "user");
|
regs->psr & PSR_S ? "kernel" : "user");
|
||||||
|
|
||||||
reg = (uint32_t *) regs;
|
reg = (unsigned long *) regs;
|
||||||
for (loop = 0; loop < REG__END; loop++) {
|
for (loop = 0; loop < NR_PT_REGS; loop++) {
|
||||||
printk("%s %08x", regnames[loop + 0], reg[loop + 0]);
|
printk("%s %08lx", regnames[loop + 0], reg[loop + 0]);
|
||||||
|
|
||||||
if (loop == REG__END - 1 || loop % 5 == 4)
|
if (loop == NR_PT_REGS - 1 || loop % 5 == 4)
|
||||||
printk("\n");
|
printk("\n");
|
||||||
else
|
else
|
||||||
printk(" | ");
|
printk(" | ");
|
||||||
|
@ -328,7 +329,7 @@ void die_if_kernel(const char *str, ...)
|
||||||
*/
|
*/
|
||||||
static void show_backtrace_regs(struct pt_regs *frame)
|
static void show_backtrace_regs(struct pt_regs *frame)
|
||||||
{
|
{
|
||||||
uint32_t *reg;
|
unsigned long *reg;
|
||||||
int loop;
|
int loop;
|
||||||
|
|
||||||
/* print the registers for this frame */
|
/* print the registers for this frame */
|
||||||
|
@ -336,11 +337,11 @@ static void show_backtrace_regs(struct pt_regs *frame)
|
||||||
frame->psr & PSR_S ? "Kernel Mode" : "User Mode",
|
frame->psr & PSR_S ? "Kernel Mode" : "User Mode",
|
||||||
frame);
|
frame);
|
||||||
|
|
||||||
reg = (uint32_t *) frame;
|
reg = (unsigned long *) frame;
|
||||||
for (loop = 0; loop < REG__END; loop++) {
|
for (loop = 0; loop < NR_PT_REGS; loop++) {
|
||||||
printk("%s %08x", regnames[loop + 0], reg[loop + 0]);
|
printk("%s %08lx", regnames[loop + 0], reg[loop + 0]);
|
||||||
|
|
||||||
if (loop == REG__END - 1 || loop % 5 == 4)
|
if (loop == NR_PT_REGS - 1 || loop % 5 == 4)
|
||||||
printk("\n");
|
printk("\n");
|
||||||
else
|
else
|
||||||
printk(" | ");
|
printk(" | ");
|
||||||
|
|
|
@ -406,7 +406,9 @@ int __init pcibios_init(void)
|
||||||
ioport_resource.end = (__reg_MB86943_sl_pci_io_range << 9) | 0x3ff;
|
ioport_resource.end = (__reg_MB86943_sl_pci_io_range << 9) | 0x3ff;
|
||||||
ioport_resource.end += ioport_resource.start;
|
ioport_resource.end += ioport_resource.start;
|
||||||
|
|
||||||
printk("PCI IO window: %08lx-%08lx\n", ioport_resource.start, ioport_resource.end);
|
printk("PCI IO window: %08llx-%08llx\n",
|
||||||
|
(unsigned long long) ioport_resource.start,
|
||||||
|
(unsigned long long) ioport_resource.end);
|
||||||
|
|
||||||
iomem_resource.start = (__reg_MB86943_sl_pci_mem_base << 9) & 0xfffffc00;
|
iomem_resource.start = (__reg_MB86943_sl_pci_mem_base << 9) & 0xfffffc00;
|
||||||
|
|
||||||
|
@ -416,8 +418,11 @@ int __init pcibios_init(void)
|
||||||
iomem_resource.end = (__reg_MB86943_sl_pci_mem_range << 9) | 0x3ff;
|
iomem_resource.end = (__reg_MB86943_sl_pci_mem_range << 9) | 0x3ff;
|
||||||
iomem_resource.end += iomem_resource.start;
|
iomem_resource.end += iomem_resource.start;
|
||||||
|
|
||||||
printk("PCI MEM window: %08lx-%08lx\n", iomem_resource.start, iomem_resource.end);
|
printk("PCI MEM window: %08llx-%08llx\n",
|
||||||
printk("PCI DMA memory: %08lx-%08lx\n", dma_coherent_mem_start, dma_coherent_mem_end);
|
(unsigned long long) iomem_resource.start,
|
||||||
|
(unsigned long long) iomem_resource.end);
|
||||||
|
printk("PCI DMA memory: %08lx-%08lx\n",
|
||||||
|
dma_coherent_mem_start, dma_coherent_mem_end);
|
||||||
|
|
||||||
if (!pci_probe)
|
if (!pci_probe)
|
||||||
return -ENXIO;
|
return -ENXIO;
|
||||||
|
|
|
@ -197,7 +197,7 @@ CONFIG_PM=y
|
||||||
# CONFIG_PM_LEGACY is not set
|
# CONFIG_PM_LEGACY is not set
|
||||||
# CONFIG_PM_DEBUG is not set
|
# CONFIG_PM_DEBUG is not set
|
||||||
CONFIG_SOFTWARE_SUSPEND=y
|
CONFIG_SOFTWARE_SUSPEND=y
|
||||||
CONFIG_PM_STD_PARTITION="/dev/hda2"
|
CONFIG_PM_STD_PARTITION=""
|
||||||
|
|
||||||
#
|
#
|
||||||
# ACPI (Advanced Configuration and Power Interface) Support
|
# ACPI (Advanced Configuration and Power Interface) Support
|
||||||
|
|
|
@ -90,7 +90,7 @@ static void crash_save_self(struct pt_regs *regs)
|
||||||
crash_save_this_cpu(regs, cpu);
|
crash_save_this_cpu(regs, cpu);
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef CONFIG_SMP
|
#if defined(CONFIG_SMP) && defined(CONFIG_X86_LOCAL_APIC)
|
||||||
static atomic_t waiting_for_crash_ipi;
|
static atomic_t waiting_for_crash_ipi;
|
||||||
|
|
||||||
static int crash_nmi_callback(struct pt_regs *regs, int cpu)
|
static int crash_nmi_callback(struct pt_regs *regs, int cpu)
|
||||||
|
|
|
@ -79,6 +79,7 @@ asmlinkage long sys_ioperm(unsigned long from, unsigned long num, int turn_on)
|
||||||
|
|
||||||
memset(bitmap, 0xff, IO_BITMAP_BYTES);
|
memset(bitmap, 0xff, IO_BITMAP_BYTES);
|
||||||
t->io_bitmap_ptr = bitmap;
|
t->io_bitmap_ptr = bitmap;
|
||||||
|
set_thread_flag(TIF_IO_BITMAP);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|
|
@ -359,16 +359,16 @@ EXPORT_SYMBOL(kernel_thread);
|
||||||
*/
|
*/
|
||||||
void exit_thread(void)
|
void exit_thread(void)
|
||||||
{
|
{
|
||||||
struct task_struct *tsk = current;
|
|
||||||
struct thread_struct *t = &tsk->thread;
|
|
||||||
|
|
||||||
/* The process may have allocated an io port bitmap... nuke it. */
|
/* The process may have allocated an io port bitmap... nuke it. */
|
||||||
if (unlikely(NULL != t->io_bitmap_ptr)) {
|
if (unlikely(test_thread_flag(TIF_IO_BITMAP))) {
|
||||||
|
struct task_struct *tsk = current;
|
||||||
|
struct thread_struct *t = &tsk->thread;
|
||||||
int cpu = get_cpu();
|
int cpu = get_cpu();
|
||||||
struct tss_struct *tss = &per_cpu(init_tss, cpu);
|
struct tss_struct *tss = &per_cpu(init_tss, cpu);
|
||||||
|
|
||||||
kfree(t->io_bitmap_ptr);
|
kfree(t->io_bitmap_ptr);
|
||||||
t->io_bitmap_ptr = NULL;
|
t->io_bitmap_ptr = NULL;
|
||||||
|
clear_thread_flag(TIF_IO_BITMAP);
|
||||||
/*
|
/*
|
||||||
* Careful, clear this in the TSS too:
|
* Careful, clear this in the TSS too:
|
||||||
*/
|
*/
|
||||||
|
@ -387,6 +387,7 @@ void flush_thread(void)
|
||||||
|
|
||||||
memset(tsk->thread.debugreg, 0, sizeof(unsigned long)*8);
|
memset(tsk->thread.debugreg, 0, sizeof(unsigned long)*8);
|
||||||
memset(tsk->thread.tls_array, 0, sizeof(tsk->thread.tls_array));
|
memset(tsk->thread.tls_array, 0, sizeof(tsk->thread.tls_array));
|
||||||
|
clear_tsk_thread_flag(tsk, TIF_DEBUG);
|
||||||
/*
|
/*
|
||||||
* Forget coprocessor state..
|
* Forget coprocessor state..
|
||||||
*/
|
*/
|
||||||
|
@ -431,7 +432,7 @@ int copy_thread(int nr, unsigned long clone_flags, unsigned long esp,
|
||||||
savesegment(gs,p->thread.gs);
|
savesegment(gs,p->thread.gs);
|
||||||
|
|
||||||
tsk = current;
|
tsk = current;
|
||||||
if (unlikely(NULL != tsk->thread.io_bitmap_ptr)) {
|
if (unlikely(test_tsk_thread_flag(tsk, TIF_IO_BITMAP))) {
|
||||||
p->thread.io_bitmap_ptr = kmalloc(IO_BITMAP_BYTES, GFP_KERNEL);
|
p->thread.io_bitmap_ptr = kmalloc(IO_BITMAP_BYTES, GFP_KERNEL);
|
||||||
if (!p->thread.io_bitmap_ptr) {
|
if (!p->thread.io_bitmap_ptr) {
|
||||||
p->thread.io_bitmap_max = 0;
|
p->thread.io_bitmap_max = 0;
|
||||||
|
@ -439,6 +440,7 @@ int copy_thread(int nr, unsigned long clone_flags, unsigned long esp,
|
||||||
}
|
}
|
||||||
memcpy(p->thread.io_bitmap_ptr, tsk->thread.io_bitmap_ptr,
|
memcpy(p->thread.io_bitmap_ptr, tsk->thread.io_bitmap_ptr,
|
||||||
IO_BITMAP_BYTES);
|
IO_BITMAP_BYTES);
|
||||||
|
set_tsk_thread_flag(p, TIF_IO_BITMAP);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -533,10 +535,24 @@ int dump_task_regs(struct task_struct *tsk, elf_gregset_t *regs)
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
static inline void
|
static noinline void __switch_to_xtra(struct task_struct *next_p,
|
||||||
handle_io_bitmap(struct thread_struct *next, struct tss_struct *tss)
|
struct tss_struct *tss)
|
||||||
{
|
{
|
||||||
if (!next->io_bitmap_ptr) {
|
struct thread_struct *next;
|
||||||
|
|
||||||
|
next = &next_p->thread;
|
||||||
|
|
||||||
|
if (test_tsk_thread_flag(next_p, TIF_DEBUG)) {
|
||||||
|
set_debugreg(next->debugreg[0], 0);
|
||||||
|
set_debugreg(next->debugreg[1], 1);
|
||||||
|
set_debugreg(next->debugreg[2], 2);
|
||||||
|
set_debugreg(next->debugreg[3], 3);
|
||||||
|
/* no 4 and 5 */
|
||||||
|
set_debugreg(next->debugreg[6], 6);
|
||||||
|
set_debugreg(next->debugreg[7], 7);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!test_tsk_thread_flag(next_p, TIF_IO_BITMAP)) {
|
||||||
/*
|
/*
|
||||||
* Disable the bitmap via an invalid offset. We still cache
|
* Disable the bitmap via an invalid offset. We still cache
|
||||||
* the previous bitmap owner and the IO bitmap contents:
|
* the previous bitmap owner and the IO bitmap contents:
|
||||||
|
@ -544,6 +560,7 @@ handle_io_bitmap(struct thread_struct *next, struct tss_struct *tss)
|
||||||
tss->io_bitmap_base = INVALID_IO_BITMAP_OFFSET;
|
tss->io_bitmap_base = INVALID_IO_BITMAP_OFFSET;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (likely(next == tss->io_bitmap_owner)) {
|
if (likely(next == tss->io_bitmap_owner)) {
|
||||||
/*
|
/*
|
||||||
* Previous owner of the bitmap (hence the bitmap content)
|
* Previous owner of the bitmap (hence the bitmap content)
|
||||||
|
@ -671,20 +688,11 @@ struct task_struct fastcall * __switch_to(struct task_struct *prev_p, struct tas
|
||||||
set_iopl_mask(next->iopl);
|
set_iopl_mask(next->iopl);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Now maybe reload the debug registers
|
* Now maybe handle debug registers and/or IO bitmaps
|
||||||
*/
|
*/
|
||||||
if (unlikely(next->debugreg[7])) {
|
if (unlikely((task_thread_info(next_p)->flags & _TIF_WORK_CTXSW))
|
||||||
set_debugreg(next->debugreg[0], 0);
|
|| test_tsk_thread_flag(prev_p, TIF_IO_BITMAP))
|
||||||
set_debugreg(next->debugreg[1], 1);
|
__switch_to_xtra(next_p, tss);
|
||||||
set_debugreg(next->debugreg[2], 2);
|
|
||||||
set_debugreg(next->debugreg[3], 3);
|
|
||||||
/* no 4 and 5 */
|
|
||||||
set_debugreg(next->debugreg[6], 6);
|
|
||||||
set_debugreg(next->debugreg[7], 7);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (unlikely(prev->io_bitmap_ptr || next->io_bitmap_ptr))
|
|
||||||
handle_io_bitmap(next, tss);
|
|
||||||
|
|
||||||
disable_tsc(prev_p, next_p);
|
disable_tsc(prev_p, next_p);
|
||||||
|
|
||||||
|
|
|
@ -468,8 +468,11 @@ long arch_ptrace(struct task_struct *child, long request, long addr, long data)
|
||||||
for(i=0; i<4; i++)
|
for(i=0; i<4; i++)
|
||||||
if ((0x5f54 >> ((data >> (16 + 4*i)) & 0xf)) & 1)
|
if ((0x5f54 >> ((data >> (16 + 4*i)) & 0xf)) & 1)
|
||||||
goto out_tsk;
|
goto out_tsk;
|
||||||
|
if (data)
|
||||||
|
set_tsk_thread_flag(child, TIF_DEBUG);
|
||||||
|
else
|
||||||
|
clear_tsk_thread_flag(child, TIF_DEBUG);
|
||||||
}
|
}
|
||||||
|
|
||||||
addr -= (long) &dummy->u_debugreg;
|
addr -= (long) &dummy->u_debugreg;
|
||||||
addr = addr >> 2;
|
addr = addr >> 2;
|
||||||
child->thread.debugreg[addr] = data;
|
child->thread.debugreg[addr] = data;
|
||||||
|
|
|
@ -26,7 +26,7 @@
|
||||||
#include <linux/sched.h>
|
#include <linux/sched.h>
|
||||||
#include <linux/mm.h>
|
#include <linux/mm.h>
|
||||||
#include <linux/mmzone.h>
|
#include <linux/mmzone.h>
|
||||||
#include <linux/tty.h>
|
#include <linux/screen_info.h>
|
||||||
#include <linux/ioport.h>
|
#include <linux/ioport.h>
|
||||||
#include <linux/acpi.h>
|
#include <linux/acpi.h>
|
||||||
#include <linux/apm_bios.h>
|
#include <linux/apm_bios.h>
|
||||||
|
@ -1327,7 +1327,10 @@ legacy_init_iomem_resources(struct resource *code_resource, struct resource *dat
|
||||||
res->start = e820.map[i].addr;
|
res->start = e820.map[i].addr;
|
||||||
res->end = res->start + e820.map[i].size - 1;
|
res->end = res->start + e820.map[i].size - 1;
|
||||||
res->flags = IORESOURCE_MEM | IORESOURCE_BUSY;
|
res->flags = IORESOURCE_MEM | IORESOURCE_BUSY;
|
||||||
request_resource(&iomem_resource, res);
|
if (request_resource(&iomem_resource, res)) {
|
||||||
|
kfree(res);
|
||||||
|
continue;
|
||||||
|
}
|
||||||
if (e820.map[i].type == E820_RAM) {
|
if (e820.map[i].type == E820_RAM) {
|
||||||
/*
|
/*
|
||||||
* We don't know which RAM region contains kernel data,
|
* We don't know which RAM region contains kernel data,
|
||||||
|
|
|
@ -206,15 +206,16 @@ irqreturn_t timer_interrupt(int irq, void *dev_id, struct pt_regs *regs)
|
||||||
unsigned long get_cmos_time(void)
|
unsigned long get_cmos_time(void)
|
||||||
{
|
{
|
||||||
unsigned long retval;
|
unsigned long retval;
|
||||||
|
unsigned long flags;
|
||||||
|
|
||||||
spin_lock(&rtc_lock);
|
spin_lock_irqsave(&rtc_lock, flags);
|
||||||
|
|
||||||
if (efi_enabled)
|
if (efi_enabled)
|
||||||
retval = efi_get_time();
|
retval = efi_get_time();
|
||||||
else
|
else
|
||||||
retval = mach_get_cmos_time();
|
retval = mach_get_cmos_time();
|
||||||
|
|
||||||
spin_unlock(&rtc_lock);
|
spin_unlock_irqrestore(&rtc_lock, flags);
|
||||||
|
|
||||||
return retval;
|
return retval;
|
||||||
}
|
}
|
||||||
|
|
|
@ -100,13 +100,13 @@ int register_die_notifier(struct notifier_block *nb)
|
||||||
vmalloc_sync_all();
|
vmalloc_sync_all();
|
||||||
return atomic_notifier_chain_register(&i386die_chain, nb);
|
return atomic_notifier_chain_register(&i386die_chain, nb);
|
||||||
}
|
}
|
||||||
EXPORT_SYMBOL(register_die_notifier);
|
EXPORT_SYMBOL(register_die_notifier); /* used modular by kdb */
|
||||||
|
|
||||||
int unregister_die_notifier(struct notifier_block *nb)
|
int unregister_die_notifier(struct notifier_block *nb)
|
||||||
{
|
{
|
||||||
return atomic_notifier_chain_unregister(&i386die_chain, nb);
|
return atomic_notifier_chain_unregister(&i386die_chain, nb);
|
||||||
}
|
}
|
||||||
EXPORT_SYMBOL(unregister_die_notifier);
|
EXPORT_SYMBOL(unregister_die_notifier); /* used modular by kdb */
|
||||||
|
|
||||||
static inline int valid_stack_ptr(struct thread_info *tinfo, void *p)
|
static inline int valid_stack_ptr(struct thread_info *tinfo, void *p)
|
||||||
{
|
{
|
||||||
|
@ -324,35 +324,35 @@ void show_registers(struct pt_regs *regs)
|
||||||
|
|
||||||
static void handle_BUG(struct pt_regs *regs)
|
static void handle_BUG(struct pt_regs *regs)
|
||||||
{
|
{
|
||||||
|
unsigned long eip = regs->eip;
|
||||||
unsigned short ud2;
|
unsigned short ud2;
|
||||||
unsigned short line;
|
|
||||||
char *file;
|
|
||||||
char c;
|
|
||||||
unsigned long eip;
|
|
||||||
|
|
||||||
eip = regs->eip;
|
|
||||||
|
|
||||||
if (eip < PAGE_OFFSET)
|
if (eip < PAGE_OFFSET)
|
||||||
goto no_bug;
|
return;
|
||||||
if (__get_user(ud2, (unsigned short __user *)eip))
|
if (__get_user(ud2, (unsigned short __user *)eip))
|
||||||
goto no_bug;
|
return;
|
||||||
if (ud2 != 0x0b0f)
|
if (ud2 != 0x0b0f)
|
||||||
goto no_bug;
|
return;
|
||||||
if (__get_user(line, (unsigned short __user *)(eip + 2)))
|
|
||||||
goto bug;
|
|
||||||
if (__get_user(file, (char * __user *)(eip + 4)) ||
|
|
||||||
(unsigned long)file < PAGE_OFFSET || __get_user(c, file))
|
|
||||||
file = "<bad filename>";
|
|
||||||
|
|
||||||
printk(KERN_EMERG "------------[ cut here ]------------\n");
|
printk(KERN_EMERG "------------[ cut here ]------------\n");
|
||||||
printk(KERN_EMERG "kernel BUG at %s:%d!\n", file, line);
|
|
||||||
|
|
||||||
no_bug:
|
#ifdef CONFIG_DEBUG_BUGVERBOSE
|
||||||
return;
|
do {
|
||||||
|
unsigned short line;
|
||||||
|
char *file;
|
||||||
|
char c;
|
||||||
|
|
||||||
/* Here we know it was a BUG but file-n-line is unavailable */
|
if (__get_user(line, (unsigned short __user *)(eip + 2)))
|
||||||
bug:
|
break;
|
||||||
printk(KERN_EMERG "Kernel BUG\n");
|
if (__get_user(file, (char * __user *)(eip + 4)) ||
|
||||||
|
(unsigned long)file < PAGE_OFFSET || __get_user(c, file))
|
||||||
|
file = "<bad filename>";
|
||||||
|
|
||||||
|
printk(KERN_EMERG "kernel BUG at %s:%d!\n", file, line);
|
||||||
|
return;
|
||||||
|
} while (0);
|
||||||
|
#endif
|
||||||
|
printk(KERN_EMERG "Kernel BUG at [verbose debug info unavailable]\n");
|
||||||
}
|
}
|
||||||
|
|
||||||
/* This is gone through when something in the kernel
|
/* This is gone through when something in the kernel
|
||||||
|
|
|
@ -843,7 +843,6 @@ unsigned long __copy_from_user_ll_nocache_nozero(void *to, const void __user *fr
|
||||||
unsigned long
|
unsigned long
|
||||||
copy_to_user(void __user *to, const void *from, unsigned long n)
|
copy_to_user(void __user *to, const void *from, unsigned long n)
|
||||||
{
|
{
|
||||||
might_sleep();
|
|
||||||
BUG_ON((long) n < 0);
|
BUG_ON((long) n < 0);
|
||||||
if (access_ok(VERIFY_WRITE, to, n))
|
if (access_ok(VERIFY_WRITE, to, n))
|
||||||
n = __copy_to_user(to, from, n);
|
n = __copy_to_user(to, from, n);
|
||||||
|
@ -870,7 +869,6 @@ EXPORT_SYMBOL(copy_to_user);
|
||||||
unsigned long
|
unsigned long
|
||||||
copy_from_user(void *to, const void __user *from, unsigned long n)
|
copy_from_user(void *to, const void __user *from, unsigned long n)
|
||||||
{
|
{
|
||||||
might_sleep();
|
|
||||||
BUG_ON((long) n < 0);
|
BUG_ON((long) n < 0);
|
||||||
if (access_ok(VERIFY_READ, from, n))
|
if (access_ok(VERIFY_READ, from, n))
|
||||||
n = __copy_from_user(to, from, n);
|
n = __copy_from_user(to, from, n);
|
||||||
|
|
|
@ -13,6 +13,7 @@
|
||||||
#include <linux/oprofile.h>
|
#include <linux/oprofile.h>
|
||||||
#include <linux/sysdev.h>
|
#include <linux/sysdev.h>
|
||||||
#include <linux/slab.h>
|
#include <linux/slab.h>
|
||||||
|
#include <linux/moduleparam.h>
|
||||||
#include <asm/nmi.h>
|
#include <asm/nmi.h>
|
||||||
#include <asm/msr.h>
|
#include <asm/msr.h>
|
||||||
#include <asm/apic.h>
|
#include <asm/apic.h>
|
||||||
|
@ -296,12 +297,14 @@ static int nmi_create_files(struct super_block * sb, struct dentry * root)
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static int p4force;
|
||||||
|
module_param(p4force, int, 0);
|
||||||
|
|
||||||
static int __init p4_init(char ** cpu_type)
|
static int __init p4_init(char ** cpu_type)
|
||||||
{
|
{
|
||||||
__u8 cpu_model = boot_cpu_data.x86_model;
|
__u8 cpu_model = boot_cpu_data.x86_model;
|
||||||
|
|
||||||
if (cpu_model > 4)
|
if (!p4force && (cpu_model > 6 || cpu_model == 5))
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
#ifndef CONFIG_SMP
|
#ifndef CONFIG_SMP
|
||||||
|
|
|
@ -17,10 +17,6 @@
|
||||||
|
|
||||||
#include "pci.h"
|
#include "pci.h"
|
||||||
|
|
||||||
#ifdef CONFIG_PCI_BIOS
|
|
||||||
extern void pcibios_sort(void);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
unsigned int pci_probe = PCI_PROBE_BIOS | PCI_PROBE_CONF1 | PCI_PROBE_CONF2 |
|
unsigned int pci_probe = PCI_PROBE_BIOS | PCI_PROBE_CONF1 | PCI_PROBE_CONF2 |
|
||||||
PCI_PROBE_MMCONF;
|
PCI_PROBE_MMCONF;
|
||||||
|
|
||||||
|
|
|
@ -84,4 +84,4 @@ extern int pci_conf1_read(unsigned int seg, unsigned int bus,
|
||||||
extern void pci_direct_init(void);
|
extern void pci_direct_init(void);
|
||||||
extern void pci_pcbios_init(void);
|
extern void pci_pcbios_init(void);
|
||||||
extern void pci_mmcfg_init(void);
|
extern void pci_mmcfg_init(void);
|
||||||
|
extern void pcibios_sort(void);
|
||||||
|
|
|
@ -14,7 +14,7 @@
|
||||||
#include <linux/kernel.h>
|
#include <linux/kernel.h>
|
||||||
#include <linux/kdev_t.h>
|
#include <linux/kdev_t.h>
|
||||||
#include <linux/string.h>
|
#include <linux/string.h>
|
||||||
#include <linux/tty.h>
|
#include <linux/screen_info.h>
|
||||||
#include <linux/console.h>
|
#include <linux/console.h>
|
||||||
#include <linux/timex.h>
|
#include <linux/timex.h>
|
||||||
#include <linux/sched.h>
|
#include <linux/sched.h>
|
||||||
|
|
|
@ -759,7 +759,7 @@ valid_phys_addr_range (unsigned long phys_addr, unsigned long size)
|
||||||
}
|
}
|
||||||
|
|
||||||
int
|
int
|
||||||
valid_mmap_phys_addr_range (unsigned long phys_addr, unsigned long size)
|
valid_mmap_phys_addr_range (unsigned long pfn, unsigned long size)
|
||||||
{
|
{
|
||||||
/*
|
/*
|
||||||
* MMIO regions are often missing from the EFI memory map.
|
* MMIO regions are often missing from the EFI memory map.
|
||||||
|
|
|
@ -35,7 +35,7 @@
|
||||||
#include <linux/seq_file.h>
|
#include <linux/seq_file.h>
|
||||||
#include <linux/string.h>
|
#include <linux/string.h>
|
||||||
#include <linux/threads.h>
|
#include <linux/threads.h>
|
||||||
#include <linux/tty.h>
|
#include <linux/screen_info.h>
|
||||||
#include <linux/dmi.h>
|
#include <linux/dmi.h>
|
||||||
#include <linux/serial.h>
|
#include <linux/serial.h>
|
||||||
#include <linux/serial_core.h>
|
#include <linux/serial_core.h>
|
||||||
|
|
|
@ -650,7 +650,7 @@ pci_mmap_legacy_page_range(struct pci_bus *bus, struct vm_area_struct *vma)
|
||||||
* Avoid attribute aliasing. See Documentation/ia64/aliasing.txt
|
* Avoid attribute aliasing. See Documentation/ia64/aliasing.txt
|
||||||
* for more details.
|
* for more details.
|
||||||
*/
|
*/
|
||||||
if (!valid_mmap_phys_addr_range(vma->vm_pgoff << PAGE_SHIFT, size))
|
if (!valid_mmap_phys_addr_range(vma->vm_pgoff, size))
|
||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
prot = phys_mem_access_prot(NULL, vma->vm_pgoff, size,
|
prot = phys_mem_access_prot(NULL, vma->vm_pgoff, size,
|
||||||
vma->vm_page_prot);
|
vma->vm_page_prot);
|
||||||
|
|
|
@ -12,7 +12,7 @@
|
||||||
#include <linux/kernel.h>
|
#include <linux/kernel.h>
|
||||||
#include <linux/kdev_t.h>
|
#include <linux/kdev_t.h>
|
||||||
#include <linux/string.h>
|
#include <linux/string.h>
|
||||||
#include <linux/tty.h>
|
#include <linux/screen_info.h>
|
||||||
#include <linux/console.h>
|
#include <linux/console.h>
|
||||||
#include <linux/timex.h>
|
#include <linux/timex.h>
|
||||||
#include <linux/sched.h>
|
#include <linux/sched.h>
|
||||||
|
|
|
@ -21,7 +21,7 @@
|
||||||
#include <linux/root_dev.h>
|
#include <linux/root_dev.h>
|
||||||
#include <linux/seq_file.h>
|
#include <linux/seq_file.h>
|
||||||
#include <linux/timex.h>
|
#include <linux/timex.h>
|
||||||
#include <linux/tty.h>
|
#include <linux/screen_info.h>
|
||||||
#include <linux/cpu.h>
|
#include <linux/cpu.h>
|
||||||
#include <linux/nodemask.h>
|
#include <linux/nodemask.h>
|
||||||
#include <linux/pfn.h>
|
#include <linux/pfn.h>
|
||||||
|
|
|
@ -480,6 +480,7 @@ config MOMENCO_OCELOT_G
|
||||||
select SYS_SUPPORTS_32BIT_KERNEL
|
select SYS_SUPPORTS_32BIT_KERNEL
|
||||||
select SYS_SUPPORTS_64BIT_KERNEL
|
select SYS_SUPPORTS_64BIT_KERNEL
|
||||||
select SYS_SUPPORTS_BIG_ENDIAN
|
select SYS_SUPPORTS_BIG_ENDIAN
|
||||||
|
select ARCH_SPARSEMEM_ENABLE
|
||||||
help
|
help
|
||||||
The Ocelot is a MIPS-based Single Board Computer (SBC) made by
|
The Ocelot is a MIPS-based Single Board Computer (SBC) made by
|
||||||
Momentum Computer <http://www.momenco.com/>.
|
Momentum Computer <http://www.momenco.com/>.
|
||||||
|
@ -556,6 +557,7 @@ config QEMU
|
||||||
select SYS_HAS_CPU_MIPS32_R1
|
select SYS_HAS_CPU_MIPS32_R1
|
||||||
select SYS_SUPPORTS_32BIT_KERNEL
|
select SYS_SUPPORTS_32BIT_KERNEL
|
||||||
select SYS_SUPPORTS_BIG_ENDIAN
|
select SYS_SUPPORTS_BIG_ENDIAN
|
||||||
|
select ARCH_SPARSEMEM_ENABLE
|
||||||
help
|
help
|
||||||
Qemu is a software emulator which among other architectures also
|
Qemu is a software emulator which among other architectures also
|
||||||
can simulate a MIPS32 4Kc system. This patch adds support for the
|
can simulate a MIPS32 4Kc system. This patch adds support for the
|
||||||
|
@ -594,7 +596,6 @@ config SGI_IP22
|
||||||
select SYS_SUPPORTS_32BIT_KERNEL
|
select SYS_SUPPORTS_32BIT_KERNEL
|
||||||
select SYS_SUPPORTS_64BIT_KERNEL
|
select SYS_SUPPORTS_64BIT_KERNEL
|
||||||
select SYS_SUPPORTS_BIG_ENDIAN
|
select SYS_SUPPORTS_BIG_ENDIAN
|
||||||
select SYS_SUPPORTS_SMP
|
|
||||||
help
|
help
|
||||||
This are the SGI Indy, Challenge S and Indigo2, as well as certain
|
This are the SGI Indy, Challenge S and Indigo2, as well as certain
|
||||||
OEM variants like the Tandem CMN B006S. To compile a Linux kernel
|
OEM variants like the Tandem CMN B006S. To compile a Linux kernel
|
||||||
|
@ -1688,6 +1689,13 @@ config ARCH_DISCONTIGMEM_ENABLE
|
||||||
or have huge holes in the physical address space for other reasons.
|
or have huge holes in the physical address space for other reasons.
|
||||||
See <file:Documentation/vm/numa> for more.
|
See <file:Documentation/vm/numa> for more.
|
||||||
|
|
||||||
|
config ARCH_SPARSEMEM_ENABLE
|
||||||
|
bool
|
||||||
|
|
||||||
|
config ARCH_SPARSEMEM_ENABLE
|
||||||
|
bool
|
||||||
|
select SPARSEMEM_STATIC
|
||||||
|
|
||||||
config NUMA
|
config NUMA
|
||||||
bool "NUMA Support"
|
bool "NUMA Support"
|
||||||
depends on SYS_SUPPORTS_NUMA
|
depends on SYS_SUPPORTS_NUMA
|
||||||
|
|
|
@ -1,5 +1,9 @@
|
||||||
menu "Kernel hacking"
|
menu "Kernel hacking"
|
||||||
|
|
||||||
|
config TRACE_IRQFLAGS_SUPPORT
|
||||||
|
bool
|
||||||
|
default y
|
||||||
|
|
||||||
source "lib/Kconfig.debug"
|
source "lib/Kconfig.debug"
|
||||||
|
|
||||||
config CROSSCOMPILE
|
config CROSSCOMPILE
|
||||||
|
|
|
@ -712,16 +712,14 @@ endif
|
||||||
vmlinux.bin: $(vmlinux-32)
|
vmlinux.bin: $(vmlinux-32)
|
||||||
+@$(call makeboot,$@)
|
+@$(call makeboot,$@)
|
||||||
|
|
||||||
vmlinux.ecoff vmlinux.rm200: $(vmlinux-32)
|
vmlinux.ecoff: $(vmlinux-32)
|
||||||
+@$(call makeboot,$@)
|
+@$(call makeboot,$@)
|
||||||
|
|
||||||
vmlinux.srec: $(vmlinux-32)
|
vmlinux.srec: $(vmlinux-32)
|
||||||
+@$(call makeboot,$@)
|
+@$(call makeboot,$@)
|
||||||
|
|
||||||
CLEAN_FILES += vmlinux.ecoff \
|
CLEAN_FILES += vmlinux.ecoff \
|
||||||
vmlinux.srec \
|
vmlinux.srec
|
||||||
vmlinux.rm200.tmp \
|
|
||||||
vmlinux.rm200
|
|
||||||
|
|
||||||
archclean:
|
archclean:
|
||||||
@$(MAKE) $(clean)=arch/mips/boot
|
@$(MAKE) $(clean)=arch/mips/boot
|
||||||
|
|
|
@ -251,7 +251,7 @@ void restore_local_and_enable(int controller, unsigned long mask)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
static struct hw_interrupt_type rise_edge_irq_type = {
|
static struct irq_chip rise_edge_irq_type = {
|
||||||
.typename = "Au1000 Rise Edge",
|
.typename = "Au1000 Rise Edge",
|
||||||
.startup = startup_irq,
|
.startup = startup_irq,
|
||||||
.shutdown = shutdown_irq,
|
.shutdown = shutdown_irq,
|
||||||
|
@ -261,7 +261,7 @@ static struct hw_interrupt_type rise_edge_irq_type = {
|
||||||
.end = end_irq,
|
.end = end_irq,
|
||||||
};
|
};
|
||||||
|
|
||||||
static struct hw_interrupt_type fall_edge_irq_type = {
|
static struct irq_chip fall_edge_irq_type = {
|
||||||
.typename = "Au1000 Fall Edge",
|
.typename = "Au1000 Fall Edge",
|
||||||
.startup = startup_irq,
|
.startup = startup_irq,
|
||||||
.shutdown = shutdown_irq,
|
.shutdown = shutdown_irq,
|
||||||
|
@ -271,7 +271,7 @@ static struct hw_interrupt_type fall_edge_irq_type = {
|
||||||
.end = end_irq,
|
.end = end_irq,
|
||||||
};
|
};
|
||||||
|
|
||||||
static struct hw_interrupt_type either_edge_irq_type = {
|
static struct irq_chip either_edge_irq_type = {
|
||||||
.typename = "Au1000 Rise or Fall Edge",
|
.typename = "Au1000 Rise or Fall Edge",
|
||||||
.startup = startup_irq,
|
.startup = startup_irq,
|
||||||
.shutdown = shutdown_irq,
|
.shutdown = shutdown_irq,
|
||||||
|
@ -281,7 +281,7 @@ static struct hw_interrupt_type either_edge_irq_type = {
|
||||||
.end = end_irq,
|
.end = end_irq,
|
||||||
};
|
};
|
||||||
|
|
||||||
static struct hw_interrupt_type level_irq_type = {
|
static struct irq_chip level_irq_type = {
|
||||||
.typename = "Au1000 Level",
|
.typename = "Au1000 Level",
|
||||||
.startup = startup_irq,
|
.startup = startup_irq,
|
||||||
.shutdown = shutdown_irq,
|
.shutdown = shutdown_irq,
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
/*
|
/*
|
||||||
*
|
*
|
||||||
* BRIEF MODULE DESCRIPTION
|
* BRIEF MODULE DESCRIPTION
|
||||||
* PROM library initialisation code, assuming YAMON is the boot loader.
|
* PROM library initialisation code, supports YAMON and U-Boot.
|
||||||
*
|
*
|
||||||
* Copyright 2000, 2001, 2006 MontaVista Software Inc.
|
* Copyright 2000, 2001, 2006 MontaVista Software Inc.
|
||||||
* Author: MontaVista Software, Inc.
|
* Author: MontaVista Software, Inc.
|
||||||
|
@ -46,12 +46,6 @@
|
||||||
extern int prom_argc;
|
extern int prom_argc;
|
||||||
extern char **prom_argv, **prom_envp;
|
extern char **prom_argv, **prom_envp;
|
||||||
|
|
||||||
typedef struct
|
|
||||||
{
|
|
||||||
char *name;
|
|
||||||
char *val;
|
|
||||||
} t_env_var;
|
|
||||||
|
|
||||||
|
|
||||||
char * prom_getcmdline(void)
|
char * prom_getcmdline(void)
|
||||||
{
|
{
|
||||||
|
@ -84,13 +78,21 @@ char *prom_getenv(char *envname)
|
||||||
{
|
{
|
||||||
/*
|
/*
|
||||||
* Return a pointer to the given environment variable.
|
* Return a pointer to the given environment variable.
|
||||||
|
* YAMON uses "name", "value" pairs, while U-Boot uses "name=value".
|
||||||
*/
|
*/
|
||||||
|
|
||||||
t_env_var *env = (t_env_var *)prom_envp;
|
char **env = prom_envp;
|
||||||
|
int i = strlen(envname);
|
||||||
|
int yamon = (*env && strchr(*env, '=') == NULL);
|
||||||
|
|
||||||
while (env->name) {
|
while (*env) {
|
||||||
if (strcmp(envname, env->name) == 0)
|
if (yamon) {
|
||||||
return env->val;
|
if (strcmp(envname, *env++) == 0)
|
||||||
|
return *env;
|
||||||
|
} else {
|
||||||
|
if (strncmp(envname, *env, i) == 0 && (*env)[i] == '=')
|
||||||
|
return *env + i + 1;
|
||||||
|
}
|
||||||
env++;
|
env++;
|
||||||
}
|
}
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|
|
@ -51,7 +51,6 @@ extern void au1000_power_off(void);
|
||||||
extern void au1x_time_init(void);
|
extern void au1x_time_init(void);
|
||||||
extern void au1x_timer_setup(struct irqaction *irq);
|
extern void au1x_timer_setup(struct irqaction *irq);
|
||||||
extern void au1xxx_time_init(void);
|
extern void au1xxx_time_init(void);
|
||||||
extern void au1xxx_timer_setup(struct irqaction *irq);
|
|
||||||
extern void set_cpuspec(void);
|
extern void set_cpuspec(void);
|
||||||
|
|
||||||
void __init plat_mem_setup(void)
|
void __init plat_mem_setup(void)
|
||||||
|
@ -123,7 +122,6 @@ void __init plat_mem_setup(void)
|
||||||
_machine_halt = au1000_halt;
|
_machine_halt = au1000_halt;
|
||||||
pm_power_off = au1000_power_off;
|
pm_power_off = au1000_power_off;
|
||||||
board_time_init = au1xxx_time_init;
|
board_time_init = au1xxx_time_init;
|
||||||
board_timer_setup = au1xxx_timer_setup;
|
|
||||||
|
|
||||||
/* IO/MEM resources. */
|
/* IO/MEM resources. */
|
||||||
set_io_port_base(0);
|
set_io_port_base(0);
|
||||||
|
|
|
@ -383,7 +383,7 @@ static unsigned long do_fast_pm_gettimeoffset(void)
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
void __init au1xxx_timer_setup(struct irqaction *irq)
|
void __init plat_timer_setup(struct irqaction *irq)
|
||||||
{
|
{
|
||||||
unsigned int est_freq;
|
unsigned int est_freq;
|
||||||
|
|
||||||
|
|
|
@ -1,8 +0,0 @@
|
||||||
#
|
|
||||||
# Copyright 2002 Cogent Computer Systems
|
|
||||||
# dan@embeddededge.com
|
|
||||||
#
|
|
||||||
# Makefile for the Cogent CSB250 Au1500 board. Copied from Pb1500.
|
|
||||||
#
|
|
||||||
|
|
||||||
obj-y := init.o board_setup.o irqmap.o
|
|
|
@ -1,238 +0,0 @@
|
||||||
/*
|
|
||||||
*
|
|
||||||
* BRIEF MODULE DESCRIPTION
|
|
||||||
* Cogent CSB250 board setup.
|
|
||||||
*
|
|
||||||
* Copyright 2002 Cogent Computer Systems, Inc.
|
|
||||||
* dan@embeddededge.com
|
|
||||||
*
|
|
||||||
* This program is free software; you can redistribute it and/or modify it
|
|
||||||
* under the terms of the GNU General Public License as published by the
|
|
||||||
* Free Software Foundation; either version 2 of the License, or (at your
|
|
||||||
* option) any later version.
|
|
||||||
*
|
|
||||||
* THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED
|
|
||||||
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
|
|
||||||
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN
|
|
||||||
* NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
|
|
||||||
* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
|
|
||||||
* NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
|
|
||||||
* USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
|
|
||||||
* ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
|
||||||
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
|
|
||||||
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
||||||
*
|
|
||||||
* You should have received a copy of the GNU General Public License along
|
|
||||||
* with this program; if not, write to the Free Software Foundation, Inc.,
|
|
||||||
* 675 Mass Ave, Cambridge, MA 02139, USA.
|
|
||||||
*/
|
|
||||||
#include <linux/init.h>
|
|
||||||
#include <linux/sched.h>
|
|
||||||
#include <linux/ioport.h>
|
|
||||||
#include <linux/mm.h>
|
|
||||||
#include <linux/console.h>
|
|
||||||
#include <linux/mc146818rtc.h>
|
|
||||||
#include <linux/delay.h>
|
|
||||||
|
|
||||||
#include <asm/cpu.h>
|
|
||||||
#include <asm/bootinfo.h>
|
|
||||||
#include <asm/irq.h>
|
|
||||||
#include <asm/keyboard.h>
|
|
||||||
#include <asm/mipsregs.h>
|
|
||||||
#include <asm/reboot.h>
|
|
||||||
#include <asm/pgtable.h>
|
|
||||||
#include <asm/au1000.h>
|
|
||||||
#include <asm/csb250.h>
|
|
||||||
|
|
||||||
extern int (*board_pci_idsel)(unsigned int devsel, int assert);
|
|
||||||
int csb250_pci_idsel(unsigned int devsel, int assert);
|
|
||||||
|
|
||||||
void __init board_setup(void)
|
|
||||||
{
|
|
||||||
u32 pin_func, pin_val;
|
|
||||||
u32 sys_freqctrl, sys_clksrc;
|
|
||||||
|
|
||||||
|
|
||||||
// set AUX clock to 12MHz * 8 = 96 MHz
|
|
||||||
au_writel(8, SYS_AUXPLL);
|
|
||||||
au_writel(0, SYS_PINSTATERD);
|
|
||||||
udelay(100);
|
|
||||||
|
|
||||||
#if defined (CONFIG_USB_OHCI) || defined (CONFIG_AU1X00_USB_DEVICE)
|
|
||||||
|
|
||||||
/* GPIO201 is input for PCMCIA card detect */
|
|
||||||
/* GPIO203 is input for PCMCIA interrupt request */
|
|
||||||
au_writel(au_readl(GPIO2_DIR) & (u32)(~((1<<1)|(1<<3))), GPIO2_DIR);
|
|
||||||
|
|
||||||
/* zero and disable FREQ2 */
|
|
||||||
sys_freqctrl = au_readl(SYS_FREQCTRL0);
|
|
||||||
sys_freqctrl &= ~0xFFF00000;
|
|
||||||
au_writel(sys_freqctrl, SYS_FREQCTRL0);
|
|
||||||
|
|
||||||
/* zero and disable USBH/USBD clocks */
|
|
||||||
sys_clksrc = au_readl(SYS_CLKSRC);
|
|
||||||
sys_clksrc &= ~0x00007FE0;
|
|
||||||
au_writel(sys_clksrc, SYS_CLKSRC);
|
|
||||||
|
|
||||||
sys_freqctrl = au_readl(SYS_FREQCTRL0);
|
|
||||||
sys_freqctrl &= ~0xFFF00000;
|
|
||||||
|
|
||||||
sys_clksrc = au_readl(SYS_CLKSRC);
|
|
||||||
sys_clksrc &= ~0x00007FE0;
|
|
||||||
|
|
||||||
// FREQ2 = aux/2 = 48 MHz
|
|
||||||
sys_freqctrl |= ((0<<22) | (1<<21) | (1<<20));
|
|
||||||
au_writel(sys_freqctrl, SYS_FREQCTRL0);
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Route 48MHz FREQ2 into USB Host and/or Device
|
|
||||||
*/
|
|
||||||
#ifdef CONFIG_USB_OHCI
|
|
||||||
sys_clksrc |= ((4<<12) | (0<<11) | (0<<10));
|
|
||||||
#endif
|
|
||||||
#ifdef CONFIG_AU1X00_USB_DEVICE
|
|
||||||
sys_clksrc |= ((4<<7) | (0<<6) | (0<<5));
|
|
||||||
#endif
|
|
||||||
au_writel(sys_clksrc, SYS_CLKSRC);
|
|
||||||
|
|
||||||
|
|
||||||
pin_func = au_readl(SYS_PINFUNC) & (u32)(~0x8000);
|
|
||||||
#ifndef CONFIG_AU1X00_USB_DEVICE
|
|
||||||
// 2nd USB port is USB host
|
|
||||||
pin_func |= 0x8000;
|
|
||||||
#endif
|
|
||||||
au_writel(pin_func, SYS_PINFUNC);
|
|
||||||
#endif // defined (CONFIG_USB_OHCI) || defined (CONFIG_AU1X00_USB_DEVICE)
|
|
||||||
|
|
||||||
/* Configure GPIO2....it's used by PCI among other things.
|
|
||||||
*/
|
|
||||||
|
|
||||||
/* Make everything but GP200 (PCI RST) an input until we get
|
|
||||||
* the pins set correctly.
|
|
||||||
*/
|
|
||||||
au_writel(0x00000001, GPIO2_DIR);
|
|
||||||
|
|
||||||
/* Set the pins used for output.
|
|
||||||
* A zero bit will leave PCI reset, LEDs off, power up USB,
|
|
||||||
* IDSEL disabled.
|
|
||||||
*/
|
|
||||||
pin_val = ((3 << 30) | (7 << 19) | (1 << 17) | (1 << 16));
|
|
||||||
au_writel(pin_val, GPIO2_OUTPUT);
|
|
||||||
|
|
||||||
/* Set the output direction.
|
|
||||||
*/
|
|
||||||
pin_val = ((3 << 14) | (7 << 3) | (1 << 1) | (1 << 0));
|
|
||||||
au_writel(pin_val, GPIO2_DIR);
|
|
||||||
|
|
||||||
#ifdef CONFIG_PCI
|
|
||||||
/* Use FREQ1 for the PCI output clock. We use the
|
|
||||||
* CPU clock of 384 MHz divided by 12 to get 32 MHz PCI.
|
|
||||||
* If Michael changes the CPU speed, we need to adjust
|
|
||||||
* that here as well :-).
|
|
||||||
*/
|
|
||||||
|
|
||||||
/* zero and disable FREQ1
|
|
||||||
*/
|
|
||||||
sys_freqctrl = au_readl(SYS_FREQCTRL0);
|
|
||||||
sys_freqctrl &= ~0x000ffc00;
|
|
||||||
au_writel(sys_freqctrl, SYS_FREQCTRL0);
|
|
||||||
|
|
||||||
/* zero and disable PCI clock
|
|
||||||
*/
|
|
||||||
sys_clksrc = au_readl(SYS_CLKSRC);
|
|
||||||
sys_clksrc &= ~0x000f8000;
|
|
||||||
au_writel(sys_clksrc, SYS_CLKSRC);
|
|
||||||
|
|
||||||
/* Get current values (which really should match above).
|
|
||||||
*/
|
|
||||||
sys_freqctrl = au_readl(SYS_FREQCTRL0);
|
|
||||||
sys_freqctrl &= ~0x000ffc00;
|
|
||||||
|
|
||||||
sys_clksrc = au_readl(SYS_CLKSRC);
|
|
||||||
sys_clksrc &= ~0x000f8000;
|
|
||||||
|
|
||||||
/* FREQ1 = cpu/12 = 32 MHz
|
|
||||||
*/
|
|
||||||
sys_freqctrl |= ((5<<12) | (1<<11) | (0<<10));
|
|
||||||
au_writel(sys_freqctrl, SYS_FREQCTRL0);
|
|
||||||
|
|
||||||
/* Just connect the clock without further dividing.
|
|
||||||
*/
|
|
||||||
sys_clksrc |= ((3<<17) | (0<<16) | (0<<15));
|
|
||||||
au_writel(sys_clksrc, SYS_CLKSRC);
|
|
||||||
|
|
||||||
udelay(1);
|
|
||||||
|
|
||||||
/* Now that clocks should be running, take PCI out of reset.
|
|
||||||
*/
|
|
||||||
pin_val = au_readl(GPIO2_OUTPUT);
|
|
||||||
pin_val |= ((1 << 16) | 1);
|
|
||||||
au_writel(pin_val, GPIO2_OUTPUT);
|
|
||||||
|
|
||||||
// Setup PCI bus controller
|
|
||||||
au_writel(0, Au1500_PCI_CMEM);
|
|
||||||
au_writel(0x00003fff, Au1500_CFG_BASE);
|
|
||||||
|
|
||||||
/* We run big endian without any of the software byte swapping,
|
|
||||||
* so configure the PCI bridge to help us out.
|
|
||||||
*/
|
|
||||||
au_writel(0xf | (2<<6) | (1<<5) | (1<<4), Au1500_PCI_CFG);
|
|
||||||
|
|
||||||
au_writel(0xf0000000, Au1500_PCI_MWMASK_DEV);
|
|
||||||
au_writel(0, Au1500_PCI_MWBASE_REV_CCL);
|
|
||||||
au_writel(0x02a00356, Au1500_PCI_STATCMD);
|
|
||||||
au_writel(0x00003c04, Au1500_PCI_HDRTYPE);
|
|
||||||
au_writel(0x00000008, Au1500_PCI_MBAR);
|
|
||||||
au_sync();
|
|
||||||
|
|
||||||
board_pci_idsel = csb250_pci_idsel;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/* Enable sys bus clock divider when IDLE state or no bus activity. */
|
|
||||||
au_writel(au_readl(SYS_POWERCTRL) | (0x3 << 5), SYS_POWERCTRL);
|
|
||||||
|
|
||||||
#ifdef CONFIG_RTC
|
|
||||||
// Enable the RTC if not already enabled
|
|
||||||
if (!(au_readl(0xac000028) & 0x20)) {
|
|
||||||
printk("enabling clock ...\n");
|
|
||||||
au_writel((au_readl(0xac000028) | 0x20), 0xac000028);
|
|
||||||
}
|
|
||||||
// Put the clock in BCD mode
|
|
||||||
if (readl(0xac00002C) & 0x4) { /* reg B */
|
|
||||||
au_writel(au_readl(0xac00002c) & ~0x4, 0xac00002c);
|
|
||||||
au_sync();
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
}
|
|
||||||
|
|
||||||
/* The IDSEL is selected in the GPIO2 register. We will make device
|
|
||||||
* 12 appear in slot 0 and device 13 appear in slot 1.
|
|
||||||
*/
|
|
||||||
int
|
|
||||||
csb250_pci_idsel(unsigned int devsel, int assert)
|
|
||||||
{
|
|
||||||
int retval;
|
|
||||||
unsigned int gpio2_pins;
|
|
||||||
|
|
||||||
retval = 1;
|
|
||||||
|
|
||||||
/* First, disable both selects, then assert the one requested.
|
|
||||||
*/
|
|
||||||
au_writel(0xc000c000, GPIO2_OUTPUT);
|
|
||||||
au_sync();
|
|
||||||
|
|
||||||
if (assert) {
|
|
||||||
if (devsel == 12)
|
|
||||||
gpio2_pins = 0x40000000;
|
|
||||||
else if (devsel == 13)
|
|
||||||
gpio2_pins = 0x80000000;
|
|
||||||
else {
|
|
||||||
gpio2_pins = 0xc000c000;
|
|
||||||
retval = 0;
|
|
||||||
}
|
|
||||||
au_writel(gpio2_pins, GPIO2_OUTPUT);
|
|
||||||
}
|
|
||||||
au_sync();
|
|
||||||
|
|
||||||
return retval;
|
|
||||||
}
|
|
|
@ -1,94 +0,0 @@
|
||||||
/*
|
|
||||||
*
|
|
||||||
* BRIEF MODULE DESCRIPTION
|
|
||||||
* Cogent CSB250 board setup
|
|
||||||
*
|
|
||||||
* Copyright 2002 Cogent Computer Systems, Inc.
|
|
||||||
* dan@embeddededge.com
|
|
||||||
*
|
|
||||||
* This program is free software; you can redistribute it and/or modify it
|
|
||||||
* under the terms of the GNU General Public License as published by the
|
|
||||||
* Free Software Foundation; either version 2 of the License, or (at your
|
|
||||||
* option) any later version.
|
|
||||||
*
|
|
||||||
* THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED
|
|
||||||
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
|
|
||||||
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN
|
|
||||||
* NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
|
|
||||||
* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
|
|
||||||
* NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
|
|
||||||
* USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
|
|
||||||
* ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
|
||||||
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
|
|
||||||
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
||||||
*
|
|
||||||
* You should have received a copy of the GNU General Public License along
|
|
||||||
* with this program; if not, write to the Free Software Foundation, Inc.,
|
|
||||||
* 675 Mass Ave, Cambridge, MA 02139, USA.
|
|
||||||
*/
|
|
||||||
|
|
||||||
#include <linux/init.h>
|
|
||||||
#include <linux/mm.h>
|
|
||||||
#include <linux/sched.h>
|
|
||||||
#include <linux/bootmem.h>
|
|
||||||
#include <asm/addrspace.h>
|
|
||||||
#include <asm/bootinfo.h>
|
|
||||||
#include <linux/string.h>
|
|
||||||
#include <linux/kernel.h>
|
|
||||||
|
|
||||||
int prom_argc;
|
|
||||||
char **prom_argv, **prom_envp;
|
|
||||||
extern void __init prom_init_cmdline(void);
|
|
||||||
extern char *prom_getenv(char *envname);
|
|
||||||
|
|
||||||
/* When we get initrd working someday.........
|
|
||||||
*/
|
|
||||||
int my_initrd_start, my_initrd_size;
|
|
||||||
|
|
||||||
/* Start arguments and environment.
|
|
||||||
*/
|
|
||||||
static char *csb_env[2];
|
|
||||||
static char *csb_arg[4];
|
|
||||||
static char *arg1 = "console=ttyS3,38400";
|
|
||||||
static char *arg2 = "root=/dev/nfs rw ip=any";
|
|
||||||
static char *env1 = "ethaddr=00:30:23:50:00:00";
|
|
||||||
|
|
||||||
const char *get_system_type(void)
|
|
||||||
{
|
|
||||||
return "Cogent CSB250";
|
|
||||||
}
|
|
||||||
|
|
||||||
int __init prom_init(int argc, char **argv, char **envp, int *prom_vec)
|
|
||||||
{
|
|
||||||
unsigned char *memsize_str;
|
|
||||||
unsigned long memsize;
|
|
||||||
|
|
||||||
/* We use a0 and a1 to pass initrd start and size.
|
|
||||||
*/
|
|
||||||
if (((unsigned int) argc > 0) && ((uint)argv > 0)) {
|
|
||||||
my_initrd_start = (unsigned int)argc;
|
|
||||||
my_initrd_size = (unsigned int)argv;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* First argv is ignored.
|
|
||||||
*/
|
|
||||||
prom_argc = 3;
|
|
||||||
prom_argv = csb_arg;
|
|
||||||
prom_envp = csb_env;
|
|
||||||
csb_arg[1] = arg1;
|
|
||||||
csb_arg[2] = arg2;
|
|
||||||
csb_env[0] = env1;
|
|
||||||
|
|
||||||
mips_machgroup = MACH_GROUP_ALCHEMY;
|
|
||||||
mips_machtype = MACH_CSB250;
|
|
||||||
|
|
||||||
prom_init_cmdline();
|
|
||||||
memsize_str = prom_getenv("memsize");
|
|
||||||
if (!memsize_str) {
|
|
||||||
memsize = 0x02000000;
|
|
||||||
} else {
|
|
||||||
memsize = simple_strtol(memsize_str, NULL, 0);
|
|
||||||
}
|
|
||||||
add_memory_region(0, memsize, BOOT_MEM_RAM);
|
|
||||||
return 0;
|
|
||||||
}
|
|
|
@ -1,60 +0,0 @@
|
||||||
/*
|
|
||||||
* BRIEF MODULE DESCRIPTION
|
|
||||||
* Au1xxx irq map table
|
|
||||||
*
|
|
||||||
* Copyright 2003 Embedded Edge, LLC
|
|
||||||
* dan@embeddededge.com
|
|
||||||
*
|
|
||||||
* This program is free software; you can redistribute it and/or modify it
|
|
||||||
* under the terms of the GNU General Public License as published by the
|
|
||||||
* Free Software Foundation; either version 2 of the License, or (at your
|
|
||||||
* option) any later version.
|
|
||||||
*
|
|
||||||
* THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED
|
|
||||||
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
|
|
||||||
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN
|
|
||||||
* NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
|
|
||||||
* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
|
|
||||||
* NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
|
|
||||||
* USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
|
|
||||||
* ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
|
||||||
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
|
|
||||||
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
||||||
*
|
|
||||||
* You should have received a copy of the GNU General Public License along
|
|
||||||
* with this program; if not, write to the Free Software Foundation, Inc.,
|
|
||||||
* 675 Mass Ave, Cambridge, MA 02139, USA.
|
|
||||||
*/
|
|
||||||
#include <linux/errno.h>
|
|
||||||
#include <linux/init.h>
|
|
||||||
#include <linux/irq.h>
|
|
||||||
#include <linux/kernel_stat.h>
|
|
||||||
#include <linux/module.h>
|
|
||||||
#include <linux/signal.h>
|
|
||||||
#include <linux/sched.h>
|
|
||||||
#include <linux/types.h>
|
|
||||||
#include <linux/interrupt.h>
|
|
||||||
#include <linux/ioport.h>
|
|
||||||
#include <linux/timex.h>
|
|
||||||
#include <linux/slab.h>
|
|
||||||
#include <linux/random.h>
|
|
||||||
#include <linux/delay.h>
|
|
||||||
#include <linux/bitops.h>
|
|
||||||
|
|
||||||
#include <asm/bootinfo.h>
|
|
||||||
#include <asm/io.h>
|
|
||||||
#include <asm/mipsregs.h>
|
|
||||||
#include <asm/system.h>
|
|
||||||
#include <asm/au1000.h>
|
|
||||||
|
|
||||||
au1xxx_irq_map_t __initdata au1xxx_irq_map[] = {
|
|
||||||
|
|
||||||
{ AU1500_GPIO_204, INTC_INT_HIGH_LEVEL, 0},
|
|
||||||
{ AU1500_GPIO_201, INTC_INT_LOW_LEVEL, 0 },
|
|
||||||
{ AU1500_GPIO_202, INTC_INT_LOW_LEVEL, 0 },
|
|
||||||
{ AU1500_GPIO_203, INTC_INT_LOW_LEVEL, 0 },
|
|
||||||
{ AU1500_GPIO_205, INTC_INT_LOW_LEVEL, 0 },
|
|
||||||
{ AU1500_GPIO_207, INTC_INT_LOW_LEVEL, 0 },
|
|
||||||
};
|
|
||||||
|
|
||||||
int __initdata au1xxx_nr_irqs = ARRAY_SIZE(au1xxx_irq_map);
|
|
|
@ -1,9 +0,0 @@
|
||||||
#
|
|
||||||
# Copyright 2000 MontaVista Software Inc.
|
|
||||||
# Author: MontaVista Software, Inc.
|
|
||||||
# ppopov@mvista.com or source@mvista.com
|
|
||||||
#
|
|
||||||
# Makefile for the Alchemy Semiconductor PB1000 board.
|
|
||||||
#
|
|
||||||
|
|
||||||
obj-y := init.o board_setup.o irqmap.o
|
|
|
@ -1,69 +0,0 @@
|
||||||
/*
|
|
||||||
*
|
|
||||||
* BRIEF MODULE DESCRIPTION
|
|
||||||
* Alchemy Db1x00 board setup.
|
|
||||||
*
|
|
||||||
* Copyright 2000 MontaVista Software Inc.
|
|
||||||
* Author: MontaVista Software, Inc.
|
|
||||||
* ppopov@mvista.com or source@mvista.com
|
|
||||||
*
|
|
||||||
* This program is free software; you can redistribute it and/or modify it
|
|
||||||
* under the terms of the GNU General Public License as published by the
|
|
||||||
* Free Software Foundation; either version 2 of the License, or (at your
|
|
||||||
* option) any later version.
|
|
||||||
*
|
|
||||||
* THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED
|
|
||||||
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
|
|
||||||
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN
|
|
||||||
* NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
|
|
||||||
* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
|
|
||||||
* NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
|
|
||||||
* USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
|
|
||||||
* ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
|
||||||
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
|
|
||||||
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
||||||
*
|
|
||||||
* You should have received a copy of the GNU General Public License along
|
|
||||||
* with this program; if not, write to the Free Software Foundation, Inc.,
|
|
||||||
* 675 Mass Ave, Cambridge, MA 02139, USA.
|
|
||||||
*/
|
|
||||||
#include <linux/init.h>
|
|
||||||
#include <linux/sched.h>
|
|
||||||
#include <linux/ioport.h>
|
|
||||||
#include <linux/mm.h>
|
|
||||||
#include <linux/console.h>
|
|
||||||
#include <linux/mc146818rtc.h>
|
|
||||||
#include <linux/delay.h>
|
|
||||||
|
|
||||||
#include <asm/cpu.h>
|
|
||||||
#include <asm/bootinfo.h>
|
|
||||||
#include <asm/irq.h>
|
|
||||||
#include <asm/keyboard.h>
|
|
||||||
#include <asm/mipsregs.h>
|
|
||||||
#include <asm/reboot.h>
|
|
||||||
#include <asm/pgtable.h>
|
|
||||||
#include <asm/au1000.h>
|
|
||||||
|
|
||||||
void board_reset (void)
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
void __init board_setup(void)
|
|
||||||
{
|
|
||||||
u32 pin_func;
|
|
||||||
|
|
||||||
#ifdef CONFIG_AU1X00_USB_DEVICE
|
|
||||||
// 2nd USB port is USB device
|
|
||||||
pin_func = au_readl(SYS_PINFUNC) & (u32)(~0x8000);
|
|
||||||
au_writel(pin_func, SYS_PINFUNC);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if defined(CONFIG_IRDA) && (defined(CONFIG_SOC_AU1000) || defined(CONFIG_SOC_AU1100))
|
|
||||||
/* set IRFIRSEL instead of GPIO15 */
|
|
||||||
pin_func = au_readl(SYS_PINFUNC) | (u32)((1<<8));
|
|
||||||
au_writel(pin_func, SYS_PINFUNC);
|
|
||||||
au_sync();
|
|
||||||
#endif
|
|
||||||
|
|
||||||
printk("AMD Alchemy Hydrogen3 Board\n");
|
|
||||||
}
|
|
|
@ -1,75 +0,0 @@
|
||||||
/*
|
|
||||||
*
|
|
||||||
* BRIEF MODULE DESCRIPTION
|
|
||||||
* PB1000 board setup
|
|
||||||
*
|
|
||||||
* Copyright 2001 MontaVista Software Inc.
|
|
||||||
* Author: MontaVista Software, Inc.
|
|
||||||
* ppopov@mvista.com or source@mvista.com
|
|
||||||
*
|
|
||||||
* This program is free software; you can redistribute it and/or modify it
|
|
||||||
* under the terms of the GNU General Public License as published by the
|
|
||||||
* Free Software Foundation; either version 2 of the License, or (at your
|
|
||||||
* option) any later version.
|
|
||||||
*
|
|
||||||
* THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED
|
|
||||||
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
|
|
||||||
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN
|
|
||||||
* NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
|
|
||||||
* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
|
|
||||||
* NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
|
|
||||||
* USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
|
|
||||||
* ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
|
||||||
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
|
|
||||||
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
||||||
*
|
|
||||||
* You should have received a copy of the GNU General Public License along
|
|
||||||
* with this program; if not, write to the Free Software Foundation, Inc.,
|
|
||||||
* 675 Mass Ave, Cambridge, MA 02139, USA.
|
|
||||||
*/
|
|
||||||
|
|
||||||
#include <linux/init.h>
|
|
||||||
#include <linux/mm.h>
|
|
||||||
#include <linux/sched.h>
|
|
||||||
#include <linux/bootmem.h>
|
|
||||||
#include <asm/addrspace.h>
|
|
||||||
#include <asm/bootinfo.h>
|
|
||||||
#include <linux/string.h>
|
|
||||||
#include <linux/kernel.h>
|
|
||||||
|
|
||||||
int prom_argc;
|
|
||||||
char **prom_argv, **prom_envp;
|
|
||||||
extern void __init prom_init_cmdline(void);
|
|
||||||
extern char *prom_getenv(char *envname);
|
|
||||||
|
|
||||||
const char *get_system_type(void)
|
|
||||||
{
|
|
||||||
#ifdef CONFIG_MIPS_BOSPORUS
|
|
||||||
return "Alchemy Bosporus Gateway Reference";
|
|
||||||
#else
|
|
||||||
return "Alchemy Db1x00";
|
|
||||||
#endif
|
|
||||||
}
|
|
||||||
|
|
||||||
int __init prom_init(int argc, char **argv, char **envp, int *prom_vec)
|
|
||||||
{
|
|
||||||
unsigned char *memsize_str;
|
|
||||||
unsigned long memsize;
|
|
||||||
|
|
||||||
prom_argc = argc;
|
|
||||||
prom_argv = argv;
|
|
||||||
prom_envp = envp;
|
|
||||||
|
|
||||||
mips_machgroup = MACH_GROUP_ALCHEMY;
|
|
||||||
mips_machtype = MACH_DB1000; /* set the platform # */
|
|
||||||
prom_init_cmdline();
|
|
||||||
|
|
||||||
memsize_str = prom_getenv("memsize");
|
|
||||||
if (!memsize_str) {
|
|
||||||
memsize = 0x04000000;
|
|
||||||
} else {
|
|
||||||
memsize = simple_strtol(memsize_str, NULL, 0);
|
|
||||||
}
|
|
||||||
add_memory_region(0, memsize, BOOT_MEM_RAM);
|
|
||||||
return 0;
|
|
||||||
}
|
|
|
@ -1,56 +0,0 @@
|
||||||
/*
|
|
||||||
* BRIEF MODULE DESCRIPTION
|
|
||||||
* Au1xxx irq map table
|
|
||||||
*
|
|
||||||
* Copyright 2003 Embedded Edge, LLC
|
|
||||||
* dan@embeddededge.com
|
|
||||||
*
|
|
||||||
* This program is free software; you can redistribute it and/or modify it
|
|
||||||
* under the terms of the GNU General Public License as published by the
|
|
||||||
* Free Software Foundation; either version 2 of the License, or (at your
|
|
||||||
* option) any later version.
|
|
||||||
*
|
|
||||||
* THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED
|
|
||||||
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
|
|
||||||
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN
|
|
||||||
* NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
|
|
||||||
* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
|
|
||||||
* NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
|
|
||||||
* USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
|
|
||||||
* ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
|
||||||
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
|
|
||||||
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
||||||
*
|
|
||||||
* You should have received a copy of the GNU General Public License along
|
|
||||||
* with this program; if not, write to the Free Software Foundation, Inc.,
|
|
||||||
* 675 Mass Ave, Cambridge, MA 02139, USA.
|
|
||||||
*/
|
|
||||||
#include <linux/errno.h>
|
|
||||||
#include <linux/init.h>
|
|
||||||
#include <linux/irq.h>
|
|
||||||
#include <linux/kernel_stat.h>
|
|
||||||
#include <linux/module.h>
|
|
||||||
#include <linux/signal.h>
|
|
||||||
#include <linux/sched.h>
|
|
||||||
#include <linux/types.h>
|
|
||||||
#include <linux/interrupt.h>
|
|
||||||
#include <linux/ioport.h>
|
|
||||||
#include <linux/timex.h>
|
|
||||||
#include <linux/slab.h>
|
|
||||||
#include <linux/random.h>
|
|
||||||
#include <linux/delay.h>
|
|
||||||
#include <linux/bitops.h>
|
|
||||||
|
|
||||||
#include <asm/bootinfo.h>
|
|
||||||
#include <asm/io.h>
|
|
||||||
#include <asm/mipsregs.h>
|
|
||||||
#include <asm/system.h>
|
|
||||||
#include <asm/au1000.h>
|
|
||||||
|
|
||||||
au1xxx_irq_map_t __initdata au1xxx_irq_map[] = {
|
|
||||||
|
|
||||||
/* { AU1500_GPIO_205, INTC_INT_LOW_LEVEL, 0 }, */
|
|
||||||
{ AU1000_GPIO_21, INTC_INT_LOW_LEVEL, 0 },
|
|
||||||
};
|
|
||||||
|
|
||||||
int __initdata au1xxx_nr_irqs = ARRAY_SIZE(au1xxx_irq_map);
|
|
|
@ -148,7 +148,7 @@ static void pb1200_end_irq(unsigned int irq_nr)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static struct hw_interrupt_type external_irq_type =
|
static struct irq_chip external_irq_type =
|
||||||
{
|
{
|
||||||
#ifdef CONFIG_MIPS_PB1200
|
#ifdef CONFIG_MIPS_PB1200
|
||||||
"Pb1200 Ext",
|
"Pb1200 Ext",
|
||||||
|
|
|
@ -17,7 +17,6 @@
|
||||||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include <linux/config.h>
|
|
||||||
#include <linux/linkage.h>
|
#include <linux/linkage.h>
|
||||||
#include <linux/init.h>
|
#include <linux/init.h>
|
||||||
#include <linux/kernel.h>
|
#include <linux/kernel.h>
|
||||||
|
|
|
@ -17,7 +17,6 @@
|
||||||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include <linux/config.h>
|
|
||||||
#include <linux/kernel.h>
|
#include <linux/kernel.h>
|
||||||
#include <linux/init.h>
|
#include <linux/init.h>
|
||||||
#include <linux/platform_device.h>
|
#include <linux/platform_device.h>
|
||||||
|
|
|
@ -17,7 +17,6 @@
|
||||||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include <linux/config.h>
|
|
||||||
#include <linux/compiler.h>
|
#include <linux/compiler.h>
|
||||||
#include <linux/init.h>
|
#include <linux/init.h>
|
||||||
#include <linux/module.h>
|
#include <linux/module.h>
|
||||||
|
|
|
@ -19,7 +19,6 @@
|
||||||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include <linux/config.h>
|
|
||||||
#include <linux/proc_fs.h>
|
#include <linux/proc_fs.h>
|
||||||
#include <linux/stat.h>
|
#include <linux/stat.h>
|
||||||
#include <asm/page.h>
|
#include <asm/page.h>
|
||||||
|
|
|
@ -18,7 +18,6 @@
|
||||||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include <linux/config.h>
|
|
||||||
#include <linux/init.h>
|
#include <linux/init.h>
|
||||||
#include <linux/sched.h>
|
#include <linux/sched.h>
|
||||||
#include <linux/mm.h>
|
#include <linux/mm.h>
|
||||||
|
|
|
@ -19,7 +19,6 @@
|
||||||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include <linux/config.h>
|
|
||||||
#include <linux/types.h>
|
#include <linux/types.h>
|
||||||
#include <linux/kernel.h>
|
#include <linux/kernel.h>
|
||||||
#include <linux/module.h>
|
#include <linux/module.h>
|
||||||
|
@ -79,7 +78,7 @@ static void excite_timer_init(void)
|
||||||
mips_hpt_frequency = EXCITE_CPU_EXT_CLOCK * mult / div / 2;
|
mips_hpt_frequency = EXCITE_CPU_EXT_CLOCK * mult / div / 2;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void excite_timer_setup(struct irqaction *irq)
|
void __init plat_timer_setup(struct irqaction *irq)
|
||||||
{
|
{
|
||||||
/* The eXcite platform uses the alternate timer interrupt */
|
/* The eXcite platform uses the alternate timer interrupt */
|
||||||
set_c0_intcontrol(0x80);
|
set_c0_intcontrol(0x80);
|
||||||
|
@ -263,7 +262,6 @@ void __init plat_mem_setup(void)
|
||||||
|
|
||||||
/* Set up timer initialization hooks */
|
/* Set up timer initialization hooks */
|
||||||
board_time_init = excite_timer_init;
|
board_time_init = excite_timer_init;
|
||||||
board_timer_setup = excite_timer_setup;
|
|
||||||
|
|
||||||
/* Set up the peripheral address map */
|
/* Set up the peripheral address map */
|
||||||
*(boot_ocd_base + (LKB9 / sizeof (u32))) = 0;
|
*(boot_ocd_base + (LKB9 / sizeof (u32))) = 0;
|
||||||
|
|
Some files were not shown because too many files have changed in this diff Show more
Loading…
Reference in a new issue