Merge ../linus
This commit is contained in:
commit
be37bdbce7
|
@ -237,8 +237,10 @@ X!Ilib/string.c
|
||||||
<sect1><title>Driver Support</title>
|
<sect1><title>Driver Support</title>
|
||||||
!Enet/core/dev.c
|
!Enet/core/dev.c
|
||||||
!Enet/ethernet/eth.c
|
!Enet/ethernet/eth.c
|
||||||
!Einclude/linux/etherdevice.h
|
!Iinclude/linux/etherdevice.h
|
||||||
!Enet/core/wireless.c
|
<!-- FIXME: Removed for now since no structured comments in source
|
||||||
|
X!Enet/core/wireless.c
|
||||||
|
-->
|
||||||
</sect1>
|
</sect1>
|
||||||
<sect1><title>Synchronous PPP</title>
|
<sect1><title>Synchronous PPP</title>
|
||||||
!Edrivers/net/wan/syncppp.c
|
!Edrivers/net/wan/syncppp.c
|
||||||
|
|
|
@ -12,7 +12,7 @@ This release has been validated against the SoftFloat-2b library by
|
||||||
John R. Hauser using the TestFloat-2a test suite. Details of this
|
John R. Hauser using the TestFloat-2a test suite. Details of this
|
||||||
library and test suite can be found at:
|
library and test suite can be found at:
|
||||||
|
|
||||||
http://www.cs.berkeley.edu/~jhauser/arithmetic/SoftFloat.html
|
http://www.jhauser.us/arithmetic/SoftFloat.html
|
||||||
|
|
||||||
The operations which have been tested with this package are:
|
The operations which have been tested with this package are:
|
||||||
|
|
||||||
|
|
|
@ -60,7 +60,6 @@ Some very frequently asked questions about linuxtv-dvb
|
||||||
Metzler Bros. DVB development; alternate drivers and
|
Metzler Bros. DVB development; alternate drivers and
|
||||||
DVB utilities, include dvb-mpegtools and tuxzap.
|
DVB utilities, include dvb-mpegtools and tuxzap.
|
||||||
|
|
||||||
http://www.linuxstb.org/
|
|
||||||
http://sourceforge.net/projects/dvbtools/
|
http://sourceforge.net/projects/dvbtools/
|
||||||
Dave Chapman's dvbtools package, including
|
Dave Chapman's dvbtools package, including
|
||||||
dvbstream and dvbtune
|
dvbstream and dvbtune
|
||||||
|
|
|
@ -216,4 +216,4 @@ due to an incompatibility with the Amiga floppy controller.
|
||||||
|
|
||||||
If you are interested in an Amiga Emulator for Linux, look at
|
If you are interested in an Amiga Emulator for Linux, look at
|
||||||
|
|
||||||
http://www-users.informatik.rwth-aachen.de/~crux/uae.html
|
http://www.freiburg.linux.de/~uae/
|
||||||
|
|
|
@ -369,9 +369,8 @@ The kernel source file:/usr/src/linux/fs/ext2/
|
||||||
e2fsprogs (e2fsck) http://e2fsprogs.sourceforge.net/
|
e2fsprogs (e2fsck) http://e2fsprogs.sourceforge.net/
|
||||||
Design & Implementation http://e2fsprogs.sourceforge.net/ext2intro.html
|
Design & Implementation http://e2fsprogs.sourceforge.net/ext2intro.html
|
||||||
Journaling (ext3) ftp://ftp.uk.linux.org/pub/linux/sct/fs/jfs/
|
Journaling (ext3) ftp://ftp.uk.linux.org/pub/linux/sct/fs/jfs/
|
||||||
Hashed Directories http://kernelnewbies.org/~phillips/htree/
|
|
||||||
Filesystem Resizing http://ext2resize.sourceforge.net/
|
Filesystem Resizing http://ext2resize.sourceforge.net/
|
||||||
Compression (*) http://www.netspace.net.au/~reiter/e2compr/
|
Compression (*) http://e2compr.sourceforge.net/
|
||||||
|
|
||||||
Implementations for:
|
Implementations for:
|
||||||
Windows 95/98/NT/2000 http://uranus.it.swin.edu.au/~jn/linux/Explore2fs.htm
|
Windows 95/98/NT/2000 http://uranus.it.swin.edu.au/~jn/linux/Explore2fs.htm
|
||||||
|
|
|
@ -4,7 +4,7 @@ FAQ list:
|
||||||
=========
|
=========
|
||||||
|
|
||||||
A FAQ list may be found in the fdutils package (see below), and also
|
A FAQ list may be found in the fdutils package (see below), and also
|
||||||
at http://fdutils.linux.lu/FAQ.html
|
at <http://fdutils.linux.lu/faq.html>.
|
||||||
|
|
||||||
|
|
||||||
LILO configuration options (Thinkpad users, read this)
|
LILO configuration options (Thinkpad users, read this)
|
||||||
|
@ -217,10 +217,10 @@ It also contains additional documentation about the floppy driver.
|
||||||
The latest version can be found at fdutils homepage:
|
The latest version can be found at fdutils homepage:
|
||||||
http://fdutils.linux.lu
|
http://fdutils.linux.lu
|
||||||
|
|
||||||
The fdutils-5.4 release can be found at:
|
The fdutils releases can be found at:
|
||||||
http://fdutils.linux.lu/fdutils-5.4.src.tar.gz
|
http://fdutils.linux.lu/download.html
|
||||||
http://www.tux.org/pub/knaff/fdutils/fdutils-5.4.src.tar.gz
|
http://www.tux.org/pub/knaff/fdutils/
|
||||||
ftp://metalab.unc.edu/pub/Linux/utils/disk-management/fdutils-5.4.src.tar.gz
|
ftp://metalab.unc.edu/pub/Linux/utils/disk-management/
|
||||||
|
|
||||||
Reporting problems about the floppy driver
|
Reporting problems about the floppy driver
|
||||||
==========================================
|
==========================================
|
||||||
|
|
|
@ -133,7 +133,7 @@ Code Seq# Include File Comments
|
||||||
'l' 00-3F linux/tcfs_fs.h transparent cryptographic file system
|
'l' 00-3F linux/tcfs_fs.h transparent cryptographic file system
|
||||||
<http://mikonos.dia.unisa.it/tcfs>
|
<http://mikonos.dia.unisa.it/tcfs>
|
||||||
'l' 40-7F linux/udf_fs_i.h in development:
|
'l' 40-7F linux/udf_fs_i.h in development:
|
||||||
<http://www.trylinux.com/projects/udf/>
|
<http://sourceforge.net/projects/linux-udf/>
|
||||||
'm' all linux/mtio.h conflict!
|
'm' all linux/mtio.h conflict!
|
||||||
'm' all linux/soundcard.h conflict!
|
'm' all linux/soundcard.h conflict!
|
||||||
'm' all linux/synclink.h conflict!
|
'm' all linux/synclink.h conflict!
|
||||||
|
|
|
@ -196,7 +196,7 @@
|
||||||
|
|
||||||
* Title: "Writing Linux Device Drivers"
|
* Title: "Writing Linux Device Drivers"
|
||||||
Author: Michael K. Johnson.
|
Author: Michael K. Johnson.
|
||||||
URL: http://people.redhat.com/johnsonm/devices.html
|
URL: http://users.evitech.fi/~tk/rtos/writing_linux_device_d.html
|
||||||
Keywords: files, VFS, file operations, kernel interface, character
|
Keywords: files, VFS, file operations, kernel interface, character
|
||||||
vs block devices, I/O access, hardware interrupts, DMA, access to
|
vs block devices, I/O access, hardware interrupts, DMA, access to
|
||||||
user memory, memory allocation, timers.
|
user memory, memory allocation, timers.
|
||||||
|
@ -284,7 +284,7 @@
|
||||||
|
|
||||||
* Title: "Linux Kernel Module Programming Guide"
|
* Title: "Linux Kernel Module Programming Guide"
|
||||||
Author: Ori Pomerantz.
|
Author: Ori Pomerantz.
|
||||||
URL: http://www.tldp.org/LDP/lkmpg/mpg.html
|
URL: http://tldp.org/LDP/lkmpg/2.6/html/index.html
|
||||||
Keywords: modules, GPL book, /proc, ioctls, system calls,
|
Keywords: modules, GPL book, /proc, ioctls, system calls,
|
||||||
interrupt handlers .
|
interrupt handlers .
|
||||||
Description: Very nice 92 pages GPL book on the topic of modules
|
Description: Very nice 92 pages GPL book on the topic of modules
|
||||||
|
@ -292,7 +292,7 @@
|
||||||
|
|
||||||
* Title: "Device File System (devfs) Overview"
|
* Title: "Device File System (devfs) Overview"
|
||||||
Author: Richard Gooch.
|
Author: Richard Gooch.
|
||||||
URL: http://www.atnf.csiro.au/~rgooch/linux/docs/devfs.txt
|
URL: http://www.atnf.csiro.au/people/rgooch/linux/docs/devfs.html
|
||||||
Keywords: filesystem, /dev, devfs, dynamic devices, major/minor
|
Keywords: filesystem, /dev, devfs, dynamic devices, major/minor
|
||||||
allocation, device management.
|
allocation, device management.
|
||||||
Description: Document describing Richard Gooch's controversial
|
Description: Document describing Richard Gooch's controversial
|
||||||
|
@ -316,9 +316,8 @@
|
||||||
|
|
||||||
* Title: "The Kernel Hacking HOWTO"
|
* Title: "The Kernel Hacking HOWTO"
|
||||||
Author: Various Talented People, and Rusty.
|
Author: Various Talented People, and Rusty.
|
||||||
URL:
|
Location: in kernel tree, Documentation/DocBook/kernel-hacking/
|
||||||
http://www.lisoleg.net/doc/Kernel-Hacking-HOWTO/kernel-hacking-HOW
|
(must be built as "make {htmldocs | psdocs | pdfdocs})
|
||||||
TO.html
|
|
||||||
Keywords: HOWTO, kernel contexts, deadlock, locking, modules,
|
Keywords: HOWTO, kernel contexts, deadlock, locking, modules,
|
||||||
symbols, return conventions.
|
symbols, return conventions.
|
||||||
Description: From the Introduction: "Please understand that I
|
Description: From the Introduction: "Please understand that I
|
||||||
|
@ -332,13 +331,13 @@
|
||||||
originally written for the 2.3 kernels, but nearly all of it
|
originally written for the 2.3 kernels, but nearly all of it
|
||||||
applies to 2.2 too; 2.0 is slightly different".
|
applies to 2.2 too; 2.0 is slightly different".
|
||||||
|
|
||||||
* Title: "ALSA 0.5.0 Developer documentation"
|
* Title: "Writing an ALSA Driver"
|
||||||
Author: Stephan 'Jumpy' Bartels .
|
Author: Takashi Iwai <tiwai@suse.de>
|
||||||
URL: http://www.math.TU-Berlin.de/~sbartels/alsa/
|
URL: http://www.alsa-project.org/~iwai/writing-an-alsa-driver/index.html
|
||||||
Keywords: ALSA, sound, soundcard, driver, lowlevel, hardware.
|
Keywords: ALSA, sound, soundcard, driver, lowlevel, hardware.
|
||||||
Description: Advanced Linux Sound Architecture for developers,
|
Description: Advanced Linux Sound Architecture for developers,
|
||||||
both at kernel and user-level sides. Work in progress. ALSA is
|
both at kernel and user-level sides. ALSA is the Linux kernel
|
||||||
supposed to be Linux's next generation sound architecture.
|
sound architecture in the 2.6 kernel version.
|
||||||
|
|
||||||
* Title: "Programming Guide for Linux USB Device Drivers"
|
* Title: "Programming Guide for Linux USB Device Drivers"
|
||||||
Author: Detlef Fliegl.
|
Author: Detlef Fliegl.
|
||||||
|
@ -369,8 +368,8 @@
|
||||||
filesystems, IPC and Networking Code.
|
filesystems, IPC and Networking Code.
|
||||||
|
|
||||||
* Title: "Linux Kernel Mailing List Glossary"
|
* Title: "Linux Kernel Mailing List Glossary"
|
||||||
Author: John Levon.
|
Author: various
|
||||||
URL: http://www.movement.uklinux.net/glossary.html
|
URL: http://kernelnewbies.org/glossary/
|
||||||
Keywords: glossary, terms, linux-kernel.
|
Keywords: glossary, terms, linux-kernel.
|
||||||
Description: From the introduction: "This glossary is intended as
|
Description: From the introduction: "This glossary is intended as
|
||||||
a brief description of some of the acronyms and terms you may hear
|
a brief description of some of the acronyms and terms you may hear
|
||||||
|
@ -378,9 +377,8 @@
|
||||||
|
|
||||||
* Title: "Linux Kernel Locking HOWTO"
|
* Title: "Linux Kernel Locking HOWTO"
|
||||||
Author: Various Talented People, and Rusty.
|
Author: Various Talented People, and Rusty.
|
||||||
URL:
|
Location: in kernel tree, Documentation/DocBook/kernel-locking/
|
||||||
http://netfilter.kernelnotes.org/unreliable-guides/kernel-locking-
|
(must be built as "make {htmldocs | psdocs | pdfdocs})
|
||||||
HOWTO.html
|
|
||||||
Keywords: locks, locking, spinlock, semaphore, atomic, race
|
Keywords: locks, locking, spinlock, semaphore, atomic, race
|
||||||
condition, bottom halves, tasklets, softirqs.
|
condition, bottom halves, tasklets, softirqs.
|
||||||
Description: The title says it all: document describing the
|
Description: The title says it all: document describing the
|
||||||
|
@ -490,7 +488,7 @@
|
||||||
|
|
||||||
* Title: "Get those boards talking under Linux."
|
* Title: "Get those boards talking under Linux."
|
||||||
Author: Alex Ivchenko.
|
Author: Alex Ivchenko.
|
||||||
URL: http://www.ednmag.com/ednmag/reg/2000/06222000/13df2.htm
|
URL: http://www.edn.com/article/CA46968.html
|
||||||
Keywords: data-acquisition boards, drivers, modules, interrupts,
|
Keywords: data-acquisition boards, drivers, modules, interrupts,
|
||||||
memory allocation.
|
memory allocation.
|
||||||
Description: Article written for people wishing to make their data
|
Description: Article written for people wishing to make their data
|
||||||
|
@ -498,7 +496,7 @@
|
||||||
overview on writing drivers, from the naming of functions to
|
overview on writing drivers, from the naming of functions to
|
||||||
interrupt handling.
|
interrupt handling.
|
||||||
Notes: Two-parts article. Part II is at
|
Notes: Two-parts article. Part II is at
|
||||||
http://www.ednmag.com/ednmag/reg/2000/07062000/14df.htm
|
URL: http://www.edn.com/article/CA46998.html
|
||||||
|
|
||||||
* Title: "Linux PCMCIA Programmer's Guide"
|
* Title: "Linux PCMCIA Programmer's Guide"
|
||||||
Author: David Hinds.
|
Author: David Hinds.
|
||||||
|
@ -529,7 +527,7 @@
|
||||||
definitive guide for hackers, virus coders and system
|
definitive guide for hackers, virus coders and system
|
||||||
administrators."
|
administrators."
|
||||||
Author: pragmatic/THC.
|
Author: pragmatic/THC.
|
||||||
URL: http://packetstorm.securify.com/groups/thc/LKM_HACKING.html
|
URL: http://packetstormsecurity.org/docs/hack/LKM_HACKING.html
|
||||||
Keywords: syscalls, intercept, hide, abuse, symbol table.
|
Keywords: syscalls, intercept, hide, abuse, symbol table.
|
||||||
Description: Interesting paper on how to abuse the Linux kernel in
|
Description: Interesting paper on how to abuse the Linux kernel in
|
||||||
order to intercept and modify syscalls, make
|
order to intercept and modify syscalls, make
|
||||||
|
@ -537,8 +535,7 @@
|
||||||
write kernel modules based virus... and solutions for admins to
|
write kernel modules based virus... and solutions for admins to
|
||||||
avoid all those abuses.
|
avoid all those abuses.
|
||||||
Notes: For 2.0.x kernels. Gives guidances to port it to 2.2.x
|
Notes: For 2.0.x kernels. Gives guidances to port it to 2.2.x
|
||||||
kernels. Also available in txt format at
|
kernels.
|
||||||
http://www.blacknemesis.org/hacking/txt/cllkm.txt
|
|
||||||
|
|
||||||
BOOKS: (Not on-line)
|
BOOKS: (Not on-line)
|
||||||
|
|
||||||
|
@ -557,7 +554,17 @@
|
||||||
ISBN: 0-59600-008-1
|
ISBN: 0-59600-008-1
|
||||||
Notes: Further information in
|
Notes: Further information in
|
||||||
http://www.oreilly.com/catalog/linuxdrive2/
|
http://www.oreilly.com/catalog/linuxdrive2/
|
||||||
|
|
||||||
|
* Title: "Linux Device Drivers, 3nd Edition"
|
||||||
|
Authors: Jonathan Corbet, Alessandro Rubini, and Greg Kroah-Hartman
|
||||||
|
Publisher: O'Reilly & Associates.
|
||||||
|
Date: 2005.
|
||||||
|
Pages: 636.
|
||||||
|
ISBN: 0-596-00590-3
|
||||||
|
Notes: Further information in
|
||||||
|
http://www.oreilly.com/catalog/linuxdrive3/
|
||||||
|
PDF format, URL: http://lwn.net/Kernel/LDD3/
|
||||||
|
|
||||||
* Title: "Linux Kernel Internals"
|
* Title: "Linux Kernel Internals"
|
||||||
Author: Michael Beck.
|
Author: Michael Beck.
|
||||||
Publisher: Addison-Wesley.
|
Publisher: Addison-Wesley.
|
||||||
|
@ -766,12 +773,15 @@
|
||||||
documents, FAQs...
|
documents, FAQs...
|
||||||
|
|
||||||
* Name: "linux-kernel mailing list archives and search engines"
|
* Name: "linux-kernel mailing list archives and search engines"
|
||||||
|
URL: http://vger.kernel.org/vger-lists.html
|
||||||
URL: http://www.uwsg.indiana.edu/hypermail/linux/kernel/index.html
|
URL: http://www.uwsg.indiana.edu/hypermail/linux/kernel/index.html
|
||||||
URL: http://www.kernelnotes.org/lnxlists/linux-kernel/
|
URL: http://marc.theaimsgroup.com/?l=linux-kernel
|
||||||
URL: http://www.geocrawler.com
|
URL: http://groups.google.com/group/mlist.linux.kernel
|
||||||
|
URL: http://www.cs.helsinki.fi/linux/linux-kernel/
|
||||||
|
URL: http://www.lib.uaa.alaska.edu/linux-kernel/
|
||||||
Keywords: linux-kernel, archives, search.
|
Keywords: linux-kernel, archives, search.
|
||||||
Description: Some of the linux-kernel mailing list archivers. If
|
Description: Some of the linux-kernel mailing list archivers. If
|
||||||
you have a better/another one, please let me know.
|
you have a better/another one, please let me know.
|
||||||
_________________________________________________________________
|
_________________________________________________________________
|
||||||
|
|
||||||
Document last updated on Thu Jun 28 15:09:39 CEST 2001
|
Document last updated on Sat 2005-NOV-19
|
||||||
|
|
|
@ -252,7 +252,7 @@ their names here, but I don't have a list handy. Check the MCA Linux
|
||||||
home page (URL below) for a perpetually out-of-date list.
|
home page (URL below) for a perpetually out-of-date list.
|
||||||
|
|
||||||
=====================================================================
|
=====================================================================
|
||||||
MCA Linux Home Page: http://glycerine.itsmm.uni.edu/mca/
|
MCA Linux Home Page: http://www.dgmicro.com/mca/
|
||||||
|
|
||||||
Christophe Beauregard
|
Christophe Beauregard
|
||||||
chrisb@truespectra.com
|
chrisb@truespectra.com
|
||||||
|
|
|
@ -1,7 +1,4 @@
|
||||||
Documents about softnet driver issues in general can be found
|
Document about softnet driver issues
|
||||||
at:
|
|
||||||
|
|
||||||
http://www.firstfloor.org/~andi/softnet/
|
|
||||||
|
|
||||||
Transmit path guidelines:
|
Transmit path guidelines:
|
||||||
|
|
||||||
|
|
|
@ -693,13 +693,7 @@ static int enslave(char *master_ifname, char *slave_ifname)
|
||||||
/* Older bonding versions would panic if the slave has no IP
|
/* Older bonding versions would panic if the slave has no IP
|
||||||
* address, so get the IP setting from the master.
|
* address, so get the IP setting from the master.
|
||||||
*/
|
*/
|
||||||
res = set_if_addr(master_ifname, slave_ifname);
|
set_if_addr(master_ifname, slave_ifname);
|
||||||
if (res) {
|
|
||||||
fprintf(stderr,
|
|
||||||
"Slave '%s': Error: set address failed\n",
|
|
||||||
slave_ifname);
|
|
||||||
return res;
|
|
||||||
}
|
|
||||||
} else {
|
} else {
|
||||||
res = clear_if_addr(slave_ifname);
|
res = clear_if_addr(slave_ifname);
|
||||||
if (res) {
|
if (res) {
|
||||||
|
@ -1085,7 +1079,6 @@ static int set_if_addr(char *master_ifname, char *slave_ifname)
|
||||||
slave_ifname, ifra[i].req_name,
|
slave_ifname, ifra[i].req_name,
|
||||||
strerror(saved_errno));
|
strerror(saved_errno));
|
||||||
|
|
||||||
return res;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
ipaddr = ifr.ifr_addr.sa_data;
|
ipaddr = ifr.ifr_addr.sa_data;
|
||||||
|
|
|
@ -22,7 +22,7 @@ The features and limitations of this driver are as follows:
|
||||||
- All variants of Interphase ATM PCI (i)Chip adapter cards are supported,
|
- All variants of Interphase ATM PCI (i)Chip adapter cards are supported,
|
||||||
including x575 (OC3, control memory 128K , 512K and packet memory 128K,
|
including x575 (OC3, control memory 128K , 512K and packet memory 128K,
|
||||||
512K and 1M), x525 (UTP25) and x531 (DS3 and E3). See
|
512K and 1M), x525 (UTP25) and x531 (DS3 and E3). See
|
||||||
http://www.iphase.com/products/ClassSheet.cfm?ClassID=ATM
|
http://www.iphase.com/site/iphase-web/?epi_menuItemID=e196f04b4b3b40502f150882e21046a0
|
||||||
for details.
|
for details.
|
||||||
- Only x86 platforms are supported.
|
- Only x86 platforms are supported.
|
||||||
- SMP is supported.
|
- SMP is supported.
|
||||||
|
|
|
@ -3,12 +3,8 @@ of the IrDA Utilities. More detailed information about these and associated
|
||||||
programs can be found on http://irda.sourceforge.net/
|
programs can be found on http://irda.sourceforge.net/
|
||||||
|
|
||||||
For more information about how to use the IrDA protocol stack, see the
|
For more information about how to use the IrDA protocol stack, see the
|
||||||
Linux Infared HOWTO (http://www.tuxmobil.org/Infrared-HOWTO/Infrared-HOWTO.html)
|
Linux Infrared HOWTO by Werner Heuser <wehe@tuxmobil.org>:
|
||||||
by Werner Heuser <wehe@tuxmobil.org>
|
<http://www.tuxmobil.org/Infrared-HOWTO/Infrared-HOWTO.html>
|
||||||
|
|
||||||
There is an active mailing list for discussing Linux-IrDA matters called
|
There is an active mailing list for discussing Linux-IrDA matters called
|
||||||
irda-users@lists.sourceforge.net
|
irda-users@lists.sourceforge.net
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -29,8 +29,7 @@ with nondefault parameters, they can be edited in
|
||||||
will find them all.
|
will find them all.
|
||||||
|
|
||||||
Information on card services is available at:
|
Information on card services is available at:
|
||||||
ftp://hyper.stanford.edu/pub/pcmcia/doc
|
http://pcmcia-cs.sourceforge.net/
|
||||||
http://hyper.stanford.edu/HyperNews/get/pcmcia/home.html
|
|
||||||
|
|
||||||
|
|
||||||
Card services user programs are still required for PCMCIA devices.
|
Card services user programs are still required for PCMCIA devices.
|
||||||
|
|
|
@ -11,7 +11,7 @@ The driver was written by Donald Becker <becker@scyld.com>
|
||||||
Don is no longer the prime maintainer of this version of the driver.
|
Don is no longer the prime maintainer of this version of the driver.
|
||||||
Please report problems to one or more of:
|
Please report problems to one or more of:
|
||||||
|
|
||||||
Andrew Morton <andrewm@uow.edu.au>
|
Andrew Morton <akpm@osdl.org>
|
||||||
Netdev mailing list <netdev@vger.kernel.org>
|
Netdev mailing list <netdev@vger.kernel.org>
|
||||||
Linux kernel mailing list <linux-kernel@vger.kernel.org>
|
Linux kernel mailing list <linux-kernel@vger.kernel.org>
|
||||||
|
|
||||||
|
@ -274,24 +274,24 @@ Details of the device driver implementation are at the top of the source file.
|
||||||
|
|
||||||
Additional documentation is available at Don Becker's Linux Drivers site:
|
Additional documentation is available at Don Becker's Linux Drivers site:
|
||||||
|
|
||||||
http://www.scyld.com/network/vortex.html
|
http://www.scyld.com/vortex.html
|
||||||
|
|
||||||
Donald Becker's driver development site:
|
Donald Becker's driver development site:
|
||||||
|
|
||||||
http://www.scyld.com/network
|
http://www.scyld.com/network.html
|
||||||
|
|
||||||
Donald's vortex-diag program is useful for inspecting the NIC's state:
|
Donald's vortex-diag program is useful for inspecting the NIC's state:
|
||||||
|
|
||||||
http://www.scyld.com/diag/#pci-diags
|
http://www.scyld.com/ethercard_diag.html
|
||||||
|
|
||||||
Donald's mii-diag program may be used for inspecting and manipulating
|
Donald's mii-diag program may be used for inspecting and manipulating
|
||||||
the NIC's Media Independent Interface subsystem:
|
the NIC's Media Independent Interface subsystem:
|
||||||
|
|
||||||
http://www.scyld.com/diag/#mii-diag
|
http://www.scyld.com/ethercard_diag.html#mii-diag
|
||||||
|
|
||||||
Donald's wake-on-LAN page:
|
Donald's wake-on-LAN page:
|
||||||
|
|
||||||
http://www.scyld.com/expert/wake-on-lan.html
|
http://www.scyld.com/wakeonlan.html
|
||||||
|
|
||||||
3Com's documentation for many NICs, including the ones supported by
|
3Com's documentation for many NICs, including the ones supported by
|
||||||
this driver is available at
|
this driver is available at
|
||||||
|
@ -305,7 +305,7 @@ this driver is available at
|
||||||
Driver updates and a detailed changelog for the modifications which
|
Driver updates and a detailed changelog for the modifications which
|
||||||
were made for the 2.3/2,4 series kernel is available at
|
were made for the 2.3/2,4 series kernel is available at
|
||||||
|
|
||||||
http://www.uow.edu.au/~andrewm/linux/#3c59x-2.3
|
http://www.zip.com.au/~akpm/linux/#3c59x-bc
|
||||||
|
|
||||||
|
|
||||||
Autonegotiation notes
|
Autonegotiation notes
|
||||||
|
@ -434,8 +434,8 @@ steps you should take:
|
||||||
send all logs to the maintainer.
|
send all logs to the maintainer.
|
||||||
|
|
||||||
3) Download you card's diagnostic tool from Donald
|
3) Download you card's diagnostic tool from Donald
|
||||||
Backer's website http://www.scyld.com/diag. Download
|
Becker's website <http://www.scyld.com/ethercard_diag.html>.
|
||||||
mii-diag.c as well. Build these.
|
Download mii-diag.c as well. Build these.
|
||||||
|
|
||||||
a) Run 'vortex-diag -aaee' and 'mii-diag -v' when the card is
|
a) Run 'vortex-diag -aaee' and 'mii-diag -v' when the card is
|
||||||
working correctly. Save the output.
|
working correctly. Save the output.
|
||||||
|
@ -443,8 +443,8 @@ steps you should take:
|
||||||
b) Run the above commands when the card is malfunctioning. Send
|
b) Run the above commands when the card is malfunctioning. Send
|
||||||
both sets of output.
|
both sets of output.
|
||||||
|
|
||||||
Finally, please be patient and be prepared to do some work. You may end up working on
|
Finally, please be patient and be prepared to do some work. You may
|
||||||
this problem for a week or more as the maintainer asks more questions, asks for more
|
end up working on this problem for a week or more as the maintainer
|
||||||
tests, asks for patches to be applied, etc. At the end of it all, the problem may even
|
asks more questions, asks for more tests, asks for patches to be
|
||||||
remain unresolved.
|
applied, etc. At the end of it all, the problem may even remain
|
||||||
|
unresolved.
|
||||||
|
|
|
@ -335,5 +335,5 @@ this on the whole.
|
||||||
PCI Local Bus Specification
|
PCI Local Bus Specification
|
||||||
PCI Bus Power Management Interface Specification
|
PCI Bus Power Management Interface Specification
|
||||||
|
|
||||||
http://pcisig.org
|
http://www.pcisig.com
|
||||||
|
|
||||||
|
|
|
@ -1108,7 +1108,7 @@
|
||||||
A: You have to activate MCA bus support, first.
|
A: You have to activate MCA bus support, first.
|
||||||
Q: Where can I find the latest info about this driver?
|
Q: Where can I find the latest info about this driver?
|
||||||
A: See the file MAINTAINERS for the current WWW-address, which offers
|
A: See the file MAINTAINERS for the current WWW-address, which offers
|
||||||
updates, info and Q/A lists. At this files' origin, the webaddress
|
updates, info and Q/A lists. At this file's origin, the webaddress
|
||||||
was: http://www.uni-mainz.de/~langm000/linux.html
|
was: http://www.uni-mainz.de/~langm000/linux.html
|
||||||
Q: My SCSI-adapter is not recognized by the driver, what can I do?
|
Q: My SCSI-adapter is not recognized by the driver, what can I do?
|
||||||
A: Just force it to be recognized by kernel parameters. See section 5.1.
|
A: Just force it to be recognized by kernel parameters. See section 5.1.
|
||||||
|
@ -1248,7 +1248,7 @@
|
||||||
--------------------
|
--------------------
|
||||||
The address of the IBM SCSI-subsystem supporting WWW-page is:
|
The address of the IBM SCSI-subsystem supporting WWW-page is:
|
||||||
|
|
||||||
http://www.uni-mainz.de/~langm000/linux.html
|
http://www.staff.uni-mainz.de/mlang/linux.html
|
||||||
|
|
||||||
Here you can find info about the background of this driver, patches,
|
Here you can find info about the background of this driver, patches,
|
||||||
troubleshooting support, news and a bugreport form. Please check that
|
troubleshooting support, news and a bugreport form. Please check that
|
||||||
|
|
|
@ -28,8 +28,8 @@ SUPPORTED CAMERAS:
|
||||||
Xirlink "C-It" camera, also known as "IBM PC Camera".
|
Xirlink "C-It" camera, also known as "IBM PC Camera".
|
||||||
The device uses proprietary ASIC (and compression method);
|
The device uses proprietary ASIC (and compression method);
|
||||||
it is manufactured by Xirlink. See http://www.xirlink.com/
|
it is manufactured by Xirlink. See http://www.xirlink.com/
|
||||||
http://www.ibmpccamera.com or http://www.c-itnow.com/ for
|
(renamed to http://www.veo.com), http://www.ibmpccamera.com,
|
||||||
details and pictures.
|
or http://www.c-itnow.com/ for details and pictures.
|
||||||
|
|
||||||
This very chipset ("X Chip", as marked at the factory)
|
This very chipset ("X Chip", as marked at the factory)
|
||||||
is used in several other cameras, and they are supported
|
is used in several other cameras, and they are supported
|
||||||
|
|
|
@ -22,8 +22,8 @@ WHAT YOU NEED:
|
||||||
http://www.ovt.com/omniusbp.html
|
http://www.ovt.com/omniusbp.html
|
||||||
|
|
||||||
- A Video4Linux compatible frame grabber program (I recommend vidcat and xawtv)
|
- A Video4Linux compatible frame grabber program (I recommend vidcat and xawtv)
|
||||||
vidcat is part of the w3cam package: http://www.hdk-berlin.de/~rasca/w3cam/
|
vidcat is part of the w3cam package: http://mpx.freeshell.net/
|
||||||
xawtv is available at: http://www.in-berlin.de/User/kraxel/xawtv.html
|
xawtv is available at: http://linux.bytesex.org/xawtv/
|
||||||
|
|
||||||
HOW TO USE IT:
|
HOW TO USE IT:
|
||||||
|
|
||||||
|
|
|
@ -46,9 +46,9 @@ Contact information:
|
||||||
--------------------
|
--------------------
|
||||||
|
|
||||||
The main page for the project is hosted at sourceforge.net in the following
|
The main page for the project is hosted at sourceforge.net in the following
|
||||||
address: http://rio500.sourceforge.net You can also go to the sourceforge
|
URL: <http://rio500.sourceforge.net>. You can also go to the project's
|
||||||
project page at: http://sourceforge.net/project/?group_id=1944 There is
|
sourceforge home page at: <http://sourceforge.net/projects/rio500/>.
|
||||||
also a mailing list: rio500-users@lists.sourceforge.net
|
There is also a mailing list: rio500-users@lists.sourceforge.net
|
||||||
|
|
||||||
Authors:
|
Authors:
|
||||||
-------
|
-------
|
||||||
|
|
|
@ -76,8 +76,11 @@ activates the GRAB bit. A few ms later the VSYNC (re-)rises and
|
||||||
the zoran starts to work on a new and freshly broadcasted frame....
|
the zoran starts to work on a new and freshly broadcasted frame....
|
||||||
|
|
||||||
For pointers I used the specs of both chips. Below are the URLs:
|
For pointers I used the specs of both chips. Below are the URLs:
|
||||||
http://www.zoran.com/ftp/download/devices/pci/ZR36120/36120data.pdf
|
http://www.zoran.com/ftp/download/devices/pci/ZR36120/36120data.pdf
|
||||||
http://www-us.semiconductor.philips.com/acrobat/datasheets/SAA_7110_A_1.pdf
|
http://www-us.semiconductor.philips.com/acrobat/datasheets/SAA_7110_A_1.pdf
|
||||||
|
Some alternatives for the Philips SAA 7110 datasheet are:
|
||||||
|
http://www.datasheetcatalog.com/datasheets_pdf/S/A/A/7/SAA7110.shtml
|
||||||
|
http://www.datasheetarchive.com/search.php?search=SAA7110&sType=part
|
||||||
|
|
||||||
The documentation has very little on absolute numbers or timings
|
The documentation has very little on absolute numbers or timings
|
||||||
needed for the various modes/resolutions, but there are other
|
needed for the various modes/resolutions, but there are other
|
||||||
|
|
20
MAINTAINERS
20
MAINTAINERS
|
@ -58,7 +58,7 @@ P: Person
|
||||||
M: Mail patches to
|
M: Mail patches to
|
||||||
L: Mailing list that is relevant to this area
|
L: Mailing list that is relevant to this area
|
||||||
W: Web-page with status/info
|
W: Web-page with status/info
|
||||||
T: SCM tree type and URL. Type is one of: git, hg, quilt.
|
T: SCM tree type and location. Type is one of: git, hg, quilt.
|
||||||
S: Status, one of the following:
|
S: Status, one of the following:
|
||||||
|
|
||||||
Supported: Someone is actually paid to look after this.
|
Supported: Someone is actually paid to look after this.
|
||||||
|
@ -227,6 +227,7 @@ AGPGART DRIVER
|
||||||
P: Dave Jones
|
P: Dave Jones
|
||||||
M: davej@codemonkey.org.uk
|
M: davej@codemonkey.org.uk
|
||||||
W: http://www.codemonkey.org.uk/projects/agp/
|
W: http://www.codemonkey.org.uk/projects/agp/
|
||||||
|
T: git kernel.org:/pub/scm/linux/kernel/git/davej/agpgart.git
|
||||||
S: Maintained
|
S: Maintained
|
||||||
|
|
||||||
AHA152X SCSI DRIVER
|
AHA152X SCSI DRIVER
|
||||||
|
@ -384,6 +385,7 @@ P: David Woodhouse
|
||||||
M: dwmw2@infradead.org
|
M: dwmw2@infradead.org
|
||||||
L: linux-audit@redhat.com
|
L: linux-audit@redhat.com
|
||||||
W: http://people.redhat.com/sgrubb/audit/
|
W: http://people.redhat.com/sgrubb/audit/
|
||||||
|
T: git kernel.org:/pub/scm/linux/kernel/git/dwmw2/audit-2.6.git
|
||||||
S: Maintained
|
S: Maintained
|
||||||
|
|
||||||
AX.25 NETWORK LAYER
|
AX.25 NETWORK LAYER
|
||||||
|
@ -432,6 +434,7 @@ L: bluez-devel@lists.sf.net
|
||||||
W: http://bluez.sf.net
|
W: http://bluez.sf.net
|
||||||
W: http://www.bluez.org
|
W: http://www.bluez.org
|
||||||
W: http://www.holtmann.org/linux/bluetooth/
|
W: http://www.holtmann.org/linux/bluetooth/
|
||||||
|
T: git kernel.org:/pub/scm/linux/kernel/git/holtmann/bluetooth-2.6.git
|
||||||
S: Maintained
|
S: Maintained
|
||||||
|
|
||||||
BLUETOOTH RFCOMM LAYER
|
BLUETOOTH RFCOMM LAYER
|
||||||
|
@ -547,6 +550,7 @@ P: Steve French
|
||||||
M: sfrench@samba.org
|
M: sfrench@samba.org
|
||||||
L: samba-technical@lists.samba.org
|
L: samba-technical@lists.samba.org
|
||||||
W: http://us1.samba.org/samba/Linux_CIFS_client.html
|
W: http://us1.samba.org/samba/Linux_CIFS_client.html
|
||||||
|
T: git kernel.org:/pub/scm/linux/kernel/git/sfrench/cifs-2.6.git
|
||||||
S: Supported
|
S: Supported
|
||||||
|
|
||||||
CIRRUS LOGIC GENERIC FBDEV DRIVER
|
CIRRUS LOGIC GENERIC FBDEV DRIVER
|
||||||
|
@ -608,6 +612,7 @@ P: Dave Jones
|
||||||
M: davej@codemonkey.org.uk
|
M: davej@codemonkey.org.uk
|
||||||
L: cpufreq@lists.linux.org.uk
|
L: cpufreq@lists.linux.org.uk
|
||||||
W: http://www.codemonkey.org.uk/projects/cpufreq/
|
W: http://www.codemonkey.org.uk/projects/cpufreq/
|
||||||
|
T: git kernel.org/pub/scm/linux/kernel/davej/cpufreq.git
|
||||||
S: Maintained
|
S: Maintained
|
||||||
|
|
||||||
CPUID/MSR DRIVER
|
CPUID/MSR DRIVER
|
||||||
|
@ -641,6 +646,7 @@ M: herbert@gondor.apana.org.au
|
||||||
P: David S. Miller
|
P: David S. Miller
|
||||||
M: davem@davemloft.net
|
M: davem@davemloft.net
|
||||||
L: linux-crypto@vger.kernel.org
|
L: linux-crypto@vger.kernel.org
|
||||||
|
T: git kernel.org:/pub/scm/linux/kernel/git/herbert/crypto-2.6.git
|
||||||
S: Maintained
|
S: Maintained
|
||||||
|
|
||||||
CYBERPRO FB DRIVER
|
CYBERPRO FB DRIVER
|
||||||
|
@ -1185,6 +1191,7 @@ P: Bartlomiej Zolnierkiewicz
|
||||||
M: B.Zolnierkiewicz@elka.pw.edu.pl
|
M: B.Zolnierkiewicz@elka.pw.edu.pl
|
||||||
L: linux-kernel@vger.kernel.org
|
L: linux-kernel@vger.kernel.org
|
||||||
L: linux-ide@vger.kernel.org
|
L: linux-ide@vger.kernel.org
|
||||||
|
T: git kernel.org:/pub/scm/linux/kernel/git/bart/ide-2.6.git
|
||||||
S: Maintained
|
S: Maintained
|
||||||
|
|
||||||
IDE/ATAPI CDROM DRIVER
|
IDE/ATAPI CDROM DRIVER
|
||||||
|
@ -1279,6 +1286,7 @@ P: Vojtech Pavlik
|
||||||
M: vojtech@suse.cz
|
M: vojtech@suse.cz
|
||||||
L: linux-input@atrey.karlin.mff.cuni.cz
|
L: linux-input@atrey.karlin.mff.cuni.cz
|
||||||
L: linux-joystick@atrey.karlin.mff.cuni.cz
|
L: linux-joystick@atrey.karlin.mff.cuni.cz
|
||||||
|
T: git kernel.org:/pub/scm/linux/kernel/git/dtor/input.git
|
||||||
S: Maintained
|
S: Maintained
|
||||||
|
|
||||||
INOTIFY
|
INOTIFY
|
||||||
|
@ -1392,6 +1400,7 @@ P: Kai Germaschewski
|
||||||
M: kai.germaschewski@gmx.de
|
M: kai.germaschewski@gmx.de
|
||||||
L: isdn4linux@listserv.isdn4linux.de
|
L: isdn4linux@listserv.isdn4linux.de
|
||||||
W: http://www.isdn4linux.de
|
W: http://www.isdn4linux.de
|
||||||
|
T: git kernel.org:/pub/scm/linux/kernel/kkeil/isdn-2.6.git
|
||||||
S: Maintained
|
S: Maintained
|
||||||
|
|
||||||
ISDN SUBSYSTEM (Eicon active card driver)
|
ISDN SUBSYSTEM (Eicon active card driver)
|
||||||
|
@ -1420,6 +1429,7 @@ P: Dave Kleikamp
|
||||||
M: shaggy@austin.ibm.com
|
M: shaggy@austin.ibm.com
|
||||||
L: jfs-discussion@lists.sourceforge.net
|
L: jfs-discussion@lists.sourceforge.net
|
||||||
W: http://jfs.sourceforge.net/
|
W: http://jfs.sourceforge.net/
|
||||||
|
T: git kernel.org:/pub/scm/linux/kernel/git/shaggy/jfs-2.6.git
|
||||||
S: Supported
|
S: Supported
|
||||||
|
|
||||||
KCONFIG
|
KCONFIG
|
||||||
|
@ -1534,6 +1544,7 @@ P: Paul Mackerras
|
||||||
M: paulus@samba.org
|
M: paulus@samba.org
|
||||||
W: http://www.penguinppc.org/
|
W: http://www.penguinppc.org/
|
||||||
L: linuxppc-dev@ozlabs.org
|
L: linuxppc-dev@ozlabs.org
|
||||||
|
T: git kernel.org:/pub/scm/linux/kernel/git/paulus/powerpc.git
|
||||||
S: Supported
|
S: Supported
|
||||||
|
|
||||||
LINUX FOR POWER MACINTOSH
|
LINUX FOR POWER MACINTOSH
|
||||||
|
@ -1601,6 +1612,7 @@ P: Chris Wright
|
||||||
M: chrisw@osdl.org
|
M: chrisw@osdl.org
|
||||||
L: linux-security-module@wirex.com
|
L: linux-security-module@wirex.com
|
||||||
W: http://lsm.immunix.org
|
W: http://lsm.immunix.org
|
||||||
|
T: git kernel.org:/pub/scm/linux/kernel/git/chrisw/lsm-2.6.git
|
||||||
S: Supported
|
S: Supported
|
||||||
|
|
||||||
LM83 HARDWARE MONITOR DRIVER
|
LM83 HARDWARE MONITOR DRIVER
|
||||||
|
@ -1695,6 +1707,7 @@ P: David Woodhouse
|
||||||
M: dwmw2@infradead.org
|
M: dwmw2@infradead.org
|
||||||
W: http://www.linux-mtd.infradead.org/
|
W: http://www.linux-mtd.infradead.org/
|
||||||
L: linux-mtd@lists.infradead.org
|
L: linux-mtd@lists.infradead.org
|
||||||
|
T: git kernel.org:/pub/scm/linux/kernel/git/tglx/mtd-2.6.git
|
||||||
S: Maintained
|
S: Maintained
|
||||||
|
|
||||||
MICROTEK X6 SCANNER
|
MICROTEK X6 SCANNER
|
||||||
|
@ -1815,6 +1828,7 @@ M: yoshfuji@linux-ipv6.org
|
||||||
P: Patrick McHardy
|
P: Patrick McHardy
|
||||||
M: kaber@coreworks.de
|
M: kaber@coreworks.de
|
||||||
L: netdev@vger.kernel.org
|
L: netdev@vger.kernel.org
|
||||||
|
T: git kernel.org:/pub/scm/linux/kernel/davem/net-2.6.git
|
||||||
S: Maintained
|
S: Maintained
|
||||||
|
|
||||||
IPVS
|
IPVS
|
||||||
|
@ -1866,6 +1880,7 @@ M: aia21@cantab.net
|
||||||
L: linux-ntfs-dev@lists.sourceforge.net
|
L: linux-ntfs-dev@lists.sourceforge.net
|
||||||
L: linux-kernel@vger.kernel.org
|
L: linux-kernel@vger.kernel.org
|
||||||
W: http://linux-ntfs.sf.net/
|
W: http://linux-ntfs.sf.net/
|
||||||
|
T: git kernel.org:/pub/scm/linux/kernel/git/aia21/ntfs-2.6.git
|
||||||
S: Maintained
|
S: Maintained
|
||||||
|
|
||||||
NVIDIA (RIVA) FRAMEBUFFER DRIVER
|
NVIDIA (RIVA) FRAMEBUFFER DRIVER
|
||||||
|
@ -2389,6 +2404,7 @@ P: Anton Blanchard
|
||||||
M: anton@samba.org
|
M: anton@samba.org
|
||||||
L: sparclinux@vger.kernel.org
|
L: sparclinux@vger.kernel.org
|
||||||
L: ultralinux@vger.kernel.org
|
L: ultralinux@vger.kernel.org
|
||||||
|
T: git kernel.org:/pub/scm/linux/kernel/git/davem/sparc-2.6.git
|
||||||
S: Maintained
|
S: Maintained
|
||||||
|
|
||||||
SHARP LH SUPPORT (LH7952X & LH7A40X)
|
SHARP LH SUPPORT (LH7952X & LH7A40X)
|
||||||
|
@ -2527,6 +2543,7 @@ P: Adrian Bunk
|
||||||
M: trivial@kernel.org
|
M: trivial@kernel.org
|
||||||
L: linux-kernel@vger.kernel.org
|
L: linux-kernel@vger.kernel.org
|
||||||
W: http://www.kernel.org/pub/linux/kernel/people/bunk/trivial/
|
W: http://www.kernel.org/pub/linux/kernel/people/bunk/trivial/
|
||||||
|
T: git kernel.org:/pub/scm/linux/kernel/git/bunk/trivial.git
|
||||||
S: Maintained
|
S: Maintained
|
||||||
|
|
||||||
TMS380 TOKEN-RING NETWORK DRIVER
|
TMS380 TOKEN-RING NETWORK DRIVER
|
||||||
|
@ -2860,6 +2877,7 @@ P: Latchesar Ionkov
|
||||||
M: lucho@ionkov.net
|
M: lucho@ionkov.net
|
||||||
L: v9fs-developer@lists.sourceforge.net
|
L: v9fs-developer@lists.sourceforge.net
|
||||||
W: http://v9fs.sf.net
|
W: http://v9fs.sf.net
|
||||||
|
T: git kernel.org:/pub/scm/linux/kernel/ericvh/v9fs-devel.git
|
||||||
S: Maintained
|
S: Maintained
|
||||||
|
|
||||||
VIDEO FOR LINUX
|
VIDEO FOR LINUX
|
||||||
|
|
2
Makefile
2
Makefile
|
@ -1,7 +1,7 @@
|
||||||
VERSION = 2
|
VERSION = 2
|
||||||
PATCHLEVEL = 6
|
PATCHLEVEL = 6
|
||||||
SUBLEVEL = 15
|
SUBLEVEL = 15
|
||||||
EXTRAVERSION =-rc2
|
EXTRAVERSION =-rc3
|
||||||
NAME=Affluent Albatross
|
NAME=Affluent Albatross
|
||||||
|
|
||||||
# *DOCUMENTATION*
|
# *DOCUMENTATION*
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
#
|
#
|
||||||
# Automatically generated make config: don't edit
|
# Automatically generated make config: don't edit
|
||||||
# Linux kernel version: 2.6.14-rc3
|
# Linux kernel version: 2.6.15-rc2
|
||||||
# Sun Oct 9 15:46:42 2005
|
# Mon Nov 28 10:30:09 2005
|
||||||
#
|
#
|
||||||
CONFIG_ARM=y
|
CONFIG_ARM=y
|
||||||
CONFIG_MMU=y
|
CONFIG_MMU=y
|
||||||
|
@ -63,6 +63,23 @@ CONFIG_OBSOLETE_MODPARM=y
|
||||||
# CONFIG_MODULE_SRCVERSION_ALL is not set
|
# CONFIG_MODULE_SRCVERSION_ALL is not set
|
||||||
CONFIG_KMOD=y
|
CONFIG_KMOD=y
|
||||||
|
|
||||||
|
#
|
||||||
|
# Block layer
|
||||||
|
#
|
||||||
|
|
||||||
|
#
|
||||||
|
# IO Schedulers
|
||||||
|
#
|
||||||
|
CONFIG_IOSCHED_NOOP=y
|
||||||
|
CONFIG_IOSCHED_AS=y
|
||||||
|
CONFIG_IOSCHED_DEADLINE=y
|
||||||
|
CONFIG_IOSCHED_CFQ=y
|
||||||
|
CONFIG_DEFAULT_AS=y
|
||||||
|
# CONFIG_DEFAULT_DEADLINE is not set
|
||||||
|
# CONFIG_DEFAULT_CFQ is not set
|
||||||
|
# CONFIG_DEFAULT_NOOP is not set
|
||||||
|
CONFIG_DEFAULT_IOSCHED="anticipatory"
|
||||||
|
|
||||||
#
|
#
|
||||||
# System Type
|
# System Type
|
||||||
#
|
#
|
||||||
|
@ -85,6 +102,7 @@ CONFIG_ARCH_PXA=y
|
||||||
# CONFIG_ARCH_LH7A40X is not set
|
# CONFIG_ARCH_LH7A40X is not set
|
||||||
# CONFIG_ARCH_OMAP is not set
|
# CONFIG_ARCH_OMAP is not set
|
||||||
# CONFIG_ARCH_VERSATILE is not set
|
# CONFIG_ARCH_VERSATILE is not set
|
||||||
|
# CONFIG_ARCH_REALVIEW is not set
|
||||||
# CONFIG_ARCH_IMX is not set
|
# CONFIG_ARCH_IMX is not set
|
||||||
# CONFIG_ARCH_H720X is not set
|
# CONFIG_ARCH_H720X is not set
|
||||||
# CONFIG_ARCH_AAEC2000 is not set
|
# CONFIG_ARCH_AAEC2000 is not set
|
||||||
|
@ -98,12 +116,14 @@ CONFIG_ARCH_PXA=y
|
||||||
CONFIG_PXA_SHARPSL=y
|
CONFIG_PXA_SHARPSL=y
|
||||||
CONFIG_PXA_SHARPSL_25x=y
|
CONFIG_PXA_SHARPSL_25x=y
|
||||||
# CONFIG_PXA_SHARPSL_27x is not set
|
# CONFIG_PXA_SHARPSL_27x is not set
|
||||||
# CONFIG_MACH_POODLE is not set
|
CONFIG_MACH_POODLE=y
|
||||||
CONFIG_MACH_CORGI=y
|
CONFIG_MACH_CORGI=y
|
||||||
CONFIG_MACH_SHEPHERD=y
|
CONFIG_MACH_SHEPHERD=y
|
||||||
CONFIG_MACH_HUSKY=y
|
CONFIG_MACH_HUSKY=y
|
||||||
|
CONFIG_MACH_TOSA=y
|
||||||
CONFIG_PXA25x=y
|
CONFIG_PXA25x=y
|
||||||
CONFIG_PXA_SHARP_C7xx=y
|
CONFIG_PXA_SHARP_C7xx=y
|
||||||
|
CONFIG_PXA_SSP=y
|
||||||
|
|
||||||
#
|
#
|
||||||
# Processor Type
|
# Processor Type
|
||||||
|
@ -155,6 +175,7 @@ CONFIG_FLATMEM_MANUAL=y
|
||||||
CONFIG_FLATMEM=y
|
CONFIG_FLATMEM=y
|
||||||
CONFIG_FLAT_NODE_MEM_MAP=y
|
CONFIG_FLAT_NODE_MEM_MAP=y
|
||||||
# CONFIG_SPARSEMEM_STATIC is not set
|
# CONFIG_SPARSEMEM_STATIC is not set
|
||||||
|
CONFIG_SPLIT_PTLOCK_CPUS=4096
|
||||||
CONFIG_ALIGNMENT_TRAP=y
|
CONFIG_ALIGNMENT_TRAP=y
|
||||||
|
|
||||||
#
|
#
|
||||||
|
@ -235,6 +256,10 @@ CONFIG_INET6_TUNNEL=m
|
||||||
CONFIG_IPV6_TUNNEL=m
|
CONFIG_IPV6_TUNNEL=m
|
||||||
CONFIG_NETFILTER=y
|
CONFIG_NETFILTER=y
|
||||||
# CONFIG_NETFILTER_DEBUG is not set
|
# CONFIG_NETFILTER_DEBUG is not set
|
||||||
|
|
||||||
|
#
|
||||||
|
# Core Netfilter Configuration
|
||||||
|
#
|
||||||
# CONFIG_NETFILTER_NETLINK is not set
|
# CONFIG_NETFILTER_NETLINK is not set
|
||||||
|
|
||||||
#
|
#
|
||||||
|
@ -356,6 +381,10 @@ CONFIG_IP6_NF_RAW=m
|
||||||
# CONFIG_NET_DIVERT is not set
|
# CONFIG_NET_DIVERT is not set
|
||||||
# CONFIG_ECONET is not set
|
# CONFIG_ECONET is not set
|
||||||
# CONFIG_WAN_ROUTER is not set
|
# CONFIG_WAN_ROUTER is not set
|
||||||
|
|
||||||
|
#
|
||||||
|
# QoS and/or fair queueing
|
||||||
|
#
|
||||||
# CONFIG_NET_SCHED is not set
|
# CONFIG_NET_SCHED is not set
|
||||||
CONFIG_NET_CLS_ROUTE=y
|
CONFIG_NET_CLS_ROUTE=y
|
||||||
|
|
||||||
|
@ -413,6 +442,7 @@ CONFIG_IRCOMM=m
|
||||||
# CONFIG_SMC_IRCC_FIR is not set
|
# CONFIG_SMC_IRCC_FIR is not set
|
||||||
# CONFIG_ALI_FIR is not set
|
# CONFIG_ALI_FIR is not set
|
||||||
# CONFIG_VIA_FIR is not set
|
# CONFIG_VIA_FIR is not set
|
||||||
|
CONFIG_PXA_FICP=m
|
||||||
CONFIG_BT=m
|
CONFIG_BT=m
|
||||||
CONFIG_BT_L2CAP=m
|
CONFIG_BT_L2CAP=m
|
||||||
CONFIG_BT_SCO=m
|
CONFIG_BT_SCO=m
|
||||||
|
@ -431,7 +461,6 @@ CONFIG_BT_HCIUSB=m
|
||||||
CONFIG_BT_HCIUART=m
|
CONFIG_BT_HCIUART=m
|
||||||
CONFIG_BT_HCIUART_H4=y
|
CONFIG_BT_HCIUART_H4=y
|
||||||
CONFIG_BT_HCIUART_BCSP=y
|
CONFIG_BT_HCIUART_BCSP=y
|
||||||
CONFIG_BT_HCIUART_BCSP_TXCRC=y
|
|
||||||
CONFIG_BT_HCIBCM203X=m
|
CONFIG_BT_HCIBCM203X=m
|
||||||
CONFIG_BT_HCIBPA10X=m
|
CONFIG_BT_HCIBPA10X=m
|
||||||
CONFIG_BT_HCIBFUSB=m
|
CONFIG_BT_HCIBFUSB=m
|
||||||
|
@ -458,6 +487,11 @@ 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
|
||||||
|
|
||||||
|
#
|
||||||
|
# Connector - unified userspace <-> kernelspace linker
|
||||||
|
#
|
||||||
|
# CONFIG_CONNECTOR is not set
|
||||||
|
|
||||||
#
|
#
|
||||||
# Memory Technology Devices (MTD)
|
# Memory Technology Devices (MTD)
|
||||||
#
|
#
|
||||||
|
@ -477,6 +511,7 @@ CONFIG_MTD_BLOCK=y
|
||||||
# CONFIG_FTL is not set
|
# CONFIG_FTL is not set
|
||||||
# CONFIG_NFTL is not set
|
# CONFIG_NFTL is not set
|
||||||
# CONFIG_INFTL is not set
|
# CONFIG_INFTL is not set
|
||||||
|
# CONFIG_RFD_FTL is not set
|
||||||
|
|
||||||
#
|
#
|
||||||
# RAM/ROM/Flash chip drivers
|
# RAM/ROM/Flash chip drivers
|
||||||
|
@ -531,6 +566,11 @@ CONFIG_MTD_NAND_IDS=y
|
||||||
CONFIG_MTD_NAND_SHARPSL=y
|
CONFIG_MTD_NAND_SHARPSL=y
|
||||||
# CONFIG_MTD_NAND_NANDSIM is not set
|
# CONFIG_MTD_NAND_NANDSIM is not set
|
||||||
|
|
||||||
|
#
|
||||||
|
# OneNAND Flash Device Drivers
|
||||||
|
#
|
||||||
|
# CONFIG_MTD_ONENAND is not set
|
||||||
|
|
||||||
#
|
#
|
||||||
# Parallel port support
|
# Parallel port support
|
||||||
#
|
#
|
||||||
|
@ -551,14 +591,6 @@ CONFIG_BLK_DEV_LOOP=y
|
||||||
# CONFIG_BLK_DEV_RAM is not set
|
# CONFIG_BLK_DEV_RAM is not set
|
||||||
CONFIG_BLK_DEV_RAM_COUNT=16
|
CONFIG_BLK_DEV_RAM_COUNT=16
|
||||||
# CONFIG_CDROM_PKTCDVD is not set
|
# CONFIG_CDROM_PKTCDVD is not set
|
||||||
|
|
||||||
#
|
|
||||||
# IO Schedulers
|
|
||||||
#
|
|
||||||
CONFIG_IOSCHED_NOOP=y
|
|
||||||
CONFIG_IOSCHED_AS=y
|
|
||||||
CONFIG_IOSCHED_DEADLINE=y
|
|
||||||
CONFIG_IOSCHED_CFQ=y
|
|
||||||
# CONFIG_ATA_OVER_ETH is not set
|
# CONFIG_ATA_OVER_ETH is not set
|
||||||
|
|
||||||
#
|
#
|
||||||
|
@ -625,6 +657,7 @@ CONFIG_SCSI_MULTI_LUN=y
|
||||||
#
|
#
|
||||||
# SCSI low-level drivers
|
# SCSI low-level drivers
|
||||||
#
|
#
|
||||||
|
# CONFIG_ISCSI_TCP is not set
|
||||||
# CONFIG_SCSI_SATA is not set
|
# CONFIG_SCSI_SATA is not set
|
||||||
# CONFIG_SCSI_DEBUG is not set
|
# CONFIG_SCSI_DEBUG is not set
|
||||||
|
|
||||||
|
@ -748,6 +781,7 @@ CONFIG_PPP_ASYNC=m
|
||||||
# CONFIG_PPP_SYNC_TTY is not set
|
# CONFIG_PPP_SYNC_TTY is not set
|
||||||
# CONFIG_PPP_DEFLATE is not set
|
# CONFIG_PPP_DEFLATE is not set
|
||||||
CONFIG_PPP_BSDCOMP=m
|
CONFIG_PPP_BSDCOMP=m
|
||||||
|
# CONFIG_PPP_MPPE is not set
|
||||||
# CONFIG_PPPOE is not set
|
# CONFIG_PPPOE is not set
|
||||||
# CONFIG_SLIP is not set
|
# CONFIG_SLIP is not set
|
||||||
# CONFIG_SHAPER is not set
|
# CONFIG_SHAPER is not set
|
||||||
|
@ -850,11 +884,15 @@ CONFIG_UNIX98_PTYS=y
|
||||||
# PCMCIA character devices
|
# PCMCIA character devices
|
||||||
#
|
#
|
||||||
# CONFIG_SYNCLINK_CS is not set
|
# CONFIG_SYNCLINK_CS is not set
|
||||||
|
# CONFIG_CARDMAN_4000 is not set
|
||||||
|
# CONFIG_CARDMAN_4040 is not set
|
||||||
# CONFIG_RAW_DRIVER is not set
|
# CONFIG_RAW_DRIVER is not set
|
||||||
|
|
||||||
#
|
#
|
||||||
# TPM devices
|
# TPM devices
|
||||||
#
|
#
|
||||||
|
# CONFIG_TCG_TPM is not set
|
||||||
|
# CONFIG_TELCLOCK is not set
|
||||||
|
|
||||||
#
|
#
|
||||||
# I2C support
|
# I2C support
|
||||||
|
@ -889,6 +927,7 @@ CONFIG_I2C_PXA=y
|
||||||
# CONFIG_SENSORS_PCF8591 is not set
|
# CONFIG_SENSORS_PCF8591 is not set
|
||||||
# CONFIG_SENSORS_RTC8564 is not set
|
# CONFIG_SENSORS_RTC8564 is not set
|
||||||
# CONFIG_SENSORS_MAX6875 is not set
|
# CONFIG_SENSORS_MAX6875 is not set
|
||||||
|
# CONFIG_RTC_X1205_I2C is not set
|
||||||
# CONFIG_I2C_DEBUG_CORE is not set
|
# CONFIG_I2C_DEBUG_CORE is not set
|
||||||
# CONFIG_I2C_DEBUG_ALGO is not set
|
# CONFIG_I2C_DEBUG_ALGO is not set
|
||||||
# CONFIG_I2C_DEBUG_BUS is not set
|
# CONFIG_I2C_DEBUG_BUS is not set
|
||||||
|
@ -957,7 +996,10 @@ CONFIG_VIDEO_DEV=m
|
||||||
# CONFIG_VIDEO_SAA5246A is not set
|
# CONFIG_VIDEO_SAA5246A is not set
|
||||||
# CONFIG_VIDEO_SAA5249 is not set
|
# CONFIG_VIDEO_SAA5249 is not set
|
||||||
# CONFIG_TUNER_3036 is not set
|
# CONFIG_TUNER_3036 is not set
|
||||||
|
# CONFIG_VIDEO_EM28XX is not set
|
||||||
# CONFIG_VIDEO_OVCAMCHIP is not set
|
# CONFIG_VIDEO_OVCAMCHIP is not set
|
||||||
|
# CONFIG_VIDEO_AUDIO_DECODER is not set
|
||||||
|
# CONFIG_VIDEO_DECODER is not set
|
||||||
|
|
||||||
#
|
#
|
||||||
# Radio Adapters
|
# Radio Adapters
|
||||||
|
@ -976,13 +1018,12 @@ 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_SOFT_CURSOR=y
|
|
||||||
# CONFIG_FB_MACMODES is not set
|
# CONFIG_FB_MACMODES is not set
|
||||||
# CONFIG_FB_MODE_HELPERS is not set
|
# CONFIG_FB_MODE_HELPERS is not set
|
||||||
# CONFIG_FB_TILEBLITTING is not set
|
# CONFIG_FB_TILEBLITTING is not set
|
||||||
|
# CONFIG_FB_S1D13XXX is not set
|
||||||
# CONFIG_FB_PXA is not set
|
# CONFIG_FB_PXA is not set
|
||||||
CONFIG_FB_W100=y
|
CONFIG_FB_W100=y
|
||||||
# CONFIG_FB_S1D13XXX is not set
|
|
||||||
# CONFIG_FB_VIRTUAL is not set
|
# CONFIG_FB_VIRTUAL is not set
|
||||||
|
|
||||||
#
|
#
|
||||||
|
@ -991,6 +1032,7 @@ CONFIG_FB_W100=y
|
||||||
# CONFIG_VGA_CONSOLE is not set
|
# CONFIG_VGA_CONSOLE is not set
|
||||||
CONFIG_DUMMY_CONSOLE=y
|
CONFIG_DUMMY_CONSOLE=y
|
||||||
CONFIG_FRAMEBUFFER_CONSOLE=y
|
CONFIG_FRAMEBUFFER_CONSOLE=y
|
||||||
|
# CONFIG_FRAMEBUFFER_CONSOLE_ROTATION is not set
|
||||||
CONFIG_FONTS=y
|
CONFIG_FONTS=y
|
||||||
CONFIG_FONT_8x8=y
|
CONFIG_FONT_8x8=y
|
||||||
CONFIG_FONT_8x16=y
|
CONFIG_FONT_8x16=y
|
||||||
|
@ -1087,15 +1129,15 @@ CONFIG_USB_SL811_CS=m
|
||||||
# USB Device Class drivers
|
# USB Device Class drivers
|
||||||
#
|
#
|
||||||
# CONFIG_OBSOLETE_OSS_USB_DRIVER is not set
|
# CONFIG_OBSOLETE_OSS_USB_DRIVER is not set
|
||||||
|
|
||||||
#
|
|
||||||
# USB Bluetooth TTY can only be used with disabled Bluetooth subsystem
|
|
||||||
#
|
|
||||||
CONFIG_USB_ACM=m
|
CONFIG_USB_ACM=m
|
||||||
CONFIG_USB_PRINTER=m
|
CONFIG_USB_PRINTER=m
|
||||||
|
|
||||||
#
|
#
|
||||||
# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support' may also be needed; see USB_STORAGE Help for more information
|
# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support'
|
||||||
|
#
|
||||||
|
|
||||||
|
#
|
||||||
|
# may also be needed; see USB_STORAGE Help for more information
|
||||||
#
|
#
|
||||||
CONFIG_USB_STORAGE=m
|
CONFIG_USB_STORAGE=m
|
||||||
# CONFIG_USB_STORAGE_DEBUG is not set
|
# CONFIG_USB_STORAGE_DEBUG is not set
|
||||||
|
@ -1107,7 +1149,6 @@ CONFIG_USB_STORAGE=m
|
||||||
# CONFIG_USB_STORAGE_SDDR09 is not set
|
# CONFIG_USB_STORAGE_SDDR09 is not set
|
||||||
# CONFIG_USB_STORAGE_SDDR55 is not set
|
# CONFIG_USB_STORAGE_SDDR55 is not set
|
||||||
# CONFIG_USB_STORAGE_JUMPSHOT is not set
|
# CONFIG_USB_STORAGE_JUMPSHOT is not set
|
||||||
# CONFIG_USB_STORAGE_ONETOUCH is not set
|
|
||||||
|
|
||||||
#
|
#
|
||||||
# USB Input Devices
|
# USB Input Devices
|
||||||
|
@ -1185,6 +1226,7 @@ CONFIG_USB_MON=y
|
||||||
CONFIG_USB_SERIAL=m
|
CONFIG_USB_SERIAL=m
|
||||||
CONFIG_USB_SERIAL_GENERIC=y
|
CONFIG_USB_SERIAL_GENERIC=y
|
||||||
# CONFIG_USB_SERIAL_AIRPRIME is not set
|
# CONFIG_USB_SERIAL_AIRPRIME is not set
|
||||||
|
# CONFIG_USB_SERIAL_ANYDATA is not set
|
||||||
CONFIG_USB_SERIAL_BELKIN=m
|
CONFIG_USB_SERIAL_BELKIN=m
|
||||||
# CONFIG_USB_SERIAL_WHITEHEAT is not set
|
# CONFIG_USB_SERIAL_WHITEHEAT is not set
|
||||||
CONFIG_USB_SERIAL_DIGI_ACCELEPORT=m
|
CONFIG_USB_SERIAL_DIGI_ACCELEPORT=m
|
||||||
|
@ -1340,6 +1382,7 @@ CONFIG_RAMFS=y
|
||||||
CONFIG_JFFS2_FS=y
|
CONFIG_JFFS2_FS=y
|
||||||
CONFIG_JFFS2_FS_DEBUG=0
|
CONFIG_JFFS2_FS_DEBUG=0
|
||||||
CONFIG_JFFS2_FS_WRITEBUFFER=y
|
CONFIG_JFFS2_FS_WRITEBUFFER=y
|
||||||
|
CONFIG_JFFS2_SUMMARY=y
|
||||||
CONFIG_JFFS2_COMPRESSION_OPTIONS=y
|
CONFIG_JFFS2_COMPRESSION_OPTIONS=y
|
||||||
CONFIG_JFFS2_ZLIB=y
|
CONFIG_JFFS2_ZLIB=y
|
||||||
CONFIG_JFFS2_RTIME=y
|
CONFIG_JFFS2_RTIME=y
|
||||||
|
@ -1466,7 +1509,9 @@ CONFIG_DETECT_SOFTLOCKUP=y
|
||||||
CONFIG_DEBUG_BUGVERBOSE=y
|
CONFIG_DEBUG_BUGVERBOSE=y
|
||||||
# CONFIG_DEBUG_INFO is not set
|
# CONFIG_DEBUG_INFO is not set
|
||||||
# CONFIG_DEBUG_FS is not set
|
# CONFIG_DEBUG_FS is not set
|
||||||
|
# CONFIG_DEBUG_VM is not set
|
||||||
CONFIG_FRAME_POINTER=y
|
CONFIG_FRAME_POINTER=y
|
||||||
|
# CONFIG_RCU_TORTURE_TEST is not set
|
||||||
# CONFIG_DEBUG_USER is not set
|
# CONFIG_DEBUG_USER is not set
|
||||||
# CONFIG_DEBUG_WAITQ is not set
|
# CONFIG_DEBUG_WAITQ is not set
|
||||||
CONFIG_DEBUG_ERRORS=y
|
CONFIG_DEBUG_ERRORS=y
|
||||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -1,7 +1,7 @@
|
||||||
#
|
#
|
||||||
# Automatically generated make config: don't edit
|
# Automatically generated make config: don't edit
|
||||||
# Linux kernel version: 2.6.14-rc3
|
# Linux kernel version: 2.6.15-rc2
|
||||||
# Sun Oct 9 17:11:19 2005
|
# Mon Nov 28 10:26:52 2005
|
||||||
#
|
#
|
||||||
CONFIG_ARM=y
|
CONFIG_ARM=y
|
||||||
CONFIG_MMU=y
|
CONFIG_MMU=y
|
||||||
|
@ -63,6 +63,23 @@ CONFIG_OBSOLETE_MODPARM=y
|
||||||
# CONFIG_MODULE_SRCVERSION_ALL is not set
|
# CONFIG_MODULE_SRCVERSION_ALL is not set
|
||||||
CONFIG_KMOD=y
|
CONFIG_KMOD=y
|
||||||
|
|
||||||
|
#
|
||||||
|
# Block layer
|
||||||
|
#
|
||||||
|
|
||||||
|
#
|
||||||
|
# IO Schedulers
|
||||||
|
#
|
||||||
|
CONFIG_IOSCHED_NOOP=y
|
||||||
|
CONFIG_IOSCHED_AS=y
|
||||||
|
CONFIG_IOSCHED_DEADLINE=y
|
||||||
|
CONFIG_IOSCHED_CFQ=y
|
||||||
|
CONFIG_DEFAULT_AS=y
|
||||||
|
# CONFIG_DEFAULT_DEADLINE is not set
|
||||||
|
# CONFIG_DEFAULT_CFQ is not set
|
||||||
|
# CONFIG_DEFAULT_NOOP is not set
|
||||||
|
CONFIG_DEFAULT_IOSCHED="anticipatory"
|
||||||
|
|
||||||
#
|
#
|
||||||
# System Type
|
# System Type
|
||||||
#
|
#
|
||||||
|
@ -85,6 +102,7 @@ CONFIG_ARCH_PXA=y
|
||||||
# CONFIG_ARCH_LH7A40X is not set
|
# CONFIG_ARCH_LH7A40X is not set
|
||||||
# CONFIG_ARCH_OMAP is not set
|
# CONFIG_ARCH_OMAP is not set
|
||||||
# CONFIG_ARCH_VERSATILE is not set
|
# CONFIG_ARCH_VERSATILE is not set
|
||||||
|
# CONFIG_ARCH_REALVIEW is not set
|
||||||
# CONFIG_ARCH_IMX is not set
|
# CONFIG_ARCH_IMX is not set
|
||||||
# CONFIG_ARCH_H720X is not set
|
# CONFIG_ARCH_H720X is not set
|
||||||
# CONFIG_ARCH_AAEC2000 is not set
|
# CONFIG_ARCH_AAEC2000 is not set
|
||||||
|
@ -98,10 +116,13 @@ CONFIG_ARCH_PXA=y
|
||||||
CONFIG_PXA_SHARPSL=y
|
CONFIG_PXA_SHARPSL=y
|
||||||
# CONFIG_PXA_SHARPSL_25x is not set
|
# CONFIG_PXA_SHARPSL_25x is not set
|
||||||
CONFIG_PXA_SHARPSL_27x=y
|
CONFIG_PXA_SHARPSL_27x=y
|
||||||
|
CONFIG_MACH_AKITA=y
|
||||||
CONFIG_MACH_SPITZ=y
|
CONFIG_MACH_SPITZ=y
|
||||||
CONFIG_MACH_BORZOI=y
|
CONFIG_MACH_BORZOI=y
|
||||||
CONFIG_PXA27x=y
|
CONFIG_PXA27x=y
|
||||||
|
CONFIG_IWMMXT=y
|
||||||
CONFIG_PXA_SHARP_Cxx00=y
|
CONFIG_PXA_SHARP_Cxx00=y
|
||||||
|
CONFIG_PXA_SSP=y
|
||||||
|
|
||||||
#
|
#
|
||||||
# Processor Type
|
# Processor Type
|
||||||
|
@ -153,6 +174,7 @@ CONFIG_FLATMEM_MANUAL=y
|
||||||
CONFIG_FLATMEM=y
|
CONFIG_FLATMEM=y
|
||||||
CONFIG_FLAT_NODE_MEM_MAP=y
|
CONFIG_FLAT_NODE_MEM_MAP=y
|
||||||
# CONFIG_SPARSEMEM_STATIC is not set
|
# CONFIG_SPARSEMEM_STATIC is not set
|
||||||
|
CONFIG_SPLIT_PTLOCK_CPUS=4096
|
||||||
CONFIG_ALIGNMENT_TRAP=y
|
CONFIG_ALIGNMENT_TRAP=y
|
||||||
|
|
||||||
#
|
#
|
||||||
|
@ -233,6 +255,10 @@ CONFIG_INET6_TUNNEL=m
|
||||||
CONFIG_IPV6_TUNNEL=m
|
CONFIG_IPV6_TUNNEL=m
|
||||||
CONFIG_NETFILTER=y
|
CONFIG_NETFILTER=y
|
||||||
# CONFIG_NETFILTER_DEBUG is not set
|
# CONFIG_NETFILTER_DEBUG is not set
|
||||||
|
|
||||||
|
#
|
||||||
|
# Core Netfilter Configuration
|
||||||
|
#
|
||||||
# CONFIG_NETFILTER_NETLINK is not set
|
# CONFIG_NETFILTER_NETLINK is not set
|
||||||
|
|
||||||
#
|
#
|
||||||
|
@ -354,6 +380,10 @@ CONFIG_IP6_NF_RAW=m
|
||||||
# CONFIG_NET_DIVERT is not set
|
# CONFIG_NET_DIVERT is not set
|
||||||
# CONFIG_ECONET is not set
|
# CONFIG_ECONET is not set
|
||||||
# CONFIG_WAN_ROUTER is not set
|
# CONFIG_WAN_ROUTER is not set
|
||||||
|
|
||||||
|
#
|
||||||
|
# QoS and/or fair queueing
|
||||||
|
#
|
||||||
# CONFIG_NET_SCHED is not set
|
# CONFIG_NET_SCHED is not set
|
||||||
CONFIG_NET_CLS_ROUTE=y
|
CONFIG_NET_CLS_ROUTE=y
|
||||||
|
|
||||||
|
@ -411,6 +441,7 @@ CONFIG_IRCOMM=m
|
||||||
# CONFIG_SMC_IRCC_FIR is not set
|
# CONFIG_SMC_IRCC_FIR is not set
|
||||||
# CONFIG_ALI_FIR is not set
|
# CONFIG_ALI_FIR is not set
|
||||||
# CONFIG_VIA_FIR is not set
|
# CONFIG_VIA_FIR is not set
|
||||||
|
CONFIG_PXA_FICP=m
|
||||||
CONFIG_BT=m
|
CONFIG_BT=m
|
||||||
CONFIG_BT_L2CAP=m
|
CONFIG_BT_L2CAP=m
|
||||||
CONFIG_BT_SCO=m
|
CONFIG_BT_SCO=m
|
||||||
|
@ -429,7 +460,6 @@ CONFIG_BT_HCIUSB=m
|
||||||
CONFIG_BT_HCIUART=m
|
CONFIG_BT_HCIUART=m
|
||||||
CONFIG_BT_HCIUART_H4=y
|
CONFIG_BT_HCIUART_H4=y
|
||||||
CONFIG_BT_HCIUART_BCSP=y
|
CONFIG_BT_HCIUART_BCSP=y
|
||||||
CONFIG_BT_HCIUART_BCSP_TXCRC=y
|
|
||||||
CONFIG_BT_HCIBCM203X=m
|
CONFIG_BT_HCIBCM203X=m
|
||||||
CONFIG_BT_HCIBPA10X=m
|
CONFIG_BT_HCIBPA10X=m
|
||||||
CONFIG_BT_HCIBFUSB=m
|
CONFIG_BT_HCIBFUSB=m
|
||||||
|
@ -456,6 +486,11 @@ 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
|
||||||
|
|
||||||
|
#
|
||||||
|
# Connector - unified userspace <-> kernelspace linker
|
||||||
|
#
|
||||||
|
# CONFIG_CONNECTOR is not set
|
||||||
|
|
||||||
#
|
#
|
||||||
# Memory Technology Devices (MTD)
|
# Memory Technology Devices (MTD)
|
||||||
#
|
#
|
||||||
|
@ -475,6 +510,7 @@ CONFIG_MTD_BLOCK=y
|
||||||
# CONFIG_FTL is not set
|
# CONFIG_FTL is not set
|
||||||
# CONFIG_NFTL is not set
|
# CONFIG_NFTL is not set
|
||||||
# CONFIG_INFTL is not set
|
# CONFIG_INFTL is not set
|
||||||
|
# CONFIG_RFD_FTL is not set
|
||||||
|
|
||||||
#
|
#
|
||||||
# RAM/ROM/Flash chip drivers
|
# RAM/ROM/Flash chip drivers
|
||||||
|
@ -529,6 +565,11 @@ CONFIG_MTD_NAND_IDS=y
|
||||||
CONFIG_MTD_NAND_SHARPSL=y
|
CONFIG_MTD_NAND_SHARPSL=y
|
||||||
# CONFIG_MTD_NAND_NANDSIM is not set
|
# CONFIG_MTD_NAND_NANDSIM is not set
|
||||||
|
|
||||||
|
#
|
||||||
|
# OneNAND Flash Device Drivers
|
||||||
|
#
|
||||||
|
# CONFIG_MTD_ONENAND is not set
|
||||||
|
|
||||||
#
|
#
|
||||||
# Parallel port support
|
# Parallel port support
|
||||||
#
|
#
|
||||||
|
@ -549,14 +590,6 @@ CONFIG_BLK_DEV_LOOP=y
|
||||||
# CONFIG_BLK_DEV_RAM is not set
|
# CONFIG_BLK_DEV_RAM is not set
|
||||||
CONFIG_BLK_DEV_RAM_COUNT=16
|
CONFIG_BLK_DEV_RAM_COUNT=16
|
||||||
# CONFIG_CDROM_PKTCDVD is not set
|
# CONFIG_CDROM_PKTCDVD is not set
|
||||||
|
|
||||||
#
|
|
||||||
# IO Schedulers
|
|
||||||
#
|
|
||||||
CONFIG_IOSCHED_NOOP=y
|
|
||||||
CONFIG_IOSCHED_AS=y
|
|
||||||
CONFIG_IOSCHED_DEADLINE=y
|
|
||||||
CONFIG_IOSCHED_CFQ=y
|
|
||||||
# CONFIG_ATA_OVER_ETH is not set
|
# CONFIG_ATA_OVER_ETH is not set
|
||||||
|
|
||||||
#
|
#
|
||||||
|
@ -623,6 +656,7 @@ CONFIG_SCSI_MULTI_LUN=y
|
||||||
#
|
#
|
||||||
# SCSI low-level drivers
|
# SCSI low-level drivers
|
||||||
#
|
#
|
||||||
|
# CONFIG_ISCSI_TCP is not set
|
||||||
# CONFIG_SCSI_SATA is not set
|
# CONFIG_SCSI_SATA is not set
|
||||||
# CONFIG_SCSI_DEBUG is not set
|
# CONFIG_SCSI_DEBUG is not set
|
||||||
|
|
||||||
|
@ -746,6 +780,7 @@ CONFIG_PPP_ASYNC=m
|
||||||
# CONFIG_PPP_SYNC_TTY is not set
|
# CONFIG_PPP_SYNC_TTY is not set
|
||||||
# CONFIG_PPP_DEFLATE is not set
|
# CONFIG_PPP_DEFLATE is not set
|
||||||
CONFIG_PPP_BSDCOMP=m
|
CONFIG_PPP_BSDCOMP=m
|
||||||
|
# CONFIG_PPP_MPPE is not set
|
||||||
# CONFIG_PPPOE is not set
|
# CONFIG_PPPOE is not set
|
||||||
# CONFIG_SLIP is not set
|
# CONFIG_SLIP is not set
|
||||||
# CONFIG_SHAPER is not set
|
# CONFIG_SHAPER is not set
|
||||||
|
@ -771,6 +806,7 @@ CONFIG_INPUT=y
|
||||||
# CONFIG_INPUT_TSDEV is not set
|
# CONFIG_INPUT_TSDEV is not set
|
||||||
CONFIG_INPUT_EVDEV=y
|
CONFIG_INPUT_EVDEV=y
|
||||||
# CONFIG_INPUT_EVBUG is not set
|
# CONFIG_INPUT_EVBUG is not set
|
||||||
|
# CONFIG_INPUT_POWER is not set
|
||||||
|
|
||||||
#
|
#
|
||||||
# Input Device Drivers
|
# Input Device Drivers
|
||||||
|
@ -848,11 +884,15 @@ CONFIG_UNIX98_PTYS=y
|
||||||
# PCMCIA character devices
|
# PCMCIA character devices
|
||||||
#
|
#
|
||||||
# CONFIG_SYNCLINK_CS is not set
|
# CONFIG_SYNCLINK_CS is not set
|
||||||
|
# CONFIG_CARDMAN_4000 is not set
|
||||||
|
# CONFIG_CARDMAN_4040 is not set
|
||||||
# CONFIG_RAW_DRIVER is not set
|
# CONFIG_RAW_DRIVER is not set
|
||||||
|
|
||||||
#
|
#
|
||||||
# TPM devices
|
# TPM devices
|
||||||
#
|
#
|
||||||
|
# CONFIG_TCG_TPM is not set
|
||||||
|
# CONFIG_TELCLOCK is not set
|
||||||
|
|
||||||
#
|
#
|
||||||
# I2C support
|
# I2C support
|
||||||
|
@ -891,14 +931,13 @@ 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_SOFT_CURSOR=y
|
|
||||||
# CONFIG_FB_MACMODES is not set
|
# CONFIG_FB_MACMODES is not set
|
||||||
# CONFIG_FB_MODE_HELPERS is not set
|
# CONFIG_FB_MODE_HELPERS is not set
|
||||||
# CONFIG_FB_TILEBLITTING is not set
|
# CONFIG_FB_TILEBLITTING is not set
|
||||||
CONFIG_FB_PXA=y
|
|
||||||
# CONFIG_FB_W100 is not set
|
|
||||||
# CONFIG_FB_PXA_PARAMETERS is not set
|
|
||||||
# CONFIG_FB_S1D13XXX is not set
|
# CONFIG_FB_S1D13XXX is not set
|
||||||
|
CONFIG_FB_PXA=y
|
||||||
|
# CONFIG_FB_PXA_PARAMETERS is not set
|
||||||
|
# CONFIG_FB_W100 is not set
|
||||||
# CONFIG_FB_VIRTUAL is not set
|
# CONFIG_FB_VIRTUAL is not set
|
||||||
|
|
||||||
#
|
#
|
||||||
|
@ -907,6 +946,7 @@ CONFIG_FB_PXA=y
|
||||||
# CONFIG_VGA_CONSOLE is not set
|
# CONFIG_VGA_CONSOLE is not set
|
||||||
CONFIG_DUMMY_CONSOLE=y
|
CONFIG_DUMMY_CONSOLE=y
|
||||||
CONFIG_FRAMEBUFFER_CONSOLE=y
|
CONFIG_FRAMEBUFFER_CONSOLE=y
|
||||||
|
CONFIG_FRAMEBUFFER_CONSOLE_ROTATION=y
|
||||||
CONFIG_FONTS=y
|
CONFIG_FONTS=y
|
||||||
CONFIG_FONT_8x8=y
|
CONFIG_FONT_8x8=y
|
||||||
CONFIG_FONT_8x16=y
|
CONFIG_FONT_8x16=y
|
||||||
|
@ -965,15 +1005,15 @@ CONFIG_USB_SL811_CS=m
|
||||||
#
|
#
|
||||||
# USB Device Class drivers
|
# USB Device Class drivers
|
||||||
#
|
#
|
||||||
|
|
||||||
#
|
|
||||||
# USB Bluetooth TTY can only be used with disabled Bluetooth subsystem
|
|
||||||
#
|
|
||||||
CONFIG_USB_ACM=m
|
CONFIG_USB_ACM=m
|
||||||
CONFIG_USB_PRINTER=m
|
CONFIG_USB_PRINTER=m
|
||||||
|
|
||||||
#
|
#
|
||||||
# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support' may also be needed; see USB_STORAGE Help for more information
|
# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support'
|
||||||
|
#
|
||||||
|
|
||||||
|
#
|
||||||
|
# may also be needed; see USB_STORAGE Help for more information
|
||||||
#
|
#
|
||||||
CONFIG_USB_STORAGE=m
|
CONFIG_USB_STORAGE=m
|
||||||
# CONFIG_USB_STORAGE_DEBUG is not set
|
# CONFIG_USB_STORAGE_DEBUG is not set
|
||||||
|
@ -985,7 +1025,6 @@ CONFIG_USB_STORAGE=m
|
||||||
# CONFIG_USB_STORAGE_SDDR09 is not set
|
# CONFIG_USB_STORAGE_SDDR09 is not set
|
||||||
# CONFIG_USB_STORAGE_SDDR55 is not set
|
# CONFIG_USB_STORAGE_SDDR55 is not set
|
||||||
# CONFIG_USB_STORAGE_JUMPSHOT is not set
|
# CONFIG_USB_STORAGE_JUMPSHOT is not set
|
||||||
# CONFIG_USB_STORAGE_ONETOUCH is not set
|
|
||||||
|
|
||||||
#
|
#
|
||||||
# USB Input Devices
|
# USB Input Devices
|
||||||
|
@ -1058,6 +1097,7 @@ CONFIG_USB_MON=y
|
||||||
CONFIG_USB_SERIAL=m
|
CONFIG_USB_SERIAL=m
|
||||||
CONFIG_USB_SERIAL_GENERIC=y
|
CONFIG_USB_SERIAL_GENERIC=y
|
||||||
# CONFIG_USB_SERIAL_AIRPRIME is not set
|
# CONFIG_USB_SERIAL_AIRPRIME is not set
|
||||||
|
# CONFIG_USB_SERIAL_ANYDATA is not set
|
||||||
CONFIG_USB_SERIAL_BELKIN=m
|
CONFIG_USB_SERIAL_BELKIN=m
|
||||||
# CONFIG_USB_SERIAL_WHITEHEAT is not set
|
# CONFIG_USB_SERIAL_WHITEHEAT is not set
|
||||||
CONFIG_USB_SERIAL_DIGI_ACCELEPORT=m
|
CONFIG_USB_SERIAL_DIGI_ACCELEPORT=m
|
||||||
|
@ -1218,6 +1258,7 @@ CONFIG_RAMFS=y
|
||||||
CONFIG_JFFS2_FS=y
|
CONFIG_JFFS2_FS=y
|
||||||
CONFIG_JFFS2_FS_DEBUG=0
|
CONFIG_JFFS2_FS_DEBUG=0
|
||||||
CONFIG_JFFS2_FS_WRITEBUFFER=y
|
CONFIG_JFFS2_FS_WRITEBUFFER=y
|
||||||
|
CONFIG_JFFS2_SUMMARY=y
|
||||||
CONFIG_JFFS2_COMPRESSION_OPTIONS=y
|
CONFIG_JFFS2_COMPRESSION_OPTIONS=y
|
||||||
CONFIG_JFFS2_ZLIB=y
|
CONFIG_JFFS2_ZLIB=y
|
||||||
CONFIG_JFFS2_RTIME=y
|
CONFIG_JFFS2_RTIME=y
|
||||||
|
@ -1344,7 +1385,9 @@ CONFIG_DETECT_SOFTLOCKUP=y
|
||||||
CONFIG_DEBUG_BUGVERBOSE=y
|
CONFIG_DEBUG_BUGVERBOSE=y
|
||||||
# CONFIG_DEBUG_INFO is not set
|
# CONFIG_DEBUG_INFO is not set
|
||||||
# CONFIG_DEBUG_FS is not set
|
# CONFIG_DEBUG_FS is not set
|
||||||
|
# CONFIG_DEBUG_VM is not set
|
||||||
CONFIG_FRAME_POINTER=y
|
CONFIG_FRAME_POINTER=y
|
||||||
|
# CONFIG_RCU_TORTURE_TEST is not set
|
||||||
# CONFIG_DEBUG_USER is not set
|
# CONFIG_DEBUG_USER is not set
|
||||||
# CONFIG_DEBUG_WAITQ is not set
|
# CONFIG_DEBUG_WAITQ is not set
|
||||||
CONFIG_DEBUG_ERRORS=y
|
CONFIG_DEBUG_ERRORS=y
|
||||||
|
|
|
@ -17,7 +17,6 @@
|
||||||
|
|
||||||
#include <asm/assembler.h>
|
#include <asm/assembler.h>
|
||||||
#include <asm/domain.h>
|
#include <asm/domain.h>
|
||||||
#include <asm/mach-types.h>
|
|
||||||
#include <asm/procinfo.h>
|
#include <asm/procinfo.h>
|
||||||
#include <asm/ptrace.h>
|
#include <asm/ptrace.h>
|
||||||
#include <asm/asm-offsets.h>
|
#include <asm/asm-offsets.h>
|
||||||
|
@ -83,7 +82,7 @@ ENTRY(stext)
|
||||||
@ and irqs disabled
|
@ and irqs disabled
|
||||||
bl __lookup_processor_type @ r5=procinfo r9=cpuid
|
bl __lookup_processor_type @ r5=procinfo r9=cpuid
|
||||||
movs r10, r5 @ invalid processor (r5=0)?
|
movs r10, r5 @ invalid processor (r5=0)?
|
||||||
beq __error_p @ yes, error 'p'
|
beq __error_p @ yes, error 'p'
|
||||||
bl __lookup_machine_type @ r5=machinfo
|
bl __lookup_machine_type @ r5=machinfo
|
||||||
movs r8, r5 @ invalid machine (r5=0)?
|
movs r8, r5 @ invalid machine (r5=0)?
|
||||||
beq __error_a @ yes, error 'a'
|
beq __error_a @ yes, error 'a'
|
||||||
|
@ -343,16 +342,12 @@ __create_page_tables:
|
||||||
bne 1b
|
bne 1b
|
||||||
#if defined(CONFIG_ARCH_NETWINDER) || defined(CONFIG_ARCH_CATS)
|
#if defined(CONFIG_ARCH_NETWINDER) || defined(CONFIG_ARCH_CATS)
|
||||||
/*
|
/*
|
||||||
* If we're using the NetWinder, we need to map in
|
* If we're using the NetWinder or CATS, we also need to map
|
||||||
* the 16550-type serial port for the debug messages
|
* in the 16550-type serial port for the debug messages
|
||||||
*/
|
*/
|
||||||
teq r1, #MACH_TYPE_NETWINDER
|
|
||||||
teqne r1, #MACH_TYPE_CATS
|
|
||||||
bne 1f
|
|
||||||
add r0, r4, #0xff000000 >> 18
|
add r0, r4, #0xff000000 >> 18
|
||||||
orr r3, r7, #0x7c000000
|
orr r3, r7, #0x7c000000
|
||||||
str r3, [r0]
|
str r3, [r0]
|
||||||
1:
|
|
||||||
#endif
|
#endif
|
||||||
#ifdef CONFIG_ARCH_RPC
|
#ifdef CONFIG_ARCH_RPC
|
||||||
/*
|
/*
|
||||||
|
|
|
@ -260,7 +260,7 @@ static void __init clps7500_init_irq(void)
|
||||||
|
|
||||||
static struct map_desc cl7500_io_desc[] __initdata = {
|
static struct map_desc cl7500_io_desc[] __initdata = {
|
||||||
{ /* IO space */
|
{ /* IO space */
|
||||||
.virtual = IO_BASE,
|
.virtual = (unsigned long)IO_BASE,
|
||||||
.pfn = __phys_to_pfn(IO_START),
|
.pfn = __phys_to_pfn(IO_START),
|
||||||
.length = IO_SIZE,
|
.length = IO_SIZE,
|
||||||
.type = MT_DEVICE
|
.type = MT_DEVICE
|
||||||
|
|
|
@ -44,6 +44,7 @@ config PXA_SHARPSL_25x
|
||||||
config PXA_SHARPSL_27x
|
config PXA_SHARPSL_27x
|
||||||
bool "Sharp PXA270 models (SL-Cxx00)"
|
bool "Sharp PXA270 models (SL-Cxx00)"
|
||||||
select PXA27x
|
select PXA27x
|
||||||
|
select IWMMXT
|
||||||
|
|
||||||
endchoice
|
endchoice
|
||||||
|
|
||||||
|
@ -60,7 +61,6 @@ config MACH_CORGI
|
||||||
bool "Enable Sharp SL-C700 (Corgi) Support"
|
bool "Enable Sharp SL-C700 (Corgi) Support"
|
||||||
depends PXA_SHARPSL_25x
|
depends PXA_SHARPSL_25x
|
||||||
select PXA_SHARP_C7xx
|
select PXA_SHARP_C7xx
|
||||||
select PXA_SSP
|
|
||||||
|
|
||||||
config MACH_SHEPHERD
|
config MACH_SHEPHERD
|
||||||
bool "Enable Sharp SL-C750 (Shepherd) Support"
|
bool "Enable Sharp SL-C750 (Shepherd) Support"
|
||||||
|
@ -90,7 +90,7 @@ config MACH_BORZOI
|
||||||
|
|
||||||
config MACH_TOSA
|
config MACH_TOSA
|
||||||
bool "Enable Sharp SL-6000x (Tosa) Support"
|
bool "Enable Sharp SL-6000x (Tosa) Support"
|
||||||
depends PXA_SHARPSL
|
depends PXA_SHARPSL_25x
|
||||||
|
|
||||||
config PXA25x
|
config PXA25x
|
||||||
bool
|
bool
|
||||||
|
|
|
@ -14,7 +14,7 @@
|
||||||
|
|
||||||
#include <linux/kernel.h>
|
#include <linux/kernel.h>
|
||||||
#include <linux/init.h>
|
#include <linux/init.h>
|
||||||
#include <linux/device.h>
|
#include <linux/platform_device.h>
|
||||||
#include <linux/major.h>
|
#include <linux/major.h>
|
||||||
#include <linux/fs.h>
|
#include <linux/fs.h>
|
||||||
#include <linux/interrupt.h>
|
#include <linux/interrupt.h>
|
||||||
|
|
|
@ -30,7 +30,6 @@
|
||||||
#include <asm/io.h>
|
#include <asm/io.h>
|
||||||
#include <asm/irq.h>
|
#include <asm/irq.h>
|
||||||
#include <asm/leds.h>
|
#include <asm/leds.h>
|
||||||
#include <asm/mach-types.h>
|
|
||||||
#include <asm/hardware/amba.h>
|
#include <asm/hardware/amba.h>
|
||||||
#include <asm/hardware/amba_clcd.h>
|
#include <asm/hardware/amba_clcd.h>
|
||||||
#include <asm/hardware/arm_timer.h>
|
#include <asm/hardware/arm_timer.h>
|
||||||
|
|
|
@ -293,7 +293,8 @@ static void __init get_assabet_scr(void)
|
||||||
GPDR |= 0x3fc; /* Configure GPIO 9:2 as outputs */
|
GPDR |= 0x3fc; /* Configure GPIO 9:2 as outputs */
|
||||||
GPSR = 0x3fc; /* Write 0xFF to GPIO 9:2 */
|
GPSR = 0x3fc; /* Write 0xFF to GPIO 9:2 */
|
||||||
GPDR &= ~(0x3fc); /* Configure GPIO 9:2 as inputs */
|
GPDR &= ~(0x3fc); /* Configure GPIO 9:2 as inputs */
|
||||||
for(i = 100; i--; scr = GPLR); /* Read GPIO 9:2 */
|
for(i = 100; i--; ) /* Read GPIO 9:2 */
|
||||||
|
scr = GPLR;
|
||||||
GPDR |= 0x3fc; /* restore correct pin direction */
|
GPDR |= 0x3fc; /* restore correct pin direction */
|
||||||
scr &= 0x3fc; /* save as system configuration byte. */
|
scr &= 0x3fc; /* save as system configuration byte. */
|
||||||
SCR_value = scr;
|
SCR_value = scr;
|
||||||
|
|
|
@ -66,6 +66,7 @@ struct vm_region {
|
||||||
unsigned long vm_start;
|
unsigned long vm_start;
|
||||||
unsigned long vm_end;
|
unsigned long vm_end;
|
||||||
struct page *vm_pages;
|
struct page *vm_pages;
|
||||||
|
int vm_active;
|
||||||
};
|
};
|
||||||
|
|
||||||
static struct vm_region consistent_head = {
|
static struct vm_region consistent_head = {
|
||||||
|
@ -104,6 +105,7 @@ vm_region_alloc(struct vm_region *head, size_t size, gfp_t gfp)
|
||||||
list_add_tail(&new->vm_list, &c->vm_list);
|
list_add_tail(&new->vm_list, &c->vm_list);
|
||||||
new->vm_start = addr;
|
new->vm_start = addr;
|
||||||
new->vm_end = addr + size;
|
new->vm_end = addr + size;
|
||||||
|
new->vm_active = 1;
|
||||||
|
|
||||||
spin_unlock_irqrestore(&consistent_lock, flags);
|
spin_unlock_irqrestore(&consistent_lock, flags);
|
||||||
return new;
|
return new;
|
||||||
|
@ -120,7 +122,7 @@ static struct vm_region *vm_region_find(struct vm_region *head, unsigned long ad
|
||||||
struct vm_region *c;
|
struct vm_region *c;
|
||||||
|
|
||||||
list_for_each_entry(c, &head->vm_list, vm_list) {
|
list_for_each_entry(c, &head->vm_list, vm_list) {
|
||||||
if (c->vm_start == addr)
|
if (c->vm_active && c->vm_start == addr)
|
||||||
goto out;
|
goto out;
|
||||||
}
|
}
|
||||||
c = NULL;
|
c = NULL;
|
||||||
|
@ -319,6 +321,7 @@ EXPORT_SYMBOL(dma_mmap_writecombine);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* free a page as defined by the above mapping.
|
* free a page as defined by the above mapping.
|
||||||
|
* Must not be called with IRQs disabled.
|
||||||
*/
|
*/
|
||||||
void dma_free_coherent(struct device *dev, size_t size, void *cpu_addr, dma_addr_t handle)
|
void dma_free_coherent(struct device *dev, size_t size, void *cpu_addr, dma_addr_t handle)
|
||||||
{
|
{
|
||||||
|
@ -326,14 +329,18 @@ void dma_free_coherent(struct device *dev, size_t size, void *cpu_addr, dma_addr
|
||||||
unsigned long flags, addr;
|
unsigned long flags, addr;
|
||||||
pte_t *ptep;
|
pte_t *ptep;
|
||||||
|
|
||||||
|
WARN_ON(irqs_disabled());
|
||||||
|
|
||||||
size = PAGE_ALIGN(size);
|
size = PAGE_ALIGN(size);
|
||||||
|
|
||||||
spin_lock_irqsave(&consistent_lock, flags);
|
spin_lock_irqsave(&consistent_lock, flags);
|
||||||
|
|
||||||
c = vm_region_find(&consistent_head, (unsigned long)cpu_addr);
|
c = vm_region_find(&consistent_head, (unsigned long)cpu_addr);
|
||||||
if (!c)
|
if (!c)
|
||||||
goto no_area;
|
goto no_area;
|
||||||
|
|
||||||
|
c->vm_active = 0;
|
||||||
|
spin_unlock_irqrestore(&consistent_lock, flags);
|
||||||
|
|
||||||
if ((c->vm_end - c->vm_start) != size) {
|
if ((c->vm_end - c->vm_start) != size) {
|
||||||
printk(KERN_ERR "%s: freeing wrong coherent size (%ld != %d)\n",
|
printk(KERN_ERR "%s: freeing wrong coherent size (%ld != %d)\n",
|
||||||
__func__, c->vm_end - c->vm_start, size);
|
__func__, c->vm_end - c->vm_start, size);
|
||||||
|
@ -372,8 +379,8 @@ void dma_free_coherent(struct device *dev, size_t size, void *cpu_addr, dma_addr
|
||||||
|
|
||||||
flush_tlb_kernel_range(c->vm_start, c->vm_end);
|
flush_tlb_kernel_range(c->vm_start, c->vm_end);
|
||||||
|
|
||||||
|
spin_lock_irqsave(&consistent_lock, flags);
|
||||||
list_del(&c->vm_list);
|
list_del(&c->vm_list);
|
||||||
|
|
||||||
spin_unlock_irqrestore(&consistent_lock, flags);
|
spin_unlock_irqrestore(&consistent_lock, flags);
|
||||||
|
|
||||||
kfree(c);
|
kfree(c);
|
||||||
|
|
|
@ -12,7 +12,7 @@
|
||||||
#
|
#
|
||||||
# http://www.arm.linux.org.uk/developer/machines/?action=new
|
# http://www.arm.linux.org.uk/developer/machines/?action=new
|
||||||
#
|
#
|
||||||
# Last update: Fri Nov 11 21:55:04 2005
|
# Last update: Fri Nov 25 14:43:04 2005
|
||||||
#
|
#
|
||||||
# machine_is_xxx CONFIG_xxxx MACH_TYPE_xxx number
|
# machine_is_xxx CONFIG_xxxx MACH_TYPE_xxx number
|
||||||
#
|
#
|
||||||
|
@ -857,12 +857,12 @@ osiris MACH_OSIRIS OSIRIS 842
|
||||||
maestro MACH_MAESTRO MAESTRO 843
|
maestro MACH_MAESTRO MAESTRO 843
|
||||||
tunge2 MACH_TUNGE2 TUNGE2 844
|
tunge2 MACH_TUNGE2 TUNGE2 844
|
||||||
ixbbm MACH_IXBBM IXBBM 845
|
ixbbm MACH_IXBBM IXBBM 845
|
||||||
mx27 MACH_MX27 MX27 846
|
mx27ads MACH_MX27 MX27 846
|
||||||
ax8004 MACH_AX8004 AX8004 847
|
ax8004 MACH_AX8004 AX8004 847
|
||||||
at91sam9261ek MACH_AT91SAM9261EK AT91SAM9261EK 848
|
at91sam9261ek MACH_AT91SAM9261EK AT91SAM9261EK 848
|
||||||
loft MACH_LOFT LOFT 849
|
loft MACH_LOFT LOFT 849
|
||||||
magpie MACH_MAGPIE MAGPIE 850
|
magpie MACH_MAGPIE MAGPIE 850
|
||||||
mx21 MACH_MX21 MX21 851
|
mx21ads MACH_MX21 MX21 851
|
||||||
mb87m3400 MACH_MB87M3400 MB87M3400 852
|
mb87m3400 MACH_MB87M3400 MB87M3400 852
|
||||||
mguard_delta MACH_MGUARD_DELTA MGUARD_DELTA 853
|
mguard_delta MACH_MGUARD_DELTA MGUARD_DELTA 853
|
||||||
davinci_dvdp MACH_DAVINCI_DVDP DAVINCI_DVDP 854
|
davinci_dvdp MACH_DAVINCI_DVDP DAVINCI_DVDP 854
|
||||||
|
@ -897,10 +897,16 @@ omi_board MACH_OMI_BOARD OMI_BOARD 882
|
||||||
mx21civ MACH_MX21CIV MX21CIV 883
|
mx21civ MACH_MX21CIV MX21CIV 883
|
||||||
mahi_cdac MACH_MAHI_CDAC MAHI_CDAC 884
|
mahi_cdac MACH_MAHI_CDAC MAHI_CDAC 884
|
||||||
xscale_palmtx MACH_XSCALE_PALMTX XSCALE_PALMTX 885
|
xscale_palmtx MACH_XSCALE_PALMTX XSCALE_PALMTX 885
|
||||||
arch_s3c2413 MACH_ARCH_S3C2413 ARCH_S3C2413 886
|
|
||||||
s3c2413 MACH_S3C2413 S3C2413 887
|
s3c2413 MACH_S3C2413 S3C2413 887
|
||||||
samsys_ep0 MACH_SAMSYS_EP0 SAMSYS_EP0 888
|
samsys_ep0 MACH_SAMSYS_EP0 SAMSYS_EP0 888
|
||||||
wg302v1 MACH_WG302V1 WG302V1 889
|
wg302v1 MACH_WG302V1 WG302V1 889
|
||||||
wg302v2 MACH_WG302V2 WG302V2 890
|
wg302v2 MACH_WG302V2 WG302V2 890
|
||||||
eb42x MACH_EB42X EB42X 891
|
eb42x MACH_EB42X EB42X 891
|
||||||
iq331es MACH_IQ331ES IQ331ES 892
|
iq331es MACH_IQ331ES IQ331ES 892
|
||||||
|
cosydsp MACH_COSYDSP COSYDSP 893
|
||||||
|
uplat7d MACH_UPLAT7D UPLAT7D 894
|
||||||
|
ptdavinci MACH_PTDAVINCI PTDAVINCI 895
|
||||||
|
mbus MACH_MBUS MBUS 896
|
||||||
|
nadia2vb MACH_NADIA2VB NADIA2VB 897
|
||||||
|
r1000 MACH_R1000 R1000 898
|
||||||
|
hw90250 MACH_HW90250 HW90250 899
|
||||||
|
|
|
@ -20,7 +20,7 @@ struct sem_waiter {
|
||||||
struct task_struct *task;
|
struct task_struct *task;
|
||||||
};
|
};
|
||||||
|
|
||||||
#if SEM_DEBUG
|
#if SEMAPHORE_DEBUG
|
||||||
void semtrace(struct semaphore *sem, const char *str)
|
void semtrace(struct semaphore *sem, const char *str)
|
||||||
{
|
{
|
||||||
if (sem->debug)
|
if (sem->debug)
|
||||||
|
|
|
@ -60,7 +60,7 @@ void __init pcibios_fixup_irqs(void)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void __init pcibios_penalize_isa_irq(int irq, int active)
|
void __init pcibios_penalize_isa_irq(int irq)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -108,7 +108,7 @@ void __init paging_init(void)
|
||||||
|
|
||||||
memset((void *) empty_zero_page, 0, PAGE_SIZE);
|
memset((void *) empty_zero_page, 0, PAGE_SIZE);
|
||||||
|
|
||||||
#if CONFIG_HIGHMEM
|
#ifdef CONFIG_HIGHMEM
|
||||||
if (num_physpages - num_mappedpages) {
|
if (num_physpages - num_mappedpages) {
|
||||||
pgd_t *pge;
|
pgd_t *pge;
|
||||||
pud_t *pue;
|
pud_t *pue;
|
||||||
|
|
|
@ -85,7 +85,7 @@ static inline void pgd_list_add(pgd_t *pgd)
|
||||||
struct page *page = virt_to_page(pgd);
|
struct page *page = virt_to_page(pgd);
|
||||||
page->index = (unsigned long) pgd_list;
|
page->index = (unsigned long) pgd_list;
|
||||||
if (pgd_list)
|
if (pgd_list)
|
||||||
pgd_list->private = (unsigned long) &page->index;
|
set_page_private(pgd_list, (unsigned long) &page->index);
|
||||||
pgd_list = page;
|
pgd_list = page;
|
||||||
set_page_private(page, (unsigned long)&pgd_list);
|
set_page_private(page, (unsigned long)&pgd_list);
|
||||||
}
|
}
|
||||||
|
@ -94,10 +94,10 @@ static inline void pgd_list_del(pgd_t *pgd)
|
||||||
{
|
{
|
||||||
struct page *next, **pprev, *page = virt_to_page(pgd);
|
struct page *next, **pprev, *page = virt_to_page(pgd);
|
||||||
next = (struct page *) page->index;
|
next = (struct page *) page->index;
|
||||||
pprev = (struct page **)page_private(page);
|
pprev = (struct page **) page_private(page);
|
||||||
*pprev = next;
|
*pprev = next;
|
||||||
if (next)
|
if (next)
|
||||||
next->private = (unsigned long) pprev;
|
set_page_private(next, (unsigned long) pprev);
|
||||||
}
|
}
|
||||||
|
|
||||||
void pgd_ctor(void *pgd, kmem_cache_t *cache, unsigned long unused)
|
void pgd_ctor(void *pgd, kmem_cache_t *cache, unsigned long unused)
|
||||||
|
|
|
@ -393,13 +393,6 @@ void flush_thread(void)
|
||||||
{
|
{
|
||||||
struct task_struct *tsk = current;
|
struct task_struct *tsk = current;
|
||||||
|
|
||||||
/*
|
|
||||||
* Remove function-return probe instances associated with this task
|
|
||||||
* and put them back on the free list. Do not insert an exit probe for
|
|
||||||
* this function, it will be disabled by kprobe_flush_task if you do.
|
|
||||||
*/
|
|
||||||
kprobe_flush_task(tsk);
|
|
||||||
|
|
||||||
memset(tsk->thread.debugreg, 0, sizeof(unsigned long)*8);
|
memset(tsk->thread.debugreg, 0, sizeof(unsigned long)*8);
|
||||||
memset(tsk->thread.tls_array, 0, sizeof(tsk->thread.tls_array));
|
memset(tsk->thread.tls_array, 0, sizeof(tsk->thread.tls_array));
|
||||||
/*
|
/*
|
||||||
|
|
|
@ -132,7 +132,7 @@ struct pci_bus * __devinit pcibios_scan_root(int busnum)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
printk("PCI: Probing PCI hardware (bus %02x)\n", busnum);
|
printk(KERN_DEBUG "PCI: Probing PCI hardware (bus %02x)\n", busnum);
|
||||||
|
|
||||||
return pci_scan_bus_parented(NULL, busnum, &pci_root_ops, NULL);
|
return pci_scan_bus_parented(NULL, busnum, &pci_root_ops, NULL);
|
||||||
}
|
}
|
||||||
|
@ -144,7 +144,7 @@ static int __init pcibios_init(void)
|
||||||
struct cpuinfo_x86 *c = &boot_cpu_data;
|
struct cpuinfo_x86 *c = &boot_cpu_data;
|
||||||
|
|
||||||
if (!raw_pci_ops) {
|
if (!raw_pci_ops) {
|
||||||
printk("PCI: System does not support PCI\n");
|
printk(KERN_WARNING "PCI: System does not support PCI\n");
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -201,7 +201,7 @@ static int __init pci_sanity_check(struct pci_raw_ops *o)
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
DBG("PCI: Sanity check failed\n");
|
DBG(KERN_WARNING "PCI: Sanity check failed\n");
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -221,6 +221,11 @@ int pcibios_enable_resources(struct pci_dev *dev, int mask)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
r = &dev->resource[idx];
|
r = &dev->resource[idx];
|
||||||
|
if (!(r->flags & (IORESOURCE_IO | IORESOURCE_MEM)))
|
||||||
|
continue;
|
||||||
|
if ((idx == PCI_ROM_RESOURCE) &&
|
||||||
|
(!(r->flags & IORESOURCE_ROM_ENABLE)))
|
||||||
|
continue;
|
||||||
if (!r->start && r->end) {
|
if (!r->start && r->end) {
|
||||||
printk(KERN_ERR "PCI: Device %s not available because of resource collisions\n", pci_name(dev));
|
printk(KERN_ERR "PCI: Device %s not available because of resource collisions\n", pci_name(dev));
|
||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
|
@ -230,8 +235,6 @@ int pcibios_enable_resources(struct pci_dev *dev, int mask)
|
||||||
if (r->flags & IORESOURCE_MEM)
|
if (r->flags & IORESOURCE_MEM)
|
||||||
cmd |= PCI_COMMAND_MEMORY;
|
cmd |= PCI_COMMAND_MEMORY;
|
||||||
}
|
}
|
||||||
if (dev->resource[PCI_ROM_RESOURCE].start)
|
|
||||||
cmd |= PCI_COMMAND_MEMORY;
|
|
||||||
if (cmd != old_cmd) {
|
if (cmd != old_cmd) {
|
||||||
printk("PCI: Enabling device %s (%04x -> %04x)\n", pci_name(dev), old_cmd, cmd);
|
printk("PCI: Enabling device %s (%04x -> %04x)\n", pci_name(dev), old_cmd, cmd);
|
||||||
pci_write_config_word(dev, PCI_COMMAND, cmd);
|
pci_write_config_word(dev, PCI_COMMAND, cmd);
|
||||||
|
|
|
@ -718,13 +718,6 @@ kernel_thread_helper (int (*fn)(void *), void *arg)
|
||||||
void
|
void
|
||||||
flush_thread (void)
|
flush_thread (void)
|
||||||
{
|
{
|
||||||
/*
|
|
||||||
* Remove function-return probe instances associated with this task
|
|
||||||
* and put them back on the free list. Do not insert an exit probe for
|
|
||||||
* this function, it will be disabled by kprobe_flush_task if you do.
|
|
||||||
*/
|
|
||||||
kprobe_flush_task(current);
|
|
||||||
|
|
||||||
/* drop floating-point and debug-register state if it exists: */
|
/* drop floating-point and debug-register state if it exists: */
|
||||||
current->thread.flags &= ~(IA64_THREAD_FPH_VALID | IA64_THREAD_DBG_VALID);
|
current->thread.flags &= ~(IA64_THREAD_FPH_VALID | IA64_THREAD_DBG_VALID);
|
||||||
ia64_drop_fpu(current);
|
ia64_drop_fpu(current);
|
||||||
|
|
|
@ -137,6 +137,7 @@ retry_bteop:
|
||||||
bte = bte_if_on_node(nasid_to_try[nasid_index],bte_if_index);
|
bte = bte_if_on_node(nasid_to_try[nasid_index],bte_if_index);
|
||||||
|
|
||||||
if (bte == NULL) {
|
if (bte == NULL) {
|
||||||
|
nasid_index++;
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -492,6 +492,9 @@ static struct proc_dir_entry *proc_sn2_ptc;
|
||||||
|
|
||||||
static int __init sn2_ptc_init(void)
|
static int __init sn2_ptc_init(void)
|
||||||
{
|
{
|
||||||
|
if (!ia64_platform_is("sn2"))
|
||||||
|
return -ENOSYS;
|
||||||
|
|
||||||
if (!(proc_sn2_ptc = create_proc_entry(PTC_BASENAME, 0444, NULL))) {
|
if (!(proc_sn2_ptc = create_proc_entry(PTC_BASENAME, 0444, NULL))) {
|
||||||
printk(KERN_ERR "unable to create %s proc entry", PTC_BASENAME);
|
printk(KERN_ERR "unable to create %s proc entry", PTC_BASENAME);
|
||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
|
|
|
@ -743,13 +743,14 @@ sn_hwperf_ioctl(struct inode *in, struct file *fp, u32 op, u64 arg)
|
||||||
if ((r = sn_hwperf_enum_objects(&nobj, &objs)) == 0) {
|
if ((r = sn_hwperf_enum_objects(&nobj, &objs)) == 0) {
|
||||||
memset(p, 0, a.sz);
|
memset(p, 0, a.sz);
|
||||||
for (i = 0; i < nobj; i++) {
|
for (i = 0; i < nobj; i++) {
|
||||||
|
int cpuobj_index = 0;
|
||||||
if (!SN_HWPERF_IS_NODE(objs + i))
|
if (!SN_HWPERF_IS_NODE(objs + i))
|
||||||
continue;
|
continue;
|
||||||
node = sn_hwperf_obj_to_cnode(objs + i);
|
node = sn_hwperf_obj_to_cnode(objs + i);
|
||||||
for_each_online_cpu(j) {
|
for_each_online_cpu(j) {
|
||||||
if (node != cpu_to_node(j))
|
if (node != cpu_to_node(j))
|
||||||
continue;
|
continue;
|
||||||
cpuobj = (struct sn_hwperf_object_info *) p + j;
|
cpuobj = (struct sn_hwperf_object_info *) p + cpuobj_index++;
|
||||||
slice = 'a' + cpuid_to_slice(j);
|
slice = 'a' + cpuid_to_slice(j);
|
||||||
cdata = cpu_data(j);
|
cdata = cpu_data(j);
|
||||||
cpuobj->id = j;
|
cpuobj->id = j;
|
||||||
|
|
|
@ -36,12 +36,13 @@ static inline void *_port2addr(unsigned long port)
|
||||||
return (void *)(port + NONCACHE_OFFSET);
|
return (void *)(port + NONCACHE_OFFSET);
|
||||||
}
|
}
|
||||||
|
|
||||||
#if defined(CONFIG_IDE) && !defined(CONFIG_M32R_CFC)
|
#if defined(CONFIG_IDE)
|
||||||
static inline void *__port2addr_ata(unsigned long port)
|
static inline void *__port2addr_ata(unsigned long port)
|
||||||
{
|
{
|
||||||
static int dummy_reg;
|
static int dummy_reg;
|
||||||
|
|
||||||
switch (port) {
|
switch (port) {
|
||||||
|
/* IDE0 CF */
|
||||||
case 0x1f0: return (void *)0xb4002000;
|
case 0x1f0: return (void *)0xb4002000;
|
||||||
case 0x1f1: return (void *)0xb4012800;
|
case 0x1f1: return (void *)0xb4012800;
|
||||||
case 0x1f2: return (void *)0xb4012002;
|
case 0x1f2: return (void *)0xb4012002;
|
||||||
|
@ -51,6 +52,17 @@ static inline void *__port2addr_ata(unsigned long port)
|
||||||
case 0x1f6: return (void *)0xb4012006;
|
case 0x1f6: return (void *)0xb4012006;
|
||||||
case 0x1f7: return (void *)0xb4012806;
|
case 0x1f7: return (void *)0xb4012806;
|
||||||
case 0x3f6: return (void *)0xb401200e;
|
case 0x3f6: return (void *)0xb401200e;
|
||||||
|
/* IDE1 IDE */
|
||||||
|
case 0x170: return (void *)0xb4810000; /* Data 16bit */
|
||||||
|
case 0x171: return (void *)0xb4810002; /* Features / Error */
|
||||||
|
case 0x172: return (void *)0xb4810004; /* Sector count */
|
||||||
|
case 0x173: return (void *)0xb4810006; /* Sector number */
|
||||||
|
case 0x174: return (void *)0xb4810008; /* Cylinder low */
|
||||||
|
case 0x175: return (void *)0xb481000a; /* Cylinder high */
|
||||||
|
case 0x176: return (void *)0xb481000c; /* Device head */
|
||||||
|
case 0x177: return (void *)0xb481000e; /* Command */
|
||||||
|
case 0x376: return (void *)0xb480800c; /* Device control / Alt status */
|
||||||
|
|
||||||
default: return (void *)&dummy_reg;
|
default: return (void *)&dummy_reg;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -108,8 +120,9 @@ unsigned char _inb(unsigned long port)
|
||||||
{
|
{
|
||||||
if (port >= LAN_IOSTART && port < LAN_IOEND)
|
if (port >= LAN_IOSTART && port < LAN_IOEND)
|
||||||
return _ne_inb(PORT2ADDR_NE(port));
|
return _ne_inb(PORT2ADDR_NE(port));
|
||||||
#if defined(CONFIG_IDE) && !defined(CONFIG_M32R_CFC)
|
#if defined(CONFIG_IDE)
|
||||||
else if ((port >= 0x1f0 && port <=0x1f7) || port == 0x3f6) {
|
else if ( ((port >= 0x170 && port <=0x177) || port == 0x376) ||
|
||||||
|
((port >= 0x1f0 && port <=0x1f7) || port == 0x3f6) ){
|
||||||
return *(volatile unsigned char *)__port2addr_ata(port);
|
return *(volatile unsigned char *)__port2addr_ata(port);
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
@ -127,8 +140,9 @@ unsigned short _inw(unsigned long port)
|
||||||
{
|
{
|
||||||
if (port >= LAN_IOSTART && port < LAN_IOEND)
|
if (port >= LAN_IOSTART && port < LAN_IOEND)
|
||||||
return _ne_inw(PORT2ADDR_NE(port));
|
return _ne_inw(PORT2ADDR_NE(port));
|
||||||
#if defined(CONFIG_IDE) && !defined(CONFIG_M32R_CFC)
|
#if defined(CONFIG_IDE)
|
||||||
else if ((port >= 0x1f0 && port <=0x1f7) || port == 0x3f6) {
|
else if ( ((port >= 0x170 && port <=0x177) || port == 0x376) ||
|
||||||
|
((port >= 0x1f0 && port <=0x1f7) || port == 0x3f6) ){
|
||||||
return *(volatile unsigned short *)__port2addr_ata(port);
|
return *(volatile unsigned short *)__port2addr_ata(port);
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
@ -185,8 +199,9 @@ void _outb(unsigned char b, unsigned long port)
|
||||||
if (port >= LAN_IOSTART && port < LAN_IOEND)
|
if (port >= LAN_IOSTART && port < LAN_IOEND)
|
||||||
_ne_outb(b, PORT2ADDR_NE(port));
|
_ne_outb(b, PORT2ADDR_NE(port));
|
||||||
else
|
else
|
||||||
#if defined(CONFIG_IDE) && !defined(CONFIG_M32R_CFC)
|
#if defined(CONFIG_IDE)
|
||||||
if ((port >= 0x1f0 && port <=0x1f7) || port == 0x3f6) {
|
if ( ((port >= 0x170 && port <=0x177) || port == 0x376) ||
|
||||||
|
((port >= 0x1f0 && port <=0x1f7) || port == 0x3f6) ){
|
||||||
*(volatile unsigned char *)__port2addr_ata(port) = b;
|
*(volatile unsigned char *)__port2addr_ata(port) = b;
|
||||||
} else
|
} else
|
||||||
#endif
|
#endif
|
||||||
|
@ -203,8 +218,9 @@ void _outw(unsigned short w, unsigned long port)
|
||||||
if (port >= LAN_IOSTART && port < LAN_IOEND)
|
if (port >= LAN_IOSTART && port < LAN_IOEND)
|
||||||
_ne_outw(w, PORT2ADDR_NE(port));
|
_ne_outw(w, PORT2ADDR_NE(port));
|
||||||
else
|
else
|
||||||
#if defined(CONFIG_IDE) && !defined(CONFIG_M32R_CFC)
|
#if defined(CONFIG_IDE)
|
||||||
if ((port >= 0x1f0 && port <=0x1f7) || port == 0x3f6) {
|
if ( ((port >= 0x170 && port <=0x177) || port == 0x376) ||
|
||||||
|
((port >= 0x1f0 && port <=0x1f7) || port == 0x3f6) ){
|
||||||
*(volatile unsigned short *)__port2addr_ata(port) = w;
|
*(volatile unsigned short *)__port2addr_ata(port) = w;
|
||||||
} else
|
} else
|
||||||
#endif
|
#endif
|
||||||
|
@ -253,8 +269,9 @@ void _insb(unsigned int port, void * addr, unsigned long count)
|
||||||
{
|
{
|
||||||
if (port >= LAN_IOSTART && port < LAN_IOEND)
|
if (port >= LAN_IOSTART && port < LAN_IOEND)
|
||||||
_ne_insb(PORT2ADDR_NE(port), addr, count);
|
_ne_insb(PORT2ADDR_NE(port), addr, count);
|
||||||
#if defined(CONFIG_IDE) && !defined(CONFIG_M32R_CFC)
|
#if defined(CONFIG_IDE)
|
||||||
else if ((port >= 0x1f0 && port <=0x1f7) || port == 0x3f6) {
|
else if ( ((port >= 0x170 && port <=0x177) || port == 0x376) ||
|
||||||
|
((port >= 0x1f0 && port <=0x1f7) || port == 0x3f6) ){
|
||||||
unsigned char *buf = addr;
|
unsigned char *buf = addr;
|
||||||
unsigned char *portp = __port2addr_ata(port);
|
unsigned char *portp = __port2addr_ata(port);
|
||||||
while (count--)
|
while (count--)
|
||||||
|
@ -289,8 +306,9 @@ void _insw(unsigned int port, void * addr, unsigned long count)
|
||||||
pcc_ioread_word(9, port, (void *)addr, sizeof(unsigned short),
|
pcc_ioread_word(9, port, (void *)addr, sizeof(unsigned short),
|
||||||
count, 1);
|
count, 1);
|
||||||
#endif
|
#endif
|
||||||
#if defined(CONFIG_IDE) && !defined(CONFIG_M32R_CFC)
|
#if defined(CONFIG_IDE)
|
||||||
} else if ((port >= 0x1f0 && port <=0x1f7) || port == 0x3f6) {
|
} else if ( ((port >= 0x170 && port <=0x177) || port == 0x376) ||
|
||||||
|
((port >= 0x1f0 && port <=0x1f7) || port == 0x3f6) ){
|
||||||
portp = __port2addr_ata(port);
|
portp = __port2addr_ata(port);
|
||||||
while (count--)
|
while (count--)
|
||||||
*buf++ = *(volatile unsigned short *)portp;
|
*buf++ = *(volatile unsigned short *)portp;
|
||||||
|
@ -321,8 +339,9 @@ void _outsb(unsigned int port, const void * addr, unsigned long count)
|
||||||
portp = PORT2ADDR_NE(port);
|
portp = PORT2ADDR_NE(port);
|
||||||
while (count--)
|
while (count--)
|
||||||
_ne_outb(*buf++, portp);
|
_ne_outb(*buf++, portp);
|
||||||
#if defined(CONFIG_IDE) && !defined(CONFIG_M32R_CFC)
|
#if defined(CONFIG_IDE)
|
||||||
} else if ((port >= 0x1f0 && port <=0x1f7) || port == 0x3f6) {
|
} else if ( ((port >= 0x170 && port <=0x177) || port == 0x376) ||
|
||||||
|
((port >= 0x1f0 && port <=0x1f7) || port == 0x3f6) ){
|
||||||
portp = __port2addr_ata(port);
|
portp = __port2addr_ata(port);
|
||||||
while (count--)
|
while (count--)
|
||||||
*(volatile unsigned char *)portp = *buf++;
|
*(volatile unsigned char *)portp = *buf++;
|
||||||
|
@ -348,8 +367,9 @@ void _outsw(unsigned int port, const void * addr, unsigned long count)
|
||||||
portp = PORT2ADDR_NE(port);
|
portp = PORT2ADDR_NE(port);
|
||||||
while (count--)
|
while (count--)
|
||||||
*(volatile unsigned short *)portp = *buf++;
|
*(volatile unsigned short *)portp = *buf++;
|
||||||
#if defined(CONFIG_IDE) && !defined(CONFIG_M32R_CFC)
|
#if defined(CONFIG_IDE)
|
||||||
} else if ((port >= 0x1f0 && port <=0x1f7) || port == 0x3f6) {
|
} else if ( ((port >= 0x170 && port <=0x177) || port == 0x376) ||
|
||||||
|
((port >= 0x1f0 && port <=0x1f7) || port == 0x3f6) ){
|
||||||
portp = __port2addr_ata(port);
|
portp = __port2addr_ata(port);
|
||||||
while (count--)
|
while (count--)
|
||||||
*(volatile unsigned short *)portp = *buf++;
|
*(volatile unsigned short *)portp = *buf++;
|
||||||
|
|
|
@ -151,7 +151,7 @@ void __init init_IRQ(void)
|
||||||
disable_mappi3_irq(M32R_IRQ_INT1);
|
disable_mappi3_irq(M32R_IRQ_INT1);
|
||||||
#endif /* CONFIG_USB */
|
#endif /* CONFIG_USB */
|
||||||
|
|
||||||
/* ICUCR40: CFC IREQ */
|
/* CFC IREQ */
|
||||||
irq_desc[PLD_IRQ_CFIREQ].status = IRQ_DISABLED;
|
irq_desc[PLD_IRQ_CFIREQ].status = IRQ_DISABLED;
|
||||||
irq_desc[PLD_IRQ_CFIREQ].handler = &mappi3_irq_type;
|
irq_desc[PLD_IRQ_CFIREQ].handler = &mappi3_irq_type;
|
||||||
irq_desc[PLD_IRQ_CFIREQ].action = 0;
|
irq_desc[PLD_IRQ_CFIREQ].action = 0;
|
||||||
|
@ -160,7 +160,7 @@ void __init init_IRQ(void)
|
||||||
disable_mappi3_irq(PLD_IRQ_CFIREQ);
|
disable_mappi3_irq(PLD_IRQ_CFIREQ);
|
||||||
|
|
||||||
#if defined(CONFIG_M32R_CFC)
|
#if defined(CONFIG_M32R_CFC)
|
||||||
/* ICUCR41: CFC Insert */
|
/* ICUCR41: CFC Insert & eject */
|
||||||
irq_desc[PLD_IRQ_CFC_INSERT].status = IRQ_DISABLED;
|
irq_desc[PLD_IRQ_CFC_INSERT].status = IRQ_DISABLED;
|
||||||
irq_desc[PLD_IRQ_CFC_INSERT].handler = &mappi3_irq_type;
|
irq_desc[PLD_IRQ_CFC_INSERT].handler = &mappi3_irq_type;
|
||||||
irq_desc[PLD_IRQ_CFC_INSERT].action = 0;
|
irq_desc[PLD_IRQ_CFC_INSERT].action = 0;
|
||||||
|
@ -168,14 +168,16 @@ void __init init_IRQ(void)
|
||||||
icu_data[PLD_IRQ_CFC_INSERT].icucr = M32R_ICUCR_IEN|M32R_ICUCR_ISMOD00;
|
icu_data[PLD_IRQ_CFC_INSERT].icucr = M32R_ICUCR_IEN|M32R_ICUCR_ISMOD00;
|
||||||
disable_mappi3_irq(PLD_IRQ_CFC_INSERT);
|
disable_mappi3_irq(PLD_IRQ_CFC_INSERT);
|
||||||
|
|
||||||
/* ICUCR42: CFC Eject */
|
|
||||||
irq_desc[PLD_IRQ_CFC_EJECT].status = IRQ_DISABLED;
|
|
||||||
irq_desc[PLD_IRQ_CFC_EJECT].handler = &mappi3_irq_type;
|
|
||||||
irq_desc[PLD_IRQ_CFC_EJECT].action = 0;
|
|
||||||
irq_desc[PLD_IRQ_CFC_EJECT].depth = 1; /* disable nested irq */
|
|
||||||
icu_data[PLD_IRQ_CFC_EJECT].icucr = M32R_ICUCR_IEN|M32R_ICUCR_ISMOD10;
|
|
||||||
disable_mappi3_irq(PLD_IRQ_CFC_EJECT);
|
|
||||||
#endif /* CONFIG_M32R_CFC */
|
#endif /* CONFIG_M32R_CFC */
|
||||||
|
|
||||||
|
/* IDE IREQ */
|
||||||
|
irq_desc[PLD_IRQ_IDEIREQ].status = IRQ_DISABLED;
|
||||||
|
irq_desc[PLD_IRQ_IDEIREQ].handler = &mappi3_irq_type;
|
||||||
|
irq_desc[PLD_IRQ_IDEIREQ].action = 0;
|
||||||
|
irq_desc[PLD_IRQ_IDEIREQ].depth = 1; /* disable nested irq */
|
||||||
|
icu_data[PLD_IRQ_IDEIREQ].icucr = M32R_ICUCR_IEN|M32R_ICUCR_ISMOD10;
|
||||||
|
disable_mappi3_irq(PLD_IRQ_IDEIREQ);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#if defined(CONFIG_SMC91X)
|
#if defined(CONFIG_SMC91X)
|
||||||
|
|
|
@ -41,7 +41,8 @@ asmlinkage int sys_tas(int *addr)
|
||||||
return -EFAULT;
|
return -EFAULT;
|
||||||
local_irq_save(flags);
|
local_irq_save(flags);
|
||||||
oldval = *addr;
|
oldval = *addr;
|
||||||
*addr = 1;
|
if (!oldval)
|
||||||
|
*addr = 1;
|
||||||
local_irq_restore(flags);
|
local_irq_restore(flags);
|
||||||
return oldval;
|
return oldval;
|
||||||
}
|
}
|
||||||
|
@ -59,7 +60,8 @@ asmlinkage int sys_tas(int *addr)
|
||||||
|
|
||||||
_raw_spin_lock(&tas_lock);
|
_raw_spin_lock(&tas_lock);
|
||||||
oldval = *addr;
|
oldval = *addr;
|
||||||
*addr = 1;
|
if (!oldval)
|
||||||
|
*addr = 1;
|
||||||
_raw_spin_unlock(&tas_lock);
|
_raw_spin_unlock(&tas_lock);
|
||||||
|
|
||||||
return oldval;
|
return oldval;
|
||||||
|
|
|
@ -61,15 +61,17 @@ endif
|
||||||
LDFLAGS_vmlinux := -Bstatic
|
LDFLAGS_vmlinux := -Bstatic
|
||||||
|
|
||||||
# The -Iarch/$(ARCH)/include is temporary while we are merging
|
# The -Iarch/$(ARCH)/include is temporary while we are merging
|
||||||
CPPFLAGS += -Iarch/$(ARCH) -Iarch/$(ARCH)/include
|
CPPFLAGS-$(CONFIG_PPC32) := -Iarch/$(ARCH) -Iarch/$(ARCH)/include
|
||||||
AFLAGS += -Iarch/$(ARCH)
|
AFLAGS-$(CONFIG_PPC32) := -Iarch/$(ARCH)
|
||||||
CFLAGS += -Iarch/$(ARCH) -msoft-float -pipe
|
|
||||||
CFLAGS-$(CONFIG_PPC64) := -mminimal-toc -mtraceback=none -mcall-aixdesc
|
CFLAGS-$(CONFIG_PPC64) := -mminimal-toc -mtraceback=none -mcall-aixdesc
|
||||||
CFLAGS-$(CONFIG_PPC32) := -ffixed-r2 -mmultiple
|
CFLAGS-$(CONFIG_PPC32) := -Iarch/$(ARCH) -ffixed-r2 -mmultiple
|
||||||
CFLAGS += $(CFLAGS-y)
|
CPPFLAGS += $(CPPFLAGS-y)
|
||||||
|
AFLAGS += $(AFLAGS-y)
|
||||||
|
CFLAGS += -msoft-float -pipe $(CFLAGS-y)
|
||||||
CPP = $(CC) -E $(CFLAGS)
|
CPP = $(CC) -E $(CFLAGS)
|
||||||
# Temporary hack until we have migrated to asm-powerpc
|
# Temporary hack until we have migrated to asm-powerpc
|
||||||
LINUXINCLUDE += -Iarch/$(ARCH)/include
|
LINUXINCLUDE-$(CONFIG_PPC32) := -Iarch/$(ARCH)/include
|
||||||
|
LINUXINCLUDE += $(LINUXINCLUDE-y)
|
||||||
|
|
||||||
CHECKFLAGS += -m$(SZ) -D__powerpc__ -D__powerpc$(SZ)__
|
CHECKFLAGS += -m$(SZ) -D__powerpc__ -D__powerpc$(SZ)__
|
||||||
|
|
||||||
|
@ -173,11 +175,13 @@ archclean:
|
||||||
|
|
||||||
archprepare: checkbin
|
archprepare: checkbin
|
||||||
|
|
||||||
|
ifeq ($(CONFIG_PPC32),y)
|
||||||
# Temporary hack until we have migrated to asm-powerpc
|
# Temporary hack until we have migrated to asm-powerpc
|
||||||
include/asm: arch/$(ARCH)/include/asm
|
include/asm: arch/$(ARCH)/include/asm
|
||||||
arch/$(ARCH)/include/asm: FORCE
|
arch/$(ARCH)/include/asm: FORCE
|
||||||
$(Q)if [ ! -d arch/$(ARCH)/include ]; then mkdir -p arch/$(ARCH)/include; fi
|
$(Q)if [ ! -d arch/$(ARCH)/include ]; then mkdir -p arch/$(ARCH)/include; fi
|
||||||
$(Q)ln -fsn $(srctree)/include/asm-$(OLDARCH) arch/$(ARCH)/include/asm
|
$(Q)ln -fsn $(srctree)/include/asm-$(OLDARCH) arch/$(ARCH)/include/asm
|
||||||
|
endif
|
||||||
|
|
||||||
# Use the file '.tmp_gas_check' for binutils tests, as gas won't output
|
# Use the file '.tmp_gas_check' for binutils tests, as gas won't output
|
||||||
# to stdout and these checks are run even on install targets.
|
# to stdout and these checks are run even on install targets.
|
||||||
|
|
|
@ -163,15 +163,13 @@ EXPORT_SYMBOL(giveup_altivec);
|
||||||
EXPORT_SYMBOL(giveup_spe);
|
EXPORT_SYMBOL(giveup_spe);
|
||||||
#endif /* CONFIG_SPE */
|
#endif /* CONFIG_SPE */
|
||||||
|
|
||||||
#ifdef CONFIG_PPC64
|
#ifndef CONFIG_PPC64
|
||||||
EXPORT_SYMBOL(__flush_icache_range);
|
|
||||||
#else
|
|
||||||
EXPORT_SYMBOL(flush_instruction_cache);
|
EXPORT_SYMBOL(flush_instruction_cache);
|
||||||
EXPORT_SYMBOL(flush_icache_range);
|
|
||||||
EXPORT_SYMBOL(flush_tlb_kernel_range);
|
EXPORT_SYMBOL(flush_tlb_kernel_range);
|
||||||
EXPORT_SYMBOL(flush_tlb_page);
|
EXPORT_SYMBOL(flush_tlb_page);
|
||||||
EXPORT_SYMBOL(_tlbie);
|
EXPORT_SYMBOL(_tlbie);
|
||||||
#endif
|
#endif
|
||||||
|
EXPORT_SYMBOL(__flush_icache_range);
|
||||||
EXPORT_SYMBOL(flush_dcache_range);
|
EXPORT_SYMBOL(flush_dcache_range);
|
||||||
|
|
||||||
#ifdef CONFIG_SMP
|
#ifdef CONFIG_SMP
|
||||||
|
|
|
@ -457,7 +457,6 @@ void flush_thread(void)
|
||||||
if (t->flags & _TIF_ABI_PENDING)
|
if (t->flags & _TIF_ABI_PENDING)
|
||||||
t->flags ^= (_TIF_ABI_PENDING | _TIF_32BIT);
|
t->flags ^= (_TIF_ABI_PENDING | _TIF_32BIT);
|
||||||
#endif
|
#endif
|
||||||
kprobe_flush_task(current);
|
|
||||||
|
|
||||||
#ifndef CONFIG_SMP
|
#ifndef CONFIG_SMP
|
||||||
if (last_task_used_math == current)
|
if (last_task_used_math == current)
|
||||||
|
|
|
@ -145,8 +145,7 @@ static void dump_vdso_pages(struct vm_area_struct * vma)
|
||||||
struct page *pg = virt_to_page(vdso32_kbase +
|
struct page *pg = virt_to_page(vdso32_kbase +
|
||||||
i*PAGE_SIZE);
|
i*PAGE_SIZE);
|
||||||
struct page *upg = (vma && vma->vm_mm) ?
|
struct page *upg = (vma && vma->vm_mm) ?
|
||||||
follow_page(vma->vm_mm, vma->vm_start +
|
follow_page(vma, vma->vm_start + i*PAGE_SIZE, 0)
|
||||||
i*PAGE_SIZE, 0)
|
|
||||||
: NULL;
|
: NULL;
|
||||||
dump_one_vdso_page(pg, upg);
|
dump_one_vdso_page(pg, upg);
|
||||||
}
|
}
|
||||||
|
@ -157,8 +156,7 @@ static void dump_vdso_pages(struct vm_area_struct * vma)
|
||||||
struct page *pg = virt_to_page(vdso64_kbase +
|
struct page *pg = virt_to_page(vdso64_kbase +
|
||||||
i*PAGE_SIZE);
|
i*PAGE_SIZE);
|
||||||
struct page *upg = (vma && vma->vm_mm) ?
|
struct page *upg = (vma && vma->vm_mm) ?
|
||||||
follow_page(vma->vm_mm, vma->vm_start +
|
follow_page(vma, vma->vm_start + i*PAGE_SIZE, 0)
|
||||||
i*PAGE_SIZE, 0)
|
|
||||||
: NULL;
|
: NULL;
|
||||||
dump_one_vdso_page(pg, upg);
|
dump_one_vdso_page(pg, upg);
|
||||||
}
|
}
|
||||||
|
@ -285,8 +283,7 @@ int arch_setup_additional_pages(struct linux_binprm *bprm,
|
||||||
* It's fine to use that for setting breakpoints in the vDSO code
|
* It's fine to use that for setting breakpoints in the vDSO code
|
||||||
* pages though
|
* pages though
|
||||||
*/
|
*/
|
||||||
vma->vm_flags = VM_READ | VM_EXEC | VM_MAYREAD | VM_MAYWRITE |
|
vma->vm_flags = VM_READ | VM_EXEC | VM_MAYREAD | VM_MAYWRITE | VM_MAYEXEC;
|
||||||
VM_MAYEXEC | VM_RESERVED;
|
|
||||||
vma->vm_flags |= mm->def_flags;
|
vma->vm_flags |= mm->def_flags;
|
||||||
vma->vm_page_prot = protection_map[vma->vm_flags & 0x7];
|
vma->vm_page_prot = protection_map[vma->vm_flags & 0x7];
|
||||||
vma->vm_ops = &vdso_vmops;
|
vma->vm_ops = &vdso_vmops;
|
||||||
|
|
|
@ -110,13 +110,11 @@ unsigned long __init mmu_mapin_ram(void)
|
||||||
pmd_t *pmdp;
|
pmd_t *pmdp;
|
||||||
unsigned long val = p | _PMD_SIZE_16M | _PAGE_HWEXEC | _PAGE_HWWRITE;
|
unsigned long val = p | _PMD_SIZE_16M | _PAGE_HWEXEC | _PAGE_HWWRITE;
|
||||||
|
|
||||||
spin_lock(&init_mm.page_table_lock);
|
|
||||||
pmdp = pmd_offset(pgd_offset_k(v), v);
|
pmdp = pmd_offset(pgd_offset_k(v), v);
|
||||||
pmd_val(*pmdp++) = val;
|
pmd_val(*pmdp++) = val;
|
||||||
pmd_val(*pmdp++) = val;
|
pmd_val(*pmdp++) = val;
|
||||||
pmd_val(*pmdp++) = val;
|
pmd_val(*pmdp++) = val;
|
||||||
pmd_val(*pmdp++) = val;
|
pmd_val(*pmdp++) = val;
|
||||||
spin_unlock(&init_mm.page_table_lock);
|
|
||||||
|
|
||||||
v += LARGE_PAGE_SIZE_16M;
|
v += LARGE_PAGE_SIZE_16M;
|
||||||
p += LARGE_PAGE_SIZE_16M;
|
p += LARGE_PAGE_SIZE_16M;
|
||||||
|
@ -127,10 +125,8 @@ unsigned long __init mmu_mapin_ram(void)
|
||||||
pmd_t *pmdp;
|
pmd_t *pmdp;
|
||||||
unsigned long val = p | _PMD_SIZE_4M | _PAGE_HWEXEC | _PAGE_HWWRITE;
|
unsigned long val = p | _PMD_SIZE_4M | _PAGE_HWEXEC | _PAGE_HWWRITE;
|
||||||
|
|
||||||
spin_lock(&init_mm.page_table_lock);
|
|
||||||
pmdp = pmd_offset(pgd_offset_k(v), v);
|
pmdp = pmd_offset(pgd_offset_k(v), v);
|
||||||
pmd_val(*pmdp) = val;
|
pmd_val(*pmdp) = val;
|
||||||
spin_unlock(&init_mm.page_table_lock);
|
|
||||||
|
|
||||||
v += LARGE_PAGE_SIZE_4M;
|
v += LARGE_PAGE_SIZE_4M;
|
||||||
p += LARGE_PAGE_SIZE_4M;
|
p += LARGE_PAGE_SIZE_4M;
|
||||||
|
|
|
@ -287,15 +287,15 @@ static int open_high_hpage_areas(struct mm_struct *mm, u16 newareas)
|
||||||
|
|
||||||
int prepare_hugepage_range(unsigned long addr, unsigned long len)
|
int prepare_hugepage_range(unsigned long addr, unsigned long len)
|
||||||
{
|
{
|
||||||
int err;
|
int err = 0;
|
||||||
|
|
||||||
if ( (addr+len) < addr )
|
if ( (addr+len) < addr )
|
||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
|
|
||||||
if ((addr + len) < 0x100000000UL)
|
if (addr < 0x100000000UL)
|
||||||
err = open_low_hpage_areas(current->mm,
|
err = open_low_hpage_areas(current->mm,
|
||||||
LOW_ESID_MASK(addr, len));
|
LOW_ESID_MASK(addr, len));
|
||||||
else
|
if ((addr + len) > 0x100000000UL)
|
||||||
err = open_high_hpage_areas(current->mm,
|
err = open_high_hpage_areas(current->mm,
|
||||||
HTLB_AREA_MASK(addr, len));
|
HTLB_AREA_MASK(addr, len));
|
||||||
if (err) {
|
if (err) {
|
||||||
|
@ -754,9 +754,7 @@ repeat:
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* No need to use ldarx/stdcx here because all who
|
* No need to use ldarx/stdcx here
|
||||||
* might be updating the pte will hold the
|
|
||||||
* page_table_lock
|
|
||||||
*/
|
*/
|
||||||
*ptep = __pte(new_pte & ~_PAGE_BUSY);
|
*ptep = __pte(new_pte & ~_PAGE_BUSY);
|
||||||
|
|
||||||
|
|
|
@ -495,7 +495,7 @@ EXPORT_SYMBOL(flush_icache_user_range);
|
||||||
* We use it to preload an HPTE into the hash table corresponding to
|
* We use it to preload an HPTE into the hash table corresponding to
|
||||||
* the updated linux PTE.
|
* the updated linux PTE.
|
||||||
*
|
*
|
||||||
* This must always be called with the mm->page_table_lock held
|
* This must always be called with the pte lock held.
|
||||||
*/
|
*/
|
||||||
void update_mmu_cache(struct vm_area_struct *vma, unsigned long address,
|
void update_mmu_cache(struct vm_area_struct *vma, unsigned long address,
|
||||||
pte_t pte)
|
pte_t pte)
|
||||||
|
|
|
@ -149,6 +149,12 @@ void flush_tlb_mm(struct mm_struct *mm)
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* It is safe to go down the mm's list of vmas when called
|
||||||
|
* from dup_mmap, holding mmap_sem. It would also be safe from
|
||||||
|
* unmap_region or exit_mmap, but not from vmtruncate on SMP -
|
||||||
|
* but it seems dup_mmap is the only SMP case which gets here.
|
||||||
|
*/
|
||||||
for (mp = mm->mmap; mp != NULL; mp = mp->vm_next)
|
for (mp = mm->mmap; mp != NULL; mp = mp->vm_next)
|
||||||
flush_range(mp->vm_mm, mp->vm_start, mp->vm_end);
|
flush_range(mp->vm_mm, mp->vm_start, mp->vm_end);
|
||||||
FINISH_FLUSH;
|
FINISH_FLUSH;
|
||||||
|
|
|
@ -95,7 +95,7 @@ static void pte_free_submit(struct pte_freelist_batch *batch)
|
||||||
|
|
||||||
void pgtable_free_tlb(struct mmu_gather *tlb, pgtable_free_t pgf)
|
void pgtable_free_tlb(struct mmu_gather *tlb, pgtable_free_t pgf)
|
||||||
{
|
{
|
||||||
/* This is safe as we are holding page_table_lock */
|
/* This is safe since tlb_gather_mmu has disabled preemption */
|
||||||
cpumask_t local_cpumask = cpumask_of_cpu(smp_processor_id());
|
cpumask_t local_cpumask = cpumask_of_cpu(smp_processor_id());
|
||||||
struct pte_freelist_batch **batchp = &__get_cpu_var(pte_freelist_cur);
|
struct pte_freelist_batch **batchp = &__get_cpu_var(pte_freelist_cur);
|
||||||
|
|
||||||
|
@ -206,7 +206,7 @@ void __flush_tlb_pending(struct ppc64_tlb_batch *batch)
|
||||||
|
|
||||||
void pte_free_finish(void)
|
void pte_free_finish(void)
|
||||||
{
|
{
|
||||||
/* This is safe as we are holding page_table_lock */
|
/* This is safe since tlb_gather_mmu has disabled preemption */
|
||||||
struct pte_freelist_batch **batchp = &__get_cpu_var(pte_freelist_cur);
|
struct pte_freelist_batch **batchp = &__get_cpu_var(pte_freelist_cur);
|
||||||
|
|
||||||
if (*batchp == NULL)
|
if (*batchp == NULL)
|
||||||
|
|
|
@ -3,7 +3,7 @@
|
||||||
*
|
*
|
||||||
* Rewrite, cleanup:
|
* Rewrite, cleanup:
|
||||||
*
|
*
|
||||||
* Copyright (C) 2004 Olof Johansson <olof@austin.ibm.com>, IBM Corporation
|
* Copyright (C) 2004 Olof Johansson <olof@lixom.net>, IBM Corporation
|
||||||
*
|
*
|
||||||
* Dynamic DMA mapping support, iSeries-specific parts.
|
* Dynamic DMA mapping support, iSeries-specific parts.
|
||||||
*
|
*
|
||||||
|
|
|
@ -5,7 +5,7 @@
|
||||||
*
|
*
|
||||||
* Rewrite, cleanup:
|
* Rewrite, cleanup:
|
||||||
*
|
*
|
||||||
* Copyright (C) 2004 Olof Johansson <olof@austin.ibm.com>, IBM Corporation
|
* Copyright (C) 2004 Olof Johansson <olof@lixom.net>, IBM Corporation
|
||||||
*
|
*
|
||||||
* Dynamic DMA mapping support, pSeries-specific parts, both SMP and LPAR.
|
* Dynamic DMA mapping support, pSeries-specific parts, both SMP and LPAR.
|
||||||
*
|
*
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
* Copyright (C) 2004 Olof Johansson <olof@austin.ibm.com>, IBM Corporation
|
* Copyright (C) 2004 Olof Johansson <olof@lixom.net>, IBM Corporation
|
||||||
*
|
*
|
||||||
* This program is free software; you can redistribute it and/or modify
|
* This program is free software; you can redistribute it and/or modify
|
||||||
* it under the terms of the GNU General Public License as published by
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
|
|
@ -1,11 +1,11 @@
|
||||||
/*
|
/*
|
||||||
* arch/powerpc/sysdev/u3_iommu.c
|
* arch/powerpc/sysdev/u3_iommu.c
|
||||||
*
|
*
|
||||||
* Copyright (C) 2004 Olof Johansson <olof@austin.ibm.com>, IBM Corporation
|
* Copyright (C) 2004 Olof Johansson <olof@lixom.net>, IBM Corporation
|
||||||
*
|
*
|
||||||
* Based on pSeries_iommu.c:
|
* Based on pSeries_iommu.c:
|
||||||
* Copyright (C) 2001 Mike Corrigan & Dave Engebretsen, IBM Corporation
|
* Copyright (C) 2001 Mike Corrigan & Dave Engebretsen, IBM Corporation
|
||||||
* Copyright (C) 2004 Olof Johansson <olof@austin.ibm.com>, IBM Corporation
|
* Copyright (C) 2004 Olof Johansson <olof@lixom.net>, IBM Corporation
|
||||||
*
|
*
|
||||||
* Dynamic DMA mapping support, Apple U3 & IBM CPC925 "DART" iommu.
|
* Dynamic DMA mapping support, Apple U3 & IBM CPC925 "DART" iommu.
|
||||||
*
|
*
|
||||||
|
|
|
@ -184,7 +184,7 @@ EXPORT_SYMBOL(kernel_thread);
|
||||||
|
|
||||||
EXPORT_SYMBOL(flush_instruction_cache);
|
EXPORT_SYMBOL(flush_instruction_cache);
|
||||||
EXPORT_SYMBOL(giveup_fpu);
|
EXPORT_SYMBOL(giveup_fpu);
|
||||||
EXPORT_SYMBOL(flush_icache_range);
|
EXPORT_SYMBOL(__flush_icache_range);
|
||||||
EXPORT_SYMBOL(flush_dcache_range);
|
EXPORT_SYMBOL(flush_dcache_range);
|
||||||
EXPORT_SYMBOL(flush_icache_user_range);
|
EXPORT_SYMBOL(flush_icache_user_range);
|
||||||
EXPORT_SYMBOL(flush_dcache_page);
|
EXPORT_SYMBOL(flush_dcache_page);
|
||||||
|
|
|
@ -252,7 +252,7 @@ void *sbus_alloc_consistent(struct sbus_dev *sdev, long len, u32 *dma_addrp)
|
||||||
}
|
}
|
||||||
|
|
||||||
order = get_order(len_total);
|
order = get_order(len_total);
|
||||||
if ((va = __get_free_pages(GFP_KERNEL, order)) == 0)
|
if ((va = __get_free_pages(GFP_KERNEL|__GFP_COMP, order)) == 0)
|
||||||
goto err_nopages;
|
goto err_nopages;
|
||||||
|
|
||||||
if ((res = kmalloc(sizeof(struct resource), GFP_KERNEL)) == NULL)
|
if ((res = kmalloc(sizeof(struct resource), GFP_KERNEL)) == NULL)
|
||||||
|
|
|
@ -32,9 +32,7 @@ static inline void io_remap_pte_range(struct mm_struct *mm, pte_t * pte, unsigne
|
||||||
if (end > PMD_SIZE)
|
if (end > PMD_SIZE)
|
||||||
end = PMD_SIZE;
|
end = PMD_SIZE;
|
||||||
do {
|
do {
|
||||||
pte_t oldpage = *pte;
|
set_pte_at(mm, address, pte, mk_pte_io(offset, prot, space));
|
||||||
pte_clear(mm, address, pte);
|
|
||||||
set_pte(pte, mk_pte_io(offset, prot, space));
|
|
||||||
address += PAGE_SIZE;
|
address += PAGE_SIZE;
|
||||||
offset += PAGE_SIZE;
|
offset += PAGE_SIZE;
|
||||||
pte++;
|
pte++;
|
||||||
|
@ -63,7 +61,7 @@ static inline int io_remap_pmd_range(struct mm_struct *mm, pmd_t * pmd, unsigned
|
||||||
}
|
}
|
||||||
|
|
||||||
int io_remap_pfn_range(struct vm_area_struct *vma, unsigned long from,
|
int io_remap_pfn_range(struct vm_area_struct *vma, unsigned long from,
|
||||||
unsigned long pfn, unsigned long size, pgprot_t prot)
|
unsigned long pfn, unsigned long size, pgprot_t prot)
|
||||||
{
|
{
|
||||||
int error = 0;
|
int error = 0;
|
||||||
pgd_t * dir;
|
pgd_t * dir;
|
||||||
|
@ -74,7 +72,9 @@ int io_remap_pfn_range(struct vm_area_struct *vma, unsigned long from,
|
||||||
unsigned long offset = GET_PFN(pfn) << PAGE_SHIFT;
|
unsigned long offset = GET_PFN(pfn) << PAGE_SHIFT;
|
||||||
|
|
||||||
/* See comment in mm/memory.c remap_pfn_range */
|
/* See comment in mm/memory.c remap_pfn_range */
|
||||||
vma->vm_flags |= VM_IO | VM_RESERVED;
|
vma->vm_flags |= VM_IO | VM_RESERVED | VM_PFNMAP;
|
||||||
|
vma->vm_pgoff = (offset >> PAGE_SHIFT) |
|
||||||
|
((unsigned long)space << 28UL);
|
||||||
|
|
||||||
prot = __pgprot(pg_iobits);
|
prot = __pgprot(pg_iobits);
|
||||||
offset -= from;
|
offset -= from;
|
||||||
|
|
|
@ -327,7 +327,7 @@ void *sbus_alloc_consistent(struct sbus_dev *sdev, size_t size, dma_addr_t *dvma
|
||||||
order = get_order(size);
|
order = get_order(size);
|
||||||
if (order >= 10)
|
if (order >= 10)
|
||||||
return NULL;
|
return NULL;
|
||||||
first_page = __get_free_pages(GFP_KERNEL, order);
|
first_page = __get_free_pages(GFP_KERNEL|__GFP_COMP, order);
|
||||||
if (first_page == 0UL)
|
if (first_page == 0UL)
|
||||||
return NULL;
|
return NULL;
|
||||||
memset((char *)first_page, 0, PAGE_SIZE << order);
|
memset((char *)first_page, 0, PAGE_SIZE << order);
|
||||||
|
|
|
@ -15,6 +15,15 @@
|
||||||
#include <asm/page.h>
|
#include <asm/page.h>
|
||||||
#include <asm/tlbflush.h>
|
#include <asm/tlbflush.h>
|
||||||
|
|
||||||
|
static inline pte_t mk_pte_io(unsigned long page, pgprot_t prot, int space)
|
||||||
|
{
|
||||||
|
pte_t pte;
|
||||||
|
pte_val(pte) = (((page) | pgprot_val(prot) | _PAGE_E) &
|
||||||
|
~(unsigned long)_PAGE_CACHE);
|
||||||
|
pte_val(pte) |= (((unsigned long)space) << 32);
|
||||||
|
return pte;
|
||||||
|
}
|
||||||
|
|
||||||
/* Remap IO memory, the same way as remap_pfn_range(), but use
|
/* Remap IO memory, the same way as remap_pfn_range(), but use
|
||||||
* the obio memory space.
|
* the obio memory space.
|
||||||
*
|
*
|
||||||
|
@ -126,9 +135,13 @@ int io_remap_pfn_range(struct vm_area_struct *vma, unsigned long from,
|
||||||
struct mm_struct *mm = vma->vm_mm;
|
struct mm_struct *mm = vma->vm_mm;
|
||||||
int space = GET_IOSPACE(pfn);
|
int space = GET_IOSPACE(pfn);
|
||||||
unsigned long offset = GET_PFN(pfn) << PAGE_SHIFT;
|
unsigned long offset = GET_PFN(pfn) << PAGE_SHIFT;
|
||||||
|
unsigned long phys_base;
|
||||||
|
|
||||||
|
phys_base = offset | (((unsigned long) space) << 32UL);
|
||||||
|
|
||||||
/* See comment in mm/memory.c remap_pfn_range */
|
/* See comment in mm/memory.c remap_pfn_range */
|
||||||
vma->vm_flags |= VM_IO | VM_RESERVED;
|
vma->vm_flags |= VM_IO | VM_RESERVED | VM_PFNMAP;
|
||||||
|
vma->vm_pgoff = phys_base >> PAGE_SHIFT;
|
||||||
|
|
||||||
prot = __pgprot(pg_iobits);
|
prot = __pgprot(pg_iobits);
|
||||||
offset -= from;
|
offset -= from;
|
||||||
|
|
|
@ -17,7 +17,7 @@ core-y += $(ARCH_DIR)/kernel/ \
|
||||||
|
|
||||||
# Have to precede the include because the included Makefiles reference them.
|
# Have to precede the include because the included Makefiles reference them.
|
||||||
SYMLINK_HEADERS := archparam.h system.h sigcontext.h processor.h ptrace.h \
|
SYMLINK_HEADERS := archparam.h system.h sigcontext.h processor.h ptrace.h \
|
||||||
module.h vm-flags.h elf.h
|
module.h vm-flags.h elf.h ldt.h
|
||||||
SYMLINK_HEADERS := $(foreach header,$(SYMLINK_HEADERS),include/asm-um/$(header))
|
SYMLINK_HEADERS := $(foreach header,$(SYMLINK_HEADERS),include/asm-um/$(header))
|
||||||
|
|
||||||
# XXX: The "os" symlink is only used by arch/um/include/os.h, which includes
|
# XXX: The "os" symlink is only used by arch/um/include/os.h, which includes
|
||||||
|
|
|
@ -16,6 +16,15 @@ extern void stub_clone_handler(void);
|
||||||
#define STUB_MMAP_NR __NR_mmap2
|
#define STUB_MMAP_NR __NR_mmap2
|
||||||
#define MMAP_OFFSET(o) ((o) >> PAGE_SHIFT)
|
#define MMAP_OFFSET(o) ((o) >> PAGE_SHIFT)
|
||||||
|
|
||||||
|
static inline long stub_syscall0(long syscall)
|
||||||
|
{
|
||||||
|
long ret;
|
||||||
|
|
||||||
|
__asm__ volatile ("int $0x80" : "=a" (ret) : "0" (syscall));
|
||||||
|
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
static inline long stub_syscall1(long syscall, long arg1)
|
static inline long stub_syscall1(long syscall, long arg1)
|
||||||
{
|
{
|
||||||
long ret;
|
long ret;
|
||||||
|
|
|
@ -6,7 +6,6 @@
|
||||||
#ifndef __SYSDEP_STUB_H
|
#ifndef __SYSDEP_STUB_H
|
||||||
#define __SYSDEP_STUB_H
|
#define __SYSDEP_STUB_H
|
||||||
|
|
||||||
#include <asm/ptrace.h>
|
|
||||||
#include <asm/unistd.h>
|
#include <asm/unistd.h>
|
||||||
#include <sysdep/ptrace_user.h>
|
#include <sysdep/ptrace_user.h>
|
||||||
|
|
||||||
|
@ -20,6 +19,17 @@ extern void stub_clone_handler(void);
|
||||||
#define __syscall_clobber "r11","rcx","memory"
|
#define __syscall_clobber "r11","rcx","memory"
|
||||||
#define __syscall "syscall"
|
#define __syscall "syscall"
|
||||||
|
|
||||||
|
static inline long stub_syscall0(long syscall)
|
||||||
|
{
|
||||||
|
long ret;
|
||||||
|
|
||||||
|
__asm__ volatile (__syscall
|
||||||
|
: "=a" (ret)
|
||||||
|
: "0" (syscall) : __syscall_clobber );
|
||||||
|
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
static inline long stub_syscall2(long syscall, long arg1, long arg2)
|
static inline long stub_syscall2(long syscall, long arg1, long arg2)
|
||||||
{
|
{
|
||||||
long ret;
|
long ret;
|
||||||
|
|
|
@ -9,18 +9,24 @@
|
||||||
#include "stub-data.h"
|
#include "stub-data.h"
|
||||||
#include "uml-config.h"
|
#include "uml-config.h"
|
||||||
#include "sysdep/stub.h"
|
#include "sysdep/stub.h"
|
||||||
|
#include "kern_constants.h"
|
||||||
|
|
||||||
/* This is in a separate file because it needs to be compiled with any
|
/* This is in a separate file because it needs to be compiled with any
|
||||||
* extraneous gcc flags (-pg, -fprofile-arcs, -ftest-coverage) disabled
|
* extraneous gcc flags (-pg, -fprofile-arcs, -ftest-coverage) disabled
|
||||||
|
*
|
||||||
|
* Use UM_KERN_PAGE_SIZE instead of PAGE_SIZE because that calls getpagesize
|
||||||
|
* on some systems.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
#define STUB_DATA(field) (((struct stub_data *) UML_CONFIG_STUB_DATA)->field)
|
||||||
|
|
||||||
void __attribute__ ((__section__ (".__syscall_stub")))
|
void __attribute__ ((__section__ (".__syscall_stub")))
|
||||||
stub_clone_handler(void)
|
stub_clone_handler(void)
|
||||||
{
|
{
|
||||||
long err;
|
long err;
|
||||||
struct stub_data *from = (struct stub_data *) UML_CONFIG_STUB_DATA;
|
|
||||||
|
|
||||||
err = stub_syscall2(__NR_clone, CLONE_PARENT | CLONE_FILES | SIGCHLD,
|
err = stub_syscall2(__NR_clone, CLONE_PARENT | CLONE_FILES | SIGCHLD,
|
||||||
UML_CONFIG_STUB_DATA + PAGE_SIZE / 2 -
|
UML_CONFIG_STUB_DATA + UM_KERN_PAGE_SIZE / 2 -
|
||||||
sizeof(void *));
|
sizeof(void *));
|
||||||
if(err != 0)
|
if(err != 0)
|
||||||
goto out;
|
goto out;
|
||||||
|
@ -30,15 +36,16 @@ stub_clone_handler(void)
|
||||||
goto out;
|
goto out;
|
||||||
|
|
||||||
err = stub_syscall3(__NR_setitimer, ITIMER_VIRTUAL,
|
err = stub_syscall3(__NR_setitimer, ITIMER_VIRTUAL,
|
||||||
(long) &from->timer, 0);
|
(long) &STUB_DATA(timer), 0);
|
||||||
if(err)
|
if(err)
|
||||||
goto out;
|
goto out;
|
||||||
|
|
||||||
err = stub_syscall6(STUB_MMAP_NR, UML_CONFIG_STUB_DATA, PAGE_SIZE,
|
err = stub_syscall6(STUB_MMAP_NR, UML_CONFIG_STUB_DATA,
|
||||||
PROT_READ | PROT_WRITE, MAP_FIXED | MAP_SHARED,
|
UM_KERN_PAGE_SIZE, PROT_READ | PROT_WRITE,
|
||||||
from->fd, from->offset);
|
MAP_FIXED | MAP_SHARED, STUB_DATA(fd),
|
||||||
|
STUB_DATA(offset));
|
||||||
out:
|
out:
|
||||||
/* save current result. Parent: pid; child: retcode of mmap */
|
/* save current result. Parent: pid; child: retcode of mmap */
|
||||||
from->err = err;
|
STUB_DATA(err) = err;
|
||||||
trap_myself();
|
trap_myself();
|
||||||
}
|
}
|
||||||
|
|
|
@ -5,7 +5,7 @@ obj-y = bitops.o bugs.o checksum.o delay.o fault.o ksyms.o ldt.o ptrace.o \
|
||||||
obj-$(CONFIG_HIGHMEM) += highmem.o
|
obj-$(CONFIG_HIGHMEM) += highmem.o
|
||||||
obj-$(CONFIG_MODULES) += module.o
|
obj-$(CONFIG_MODULES) += module.o
|
||||||
|
|
||||||
USER_OBJS := bugs.o ptrace_user.o sigcontext.o fault.o
|
USER_OBJS := bugs.o ptrace_user.o sigcontext.o fault.o stub_segv.o
|
||||||
|
|
||||||
SYMLINKS = bitops.c semaphore.c highmem.c module.c
|
SYMLINKS = bitops.c semaphore.c highmem.c module.c
|
||||||
|
|
||||||
|
|
|
@ -228,7 +228,7 @@ static int read_ldt(void __user * ptr, unsigned long bytecount)
|
||||||
size = LDT_ENTRY_SIZE*LDT_DIRECT_ENTRIES;
|
size = LDT_ENTRY_SIZE*LDT_DIRECT_ENTRIES;
|
||||||
if(size > bytecount)
|
if(size > bytecount)
|
||||||
size = bytecount;
|
size = bytecount;
|
||||||
if(copy_to_user(ptr, ldt->entries, size))
|
if(copy_to_user(ptr, ldt->u.entries, size))
|
||||||
err = -EFAULT;
|
err = -EFAULT;
|
||||||
bytecount -= size;
|
bytecount -= size;
|
||||||
ptr += size;
|
ptr += size;
|
||||||
|
@ -239,7 +239,7 @@ static int read_ldt(void __user * ptr, unsigned long bytecount)
|
||||||
size = PAGE_SIZE;
|
size = PAGE_SIZE;
|
||||||
if(size > bytecount)
|
if(size > bytecount)
|
||||||
size = bytecount;
|
size = bytecount;
|
||||||
if(copy_to_user(ptr, ldt->pages[i], size)){
|
if(copy_to_user(ptr, ldt->u.pages[i], size)){
|
||||||
err = -EFAULT;
|
err = -EFAULT;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
@ -321,10 +321,11 @@ static int write_ldt(void __user * ptr, unsigned long bytecount, int func)
|
||||||
i*LDT_ENTRIES_PER_PAGE <= ldt_info.entry_number;
|
i*LDT_ENTRIES_PER_PAGE <= ldt_info.entry_number;
|
||||||
i++){
|
i++){
|
||||||
if(i == 0)
|
if(i == 0)
|
||||||
memcpy(&entry0, ldt->entries, sizeof(entry0));
|
memcpy(&entry0, ldt->u.entries,
|
||||||
ldt->pages[i] = (struct ldt_entry *)
|
sizeof(entry0));
|
||||||
__get_free_page(GFP_KERNEL|__GFP_ZERO);
|
ldt->u.pages[i] = (struct ldt_entry *)
|
||||||
if(!ldt->pages[i]){
|
__get_free_page(GFP_KERNEL|__GFP_ZERO);
|
||||||
|
if(!ldt->u.pages[i]){
|
||||||
err = -ENOMEM;
|
err = -ENOMEM;
|
||||||
/* Undo the change in host */
|
/* Undo the change in host */
|
||||||
memset(&ldt_info, 0, sizeof(ldt_info));
|
memset(&ldt_info, 0, sizeof(ldt_info));
|
||||||
|
@ -332,8 +333,9 @@ static int write_ldt(void __user * ptr, unsigned long bytecount, int func)
|
||||||
goto out_unlock;
|
goto out_unlock;
|
||||||
}
|
}
|
||||||
if(i == 0) {
|
if(i == 0) {
|
||||||
memcpy(ldt->pages[0], &entry0, sizeof(entry0));
|
memcpy(ldt->u.pages[0], &entry0,
|
||||||
memcpy(ldt->pages[0]+1, ldt->entries+1,
|
sizeof(entry0));
|
||||||
|
memcpy(ldt->u.pages[0]+1, ldt->u.entries+1,
|
||||||
sizeof(entry0)*(LDT_DIRECT_ENTRIES-1));
|
sizeof(entry0)*(LDT_DIRECT_ENTRIES-1));
|
||||||
}
|
}
|
||||||
ldt->entry_count = (i + 1) * LDT_ENTRIES_PER_PAGE;
|
ldt->entry_count = (i + 1) * LDT_ENTRIES_PER_PAGE;
|
||||||
|
@ -343,9 +345,9 @@ static int write_ldt(void __user * ptr, unsigned long bytecount, int func)
|
||||||
ldt->entry_count = ldt_info.entry_number + 1;
|
ldt->entry_count = ldt_info.entry_number + 1;
|
||||||
|
|
||||||
if(ldt->entry_count <= LDT_DIRECT_ENTRIES)
|
if(ldt->entry_count <= LDT_DIRECT_ENTRIES)
|
||||||
ldt_p = ldt->entries + ldt_info.entry_number;
|
ldt_p = ldt->u.entries + ldt_info.entry_number;
|
||||||
else
|
else
|
||||||
ldt_p = ldt->pages[ldt_info.entry_number/LDT_ENTRIES_PER_PAGE] +
|
ldt_p = ldt->u.pages[ldt_info.entry_number/LDT_ENTRIES_PER_PAGE] +
|
||||||
ldt_info.entry_number%LDT_ENTRIES_PER_PAGE;
|
ldt_info.entry_number%LDT_ENTRIES_PER_PAGE;
|
||||||
|
|
||||||
if(ldt_info.base_addr == 0 && ldt_info.limit == 0 &&
|
if(ldt_info.base_addr == 0 && ldt_info.limit == 0 &&
|
||||||
|
@ -501,8 +503,8 @@ long init_new_ldt(struct mmu_context_skas * new_mm,
|
||||||
*/
|
*/
|
||||||
down(&from_mm->ldt.semaphore);
|
down(&from_mm->ldt.semaphore);
|
||||||
if(from_mm->ldt.entry_count <= LDT_DIRECT_ENTRIES){
|
if(from_mm->ldt.entry_count <= LDT_DIRECT_ENTRIES){
|
||||||
memcpy(new_mm->ldt.entries, from_mm->ldt.entries,
|
memcpy(new_mm->ldt.u.entries, from_mm->ldt.u.entries,
|
||||||
sizeof(new_mm->ldt.entries));
|
sizeof(new_mm->ldt.u.entries));
|
||||||
}
|
}
|
||||||
else{
|
else{
|
||||||
i = from_mm->ldt.entry_count / LDT_ENTRIES_PER_PAGE;
|
i = from_mm->ldt.entry_count / LDT_ENTRIES_PER_PAGE;
|
||||||
|
@ -512,9 +514,10 @@ long init_new_ldt(struct mmu_context_skas * new_mm,
|
||||||
err = -ENOMEM;
|
err = -ENOMEM;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
new_mm->ldt.pages[i] = (struct ldt_entry*)page;
|
new_mm->ldt.u.pages[i] =
|
||||||
memcpy(new_mm->ldt.pages[i],
|
(struct ldt_entry *) page;
|
||||||
from_mm->ldt.pages[i], PAGE_SIZE);
|
memcpy(new_mm->ldt.u.pages[i],
|
||||||
|
from_mm->ldt.u.pages[i], PAGE_SIZE);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
new_mm->ldt.entry_count = from_mm->ldt.entry_count;
|
new_mm->ldt.entry_count = from_mm->ldt.entry_count;
|
||||||
|
@ -532,7 +535,7 @@ void free_ldt(struct mmu_context_skas * mm)
|
||||||
if(!ptrace_ldt && mm->ldt.entry_count > LDT_DIRECT_ENTRIES){
|
if(!ptrace_ldt && mm->ldt.entry_count > LDT_DIRECT_ENTRIES){
|
||||||
i = mm->ldt.entry_count / LDT_ENTRIES_PER_PAGE;
|
i = mm->ldt.entry_count / LDT_ENTRIES_PER_PAGE;
|
||||||
while(i-- > 0){
|
while(i-- > 0){
|
||||||
free_page((long )mm->ldt.pages[i]);
|
free_page((long )mm->ldt.u.pages[i]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
mm->ldt.entry_count = 0;
|
mm->ldt.entry_count = 0;
|
||||||
|
|
|
@ -3,9 +3,11 @@
|
||||||
* Licensed under the GPL
|
* Licensed under the GPL
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include <asm/signal.h>
|
#include <signal.h>
|
||||||
|
#include <sys/select.h> /* The only way I can see to get sigset_t */
|
||||||
#include <asm/unistd.h>
|
#include <asm/unistd.h>
|
||||||
#include "uml-config.h"
|
#include "uml-config.h"
|
||||||
|
#include "sysdep/stub.h"
|
||||||
#include "sysdep/sigcontext.h"
|
#include "sysdep/sigcontext.h"
|
||||||
#include "sysdep/faultinfo.h"
|
#include "sysdep/faultinfo.h"
|
||||||
|
|
||||||
|
@ -13,13 +15,14 @@ void __attribute__ ((__section__ (".__syscall_stub")))
|
||||||
stub_segv_handler(int sig)
|
stub_segv_handler(int sig)
|
||||||
{
|
{
|
||||||
struct sigcontext *sc = (struct sigcontext *) (&sig + 1);
|
struct sigcontext *sc = (struct sigcontext *) (&sig + 1);
|
||||||
|
int pid;
|
||||||
|
|
||||||
GET_FAULTINFO_FROM_SC(*((struct faultinfo *) UML_CONFIG_STUB_DATA),
|
GET_FAULTINFO_FROM_SC(*((struct faultinfo *) UML_CONFIG_STUB_DATA),
|
||||||
sc);
|
sc);
|
||||||
|
|
||||||
__asm__("movl %0, %%eax ; int $0x80": : "g" (__NR_getpid));
|
pid = stub_syscall0(__NR_getpid);
|
||||||
__asm__("movl %%eax, %%ebx ; movl %0, %%eax ; movl %1, %%ecx ;"
|
stub_syscall2(__NR_kill, pid, SIGUSR1);
|
||||||
"int $0x80": : "g" (__NR_kill), "g" (SIGUSR1));
|
|
||||||
/* Load pointer to sigcontext into esp, since we need to leave
|
/* Load pointer to sigcontext into esp, since we need to leave
|
||||||
* the stack in its original form when we do the sigreturn here, by
|
* the stack in its original form when we do the sigreturn here, by
|
||||||
* hand.
|
* hand.
|
||||||
|
|
|
@ -12,7 +12,7 @@ lib-y = bitops.o bugs.o csum-partial.o delay.o fault.o ldt.o mem.o memcpy.o \
|
||||||
obj-y := ksyms.o
|
obj-y := ksyms.o
|
||||||
obj-$(CONFIG_MODULES) += module.o um_module.o
|
obj-$(CONFIG_MODULES) += module.o um_module.o
|
||||||
|
|
||||||
USER_OBJS := ptrace_user.o sigcontext.o
|
USER_OBJS := ptrace_user.o sigcontext.o stub_segv.o
|
||||||
|
|
||||||
SYMLINKS = bitops.c csum-copy.S csum-partial.c csum-wrappers.c ldt.c memcpy.S \
|
SYMLINKS = bitops.c csum-copy.S csum-partial.c csum-wrappers.c ldt.c memcpy.S \
|
||||||
thunk.S module.c
|
thunk.S module.c
|
||||||
|
|
|
@ -3,14 +3,14 @@
|
||||||
* Licensed under the GPL
|
* Licensed under the GPL
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include <asm/signal.h>
|
#include <stddef.h>
|
||||||
|
#include <signal.h>
|
||||||
#include <linux/compiler.h>
|
#include <linux/compiler.h>
|
||||||
#include <asm/unistd.h>
|
#include <asm/unistd.h>
|
||||||
#include <asm/ucontext.h>
|
|
||||||
#include "uml-config.h"
|
#include "uml-config.h"
|
||||||
#include "sysdep/sigcontext.h"
|
#include "sysdep/sigcontext.h"
|
||||||
#include "sysdep/faultinfo.h"
|
#include "sysdep/faultinfo.h"
|
||||||
#include <stddef.h>
|
#include "sysdep/stub.h"
|
||||||
|
|
||||||
/* Copied from sys-x86_64/signal.c - Can't find an equivalent definition
|
/* Copied from sys-x86_64/signal.c - Can't find an equivalent definition
|
||||||
* in the libc headers anywhere.
|
* in the libc headers anywhere.
|
||||||
|
@ -31,21 +31,21 @@ void __attribute__ ((__section__ (".__syscall_stub")))
|
||||||
stub_segv_handler(int sig)
|
stub_segv_handler(int sig)
|
||||||
{
|
{
|
||||||
struct ucontext *uc;
|
struct ucontext *uc;
|
||||||
|
int pid;
|
||||||
|
|
||||||
__asm__("movq %%rdx, %0" : "=g" (uc) :);
|
__asm__("movq %%rdx, %0" : "=g" (uc) :);
|
||||||
GET_FAULTINFO_FROM_SC(*((struct faultinfo *) UML_CONFIG_STUB_DATA),
|
GET_FAULTINFO_FROM_SC(*((struct faultinfo *) UML_CONFIG_STUB_DATA),
|
||||||
&uc->uc_mcontext);
|
&uc->uc_mcontext);
|
||||||
|
|
||||||
__asm__("movq %0, %%rax ; syscall": : "g" (__NR_getpid));
|
pid = stub_syscall0(__NR_getpid);
|
||||||
__asm__("movq %%rax, %%rdi ; movq %0, %%rax ; movq %1, %%rsi ;"
|
stub_syscall2(__NR_kill, pid, SIGUSR1);
|
||||||
"syscall": : "g" (__NR_kill), "g" (SIGUSR1) :
|
|
||||||
"%rdi", "%rax", "%rsi");
|
|
||||||
/* sys_sigreturn expects that the stack pointer will be 8 bytes into
|
/* sys_sigreturn expects that the stack pointer will be 8 bytes into
|
||||||
* the signal frame. So, we use the ucontext pointer, which we know
|
* the signal frame. So, we use the ucontext pointer, which we know
|
||||||
* already, to get the signal frame pointer, and add 8 to that.
|
* already, to get the signal frame pointer, and add 8 to that.
|
||||||
*/
|
*/
|
||||||
__asm__("movq %0, %%rsp": :
|
__asm__("movq %0, %%rsp; movq %1, %%rax ; syscall": :
|
||||||
"g" ((unsigned long) container_of(uc, struct rt_sigframe,
|
"g" ((unsigned long) container_of(uc, struct rt_sigframe,
|
||||||
uc) + 8));
|
uc) + 8),
|
||||||
__asm__("movq %0, %%rax ; syscall" : : "g" (__NR_rt_sigreturn));
|
"g" (__NR_rt_sigreturn));
|
||||||
}
|
}
|
||||||
|
|
|
@ -351,13 +351,6 @@ void flush_thread(void)
|
||||||
struct task_struct *tsk = current;
|
struct task_struct *tsk = current;
|
||||||
struct thread_info *t = current_thread_info();
|
struct thread_info *t = current_thread_info();
|
||||||
|
|
||||||
/*
|
|
||||||
* Remove function-return probe instances associated with this task
|
|
||||||
* and put them back on the free list. Do not insert an exit probe for
|
|
||||||
* this function, it will be disabled by kprobe_flush_task if you do.
|
|
||||||
*/
|
|
||||||
kprobe_flush_task(tsk);
|
|
||||||
|
|
||||||
if (t->flags & _TIF_ABI_PENDING)
|
if (t->flags & _TIF_ABI_PENDING)
|
||||||
t->flags ^= (_TIF_ABI_PENDING | _TIF_IA32);
|
t->flags ^= (_TIF_ABI_PENDING | _TIF_IA32);
|
||||||
|
|
||||||
|
|
|
@ -1371,10 +1371,6 @@ static void as_add_request(request_queue_t *q, struct request *rq)
|
||||||
struct as_rq *alias;
|
struct as_rq *alias;
|
||||||
int data_dir;
|
int data_dir;
|
||||||
|
|
||||||
if (arq->state != AS_RQ_PRESCHED) {
|
|
||||||
printk("arq->state: %d\n", arq->state);
|
|
||||||
WARN_ON(1);
|
|
||||||
}
|
|
||||||
arq->state = AS_RQ_NEW;
|
arq->state = AS_RQ_NEW;
|
||||||
|
|
||||||
if (rq_data_dir(arq->request) == READ
|
if (rq_data_dir(arq->request) == READ
|
||||||
|
|
|
@ -133,7 +133,7 @@ static struct kobj_type ktype_bus = {
|
||||||
decl_subsys(bus, &ktype_bus, NULL);
|
decl_subsys(bus, &ktype_bus, NULL);
|
||||||
|
|
||||||
|
|
||||||
/* Manually detach a device from it's associated driver. */
|
/* Manually detach a device from its associated driver. */
|
||||||
static int driver_helper(struct device *dev, void *data)
|
static int driver_helper(struct device *dev, void *data)
|
||||||
{
|
{
|
||||||
const char *name = data;
|
const char *name = data;
|
||||||
|
@ -151,14 +151,13 @@ static ssize_t driver_unbind(struct device_driver *drv,
|
||||||
int err = -ENODEV;
|
int err = -ENODEV;
|
||||||
|
|
||||||
dev = bus_find_device(bus, NULL, (void *)buf, driver_helper);
|
dev = bus_find_device(bus, NULL, (void *)buf, driver_helper);
|
||||||
if ((dev) &&
|
if (dev && dev->driver == drv) {
|
||||||
(dev->driver == drv)) {
|
|
||||||
device_release_driver(dev);
|
device_release_driver(dev);
|
||||||
err = count;
|
err = count;
|
||||||
}
|
}
|
||||||
if (err)
|
put_device(dev);
|
||||||
return err;
|
put_bus(bus);
|
||||||
return count;
|
return err;
|
||||||
}
|
}
|
||||||
static DRIVER_ATTR(unbind, S_IWUSR, NULL, driver_unbind);
|
static DRIVER_ATTR(unbind, S_IWUSR, NULL, driver_unbind);
|
||||||
|
|
||||||
|
@ -175,16 +174,14 @@ static ssize_t driver_bind(struct device_driver *drv,
|
||||||
int err = -ENODEV;
|
int err = -ENODEV;
|
||||||
|
|
||||||
dev = bus_find_device(bus, NULL, (void *)buf, driver_helper);
|
dev = bus_find_device(bus, NULL, (void *)buf, driver_helper);
|
||||||
if ((dev) &&
|
if (dev && dev->driver == NULL) {
|
||||||
(dev->driver == NULL)) {
|
|
||||||
down(&dev->sem);
|
down(&dev->sem);
|
||||||
err = driver_probe_device(drv, dev);
|
err = driver_probe_device(drv, dev);
|
||||||
up(&dev->sem);
|
up(&dev->sem);
|
||||||
put_device(dev);
|
|
||||||
}
|
}
|
||||||
if (err)
|
put_device(dev);
|
||||||
return err;
|
put_bus(bus);
|
||||||
return count;
|
return err;
|
||||||
}
|
}
|
||||||
static DRIVER_ATTR(bind, S_IWUSR, NULL, driver_bind);
|
static DRIVER_ATTR(bind, S_IWUSR, NULL, driver_bind);
|
||||||
|
|
||||||
|
|
|
@ -62,7 +62,6 @@ void device_bind_driver(struct device * dev)
|
||||||
* because we don't know the format of the ID structures, nor what
|
* because we don't know the format of the ID structures, nor what
|
||||||
* is to be considered a match and what is not.
|
* is to be considered a match and what is not.
|
||||||
*
|
*
|
||||||
*
|
|
||||||
* This function returns 1 if a match is found, an error if one
|
* This function returns 1 if a match is found, an error if one
|
||||||
* occurs (that is not -ENODEV or -ENXIO), and 0 otherwise.
|
* occurs (that is not -ENODEV or -ENXIO), and 0 otherwise.
|
||||||
*
|
*
|
||||||
|
@ -158,7 +157,6 @@ static int __driver_attach(struct device * dev, void * data)
|
||||||
driver_probe_device(drv, dev);
|
driver_probe_device(drv, dev);
|
||||||
up(&dev->sem);
|
up(&dev->sem);
|
||||||
|
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -225,15 +223,15 @@ void driver_detach(struct device_driver * drv)
|
||||||
struct device * dev;
|
struct device * dev;
|
||||||
|
|
||||||
for (;;) {
|
for (;;) {
|
||||||
spin_lock_irq(&drv->klist_devices.k_lock);
|
spin_lock(&drv->klist_devices.k_lock);
|
||||||
if (list_empty(&drv->klist_devices.k_list)) {
|
if (list_empty(&drv->klist_devices.k_list)) {
|
||||||
spin_unlock_irq(&drv->klist_devices.k_lock);
|
spin_unlock(&drv->klist_devices.k_lock);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
dev = list_entry(drv->klist_devices.k_list.prev,
|
dev = list_entry(drv->klist_devices.k_list.prev,
|
||||||
struct device, knode_driver.n_node);
|
struct device, knode_driver.n_node);
|
||||||
get_device(dev);
|
get_device(dev);
|
||||||
spin_unlock_irq(&drv->klist_devices.k_lock);
|
spin_unlock(&drv->klist_devices.k_lock);
|
||||||
|
|
||||||
down(&dev->sem);
|
down(&dev->sem);
|
||||||
if (dev->driver == drv)
|
if (dev->driver == drv)
|
||||||
|
|
|
@ -3714,12 +3714,6 @@ static int floppy_open(struct inode *inode, struct file *filp)
|
||||||
USETF(FD_VERIFY);
|
USETF(FD_VERIFY);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* set underlying gendisk policy to reflect real ro/rw status */
|
|
||||||
if (UTESTF(FD_DISK_WRITABLE))
|
|
||||||
inode->i_bdev->bd_disk->policy = 0;
|
|
||||||
else
|
|
||||||
inode->i_bdev->bd_disk->policy = 1;
|
|
||||||
|
|
||||||
if (UDRS->fd_ref == -1 || (UDRS->fd_ref && (filp->f_flags & O_EXCL)))
|
if (UDRS->fd_ref == -1 || (UDRS->fd_ref && (filp->f_flags & O_EXCL)))
|
||||||
goto out2;
|
goto out2;
|
||||||
|
|
||||||
|
|
|
@ -416,7 +416,7 @@ static void __devinit amd8151_init(struct pci_dev *pdev, struct agp_bridge_data
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
static struct aper_size_info_32 uli_sizes[7] =
|
static const struct aper_size_info_32 uli_sizes[7] =
|
||||||
{
|
{
|
||||||
{256, 65536, 6, 10},
|
{256, 65536, 6, 10},
|
||||||
{128, 32768, 5, 9},
|
{128, 32768, 5, 9},
|
||||||
|
@ -470,7 +470,7 @@ static int __devinit uli_agp_init(struct pci_dev *pdev)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
static struct aper_size_info_32 nforce3_sizes[5] =
|
static const struct aper_size_info_32 nforce3_sizes[5] =
|
||||||
{
|
{
|
||||||
{512, 131072, 7, 0x00000000 },
|
{512, 131072, 7, 0x00000000 },
|
||||||
{256, 65536, 6, 0x00000008 },
|
{256, 65536, 6, 0x00000008 },
|
||||||
|
|
|
@ -97,7 +97,7 @@ void agp_backend_release(struct agp_bridge_data *bridge)
|
||||||
EXPORT_SYMBOL(agp_backend_release);
|
EXPORT_SYMBOL(agp_backend_release);
|
||||||
|
|
||||||
|
|
||||||
static struct { int mem, agp; } maxes_table[] = {
|
static const struct { int mem, agp; } maxes_table[] = {
|
||||||
{0, 0},
|
{0, 0},
|
||||||
{32, 4},
|
{32, 4},
|
||||||
{64, 28},
|
{64, 28},
|
||||||
|
|
|
@ -371,6 +371,11 @@ static struct agp_device_ids via_agp_device_ids[] __devinitdata =
|
||||||
.device_id = PCI_DEVICE_ID_VIA_3296_0,
|
.device_id = PCI_DEVICE_ID_VIA_3296_0,
|
||||||
.chipset_name = "P4M800",
|
.chipset_name = "P4M800",
|
||||||
},
|
},
|
||||||
|
/* P4M800CE */
|
||||||
|
{
|
||||||
|
.device_id = PCI_DEVICE_ID_VIA_P4M800CE,
|
||||||
|
.chipset_name = "P4M800CE",
|
||||||
|
},
|
||||||
|
|
||||||
{ }, /* dummy final entry, always present */
|
{ }, /* dummy final entry, always present */
|
||||||
};
|
};
|
||||||
|
@ -511,6 +516,7 @@ static struct pci_device_id agp_via_pci_table[] = {
|
||||||
ID(PCI_DEVICE_ID_VIA_3269_0),
|
ID(PCI_DEVICE_ID_VIA_3269_0),
|
||||||
ID(PCI_DEVICE_ID_VIA_83_87XX_1),
|
ID(PCI_DEVICE_ID_VIA_83_87XX_1),
|
||||||
ID(PCI_DEVICE_ID_VIA_3296_0),
|
ID(PCI_DEVICE_ID_VIA_3296_0),
|
||||||
|
ID(PCI_DEVICE_ID_VIA_P4M800CE),
|
||||||
{ }
|
{ }
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -104,6 +104,10 @@ int drm_lock(struct inode *inode, struct file *filp,
|
||||||
__set_current_state(TASK_RUNNING);
|
__set_current_state(TASK_RUNNING);
|
||||||
remove_wait_queue(&dev->lock.lock_queue, &entry);
|
remove_wait_queue(&dev->lock.lock_queue, &entry);
|
||||||
|
|
||||||
|
DRM_DEBUG("%d %s\n", lock.context, ret ? "interrupted" : "has lock");
|
||||||
|
if (ret)
|
||||||
|
return ret;
|
||||||
|
|
||||||
sigemptyset(&dev->sigmask);
|
sigemptyset(&dev->sigmask);
|
||||||
sigaddset(&dev->sigmask, SIGSTOP);
|
sigaddset(&dev->sigmask, SIGSTOP);
|
||||||
sigaddset(&dev->sigmask, SIGTSTP);
|
sigaddset(&dev->sigmask, SIGTSTP);
|
||||||
|
@ -116,8 +120,12 @@ int drm_lock(struct inode *inode, struct file *filp,
|
||||||
if (dev->driver->dma_ready && (lock.flags & _DRM_LOCK_READY))
|
if (dev->driver->dma_ready && (lock.flags & _DRM_LOCK_READY))
|
||||||
dev->driver->dma_ready(dev);
|
dev->driver->dma_ready(dev);
|
||||||
|
|
||||||
if (dev->driver->dma_quiescent && (lock.flags & _DRM_LOCK_QUIESCENT))
|
if (dev->driver->dma_quiescent && (lock.flags & _DRM_LOCK_QUIESCENT)) {
|
||||||
return dev->driver->dma_quiescent(dev);
|
if (dev->driver->dma_quiescent(dev)) {
|
||||||
|
DRM_DEBUG("%d waiting for DMA quiescent\n", lock.context);
|
||||||
|
return DRM_ERR(EBUSY);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/* dev->driver->kernel_context_switch isn't used by any of the x86
|
/* dev->driver->kernel_context_switch isn't used by any of the x86
|
||||||
* drivers but is used by the Sparc driver.
|
* drivers but is used by the Sparc driver.
|
||||||
|
@ -128,9 +136,7 @@ int drm_lock(struct inode *inode, struct file *filp,
|
||||||
dev->driver->kernel_context_switch(dev, dev->last_context,
|
dev->driver->kernel_context_switch(dev, dev->last_context,
|
||||||
lock.context);
|
lock.context);
|
||||||
}
|
}
|
||||||
DRM_DEBUG("%d %s\n", lock.context, ret ? "interrupted" : "has lock");
|
return 0;
|
||||||
|
|
||||||
return ret;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -95,7 +95,7 @@ unsigned long drm_alloc_pages(int order, int area)
|
||||||
unsigned long addr;
|
unsigned long addr;
|
||||||
unsigned int sz;
|
unsigned int sz;
|
||||||
|
|
||||||
address = __get_free_pages(GFP_KERNEL, order);
|
address = __get_free_pages(GFP_KERNEL|__GFP_COMP, order);
|
||||||
if (!address)
|
if (!address)
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
|
|
|
@ -221,7 +221,7 @@ unsigned long DRM(alloc_pages) (int order, int area) {
|
||||||
}
|
}
|
||||||
spin_unlock(&DRM(mem_lock));
|
spin_unlock(&DRM(mem_lock));
|
||||||
|
|
||||||
address = __get_free_pages(GFP_KERNEL, order);
|
address = __get_free_pages(GFP_KERNEL|__GFP_COMP, order);
|
||||||
if (!address) {
|
if (!address) {
|
||||||
spin_lock(&DRM(mem_lock));
|
spin_lock(&DRM(mem_lock));
|
||||||
++DRM(mem_stats)[area].fail_count;
|
++DRM(mem_stats)[area].fail_count;
|
||||||
|
|
|
@ -161,7 +161,7 @@ static int mga_driver_device_is_agp(drm_device_t * dev)
|
||||||
* device.
|
* device.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
if ((pdev->device == 0x0525)
|
if ((pdev->device == 0x0525) && pdev->bus->self
|
||||||
&& (pdev->bus->self->vendor == 0x3388)
|
&& (pdev->bus->self->vendor == 0x3388)
|
||||||
&& (pdev->bus->self->device == 0x0021)) {
|
&& (pdev->bus->self->device == 0x0021)) {
|
||||||
return 0;
|
return 0;
|
||||||
|
|
|
@ -214,8 +214,6 @@ typedef struct drm_radeon_private {
|
||||||
|
|
||||||
int microcode_version;
|
int microcode_version;
|
||||||
|
|
||||||
int is_pci;
|
|
||||||
|
|
||||||
struct {
|
struct {
|
||||||
u32 boxes;
|
u32 boxes;
|
||||||
int freelist_timeouts;
|
int freelist_timeouts;
|
||||||
|
@ -275,6 +273,7 @@ typedef struct drm_radeon_private {
|
||||||
|
|
||||||
/* starting from here on, data is preserved accross an open */
|
/* starting from here on, data is preserved accross an open */
|
||||||
uint32_t flags; /* see radeon_chip_flags */
|
uint32_t flags; /* see radeon_chip_flags */
|
||||||
|
int is_pci;
|
||||||
} drm_radeon_private_t;
|
} drm_radeon_private_t;
|
||||||
|
|
||||||
typedef struct drm_radeon_buf_priv {
|
typedef struct drm_radeon_buf_priv {
|
||||||
|
|
|
@ -693,8 +693,8 @@ static int cpufreq_remove_dev (struct sys_device * sys_dev)
|
||||||
unsigned int cpu = sys_dev->id;
|
unsigned int cpu = sys_dev->id;
|
||||||
unsigned long flags;
|
unsigned long flags;
|
||||||
struct cpufreq_policy *data;
|
struct cpufreq_policy *data;
|
||||||
struct sys_device *cpu_sys_dev;
|
|
||||||
#ifdef CONFIG_SMP
|
#ifdef CONFIG_SMP
|
||||||
|
struct sys_device *cpu_sys_dev;
|
||||||
unsigned int j;
|
unsigned int j;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
@ -1113,21 +1113,13 @@ int __cpufreq_driver_target(struct cpufreq_policy *policy,
|
||||||
{
|
{
|
||||||
int retval = -EINVAL;
|
int retval = -EINVAL;
|
||||||
|
|
||||||
/*
|
lock_cpu_hotplug();
|
||||||
* If we are already in context of hotplug thread, we dont need to
|
|
||||||
* acquire the hotplug lock. Otherwise acquire cpucontrol to prevent
|
|
||||||
* hotplug from removing this cpu that we are working on.
|
|
||||||
*/
|
|
||||||
if (!current_in_cpu_hotplug())
|
|
||||||
lock_cpu_hotplug();
|
|
||||||
|
|
||||||
dprintk("target for CPU %u: %u kHz, relation %u\n", policy->cpu,
|
dprintk("target for CPU %u: %u kHz, relation %u\n", policy->cpu,
|
||||||
target_freq, relation);
|
target_freq, relation);
|
||||||
if (cpu_online(policy->cpu) && cpufreq_driver->target)
|
if (cpu_online(policy->cpu) && cpufreq_driver->target)
|
||||||
retval = cpufreq_driver->target(policy, target_freq, relation);
|
retval = cpufreq_driver->target(policy, target_freq, relation);
|
||||||
|
|
||||||
if (!current_in_cpu_hotplug())
|
unlock_cpu_hotplug();
|
||||||
unlock_cpu_hotplug();
|
|
||||||
|
|
||||||
return retval;
|
return retval;
|
||||||
}
|
}
|
||||||
|
|
|
@ -60,6 +60,7 @@ config EFI_PCDP
|
||||||
|
|
||||||
config DELL_RBU
|
config DELL_RBU
|
||||||
tristate "BIOS update support for DELL systems via sysfs"
|
tristate "BIOS update support for DELL systems via sysfs"
|
||||||
|
depends on X86
|
||||||
select FW_LOADER
|
select FW_LOADER
|
||||||
help
|
help
|
||||||
Say m if you want to have the option of updating the BIOS for your
|
Say m if you want to have the option of updating the BIOS for your
|
||||||
|
|
|
@ -570,7 +570,7 @@ static int __init hdaps_init(void)
|
||||||
hdaps_idev->evbit[0] = BIT(EV_ABS);
|
hdaps_idev->evbit[0] = BIT(EV_ABS);
|
||||||
input_set_abs_params(hdaps_idev, ABS_X,
|
input_set_abs_params(hdaps_idev, ABS_X,
|
||||||
-256, 256, HDAPS_INPUT_FUZZ, HDAPS_INPUT_FLAT);
|
-256, 256, HDAPS_INPUT_FUZZ, HDAPS_INPUT_FLAT);
|
||||||
input_set_abs_params(hdaps_idev, ABS_X,
|
input_set_abs_params(hdaps_idev, ABS_Y,
|
||||||
-256, 256, HDAPS_INPUT_FUZZ, HDAPS_INPUT_FLAT);
|
-256, 256, HDAPS_INPUT_FUZZ, HDAPS_INPUT_FLAT);
|
||||||
|
|
||||||
input_register_device(hdaps_idev);
|
input_register_device(hdaps_idev);
|
||||||
|
|
|
@ -522,8 +522,15 @@ static ssize_t set_fan_min(struct device *dev, struct device_attribute *attr,
|
||||||
struct i2c_client *client = to_i2c_client(dev);
|
struct i2c_client *client = to_i2c_client(dev);
|
||||||
struct it87_data *data = i2c_get_clientdata(client);
|
struct it87_data *data = i2c_get_clientdata(client);
|
||||||
int val = simple_strtol(buf, NULL, 10);
|
int val = simple_strtol(buf, NULL, 10);
|
||||||
|
u8 reg = it87_read_value(client, IT87_REG_FAN_DIV);
|
||||||
|
|
||||||
down(&data->update_lock);
|
down(&data->update_lock);
|
||||||
|
switch (nr) {
|
||||||
|
case 0: data->fan_div[nr] = reg & 0x07; break;
|
||||||
|
case 1: data->fan_div[nr] = (reg >> 3) & 0x07; break;
|
||||||
|
case 2: data->fan_div[nr] = (reg & 0x40) ? 3 : 1; break;
|
||||||
|
}
|
||||||
|
|
||||||
data->fan_min[nr] = FAN_TO_REG(val, DIV_FROM_REG(data->fan_div[nr]));
|
data->fan_min[nr] = FAN_TO_REG(val, DIV_FROM_REG(data->fan_div[nr]));
|
||||||
it87_write_value(client, IT87_REG_FAN_MIN(nr), data->fan_min[nr]);
|
it87_write_value(client, IT87_REG_FAN_MIN(nr), data->fan_min[nr]);
|
||||||
up(&data->update_lock);
|
up(&data->update_lock);
|
||||||
|
|
|
@ -451,7 +451,7 @@ static DEVICE_ATTR(fan3_div, S_IRUGO, show_fan_3_div, NULL);
|
||||||
static ssize_t show_vid(struct device *dev, struct device_attribute *attr, char *buf)
|
static ssize_t show_vid(struct device *dev, struct device_attribute *attr, char *buf)
|
||||||
{
|
{
|
||||||
struct lm78_data *data = lm78_update_device(dev);
|
struct lm78_data *data = lm78_update_device(dev);
|
||||||
return sprintf(buf, "%d\n", vid_from_reg(82, data->vid));
|
return sprintf(buf, "%d\n", vid_from_reg(data->vid, 82));
|
||||||
}
|
}
|
||||||
static DEVICE_ATTR(cpu0_vid, S_IRUGO, show_vid, NULL);
|
static DEVICE_ATTR(cpu0_vid, S_IRUGO, show_vid, NULL);
|
||||||
|
|
||||||
|
|
|
@ -456,7 +456,9 @@ static ssize_t store_regs_in_min0(struct device *dev, struct device_attribute *a
|
||||||
(w83627thf == data->type || w83637hf == data->type))
|
(w83627thf == data->type || w83637hf == data->type))
|
||||||
|
|
||||||
/* use VRM9 calculation */
|
/* use VRM9 calculation */
|
||||||
data->in_min[0] = (u8)(((val * 100) - 70000 + 244) / 488);
|
data->in_min[0] =
|
||||||
|
SENSORS_LIMIT(((val * 100) - 70000 + 244) / 488, 0,
|
||||||
|
255);
|
||||||
else
|
else
|
||||||
/* use VRM8 (standard) calculation */
|
/* use VRM8 (standard) calculation */
|
||||||
data->in_min[0] = IN_TO_REG(val);
|
data->in_min[0] = IN_TO_REG(val);
|
||||||
|
@ -481,7 +483,9 @@ static ssize_t store_regs_in_max0(struct device *dev, struct device_attribute *a
|
||||||
(w83627thf == data->type || w83637hf == data->type))
|
(w83627thf == data->type || w83637hf == data->type))
|
||||||
|
|
||||||
/* use VRM9 calculation */
|
/* use VRM9 calculation */
|
||||||
data->in_max[0] = (u8)(((val * 100) - 70000 + 244) / 488);
|
data->in_max[0] =
|
||||||
|
SENSORS_LIMIT(((val * 100) - 70000 + 244) / 488, 0,
|
||||||
|
255);
|
||||||
else
|
else
|
||||||
/* use VRM8 (standard) calculation */
|
/* use VRM8 (standard) calculation */
|
||||||
data->in_max[0] = IN_TO_REG(val);
|
data->in_max[0] = IN_TO_REG(val);
|
||||||
|
|
|
@ -2350,6 +2350,7 @@ static int sbp2_handle_status_write(struct hpsb_host *host, int nodeid, int dest
|
||||||
struct scsi_cmnd *SCpnt = NULL;
|
struct scsi_cmnd *SCpnt = NULL;
|
||||||
u32 scsi_status = SBP2_SCSI_STATUS_GOOD;
|
u32 scsi_status = SBP2_SCSI_STATUS_GOOD;
|
||||||
struct sbp2_command_info *command;
|
struct sbp2_command_info *command;
|
||||||
|
unsigned long flags;
|
||||||
|
|
||||||
SBP2_DEBUG("sbp2_handle_status_write");
|
SBP2_DEBUG("sbp2_handle_status_write");
|
||||||
|
|
||||||
|
@ -2451,9 +2452,11 @@ static int sbp2_handle_status_write(struct hpsb_host *host, int nodeid, int dest
|
||||||
* null out last orb so that next time around we write directly to the orb pointer...
|
* null out last orb so that next time around we write directly to the orb pointer...
|
||||||
* Quick start saves one 1394 bus transaction.
|
* Quick start saves one 1394 bus transaction.
|
||||||
*/
|
*/
|
||||||
|
spin_lock_irqsave(&scsi_id->sbp2_command_orb_lock, flags);
|
||||||
if (list_empty(&scsi_id->sbp2_command_orb_inuse)) {
|
if (list_empty(&scsi_id->sbp2_command_orb_inuse)) {
|
||||||
scsi_id->last_orb = NULL;
|
scsi_id->last_orb = NULL;
|
||||||
}
|
}
|
||||||
|
spin_unlock_irqrestore(&scsi_id->sbp2_command_orb_lock, flags);
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
|
|
||||||
|
@ -2563,9 +2566,11 @@ static void sbp2scsi_complete_all_commands(struct scsi_id_instance_data *scsi_id
|
||||||
struct sbp2scsi_host_info *hi = scsi_id->hi;
|
struct sbp2scsi_host_info *hi = scsi_id->hi;
|
||||||
struct list_head *lh;
|
struct list_head *lh;
|
||||||
struct sbp2_command_info *command;
|
struct sbp2_command_info *command;
|
||||||
|
unsigned long flags;
|
||||||
|
|
||||||
SBP2_DEBUG("sbp2scsi_complete_all_commands");
|
SBP2_DEBUG("sbp2scsi_complete_all_commands");
|
||||||
|
|
||||||
|
spin_lock_irqsave(&scsi_id->sbp2_command_orb_lock, flags);
|
||||||
while (!list_empty(&scsi_id->sbp2_command_orb_inuse)) {
|
while (!list_empty(&scsi_id->sbp2_command_orb_inuse)) {
|
||||||
SBP2_DEBUG("Found pending command to complete");
|
SBP2_DEBUG("Found pending command to complete");
|
||||||
lh = scsi_id->sbp2_command_orb_inuse.next;
|
lh = scsi_id->sbp2_command_orb_inuse.next;
|
||||||
|
@ -2582,6 +2587,7 @@ static void sbp2scsi_complete_all_commands(struct scsi_id_instance_data *scsi_id
|
||||||
command->Current_done(command->Current_SCpnt);
|
command->Current_done(command->Current_SCpnt);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
spin_unlock_irqrestore(&scsi_id->sbp2_command_orb_lock, flags);
|
||||||
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
|
@ -355,9 +355,9 @@ error4:
|
||||||
spin_unlock_irqrestore(&port_priv->reg_lock, flags);
|
spin_unlock_irqrestore(&port_priv->reg_lock, flags);
|
||||||
kfree(reg_req);
|
kfree(reg_req);
|
||||||
error3:
|
error3:
|
||||||
kfree(mad_agent_priv);
|
|
||||||
error2:
|
|
||||||
ib_dereg_mr(mad_agent_priv->agent.mr);
|
ib_dereg_mr(mad_agent_priv->agent.mr);
|
||||||
|
error2:
|
||||||
|
kfree(mad_agent_priv);
|
||||||
error1:
|
error1:
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
|
@ -33,6 +33,9 @@ static inline void bio_list_add(struct bio_list *bl, struct bio *bio)
|
||||||
|
|
||||||
static inline void bio_list_merge(struct bio_list *bl, struct bio_list *bl2)
|
static inline void bio_list_merge(struct bio_list *bl, struct bio_list *bl2)
|
||||||
{
|
{
|
||||||
|
if (!bl2->head)
|
||||||
|
return;
|
||||||
|
|
||||||
if (bl->tail)
|
if (bl->tail)
|
||||||
bl->tail->bi_next = bl2->head;
|
bl->tail->bi_next = bl2->head;
|
||||||
else
|
else
|
||||||
|
|
|
@ -425,8 +425,8 @@ static void list_version_get_needed(struct target_type *tt, void *needed_param)
|
||||||
{
|
{
|
||||||
size_t *needed = needed_param;
|
size_t *needed = needed_param;
|
||||||
|
|
||||||
|
*needed += sizeof(struct dm_target_versions);
|
||||||
*needed += strlen(tt->name);
|
*needed += strlen(tt->name);
|
||||||
*needed += sizeof(tt->version);
|
|
||||||
*needed += ALIGN_MASK;
|
*needed += ALIGN_MASK;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -974,6 +974,7 @@ static int table_load(struct dm_ioctl *param, size_t param_size)
|
||||||
if (!hc) {
|
if (!hc) {
|
||||||
DMWARN("device doesn't appear to be in the dev hash table.");
|
DMWARN("device doesn't appear to be in the dev hash table.");
|
||||||
up_write(&_hash_lock);
|
up_write(&_hash_lock);
|
||||||
|
dm_table_put(t);
|
||||||
return -ENXIO;
|
return -ENXIO;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -333,10 +333,10 @@ static int core_ctr(struct dirty_log *log, struct dm_target *ti,
|
||||||
lc->sync = sync;
|
lc->sync = sync;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Work out how many words we need to hold the bitset.
|
* Work out how many "unsigned long"s we need to hold the bitset.
|
||||||
*/
|
*/
|
||||||
bitset_size = dm_round_up(region_count,
|
bitset_size = dm_round_up(region_count,
|
||||||
sizeof(*lc->clean_bits) << BYTE_SHIFT);
|
sizeof(unsigned long) << BYTE_SHIFT);
|
||||||
bitset_size >>= BYTE_SHIFT;
|
bitset_size >>= BYTE_SHIFT;
|
||||||
|
|
||||||
lc->bitset_uint32_count = bitset_size / 4;
|
lc->bitset_uint32_count = bitset_size / 4;
|
||||||
|
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue