Merge ../linus

This commit is contained in:
Dave Jones 2005-11-29 12:48:34 -08:00
commit be37bdbce7
252 changed files with 2104 additions and 2458 deletions

View File

@ -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

View File

@ -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:

View File

@ -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

View File

@ -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/

View File

@ -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

View File

@ -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
========================================== ==========================================

View File

@ -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!

View File

@ -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

View File

@ -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

View File

@ -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:

View File

@ -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;

View File

@ -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.

View File

@ -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

View File

@ -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.

View File

@ -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.

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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:

View File

@ -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:
------- -------

View File

@ -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

View File

@ -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

View File

@ -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*

View File

@ -1,7 +1,7 @@
# #
# Automatically generated make config: don't edit # Automatically generated make config: don't edit
# Linux kernel version: 2.6.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

View File

@ -1,7 +1,7 @@
# #
# Automatically generated make config: don't edit # Automatically generated make config: don't edit
# Linux kernel version: 2.6.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

View File

@ -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
/* /*

View File

@ -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

View File

@ -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

View File

@ -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>

View File

@ -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>

View File

@ -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;

View File

@ -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);

View File

@ -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

View File

@ -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)

View File

@ -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)
{ {
} }

View File

@ -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;

View File

@ -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)

View File

@ -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));
/* /*

View File

@ -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;
} }

View File

@ -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;
} }

View File

@ -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);

View File

@ -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);

View File

@ -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;
} }

View File

@ -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;

View File

@ -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;

View File

@ -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++;

View File

@ -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)

View File

@ -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;

View File

@ -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.

View File

@ -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

View File

@ -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)

View File

@ -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;

View File

@ -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;

View File

@ -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);

View File

@ -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)

View File

@ -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;

View File

@ -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)

View File

@ -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.
* *

View File

@ -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.
* *

View File

@ -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

View File

@ -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.
* *

View File

@ -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);

View File

@ -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)

View File

@ -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;

View File

@ -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);

View File

@ -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;

View File

@ -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

View File

@ -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;

View File

@ -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;

View File

@ -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();
} }

View File

@ -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

View File

@ -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;

View File

@ -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.

View File

@ -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

View File

@ -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));
} }

View File

@ -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);

View File

@ -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

View File

@ -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);

View File

@ -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)

View File

@ -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;

View File

@ -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 },

View File

@ -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},

View File

@ -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),
{ } { }
}; };

View File

@ -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;
} }
/** /**

View File

@ -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;

View File

@ -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;

View File

@ -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;

View File

@ -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 {

View File

@ -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;
} }

View File

@ -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

View File

@ -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);

View File

@ -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);

View File

@ -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);

View File

@ -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);

View File

@ -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;
} }

View File

@ -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;
} }

View File

@ -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

View File

@ -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;
} }

View File

@ -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