1
0
Fork 0

Merge ../linux-2.6

Conflicts:

	arch/ia64/hp/sim/simscsi.c

Stylistic differences in two separate fixes for buffer->request_buffer
problem.

Signed-off-by: James Bottomley <James.Bottomley@SteelEye.com>
hifive-unleashed-5.1
James Bottomley 2006-08-06 12:42:33 -05:00
commit 00dd7b7d26
492 changed files with 5641 additions and 3291 deletions

5
.gitignore vendored
View File

@ -30,6 +30,11 @@ include/config
include/linux/autoconf.h include/linux/autoconf.h
include/linux/compile.h include/linux/compile.h
include/linux/version.h include/linux/version.h
include/linux/utsrelease.h
# stgit generated dirs # stgit generated dirs
patches-* patches-*
# quilt's files
patches
series

View File

@ -58,6 +58,9 @@
!Iinclude/linux/ktime.h !Iinclude/linux/ktime.h
!Iinclude/linux/hrtimer.h !Iinclude/linux/hrtimer.h
!Ekernel/hrtimer.c !Ekernel/hrtimer.c
</sect1>
<sect1><title>Workqueues and Kevents</title>
!Ekernel/workqueue.c
</sect1> </sect1>
<sect1><title>Internal Functions</title> <sect1><title>Internal Functions</title>
!Ikernel/exit.c !Ikernel/exit.c
@ -300,7 +303,7 @@ X!Ekernel/module.c
</sect1> </sect1>
<sect1><title>Resources Management</title> <sect1><title>Resources Management</title>
!Ekernel/resource.c !Ikernel/resource.c
</sect1> </sect1>
<sect1><title>MTRR Handling</title> <sect1><title>MTRR Handling</title>
@ -312,9 +315,7 @@ X!Ekernel/module.c
!Edrivers/pci/pci-driver.c !Edrivers/pci/pci-driver.c
!Edrivers/pci/remove.c !Edrivers/pci/remove.c
!Edrivers/pci/pci-acpi.c !Edrivers/pci/pci-acpi.c
<!-- kerneldoc does not understand __devinit !Edrivers/pci/search.c
X!Edrivers/pci/search.c
-->
!Edrivers/pci/msi.c !Edrivers/pci/msi.c
!Edrivers/pci/bus.c !Edrivers/pci/bus.c
<!-- FIXME: Removed for now since no structured comments in source <!-- FIXME: Removed for now since no structured comments in source

View File

@ -10,7 +10,9 @@ kernel, the process can sometimes be daunting if you're not familiar
with "the system." This text is a collection of suggestions which with "the system." This text is a collection of suggestions which
can greatly increase the chances of your change being accepted. can greatly increase the chances of your change being accepted.
If you are submitting a driver, also read Documentation/SubmittingDrivers. Read Documentation/SubmitChecklist for a list of items to check
before submitting code. If you are submitting a driver, also read
Documentation/SubmittingDrivers.
@ -74,9 +76,6 @@ There are a number of scripts which can aid in this:
Quilt: Quilt:
http://savannah.nongnu.org/projects/quilt http://savannah.nongnu.org/projects/quilt
Randy Dunlap's patch scripts:
http://www.xenotime.net/linux/scripts/patching-scripts-002.tar.gz
Andrew Morton's patch scripts: Andrew Morton's patch scripts:
http://www.zip.com.au/~akpm/linux/patches/ http://www.zip.com.au/~akpm/linux/patches/
Instead of these scripts, quilt is the recommended patch management Instead of these scripts, quilt is the recommended patch management
@ -484,7 +483,7 @@ Greg Kroah-Hartman "How to piss off a kernel subsystem maintainer".
<http://www.kroah.com/log/2005/10/19/> <http://www.kroah.com/log/2005/10/19/>
<http://www.kroah.com/log/2006/01/11/> <http://www.kroah.com/log/2006/01/11/>
NO!!!! No more huge patch bombs to linux-kernel@vger.kernel.org people!. NO!!!! No more huge patch bombs to linux-kernel@vger.kernel.org people!
<http://marc.theaimsgroup.com/?l=linux-kernel&m=112112749912944&w=2> <http://marc.theaimsgroup.com/?l=linux-kernel&m=112112749912944&w=2>
Kernel Documentation/CodingStyle Kernel Documentation/CodingStyle
@ -493,4 +492,3 @@ Kernel Documentation/CodingStyle
Linus Torvald's mail on the canonical patch format: Linus Torvald's mail on the canonical patch format:
<http://lkml.org/lkml/2005/4/7/183> <http://lkml.org/lkml/2005/4/7/183>
-- --
Last updated on 17 Nov 2005.

View File

@ -64,11 +64,13 @@ Compile the kernel with
CONFIG_TASK_DELAY_ACCT=y CONFIG_TASK_DELAY_ACCT=y
CONFIG_TASKSTATS=y CONFIG_TASKSTATS=y
Enable the accounting at boot time by adding Delay accounting is enabled by default at boot up.
the following to the kernel boot options To disable, add
delayacct nodelayacct
to the kernel boot options. The rest of the instructions
below assume this has not been done.
and after the system has booted up, use a utility After the system has booted up, use a utility
similar to getdelays.c to access the delays similar to getdelays.c to access the delays
seen by a given task or a task group (tgid). seen by a given task or a task group (tgid).
The utility also allows a given command to be The utility also allows a given command to be

View File

@ -153,10 +153,13 @@ scaling_governor, and by "echoing" the name of another
that some governors won't load - they only that some governors won't load - they only
work on some specific architectures or work on some specific architectures or
processors. processors.
scaling_min_freq and scaling_min_freq and
scaling_max_freq show the current "policy limits" (in scaling_max_freq show the current "policy limits" (in
kHz). By echoing new values into these kHz). By echoing new values into these
files, you can change these limits. files, you can change these limits.
NOTE: when setting a policy you need to
first set scaling_max_freq, then
scaling_min_freq.
If you have selected the "userspace" governor which allows you to If you have selected the "userspace" governor which allows you to

View File

@ -251,16 +251,24 @@ A: This is what you would need in your kernel code to receive notifications.
return NOTIFY_OK; return NOTIFY_OK;
} }
static struct notifier_block foobar_cpu_notifer = static struct notifier_block __cpuinitdata foobar_cpu_notifer =
{ {
.notifier_call = foobar_cpu_callback, .notifier_call = foobar_cpu_callback,
}; };
You need to call register_cpu_notifier() from your init function.
Init functions could be of two types:
1. early init (init function called when only the boot processor is online).
2. late init (init function called _after_ all the CPUs are online).
In your init function, For the first case, you should add the following to your init function
register_cpu_notifier(&foobar_cpu_notifier); register_cpu_notifier(&foobar_cpu_notifier);
For the second case, you should add the following to your init function
register_hotcpu_notifier(&foobar_cpu_notifier);
You can fail PREPARE notifiers if something doesn't work to prepare resources. You can fail PREPARE notifiers if something doesn't work to prepare resources.
This will stop the activity and send a following CANCELED event back. This will stop the activity and send a following CANCELED event back.

View File

@ -2565,10 +2565,10 @@ Your cooperation is appreciated.
243 = /dev/usb/dabusb3 Fourth dabusb device 243 = /dev/usb/dabusb3 Fourth dabusb device
180 block USB block devices 180 block USB block devices
0 = /dev/uba First USB block device 0 = /dev/uba First USB block device
8 = /dev/ubb Second USB block device 8 = /dev/ubb Second USB block device
16 = /dev/ubc Thrid USB block device 16 = /dev/ubc Third USB block device
... ...
181 char Conrad Electronic parallel port radio clocks 181 char Conrad Electronic parallel port radio clocks
0 = /dev/pcfclock0 First Conrad radio clock 0 = /dev/pcfclock0 First Conrad radio clock

View File

@ -51,8 +51,6 @@ Debugging Information
References References
IETF IP over InfiniBand (ipoib) Working Group
http://ietf.org/html.charters/ipoib-charter.html
Transmission of IP over InfiniBand (IPoIB) (RFC 4391) Transmission of IP over InfiniBand (IPoIB) (RFC 4391)
http://ietf.org/rfc/rfc4391.txt http://ietf.org/rfc/rfc4391.txt
IP over InfiniBand (IPoIB) Architecture (RFC 4392) IP over InfiniBand (IPoIB) Architecture (RFC 4392)

View File

@ -72,6 +72,22 @@ initrd adds the following new options:
initrd is mounted as root, and the normal boot procedure is followed, initrd is mounted as root, and the normal boot procedure is followed,
with the RAM disk still mounted as root. with the RAM disk still mounted as root.
Compressed cpio images
----------------------
Recent kernels have support for populating a ramdisk from a compressed cpio
archive, on such systems, the creation of a ramdisk image doesn't need to
involve special block devices or loopbacks, you merely create a directory on
disk with the desired initrd content, cd to that directory, and run (as an
example):
find . | cpio --quiet -c -o | gzip -9 -n > /boot/imagefile.img
Examining the contents of an existing image file is just as simple:
mkdir /tmp/imagefile
cd /tmp/imagefile
gzip -cd /boot/imagefile.img | cpio -imd --quiet
Installation Installation
------------ ------------

View File

@ -407,6 +407,20 @@ more details, with real examples.
The second argument is optional, and if supplied will be used The second argument is optional, and if supplied will be used
if first argument is not supported. if first argument is not supported.
ld-option
ld-option is used to check if $(CC) when used to link object files
supports the given option. An optional second option may be
specified if first option are not supported.
Example:
#arch/i386/kernel/Makefile
vsyscall-flags += $(call ld-option, -Wl$(comma)--hash-style=sysv)
In the above example vsyscall-flags will be assigned the option
-Wl$(comma)--hash-style=sysv if it is supported by $(CC).
The second argument is optional, and if supplied will be used
if first argument is not supported.
cc-option cc-option
cc-option is used to check if $(CC) support a given option, and not cc-option is used to check if $(CC) support a given option, and not
supported to use an optional second option. supported to use an optional second option.

View File

@ -448,8 +448,6 @@ running once the system is up.
Format: <area>[,<node>] Format: <area>[,<node>]
See also Documentation/networking/decnet.txt. See also Documentation/networking/decnet.txt.
delayacct [KNL] Enable per-task delay accounting
dhash_entries= [KNL] dhash_entries= [KNL]
Set number of hash buckets for dentry cache. Set number of hash buckets for dentry cache.
@ -1031,6 +1029,8 @@ running once the system is up.
nocache [ARM] nocache [ARM]
nodelayacct [KNL] Disable per-task delay accounting
nodisconnect [HW,SCSI,M68K] Disables SCSI disconnects. nodisconnect [HW,SCSI,M68K] Disables SCSI disconnects.
noexec [IA-64] noexec [IA-64]

View File

@ -211,9 +211,8 @@ Controls the kernel's behaviour when an oops or BUG is encountered.
0: try to continue operation 0: try to continue operation
1: delay a few seconds (to give klogd time to record the oops output) and 1: panic immediatly. If the `panic' sysctl is also non-zero then the
then panic. If the `panic' sysctl is also non-zero then the machine will machine will be rebooted.
be rebooted.
============================================================== ==============================================================

View File

@ -59,7 +59,7 @@ bind to an interface (or perhaps several) using an ioctl call. You
would issue more ioctls to the device to communicate to it using would issue more ioctls to the device to communicate to it using
control, bulk, or other kinds of USB transfers. The IOCTLs are control, bulk, or other kinds of USB transfers. The IOCTLs are
listed in the <linux/usbdevice_fs.h> file, and at this writing the listed in the <linux/usbdevice_fs.h> file, and at this writing the
source code (linux/drivers/usb/devio.c) is the primary reference source code (linux/drivers/usb/core/devio.c) is the primary reference
for how to access devices through those files. for how to access devices through those files.
Note that since by default these BBB/DDD files are writable only by Note that since by default these BBB/DDD files are writable only by

View File

@ -5,8 +5,7 @@ For USB help other than the readme files that are located in
Documentation/usb/*, see the following: Documentation/usb/*, see the following:
Linux-USB project: http://www.linux-usb.org Linux-USB project: http://www.linux-usb.org
mirrors at http://www.suse.cz/development/linux-usb/ mirrors at http://usb.in.tum.de/linux-usb/
and http://usb.in.tum.de/linux-usb/
and http://it.linux-usb.org and http://it.linux-usb.org
Linux USB Guide: http://linux-usb.sourceforge.net Linux USB Guide: http://linux-usb.sourceforge.net
Linux-USB device overview (working devices and drivers): Linux-USB device overview (working devices and drivers):

View File

@ -238,6 +238,13 @@ Debugging
pagefaulttrace Dump all page faults. Only useful for extreme debugging pagefaulttrace Dump all page faults. Only useful for extreme debugging
and will create a lot of output. and will create a lot of output.
call_trace=[old|both|newfallback|new]
old: use old inexact backtracer
new: use new exact dwarf2 unwinder
both: print entries from both
newfallback: use new unwinder but fall back to old if it gets
stuck (default)
Misc Misc
noreplacement Don't replace instructions with more appropriate ones noreplacement Don't replace instructions with more appropriate ones

View File

@ -214,6 +214,12 @@ W: http://acpi.sourceforge.net/
T: git kernel.org:/pub/scm/linux/kernel/git/lenb/linux-acpi-2.6.git T: git kernel.org:/pub/scm/linux/kernel/git/lenb/linux-acpi-2.6.git
S: Maintained S: Maintained
ACPI PCI HOTPLUG DRIVER
P: Kristen Carlson Accardi
M: kristen.c.accardi@intel.com
L: pcihpd-discuss@lists.sourceforge.net
S: Maintained
AD1816 SOUND DRIVER AD1816 SOUND DRIVER
P: Thorsten Knabe P: Thorsten Knabe
M: Thorsten Knabe <linux@thorsten-knabe.de> M: Thorsten Knabe <linux@thorsten-knabe.de>
@ -292,6 +298,13 @@ L: info-linux@geode.amd.com
W: http://www.amd.com/us-en/ConnectivitySolutions/TechnicalResources/0,,50_2334_2452_11363,00.html W: http://www.amd.com/us-en/ConnectivitySolutions/TechnicalResources/0,,50_2334_2452_11363,00.html
S: Supported S: Supported
AOA (Apple Onboard Audio) ALSA DRIVER
P: Johannes Berg
M: johannes@sipsolutions.net
L: linuxppc-dev@ozlabs.org
L: alsa-devel@alsa-project.org
S: Maintained
APM DRIVER APM DRIVER
P: Stephen Rothwell P: Stephen Rothwell
M: sfr@canb.auug.org.au M: sfr@canb.auug.org.au
@ -968,6 +981,10 @@ P: Andrey V. Savochkin
M: saw@saw.sw.com.sg M: saw@saw.sw.com.sg
S: Maintained S: Maintained
EFS FILESYSTEM
W: http://aeschi.ch.eu.org/efs/
S: Orphan
EMU10K1 SOUND DRIVER EMU10K1 SOUND DRIVER
P: James Courtier-Dutton P: James Courtier-Dutton
M: James@superbug.demon.co.uk M: James@superbug.demon.co.uk
@ -1598,7 +1615,7 @@ W: http://jfs.sourceforge.net/
T: git kernel.org:/pub/scm/linux/kernel/git/shaggy/jfs-2.6.git T: git kernel.org:/pub/scm/linux/kernel/git/shaggy/jfs-2.6.git
S: Supported S: Supported
JOURNALLING LAYER FOR BLOCK DEVICS (JBD) JOURNALLING LAYER FOR BLOCK DEVICES (JBD)
P: Stephen Tweedie, Andrew Morton P: Stephen Tweedie, Andrew Morton
M: sct@redhat.com, akpm@osdl.org M: sct@redhat.com, akpm@osdl.org
L: ext2-devel@lists.sourceforge.net L: ext2-devel@lists.sourceforge.net
@ -1642,9 +1659,8 @@ S: Maintained
KERNEL JANITORS KERNEL JANITORS
P: Several P: Several
L: kernel-janitors@osdl.org L: kernel-janitors@lists.osdl.org
W: http://www.kerneljanitors.org/ W: http://www.kerneljanitors.org/
W: http://sf.net/projects/kernel-janitor/
S: Maintained S: Maintained
KERNEL NFSD KERNEL NFSD
@ -1882,6 +1898,12 @@ S: linux-scsi@vger.kernel.org
W: http://megaraid.lsilogic.com W: http://megaraid.lsilogic.com
S: Maintained S: Maintained
MEMORY MANAGEMENT
L: linux-mm@kvack.org
L: linux-kernel@vger.kernel.org
W: http://www.linux-mm.org
S: Maintained
MEMORY TECHNOLOGY DEVICES (MTD) MEMORY TECHNOLOGY DEVICES (MTD)
P: David Woodhouse P: David Woodhouse
M: dwmw2@infradead.org M: dwmw2@infradead.org
@ -2626,6 +2648,14 @@ M: dbrownell@users.sourceforge.net
L: spi-devel-general@lists.sourceforge.net L: spi-devel-general@lists.sourceforge.net
S: Maintained S: Maintained
STABLE BRANCH:
P: Greg Kroah-Hartman
M: greg@kroah.com
P: Chris Wright
M: chrisw@sous-sol.org
L: stable@kernel.org
S: Maintained
TPM DEVICE DRIVER TPM DEVICE DRIVER
P: Kylene Hall P: Kylene Hall
M: kjhall@us.ibm.com M: kjhall@us.ibm.com

View File

@ -1,7 +1,7 @@
VERSION = 2 VERSION = 2
PATCHLEVEL = 6 PATCHLEVEL = 6
SUBLEVEL = 18 SUBLEVEL = 18
EXTRAVERSION = -rc2 EXTRAVERSION = -rc3
NAME=Crazed Snow-Weasel NAME=Crazed Snow-Weasel
# *DOCUMENTATION* # *DOCUMENTATION*
@ -310,8 +310,8 @@ CPPFLAGS := -D__KERNEL__ $(LINUXINCLUDE)
CFLAGS := -Wall -Wundef -Wstrict-prototypes -Wno-trigraphs \ CFLAGS := -Wall -Wundef -Wstrict-prototypes -Wno-trigraphs \
-fno-strict-aliasing -fno-common -fno-strict-aliasing -fno-common
# Force gcc to behave correct even for buggy distributions # Force gcc to behave correct even for buggy distributions
CFLAGS += $(call cc-option, -fno-stack-protector-all \ CFLAGS += $(call cc-option, -fno-stack-protector)
-fno-stack-protector)
AFLAGS := -D__ASSEMBLY__ AFLAGS := -D__ASSEMBLY__
# Read KERNELRELEASE from include/config/kernel.release (if it exists) # Read KERNELRELEASE from include/config/kernel.release (if it exists)
@ -368,6 +368,7 @@ endif
no-dot-config-targets := clean mrproper distclean \ no-dot-config-targets := clean mrproper distclean \
cscope TAGS tags help %docs check% \ cscope TAGS tags help %docs check% \
include/linux/version.h headers_% \
kernelrelease kernelversion kernelrelease kernelversion
config-targets := 0 config-targets := 0

View File

@ -274,16 +274,14 @@ ev7_process_pal_subpacket(struct el_subpacket *header)
struct el_subpacket_handler ev7_pal_subpacket_handler = struct el_subpacket_handler ev7_pal_subpacket_handler =
SUBPACKET_HANDLER_INIT(EL_CLASS__PAL, ev7_process_pal_subpacket); SUBPACKET_HANDLER_INIT(EL_CLASS__PAL, ev7_process_pal_subpacket);
void void
ev7_register_error_handlers(void) ev7_register_error_handlers(void)
{ {
int i; int i;
for(i = 0; for (i = 0; i < ARRAY_SIZE(el_ev7_pal_annotations); i++)
i<sizeof(el_ev7_pal_annotations)/sizeof(el_ev7_pal_annotations[1]);
i++) {
cdl_register_subpacket_annotation(&el_ev7_pal_annotations[i]); cdl_register_subpacket_annotation(&el_ev7_pal_annotations[i]);
}
cdl_register_subpacket_handler(&ev7_pal_subpacket_handler); cdl_register_subpacket_handler(&ev7_pal_subpacket_handler);
} }

View File

@ -623,12 +623,12 @@ osf_sysinfo(int command, char __user *buf, long count)
long len, err = -EINVAL; long len, err = -EINVAL;
offset = command-1; offset = command-1;
if (offset >= sizeof(sysinfo_table)/sizeof(char *)) { if (offset >= ARRAY_SIZE(sysinfo_table)) {
/* Digital UNIX has a few unpublished interfaces here */ /* Digital UNIX has a few unpublished interfaces here */
printk("sysinfo(%d)", command); printk("sysinfo(%d)", command);
goto out; goto out;
} }
down_read(&uts_sem); down_read(&uts_sem);
res = sysinfo_table[offset]; res = sysinfo_table[offset];
len = strlen(res)+1; len = strlen(res)+1;

View File

@ -114,8 +114,6 @@ struct alpha_machine_vector alpha_mv;
int alpha_using_srm; int alpha_using_srm;
#endif #endif
#define N(a) (sizeof(a)/sizeof(a[0]))
static struct alpha_machine_vector *get_sysvec(unsigned long, unsigned long, static struct alpha_machine_vector *get_sysvec(unsigned long, unsigned long,
unsigned long); unsigned long);
static struct alpha_machine_vector *get_sysvec_byname(const char *); static struct alpha_machine_vector *get_sysvec_byname(const char *);
@ -240,7 +238,7 @@ reserve_std_resources(void)
standard_io_resources[0].start = RTC_PORT(0); standard_io_resources[0].start = RTC_PORT(0);
standard_io_resources[0].end = RTC_PORT(0) + 0x10; standard_io_resources[0].end = RTC_PORT(0) + 0x10;
for (i = 0; i < N(standard_io_resources); ++i) for (i = 0; i < ARRAY_SIZE(standard_io_resources); ++i)
request_resource(io, standard_io_resources+i); request_resource(io, standard_io_resources+i);
} }
@ -918,13 +916,13 @@ get_sysvec(unsigned long type, unsigned long variation, unsigned long cpu)
/* Search the system tables first... */ /* Search the system tables first... */
vec = NULL; vec = NULL;
if (type < N(systype_vecs)) { if (type < ARRAY_SIZE(systype_vecs)) {
vec = systype_vecs[type]; vec = systype_vecs[type];
} else if ((type > ST_API_BIAS) && } else if ((type > ST_API_BIAS) &&
(type - ST_API_BIAS) < N(api_vecs)) { (type - ST_API_BIAS) < ARRAY_SIZE(api_vecs)) {
vec = api_vecs[type - ST_API_BIAS]; vec = api_vecs[type - ST_API_BIAS];
} else if ((type > ST_UNOFFICIAL_BIAS) && } else if ((type > ST_UNOFFICIAL_BIAS) &&
(type - ST_UNOFFICIAL_BIAS) < N(unofficial_vecs)) { (type - ST_UNOFFICIAL_BIAS) < ARRAY_SIZE(unofficial_vecs)) {
vec = unofficial_vecs[type - ST_UNOFFICIAL_BIAS]; vec = unofficial_vecs[type - ST_UNOFFICIAL_BIAS];
} }
@ -938,11 +936,11 @@ get_sysvec(unsigned long type, unsigned long variation, unsigned long cpu)
switch (type) { switch (type) {
case ST_DEC_ALCOR: case ST_DEC_ALCOR:
if (member < N(alcor_indices)) if (member < ARRAY_SIZE(alcor_indices))
vec = alcor_vecs[alcor_indices[member]]; vec = alcor_vecs[alcor_indices[member]];
break; break;
case ST_DEC_EB164: case ST_DEC_EB164:
if (member < N(eb164_indices)) if (member < ARRAY_SIZE(eb164_indices))
vec = eb164_vecs[eb164_indices[member]]; vec = eb164_vecs[eb164_indices[member]];
/* PC164 may show as EB164 variation with EV56 CPU, /* PC164 may show as EB164 variation with EV56 CPU,
but, since no true EB164 had anything but EV5... */ but, since no true EB164 had anything but EV5... */
@ -950,24 +948,24 @@ get_sysvec(unsigned long type, unsigned long variation, unsigned long cpu)
vec = &pc164_mv; vec = &pc164_mv;
break; break;
case ST_DEC_EB64P: case ST_DEC_EB64P:
if (member < N(eb64p_indices)) if (member < ARRAY_SIZE(eb64p_indices))
vec = eb64p_vecs[eb64p_indices[member]]; vec = eb64p_vecs[eb64p_indices[member]];
break; break;
case ST_DEC_EB66: case ST_DEC_EB66:
if (member < N(eb66_indices)) if (member < ARRAY_SIZE(eb66_indices))
vec = eb66_vecs[eb66_indices[member]]; vec = eb66_vecs[eb66_indices[member]];
break; break;
case ST_DEC_MARVEL: case ST_DEC_MARVEL:
if (member < N(marvel_indices)) if (member < ARRAY_SIZE(marvel_indices))
vec = marvel_vecs[marvel_indices[member]]; vec = marvel_vecs[marvel_indices[member]];
break; break;
case ST_DEC_TITAN: case ST_DEC_TITAN:
vec = titan_vecs[0]; /* default */ vec = titan_vecs[0]; /* default */
if (member < N(titan_indices)) if (member < ARRAY_SIZE(titan_indices))
vec = titan_vecs[titan_indices[member]]; vec = titan_vecs[titan_indices[member]];
break; break;
case ST_DEC_TSUNAMI: case ST_DEC_TSUNAMI:
if (member < N(tsunami_indices)) if (member < ARRAY_SIZE(tsunami_indices))
vec = tsunami_vecs[tsunami_indices[member]]; vec = tsunami_vecs[tsunami_indices[member]];
break; break;
case ST_DEC_1000: case ST_DEC_1000:
@ -1039,7 +1037,7 @@ get_sysvec_byname(const char *name)
size_t i; size_t i;
for (i = 0; i < N(all_vecs); ++i) { for (i = 0; i < ARRAY_SIZE(all_vecs); ++i) {
struct alpha_machine_vector *mv = all_vecs[i]; struct alpha_machine_vector *mv = all_vecs[i];
if (strcasecmp(mv->vector_name, name) == 0) if (strcasecmp(mv->vector_name, name) == 0)
return mv; return mv;
@ -1055,13 +1053,13 @@ get_sysnames(unsigned long type, unsigned long variation, unsigned long cpu,
/* If not in the tables, make it UNKNOWN, /* If not in the tables, make it UNKNOWN,
else set type name to family */ else set type name to family */
if (type < N(systype_names)) { if (type < ARRAY_SIZE(systype_names)) {
*type_name = systype_names[type]; *type_name = systype_names[type];
} else if ((type > ST_API_BIAS) && } else if ((type > ST_API_BIAS) &&
(type - ST_API_BIAS) < N(api_names)) { (type - ST_API_BIAS) < ARRAY_SIZE(api_names)) {
*type_name = api_names[type - ST_API_BIAS]; *type_name = api_names[type - ST_API_BIAS];
} else if ((type > ST_UNOFFICIAL_BIAS) && } else if ((type > ST_UNOFFICIAL_BIAS) &&
(type - ST_UNOFFICIAL_BIAS) < N(unofficial_names)) { (type - ST_UNOFFICIAL_BIAS) < ARRAY_SIZE(unofficial_names)) {
*type_name = unofficial_names[type - ST_UNOFFICIAL_BIAS]; *type_name = unofficial_names[type - ST_UNOFFICIAL_BIAS];
} else { } else {
*type_name = sys_unknown; *type_name = sys_unknown;
@ -1083,7 +1081,7 @@ get_sysnames(unsigned long type, unsigned long variation, unsigned long cpu,
default: /* default to variation "0" for now */ default: /* default to variation "0" for now */
break; break;
case ST_DEC_EB164: case ST_DEC_EB164:
if (member < N(eb164_indices)) if (member < ARRAY_SIZE(eb164_indices))
*variation_name = eb164_names[eb164_indices[member]]; *variation_name = eb164_names[eb164_indices[member]];
/* PC164 may show as EB164 variation, but with EV56 CPU, /* PC164 may show as EB164 variation, but with EV56 CPU,
so, since no true EB164 had anything but EV5... */ so, since no true EB164 had anything but EV5... */
@ -1091,32 +1089,32 @@ get_sysnames(unsigned long type, unsigned long variation, unsigned long cpu,
*variation_name = eb164_names[1]; /* make it PC164 */ *variation_name = eb164_names[1]; /* make it PC164 */
break; break;
case ST_DEC_ALCOR: case ST_DEC_ALCOR:
if (member < N(alcor_indices)) if (member < ARRAY_SIZE(alcor_indices))
*variation_name = alcor_names[alcor_indices[member]]; *variation_name = alcor_names[alcor_indices[member]];
break; break;
case ST_DEC_EB64P: case ST_DEC_EB64P:
if (member < N(eb64p_indices)) if (member < ARRAY_SIZE(eb64p_indices))
*variation_name = eb64p_names[eb64p_indices[member]]; *variation_name = eb64p_names[eb64p_indices[member]];
break; break;
case ST_DEC_EB66: case ST_DEC_EB66:
if (member < N(eb66_indices)) if (member < ARRAY_SIZE(eb66_indices))
*variation_name = eb66_names[eb66_indices[member]]; *variation_name = eb66_names[eb66_indices[member]];
break; break;
case ST_DEC_MARVEL: case ST_DEC_MARVEL:
if (member < N(marvel_indices)) if (member < ARRAY_SIZE(marvel_indices))
*variation_name = marvel_names[marvel_indices[member]]; *variation_name = marvel_names[marvel_indices[member]];
break; break;
case ST_DEC_RAWHIDE: case ST_DEC_RAWHIDE:
if (member < N(rawhide_indices)) if (member < ARRAY_SIZE(rawhide_indices))
*variation_name = rawhide_names[rawhide_indices[member]]; *variation_name = rawhide_names[rawhide_indices[member]];
break; break;
case ST_DEC_TITAN: case ST_DEC_TITAN:
*variation_name = titan_names[0]; /* default */ *variation_name = titan_names[0]; /* default */
if (member < N(titan_indices)) if (member < ARRAY_SIZE(titan_indices))
*variation_name = titan_names[titan_indices[member]]; *variation_name = titan_names[titan_indices[member]];
break; break;
case ST_DEC_TSUNAMI: case ST_DEC_TSUNAMI:
if (member < N(tsunami_indices)) if (member < ARRAY_SIZE(tsunami_indices))
*variation_name = tsunami_names[tsunami_indices[member]]; *variation_name = tsunami_names[tsunami_indices[member]];
break; break;
} }
@ -1211,7 +1209,7 @@ show_cpuinfo(struct seq_file *f, void *slot)
cpu_index = (unsigned) (cpu->type - 1); cpu_index = (unsigned) (cpu->type - 1);
cpu_name = "Unknown"; cpu_name = "Unknown";
if (cpu_index < N(cpu_names)) if (cpu_index < ARRAY_SIZE(cpu_names))
cpu_name = cpu_names[cpu_index]; cpu_name = cpu_names[cpu_index];
get_sysnames(hwrpb->sys_type, hwrpb->sys_variation, get_sysnames(hwrpb->sys_type, hwrpb->sys_variation,

View File

@ -182,16 +182,16 @@ static unsigned long __init
ruffian_get_bank_size(unsigned long offset) ruffian_get_bank_size(unsigned long offset)
{ {
unsigned long bank_addr, bank, ret = 0; unsigned long bank_addr, bank, ret = 0;
/* Valid offsets are: 0x800, 0x840 and 0x880 /* Valid offsets are: 0x800, 0x840 and 0x880
since Ruffian only uses three banks. */ since Ruffian only uses three banks. */
bank_addr = (unsigned long)PYXIS_MCR + offset; bank_addr = (unsigned long)PYXIS_MCR + offset;
bank = *(vulp)bank_addr; bank = *(vulp)bank_addr;
/* Check BANK_ENABLE */ /* Check BANK_ENABLE */
if (bank & 0x01) { if (bank & 0x01) {
static unsigned long size[] __initdata = { static unsigned long size[] __initdata = {
0x40000000UL, /* 0x00, 1G */ 0x40000000UL, /* 0x00, 1G */
0x20000000UL, /* 0x02, 512M */ 0x20000000UL, /* 0x02, 512M */
0x10000000UL, /* 0x04, 256M */ 0x10000000UL, /* 0x04, 256M */
0x08000000UL, /* 0x06, 128M */ 0x08000000UL, /* 0x06, 128M */
@ -203,7 +203,7 @@ ruffian_get_bank_size(unsigned long offset)
}; };
bank = (bank & 0x1e) >> 1; bank = (bank & 0x1e) >> 1;
if (bank < sizeof(size)/sizeof(*size)) if (bank < ARRAY_SIZE(size))
ret = size[bank]; ret = size[bank];
} }

View File

@ -233,7 +233,7 @@ validate_cc_value(unsigned long cc)
index = cpu->type & 0xffffffff; index = cpu->type & 0xffffffff;
/* If index out of bounds, no way to validate. */ /* If index out of bounds, no way to validate. */
if (index >= sizeof(cpu_hz)/sizeof(cpu_hz[0])) if (index >= ARRAY_SIZE(cpu_hz))
return cc; return cc;
/* If index contains no data, no way to validate. */ /* If index contains no data, no way to validate. */

View File

@ -95,7 +95,8 @@ static void gic_set_cpu(unsigned int irq, cpumask_t mask_val)
} }
#endif #endif
static struct irqchip gic_chip = { static struct irq_chip gic_chip = {
.name = "GIC",
.ack = gic_ack_irq, .ack = gic_ack_irq,
.mask = gic_mask_irq, .mask = gic_mask_irq,
.unmask = gic_unmask_irq, .unmask = gic_unmask_irq,

View File

@ -204,7 +204,8 @@ static void locomo_unmask_irq(unsigned int irq)
locomo_writel(r, mapbase + LOCOMO_ICR); locomo_writel(r, mapbase + LOCOMO_ICR);
} }
static struct irqchip locomo_chip = { static struct irq_chip locomo_chip = {
.name = "LOCOMO",
.ack = locomo_ack_irq, .ack = locomo_ack_irq,
.mask = locomo_mask_irq, .mask = locomo_mask_irq,
.unmask = locomo_unmask_irq, .unmask = locomo_unmask_irq,
@ -249,7 +250,8 @@ static void locomo_key_unmask_irq(unsigned int irq)
locomo_writel(r, mapbase + LOCOMO_KEYBOARD + LOCOMO_KIC); locomo_writel(r, mapbase + LOCOMO_KEYBOARD + LOCOMO_KIC);
} }
static struct irqchip locomo_key_chip = { static struct irq_chip locomo_key_chip = {
.name = "LOCOMO-key",
.ack = locomo_key_ack_irq, .ack = locomo_key_ack_irq,
.mask = locomo_key_mask_irq, .mask = locomo_key_mask_irq,
.unmask = locomo_key_unmask_irq, .unmask = locomo_key_unmask_irq,
@ -312,7 +314,8 @@ static void locomo_gpio_unmask_irq(unsigned int irq)
locomo_writel(r, mapbase + LOCOMO_GIE); locomo_writel(r, mapbase + LOCOMO_GIE);
} }
static struct irqchip locomo_gpio_chip = { static struct irq_chip locomo_gpio_chip = {
.name = "LOCOMO-gpio",
.ack = locomo_gpio_ack_irq, .ack = locomo_gpio_ack_irq,
.mask = locomo_gpio_mask_irq, .mask = locomo_gpio_mask_irq,
.unmask = locomo_gpio_unmask_irq, .unmask = locomo_gpio_unmask_irq,
@ -357,7 +360,8 @@ static void locomo_lt_unmask_irq(unsigned int irq)
locomo_writel(r, mapbase + LOCOMO_LTINT); locomo_writel(r, mapbase + LOCOMO_LTINT);
} }
static struct irqchip locomo_lt_chip = { static struct irq_chip locomo_lt_chip = {
.name = "LOCOMO-lt",
.ack = locomo_lt_ack_irq, .ack = locomo_lt_ack_irq,
.mask = locomo_lt_mask_irq, .mask = locomo_lt_mask_irq,
.unmask = locomo_lt_unmask_irq, .unmask = locomo_lt_unmask_irq,
@ -418,7 +422,8 @@ static void locomo_spi_unmask_irq(unsigned int irq)
locomo_writel(r, mapbase + LOCOMO_SPIIE); locomo_writel(r, mapbase + LOCOMO_SPIIE);
} }
static struct irqchip locomo_spi_chip = { static struct irq_chip locomo_spi_chip = {
.name = "LOCOMO-spi",
.ack = locomo_spi_ack_irq, .ack = locomo_spi_ack_irq,
.mask = locomo_spi_mask_irq, .mask = locomo_spi_mask_irq,
.unmask = locomo_spi_unmask_irq, .unmask = locomo_spi_unmask_irq,

View File

@ -272,7 +272,8 @@ static int sa1111_wake_lowirq(unsigned int irq, unsigned int on)
return 0; return 0;
} }
static struct irqchip sa1111_low_chip = { static struct irq_chip sa1111_low_chip = {
.name = "SA1111-l",
.ack = sa1111_ack_irq, .ack = sa1111_ack_irq,
.mask = sa1111_mask_lowirq, .mask = sa1111_mask_lowirq,
.unmask = sa1111_unmask_lowirq, .unmask = sa1111_unmask_lowirq,
@ -368,7 +369,8 @@ static int sa1111_wake_highirq(unsigned int irq, unsigned int on)
return 0; return 0;
} }
static struct irqchip sa1111_high_chip = { static struct irq_chip sa1111_high_chip = {
.name = "SA1111-h",
.ack = sa1111_ack_irq, .ack = sa1111_ack_irq,
.mask = sa1111_mask_highirq, .mask = sa1111_mask_highirq,
.unmask = sa1111_unmask_highirq, .unmask = sa1111_unmask_highirq,

View File

@ -39,7 +39,8 @@ static void vic_unmask_irq(unsigned int irq)
writel(1 << irq, base + VIC_INT_ENABLE); writel(1 << irq, base + VIC_INT_ENABLE);
} }
static struct irqchip vic_chip = { static struct irq_chip vic_chip = {
.name = "VIC",
.ack = vic_mask_irq, .ack = vic_mask_irq,
.mask = vic_mask_irq, .mask = vic_mask_irq,
.unmask = vic_unmask_irq, .unmask = vic_unmask_irq,

View File

@ -1,7 +1,7 @@
# #
# Automatically generated make config: don't edit # Automatically generated make config: don't edit
# Linux kernel version: 2.6.18-rc1 # Linux kernel version: 2.6.18-rc1-git9
# Sun Jul 9 15:21:30 2006 # Sat Jul 15 15:08:10 2006
# #
CONFIG_ARM=y CONFIG_ARM=y
CONFIG_MMU=y CONFIG_MMU=y
@ -30,6 +30,7 @@ CONFIG_SWAP=y
CONFIG_SYSVIPC=y CONFIG_SYSVIPC=y
# CONFIG_POSIX_MQUEUE is not set # CONFIG_POSIX_MQUEUE is not set
# CONFIG_BSD_PROCESS_ACCT is not set # CONFIG_BSD_PROCESS_ACCT is not set
# CONFIG_TASKSTATS is not set
CONFIG_SYSCTL=y CONFIG_SYSCTL=y
# CONFIG_AUDIT is not set # CONFIG_AUDIT is not set
CONFIG_IKCONFIG=y CONFIG_IKCONFIG=y
@ -749,7 +750,7 @@ CONFIG_VIDEO_V4L2=y
# USB support # USB support
# #
CONFIG_USB_ARCH_HAS_HCD=y CONFIG_USB_ARCH_HAS_HCD=y
# CONFIG_USB_ARCH_HAS_OHCI is not set CONFIG_USB_ARCH_HAS_OHCI=y
# CONFIG_USB_ARCH_HAS_EHCI is not set # CONFIG_USB_ARCH_HAS_EHCI is not set
CONFIG_USB=y CONFIG_USB=y
CONFIG_USB_DEBUG=y CONFIG_USB_DEBUG=y
@ -766,6 +767,9 @@ CONFIG_USB_DYNAMIC_MINORS=y
# USB Host Controller Drivers # USB Host Controller Drivers
# #
# CONFIG_USB_ISP116X_HCD is not set # CONFIG_USB_ISP116X_HCD is not set
CONFIG_USB_OHCI_HCD=y
# CONFIG_USB_OHCI_BIG_ENDIAN is not set
CONFIG_USB_OHCI_LITTLE_ENDIAN=y
# CONFIG_USB_SL811_HCD is not set # CONFIG_USB_SL811_HCD is not set
# #
@ -855,6 +859,7 @@ CONFIG_USB_SERIAL_CONSOLE=y
CONFIG_USB_SERIAL_PL2303=y CONFIG_USB_SERIAL_PL2303=y
# CONFIG_USB_SERIAL_HP4X is not set # CONFIG_USB_SERIAL_HP4X is not set
# CONFIG_USB_SERIAL_SAFE is not set # CONFIG_USB_SERIAL_SAFE is not set
# CONFIG_USB_SERIAL_SIERRAWIRELESS is not set
# CONFIG_USB_SERIAL_TI is not set # CONFIG_USB_SERIAL_TI is not set
# CONFIG_USB_SERIAL_CYBERJACK is not set # CONFIG_USB_SERIAL_CYBERJACK is not set
# CONFIG_USB_SERIAL_XIRCOM is not set # CONFIG_USB_SERIAL_XIRCOM is not set
@ -871,7 +876,7 @@ CONFIG_USB_SERIAL_PL2303=y
# CONFIG_USB_LEGOTOWER is not set # CONFIG_USB_LEGOTOWER is not set
# CONFIG_USB_LCD is not set # CONFIG_USB_LCD is not set
# CONFIG_USB_LED is not set # CONFIG_USB_LED is not set
# CONFIG_USB_CY7C63 is not set # CONFIG_USB_CYPRESS_CY7C63 is not set
# CONFIG_USB_CYTHERM is not set # CONFIG_USB_CYTHERM is not set
# CONFIG_USB_PHIDGETKIT is not set # CONFIG_USB_PHIDGETKIT is not set
# CONFIG_USB_PHIDGETSERVO is not set # CONFIG_USB_PHIDGETSERVO is not set
@ -916,6 +921,7 @@ CONFIG_RTC_INTF_DEV=y
# CONFIG_RTC_DRV_X1205 is not set # CONFIG_RTC_DRV_X1205 is not set
# CONFIG_RTC_DRV_DS1307 is not set # CONFIG_RTC_DRV_DS1307 is not set
# CONFIG_RTC_DRV_DS1553 is not set # CONFIG_RTC_DRV_DS1553 is not set
# CONFIG_RTC_DRV_ISL1208 is not set
# CONFIG_RTC_DRV_DS1672 is not set # CONFIG_RTC_DRV_DS1672 is not set
# CONFIG_RTC_DRV_DS1742 is not set # CONFIG_RTC_DRV_DS1742 is not set
# CONFIG_RTC_DRV_PCF8563 is not set # CONFIG_RTC_DRV_PCF8563 is not set
@ -1023,7 +1029,6 @@ CONFIG_SUNRPC=y
# CONFIG_RPCSEC_GSS_SPKM3 is not set # CONFIG_RPCSEC_GSS_SPKM3 is not set
# CONFIG_SMB_FS is not set # CONFIG_SMB_FS is not set
# CONFIG_CIFS is not set # CONFIG_CIFS is not set
# CONFIG_CIFS_DEBUG2 is not set
# CONFIG_NCP_FS is not set # CONFIG_NCP_FS is not set
# CONFIG_CODA_FS is not set # CONFIG_CODA_FS is not set
# CONFIG_AFS_FS is not set # CONFIG_AFS_FS is not set

View File

@ -470,7 +470,8 @@ static void ecard_irq_mask(unsigned int irqnr)
} }
} }
static struct irqchip ecard_chip = { static struct irq_chip ecard_chip = {
.name = "ECARD",
.ack = ecard_irq_mask, .ack = ecard_irq_mask,
.mask = ecard_irq_mask, .mask = ecard_irq_mask,
.unmask = ecard_irq_unmask, .unmask = ecard_irq_unmask,

View File

@ -114,9 +114,9 @@ ENTRY(secondary_startup)
* Use the page tables supplied from __cpu_up. * Use the page tables supplied from __cpu_up.
*/ */
adr r4, __secondary_data adr r4, __secondary_data
ldmia r4, {r5, r6, r13} @ address to jump to after ldmia r4, {r5, r7, r13} @ address to jump to after
sub r4, r4, r5 @ mmu has been enabled sub r4, r4, r5 @ mmu has been enabled
ldr r4, [r6, r4] @ get secondary_data.pgdir ldr r4, [r7, r4] @ get secondary_data.pgdir
adr lr, __enable_mmu @ return address adr lr, __enable_mmu @ return address
add pc, r10, #12 @ initialise processor add pc, r10, #12 @ initialise processor
@ (return control reg) @ (return control reg)
@ -125,7 +125,7 @@ ENTRY(secondary_startup)
* r6 = &secondary_data * r6 = &secondary_data
*/ */
ENTRY(__secondary_switched) ENTRY(__secondary_switched)
ldr sp, [r6, #4] @ get secondary_data.stack ldr sp, [r7, #4] @ get secondary_data.stack
mov fp, #0 mov fp, #0
b secondary_start_kernel b secondary_start_kernel

View File

@ -77,6 +77,7 @@ int show_interrupts(struct seq_file *p, void *v)
seq_printf(p, "%3d: ", i); seq_printf(p, "%3d: ", i);
for_each_present_cpu(cpu) for_each_present_cpu(cpu)
seq_printf(p, "%10u ", kstat_cpu(cpu).irqs[i]); seq_printf(p, "%10u ", kstat_cpu(cpu).irqs[i]);
seq_printf(p, " %10s", irq_desc[i].chip->name ? : "-");
seq_printf(p, " %s", action->name); seq_printf(p, " %s", action->name);
for (action = action->next; action; action = action->next) for (action = action->next; action; action = action->next)
seq_printf(p, ", %s", action->name); seq_printf(p, ", %s", action->name);

View File

@ -232,11 +232,8 @@ NORET_TYPE void die(const char *str, struct pt_regs *regs, int err)
bust_spinlocks(0); bust_spinlocks(0);
spin_unlock_irq(&die_lock); spin_unlock_irq(&die_lock);
if (panic_on_oops) { if (panic_on_oops)
printk(KERN_EMERG "Fatal exception: panic in 5 seconds\n"); panic("Fatal exception: panic_on_oops");
ssleep(5);
panic("Fatal exception");
}
do_exit(SIGSEGV); do_exit(SIGSEGV);
} }

View File

@ -327,7 +327,8 @@ static int gpio_irq_type(unsigned pin, unsigned type)
return (type == IRQT_BOTHEDGE) ? 0 : -EINVAL; return (type == IRQT_BOTHEDGE) ? 0 : -EINVAL;
} }
static struct irqchip gpio_irqchip = { static struct irq_chip gpio_irqchip = {
.name = "GPIO",
.mask = gpio_irq_mask, .mask = gpio_irq_mask,
.unmask = gpio_irq_unmask, .unmask = gpio_irq_unmask,
.set_type = gpio_irq_type, .set_type = gpio_irq_type,

View File

@ -114,7 +114,8 @@ void at91_irq_resume(void)
#define at91_aic_set_wake NULL #define at91_aic_set_wake NULL
#endif #endif
static struct irqchip at91_aic_chip = { static struct irq_chip at91_aic_chip = {
.name = "AIC",
.ack = at91_aic_mask_irq, .ack = at91_aic_mask_irq,
.mask = at91_aic_mask_irq, .mask = at91_aic_mask_irq,
.unmask = at91_aic_unmask_irq, .unmask = at91_aic_unmask_irq,

View File

@ -8,7 +8,7 @@
#include <linux/ioport.h> #include <linux/ioport.h>
#include <linux/kernel.h> #include <linux/kernel.h>
#include <linux/init.h> #include <linux/init.h>
#include <linux/tty.h> #include <linux/screen_info.h>
#include <asm/hardware/dec21285.h> #include <asm/hardware/dec21285.h>
#include <asm/io.h> #include <asm/io.h>

View File

@ -204,13 +204,15 @@ imx_gpiod_demux_handler(unsigned int irq_unused, struct irqdesc *desc,
imx_gpio_handler(mask, irq, desc, regs); imx_gpio_handler(mask, irq, desc, regs);
} }
static struct irqchip imx_internal_chip = { static struct irq_chip imx_internal_chip = {
.name = "MPU",
.ack = imx_mask_irq, .ack = imx_mask_irq,
.mask = imx_mask_irq, .mask = imx_mask_irq,
.unmask = imx_unmask_irq, .unmask = imx_unmask_irq,
}; };
static struct irqchip imx_gpio_chip = { static struct irq_chip imx_gpio_chip = {
.name = "GPIO",
.ack = imx_gpio_ack_irq, .ack = imx_gpio_ack_irq,
.mask = imx_gpio_mask_irq, .mask = imx_gpio_mask_irq,
.unmask = imx_gpio_unmask_irq, .unmask = imx_gpio_unmask_irq,

View File

@ -161,7 +161,8 @@ static void sc_unmask_irq(unsigned int irq)
writel(1 << irq, VA_IC_BASE + IRQ_ENABLE_SET); writel(1 << irq, VA_IC_BASE + IRQ_ENABLE_SET);
} }
static struct irqchip sc_chip = { static struct irq_chip sc_chip = {
.name = "SC",
.ack = sc_mask_irq, .ack = sc_mask_irq,
.mask = sc_mask_irq, .mask = sc_mask_irq,
.unmask = sc_unmask_irq, .unmask = sc_unmask_irq,

View File

@ -156,7 +156,8 @@ static void cic_unmask_irq(unsigned int irq)
cic_writel(1 << irq, INTCP_VA_CIC_BASE + IRQ_ENABLE_SET); cic_writel(1 << irq, INTCP_VA_CIC_BASE + IRQ_ENABLE_SET);
} }
static struct irqchip cic_chip = { static struct irq_chip cic_chip = {
.name = "CIC",
.ack = cic_mask_irq, .ack = cic_mask_irq,
.mask = cic_mask_irq, .mask = cic_mask_irq,
.unmask = cic_unmask_irq, .unmask = cic_unmask_irq,
@ -174,7 +175,8 @@ static void pic_unmask_irq(unsigned int irq)
pic_writel(1 << irq, INTCP_VA_PIC_BASE + IRQ_ENABLE_SET); pic_writel(1 << irq, INTCP_VA_PIC_BASE + IRQ_ENABLE_SET);
} }
static struct irqchip pic_chip = { static struct irq_chip pic_chip = {
.name = "PIC",
.ack = pic_mask_irq, .ack = pic_mask_irq,
.mask = pic_mask_irq, .mask = pic_mask_irq,
.unmask = pic_unmask_irq, .unmask = pic_unmask_irq,
@ -192,7 +194,8 @@ static void sic_unmask_irq(unsigned int irq)
sic_writel(1 << irq, INTCP_VA_SIC_BASE + IRQ_ENABLE_SET); sic_writel(1 << irq, INTCP_VA_SIC_BASE + IRQ_ENABLE_SET);
} }
static struct irqchip sic_chip = { static struct irq_chip sic_chip = {
.name = "SIC",
.ack = sic_mask_irq, .ack = sic_mask_irq,
.mask = sic_mask_irq, .mask = sic_mask_irq,
.unmask = sic_unmask_irq, .unmask = sic_unmask_irq,

View File

@ -52,7 +52,8 @@ iop321_irq_unmask (unsigned int irq)
intctl_write(iop321_mask); intctl_write(iop321_mask);
} }
struct irqchip ext_chip = { struct irq_chip ext_chip = {
.name = "IOP",
.ack = iop321_irq_mask, .ack = iop321_irq_mask,
.mask = iop321_irq_mask, .mask = iop321_irq_mask,
.unmask = iop321_irq_unmask, .unmask = iop321_irq_unmask,

View File

@ -77,13 +77,15 @@ iop331_irq_unmask2(unsigned int irq)
intctl_write1(iop331_mask1); intctl_write1(iop331_mask1);
} }
struct irqchip iop331_irqchip1 = { struct irq_chip iop331_irqchip1 = {
.name = "IOP-1",
.ack = iop331_irq_mask1, .ack = iop331_irq_mask1,
.mask = iop331_irq_mask1, .mask = iop331_irq_mask1,
.unmask = iop331_irq_unmask1, .unmask = iop331_irq_unmask1,
}; };
struct irqchip iop331_irqchip2 = { struct irq_chip iop331_irqchip2 = {
.name = "IOP-2",
.ack = iop331_irq_mask2, .ack = iop331_irq_mask2,
.mask = iop331_irq_mask2, .mask = iop331_irq_mask2,
.unmask = iop331_irq_unmask2, .unmask = iop331_irq_unmask2,

View File

@ -63,7 +63,8 @@ static void kev7a400_unmask_cpld_irq (u32 irq)
CPLD_WR_PB_INT_MASK = CPLD_IRQ_mask; CPLD_WR_PB_INT_MASK = CPLD_IRQ_mask;
} }
static struct irqchip kev7a400_cpld_chip = { static struct irq_chip kev7a400_cpld_chip = {
.name = "CPLD",
.ack = kev7a400_ack_cpld_irq, .ack = kev7a400_ack_cpld_irq,
.mask = kev7a400_mask_cpld_irq, .mask = kev7a400_mask_cpld_irq,
.unmask = kev7a400_unmask_cpld_irq, .unmask = kev7a400_unmask_cpld_irq,

View File

@ -200,7 +200,8 @@ static void lh7a40x_unmask_cpld_irq (u32 irq)
} }
} }
static struct irqchip lpd7a40x_cpld_chip = { static struct irq_chip lpd7a40x_cpld_chip = {
.name = "CPLD",
.ack = lh7a40x_ack_cpld_irq, .ack = lh7a40x_ack_cpld_irq,
.mask = lh7a40x_mask_cpld_irq, .mask = lh7a40x_mask_cpld_irq,
.unmask = lh7a40x_unmask_cpld_irq, .unmask = lh7a40x_unmask_cpld_irq,

View File

@ -43,7 +43,8 @@ lh7a400_unmask_cpld_irq (u32 irq)
} }
static struct static struct
irqchip lh7a400_cpld_chip = { irq_chip lh7a400_cpld_chip = {
.name = "CPLD",
.ack = lh7a400_ack_cpld_irq, .ack = lh7a400_ack_cpld_irq,
.mask = lh7a400_mask_cpld_irq, .mask = lh7a400_mask_cpld_irq,
.unmask = lh7a400_unmask_cpld_irq, .unmask = lh7a400_unmask_cpld_irq,

View File

@ -38,13 +38,15 @@ static void lh7a400_ack_gpio_irq (u32 irq)
INTC_INTENC = (1 << irq); INTC_INTENC = (1 << irq);
} }
static struct irqchip lh7a400_internal_chip = { static struct irq_chip lh7a400_internal_chip = {
.name = "MPU",
.ack = lh7a400_mask_irq, /* Level triggering -> mask is ack */ .ack = lh7a400_mask_irq, /* Level triggering -> mask is ack */
.mask = lh7a400_mask_irq, .mask = lh7a400_mask_irq,
.unmask = lh7a400_unmask_irq, .unmask = lh7a400_unmask_irq,
}; };
static struct irqchip lh7a400_gpio_chip = { static struct irq_chip lh7a400_gpio_chip = {
.name = "GPIO",
.ack = lh7a400_ack_gpio_irq, .ack = lh7a400_ack_gpio_irq,
.mask = lh7a400_mask_irq, .mask = lh7a400_mask_irq,
.unmask = lh7a400_unmask_irq, .unmask = lh7a400_unmask_irq,

View File

@ -76,25 +76,29 @@ static void lh7a404_vic2_ack_gpio_irq (u32 irq)
VIC2_INTENCLR = (1 << irq); VIC2_INTENCLR = (1 << irq);
} }
static struct irqchip lh7a404_vic1_chip = { static struct irq_chip lh7a404_vic1_chip = {
.name = "VIC1",
.ack = lh7a404_vic1_mask_irq, /* Because level-triggered */ .ack = lh7a404_vic1_mask_irq, /* Because level-triggered */
.mask = lh7a404_vic1_mask_irq, .mask = lh7a404_vic1_mask_irq,
.unmask = lh7a404_vic1_unmask_irq, .unmask = lh7a404_vic1_unmask_irq,
}; };
static struct irqchip lh7a404_vic2_chip = { static struct irq_chip lh7a404_vic2_chip = {
.name = "VIC2",
.ack = lh7a404_vic2_mask_irq, /* Because level-triggered */ .ack = lh7a404_vic2_mask_irq, /* Because level-triggered */
.mask = lh7a404_vic2_mask_irq, .mask = lh7a404_vic2_mask_irq,
.unmask = lh7a404_vic2_unmask_irq, .unmask = lh7a404_vic2_unmask_irq,
}; };
static struct irqchip lh7a404_gpio_vic1_chip = { static struct irq_chip lh7a404_gpio_vic1_chip = {
.name = "GPIO-VIC1",
.ack = lh7a404_vic1_ack_gpio_irq, .ack = lh7a404_vic1_ack_gpio_irq,
.mask = lh7a404_vic1_mask_irq, .mask = lh7a404_vic1_mask_irq,
.unmask = lh7a404_vic1_unmask_irq, .unmask = lh7a404_vic1_unmask_irq,
}; };
static struct irqchip lh7a404_gpio_vic2_chip = { static struct irq_chip lh7a404_gpio_vic2_chip = {
.name = "GPIO-VIC2",
.ack = lh7a404_vic2_ack_gpio_irq, .ack = lh7a404_vic2_ack_gpio_irq,
.mask = lh7a404_vic2_mask_irq, .mask = lh7a404_vic2_mask_irq,
.unmask = lh7a404_vic2_unmask_irq, .unmask = lh7a404_vic2_unmask_irq,

View File

@ -50,7 +50,8 @@ static void lh7a40x_unmask_cpld_irq (u32 irq)
} }
} }
static struct irqchip lh7a40x_cpld_chip = { static struct irq_chip lh7a40x_cpld_chip = {
.name = "CPLD",
.ack = lh7a40x_ack_cpld_irq, .ack = lh7a40x_ack_cpld_irq,
.mask = lh7a40x_mask_cpld_irq, .mask = lh7a40x_mask_cpld_irq,
.unmask = lh7a40x_unmask_cpld_irq, .unmask = lh7a40x_unmask_cpld_irq,

View File

@ -106,14 +106,16 @@ void innovator_fpga_IRQ_demux(unsigned int irq, struct irqdesc *desc,
} }
} }
static struct irqchip omap_fpga_irq_ack = { static struct irq_chip omap_fpga_irq_ack = {
.name = "FPGA-ack",
.ack = fpga_mask_ack_irq, .ack = fpga_mask_ack_irq,
.mask = fpga_mask_irq, .mask = fpga_mask_irq,
.unmask = fpga_unmask_irq, .unmask = fpga_unmask_irq,
}; };
static struct irqchip omap_fpga_irq = { static struct irq_chip omap_fpga_irq = {
.name = "FPGA",
.ack = fpga_ack_irq, .ack = fpga_ack_irq,
.mask = fpga_mask_irq, .mask = fpga_mask_irq,
.unmask = fpga_unmask_irq, .unmask = fpga_unmask_irq,

View File

@ -168,7 +168,8 @@ static struct omap_irq_bank omap1610_irq_banks[] = {
}; };
#endif #endif
static struct irqchip omap_irq_chip = { static struct irq_chip omap_irq_chip = {
.name = "MPU",
.ack = omap_mask_ack_irq, .ack = omap_mask_ack_irq,
.mask = omap_mask_irq, .mask = omap_mask_irq,
.unmask = omap_unmask_irq, .unmask = omap_unmask_irq,

View File

@ -94,7 +94,8 @@ static void omap_mask_ack_irq(unsigned int irq)
omap_ack_irq(irq); omap_ack_irq(irq);
} }
static struct irqchip omap_irq_chip = { static struct irq_chip omap_irq_chip = {
.name = "INTC",
.ack = omap_mask_ack_irq, .ack = omap_mask_ack_irq,
.mask = omap_mask_irq, .mask = omap_mask_irq,
.unmask = omap_unmask_irq, .unmask = omap_unmask_irq,

View File

@ -39,7 +39,8 @@ static void pxa_unmask_low_irq(unsigned int irq)
ICMR |= (1 << (irq + PXA_IRQ_SKIP)); ICMR |= (1 << (irq + PXA_IRQ_SKIP));
} }
static struct irqchip pxa_internal_chip_low = { static struct irq_chip pxa_internal_chip_low = {
.name = "SC",
.ack = pxa_mask_low_irq, .ack = pxa_mask_low_irq,
.mask = pxa_mask_low_irq, .mask = pxa_mask_low_irq,
.unmask = pxa_unmask_low_irq, .unmask = pxa_unmask_low_irq,
@ -61,7 +62,8 @@ static void pxa_unmask_high_irq(unsigned int irq)
ICMR2 |= (1 << (irq - 32 + PXA_IRQ_SKIP)); ICMR2 |= (1 << (irq - 32 + PXA_IRQ_SKIP));
} }
static struct irqchip pxa_internal_chip_high = { static struct irq_chip pxa_internal_chip_high = {
.name = "SC-hi",
.ack = pxa_mask_high_irq, .ack = pxa_mask_high_irq,
.mask = pxa_mask_high_irq, .mask = pxa_mask_high_irq,
.unmask = pxa_unmask_high_irq, .unmask = pxa_unmask_high_irq,
@ -129,7 +131,8 @@ static void pxa_ack_low_gpio(unsigned int irq)
GEDR0 = (1 << (irq - IRQ_GPIO0)); GEDR0 = (1 << (irq - IRQ_GPIO0));
} }
static struct irqchip pxa_low_gpio_chip = { static struct irq_chip pxa_low_gpio_chip = {
.name = "GPIO-l",
.ack = pxa_ack_low_gpio, .ack = pxa_ack_low_gpio,
.mask = pxa_mask_low_irq, .mask = pxa_mask_low_irq,
.unmask = pxa_unmask_low_irq, .unmask = pxa_unmask_low_irq,
@ -237,7 +240,8 @@ static void pxa_unmask_muxed_gpio(unsigned int irq)
GFER(gpio) = GPIO_IRQ_falling_edge[idx] & GPIO_IRQ_mask[idx]; GFER(gpio) = GPIO_IRQ_falling_edge[idx] & GPIO_IRQ_mask[idx];
} }
static struct irqchip pxa_muxed_gpio_chip = { static struct irq_chip pxa_muxed_gpio_chip = {
.name = "GPIO",
.ack = pxa_ack_muxed_gpio, .ack = pxa_ack_muxed_gpio,
.mask = pxa_mask_muxed_gpio, .mask = pxa_mask_muxed_gpio,
.unmask = pxa_unmask_muxed_gpio, .unmask = pxa_unmask_muxed_gpio,

View File

@ -68,7 +68,8 @@ static void lpd270_unmask_irq(unsigned int irq)
__raw_writew(lpd270_irq_enabled, LPD270_INT_MASK); __raw_writew(lpd270_irq_enabled, LPD270_INT_MASK);
} }
static struct irqchip lpd270_irq_chip = { static struct irq_chip lpd270_irq_chip = {
.name = "CPLD",
.ack = lpd270_mask_irq, .ack = lpd270_mask_irq,
.mask = lpd270_mask_irq, .mask = lpd270_mask_irq,
.unmask = lpd270_unmask_irq, .unmask = lpd270_unmask_irq,

View File

@ -78,7 +78,8 @@ static void lubbock_unmask_irq(unsigned int irq)
LUB_IRQ_MASK_EN = (lubbock_irq_enabled |= (1 << lubbock_irq)); LUB_IRQ_MASK_EN = (lubbock_irq_enabled |= (1 << lubbock_irq));
} }
static struct irqchip lubbock_irq_chip = { static struct irq_chip lubbock_irq_chip = {
.name = "FPGA",
.ack = lubbock_mask_irq, .ack = lubbock_mask_irq,
.mask = lubbock_mask_irq, .mask = lubbock_mask_irq,
.unmask = lubbock_unmask_irq, .unmask = lubbock_unmask_irq,

View File

@ -64,7 +64,8 @@ static void mainstone_unmask_irq(unsigned int irq)
MST_INTMSKENA = (mainstone_irq_enabled |= (1 << mainstone_irq)); MST_INTMSKENA = (mainstone_irq_enabled |= (1 << mainstone_irq));
} }
static struct irqchip mainstone_irq_chip = { static struct irq_chip mainstone_irq_chip = {
.name = "FPGA",
.ack = mainstone_mask_irq, .ack = mainstone_mask_irq,
.mask = mainstone_mask_irq, .mask = mainstone_mask_irq,
.unmask = mainstone_unmask_irq, .unmask = mainstone_unmask_irq,

View File

@ -60,11 +60,12 @@ static struct map_desc anubis_iodesc[] __initdata = {
.virtual = (u32)S3C24XX_VA_ISA_BYTE, .virtual = (u32)S3C24XX_VA_ISA_BYTE,
.pfn = __phys_to_pfn(0x0), .pfn = __phys_to_pfn(0x0),
.length = SZ_4M, .length = SZ_4M,
.type = MT_DEVICE .type = MT_DEVICE,
}, { }, {
.virtual = (u32)S3C24XX_VA_ISA_WORD, .virtual = (u32)S3C24XX_VA_ISA_WORD,
.pfn = __phys_to_pfn(0x0), .pfn = __phys_to_pfn(0x0),
.length = SZ_4M, MT_DEVICE .length = SZ_4M,
.type = MT_DEVICE,
}, },
/* we could possibly compress the next set down into a set of smaller tables /* we could possibly compress the next set down into a set of smaller tables
@ -78,36 +79,12 @@ static struct map_desc anubis_iodesc[] __initdata = {
.virtual = (u32)ANUBIS_VA_CTRL1, .virtual = (u32)ANUBIS_VA_CTRL1,
.pfn = __phys_to_pfn(ANUBIS_PA_CTRL1), .pfn = __phys_to_pfn(ANUBIS_PA_CTRL1),
.length = SZ_4K, .length = SZ_4K,
.type = MT_DEVICE .type = MT_DEVICE,
}, { }, {
.virtual = (u32)ANUBIS_VA_CTRL2, .virtual = (u32)ANUBIS_VA_CTRL2,
.pfn = __phys_to_pfn(ANUBIS_PA_CTRL2), .pfn = __phys_to_pfn(ANUBIS_PA_CTRL2),
.length = SZ_4K, .length = SZ_4K,
.type =MT_DEVICE .type = MT_DEVICE,
},
/* IDE drives */
{
.virtual = (u32)ANUBIS_IDEPRI,
.pfn = __phys_to_pfn(S3C2410_CS3),
.length = SZ_1M,
.type = MT_DEVICE
}, {
.virtual = (u32)ANUBIS_IDEPRIAUX,
.pfn = __phys_to_pfn(S3C2410_CS3+(1<<26)),
.length = SZ_1M,
.type = MT_DEVICE
}, {
.virtual = (u32)ANUBIS_IDESEC,
.pfn = __phys_to_pfn(S3C2410_CS4),
.length = SZ_1M,
.type = MT_DEVICE
}, {
.virtual = (u32)ANUBIS_IDESECAUX,
.pfn = __phys_to_pfn(S3C2410_CS4+(1<<26)),
.length = SZ_1M,
.type = MT_DEVICE
}, },
}; };
@ -126,7 +103,7 @@ static struct s3c24xx_uart_clksrc anubis_serial_clocks[] = {
.name = "pclk", .name = "pclk",
.divisor = 1, .divisor = 1,
.min_baud = 0, .min_baud = 0,
.max_baud = 0. .max_baud = 0,
} }
}; };
@ -139,7 +116,7 @@ static struct s3c2410_uartcfg anubis_uartcfgs[] __initdata = {
.ulcon = ULCON, .ulcon = ULCON,
.ufcon = UFCON, .ufcon = UFCON,
.clocks = anubis_serial_clocks, .clocks = anubis_serial_clocks,
.clocks_size = ARRAY_SIZE(anubis_serial_clocks) .clocks_size = ARRAY_SIZE(anubis_serial_clocks),
}, },
[1] = { [1] = {
.hwport = 2, .hwport = 2,
@ -148,7 +125,7 @@ static struct s3c2410_uartcfg anubis_uartcfgs[] __initdata = {
.ulcon = ULCON, .ulcon = ULCON,
.ufcon = UFCON, .ufcon = UFCON,
.clocks = anubis_serial_clocks, .clocks = anubis_serial_clocks,
.clocks_size = ARRAY_SIZE(anubis_serial_clocks) .clocks_size = ARRAY_SIZE(anubis_serial_clocks),
}, },
}; };
@ -162,7 +139,7 @@ static struct mtd_partition anubis_default_nand_part[] = {
[0] = { [0] = {
.name = "Boot Agent", .name = "Boot Agent",
.size = SZ_16K, .size = SZ_16K,
.offset = 0 .offset = 0,
}, },
[1] = { [1] = {
.name = "/boot", .name = "/boot",
@ -194,21 +171,21 @@ static struct s3c2410_nand_set anubis_nand_sets[] = {
.nr_chips = 1, .nr_chips = 1,
.nr_map = external_map, .nr_map = external_map,
.nr_partitions = ARRAY_SIZE(anubis_default_nand_part), .nr_partitions = ARRAY_SIZE(anubis_default_nand_part),
.partitions = anubis_default_nand_part .partitions = anubis_default_nand_part,
}, },
[0] = { [0] = {
.name = "chip0", .name = "chip0",
.nr_chips = 1, .nr_chips = 1,
.nr_map = chip0_map, .nr_map = chip0_map,
.nr_partitions = ARRAY_SIZE(anubis_default_nand_part), .nr_partitions = ARRAY_SIZE(anubis_default_nand_part),
.partitions = anubis_default_nand_part .partitions = anubis_default_nand_part,
}, },
[2] = { [2] = {
.name = "chip1", .name = "chip1",
.nr_chips = 1, .nr_chips = 1,
.nr_map = chip1_map, .nr_map = chip1_map,
.nr_partitions = ARRAY_SIZE(anubis_default_nand_part), .nr_partitions = ARRAY_SIZE(anubis_default_nand_part),
.partitions = anubis_default_nand_part .partitions = anubis_default_nand_part,
}, },
}; };
@ -313,7 +290,7 @@ static struct s3c24xx_board anubis_board __initdata = {
.devices = anubis_devices, .devices = anubis_devices,
.devices_count = ARRAY_SIZE(anubis_devices), .devices_count = ARRAY_SIZE(anubis_devices),
.clocks = anubis_clocks, .clocks = anubis_clocks,
.clocks_count = ARRAY_SIZE(anubis_clocks) .clocks_count = ARRAY_SIZE(anubis_clocks),
}; };
static void __init anubis_map_io(void) static void __init anubis_map_io(void)

View File

@ -67,12 +67,12 @@ static struct map_desc osiris_iodesc[] __initdata = {
.virtual = (u32)OSIRIS_VA_CTRL1, .virtual = (u32)OSIRIS_VA_CTRL1,
.pfn = __phys_to_pfn(OSIRIS_PA_CTRL1), .pfn = __phys_to_pfn(OSIRIS_PA_CTRL1),
.length = SZ_16K, .length = SZ_16K,
.type = MT_DEVICE .type = MT_DEVICE,
}, { }, {
.virtual = (u32)OSIRIS_VA_CTRL2, .virtual = (u32)OSIRIS_VA_CTRL2,
.pfn = __phys_to_pfn(OSIRIS_PA_CTRL2), .pfn = __phys_to_pfn(OSIRIS_PA_CTRL2),
.length = SZ_16K, .length = SZ_16K,
.type = MT_DEVICE .type = MT_DEVICE,
}, },
}; };
@ -91,7 +91,7 @@ static struct s3c24xx_uart_clksrc osiris_serial_clocks[] = {
.name = "pclk", .name = "pclk",
.divisor = 1, .divisor = 1,
.min_baud = 0, .min_baud = 0,
.max_baud = 0. .max_baud = 0,
} }
}; };
@ -103,7 +103,7 @@ static struct s3c2410_uartcfg osiris_uartcfgs[] __initdata = {
.ulcon = ULCON, .ulcon = ULCON,
.ufcon = UFCON, .ufcon = UFCON,
.clocks = osiris_serial_clocks, .clocks = osiris_serial_clocks,
.clocks_size = ARRAY_SIZE(osiris_serial_clocks) .clocks_size = ARRAY_SIZE(osiris_serial_clocks),
}, },
[1] = { [1] = {
.hwport = 1, .hwport = 1,
@ -112,7 +112,7 @@ static struct s3c2410_uartcfg osiris_uartcfgs[] __initdata = {
.ulcon = ULCON, .ulcon = ULCON,
.ufcon = UFCON, .ufcon = UFCON,
.clocks = osiris_serial_clocks, .clocks = osiris_serial_clocks,
.clocks_size = ARRAY_SIZE(osiris_serial_clocks) .clocks_size = ARRAY_SIZE(osiris_serial_clocks),
}, },
}; };
@ -126,7 +126,7 @@ static struct mtd_partition osiris_default_nand_part[] = {
[0] = { [0] = {
.name = "Boot Agent", .name = "Boot Agent",
.size = SZ_16K, .size = SZ_16K,
.offset = 0 .offset = 0,
}, },
[1] = { [1] = {
.name = "/boot", .name = "/boot",
@ -158,21 +158,21 @@ static struct s3c2410_nand_set osiris_nand_sets[] = {
.nr_chips = 1, .nr_chips = 1,
.nr_map = external_map, .nr_map = external_map,
.nr_partitions = ARRAY_SIZE(osiris_default_nand_part), .nr_partitions = ARRAY_SIZE(osiris_default_nand_part),
.partitions = osiris_default_nand_part .partitions = osiris_default_nand_part,
}, },
[0] = { [0] = {
.name = "chip0", .name = "chip0",
.nr_chips = 1, .nr_chips = 1,
.nr_map = chip0_map, .nr_map = chip0_map,
.nr_partitions = ARRAY_SIZE(osiris_default_nand_part), .nr_partitions = ARRAY_SIZE(osiris_default_nand_part),
.partitions = osiris_default_nand_part .partitions = osiris_default_nand_part,
}, },
[2] = { [2] = {
.name = "chip1", .name = "chip1",
.nr_chips = 1, .nr_chips = 1,
.nr_map = chip1_map, .nr_map = chip1_map,
.nr_partitions = ARRAY_SIZE(osiris_default_nand_part), .nr_partitions = ARRAY_SIZE(osiris_default_nand_part),
.partitions = osiris_default_nand_part .partitions = osiris_default_nand_part,
}, },
}; };
@ -245,7 +245,7 @@ static struct s3c24xx_board osiris_board __initdata = {
.devices = osiris_devices, .devices = osiris_devices,
.devices_count = ARRAY_SIZE(osiris_devices), .devices_count = ARRAY_SIZE(osiris_devices),
.clocks = osiris_clocks, .clocks = osiris_clocks,
.clocks_count = ARRAY_SIZE(osiris_clocks) .clocks_count = ARRAY_SIZE(osiris_clocks),
}; };
static void __init osiris_map_io(void) static void __init osiris_map_io(void)

View File

@ -95,7 +95,8 @@ static int sa1100_low_gpio_wake(unsigned int irq, unsigned int on)
return 0; return 0;
} }
static struct irqchip sa1100_low_gpio_chip = { static struct irq_chip sa1100_low_gpio_chip = {
.name = "GPIO-l",
.ack = sa1100_low_gpio_ack, .ack = sa1100_low_gpio_ack,
.mask = sa1100_low_gpio_mask, .mask = sa1100_low_gpio_mask,
.unmask = sa1100_low_gpio_unmask, .unmask = sa1100_low_gpio_unmask,
@ -178,7 +179,8 @@ static int sa1100_high_gpio_wake(unsigned int irq, unsigned int on)
return 0; return 0;
} }
static struct irqchip sa1100_high_gpio_chip = { static struct irq_chip sa1100_high_gpio_chip = {
.name = "GPIO-h",
.ack = sa1100_high_gpio_ack, .ack = sa1100_high_gpio_ack,
.mask = sa1100_high_gpio_mask, .mask = sa1100_high_gpio_mask,
.unmask = sa1100_high_gpio_unmask, .unmask = sa1100_high_gpio_unmask,
@ -215,7 +217,8 @@ static int sa1100_set_wake(unsigned int irq, unsigned int on)
return -EINVAL; return -EINVAL;
} }
static struct irqchip sa1100_normal_chip = { static struct irq_chip sa1100_normal_chip = {
.name = "SC",
.ack = sa1100_mask_irq, .ack = sa1100_mask_irq,
.mask = sa1100_mask_irq, .mask = sa1100_mask_irq,
.unmask = sa1100_unmask_irq, .unmask = sa1100_unmask_irq,

View File

@ -69,7 +69,8 @@ static irqreturn_t bogus_int(int irq, void *dev_id, struct pt_regs *regs)
static struct irqaction cascade; static struct irqaction cascade;
static struct irqchip fb_chip = { static struct irq_chip fb_chip = {
.name = "XT-PIC",
.ack = shark_ack_8259A_irq, .ack = shark_ack_8259A_irq,
.mask = shark_disable_8259A_irq, .mask = shark_disable_8259A_irq,
.unmask = shark_enable_8259A_irq, .unmask = shark_enable_8259A_irq,

View File

@ -69,7 +69,8 @@ static void sic_unmask_irq(unsigned int irq)
writel(1 << irq, VA_SIC_BASE + SIC_IRQ_ENABLE_SET); writel(1 << irq, VA_SIC_BASE + SIC_IRQ_ENABLE_SET);
} }
static struct irqchip sic_chip = { static struct irq_chip sic_chip = {
.name = "SIC",
.ack = sic_mask_irq, .ack = sic_mask_irq,
.mask = sic_mask_irq, .mask = sic_mask_irq,
.unmask = sic_unmask_irq, .unmask = sic_unmask_irq,

View File

@ -363,7 +363,9 @@ EXPORT_SYMBOL(__ioremap);
void __iounmap(void __iomem *addr) void __iounmap(void __iomem *addr)
{ {
#ifndef CONFIG_SMP
struct vm_struct **p, *tmp; struct vm_struct **p, *tmp;
#endif
unsigned int section_mapping = 0; unsigned int section_mapping = 0;
addr = (void __iomem *)(PAGE_MASK & (unsigned long)addr); addr = (void __iomem *)(PAGE_MASK & (unsigned long)addr);

View File

@ -13,6 +13,7 @@
#include <asm/cacheflush.h> #include <asm/cacheflush.h>
#include <asm/proc-fns.h> #include <asm/proc-fns.h>
#include <asm/tlbflush.h> #include <asm/tlbflush.h>
#include <asm/page.h>
#ifndef MULTI_CPU #ifndef MULTI_CPU
EXPORT_SYMBOL(cpu_dcache_clean_area); EXPORT_SYMBOL(cpu_dcache_clean_area);
@ -30,6 +31,13 @@ EXPORT_SYMBOL(__cpuc_coherent_kern_range);
EXPORT_SYMBOL(cpu_cache); EXPORT_SYMBOL(cpu_cache);
#endif #endif
#ifndef MULTI_USER
EXPORT_SYMBOL(__cpu_clear_user_page);
EXPORT_SYMBOL(__cpu_copy_user_page);
#else
EXPORT_SYMBOL(cpu_user);
#endif
/* /*
* No module should need to touch the TLB (and currently * No module should need to touch the TLB (and currently
* no modules do. We export this for "loadkernel" support * no modules do. We export this for "loadkernel" support

View File

@ -536,6 +536,11 @@ cpu_80200_name:
.asciz "XScale-80200" .asciz "XScale-80200"
.size cpu_80200_name, . - cpu_80200_name .size cpu_80200_name, . - cpu_80200_name
.type cpu_80219_name, #object
cpu_80219_name:
.asciz "XScale-80219"
.size cpu_80219_name, . - cpu_80219_name
.type cpu_8032x_name, #object .type cpu_8032x_name, #object
cpu_8032x_name: cpu_8032x_name:
.asciz "XScale-IOP8032x Family" .asciz "XScale-IOP8032x Family"
@ -613,10 +618,33 @@ __80200_proc_info:
.long xscale_cache_fns .long xscale_cache_fns
.size __80200_proc_info, . - __80200_proc_info .size __80200_proc_info, . - __80200_proc_info
.type __80219_proc_info,#object
__80219_proc_info:
.long 0x69052e20
.long 0xffffffe0
.long PMD_TYPE_SECT | \
PMD_SECT_BUFFERABLE | \
PMD_SECT_CACHEABLE | \
PMD_SECT_AP_WRITE | \
PMD_SECT_AP_READ
.long PMD_TYPE_SECT | \
PMD_SECT_AP_WRITE | \
PMD_SECT_AP_READ
b __xscale_setup
.long cpu_arch_name
.long cpu_elf_name
.long HWCAP_SWP|HWCAP_HALF|HWCAP_THUMB|HWCAP_FAST_MULT|HWCAP_EDSP
.long cpu_80219_name
.long xscale_processor_functions
.long v4wbi_tlb_fns
.long xscale_mc_user_fns
.long xscale_cache_fns
.size __80219_proc_info, . - __80219_proc_info
.type __8032x_proc_info,#object .type __8032x_proc_info,#object
__8032x_proc_info: __8032x_proc_info:
.long 0x69052420 .long 0x69052420
.long 0xfffff5e0 @ mask should accomodate IOP80219 also .long 0xffffffe0
.long PMD_TYPE_SECT | \ .long PMD_TYPE_SECT | \
PMD_SECT_BUFFERABLE | \ PMD_SECT_BUFFERABLE | \
PMD_SECT_CACHEABLE | \ PMD_SECT_CACHEABLE | \

View File

@ -944,7 +944,8 @@ static void mpuio_unmask_irq(unsigned int irq)
_set_gpio_irqenable(bank, gpio, 1); _set_gpio_irqenable(bank, gpio, 1);
} }
static struct irqchip gpio_irq_chip = { static struct irq_chip gpio_irq_chip = {
.name = "GPIO",
.ack = gpio_ack_irq, .ack = gpio_ack_irq,
.mask = gpio_mask_irq, .mask = gpio_mask_irq,
.unmask = gpio_unmask_irq, .unmask = gpio_unmask_irq,
@ -952,10 +953,11 @@ static struct irqchip gpio_irq_chip = {
.set_wake = gpio_wake_enable, .set_wake = gpio_wake_enable,
}; };
static struct irqchip mpuio_irq_chip = { static struct irq_chip mpuio_irq_chip = {
.name = "MPUIO",
.ack = mpuio_ack_irq, .ack = mpuio_ack_irq,
.mask = mpuio_mask_irq, .mask = mpuio_mask_irq,
.unmask = mpuio_unmask_irq .unmask = mpuio_unmask_irq
}; };
static int initialized; static int initialized;

View File

@ -672,7 +672,7 @@ config MTRR
See <file:Documentation/mtrr.txt> for more information. See <file:Documentation/mtrr.txt> for more information.
config EFI config EFI
bool "Boot from EFI support (EXPERIMENTAL)" bool "Boot from EFI support"
depends on ACPI depends on ACPI
default n default n
---help--- ---help---

View File

@ -59,7 +59,8 @@ quiet_cmd_syscall = SYSCALL $@
export CPPFLAGS_vsyscall.lds += -P -C -U$(ARCH) export CPPFLAGS_vsyscall.lds += -P -C -U$(ARCH)
vsyscall-flags = -shared -s -Wl,-soname=linux-gate.so.1 vsyscall-flags = -shared -s -Wl,-soname=linux-gate.so.1 \
$(call ld-option, -Wl$(comma)--hash-style=sysv)
SYSCFLAGS_vsyscall-sysenter.so = $(vsyscall-flags) SYSCFLAGS_vsyscall-sysenter.so = $(vsyscall-flags)
SYSCFLAGS_vsyscall-int80.so = $(vsyscall-flags) SYSCFLAGS_vsyscall-int80.so = $(vsyscall-flags)

View File

@ -96,6 +96,7 @@ config X86_POWERNOW_K8_ACPI
config X86_GX_SUSPMOD config X86_GX_SUSPMOD
tristate "Cyrix MediaGX/NatSemi Geode Suspend Modulation" tristate "Cyrix MediaGX/NatSemi Geode Suspend Modulation"
depends on PCI
help help
This add the CPUFreq driver for NatSemi Geode processors which This add the CPUFreq driver for NatSemi Geode processors which
support suspend modulation. support suspend modulation.
@ -202,7 +203,7 @@ config X86_LONGRUN
config X86_LONGHAUL config X86_LONGHAUL
tristate "VIA Cyrix III Longhaul" tristate "VIA Cyrix III Longhaul"
select CPU_FREQ_TABLE select CPU_FREQ_TABLE
depends on BROKEN depends on ACPI_PROCESSOR
help help
This adds the CPUFreq driver for VIA Samuel/CyrixIII, This adds the CPUFreq driver for VIA Samuel/CyrixIII,
VIA Cyrix Samuel/C3, VIA Cyrix Ezra and VIA Cyrix Ezra-T VIA Cyrix Samuel/C3, VIA Cyrix Ezra and VIA Cyrix Ezra-T

View File

@ -384,8 +384,7 @@ static int acpi_cpufreq_early_init_acpi(void)
} }
/* Do initialization in ACPI core */ /* Do initialization in ACPI core */
acpi_processor_preregister_performance(acpi_perf_data); return acpi_processor_preregister_performance(acpi_perf_data);
return 0;
} }
static int static int

View File

@ -29,11 +29,13 @@
#include <linux/cpufreq.h> #include <linux/cpufreq.h>
#include <linux/slab.h> #include <linux/slab.h>
#include <linux/string.h> #include <linux/string.h>
#include <linux/pci.h>
#include <asm/msr.h> #include <asm/msr.h>
#include <asm/timex.h> #include <asm/timex.h>
#include <asm/io.h> #include <asm/io.h>
#include <asm/acpi.h>
#include <linux/acpi.h>
#include <acpi/processor.h>
#include "longhaul.h" #include "longhaul.h"
@ -56,6 +58,8 @@ static int minvid, maxvid;
static unsigned int minmult, maxmult; static unsigned int minmult, maxmult;
static int can_scale_voltage; static int can_scale_voltage;
static int vrmrev; static int vrmrev;
static struct acpi_processor *pr = NULL;
static struct acpi_processor_cx *cx = NULL;
/* Module parameters */ /* Module parameters */
static int dont_scale_voltage; static int dont_scale_voltage;
@ -118,84 +122,65 @@ static int longhaul_get_cpu_mult(void)
return eblcr_table[invalue]; return eblcr_table[invalue];
} }
/* For processor with BCR2 MSR */
static void do_powersaver(union msr_longhaul *longhaul, static void do_longhaul1(int cx_address, unsigned int clock_ratio_index)
unsigned int clock_ratio_index)
{ {
struct pci_dev *dev; union msr_bcr2 bcr2;
unsigned long flags; u32 t;
unsigned int tmp_mask;
int version;
int i;
u16 pci_cmd;
u16 cmd_state[64];
switch (cpu_model) { rdmsrl(MSR_VIA_BCR2, bcr2.val);
case CPU_EZRA_T: /* Enable software clock multiplier */
version = 3; bcr2.bits.ESOFTBF = 1;
break; bcr2.bits.CLOCKMUL = clock_ratio_index;
case CPU_NEHEMIAH:
version = 0xf;
break;
default:
return;
}
rdmsrl(MSR_VIA_LONGHAUL, longhaul->val);
longhaul->bits.SoftBusRatio = clock_ratio_index & 0xf;
longhaul->bits.SoftBusRatio4 = (clock_ratio_index & 0x10) >> 4;
longhaul->bits.EnableSoftBusRatio = 1;
longhaul->bits.RevisionKey = 0;
preempt_disable();
local_irq_save(flags);
/*
* get current pci bus master state for all devices
* and clear bus master bit
*/
dev = NULL;
i = 0;
do {
dev = pci_get_device(PCI_ANY_ID, PCI_ANY_ID, dev);
if (dev != NULL) {
pci_read_config_word(dev, PCI_COMMAND, &pci_cmd);
cmd_state[i++] = pci_cmd;
pci_cmd &= ~PCI_COMMAND_MASTER;
pci_write_config_word(dev, PCI_COMMAND, pci_cmd);
}
} while (dev != NULL);
tmp_mask=inb(0x21); /* works on C3. save mask. */
outb(0xFE,0x21); /* TMR0 only */
outb(0xFF,0x80); /* delay */
/* Sync to timer tick */
safe_halt(); safe_halt();
wrmsrl(MSR_VIA_LONGHAUL, longhaul->val); ACPI_FLUSH_CPU_CACHE();
halt(); /* Change frequency on next halt or sleep */
wrmsrl(MSR_VIA_BCR2, bcr2.val);
/* Invoke C3 */
inb(cx_address);
/* Dummy op - must do something useless after P_LVL3 read */
t = inl(acpi_fadt.xpm_tmr_blk.address);
/* Disable software clock multiplier */
local_irq_disable(); local_irq_disable();
rdmsrl(MSR_VIA_BCR2, bcr2.val);
bcr2.bits.ESOFTBF = 0;
wrmsrl(MSR_VIA_BCR2, bcr2.val);
}
outb(tmp_mask,0x21); /* restore mask */ /* For processor with Longhaul MSR */
/* restore pci bus master state for all devices */ static void do_powersaver(int cx_address, unsigned int clock_ratio_index)
dev = NULL; {
i = 0; union msr_longhaul longhaul;
do { u32 t;
dev = pci_get_device(PCI_ANY_ID, PCI_ANY_ID, dev);
if (dev != NULL) {
pci_cmd = cmd_state[i++];
pci_write_config_byte(dev, PCI_COMMAND, pci_cmd);
}
} while (dev != NULL);
local_irq_restore(flags);
preempt_enable();
/* disable bus ratio bit */ rdmsrl(MSR_VIA_LONGHAUL, longhaul.val);
rdmsrl(MSR_VIA_LONGHAUL, longhaul->val); longhaul.bits.RevisionKey = longhaul.bits.RevisionID;
longhaul->bits.EnableSoftBusRatio = 0; longhaul.bits.SoftBusRatio = clock_ratio_index & 0xf;
longhaul->bits.RevisionKey = version; longhaul.bits.SoftBusRatio4 = (clock_ratio_index & 0x10) >> 4;
wrmsrl(MSR_VIA_LONGHAUL, longhaul->val); longhaul.bits.EnableSoftBusRatio = 1;
/* Sync to timer tick */
safe_halt();
ACPI_FLUSH_CPU_CACHE();
/* Change frequency on next halt or sleep */
wrmsrl(MSR_VIA_LONGHAUL, longhaul.val);
/* Invoke C3 */
inb(cx_address);
/* Dummy op - must do something useless after P_LVL3 read */
t = inl(acpi_fadt.xpm_tmr_blk.address);
/* Disable bus ratio bit */
local_irq_disable();
longhaul.bits.RevisionKey = longhaul.bits.RevisionID;
longhaul.bits.EnableSoftBusRatio = 0;
longhaul.bits.EnableSoftBSEL = 0;
longhaul.bits.EnableSoftVID = 0;
wrmsrl(MSR_VIA_LONGHAUL, longhaul.val);
} }
/** /**
@ -209,9 +194,9 @@ static void longhaul_setstate(unsigned int clock_ratio_index)
{ {
int speed, mult; int speed, mult;
struct cpufreq_freqs freqs; struct cpufreq_freqs freqs;
union msr_longhaul longhaul;
union msr_bcr2 bcr2;
static unsigned int old_ratio=-1; static unsigned int old_ratio=-1;
unsigned long flags;
unsigned int pic1_mask, pic2_mask;
if (old_ratio == clock_ratio_index) if (old_ratio == clock_ratio_index)
return; return;
@ -234,6 +219,20 @@ static void longhaul_setstate(unsigned int clock_ratio_index)
dprintk ("Setting to FSB:%dMHz Mult:%d.%dx (%s)\n", dprintk ("Setting to FSB:%dMHz Mult:%d.%dx (%s)\n",
fsb, mult/10, mult%10, print_speed(speed/1000)); fsb, mult/10, mult%10, print_speed(speed/1000));
preempt_disable();
local_irq_save(flags);
pic2_mask = inb(0xA1);
pic1_mask = inb(0x21); /* works on C3. save mask. */
outb(0xFF,0xA1); /* Overkill */
outb(0xFE,0x21); /* TMR0 only */
/* Disable bus master arbitration */
if (pr->flags.bm_check) {
acpi_set_register(ACPI_BITREG_ARB_DISABLE, 1,
ACPI_MTX_DO_NOT_LOCK);
}
switch (longhaul_version) { switch (longhaul_version) {
/* /*
@ -245,20 +244,7 @@ static void longhaul_setstate(unsigned int clock_ratio_index)
*/ */
case TYPE_LONGHAUL_V1: case TYPE_LONGHAUL_V1:
case TYPE_LONGHAUL_V2: case TYPE_LONGHAUL_V2:
rdmsrl (MSR_VIA_BCR2, bcr2.val); do_longhaul1(cx->address, clock_ratio_index);
/* Enable software clock multiplier */
bcr2.bits.ESOFTBF = 1;
bcr2.bits.CLOCKMUL = clock_ratio_index;
local_irq_disable();
wrmsrl (MSR_VIA_BCR2, bcr2.val);
safe_halt();
/* Disable software clock multiplier */
rdmsrl (MSR_VIA_BCR2, bcr2.val);
bcr2.bits.ESOFTBF = 0;
local_irq_disable();
wrmsrl (MSR_VIA_BCR2, bcr2.val);
local_irq_enable();
break; break;
/* /*
@ -273,10 +259,22 @@ static void longhaul_setstate(unsigned int clock_ratio_index)
* to work in practice. * to work in practice.
*/ */
case TYPE_POWERSAVER: case TYPE_POWERSAVER:
do_powersaver(&longhaul, clock_ratio_index); do_powersaver(cx->address, clock_ratio_index);
break; break;
} }
/* Enable bus master arbitration */
if (pr->flags.bm_check) {
acpi_set_register(ACPI_BITREG_ARB_DISABLE, 0,
ACPI_MTX_DO_NOT_LOCK);
}
outb(pic2_mask,0xA1); /* restore mask */
outb(pic1_mask,0x21);
local_irq_restore(flags);
preempt_enable();
cpufreq_notify_transition(&freqs, CPUFREQ_POSTCHANGE); cpufreq_notify_transition(&freqs, CPUFREQ_POSTCHANGE);
} }
@ -324,9 +322,11 @@ static int guess_fsb(void)
static int __init longhaul_get_ranges(void) static int __init longhaul_get_ranges(void)
{ {
unsigned long invalue; unsigned long invalue;
unsigned int multipliers[32]= { unsigned int ezra_t_multipliers[32]= {
50,30,40,100,55,35,45,95,90,70,80,60,120,75,85,65, 90, 30, 40, 100, 55, 35, 45, 95,
-1,110,120,-1,135,115,125,105,130,150,160,140,-1,155,-1,145 }; 50, 70, 80, 60, 120, 75, 85, 65,
-1, 110, 120, -1, 135, 115, 125, 105,
130, 150, 160, 140, -1, 155, -1, 145 };
unsigned int j, k = 0; unsigned int j, k = 0;
union msr_longhaul longhaul; union msr_longhaul longhaul;
unsigned long lo, hi; unsigned long lo, hi;
@ -355,13 +355,13 @@ static int __init longhaul_get_ranges(void)
invalue = longhaul.bits.MaxMHzBR; invalue = longhaul.bits.MaxMHzBR;
if (longhaul.bits.MaxMHzBR4) if (longhaul.bits.MaxMHzBR4)
invalue += 16; invalue += 16;
maxmult=multipliers[invalue]; maxmult=ezra_t_multipliers[invalue];
invalue = longhaul.bits.MinMHzBR; invalue = longhaul.bits.MinMHzBR;
if (longhaul.bits.MinMHzBR4 == 1) if (longhaul.bits.MinMHzBR4 == 1)
minmult = 30; minmult = 30;
else else
minmult = multipliers[invalue]; minmult = ezra_t_multipliers[invalue];
fsb = eblcr_fsb_table_v2[longhaul.bits.MaxMHzFSB]; fsb = eblcr_fsb_table_v2[longhaul.bits.MaxMHzFSB];
break; break;
} }
@ -527,6 +527,18 @@ static unsigned int longhaul_get(unsigned int cpu)
return calc_speed(longhaul_get_cpu_mult()); return calc_speed(longhaul_get_cpu_mult());
} }
static acpi_status longhaul_walk_callback(acpi_handle obj_handle,
u32 nesting_level,
void *context, void **return_value)
{
struct acpi_device *d;
if ( acpi_bus_get_device(obj_handle, &d) ) {
return 0;
}
*return_value = (void *)acpi_driver_data(d);
return 1;
}
static int __init longhaul_cpu_init(struct cpufreq_policy *policy) static int __init longhaul_cpu_init(struct cpufreq_policy *policy)
{ {
@ -534,6 +546,15 @@ static int __init longhaul_cpu_init(struct cpufreq_policy *policy)
char *cpuname=NULL; char *cpuname=NULL;
int ret; int ret;
/* Check ACPI support for C3 state */
acpi_walk_namespace(ACPI_TYPE_PROCESSOR, ACPI_ROOT_OBJECT, ACPI_UINT32_MAX,
&longhaul_walk_callback, NULL, (void *)&pr);
if (pr == NULL) goto err_acpi;
cx = &pr->power.states[ACPI_STATE_C3];
if (cx->address == 0 || cx->latency > 1000) goto err_acpi;
/* Now check what we have on this motherboard */
switch (c->x86_model) { switch (c->x86_model) {
case 6: case 6:
cpu_model = CPU_SAMUEL; cpu_model = CPU_SAMUEL;
@ -634,6 +655,10 @@ static int __init longhaul_cpu_init(struct cpufreq_policy *policy)
cpufreq_frequency_table_get_attr(longhaul_table, policy->cpu); cpufreq_frequency_table_get_attr(longhaul_table, policy->cpu);
return 0; return 0;
err_acpi:
printk(KERN_ERR PFX "No ACPI support for CPU frequency changes.\n");
return -ENODEV;
} }
static int __devexit longhaul_cpu_exit(struct cpufreq_policy *policy) static int __devexit longhaul_cpu_exit(struct cpufreq_policy *policy)
@ -666,6 +691,18 @@ static int __init longhaul_init(void)
if (c->x86_vendor != X86_VENDOR_CENTAUR || c->x86 != 6) if (c->x86_vendor != X86_VENDOR_CENTAUR || c->x86 != 6)
return -ENODEV; return -ENODEV;
#ifdef CONFIG_SMP
if (num_online_cpus() > 1) {
return -ENODEV;
printk(KERN_ERR PFX "More than 1 CPU detected, longhaul disabled.\n");
}
#endif
#ifdef CONFIG_X86_IO_APIC
if (cpu_has_apic) {
printk(KERN_ERR PFX "APIC detected. Longhaul is currently broken in this configuration.\n");
return -ENODEV;
}
#endif
switch (c->x86_model) { switch (c->x86_model) {
case 6 ... 9: case 6 ... 9:
return cpufreq_register_driver(&longhaul_driver); return cpufreq_register_driver(&longhaul_driver);
@ -699,6 +736,6 @@ MODULE_AUTHOR ("Dave Jones <davej@codemonkey.org.uk>");
MODULE_DESCRIPTION ("Longhaul driver for VIA Cyrix processors."); MODULE_DESCRIPTION ("Longhaul driver for VIA Cyrix processors.");
MODULE_LICENSE ("GPL"); MODULE_LICENSE ("GPL");
module_init(longhaul_init); late_initcall(longhaul_init);
module_exit(longhaul_exit); module_exit(longhaul_exit);

View File

@ -759,7 +759,7 @@ static int __cpuinit cache_sysfs_init(void)
if (num_cache_leaves == 0) if (num_cache_leaves == 0)
return 0; return 0;
register_cpu_notifier(&cacheinfo_cpu_notifier); register_hotcpu_notifier(&cacheinfo_cpu_notifier);
for_each_online_cpu(i) { for_each_online_cpu(i) {
cacheinfo_cpu_callback(&cacheinfo_cpu_notifier, CPU_ONLINE, cacheinfo_cpu_callback(&cacheinfo_cpu_notifier, CPU_ONLINE,

View File

@ -9,6 +9,6 @@ void winchip_mcheck_init(struct cpuinfo_x86 *c);
/* Call the installed machine check handler for this CPU setup. */ /* Call the installed machine check handler for this CPU setup. */
extern fastcall void (*machine_check_vector)(struct pt_regs *, long error_code); extern fastcall void (*machine_check_vector)(struct pt_regs *, long error_code);
extern int mce_disabled __initdata; extern int mce_disabled;
extern int nr_mce_banks; extern int nr_mce_banks;

View File

@ -204,7 +204,7 @@ VM_MASK = 0x00020000
ENTRY(ret_from_fork) ENTRY(ret_from_fork)
CFI_STARTPROC CFI_STARTPROC
pushl %eax pushl %eax
CFI_ADJUST_CFA_OFFSET -4 CFI_ADJUST_CFA_OFFSET 4
call schedule_tail call schedule_tail
GET_THREAD_INFO(%ebp) GET_THREAD_INFO(%ebp)
popl %eax popl %eax

View File

@ -256,11 +256,6 @@ static int __kprobes kprobe_handler(struct pt_regs *regs)
int ret = 0; int ret = 0;
kprobe_opcode_t *addr; kprobe_opcode_t *addr;
struct kprobe_ctlblk *kcb; struct kprobe_ctlblk *kcb;
#ifdef CONFIG_PREEMPT
unsigned pre_preempt_count = preempt_count();
#else
unsigned pre_preempt_count = 1;
#endif
addr = (kprobe_opcode_t *)(regs->eip - sizeof(kprobe_opcode_t)); addr = (kprobe_opcode_t *)(regs->eip - sizeof(kprobe_opcode_t));
@ -338,13 +333,15 @@ static int __kprobes kprobe_handler(struct pt_regs *regs)
return 1; return 1;
ss_probe: ss_probe:
if (pre_preempt_count && p->ainsn.boostable == 1 && !p->post_handler){ #ifndef CONFIG_PREEMPT
if (p->ainsn.boostable == 1 && !p->post_handler){
/* Boost up -- we can execute copied instructions directly */ /* Boost up -- we can execute copied instructions directly */
reset_current_kprobe(); reset_current_kprobe();
regs->eip = (unsigned long)p->ainsn.insn; regs->eip = (unsigned long)p->ainsn.insn;
preempt_enable_no_resched(); preempt_enable_no_resched();
return 1; return 1;
} }
#endif
prepare_singlestep(p, regs); prepare_singlestep(p, regs);
kcb->kprobe_status = KPROBE_HIT_SS; kcb->kprobe_status = KPROBE_HIT_SS;
return 1; return 1;

View File

@ -189,14 +189,11 @@ NORET_TYPE void machine_kexec(struct kimage *image)
memcpy((void *)reboot_code_buffer, relocate_new_kernel, memcpy((void *)reboot_code_buffer, relocate_new_kernel,
relocate_new_kernel_size); relocate_new_kernel_size);
/* The segment registers are funny things, they are /* The segment registers are funny things, they have both a
* automatically loaded from a table, in memory wherever you * visible and an invisible part. Whenever the visible part is
* set them to a specific selector, but this table is never * set to a specific selector, the invisible part is loaded
* accessed again you set the segment to a different selector. * with from a table in memory. At no other time is the
* * descriptor table in memory accessed.
* The more common model is are caches where the behide
* the scenes work is done, but is also dropped at arbitrary
* times.
* *
* I take advantage of this here by force loading the * I take advantage of this here by force loading the
* segments, before I zap the gdt with an invalid value. * segments, before I zap the gdt with an invalid value.

View File

@ -575,6 +575,7 @@ void touch_nmi_watchdog (void)
*/ */
touch_softlockup_watchdog(); touch_softlockup_watchdog();
} }
EXPORT_SYMBOL(touch_nmi_watchdog);
extern void die_nmi(struct pt_regs *, const char *msg); extern void die_nmi(struct pt_regs *, const char *msg);

View File

@ -690,8 +690,8 @@ struct task_struct fastcall * __switch_to(struct task_struct *prev_p, struct tas
/* /*
* Now maybe handle debug registers and/or IO bitmaps * Now maybe handle debug registers and/or IO bitmaps
*/ */
if (unlikely((task_thread_info(next_p)->flags & _TIF_WORK_CTXSW)) if (unlikely((task_thread_info(next_p)->flags & _TIF_WORK_CTXSW)
|| test_tsk_thread_flag(prev_p, TIF_IO_BITMAP)) || test_tsk_thread_flag(prev_p, TIF_IO_BITMAP)))
__switch_to_xtra(next_p, tss); __switch_to_xtra(next_p, tss);
disable_tsc(prev_p, next_p); disable_tsc(prev_p, next_p);

View File

@ -212,14 +212,20 @@ valid_k7:
* then we print a warning if not, and always resync. * then we print a warning if not, and always resync.
*/ */
static atomic_t tsc_start_flag = ATOMIC_INIT(0); static struct {
static atomic_t tsc_count_start = ATOMIC_INIT(0); atomic_t start_flag;
static atomic_t tsc_count_stop = ATOMIC_INIT(0); atomic_t count_start;
static unsigned long long tsc_values[NR_CPUS]; atomic_t count_stop;
unsigned long long values[NR_CPUS];
} tsc __initdata = {
.start_flag = ATOMIC_INIT(0),
.count_start = ATOMIC_INIT(0),
.count_stop = ATOMIC_INIT(0),
};
#define NR_LOOPS 5 #define NR_LOOPS 5
static void __init synchronize_tsc_bp (void) static void __init synchronize_tsc_bp(void)
{ {
int i; int i;
unsigned long long t0; unsigned long long t0;
@ -233,7 +239,7 @@ static void __init synchronize_tsc_bp (void)
/* convert from kcyc/sec to cyc/usec */ /* convert from kcyc/sec to cyc/usec */
one_usec = cpu_khz / 1000; one_usec = cpu_khz / 1000;
atomic_set(&tsc_start_flag, 1); atomic_set(&tsc.start_flag, 1);
wmb(); wmb();
/* /*
@ -250,16 +256,16 @@ static void __init synchronize_tsc_bp (void)
/* /*
* all APs synchronize but they loop on '== num_cpus' * all APs synchronize but they loop on '== num_cpus'
*/ */
while (atomic_read(&tsc_count_start) != num_booting_cpus()-1) while (atomic_read(&tsc.count_start) != num_booting_cpus()-1)
cpu_relax(); cpu_relax();
atomic_set(&tsc_count_stop, 0); atomic_set(&tsc.count_stop, 0);
wmb(); wmb();
/* /*
* this lets the APs save their current TSC: * this lets the APs save their current TSC:
*/ */
atomic_inc(&tsc_count_start); atomic_inc(&tsc.count_start);
rdtscll(tsc_values[smp_processor_id()]); rdtscll(tsc.values[smp_processor_id()]);
/* /*
* We clear the TSC in the last loop: * We clear the TSC in the last loop:
*/ */
@ -269,56 +275,54 @@ static void __init synchronize_tsc_bp (void)
/* /*
* Wait for all APs to leave the synchronization point: * Wait for all APs to leave the synchronization point:
*/ */
while (atomic_read(&tsc_count_stop) != num_booting_cpus()-1) while (atomic_read(&tsc.count_stop) != num_booting_cpus()-1)
cpu_relax(); cpu_relax();
atomic_set(&tsc_count_start, 0); atomic_set(&tsc.count_start, 0);
wmb(); wmb();
atomic_inc(&tsc_count_stop); atomic_inc(&tsc.count_stop);
} }
sum = 0; sum = 0;
for (i = 0; i < NR_CPUS; i++) { for (i = 0; i < NR_CPUS; i++) {
if (cpu_isset(i, cpu_callout_map)) { if (cpu_isset(i, cpu_callout_map)) {
t0 = tsc_values[i]; t0 = tsc.values[i];
sum += t0; sum += t0;
} }
} }
avg = sum; avg = sum;
do_div(avg, num_booting_cpus()); do_div(avg, num_booting_cpus());
sum = 0;
for (i = 0; i < NR_CPUS; i++) { for (i = 0; i < NR_CPUS; i++) {
if (!cpu_isset(i, cpu_callout_map)) if (!cpu_isset(i, cpu_callout_map))
continue; continue;
delta = tsc_values[i] - avg; delta = tsc.values[i] - avg;
if (delta < 0) if (delta < 0)
delta = -delta; delta = -delta;
/* /*
* We report bigger than 2 microseconds clock differences. * We report bigger than 2 microseconds clock differences.
*/ */
if (delta > 2*one_usec) { if (delta > 2*one_usec) {
long realdelta; long long realdelta;
if (!buggy) { if (!buggy) {
buggy = 1; buggy = 1;
printk("\n"); printk("\n");
} }
realdelta = delta; realdelta = delta;
do_div(realdelta, one_usec); do_div(realdelta, one_usec);
if (tsc_values[i] < avg) if (tsc.values[i] < avg)
realdelta = -realdelta; realdelta = -realdelta;
if (realdelta > 0) if (realdelta)
printk(KERN_INFO "CPU#%d had %ld usecs TSC " printk(KERN_INFO "CPU#%d had %Ld usecs TSC "
"skew, fixed it up.\n", i, realdelta); "skew, fixed it up.\n", i, realdelta);
} }
sum += delta;
} }
if (!buggy) if (!buggy)
printk("passed.\n"); printk("passed.\n");
} }
static void __init synchronize_tsc_ap (void) static void __init synchronize_tsc_ap(void)
{ {
int i; int i;
@ -327,20 +331,20 @@ static void __init synchronize_tsc_ap (void)
* this gets called, so we first wait for the BP to * this gets called, so we first wait for the BP to
* finish SMP initialization: * finish SMP initialization:
*/ */
while (!atomic_read(&tsc_start_flag)) while (!atomic_read(&tsc.start_flag))
cpu_relax(); cpu_relax();
for (i = 0; i < NR_LOOPS; i++) { for (i = 0; i < NR_LOOPS; i++) {
atomic_inc(&tsc_count_start); atomic_inc(&tsc.count_start);
while (atomic_read(&tsc_count_start) != num_booting_cpus()) while (atomic_read(&tsc.count_start) != num_booting_cpus())
cpu_relax(); cpu_relax();
rdtscll(tsc_values[smp_processor_id()]); rdtscll(tsc.values[smp_processor_id()]);
if (i == NR_LOOPS-1) if (i == NR_LOOPS-1)
write_tsc(0, 0); write_tsc(0, 0);
atomic_inc(&tsc_count_stop); atomic_inc(&tsc.count_stop);
while (atomic_read(&tsc_count_stop) != num_booting_cpus()) while (atomic_read(&tsc.count_stop) != num_booting_cpus())
cpu_relax(); cpu_relax();
} }
} }

View File

@ -135,7 +135,7 @@ unsigned long profile_pc(struct pt_regs *regs)
{ {
unsigned long pc = instruction_pointer(regs); unsigned long pc = instruction_pointer(regs);
if (in_lock_functions(pc)) if (!user_mode_vm(regs) && in_lock_functions(pc))
return *(unsigned long *)(regs->ebp + 4); return *(unsigned long *)(regs->ebp + 4);
return pc; return pc;

View File

@ -187,10 +187,21 @@ static void show_trace_log_lvl(struct task_struct *task, struct pt_regs *regs,
if (unwind_init_blocked(&info, task) == 0) if (unwind_init_blocked(&info, task) == 0)
unw_ret = show_trace_unwind(&info, log_lvl); unw_ret = show_trace_unwind(&info, log_lvl);
} }
if (unw_ret > 0) { if (unw_ret > 0 && !arch_unw_user_mode(&info)) {
if (call_trace > 0) #ifdef CONFIG_STACK_UNWIND
print_symbol("DWARF2 unwinder stuck at %s\n",
UNW_PC(&info));
if (call_trace == 1) {
printk("Leftover inexact backtrace:\n");
if (UNW_SP(&info))
stack = (void *)UNW_SP(&info);
} else if (call_trace > 1)
return; return;
printk("%sLegacy call trace:\n", log_lvl); else
printk("Full inexact backtrace again:\n");
#else
printk("Inexact backtrace:\n");
#endif
} }
} }
@ -442,11 +453,9 @@ void die(const char * str, struct pt_regs * regs, long err)
if (in_interrupt()) if (in_interrupt())
panic("Fatal exception in interrupt"); panic("Fatal exception in interrupt");
if (panic_on_oops) { if (panic_on_oops)
printk(KERN_EMERG "Fatal exception: panic in 5 seconds\n"); panic("Fatal exception: panic_on_oops");
ssleep(5);
panic("Fatal exception");
}
oops_exit(); oops_exit();
do_exit(SIGSEGV); do_exit(SIGSEGV);
} }
@ -1238,8 +1247,10 @@ static int __init call_trace_setup(char *s)
call_trace = -1; call_trace = -1;
else if (strcmp(s, "both") == 0) else if (strcmp(s, "both") == 0)
call_trace = 0; call_trace = 0;
else if (strcmp(s, "new") == 0) else if (strcmp(s, "newfallback") == 0)
call_trace = 1; call_trace = 1;
else if (strcmp(s, "new") == 2)
call_trace = 2;
return 1; return 1;
} }
__setup("call_trace=", call_trace_setup); __setup("call_trace=", call_trace_setup);

View File

@ -10,6 +10,7 @@ SECTIONS
. = VDSO_PRELINK + SIZEOF_HEADERS; . = VDSO_PRELINK + SIZEOF_HEADERS;
.hash : { *(.hash) } :text .hash : { *(.hash) } :text
.gnu.hash : { *(.gnu.hash) }
.dynsym : { *(.dynsym) } .dynsym : { *(.dynsym) }
.dynstr : { *(.dynstr) } .dynstr : { *(.dynstr) }
.gnu.version : { *(.gnu.version) } .gnu.version : { *(.gnu.version) }

View File

@ -363,7 +363,7 @@ CONFIG_BLK_DEV_IDECD=y
# #
CONFIG_IDE_GENERIC=y CONFIG_IDE_GENERIC=y
CONFIG_BLK_DEV_IDEPCI=y CONFIG_BLK_DEV_IDEPCI=y
# CONFIG_IDEPCI_SHARE_IRQ is not set CONFIG_IDEPCI_SHARE_IRQ=y
# CONFIG_BLK_DEV_OFFBOARD is not set # CONFIG_BLK_DEV_OFFBOARD is not set
# CONFIG_BLK_DEV_GENERIC is not set # CONFIG_BLK_DEV_GENERIC is not set
# CONFIG_BLK_DEV_OPTI621 is not set # CONFIG_BLK_DEV_OPTI621 is not set

View File

@ -366,7 +366,7 @@ CONFIG_BLK_DEV_IDESCSI=m
# CONFIG_IDE_GENERIC is not set # CONFIG_IDE_GENERIC is not set
# CONFIG_BLK_DEV_IDEPNP is not set # CONFIG_BLK_DEV_IDEPNP is not set
CONFIG_BLK_DEV_IDEPCI=y CONFIG_BLK_DEV_IDEPCI=y
# CONFIG_IDEPCI_SHARE_IRQ is not set CONFIG_IDEPCI_SHARE_IRQ=y
# CONFIG_BLK_DEV_OFFBOARD is not set # CONFIG_BLK_DEV_OFFBOARD is not set
CONFIG_BLK_DEV_GENERIC=y CONFIG_BLK_DEV_GENERIC=y
# CONFIG_BLK_DEV_OPTI621 is not set # CONFIG_BLK_DEV_OPTI621 is not set

View File

@ -45,7 +45,8 @@ CPPFLAGS_gate.lds := -P -C -U$(ARCH)
quiet_cmd_gate = GATE $@ quiet_cmd_gate = GATE $@
cmd_gate = $(CC) -nostdlib $(GATECFLAGS_$(@F)) -Wl,-T,$(filter-out FORCE,$^) -o $@ cmd_gate = $(CC) -nostdlib $(GATECFLAGS_$(@F)) -Wl,-T,$(filter-out FORCE,$^) -o $@
GATECFLAGS_gate.so = -shared -s -Wl,-soname=linux-gate.so.1 GATECFLAGS_gate.so = -shared -s -Wl,-soname=linux-gate.so.1 \
$(call ld-option, -Wl$(comma)--hash-style=sysv)
$(obj)/gate.so: $(obj)/gate.lds $(obj)/gate.o FORCE $(obj)/gate.so: $(obj)/gate.lds $(obj)/gate.o FORCE
$(call if_changed,gate) $(call if_changed,gate)

View File

@ -632,7 +632,7 @@ kern_memory_descriptor (unsigned long phys_addr)
if (phys_addr - md->start < (md->num_pages << EFI_PAGE_SHIFT)) if (phys_addr - md->start < (md->num_pages << EFI_PAGE_SHIFT))
return md; return md;
} }
return 0; return NULL;
} }
static efi_memory_desc_t * static efi_memory_desc_t *
@ -652,7 +652,7 @@ efi_memory_descriptor (unsigned long phys_addr)
if (phys_addr - md->phys_addr < (md->num_pages << EFI_PAGE_SHIFT)) if (phys_addr - md->phys_addr < (md->num_pages << EFI_PAGE_SHIFT))
return md; return md;
} }
return 0; return NULL;
} }
u32 u32
@ -923,7 +923,7 @@ find_memmap_space (void)
void void
efi_memmap_init(unsigned long *s, unsigned long *e) efi_memmap_init(unsigned long *s, unsigned long *e)
{ {
struct kern_memdesc *k, *prev = 0; struct kern_memdesc *k, *prev = NULL;
u64 contig_low=0, contig_high=0; u64 contig_low=0, contig_high=0;
u64 as, ae, lim; u64 as, ae, lim;
void *efi_map_start, *efi_map_end, *p, *q; void *efi_map_start, *efi_map_end, *p, *q;

View File

@ -12,6 +12,7 @@ SECTIONS
. = GATE_ADDR + SIZEOF_HEADERS; . = GATE_ADDR + SIZEOF_HEADERS;
.hash : { *(.hash) } :readable .hash : { *(.hash) } :readable
.gnu.hash : { *(.gnu.hash) }
.dynsym : { *(.dynsym) } .dynsym : { *(.dynsym) }
.dynstr : { *(.dynstr) } .dynstr : { *(.dynstr) }
.gnu.version : { *(.gnu.version) } .gnu.version : { *(.gnu.version) }

View File

@ -853,7 +853,6 @@ END(__ia64_init_fpu)
*/ */
GLOBAL_ENTRY(ia64_switch_mode_phys) GLOBAL_ENTRY(ia64_switch_mode_phys)
{ {
alloc r2=ar.pfs,0,0,0,0
rsm psr.i | psr.ic // disable interrupts and interrupt collection rsm psr.i | psr.ic // disable interrupts and interrupt collection
mov r15=ip mov r15=ip
} }
@ -902,7 +901,6 @@ END(ia64_switch_mode_phys)
*/ */
GLOBAL_ENTRY(ia64_switch_mode_virt) GLOBAL_ENTRY(ia64_switch_mode_virt)
{ {
alloc r2=ar.pfs,0,0,0,0
rsm psr.i | psr.ic // disable interrupts and interrupt collection rsm psr.i | psr.ic // disable interrupts and interrupt collection
mov r15=ip mov r15=ip
} }

View File

@ -62,7 +62,7 @@ EXPORT_SYMBOL(__udivdi3);
EXPORT_SYMBOL(__moddi3); EXPORT_SYMBOL(__moddi3);
EXPORT_SYMBOL(__umoddi3); EXPORT_SYMBOL(__umoddi3);
#if defined(CONFIG_MD_RAID5) || defined(CONFIG_MD_RAID5_MODULE) #if defined(CONFIG_MD_RAID456) || defined(CONFIG_MD_RAID456_MODULE)
extern void xor_ia64_2(void); extern void xor_ia64_2(void);
extern void xor_ia64_3(void); extern void xor_ia64_3(void);
extern void xor_ia64_4(void); extern void xor_ia64_4(void);

View File

@ -448,11 +448,20 @@ int __kprobes arch_prepare_kprobe(struct kprobe *p)
return 0; return 0;
} }
void __kprobes flush_insn_slot(struct kprobe *p)
{
unsigned long arm_addr;
arm_addr = ((unsigned long)&p->opcode.bundle) & ~0xFULL;
flush_icache_range(arm_addr, arm_addr + sizeof(bundle_t));
}
void __kprobes arch_arm_kprobe(struct kprobe *p) void __kprobes arch_arm_kprobe(struct kprobe *p)
{ {
unsigned long addr = (unsigned long)p->addr; unsigned long addr = (unsigned long)p->addr;
unsigned long arm_addr = addr & ~0xFULL; unsigned long arm_addr = addr & ~0xFULL;
flush_insn_slot(p);
memcpy((char *)arm_addr, &p->ainsn.insn.bundle, sizeof(bundle_t)); memcpy((char *)arm_addr, &p->ainsn.insn.bundle, sizeof(bundle_t));
flush_icache_range(arm_addr, arm_addr + sizeof(bundle_t)); flush_icache_range(arm_addr, arm_addr + sizeof(bundle_t));
} }

View File

@ -217,12 +217,7 @@ GLOBAL_ENTRY(ia64_pal_call_phys_stacked)
.body .body
;; ;;
ld8 loc2 = [loc2] // loc2 <- entry point ld8 loc2 = [loc2] // loc2 <- entry point
mov out0 = in0 // first argument mov loc3 = psr // save psr
mov out1 = in1 // copy arg2
mov out2 = in2 // copy arg3
mov out3 = in3 // copy arg3
;;
mov loc3 = psr // save psr
;; ;;
mov loc4=ar.rsc // save RSE configuration mov loc4=ar.rsc // save RSE configuration
dep.z loc2=loc2,0,61 // convert pal entry point to physical dep.z loc2=loc2,0,61 // convert pal entry point to physical
@ -236,18 +231,23 @@ GLOBAL_ENTRY(ia64_pal_call_phys_stacked)
;; ;;
andcm r16=loc3,r16 // removes bits to clear from psr andcm r16=loc3,r16 // removes bits to clear from psr
br.call.sptk.many rp=ia64_switch_mode_phys br.call.sptk.many rp=ia64_switch_mode_phys
.ret6:
mov out0 = in0 // first argument
mov out1 = in1 // copy arg2
mov out2 = in2 // copy arg3
mov out3 = in3 // copy arg3
mov loc5 = r19 mov loc5 = r19
mov loc6 = r20 mov loc6 = r20
br.call.sptk.many rp=b7 // now make the call br.call.sptk.many rp=b7 // now make the call
.ret7:
mov ar.rsc=0 // put RSE in enforced lazy, LE mode mov ar.rsc=0 // put RSE in enforced lazy, LE mode
mov r16=loc3 // r16= original psr mov r16=loc3 // r16= original psr
mov r19=loc5 mov r19=loc5
mov r20=loc6 mov r20=loc6
br.call.sptk.many rp=ia64_switch_mode_virt // return to virtual mode br.call.sptk.many rp=ia64_switch_mode_virt // return to virtual mode
.ret8: mov psr.l = loc3 // restore init PSR mov psr.l = loc3 // restore init PSR
mov ar.pfs = loc1 mov ar.pfs = loc1
mov rp = loc0 mov rp = loc0
;; ;;

View File

@ -566,29 +566,23 @@ version_info(char *page)
pal_version_u_t min_ver, cur_ver; pal_version_u_t min_ver, cur_ver;
char *p = page; char *p = page;
/* The PAL_VERSION call is advertised as being able to support if (ia64_pal_version(&min_ver, &cur_ver) != 0)
* both physical and virtual mode calls. This seems to be a documentation return 0;
* bug rather than firmware bug. In fact, it does only support physical mode.
* So now the code reflects this fact and the pal_version() has been updated
* accordingly.
*/
if (ia64_pal_version(&min_ver, &cur_ver) != 0) return 0;
p += sprintf(p, p += sprintf(p,
"PAL_vendor : 0x%02x (min=0x%02x)\n" "PAL_vendor : 0x%02x (min=0x%02x)\n"
"PAL_A : %x.%x.%x (min=%x.%x.%x)\n" "PAL_A : %02x.%02x (min=%02x.%02x)\n"
"PAL_B : %x.%x.%x (min=%x.%x.%x)\n", "PAL_B : %02x.%02x (min=%02x.%02x)\n",
cur_ver.pal_version_s.pv_pal_vendor, min_ver.pal_version_s.pv_pal_vendor, cur_ver.pal_version_s.pv_pal_vendor,
min_ver.pal_version_s.pv_pal_vendor,
cur_ver.pal_version_s.pv_pal_a_model>>4, cur_ver.pal_version_s.pv_pal_a_model,
cur_ver.pal_version_s.pv_pal_a_model&0xf, cur_ver.pal_version_s.pv_pal_a_rev, cur_ver.pal_version_s.pv_pal_a_rev,
min_ver.pal_version_s.pv_pal_a_model>>4, min_ver.pal_version_s.pv_pal_a_model,
min_ver.pal_version_s.pv_pal_a_model&0xf, min_ver.pal_version_s.pv_pal_a_rev, min_ver.pal_version_s.pv_pal_a_rev,
cur_ver.pal_version_s.pv_pal_b_model,
cur_ver.pal_version_s.pv_pal_b_model>>4, cur_ver.pal_version_s.pv_pal_b_rev,
cur_ver.pal_version_s.pv_pal_b_model&0xf, cur_ver.pal_version_s.pv_pal_b_rev, min_ver.pal_version_s.pv_pal_b_model,
min_ver.pal_version_s.pv_pal_b_model>>4, min_ver.pal_version_s.pv_pal_b_rev);
min_ver.pal_version_s.pv_pal_b_model&0xf, min_ver.pal_version_s.pv_pal_b_rev);
return p - page; return p - page;
} }
@ -958,9 +952,9 @@ remove_palinfo_proc_entries(unsigned int hcpu)
} }
} }
static int __cpuinit palinfo_cpu_callback(struct notifier_block *nfb, #ifdef CONFIG_HOTPLUG_CPU
unsigned long action, static int palinfo_cpu_callback(struct notifier_block *nfb,
void *hcpu) unsigned long action, void *hcpu)
{ {
unsigned int hotcpu = (unsigned long)hcpu; unsigned int hotcpu = (unsigned long)hcpu;
@ -968,20 +962,19 @@ static int __cpuinit palinfo_cpu_callback(struct notifier_block *nfb,
case CPU_ONLINE: case CPU_ONLINE:
create_palinfo_proc_entries(hotcpu); create_palinfo_proc_entries(hotcpu);
break; break;
#ifdef CONFIG_HOTPLUG_CPU
case CPU_DEAD: case CPU_DEAD:
remove_palinfo_proc_entries(hotcpu); remove_palinfo_proc_entries(hotcpu);
break; break;
#endif
} }
return NOTIFY_OK; return NOTIFY_OK;
} }
static struct notifier_block __cpuinitdata palinfo_cpu_notifier = static struct notifier_block palinfo_cpu_notifier =
{ {
.notifier_call = palinfo_cpu_callback, .notifier_call = palinfo_cpu_callback,
.priority = 0, .priority = 0,
}; };
#endif
static int __init static int __init
palinfo_init(void) palinfo_init(void)
@ -1020,7 +1013,7 @@ palinfo_exit(void)
/* /*
* Unregister from cpu notifier callbacks * Unregister from cpu notifier callbacks
*/ */
unregister_cpu_notifier(&palinfo_cpu_notifier); unregister_hotcpu_notifier(&palinfo_cpu_notifier);
} }
module_init(palinfo_init); module_init(palinfo_init);

View File

@ -435,7 +435,7 @@ static int __cpuinit cache_sysfs_init(void)
(void *)(long)i); (void *)(long)i);
} }
register_cpu_notifier(&cache_cpu_notifier); register_hotcpu_notifier(&cache_cpu_notifier);
return 0; return 0;
} }

View File

@ -117,11 +117,8 @@ die (const char *str, struct pt_regs *regs, long err)
die.lock_owner = -1; die.lock_owner = -1;
spin_unlock_irq(&die.lock); spin_unlock_irq(&die.lock);
if (panic_on_oops) { if (panic_on_oops)
printk(KERN_EMERG "Fatal exception: panic in 5 seconds\n"); panic("Fatal exception: panic_on_oops");
ssleep(5);
panic("Fatal exception");
}
do_exit(SIGSEGV); do_exit(SIGSEGV);
} }

View File

@ -32,32 +32,38 @@
extern void __init efi_memmap_walk_uc(efi_freemem_callback_t, void *); extern void __init efi_memmap_walk_uc(efi_freemem_callback_t, void *);
#define MAX_UNCACHED_GRANULES 5 struct uncached_pool {
static int allocated_granules; struct gen_pool *pool;
struct mutex add_chunk_mutex; /* serialize adding a converted chunk */
int nchunks_added; /* #of converted chunks added to pool */
atomic_t status; /* smp called function's return status*/
};
struct gen_pool *uncached_pool[MAX_NUMNODES]; #define MAX_CONVERTED_CHUNKS_PER_NODE 2
struct uncached_pool uncached_pools[MAX_NUMNODES];
static void uncached_ipi_visibility(void *data) static void uncached_ipi_visibility(void *data)
{ {
int status; int status;
struct uncached_pool *uc_pool = (struct uncached_pool *)data;
status = ia64_pal_prefetch_visibility(PAL_VISIBILITY_PHYSICAL); status = ia64_pal_prefetch_visibility(PAL_VISIBILITY_PHYSICAL);
if ((status != PAL_VISIBILITY_OK) && if ((status != PAL_VISIBILITY_OK) &&
(status != PAL_VISIBILITY_OK_REMOTE_NEEDED)) (status != PAL_VISIBILITY_OK_REMOTE_NEEDED))
printk(KERN_DEBUG "pal_prefetch_visibility() returns %i on " atomic_inc(&uc_pool->status);
"CPU %i\n", status, raw_smp_processor_id());
} }
static void uncached_ipi_mc_drain(void *data) static void uncached_ipi_mc_drain(void *data)
{ {
int status; int status;
struct uncached_pool *uc_pool = (struct uncached_pool *)data;
status = ia64_pal_mc_drain(); status = ia64_pal_mc_drain();
if (status) if (status != PAL_STATUS_SUCCESS)
printk(KERN_WARNING "ia64_pal_mc_drain() failed with %i on " atomic_inc(&uc_pool->status);
"CPU %i\n", status, raw_smp_processor_id());
} }
@ -70,21 +76,34 @@ static void uncached_ipi_mc_drain(void *data)
* This is accomplished by first allocating a granule of cached memory pages * This is accomplished by first allocating a granule of cached memory pages
* and then converting them to uncached memory pages. * and then converting them to uncached memory pages.
*/ */
static int uncached_add_chunk(struct gen_pool *pool, int nid) static int uncached_add_chunk(struct uncached_pool *uc_pool, int nid)
{ {
struct page *page; struct page *page;
int status, i; int status, i, nchunks_added = uc_pool->nchunks_added;
unsigned long c_addr, uc_addr; unsigned long c_addr, uc_addr;
if (allocated_granules >= MAX_UNCACHED_GRANULES) if (mutex_lock_interruptible(&uc_pool->add_chunk_mutex) != 0)
return -1; /* interrupted by a signal */
if (uc_pool->nchunks_added > nchunks_added) {
/* someone added a new chunk while we were waiting */
mutex_unlock(&uc_pool->add_chunk_mutex);
return 0;
}
if (uc_pool->nchunks_added >= MAX_CONVERTED_CHUNKS_PER_NODE) {
mutex_unlock(&uc_pool->add_chunk_mutex);
return -1; return -1;
}
/* attempt to allocate a granule's worth of cached memory pages */ /* attempt to allocate a granule's worth of cached memory pages */
page = alloc_pages_node(nid, GFP_KERNEL | __GFP_ZERO, page = alloc_pages_node(nid, GFP_KERNEL | __GFP_ZERO,
IA64_GRANULE_SHIFT-PAGE_SHIFT); IA64_GRANULE_SHIFT-PAGE_SHIFT);
if (!page) if (!page) {
mutex_unlock(&uc_pool->add_chunk_mutex);
return -1; return -1;
}
/* convert the memory pages from cached to uncached */ /* convert the memory pages from cached to uncached */
@ -102,11 +121,14 @@ static int uncached_add_chunk(struct gen_pool *pool, int nid)
flush_tlb_kernel_range(uc_addr, uc_adddr + IA64_GRANULE_SIZE); flush_tlb_kernel_range(uc_addr, uc_adddr + IA64_GRANULE_SIZE);
status = ia64_pal_prefetch_visibility(PAL_VISIBILITY_PHYSICAL); status = ia64_pal_prefetch_visibility(PAL_VISIBILITY_PHYSICAL);
if (!status) { if (status == PAL_VISIBILITY_OK_REMOTE_NEEDED) {
status = smp_call_function(uncached_ipi_visibility, NULL, 0, 1); atomic_set(&uc_pool->status, 0);
if (status) status = smp_call_function(uncached_ipi_visibility, uc_pool,
0, 1);
if (status || atomic_read(&uc_pool->status))
goto failed; goto failed;
} } else if (status != PAL_VISIBILITY_OK)
goto failed;
preempt_disable(); preempt_disable();
@ -120,20 +142,24 @@ static int uncached_add_chunk(struct gen_pool *pool, int nid)
preempt_enable(); preempt_enable();
ia64_pal_mc_drain(); status = ia64_pal_mc_drain();
status = smp_call_function(uncached_ipi_mc_drain, NULL, 0, 1); if (status != PAL_STATUS_SUCCESS)
if (status) goto failed;
atomic_set(&uc_pool->status, 0);
status = smp_call_function(uncached_ipi_mc_drain, uc_pool, 0, 1);
if (status || atomic_read(&uc_pool->status))
goto failed; goto failed;
/* /*
* The chunk of memory pages has been converted to uncached so now we * The chunk of memory pages has been converted to uncached so now we
* can add it to the pool. * can add it to the pool.
*/ */
status = gen_pool_add(pool, uc_addr, IA64_GRANULE_SIZE, nid); status = gen_pool_add(uc_pool->pool, uc_addr, IA64_GRANULE_SIZE, nid);
if (status) if (status)
goto failed; goto failed;
allocated_granules++; uc_pool->nchunks_added++;
mutex_unlock(&uc_pool->add_chunk_mutex);
return 0; return 0;
/* failed to convert or add the chunk so give it back to the kernel */ /* failed to convert or add the chunk so give it back to the kernel */
@ -142,6 +168,7 @@ failed:
ClearPageUncached(&page[i]); ClearPageUncached(&page[i]);
free_pages(c_addr, IA64_GRANULE_SHIFT-PAGE_SHIFT); free_pages(c_addr, IA64_GRANULE_SHIFT-PAGE_SHIFT);
mutex_unlock(&uc_pool->add_chunk_mutex);
return -1; return -1;
} }
@ -158,7 +185,7 @@ failed:
unsigned long uncached_alloc_page(int starting_nid) unsigned long uncached_alloc_page(int starting_nid)
{ {
unsigned long uc_addr; unsigned long uc_addr;
struct gen_pool *pool; struct uncached_pool *uc_pool;
int nid; int nid;
if (unlikely(starting_nid >= MAX_NUMNODES)) if (unlikely(starting_nid >= MAX_NUMNODES))
@ -171,14 +198,14 @@ unsigned long uncached_alloc_page(int starting_nid)
do { do {
if (!node_online(nid)) if (!node_online(nid))
continue; continue;
pool = uncached_pool[nid]; uc_pool = &uncached_pools[nid];
if (pool == NULL) if (uc_pool->pool == NULL)
continue; continue;
do { do {
uc_addr = gen_pool_alloc(pool, PAGE_SIZE); uc_addr = gen_pool_alloc(uc_pool->pool, PAGE_SIZE);
if (uc_addr != 0) if (uc_addr != 0)
return uc_addr; return uc_addr;
} while (uncached_add_chunk(pool, nid) == 0); } while (uncached_add_chunk(uc_pool, nid) == 0);
} while ((nid = (nid + 1) % MAX_NUMNODES) != starting_nid); } while ((nid = (nid + 1) % MAX_NUMNODES) != starting_nid);
@ -197,7 +224,7 @@ EXPORT_SYMBOL(uncached_alloc_page);
void uncached_free_page(unsigned long uc_addr) void uncached_free_page(unsigned long uc_addr)
{ {
int nid = paddr_to_nid(uc_addr - __IA64_UNCACHED_OFFSET); int nid = paddr_to_nid(uc_addr - __IA64_UNCACHED_OFFSET);
struct gen_pool *pool = uncached_pool[nid]; struct gen_pool *pool = uncached_pools[nid].pool;
if (unlikely(pool == NULL)) if (unlikely(pool == NULL))
return; return;
@ -224,7 +251,7 @@ static int __init uncached_build_memmap(unsigned long uc_start,
unsigned long uc_end, void *arg) unsigned long uc_end, void *arg)
{ {
int nid = paddr_to_nid(uc_start - __IA64_UNCACHED_OFFSET); int nid = paddr_to_nid(uc_start - __IA64_UNCACHED_OFFSET);
struct gen_pool *pool = uncached_pool[nid]; struct gen_pool *pool = uncached_pools[nid].pool;
size_t size = uc_end - uc_start; size_t size = uc_end - uc_start;
touch_softlockup_watchdog(); touch_softlockup_watchdog();
@ -242,7 +269,8 @@ static int __init uncached_init(void)
int nid; int nid;
for_each_online_node(nid) { for_each_online_node(nid) {
uncached_pool[nid] = gen_pool_create(PAGE_SHIFT, nid); uncached_pools[nid].pool = gen_pool_create(PAGE_SHIFT, nid);
mutex_init(&uncached_pools[nid].add_chunk_mutex);
} }
efi_memmap_walk_uc(uncached_build_memmap, NULL); efi_memmap_walk_uc(uncached_build_memmap, NULL);

View File

@ -14,7 +14,7 @@ lib-y := __divsi3.o __udivsi3.o __modsi3.o __umodsi3.o \
lib-$(CONFIG_ITANIUM) += copy_page.o copy_user.o memcpy.o lib-$(CONFIG_ITANIUM) += copy_page.o copy_user.o memcpy.o
lib-$(CONFIG_MCKINLEY) += copy_page_mck.o memcpy_mck.o lib-$(CONFIG_MCKINLEY) += copy_page_mck.o memcpy_mck.o
lib-$(CONFIG_PERFMON) += carta_random.o lib-$(CONFIG_PERFMON) += carta_random.o
lib-$(CONFIG_MD_RAID5) += xor.o lib-$(CONFIG_MD_RAID456) += xor.o
AFLAGS___divdi3.o = AFLAGS___divdi3.o =
AFLAGS___udivdi3.o = -DUNSIGNED AFLAGS___udivdi3.o = -DUNSIGNED

View File

@ -27,6 +27,7 @@
#ifdef CONFIG_VIRTUAL_MEM_MAP #ifdef CONFIG_VIRTUAL_MEM_MAP
static unsigned long num_dma_physpages; static unsigned long num_dma_physpages;
static unsigned long max_gap;
#endif #endif
/** /**
@ -45,9 +46,15 @@ show_mem (void)
printk("Free swap: %6ldkB\n", nr_swap_pages<<(PAGE_SHIFT-10)); printk("Free swap: %6ldkB\n", nr_swap_pages<<(PAGE_SHIFT-10));
i = max_mapnr; i = max_mapnr;
while (i-- > 0) { for (i = 0; i < max_mapnr; i++) {
if (!pfn_valid(i)) if (!pfn_valid(i)) {
#ifdef CONFIG_VIRTUAL_MEM_MAP
if (max_gap < LARGE_GAP)
continue;
i = vmemmap_find_next_valid_pfn(0, i) - 1;
#endif
continue; continue;
}
total++; total++;
if (PageReserved(mem_map+i)) if (PageReserved(mem_map+i))
reserved++; reserved++;
@ -234,7 +241,6 @@ paging_init (void)
unsigned long zones_size[MAX_NR_ZONES]; unsigned long zones_size[MAX_NR_ZONES];
#ifdef CONFIG_VIRTUAL_MEM_MAP #ifdef CONFIG_VIRTUAL_MEM_MAP
unsigned long zholes_size[MAX_NR_ZONES]; unsigned long zholes_size[MAX_NR_ZONES];
unsigned long max_gap;
#endif #endif
/* initialize mem_map[] */ /* initialize mem_map[] */
@ -266,7 +272,6 @@ paging_init (void)
} }
} }
max_gap = 0;
efi_memmap_walk(find_largest_hole, (u64 *)&max_gap); efi_memmap_walk(find_largest_hole, (u64 *)&max_gap);
if (max_gap < LARGE_GAP) { if (max_gap < LARGE_GAP) {
vmem_map = (struct page *) 0; vmem_map = (struct page *) 0;
@ -277,7 +282,8 @@ paging_init (void)
/* allocate virtual_mem_map */ /* allocate virtual_mem_map */
map_size = PAGE_ALIGN(max_low_pfn * sizeof(struct page)); map_size = PAGE_ALIGN(ALIGN(max_low_pfn, MAX_ORDER_NR_PAGES) *
sizeof(struct page));
vmalloc_end -= map_size; vmalloc_end -= map_size;
vmem_map = (struct page *) vmalloc_end; vmem_map = (struct page *) vmalloc_end;
efi_memmap_walk(create_mem_map_page_table, NULL); efi_memmap_walk(create_mem_map_page_table, NULL);

View File

@ -534,68 +534,6 @@ void __cpuinit *per_cpu_init(void)
} }
#endif /* CONFIG_SMP */ #endif /* CONFIG_SMP */
#ifdef CONFIG_VIRTUAL_MEM_MAP
static inline int find_next_valid_pfn_for_pgdat(pg_data_t *pgdat, int i)
{
unsigned long end_address, hole_next_pfn;
unsigned long stop_address;
end_address = (unsigned long) &vmem_map[pgdat->node_start_pfn + i];
end_address = PAGE_ALIGN(end_address);
stop_address = (unsigned long) &vmem_map[
pgdat->node_start_pfn + pgdat->node_spanned_pages];
do {
pgd_t *pgd;
pud_t *pud;
pmd_t *pmd;
pte_t *pte;
pgd = pgd_offset_k(end_address);
if (pgd_none(*pgd)) {
end_address += PGDIR_SIZE;
continue;
}
pud = pud_offset(pgd, end_address);
if (pud_none(*pud)) {
end_address += PUD_SIZE;
continue;
}
pmd = pmd_offset(pud, end_address);
if (pmd_none(*pmd)) {
end_address += PMD_SIZE;
continue;
}
pte = pte_offset_kernel(pmd, end_address);
retry_pte:
if (pte_none(*pte)) {
end_address += PAGE_SIZE;
pte++;
if ((end_address < stop_address) &&
(end_address != ALIGN(end_address, 1UL << PMD_SHIFT)))
goto retry_pte;
continue;
}
/* Found next valid vmem_map page */
break;
} while (end_address < stop_address);
end_address = min(end_address, stop_address);
end_address = end_address - (unsigned long) vmem_map + sizeof(struct page) - 1;
hole_next_pfn = end_address / sizeof(struct page);
return hole_next_pfn - pgdat->node_start_pfn;
}
#else
static inline int find_next_valid_pfn_for_pgdat(pg_data_t *pgdat, int i)
{
return i + 1;
}
#endif
/** /**
* show_mem - give short summary of memory stats * show_mem - give short summary of memory stats
* *
@ -625,7 +563,8 @@ void show_mem(void)
if (pfn_valid(pgdat->node_start_pfn + i)) if (pfn_valid(pgdat->node_start_pfn + i))
page = pfn_to_page(pgdat->node_start_pfn + i); page = pfn_to_page(pgdat->node_start_pfn + i);
else { else {
i = find_next_valid_pfn_for_pgdat(pgdat, i) - 1; i = vmemmap_find_next_valid_pfn(pgdat->node_id,
i) - 1;
continue; continue;
} }
if (PageReserved(page)) if (PageReserved(page))
@ -751,7 +690,8 @@ void __init paging_init(void)
efi_memmap_walk(filter_rsvd_memory, count_node_pages); efi_memmap_walk(filter_rsvd_memory, count_node_pages);
#ifdef CONFIG_VIRTUAL_MEM_MAP #ifdef CONFIG_VIRTUAL_MEM_MAP
vmalloc_end -= PAGE_ALIGN(max_low_pfn * sizeof(struct page)); vmalloc_end -= PAGE_ALIGN(ALIGN(max_low_pfn, MAX_ORDER_NR_PAGES) *
sizeof(struct page));
vmem_map = (struct page *) vmalloc_end; vmem_map = (struct page *) vmalloc_end;
efi_memmap_walk(create_mem_map_page_table, NULL); efi_memmap_walk(create_mem_map_page_table, NULL);
printk("Virtual mem_map starts at 0x%p\n", vmem_map); printk("Virtual mem_map starts at 0x%p\n", vmem_map);

View File

@ -415,6 +415,61 @@ ia64_mmu_init (void *my_cpu_data)
} }
#ifdef CONFIG_VIRTUAL_MEM_MAP #ifdef CONFIG_VIRTUAL_MEM_MAP
int vmemmap_find_next_valid_pfn(int node, int i)
{
unsigned long end_address, hole_next_pfn;
unsigned long stop_address;
pg_data_t *pgdat = NODE_DATA(node);
end_address = (unsigned long) &vmem_map[pgdat->node_start_pfn + i];
end_address = PAGE_ALIGN(end_address);
stop_address = (unsigned long) &vmem_map[
pgdat->node_start_pfn + pgdat->node_spanned_pages];
do {
pgd_t *pgd;
pud_t *pud;
pmd_t *pmd;
pte_t *pte;
pgd = pgd_offset_k(end_address);
if (pgd_none(*pgd)) {
end_address += PGDIR_SIZE;
continue;
}
pud = pud_offset(pgd, end_address);
if (pud_none(*pud)) {
end_address += PUD_SIZE;
continue;
}
pmd = pmd_offset(pud, end_address);
if (pmd_none(*pmd)) {
end_address += PMD_SIZE;
continue;
}
pte = pte_offset_kernel(pmd, end_address);
retry_pte:
if (pte_none(*pte)) {
end_address += PAGE_SIZE;
pte++;
if ((end_address < stop_address) &&
(end_address != ALIGN(end_address, 1UL << PMD_SHIFT)))
goto retry_pte;
continue;
}
/* Found next valid vmem_map page */
break;
} while (end_address < stop_address);
end_address = min(end_address, stop_address);
end_address = end_address - (unsigned long) vmem_map + sizeof(struct page) - 1;
hole_next_pfn = end_address / sizeof(struct page);
return hole_next_pfn - pgdat->node_start_pfn;
}
int __init int __init
create_mem_map_page_table (u64 start, u64 end, void *arg) create_mem_map_page_table (u64 start, u64 end, void *arg)

View File

@ -32,7 +32,7 @@ ioremap (unsigned long offset, unsigned long size)
*/ */
attr = kern_mem_attribute(offset, size); attr = kern_mem_attribute(offset, size);
if (attr & EFI_MEMORY_WB) if (attr & EFI_MEMORY_WB)
return phys_to_virt(offset); return (void __iomem *) phys_to_virt(offset);
else if (attr & EFI_MEMORY_UC) else if (attr & EFI_MEMORY_UC)
return __ioremap(offset, size); return __ioremap(offset, size);
@ -43,7 +43,7 @@ ioremap (unsigned long offset, unsigned long size)
gran_base = GRANULEROUNDDOWN(offset); gran_base = GRANULEROUNDDOWN(offset);
gran_size = GRANULEROUNDUP(offset + size) - gran_base; gran_size = GRANULEROUNDUP(offset + size) - gran_base;
if (efi_mem_attribute(gran_base, gran_size) & EFI_MEMORY_WB) if (efi_mem_attribute(gran_base, gran_size) & EFI_MEMORY_WB)
return phys_to_virt(offset); return (void __iomem *) phys_to_virt(offset);
return __ioremap(offset, size); return __ioremap(offset, size);
} }
@ -53,7 +53,7 @@ void __iomem *
ioremap_nocache (unsigned long offset, unsigned long size) ioremap_nocache (unsigned long offset, unsigned long size)
{ {
if (kern_mem_attribute(offset, size) & EFI_MEMORY_WB) if (kern_mem_attribute(offset, size) & EFI_MEMORY_WB)
return 0; return NULL;
return __ioremap(offset, size); return __ioremap(offset, size);
} }

View File

@ -480,7 +480,7 @@ xpc_activating(void *__partid)
partid_t partid = (u64) __partid; partid_t partid = (u64) __partid;
struct xpc_partition *part = &xpc_partitions[partid]; struct xpc_partition *part = &xpc_partitions[partid];
unsigned long irq_flags; unsigned long irq_flags;
struct sched_param param = { sched_priority: MAX_RT_PRIO - 1 }; struct sched_param param = { .sched_priority = MAX_RT_PRIO - 1 };
int ret; int ret;

View File

@ -74,7 +74,7 @@ tioce_mmr_war_pre(struct tioce_kernel *kern, void *mmr_addr)
else else
mmr_war_offset = 0x158; mmr_war_offset = 0x158;
readq_relaxed((void *)(mmr_base + mmr_war_offset)); readq_relaxed((void __iomem *)(mmr_base + mmr_war_offset));
} }
} }
@ -92,8 +92,8 @@ tioce_mmr_war_post(struct tioce_kernel *kern, void *mmr_addr)
if (mmr_offset < 0x45000) { if (mmr_offset < 0x45000) {
if (mmr_offset == 0x100) if (mmr_offset == 0x100)
readq_relaxed((void *)(mmr_base + 0x38)); readq_relaxed((void __iomem *)(mmr_base + 0x38));
readq_relaxed((void *)(mmr_base + 0xb050)); readq_relaxed((void __iomem *)(mmr_base + 0xb050));
} }
} }

View File

@ -204,6 +204,7 @@ SECTIONS
*(.dynstr) *(.dynstr)
*(.dynamic) *(.dynamic)
*(.hash) *(.hash)
*(.gnu.hash)
#endif #endif
} }

View File

@ -504,7 +504,7 @@ config CPU_FREQ_PMAC
config CPU_FREQ_PMAC64 config CPU_FREQ_PMAC64
bool "Support for some Apple G5s" bool "Support for some Apple G5s"
depends on CPU_FREQ && PMAC_SMU && PPC64 depends on CPU_FREQ && PPC64
select CPU_FREQ_TABLE select CPU_FREQ_TABLE
help help
This adds support for frequency switching on Apple iMac G5, This adds support for frequency switching on Apple iMac G5,

View File

@ -1,16 +1,18 @@
# #
# Automatically generated make config: don't edit # Automatically generated make config: don't edit
# Linux kernel version: 2.6.17-rc5 # Linux kernel version: 2.6.17
# Mon May 29 14:47:49 2006 # Mon Jul 3 14:20:49 2006
# #
# CONFIG_PPC64 is not set # CONFIG_PPC64 is not set
CONFIG_PPC32=y CONFIG_PPC32=y
CONFIG_PPC_MERGE=y CONFIG_PPC_MERGE=y
CONFIG_MMU=y CONFIG_MMU=y
CONFIG_GENERIC_HARDIRQS=y CONFIG_GENERIC_HARDIRQS=y
CONFIG_IRQ_PER_CPU=y
CONFIG_RWSEM_XCHGADD_ALGORITHM=y CONFIG_RWSEM_XCHGADD_ALGORITHM=y
CONFIG_GENERIC_HWEIGHT=y CONFIG_GENERIC_HWEIGHT=y
CONFIG_GENERIC_CALIBRATE_DELAY=y CONFIG_GENERIC_CALIBRATE_DELAY=y
CONFIG_GENERIC_FIND_NEXT_BIT=y
CONFIG_PPC=y CONFIG_PPC=y
CONFIG_EARLY_PRINTK=y CONFIG_EARLY_PRINTK=y
CONFIG_GENERIC_NVRAM=y CONFIG_GENERIC_NVRAM=y
@ -29,6 +31,7 @@ CONFIG_CLASSIC32=y
# CONFIG_PPC_82xx is not set # CONFIG_PPC_82xx is not set
# CONFIG_PPC_83xx is not set # CONFIG_PPC_83xx is not set
# CONFIG_PPC_85xx is not set # CONFIG_PPC_85xx is not set
# CONFIG_PPC_86xx is not set
# CONFIG_40x is not set # CONFIG_40x is not set
# CONFIG_44x is not set # CONFIG_44x is not set
# CONFIG_8xx is not set # CONFIG_8xx is not set
@ -39,6 +42,7 @@ CONFIG_ALTIVEC=y
CONFIG_PPC_STD_MMU=y CONFIG_PPC_STD_MMU=y
CONFIG_PPC_STD_MMU_32=y CONFIG_PPC_STD_MMU_32=y
# CONFIG_SMP is not set # CONFIG_SMP is not set
CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
# #
# Code maturity level options # Code maturity level options
@ -72,10 +76,12 @@ CONFIG_PRINTK=y
CONFIG_BUG=y CONFIG_BUG=y
CONFIG_ELF_CORE=y CONFIG_ELF_CORE=y
CONFIG_BASE_FULL=y CONFIG_BASE_FULL=y
CONFIG_RT_MUTEXES=y
CONFIG_FUTEX=y CONFIG_FUTEX=y
CONFIG_EPOLL=y CONFIG_EPOLL=y
CONFIG_SHMEM=y CONFIG_SHMEM=y
CONFIG_SLAB=y CONFIG_SLAB=y
CONFIG_VM_EVENT_COUNTERS=y
# CONFIG_TINY_SHMEM is not set # CONFIG_TINY_SHMEM is not set
CONFIG_BASE_SMALL=0 CONFIG_BASE_SMALL=0
# CONFIG_SLOB is not set # CONFIG_SLOB is not set
@ -119,6 +125,9 @@ CONFIG_PPC_MULTIPLATFORM=y
# CONFIG_APUS is not set # CONFIG_APUS is not set
# CONFIG_PPC_CHRP is not set # CONFIG_PPC_CHRP is not set
CONFIG_PPC_PMAC=y CONFIG_PPC_PMAC=y
# CONFIG_PPC_CELL is not set
# CONFIG_PPC_CELL_NATIVE is not set
# CONFIG_UDBG_RTAS_CONSOLE is not set
CONFIG_MPIC=y CONFIG_MPIC=y
# CONFIG_PPC_RTAS is not set # CONFIG_PPC_RTAS is not set
# CONFIG_MMIO_NVRAM is not set # CONFIG_MMIO_NVRAM is not set
@ -154,6 +163,7 @@ CONFIG_PREEMPT_NONE=y
# CONFIG_PREEMPT is not set # CONFIG_PREEMPT is not set
CONFIG_BINFMT_ELF=y CONFIG_BINFMT_ELF=y
CONFIG_BINFMT_MISC=m CONFIG_BINFMT_MISC=m
CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y
# CONFIG_KEXEC is not set # CONFIG_KEXEC is not set
CONFIG_ARCH_FLATMEM_ENABLE=y CONFIG_ARCH_FLATMEM_ENABLE=y
CONFIG_SELECT_MEMORY_MODEL=y CONFIG_SELECT_MEMORY_MODEL=y
@ -164,6 +174,7 @@ CONFIG_FLATMEM=y
CONFIG_FLAT_NODE_MEM_MAP=y CONFIG_FLAT_NODE_MEM_MAP=y
# CONFIG_SPARSEMEM_STATIC is not set # CONFIG_SPARSEMEM_STATIC is not set
CONFIG_SPLIT_PTLOCK_CPUS=4 CONFIG_SPLIT_PTLOCK_CPUS=4
# CONFIG_RESOURCES_64BIT is not set
CONFIG_PROC_DEVICETREE=y CONFIG_PROC_DEVICETREE=y
# CONFIG_CMDLINE_BOOL is not set # CONFIG_CMDLINE_BOOL is not set
CONFIG_PM=y CONFIG_PM=y
@ -182,6 +193,7 @@ CONFIG_GENERIC_ISA_DMA=y
CONFIG_PPC_INDIRECT_PCI=y CONFIG_PPC_INDIRECT_PCI=y
CONFIG_PCI=y CONFIG_PCI=y
CONFIG_PCI_DOMAINS=y CONFIG_PCI_DOMAINS=y
# CONFIG_PCIEPORTBUS is not set
# CONFIG_PCI_DEBUG is not set # CONFIG_PCI_DEBUG is not set
# #
@ -256,6 +268,8 @@ CONFIG_INET_ESP=y
# CONFIG_INET_IPCOMP is not set # CONFIG_INET_IPCOMP is not set
# CONFIG_INET_XFRM_TUNNEL is not set # CONFIG_INET_XFRM_TUNNEL is not set
# CONFIG_INET_TUNNEL is not set # CONFIG_INET_TUNNEL is not set
# CONFIG_INET_XFRM_MODE_TRANSPORT is not set
# CONFIG_INET_XFRM_MODE_TUNNEL is not set
CONFIG_INET_DIAG=y CONFIG_INET_DIAG=y
CONFIG_INET_TCP_DIAG=y CONFIG_INET_TCP_DIAG=y
# CONFIG_TCP_CONG_ADVANCED is not set # CONFIG_TCP_CONG_ADVANCED is not set
@ -268,6 +282,7 @@ CONFIG_TCP_CONG_BIC=y
# CONFIG_IPV6 is not set # CONFIG_IPV6 is not set
# CONFIG_INET6_XFRM_TUNNEL is not set # CONFIG_INET6_XFRM_TUNNEL is not set
# CONFIG_INET6_TUNNEL is not set # CONFIG_INET6_TUNNEL is not set
# CONFIG_NETWORK_SECMARK is not set
CONFIG_NETFILTER=y CONFIG_NETFILTER=y
# CONFIG_NETFILTER_DEBUG is not set # CONFIG_NETFILTER_DEBUG is not set
@ -292,9 +307,11 @@ CONFIG_NETFILTER_XT_MATCH_MARK=m
CONFIG_NETFILTER_XT_MATCH_POLICY=m CONFIG_NETFILTER_XT_MATCH_POLICY=m
CONFIG_NETFILTER_XT_MATCH_MULTIPORT=m CONFIG_NETFILTER_XT_MATCH_MULTIPORT=m
CONFIG_NETFILTER_XT_MATCH_PKTTYPE=m CONFIG_NETFILTER_XT_MATCH_PKTTYPE=m
# CONFIG_NETFILTER_XT_MATCH_QUOTA is not set
CONFIG_NETFILTER_XT_MATCH_REALM=m CONFIG_NETFILTER_XT_MATCH_REALM=m
CONFIG_NETFILTER_XT_MATCH_SCTP=m CONFIG_NETFILTER_XT_MATCH_SCTP=m
CONFIG_NETFILTER_XT_MATCH_STATE=m CONFIG_NETFILTER_XT_MATCH_STATE=m
# CONFIG_NETFILTER_XT_MATCH_STATISTIC is not set
CONFIG_NETFILTER_XT_MATCH_STRING=m CONFIG_NETFILTER_XT_MATCH_STRING=m
CONFIG_NETFILTER_XT_MATCH_TCPMSS=m CONFIG_NETFILTER_XT_MATCH_TCPMSS=m
@ -313,6 +330,7 @@ CONFIG_IP_NF_TFTP=m
CONFIG_IP_NF_AMANDA=m CONFIG_IP_NF_AMANDA=m
CONFIG_IP_NF_PPTP=m CONFIG_IP_NF_PPTP=m
CONFIG_IP_NF_H323=m CONFIG_IP_NF_H323=m
# CONFIG_IP_NF_SIP is not set
# CONFIG_IP_NF_QUEUE is not set # CONFIG_IP_NF_QUEUE is not set
CONFIG_IP_NF_IPTABLES=m CONFIG_IP_NF_IPTABLES=m
CONFIG_IP_NF_MATCH_IPRANGE=m CONFIG_IP_NF_MATCH_IPRANGE=m
@ -457,6 +475,7 @@ CONFIG_IRTTY_SIR=m
# CONFIG_ALI_FIR is not set # CONFIG_ALI_FIR is not set
# CONFIG_VLSI_FIR is not set # CONFIG_VLSI_FIR is not set
# CONFIG_VIA_FIR is not set # CONFIG_VIA_FIR is not set
# CONFIG_MCS_FIR is not set
CONFIG_BT=m CONFIG_BT=m
CONFIG_BT_L2CAP=m CONFIG_BT_L2CAP=m
CONFIG_BT_SCO=m CONFIG_BT_SCO=m
@ -500,6 +519,7 @@ CONFIG_WIRELESS_EXT=y
CONFIG_PREVENT_FIRMWARE_BUILD=y CONFIG_PREVENT_FIRMWARE_BUILD=y
CONFIG_FW_LOADER=y CONFIG_FW_LOADER=y
# CONFIG_DEBUG_DRIVER is not set # CONFIG_DEBUG_DRIVER is not set
# CONFIG_SYS_HYPERVISOR is not set
# #
# Connector - unified userspace <-> kernelspace linker # Connector - unified userspace <-> kernelspace linker
@ -600,7 +620,6 @@ CONFIG_BLK_DEV_PDC202XX_NEW=y
CONFIG_BLK_DEV_IDE_PMAC=y CONFIG_BLK_DEV_IDE_PMAC=y
CONFIG_BLK_DEV_IDE_PMAC_ATA100FIRST=y CONFIG_BLK_DEV_IDE_PMAC_ATA100FIRST=y
CONFIG_BLK_DEV_IDEDMA_PMAC=y CONFIG_BLK_DEV_IDEDMA_PMAC=y
CONFIG_BLK_DEV_IDE_PMAC_BLINK=y
# CONFIG_IDE_ARM is not set # CONFIG_IDE_ARM is not set
CONFIG_BLK_DEV_IDEDMA=y CONFIG_BLK_DEV_IDEDMA=y
# CONFIG_IDEDMA_IVB is not set # CONFIG_IDEDMA_IVB is not set
@ -661,6 +680,7 @@ CONFIG_SCSI_AIC7XXX_OLD=m
# CONFIG_MEGARAID_LEGACY is not set # CONFIG_MEGARAID_LEGACY is not set
# CONFIG_MEGARAID_SAS is not set # CONFIG_MEGARAID_SAS is not set
# CONFIG_SCSI_SATA is not set # CONFIG_SCSI_SATA is not set
# CONFIG_SCSI_HPTIOP is not set
# CONFIG_SCSI_BUSLOGIC is not set # CONFIG_SCSI_BUSLOGIC is not set
# CONFIG_SCSI_DMX3191D is not set # CONFIG_SCSI_DMX3191D is not set
# CONFIG_SCSI_EATA is not set # CONFIG_SCSI_EATA is not set
@ -705,9 +725,7 @@ CONFIG_MD_LINEAR=m
CONFIG_MD_RAID0=m CONFIG_MD_RAID0=m
CONFIG_MD_RAID1=m CONFIG_MD_RAID1=m
CONFIG_MD_RAID10=m CONFIG_MD_RAID10=m
CONFIG_MD_RAID5=m # CONFIG_MD_RAID456 is not set
CONFIG_MD_RAID5_RESHAPE=y
CONFIG_MD_RAID6=m
CONFIG_MD_MULTIPATH=m CONFIG_MD_MULTIPATH=m
CONFIG_MD_FAULTY=m CONFIG_MD_FAULTY=m
CONFIG_BLK_DEV_DM=m CONFIG_BLK_DEV_DM=m
@ -750,7 +768,6 @@ CONFIG_IEEE1394_OHCI1394=m
# #
CONFIG_IEEE1394_VIDEO1394=m CONFIG_IEEE1394_VIDEO1394=m
CONFIG_IEEE1394_SBP2=m CONFIG_IEEE1394_SBP2=m
# CONFIG_IEEE1394_SBP2_PHYS_DMA is not set
# CONFIG_IEEE1394_ETH1394 is not set # CONFIG_IEEE1394_ETH1394 is not set
CONFIG_IEEE1394_DV1394=m CONFIG_IEEE1394_DV1394=m
CONFIG_IEEE1394_RAWIO=m CONFIG_IEEE1394_RAWIO=m
@ -766,9 +783,12 @@ CONFIG_IEEE1394_RAWIO=m
CONFIG_ADB=y CONFIG_ADB=y
CONFIG_ADB_CUDA=y CONFIG_ADB_CUDA=y
CONFIG_ADB_PMU=y CONFIG_ADB_PMU=y
CONFIG_ADB_PMU_LED=y
CONFIG_ADB_PMU_LED_IDE=y
CONFIG_PMAC_APM_EMU=m CONFIG_PMAC_APM_EMU=m
CONFIG_PMAC_MEDIABAY=y CONFIG_PMAC_MEDIABAY=y
CONFIG_PMAC_BACKLIGHT=y CONFIG_PMAC_BACKLIGHT=y
CONFIG_PMAC_BACKLIGHT_LEGACY=y
CONFIG_INPUT_ADBHID=y CONFIG_INPUT_ADBHID=y
CONFIG_MAC_EMUMOUSEBTN=y CONFIG_MAC_EMUMOUSEBTN=y
CONFIG_THERM_WINDTUNNEL=m CONFIG_THERM_WINDTUNNEL=m
@ -858,6 +878,7 @@ CONFIG_PCNET32=y
# CONFIG_CHELSIO_T1 is not set # CONFIG_CHELSIO_T1 is not set
# CONFIG_IXGB is not set # CONFIG_IXGB is not set
# CONFIG_S2IO is not set # CONFIG_S2IO is not set
# CONFIG_MYRI10GE is not set
# #
# Token Ring devices # Token Ring devices
@ -908,6 +929,7 @@ CONFIG_APPLE_AIRPORT=m
# Prism GT/Duette 802.11(a/b/g) PCI/Cardbus support # Prism GT/Duette 802.11(a/b/g) PCI/Cardbus support
# #
CONFIG_PRISM54=m CONFIG_PRISM54=m
# CONFIG_USB_ZD1201 is not set
# CONFIG_HOSTAP is not set # CONFIG_HOSTAP is not set
CONFIG_NET_WIRELESS=y CONFIG_NET_WIRELESS=y
@ -998,6 +1020,7 @@ CONFIG_SERIO=y
CONFIG_VT=y CONFIG_VT=y
CONFIG_VT_CONSOLE=y CONFIG_VT_CONSOLE=y
CONFIG_HW_CONSOLE=y CONFIG_HW_CONSOLE=y
# CONFIG_VT_HW_CONSOLE_BINDING is not set
# CONFIG_SERIAL_NONSTANDARD is not set # CONFIG_SERIAL_NONSTANDARD is not set
# #
@ -1029,6 +1052,7 @@ CONFIG_LEGACY_PTY_COUNT=256
# Watchdog Cards # Watchdog Cards
# #
# CONFIG_WATCHDOG is not set # CONFIG_WATCHDOG is not set
# CONFIG_HW_RANDOM is not set
CONFIG_NVRAM=y CONFIG_NVRAM=y
CONFIG_GEN_RTC=y CONFIG_GEN_RTC=y
# CONFIG_GEN_RTC_X is not set # CONFIG_GEN_RTC_X is not set
@ -1040,6 +1064,7 @@ CONFIG_GEN_RTC=y
# Ftape, the floppy tape device driver # Ftape, the floppy tape device driver
# #
CONFIG_AGP=m CONFIG_AGP=m
# CONFIG_AGP_SIS is not set
# CONFIG_AGP_VIA is not set # CONFIG_AGP_VIA is not set
CONFIG_AGP_UNINORTH=m CONFIG_AGP_UNINORTH=m
CONFIG_DRM=m CONFIG_DRM=m
@ -1092,6 +1117,7 @@ CONFIG_I2C_ALGOBIT=y
CONFIG_I2C_POWERMAC=y CONFIG_I2C_POWERMAC=y
# CONFIG_I2C_MPC is not set # CONFIG_I2C_MPC is not set
# CONFIG_I2C_NFORCE2 is not set # CONFIG_I2C_NFORCE2 is not set
# CONFIG_I2C_OCORES is not set
# CONFIG_I2C_PARPORT_LIGHT is not set # CONFIG_I2C_PARPORT_LIGHT is not set
# CONFIG_I2C_PROSAVAGE is not set # CONFIG_I2C_PROSAVAGE is not set
# CONFIG_I2C_SAVAGE4 is not set # CONFIG_I2C_SAVAGE4 is not set
@ -1156,12 +1182,13 @@ CONFIG_VIDEO_V4L2=y
# #
# Graphics support # Graphics support
# #
# CONFIG_FIRMWARE_EDID is not set
CONFIG_FB=y CONFIG_FB=y
CONFIG_FB_CFB_FILLRECT=y CONFIG_FB_CFB_FILLRECT=y
CONFIG_FB_CFB_COPYAREA=y CONFIG_FB_CFB_COPYAREA=y
CONFIG_FB_CFB_IMAGEBLIT=y CONFIG_FB_CFB_IMAGEBLIT=y
CONFIG_FB_MACMODES=y CONFIG_FB_MACMODES=y
CONFIG_FB_FIRMWARE_EDID=y CONFIG_FB_BACKLIGHT=y
CONFIG_FB_MODE_HELPERS=y CONFIG_FB_MODE_HELPERS=y
CONFIG_FB_TILEBLITTING=y CONFIG_FB_TILEBLITTING=y
# CONFIG_FB_CIRRUS is not set # CONFIG_FB_CIRRUS is not set
@ -1178,6 +1205,7 @@ CONFIG_FB_IMSTT=y
# CONFIG_FB_S1D13XXX is not set # CONFIG_FB_S1D13XXX is not set
CONFIG_FB_NVIDIA=y CONFIG_FB_NVIDIA=y
CONFIG_FB_NVIDIA_I2C=y CONFIG_FB_NVIDIA_I2C=y
CONFIG_FB_NVIDIA_BACKLIGHT=y
# CONFIG_FB_RIVA is not set # CONFIG_FB_RIVA is not set
CONFIG_FB_MATROX=y CONFIG_FB_MATROX=y
CONFIG_FB_MATROX_MILLENIUM=y CONFIG_FB_MATROX_MILLENIUM=y
@ -1187,12 +1215,15 @@ CONFIG_FB_MATROX_MYSTIQUE=y
# CONFIG_FB_MATROX_MULTIHEAD is not set # CONFIG_FB_MATROX_MULTIHEAD is not set
CONFIG_FB_RADEON=y CONFIG_FB_RADEON=y
CONFIG_FB_RADEON_I2C=y CONFIG_FB_RADEON_I2C=y
CONFIG_FB_RADEON_BACKLIGHT=y
# CONFIG_FB_RADEON_DEBUG is not set # CONFIG_FB_RADEON_DEBUG is not set
CONFIG_FB_ATY128=y CONFIG_FB_ATY128=y
CONFIG_FB_ATY128_BACKLIGHT=y
CONFIG_FB_ATY=y CONFIG_FB_ATY=y
CONFIG_FB_ATY_CT=y CONFIG_FB_ATY_CT=y
# CONFIG_FB_ATY_GENERIC_LCD is not set # CONFIG_FB_ATY_GENERIC_LCD is not set
CONFIG_FB_ATY_GX=y CONFIG_FB_ATY_GX=y
CONFIG_FB_ATY_BACKLIGHT=y
# CONFIG_FB_SAVAGE is not set # CONFIG_FB_SAVAGE is not set
# CONFIG_FB_SIS is not set # CONFIG_FB_SIS is not set
# CONFIG_FB_NEOMAGIC is not set # CONFIG_FB_NEOMAGIC is not set
@ -1221,7 +1252,11 @@ CONFIG_LOGO=y
CONFIG_LOGO_LINUX_MONO=y CONFIG_LOGO_LINUX_MONO=y
CONFIG_LOGO_LINUX_VGA16=y CONFIG_LOGO_LINUX_VGA16=y
CONFIG_LOGO_LINUX_CLUT224=y CONFIG_LOGO_LINUX_CLUT224=y
# CONFIG_BACKLIGHT_LCD_SUPPORT is not set CONFIG_BACKLIGHT_LCD_SUPPORT=y
CONFIG_BACKLIGHT_CLASS_DEVICE=y
CONFIG_BACKLIGHT_DEVICE=y
CONFIG_LCD_CLASS_DEVICE=m
CONFIG_LCD_DEVICE=y
# #
# Sound # Sound
@ -1278,6 +1313,18 @@ CONFIG_SND_DUMMY=m
# CONFIG_SND_CMIPCI is not set # CONFIG_SND_CMIPCI is not set
# CONFIG_SND_CS4281 is not set # CONFIG_SND_CS4281 is not set
# CONFIG_SND_CS46XX is not set # CONFIG_SND_CS46XX is not set
# CONFIG_SND_DARLA20 is not set
# CONFIG_SND_GINA20 is not set
# CONFIG_SND_LAYLA20 is not set
# CONFIG_SND_DARLA24 is not set
# CONFIG_SND_GINA24 is not set
# CONFIG_SND_LAYLA24 is not set
# CONFIG_SND_MONA is not set
# CONFIG_SND_MIA is not set
# CONFIG_SND_ECHO3G is not set
# CONFIG_SND_INDIGO is not set
# CONFIG_SND_INDIGOIO is not set
# CONFIG_SND_INDIGODJ is not set
# CONFIG_SND_EMU10K1 is not set # CONFIG_SND_EMU10K1 is not set
# CONFIG_SND_EMU10K1X is not set # CONFIG_SND_EMU10K1X is not set
# CONFIG_SND_ENS1370 is not set # CONFIG_SND_ENS1370 is not set
@ -1314,6 +1361,17 @@ CONFIG_SND_DUMMY=m
CONFIG_SND_POWERMAC=m CONFIG_SND_POWERMAC=m
CONFIG_SND_POWERMAC_AUTO_DRC=y CONFIG_SND_POWERMAC_AUTO_DRC=y
#
# Apple Onboard Audio driver
#
CONFIG_SND_AOA=m
CONFIG_SND_AOA_FABRIC_LAYOUT=m
CONFIG_SND_AOA_ONYX=m
CONFIG_SND_AOA_TAS=m
CONFIG_SND_AOA_TOONIE=m
CONFIG_SND_AOA_SOUNDBUS=m
CONFIG_SND_AOA_SOUNDBUS_I2S=m
# #
# USB devices # USB devices
# #
@ -1355,6 +1413,7 @@ CONFIG_USB_DYNAMIC_MINORS=y
CONFIG_USB_EHCI_HCD=m CONFIG_USB_EHCI_HCD=m
CONFIG_USB_EHCI_SPLIT_ISO=y CONFIG_USB_EHCI_SPLIT_ISO=y
CONFIG_USB_EHCI_ROOT_HUB_TT=y CONFIG_USB_EHCI_ROOT_HUB_TT=y
# CONFIG_USB_EHCI_TT_NEWSCHED is not set
# CONFIG_USB_ISP116X_HCD is not set # CONFIG_USB_ISP116X_HCD is not set
CONFIG_USB_OHCI_HCD=y CONFIG_USB_OHCI_HCD=y
# CONFIG_USB_OHCI_BIG_ENDIAN is not set # CONFIG_USB_OHCI_BIG_ENDIAN is not set
@ -1431,7 +1490,6 @@ CONFIG_USB_NET_NET1080=m
# CONFIG_USB_NET_RNDIS_HOST is not set # CONFIG_USB_NET_RNDIS_HOST is not set
# CONFIG_USB_NET_CDC_SUBSET is not set # CONFIG_USB_NET_CDC_SUBSET is not set
CONFIG_USB_NET_ZAURUS=m CONFIG_USB_NET_ZAURUS=m
# CONFIG_USB_ZD1201 is not set
CONFIG_USB_MON=y CONFIG_USB_MON=y
# #
@ -1499,10 +1557,12 @@ CONFIG_USB_EZUSB=y
# CONFIG_USB_LEGOTOWER is not set # CONFIG_USB_LEGOTOWER is not set
# CONFIG_USB_LCD is not set # CONFIG_USB_LCD is not set
# CONFIG_USB_LED is not set # CONFIG_USB_LED is not set
# CONFIG_USB_CY7C63 is not set
# CONFIG_USB_CYTHERM is not set # CONFIG_USB_CYTHERM is not set
# CONFIG_USB_PHIDGETKIT is not set # CONFIG_USB_PHIDGETKIT is not set
# CONFIG_USB_PHIDGETSERVO is not set # CONFIG_USB_PHIDGETSERVO is not set
# CONFIG_USB_IDMOUSE is not set # CONFIG_USB_IDMOUSE is not set
CONFIG_USB_APPLEDISPLAY=m
# CONFIG_USB_SISUSBVGA is not set # CONFIG_USB_SISUSBVGA is not set
# CONFIG_USB_LD is not set # CONFIG_USB_LD is not set
# CONFIG_USB_TEST is not set # CONFIG_USB_TEST is not set
@ -1524,7 +1584,8 @@ CONFIG_USB_EZUSB=y
# #
# LED devices # LED devices
# #
# CONFIG_NEW_LEDS is not set CONFIG_NEW_LEDS=y
CONFIG_LEDS_CLASS=y
# #
# LED drivers # LED drivers
@ -1533,6 +1594,10 @@ CONFIG_USB_EZUSB=y
# #
# LED Triggers # LED Triggers
# #
CONFIG_LEDS_TRIGGERS=y
# CONFIG_LEDS_TRIGGER_TIMER is not set
CONFIG_LEDS_TRIGGER_IDE_DISK=y
# CONFIG_LEDS_TRIGGER_HEARTBEAT is not set
# #
# InfiniBand support # InfiniBand support
@ -1548,6 +1613,19 @@ CONFIG_USB_EZUSB=y
# #
# CONFIG_RTC_CLASS is not set # CONFIG_RTC_CLASS is not set
#
# DMA Engine support
#
# CONFIG_DMA_ENGINE is not set
#
# DMA Clients
#
#
# DMA Devices
#
# #
# File systems # File systems
# #
@ -1569,6 +1647,7 @@ CONFIG_FS_POSIX_ACL=y
# CONFIG_MINIX_FS is not set # CONFIG_MINIX_FS is not set
# CONFIG_ROMFS_FS is not set # CONFIG_ROMFS_FS is not set
CONFIG_INOTIFY=y CONFIG_INOTIFY=y
CONFIG_INOTIFY_USER=y
# CONFIG_QUOTA is not set # CONFIG_QUOTA is not set
CONFIG_DNOTIFY=y CONFIG_DNOTIFY=y
# CONFIG_AUTOFS_FS is not set # CONFIG_AUTOFS_FS is not set
@ -1649,6 +1728,7 @@ CONFIG_RPCSEC_GSS_KRB5=y
CONFIG_SMB_FS=m CONFIG_SMB_FS=m
# CONFIG_SMB_NLS_DEFAULT is not set # CONFIG_SMB_NLS_DEFAULT is not set
# CONFIG_CIFS is not set # CONFIG_CIFS is not set
# CONFIG_CIFS_DEBUG2 is not set
# CONFIG_NCP_FS is not set # CONFIG_NCP_FS is not set
# CONFIG_CODA_FS is not set # CONFIG_CODA_FS is not set
# CONFIG_AFS_FS is not set # CONFIG_AFS_FS is not set
@ -1732,6 +1812,7 @@ CONFIG_TEXTSEARCH=y
CONFIG_TEXTSEARCH_KMP=m CONFIG_TEXTSEARCH_KMP=m
CONFIG_TEXTSEARCH_BM=m CONFIG_TEXTSEARCH_BM=m
CONFIG_TEXTSEARCH_FSM=m CONFIG_TEXTSEARCH_FSM=m
CONFIG_PLIST=y
# #
# Instrumentation Support # Instrumentation Support
@ -1744,12 +1825,15 @@ CONFIG_OPROFILE=y
# #
# CONFIG_PRINTK_TIME is not set # CONFIG_PRINTK_TIME is not set
# CONFIG_MAGIC_SYSRQ is not set # CONFIG_MAGIC_SYSRQ is not set
# CONFIG_UNUSED_SYMBOLS is not set
CONFIG_DEBUG_KERNEL=y CONFIG_DEBUG_KERNEL=y
CONFIG_LOG_BUF_SHIFT=14 CONFIG_LOG_BUF_SHIFT=14
CONFIG_DETECT_SOFTLOCKUP=y CONFIG_DETECT_SOFTLOCKUP=y
# CONFIG_SCHEDSTATS is not set # CONFIG_SCHEDSTATS is not set
# CONFIG_DEBUG_SLAB is not set # CONFIG_DEBUG_SLAB is not set
# CONFIG_DEBUG_MUTEXES is not set # CONFIG_DEBUG_MUTEXES is not set
# CONFIG_DEBUG_RT_MUTEXES is not set
# CONFIG_RT_MUTEX_TESTER is not set
# CONFIG_DEBUG_SPINLOCK is not set # CONFIG_DEBUG_SPINLOCK is not set
# CONFIG_DEBUG_SPINLOCK_SLEEP is not set # CONFIG_DEBUG_SPINLOCK_SLEEP is not set
# CONFIG_DEBUG_KOBJECT is not set # CONFIG_DEBUG_KOBJECT is not set
@ -1763,11 +1847,7 @@ CONFIG_XMON=y
CONFIG_XMON_DEFAULT=y CONFIG_XMON_DEFAULT=y
# CONFIG_BDI_SWITCH is not set # CONFIG_BDI_SWITCH is not set
CONFIG_BOOTX_TEXT=y CONFIG_BOOTX_TEXT=y
# CONFIG_PPC_EARLY_DEBUG_LPAR is not set # CONFIG_PPC_EARLY_DEBUG is not set
# CONFIG_PPC_EARLY_DEBUG_G5 is not set
# CONFIG_PPC_EARLY_DEBUG_RTAS is not set
# CONFIG_PPC_EARLY_DEBUG_MAPLE is not set
# CONFIG_PPC_EARLY_DEBUG_ISERIES is not set
# #
# Security options # Security options

Some files were not shown because too many files have changed in this diff Show More