forked from Minki/linux
Merge /spare/repo/linux-2.6/
This commit is contained in:
commit
a3536c839f
26
CREDITS
26
CREDITS
@ -2211,6 +2211,15 @@ D: OV511 driver
|
||||
S: (address available on request)
|
||||
S: USA
|
||||
|
||||
N: Ian McDonald
|
||||
E: iam4@cs.waikato.ac.nz
|
||||
E: imcdnzl@gmail.com
|
||||
W: http://wand.net.nz/~iam4
|
||||
W: http://imcdnzl.blogspot.com
|
||||
D: DCCP, CCID3
|
||||
S: Hamilton
|
||||
S: New Zealand
|
||||
|
||||
N: Patrick McHardy
|
||||
E: kaber@trash.net
|
||||
P: 1024D/12155E80 B128 7DE6 FF0A C2B2 48BE AB4C C9D4 964E 1215 5E80
|
||||
@ -2246,19 +2255,12 @@ S: D-90453 Nuernberg
|
||||
S: Germany
|
||||
|
||||
N: Arnaldo Carvalho de Melo
|
||||
E: acme@conectiva.com.br
|
||||
E: acme@kernel.org
|
||||
E: acme@gnu.org
|
||||
W: http://bazar2.conectiva.com.br/~acme
|
||||
W: http://advogato.org/person/acme
|
||||
E: acme@mandriva.com
|
||||
E: acme@ghostprotocols.net
|
||||
W: http://oops.ghostprotocols.net:81/blog/
|
||||
P: 1024D/9224DF01 D5DF E3BB E3C8 BCBB F8AD 841A B6AB 4681 9224 DF01
|
||||
D: wanrouter hacking
|
||||
D: misc Makefile, Config.in, drivers and network stacks fixes
|
||||
D: IPX & LLC network stacks maintainer
|
||||
D: Cyclom 2X synchronous card driver
|
||||
D: wl3501 PCMCIA wireless card driver
|
||||
D: i18n for minicom, net-tools, util-linux, fetchmail, etc
|
||||
S: Conectiva S.A.
|
||||
D: IPX, LLC, DCCP, cyc2x, wl3501_cs, net/ hacks
|
||||
S: Mandriva
|
||||
S: R. Tocantins, 89 - Cristo Rei
|
||||
S: 80050-430 - Curitiba - Paraná
|
||||
S: Brazil
|
||||
|
@ -410,7 +410,26 @@ Kernel messages do not have to be terminated with a period.
|
||||
Printing numbers in parentheses (%d) adds no value and should be avoided.
|
||||
|
||||
|
||||
Chapter 13: References
|
||||
Chapter 13: Allocating memory
|
||||
|
||||
The kernel provides the following general purpose memory allocators:
|
||||
kmalloc(), kzalloc(), kcalloc(), and vmalloc(). Please refer to the API
|
||||
documentation for further information about them.
|
||||
|
||||
The preferred form for passing a size of a struct is the following:
|
||||
|
||||
p = kmalloc(sizeof(*p), ...);
|
||||
|
||||
The alternative form where struct name is spelled out hurts readability and
|
||||
introduces an opportunity for a bug when the pointer variable type is changed
|
||||
but the corresponding sizeof that is passed to a memory allocator is not.
|
||||
|
||||
Casting the return value which is a void pointer is redundant. The conversion
|
||||
from void pointer to any other pointer type is guaranteed by the C programming
|
||||
language.
|
||||
|
||||
|
||||
Chapter 14: References
|
||||
|
||||
The C Programming Language, Second Edition
|
||||
by Brian W. Kernighan and Dennis M. Ritchie.
|
||||
|
@ -1105,7 +1105,7 @@ static struct block_device_operations opt_fops = {
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>
|
||||
Function names as strings (__func__).
|
||||
Function names as strings (__FUNCTION__).
|
||||
</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
|
@ -13,6 +13,8 @@ the BIOS on Dell servers (starting from servers sold since 1999), desktops
|
||||
and notebooks (starting from those sold in 2005).
|
||||
Please go to http://support.dell.com register and you can find info on
|
||||
OpenManage and Dell Update packages (DUP).
|
||||
Libsmbios can also be used to update BIOS on Dell systems go to
|
||||
http://linux.dell.com/libsmbios/ for details.
|
||||
|
||||
Dell_RBU driver supports BIOS update using the monilothic image and packetized
|
||||
image methods. In case of moniolithic the driver allocates a contiguous chunk
|
||||
@ -22,8 +24,8 @@ would place each packet in contiguous physical memory. The driver also
|
||||
maintains a link list of packets for reading them back.
|
||||
If the dell_rbu driver is unloaded all the allocated memory is freed.
|
||||
|
||||
The rbu driver needs to have an application which will inform the BIOS to
|
||||
enable the update in the next system reboot.
|
||||
The rbu driver needs to have an application (as mentioned above)which will
|
||||
inform the BIOS to enable the update in the next system reboot.
|
||||
|
||||
The user should not unload the rbu driver after downloading the BIOS image
|
||||
or updating.
|
||||
@ -42,9 +44,11 @@ In case of packet mechanism the single memory can be broken in smaller chuks
|
||||
of contiguous memory and the BIOS image is scattered in these packets.
|
||||
|
||||
By default the driver uses monolithic memory for the update type. This can be
|
||||
changed to contiguous during the driver load time by specifying the load
|
||||
changed to packets during the driver load time by specifying the load
|
||||
parameter image_type=packet. This can also be changed later as below
|
||||
echo packet > /sys/devices/platform/dell_rbu/image_type
|
||||
Also echoing either mono ,packet or init in to image_type will free up the
|
||||
memory allocated by the driver.
|
||||
|
||||
Do the steps below to download the BIOS image.
|
||||
1) echo 1 > /sys/class/firmware/dell_rbu/loading
|
||||
@ -53,9 +57,13 @@ Do the steps below to download the BIOS image.
|
||||
|
||||
The /sys/class/firmware/dell_rbu/ entries will remain till the following is
|
||||
done.
|
||||
echo -1 > /sys/class/firmware/dell_rbu/loading
|
||||
|
||||
echo -1 > /sys/class/firmware/dell_rbu/loading.
|
||||
Until this step is completed the drivr cannot be unloaded.
|
||||
If an user by accident executes steps 1 and 3 above without executing step 2;
|
||||
it will make the /sys/class/firmware/dell_rbu/ entries to disappear.
|
||||
The entries can be recreated by doing the following
|
||||
echo init > /sys/devices/platform/dell_rbu/image_type
|
||||
NOTE: echoing init in image_type does not change it original value.
|
||||
|
||||
Also the driver provides /sys/devices/platform/dell_rbu/data readonly file to
|
||||
read back the image downloaded. This is useful in case of packet update
|
||||
|
@ -15,7 +15,7 @@ retrieve the data as it becomes available.
|
||||
|
||||
The format of the data logged into the channel buffers is completely
|
||||
up to the relayfs client; relayfs does however provide hooks which
|
||||
allow clients to impose some stucture on the buffer data. Nor does
|
||||
allow clients to impose some structure on the buffer data. Nor does
|
||||
relayfs implement any form of data filtering - this also is left to
|
||||
the client. The purpose is to keep relayfs as simple as possible.
|
||||
|
||||
|
194
Documentation/ia64/mca.txt
Normal file
194
Documentation/ia64/mca.txt
Normal file
@ -0,0 +1,194 @@
|
||||
An ad-hoc collection of notes on IA64 MCA and INIT processing. Feel
|
||||
free to update it with notes about any area that is not clear.
|
||||
|
||||
---
|
||||
|
||||
MCA/INIT are completely asynchronous. They can occur at any time, when
|
||||
the OS is in any state. Including when one of the cpus is already
|
||||
holding a spinlock. Trying to get any lock from MCA/INIT state is
|
||||
asking for deadlock. Also the state of structures that are protected
|
||||
by locks is indeterminate, including linked lists.
|
||||
|
||||
---
|
||||
|
||||
The complicated ia64 MCA process. All of this is mandated by Intel's
|
||||
specification for ia64 SAL, error recovery and and unwind, it is not as
|
||||
if we have a choice here.
|
||||
|
||||
* MCA occurs on one cpu, usually due to a double bit memory error.
|
||||
This is the monarch cpu.
|
||||
|
||||
* SAL sends an MCA rendezvous interrupt (which is a normal interrupt)
|
||||
to all the other cpus, the slaves.
|
||||
|
||||
* Slave cpus that receive the MCA interrupt call down into SAL, they
|
||||
end up spinning disabled while the MCA is being serviced.
|
||||
|
||||
* If any slave cpu was already spinning disabled when the MCA occurred
|
||||
then it cannot service the MCA interrupt. SAL waits ~20 seconds then
|
||||
sends an unmaskable INIT event to the slave cpus that have not
|
||||
already rendezvoused.
|
||||
|
||||
* Because MCA/INIT can be delivered at any time, including when the cpu
|
||||
is down in PAL in physical mode, the registers at the time of the
|
||||
event are _completely_ undefined. In particular the MCA/INIT
|
||||
handlers cannot rely on the thread pointer, PAL physical mode can
|
||||
(and does) modify TP. It is allowed to do that as long as it resets
|
||||
TP on return. However MCA/INIT events expose us to these PAL
|
||||
internal TP changes. Hence curr_task().
|
||||
|
||||
* If an MCA/INIT event occurs while the kernel was running (not user
|
||||
space) and the kernel has called PAL then the MCA/INIT handler cannot
|
||||
assume that the kernel stack is in a fit state to be used. Mainly
|
||||
because PAL may or may not maintain the stack pointer internally.
|
||||
Because the MCA/INIT handlers cannot trust the kernel stack, they
|
||||
have to use their own, per-cpu stacks. The MCA/INIT stacks are
|
||||
preformatted with just enough task state to let the relevant handlers
|
||||
do their job.
|
||||
|
||||
* Unlike most other architectures, the ia64 struct task is embedded in
|
||||
the kernel stack[1]. So switching to a new kernel stack means that
|
||||
we switch to a new task as well. Because various bits of the kernel
|
||||
assume that current points into the struct task, switching to a new
|
||||
stack also means a new value for current.
|
||||
|
||||
* Once all slaves have rendezvoused and are spinning disabled, the
|
||||
monarch is entered. The monarch now tries to diagnose the problem
|
||||
and decide if it can recover or not.
|
||||
|
||||
* Part of the monarch's job is to look at the state of all the other
|
||||
tasks. The only way to do that on ia64 is to call the unwinder,
|
||||
as mandated by Intel.
|
||||
|
||||
* The starting point for the unwind depends on whether a task is
|
||||
running or not. That is, whether it is on a cpu or is blocked. The
|
||||
monarch has to determine whether or not a task is on a cpu before it
|
||||
knows how to start unwinding it. The tasks that received an MCA or
|
||||
INIT event are no longer running, they have been converted to blocked
|
||||
tasks. But (and its a big but), the cpus that received the MCA
|
||||
rendezvous interrupt are still running on their normal kernel stacks!
|
||||
|
||||
* To distinguish between these two cases, the monarch must know which
|
||||
tasks are on a cpu and which are not. Hence each slave cpu that
|
||||
switches to an MCA/INIT stack, registers its new stack using
|
||||
set_curr_task(), so the monarch can tell that the _original_ task is
|
||||
no longer running on that cpu. That gives us a decent chance of
|
||||
getting a valid backtrace of the _original_ task.
|
||||
|
||||
* MCA/INIT can be nested, to a depth of 2 on any cpu. In the case of a
|
||||
nested error, we want diagnostics on the MCA/INIT handler that
|
||||
failed, not on the task that was originally running. Again this
|
||||
requires set_curr_task() so the MCA/INIT handlers can register their
|
||||
own stack as running on that cpu. Then a recursive error gets a
|
||||
trace of the failing handler's "task".
|
||||
|
||||
[1] My (Keith Owens) original design called for ia64 to separate its
|
||||
struct task and the kernel stacks. Then the MCA/INIT data would be
|
||||
chained stacks like i386 interrupt stacks. But that required
|
||||
radical surgery on the rest of ia64, plus extra hard wired TLB
|
||||
entries with its associated performance degradation. David
|
||||
Mosberger vetoed that approach. Which meant that separate kernel
|
||||
stacks meant separate "tasks" for the MCA/INIT handlers.
|
||||
|
||||
---
|
||||
|
||||
INIT is less complicated than MCA. Pressing the nmi button or using
|
||||
the equivalent command on the management console sends INIT to all
|
||||
cpus. SAL picks one one of the cpus as the monarch and the rest are
|
||||
slaves. All the OS INIT handlers are entered at approximately the same
|
||||
time. The OS monarch prints the state of all tasks and returns, after
|
||||
which the slaves return and the system resumes.
|
||||
|
||||
At least that is what is supposed to happen. Alas there are broken
|
||||
versions of SAL out there. Some drive all the cpus as monarchs. Some
|
||||
drive them all as slaves. Some drive one cpu as monarch, wait for that
|
||||
cpu to return from the OS then drive the rest as slaves. Some versions
|
||||
of SAL cannot even cope with returning from the OS, they spin inside
|
||||
SAL on resume. The OS INIT code has workarounds for some of these
|
||||
broken SAL symptoms, but some simply cannot be fixed from the OS side.
|
||||
|
||||
---
|
||||
|
||||
The scheduler hooks used by ia64 (curr_task, set_curr_task) are layer
|
||||
violations. Unfortunately MCA/INIT start off as massive layer
|
||||
violations (can occur at _any_ time) and they build from there.
|
||||
|
||||
At least ia64 makes an attempt at recovering from hardware errors, but
|
||||
it is a difficult problem because of the asynchronous nature of these
|
||||
errors. When processing an unmaskable interrupt we sometimes need
|
||||
special code to cope with our inability to take any locks.
|
||||
|
||||
---
|
||||
|
||||
How is ia64 MCA/INIT different from x86 NMI?
|
||||
|
||||
* x86 NMI typically gets delivered to one cpu. MCA/INIT gets sent to
|
||||
all cpus.
|
||||
|
||||
* x86 NMI cannot be nested. MCA/INIT can be nested, to a depth of 2
|
||||
per cpu.
|
||||
|
||||
* x86 has a separate struct task which points to one of multiple kernel
|
||||
stacks. ia64 has the struct task embedded in the single kernel
|
||||
stack, so switching stack means switching task.
|
||||
|
||||
* x86 does not call the BIOS so the NMI handler does not have to worry
|
||||
about any registers having changed. MCA/INIT can occur while the cpu
|
||||
is in PAL in physical mode, with undefined registers and an undefined
|
||||
kernel stack.
|
||||
|
||||
* i386 backtrace is not very sensitive to whether a process is running
|
||||
or not. ia64 unwind is very, very sensitive to whether a process is
|
||||
running or not.
|
||||
|
||||
---
|
||||
|
||||
What happens when MCA/INIT is delivered what a cpu is running user
|
||||
space code?
|
||||
|
||||
The user mode registers are stored in the RSE area of the MCA/INIT on
|
||||
entry to the OS and are restored from there on return to SAL, so user
|
||||
mode registers are preserved across a recoverable MCA/INIT. Since the
|
||||
OS has no idea what unwind data is available for the user space stack,
|
||||
MCA/INIT never tries to backtrace user space. Which means that the OS
|
||||
does not bother making the user space process look like a blocked task,
|
||||
i.e. the OS does not copy pt_regs and switch_stack to the user space
|
||||
stack. Also the OS has no idea how big the user space RSE and memory
|
||||
stacks are, which makes it too risky to copy the saved state to a user
|
||||
mode stack.
|
||||
|
||||
---
|
||||
|
||||
How do we get a backtrace on the tasks that were running when MCA/INIT
|
||||
was delivered?
|
||||
|
||||
mca.c:::ia64_mca_modify_original_stack(). That identifies and
|
||||
verifies the original kernel stack, copies the dirty registers from
|
||||
the MCA/INIT stack's RSE to the original stack's RSE, copies the
|
||||
skeleton struct pt_regs and switch_stack to the original stack, fills
|
||||
in the skeleton structures from the PAL minstate area and updates the
|
||||
original stack's thread.ksp. That makes the original stack look
|
||||
exactly like any other blocked task, i.e. it now appears to be
|
||||
sleeping. To get a backtrace, just start with thread.ksp for the
|
||||
original task and unwind like any other sleeping task.
|
||||
|
||||
---
|
||||
|
||||
How do we identify the tasks that were running when MCA/INIT was
|
||||
delivered?
|
||||
|
||||
If the previous task has been verified and converted to a blocked
|
||||
state, then sos->prev_task on the MCA/INIT stack is updated to point to
|
||||
the previous task. You can look at that field in dumps or debuggers.
|
||||
To help distinguish between the handler and the original tasks,
|
||||
handlers have _TIF_MCA_INIT set in thread_info.flags.
|
||||
|
||||
The sos data is always in the MCA/INIT handler stack, at offset
|
||||
MCA_SOS_OFFSET. You can get that value from mca_asm.h or calculate it
|
||||
as KERNEL_STACK_SIZE - sizeof(struct pt_regs) - sizeof(struct
|
||||
ia64_sal_os_state), with 16 byte alignment for all structures.
|
||||
|
||||
Also the comm field of the MCA/INIT task is modified to include the pid
|
||||
of the original task, for humans to use. For example, a comm field of
|
||||
'MCA 12159' means that pid 12159 was running when the MCA was
|
||||
delivered.
|
19
MAINTAINERS
19
MAINTAINERS
@ -686,6 +686,13 @@ P: Guennadi Liakhovetski
|
||||
M: g.liakhovetski@gmx.de
|
||||
S: Maintained
|
||||
|
||||
DCCP PROTOCOL
|
||||
P: Arnaldo Carvalho de Melo
|
||||
M: acme@mandriva.com
|
||||
L: dccp@vger.kernel.org
|
||||
W: http://www.wlug.org.nz/DCCP
|
||||
S: Maintained
|
||||
|
||||
DECnet NETWORK LAYER
|
||||
P: Patrick Caulfield
|
||||
M: patrick@tykepenguin.com
|
||||
@ -2259,6 +2266,12 @@ M: kristen.c.accardi@intel.com
|
||||
L: pcihpd-discuss@lists.sourceforge.net
|
||||
S: Maintained
|
||||
|
||||
SKGE, SKY2 10/100/1000 GIGABIT ETHERNET DRIVERS
|
||||
P: Stephen Hemminger
|
||||
M: shemminger@osdl.org
|
||||
L: netdev@vger.kernel.org
|
||||
S: Maintained
|
||||
|
||||
SPARC (sparc32):
|
||||
P: William L. Irwin
|
||||
M: wli@holomorphy.com
|
||||
@ -2271,12 +2284,6 @@ M: R.E.Wolff@BitWizard.nl
|
||||
L: linux-kernel@vger.kernel.org ?
|
||||
S: Supported
|
||||
|
||||
SPX NETWORK LAYER
|
||||
P: Jay Schulist
|
||||
M: jschlst@samba.org
|
||||
L: netdev@vger.kernel.org
|
||||
S: Supported
|
||||
|
||||
SRM (Alpha) environment access
|
||||
P: Jan-Benedict Glaw
|
||||
M: jbglaw@lug-owl.de
|
||||
|
2
Makefile
2
Makefile
@ -1,7 +1,7 @@
|
||||
VERSION = 2
|
||||
PATCHLEVEL = 6
|
||||
SUBLEVEL = 14
|
||||
EXTRAVERSION =-rc1
|
||||
EXTRAVERSION =-rc2
|
||||
NAME=Affluent Albatross
|
||||
|
||||
# *DOCUMENTATION*
|
||||
|
9
README
9
README
@ -149,6 +149,9 @@ CONFIGURING the kernel:
|
||||
"make gconfig" X windows (Gtk) based configuration tool.
|
||||
"make oldconfig" Default all questions based on the contents of
|
||||
your existing ./.config file.
|
||||
"make silentoldconfig"
|
||||
Like above, but avoids cluttering the screen
|
||||
with question already answered.
|
||||
|
||||
NOTES on "make config":
|
||||
- having unnecessary drivers will make the kernel bigger, and can
|
||||
@ -169,9 +172,6 @@ CONFIGURING the kernel:
|
||||
should probably answer 'n' to the questions for
|
||||
"development", "experimental", or "debugging" features.
|
||||
|
||||
- Check the top Makefile for further site-dependent configuration
|
||||
(default SVGA mode etc).
|
||||
|
||||
COMPILING the kernel:
|
||||
|
||||
- Make sure you have gcc 2.95.3 available.
|
||||
@ -199,6 +199,9 @@ COMPILING the kernel:
|
||||
are installing a new kernel with the same version number as your
|
||||
working kernel, make a backup of your modules directory before you
|
||||
do a "make modules_install".
|
||||
In alternative, before compiling, edit your Makefile and change the
|
||||
"EXTRAVERSION" line - its content is appended to the regular kernel
|
||||
version.
|
||||
|
||||
- In order to boot your new kernel, you'll need to copy the kernel
|
||||
image (e.g. .../linux/arch/i386/boot/bzImage after compilation)
|
||||
|
@ -37,6 +37,7 @@
|
||||
#include <linux/namei.h>
|
||||
#include <linux/uio.h>
|
||||
#include <linux/vfs.h>
|
||||
#include <linux/rcupdate.h>
|
||||
|
||||
#include <asm/fpu.h>
|
||||
#include <asm/io.h>
|
||||
@ -975,6 +976,7 @@ osf_select(int n, fd_set __user *inp, fd_set __user *outp, fd_set __user *exp,
|
||||
long timeout;
|
||||
int ret = -EINVAL;
|
||||
struct fdtable *fdt;
|
||||
int max_fdset;
|
||||
|
||||
timeout = MAX_SCHEDULE_TIMEOUT;
|
||||
if (tvp) {
|
||||
@ -996,8 +998,11 @@ osf_select(int n, fd_set __user *inp, fd_set __user *outp, fd_set __user *exp,
|
||||
}
|
||||
}
|
||||
|
||||
rcu_read_lock();
|
||||
fdt = files_fdtable(current->files);
|
||||
if (n < 0 || n > fdt->max_fdset)
|
||||
max_fdset = fdt->max_fdset;
|
||||
rcu_read_unlock();
|
||||
if (n < 0 || n > max_fdset)
|
||||
goto out_nofds;
|
||||
|
||||
/*
|
||||
|
@ -394,6 +394,22 @@ clipper_init_irq(void)
|
||||
* 10 64 bit PCI option slot 3 (not bus 0)
|
||||
*/
|
||||
|
||||
static int __init
|
||||
isa_irq_fixup(struct pci_dev *dev, int irq)
|
||||
{
|
||||
u8 irq8;
|
||||
|
||||
if (irq > 0)
|
||||
return irq;
|
||||
|
||||
/* This interrupt is routed via ISA bridge, so we'll
|
||||
just have to trust whatever value the console might
|
||||
have assigned. */
|
||||
pci_read_config_byte(dev, PCI_INTERRUPT_LINE, &irq8);
|
||||
|
||||
return irq8 & 0xf;
|
||||
}
|
||||
|
||||
static int __init
|
||||
dp264_map_irq(struct pci_dev *dev, u8 slot, u8 pin)
|
||||
{
|
||||
@ -407,25 +423,13 @@ dp264_map_irq(struct pci_dev *dev, u8 slot, u8 pin)
|
||||
{ 16+ 3, 16+ 3, 16+ 2, 16+ 1, 16+ 0} /* IdSel 10 slot 3 */
|
||||
};
|
||||
const long min_idsel = 5, max_idsel = 10, irqs_per_slot = 5;
|
||||
|
||||
struct pci_controller *hose = dev->sysdata;
|
||||
int irq = COMMON_TABLE_LOOKUP;
|
||||
|
||||
if (irq > 0) {
|
||||
if (irq > 0)
|
||||
irq += 16 * hose->index;
|
||||
} else {
|
||||
/* ??? The Contaq IDE controller on the ISA bridge uses
|
||||
"legacy" interrupts 14 and 15. I don't know if anything
|
||||
can wind up at the same slot+pin on hose1, so we'll
|
||||
just have to trust whatever value the console might
|
||||
have assigned. */
|
||||
|
||||
u8 irq8;
|
||||
pci_read_config_byte(dev, PCI_INTERRUPT_LINE, &irq8);
|
||||
irq = irq8;
|
||||
}
|
||||
|
||||
return irq;
|
||||
return isa_irq_fixup(dev, irq);
|
||||
}
|
||||
|
||||
static int __init
|
||||
@ -453,7 +457,8 @@ monet_map_irq(struct pci_dev *dev, u8 slot, u8 pin)
|
||||
{ 24, 24, 25, 26, 27} /* IdSel 15 slot 5 PCI2*/
|
||||
};
|
||||
const long min_idsel = 3, max_idsel = 15, irqs_per_slot = 5;
|
||||
return COMMON_TABLE_LOOKUP;
|
||||
|
||||
return isa_irq_fixup(dev, COMMON_TABLE_LOOKUP);
|
||||
}
|
||||
|
||||
static u8 __init
|
||||
@ -507,7 +512,8 @@ webbrick_map_irq(struct pci_dev *dev, u8 slot, u8 pin)
|
||||
{ 47, 47, 46, 45, 44}, /* IdSel 17 slot 3 */
|
||||
};
|
||||
const long min_idsel = 7, max_idsel = 17, irqs_per_slot = 5;
|
||||
return COMMON_TABLE_LOOKUP;
|
||||
|
||||
return isa_irq_fixup(dev, COMMON_TABLE_LOOKUP);
|
||||
}
|
||||
|
||||
static int __init
|
||||
@ -524,14 +530,13 @@ clipper_map_irq(struct pci_dev *dev, u8 slot, u8 pin)
|
||||
{ -1, -1, -1, -1, -1} /* IdSel 7 ISA Bridge */
|
||||
};
|
||||
const long min_idsel = 1, max_idsel = 7, irqs_per_slot = 5;
|
||||
|
||||
struct pci_controller *hose = dev->sysdata;
|
||||
int irq = COMMON_TABLE_LOOKUP;
|
||||
|
||||
if (irq > 0)
|
||||
irq += 16 * hose->index;
|
||||
|
||||
return irq;
|
||||
return isa_irq_fixup(dev, irq);
|
||||
}
|
||||
|
||||
static void __init
|
||||
|
@ -256,5 +256,5 @@ asmlinkage void ofw_init(ofw_handle_t o, int *nomr, int *pointer)
|
||||
temp[11]='\0';
|
||||
mem_len = OF_getproplen(o,phandle, temp);
|
||||
OF_getprop(o,phandle, temp, buffer, mem_len);
|
||||
(unsigned char) pointer[32] = ((unsigned char *) buffer)[mem_len-2];
|
||||
* ((unsigned char *) &pointer[32]) = ((unsigned char *) buffer)[mem_len-2];
|
||||
}
|
||||
|
@ -551,7 +551,7 @@ struct locomo_save_data {
|
||||
u16 LCM_SPIMD;
|
||||
};
|
||||
|
||||
static int locomo_suspend(struct device *dev, u32 pm_message_t, u32 level)
|
||||
static int locomo_suspend(struct device *dev, pm_message_t state, u32 level)
|
||||
{
|
||||
struct locomo *lchip = dev_get_drvdata(dev);
|
||||
struct locomo_save_data *save;
|
||||
|
@ -1,7 +1,7 @@
|
||||
#
|
||||
# Automatically generated make config: don't edit
|
||||
# Linux kernel version: 2.6.13-rc2
|
||||
# Thu Jul 7 16:41:21 2005
|
||||
# Linux kernel version: 2.6.13
|
||||
# Wed Sep 14 10:51:52 2005
|
||||
#
|
||||
CONFIG_ARM=y
|
||||
CONFIG_MMU=y
|
||||
@ -135,7 +135,6 @@ CONFIG_PCI_NAMES=y
|
||||
#
|
||||
# Kernel Features
|
||||
#
|
||||
# CONFIG_SMP is not set
|
||||
# CONFIG_PREEMPT is not set
|
||||
# CONFIG_NO_IDLE_HZ is not set
|
||||
# CONFIG_ARCH_DISCONTIGMEM_ENABLE is not set
|
||||
@ -178,6 +177,68 @@ CONFIG_BINFMT_ELF=y
|
||||
#
|
||||
# CONFIG_PM is not set
|
||||
|
||||
#
|
||||
# Networking
|
||||
#
|
||||
CONFIG_NET=y
|
||||
|
||||
#
|
||||
# Networking options
|
||||
#
|
||||
CONFIG_PACKET=y
|
||||
CONFIG_PACKET_MMAP=y
|
||||
CONFIG_UNIX=y
|
||||
# CONFIG_NET_KEY is not set
|
||||
CONFIG_INET=y
|
||||
# CONFIG_IP_MULTICAST is not set
|
||||
# CONFIG_IP_ADVANCED_ROUTER is not set
|
||||
CONFIG_IP_FIB_HASH=y
|
||||
CONFIG_IP_PNP=y
|
||||
CONFIG_IP_PNP_DHCP=y
|
||||
CONFIG_IP_PNP_BOOTP=y
|
||||
# CONFIG_IP_PNP_RARP is not set
|
||||
# CONFIG_NET_IPIP is not set
|
||||
# CONFIG_NET_IPGRE is not set
|
||||
# CONFIG_ARPD is not set
|
||||
CONFIG_SYN_COOKIES=y
|
||||
# CONFIG_INET_AH is not set
|
||||
# CONFIG_INET_ESP is not set
|
||||
# CONFIG_INET_IPCOMP is not set
|
||||
# CONFIG_INET_TUNNEL is not set
|
||||
# CONFIG_IP_TCPDIAG is not set
|
||||
# CONFIG_IP_TCPDIAG_IPV6 is not set
|
||||
# CONFIG_TCP_CONG_ADVANCED is not set
|
||||
CONFIG_TCP_CONG_BIC=y
|
||||
# CONFIG_IPV6 is not set
|
||||
# CONFIG_NETFILTER is not set
|
||||
|
||||
#
|
||||
# SCTP Configuration (EXPERIMENTAL)
|
||||
#
|
||||
# CONFIG_IP_SCTP is not set
|
||||
# CONFIG_ATM is not set
|
||||
# CONFIG_BRIDGE is not set
|
||||
# CONFIG_VLAN_8021Q is not set
|
||||
# CONFIG_DECNET is not set
|
||||
# CONFIG_LLC2 is not set
|
||||
# CONFIG_IPX is not set
|
||||
# CONFIG_ATALK is not set
|
||||
# CONFIG_X25 is not set
|
||||
# CONFIG_LAPB is not set
|
||||
# CONFIG_NET_DIVERT is not set
|
||||
# CONFIG_ECONET is not set
|
||||
# CONFIG_WAN_ROUTER is not set
|
||||
# CONFIG_NET_SCHED is not set
|
||||
# CONFIG_NET_CLS_ROUTE is not set
|
||||
|
||||
#
|
||||
# Network testing
|
||||
#
|
||||
# CONFIG_NET_PKTGEN is not set
|
||||
# CONFIG_HAMRADIO is not set
|
||||
# CONFIG_IRDA is not set
|
||||
# CONFIG_BT is not set
|
||||
|
||||
#
|
||||
# Device Drivers
|
||||
#
|
||||
@ -248,6 +309,7 @@ CONFIG_MTD_COMPLEX_MAPPINGS=y
|
||||
CONFIG_MTD_IXP2000=y
|
||||
# CONFIG_MTD_EDB7312 is not set
|
||||
# CONFIG_MTD_PCI is not set
|
||||
# CONFIG_MTD_PLATRAM is not set
|
||||
|
||||
#
|
||||
# Self-contained MTD device drivers
|
||||
@ -334,72 +396,8 @@ CONFIG_IOSCHED_CFQ=y
|
||||
# CONFIG_I2O is not set
|
||||
|
||||
#
|
||||
# Networking support
|
||||
# Network device support
|
||||
#
|
||||
CONFIG_NET=y
|
||||
|
||||
#
|
||||
# Networking options
|
||||
#
|
||||
CONFIG_PACKET=y
|
||||
CONFIG_PACKET_MMAP=y
|
||||
CONFIG_UNIX=y
|
||||
# CONFIG_NET_KEY is not set
|
||||
CONFIG_INET=y
|
||||
# CONFIG_IP_MULTICAST is not set
|
||||
# CONFIG_IP_ADVANCED_ROUTER is not set
|
||||
CONFIG_IP_FIB_HASH=y
|
||||
CONFIG_IP_PNP=y
|
||||
CONFIG_IP_PNP_DHCP=y
|
||||
CONFIG_IP_PNP_BOOTP=y
|
||||
# CONFIG_IP_PNP_RARP is not set
|
||||
# CONFIG_NET_IPIP is not set
|
||||
# CONFIG_NET_IPGRE is not set
|
||||
# CONFIG_ARPD is not set
|
||||
CONFIG_SYN_COOKIES=y
|
||||
# CONFIG_INET_AH is not set
|
||||
# CONFIG_INET_ESP is not set
|
||||
# CONFIG_INET_IPCOMP is not set
|
||||
# CONFIG_INET_TUNNEL is not set
|
||||
# CONFIG_IP_TCPDIAG is not set
|
||||
# CONFIG_IP_TCPDIAG_IPV6 is not set
|
||||
# CONFIG_TCP_CONG_ADVANCED is not set
|
||||
CONFIG_TCP_CONG_BIC=y
|
||||
# CONFIG_IPV6 is not set
|
||||
# CONFIG_NETFILTER is not set
|
||||
|
||||
#
|
||||
# SCTP Configuration (EXPERIMENTAL)
|
||||
#
|
||||
# CONFIG_IP_SCTP is not set
|
||||
# CONFIG_ATM is not set
|
||||
# CONFIG_BRIDGE is not set
|
||||
# CONFIG_VLAN_8021Q is not set
|
||||
# CONFIG_DECNET is not set
|
||||
# CONFIG_LLC2 is not set
|
||||
# CONFIG_IPX is not set
|
||||
# CONFIG_ATALK is not set
|
||||
# CONFIG_X25 is not set
|
||||
# CONFIG_LAPB is not set
|
||||
# CONFIG_NET_DIVERT is not set
|
||||
# CONFIG_ECONET is not set
|
||||
# CONFIG_WAN_ROUTER is not set
|
||||
|
||||
#
|
||||
# QoS and/or fair queueing
|
||||
#
|
||||
# CONFIG_NET_SCHED is not set
|
||||
# CONFIG_NET_CLS_ROUTE is not set
|
||||
|
||||
#
|
||||
# Network testing
|
||||
#
|
||||
# CONFIG_NET_PKTGEN is not set
|
||||
# CONFIG_NETPOLL is not set
|
||||
# CONFIG_NET_POLL_CONTROLLER is not set
|
||||
# CONFIG_HAMRADIO is not set
|
||||
# CONFIG_IRDA is not set
|
||||
# CONFIG_BT is not set
|
||||
CONFIG_NETDEVICES=y
|
||||
CONFIG_DUMMY=y
|
||||
# CONFIG_BONDING is not set
|
||||
@ -509,6 +507,8 @@ CONFIG_DLCI_MAX=8
|
||||
# CONFIG_SLIP is not set
|
||||
# CONFIG_SHAPER is not set
|
||||
# CONFIG_NETCONSOLE is not set
|
||||
# CONFIG_NETPOLL is not set
|
||||
# CONFIG_NET_POLL_CONTROLLER is not set
|
||||
|
||||
#
|
||||
# ISDN subsystem
|
||||
@ -635,7 +635,7 @@ CONFIG_I2C_ALGOBIT=y
|
||||
# CONFIG_I2C_I810 is not set
|
||||
# CONFIG_I2C_PIIX4 is not set
|
||||
# CONFIG_I2C_ISA is not set
|
||||
# CONFIG_I2C_IXP2000 is not set
|
||||
CONFIG_I2C_IXP2000=y
|
||||
# CONFIG_I2C_NFORCE2 is not set
|
||||
# CONFIG_I2C_PARPORT_LIGHT is not set
|
||||
# CONFIG_I2C_PROSAVAGE is not set
|
||||
@ -649,11 +649,28 @@ CONFIG_I2C_ALGOBIT=y
|
||||
# CONFIG_I2C_VIAPRO is not set
|
||||
# CONFIG_I2C_VOODOO3 is not set
|
||||
# CONFIG_I2C_PCA_ISA is not set
|
||||
CONFIG_I2C_SENSOR=y
|
||||
|
||||
#
|
||||
# Hardware Sensors Chip support
|
||||
# Miscellaneous I2C Chip support
|
||||
#
|
||||
CONFIG_I2C_SENSOR=y
|
||||
# CONFIG_SENSORS_DS1337 is not set
|
||||
# CONFIG_SENSORS_DS1374 is not set
|
||||
CONFIG_SENSORS_EEPROM=y
|
||||
# CONFIG_SENSORS_PCF8574 is not set
|
||||
# CONFIG_SENSORS_PCA9539 is not set
|
||||
# CONFIG_SENSORS_PCF8591 is not set
|
||||
# CONFIG_SENSORS_RTC8564 is not set
|
||||
# CONFIG_SENSORS_MAX6875 is not set
|
||||
# CONFIG_I2C_DEBUG_CORE is not set
|
||||
# CONFIG_I2C_DEBUG_ALGO is not set
|
||||
# CONFIG_I2C_DEBUG_BUS is not set
|
||||
# CONFIG_I2C_DEBUG_CHIP is not set
|
||||
|
||||
#
|
||||
# Hardware Monitoring support
|
||||
#
|
||||
CONFIG_HWMON=y
|
||||
# CONFIG_SENSORS_ADM1021 is not set
|
||||
# CONFIG_SENSORS_ADM1025 is not set
|
||||
# CONFIG_SENSORS_ADM1026 is not set
|
||||
@ -679,30 +696,15 @@ CONFIG_I2C_SENSOR=y
|
||||
# CONFIG_SENSORS_LM92 is not set
|
||||
# CONFIG_SENSORS_MAX1619 is not set
|
||||
# CONFIG_SENSORS_PC87360 is not set
|
||||
# CONFIG_SENSORS_SMSC47B397 is not set
|
||||
# CONFIG_SENSORS_SIS5595 is not set
|
||||
# CONFIG_SENSORS_SMSC47M1 is not set
|
||||
# CONFIG_SENSORS_SMSC47B397 is not set
|
||||
# CONFIG_SENSORS_VIA686A is not set
|
||||
# CONFIG_SENSORS_W83781D is not set
|
||||
# CONFIG_SENSORS_W83L785TS is not set
|
||||
# CONFIG_SENSORS_W83627HF is not set
|
||||
# CONFIG_SENSORS_W83627EHF is not set
|
||||
|
||||
#
|
||||
# Other I2C Chip support
|
||||
#
|
||||
# CONFIG_SENSORS_DS1337 is not set
|
||||
# CONFIG_SENSORS_DS1374 is not set
|
||||
CONFIG_SENSORS_EEPROM=y
|
||||
# CONFIG_SENSORS_PCF8574 is not set
|
||||
# CONFIG_SENSORS_PCA9539 is not set
|
||||
# CONFIG_SENSORS_PCF8591 is not set
|
||||
# CONFIG_SENSORS_RTC8564 is not set
|
||||
# CONFIG_SENSORS_MAX6875 is not set
|
||||
# CONFIG_I2C_DEBUG_CORE is not set
|
||||
# CONFIG_I2C_DEBUG_ALGO is not set
|
||||
# CONFIG_I2C_DEBUG_BUS is not set
|
||||
# CONFIG_I2C_DEBUG_CHIP is not set
|
||||
# CONFIG_HWMON_DEBUG_CHIP is not set
|
||||
|
||||
#
|
||||
# Misc devices
|
||||
@ -770,6 +772,7 @@ CONFIG_FS_POSIX_ACL=y
|
||||
# CONFIG_XFS_FS is not set
|
||||
# CONFIG_MINIX_FS is not set
|
||||
# CONFIG_ROMFS_FS is not set
|
||||
CONFIG_INOTIFY=y
|
||||
# CONFIG_QUOTA is not set
|
||||
CONFIG_DNOTIFY=y
|
||||
# CONFIG_AUTOFS_FS is not set
|
||||
@ -812,8 +815,7 @@ CONFIG_RAMFS=y
|
||||
# CONFIG_JFFS_FS is not set
|
||||
CONFIG_JFFS2_FS=y
|
||||
CONFIG_JFFS2_FS_DEBUG=0
|
||||
# CONFIG_JFFS2_FS_NAND is not set
|
||||
# CONFIG_JFFS2_FS_NOR_ECC is not set
|
||||
CONFIG_JFFS2_FS_WRITEBUFFER=y
|
||||
# CONFIG_JFFS2_COMPRESSION_OPTIONS is not set
|
||||
CONFIG_JFFS2_ZLIB=y
|
||||
CONFIG_JFFS2_RTIME=y
|
||||
|
@ -1,7 +1,7 @@
|
||||
#
|
||||
# Automatically generated make config: don't edit
|
||||
# Linux kernel version: 2.6.13-rc2
|
||||
# Thu Jul 7 16:49:01 2005
|
||||
# Linux kernel version: 2.6.13
|
||||
# Wed Sep 14 10:52:01 2005
|
||||
#
|
||||
CONFIG_ARM=y
|
||||
CONFIG_MMU=y
|
||||
@ -136,7 +136,6 @@ CONFIG_PCI_NAMES=y
|
||||
#
|
||||
# Kernel Features
|
||||
#
|
||||
# CONFIG_SMP is not set
|
||||
# CONFIG_PREEMPT is not set
|
||||
# CONFIG_NO_IDLE_HZ is not set
|
||||
# CONFIG_ARCH_DISCONTIGMEM_ENABLE is not set
|
||||
@ -179,6 +178,68 @@ CONFIG_BINFMT_ELF=y
|
||||
#
|
||||
# CONFIG_PM is not set
|
||||
|
||||
#
|
||||
# Networking
|
||||
#
|
||||
CONFIG_NET=y
|
||||
|
||||
#
|
||||
# Networking options
|
||||
#
|
||||
CONFIG_PACKET=y
|
||||
CONFIG_PACKET_MMAP=y
|
||||
CONFIG_UNIX=y
|
||||
# CONFIG_NET_KEY is not set
|
||||
CONFIG_INET=y
|
||||
# CONFIG_IP_MULTICAST is not set
|
||||
# CONFIG_IP_ADVANCED_ROUTER is not set
|
||||
CONFIG_IP_FIB_HASH=y
|
||||
CONFIG_IP_PNP=y
|
||||
CONFIG_IP_PNP_DHCP=y
|
||||
CONFIG_IP_PNP_BOOTP=y
|
||||
# CONFIG_IP_PNP_RARP is not set
|
||||
# CONFIG_NET_IPIP is not set
|
||||
# CONFIG_NET_IPGRE is not set
|
||||
# CONFIG_ARPD is not set
|
||||
CONFIG_SYN_COOKIES=y
|
||||
# CONFIG_INET_AH is not set
|
||||
# CONFIG_INET_ESP is not set
|
||||
# CONFIG_INET_IPCOMP is not set
|
||||
# CONFIG_INET_TUNNEL is not set
|
||||
# CONFIG_IP_TCPDIAG is not set
|
||||
# CONFIG_IP_TCPDIAG_IPV6 is not set
|
||||
# CONFIG_TCP_CONG_ADVANCED is not set
|
||||
CONFIG_TCP_CONG_BIC=y
|
||||
# CONFIG_IPV6 is not set
|
||||
# CONFIG_NETFILTER is not set
|
||||
|
||||
#
|
||||
# SCTP Configuration (EXPERIMENTAL)
|
||||
#
|
||||
# CONFIG_IP_SCTP is not set
|
||||
# CONFIG_ATM is not set
|
||||
# CONFIG_BRIDGE is not set
|
||||
# CONFIG_VLAN_8021Q is not set
|
||||
# CONFIG_DECNET is not set
|
||||
# CONFIG_LLC2 is not set
|
||||
# CONFIG_IPX is not set
|
||||
# CONFIG_ATALK is not set
|
||||
# CONFIG_X25 is not set
|
||||
# CONFIG_LAPB is not set
|
||||
# CONFIG_NET_DIVERT is not set
|
||||
# CONFIG_ECONET is not set
|
||||
# CONFIG_WAN_ROUTER is not set
|
||||
# CONFIG_NET_SCHED is not set
|
||||
# CONFIG_NET_CLS_ROUTE is not set
|
||||
|
||||
#
|
||||
# Network testing
|
||||
#
|
||||
# CONFIG_NET_PKTGEN is not set
|
||||
# CONFIG_HAMRADIO is not set
|
||||
# CONFIG_IRDA is not set
|
||||
# CONFIG_BT is not set
|
||||
|
||||
#
|
||||
# Device Drivers
|
||||
#
|
||||
@ -249,6 +310,7 @@ CONFIG_MTD_COMPLEX_MAPPINGS=y
|
||||
CONFIG_MTD_IXP2000=y
|
||||
# CONFIG_MTD_EDB7312 is not set
|
||||
# CONFIG_MTD_PCI is not set
|
||||
# CONFIG_MTD_PLATRAM is not set
|
||||
|
||||
#
|
||||
# Self-contained MTD device drivers
|
||||
@ -335,72 +397,8 @@ CONFIG_IOSCHED_CFQ=y
|
||||
# CONFIG_I2O is not set
|
||||
|
||||
#
|
||||
# Networking support
|
||||
# Network device support
|
||||
#
|
||||
CONFIG_NET=y
|
||||
|
||||
#
|
||||
# Networking options
|
||||
#
|
||||
CONFIG_PACKET=y
|
||||
CONFIG_PACKET_MMAP=y
|
||||
CONFIG_UNIX=y
|
||||
# CONFIG_NET_KEY is not set
|
||||
CONFIG_INET=y
|
||||
# CONFIG_IP_MULTICAST is not set
|
||||
# CONFIG_IP_ADVANCED_ROUTER is not set
|
||||
CONFIG_IP_FIB_HASH=y
|
||||
CONFIG_IP_PNP=y
|
||||
CONFIG_IP_PNP_DHCP=y
|
||||
CONFIG_IP_PNP_BOOTP=y
|
||||
# CONFIG_IP_PNP_RARP is not set
|
||||
# CONFIG_NET_IPIP is not set
|
||||
# CONFIG_NET_IPGRE is not set
|
||||
# CONFIG_ARPD is not set
|
||||
CONFIG_SYN_COOKIES=y
|
||||
# CONFIG_INET_AH is not set
|
||||
# CONFIG_INET_ESP is not set
|
||||
# CONFIG_INET_IPCOMP is not set
|
||||
# CONFIG_INET_TUNNEL is not set
|
||||
# CONFIG_IP_TCPDIAG is not set
|
||||
# CONFIG_IP_TCPDIAG_IPV6 is not set
|
||||
# CONFIG_TCP_CONG_ADVANCED is not set
|
||||
CONFIG_TCP_CONG_BIC=y
|
||||
# CONFIG_IPV6 is not set
|
||||
# CONFIG_NETFILTER is not set
|
||||
|
||||
#
|
||||
# SCTP Configuration (EXPERIMENTAL)
|
||||
#
|
||||
# CONFIG_IP_SCTP is not set
|
||||
# CONFIG_ATM is not set
|
||||
# CONFIG_BRIDGE is not set
|
||||
# CONFIG_VLAN_8021Q is not set
|
||||
# CONFIG_DECNET is not set
|
||||
# CONFIG_LLC2 is not set
|
||||
# CONFIG_IPX is not set
|
||||
# CONFIG_ATALK is not set
|
||||
# CONFIG_X25 is not set
|
||||
# CONFIG_LAPB is not set
|
||||
# CONFIG_NET_DIVERT is not set
|
||||
# CONFIG_ECONET is not set
|
||||
# CONFIG_WAN_ROUTER is not set
|
||||
|
||||
#
|
||||
# QoS and/or fair queueing
|
||||
#
|
||||
# CONFIG_NET_SCHED is not set
|
||||
# CONFIG_NET_CLS_ROUTE is not set
|
||||
|
||||
#
|
||||
# Network testing
|
||||
#
|
||||
# CONFIG_NET_PKTGEN is not set
|
||||
# CONFIG_NETPOLL is not set
|
||||
# CONFIG_NET_POLL_CONTROLLER is not set
|
||||
# CONFIG_HAMRADIO is not set
|
||||
# CONFIG_IRDA is not set
|
||||
# CONFIG_BT is not set
|
||||
CONFIG_NETDEVICES=y
|
||||
CONFIG_DUMMY=y
|
||||
# CONFIG_BONDING is not set
|
||||
@ -510,6 +508,8 @@ CONFIG_DLCI_MAX=8
|
||||
# CONFIG_SLIP is not set
|
||||
# CONFIG_SHAPER is not set
|
||||
# CONFIG_NETCONSOLE is not set
|
||||
# CONFIG_NETPOLL is not set
|
||||
# CONFIG_NET_POLL_CONTROLLER is not set
|
||||
|
||||
#
|
||||
# ISDN subsystem
|
||||
@ -636,7 +636,7 @@ CONFIG_I2C_ALGOBIT=y
|
||||
# CONFIG_I2C_I810 is not set
|
||||
# CONFIG_I2C_PIIX4 is not set
|
||||
# CONFIG_I2C_ISA is not set
|
||||
# CONFIG_I2C_IXP2000 is not set
|
||||
CONFIG_I2C_IXP2000=y
|
||||
# CONFIG_I2C_NFORCE2 is not set
|
||||
# CONFIG_I2C_PARPORT_LIGHT is not set
|
||||
# CONFIG_I2C_PROSAVAGE is not set
|
||||
@ -650,11 +650,28 @@ CONFIG_I2C_ALGOBIT=y
|
||||
# CONFIG_I2C_VIAPRO is not set
|
||||
# CONFIG_I2C_VOODOO3 is not set
|
||||
# CONFIG_I2C_PCA_ISA is not set
|
||||
CONFIG_I2C_SENSOR=y
|
||||
|
||||
#
|
||||
# Hardware Sensors Chip support
|
||||
# Miscellaneous I2C Chip support
|
||||
#
|
||||
CONFIG_I2C_SENSOR=y
|
||||
# CONFIG_SENSORS_DS1337 is not set
|
||||
# CONFIG_SENSORS_DS1374 is not set
|
||||
CONFIG_SENSORS_EEPROM=y
|
||||
# CONFIG_SENSORS_PCF8574 is not set
|
||||
# CONFIG_SENSORS_PCA9539 is not set
|
||||
# CONFIG_SENSORS_PCF8591 is not set
|
||||
# CONFIG_SENSORS_RTC8564 is not set
|
||||
# CONFIG_SENSORS_MAX6875 is not set
|
||||
# CONFIG_I2C_DEBUG_CORE is not set
|
||||
# CONFIG_I2C_DEBUG_ALGO is not set
|
||||
# CONFIG_I2C_DEBUG_BUS is not set
|
||||
# CONFIG_I2C_DEBUG_CHIP is not set
|
||||
|
||||
#
|
||||
# Hardware Monitoring support
|
||||
#
|
||||
CONFIG_HWMON=y
|
||||
# CONFIG_SENSORS_ADM1021 is not set
|
||||
# CONFIG_SENSORS_ADM1025 is not set
|
||||
# CONFIG_SENSORS_ADM1026 is not set
|
||||
@ -680,30 +697,15 @@ CONFIG_I2C_SENSOR=y
|
||||
# CONFIG_SENSORS_LM92 is not set
|
||||
# CONFIG_SENSORS_MAX1619 is not set
|
||||
# CONFIG_SENSORS_PC87360 is not set
|
||||
# CONFIG_SENSORS_SMSC47B397 is not set
|
||||
# CONFIG_SENSORS_SIS5595 is not set
|
||||
# CONFIG_SENSORS_SMSC47M1 is not set
|
||||
# CONFIG_SENSORS_SMSC47B397 is not set
|
||||
# CONFIG_SENSORS_VIA686A is not set
|
||||
# CONFIG_SENSORS_W83781D is not set
|
||||
# CONFIG_SENSORS_W83L785TS is not set
|
||||
# CONFIG_SENSORS_W83627HF is not set
|
||||
# CONFIG_SENSORS_W83627EHF is not set
|
||||
|
||||
#
|
||||
# Other I2C Chip support
|
||||
#
|
||||
# CONFIG_SENSORS_DS1337 is not set
|
||||
# CONFIG_SENSORS_DS1374 is not set
|
||||
CONFIG_SENSORS_EEPROM=y
|
||||
# CONFIG_SENSORS_PCF8574 is not set
|
||||
# CONFIG_SENSORS_PCA9539 is not set
|
||||
# CONFIG_SENSORS_PCF8591 is not set
|
||||
# CONFIG_SENSORS_RTC8564 is not set
|
||||
# CONFIG_SENSORS_MAX6875 is not set
|
||||
# CONFIG_I2C_DEBUG_CORE is not set
|
||||
# CONFIG_I2C_DEBUG_ALGO is not set
|
||||
# CONFIG_I2C_DEBUG_BUS is not set
|
||||
# CONFIG_I2C_DEBUG_CHIP is not set
|
||||
# CONFIG_HWMON_DEBUG_CHIP is not set
|
||||
|
||||
#
|
||||
# Misc devices
|
||||
@ -771,6 +773,7 @@ CONFIG_FS_POSIX_ACL=y
|
||||
# CONFIG_XFS_FS is not set
|
||||
# CONFIG_MINIX_FS is not set
|
||||
# CONFIG_ROMFS_FS is not set
|
||||
CONFIG_INOTIFY=y
|
||||
# CONFIG_QUOTA is not set
|
||||
CONFIG_DNOTIFY=y
|
||||
# CONFIG_AUTOFS_FS is not set
|
||||
@ -813,8 +816,7 @@ CONFIG_RAMFS=y
|
||||
# CONFIG_JFFS_FS is not set
|
||||
CONFIG_JFFS2_FS=y
|
||||
CONFIG_JFFS2_FS_DEBUG=0
|
||||
# CONFIG_JFFS2_FS_NAND is not set
|
||||
# CONFIG_JFFS2_FS_NOR_ECC is not set
|
||||
CONFIG_JFFS2_FS_WRITEBUFFER=y
|
||||
# CONFIG_JFFS2_COMPRESSION_OPTIONS is not set
|
||||
CONFIG_JFFS2_ZLIB=y
|
||||
CONFIG_JFFS2_RTIME=y
|
||||
|
@ -1,7 +1,7 @@
|
||||
#
|
||||
# Automatically generated make config: don't edit
|
||||
# Linux kernel version: 2.6.13-rc2
|
||||
# Thu Jul 7 16:49:08 2005
|
||||
# Linux kernel version: 2.6.13
|
||||
# Wed Sep 14 10:52:10 2005
|
||||
#
|
||||
CONFIG_ARM=y
|
||||
CONFIG_MMU=y
|
||||
@ -136,7 +136,6 @@ CONFIG_PCI_NAMES=y
|
||||
#
|
||||
# Kernel Features
|
||||
#
|
||||
# CONFIG_SMP is not set
|
||||
# CONFIG_PREEMPT is not set
|
||||
# CONFIG_NO_IDLE_HZ is not set
|
||||
# CONFIG_ARCH_DISCONTIGMEM_ENABLE is not set
|
||||
@ -179,6 +178,68 @@ CONFIG_BINFMT_ELF=y
|
||||
#
|
||||
# CONFIG_PM is not set
|
||||
|
||||
#
|
||||
# Networking
|
||||
#
|
||||
CONFIG_NET=y
|
||||
|
||||
#
|
||||
# Networking options
|
||||
#
|
||||
CONFIG_PACKET=y
|
||||
CONFIG_PACKET_MMAP=y
|
||||
CONFIG_UNIX=y
|
||||
# CONFIG_NET_KEY is not set
|
||||
CONFIG_INET=y
|
||||
# CONFIG_IP_MULTICAST is not set
|
||||
# CONFIG_IP_ADVANCED_ROUTER is not set
|
||||
CONFIG_IP_FIB_HASH=y
|
||||
CONFIG_IP_PNP=y
|
||||
CONFIG_IP_PNP_DHCP=y
|
||||
CONFIG_IP_PNP_BOOTP=y
|
||||
# CONFIG_IP_PNP_RARP is not set
|
||||
# CONFIG_NET_IPIP is not set
|
||||
# CONFIG_NET_IPGRE is not set
|
||||
# CONFIG_ARPD is not set
|
||||
CONFIG_SYN_COOKIES=y
|
||||
# CONFIG_INET_AH is not set
|
||||
# CONFIG_INET_ESP is not set
|
||||
# CONFIG_INET_IPCOMP is not set
|
||||
# CONFIG_INET_TUNNEL is not set
|
||||
CONFIG_IP_TCPDIAG=y
|
||||
# CONFIG_IP_TCPDIAG_IPV6 is not set
|
||||
# CONFIG_TCP_CONG_ADVANCED is not set
|
||||
CONFIG_TCP_CONG_BIC=y
|
||||
# CONFIG_IPV6 is not set
|
||||
# CONFIG_NETFILTER is not set
|
||||
|
||||
#
|
||||
# SCTP Configuration (EXPERIMENTAL)
|
||||
#
|
||||
# CONFIG_IP_SCTP is not set
|
||||
# CONFIG_ATM is not set
|
||||
# CONFIG_BRIDGE is not set
|
||||
# CONFIG_VLAN_8021Q is not set
|
||||
# CONFIG_DECNET is not set
|
||||
# CONFIG_LLC2 is not set
|
||||
# CONFIG_IPX is not set
|
||||
# CONFIG_ATALK is not set
|
||||
# CONFIG_X25 is not set
|
||||
# CONFIG_LAPB is not set
|
||||
# CONFIG_NET_DIVERT is not set
|
||||
# CONFIG_ECONET is not set
|
||||
# CONFIG_WAN_ROUTER is not set
|
||||
# CONFIG_NET_SCHED is not set
|
||||
# CONFIG_NET_CLS_ROUTE is not set
|
||||
|
||||
#
|
||||
# Network testing
|
||||
#
|
||||
# CONFIG_NET_PKTGEN is not set
|
||||
# CONFIG_HAMRADIO is not set
|
||||
# CONFIG_IRDA is not set
|
||||
# CONFIG_BT is not set
|
||||
|
||||
#
|
||||
# Device Drivers
|
||||
#
|
||||
@ -249,6 +310,7 @@ CONFIG_MTD_COMPLEX_MAPPINGS=y
|
||||
CONFIG_MTD_IXP2000=y
|
||||
# CONFIG_MTD_EDB7312 is not set
|
||||
# CONFIG_MTD_PCI is not set
|
||||
# CONFIG_MTD_PLATRAM is not set
|
||||
|
||||
#
|
||||
# Self-contained MTD device drivers
|
||||
@ -335,72 +397,8 @@ CONFIG_IOSCHED_CFQ=y
|
||||
# CONFIG_I2O is not set
|
||||
|
||||
#
|
||||
# Networking support
|
||||
# Network device support
|
||||
#
|
||||
CONFIG_NET=y
|
||||
|
||||
#
|
||||
# Networking options
|
||||
#
|
||||
CONFIG_PACKET=y
|
||||
CONFIG_PACKET_MMAP=y
|
||||
CONFIG_UNIX=y
|
||||
# CONFIG_NET_KEY is not set
|
||||
CONFIG_INET=y
|
||||
# CONFIG_IP_MULTICAST is not set
|
||||
# CONFIG_IP_ADVANCED_ROUTER is not set
|
||||
CONFIG_IP_FIB_HASH=y
|
||||
CONFIG_IP_PNP=y
|
||||
CONFIG_IP_PNP_DHCP=y
|
||||
CONFIG_IP_PNP_BOOTP=y
|
||||
# CONFIG_IP_PNP_RARP is not set
|
||||
# CONFIG_NET_IPIP is not set
|
||||
# CONFIG_NET_IPGRE is not set
|
||||
# CONFIG_ARPD is not set
|
||||
CONFIG_SYN_COOKIES=y
|
||||
# CONFIG_INET_AH is not set
|
||||
# CONFIG_INET_ESP is not set
|
||||
# CONFIG_INET_IPCOMP is not set
|
||||
# CONFIG_INET_TUNNEL is not set
|
||||
CONFIG_IP_TCPDIAG=y
|
||||
# CONFIG_IP_TCPDIAG_IPV6 is not set
|
||||
# CONFIG_TCP_CONG_ADVANCED is not set
|
||||
CONFIG_TCP_CONG_BIC=y
|
||||
# CONFIG_IPV6 is not set
|
||||
# CONFIG_NETFILTER is not set
|
||||
|
||||
#
|
||||
# SCTP Configuration (EXPERIMENTAL)
|
||||
#
|
||||
# CONFIG_IP_SCTP is not set
|
||||
# CONFIG_ATM is not set
|
||||
# CONFIG_BRIDGE is not set
|
||||
# CONFIG_VLAN_8021Q is not set
|
||||
# CONFIG_DECNET is not set
|
||||
# CONFIG_LLC2 is not set
|
||||
# CONFIG_IPX is not set
|
||||
# CONFIG_ATALK is not set
|
||||
# CONFIG_X25 is not set
|
||||
# CONFIG_LAPB is not set
|
||||
# CONFIG_NET_DIVERT is not set
|
||||
# CONFIG_ECONET is not set
|
||||
# CONFIG_WAN_ROUTER is not set
|
||||
|
||||
#
|
||||
# QoS and/or fair queueing
|
||||
#
|
||||
# CONFIG_NET_SCHED is not set
|
||||
# CONFIG_NET_CLS_ROUTE is not set
|
||||
|
||||
#
|
||||
# Network testing
|
||||
#
|
||||
# CONFIG_NET_PKTGEN is not set
|
||||
# CONFIG_NETPOLL is not set
|
||||
# CONFIG_NET_POLL_CONTROLLER is not set
|
||||
# CONFIG_HAMRADIO is not set
|
||||
# CONFIG_IRDA is not set
|
||||
# CONFIG_BT is not set
|
||||
CONFIG_NETDEVICES=y
|
||||
CONFIG_DUMMY=y
|
||||
# CONFIG_BONDING is not set
|
||||
@ -511,6 +509,8 @@ CONFIG_DLCI_MAX=8
|
||||
# CONFIG_SLIP is not set
|
||||
# CONFIG_SHAPER is not set
|
||||
# CONFIG_NETCONSOLE is not set
|
||||
# CONFIG_NETPOLL is not set
|
||||
# CONFIG_NET_POLL_CONTROLLER is not set
|
||||
|
||||
#
|
||||
# ISDN subsystem
|
||||
@ -637,7 +637,7 @@ CONFIG_I2C_ALGOBIT=y
|
||||
# CONFIG_I2C_I810 is not set
|
||||
# CONFIG_I2C_PIIX4 is not set
|
||||
# CONFIG_I2C_ISA is not set
|
||||
# CONFIG_I2C_IXP2000 is not set
|
||||
CONFIG_I2C_IXP2000=y
|
||||
# CONFIG_I2C_NFORCE2 is not set
|
||||
# CONFIG_I2C_PARPORT_LIGHT is not set
|
||||
# CONFIG_I2C_PROSAVAGE is not set
|
||||
@ -651,11 +651,28 @@ CONFIG_I2C_ALGOBIT=y
|
||||
# CONFIG_I2C_VIAPRO is not set
|
||||
# CONFIG_I2C_VOODOO3 is not set
|
||||
# CONFIG_I2C_PCA_ISA is not set
|
||||
CONFIG_I2C_SENSOR=y
|
||||
|
||||
#
|
||||
# Hardware Sensors Chip support
|
||||
# Miscellaneous I2C Chip support
|
||||
#
|
||||
CONFIG_I2C_SENSOR=y
|
||||
# CONFIG_SENSORS_DS1337 is not set
|
||||
# CONFIG_SENSORS_DS1374 is not set
|
||||
CONFIG_SENSORS_EEPROM=y
|
||||
# CONFIG_SENSORS_PCF8574 is not set
|
||||
# CONFIG_SENSORS_PCA9539 is not set
|
||||
# CONFIG_SENSORS_PCF8591 is not set
|
||||
# CONFIG_SENSORS_RTC8564 is not set
|
||||
# CONFIG_SENSORS_MAX6875 is not set
|
||||
# CONFIG_I2C_DEBUG_CORE is not set
|
||||
# CONFIG_I2C_DEBUG_ALGO is not set
|
||||
# CONFIG_I2C_DEBUG_BUS is not set
|
||||
# CONFIG_I2C_DEBUG_CHIP is not set
|
||||
|
||||
#
|
||||
# Hardware Monitoring support
|
||||
#
|
||||
CONFIG_HWMON=y
|
||||
# CONFIG_SENSORS_ADM1021 is not set
|
||||
# CONFIG_SENSORS_ADM1025 is not set
|
||||
# CONFIG_SENSORS_ADM1026 is not set
|
||||
@ -681,30 +698,15 @@ CONFIG_I2C_SENSOR=y
|
||||
# CONFIG_SENSORS_LM92 is not set
|
||||
# CONFIG_SENSORS_MAX1619 is not set
|
||||
# CONFIG_SENSORS_PC87360 is not set
|
||||
# CONFIG_SENSORS_SMSC47B397 is not set
|
||||
# CONFIG_SENSORS_SIS5595 is not set
|
||||
# CONFIG_SENSORS_SMSC47M1 is not set
|
||||
# CONFIG_SENSORS_SMSC47B397 is not set
|
||||
# CONFIG_SENSORS_VIA686A is not set
|
||||
# CONFIG_SENSORS_W83781D is not set
|
||||
# CONFIG_SENSORS_W83L785TS is not set
|
||||
# CONFIG_SENSORS_W83627HF is not set
|
||||
# CONFIG_SENSORS_W83627EHF is not set
|
||||
|
||||
#
|
||||
# Other I2C Chip support
|
||||
#
|
||||
# CONFIG_SENSORS_DS1337 is not set
|
||||
# CONFIG_SENSORS_DS1374 is not set
|
||||
CONFIG_SENSORS_EEPROM=y
|
||||
# CONFIG_SENSORS_PCF8574 is not set
|
||||
# CONFIG_SENSORS_PCA9539 is not set
|
||||
# CONFIG_SENSORS_PCF8591 is not set
|
||||
# CONFIG_SENSORS_RTC8564 is not set
|
||||
# CONFIG_SENSORS_MAX6875 is not set
|
||||
# CONFIG_I2C_DEBUG_CORE is not set
|
||||
# CONFIG_I2C_DEBUG_ALGO is not set
|
||||
# CONFIG_I2C_DEBUG_BUS is not set
|
||||
# CONFIG_I2C_DEBUG_CHIP is not set
|
||||
# CONFIG_HWMON_DEBUG_CHIP is not set
|
||||
|
||||
#
|
||||
# Misc devices
|
||||
@ -772,6 +774,7 @@ CONFIG_FS_POSIX_ACL=y
|
||||
# CONFIG_XFS_FS is not set
|
||||
# CONFIG_MINIX_FS is not set
|
||||
# CONFIG_ROMFS_FS is not set
|
||||
CONFIG_INOTIFY=y
|
||||
# CONFIG_QUOTA is not set
|
||||
CONFIG_DNOTIFY=y
|
||||
# CONFIG_AUTOFS_FS is not set
|
||||
@ -814,8 +817,7 @@ CONFIG_RAMFS=y
|
||||
# CONFIG_JFFS_FS is not set
|
||||
CONFIG_JFFS2_FS=y
|
||||
CONFIG_JFFS2_FS_DEBUG=0
|
||||
# CONFIG_JFFS2_FS_NAND is not set
|
||||
# CONFIG_JFFS2_FS_NOR_ECC is not set
|
||||
CONFIG_JFFS2_FS_WRITEBUFFER=y
|
||||
# CONFIG_JFFS2_COMPRESSION_OPTIONS is not set
|
||||
CONFIG_JFFS2_ZLIB=y
|
||||
CONFIG_JFFS2_RTIME=y
|
||||
|
@ -1,7 +1,7 @@
|
||||
#
|
||||
# Automatically generated make config: don't edit
|
||||
# Linux kernel version: 2.6.13-rc2
|
||||
# Thu Jul 7 16:49:20 2005
|
||||
# Linux kernel version: 2.6.13
|
||||
# Wed Sep 14 10:52:23 2005
|
||||
#
|
||||
CONFIG_ARM=y
|
||||
CONFIG_MMU=y
|
||||
@ -136,7 +136,6 @@ CONFIG_PCI_NAMES=y
|
||||
#
|
||||
# Kernel Features
|
||||
#
|
||||
# CONFIG_SMP is not set
|
||||
# CONFIG_PREEMPT is not set
|
||||
# CONFIG_NO_IDLE_HZ is not set
|
||||
# CONFIG_ARCH_DISCONTIGMEM_ENABLE is not set
|
||||
@ -179,6 +178,68 @@ CONFIG_BINFMT_ELF=y
|
||||
#
|
||||
# CONFIG_PM is not set
|
||||
|
||||
#
|
||||
# Networking
|
||||
#
|
||||
CONFIG_NET=y
|
||||
|
||||
#
|
||||
# Networking options
|
||||
#
|
||||
CONFIG_PACKET=y
|
||||
CONFIG_PACKET_MMAP=y
|
||||
CONFIG_UNIX=y
|
||||
# CONFIG_NET_KEY is not set
|
||||
CONFIG_INET=y
|
||||
# CONFIG_IP_MULTICAST is not set
|
||||
# CONFIG_IP_ADVANCED_ROUTER is not set
|
||||
CONFIG_IP_FIB_HASH=y
|
||||
CONFIG_IP_PNP=y
|
||||
CONFIG_IP_PNP_DHCP=y
|
||||
CONFIG_IP_PNP_BOOTP=y
|
||||
# CONFIG_IP_PNP_RARP is not set
|
||||
# CONFIG_NET_IPIP is not set
|
||||
# CONFIG_NET_IPGRE is not set
|
||||
# CONFIG_ARPD is not set
|
||||
CONFIG_SYN_COOKIES=y
|
||||
# CONFIG_INET_AH is not set
|
||||
# CONFIG_INET_ESP is not set
|
||||
# CONFIG_INET_IPCOMP is not set
|
||||
# CONFIG_INET_TUNNEL is not set
|
||||
# CONFIG_IP_TCPDIAG is not set
|
||||
# CONFIG_IP_TCPDIAG_IPV6 is not set
|
||||
# CONFIG_TCP_CONG_ADVANCED is not set
|
||||
CONFIG_TCP_CONG_BIC=y
|
||||
# CONFIG_IPV6 is not set
|
||||
# CONFIG_NETFILTER is not set
|
||||
|
||||
#
|
||||
# SCTP Configuration (EXPERIMENTAL)
|
||||
#
|
||||
# CONFIG_IP_SCTP is not set
|
||||
# CONFIG_ATM is not set
|
||||
# CONFIG_BRIDGE is not set
|
||||
# CONFIG_VLAN_8021Q is not set
|
||||
# CONFIG_DECNET is not set
|
||||
# CONFIG_LLC2 is not set
|
||||
# CONFIG_IPX is not set
|
||||
# CONFIG_ATALK is not set
|
||||
# CONFIG_X25 is not set
|
||||
# CONFIG_LAPB is not set
|
||||
# CONFIG_NET_DIVERT is not set
|
||||
# CONFIG_ECONET is not set
|
||||
# CONFIG_WAN_ROUTER is not set
|
||||
# CONFIG_NET_SCHED is not set
|
||||
# CONFIG_NET_CLS_ROUTE is not set
|
||||
|
||||
#
|
||||
# Network testing
|
||||
#
|
||||
# CONFIG_NET_PKTGEN is not set
|
||||
# CONFIG_HAMRADIO is not set
|
||||
# CONFIG_IRDA is not set
|
||||
# CONFIG_BT is not set
|
||||
|
||||
#
|
||||
# Device Drivers
|
||||
#
|
||||
@ -249,6 +310,7 @@ CONFIG_MTD_COMPLEX_MAPPINGS=y
|
||||
CONFIG_MTD_IXP2000=y
|
||||
# CONFIG_MTD_EDB7312 is not set
|
||||
# CONFIG_MTD_PCI is not set
|
||||
# CONFIG_MTD_PLATRAM is not set
|
||||
|
||||
#
|
||||
# Self-contained MTD device drivers
|
||||
@ -335,72 +397,8 @@ CONFIG_IOSCHED_CFQ=y
|
||||
# CONFIG_I2O is not set
|
||||
|
||||
#
|
||||
# Networking support
|
||||
# Network device support
|
||||
#
|
||||
CONFIG_NET=y
|
||||
|
||||
#
|
||||
# Networking options
|
||||
#
|
||||
CONFIG_PACKET=y
|
||||
CONFIG_PACKET_MMAP=y
|
||||
CONFIG_UNIX=y
|
||||
# CONFIG_NET_KEY is not set
|
||||
CONFIG_INET=y
|
||||
# CONFIG_IP_MULTICAST is not set
|
||||
# CONFIG_IP_ADVANCED_ROUTER is not set
|
||||
CONFIG_IP_FIB_HASH=y
|
||||
CONFIG_IP_PNP=y
|
||||
CONFIG_IP_PNP_DHCP=y
|
||||
CONFIG_IP_PNP_BOOTP=y
|
||||
# CONFIG_IP_PNP_RARP is not set
|
||||
# CONFIG_NET_IPIP is not set
|
||||
# CONFIG_NET_IPGRE is not set
|
||||
# CONFIG_ARPD is not set
|
||||
CONFIG_SYN_COOKIES=y
|
||||
# CONFIG_INET_AH is not set
|
||||
# CONFIG_INET_ESP is not set
|
||||
# CONFIG_INET_IPCOMP is not set
|
||||
# CONFIG_INET_TUNNEL is not set
|
||||
# CONFIG_IP_TCPDIAG is not set
|
||||
# CONFIG_IP_TCPDIAG_IPV6 is not set
|
||||
# CONFIG_TCP_CONG_ADVANCED is not set
|
||||
CONFIG_TCP_CONG_BIC=y
|
||||
# CONFIG_IPV6 is not set
|
||||
# CONFIG_NETFILTER is not set
|
||||
|
||||
#
|
||||
# SCTP Configuration (EXPERIMENTAL)
|
||||
#
|
||||
# CONFIG_IP_SCTP is not set
|
||||
# CONFIG_ATM is not set
|
||||
# CONFIG_BRIDGE is not set
|
||||
# CONFIG_VLAN_8021Q is not set
|
||||
# CONFIG_DECNET is not set
|
||||
# CONFIG_LLC2 is not set
|
||||
# CONFIG_IPX is not set
|
||||
# CONFIG_ATALK is not set
|
||||
# CONFIG_X25 is not set
|
||||
# CONFIG_LAPB is not set
|
||||
# CONFIG_NET_DIVERT is not set
|
||||
# CONFIG_ECONET is not set
|
||||
# CONFIG_WAN_ROUTER is not set
|
||||
|
||||
#
|
||||
# QoS and/or fair queueing
|
||||
#
|
||||
# CONFIG_NET_SCHED is not set
|
||||
# CONFIG_NET_CLS_ROUTE is not set
|
||||
|
||||
#
|
||||
# Network testing
|
||||
#
|
||||
# CONFIG_NET_PKTGEN is not set
|
||||
# CONFIG_NETPOLL is not set
|
||||
# CONFIG_NET_POLL_CONTROLLER is not set
|
||||
# CONFIG_HAMRADIO is not set
|
||||
# CONFIG_IRDA is not set
|
||||
# CONFIG_BT is not set
|
||||
CONFIG_NETDEVICES=y
|
||||
CONFIG_DUMMY=y
|
||||
# CONFIG_BONDING is not set
|
||||
@ -510,6 +508,8 @@ CONFIG_DLCI_MAX=8
|
||||
# CONFIG_SLIP is not set
|
||||
# CONFIG_SHAPER is not set
|
||||
# CONFIG_NETCONSOLE is not set
|
||||
# CONFIG_NETPOLL is not set
|
||||
# CONFIG_NET_POLL_CONTROLLER is not set
|
||||
|
||||
#
|
||||
# ISDN subsystem
|
||||
@ -636,7 +636,7 @@ CONFIG_I2C_ALGOBIT=y
|
||||
# CONFIG_I2C_I810 is not set
|
||||
# CONFIG_I2C_PIIX4 is not set
|
||||
# CONFIG_I2C_ISA is not set
|
||||
# CONFIG_I2C_IXP2000 is not set
|
||||
CONFIG_I2C_IXP2000=y
|
||||
# CONFIG_I2C_NFORCE2 is not set
|
||||
# CONFIG_I2C_PARPORT_LIGHT is not set
|
||||
# CONFIG_I2C_PROSAVAGE is not set
|
||||
@ -650,11 +650,28 @@ CONFIG_I2C_ALGOBIT=y
|
||||
# CONFIG_I2C_VIAPRO is not set
|
||||
# CONFIG_I2C_VOODOO3 is not set
|
||||
# CONFIG_I2C_PCA_ISA is not set
|
||||
CONFIG_I2C_SENSOR=y
|
||||
|
||||
#
|
||||
# Hardware Sensors Chip support
|
||||
# Miscellaneous I2C Chip support
|
||||
#
|
||||
CONFIG_I2C_SENSOR=y
|
||||
# CONFIG_SENSORS_DS1337 is not set
|
||||
# CONFIG_SENSORS_DS1374 is not set
|
||||
CONFIG_SENSORS_EEPROM=y
|
||||
# CONFIG_SENSORS_PCF8574 is not set
|
||||
# CONFIG_SENSORS_PCA9539 is not set
|
||||
# CONFIG_SENSORS_PCF8591 is not set
|
||||
# CONFIG_SENSORS_RTC8564 is not set
|
||||
# CONFIG_SENSORS_MAX6875 is not set
|
||||
# CONFIG_I2C_DEBUG_CORE is not set
|
||||
# CONFIG_I2C_DEBUG_ALGO is not set
|
||||
# CONFIG_I2C_DEBUG_BUS is not set
|
||||
# CONFIG_I2C_DEBUG_CHIP is not set
|
||||
|
||||
#
|
||||
# Hardware Monitoring support
|
||||
#
|
||||
CONFIG_HWMON=y
|
||||
# CONFIG_SENSORS_ADM1021 is not set
|
||||
# CONFIG_SENSORS_ADM1025 is not set
|
||||
# CONFIG_SENSORS_ADM1026 is not set
|
||||
@ -680,30 +697,15 @@ CONFIG_I2C_SENSOR=y
|
||||
# CONFIG_SENSORS_LM92 is not set
|
||||
# CONFIG_SENSORS_MAX1619 is not set
|
||||
# CONFIG_SENSORS_PC87360 is not set
|
||||
# CONFIG_SENSORS_SMSC47B397 is not set
|
||||
# CONFIG_SENSORS_SIS5595 is not set
|
||||
# CONFIG_SENSORS_SMSC47M1 is not set
|
||||
# CONFIG_SENSORS_SMSC47B397 is not set
|
||||
# CONFIG_SENSORS_VIA686A is not set
|
||||
# CONFIG_SENSORS_W83781D is not set
|
||||
# CONFIG_SENSORS_W83L785TS is not set
|
||||
# CONFIG_SENSORS_W83627HF is not set
|
||||
# CONFIG_SENSORS_W83627EHF is not set
|
||||
|
||||
#
|
||||
# Other I2C Chip support
|
||||
#
|
||||
# CONFIG_SENSORS_DS1337 is not set
|
||||
# CONFIG_SENSORS_DS1374 is not set
|
||||
CONFIG_SENSORS_EEPROM=y
|
||||
# CONFIG_SENSORS_PCF8574 is not set
|
||||
# CONFIG_SENSORS_PCA9539 is not set
|
||||
# CONFIG_SENSORS_PCF8591 is not set
|
||||
# CONFIG_SENSORS_RTC8564 is not set
|
||||
# CONFIG_SENSORS_MAX6875 is not set
|
||||
# CONFIG_I2C_DEBUG_CORE is not set
|
||||
# CONFIG_I2C_DEBUG_ALGO is not set
|
||||
# CONFIG_I2C_DEBUG_BUS is not set
|
||||
# CONFIG_I2C_DEBUG_CHIP is not set
|
||||
# CONFIG_HWMON_DEBUG_CHIP is not set
|
||||
|
||||
#
|
||||
# Misc devices
|
||||
@ -771,6 +773,7 @@ CONFIG_FS_POSIX_ACL=y
|
||||
# CONFIG_XFS_FS is not set
|
||||
# CONFIG_MINIX_FS is not set
|
||||
# CONFIG_ROMFS_FS is not set
|
||||
CONFIG_INOTIFY=y
|
||||
# CONFIG_QUOTA is not set
|
||||
CONFIG_DNOTIFY=y
|
||||
# CONFIG_AUTOFS_FS is not set
|
||||
@ -813,8 +816,7 @@ CONFIG_RAMFS=y
|
||||
# CONFIG_JFFS_FS is not set
|
||||
CONFIG_JFFS2_FS=y
|
||||
CONFIG_JFFS2_FS_DEBUG=0
|
||||
# CONFIG_JFFS2_FS_NAND is not set
|
||||
# CONFIG_JFFS2_FS_NOR_ECC is not set
|
||||
CONFIG_JFFS2_FS_WRITEBUFFER=y
|
||||
# CONFIG_JFFS2_COMPRESSION_OPTIONS is not set
|
||||
CONFIG_JFFS2_ZLIB=y
|
||||
CONFIG_JFFS2_RTIME=y
|
||||
|
@ -1,7 +1,7 @@
|
||||
#
|
||||
# Automatically generated make config: don't edit
|
||||
# Linux kernel version: 2.6.13-rc2
|
||||
# Thu Jul 7 16:49:13 2005
|
||||
# Linux kernel version: 2.6.13
|
||||
# Wed Sep 14 10:52:16 2005
|
||||
#
|
||||
CONFIG_ARM=y
|
||||
CONFIG_MMU=y
|
||||
@ -136,7 +136,6 @@ CONFIG_PCI_NAMES=y
|
||||
#
|
||||
# Kernel Features
|
||||
#
|
||||
# CONFIG_SMP is not set
|
||||
# CONFIG_PREEMPT is not set
|
||||
# CONFIG_NO_IDLE_HZ is not set
|
||||
# CONFIG_ARCH_DISCONTIGMEM_ENABLE is not set
|
||||
@ -179,6 +178,68 @@ CONFIG_BINFMT_ELF=y
|
||||
#
|
||||
# CONFIG_PM is not set
|
||||
|
||||
#
|
||||
# Networking
|
||||
#
|
||||
CONFIG_NET=y
|
||||
|
||||
#
|
||||
# Networking options
|
||||
#
|
||||
CONFIG_PACKET=y
|
||||
CONFIG_PACKET_MMAP=y
|
||||
CONFIG_UNIX=y
|
||||
# CONFIG_NET_KEY is not set
|
||||
CONFIG_INET=y
|
||||
# CONFIG_IP_MULTICAST is not set
|
||||
# CONFIG_IP_ADVANCED_ROUTER is not set
|
||||
CONFIG_IP_FIB_HASH=y
|
||||
CONFIG_IP_PNP=y
|
||||
CONFIG_IP_PNP_DHCP=y
|
||||
CONFIG_IP_PNP_BOOTP=y
|
||||
# CONFIG_IP_PNP_RARP is not set
|
||||
# CONFIG_NET_IPIP is not set
|
||||
# CONFIG_NET_IPGRE is not set
|
||||
# CONFIG_ARPD is not set
|
||||
CONFIG_SYN_COOKIES=y
|
||||
# CONFIG_INET_AH is not set
|
||||
# CONFIG_INET_ESP is not set
|
||||
# CONFIG_INET_IPCOMP is not set
|
||||
# CONFIG_INET_TUNNEL is not set
|
||||
# CONFIG_IP_TCPDIAG is not set
|
||||
# CONFIG_IP_TCPDIAG_IPV6 is not set
|
||||
# CONFIG_TCP_CONG_ADVANCED is not set
|
||||
CONFIG_TCP_CONG_BIC=y
|
||||
# CONFIG_IPV6 is not set
|
||||
# CONFIG_NETFILTER is not set
|
||||
|
||||
#
|
||||
# SCTP Configuration (EXPERIMENTAL)
|
||||
#
|
||||
# CONFIG_IP_SCTP is not set
|
||||
# CONFIG_ATM is not set
|
||||
# CONFIG_BRIDGE is not set
|
||||
# CONFIG_VLAN_8021Q is not set
|
||||
# CONFIG_DECNET is not set
|
||||
# CONFIG_LLC2 is not set
|
||||
# CONFIG_IPX is not set
|
||||
# CONFIG_ATALK is not set
|
||||
# CONFIG_X25 is not set
|
||||
# CONFIG_LAPB is not set
|
||||
# CONFIG_NET_DIVERT is not set
|
||||
# CONFIG_ECONET is not set
|
||||
# CONFIG_WAN_ROUTER is not set
|
||||
# CONFIG_NET_SCHED is not set
|
||||
# CONFIG_NET_CLS_ROUTE is not set
|
||||
|
||||
#
|
||||
# Network testing
|
||||
#
|
||||
# CONFIG_NET_PKTGEN is not set
|
||||
# CONFIG_HAMRADIO is not set
|
||||
# CONFIG_IRDA is not set
|
||||
# CONFIG_BT is not set
|
||||
|
||||
#
|
||||
# Device Drivers
|
||||
#
|
||||
@ -249,6 +310,7 @@ CONFIG_MTD_COMPLEX_MAPPINGS=y
|
||||
CONFIG_MTD_IXP2000=y
|
||||
# CONFIG_MTD_EDB7312 is not set
|
||||
# CONFIG_MTD_PCI is not set
|
||||
# CONFIG_MTD_PLATRAM is not set
|
||||
|
||||
#
|
||||
# Self-contained MTD device drivers
|
||||
@ -335,72 +397,8 @@ CONFIG_IOSCHED_CFQ=y
|
||||
# CONFIG_I2O is not set
|
||||
|
||||
#
|
||||
# Networking support
|
||||
# Network device support
|
||||
#
|
||||
CONFIG_NET=y
|
||||
|
||||
#
|
||||
# Networking options
|
||||
#
|
||||
CONFIG_PACKET=y
|
||||
CONFIG_PACKET_MMAP=y
|
||||
CONFIG_UNIX=y
|
||||
# CONFIG_NET_KEY is not set
|
||||
CONFIG_INET=y
|
||||
# CONFIG_IP_MULTICAST is not set
|
||||
# CONFIG_IP_ADVANCED_ROUTER is not set
|
||||
CONFIG_IP_FIB_HASH=y
|
||||
CONFIG_IP_PNP=y
|
||||
CONFIG_IP_PNP_DHCP=y
|
||||
CONFIG_IP_PNP_BOOTP=y
|
||||
# CONFIG_IP_PNP_RARP is not set
|
||||
# CONFIG_NET_IPIP is not set
|
||||
# CONFIG_NET_IPGRE is not set
|
||||
# CONFIG_ARPD is not set
|
||||
CONFIG_SYN_COOKIES=y
|
||||
# CONFIG_INET_AH is not set
|
||||
# CONFIG_INET_ESP is not set
|
||||
# CONFIG_INET_IPCOMP is not set
|
||||
# CONFIG_INET_TUNNEL is not set
|
||||
# CONFIG_IP_TCPDIAG is not set
|
||||
# CONFIG_IP_TCPDIAG_IPV6 is not set
|
||||
# CONFIG_TCP_CONG_ADVANCED is not set
|
||||
CONFIG_TCP_CONG_BIC=y
|
||||
# CONFIG_IPV6 is not set
|
||||
# CONFIG_NETFILTER is not set
|
||||
|
||||
#
|
||||
# SCTP Configuration (EXPERIMENTAL)
|
||||
#
|
||||
# CONFIG_IP_SCTP is not set
|
||||
# CONFIG_ATM is not set
|
||||
# CONFIG_BRIDGE is not set
|
||||
# CONFIG_VLAN_8021Q is not set
|
||||
# CONFIG_DECNET is not set
|
||||
# CONFIG_LLC2 is not set
|
||||
# CONFIG_IPX is not set
|
||||
# CONFIG_ATALK is not set
|
||||
# CONFIG_X25 is not set
|
||||
# CONFIG_LAPB is not set
|
||||
# CONFIG_NET_DIVERT is not set
|
||||
# CONFIG_ECONET is not set
|
||||
# CONFIG_WAN_ROUTER is not set
|
||||
|
||||
#
|
||||
# QoS and/or fair queueing
|
||||
#
|
||||
# CONFIG_NET_SCHED is not set
|
||||
# CONFIG_NET_CLS_ROUTE is not set
|
||||
|
||||
#
|
||||
# Network testing
|
||||
#
|
||||
# CONFIG_NET_PKTGEN is not set
|
||||
# CONFIG_NETPOLL is not set
|
||||
# CONFIG_NET_POLL_CONTROLLER is not set
|
||||
# CONFIG_HAMRADIO is not set
|
||||
# CONFIG_IRDA is not set
|
||||
# CONFIG_BT is not set
|
||||
CONFIG_NETDEVICES=y
|
||||
CONFIG_DUMMY=y
|
||||
# CONFIG_BONDING is not set
|
||||
@ -511,6 +509,8 @@ CONFIG_DLCI_MAX=8
|
||||
# CONFIG_SLIP is not set
|
||||
# CONFIG_SHAPER is not set
|
||||
# CONFIG_NETCONSOLE is not set
|
||||
# CONFIG_NETPOLL is not set
|
||||
# CONFIG_NET_POLL_CONTROLLER is not set
|
||||
|
||||
#
|
||||
# ISDN subsystem
|
||||
@ -637,7 +637,7 @@ CONFIG_I2C_ALGOBIT=y
|
||||
# CONFIG_I2C_I810 is not set
|
||||
# CONFIG_I2C_PIIX4 is not set
|
||||
# CONFIG_I2C_ISA is not set
|
||||
# CONFIG_I2C_IXP2000 is not set
|
||||
CONFIG_I2C_IXP2000=y
|
||||
# CONFIG_I2C_NFORCE2 is not set
|
||||
# CONFIG_I2C_PARPORT_LIGHT is not set
|
||||
# CONFIG_I2C_PROSAVAGE is not set
|
||||
@ -651,11 +651,28 @@ CONFIG_I2C_ALGOBIT=y
|
||||
# CONFIG_I2C_VIAPRO is not set
|
||||
# CONFIG_I2C_VOODOO3 is not set
|
||||
# CONFIG_I2C_PCA_ISA is not set
|
||||
CONFIG_I2C_SENSOR=y
|
||||
|
||||
#
|
||||
# Hardware Sensors Chip support
|
||||
# Miscellaneous I2C Chip support
|
||||
#
|
||||
CONFIG_I2C_SENSOR=y
|
||||
# CONFIG_SENSORS_DS1337 is not set
|
||||
# CONFIG_SENSORS_DS1374 is not set
|
||||
CONFIG_SENSORS_EEPROM=y
|
||||
# CONFIG_SENSORS_PCF8574 is not set
|
||||
# CONFIG_SENSORS_PCA9539 is not set
|
||||
# CONFIG_SENSORS_PCF8591 is not set
|
||||
# CONFIG_SENSORS_RTC8564 is not set
|
||||
# CONFIG_SENSORS_MAX6875 is not set
|
||||
# CONFIG_I2C_DEBUG_CORE is not set
|
||||
# CONFIG_I2C_DEBUG_ALGO is not set
|
||||
# CONFIG_I2C_DEBUG_BUS is not set
|
||||
# CONFIG_I2C_DEBUG_CHIP is not set
|
||||
|
||||
#
|
||||
# Hardware Monitoring support
|
||||
#
|
||||
CONFIG_HWMON=y
|
||||
# CONFIG_SENSORS_ADM1021 is not set
|
||||
# CONFIG_SENSORS_ADM1025 is not set
|
||||
# CONFIG_SENSORS_ADM1026 is not set
|
||||
@ -681,30 +698,15 @@ CONFIG_I2C_SENSOR=y
|
||||
# CONFIG_SENSORS_LM92 is not set
|
||||
# CONFIG_SENSORS_MAX1619 is not set
|
||||
# CONFIG_SENSORS_PC87360 is not set
|
||||
# CONFIG_SENSORS_SMSC47B397 is not set
|
||||
# CONFIG_SENSORS_SIS5595 is not set
|
||||
# CONFIG_SENSORS_SMSC47M1 is not set
|
||||
# CONFIG_SENSORS_SMSC47B397 is not set
|
||||
# CONFIG_SENSORS_VIA686A is not set
|
||||
# CONFIG_SENSORS_W83781D is not set
|
||||
# CONFIG_SENSORS_W83L785TS is not set
|
||||
# CONFIG_SENSORS_W83627HF is not set
|
||||
# CONFIG_SENSORS_W83627EHF is not set
|
||||
|
||||
#
|
||||
# Other I2C Chip support
|
||||
#
|
||||
# CONFIG_SENSORS_DS1337 is not set
|
||||
# CONFIG_SENSORS_DS1374 is not set
|
||||
CONFIG_SENSORS_EEPROM=y
|
||||
# CONFIG_SENSORS_PCF8574 is not set
|
||||
# CONFIG_SENSORS_PCA9539 is not set
|
||||
# CONFIG_SENSORS_PCF8591 is not set
|
||||
# CONFIG_SENSORS_RTC8564 is not set
|
||||
# CONFIG_SENSORS_MAX6875 is not set
|
||||
# CONFIG_I2C_DEBUG_CORE is not set
|
||||
# CONFIG_I2C_DEBUG_ALGO is not set
|
||||
# CONFIG_I2C_DEBUG_BUS is not set
|
||||
# CONFIG_I2C_DEBUG_CHIP is not set
|
||||
# CONFIG_HWMON_DEBUG_CHIP is not set
|
||||
|
||||
#
|
||||
# Misc devices
|
||||
@ -772,6 +774,7 @@ CONFIG_FS_POSIX_ACL=y
|
||||
# CONFIG_XFS_FS is not set
|
||||
# CONFIG_MINIX_FS is not set
|
||||
# CONFIG_ROMFS_FS is not set
|
||||
CONFIG_INOTIFY=y
|
||||
# CONFIG_QUOTA is not set
|
||||
CONFIG_DNOTIFY=y
|
||||
# CONFIG_AUTOFS_FS is not set
|
||||
@ -814,8 +817,7 @@ CONFIG_RAMFS=y
|
||||
# CONFIG_JFFS_FS is not set
|
||||
CONFIG_JFFS2_FS=y
|
||||
CONFIG_JFFS2_FS_DEBUG=0
|
||||
# CONFIG_JFFS2_FS_NAND is not set
|
||||
# CONFIG_JFFS2_FS_NOR_ECC is not set
|
||||
CONFIG_JFFS2_FS_WRITEBUFFER=y
|
||||
# CONFIG_JFFS2_COMPRESSION_OPTIONS is not set
|
||||
CONFIG_JFFS2_ZLIB=y
|
||||
CONFIG_JFFS2_RTIME=y
|
||||
|
@ -178,7 +178,7 @@ int __down_trylock(struct semaphore * sem)
|
||||
* registers (r0 to r3 and lr), but not ip, as we use it as a return
|
||||
* value in some cases..
|
||||
*/
|
||||
asm(" .section .sched.text,\"ax\" \n\
|
||||
asm(" .section .sched.text,\"ax\",%progbits \n\
|
||||
.align 5 \n\
|
||||
.globl __down_failed \n\
|
||||
__down_failed: \n\
|
||||
|
@ -624,6 +624,9 @@ void __attribute__((noreturn)) __bug(const char *file, int line, void *data)
|
||||
printk(" - extra data = %p", data);
|
||||
printk("\n");
|
||||
*(int *)0 = 0;
|
||||
|
||||
/* Avoid "noreturn function does return" */
|
||||
for (;;);
|
||||
}
|
||||
EXPORT_SYMBOL(__bug);
|
||||
|
||||
|
@ -23,20 +23,20 @@ SECTIONS
|
||||
*(.init.text)
|
||||
_einittext = .;
|
||||
__proc_info_begin = .;
|
||||
*(.proc.info)
|
||||
*(.proc.info.init)
|
||||
__proc_info_end = .;
|
||||
__arch_info_begin = .;
|
||||
*(.arch.info)
|
||||
*(.arch.info.init)
|
||||
__arch_info_end = .;
|
||||
__tagtable_begin = .;
|
||||
*(.taglist)
|
||||
*(.taglist.init)
|
||||
__tagtable_end = .;
|
||||
. = ALIGN(16);
|
||||
__setup_start = .;
|
||||
*(.init.setup)
|
||||
__setup_end = .;
|
||||
__early_begin = .;
|
||||
*(__early_param)
|
||||
*(.early_param.init)
|
||||
__early_end = .;
|
||||
__initcall_start = .;
|
||||
*(.initcall1.init)
|
||||
|
@ -123,6 +123,7 @@ static void __init ixdp425_init(void)
|
||||
platform_add_devices(ixdp425_devices, ARRAY_SIZE(ixdp425_devices));
|
||||
}
|
||||
|
||||
#ifdef CONFIG_ARCH_IXDP465
|
||||
MACHINE_START(IXDP425, "Intel IXDP425 Development Platform")
|
||||
/* Maintainer: MontaVista Software, Inc. */
|
||||
.phys_ram = PHYS_OFFSET,
|
||||
@ -134,7 +135,9 @@ MACHINE_START(IXDP425, "Intel IXDP425 Development Platform")
|
||||
.boot_params = 0x0100,
|
||||
.init_machine = ixdp425_init,
|
||||
MACHINE_END
|
||||
#endif
|
||||
|
||||
#ifdef CONFIG_MACH_IXDP465
|
||||
MACHINE_START(IXDP465, "Intel IXDP465 Development Platform")
|
||||
/* Maintainer: MontaVista Software, Inc. */
|
||||
.phys_ram = PHYS_OFFSET,
|
||||
@ -146,7 +149,9 @@ MACHINE_START(IXDP465, "Intel IXDP465 Development Platform")
|
||||
.boot_params = 0x0100,
|
||||
.init_machine = ixdp425_init,
|
||||
MACHINE_END
|
||||
#endif
|
||||
|
||||
#ifdef CONFIG_ARCH_PRPMC1100
|
||||
MACHINE_START(IXCDP1100, "Intel IXCDP1100 Development Platform")
|
||||
/* Maintainer: MontaVista Software, Inc. */
|
||||
.phys_ram = PHYS_OFFSET,
|
||||
@ -158,6 +163,7 @@ MACHINE_START(IXCDP1100, "Intel IXCDP1100 Development Platform")
|
||||
.boot_params = 0x0100,
|
||||
.init_machine = ixdp425_init,
|
||||
MACHINE_END
|
||||
#endif
|
||||
|
||||
/*
|
||||
* Avila is functionally equivalent to IXDP425 except that it adds
|
||||
|
@ -198,13 +198,10 @@ static void corgi_mci_setpower(struct device *dev, unsigned int vdd)
|
||||
{
|
||||
struct pxamci_platform_data* p_d = dev->platform_data;
|
||||
|
||||
if (( 1 << vdd) & p_d->ocr_mask) {
|
||||
printk(KERN_DEBUG "%s: on\n", __FUNCTION__);
|
||||
if (( 1 << vdd) & p_d->ocr_mask)
|
||||
GPSR1 = GPIO_bit(CORGI_GPIO_SD_PWR);
|
||||
} else {
|
||||
printk(KERN_DEBUG "%s: off\n", __FUNCTION__);
|
||||
else
|
||||
GPCR1 = GPIO_bit(CORGI_GPIO_SD_PWR);
|
||||
}
|
||||
}
|
||||
|
||||
static int corgi_mci_get_ro(struct device *dev)
|
||||
@ -259,6 +256,16 @@ static struct platform_device *devices[] __initdata = {
|
||||
|
||||
static void __init corgi_init(void)
|
||||
{
|
||||
/* setup sleep mode values */
|
||||
PWER = 0x00000002;
|
||||
PFER = 0x00000000;
|
||||
PRER = 0x00000002;
|
||||
PGSR0 = 0x0158C000;
|
||||
PGSR1 = 0x00FF0080;
|
||||
PGSR2 = 0x0001C004;
|
||||
/* Stop 3.6MHz and drive HIGH to PCMCIA and CS */
|
||||
PCFR |= PCFR_OPDE;
|
||||
|
||||
corgi_ssp_set_machinfo(&corgi_ssp_machinfo);
|
||||
|
||||
pxa_gpio_mode(CORGI_GPIO_USB_PULLUP | GPIO_OUT);
|
||||
@ -285,42 +292,14 @@ static void __init fixup_corgi(struct machine_desc *desc,
|
||||
mi->bank[0].size = (64*1024*1024);
|
||||
}
|
||||
|
||||
static void __init corgi_init_irq(void)
|
||||
{
|
||||
pxa_init_irq();
|
||||
}
|
||||
|
||||
static struct map_desc corgi_io_desc[] __initdata = {
|
||||
/* virtual physical length */
|
||||
/* { 0xf1000000, 0x08000000, 0x01000000, MT_DEVICE },*/ /* LCDC (readable for Qt driver) */
|
||||
/* { 0xef700000, 0x10800000, 0x00001000, MT_DEVICE },*/ /* SCOOP */
|
||||
{ 0xef800000, 0x00000000, 0x00800000, MT_DEVICE }, /* Boot Flash */
|
||||
};
|
||||
|
||||
static void __init corgi_map_io(void)
|
||||
{
|
||||
pxa_map_io();
|
||||
iotable_init(corgi_io_desc,ARRAY_SIZE(corgi_io_desc));
|
||||
|
||||
/* setup sleep mode values */
|
||||
PWER = 0x00000002;
|
||||
PFER = 0x00000000;
|
||||
PRER = 0x00000002;
|
||||
PGSR0 = 0x0158C000;
|
||||
PGSR1 = 0x00FF0080;
|
||||
PGSR2 = 0x0001C004;
|
||||
/* Stop 3.6MHz and drive HIGH to PCMCIA and CS */
|
||||
PCFR |= PCFR_OPDE;
|
||||
}
|
||||
|
||||
#ifdef CONFIG_MACH_CORGI
|
||||
MACHINE_START(CORGI, "SHARP Corgi")
|
||||
.phys_ram = 0xa0000000,
|
||||
.phys_io = 0x40000000,
|
||||
.io_pg_offst = (io_p2v(0x40000000) >> 18) & 0xfffc,
|
||||
.fixup = fixup_corgi,
|
||||
.map_io = corgi_map_io,
|
||||
.init_irq = corgi_init_irq,
|
||||
.map_io = pxa_map_io,
|
||||
.init_irq = pxa_init_irq,
|
||||
.init_machine = corgi_init,
|
||||
.timer = &pxa_timer,
|
||||
MACHINE_END
|
||||
@ -332,8 +311,8 @@ MACHINE_START(SHEPHERD, "SHARP Shepherd")
|
||||
.phys_io = 0x40000000,
|
||||
.io_pg_offst = (io_p2v(0x40000000) >> 18) & 0xfffc,
|
||||
.fixup = fixup_corgi,
|
||||
.map_io = corgi_map_io,
|
||||
.init_irq = corgi_init_irq,
|
||||
.map_io = pxa_map_io,
|
||||
.init_irq = pxa_init_irq,
|
||||
.init_machine = corgi_init,
|
||||
.timer = &pxa_timer,
|
||||
MACHINE_END
|
||||
@ -345,8 +324,8 @@ MACHINE_START(HUSKY, "SHARP Husky")
|
||||
.phys_io = 0x40000000,
|
||||
.io_pg_offst = (io_p2v(0x40000000) >> 18) & 0xfffc,
|
||||
.fixup = fixup_corgi,
|
||||
.map_io = corgi_map_io,
|
||||
.init_irq = corgi_init_irq,
|
||||
.map_io = pxa_map_io,
|
||||
.init_irq = pxa_init_irq,
|
||||
.init_machine = corgi_init,
|
||||
.timer = &pxa_timer,
|
||||
MACHINE_END
|
||||
|
@ -146,6 +146,11 @@ static struct pxa2xx_udc_mach_info udc_info __initdata = {
|
||||
// no D+ pullup; lubbock can't connect/disconnect in software
|
||||
};
|
||||
|
||||
static struct platform_device lub_audio_device = {
|
||||
.name = "pxa2xx-ac97",
|
||||
.id = -1,
|
||||
};
|
||||
|
||||
static struct resource sa1111_resources[] = {
|
||||
[0] = {
|
||||
.start = 0x10000000,
|
||||
@ -195,6 +200,7 @@ static struct platform_device smc91x_device = {
|
||||
|
||||
static struct platform_device *devices[] __initdata = {
|
||||
&sa1111_device,
|
||||
&lub_audio_device,
|
||||
&smc91x_device,
|
||||
};
|
||||
|
||||
|
@ -30,6 +30,8 @@
|
||||
|
||||
#include <asm/arch/pxa-regs.h>
|
||||
#include <asm/arch/irq.h>
|
||||
#include <asm/arch/mmc.h>
|
||||
#include <asm/arch/udc.h>
|
||||
#include <asm/arch/poodle.h>
|
||||
#include <asm/arch/pxafb.h>
|
||||
|
||||
@ -93,6 +95,83 @@ static struct platform_device locomo_device = {
|
||||
.resource = locomo_resources,
|
||||
};
|
||||
|
||||
|
||||
/*
|
||||
* MMC/SD Device
|
||||
*
|
||||
* The card detect interrupt isn't debounced so we delay it by 250ms
|
||||
* to give the card a chance to fully insert/eject.
|
||||
*/
|
||||
static struct pxamci_platform_data poodle_mci_platform_data;
|
||||
|
||||
static int poodle_mci_init(struct device *dev, irqreturn_t (*poodle_detect_int)(int, void *, struct pt_regs *), void *data)
|
||||
{
|
||||
int err;
|
||||
|
||||
/* setup GPIO for PXA25x MMC controller */
|
||||
pxa_gpio_mode(GPIO6_MMCCLK_MD);
|
||||
pxa_gpio_mode(GPIO8_MMCCS0_MD);
|
||||
pxa_gpio_mode(POODLE_GPIO_nSD_DETECT | GPIO_IN);
|
||||
pxa_gpio_mode(POODLE_GPIO_SD_PWR | GPIO_OUT);
|
||||
|
||||
poodle_mci_platform_data.detect_delay = msecs_to_jiffies(250);
|
||||
|
||||
err = request_irq(POODLE_IRQ_GPIO_nSD_DETECT, poodle_detect_int, SA_INTERRUPT,
|
||||
"MMC card detect", data);
|
||||
if (err) {
|
||||
printk(KERN_ERR "poodle_mci_init: MMC/SD: can't request MMC card detect IRQ\n");
|
||||
return -1;
|
||||
}
|
||||
|
||||
set_irq_type(POODLE_IRQ_GPIO_nSD_DETECT, IRQT_BOTHEDGE);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static void poodle_mci_setpower(struct device *dev, unsigned int vdd)
|
||||
{
|
||||
struct pxamci_platform_data* p_d = dev->platform_data;
|
||||
|
||||
if (( 1 << vdd) & p_d->ocr_mask)
|
||||
GPSR1 = GPIO_bit(POODLE_GPIO_SD_PWR);
|
||||
else
|
||||
GPCR1 = GPIO_bit(POODLE_GPIO_SD_PWR);
|
||||
}
|
||||
|
||||
static void poodle_mci_exit(struct device *dev, void *data)
|
||||
{
|
||||
free_irq(POODLE_IRQ_GPIO_nSD_DETECT, data);
|
||||
}
|
||||
|
||||
static struct pxamci_platform_data poodle_mci_platform_data = {
|
||||
.ocr_mask = MMC_VDD_32_33|MMC_VDD_33_34,
|
||||
.init = poodle_mci_init,
|
||||
.setpower = poodle_mci_setpower,
|
||||
.exit = poodle_mci_exit,
|
||||
};
|
||||
|
||||
|
||||
/*
|
||||
* USB Device Controller
|
||||
*/
|
||||
static void poodle_udc_command(int cmd)
|
||||
{
|
||||
switch(cmd) {
|
||||
case PXA2XX_UDC_CMD_CONNECT:
|
||||
GPSR(POODLE_GPIO_USB_PULLUP) = GPIO_bit(POODLE_GPIO_USB_PULLUP);
|
||||
break;
|
||||
case PXA2XX_UDC_CMD_DISCONNECT:
|
||||
GPCR(POODLE_GPIO_USB_PULLUP) = GPIO_bit(POODLE_GPIO_USB_PULLUP);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
static struct pxa2xx_udc_mach_info udc_info __initdata = {
|
||||
/* no connect GPIO; poodle can't tell connection status */
|
||||
.udc_command = poodle_udc_command,
|
||||
};
|
||||
|
||||
|
||||
/* PXAFB device */
|
||||
static struct pxafb_mach_info poodle_fb_info __initdata = {
|
||||
.pixclock = 144700,
|
||||
@ -126,6 +205,15 @@ static void __init poodle_init(void)
|
||||
{
|
||||
int ret = 0;
|
||||
|
||||
/* setup sleep mode values */
|
||||
PWER = 0x00000002;
|
||||
PFER = 0x00000000;
|
||||
PRER = 0x00000002;
|
||||
PGSR0 = 0x00008000;
|
||||
PGSR1 = 0x003F0202;
|
||||
PGSR2 = 0x0001C000;
|
||||
PCFR |= PCFR_OPDE;
|
||||
|
||||
/* cpu initialize */
|
||||
/* Pgsr Register */
|
||||
PGSR0 = 0x0146dd80;
|
||||
@ -155,6 +243,9 @@ static void __init poodle_init(void)
|
||||
GPSR2 = 0x00000000;
|
||||
|
||||
set_pxa_fb_info(&poodle_fb_info);
|
||||
pxa_gpio_mode(POODLE_GPIO_USB_PULLUP | GPIO_OUT);
|
||||
pxa_set_udc_info(&udc_info);
|
||||
pxa_set_mci_info(&poodle_mci_platform_data);
|
||||
|
||||
scoop_num = 1;
|
||||
scoop_devs = &poodle_pcmcia_scoop[0];
|
||||
@ -171,32 +262,12 @@ static void __init fixup_poodle(struct machine_desc *desc,
|
||||
sharpsl_save_param();
|
||||
}
|
||||
|
||||
static struct map_desc poodle_io_desc[] __initdata = {
|
||||
/* virtual physical length */
|
||||
{ 0xef800000, 0x00000000, 0x00800000, MT_DEVICE }, /* Boot Flash */
|
||||
};
|
||||
|
||||
static void __init poodle_map_io(void)
|
||||
{
|
||||
pxa_map_io();
|
||||
iotable_init(poodle_io_desc, ARRAY_SIZE(poodle_io_desc));
|
||||
|
||||
/* setup sleep mode values */
|
||||
PWER = 0x00000002;
|
||||
PFER = 0x00000000;
|
||||
PRER = 0x00000002;
|
||||
PGSR0 = 0x00008000;
|
||||
PGSR1 = 0x003F0202;
|
||||
PGSR2 = 0x0001C000;
|
||||
PCFR |= PCFR_OPDE;
|
||||
}
|
||||
|
||||
MACHINE_START(POODLE, "SHARP Poodle")
|
||||
.phys_ram = 0xa0000000,
|
||||
.phys_io = 0x40000000,
|
||||
.io_pg_offst = (io_p2v(0x40000000) >> 18) & 0xfffc,
|
||||
.fixup = fixup_poodle,
|
||||
.map_io = poodle_map_io,
|
||||
.map_io = pxa_map_io,
|
||||
.init_irq = pxa_init_irq,
|
||||
.timer = &pxa_timer,
|
||||
.init_machine = poodle_init,
|
||||
|
@ -12,6 +12,7 @@
|
||||
*
|
||||
* Modifications:
|
||||
* 02-May-2005 BJD Copied from mach-bast.c
|
||||
* 20-Sep-2005 BJD Added static to non-exported items
|
||||
*/
|
||||
|
||||
#include <linux/kernel.h>
|
||||
@ -232,7 +233,7 @@ static struct s3c24xx_board anubis_board __initdata = {
|
||||
.clocks_count = ARRAY_SIZE(anubis_clocks)
|
||||
};
|
||||
|
||||
void __init anubis_map_io(void)
|
||||
static void __init anubis_map_io(void)
|
||||
{
|
||||
/* initialise the clocks */
|
||||
|
||||
|
@ -31,6 +31,7 @@
|
||||
* 17-Jul-2005 BJD Changed to platform device for SuperIO 16550s
|
||||
* 25-Jul-2005 BJD Removed ASIX static mappings
|
||||
* 27-Jul-2005 BJD Ensure maximum frequency of i2c bus
|
||||
* 20-Sep-2005 BJD Added static to non-exported items
|
||||
*/
|
||||
|
||||
#include <linux/kernel.h>
|
||||
@ -428,7 +429,7 @@ static struct s3c24xx_board bast_board __initdata = {
|
||||
.clocks_count = ARRAY_SIZE(bast_clocks)
|
||||
};
|
||||
|
||||
void __init bast_map_io(void)
|
||||
static void __init bast_map_io(void)
|
||||
{
|
||||
/* initialise the clocks */
|
||||
|
||||
|
@ -24,6 +24,7 @@
|
||||
* 10-Jan-2005 BJD Removed include of s3c2410.h
|
||||
* 14-Jan-2005 BJD Added clock init
|
||||
* 10-Mar-2005 LCVR Changed S3C2410_VA to S3C24XX_VA
|
||||
* 20-Sep-2005 BJD Added static to non-exported items
|
||||
*/
|
||||
|
||||
#include <linux/kernel.h>
|
||||
@ -147,7 +148,7 @@ static struct s3c24xx_board h1940_board __initdata = {
|
||||
.devices_count = ARRAY_SIZE(h1940_devices)
|
||||
};
|
||||
|
||||
void __init h1940_map_io(void)
|
||||
static void __init h1940_map_io(void)
|
||||
{
|
||||
s3c24xx_init_io(h1940_iodesc, ARRAY_SIZE(h1940_iodesc));
|
||||
s3c24xx_init_clocks(0);
|
||||
@ -155,13 +156,13 @@ void __init h1940_map_io(void)
|
||||
s3c24xx_set_board(&h1940_board);
|
||||
}
|
||||
|
||||
void __init h1940_init_irq(void)
|
||||
static void __init h1940_init_irq(void)
|
||||
{
|
||||
s3c24xx_init_irq();
|
||||
|
||||
}
|
||||
|
||||
void __init h1940_init(void)
|
||||
static void __init h1940_init(void)
|
||||
{
|
||||
set_s3c2410fb_info(&h1940_lcdcfg);
|
||||
}
|
||||
|
@ -97,7 +97,7 @@ static struct s3c24xx_board n30_board __initdata = {
|
||||
.devices_count = ARRAY_SIZE(n30_devices)
|
||||
};
|
||||
|
||||
void __init n30_map_io(void)
|
||||
static void __init n30_map_io(void)
|
||||
{
|
||||
s3c24xx_init_io(n30_iodesc, ARRAY_SIZE(n30_iodesc));
|
||||
s3c24xx_init_clocks(0);
|
||||
@ -105,14 +105,14 @@ void __init n30_map_io(void)
|
||||
s3c24xx_set_board(&n30_board);
|
||||
}
|
||||
|
||||
void __init n30_init_irq(void)
|
||||
static void __init n30_init_irq(void)
|
||||
{
|
||||
s3c24xx_init_irq();
|
||||
}
|
||||
|
||||
/* GPB3 is the line that controls the pull-up for the USB D+ line */
|
||||
|
||||
void __init n30_init(void)
|
||||
static void __init n30_init(void)
|
||||
{
|
||||
s3c_device_i2c.dev.platform_data = &n30_i2ccfg;
|
||||
|
||||
|
@ -136,7 +136,7 @@ static void __init nexcoder_sensorboard_init(void)
|
||||
s3c2410_gpio_cfgpin(S3C2410_GPF2, S3C2410_GPF2_OUTP); // CAM_GPIO6 => CAM_PWRDN
|
||||
}
|
||||
|
||||
void __init nexcoder_map_io(void)
|
||||
static void __init nexcoder_map_io(void)
|
||||
{
|
||||
s3c24xx_init_io(nexcoder_iodesc, ARRAY_SIZE(nexcoder_iodesc));
|
||||
s3c24xx_init_clocks(0);
|
||||
|
@ -105,7 +105,7 @@ static struct s3c24xx_board otom11_board __initdata = {
|
||||
};
|
||||
|
||||
|
||||
void __init otom11_map_io(void)
|
||||
static void __init otom11_map_io(void)
|
||||
{
|
||||
s3c24xx_init_io(otom11_iodesc, ARRAY_SIZE(otom11_iodesc));
|
||||
s3c24xx_init_clocks(0);
|
||||
|
@ -16,6 +16,7 @@
|
||||
* 14-Jan-2005 BJD Added new clock init
|
||||
* 10-Mar-2005 LCVR Changed S3C2410_VA to S3C24XX_VA
|
||||
* 14-Mar-2005 BJD Fixed __iomem warnings
|
||||
* 20-Sep-2005 BJD Added static to non-exported items
|
||||
*/
|
||||
|
||||
#include <linux/kernel.h>
|
||||
@ -108,7 +109,7 @@ static struct s3c24xx_board rx3715_board __initdata = {
|
||||
.devices_count = ARRAY_SIZE(rx3715_devices)
|
||||
};
|
||||
|
||||
void __init rx3715_map_io(void)
|
||||
static void __init rx3715_map_io(void)
|
||||
{
|
||||
s3c24xx_init_io(rx3715_iodesc, ARRAY_SIZE(rx3715_iodesc));
|
||||
s3c24xx_init_clocks(16934000);
|
||||
@ -116,7 +117,7 @@ void __init rx3715_map_io(void)
|
||||
s3c24xx_set_board(&rx3715_board);
|
||||
}
|
||||
|
||||
void __init rx3715_init_irq(void)
|
||||
static void __init rx3715_init_irq(void)
|
||||
{
|
||||
s3c24xx_init_irq();
|
||||
}
|
||||
|
@ -28,6 +28,7 @@
|
||||
* Ben Dooks <ben@simtec.co.uk>
|
||||
*
|
||||
* 10-Mar-2005 LCVR Changed S3C2410_VA to S3C24XX_VA
|
||||
* 20-Sep-2005 BJD Added static to non-exported items
|
||||
*
|
||||
***********************************************************************/
|
||||
|
||||
@ -97,7 +98,7 @@ static struct s3c24xx_board smdk2410_board __initdata = {
|
||||
.devices_count = ARRAY_SIZE(smdk2410_devices)
|
||||
};
|
||||
|
||||
void __init smdk2410_map_io(void)
|
||||
static void __init smdk2410_map_io(void)
|
||||
{
|
||||
s3c24xx_init_io(smdk2410_iodesc, ARRAY_SIZE(smdk2410_iodesc));
|
||||
s3c24xx_init_clocks(0);
|
||||
@ -105,7 +106,7 @@ void __init smdk2410_map_io(void)
|
||||
s3c24xx_set_board(&smdk2410_board);
|
||||
}
|
||||
|
||||
void __init smdk2410_init_irq(void)
|
||||
static void __init smdk2410_init_irq(void)
|
||||
{
|
||||
s3c24xx_init_irq();
|
||||
}
|
||||
|
@ -18,6 +18,7 @@
|
||||
* 22-Feb-2005 BJD Updated for 2.6.11-rc5 relesa
|
||||
* 10-Mar-2005 LCVR Replaced S3C2410_VA by S3C24XX_VA
|
||||
* 14-Mar-2005 BJD void __iomem fixes
|
||||
* 20-Sep-2005 BJD Added static to non-exported items
|
||||
*/
|
||||
|
||||
#include <linux/kernel.h>
|
||||
@ -98,7 +99,7 @@ static struct s3c24xx_board smdk2440_board __initdata = {
|
||||
.devices_count = ARRAY_SIZE(smdk2440_devices)
|
||||
};
|
||||
|
||||
void __init smdk2440_map_io(void)
|
||||
static void __init smdk2440_map_io(void)
|
||||
{
|
||||
s3c24xx_init_io(smdk2440_iodesc, ARRAY_SIZE(smdk2440_iodesc));
|
||||
s3c24xx_init_clocks(16934400);
|
||||
@ -106,7 +107,7 @@ void __init smdk2440_map_io(void)
|
||||
s3c24xx_set_board(&smdk2440_board);
|
||||
}
|
||||
|
||||
void __init smdk2440_machine_init(void)
|
||||
static void __init smdk2440_machine_init(void)
|
||||
{
|
||||
/* Configure the LEDs (even if we have no LED support)*/
|
||||
|
||||
|
@ -28,6 +28,7 @@
|
||||
* 10-Mar-2005 LCVR Changed S3C2410_VA to S3C24XX_VA
|
||||
* 14-Mar-2006 BJD void __iomem fixes
|
||||
* 22-Jun-2006 BJD Added DM9000 platform information
|
||||
* 20-Sep-2005 BJD Added static to non-exported items
|
||||
*/
|
||||
|
||||
#include <linux/kernel.h>
|
||||
@ -347,7 +348,7 @@ static void vr1000_power_off(void)
|
||||
s3c2410_gpio_setpin(S3C2410_GPB9, 1);
|
||||
}
|
||||
|
||||
void __init vr1000_map_io(void)
|
||||
static void __init vr1000_map_io(void)
|
||||
{
|
||||
/* initialise clock sources */
|
||||
|
||||
|
@ -111,12 +111,11 @@ static struct mtd_partition collie_partitions[] = {
|
||||
|
||||
static void collie_set_vpp(int vpp)
|
||||
{
|
||||
write_scoop_reg(SCOOP_GPCR, read_scoop_reg(SCOOP_GPCR) | COLLIE_SCP_VPEN);
|
||||
if (vpp) {
|
||||
write_scoop_reg(SCOOP_GPWR, read_scoop_reg(SCOOP_GPWR) | COLLIE_SCP_VPEN);
|
||||
} else {
|
||||
write_scoop_reg(SCOOP_GPWR, read_scoop_reg(SCOOP_GPWR) & ~COLLIE_SCP_VPEN);
|
||||
}
|
||||
write_scoop_reg(&colliescoop_device.dev, SCOOP_GPCR, read_scoop_reg(SCOOP_GPCR) | COLLIE_SCP_VPEN);
|
||||
if (vpp)
|
||||
write_scoop_reg(&colliescoop_device.dev, SCOOP_GPWR, read_scoop_reg(SCOOP_GPWR) | COLLIE_SCP_VPEN);
|
||||
else
|
||||
write_scoop_reg(&colliescoop_device.dev, SCOOP_GPWR, read_scoop_reg(SCOOP_GPWR) & ~COLLIE_SCP_VPEN);
|
||||
}
|
||||
|
||||
static struct flash_platform_data collie_flash_data = {
|
||||
|
@ -39,3 +39,6 @@ extern void sa11x0_set_ssp_data(struct sa11x0_ssp_plat_ops *ops);
|
||||
|
||||
struct irda_platform_data;
|
||||
void sa11x0_set_irda_data(struct irda_platform_data *irda);
|
||||
|
||||
struct mcp_plat_data;
|
||||
void sa11x0_set_mcp_data(struct mcp_plat_data *data);
|
||||
|
@ -233,7 +233,17 @@ do_page_fault(unsigned long addr, unsigned int fsr, struct pt_regs *regs)
|
||||
if (in_interrupt() || !mm)
|
||||
goto no_context;
|
||||
|
||||
down_read(&mm->mmap_sem);
|
||||
/*
|
||||
* As per x86, we may deadlock here. However, since the kernel only
|
||||
* validly references user space from well defined areas of the code,
|
||||
* we can bug out early if this is from code which shouldn't.
|
||||
*/
|
||||
if (!down_read_trylock(&mm->mmap_sem)) {
|
||||
if (!user_mode(regs) && !search_exception_tables(regs->ARM_pc))
|
||||
goto no_context;
|
||||
down_read(&mm->mmap_sem);
|
||||
}
|
||||
|
||||
fault = __do_page_fault(mm, addr, fsr, tsk);
|
||||
up_read(&mm->mmap_sem);
|
||||
|
||||
|
@ -509,7 +509,7 @@ cpu_arm1020_name:
|
||||
|
||||
.align
|
||||
|
||||
.section ".proc.info", #alloc, #execinstr
|
||||
.section ".proc.info.init", #alloc, #execinstr
|
||||
|
||||
.type __arm1020_proc_info,#object
|
||||
__arm1020_proc_info:
|
||||
|
@ -491,7 +491,7 @@ cpu_arm1020e_name:
|
||||
|
||||
.align
|
||||
|
||||
.section ".proc.info", #alloc, #execinstr
|
||||
.section ".proc.info.init", #alloc, #execinstr
|
||||
|
||||
.type __arm1020e_proc_info,#object
|
||||
__arm1020e_proc_info:
|
||||
|
@ -473,7 +473,7 @@ cpu_arm1022_name:
|
||||
|
||||
.align
|
||||
|
||||
.section ".proc.info", #alloc, #execinstr
|
||||
.section ".proc.info.init", #alloc, #execinstr
|
||||
|
||||
.type __arm1022_proc_info,#object
|
||||
__arm1022_proc_info:
|
||||
|
@ -469,7 +469,7 @@ cpu_arm1026_name:
|
||||
|
||||
.align
|
||||
|
||||
.section ".proc.info", #alloc, #execinstr
|
||||
.section ".proc.info.init", #alloc, #execinstr
|
||||
|
||||
.type __arm1026_proc_info,#object
|
||||
__arm1026_proc_info:
|
||||
|
@ -332,7 +332,7 @@ cpu_arm710_name:
|
||||
|
||||
.align
|
||||
|
||||
.section ".proc.info", #alloc, #execinstr
|
||||
.section ".proc.info.init", #alloc, #execinstr
|
||||
|
||||
.type __arm6_proc_info, #object
|
||||
__arm6_proc_info:
|
||||
|
@ -222,7 +222,7 @@ cpu_arm720_name:
|
||||
* See linux/include/asm-arm/procinfo.h for a definition of this structure.
|
||||
*/
|
||||
|
||||
.section ".proc.info", #alloc, #execinstr
|
||||
.section ".proc.info.init", #alloc, #execinstr
|
||||
|
||||
.type __arm710_proc_info, #object
|
||||
__arm710_proc_info:
|
||||
|
@ -452,7 +452,7 @@ cpu_arm920_name:
|
||||
|
||||
.align
|
||||
|
||||
.section ".proc.info", #alloc, #execinstr
|
||||
.section ".proc.info.init", #alloc, #execinstr
|
||||
|
||||
.type __arm920_proc_info,#object
|
||||
__arm920_proc_info:
|
||||
|
@ -456,7 +456,7 @@ cpu_arm922_name:
|
||||
|
||||
.align
|
||||
|
||||
.section ".proc.info", #alloc, #execinstr
|
||||
.section ".proc.info.init", #alloc, #execinstr
|
||||
|
||||
.type __arm922_proc_info,#object
|
||||
__arm922_proc_info:
|
||||
|
@ -521,7 +521,7 @@ cpu_arm925_name:
|
||||
|
||||
.align
|
||||
|
||||
.section ".proc.info", #alloc, #execinstr
|
||||
.section ".proc.info.init", #alloc, #execinstr
|
||||
|
||||
.type __arm925_proc_info,#object
|
||||
__arm925_proc_info:
|
||||
|
@ -471,7 +471,7 @@ cpu_arm926_name:
|
||||
|
||||
.align
|
||||
|
||||
.section ".proc.info", #alloc, #execinstr
|
||||
.section ".proc.info.init", #alloc, #execinstr
|
||||
|
||||
.type __arm926_proc_info,#object
|
||||
__arm926_proc_info:
|
||||
|
@ -249,7 +249,7 @@ cpu_sa110_name:
|
||||
|
||||
.align
|
||||
|
||||
.section ".proc.info", #alloc, #execinstr
|
||||
.section ".proc.info.init", #alloc, #execinstr
|
||||
|
||||
.type __sa110_proc_info,#object
|
||||
__sa110_proc_info:
|
||||
|
@ -280,7 +280,7 @@ cpu_sa1110_name:
|
||||
|
||||
.align
|
||||
|
||||
.section ".proc.info", #alloc, #execinstr
|
||||
.section ".proc.info.init", #alloc, #execinstr
|
||||
|
||||
.type __sa1100_proc_info,#object
|
||||
__sa1100_proc_info:
|
||||
|
@ -240,7 +240,7 @@ cpu_elf_name:
|
||||
.size cpu_elf_name, . - cpu_elf_name
|
||||
.align
|
||||
|
||||
.section ".proc.info", #alloc, #execinstr
|
||||
.section ".proc.info.init", #alloc, #execinstr
|
||||
|
||||
/*
|
||||
* Match any ARMv6 processor core.
|
||||
|
@ -578,7 +578,7 @@ cpu_pxa270_name:
|
||||
|
||||
.align
|
||||
|
||||
.section ".proc.info", #alloc, #execinstr
|
||||
.section ".proc.info.init", #alloc, #execinstr
|
||||
|
||||
.type __80200_proc_info,#object
|
||||
__80200_proc_info:
|
||||
|
@ -1,74 +0,0 @@
|
||||
/*
|
||||
* Bright Star Engineering Inc.
|
||||
*
|
||||
* code for readng parameters from the
|
||||
* parameter blocks of the boot block
|
||||
* flash memory
|
||||
*
|
||||
*/
|
||||
|
||||
static int strcmp(const char *s1, const char *s2)
|
||||
{
|
||||
while (*s1 != '\0' && *s1 == *s2)
|
||||
{
|
||||
s1++;
|
||||
s2++;
|
||||
}
|
||||
|
||||
return (*(unsigned char *) s1) - (*(unsigned char *) s2);
|
||||
}
|
||||
|
||||
struct pblk_t {
|
||||
char type;
|
||||
unsigned short size;
|
||||
};
|
||||
|
||||
static char *bse_getflashparam(char *name) {
|
||||
unsigned int esize;
|
||||
char *q,*r;
|
||||
unsigned char *p,*e;
|
||||
struct pblk_t *thepb = (struct pblk_t *) 0x00004000;
|
||||
struct pblk_t *altpb = (struct pblk_t *) 0x00006000;
|
||||
if (thepb->type&1) {
|
||||
if (altpb->type&1) {
|
||||
/* no valid param block */
|
||||
return (char*)0;
|
||||
} else {
|
||||
/* altpb is valid */
|
||||
struct pblk_t *tmp;
|
||||
tmp = thepb;
|
||||
thepb = altpb;
|
||||
altpb = tmp;
|
||||
}
|
||||
}
|
||||
p = (char*)thepb + sizeof(struct pblk_t);
|
||||
e = p + thepb->size;
|
||||
while (p < e) {
|
||||
q = p;
|
||||
esize = *p;
|
||||
if (esize == 0xFF) break;
|
||||
if (esize == 0) break;
|
||||
if (esize > 127) {
|
||||
esize = (esize&0x7F)<<8 | p[1];
|
||||
q++;
|
||||
}
|
||||
q++;
|
||||
r=q;
|
||||
if (*r && ((name == 0) || (!strcmp(name,r)))) {
|
||||
while (*q++) ;
|
||||
return q;
|
||||
}
|
||||
p+=esize;
|
||||
}
|
||||
return (char*)0;
|
||||
}
|
||||
|
||||
void bse_setup(void) {
|
||||
/* extract the linux cmdline from flash */
|
||||
char *name=bse_getflashparam("linuxboot");
|
||||
char *x = (char *)0xc0000100;
|
||||
if (name) {
|
||||
while (*name) *x++=*name++;
|
||||
}
|
||||
*x=0;
|
||||
}
|
@ -908,11 +908,6 @@ config IRQBALANCE
|
||||
The default yes will allow the kernel to do irq load balancing.
|
||||
Saying no will keep the kernel from doing irq load balancing.
|
||||
|
||||
config HAVE_DEC_LOCK
|
||||
bool
|
||||
depends on (SMP || PREEMPT) && X86_CMPXCHG
|
||||
default y
|
||||
|
||||
# turning this on wastes a bunch of space.
|
||||
# Summit needs it only when NUMA is on
|
||||
config BOOT_IOREMAP
|
||||
|
@ -7,7 +7,6 @@
|
||||
#include <linux/pci.h>
|
||||
#include <asm/pci-direct.h>
|
||||
#include <asm/acpi.h>
|
||||
#include <asm/apic.h>
|
||||
|
||||
static int __init check_bridge(int vendor, int device)
|
||||
{
|
||||
@ -16,15 +15,6 @@ static int __init check_bridge(int vendor, int device)
|
||||
if (vendor == PCI_VENDOR_ID_NVIDIA) {
|
||||
acpi_skip_timer_override = 1;
|
||||
}
|
||||
#ifdef CONFIG_X86_LOCAL_APIC
|
||||
/*
|
||||
* ATI IXP chipsets get double timer interrupts.
|
||||
* For now just do this for all ATI chipsets.
|
||||
* FIXME: this needs to be checked for the non ACPI case too.
|
||||
*/
|
||||
if (vendor == PCI_VENDOR_ID_ATI)
|
||||
disable_timer_pin_1 = 1;
|
||||
#endif
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
@ -7,4 +7,3 @@ lib-y = checksum.o delay.o usercopy.o getuser.o putuser.o memcpy.o strstr.o \
|
||||
bitops.o
|
||||
|
||||
lib-$(CONFIG_X86_USE_3DNOW) += mmx.o
|
||||
lib-$(CONFIG_HAVE_DEC_LOCK) += dec_and_lock.o
|
||||
|
@ -1,42 +0,0 @@
|
||||
/*
|
||||
* x86 version of "atomic_dec_and_lock()" using
|
||||
* the atomic "cmpxchg" instruction.
|
||||
*
|
||||
* (For CPU's lacking cmpxchg, we use the slow
|
||||
* generic version, and this one never even gets
|
||||
* compiled).
|
||||
*/
|
||||
|
||||
#include <linux/spinlock.h>
|
||||
#include <linux/module.h>
|
||||
#include <asm/atomic.h>
|
||||
|
||||
int _atomic_dec_and_lock(atomic_t *atomic, spinlock_t *lock)
|
||||
{
|
||||
int counter;
|
||||
int newcount;
|
||||
|
||||
repeat:
|
||||
counter = atomic_read(atomic);
|
||||
newcount = counter-1;
|
||||
|
||||
if (!newcount)
|
||||
goto slow_path;
|
||||
|
||||
asm volatile("lock; cmpxchgl %1,%2"
|
||||
:"=a" (newcount)
|
||||
:"r" (newcount), "m" (atomic->counter), "0" (counter));
|
||||
|
||||
/* If the above failed, "eax" will have changed */
|
||||
if (newcount != counter)
|
||||
goto repeat;
|
||||
return 0;
|
||||
|
||||
slow_path:
|
||||
spin_lock(lock);
|
||||
if (atomic_dec_and_test(atomic))
|
||||
return 1;
|
||||
spin_unlock(lock);
|
||||
return 0;
|
||||
}
|
||||
EXPORT_SYMBOL(_atomic_dec_and_lock);
|
@ -298,11 +298,6 @@ config PREEMPT
|
||||
|
||||
source "mm/Kconfig"
|
||||
|
||||
config HAVE_DEC_LOCK
|
||||
bool
|
||||
depends on (SMP || PREEMPT)
|
||||
default y
|
||||
|
||||
config IA32_SUPPORT
|
||||
bool "Support for Linux/x86 binaries"
|
||||
help
|
||||
|
@ -82,17 +82,7 @@ unwcheck: vmlinux
|
||||
archclean:
|
||||
$(Q)$(MAKE) $(clean)=$(boot)
|
||||
|
||||
archprepare: include/asm-ia64/.offsets.h.stamp
|
||||
|
||||
include/asm-ia64/.offsets.h.stamp:
|
||||
mkdir -p include/asm-ia64
|
||||
[ -s include/asm-ia64/asm-offsets.h ] \
|
||||
|| echo "#define IA64_TASK_SIZE 0" > include/asm-ia64/asm-offsets.h
|
||||
touch $@
|
||||
|
||||
|
||||
|
||||
CLEAN_FILES += vmlinux.gz bootloader include/asm-ia64/.offsets.h.stamp
|
||||
CLEAN_FILES += vmlinux.gz bootloader
|
||||
|
||||
boot: lib/lib.a vmlinux
|
||||
$(Q)$(MAKE) $(build)=$(boot) $@
|
||||
|
@ -216,12 +216,6 @@ ia32_setup_arg_pages (struct linux_binprm *bprm, int executable_stack)
|
||||
if (!mpnt)
|
||||
return -ENOMEM;
|
||||
|
||||
if (security_vm_enough_memory((IA32_STACK_TOP - (PAGE_MASK & (unsigned long) bprm->p))
|
||||
>> PAGE_SHIFT)) {
|
||||
kmem_cache_free(vm_area_cachep, mpnt);
|
||||
return -ENOMEM;
|
||||
}
|
||||
|
||||
memset(mpnt, 0, sizeof(*mpnt));
|
||||
|
||||
down_write(¤t->mm->mmap_sem);
|
||||
|
@ -899,7 +899,7 @@ int acpi_register_ioapic(acpi_handle handle, u64 phys_addr, u32 gsi_base)
|
||||
if ((err = iosapic_init(phys_addr, gsi_base)))
|
||||
return err;
|
||||
|
||||
#if CONFIG_ACPI_NUMA
|
||||
#ifdef CONFIG_ACPI_NUMA
|
||||
acpi_map_iosapic(handle, 0, NULL, NULL);
|
||||
#endif /* CONFIG_ACPI_NUMA */
|
||||
|
||||
|
@ -4,6 +4,7 @@
|
||||
* to extract and format the required data.
|
||||
*/
|
||||
|
||||
#define ASM_OFFSETS_C 1
|
||||
#include <linux/config.h>
|
||||
|
||||
#include <linux/sched.h>
|
||||
|
@ -491,7 +491,7 @@ GLOBAL_ENTRY(prefetch_stack)
|
||||
;;
|
||||
lfetch.fault [r16], 128
|
||||
br.ret.sptk.many rp
|
||||
END(prefetch_switch_stack)
|
||||
END(prefetch_stack)
|
||||
|
||||
GLOBAL_ENTRY(execve)
|
||||
mov r15=__NR_execve // put syscall number in place
|
||||
|
@ -84,23 +84,23 @@ mca_page_isolate(unsigned long paddr)
|
||||
struct page *p;
|
||||
|
||||
/* whether physical address is valid or not */
|
||||
if ( !ia64_phys_addr_valid(paddr) )
|
||||
if (!ia64_phys_addr_valid(paddr))
|
||||
return ISOLATE_NG;
|
||||
|
||||
/* convert physical address to physical page number */
|
||||
p = pfn_to_page(paddr>>PAGE_SHIFT);
|
||||
|
||||
/* check whether a page number have been already registered or not */
|
||||
for( i = 0; i < num_page_isolate; i++ )
|
||||
if( page_isolate[i] == p )
|
||||
for (i = 0; i < num_page_isolate; i++)
|
||||
if (page_isolate[i] == p)
|
||||
return ISOLATE_OK; /* already listed */
|
||||
|
||||
/* limitation check */
|
||||
if( num_page_isolate == MAX_PAGE_ISOLATE )
|
||||
if (num_page_isolate == MAX_PAGE_ISOLATE)
|
||||
return ISOLATE_NG;
|
||||
|
||||
/* kick pages having attribute 'SLAB' or 'Reserved' */
|
||||
if( PageSlab(p) || PageReserved(p) )
|
||||
if (PageSlab(p) || PageReserved(p))
|
||||
return ISOLATE_NG;
|
||||
|
||||
/* add attribute 'Reserved' and register the page */
|
||||
@ -139,10 +139,10 @@ mca_handler_bh(unsigned long paddr)
|
||||
* @peidx: pointer to index of processor error section
|
||||
*/
|
||||
|
||||
static void
|
||||
static void
|
||||
mca_make_peidx(sal_log_processor_info_t *slpi, peidx_table_t *peidx)
|
||||
{
|
||||
/*
|
||||
/*
|
||||
* calculate the start address of
|
||||
* "struct cpuid_info" and "sal_processor_static_info_t".
|
||||
*/
|
||||
@ -164,7 +164,7 @@ mca_make_peidx(sal_log_processor_info_t *slpi, peidx_table_t *peidx)
|
||||
}
|
||||
|
||||
/**
|
||||
* mca_make_slidx - Make index of SAL error record
|
||||
* mca_make_slidx - Make index of SAL error record
|
||||
* @buffer: pointer to SAL error record
|
||||
* @slidx: pointer to index of SAL error record
|
||||
*
|
||||
@ -172,12 +172,12 @@ mca_make_peidx(sal_log_processor_info_t *slpi, peidx_table_t *peidx)
|
||||
* 1 if record has platform error / 0 if not
|
||||
*/
|
||||
#define LOG_INDEX_ADD_SECT_PTR(sect, ptr) \
|
||||
{ slidx_list_t *hl = &slidx_pool.buffer[slidx_pool.cur_idx]; \
|
||||
hl->hdr = ptr; \
|
||||
list_add(&hl->list, &(sect)); \
|
||||
slidx_pool.cur_idx = (slidx_pool.cur_idx + 1)%slidx_pool.max_idx; }
|
||||
{slidx_list_t *hl = &slidx_pool.buffer[slidx_pool.cur_idx]; \
|
||||
hl->hdr = ptr; \
|
||||
list_add(&hl->list, &(sect)); \
|
||||
slidx_pool.cur_idx = (slidx_pool.cur_idx + 1)%slidx_pool.max_idx; }
|
||||
|
||||
static int
|
||||
static int
|
||||
mca_make_slidx(void *buffer, slidx_table_t *slidx)
|
||||
{
|
||||
int platform_err = 0;
|
||||
@ -214,28 +214,36 @@ mca_make_slidx(void *buffer, slidx_table_t *slidx)
|
||||
sp = (sal_log_section_hdr_t *)((char*)buffer + ercd_pos);
|
||||
if (!efi_guidcmp(sp->guid, SAL_PROC_DEV_ERR_SECT_GUID)) {
|
||||
LOG_INDEX_ADD_SECT_PTR(slidx->proc_err, sp);
|
||||
} else if (!efi_guidcmp(sp->guid, SAL_PLAT_MEM_DEV_ERR_SECT_GUID)) {
|
||||
} else if (!efi_guidcmp(sp->guid,
|
||||
SAL_PLAT_MEM_DEV_ERR_SECT_GUID)) {
|
||||
platform_err = 1;
|
||||
LOG_INDEX_ADD_SECT_PTR(slidx->mem_dev_err, sp);
|
||||
} else if (!efi_guidcmp(sp->guid, SAL_PLAT_SEL_DEV_ERR_SECT_GUID)) {
|
||||
} else if (!efi_guidcmp(sp->guid,
|
||||
SAL_PLAT_SEL_DEV_ERR_SECT_GUID)) {
|
||||
platform_err = 1;
|
||||
LOG_INDEX_ADD_SECT_PTR(slidx->sel_dev_err, sp);
|
||||
} else if (!efi_guidcmp(sp->guid, SAL_PLAT_PCI_BUS_ERR_SECT_GUID)) {
|
||||
} else if (!efi_guidcmp(sp->guid,
|
||||
SAL_PLAT_PCI_BUS_ERR_SECT_GUID)) {
|
||||
platform_err = 1;
|
||||
LOG_INDEX_ADD_SECT_PTR(slidx->pci_bus_err, sp);
|
||||
} else if (!efi_guidcmp(sp->guid, SAL_PLAT_SMBIOS_DEV_ERR_SECT_GUID)) {
|
||||
} else if (!efi_guidcmp(sp->guid,
|
||||
SAL_PLAT_SMBIOS_DEV_ERR_SECT_GUID)) {
|
||||
platform_err = 1;
|
||||
LOG_INDEX_ADD_SECT_PTR(slidx->smbios_dev_err, sp);
|
||||
} else if (!efi_guidcmp(sp->guid, SAL_PLAT_PCI_COMP_ERR_SECT_GUID)) {
|
||||
} else if (!efi_guidcmp(sp->guid,
|
||||
SAL_PLAT_PCI_COMP_ERR_SECT_GUID)) {
|
||||
platform_err = 1;
|
||||
LOG_INDEX_ADD_SECT_PTR(slidx->pci_comp_err, sp);
|
||||
} else if (!efi_guidcmp(sp->guid, SAL_PLAT_SPECIFIC_ERR_SECT_GUID)) {
|
||||
} else if (!efi_guidcmp(sp->guid,
|
||||
SAL_PLAT_SPECIFIC_ERR_SECT_GUID)) {
|
||||
platform_err = 1;
|
||||
LOG_INDEX_ADD_SECT_PTR(slidx->plat_specific_err, sp);
|
||||
} else if (!efi_guidcmp(sp->guid, SAL_PLAT_HOST_CTLR_ERR_SECT_GUID)) {
|
||||
} else if (!efi_guidcmp(sp->guid,
|
||||
SAL_PLAT_HOST_CTLR_ERR_SECT_GUID)) {
|
||||
platform_err = 1;
|
||||
LOG_INDEX_ADD_SECT_PTR(slidx->host_ctlr_err, sp);
|
||||
} else if (!efi_guidcmp(sp->guid, SAL_PLAT_BUS_ERR_SECT_GUID)) {
|
||||
} else if (!efi_guidcmp(sp->guid,
|
||||
SAL_PLAT_BUS_ERR_SECT_GUID)) {
|
||||
platform_err = 1;
|
||||
LOG_INDEX_ADD_SECT_PTR(slidx->plat_bus_err, sp);
|
||||
} else {
|
||||
@ -253,15 +261,16 @@ mca_make_slidx(void *buffer, slidx_table_t *slidx)
|
||||
* Return value:
|
||||
* 0 on Success / -ENOMEM on Failure
|
||||
*/
|
||||
static int
|
||||
static int
|
||||
init_record_index_pools(void)
|
||||
{
|
||||
int i;
|
||||
int rec_max_size; /* Maximum size of SAL error records */
|
||||
int sect_min_size; /* Minimum size of SAL error sections */
|
||||
/* minimum size table of each section */
|
||||
static int sal_log_sect_min_sizes[] = {
|
||||
sizeof(sal_log_processor_info_t) + sizeof(sal_processor_static_info_t),
|
||||
static int sal_log_sect_min_sizes[] = {
|
||||
sizeof(sal_log_processor_info_t)
|
||||
+ sizeof(sal_processor_static_info_t),
|
||||
sizeof(sal_log_mem_dev_err_info_t),
|
||||
sizeof(sal_log_sel_dev_err_info_t),
|
||||
sizeof(sal_log_pci_bus_err_info_t),
|
||||
@ -294,7 +303,8 @@ init_record_index_pools(void)
|
||||
|
||||
/* - 3 - */
|
||||
slidx_pool.max_idx = (rec_max_size/sect_min_size) * 2 + 1;
|
||||
slidx_pool.buffer = (slidx_list_t *) kmalloc(slidx_pool.max_idx * sizeof(slidx_list_t), GFP_KERNEL);
|
||||
slidx_pool.buffer = (slidx_list_t *)
|
||||
kmalloc(slidx_pool.max_idx * sizeof(slidx_list_t), GFP_KERNEL);
|
||||
|
||||
return slidx_pool.buffer ? 0 : -ENOMEM;
|
||||
}
|
||||
@ -308,6 +318,7 @@ init_record_index_pools(void)
|
||||
* is_mca_global - Check whether this MCA is global or not
|
||||
* @peidx: pointer of index of processor error section
|
||||
* @pbci: pointer to pal_bus_check_info_t
|
||||
* @sos: pointer to hand off struct between SAL and OS
|
||||
*
|
||||
* Return value:
|
||||
* MCA_IS_LOCAL / MCA_IS_GLOBAL
|
||||
@ -317,11 +328,12 @@ static mca_type_t
|
||||
is_mca_global(peidx_table_t *peidx, pal_bus_check_info_t *pbci,
|
||||
struct ia64_sal_os_state *sos)
|
||||
{
|
||||
pal_processor_state_info_t *psp = (pal_processor_state_info_t*)peidx_psp(peidx);
|
||||
pal_processor_state_info_t *psp =
|
||||
(pal_processor_state_info_t*)peidx_psp(peidx);
|
||||
|
||||
/*
|
||||
/*
|
||||
* PAL can request a rendezvous, if the MCA has a global scope.
|
||||
* If "rz_always" flag is set, SAL requests MCA rendezvous
|
||||
* If "rz_always" flag is set, SAL requests MCA rendezvous
|
||||
* in spite of global MCA.
|
||||
* Therefore it is local MCA when rendezvous has not been requested.
|
||||
* Failed to rendezvous, the system must be down.
|
||||
@ -381,13 +393,15 @@ is_mca_global(peidx_table_t *peidx, pal_bus_check_info_t *pbci,
|
||||
* @slidx: pointer of index of SAL error record
|
||||
* @peidx: pointer of index of processor error section
|
||||
* @pbci: pointer of pal_bus_check_info
|
||||
* @sos: pointer to hand off struct between SAL and OS
|
||||
*
|
||||
* Return value:
|
||||
* 1 on Success / 0 on Failure
|
||||
*/
|
||||
|
||||
static int
|
||||
recover_from_read_error(slidx_table_t *slidx, peidx_table_t *peidx, pal_bus_check_info_t *pbci,
|
||||
recover_from_read_error(slidx_table_t *slidx,
|
||||
peidx_table_t *peidx, pal_bus_check_info_t *pbci,
|
||||
struct ia64_sal_os_state *sos)
|
||||
{
|
||||
sal_log_mod_error_info_t *smei;
|
||||
@ -453,24 +467,28 @@ recover_from_read_error(slidx_table_t *slidx, peidx_table_t *peidx, pal_bus_chec
|
||||
* @slidx: pointer of index of SAL error record
|
||||
* @peidx: pointer of index of processor error section
|
||||
* @pbci: pointer of pal_bus_check_info
|
||||
* @sos: pointer to hand off struct between SAL and OS
|
||||
*
|
||||
* Return value:
|
||||
* 1 on Success / 0 on Failure
|
||||
*/
|
||||
|
||||
static int
|
||||
recover_from_platform_error(slidx_table_t *slidx, peidx_table_t *peidx, pal_bus_check_info_t *pbci,
|
||||
recover_from_platform_error(slidx_table_t *slidx, peidx_table_t *peidx,
|
||||
pal_bus_check_info_t *pbci,
|
||||
struct ia64_sal_os_state *sos)
|
||||
{
|
||||
int status = 0;
|
||||
pal_processor_state_info_t *psp = (pal_processor_state_info_t*)peidx_psp(peidx);
|
||||
pal_processor_state_info_t *psp =
|
||||
(pal_processor_state_info_t*)peidx_psp(peidx);
|
||||
|
||||
if (psp->bc && pbci->eb && pbci->bsi == 0) {
|
||||
switch(pbci->type) {
|
||||
case 1: /* partial read */
|
||||
case 3: /* full line(cpu) read */
|
||||
case 9: /* I/O space read */
|
||||
status = recover_from_read_error(slidx, peidx, pbci, sos);
|
||||
status = recover_from_read_error(slidx, peidx, pbci,
|
||||
sos);
|
||||
break;
|
||||
case 0: /* unknown */
|
||||
case 2: /* partial write */
|
||||
@ -481,7 +499,8 @@ recover_from_platform_error(slidx_table_t *slidx, peidx_table_t *peidx, pal_bus_
|
||||
case 8: /* write coalescing transactions */
|
||||
case 10: /* I/O space write */
|
||||
case 11: /* inter-processor interrupt message(IPI) */
|
||||
case 12: /* interrupt acknowledge or external task priority cycle */
|
||||
case 12: /* interrupt acknowledge or
|
||||
external task priority cycle */
|
||||
default:
|
||||
break;
|
||||
}
|
||||
@ -496,6 +515,7 @@ recover_from_platform_error(slidx_table_t *slidx, peidx_table_t *peidx, pal_bus_
|
||||
* @slidx: pointer of index of SAL error record
|
||||
* @peidx: pointer of index of processor error section
|
||||
* @pbci: pointer of pal_bus_check_info
|
||||
* @sos: pointer to hand off struct between SAL and OS
|
||||
*
|
||||
* Return value:
|
||||
* 1 on Success / 0 on Failure
|
||||
@ -509,15 +529,17 @@ recover_from_platform_error(slidx_table_t *slidx, peidx_table_t *peidx, pal_bus_
|
||||
*/
|
||||
|
||||
static int
|
||||
recover_from_processor_error(int platform, slidx_table_t *slidx, peidx_table_t *peidx, pal_bus_check_info_t *pbci,
|
||||
recover_from_processor_error(int platform, slidx_table_t *slidx,
|
||||
peidx_table_t *peidx, pal_bus_check_info_t *pbci,
|
||||
struct ia64_sal_os_state *sos)
|
||||
{
|
||||
pal_processor_state_info_t *psp = (pal_processor_state_info_t*)peidx_psp(peidx);
|
||||
pal_processor_state_info_t *psp =
|
||||
(pal_processor_state_info_t*)peidx_psp(peidx);
|
||||
|
||||
/*
|
||||
/*
|
||||
* We cannot recover errors with other than bus_check.
|
||||
*/
|
||||
if (psp->cc || psp->rc || psp->uc)
|
||||
if (psp->cc || psp->rc || psp->uc)
|
||||
return 0;
|
||||
|
||||
/*
|
||||
@ -546,10 +568,10 @@ recover_from_processor_error(int platform, slidx_table_t *slidx, peidx_table_t *
|
||||
* (e.g. a load from poisoned memory)
|
||||
* This means "there are some platform errors".
|
||||
*/
|
||||
if (platform)
|
||||
if (platform)
|
||||
return recover_from_platform_error(slidx, peidx, pbci, sos);
|
||||
/*
|
||||
* On account of strange SAL error record, we cannot recover.
|
||||
/*
|
||||
* On account of strange SAL error record, we cannot recover.
|
||||
*/
|
||||
return 0;
|
||||
}
|
||||
@ -557,14 +579,14 @@ recover_from_processor_error(int platform, slidx_table_t *slidx, peidx_table_t *
|
||||
/**
|
||||
* mca_try_to_recover - Try to recover from MCA
|
||||
* @rec: pointer to a SAL error record
|
||||
* @sos: pointer to hand off struct between SAL and OS
|
||||
*
|
||||
* Return value:
|
||||
* 1 on Success / 0 on Failure
|
||||
*/
|
||||
|
||||
static int
|
||||
mca_try_to_recover(void *rec,
|
||||
struct ia64_sal_os_state *sos)
|
||||
mca_try_to_recover(void *rec, struct ia64_sal_os_state *sos)
|
||||
{
|
||||
int platform_err;
|
||||
int n_proc_err;
|
||||
@ -588,7 +610,8 @@ mca_try_to_recover(void *rec,
|
||||
}
|
||||
|
||||
/* Make index of processor error section */
|
||||
mca_make_peidx((sal_log_processor_info_t*)slidx_first_entry(&slidx.proc_err)->hdr, &peidx);
|
||||
mca_make_peidx((sal_log_processor_info_t*)
|
||||
slidx_first_entry(&slidx.proc_err)->hdr, &peidx);
|
||||
|
||||
/* Extract Processor BUS_CHECK[0] */
|
||||
*((u64*)&pbci) = peidx_check_info(&peidx, bus_check, 0);
|
||||
@ -598,7 +621,8 @@ mca_try_to_recover(void *rec,
|
||||
return 0;
|
||||
|
||||
/* Try to recover a processor error */
|
||||
return recover_from_processor_error(platform_err, &slidx, &peidx, &pbci, sos);
|
||||
return recover_from_processor_error(platform_err, &slidx, &peidx,
|
||||
&pbci, sos);
|
||||
}
|
||||
|
||||
/*
|
||||
@ -611,7 +635,7 @@ int __init mca_external_handler_init(void)
|
||||
return -ENOMEM;
|
||||
|
||||
/* register external mca handlers */
|
||||
if (ia64_reg_MCA_extension(mca_try_to_recover)){
|
||||
if (ia64_reg_MCA_extension(mca_try_to_recover)) {
|
||||
printk(KERN_ERR "ia64_reg_MCA_extension failed.\n");
|
||||
kfree(slidx_pool.buffer);
|
||||
return -EFAULT;
|
||||
|
@ -6,7 +6,7 @@
|
||||
* Copyright (C) Hidetoshi Seto (seto.hidetoshi@jp.fujitsu.com)
|
||||
*/
|
||||
/*
|
||||
* Processor error section:
|
||||
* Processor error section:
|
||||
*
|
||||
* +-sal_log_processor_info_t *info-------------+
|
||||
* | sal_log_section_hdr_t header; |
|
||||
|
@ -13,45 +13,45 @@
|
||||
#include <asm/ptrace.h>
|
||||
|
||||
GLOBAL_ENTRY(mca_handler_bhhook)
|
||||
invala // clear RSE ?
|
||||
;; //
|
||||
cover //
|
||||
;; //
|
||||
clrrrb //
|
||||
invala // clear RSE ?
|
||||
;;
|
||||
cover
|
||||
;;
|
||||
clrrrb
|
||||
;;
|
||||
alloc r16=ar.pfs,0,2,1,0 // make a new frame
|
||||
alloc r16=ar.pfs,0,2,1,0 // make a new frame
|
||||
;;
|
||||
mov ar.rsc=0
|
||||
mov ar.rsc=0
|
||||
;;
|
||||
mov r13=IA64_KR(CURRENT) // current task pointer
|
||||
mov r13=IA64_KR(CURRENT) // current task pointer
|
||||
;;
|
||||
mov r2=r13
|
||||
mov r2=r13
|
||||
;;
|
||||
addl r22=IA64_RBS_OFFSET,r2
|
||||
addl r22=IA64_RBS_OFFSET,r2
|
||||
;;
|
||||
mov ar.bspstore=r22
|
||||
mov ar.bspstore=r22
|
||||
;;
|
||||
addl sp=IA64_STK_OFFSET-IA64_PT_REGS_SIZE,r2
|
||||
addl sp=IA64_STK_OFFSET-IA64_PT_REGS_SIZE,r2
|
||||
;;
|
||||
adds r2=IA64_TASK_THREAD_ON_USTACK_OFFSET,r13
|
||||
adds r2=IA64_TASK_THREAD_ON_USTACK_OFFSET,r13
|
||||
;;
|
||||
st1 [r2]=r0 // clear current->thread.on_ustack flag
|
||||
mov loc0=r16
|
||||
movl loc1=mca_handler_bh // recovery C function
|
||||
st1 [r2]=r0 // clear current->thread.on_ustack flag
|
||||
mov loc0=r16
|
||||
movl loc1=mca_handler_bh // recovery C function
|
||||
;;
|
||||
mov out0=r8 // poisoned address
|
||||
mov b6=loc1
|
||||
mov out0=r8 // poisoned address
|
||||
mov b6=loc1
|
||||
;;
|
||||
mov loc1=rp
|
||||
mov loc1=rp
|
||||
;;
|
||||
ssm psr.i
|
||||
ssm psr.i
|
||||
;;
|
||||
br.call.sptk.many rp=b6 // does not return ...
|
||||
br.call.sptk.many rp=b6 // does not return ...
|
||||
;;
|
||||
mov ar.pfs=loc0
|
||||
mov rp=loc1
|
||||
mov ar.pfs=loc0
|
||||
mov rp=loc1
|
||||
;;
|
||||
mov r8=r0
|
||||
mov r8=r0
|
||||
br.ret.sptk.many rp
|
||||
;;
|
||||
END(mca_handler_bhhook)
|
||||
|
@ -574,7 +574,7 @@ pfm_protect_ctx_ctxsw(pfm_context_t *x)
|
||||
return 0UL;
|
||||
}
|
||||
|
||||
static inline unsigned long
|
||||
static inline void
|
||||
pfm_unprotect_ctx_ctxsw(pfm_context_t *x, unsigned long f)
|
||||
{
|
||||
spin_unlock(&(x)->ctx_lock);
|
||||
@ -2218,12 +2218,13 @@ static void
|
||||
pfm_free_fd(int fd, struct file *file)
|
||||
{
|
||||
struct files_struct *files = current->files;
|
||||
struct fdtable *fdt = files_fdtable(files);
|
||||
struct fdtable *fdt;
|
||||
|
||||
/*
|
||||
* there ie no fd_uninstall(), so we do it here
|
||||
*/
|
||||
spin_lock(&files->file_lock);
|
||||
fdt = files_fdtable(files);
|
||||
rcu_assign_pointer(fdt->fd[fd], NULL);
|
||||
spin_unlock(&files->file_lock);
|
||||
|
||||
|
@ -15,7 +15,6 @@ lib-$(CONFIG_ITANIUM) += copy_page.o copy_user.o memcpy.o
|
||||
lib-$(CONFIG_MCKINLEY) += copy_page_mck.o memcpy_mck.o
|
||||
lib-$(CONFIG_PERFMON) += carta_random.o
|
||||
lib-$(CONFIG_MD_RAID5) += xor.o
|
||||
lib-$(CONFIG_HAVE_DEC_LOCK) += dec_and_lock.o
|
||||
|
||||
AFLAGS___divdi3.o =
|
||||
AFLAGS___udivdi3.o = -DUNSIGNED
|
||||
|
@ -1,42 +0,0 @@
|
||||
/*
|
||||
* Copyright (C) 2003 Jerome Marchand, Bull S.A.
|
||||
* Cleaned up by David Mosberger-Tang <davidm@hpl.hp.com>
|
||||
*
|
||||
* This file is released under the GPLv2, or at your option any later version.
|
||||
*
|
||||
* ia64 version of "atomic_dec_and_lock()" using the atomic "cmpxchg" instruction. This
|
||||
* code is an adaptation of the x86 version of "atomic_dec_and_lock()".
|
||||
*/
|
||||
|
||||
#include <linux/compiler.h>
|
||||
#include <linux/module.h>
|
||||
#include <linux/spinlock.h>
|
||||
#include <asm/atomic.h>
|
||||
|
||||
/*
|
||||
* Decrement REFCOUNT and if the count reaches zero, acquire the spinlock. Both of these
|
||||
* operations have to be done atomically, so that the count doesn't drop to zero without
|
||||
* acquiring the spinlock first.
|
||||
*/
|
||||
int
|
||||
_atomic_dec_and_lock (atomic_t *refcount, spinlock_t *lock)
|
||||
{
|
||||
int old, new;
|
||||
|
||||
do {
|
||||
old = atomic_read(refcount);
|
||||
new = old - 1;
|
||||
|
||||
if (unlikely (old == 1)) {
|
||||
/* oops, we may be decrementing to zero, do it the slow way... */
|
||||
spin_lock(lock);
|
||||
if (atomic_dec_and_test(refcount))
|
||||
return 1;
|
||||
spin_unlock(lock);
|
||||
return 0;
|
||||
}
|
||||
} while (cmpxchg(&refcount->counter, old, new) != old);
|
||||
return 0;
|
||||
}
|
||||
|
||||
EXPORT_SYMBOL(_atomic_dec_and_lock);
|
@ -220,11 +220,6 @@ config PREEMPT
|
||||
Say Y here if you are building a kernel for a desktop, embedded
|
||||
or real-time system. Say N if you are unsure.
|
||||
|
||||
config HAVE_DEC_LOCK
|
||||
bool
|
||||
depends on (SMP || PREEMPT)
|
||||
default n
|
||||
|
||||
config SMP
|
||||
bool "Symmetric multi-processing support"
|
||||
---help---
|
||||
|
@ -1009,10 +1009,6 @@ config GENERIC_CALIBRATE_DELAY
|
||||
bool
|
||||
default y
|
||||
|
||||
config HAVE_DEC_LOCK
|
||||
bool
|
||||
default y
|
||||
|
||||
#
|
||||
# Select some configuration options automatically based on user selections.
|
||||
#
|
||||
|
@ -581,18 +581,13 @@ asmlinkage int irix_brk(unsigned long brk)
|
||||
}
|
||||
|
||||
/*
|
||||
* Check if we have enough memory..
|
||||
* Ok, looks good - let it rip.
|
||||
*/
|
||||
if (security_vm_enough_memory((newbrk-oldbrk) >> PAGE_SHIFT)) {
|
||||
if (do_brk(oldbrk, newbrk-oldbrk) != oldbrk) {
|
||||
ret = -ENOMEM;
|
||||
goto out;
|
||||
}
|
||||
|
||||
/*
|
||||
* Ok, looks good - let it rip.
|
||||
*/
|
||||
mm->brk = brk;
|
||||
do_brk(oldbrk, newbrk-oldbrk);
|
||||
ret = 0;
|
||||
|
||||
out:
|
||||
|
@ -2,7 +2,7 @@
|
||||
# Makefile for MIPS-specific library files..
|
||||
#
|
||||
|
||||
lib-y += csum_partial_copy.o dec_and_lock.o memcpy.o promlib.o \
|
||||
lib-y += csum_partial_copy.o memcpy.o promlib.o \
|
||||
strlen_user.o strncpy_user.o strnlen_user.o
|
||||
|
||||
obj-y += iomap.o
|
||||
|
@ -1,47 +0,0 @@
|
||||
/*
|
||||
* MIPS version of atomic_dec_and_lock() using cmpxchg
|
||||
*
|
||||
* 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.
|
||||
*/
|
||||
|
||||
#include <linux/module.h>
|
||||
#include <linux/spinlock.h>
|
||||
#include <asm/atomic.h>
|
||||
#include <asm/system.h>
|
||||
|
||||
/*
|
||||
* This is an implementation of the notion of "decrement a
|
||||
* reference count, and return locked if it decremented to zero".
|
||||
*
|
||||
* This implementation can be used on any architecture that
|
||||
* has a cmpxchg, and where atomic->value is an int holding
|
||||
* the value of the atomic (i.e. the high bits aren't used
|
||||
* for a lock or anything like that).
|
||||
*/
|
||||
int _atomic_dec_and_lock(atomic_t *atomic, spinlock_t *lock)
|
||||
{
|
||||
int counter;
|
||||
int newcount;
|
||||
|
||||
for (;;) {
|
||||
counter = atomic_read(atomic);
|
||||
newcount = counter - 1;
|
||||
if (!newcount)
|
||||
break; /* do it the slow way */
|
||||
|
||||
newcount = cmpxchg(&atomic->counter, counter, newcount);
|
||||
if (newcount == counter)
|
||||
return 0;
|
||||
}
|
||||
|
||||
spin_lock(lock);
|
||||
if (atomic_dec_and_test(atomic))
|
||||
return 1;
|
||||
spin_unlock(lock);
|
||||
return 0;
|
||||
}
|
||||
|
||||
EXPORT_SYMBOL(_atomic_dec_and_lock);
|
@ -26,10 +26,6 @@ config GENERIC_CALIBRATE_DELAY
|
||||
bool
|
||||
default y
|
||||
|
||||
config HAVE_DEC_LOCK
|
||||
bool
|
||||
default y
|
||||
|
||||
config PPC
|
||||
bool
|
||||
default y
|
||||
|
@ -2,7 +2,7 @@
|
||||
# Makefile for ppc-specific library files..
|
||||
#
|
||||
|
||||
obj-y := checksum.o string.o strcase.o dec_and_lock.o div64.o
|
||||
obj-y := checksum.o string.o strcase.o div64.o
|
||||
|
||||
obj-$(CONFIG_8xx) += rheap.o
|
||||
obj-$(CONFIG_CPM2) += rheap.o
|
||||
|
@ -1,38 +0,0 @@
|
||||
#include <linux/module.h>
|
||||
#include <linux/spinlock.h>
|
||||
#include <asm/atomic.h>
|
||||
#include <asm/system.h>
|
||||
|
||||
/*
|
||||
* This is an implementation of the notion of "decrement a
|
||||
* reference count, and return locked if it decremented to zero".
|
||||
*
|
||||
* This implementation can be used on any architecture that
|
||||
* has a cmpxchg, and where atomic->value is an int holding
|
||||
* the value of the atomic (i.e. the high bits aren't used
|
||||
* for a lock or anything like that).
|
||||
*/
|
||||
int _atomic_dec_and_lock(atomic_t *atomic, spinlock_t *lock)
|
||||
{
|
||||
int counter;
|
||||
int newcount;
|
||||
|
||||
for (;;) {
|
||||
counter = atomic_read(atomic);
|
||||
newcount = counter - 1;
|
||||
if (!newcount)
|
||||
break; /* do it the slow way */
|
||||
|
||||
newcount = cmpxchg(&atomic->counter, counter, newcount);
|
||||
if (newcount == counter)
|
||||
return 0;
|
||||
}
|
||||
|
||||
spin_lock(lock);
|
||||
if (atomic_dec_and_test(atomic))
|
||||
return 1;
|
||||
spin_unlock(lock);
|
||||
return 0;
|
||||
}
|
||||
|
||||
EXPORT_SYMBOL(_atomic_dec_and_lock);
|
@ -34,7 +34,8 @@ ifeq ($(CONFIG_40x),y)
|
||||
obj-$(CONFIG_PCI) += indirect_pci.o pci_auto.o ppc405_pci.o
|
||||
endif
|
||||
endif
|
||||
obj-$(CONFIG_8xx) += m8xx_setup.o ppc8xx_pic.o $(wdt-mpc8xx-y)
|
||||
obj-$(CONFIG_8xx) += m8xx_setup.o ppc8xx_pic.o $(wdt-mpc8xx-y) \
|
||||
ppc_sys.o mpc8xx_devices.o mpc8xx_sys.o
|
||||
ifeq ($(CONFIG_8xx),y)
|
||||
obj-$(CONFIG_PCI) += qspan_pci.o i8259.o
|
||||
endif
|
||||
|
224
arch/ppc/syslib/mpc8xx_devices.c
Normal file
224
arch/ppc/syslib/mpc8xx_devices.c
Normal file
@ -0,0 +1,224 @@
|
||||
/*
|
||||
* arch/ppc/syslib/mpc8xx_devices.c
|
||||
*
|
||||
* MPC8xx Device descriptions
|
||||
*
|
||||
* Maintainer: Kumar Gala <kumar.gala@freescale.com>
|
||||
*
|
||||
* Copyright 2005 MontaVista Software, Inc. by Vitaly Bordug<vbordug@ru.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.
|
||||
*/
|
||||
|
||||
#include <linux/init.h>
|
||||
#include <linux/module.h>
|
||||
#include <linux/device.h>
|
||||
#include <linux/serial_8250.h>
|
||||
#include <linux/mii.h>
|
||||
#include <asm/commproc.h>
|
||||
#include <asm/mpc8xx.h>
|
||||
#include <asm/irq.h>
|
||||
#include <asm/ppc_sys.h>
|
||||
|
||||
/* We use offsets for IORESOURCE_MEM to do not set dependences at compile time.
|
||||
* They will get fixed up by mach_mpc8xx_fixup
|
||||
*/
|
||||
|
||||
struct platform_device ppc_sys_platform_devices[] = {
|
||||
[MPC8xx_CPM_FEC1] = {
|
||||
.name = "fsl-cpm-fec",
|
||||
.id = 1,
|
||||
.num_resources = 2,
|
||||
.resource = (struct resource[]) {
|
||||
{
|
||||
.name = "regs",
|
||||
.start = 0xe00,
|
||||
.end = 0xe88,
|
||||
.flags = IORESOURCE_MEM,
|
||||
},
|
||||
{
|
||||
.name = "interrupt",
|
||||
.start = MPC8xx_INT_FEC1,
|
||||
.end = MPC8xx_INT_FEC1,
|
||||
.flags = IORESOURCE_IRQ,
|
||||
},
|
||||
},
|
||||
},
|
||||
[MPC8xx_CPM_FEC2] = {
|
||||
.name = "fsl-cpm-fec",
|
||||
.id = 2,
|
||||
.num_resources = 2,
|
||||
.resource = (struct resource[]) {
|
||||
{
|
||||
.name = "regs",
|
||||
.start = 0x1e00,
|
||||
.end = 0x1e88,
|
||||
.flags = IORESOURCE_MEM,
|
||||
},
|
||||
{
|
||||
.name = "interrupt",
|
||||
.start = MPC8xx_INT_FEC2,
|
||||
.end = MPC8xx_INT_FEC2,
|
||||
.flags = IORESOURCE_IRQ,
|
||||
},
|
||||
},
|
||||
},
|
||||
[MPC8xx_CPM_SCC1] = {
|
||||
.name = "fsl-cpm-scc",
|
||||
.id = 1,
|
||||
.num_resources = 3,
|
||||
.resource = (struct resource[]) {
|
||||
{
|
||||
.name = "regs",
|
||||
.start = 0xa00,
|
||||
.end = 0xa18,
|
||||
.flags = IORESOURCE_MEM,
|
||||
},
|
||||
{
|
||||
.name = "pram",
|
||||
.start = 0x3c00,
|
||||
.end = 0x3c80,
|
||||
.flags = IORESOURCE_MEM,
|
||||
},
|
||||
{
|
||||
.name = "interrupt",
|
||||
.start = MPC8xx_INT_SCC1,
|
||||
.end = MPC8xx_INT_SCC1,
|
||||
.flags = IORESOURCE_IRQ,
|
||||
},
|
||||
},
|
||||
},
|
||||
[MPC8xx_CPM_SCC2] = {
|
||||
.name = "fsl-cpm-scc",
|
||||
.id = 2,
|
||||
.num_resources = 3,
|
||||
.resource = (struct resource[]) {
|
||||
{
|
||||
.name = "regs",
|
||||
.start = 0xa20,
|
||||
.end = 0xa38,
|
||||
.flags = IORESOURCE_MEM,
|
||||
},
|
||||
{
|
||||
.name = "pram",
|
||||
.start = 0x3d00,
|
||||
.end = 0x3d80,
|
||||
.flags = IORESOURCE_MEM,
|
||||
},
|
||||
|
||||
{
|
||||
.name = "interrupt",
|
||||
.start = MPC8xx_INT_SCC2,
|
||||
.end = MPC8xx_INT_SCC2,
|
||||
.flags = IORESOURCE_IRQ,
|
||||
},
|
||||
},
|
||||
},
|
||||
[MPC8xx_CPM_SCC3] = {
|
||||
.name = "fsl-cpm-scc",
|
||||
.id = 3,
|
||||
.num_resources = 3,
|
||||
.resource = (struct resource[]) {
|
||||
{
|
||||
.name = "regs",
|
||||
.start = 0xa40,
|
||||
.end = 0xa58,
|
||||
.flags = IORESOURCE_MEM,
|
||||
},
|
||||
{
|
||||
.name = "pram",
|
||||
.start = 0x3e00,
|
||||
.end = 0x3e80,
|
||||
.flags = IORESOURCE_MEM,
|
||||
},
|
||||
|
||||
{
|
||||
.name = "interrupt",
|
||||
.start = MPC8xx_INT_SCC3,
|
||||
.end = MPC8xx_INT_SCC3,
|
||||
.flags = IORESOURCE_IRQ,
|
||||
},
|
||||
},
|
||||
},
|
||||
[MPC8xx_CPM_SCC4] = {
|
||||
.name = "fsl-cpm-scc",
|
||||
.id = 4,
|
||||
.num_resources = 3,
|
||||
.resource = (struct resource[]) {
|
||||
{
|
||||
.name = "regs",
|
||||
.start = 0xa60,
|
||||
.end = 0xa78,
|
||||
.flags = IORESOURCE_MEM,
|
||||
},
|
||||
{
|
||||
.name = "pram",
|
||||
.start = 0x3f00,
|
||||
.end = 0x3f80,
|
||||
.flags = IORESOURCE_MEM,
|
||||
},
|
||||
|
||||
{
|
||||
.name = "interrupt",
|
||||
.start = MPC8xx_INT_SCC4,
|
||||
.end = MPC8xx_INT_SCC4,
|
||||
.flags = IORESOURCE_IRQ,
|
||||
},
|
||||
},
|
||||
},
|
||||
[MPC8xx_CPM_SMC1] = {
|
||||
.name = "fsl-cpm-smc",
|
||||
.id = 1,
|
||||
.num_resources = 2,
|
||||
.resource = (struct resource[]) {
|
||||
{
|
||||
.name = "regs",
|
||||
.start = 0xa82,
|
||||
.end = 0xa91,
|
||||
.flags = IORESOURCE_MEM,
|
||||
},
|
||||
{
|
||||
.name = "interrupt",
|
||||
.start = MPC8xx_INT_SMC1,
|
||||
.end = MPC8xx_INT_SMC1,
|
||||
.flags = IORESOURCE_IRQ,
|
||||
},
|
||||
},
|
||||
},
|
||||
[MPC8xx_CPM_SMC2] = {
|
||||
.name = "fsl-cpm-smc",
|
||||
.id = 2,
|
||||
.num_resources = 2,
|
||||
.resource = (struct resource[]) {
|
||||
{
|
||||
.name = "regs",
|
||||
.start = 0xa92,
|
||||
.end = 0xaa1,
|
||||
.flags = IORESOURCE_MEM,
|
||||
},
|
||||
{
|
||||
.name = "interrupt",
|
||||
.start = MPC8xx_INT_SMC2,
|
||||
.end = MPC8xx_INT_SMC2,
|
||||
.flags = IORESOURCE_IRQ,
|
||||
},
|
||||
},
|
||||
},
|
||||
};
|
||||
|
||||
static int __init mach_mpc8xx_fixup(struct platform_device *pdev)
|
||||
{
|
||||
ppc_sys_fixup_mem_resource (pdev, IMAP_ADDR);
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int __init mach_mpc8xx_init(void)
|
||||
{
|
||||
ppc_sys_device_fixup = mach_mpc8xx_fixup;
|
||||
return 0;
|
||||
}
|
||||
|
||||
postcore_initcall(mach_mpc8xx_init);
|
61
arch/ppc/syslib/mpc8xx_sys.c
Normal file
61
arch/ppc/syslib/mpc8xx_sys.c
Normal file
@ -0,0 +1,61 @@
|
||||
/*
|
||||
* arch/ppc/platforms/mpc8xx_sys.c
|
||||
*
|
||||
* MPC8xx System descriptions
|
||||
*
|
||||
* Maintainer: Kumar Gala <kumar.gala@freescale.com>
|
||||
*
|
||||
* Copyright 2005 MontaVista Software, Inc. by Vitaly Bordug <vbordug@ru.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.
|
||||
*/
|
||||
|
||||
#include <linux/init.h>
|
||||
#include <linux/module.h>
|
||||
#include <linux/device.h>
|
||||
#include <asm/ppc_sys.h>
|
||||
|
||||
struct ppc_sys_spec *cur_ppc_sys_spec;
|
||||
struct ppc_sys_spec ppc_sys_specs[] = {
|
||||
{
|
||||
.ppc_sys_name = "MPC86X",
|
||||
.mask = 0xFFFFFFFF,
|
||||
.value = 0x00000000,
|
||||
.num_devices = 2,
|
||||
.device_list = (enum ppc_sys_devices[])
|
||||
{
|
||||
MPC8xx_CPM_FEC1,
|
||||
MPC8xx_CPM_SCC1,
|
||||
MPC8xx_CPM_SCC2,
|
||||
MPC8xx_CPM_SCC3,
|
||||
MPC8xx_CPM_SCC4,
|
||||
MPC8xx_CPM_SMC1,
|
||||
MPC8xx_CPM_SMC2,
|
||||
},
|
||||
},
|
||||
{
|
||||
.ppc_sys_name = "MPC885",
|
||||
.mask = 0xFFFFFFFF,
|
||||
.value = 0x00000000,
|
||||
.num_devices = 3,
|
||||
.device_list = (enum ppc_sys_devices[])
|
||||
{
|
||||
MPC8xx_CPM_FEC1,
|
||||
MPC8xx_CPM_FEC2,
|
||||
MPC8xx_CPM_SCC1,
|
||||
MPC8xx_CPM_SCC2,
|
||||
MPC8xx_CPM_SCC3,
|
||||
MPC8xx_CPM_SCC4,
|
||||
MPC8xx_CPM_SMC1,
|
||||
MPC8xx_CPM_SMC2,
|
||||
},
|
||||
},
|
||||
{ /* default match */
|
||||
.ppc_sys_name = "",
|
||||
.mask = 0x00000000,
|
||||
.value = 0x00000000,
|
||||
},
|
||||
};
|
@ -575,7 +575,7 @@ static void openpic2_cached_disable_irq(u_int irq)
|
||||
* we need something better to deal with that... Maybe switch to S1 for
|
||||
* cpufreq changes
|
||||
*/
|
||||
int openpic2_suspend(struct sys_device *sysdev, u32 state)
|
||||
int openpic2_suspend(struct sys_device *sysdev, pm_message_t state)
|
||||
{
|
||||
int i;
|
||||
unsigned long flags;
|
||||
|
@ -28,10 +28,6 @@ config GENERIC_ISA_DMA
|
||||
bool
|
||||
default y
|
||||
|
||||
config HAVE_DEC_LOCK
|
||||
bool
|
||||
default y
|
||||
|
||||
config EARLY_PRINTK
|
||||
bool
|
||||
default y
|
||||
|
@ -107,7 +107,7 @@ install: vmlinux
|
||||
$(Q)$(MAKE) $(build)=$(boot) BOOTIMAGE=$(BOOTIMAGE) $@
|
||||
|
||||
defaultimage-$(CONFIG_PPC_PSERIES) := zImage
|
||||
defaultimage-$(CONFIG_PPC_PMAC) := vmlinux
|
||||
defaultimage-$(CONFIG_PPC_PMAC) := zImage.vmode
|
||||
defaultimage-$(CONFIG_PPC_MAPLE) := zImage
|
||||
defaultimage-$(CONFIG_PPC_ISERIES) := vmlinux
|
||||
KBUILD_IMAGE := $(defaultimage-y)
|
||||
|
@ -1649,7 +1649,7 @@ _GLOBAL(__secondary_start)
|
||||
ld r3,0(r3)
|
||||
lwz r3,PLATFORM(r3) /* r3 = platform flags */
|
||||
andi. r3,r3,PLATFORM_LPAR /* Test if bit 0 is set (LPAR bit) */
|
||||
bne 98f
|
||||
beq 98f /* branch if result is 0 */
|
||||
mfspr r3,PVR
|
||||
srwi r3,r3,16
|
||||
cmpwi r3,0x37 /* SStar */
|
||||
@ -1813,7 +1813,7 @@ _STATIC(start_here_multiplatform)
|
||||
ld r3,0(r3)
|
||||
lwz r3,PLATFORM(r3) /* r3 = platform flags */
|
||||
andi. r3,r3,PLATFORM_LPAR /* Test if bit 0 is set (LPAR bit) */
|
||||
bne 98f
|
||||
beq 98f /* branch if result is 0 */
|
||||
mfspr r3,PVR
|
||||
srwi r3,r3,16
|
||||
cmpwi r3,0x37 /* SStar */
|
||||
@ -1834,7 +1834,7 @@ _STATIC(start_here_multiplatform)
|
||||
lwz r3,PLATFORM(r3) /* r3 = platform flags */
|
||||
/* Test if bit 0 is set (LPAR bit) */
|
||||
andi. r3,r3,PLATFORM_LPAR
|
||||
bne 98f
|
||||
bne 98f /* branch if result is !0 */
|
||||
LOADADDR(r6,_SDR1) /* Only if NOT LPAR */
|
||||
sub r6,r6,r26
|
||||
ld r6,0(r6) /* get the value of _SDR1 */
|
||||
|
@ -265,8 +265,10 @@ static void iommu_table_setparms(struct pci_controller *phb,
|
||||
tbl->it_offset = phb->dma_window_base_cur >> PAGE_SHIFT;
|
||||
|
||||
/* Test if we are going over 2GB of DMA space */
|
||||
if (phb->dma_window_base_cur + phb->dma_window_size > (1L << 31))
|
||||
if (phb->dma_window_base_cur + phb->dma_window_size > 0x80000000ul) {
|
||||
udbg_printf("PCI_DMA: Unexpected number of IOAs under this PHB.\n");
|
||||
panic("PCI_DMA: Unexpected number of IOAs under this PHB.\n");
|
||||
}
|
||||
|
||||
phb->dma_window_base_cur += phb->dma_window_size;
|
||||
|
||||
@ -310,92 +312,84 @@ static void iommu_table_setparms_lpar(struct pci_controller *phb,
|
||||
|
||||
static void iommu_bus_setup_pSeries(struct pci_bus *bus)
|
||||
{
|
||||
struct device_node *dn, *pdn;
|
||||
struct pci_dn *pci;
|
||||
struct device_node *dn;
|
||||
struct iommu_table *tbl;
|
||||
struct device_node *isa_dn, *isa_dn_orig;
|
||||
struct device_node *tmp;
|
||||
struct pci_dn *pci;
|
||||
int children;
|
||||
|
||||
DBG("iommu_bus_setup_pSeries, bus %p, bus->self %p\n", bus, bus->self);
|
||||
|
||||
/* For each (root) bus, we carve up the available DMA space in 256MB
|
||||
* pieces. Since each piece is used by one (sub) bus/device, that would
|
||||
* give a maximum of 7 devices per PHB. In most cases, this is plenty.
|
||||
dn = pci_bus_to_OF_node(bus);
|
||||
pci = PCI_DN(dn);
|
||||
|
||||
if (bus->self) {
|
||||
/* This is not a root bus, any setup will be done for the
|
||||
* device-side of the bridge in iommu_dev_setup_pSeries().
|
||||
*/
|
||||
return;
|
||||
}
|
||||
|
||||
/* Check if the ISA bus on the system is under
|
||||
* this PHB.
|
||||
*/
|
||||
isa_dn = isa_dn_orig = of_find_node_by_type(NULL, "isa");
|
||||
|
||||
while (isa_dn && isa_dn != dn)
|
||||
isa_dn = isa_dn->parent;
|
||||
|
||||
if (isa_dn_orig)
|
||||
of_node_put(isa_dn_orig);
|
||||
|
||||
/* Count number of direct PCI children of the PHB.
|
||||
* All PCI device nodes have class-code property, so it's
|
||||
* an easy way to find them.
|
||||
*/
|
||||
for (children = 0, tmp = dn->child; tmp; tmp = tmp->sibling)
|
||||
if (get_property(tmp, "class-code", NULL))
|
||||
children++;
|
||||
|
||||
DBG("Children: %d\n", children);
|
||||
|
||||
/* Calculate amount of DMA window per slot. Each window must be
|
||||
* a power of two (due to pci_alloc_consistent requirements).
|
||||
*
|
||||
* The exception is on Python PHBs (pre-POWER4). Here we don't have EADS
|
||||
* bridges below the PHB to allocate the sectioned tables to, so instead
|
||||
* we allocate a 1GB table at the PHB level.
|
||||
* Keep 256MB aside for PHBs with ISA.
|
||||
*/
|
||||
|
||||
dn = pci_bus_to_OF_node(bus);
|
||||
pci = dn->data;
|
||||
if (!isa_dn) {
|
||||
/* No ISA/IDE - just set window size and return */
|
||||
pci->phb->dma_window_size = 0x80000000ul; /* To be divided */
|
||||
|
||||
if (!bus->self) {
|
||||
/* Root bus */
|
||||
if (is_python(dn)) {
|
||||
unsigned int *iohole;
|
||||
while (pci->phb->dma_window_size * children > 0x80000000ul)
|
||||
pci->phb->dma_window_size >>= 1;
|
||||
DBG("No ISA/IDE, window size is %x\n", pci->phb->dma_window_size);
|
||||
pci->phb->dma_window_base_cur = 0;
|
||||
|
||||
DBG("Python root bus %s\n", bus->name);
|
||||
|
||||
iohole = (unsigned int *)get_property(dn, "io-hole", 0);
|
||||
|
||||
if (iohole) {
|
||||
/* On first bus we need to leave room for the
|
||||
* ISA address space. Just skip the first 256MB
|
||||
* alltogether. This leaves 768MB for the window.
|
||||
*/
|
||||
DBG("PHB has io-hole, reserving 256MB\n");
|
||||
pci->phb->dma_window_size = 3 << 28;
|
||||
pci->phb->dma_window_base_cur = 1 << 28;
|
||||
} else {
|
||||
/* 1GB window by default */
|
||||
pci->phb->dma_window_size = 1 << 30;
|
||||
pci->phb->dma_window_base_cur = 0;
|
||||
}
|
||||
|
||||
tbl = kmalloc(sizeof(struct iommu_table), GFP_KERNEL);
|
||||
|
||||
iommu_table_setparms(pci->phb, dn, tbl);
|
||||
pci->iommu_table = iommu_init_table(tbl);
|
||||
} else {
|
||||
/* Do a 128MB table at root. This is used for the IDE
|
||||
* controller on some SMP-mode POWER4 machines. It
|
||||
* doesn't hurt to allocate it on other machines
|
||||
* -- it'll just be unused since new tables are
|
||||
* allocated on the EADS level.
|
||||
*
|
||||
* Allocate at offset 128MB to avoid having to deal
|
||||
* with ISA holes; 128MB table for IDE is plenty.
|
||||
*/
|
||||
pci->phb->dma_window_size = 1 << 27;
|
||||
pci->phb->dma_window_base_cur = 1 << 27;
|
||||
|
||||
tbl = kmalloc(sizeof(struct iommu_table), GFP_KERNEL);
|
||||
|
||||
iommu_table_setparms(pci->phb, dn, tbl);
|
||||
pci->iommu_table = iommu_init_table(tbl);
|
||||
|
||||
/* All child buses have 256MB tables */
|
||||
pci->phb->dma_window_size = 1 << 28;
|
||||
}
|
||||
} else {
|
||||
pdn = pci_bus_to_OF_node(bus->parent);
|
||||
|
||||
if (!bus->parent->self && !is_python(pdn)) {
|
||||
struct iommu_table *tbl;
|
||||
/* First child and not python means this is the EADS
|
||||
* level. Allocate new table for this slot with 256MB
|
||||
* window.
|
||||
*/
|
||||
|
||||
tbl = kmalloc(sizeof(struct iommu_table), GFP_KERNEL);
|
||||
|
||||
iommu_table_setparms(pci->phb, dn, tbl);
|
||||
|
||||
pci->iommu_table = iommu_init_table(tbl);
|
||||
} else {
|
||||
/* Lower than first child or under python, use parent table */
|
||||
pci->iommu_table = PCI_DN(pdn)->iommu_table;
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
/* If we have ISA, then we probably have an IDE
|
||||
* controller too. Allocate a 128MB table but
|
||||
* skip the first 128MB to avoid stepping on ISA
|
||||
* space.
|
||||
*/
|
||||
pci->phb->dma_window_size = 0x8000000ul;
|
||||
pci->phb->dma_window_base_cur = 0x8000000ul;
|
||||
|
||||
tbl = kmalloc(sizeof(struct iommu_table), GFP_KERNEL);
|
||||
|
||||
iommu_table_setparms(pci->phb, dn, tbl);
|
||||
pci->iommu_table = iommu_init_table(tbl);
|
||||
|
||||
/* Divide the rest (1.75GB) among the children */
|
||||
pci->phb->dma_window_size = 0x80000000ul;
|
||||
while (pci->phb->dma_window_size * children > 0x70000000ul)
|
||||
pci->phb->dma_window_size >>= 1;
|
||||
|
||||
DBG("ISA/IDE, window size is %x\n", pci->phb->dma_window_size);
|
||||
|
||||
}
|
||||
|
||||
|
||||
@ -446,14 +440,29 @@ static void iommu_bus_setup_pSeriesLP(struct pci_bus *bus)
|
||||
static void iommu_dev_setup_pSeries(struct pci_dev *dev)
|
||||
{
|
||||
struct device_node *dn, *mydn;
|
||||
struct iommu_table *tbl;
|
||||
|
||||
DBG("iommu_dev_setup_pSeries, dev %p (%s)\n", dev, dev->pretty_name);
|
||||
/* Now copy the iommu_table ptr from the bus device down to the
|
||||
* pci device_node. This means get_iommu_table() won't need to search
|
||||
* up the device tree to find it.
|
||||
*/
|
||||
|
||||
mydn = dn = pci_device_to_OF_node(dev);
|
||||
|
||||
/* If we're the direct child of a root bus, then we need to allocate
|
||||
* an iommu table ourselves. The bus setup code should have setup
|
||||
* the window sizes already.
|
||||
*/
|
||||
if (!dev->bus->self) {
|
||||
DBG(" --> first child, no bridge. Allocating iommu table.\n");
|
||||
tbl = kmalloc(sizeof(struct iommu_table), GFP_KERNEL);
|
||||
iommu_table_setparms(PCI_DN(dn)->phb, dn, tbl);
|
||||
PCI_DN(mydn)->iommu_table = iommu_init_table(tbl);
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
/* If this device is further down the bus tree, search upwards until
|
||||
* an already allocated iommu table is found and use that.
|
||||
*/
|
||||
|
||||
while (dn && dn->data && PCI_DN(dn)->iommu_table == NULL)
|
||||
dn = dn->parent;
|
||||
|
||||
|
@ -246,11 +246,14 @@ static unsigned int pci_parse_of_flags(u32 addr0)
|
||||
unsigned int flags = 0;
|
||||
|
||||
if (addr0 & 0x02000000) {
|
||||
flags |= IORESOURCE_MEM;
|
||||
flags = IORESOURCE_MEM | PCI_BASE_ADDRESS_SPACE_MEMORY;
|
||||
flags |= (addr0 >> 22) & PCI_BASE_ADDRESS_MEM_TYPE_64;
|
||||
flags |= (addr0 >> 28) & PCI_BASE_ADDRESS_MEM_TYPE_1M;
|
||||
if (addr0 & 0x40000000)
|
||||
flags |= IORESOURCE_PREFETCH;
|
||||
flags |= IORESOURCE_PREFETCH
|
||||
| PCI_BASE_ADDRESS_MEM_PREFETCH;
|
||||
} else if (addr0 & 0x01000000)
|
||||
flags |= IORESOURCE_IO;
|
||||
flags = IORESOURCE_IO | PCI_BASE_ADDRESS_SPACE_IO;
|
||||
return flags;
|
||||
}
|
||||
|
||||
|
@ -1711,6 +1711,7 @@ static void __init flatten_device_tree(void)
|
||||
unsigned long offset = reloc_offset();
|
||||
unsigned long mem_start, mem_end, room;
|
||||
struct boot_param_header *hdr;
|
||||
struct prom_t *_prom = PTRRELOC(&prom);
|
||||
char *namep;
|
||||
u64 *rsvmap;
|
||||
|
||||
@ -1765,6 +1766,7 @@ static void __init flatten_device_tree(void)
|
||||
RELOC(dt_struct_end) = PAGE_ALIGN(mem_start);
|
||||
|
||||
/* Finish header */
|
||||
hdr->boot_cpuid_phys = _prom->cpu;
|
||||
hdr->magic = OF_DT_HEADER;
|
||||
hdr->totalsize = RELOC(dt_struct_end) - RELOC(dt_header_start);
|
||||
hdr->off_dt_struct = RELOC(dt_struct_start) - RELOC(dt_header_start);
|
||||
@ -1854,7 +1856,6 @@ static void __init prom_find_boot_cpu(void)
|
||||
|
||||
cpu_pkg = call_prom("instance-to-package", 1, 1, prom_cpu);
|
||||
|
||||
prom_setprop(cpu_pkg, "linux,boot-cpu", NULL, 0);
|
||||
prom_getprop(cpu_pkg, "reg", &getprop_rval, sizeof(getprop_rval));
|
||||
_prom->cpu = getprop_rval;
|
||||
|
||||
|
@ -224,10 +224,7 @@ int arch_setup_additional_pages(struct linux_binprm *bprm, int executable_stack)
|
||||
vma = kmem_cache_alloc(vm_area_cachep, SLAB_KERNEL);
|
||||
if (vma == NULL)
|
||||
return -ENOMEM;
|
||||
if (security_vm_enough_memory(vdso_pages)) {
|
||||
kmem_cache_free(vm_area_cachep, vma);
|
||||
return -ENOMEM;
|
||||
}
|
||||
|
||||
memset(vma, 0, sizeof(*vma));
|
||||
|
||||
/*
|
||||
@ -237,8 +234,10 @@ int arch_setup_additional_pages(struct linux_binprm *bprm, int executable_stack)
|
||||
*/
|
||||
vdso_base = get_unmapped_area(NULL, vdso_base,
|
||||
vdso_pages << PAGE_SHIFT, 0, 0);
|
||||
if (vdso_base & ~PAGE_MASK)
|
||||
if (vdso_base & ~PAGE_MASK) {
|
||||
kmem_cache_free(vm_area_cachep, vma);
|
||||
return (int)vdso_base;
|
||||
}
|
||||
|
||||
current->thread.vdso_base = vdso_base;
|
||||
|
||||
@ -266,7 +265,11 @@ int arch_setup_additional_pages(struct linux_binprm *bprm, int executable_stack)
|
||||
vma->vm_ops = &vdso_vmops;
|
||||
|
||||
down_write(&mm->mmap_sem);
|
||||
insert_vm_struct(mm, vma);
|
||||
if (insert_vm_struct(mm, vma)) {
|
||||
up_write(&mm->mmap_sem);
|
||||
kmem_cache_free(vm_area_cachep, vma);
|
||||
return -ENOMEM;
|
||||
}
|
||||
mm->total_vm += (vma->vm_end - vma->vm_start) >> PAGE_SHIFT;
|
||||
up_write(&mm->mmap_sem);
|
||||
|
||||
|
@ -2,7 +2,7 @@
|
||||
# Makefile for ppc64-specific library files..
|
||||
#
|
||||
|
||||
lib-y := checksum.o dec_and_lock.o string.o strcase.o
|
||||
lib-y := checksum.o string.o strcase.o
|
||||
lib-y += copypage.o memcpy.o copyuser.o usercopy.o
|
||||
|
||||
# Lock primitives are defined as no-ops in include/linux/spinlock.h
|
||||
|
@ -1,47 +0,0 @@
|
||||
/*
|
||||
* ppc64 version of atomic_dec_and_lock() using cmpxchg
|
||||
*
|
||||
* 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.
|
||||
*/
|
||||
|
||||
#include <linux/module.h>
|
||||
#include <linux/spinlock.h>
|
||||
#include <asm/atomic.h>
|
||||
#include <asm/system.h>
|
||||
|
||||
/*
|
||||
* This is an implementation of the notion of "decrement a
|
||||
* reference count, and return locked if it decremented to zero".
|
||||
*
|
||||
* This implementation can be used on any architecture that
|
||||
* has a cmpxchg, and where atomic->value is an int holding
|
||||
* the value of the atomic (i.e. the high bits aren't used
|
||||
* for a lock or anything like that).
|
||||
*/
|
||||
int _atomic_dec_and_lock(atomic_t *atomic, spinlock_t *lock)
|
||||
{
|
||||
int counter;
|
||||
int newcount;
|
||||
|
||||
for (;;) {
|
||||
counter = atomic_read(atomic);
|
||||
newcount = counter - 1;
|
||||
if (!newcount)
|
||||
break; /* do it the slow way */
|
||||
|
||||
newcount = cmpxchg(&atomic->counter, counter, newcount);
|
||||
if (newcount == counter)
|
||||
return 0;
|
||||
}
|
||||
|
||||
spin_lock(lock);
|
||||
if (atomic_dec_and_test(atomic))
|
||||
return 1;
|
||||
spin_unlock(lock);
|
||||
return 0;
|
||||
}
|
||||
|
||||
EXPORT_SYMBOL(_atomic_dec_and_lock);
|
@ -38,6 +38,7 @@
|
||||
#include <asm/system.h>
|
||||
#include <asm/uaccess.h>
|
||||
#include <asm/kdebug.h>
|
||||
#include <asm/siginfo.h>
|
||||
|
||||
/*
|
||||
* Check whether the instruction at regs->nip is a store using
|
||||
|
@ -1,7 +1,7 @@
|
||||
#
|
||||
# Automatically generated make config: don't edit
|
||||
# Linux kernel version: 2.6.13-rc4
|
||||
# Fri Jul 29 14:49:30 2005
|
||||
# Linux kernel version: 2.6.14-rc1
|
||||
# Wed Sep 14 16:46:19 2005
|
||||
#
|
||||
CONFIG_MMU=y
|
||||
CONFIG_RWSEM_XCHGADD_ALGORITHM=y
|
||||
@ -21,6 +21,7 @@ CONFIG_INIT_ENV_ARG_LIMIT=32
|
||||
# General setup
|
||||
#
|
||||
CONFIG_LOCALVERSION=""
|
||||
CONFIG_LOCALVERSION_AUTO=y
|
||||
CONFIG_SWAP=y
|
||||
CONFIG_SYSVIPC=y
|
||||
CONFIG_POSIX_MQUEUE=y
|
||||
@ -33,6 +34,7 @@ CONFIG_KOBJECT_UEVENT=y
|
||||
CONFIG_IKCONFIG=y
|
||||
CONFIG_IKCONFIG_PROC=y
|
||||
# CONFIG_CPUSETS is not set
|
||||
CONFIG_INITRAMFS_SOURCE=""
|
||||
# CONFIG_EMBEDDED is not set
|
||||
CONFIG_KALLSYMS=y
|
||||
# CONFIG_KALLSYMS_ALL is not set
|
||||
@ -94,6 +96,7 @@ CONFIG_FLATMEM_MANUAL=y
|
||||
# CONFIG_SPARSEMEM_MANUAL is not set
|
||||
CONFIG_FLATMEM=y
|
||||
CONFIG_FLAT_NODE_MEM_MAP=y
|
||||
# CONFIG_SPARSEMEM_STATIC is not set
|
||||
|
||||
#
|
||||
# I/O subsystem configuration
|
||||
@ -151,8 +154,8 @@ CONFIG_IP_FIB_HASH=y
|
||||
# CONFIG_INET_ESP is not set
|
||||
# CONFIG_INET_IPCOMP is not set
|
||||
# CONFIG_INET_TUNNEL is not set
|
||||
CONFIG_IP_TCPDIAG=y
|
||||
CONFIG_IP_TCPDIAG_IPV6=y
|
||||
CONFIG_INET_DIAG=y
|
||||
CONFIG_INET_TCP_DIAG=y
|
||||
# CONFIG_TCP_CONG_ADVANCED is not set
|
||||
CONFIG_TCP_CONG_BIC=y
|
||||
CONFIG_IPV6=y
|
||||
@ -164,6 +167,11 @@ CONFIG_IPV6=y
|
||||
# CONFIG_IPV6_TUNNEL is not set
|
||||
# CONFIG_NETFILTER is not set
|
||||
|
||||
#
|
||||
# DCCP Configuration (EXPERIMENTAL)
|
||||
#
|
||||
# CONFIG_IP_DCCP is not set
|
||||
|
||||
#
|
||||
# SCTP Configuration (EXPERIMENTAL)
|
||||
#
|
||||
@ -217,9 +225,11 @@ CONFIG_NET_CLS_POLICE=y
|
||||
# Network testing
|
||||
#
|
||||
# CONFIG_NET_PKTGEN is not set
|
||||
# CONFIG_NETFILTER_NETLINK is not set
|
||||
# CONFIG_HAMRADIO is not set
|
||||
# CONFIG_IRDA is not set
|
||||
# CONFIG_BT is not set
|
||||
# CONFIG_IEEE80211 is not set
|
||||
# CONFIG_PCMCIA is not set
|
||||
|
||||
#
|
||||
@ -233,6 +243,7 @@ CONFIG_PREVENT_FIRMWARE_BUILD=y
|
||||
#
|
||||
# SCSI device support
|
||||
#
|
||||
# CONFIG_RAID_ATTRS is not set
|
||||
CONFIG_SCSI=y
|
||||
CONFIG_SCSI_PROC_FS=y
|
||||
|
||||
@ -260,6 +271,7 @@ CONFIG_SCSI_LOGGING=y
|
||||
# CONFIG_SCSI_SPI_ATTRS is not set
|
||||
CONFIG_SCSI_FC_ATTRS=y
|
||||
# CONFIG_SCSI_ISCSI_ATTRS is not set
|
||||
# CONFIG_SCSI_SAS_ATTRS is not set
|
||||
|
||||
#
|
||||
# SCSI low-level drivers
|
||||
@ -280,7 +292,6 @@ CONFIG_BLK_DEV_RAM=y
|
||||
CONFIG_BLK_DEV_RAM_COUNT=16
|
||||
CONFIG_BLK_DEV_RAM_SIZE=4096
|
||||
CONFIG_BLK_DEV_INITRD=y
|
||||
CONFIG_INITRAMFS_SOURCE=""
|
||||
# CONFIG_LBD is not set
|
||||
# CONFIG_CDROM_PKTCDVD is not set
|
||||
|
||||
@ -383,6 +394,10 @@ CONFIG_BONDING=m
|
||||
CONFIG_EQUALIZER=m
|
||||
CONFIG_TUN=m
|
||||
|
||||
#
|
||||
# PHY device support
|
||||
#
|
||||
|
||||
#
|
||||
# Ethernet (10 or 100Mbit)
|
||||
#
|
||||
@ -453,10 +468,6 @@ CONFIG_FS_MBCACHE=y
|
||||
# CONFIG_REISERFS_FS is not set
|
||||
# CONFIG_JFS_FS is not set
|
||||
# CONFIG_FS_POSIX_ACL is not set
|
||||
|
||||
#
|
||||
# XFS support
|
||||
#
|
||||
# CONFIG_XFS_FS is not set
|
||||
# CONFIG_MINIX_FS is not set
|
||||
# CONFIG_ROMFS_FS is not set
|
||||
@ -465,6 +476,7 @@ CONFIG_INOTIFY=y
|
||||
CONFIG_DNOTIFY=y
|
||||
# CONFIG_AUTOFS_FS is not set
|
||||
# CONFIG_AUTOFS4_FS is not set
|
||||
# CONFIG_FUSE_FS is not set
|
||||
|
||||
#
|
||||
# CD-ROM/DVD Filesystems
|
||||
@ -485,11 +497,10 @@ CONFIG_DNOTIFY=y
|
||||
CONFIG_PROC_FS=y
|
||||
CONFIG_PROC_KCORE=y
|
||||
CONFIG_SYSFS=y
|
||||
# CONFIG_DEVPTS_FS_XATTR is not set
|
||||
CONFIG_TMPFS=y
|
||||
# CONFIG_TMPFS_XATTR is not set
|
||||
# CONFIG_HUGETLB_PAGE is not set
|
||||
CONFIG_RAMFS=y
|
||||
# CONFIG_RELAYFS_FS is not set
|
||||
|
||||
#
|
||||
# Miscellaneous filesystems
|
||||
@ -533,6 +544,7 @@ CONFIG_SUNRPC=y
|
||||
# CONFIG_NCP_FS is not set
|
||||
# CONFIG_CODA_FS is not set
|
||||
# CONFIG_AFS_FS is not set
|
||||
# CONFIG_9P_FS is not set
|
||||
|
||||
#
|
||||
# Partition Types
|
||||
@ -572,6 +584,7 @@ CONFIG_MSDOS_PARTITION=y
|
||||
CONFIG_DEBUG_KERNEL=y
|
||||
CONFIG_MAGIC_SYSRQ=y
|
||||
CONFIG_LOG_BUF_SHIFT=17
|
||||
CONFIG_DETECT_SOFTLOCKUP=y
|
||||
# CONFIG_SCHEDSTATS is not set
|
||||
# CONFIG_DEBUG_SLAB is not set
|
||||
CONFIG_DEBUG_PREEMPT=y
|
||||
@ -626,5 +639,6 @@ CONFIG_CRYPTO=y
|
||||
# Library routines
|
||||
#
|
||||
# CONFIG_CRC_CCITT is not set
|
||||
# CONFIG_CRC16 is not set
|
||||
CONFIG_CRC32=m
|
||||
# CONFIG_LIBCRC32C is not set
|
||||
|
@ -6,7 +6,7 @@ EXTRA_AFLAGS := -traditional
|
||||
|
||||
obj-y := bitmap.o traps.o time.o process.o \
|
||||
setup.o sys_s390.o ptrace.o signal.o cpcmd.o ebcdic.o \
|
||||
semaphore.o s390_ext.o debug.o profile.o irq.o
|
||||
semaphore.o s390_ext.o debug.o profile.o irq.o reipl_diag.o
|
||||
|
||||
extra-$(CONFIG_ARCH_S390_31) += head.o
|
||||
extra-$(CONFIG_ARCH_S390X) += head64.o
|
||||
|
@ -108,7 +108,7 @@ STACK_SIZE = 1 << STACK_SHIFT
|
||||
bl BASED(0f)
|
||||
l %r14,BASED(.Lcleanup_critical)
|
||||
basr %r14,%r14
|
||||
tm 0(%r12),0x01 # retest problem state after cleanup
|
||||
tm 1(%r12),0x01 # retest problem state after cleanup
|
||||
bnz BASED(1f)
|
||||
0: l %r14,__LC_ASYNC_STACK # are we already on the async stack ?
|
||||
slr %r14,%r15
|
||||
|
@ -101,7 +101,7 @@ _TIF_WORK_INT = (_TIF_SIGPENDING | _TIF_NEED_RESCHED | _TIF_MCCK_PENDING)
|
||||
clc \psworg+8(8),BASED(.Lcritical_start)
|
||||
jl 0f
|
||||
brasl %r14,cleanup_critical
|
||||
tm 0(%r12),0x01 # retest problem state after cleanup
|
||||
tm 1(%r12),0x01 # retest problem state after cleanup
|
||||
jnz 1f
|
||||
0: lg %r14,__LC_ASYNC_STACK # are we already on the async. stack ?
|
||||
slgr %r14,%r15
|
||||
|
39
arch/s390/kernel/reipl_diag.c
Normal file
39
arch/s390/kernel/reipl_diag.c
Normal file
@ -0,0 +1,39 @@
|
||||
/*
|
||||
* This file contains the implementation of the
|
||||
* Linux re-IPL support
|
||||
*
|
||||
* (C) Copyright IBM Corp. 2005
|
||||
*
|
||||
* Author(s): Volker Sameske (sameske@de.ibm.com)
|
||||
*
|
||||
*/
|
||||
|
||||
#include <linux/kernel.h>
|
||||
|
||||
static unsigned int reipl_diag_rc1;
|
||||
static unsigned int reipl_diag_rc2;
|
||||
|
||||
/*
|
||||
* re-IPL the system using the last used IPL parameters
|
||||
*/
|
||||
void reipl_diag(void)
|
||||
{
|
||||
asm volatile (
|
||||
" la %%r4,0\n"
|
||||
" la %%r5,0\n"
|
||||
" diag %%r4,%2,0x308\n"
|
||||
"0:\n"
|
||||
" st %%r4,%0\n"
|
||||
" st %%r5,%1\n"
|
||||
".section __ex_table,\"a\"\n"
|
||||
#ifdef __s390x__
|
||||
" .align 8\n"
|
||||
" .quad 0b, 0b\n"
|
||||
#else
|
||||
" .align 4\n"
|
||||
" .long 0b, 0b\n"
|
||||
#endif
|
||||
".previous\n"
|
||||
: "=m" (reipl_diag_rc1), "=m" (reipl_diag_rc2)
|
||||
: "d" (3) : "cc", "4", "5" );
|
||||
}
|
@ -261,8 +261,11 @@ void (*_machine_power_off)(void) = machine_power_off_smp;
|
||||
* Reboot, halt and power_off routines for non SMP.
|
||||
*/
|
||||
extern void reipl(unsigned long devno);
|
||||
extern void reipl_diag(void);
|
||||
static void do_machine_restart_nonsmp(char * __unused)
|
||||
{
|
||||
reipl_diag();
|
||||
|
||||
if (MACHINE_IS_VM)
|
||||
cpcmd ("IPL", NULL, 0);
|
||||
else
|
||||
@ -634,6 +637,7 @@ static int show_cpuinfo(struct seq_file *m, void *v)
|
||||
struct cpuinfo_S390 *cpuinfo;
|
||||
unsigned long n = (unsigned long) v - 1;
|
||||
|
||||
preempt_disable();
|
||||
if (!n) {
|
||||
seq_printf(m, "vendor_id : IBM/S390\n"
|
||||
"# processors : %i\n"
|
||||
@ -658,6 +662,7 @@ static int show_cpuinfo(struct seq_file *m, void *v)
|
||||
cpuinfo->cpu_id.ident,
|
||||
cpuinfo->cpu_id.machine);
|
||||
}
|
||||
preempt_enable();
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
@ -65,6 +65,7 @@ extern char vmhalt_cmd[];
|
||||
extern char vmpoff_cmd[];
|
||||
|
||||
extern void reipl(unsigned long devno);
|
||||
extern void reipl_diag(void);
|
||||
|
||||
static void smp_ext_bitcall(int, ec_bit_sig);
|
||||
static void smp_ext_bitcall_others(ec_bit_sig);
|
||||
@ -283,6 +284,8 @@ static void do_machine_restart(void * __unused)
|
||||
* interrupted by an external interrupt and s390irq
|
||||
* locks are always held disabled).
|
||||
*/
|
||||
reipl_diag();
|
||||
|
||||
if (MACHINE_IS_VM)
|
||||
cpcmd ("IPL", NULL, 0, NULL);
|
||||
else
|
||||
|
@ -33,14 +33,6 @@ config DEBUG_BOOTMEM
|
||||
depends on DEBUG_KERNEL
|
||||
bool "Debug BOOTMEM initialization"
|
||||
|
||||
# We have a custom atomic_dec_and_lock() implementation but it's not
|
||||
# compatible with spinlock debugging so we need to fall back on
|
||||
# the generic version in that case.
|
||||
config HAVE_DEC_LOCK
|
||||
bool
|
||||
depends on SMP && !DEBUG_SPINLOCK
|
||||
default y
|
||||
|
||||
config MCOUNT
|
||||
bool
|
||||
depends on STACK_DEBUG
|
||||
|
@ -42,19 +42,15 @@
|
||||
* executing (see inherit_locked_prom_mappings() rant).
|
||||
*/
|
||||
sparc64_vpte_nucleus:
|
||||
/* Load 0xf0000000, which is LOW_OBP_ADDRESS. */
|
||||
mov 0xf, %g5
|
||||
sllx %g5, 28, %g5
|
||||
|
||||
/* Is addr >= LOW_OBP_ADDRESS? */
|
||||
/* Note that kvmap below has verified that the address is
|
||||
* in the range MODULES_VADDR --> VMALLOC_END already. So
|
||||
* here we need only check if it is an OBP address or not.
|
||||
*/
|
||||
sethi %hi(LOW_OBP_ADDRESS), %g5
|
||||
cmp %g4, %g5
|
||||
blu,pn %xcc, sparc64_vpte_patchme1
|
||||
mov 0x1, %g5
|
||||
|
||||
/* Load 0x100000000, which is HI_OBP_ADDRESS. */
|
||||
sllx %g5, 32, %g5
|
||||
|
||||
/* Is addr < HI_OBP_ADDRESS? */
|
||||
cmp %g4, %g5
|
||||
blu,pn %xcc, obp_iaddr_patch
|
||||
nop
|
||||
@ -156,26 +152,29 @@ obp_daddr_patch:
|
||||
* rather, use information saved during inherit_prom_mappings() using 8k
|
||||
* pagesize.
|
||||
*/
|
||||
.align 32
|
||||
kvmap:
|
||||
/* Load 0xf0000000, which is LOW_OBP_ADDRESS. */
|
||||
mov 0xf, %g5
|
||||
sllx %g5, 28, %g5
|
||||
|
||||
/* Is addr >= LOW_OBP_ADDRESS? */
|
||||
sethi %hi(MODULES_VADDR), %g5
|
||||
cmp %g4, %g5
|
||||
blu,pn %xcc, vmalloc_addr
|
||||
blu,pn %xcc, longpath
|
||||
mov (VMALLOC_END >> 24), %g5
|
||||
sllx %g5, 24, %g5
|
||||
cmp %g4, %g5
|
||||
bgeu,pn %xcc, longpath
|
||||
nop
|
||||
|
||||
kvmap_check_obp:
|
||||
sethi %hi(LOW_OBP_ADDRESS), %g5
|
||||
cmp %g4, %g5
|
||||
blu,pn %xcc, kvmap_vmalloc_addr
|
||||
mov 0x1, %g5
|
||||
|
||||
/* Load 0x100000000, which is HI_OBP_ADDRESS. */
|
||||
sllx %g5, 32, %g5
|
||||
|
||||
/* Is addr < HI_OBP_ADDRESS? */
|
||||
cmp %g4, %g5
|
||||
blu,pn %xcc, obp_daddr_patch
|
||||
nop
|
||||
|
||||
vmalloc_addr:
|
||||
/* If we get here, a vmalloc addr accessed, load kernel VPTE. */
|
||||
kvmap_vmalloc_addr:
|
||||
/* If we get here, a vmalloc addr was accessed, load kernel VPTE. */
|
||||
ldxa [%g3 + %g6] ASI_N, %g5
|
||||
brgez,pn %g5, longpath
|
||||
nop
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user