merge by hand (qla_os.c mismerge)
This commit is contained in:
commit
3afa294c40
|
@ -8,7 +8,7 @@
|
|||
|
||||
DOCBOOKS := wanbook.xml z8530book.xml mcabook.xml videobook.xml \
|
||||
kernel-hacking.xml kernel-locking.xml deviceiobook.xml \
|
||||
procfs-guide.xml writing_usb_driver.xml scsidrivers.xml \
|
||||
procfs-guide.xml writing_usb_driver.xml \
|
||||
sis900.xml kernel-api.xml journal-api.xml lsm.xml usb.xml \
|
||||
gadget.xml libata.xml mtdnand.xml librs.xml
|
||||
|
||||
|
|
|
@ -1,193 +0,0 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.1.2//EN"
|
||||
"http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd" []>
|
||||
|
||||
<book id="scsidrivers">
|
||||
<bookinfo>
|
||||
<title>SCSI Subsystem Interfaces</title>
|
||||
|
||||
<authorgroup>
|
||||
<author>
|
||||
<firstname>Douglas</firstname>
|
||||
<surname>Gilbert</surname>
|
||||
<affiliation>
|
||||
<address>
|
||||
<email>dgilbert@interlog.com</email>
|
||||
</address>
|
||||
</affiliation>
|
||||
</author>
|
||||
</authorgroup>
|
||||
<pubdate>2003-08-11</pubdate>
|
||||
|
||||
<copyright>
|
||||
<year>2002</year>
|
||||
<year>2003</year>
|
||||
<holder>Douglas Gilbert</holder>
|
||||
</copyright>
|
||||
|
||||
<legalnotice>
|
||||
<para>
|
||||
This documentation is free software; you can redistribute
|
||||
it and/or modify it under the terms of the GNU General Public
|
||||
License as published by the Free Software Foundation; either
|
||||
version 2 of the License, or (at your option) any later
|
||||
version.
|
||||
</para>
|
||||
|
||||
<para>
|
||||
This program is distributed in the hope that it will be
|
||||
useful, but WITHOUT ANY WARRANTY; without even the implied
|
||||
warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
||||
See the GNU General Public License for more details.
|
||||
</para>
|
||||
|
||||
<para>
|
||||
You should have received a copy of the GNU General Public
|
||||
License along with this program; if not, write to the Free
|
||||
Software Foundation, Inc., 59 Temple Place, Suite 330, Boston,
|
||||
MA 02111-1307 USA
|
||||
</para>
|
||||
|
||||
<para>
|
||||
For more details see the file COPYING in the source
|
||||
distribution of Linux.
|
||||
</para>
|
||||
</legalnotice>
|
||||
|
||||
</bookinfo>
|
||||
|
||||
<toc></toc>
|
||||
|
||||
<chapter id="intro">
|
||||
<title>Introduction</title>
|
||||
<para>
|
||||
This document outlines the interface between the Linux scsi mid level
|
||||
and lower level drivers. Lower level drivers are variously called HBA
|
||||
(host bus adapter) drivers, host drivers (HD) or pseudo adapter drivers.
|
||||
The latter alludes to the fact that a lower level driver may be a
|
||||
bridge to another IO subsystem (and the "ide-scsi" driver is an example
|
||||
of this). There can be many lower level drivers active in a running
|
||||
system, but only one per hardware type. For example, the aic7xxx driver
|
||||
controls adaptec controllers based on the 7xxx chip series. Most lower
|
||||
level drivers can control one or more scsi hosts (a.k.a. scsi initiators).
|
||||
</para>
|
||||
<para>
|
||||
This document can been found in an ASCII text file in the linux kernel
|
||||
source: <filename>Documentation/scsi/scsi_mid_low_api.txt</filename> .
|
||||
It currently hold a little more information than this document. The
|
||||
<filename>drivers/scsi/hosts.h</filename> and <filename>
|
||||
drivers/scsi/scsi.h</filename> headers contain descriptions of members
|
||||
of important structures for the scsi subsystem.
|
||||
</para>
|
||||
</chapter>
|
||||
|
||||
<chapter id="driver-struct">
|
||||
<title>Driver structure</title>
|
||||
<para>
|
||||
Traditionally a lower level driver for the scsi subsystem has been
|
||||
at least two files in the drivers/scsi directory. For example, a
|
||||
driver called "xyz" has a header file "xyz.h" and a source file
|
||||
"xyz.c". [Actually there is no good reason why this couldn't all
|
||||
be in one file.] Some drivers that have been ported to several operating
|
||||
systems (e.g. aic7xxx which has separate files for generic and
|
||||
OS-specific code) have more than two files. Such drivers tend to have
|
||||
their own directory under the drivers/scsi directory.
|
||||
</para>
|
||||
<para>
|
||||
scsi_module.c is normally included at the end of a lower
|
||||
level driver. For it to work a declaration like this is needed before
|
||||
it is included:
|
||||
<programlisting>
|
||||
static Scsi_Host_Template driver_template = DRIVER_TEMPLATE;
|
||||
/* DRIVER_TEMPLATE should contain pointers to supported interface
|
||||
functions. Scsi_Host_Template is defined hosts.h */
|
||||
#include "scsi_module.c"
|
||||
</programlisting>
|
||||
</para>
|
||||
<para>
|
||||
The scsi_module.c assumes the name "driver_template" is appropriately
|
||||
defined. It contains 2 functions:
|
||||
<orderedlist>
|
||||
<listitem><para>
|
||||
init_this_scsi_driver() called during builtin and module driver
|
||||
initialization: invokes mid level's scsi_register_host()
|
||||
</para></listitem>
|
||||
<listitem><para>
|
||||
exit_this_scsi_driver() called during closedown: invokes
|
||||
mid level's scsi_unregister_host()
|
||||
</para></listitem>
|
||||
</orderedlist>
|
||||
</para>
|
||||
<para>
|
||||
When a new, lower level driver is being added to Linux, the following
|
||||
files (all found in the drivers/scsi directory) will need some attention:
|
||||
Makefile, Config.help and Config.in . It is probably best to look at what
|
||||
an existing lower level driver does in this regard.
|
||||
</para>
|
||||
</chapter>
|
||||
|
||||
<chapter id="intfunctions">
|
||||
<title>Interface Functions</title>
|
||||
!EDocumentation/scsi/scsi_mid_low_api.txt
|
||||
</chapter>
|
||||
|
||||
<chapter id="locks">
|
||||
<title>Locks</title>
|
||||
<para>
|
||||
Each Scsi_Host instance has a spin_lock called Scsi_Host::default_lock
|
||||
which is initialized in scsi_register() [found in hosts.c]. Within the
|
||||
same function the Scsi_Host::host_lock pointer is initialized to point
|
||||
at default_lock with the scsi_assign_lock() function. Thereafter
|
||||
lock and unlock operations performed by the mid level use the
|
||||
Scsi_Host::host_lock pointer.
|
||||
</para>
|
||||
<para>
|
||||
Lower level drivers can override the use of Scsi_Host::default_lock by
|
||||
using scsi_assign_lock(). The earliest opportunity to do this would
|
||||
be in the detect() function after it has invoked scsi_register(). It
|
||||
could be replaced by a coarser grain lock (e.g. per driver) or a
|
||||
lock of equal granularity (i.e. per host). Using finer grain locks
|
||||
(e.g. per scsi device) may be possible by juggling locks in
|
||||
queuecommand().
|
||||
</para>
|
||||
</chapter>
|
||||
|
||||
<chapter id="changes">
|
||||
<title>Changes since lk 2.4 series</title>
|
||||
<para>
|
||||
io_request_lock has been replaced by several finer grained locks. The lock
|
||||
relevant to lower level drivers is Scsi_Host::host_lock and there is one
|
||||
per scsi host.
|
||||
</para>
|
||||
<para>
|
||||
The older error handling mechanism has been removed. This means the
|
||||
lower level interface functions abort() and reset() have been removed.
|
||||
</para>
|
||||
<para>
|
||||
In the 2.4 series the scsi subsystem configuration descriptions were
|
||||
aggregated with the configuration descriptions from all other Linux
|
||||
subsystems in the Documentation/Configure.help file. In the 2.5 series,
|
||||
the scsi subsystem now has its own (much smaller) drivers/scsi/Config.help
|
||||
file.
|
||||
</para>
|
||||
</chapter>
|
||||
|
||||
<chapter id="credits">
|
||||
<title>Credits</title>
|
||||
<para>
|
||||
The following people have contributed to this document:
|
||||
<orderedlist>
|
||||
<listitem><para>
|
||||
Mike Anderson <email>andmike@us.ibm.com</email>
|
||||
</para></listitem>
|
||||
<listitem><para>
|
||||
James Bottomley <email>James.Bottomley@steeleye.com</email>
|
||||
</para></listitem>
|
||||
<listitem><para>
|
||||
Patrick Mansfield <email>patmans@us.ibm.com</email>
|
||||
</para></listitem>
|
||||
</orderedlist>
|
||||
</para>
|
||||
</chapter>
|
||||
|
||||
</book>
|
|
@ -271,7 +271,7 @@ patch, which certifies that you wrote it or otherwise have the right to
|
|||
pass it on as a open-source patch. The rules are pretty simple: if you
|
||||
can certify the below:
|
||||
|
||||
Developer's Certificate of Origin 1.0
|
||||
Developer's Certificate of Origin 1.1
|
||||
|
||||
By making a contribution to this project, I certify that:
|
||||
|
||||
|
@ -291,6 +291,12 @@ can certify the below:
|
|||
person who certified (a), (b) or (c) and I have not modified
|
||||
it.
|
||||
|
||||
(d) I understand and agree that this project and the contribution
|
||||
are public and that a record of the contribution (including all
|
||||
personal information I submit with it, including my sign-off) is
|
||||
maintained indefinitely and may be redistributed consistent with
|
||||
this project or the open source license(s) involved.
|
||||
|
||||
then you just add a line saying
|
||||
|
||||
Signed-off-by: Random J Developer <random@developer.org>
|
||||
|
|
|
@ -12,7 +12,7 @@ Don is no longer the prime maintainer of this version of the driver.
|
|||
Please report problems to one or more of:
|
||||
|
||||
Andrew Morton <andrewm@uow.edu.au>
|
||||
Netdev mailing list <netdev@oss.sgi.com>
|
||||
Netdev mailing list <netdev@vger.kernel.org>
|
||||
Linux kernel mailing list <linux-kernel@vger.kernel.org>
|
||||
|
||||
Please note the 'Reporting and Diagnosing Problems' section at the end
|
||||
|
|
|
@ -1,3 +1,69 @@
|
|||
Release Date : Mon Mar 07 12:27:22 EST 2005 - Seokmann Ju <sju@lsil.com>
|
||||
Current Version : 2.20.4.6 (scsi module), 2.20.2.6 (cmm module)
|
||||
Older Version : 2.20.4.5 (scsi module), 2.20.2.5 (cmm module)
|
||||
|
||||
1. Added IOCTL backward compatibility.
|
||||
Convert megaraid_mm driver to new compat_ioctl entry points.
|
||||
I don't have easy access to hardware, so only compile tested.
|
||||
- Signed-off-by:Andi Kleen <ak@muc.de>
|
||||
|
||||
2. megaraid_mbox fix: wrong order of arguments in memset()
|
||||
That, BTW, shows why cross-builds are useful-the only indication of
|
||||
problem had been a new warning showing up in sparse output on alpha
|
||||
build (number of exceeding 256 got truncated).
|
||||
- Signed-off-by: Al Viro
|
||||
<viro@parcelfarce.linux.theplanet.co.uk>
|
||||
|
||||
3. Convert pci_module_init to pci_register_driver
|
||||
Convert from pci_module_init to pci_register_driver
|
||||
(from:http://kerneljanitors.org/TODO)
|
||||
- Signed-off-by: Domen Puncer <domen@coderock.org>
|
||||
|
||||
4. Use the pre defined DMA mask constants from dma-mapping.h
|
||||
Use the DMA_{64,32}BIT_MASK constants from dma-mapping.h when calling
|
||||
pci_set_dma_mask() or pci_set_consistend_dma_mask(). See
|
||||
http://marc.theaimsgroup.com/?t=108001993000001&r=1&w=2 for more
|
||||
details.
|
||||
Signed-off-by: Tobias Klauser <tklauser@nuerscht.ch>
|
||||
Signed-off-by: Domen Puncer <domen@coderock.org>
|
||||
|
||||
5. Remove SSID checking for Dobson, Lindsay, and Verde based products.
|
||||
Checking the SSVID/SSID for controllers which have Dobson, Lindsay,
|
||||
and Verde is unnecessary because device ID has been assigned by LSI
|
||||
and it is unique value. So, all controllers with these IOPs have to be
|
||||
supported by the driver regardless SSVID/SSID.
|
||||
|
||||
6. Date Thu, 27 Jan 2005 04:31:09 +0100
|
||||
From Herbert Poetzl <>
|
||||
Subject RFC: assert_spin_locked() for 2.6
|
||||
|
||||
Greetings!
|
||||
|
||||
overcautious programming will kill your kernel ;)
|
||||
ever thought about checking a spin_lock or even
|
||||
asserting that it must be held (maybe just for
|
||||
spinlock debugging?) ...
|
||||
|
||||
there are several checks present in the kernel
|
||||
where somebody does a variation on the following:
|
||||
|
||||
BUG_ON(!spin_is_locked(&some_lock));
|
||||
|
||||
so what's wrong about that? nothing, unless you
|
||||
compile the code with CONFIG_DEBUG_SPINLOCK but
|
||||
without CONFIG_SMP ... in which case the BUG()
|
||||
will kill your kernel ...
|
||||
|
||||
maybe it's not advised to make such assertions,
|
||||
but here is a solution which works for me ...
|
||||
(compile tested for sh, x86_64 and x86, boot/run
|
||||
tested for x86 only)
|
||||
|
||||
best,
|
||||
Herbert
|
||||
|
||||
- Herbert Poetzl <herbert@13thfloor.at>, Thu, 27 Jan 2005
|
||||
|
||||
Release Date : Thu Feb 03 12:27:22 EST 2005 - Seokmann Ju <sju@lsil.com>
|
||||
Current Version : 2.20.4.5 (scsi module), 2.20.2.5 (cmm module)
|
||||
Older Version : 2.20.4.4 (scsi module), 2.20.2.4 (cmm module)
|
||||
|
|
180
Documentation/scsi/scsi-changer.txt
Normal file
180
Documentation/scsi/scsi-changer.txt
Normal file
|
@ -0,0 +1,180 @@
|
|||
|
||||
README for the SCSI media changer driver
|
||||
========================================
|
||||
|
||||
This is a driver for SCSI Medium Changer devices, which are listed
|
||||
with "Type: Medium Changer" in /proc/scsi/scsi.
|
||||
|
||||
This is for *real* Jukeboxes. It is *not* supported to work with
|
||||
common small CD-ROM changers, neither one-lun-per-slot SCSI changers
|
||||
nor IDE drives.
|
||||
|
||||
Userland tools available from here:
|
||||
http://linux.bytesex.org/misc/changer.html
|
||||
|
||||
|
||||
General Information
|
||||
-------------------
|
||||
|
||||
First some words about how changers work: A changer has 2 (possibly
|
||||
more) SCSI ID's. One for the changer device which controls the robot,
|
||||
and one for the device which actually reads and writes the data. The
|
||||
later may be anything, a MOD, a CD-ROM, a tape or whatever. For the
|
||||
changer device this is a "don't care", he *only* shuffles around the
|
||||
media, nothing else.
|
||||
|
||||
|
||||
The SCSI changer model is complex, compared to - for example - IDE-CD
|
||||
changers. But it allows to handle nearly all possible cases. It knows
|
||||
4 different types of changer elements:
|
||||
|
||||
media transport - this one shuffles around the media, i.e. the
|
||||
transport arm. Also known as "picker".
|
||||
storage - a slot which can hold a media.
|
||||
import/export - the same as above, but is accessable from outside,
|
||||
i.e. there the operator (you !) can use this to
|
||||
fill in and remove media from the changer.
|
||||
Sometimes named "mailslot".
|
||||
data transfer - this is the device which reads/writes, i.e. the
|
||||
CD-ROM / Tape / whatever drive.
|
||||
|
||||
None of these is limited to one: A huge Jukebox could have slots for
|
||||
123 CD-ROM's, 5 CD-ROM readers (and therefore 6 SCSI ID's: the changer
|
||||
and each CD-ROM) and 2 transport arms. No problem to handle.
|
||||
|
||||
|
||||
How it is implemented
|
||||
---------------------
|
||||
|
||||
I implemented the driver as character device driver with a NetBSD-like
|
||||
ioctl interface. Just grabbed NetBSD's header file and one of the
|
||||
other linux SCSI device drivers as starting point. The interface
|
||||
should be source code compatible with NetBSD. So if there is any
|
||||
software (anybody knows ???) which supports a BSDish changer driver,
|
||||
it should work with this driver too.
|
||||
|
||||
Over time a few more ioctls where added, volume tag support for example
|
||||
wasn't covered by the NetBSD ioctl API.
|
||||
|
||||
|
||||
Current State
|
||||
-------------
|
||||
|
||||
Support for more than one transport arm is not implemented yet (and
|
||||
nobody asked for it so far...).
|
||||
|
||||
I test and use the driver myself with a 35 slot cdrom jukebox from
|
||||
Grundig. I got some reports telling it works ok with tape autoloaders
|
||||
(Exabyte, HP and DEC). Some People use this driver with amanda. It
|
||||
works fine with small (11 slots) and a huge (4 MOs, 88 slots)
|
||||
magneto-optical Jukebox. Probably with lots of other changers too, most
|
||||
(but not all :-) people mail me only if it does *not* work...
|
||||
|
||||
I don't have any device lists, neither black-list nor white-list. Thus
|
||||
it is quite useless to ask me whenever a specific device is supported or
|
||||
not. In theory every changer device which supports the SCSI-2 media
|
||||
changer command set should work out-of-the-box with this driver. If it
|
||||
doesn't, it is a bug. Either within the driver or within the firmware
|
||||
of the changer device.
|
||||
|
||||
|
||||
Using it
|
||||
--------
|
||||
|
||||
This is a character device with major number is 86, so use
|
||||
"mknod /dev/sch0 c 86 0" to create the special file for the driver.
|
||||
|
||||
If the module finds the changer, it prints some messages about the
|
||||
device [ try "dmesg" if you don't see anything ] and should show up in
|
||||
/proc/devices. If not.... some changers use ID ? / LUN 0 for the
|
||||
device and ID ? / LUN 1 for the robot mechanism. But Linux does *not*
|
||||
look for LUN's other than 0 as default, becauce there are to many
|
||||
broken devices. So you can try:
|
||||
|
||||
1) echo "scsi add-single-device 0 0 ID 1" > /proc/scsi/scsi
|
||||
(replace ID with the SCSI-ID of the device)
|
||||
2) boot the kernel with "max_scsi_luns=1" on the command line
|
||||
(append="max_scsi_luns=1" in lilo.conf should do the trick)
|
||||
|
||||
|
||||
Trouble?
|
||||
--------
|
||||
|
||||
If you insmod the driver with "insmod debug=1", it will be verbose and
|
||||
prints a lot of stuff to the syslog. Compiling the kernel with
|
||||
CONFIG_SCSI_CONSTANTS=y improves the quality of the error messages alot
|
||||
because the kernel will translate the error codes into human-readable
|
||||
strings then.
|
||||
|
||||
You can display these messages with the dmesg command (or check the
|
||||
logfiles). If you email me some question becauce of a problem with the
|
||||
driver, please include these messages.
|
||||
|
||||
|
||||
Insmod options
|
||||
--------------
|
||||
|
||||
debug=0/1
|
||||
Enable debug messages (see above, default: 0).
|
||||
|
||||
verbose=0/1
|
||||
Be verbose (default: 1).
|
||||
|
||||
init=0/1
|
||||
Send INITIALIZE ELEMENT STATUS command to the changer
|
||||
at insmod time (default: 1).
|
||||
|
||||
timeout_init=<seconds>
|
||||
timeout for the INITIALIZE ELEMENT STATUS command
|
||||
(default: 3600).
|
||||
|
||||
timeout_move=<seconds>
|
||||
timeout for all other commands (default: 120).
|
||||
|
||||
dt_id=<id1>,<id2>,...
|
||||
dt_lun=<lun1>,<lun2>,...
|
||||
These two allow to specify the SCSI ID and LUN for the data
|
||||
transfer elements. You likely don't need this as the jukebox
|
||||
should provide this information. But some devices don't ...
|
||||
|
||||
vendor_firsts=
|
||||
vendor_counts=
|
||||
vendor_labels=
|
||||
These insmod options can be used to tell the driver that there
|
||||
are some vendor-specific element types. Grundig for example
|
||||
does this. Some jukeboxes have a printer to label fresh burned
|
||||
CDs, which is addressed as element 0xc000 (type 5). To tell the
|
||||
driver about this vendor-specific element, use this:
|
||||
$ insmod ch \
|
||||
vendor_firsts=0xc000 \
|
||||
vendor_counts=1 \
|
||||
vendor_labels=printer
|
||||
All three insmod options accept up to four comma-separated
|
||||
values, this way you can configure the element types 5-8.
|
||||
You likely need the SCSI specs for the device in question to
|
||||
find the correct values as they are not covered by the SCSI-2
|
||||
standard.
|
||||
|
||||
|
||||
Credits
|
||||
-------
|
||||
|
||||
I wrote this driver using the famous mailing-patches-around-the-world
|
||||
method. With (more or less) help from:
|
||||
|
||||
Daniel Moehwald <moehwald@hdg.de>
|
||||
Dane Jasper <dane@sonic.net>
|
||||
R. Scott Bailey <sbailey@dsddi.eds.com>
|
||||
Jonathan Corbet <corbet@lwn.net>
|
||||
|
||||
Special thanks go to
|
||||
Martin Kuehne <martin.kuehne@bnbt.de>
|
||||
for a old, second-hand (but full functional) cdrom jukebox which I use
|
||||
to develop/test driver and tools now.
|
||||
|
||||
Have fun,
|
||||
|
||||
Gerd
|
||||
|
||||
--
|
||||
Gerd Knorr <kraxel@bytesex.org>
|
|
@ -936,8 +936,7 @@ Details:
|
|||
*
|
||||
* Returns SUCCESS if command aborted else FAILED
|
||||
*
|
||||
* Locks: struct Scsi_Host::host_lock held (with irqsave) on entry
|
||||
* and assumed to be held on return.
|
||||
* Locks: None held
|
||||
*
|
||||
* Calling context: kernel thread
|
||||
*
|
||||
|
@ -955,8 +954,7 @@ Details:
|
|||
*
|
||||
* Returns SUCCESS if command aborted else FAILED
|
||||
*
|
||||
* Locks: struct Scsi_Host::host_lock held (with irqsave) on entry
|
||||
* and assumed to be held on return.
|
||||
* Locks: None held
|
||||
*
|
||||
* Calling context: kernel thread
|
||||
*
|
||||
|
@ -974,8 +972,7 @@ Details:
|
|||
*
|
||||
* Returns SUCCESS if command aborted else FAILED
|
||||
*
|
||||
* Locks: struct Scsi_Host::host_lock held (with irqsave) on entry
|
||||
* and assumed to be held on return.
|
||||
* Locks: None held
|
||||
*
|
||||
* Calling context: kernel thread
|
||||
*
|
||||
|
@ -993,8 +990,7 @@ Details:
|
|||
*
|
||||
* Returns SUCCESS if command aborted else FAILED
|
||||
*
|
||||
* Locks: struct Scsi_Host::host_lock held (with irqsave) on entry
|
||||
* and assumed to be held on return.
|
||||
* Locks: None held
|
||||
*
|
||||
* Calling context: kernel thread
|
||||
*
|
||||
|
|
48
MAINTAINERS
48
MAINTAINERS
|
@ -73,7 +73,7 @@ S: Status, one of the following:
|
|||
3C359 NETWORK DRIVER
|
||||
P: Mike Phillips
|
||||
M: mikep@linuxtr.net
|
||||
L: netdev@oss.sgi.com
|
||||
L: netdev@vger.kernel.org
|
||||
L: linux-tr@linuxtr.net
|
||||
W: http://www.linuxtr.net
|
||||
S: Maintained
|
||||
|
@ -81,13 +81,13 @@ S: Maintained
|
|||
3C505 NETWORK DRIVER
|
||||
P: Philip Blundell
|
||||
M: philb@gnu.org
|
||||
L: netdev@oss.sgi.com
|
||||
L: netdev@vger.kernel.org
|
||||
S: Maintained
|
||||
|
||||
3CR990 NETWORK DRIVER
|
||||
P: David Dillow
|
||||
M: dave@thedillows.org
|
||||
L: netdev@oss.sgi.com
|
||||
L: netdev@vger.kernel.org
|
||||
S: Maintained
|
||||
|
||||
3W-XXXX ATA-RAID CONTROLLER DRIVER
|
||||
|
@ -130,7 +130,7 @@ S: Maintained
|
|||
8169 10/100/1000 GIGABIT ETHERNET DRIVER
|
||||
P: Francois Romieu
|
||||
M: romieu@fr.zoreil.com
|
||||
L: netdev@oss.sgi.com
|
||||
L: netdev@vger.kernel.org
|
||||
S: Maintained
|
||||
|
||||
8250/16?50 (AND CLONE UARTS) SERIAL DRIVER
|
||||
|
@ -143,7 +143,7 @@ S: Maintained
|
|||
8390 NETWORK DRIVERS [WD80x3/SMC-ELITE, SMC-ULTRA, NE2000, 3C503, etc.]
|
||||
P: Paul Gortmaker
|
||||
M: p_gortmaker@yahoo.com
|
||||
L: netdev@oss.sgi.com
|
||||
L: netdev@vger.kernel.org
|
||||
S: Maintained
|
||||
|
||||
A2232 SERIAL BOARD DRIVER
|
||||
|
@ -332,7 +332,7 @@ S: Maintained
|
|||
|
||||
ARPD SUPPORT
|
||||
P: Jonathan Layes
|
||||
L: netdev@oss.sgi.com
|
||||
L: netdev@vger.kernel.org
|
||||
S: Maintained
|
||||
|
||||
ASUS ACPI EXTRAS DRIVER
|
||||
|
@ -706,7 +706,7 @@ S: Orphaned
|
|||
|
||||
DIGI RIGHTSWITCH NETWORK DRIVER
|
||||
P: Rick Richardson
|
||||
L: netdev@oss.sgi.com
|
||||
L: netdev@vger.kernel.org
|
||||
W: http://www.digi.com
|
||||
S: Orphaned
|
||||
|
||||
|
@ -812,7 +812,7 @@ S: Maintained
|
|||
ETHEREXPRESS-16 NETWORK DRIVER
|
||||
P: Philip Blundell
|
||||
M: philb@gnu.org
|
||||
L: netdev@oss.sgi.com
|
||||
L: netdev@vger.kernel.org
|
||||
S: Maintained
|
||||
|
||||
ETHERNET BRIDGE
|
||||
|
@ -875,7 +875,7 @@ S: Maintained
|
|||
FRAME RELAY DLCI/FRAD (Sangoma drivers too)
|
||||
P: Mike McLagan
|
||||
M: mike.mclagan@linux.org
|
||||
L: netdev@oss.sgi.com
|
||||
L: netdev@vger.kernel.org
|
||||
S: Maintained
|
||||
|
||||
FREEVXFS FILESYSTEM
|
||||
|
@ -1215,7 +1215,7 @@ S: Maintained
|
|||
IPX NETWORK LAYER
|
||||
P: Arnaldo Carvalho de Melo
|
||||
M: acme@conectiva.com.br
|
||||
L: netdev@oss.sgi.com
|
||||
L: netdev@vger.kernel.org
|
||||
S: Maintained
|
||||
|
||||
IRDA SUBSYSTEM
|
||||
|
@ -1482,7 +1482,7 @@ MARVELL MV64340 ETHERNET DRIVER
|
|||
P: Manish Lachwani
|
||||
M: Manish_Lachwani@pmc-sierra.com
|
||||
L: linux-mips@linux-mips.org
|
||||
L: netdev@oss.sgi.com
|
||||
L: netdev@vger.kernel.org
|
||||
S: Supported
|
||||
|
||||
MATROX FRAMEBUFFER DRIVER
|
||||
|
@ -1592,13 +1592,13 @@ P: Andrew Morton
|
|||
M: akpm@osdl.org
|
||||
P: Jeff Garzik
|
||||
M: jgarzik@pobox.com
|
||||
L: netdev@oss.sgi.com
|
||||
L: netdev@vger.kernel.org
|
||||
S: Maintained
|
||||
|
||||
NETWORKING [GENERAL]
|
||||
P: Networking Team
|
||||
M: netdev@oss.sgi.com
|
||||
L: netdev@oss.sgi.com
|
||||
M: netdev@vger.kernel.org
|
||||
L: netdev@vger.kernel.org
|
||||
S: Maintained
|
||||
|
||||
NETWORKING [IPv4/IPv6]
|
||||
|
@ -1614,7 +1614,7 @@ P: Hideaki YOSHIFUJI
|
|||
M: yoshfuji@linux-ipv6.org
|
||||
P: Patrick McHardy
|
||||
M: kaber@coreworks.de
|
||||
L: netdev@oss.sgi.com
|
||||
L: netdev@vger.kernel.org
|
||||
S: Maintained
|
||||
|
||||
IPVS
|
||||
|
@ -1634,7 +1634,7 @@ NI5010 NETWORK DRIVER
|
|||
P: Jan-Pascal van Best and Andreas Mohr
|
||||
M: Jan-Pascal van Best <jvbest@qv3pluto.leidenuniv.nl>
|
||||
M: Andreas Mohr <100.30936@germany.net>
|
||||
L: netdev@oss.sgi.com
|
||||
L: netdev@vger.kernel.org
|
||||
S: Maintained
|
||||
|
||||
NINJA SCSI-3 / NINJA SCSI-32Bi (16bit/CardBus) PCMCIA SCSI HOST ADAPTER DRIVER
|
||||
|
@ -1676,7 +1676,7 @@ P: Peter De Shrijver
|
|||
M: p2@ace.ulyssis.student.kuleuven.ac.be
|
||||
P: Mike Phillips
|
||||
M: mikep@linuxtr.net
|
||||
L: netdev@oss.sgi.com
|
||||
L: netdev@vger.kernel.org
|
||||
L: linux-tr@linuxtr.net
|
||||
W: http://www.linuxtr.net
|
||||
S: Maintained
|
||||
|
@ -1783,7 +1783,7 @@ S: Unmaintained
|
|||
PCNET32 NETWORK DRIVER
|
||||
P: Thomas Bogendörfer
|
||||
M: tsbogend@alpha.franken.de
|
||||
L: netdev@oss.sgi.com
|
||||
L: netdev@vger.kernel.org
|
||||
S: Maintained
|
||||
|
||||
PHRAM MTD DRIVER
|
||||
|
@ -1795,7 +1795,7 @@ S: Maintained
|
|||
POSIX CLOCKS and TIMERS
|
||||
P: George Anzinger
|
||||
M: george@mvista.com
|
||||
L: netdev@oss.sgi.com
|
||||
L: netdev@vger.kernel.org
|
||||
S: Supported
|
||||
|
||||
PNP SUPPORT
|
||||
|
@ -1830,7 +1830,7 @@ S: Supported
|
|||
PRISM54 WIRELESS DRIVER
|
||||
P: Prism54 Development Team
|
||||
M: prism54-private@prism54.org
|
||||
L: netdev@oss.sgi.com
|
||||
L: netdev@vger.kernel.org
|
||||
W: http://prism54.org
|
||||
S: Maintained
|
||||
|
||||
|
@ -2047,7 +2047,7 @@ SIS 900/7016 FAST ETHERNET DRIVER
|
|||
P: Daniele Venzano
|
||||
M: venza@brownhat.org
|
||||
W: http://www.brownhat.org/sis900.html
|
||||
L: netdev@oss.sgi.com
|
||||
L: netdev@vger.kernel.org
|
||||
S: Maintained
|
||||
|
||||
SIS FRAMEBUFFER DRIVER
|
||||
|
@ -2106,7 +2106,7 @@ S: Maintained
|
|||
SONIC NETWORK DRIVER
|
||||
P: Thomas Bogendoerfer
|
||||
M: tsbogend@alpha.franken.de
|
||||
L: netdev@oss.sgi.com
|
||||
L: netdev@vger.kernel.org
|
||||
S: Maintained
|
||||
|
||||
SONY VAIO CONTROL DEVICE DRIVER
|
||||
|
@ -2163,7 +2163,7 @@ S: Supported
|
|||
SPX NETWORK LAYER
|
||||
P: Jay Schulist
|
||||
M: jschlst@samba.org
|
||||
L: netdev@oss.sgi.com
|
||||
L: netdev@vger.kernel.org
|
||||
S: Supported
|
||||
|
||||
SRM (Alpha) environment access
|
||||
|
@ -2242,7 +2242,7 @@ S: Maintained
|
|||
TOKEN-RING NETWORK DRIVER
|
||||
P: Mike Phillips
|
||||
M: mikep@linuxtr.net
|
||||
L: netdev@oss.sgi.com
|
||||
L: netdev@vger.kernel.org
|
||||
L: linux-tr@linuxtr.net
|
||||
W: http://www.linuxtr.net
|
||||
S: Maintained
|
||||
|
|
2
Makefile
2
Makefile
|
@ -1,7 +1,7 @@
|
|||
VERSION = 2
|
||||
PATCHLEVEL = 6
|
||||
SUBLEVEL = 12
|
||||
EXTRAVERSION =-rc6
|
||||
EXTRAVERSION =
|
||||
NAME=Woozy Numbat
|
||||
|
||||
# *DOCUMENTATION*
|
||||
|
|
|
@ -689,7 +689,9 @@ source "drivers/block/Kconfig"
|
|||
|
||||
source "drivers/acorn/block/Kconfig"
|
||||
|
||||
if ARCH_CLPS7500 || ARCH_IOP3XX || ARCH_IXP4XX || ARCH_L7200 || ARCH_LH7A40X || ARCH_PXA || ARCH_RPC || ARCH_S3C2410 || ARCH_SA1100 || ARCH_SHARK || FOOTBRIDGE
|
||||
if PCMCIA || ARCH_CLPS7500 || ARCH_IOP3XX || ARCH_IXP4XX \
|
||||
|| ARCH_L7200 || ARCH_LH7A40X || ARCH_PXA || ARCH_RPC \
|
||||
|| ARCH_S3C2410 || ARCH_SA1100 || ARCH_SHARK || FOOTBRIDGE
|
||||
source "drivers/ide/Kconfig"
|
||||
endif
|
||||
|
||||
|
|
|
@ -83,7 +83,6 @@ static struct map_desc intcp_io_desc[] __initdata = {
|
|||
{ IO_ADDRESS(INTEGRATOR_UART1_BASE), INTEGRATOR_UART1_BASE, SZ_4K, MT_DEVICE },
|
||||
{ IO_ADDRESS(INTEGRATOR_DBG_BASE), INTEGRATOR_DBG_BASE, SZ_4K, MT_DEVICE },
|
||||
{ IO_ADDRESS(INTEGRATOR_GPIO_BASE), INTEGRATOR_GPIO_BASE, SZ_4K, MT_DEVICE },
|
||||
{ 0xfc900000, 0xc9000000, SZ_4K, MT_DEVICE },
|
||||
{ 0xfca00000, 0xca000000, SZ_4K, MT_DEVICE },
|
||||
{ 0xfcb00000, 0xcb000000, SZ_4K, MT_DEVICE },
|
||||
};
|
||||
|
|
|
@ -15,6 +15,7 @@
|
|||
#include <linux/kernel.h>
|
||||
#include <linux/init.h>
|
||||
#include <linux/device.h>
|
||||
#include <linux/sysdev.h>
|
||||
#include <linux/major.h>
|
||||
#include <linux/fb.h>
|
||||
#include <linux/interrupt.h>
|
||||
|
@ -106,6 +107,35 @@ static void __init lubbock_init_irq(void)
|
|||
set_irq_type(IRQ_GPIO(0), IRQT_FALLING);
|
||||
}
|
||||
|
||||
#ifdef CONFIG_PM
|
||||
|
||||
static int lubbock_irq_resume(struct sys_device *dev)
|
||||
{
|
||||
LUB_IRQ_MASK_EN = lubbock_irq_enabled;
|
||||
return 0;
|
||||
}
|
||||
|
||||
static struct sysdev_class lubbock_irq_sysclass = {
|
||||
set_kset_name("cpld_irq"),
|
||||
.resume = lubbock_irq_resume,
|
||||
};
|
||||
|
||||
static struct sys_device lubbock_irq_device = {
|
||||
.cls = &lubbock_irq_sysclass,
|
||||
};
|
||||
|
||||
static int __init lubbock_irq_device_init(void)
|
||||
{
|
||||
int ret = sysdev_class_register(&lubbock_irq_sysclass);
|
||||
if (ret == 0)
|
||||
ret = sysdev_register(&lubbock_irq_device);
|
||||
return ret;
|
||||
}
|
||||
|
||||
device_initcall(lubbock_irq_device_init);
|
||||
|
||||
#endif
|
||||
|
||||
static int lubbock_udc_is_connected(void)
|
||||
{
|
||||
return (LUB_MISC_RD & (1 << 9)) == 0;
|
||||
|
|
|
@ -15,6 +15,7 @@
|
|||
|
||||
#include <linux/init.h>
|
||||
#include <linux/device.h>
|
||||
#include <linux/sysdev.h>
|
||||
#include <linux/interrupt.h>
|
||||
#include <linux/sched.h>
|
||||
#include <linux/bitops.h>
|
||||
|
@ -62,7 +63,6 @@ static struct irqchip mainstone_irq_chip = {
|
|||
.unmask = mainstone_unmask_irq,
|
||||
};
|
||||
|
||||
|
||||
static void mainstone_irq_handler(unsigned int irq, struct irqdesc *desc,
|
||||
struct pt_regs *regs)
|
||||
{
|
||||
|
@ -100,6 +100,35 @@ static void __init mainstone_init_irq(void)
|
|||
set_irq_type(IRQ_GPIO(0), IRQT_FALLING);
|
||||
}
|
||||
|
||||
#ifdef CONFIG_PM
|
||||
|
||||
static int mainstone_irq_resume(struct sys_device *dev)
|
||||
{
|
||||
MST_INTMSKENA = mainstone_irq_enabled;
|
||||
return 0;
|
||||
}
|
||||
|
||||
static struct sysdev_class mainstone_irq_sysclass = {
|
||||
set_kset_name("cpld_irq"),
|
||||
.resume = mainstone_irq_resume,
|
||||
};
|
||||
|
||||
static struct sys_device mainstone_irq_device = {
|
||||
.cls = &mainstone_irq_sysclass,
|
||||
};
|
||||
|
||||
static int __init mainstone_irq_device_init(void)
|
||||
{
|
||||
int ret = sysdev_class_register(&mainstone_irq_sysclass);
|
||||
if (ret == 0)
|
||||
ret = sysdev_register(&mainstone_irq_device);
|
||||
return ret;
|
||||
}
|
||||
|
||||
device_initcall(mainstone_irq_device_init);
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
static struct resource smc91x_resources[] = {
|
||||
[0] = {
|
||||
|
|
|
@ -16,6 +16,7 @@
|
|||
* initialization stuff for PXA machines which can be overridden later if
|
||||
* need be.
|
||||
*/
|
||||
#include <linux/config.h>
|
||||
#include <linux/module.h>
|
||||
#include <linux/kernel.h>
|
||||
#include <linux/init.h>
|
||||
|
@ -103,6 +104,7 @@ unsigned int get_lcdclk_frequency_10khz(void)
|
|||
|
||||
EXPORT_SYMBOL(get_lcdclk_frequency_10khz);
|
||||
|
||||
#ifdef CONFIG_PM
|
||||
|
||||
int pxa_cpu_pm_prepare(suspend_state_t state)
|
||||
{
|
||||
|
@ -131,3 +133,5 @@ void pxa_cpu_pm_enter(suspend_state_t state)
|
|||
break;
|
||||
}
|
||||
}
|
||||
|
||||
#endif
|
||||
|
|
|
@ -120,6 +120,8 @@ EXPORT_SYMBOL(get_clk_frequency_khz);
|
|||
EXPORT_SYMBOL(get_memclk_frequency_10khz);
|
||||
EXPORT_SYMBOL(get_lcdclk_frequency_10khz);
|
||||
|
||||
#ifdef CONFIG_PM
|
||||
|
||||
int pxa_cpu_pm_prepare(suspend_state_t state)
|
||||
{
|
||||
switch (state) {
|
||||
|
@ -153,6 +155,8 @@ void pxa_cpu_pm_enter(suspend_state_t state)
|
|||
}
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
/*
|
||||
* device registration specific to PXA27x.
|
||||
*/
|
||||
|
|
|
@ -543,7 +543,7 @@ static void versatile_clcd_enable(struct clcd_fb *fb)
|
|||
val |= SYS_CLCD_MODE_5551;
|
||||
break;
|
||||
case 6:
|
||||
val |= SYS_CLCD_MODE_565_BLSB;
|
||||
val |= SYS_CLCD_MODE_565_RLSB;
|
||||
break;
|
||||
case 8:
|
||||
val |= SYS_CLCD_MODE_888;
|
||||
|
|
|
@ -1222,6 +1222,7 @@ static int suspend(int vetoable)
|
|||
|
||||
save_processor_state();
|
||||
err = set_system_power_state(APM_STATE_SUSPEND);
|
||||
ignore_normal_resume = 1;
|
||||
restore_processor_state();
|
||||
|
||||
local_irq_disable();
|
||||
|
@ -1229,7 +1230,6 @@ static int suspend(int vetoable)
|
|||
spin_lock(&i8253_lock);
|
||||
reinit_timer();
|
||||
set_time();
|
||||
ignore_normal_resume = 1;
|
||||
|
||||
spin_unlock(&i8253_lock);
|
||||
write_sequnlock(&xtime_lock);
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
#
|
||||
# Automatically generated make config: don't edit
|
||||
# Linux kernel version: 2.6.12-rc2-m68k
|
||||
# Tue Apr 5 14:05:59 2005
|
||||
# Linux kernel version: 2.6.12-rc6-m68k
|
||||
# Tue Jun 7 20:34:23 2005
|
||||
#
|
||||
CONFIG_M68K=y
|
||||
CONFIG_MMU=y
|
||||
|
@ -35,6 +35,8 @@ CONFIG_KOBJECT_UEVENT=y
|
|||
CONFIG_KALLSYMS=y
|
||||
# CONFIG_KALLSYMS_ALL is not set
|
||||
# CONFIG_KALLSYMS_EXTRA_PASS is not set
|
||||
CONFIG_PRINTK=y
|
||||
CONFIG_BUG=y
|
||||
CONFIG_BASE_FULL=y
|
||||
CONFIG_FUTEX=y
|
||||
CONFIG_EPOLL=y
|
||||
|
@ -135,7 +137,6 @@ CONFIG_PARPORT_1284=y
|
|||
#
|
||||
CONFIG_AMIGA_FLOPPY=y
|
||||
CONFIG_AMIGA_Z2RAM=y
|
||||
# CONFIG_BLK_DEV_XD is not set
|
||||
# CONFIG_PARIDE is not set
|
||||
# CONFIG_BLK_DEV_COW_COMMON is not set
|
||||
CONFIG_BLK_DEV_LOOP=y
|
||||
|
@ -223,17 +224,12 @@ CONFIG_SCSI_CONSTANTS=y
|
|||
#
|
||||
# SCSI low-level drivers
|
||||
#
|
||||
# CONFIG_SCSI_7000FASST is not set
|
||||
# CONFIG_SCSI_AHA152X is not set
|
||||
# CONFIG_SCSI_AHA1542 is not set
|
||||
# CONFIG_SCSI_AIC7XXX_OLD is not set
|
||||
# CONFIG_SCSI_IN2000 is not set
|
||||
# CONFIG_SCSI_SATA is not set
|
||||
# CONFIG_SCSI_BUSLOGIC is not set
|
||||
# CONFIG_SCSI_DTC3280 is not set
|
||||
# CONFIG_SCSI_EATA is not set
|
||||
# CONFIG_SCSI_FUTURE_DOMAIN is not set
|
||||
# CONFIG_SCSI_GDTH is not set
|
||||
# CONFIG_SCSI_GENERIC_NCR5380 is not set
|
||||
# CONFIG_SCSI_GENERIC_NCR5380_MMIO is not set
|
||||
# CONFIG_SCSI_PPA is not set
|
||||
|
@ -244,7 +240,6 @@ CONFIG_SCSI_CONSTANTS=y
|
|||
# CONFIG_SCSI_QLOGIC_FAS is not set
|
||||
# CONFIG_SCSI_SYM53C416 is not set
|
||||
# CONFIG_SCSI_T128 is not set
|
||||
# CONFIG_SCSI_U14_34F is not set
|
||||
# CONFIG_SCSI_DEBUG is not set
|
||||
CONFIG_A3000_SCSI=y
|
||||
CONFIG_A2091_SCSI=y
|
||||
|
@ -492,7 +487,6 @@ CONFIG_HYDRA=m
|
|||
CONFIG_ZORRO8390=m
|
||||
CONFIG_APNE=m
|
||||
# CONFIG_NET_VENDOR_3COM is not set
|
||||
# CONFIG_LANCE is not set
|
||||
# CONFIG_NET_VENDOR_SMC is not set
|
||||
# CONFIG_NET_VENDOR_RACAL is not set
|
||||
# CONFIG_AT1700 is not set
|
||||
|
@ -620,7 +614,6 @@ CONFIG_SERIO_SERPORT=m
|
|||
# CONFIG_SERIO_PARKBD is not set
|
||||
# CONFIG_SERIO_RAW is not set
|
||||
# CONFIG_GAMEPORT is not set
|
||||
CONFIG_SOUND_GAMEPORT=y
|
||||
|
||||
#
|
||||
# Character devices
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
#
|
||||
# Automatically generated make config: don't edit
|
||||
# Linux kernel version: 2.6.12-rc2-m68k
|
||||
# Tue Apr 5 14:06:00 2005
|
||||
# Linux kernel version: 2.6.12-rc6-m68k
|
||||
# Tue Jun 7 20:34:27 2005
|
||||
#
|
||||
CONFIG_M68K=y
|
||||
CONFIG_MMU=y
|
||||
|
@ -35,6 +35,8 @@ CONFIG_KOBJECT_UEVENT=y
|
|||
CONFIG_KALLSYMS=y
|
||||
# CONFIG_KALLSYMS_ALL is not set
|
||||
# CONFIG_KALLSYMS_EXTRA_PASS is not set
|
||||
CONFIG_PRINTK=y
|
||||
CONFIG_BUG=y
|
||||
CONFIG_BASE_FULL=y
|
||||
CONFIG_FUTEX=y
|
||||
CONFIG_EPOLL=y
|
||||
|
@ -497,7 +499,6 @@ CONFIG_SERIO_SERPORT=m
|
|||
CONFIG_SERIO_LIBPS2=m
|
||||
# CONFIG_SERIO_RAW is not set
|
||||
# CONFIG_GAMEPORT is not set
|
||||
CONFIG_SOUND_GAMEPORT=y
|
||||
|
||||
#
|
||||
# Character devices
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
#
|
||||
# Automatically generated make config: don't edit
|
||||
# Linux kernel version: 2.6.12-rc2-m68k
|
||||
# Tue Apr 5 14:06:18 2005
|
||||
# Linux kernel version: 2.6.12-rc6-m68k
|
||||
# Tue Jun 7 20:34:32 2005
|
||||
#
|
||||
CONFIG_M68K=y
|
||||
CONFIG_MMU=y
|
||||
|
@ -35,6 +35,8 @@ CONFIG_KOBJECT_UEVENT=y
|
|||
CONFIG_KALLSYMS=y
|
||||
# CONFIG_KALLSYMS_ALL is not set
|
||||
# CONFIG_KALLSYMS_EXTRA_PASS is not set
|
||||
CONFIG_PRINTK=y
|
||||
CONFIG_BUG=y
|
||||
CONFIG_BASE_FULL=y
|
||||
CONFIG_FUTEX=y
|
||||
CONFIG_EPOLL=y
|
||||
|
@ -531,7 +533,6 @@ CONFIG_SERIO_SERPORT=y
|
|||
CONFIG_SERIO_LIBPS2=y
|
||||
# CONFIG_SERIO_RAW is not set
|
||||
# CONFIG_GAMEPORT is not set
|
||||
CONFIG_SOUND_GAMEPORT=y
|
||||
|
||||
#
|
||||
# Character devices
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
#
|
||||
# Automatically generated make config: don't edit
|
||||
# Linux kernel version: 2.6.12-rc2-m68k
|
||||
# Tue Apr 5 14:06:19 2005
|
||||
# Linux kernel version: 2.6.12-rc6-m68k
|
||||
# Tue Jun 7 20:34:37 2005
|
||||
#
|
||||
CONFIG_M68K=y
|
||||
CONFIG_MMU=y
|
||||
|
@ -35,6 +35,8 @@ CONFIG_KOBJECT_UEVENT=y
|
|||
CONFIG_KALLSYMS=y
|
||||
# CONFIG_KALLSYMS_ALL is not set
|
||||
# CONFIG_KALLSYMS_EXTRA_PASS is not set
|
||||
CONFIG_PRINTK=y
|
||||
CONFIG_BUG=y
|
||||
CONFIG_BASE_FULL=y
|
||||
CONFIG_FUTEX=y
|
||||
CONFIG_EPOLL=y
|
||||
|
@ -496,7 +498,6 @@ CONFIG_SERIO_SERPORT=m
|
|||
CONFIG_SERIO_LIBPS2=m
|
||||
# CONFIG_SERIO_RAW is not set
|
||||
# CONFIG_GAMEPORT is not set
|
||||
CONFIG_SOUND_GAMEPORT=y
|
||||
|
||||
#
|
||||
# Character devices
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
#
|
||||
# Automatically generated make config: don't edit
|
||||
# Linux kernel version: 2.6.12-rc2-m68k
|
||||
# Tue Apr 5 14:06:21 2005
|
||||
# Linux kernel version: 2.6.12-rc6-m68k
|
||||
# Tue Jun 7 20:34:41 2005
|
||||
#
|
||||
CONFIG_M68K=y
|
||||
CONFIG_MMU=y
|
||||
|
@ -35,6 +35,8 @@ CONFIG_KOBJECT_UEVENT=y
|
|||
CONFIG_KALLSYMS=y
|
||||
# CONFIG_KALLSYMS_ALL is not set
|
||||
# CONFIG_KALLSYMS_EXTRA_PASS is not set
|
||||
CONFIG_PRINTK=y
|
||||
CONFIG_BUG=y
|
||||
CONFIG_BASE_FULL=y
|
||||
CONFIG_FUTEX=y
|
||||
CONFIG_EPOLL=y
|
||||
|
@ -498,7 +500,6 @@ CONFIG_SERIO_SERPORT=m
|
|||
CONFIG_SERIO_LIBPS2=m
|
||||
# CONFIG_SERIO_RAW is not set
|
||||
# CONFIG_GAMEPORT is not set
|
||||
CONFIG_SOUND_GAMEPORT=y
|
||||
|
||||
#
|
||||
# Character devices
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
#
|
||||
# Automatically generated make config: don't edit
|
||||
# Linux kernel version: 2.6.12-rc2-m68k
|
||||
# Tue Apr 5 14:06:24 2005
|
||||
# Linux kernel version: 2.6.12-rc6-m68k
|
||||
# Tue Jun 7 20:34:45 2005
|
||||
#
|
||||
CONFIG_M68K=y
|
||||
CONFIG_MMU=y
|
||||
|
@ -35,6 +35,8 @@ CONFIG_KOBJECT_UEVENT=y
|
|||
CONFIG_KALLSYMS=y
|
||||
# CONFIG_KALLSYMS_ALL is not set
|
||||
# CONFIG_KALLSYMS_EXTRA_PASS is not set
|
||||
CONFIG_PRINTK=y
|
||||
CONFIG_BUG=y
|
||||
CONFIG_BASE_FULL=y
|
||||
CONFIG_FUTEX=y
|
||||
CONFIG_EPOLL=y
|
||||
|
@ -540,7 +542,6 @@ CONFIG_SERIO_SERPORT=m
|
|||
CONFIG_SERIO_LIBPS2=m
|
||||
# CONFIG_SERIO_RAW is not set
|
||||
# CONFIG_GAMEPORT is not set
|
||||
CONFIG_SOUND_GAMEPORT=y
|
||||
|
||||
#
|
||||
# Character devices
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
#
|
||||
# Automatically generated make config: don't edit
|
||||
# Linux kernel version: 2.6.12-rc2-m68k
|
||||
# Tue Apr 5 14:06:28 2005
|
||||
# Linux kernel version: 2.6.12-rc6-m68k
|
||||
# Tue Jun 7 20:34:50 2005
|
||||
#
|
||||
CONFIG_M68K=y
|
||||
CONFIG_MMU=y
|
||||
|
@ -35,6 +35,8 @@ CONFIG_KOBJECT_UEVENT=y
|
|||
CONFIG_KALLSYMS=y
|
||||
# CONFIG_KALLSYMS_ALL is not set
|
||||
# CONFIG_KALLSYMS_EXTRA_PASS is not set
|
||||
CONFIG_PRINTK=y
|
||||
CONFIG_BUG=y
|
||||
CONFIG_BASE_FULL=y
|
||||
CONFIG_FUTEX=y
|
||||
CONFIG_EPOLL=y
|
||||
|
@ -498,7 +500,6 @@ CONFIG_SERIO_SERPORT=m
|
|||
CONFIG_SERIO_LIBPS2=m
|
||||
# CONFIG_SERIO_RAW is not set
|
||||
# CONFIG_GAMEPORT is not set
|
||||
CONFIG_SOUND_GAMEPORT=y
|
||||
|
||||
#
|
||||
# Character devices
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
#
|
||||
# Automatically generated make config: don't edit
|
||||
# Linux kernel version: 2.6.12-rc2-m68k
|
||||
# Tue Apr 5 14:06:31 2005
|
||||
# Linux kernel version: 2.6.12-rc6-m68k
|
||||
# Tue Jun 7 20:34:53 2005
|
||||
#
|
||||
CONFIG_M68K=y
|
||||
CONFIG_MMU=y
|
||||
|
@ -35,6 +35,8 @@ CONFIG_KOBJECT_UEVENT=y
|
|||
CONFIG_KALLSYMS=y
|
||||
# CONFIG_KALLSYMS_ALL is not set
|
||||
# CONFIG_KALLSYMS_EXTRA_PASS is not set
|
||||
CONFIG_PRINTK=y
|
||||
CONFIG_BUG=y
|
||||
CONFIG_BASE_FULL=y
|
||||
CONFIG_FUTEX=y
|
||||
CONFIG_EPOLL=y
|
||||
|
@ -497,7 +499,6 @@ CONFIG_SERIO_SERPORT=m
|
|||
CONFIG_SERIO_LIBPS2=m
|
||||
# CONFIG_SERIO_RAW is not set
|
||||
# CONFIG_GAMEPORT is not set
|
||||
CONFIG_SOUND_GAMEPORT=y
|
||||
|
||||
#
|
||||
# Character devices
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
#
|
||||
# Automatically generated make config: don't edit
|
||||
# Linux kernel version: 2.6.12-rc2-m68k
|
||||
# Tue Apr 5 14:06:34 2005
|
||||
# Linux kernel version: 2.6.12-rc6-m68k
|
||||
# Tue Jun 7 20:34:58 2005
|
||||
#
|
||||
CONFIG_M68K=y
|
||||
CONFIG_MMU=y
|
||||
|
@ -35,6 +35,8 @@ CONFIG_KOBJECT_UEVENT=y
|
|||
CONFIG_KALLSYMS=y
|
||||
# CONFIG_KALLSYMS_ALL is not set
|
||||
# CONFIG_KALLSYMS_EXTRA_PASS is not set
|
||||
CONFIG_PRINTK=y
|
||||
CONFIG_BUG=y
|
||||
CONFIG_BASE_FULL=y
|
||||
CONFIG_FUTEX=y
|
||||
CONFIG_EPOLL=y
|
||||
|
@ -125,7 +127,6 @@ CONFIG_FW_LOADER=m
|
|||
# Block devices
|
||||
#
|
||||
# CONFIG_BLK_DEV_FD is not set
|
||||
# CONFIG_BLK_DEV_XD is not set
|
||||
# CONFIG_BLK_DEV_COW_COMMON is not set
|
||||
CONFIG_BLK_DEV_LOOP=y
|
||||
CONFIG_BLK_DEV_CRYPTOLOOP=m
|
||||
|
@ -210,17 +211,12 @@ CONFIG_SCSI_CONSTANTS=y
|
|||
#
|
||||
# SCSI low-level drivers
|
||||
#
|
||||
# CONFIG_SCSI_7000FASST is not set
|
||||
# CONFIG_SCSI_AHA152X is not set
|
||||
# CONFIG_SCSI_AHA1542 is not set
|
||||
# CONFIG_SCSI_AIC7XXX_OLD is not set
|
||||
# CONFIG_SCSI_IN2000 is not set
|
||||
# CONFIG_SCSI_SATA is not set
|
||||
# CONFIG_SCSI_BUSLOGIC is not set
|
||||
# CONFIG_SCSI_DTC3280 is not set
|
||||
# CONFIG_SCSI_EATA is not set
|
||||
# CONFIG_SCSI_FUTURE_DOMAIN is not set
|
||||
# CONFIG_SCSI_GDTH is not set
|
||||
# CONFIG_SCSI_GENERIC_NCR5380 is not set
|
||||
# CONFIG_SCSI_GENERIC_NCR5380_MMIO is not set
|
||||
# CONFIG_SCSI_NCR53C406A is not set
|
||||
|
@ -229,7 +225,6 @@ CONFIG_SCSI_CONSTANTS=y
|
|||
# CONFIG_SCSI_QLOGIC_FAS is not set
|
||||
# CONFIG_SCSI_SYM53C416 is not set
|
||||
# CONFIG_SCSI_T128 is not set
|
||||
# CONFIG_SCSI_U14_34F is not set
|
||||
# CONFIG_SCSI_DEBUG is not set
|
||||
|
||||
#
|
||||
|
@ -466,7 +461,6 @@ CONFIG_EQUALIZER=m
|
|||
CONFIG_NET_ETHERNET=y
|
||||
CONFIG_MII=m
|
||||
# CONFIG_NET_VENDOR_3COM is not set
|
||||
# CONFIG_LANCE is not set
|
||||
# CONFIG_NET_VENDOR_SMC is not set
|
||||
# CONFIG_NET_VENDOR_RACAL is not set
|
||||
# CONFIG_AT1700 is not set
|
||||
|
@ -570,7 +564,6 @@ CONFIG_SERIO_Q40KBD=m
|
|||
CONFIG_SERIO_LIBPS2=m
|
||||
# CONFIG_SERIO_RAW is not set
|
||||
# CONFIG_GAMEPORT is not set
|
||||
CONFIG_SOUND_GAMEPORT=y
|
||||
|
||||
#
|
||||
# Character devices
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
#
|
||||
# Automatically generated make config: don't edit
|
||||
# Linux kernel version: 2.6.12-rc2-m68k
|
||||
# Tue Apr 5 14:06:37 2005
|
||||
# Linux kernel version: 2.6.12-rc6-m68k
|
||||
# Tue Jun 7 20:35:02 2005
|
||||
#
|
||||
CONFIG_M68K=y
|
||||
CONFIG_MMU=y
|
||||
|
@ -35,6 +35,8 @@ CONFIG_KOBJECT_UEVENT=y
|
|||
CONFIG_KALLSYMS=y
|
||||
# CONFIG_KALLSYMS_ALL is not set
|
||||
# CONFIG_KALLSYMS_EXTRA_PASS is not set
|
||||
CONFIG_PRINTK=y
|
||||
CONFIG_BUG=y
|
||||
CONFIG_BASE_FULL=y
|
||||
CONFIG_FUTEX=y
|
||||
CONFIG_EPOLL=y
|
||||
|
@ -171,7 +173,6 @@ CONFIG_SCSI_CONSTANTS=y
|
|||
#
|
||||
# CONFIG_SCSI_SATA is not set
|
||||
# CONFIG_SCSI_DEBUG is not set
|
||||
CONFIG_SUN3_SCSI=y
|
||||
|
||||
#
|
||||
# Multi-device support (RAID and LVM)
|
||||
|
@ -487,7 +488,6 @@ CONFIG_SERIO_SERPORT=m
|
|||
CONFIG_SERIO_LIBPS2=m
|
||||
# CONFIG_SERIO_RAW is not set
|
||||
# CONFIG_GAMEPORT is not set
|
||||
CONFIG_SOUND_GAMEPORT=y
|
||||
|
||||
#
|
||||
# Character devices
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
#
|
||||
# Automatically generated make config: don't edit
|
||||
# Linux kernel version: 2.6.12-rc2-m68k
|
||||
# Tue Apr 5 14:06:40 2005
|
||||
# Linux kernel version: 2.6.12-rc6-m68k
|
||||
# Tue Jun 7 20:35:06 2005
|
||||
#
|
||||
CONFIG_M68K=y
|
||||
CONFIG_MMU=y
|
||||
|
@ -35,6 +35,8 @@ CONFIG_KOBJECT_UEVENT=y
|
|||
CONFIG_KALLSYMS=y
|
||||
# CONFIG_KALLSYMS_ALL is not set
|
||||
# CONFIG_KALLSYMS_EXTRA_PASS is not set
|
||||
CONFIG_PRINTK=y
|
||||
CONFIG_BUG=y
|
||||
CONFIG_BASE_FULL=y
|
||||
CONFIG_FUTEX=y
|
||||
CONFIG_EPOLL=y
|
||||
|
@ -497,7 +499,6 @@ CONFIG_SERIO_SERPORT=m
|
|||
CONFIG_SERIO_LIBPS2=m
|
||||
# CONFIG_SERIO_RAW is not set
|
||||
# CONFIG_GAMEPORT is not set
|
||||
CONFIG_SOUND_GAMEPORT=y
|
||||
|
||||
#
|
||||
# Character devices
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
#
|
||||
# Automatically generated make config: don't edit
|
||||
# Linux kernel version: 2.6.12-rc2-m68k
|
||||
# Tue Apr 5 14:05:31 2005
|
||||
# Linux kernel version: 2.6.12-rc6-m68k
|
||||
# Tue Jun 7 20:34:17 2005
|
||||
#
|
||||
CONFIG_M68K=y
|
||||
CONFIG_MMU=y
|
||||
|
@ -33,6 +33,8 @@ CONFIG_KOBJECT_UEVENT=y
|
|||
# CONFIG_EMBEDDED is not set
|
||||
CONFIG_KALLSYMS=y
|
||||
# CONFIG_KALLSYMS_EXTRA_PASS is not set
|
||||
CONFIG_PRINTK=y
|
||||
CONFIG_BUG=y
|
||||
CONFIG_BASE_FULL=y
|
||||
CONFIG_FUTEX=y
|
||||
CONFIG_EPOLL=y
|
||||
|
@ -355,7 +357,6 @@ CONFIG_SERIO_SERPORT=y
|
|||
CONFIG_SERIO_LIBPS2=y
|
||||
# CONFIG_SERIO_RAW is not set
|
||||
# CONFIG_GAMEPORT is not set
|
||||
CONFIG_SOUND_GAMEPORT=y
|
||||
|
||||
#
|
||||
# Character devices
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
#
|
||||
# Automatically generated make config: don't edit
|
||||
# Linux kernel version: 2.6.11
|
||||
# Thu Mar 10 16:47:04 2005
|
||||
# Linux kernel version: 2.6.12-rc6
|
||||
# Tue Jun 14 16:59:20 2005
|
||||
#
|
||||
CONFIG_64BIT=y
|
||||
CONFIG_MMU=y
|
||||
|
@ -11,7 +11,7 @@ CONFIG_GENERIC_ISA_DMA=y
|
|||
CONFIG_HAVE_DEC_LOCK=y
|
||||
CONFIG_EARLY_PRINTK=y
|
||||
CONFIG_COMPAT=y
|
||||
CONFIG_FRAME_POINTER=y
|
||||
CONFIG_SCHED_NO_NO_OMIT_FRAME_POINTER=y
|
||||
CONFIG_FORCE_MAX_ZONEORDER=13
|
||||
|
||||
#
|
||||
|
@ -20,6 +20,7 @@ CONFIG_FORCE_MAX_ZONEORDER=13
|
|||
CONFIG_EXPERIMENTAL=y
|
||||
CONFIG_CLEAN_COMPILE=y
|
||||
CONFIG_LOCK_KERNEL=y
|
||||
CONFIG_INIT_ENV_ARG_LIMIT=32
|
||||
|
||||
#
|
||||
# General setup
|
||||
|
@ -31,19 +32,20 @@ CONFIG_POSIX_MQUEUE=y
|
|||
# CONFIG_BSD_PROCESS_ACCT is not set
|
||||
CONFIG_SYSCTL=y
|
||||
# CONFIG_AUDIT is not set
|
||||
CONFIG_LOG_BUF_SHIFT=17
|
||||
CONFIG_HOTPLUG=y
|
||||
CONFIG_KOBJECT_UEVENT=y
|
||||
CONFIG_IKCONFIG=y
|
||||
CONFIG_IKCONFIG_PROC=y
|
||||
# CONFIG_CPUSETS is not set
|
||||
# CONFIG_EMBEDDED is not set
|
||||
CONFIG_KALLSYMS=y
|
||||
# CONFIG_KALLSYMS_ALL is not set
|
||||
# CONFIG_KALLSYMS_EXTRA_PASS is not set
|
||||
CONFIG_PRINTK=y
|
||||
CONFIG_BUG=y
|
||||
CONFIG_BASE_FULL=y
|
||||
CONFIG_FUTEX=y
|
||||
CONFIG_EPOLL=y
|
||||
# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
|
||||
CONFIG_SHMEM=y
|
||||
CONFIG_CC_ALIGN_FUNCTIONS=0
|
||||
CONFIG_CC_ALIGN_LABELS=0
|
||||
|
@ -87,6 +89,8 @@ CONFIG_NR_CPUS=2
|
|||
# CONFIG_SCHED_SMT is not set
|
||||
# CONFIG_PREEMPT is not set
|
||||
CONFIG_GENERIC_HARDIRQS=y
|
||||
CONFIG_SECCOMP=y
|
||||
CONFIG_ISA_DMA_API=y
|
||||
|
||||
#
|
||||
# General setup
|
||||
|
@ -97,6 +101,7 @@ CONFIG_BINFMT_ELF=y
|
|||
# CONFIG_BINFMT_MISC is not set
|
||||
CONFIG_PCI_LEGACY_PROC=y
|
||||
CONFIG_PCI_NAMES=y
|
||||
# CONFIG_PCI_DEBUG is not set
|
||||
# CONFIG_HOTPLUG_CPU is not set
|
||||
|
||||
#
|
||||
|
@ -104,10 +109,6 @@ CONFIG_PCI_NAMES=y
|
|||
#
|
||||
# CONFIG_PCCARD is not set
|
||||
|
||||
#
|
||||
# PC-card bridges
|
||||
#
|
||||
|
||||
#
|
||||
# PCI Hotplug Support
|
||||
#
|
||||
|
@ -293,7 +294,6 @@ CONFIG_SCSI_SATA_SVW=y
|
|||
# CONFIG_SCSI_BUSLOGIC is not set
|
||||
# CONFIG_SCSI_DMX3191D is not set
|
||||
# CONFIG_SCSI_EATA is not set
|
||||
# CONFIG_SCSI_EATA_PIO is not set
|
||||
# CONFIG_SCSI_FUTURE_DOMAIN is not set
|
||||
# CONFIG_SCSI_GDTH is not set
|
||||
# CONFIG_SCSI_IPS is not set
|
||||
|
@ -301,7 +301,6 @@ CONFIG_SCSI_SATA_SVW=y
|
|||
# CONFIG_SCSI_INIA100 is not set
|
||||
# CONFIG_SCSI_SYM53C8XX_2 is not set
|
||||
# CONFIG_SCSI_IPR is not set
|
||||
# CONFIG_SCSI_QLOGIC_ISP is not set
|
||||
# CONFIG_SCSI_QLOGIC_FC is not set
|
||||
# CONFIG_SCSI_QLOGIC_1280 is not set
|
||||
CONFIG_SCSI_QLA2XXX=y
|
||||
|
@ -310,6 +309,7 @@ CONFIG_SCSI_QLA2XXX=y
|
|||
# CONFIG_SCSI_QLA2300 is not set
|
||||
# CONFIG_SCSI_QLA2322 is not set
|
||||
# CONFIG_SCSI_QLA6312 is not set
|
||||
# CONFIG_SCSI_LPFC is not set
|
||||
# CONFIG_SCSI_DC395x is not set
|
||||
# CONFIG_SCSI_DC390T is not set
|
||||
# CONFIG_SCSI_DEBUG is not set
|
||||
|
@ -332,6 +332,7 @@ CONFIG_DM_CRYPT=m
|
|||
CONFIG_DM_SNAPSHOT=m
|
||||
CONFIG_DM_MIRROR=m
|
||||
CONFIG_DM_ZERO=m
|
||||
# CONFIG_DM_MULTIPATH is not set
|
||||
|
||||
#
|
||||
# Fusion MPT device support
|
||||
|
@ -394,7 +395,6 @@ CONFIG_NET=y
|
|||
#
|
||||
CONFIG_PACKET=y
|
||||
# CONFIG_PACKET_MMAP is not set
|
||||
# CONFIG_NETLINK_DEV is not set
|
||||
CONFIG_UNIX=y
|
||||
CONFIG_NET_KEY=m
|
||||
CONFIG_INET=y
|
||||
|
@ -564,6 +564,8 @@ CONFIG_E1000=y
|
|||
# CONFIG_R8169 is not set
|
||||
# CONFIG_SK98LIN is not set
|
||||
CONFIG_TIGON3=m
|
||||
# CONFIG_BNX2 is not set
|
||||
# CONFIG_MV643XX_ETH is not set
|
||||
|
||||
#
|
||||
# Ethernet (10000 Mbit)
|
||||
|
@ -630,18 +632,6 @@ CONFIG_INPUT_JOYDEV=m
|
|||
CONFIG_INPUT_EVDEV=y
|
||||
# CONFIG_INPUT_EVBUG is not set
|
||||
|
||||
#
|
||||
# Input I/O drivers
|
||||
#
|
||||
# CONFIG_GAMEPORT is not set
|
||||
CONFIG_SOUND_GAMEPORT=y
|
||||
CONFIG_SERIO=y
|
||||
# CONFIG_SERIO_I8042 is not set
|
||||
# CONFIG_SERIO_SERPORT is not set
|
||||
# CONFIG_SERIO_CT82C710 is not set
|
||||
# CONFIG_SERIO_PCIPS2 is not set
|
||||
# CONFIG_SERIO_RAW is not set
|
||||
|
||||
#
|
||||
# Input Device Drivers
|
||||
#
|
||||
|
@ -659,6 +649,16 @@ CONFIG_INPUT_MOUSE=y
|
|||
# CONFIG_INPUT_TOUCHSCREEN is not set
|
||||
# CONFIG_INPUT_MISC is not set
|
||||
|
||||
#
|
||||
# Hardware I/O ports
|
||||
#
|
||||
CONFIG_SERIO=y
|
||||
# CONFIG_SERIO_I8042 is not set
|
||||
# CONFIG_SERIO_SERPORT is not set
|
||||
# CONFIG_SERIO_PCIPS2 is not set
|
||||
# CONFIG_SERIO_RAW is not set
|
||||
# CONFIG_GAMEPORT is not set
|
||||
|
||||
#
|
||||
# Character devices
|
||||
#
|
||||
|
@ -676,6 +676,7 @@ CONFIG_HW_CONSOLE=y
|
|||
# Non-8250 serial port support
|
||||
#
|
||||
# CONFIG_SERIAL_PMACZILOG is not set
|
||||
# CONFIG_SERIAL_JSM is not set
|
||||
CONFIG_UNIX98_PTYS=y
|
||||
CONFIG_LEGACY_PTYS=y
|
||||
CONFIG_LEGACY_PTY_COUNT=256
|
||||
|
@ -698,9 +699,12 @@ CONFIG_LEGACY_PTY_COUNT=256
|
|||
#
|
||||
# Ftape, the floppy tape device driver
|
||||
#
|
||||
CONFIG_AGP=m
|
||||
CONFIG_AGP_UNINORTH=m
|
||||
# CONFIG_DRM is not set
|
||||
CONFIG_RAW_DRIVER=y
|
||||
CONFIG_MAX_RAW_DEVS=256
|
||||
# CONFIG_HANGCHECK_TIMER is not set
|
||||
|
||||
#
|
||||
# TPM devices
|
||||
|
@ -730,12 +734,11 @@ CONFIG_I2C_ALGOBIT=y
|
|||
# CONFIG_I2C_AMD8111 is not set
|
||||
# CONFIG_I2C_I801 is not set
|
||||
# CONFIG_I2C_I810 is not set
|
||||
# CONFIG_I2C_PIIX4 is not set
|
||||
# CONFIG_I2C_ISA is not set
|
||||
CONFIG_I2C_KEYWEST=y
|
||||
# CONFIG_I2C_MPC is not set
|
||||
# CONFIG_I2C_NFORCE2 is not set
|
||||
# CONFIG_I2C_PARPORT_LIGHT is not set
|
||||
# CONFIG_I2C_PIIX4 is not set
|
||||
# CONFIG_I2C_PROSAVAGE is not set
|
||||
# CONFIG_I2C_SAVAGE4 is not set
|
||||
# CONFIG_SCx200_ACB is not set
|
||||
|
@ -772,6 +775,7 @@ CONFIG_I2C_KEYWEST=y
|
|||
# CONFIG_SENSORS_LM85 is not set
|
||||
# CONFIG_SENSORS_LM87 is not set
|
||||
# CONFIG_SENSORS_LM90 is not set
|
||||
# CONFIG_SENSORS_LM92 is not set
|
||||
# CONFIG_SENSORS_MAX1619 is not set
|
||||
# CONFIG_SENSORS_PC87360 is not set
|
||||
# CONFIG_SENSORS_SMSC47B397 is not set
|
||||
|
@ -785,6 +789,7 @@ CONFIG_I2C_KEYWEST=y
|
|||
#
|
||||
# Other I2C Chip support
|
||||
#
|
||||
# CONFIG_SENSORS_DS1337 is not set
|
||||
# CONFIG_SENSORS_EEPROM is not set
|
||||
# CONFIG_SENSORS_PCF8574 is not set
|
||||
# CONFIG_SENSORS_PCF8591 is not set
|
||||
|
@ -817,6 +822,11 @@ CONFIG_I2C_KEYWEST=y
|
|||
# Graphics support
|
||||
#
|
||||
CONFIG_FB=y
|
||||
CONFIG_FB_CFB_FILLRECT=y
|
||||
CONFIG_FB_CFB_COPYAREA=y
|
||||
CONFIG_FB_CFB_IMAGEBLIT=y
|
||||
CONFIG_FB_SOFT_CURSOR=y
|
||||
CONFIG_FB_MACMODES=y
|
||||
CONFIG_FB_MODE_HELPERS=y
|
||||
CONFIG_FB_TILEBLITTING=y
|
||||
# CONFIG_FB_CIRRUS is not set
|
||||
|
@ -830,6 +840,7 @@ CONFIG_FB_OF=y
|
|||
# CONFIG_FB_ASILIANT is not set
|
||||
# CONFIG_FB_IMSTT is not set
|
||||
# CONFIG_FB_VGA16 is not set
|
||||
# CONFIG_FB_NVIDIA is not set
|
||||
CONFIG_FB_RIVA=y
|
||||
# CONFIG_FB_RIVA_I2C is not set
|
||||
# CONFIG_FB_RIVA_DEBUG is not set
|
||||
|
@ -847,6 +858,7 @@ CONFIG_FB_RADEON_I2C=y
|
|||
# CONFIG_FB_3DFX is not set
|
||||
# CONFIG_FB_VOODOO1 is not set
|
||||
# CONFIG_FB_TRIDENT is not set
|
||||
# CONFIG_FB_S1D13XXX is not set
|
||||
# CONFIG_FB_VIRTUAL is not set
|
||||
|
||||
#
|
||||
|
@ -880,6 +892,8 @@ CONFIG_LCD_DEVICE=y
|
|||
#
|
||||
# USB support
|
||||
#
|
||||
CONFIG_USB_ARCH_HAS_HCD=y
|
||||
CONFIG_USB_ARCH_HAS_OHCI=y
|
||||
CONFIG_USB=y
|
||||
# CONFIG_USB_DEBUG is not set
|
||||
|
||||
|
@ -890,8 +904,6 @@ CONFIG_USB_DEVICEFS=y
|
|||
# CONFIG_USB_BANDWIDTH is not set
|
||||
# CONFIG_USB_DYNAMIC_MINORS is not set
|
||||
# CONFIG_USB_OTG is not set
|
||||
CONFIG_USB_ARCH_HAS_HCD=y
|
||||
CONFIG_USB_ARCH_HAS_OHCI=y
|
||||
|
||||
#
|
||||
# USB Host Controller Drivers
|
||||
|
@ -917,7 +929,6 @@ CONFIG_USB_PRINTER=y
|
|||
#
|
||||
CONFIG_USB_STORAGE=y
|
||||
# CONFIG_USB_STORAGE_DEBUG is not set
|
||||
CONFIG_USB_STORAGE_RW_DETECT=y
|
||||
CONFIG_USB_STORAGE_DATAFAB=y
|
||||
CONFIG_USB_STORAGE_FREECOM=y
|
||||
CONFIG_USB_STORAGE_ISD200=y
|
||||
|
@ -1004,8 +1015,10 @@ CONFIG_USB_MON=y
|
|||
#
|
||||
CONFIG_USB_SERIAL=m
|
||||
CONFIG_USB_SERIAL_GENERIC=y
|
||||
# CONFIG_USB_SERIAL_AIRPRIME is not set
|
||||
CONFIG_USB_SERIAL_BELKIN=m
|
||||
CONFIG_USB_SERIAL_DIGI_ACCELEPORT=m
|
||||
# CONFIG_USB_SERIAL_CP2101 is not set
|
||||
CONFIG_USB_SERIAL_CYPRESS_M8=m
|
||||
CONFIG_USB_SERIAL_EMPEG=m
|
||||
CONFIG_USB_SERIAL_FTDI_SIO=m
|
||||
|
@ -1034,6 +1047,7 @@ CONFIG_USB_SERIAL_KLSI=m
|
|||
CONFIG_USB_SERIAL_KOBIL_SCT=m
|
||||
CONFIG_USB_SERIAL_MCT_U232=m
|
||||
CONFIG_USB_SERIAL_PL2303=m
|
||||
# CONFIG_USB_SERIAL_HP4X is not set
|
||||
CONFIG_USB_SERIAL_SAFE=m
|
||||
CONFIG_USB_SERIAL_SAFE_PADDED=y
|
||||
CONFIG_USB_SERIAL_TI=m
|
||||
|
@ -1270,11 +1284,13 @@ CONFIG_OPROFILE=y
|
|||
#
|
||||
# Kernel hacking
|
||||
#
|
||||
# CONFIG_PRINTK_TIME is not set
|
||||
CONFIG_DEBUG_KERNEL=y
|
||||
CONFIG_MAGIC_SYSRQ=y
|
||||
# CONFIG_PRINTK_TIME is not set
|
||||
CONFIG_LOG_BUF_SHIFT=17
|
||||
# CONFIG_SCHEDSTATS is not set
|
||||
# CONFIG_DEBUG_SLAB is not set
|
||||
# CONFIG_DEBUG_SPINLOCK is not set
|
||||
# CONFIG_DEBUG_SPINLOCK_SLEEP is not set
|
||||
# CONFIG_DEBUG_KOBJECT is not set
|
||||
# CONFIG_DEBUG_INFO is not set
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
#
|
||||
# Automatically generated make config: don't edit
|
||||
# Linux kernel version: 2.6.11-rc3-bk6
|
||||
# Wed Feb 9 23:34:52 2005
|
||||
# Linux kernel version: 2.6.12-rc6
|
||||
# Tue Jun 14 17:01:28 2005
|
||||
#
|
||||
CONFIG_64BIT=y
|
||||
CONFIG_MMU=y
|
||||
|
@ -11,7 +11,7 @@ CONFIG_GENERIC_ISA_DMA=y
|
|||
CONFIG_HAVE_DEC_LOCK=y
|
||||
CONFIG_EARLY_PRINTK=y
|
||||
CONFIG_COMPAT=y
|
||||
CONFIG_FRAME_POINTER=y
|
||||
CONFIG_SCHED_NO_NO_OMIT_FRAME_POINTER=y
|
||||
CONFIG_FORCE_MAX_ZONEORDER=13
|
||||
|
||||
#
|
||||
|
@ -20,6 +20,7 @@ CONFIG_FORCE_MAX_ZONEORDER=13
|
|||
CONFIG_EXPERIMENTAL=y
|
||||
CONFIG_CLEAN_COMPILE=y
|
||||
CONFIG_LOCK_KERNEL=y
|
||||
CONFIG_INIT_ENV_ARG_LIMIT=32
|
||||
|
||||
#
|
||||
# General setup
|
||||
|
@ -30,24 +31,29 @@ CONFIG_SYSVIPC=y
|
|||
CONFIG_POSIX_MQUEUE=y
|
||||
# CONFIG_BSD_PROCESS_ACCT is not set
|
||||
CONFIG_SYSCTL=y
|
||||
CONFIG_LOG_BUF_SHIFT=17
|
||||
CONFIG_AUDIT=y
|
||||
CONFIG_AUDITSYSCALL=y
|
||||
CONFIG_HOTPLUG=y
|
||||
CONFIG_KOBJECT_UEVENT=y
|
||||
CONFIG_IKCONFIG=y
|
||||
CONFIG_IKCONFIG_PROC=y
|
||||
# CONFIG_CPUSETS is not set
|
||||
# CONFIG_EMBEDDED is not set
|
||||
CONFIG_KALLSYMS=y
|
||||
# CONFIG_KALLSYMS_ALL is not set
|
||||
# CONFIG_KALLSYMS_EXTRA_PASS is not set
|
||||
CONFIG_PRINTK=y
|
||||
CONFIG_BUG=y
|
||||
CONFIG_BASE_FULL=y
|
||||
CONFIG_FUTEX=y
|
||||
CONFIG_EPOLL=y
|
||||
# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
|
||||
CONFIG_SHMEM=y
|
||||
CONFIG_CC_ALIGN_FUNCTIONS=0
|
||||
CONFIG_CC_ALIGN_LABELS=0
|
||||
CONFIG_CC_ALIGN_LOOPS=0
|
||||
CONFIG_CC_ALIGN_JUMPS=0
|
||||
# CONFIG_TINY_SHMEM is not set
|
||||
CONFIG_BASE_SMALL=0
|
||||
|
||||
#
|
||||
# Loadable module support
|
||||
|
@ -79,6 +85,8 @@ CONFIG_NR_CPUS=32
|
|||
CONFIG_GENERIC_HARDIRQS=y
|
||||
CONFIG_MSCHUNKS=y
|
||||
CONFIG_LPARCFG=y
|
||||
CONFIG_SECCOMP=y
|
||||
CONFIG_ISA_DMA_API=y
|
||||
|
||||
#
|
||||
# General setup
|
||||
|
@ -89,16 +97,13 @@ CONFIG_BINFMT_ELF=y
|
|||
# CONFIG_BINFMT_MISC is not set
|
||||
CONFIG_PCI_LEGACY_PROC=y
|
||||
CONFIG_PCI_NAMES=y
|
||||
# CONFIG_PCI_DEBUG is not set
|
||||
|
||||
#
|
||||
# PCCARD (PCMCIA/CardBus) support
|
||||
#
|
||||
# CONFIG_PCCARD is not set
|
||||
|
||||
#
|
||||
# PC-card bridges
|
||||
#
|
||||
|
||||
#
|
||||
# PCI Hotplug Support
|
||||
#
|
||||
|
@ -210,7 +215,6 @@ CONFIG_SCSI_FC_ATTRS=y
|
|||
# CONFIG_SCSI_BUSLOGIC is not set
|
||||
# CONFIG_SCSI_DMX3191D is not set
|
||||
# CONFIG_SCSI_EATA is not set
|
||||
# CONFIG_SCSI_EATA_PIO is not set
|
||||
# CONFIG_SCSI_FUTURE_DOMAIN is not set
|
||||
# CONFIG_SCSI_GDTH is not set
|
||||
# CONFIG_SCSI_IPS is not set
|
||||
|
@ -219,7 +223,6 @@ CONFIG_SCSI_IBMVSCSI=m
|
|||
# CONFIG_SCSI_INIA100 is not set
|
||||
# CONFIG_SCSI_SYM53C8XX_2 is not set
|
||||
# CONFIG_SCSI_IPR is not set
|
||||
# CONFIG_SCSI_QLOGIC_ISP is not set
|
||||
# CONFIG_SCSI_QLOGIC_FC is not set
|
||||
# CONFIG_SCSI_QLOGIC_1280 is not set
|
||||
CONFIG_SCSI_QLA2XXX=y
|
||||
|
@ -228,6 +231,7 @@ CONFIG_SCSI_QLA2XXX=y
|
|||
# CONFIG_SCSI_QLA2300 is not set
|
||||
# CONFIG_SCSI_QLA2322 is not set
|
||||
# CONFIG_SCSI_QLA6312 is not set
|
||||
# CONFIG_SCSI_LPFC is not set
|
||||
# CONFIG_SCSI_DC395x is not set
|
||||
# CONFIG_SCSI_DC390T is not set
|
||||
# CONFIG_SCSI_DEBUG is not set
|
||||
|
@ -250,6 +254,7 @@ CONFIG_DM_CRYPT=m
|
|||
CONFIG_DM_SNAPSHOT=m
|
||||
CONFIG_DM_MIRROR=m
|
||||
CONFIG_DM_ZERO=m
|
||||
# CONFIG_DM_MULTIPATH is not set
|
||||
|
||||
#
|
||||
# Fusion MPT device support
|
||||
|
@ -280,7 +285,6 @@ CONFIG_NET=y
|
|||
#
|
||||
CONFIG_PACKET=y
|
||||
# CONFIG_PACKET_MMAP is not set
|
||||
# CONFIG_NETLINK_DEV is not set
|
||||
CONFIG_UNIX=y
|
||||
CONFIG_NET_KEY=m
|
||||
CONFIG_INET=y
|
||||
|
@ -445,7 +449,6 @@ CONFIG_PCNET32=y
|
|||
# CONFIG_DGRS is not set
|
||||
# CONFIG_EEPRO100 is not set
|
||||
CONFIG_E100=y
|
||||
# CONFIG_E100_NAPI is not set
|
||||
# CONFIG_FEALNX is not set
|
||||
# CONFIG_NATSEMI is not set
|
||||
# CONFIG_NE2K_PCI is not set
|
||||
|
@ -471,6 +474,7 @@ CONFIG_E1000=m
|
|||
# CONFIG_SK98LIN is not set
|
||||
# CONFIG_VIA_VELOCITY is not set
|
||||
# CONFIG_TIGON3 is not set
|
||||
# CONFIG_BNX2 is not set
|
||||
|
||||
#
|
||||
# Ethernet (10000 Mbit)
|
||||
|
@ -538,14 +542,6 @@ CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768
|
|||
# CONFIG_INPUT_EVDEV is not set
|
||||
# CONFIG_INPUT_EVBUG is not set
|
||||
|
||||
#
|
||||
# Input I/O drivers
|
||||
#
|
||||
# CONFIG_GAMEPORT is not set
|
||||
CONFIG_SOUND_GAMEPORT=y
|
||||
# CONFIG_SERIO is not set
|
||||
# CONFIG_SERIO_I8042 is not set
|
||||
|
||||
#
|
||||
# Input Device Drivers
|
||||
#
|
||||
|
@ -555,6 +551,12 @@ CONFIG_SOUND_GAMEPORT=y
|
|||
# CONFIG_INPUT_TOUCHSCREEN is not set
|
||||
# CONFIG_INPUT_MISC is not set
|
||||
|
||||
#
|
||||
# Hardware I/O ports
|
||||
#
|
||||
# CONFIG_SERIO is not set
|
||||
# CONFIG_GAMEPORT is not set
|
||||
|
||||
#
|
||||
# Character devices
|
||||
#
|
||||
|
@ -570,6 +572,7 @@ CONFIG_SOUND_GAMEPORT=y
|
|||
#
|
||||
CONFIG_SERIAL_CORE=m
|
||||
CONFIG_SERIAL_ICOM=m
|
||||
# CONFIG_SERIAL_JSM is not set
|
||||
CONFIG_UNIX98_PTYS=y
|
||||
CONFIG_LEGACY_PTYS=y
|
||||
CONFIG_LEGACY_PTY_COUNT=256
|
||||
|
@ -592,9 +595,16 @@ CONFIG_LEGACY_PTY_COUNT=256
|
|||
#
|
||||
# Ftape, the floppy tape device driver
|
||||
#
|
||||
# CONFIG_AGP is not set
|
||||
# CONFIG_DRM is not set
|
||||
CONFIG_RAW_DRIVER=y
|
||||
CONFIG_MAX_RAW_DEVS=256
|
||||
# CONFIG_HANGCHECK_TIMER is not set
|
||||
|
||||
#
|
||||
# TPM devices
|
||||
#
|
||||
# CONFIG_TCG_TPM is not set
|
||||
|
||||
#
|
||||
# I2C support
|
||||
|
@ -633,13 +643,9 @@ CONFIG_MAX_RAW_DEVS=256
|
|||
#
|
||||
# USB support
|
||||
#
|
||||
# CONFIG_USB is not set
|
||||
CONFIG_USB_ARCH_HAS_HCD=y
|
||||
CONFIG_USB_ARCH_HAS_OHCI=y
|
||||
|
||||
#
|
||||
# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support' may also be needed; see USB_STORAGE Help for more information
|
||||
#
|
||||
# CONFIG_USB is not set
|
||||
|
||||
#
|
||||
# USB Gadget Support
|
||||
|
@ -848,10 +854,13 @@ CONFIG_OPROFILE=y
|
|||
#
|
||||
# Kernel hacking
|
||||
#
|
||||
# CONFIG_PRINTK_TIME is not set
|
||||
CONFIG_DEBUG_KERNEL=y
|
||||
CONFIG_MAGIC_SYSRQ=y
|
||||
CONFIG_LOG_BUF_SHIFT=17
|
||||
# CONFIG_SCHEDSTATS is not set
|
||||
# CONFIG_DEBUG_SLAB is not set
|
||||
# CONFIG_DEBUG_SPINLOCK is not set
|
||||
# CONFIG_DEBUG_SPINLOCK_SLEEP is not set
|
||||
# CONFIG_DEBUG_KOBJECT is not set
|
||||
# CONFIG_DEBUG_INFO is not set
|
||||
|
@ -881,6 +890,7 @@ CONFIG_CRYPTO_SHA1=m
|
|||
CONFIG_CRYPTO_SHA256=m
|
||||
CONFIG_CRYPTO_SHA512=m
|
||||
CONFIG_CRYPTO_WP512=m
|
||||
CONFIG_CRYPTO_TGR192=m
|
||||
CONFIG_CRYPTO_DES=y
|
||||
CONFIG_CRYPTO_BLOWFISH=m
|
||||
CONFIG_CRYPTO_TWOFISH=m
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
#
|
||||
# Automatically generated make config: don't edit
|
||||
# Linux kernel version: 2.6.11-rc3-bk6
|
||||
# Wed Feb 9 23:34:53 2005
|
||||
# Linux kernel version: 2.6.12-rc6
|
||||
# Tue Jun 14 17:12:48 2005
|
||||
#
|
||||
CONFIG_64BIT=y
|
||||
CONFIG_MMU=y
|
||||
|
@ -11,7 +11,7 @@ CONFIG_GENERIC_ISA_DMA=y
|
|||
CONFIG_HAVE_DEC_LOCK=y
|
||||
CONFIG_EARLY_PRINTK=y
|
||||
CONFIG_COMPAT=y
|
||||
CONFIG_FRAME_POINTER=y
|
||||
CONFIG_SCHED_NO_NO_OMIT_FRAME_POINTER=y
|
||||
CONFIG_FORCE_MAX_ZONEORDER=13
|
||||
|
||||
#
|
||||
|
@ -20,6 +20,7 @@ CONFIG_FORCE_MAX_ZONEORDER=13
|
|||
CONFIG_EXPERIMENTAL=y
|
||||
CONFIG_CLEAN_COMPILE=y
|
||||
CONFIG_LOCK_KERNEL=y
|
||||
CONFIG_INIT_ENV_ARG_LIMIT=32
|
||||
|
||||
#
|
||||
# General setup
|
||||
|
@ -30,24 +31,28 @@ CONFIG_SYSVIPC=y
|
|||
CONFIG_POSIX_MQUEUE=y
|
||||
# CONFIG_BSD_PROCESS_ACCT is not set
|
||||
CONFIG_SYSCTL=y
|
||||
CONFIG_LOG_BUF_SHIFT=17
|
||||
# CONFIG_AUDIT is not set
|
||||
# CONFIG_HOTPLUG is not set
|
||||
CONFIG_KOBJECT_UEVENT=y
|
||||
CONFIG_IKCONFIG=y
|
||||
CONFIG_IKCONFIG_PROC=y
|
||||
# CONFIG_CPUSETS is not set
|
||||
# CONFIG_EMBEDDED is not set
|
||||
CONFIG_KALLSYMS=y
|
||||
CONFIG_KALLSYMS_ALL=y
|
||||
# CONFIG_KALLSYMS_EXTRA_PASS is not set
|
||||
CONFIG_PRINTK=y
|
||||
CONFIG_BUG=y
|
||||
CONFIG_BASE_FULL=y
|
||||
CONFIG_FUTEX=y
|
||||
CONFIG_EPOLL=y
|
||||
# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
|
||||
CONFIG_SHMEM=y
|
||||
CONFIG_CC_ALIGN_FUNCTIONS=0
|
||||
CONFIG_CC_ALIGN_LABELS=0
|
||||
CONFIG_CC_ALIGN_LOOPS=0
|
||||
CONFIG_CC_ALIGN_JUMPS=0
|
||||
# CONFIG_TINY_SHMEM is not set
|
||||
CONFIG_BASE_SMALL=0
|
||||
|
||||
#
|
||||
# Loadable module support
|
||||
|
@ -84,6 +89,8 @@ CONFIG_NR_CPUS=2
|
|||
# CONFIG_SCHED_SMT is not set
|
||||
# CONFIG_PREEMPT is not set
|
||||
CONFIG_GENERIC_HARDIRQS=y
|
||||
CONFIG_SECCOMP=y
|
||||
CONFIG_ISA_DMA_API=y
|
||||
|
||||
#
|
||||
# General setup
|
||||
|
@ -94,16 +101,13 @@ CONFIG_BINFMT_ELF=y
|
|||
# CONFIG_BINFMT_MISC is not set
|
||||
CONFIG_PCI_LEGACY_PROC=y
|
||||
CONFIG_PCI_NAMES=y
|
||||
# CONFIG_PCI_DEBUG is not set
|
||||
|
||||
#
|
||||
# PCCARD (PCMCIA/CardBus) support
|
||||
#
|
||||
# CONFIG_PCCARD is not set
|
||||
|
||||
#
|
||||
# PC-card bridges
|
||||
#
|
||||
|
||||
#
|
||||
# PCI Hotplug Support
|
||||
#
|
||||
|
@ -261,7 +265,6 @@ CONFIG_NET=y
|
|||
#
|
||||
CONFIG_PACKET=y
|
||||
CONFIG_PACKET_MMAP=y
|
||||
# CONFIG_NETLINK_DEV is not set
|
||||
CONFIG_UNIX=y
|
||||
# CONFIG_NET_KEY is not set
|
||||
CONFIG_INET=y
|
||||
|
@ -376,6 +379,8 @@ CONFIG_E1000=y
|
|||
# CONFIG_SK98LIN is not set
|
||||
# CONFIG_VIA_VELOCITY is not set
|
||||
# CONFIG_TIGON3 is not set
|
||||
# CONFIG_BNX2 is not set
|
||||
# CONFIG_MV643XX_ETH is not set
|
||||
|
||||
#
|
||||
# Ethernet (10000 Mbit)
|
||||
|
@ -431,14 +436,6 @@ CONFIG_INPUT_MOUSEDEV_SCREEN_Y=1200
|
|||
# CONFIG_INPUT_EVDEV is not set
|
||||
# CONFIG_INPUT_EVBUG is not set
|
||||
|
||||
#
|
||||
# Input I/O drivers
|
||||
#
|
||||
# CONFIG_GAMEPORT is not set
|
||||
CONFIG_SOUND_GAMEPORT=y
|
||||
# CONFIG_SERIO is not set
|
||||
# CONFIG_SERIO_I8042 is not set
|
||||
|
||||
#
|
||||
# Input Device Drivers
|
||||
#
|
||||
|
@ -448,6 +445,12 @@ CONFIG_SOUND_GAMEPORT=y
|
|||
# CONFIG_INPUT_TOUCHSCREEN is not set
|
||||
# CONFIG_INPUT_MISC is not set
|
||||
|
||||
#
|
||||
# Hardware I/O ports
|
||||
#
|
||||
# CONFIG_SERIO is not set
|
||||
# CONFIG_GAMEPORT is not set
|
||||
|
||||
#
|
||||
# Character devices
|
||||
#
|
||||
|
@ -469,7 +472,7 @@ CONFIG_SERIAL_8250_NR_UARTS=4
|
|||
#
|
||||
CONFIG_SERIAL_CORE=y
|
||||
CONFIG_SERIAL_CORE_CONSOLE=y
|
||||
# CONFIG_SERIAL_PMACZILOG is not set
|
||||
# CONFIG_SERIAL_JSM is not set
|
||||
CONFIG_UNIX98_PTYS=y
|
||||
CONFIG_LEGACY_PTYS=y
|
||||
CONFIG_LEGACY_PTY_COUNT=256
|
||||
|
@ -492,8 +495,15 @@ CONFIG_LEGACY_PTY_COUNT=256
|
|||
#
|
||||
# Ftape, the floppy tape device driver
|
||||
#
|
||||
# CONFIG_AGP is not set
|
||||
# CONFIG_DRM is not set
|
||||
# CONFIG_RAW_DRIVER is not set
|
||||
# CONFIG_HANGCHECK_TIMER is not set
|
||||
|
||||
#
|
||||
# TPM devices
|
||||
#
|
||||
# CONFIG_TCG_TPM is not set
|
||||
|
||||
#
|
||||
# I2C support
|
||||
|
@ -518,8 +528,8 @@ CONFIG_I2C_ALGOBIT=y
|
|||
CONFIG_I2C_AMD8111=y
|
||||
# CONFIG_I2C_I801 is not set
|
||||
# CONFIG_I2C_I810 is not set
|
||||
# CONFIG_I2C_PIIX4 is not set
|
||||
# CONFIG_I2C_ISA is not set
|
||||
# CONFIG_I2C_MPC is not set
|
||||
# CONFIG_I2C_NFORCE2 is not set
|
||||
# CONFIG_I2C_PARPORT_LIGHT is not set
|
||||
# CONFIG_I2C_PROSAVAGE is not set
|
||||
|
@ -545,7 +555,9 @@ CONFIG_I2C_AMD8111=y
|
|||
# CONFIG_SENSORS_ASB100 is not set
|
||||
# CONFIG_SENSORS_DS1621 is not set
|
||||
# CONFIG_SENSORS_FSCHER is not set
|
||||
# CONFIG_SENSORS_FSCPOS is not set
|
||||
# CONFIG_SENSORS_GL518SM is not set
|
||||
# CONFIG_SENSORS_GL520SM is not set
|
||||
# CONFIG_SENSORS_IT87 is not set
|
||||
# CONFIG_SENSORS_LM63 is not set
|
||||
# CONFIG_SENSORS_LM75 is not set
|
||||
|
@ -556,9 +568,11 @@ CONFIG_I2C_AMD8111=y
|
|||
# CONFIG_SENSORS_LM85 is not set
|
||||
# CONFIG_SENSORS_LM87 is not set
|
||||
# CONFIG_SENSORS_LM90 is not set
|
||||
# CONFIG_SENSORS_LM92 is not set
|
||||
# CONFIG_SENSORS_MAX1619 is not set
|
||||
# CONFIG_SENSORS_PC87360 is not set
|
||||
# CONFIG_SENSORS_SMSC47B397 is not set
|
||||
# CONFIG_SENSORS_SIS5595 is not set
|
||||
# CONFIG_SENSORS_SMSC47M1 is not set
|
||||
# CONFIG_SENSORS_VIA686A is not set
|
||||
# CONFIG_SENSORS_W83781D is not set
|
||||
|
@ -568,6 +582,7 @@ CONFIG_I2C_AMD8111=y
|
|||
#
|
||||
# Other I2C Chip support
|
||||
#
|
||||
# CONFIG_SENSORS_DS1337 is not set
|
||||
# CONFIG_SENSORS_EEPROM is not set
|
||||
# CONFIG_SENSORS_PCF8574 is not set
|
||||
# CONFIG_SENSORS_PCF8591 is not set
|
||||
|
@ -615,6 +630,8 @@ CONFIG_DUMMY_CONSOLE=y
|
|||
#
|
||||
# USB support
|
||||
#
|
||||
CONFIG_USB_ARCH_HAS_HCD=y
|
||||
CONFIG_USB_ARCH_HAS_OHCI=y
|
||||
CONFIG_USB=y
|
||||
# CONFIG_USB_DEBUG is not set
|
||||
|
||||
|
@ -625,8 +642,6 @@ CONFIG_USB_DEVICEFS=y
|
|||
# CONFIG_USB_BANDWIDTH is not set
|
||||
# CONFIG_USB_DYNAMIC_MINORS is not set
|
||||
# CONFIG_USB_OTG is not set
|
||||
CONFIG_USB_ARCH_HAS_HCD=y
|
||||
CONFIG_USB_ARCH_HAS_OHCI=y
|
||||
|
||||
#
|
||||
# USB Host Controller Drivers
|
||||
|
@ -635,6 +650,8 @@ CONFIG_USB_EHCI_HCD=y
|
|||
CONFIG_USB_EHCI_SPLIT_ISO=y
|
||||
CONFIG_USB_EHCI_ROOT_HUB_TT=y
|
||||
CONFIG_USB_OHCI_HCD=y
|
||||
# CONFIG_USB_OHCI_BIG_ENDIAN is not set
|
||||
CONFIG_USB_OHCI_LITTLE_ENDIAN=y
|
||||
CONFIG_USB_UHCI_HCD=y
|
||||
# CONFIG_USB_SL811_HCD is not set
|
||||
|
||||
|
@ -688,6 +705,7 @@ CONFIG_USB_HIDINPUT=y
|
|||
CONFIG_USB_PEGASUS=y
|
||||
# CONFIG_USB_RTL8150 is not set
|
||||
# CONFIG_USB_USBNET is not set
|
||||
CONFIG_USB_MON=y
|
||||
|
||||
#
|
||||
# USB port drivers
|
||||
|
@ -699,8 +717,10 @@ CONFIG_USB_PEGASUS=y
|
|||
CONFIG_USB_SERIAL=y
|
||||
# CONFIG_USB_SERIAL_CONSOLE is not set
|
||||
CONFIG_USB_SERIAL_GENERIC=y
|
||||
# CONFIG_USB_SERIAL_AIRPRIME is not set
|
||||
# CONFIG_USB_SERIAL_BELKIN is not set
|
||||
# CONFIG_USB_SERIAL_DIGI_ACCELEPORT is not set
|
||||
# CONFIG_USB_SERIAL_CP2101 is not set
|
||||
CONFIG_USB_SERIAL_CYPRESS_M8=m
|
||||
# CONFIG_USB_SERIAL_EMPEG is not set
|
||||
# CONFIG_USB_SERIAL_FTDI_SIO is not set
|
||||
|
@ -729,6 +749,7 @@ CONFIG_USB_SERIAL_KEYSPAN_USA49WLC=y
|
|||
# CONFIG_USB_SERIAL_KOBIL_SCT is not set
|
||||
# CONFIG_USB_SERIAL_MCT_U232 is not set
|
||||
# CONFIG_USB_SERIAL_PL2303 is not set
|
||||
# CONFIG_USB_SERIAL_HP4X is not set
|
||||
# CONFIG_USB_SERIAL_SAFE is not set
|
||||
CONFIG_USB_SERIAL_TI=m
|
||||
# CONFIG_USB_SERIAL_CYBERJACK is not set
|
||||
|
@ -750,6 +771,7 @@ CONFIG_USB_EZUSB=y
|
|||
# CONFIG_USB_PHIDGETKIT is not set
|
||||
# CONFIG_USB_PHIDGETSERVO is not set
|
||||
# CONFIG_USB_IDMOUSE is not set
|
||||
# CONFIG_USB_SISUSBVGA is not set
|
||||
# CONFIG_USB_TEST is not set
|
||||
|
||||
#
|
||||
|
@ -936,10 +958,13 @@ CONFIG_NLS_UTF8=y
|
|||
#
|
||||
# Kernel hacking
|
||||
#
|
||||
# CONFIG_PRINTK_TIME is not set
|
||||
CONFIG_DEBUG_KERNEL=y
|
||||
CONFIG_MAGIC_SYSRQ=y
|
||||
CONFIG_LOG_BUF_SHIFT=17
|
||||
# CONFIG_SCHEDSTATS is not set
|
||||
CONFIG_DEBUG_SLAB=y
|
||||
# CONFIG_DEBUG_SPINLOCK is not set
|
||||
CONFIG_DEBUG_SPINLOCK_SLEEP=y
|
||||
# CONFIG_DEBUG_KOBJECT is not set
|
||||
# CONFIG_DEBUG_INFO is not set
|
||||
|
@ -971,6 +996,7 @@ CONFIG_CRYPTO_MD5=y
|
|||
# CONFIG_CRYPTO_SHA256 is not set
|
||||
# CONFIG_CRYPTO_SHA512 is not set
|
||||
# CONFIG_CRYPTO_WP512 is not set
|
||||
# CONFIG_CRYPTO_TGR192 is not set
|
||||
CONFIG_CRYPTO_DES=y
|
||||
# CONFIG_CRYPTO_BLOWFISH is not set
|
||||
# CONFIG_CRYPTO_TWOFISH is not set
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
#
|
||||
# Automatically generated make config: don't edit
|
||||
# Linux kernel version: 2.6.11-rc3-bk6
|
||||
# Wed Feb 9 23:34:54 2005
|
||||
# Linux kernel version: 2.6.12-rc6
|
||||
# Tue Jun 14 17:13:47 2005
|
||||
#
|
||||
CONFIG_64BIT=y
|
||||
CONFIG_MMU=y
|
||||
|
@ -11,7 +11,7 @@ CONFIG_GENERIC_ISA_DMA=y
|
|||
CONFIG_HAVE_DEC_LOCK=y
|
||||
CONFIG_EARLY_PRINTK=y
|
||||
CONFIG_COMPAT=y
|
||||
CONFIG_FRAME_POINTER=y
|
||||
CONFIG_SCHED_NO_NO_OMIT_FRAME_POINTER=y
|
||||
CONFIG_FORCE_MAX_ZONEORDER=13
|
||||
|
||||
#
|
||||
|
@ -20,6 +20,7 @@ CONFIG_FORCE_MAX_ZONEORDER=13
|
|||
CONFIG_EXPERIMENTAL=y
|
||||
CONFIG_CLEAN_COMPILE=y
|
||||
CONFIG_LOCK_KERNEL=y
|
||||
CONFIG_INIT_ENV_ARG_LIMIT=32
|
||||
|
||||
#
|
||||
# General setup
|
||||
|
@ -30,24 +31,29 @@ CONFIG_SYSVIPC=y
|
|||
CONFIG_POSIX_MQUEUE=y
|
||||
# CONFIG_BSD_PROCESS_ACCT is not set
|
||||
CONFIG_SYSCTL=y
|
||||
CONFIG_LOG_BUF_SHIFT=17
|
||||
CONFIG_AUDIT=y
|
||||
CONFIG_AUDITSYSCALL=y
|
||||
CONFIG_HOTPLUG=y
|
||||
CONFIG_KOBJECT_UEVENT=y
|
||||
CONFIG_IKCONFIG=y
|
||||
CONFIG_IKCONFIG_PROC=y
|
||||
CONFIG_CPUSETS=y
|
||||
# CONFIG_EMBEDDED is not set
|
||||
CONFIG_KALLSYMS=y
|
||||
CONFIG_KALLSYMS_ALL=y
|
||||
# CONFIG_KALLSYMS_EXTRA_PASS is not set
|
||||
CONFIG_PRINTK=y
|
||||
CONFIG_BUG=y
|
||||
CONFIG_BASE_FULL=y
|
||||
CONFIG_FUTEX=y
|
||||
CONFIG_EPOLL=y
|
||||
# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
|
||||
CONFIG_SHMEM=y
|
||||
CONFIG_CC_ALIGN_FUNCTIONS=0
|
||||
CONFIG_CC_ALIGN_LABELS=0
|
||||
CONFIG_CC_ALIGN_LOOPS=0
|
||||
CONFIG_CC_ALIGN_JUMPS=0
|
||||
# CONFIG_TINY_SHMEM is not set
|
||||
CONFIG_BASE_SMALL=0
|
||||
|
||||
#
|
||||
# Loadable module support
|
||||
|
@ -89,9 +95,12 @@ CONFIG_SCHED_SMT=y
|
|||
CONFIG_EEH=y
|
||||
CONFIG_GENERIC_HARDIRQS=y
|
||||
CONFIG_PPC_RTAS=y
|
||||
CONFIG_RTAS_PROC=y
|
||||
CONFIG_RTAS_FLASH=m
|
||||
CONFIG_SCANLOG=m
|
||||
CONFIG_LPARCFG=y
|
||||
CONFIG_SECCOMP=y
|
||||
CONFIG_ISA_DMA_API=y
|
||||
|
||||
#
|
||||
# General setup
|
||||
|
@ -102,6 +111,7 @@ CONFIG_BINFMT_ELF=y
|
|||
# CONFIG_BINFMT_MISC is not set
|
||||
CONFIG_PCI_LEGACY_PROC=y
|
||||
CONFIG_PCI_NAMES=y
|
||||
# CONFIG_PCI_DEBUG is not set
|
||||
CONFIG_HOTPLUG_CPU=y
|
||||
|
||||
#
|
||||
|
@ -109,10 +119,6 @@ CONFIG_HOTPLUG_CPU=y
|
|||
#
|
||||
# CONFIG_PCCARD is not set
|
||||
|
||||
#
|
||||
# PC-card bridges
|
||||
#
|
||||
|
||||
#
|
||||
# PCI Hotplug Support
|
||||
#
|
||||
|
@ -147,11 +153,10 @@ CONFIG_FW_LOADER=y
|
|||
#
|
||||
CONFIG_PARPORT=m
|
||||
CONFIG_PARPORT_PC=m
|
||||
CONFIG_PARPORT_PC_CML1=m
|
||||
# CONFIG_PARPORT_SERIAL is not set
|
||||
# CONFIG_PARPORT_PC_FIFO is not set
|
||||
# CONFIG_PARPORT_PC_SUPERIO is not set
|
||||
# CONFIG_PARPORT_OTHER is not set
|
||||
# CONFIG_PARPORT_GSC is not set
|
||||
# CONFIG_PARPORT_1284 is not set
|
||||
|
||||
#
|
||||
|
@ -293,7 +298,6 @@ CONFIG_SCSI_ISCSI_ATTRS=m
|
|||
# CONFIG_SCSI_BUSLOGIC is not set
|
||||
# CONFIG_SCSI_DMX3191D is not set
|
||||
# CONFIG_SCSI_EATA is not set
|
||||
# CONFIG_SCSI_EATA_PIO is not set
|
||||
# CONFIG_SCSI_FUTURE_DOMAIN is not set
|
||||
# CONFIG_SCSI_GDTH is not set
|
||||
# CONFIG_SCSI_IPS is not set
|
||||
|
@ -310,7 +314,6 @@ CONFIG_SCSI_SYM53C8XX_MAX_TAGS=64
|
|||
CONFIG_SCSI_IPR=y
|
||||
CONFIG_SCSI_IPR_TRACE=y
|
||||
CONFIG_SCSI_IPR_DUMP=y
|
||||
# CONFIG_SCSI_QLOGIC_ISP is not set
|
||||
# CONFIG_SCSI_QLOGIC_FC is not set
|
||||
# CONFIG_SCSI_QLOGIC_1280 is not set
|
||||
CONFIG_SCSI_QLA2XXX=y
|
||||
|
@ -319,6 +322,7 @@ CONFIG_SCSI_QLA22XX=m
|
|||
CONFIG_SCSI_QLA2300=m
|
||||
CONFIG_SCSI_QLA2322=m
|
||||
CONFIG_SCSI_QLA6312=m
|
||||
CONFIG_SCSI_LPFC=m
|
||||
# CONFIG_SCSI_DC395x is not set
|
||||
# CONFIG_SCSI_DC390T is not set
|
||||
# CONFIG_SCSI_DEBUG is not set
|
||||
|
@ -341,6 +345,8 @@ CONFIG_DM_CRYPT=m
|
|||
CONFIG_DM_SNAPSHOT=m
|
||||
CONFIG_DM_MIRROR=m
|
||||
CONFIG_DM_ZERO=m
|
||||
CONFIG_DM_MULTIPATH=m
|
||||
CONFIG_DM_MULTIPATH_EMC=m
|
||||
|
||||
#
|
||||
# Fusion MPT device support
|
||||
|
@ -371,7 +377,6 @@ CONFIG_NET=y
|
|||
#
|
||||
CONFIG_PACKET=y
|
||||
# CONFIG_PACKET_MMAP is not set
|
||||
# CONFIG_NETLINK_DEV is not set
|
||||
CONFIG_UNIX=y
|
||||
CONFIG_NET_KEY=m
|
||||
CONFIG_INET=y
|
||||
|
@ -539,7 +544,6 @@ CONFIG_PCNET32=y
|
|||
# CONFIG_DGRS is not set
|
||||
# CONFIG_EEPRO100 is not set
|
||||
CONFIG_E100=y
|
||||
# CONFIG_E100_NAPI is not set
|
||||
# CONFIG_FEALNX is not set
|
||||
# CONFIG_NATSEMI is not set
|
||||
# CONFIG_NE2K_PCI is not set
|
||||
|
@ -565,6 +569,8 @@ CONFIG_E1000=y
|
|||
# CONFIG_SK98LIN is not set
|
||||
# CONFIG_VIA_VELOCITY is not set
|
||||
CONFIG_TIGON3=y
|
||||
# CONFIG_BNX2 is not set
|
||||
# CONFIG_MV643XX_ETH is not set
|
||||
|
||||
#
|
||||
# Ethernet (10000 Mbit)
|
||||
|
@ -635,20 +641,6 @@ CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768
|
|||
# CONFIG_INPUT_EVDEV is not set
|
||||
# CONFIG_INPUT_EVBUG is not set
|
||||
|
||||
#
|
||||
# Input I/O drivers
|
||||
#
|
||||
# CONFIG_GAMEPORT is not set
|
||||
CONFIG_SOUND_GAMEPORT=y
|
||||
CONFIG_SERIO=y
|
||||
CONFIG_SERIO_I8042=y
|
||||
# CONFIG_SERIO_SERPORT is not set
|
||||
# CONFIG_SERIO_CT82C710 is not set
|
||||
# CONFIG_SERIO_PARKBD is not set
|
||||
# CONFIG_SERIO_PCIPS2 is not set
|
||||
CONFIG_SERIO_LIBPS2=y
|
||||
# CONFIG_SERIO_RAW is not set
|
||||
|
||||
#
|
||||
# Input Device Drivers
|
||||
#
|
||||
|
@ -668,6 +660,18 @@ CONFIG_INPUT_MISC=y
|
|||
CONFIG_INPUT_PCSPKR=m
|
||||
# CONFIG_INPUT_UINPUT is not set
|
||||
|
||||
#
|
||||
# Hardware I/O ports
|
||||
#
|
||||
CONFIG_SERIO=y
|
||||
CONFIG_SERIO_I8042=y
|
||||
# CONFIG_SERIO_SERPORT is not set
|
||||
# CONFIG_SERIO_PARKBD is not set
|
||||
# CONFIG_SERIO_PCIPS2 is not set
|
||||
CONFIG_SERIO_LIBPS2=y
|
||||
# CONFIG_SERIO_RAW is not set
|
||||
# CONFIG_GAMEPORT is not set
|
||||
|
||||
#
|
||||
# Character devices
|
||||
#
|
||||
|
@ -689,8 +693,8 @@ CONFIG_SERIAL_8250_NR_UARTS=4
|
|||
#
|
||||
CONFIG_SERIAL_CORE=y
|
||||
CONFIG_SERIAL_CORE_CONSOLE=y
|
||||
# CONFIG_SERIAL_PMACZILOG is not set
|
||||
CONFIG_SERIAL_ICOM=m
|
||||
# CONFIG_SERIAL_JSM is not set
|
||||
CONFIG_UNIX98_PTYS=y
|
||||
CONFIG_LEGACY_PTYS=y
|
||||
CONFIG_LEGACY_PTY_COUNT=256
|
||||
|
@ -718,9 +722,16 @@ CONFIG_HVCS=m
|
|||
#
|
||||
# Ftape, the floppy tape device driver
|
||||
#
|
||||
# CONFIG_AGP is not set
|
||||
# CONFIG_DRM is not set
|
||||
CONFIG_RAW_DRIVER=y
|
||||
CONFIG_MAX_RAW_DEVS=1024
|
||||
# CONFIG_HANGCHECK_TIMER is not set
|
||||
|
||||
#
|
||||
# TPM devices
|
||||
#
|
||||
# CONFIG_TCG_TPM is not set
|
||||
|
||||
#
|
||||
# I2C support
|
||||
|
@ -745,8 +756,8 @@ CONFIG_I2C_ALGOBIT=y
|
|||
# CONFIG_I2C_AMD8111 is not set
|
||||
# CONFIG_I2C_I801 is not set
|
||||
# CONFIG_I2C_I810 is not set
|
||||
# CONFIG_I2C_PIIX4 is not set
|
||||
# CONFIG_I2C_ISA is not set
|
||||
# CONFIG_I2C_MPC is not set
|
||||
# CONFIG_I2C_NFORCE2 is not set
|
||||
# CONFIG_I2C_PARPORT is not set
|
||||
# CONFIG_I2C_PARPORT_LIGHT is not set
|
||||
|
@ -773,7 +784,9 @@ CONFIG_I2C_ALGOBIT=y
|
|||
# CONFIG_SENSORS_ASB100 is not set
|
||||
# CONFIG_SENSORS_DS1621 is not set
|
||||
# CONFIG_SENSORS_FSCHER is not set
|
||||
# CONFIG_SENSORS_FSCPOS is not set
|
||||
# CONFIG_SENSORS_GL518SM is not set
|
||||
# CONFIG_SENSORS_GL520SM is not set
|
||||
# CONFIG_SENSORS_IT87 is not set
|
||||
# CONFIG_SENSORS_LM63 is not set
|
||||
# CONFIG_SENSORS_LM75 is not set
|
||||
|
@ -784,9 +797,11 @@ CONFIG_I2C_ALGOBIT=y
|
|||
# CONFIG_SENSORS_LM85 is not set
|
||||
# CONFIG_SENSORS_LM87 is not set
|
||||
# CONFIG_SENSORS_LM90 is not set
|
||||
# CONFIG_SENSORS_LM92 is not set
|
||||
# CONFIG_SENSORS_MAX1619 is not set
|
||||
# CONFIG_SENSORS_PC87360 is not set
|
||||
# CONFIG_SENSORS_SMSC47B397 is not set
|
||||
# CONFIG_SENSORS_SIS5595 is not set
|
||||
# CONFIG_SENSORS_SMSC47M1 is not set
|
||||
# CONFIG_SENSORS_VIA686A is not set
|
||||
# CONFIG_SENSORS_W83781D is not set
|
||||
|
@ -796,6 +811,7 @@ CONFIG_I2C_ALGOBIT=y
|
|||
#
|
||||
# Other I2C Chip support
|
||||
#
|
||||
# CONFIG_SENSORS_DS1337 is not set
|
||||
# CONFIG_SENSORS_EEPROM is not set
|
||||
# CONFIG_SENSORS_PCF8574 is not set
|
||||
# CONFIG_SENSORS_PCF8591 is not set
|
||||
|
@ -828,8 +844,13 @@ CONFIG_I2C_ALGOBIT=y
|
|||
# Graphics support
|
||||
#
|
||||
CONFIG_FB=y
|
||||
CONFIG_FB_CFB_FILLRECT=y
|
||||
CONFIG_FB_CFB_COPYAREA=y
|
||||
CONFIG_FB_CFB_IMAGEBLIT=y
|
||||
CONFIG_FB_SOFT_CURSOR=y
|
||||
CONFIG_FB_MACMODES=y
|
||||
CONFIG_FB_MODE_HELPERS=y
|
||||
# CONFIG_FB_TILEBLITTING is not set
|
||||
CONFIG_FB_TILEBLITTING=y
|
||||
# CONFIG_FB_CIRRUS is not set
|
||||
# CONFIG_FB_PM2 is not set
|
||||
# CONFIG_FB_CYBER2000 is not set
|
||||
|
@ -838,6 +859,7 @@ CONFIG_FB_OF=y
|
|||
# CONFIG_FB_ASILIANT is not set
|
||||
# CONFIG_FB_IMSTT is not set
|
||||
# CONFIG_FB_VGA16 is not set
|
||||
# CONFIG_FB_NVIDIA is not set
|
||||
# CONFIG_FB_RIVA is not set
|
||||
CONFIG_FB_MATROX=y
|
||||
CONFIG_FB_MATROX_MILLENIUM=y
|
||||
|
@ -858,6 +880,7 @@ CONFIG_FB_RADEON_I2C=y
|
|||
# CONFIG_FB_3DFX is not set
|
||||
# CONFIG_FB_VOODOO1 is not set
|
||||
# CONFIG_FB_TRIDENT is not set
|
||||
# CONFIG_FB_S1D13XXX is not set
|
||||
# CONFIG_FB_VIRTUAL is not set
|
||||
|
||||
#
|
||||
|
@ -891,6 +914,8 @@ CONFIG_LCD_DEVICE=y
|
|||
#
|
||||
# USB support
|
||||
#
|
||||
CONFIG_USB_ARCH_HAS_HCD=y
|
||||
CONFIG_USB_ARCH_HAS_OHCI=y
|
||||
CONFIG_USB=y
|
||||
# CONFIG_USB_DEBUG is not set
|
||||
|
||||
|
@ -901,8 +926,6 @@ CONFIG_USB_DEVICEFS=y
|
|||
# CONFIG_USB_BANDWIDTH is not set
|
||||
# CONFIG_USB_DYNAMIC_MINORS is not set
|
||||
# CONFIG_USB_OTG is not set
|
||||
CONFIG_USB_ARCH_HAS_HCD=y
|
||||
CONFIG_USB_ARCH_HAS_OHCI=y
|
||||
|
||||
#
|
||||
# USB Host Controller Drivers
|
||||
|
@ -911,6 +934,8 @@ CONFIG_USB_EHCI_HCD=y
|
|||
# CONFIG_USB_EHCI_SPLIT_ISO is not set
|
||||
# CONFIG_USB_EHCI_ROOT_HUB_TT is not set
|
||||
CONFIG_USB_OHCI_HCD=y
|
||||
# CONFIG_USB_OHCI_BIG_ENDIAN is not set
|
||||
CONFIG_USB_OHCI_LITTLE_ENDIAN=y
|
||||
# CONFIG_USB_UHCI_HCD is not set
|
||||
# CONFIG_USB_SL811_HCD is not set
|
||||
|
||||
|
@ -926,12 +951,11 @@ CONFIG_USB_OHCI_HCD=y
|
|||
#
|
||||
CONFIG_USB_STORAGE=y
|
||||
# CONFIG_USB_STORAGE_DEBUG is not set
|
||||
# CONFIG_USB_STORAGE_RW_DETECT is not set
|
||||
# CONFIG_USB_STORAGE_DATAFAB is not set
|
||||
# CONFIG_USB_STORAGE_FREECOM is not set
|
||||
# CONFIG_USB_STORAGE_ISD200 is not set
|
||||
# CONFIG_USB_STORAGE_DPCM is not set
|
||||
# CONFIG_USB_STORAGE_HP8200e is not set
|
||||
# CONFIG_USB_STORAGE_USBAT is not set
|
||||
# CONFIG_USB_STORAGE_SDDR09 is not set
|
||||
# CONFIG_USB_STORAGE_SDDR55 is not set
|
||||
# CONFIG_USB_STORAGE_JUMPSHOT is not set
|
||||
|
@ -975,6 +999,7 @@ CONFIG_USB_HIDDEV=y
|
|||
# CONFIG_USB_PEGASUS is not set
|
||||
# CONFIG_USB_RTL8150 is not set
|
||||
# CONFIG_USB_USBNET is not set
|
||||
CONFIG_USB_MON=y
|
||||
|
||||
#
|
||||
# USB port drivers
|
||||
|
@ -1000,6 +1025,7 @@ CONFIG_USB_HIDDEV=y
|
|||
# CONFIG_USB_PHIDGETKIT is not set
|
||||
# CONFIG_USB_PHIDGETSERVO is not set
|
||||
# CONFIG_USB_IDMOUSE is not set
|
||||
# CONFIG_USB_SISUSBVGA is not set
|
||||
# CONFIG_USB_TEST is not set
|
||||
|
||||
#
|
||||
|
@ -1208,10 +1234,13 @@ CONFIG_OPROFILE=y
|
|||
#
|
||||
# Kernel hacking
|
||||
#
|
||||
# CONFIG_PRINTK_TIME is not set
|
||||
CONFIG_DEBUG_KERNEL=y
|
||||
CONFIG_MAGIC_SYSRQ=y
|
||||
CONFIG_LOG_BUF_SHIFT=17
|
||||
# CONFIG_SCHEDSTATS is not set
|
||||
# CONFIG_DEBUG_SLAB is not set
|
||||
# CONFIG_DEBUG_SPINLOCK is not set
|
||||
# CONFIG_DEBUG_SPINLOCK_SLEEP is not set
|
||||
# CONFIG_DEBUG_KOBJECT is not set
|
||||
# CONFIG_DEBUG_INFO is not set
|
||||
|
@ -1243,6 +1272,7 @@ CONFIG_CRYPTO_SHA1=m
|
|||
CONFIG_CRYPTO_SHA256=m
|
||||
CONFIG_CRYPTO_SHA512=m
|
||||
CONFIG_CRYPTO_WP512=m
|
||||
CONFIG_CRYPTO_TGR192=m
|
||||
CONFIG_CRYPTO_DES=y
|
||||
CONFIG_CRYPTO_BLOWFISH=m
|
||||
CONFIG_CRYPTO_TWOFISH=m
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
#
|
||||
# Automatically generated make config: don't edit
|
||||
# Linux kernel version: 2.6.11-rc3-bk6
|
||||
# Wed Feb 9 23:34:51 2005
|
||||
# Linux kernel version: 2.6.12-rc5-git9
|
||||
# Sun Jun 5 09:26:47 2005
|
||||
#
|
||||
CONFIG_64BIT=y
|
||||
CONFIG_MMU=y
|
||||
|
@ -11,7 +11,7 @@ CONFIG_GENERIC_ISA_DMA=y
|
|||
CONFIG_HAVE_DEC_LOCK=y
|
||||
CONFIG_EARLY_PRINTK=y
|
||||
CONFIG_COMPAT=y
|
||||
CONFIG_FRAME_POINTER=y
|
||||
CONFIG_SCHED_NO_NO_OMIT_FRAME_POINTER=y
|
||||
CONFIG_FORCE_MAX_ZONEORDER=13
|
||||
|
||||
#
|
||||
|
@ -20,6 +20,7 @@ CONFIG_FORCE_MAX_ZONEORDER=13
|
|||
CONFIG_EXPERIMENTAL=y
|
||||
CONFIG_CLEAN_COMPILE=y
|
||||
CONFIG_LOCK_KERNEL=y
|
||||
CONFIG_INIT_ENV_ARG_LIMIT=32
|
||||
|
||||
#
|
||||
# General setup
|
||||
|
@ -30,24 +31,28 @@ CONFIG_SYSVIPC=y
|
|||
CONFIG_POSIX_MQUEUE=y
|
||||
# CONFIG_BSD_PROCESS_ACCT is not set
|
||||
CONFIG_SYSCTL=y
|
||||
CONFIG_LOG_BUF_SHIFT=17
|
||||
# CONFIG_AUDIT is not set
|
||||
CONFIG_HOTPLUG=y
|
||||
CONFIG_KOBJECT_UEVENT=y
|
||||
CONFIG_IKCONFIG=y
|
||||
CONFIG_IKCONFIG_PROC=y
|
||||
CONFIG_CPUSETS=y
|
||||
# CONFIG_EMBEDDED is not set
|
||||
CONFIG_KALLSYMS=y
|
||||
# CONFIG_KALLSYMS_ALL is not set
|
||||
# CONFIG_KALLSYMS_EXTRA_PASS is not set
|
||||
CONFIG_PRINTK=y
|
||||
CONFIG_BUG=y
|
||||
CONFIG_BASE_FULL=y
|
||||
CONFIG_FUTEX=y
|
||||
CONFIG_EPOLL=y
|
||||
# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
|
||||
CONFIG_SHMEM=y
|
||||
CONFIG_CC_ALIGN_FUNCTIONS=0
|
||||
CONFIG_CC_ALIGN_LABELS=0
|
||||
CONFIG_CC_ALIGN_LOOPS=0
|
||||
CONFIG_CC_ALIGN_JUMPS=0
|
||||
# CONFIG_TINY_SHMEM is not set
|
||||
CONFIG_BASE_SMALL=0
|
||||
|
||||
#
|
||||
# Loadable module support
|
||||
|
@ -91,9 +96,12 @@ CONFIG_DISCONTIGMEM=y
|
|||
CONFIG_EEH=y
|
||||
CONFIG_GENERIC_HARDIRQS=y
|
||||
CONFIG_PPC_RTAS=y
|
||||
CONFIG_RTAS_PROC=y
|
||||
CONFIG_RTAS_FLASH=m
|
||||
CONFIG_SCANLOG=m
|
||||
CONFIG_LPARCFG=y
|
||||
CONFIG_SECCOMP=y
|
||||
CONFIG_ISA_DMA_API=y
|
||||
|
||||
#
|
||||
# General setup
|
||||
|
@ -104,6 +112,7 @@ CONFIG_BINFMT_ELF=y
|
|||
CONFIG_BINFMT_MISC=m
|
||||
# CONFIG_PCI_LEGACY_PROC is not set
|
||||
# CONFIG_PCI_NAMES is not set
|
||||
# CONFIG_PCI_DEBUG is not set
|
||||
CONFIG_HOTPLUG_CPU=y
|
||||
|
||||
#
|
||||
|
@ -111,10 +120,6 @@ CONFIG_HOTPLUG_CPU=y
|
|||
#
|
||||
# CONFIG_PCCARD is not set
|
||||
|
||||
#
|
||||
# PC-card bridges
|
||||
#
|
||||
|
||||
#
|
||||
# PCI Hotplug Support
|
||||
#
|
||||
|
@ -149,11 +154,10 @@ CONFIG_FW_LOADER=y
|
|||
#
|
||||
CONFIG_PARPORT=m
|
||||
CONFIG_PARPORT_PC=m
|
||||
CONFIG_PARPORT_PC_CML1=m
|
||||
# CONFIG_PARPORT_SERIAL is not set
|
||||
# CONFIG_PARPORT_PC_FIFO is not set
|
||||
# CONFIG_PARPORT_PC_SUPERIO is not set
|
||||
# CONFIG_PARPORT_OTHER is not set
|
||||
# CONFIG_PARPORT_GSC is not set
|
||||
# CONFIG_PARPORT_1284 is not set
|
||||
|
||||
#
|
||||
|
@ -301,6 +305,7 @@ CONFIG_SCSI_SATA_SVW=y
|
|||
# CONFIG_SCSI_ATA_PIIX is not set
|
||||
# CONFIG_SCSI_SATA_NV is not set
|
||||
# CONFIG_SCSI_SATA_PROMISE is not set
|
||||
# CONFIG_SCSI_SATA_QSTOR is not set
|
||||
# CONFIG_SCSI_SATA_SX4 is not set
|
||||
# CONFIG_SCSI_SATA_SIL is not set
|
||||
# CONFIG_SCSI_SATA_SIS is not set
|
||||
|
@ -310,7 +315,6 @@ CONFIG_SCSI_SATA_SVW=y
|
|||
# CONFIG_SCSI_BUSLOGIC is not set
|
||||
# CONFIG_SCSI_DMX3191D is not set
|
||||
# CONFIG_SCSI_EATA is not set
|
||||
# CONFIG_SCSI_EATA_PIO is not set
|
||||
# CONFIG_SCSI_FUTURE_DOMAIN is not set
|
||||
# CONFIG_SCSI_GDTH is not set
|
||||
# CONFIG_SCSI_IPS is not set
|
||||
|
@ -327,7 +331,6 @@ CONFIG_SCSI_SYM53C8XX_MAX_TAGS=64
|
|||
CONFIG_SCSI_IPR=y
|
||||
CONFIG_SCSI_IPR_TRACE=y
|
||||
CONFIG_SCSI_IPR_DUMP=y
|
||||
# CONFIG_SCSI_QLOGIC_ISP is not set
|
||||
# CONFIG_SCSI_QLOGIC_FC is not set
|
||||
# CONFIG_SCSI_QLOGIC_1280 is not set
|
||||
CONFIG_SCSI_QLA2XXX=y
|
||||
|
@ -336,6 +339,7 @@ CONFIG_SCSI_QLA22XX=m
|
|||
CONFIG_SCSI_QLA2300=m
|
||||
CONFIG_SCSI_QLA2322=m
|
||||
CONFIG_SCSI_QLA6312=m
|
||||
CONFIG_SCSI_LPFC=m
|
||||
# CONFIG_SCSI_DC395x is not set
|
||||
# CONFIG_SCSI_DC390T is not set
|
||||
CONFIG_SCSI_DEBUG=m
|
||||
|
@ -358,6 +362,8 @@ CONFIG_DM_CRYPT=m
|
|||
CONFIG_DM_SNAPSHOT=m
|
||||
CONFIG_DM_MIRROR=m
|
||||
CONFIG_DM_ZERO=m
|
||||
CONFIG_DM_MULTIPATH=m
|
||||
CONFIG_DM_MULTIPATH_EMC=m
|
||||
|
||||
#
|
||||
# Fusion MPT device support
|
||||
|
@ -405,6 +411,7 @@ CONFIG_IEEE1394_AMDTP=m
|
|||
#
|
||||
CONFIG_ADB=y
|
||||
CONFIG_ADB_PMU=y
|
||||
CONFIG_PMAC_SMU=y
|
||||
# CONFIG_PMAC_PBOOK is not set
|
||||
# CONFIG_PMAC_BACKLIGHT is not set
|
||||
# CONFIG_INPUT_ADBHID is not set
|
||||
|
@ -420,7 +427,6 @@ CONFIG_NET=y
|
|||
#
|
||||
CONFIG_PACKET=y
|
||||
# CONFIG_PACKET_MMAP is not set
|
||||
# CONFIG_NETLINK_DEV is not set
|
||||
CONFIG_UNIX=y
|
||||
CONFIG_NET_KEY=m
|
||||
CONFIG_INET=y
|
||||
|
@ -588,7 +594,6 @@ CONFIG_PCNET32=y
|
|||
# CONFIG_DGRS is not set
|
||||
# CONFIG_EEPRO100 is not set
|
||||
CONFIG_E100=y
|
||||
# CONFIG_E100_NAPI is not set
|
||||
# CONFIG_FEALNX is not set
|
||||
# CONFIG_NATSEMI is not set
|
||||
# CONFIG_NE2K_PCI is not set
|
||||
|
@ -614,6 +619,8 @@ CONFIG_E1000=y
|
|||
# CONFIG_SK98LIN is not set
|
||||
# CONFIG_VIA_VELOCITY is not set
|
||||
CONFIG_TIGON3=y
|
||||
# CONFIG_BNX2 is not set
|
||||
# CONFIG_MV643XX_ETH is not set
|
||||
|
||||
#
|
||||
# Ethernet (10000 Mbit)
|
||||
|
@ -682,20 +689,6 @@ CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768
|
|||
CONFIG_INPUT_EVDEV=m
|
||||
# CONFIG_INPUT_EVBUG is not set
|
||||
|
||||
#
|
||||
# Input I/O drivers
|
||||
#
|
||||
# CONFIG_GAMEPORT is not set
|
||||
CONFIG_SOUND_GAMEPORT=y
|
||||
CONFIG_SERIO=y
|
||||
CONFIG_SERIO_I8042=y
|
||||
# CONFIG_SERIO_SERPORT is not set
|
||||
# CONFIG_SERIO_CT82C710 is not set
|
||||
# CONFIG_SERIO_PARKBD is not set
|
||||
# CONFIG_SERIO_PCIPS2 is not set
|
||||
CONFIG_SERIO_LIBPS2=y
|
||||
# CONFIG_SERIO_RAW is not set
|
||||
|
||||
#
|
||||
# Input Device Drivers
|
||||
#
|
||||
|
@ -715,6 +708,18 @@ CONFIG_INPUT_MISC=y
|
|||
CONFIG_INPUT_PCSPKR=m
|
||||
# CONFIG_INPUT_UINPUT is not set
|
||||
|
||||
#
|
||||
# Hardware I/O ports
|
||||
#
|
||||
CONFIG_SERIO=y
|
||||
CONFIG_SERIO_I8042=y
|
||||
# CONFIG_SERIO_SERPORT is not set
|
||||
# CONFIG_SERIO_PARKBD is not set
|
||||
# CONFIG_SERIO_PCIPS2 is not set
|
||||
CONFIG_SERIO_LIBPS2=y
|
||||
# CONFIG_SERIO_RAW is not set
|
||||
# CONFIG_GAMEPORT is not set
|
||||
|
||||
#
|
||||
# Character devices
|
||||
#
|
||||
|
@ -738,6 +743,7 @@ CONFIG_SERIAL_CORE=y
|
|||
CONFIG_SERIAL_CORE_CONSOLE=y
|
||||
# CONFIG_SERIAL_PMACZILOG is not set
|
||||
CONFIG_SERIAL_ICOM=m
|
||||
CONFIG_SERIAL_JSM=m
|
||||
CONFIG_UNIX98_PTYS=y
|
||||
CONFIG_LEGACY_PTYS=y
|
||||
CONFIG_LEGACY_PTY_COUNT=256
|
||||
|
@ -766,9 +772,16 @@ CONFIG_HVCS=m
|
|||
#
|
||||
# Ftape, the floppy tape device driver
|
||||
#
|
||||
# CONFIG_AGP is not set
|
||||
# CONFIG_DRM is not set
|
||||
CONFIG_RAW_DRIVER=y
|
||||
CONFIG_MAX_RAW_DEVS=256
|
||||
# CONFIG_HANGCHECK_TIMER is not set
|
||||
|
||||
#
|
||||
# TPM devices
|
||||
#
|
||||
# CONFIG_TCG_TPM is not set
|
||||
|
||||
#
|
||||
# I2C support
|
||||
|
@ -793,9 +806,9 @@ CONFIG_I2C_ALGOBIT=y
|
|||
CONFIG_I2C_AMD8111=y
|
||||
# CONFIG_I2C_I801 is not set
|
||||
# CONFIG_I2C_I810 is not set
|
||||
# CONFIG_I2C_PIIX4 is not set
|
||||
# CONFIG_I2C_ISA is not set
|
||||
CONFIG_I2C_KEYWEST=y
|
||||
# CONFIG_I2C_MPC is not set
|
||||
# CONFIG_I2C_NFORCE2 is not set
|
||||
# CONFIG_I2C_PARPORT is not set
|
||||
# CONFIG_I2C_PARPORT_LIGHT is not set
|
||||
|
@ -822,7 +835,9 @@ CONFIG_I2C_KEYWEST=y
|
|||
# CONFIG_SENSORS_ASB100 is not set
|
||||
# CONFIG_SENSORS_DS1621 is not set
|
||||
# CONFIG_SENSORS_FSCHER is not set
|
||||
# CONFIG_SENSORS_FSCPOS is not set
|
||||
# CONFIG_SENSORS_GL518SM is not set
|
||||
# CONFIG_SENSORS_GL520SM is not set
|
||||
# CONFIG_SENSORS_IT87 is not set
|
||||
# CONFIG_SENSORS_LM63 is not set
|
||||
# CONFIG_SENSORS_LM75 is not set
|
||||
|
@ -833,9 +848,11 @@ CONFIG_I2C_KEYWEST=y
|
|||
# CONFIG_SENSORS_LM85 is not set
|
||||
# CONFIG_SENSORS_LM87 is not set
|
||||
# CONFIG_SENSORS_LM90 is not set
|
||||
# CONFIG_SENSORS_LM92 is not set
|
||||
# CONFIG_SENSORS_MAX1619 is not set
|
||||
# CONFIG_SENSORS_PC87360 is not set
|
||||
# CONFIG_SENSORS_SMSC47B397 is not set
|
||||
# CONFIG_SENSORS_SIS5595 is not set
|
||||
# CONFIG_SENSORS_SMSC47M1 is not set
|
||||
# CONFIG_SENSORS_VIA686A is not set
|
||||
# CONFIG_SENSORS_W83781D is not set
|
||||
|
@ -845,6 +862,7 @@ CONFIG_I2C_KEYWEST=y
|
|||
#
|
||||
# Other I2C Chip support
|
||||
#
|
||||
# CONFIG_SENSORS_DS1337 is not set
|
||||
# CONFIG_SENSORS_EEPROM is not set
|
||||
# CONFIG_SENSORS_PCF8574 is not set
|
||||
# CONFIG_SENSORS_PCF8591 is not set
|
||||
|
@ -877,6 +895,11 @@ CONFIG_I2C_KEYWEST=y
|
|||
# Graphics support
|
||||
#
|
||||
CONFIG_FB=y
|
||||
CONFIG_FB_CFB_FILLRECT=y
|
||||
CONFIG_FB_CFB_COPYAREA=y
|
||||
CONFIG_FB_CFB_IMAGEBLIT=y
|
||||
CONFIG_FB_SOFT_CURSOR=y
|
||||
CONFIG_FB_MACMODES=y
|
||||
CONFIG_FB_MODE_HELPERS=y
|
||||
CONFIG_FB_TILEBLITTING=y
|
||||
# CONFIG_FB_CIRRUS is not set
|
||||
|
@ -890,9 +913,8 @@ CONFIG_FB_OF=y
|
|||
# CONFIG_FB_ASILIANT is not set
|
||||
# CONFIG_FB_IMSTT is not set
|
||||
# CONFIG_FB_VGA16 is not set
|
||||
CONFIG_FB_RIVA=y
|
||||
CONFIG_FB_RIVA_I2C=y
|
||||
# CONFIG_FB_RIVA_DEBUG is not set
|
||||
# CONFIG_FB_NVIDIA is not set
|
||||
# CONFIG_FB_RIVA is not set
|
||||
CONFIG_FB_MATROX=y
|
||||
CONFIG_FB_MATROX_MILLENIUM=y
|
||||
CONFIG_FB_MATROX_MYSTIQUE=y
|
||||
|
@ -913,6 +935,7 @@ CONFIG_FB_RADEON_I2C=y
|
|||
# CONFIG_FB_3DFX is not set
|
||||
# CONFIG_FB_VOODOO1 is not set
|
||||
# CONFIG_FB_TRIDENT is not set
|
||||
# CONFIG_FB_S1D13XXX is not set
|
||||
# CONFIG_FB_VIRTUAL is not set
|
||||
|
||||
#
|
||||
|
@ -946,6 +969,8 @@ CONFIG_LCD_DEVICE=y
|
|||
#
|
||||
# USB support
|
||||
#
|
||||
CONFIG_USB_ARCH_HAS_HCD=y
|
||||
CONFIG_USB_ARCH_HAS_OHCI=y
|
||||
CONFIG_USB=y
|
||||
# CONFIG_USB_DEBUG is not set
|
||||
|
||||
|
@ -956,8 +981,6 @@ CONFIG_USB_DEVICEFS=y
|
|||
# CONFIG_USB_BANDWIDTH is not set
|
||||
# CONFIG_USB_DYNAMIC_MINORS is not set
|
||||
# CONFIG_USB_OTG is not set
|
||||
CONFIG_USB_ARCH_HAS_HCD=y
|
||||
CONFIG_USB_ARCH_HAS_OHCI=y
|
||||
|
||||
#
|
||||
# USB Host Controller Drivers
|
||||
|
@ -966,6 +989,8 @@ CONFIG_USB_EHCI_HCD=y
|
|||
# CONFIG_USB_EHCI_SPLIT_ISO is not set
|
||||
# CONFIG_USB_EHCI_ROOT_HUB_TT is not set
|
||||
CONFIG_USB_OHCI_HCD=y
|
||||
# CONFIG_USB_OHCI_BIG_ENDIAN is not set
|
||||
CONFIG_USB_OHCI_LITTLE_ENDIAN=y
|
||||
# CONFIG_USB_UHCI_HCD is not set
|
||||
# CONFIG_USB_SL811_HCD is not set
|
||||
|
||||
|
@ -981,12 +1006,11 @@ CONFIG_USB_OHCI_HCD=y
|
|||
#
|
||||
CONFIG_USB_STORAGE=m
|
||||
# CONFIG_USB_STORAGE_DEBUG is not set
|
||||
CONFIG_USB_STORAGE_RW_DETECT=y
|
||||
# CONFIG_USB_STORAGE_DATAFAB is not set
|
||||
# CONFIG_USB_STORAGE_FREECOM is not set
|
||||
# CONFIG_USB_STORAGE_ISD200 is not set
|
||||
# CONFIG_USB_STORAGE_DPCM is not set
|
||||
# CONFIG_USB_STORAGE_HP8200e is not set
|
||||
# CONFIG_USB_STORAGE_USBAT is not set
|
||||
# CONFIG_USB_STORAGE_SDDR09 is not set
|
||||
# CONFIG_USB_STORAGE_SDDR55 is not set
|
||||
# CONFIG_USB_STORAGE_JUMPSHOT is not set
|
||||
|
@ -1030,6 +1054,7 @@ CONFIG_USB_HIDDEV=y
|
|||
CONFIG_USB_PEGASUS=y
|
||||
# CONFIG_USB_RTL8150 is not set
|
||||
# CONFIG_USB_USBNET is not set
|
||||
# CONFIG_USB_MON is not set
|
||||
|
||||
#
|
||||
# USB port drivers
|
||||
|
@ -1055,6 +1080,7 @@ CONFIG_USB_PEGASUS=y
|
|||
# CONFIG_USB_PHIDGETKIT is not set
|
||||
# CONFIG_USB_PHIDGETSERVO is not set
|
||||
# CONFIG_USB_IDMOUSE is not set
|
||||
# CONFIG_USB_SISUSBVGA is not set
|
||||
# CONFIG_USB_TEST is not set
|
||||
|
||||
#
|
||||
|
@ -1276,10 +1302,13 @@ CONFIG_OPROFILE=y
|
|||
#
|
||||
# Kernel hacking
|
||||
#
|
||||
# CONFIG_PRINTK_TIME is not set
|
||||
CONFIG_DEBUG_KERNEL=y
|
||||
CONFIG_MAGIC_SYSRQ=y
|
||||
CONFIG_LOG_BUF_SHIFT=17
|
||||
# CONFIG_SCHEDSTATS is not set
|
||||
# CONFIG_DEBUG_SLAB is not set
|
||||
# CONFIG_DEBUG_SPINLOCK is not set
|
||||
# CONFIG_DEBUG_SPINLOCK_SLEEP is not set
|
||||
# CONFIG_DEBUG_KOBJECT is not set
|
||||
# CONFIG_DEBUG_INFO is not set
|
||||
|
@ -1311,6 +1340,7 @@ CONFIG_CRYPTO_SHA1=m
|
|||
CONFIG_CRYPTO_SHA256=m
|
||||
CONFIG_CRYPTO_SHA512=m
|
||||
CONFIG_CRYPTO_WP512=m
|
||||
CONFIG_CRYPTO_TGR192=m
|
||||
CONFIG_CRYPTO_DES=y
|
||||
CONFIG_CRYPTO_BLOWFISH=m
|
||||
CONFIG_CRYPTO_TWOFISH=m
|
||||
|
|
|
@ -22,8 +22,8 @@ obj-y := stdio_console.o fd.o chan_kern.o chan_user.o line.o
|
|||
obj-$(CONFIG_SSL) += ssl.o
|
||||
obj-$(CONFIG_STDERR_CONSOLE) += stderr_console.o
|
||||
|
||||
obj-$(CONFIG_UML_NET_SLIP) += slip.o
|
||||
obj-$(CONFIG_UML_NET_SLIRP) += slirp.o
|
||||
obj-$(CONFIG_UML_NET_SLIP) += slip.o slip_common.o
|
||||
obj-$(CONFIG_UML_NET_SLIRP) += slirp.o slip_common.o
|
||||
obj-$(CONFIG_UML_NET_DAEMON) += daemon.o
|
||||
obj-$(CONFIG_UML_NET_MCAST) += mcast.o
|
||||
#obj-$(CONFIG_UML_NET_PCAP) += pcap.o $(PCAP)
|
||||
|
@ -41,6 +41,6 @@ obj-$(CONFIG_UML_WATCHDOG) += harddog.o
|
|||
obj-$(CONFIG_BLK_DEV_COW_COMMON) += cow_user.o
|
||||
obj-$(CONFIG_UML_RANDOM) += random.o
|
||||
|
||||
USER_OBJS := fd.o null.o pty.o tty.o xterm.o
|
||||
USER_OBJS := fd.o null.o pty.o tty.o xterm.o slip_common.o
|
||||
|
||||
include arch/um/scripts/Makefile.rules
|
||||
|
|
|
@ -1,10 +1,7 @@
|
|||
#ifndef __UM_SLIP_H
|
||||
#define __UM_SLIP_H
|
||||
|
||||
#define BUF_SIZE 1500
|
||||
/* two bytes each for a (pathological) max packet of escaped chars + *
|
||||
* terminating END char + initial END char */
|
||||
#define ENC_BUF_SIZE (2 * BUF_SIZE + 2)
|
||||
#include "slip_common.h"
|
||||
|
||||
struct slip_data {
|
||||
void *dev;
|
||||
|
@ -12,28 +9,12 @@ struct slip_data {
|
|||
char *addr;
|
||||
char *gate_addr;
|
||||
int slave;
|
||||
unsigned char ibuf[ENC_BUF_SIZE];
|
||||
unsigned char obuf[ENC_BUF_SIZE];
|
||||
int more; /* more data: do not read fd until ibuf has been drained */
|
||||
int pos;
|
||||
int esc;
|
||||
struct slip_proto slip;
|
||||
};
|
||||
|
||||
extern struct net_user_info slip_user_info;
|
||||
|
||||
extern int set_umn_addr(int fd, char *addr, char *ptp_addr);
|
||||
extern int slip_user_read(int fd, void *buf, int len, struct slip_data *pri);
|
||||
extern int slip_user_write(int fd, void *buf, int len, struct slip_data *pri);
|
||||
|
||||
#endif
|
||||
|
||||
/*
|
||||
* Overrides for Emacs so that we follow Linus's tabbing style.
|
||||
* Emacs will notice this stuff at the end of the file and automatically
|
||||
* adjust the settings for this buffer only. This must remain at the end
|
||||
* of the file.
|
||||
* ---------------------------------------------------------------------------
|
||||
* Local variables:
|
||||
* c-file-style: "linux"
|
||||
* End:
|
||||
*/
|
||||
|
|
54
arch/um/drivers/slip_common.c
Normal file
54
arch/um/drivers/slip_common.c
Normal file
|
@ -0,0 +1,54 @@
|
|||
#include <string.h>
|
||||
#include "slip_common.h"
|
||||
#include "net_user.h"
|
||||
|
||||
int slip_proto_read(int fd, void *buf, int len, struct slip_proto *slip)
|
||||
{
|
||||
int i, n, size, start;
|
||||
|
||||
if(slip->more > 0){
|
||||
i = 0;
|
||||
while(i < slip->more){
|
||||
size = slip_unesc(slip->ibuf[i++], slip->ibuf,
|
||||
&slip->pos, &slip->esc);
|
||||
if(size){
|
||||
memcpy(buf, slip->ibuf, size);
|
||||
memmove(slip->ibuf, &slip->ibuf[i],
|
||||
slip->more - i);
|
||||
slip->more = slip->more - i;
|
||||
return size;
|
||||
}
|
||||
}
|
||||
slip->more = 0;
|
||||
}
|
||||
|
||||
n = net_read(fd, &slip->ibuf[slip->pos],
|
||||
sizeof(slip->ibuf) - slip->pos);
|
||||
if(n <= 0)
|
||||
return n;
|
||||
|
||||
start = slip->pos;
|
||||
for(i = 0; i < n; i++){
|
||||
size = slip_unesc(slip->ibuf[start + i], slip->ibuf,&slip->pos,
|
||||
&slip->esc);
|
||||
if(size){
|
||||
memcpy(buf, slip->ibuf, size);
|
||||
memmove(slip->ibuf, &slip->ibuf[start+i+1],
|
||||
n - (i + 1));
|
||||
slip->more = n - (i + 1);
|
||||
return size;
|
||||
}
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
int slip_proto_write(int fd, void *buf, int len, struct slip_proto *slip)
|
||||
{
|
||||
int actual, n;
|
||||
|
||||
actual = slip_esc(buf, slip->obuf, len);
|
||||
n = net_write(fd, slip->obuf, actual);
|
||||
if(n < 0)
|
||||
return n;
|
||||
else return len;
|
||||
}
|
|
@ -1,10 +1,10 @@
|
|||
/*
|
||||
* Copyright (C) 2002 Jeff Dike (jdike@karaya.com)
|
||||
* Licensed under the GPL
|
||||
*/
|
||||
#ifndef __UM_SLIP_COMMON_H
|
||||
#define __UM_SLIP_COMMON_H
|
||||
|
||||
#ifndef __UM_SLIP_PROTO_H__
|
||||
#define __UM_SLIP_PROTO_H__
|
||||
#define BUF_SIZE 1500
|
||||
/* two bytes each for a (pathological) max packet of escaped chars + *
|
||||
* terminating END char + initial END char */
|
||||
#define ENC_BUF_SIZE (2 * BUF_SIZE + 2)
|
||||
|
||||
/* SLIP protocol characters. */
|
||||
#define SLIP_END 0300 /* indicates end of frame */
|
||||
|
@ -80,15 +80,25 @@ static inline int slip_esc(unsigned char *s, unsigned char *d, int len)
|
|||
return (ptr - d);
|
||||
}
|
||||
|
||||
#endif
|
||||
struct slip_proto {
|
||||
unsigned char ibuf[ENC_BUF_SIZE];
|
||||
unsigned char obuf[ENC_BUF_SIZE];
|
||||
int more; /* more data: do not read fd until ibuf has been drained */
|
||||
int pos;
|
||||
int esc;
|
||||
};
|
||||
|
||||
/*
|
||||
* Overrides for Emacs so that we follow Linus's tabbing style.
|
||||
* Emacs will notice this stuff at the end of the file and automatically
|
||||
* adjust the settings for this buffer only. This must remain at the end
|
||||
* of the file.
|
||||
* ---------------------------------------------------------------------------
|
||||
* Local variables:
|
||||
* c-file-style: "linux"
|
||||
* End:
|
||||
*/
|
||||
#define SLIP_PROTO_INIT { \
|
||||
.ibuf = { '\0' }, \
|
||||
.obuf = { '\0' }, \
|
||||
.more = 0, \
|
||||
.pos = 0, \
|
||||
.esc = 0 \
|
||||
}
|
||||
|
||||
extern int slip_proto_read(int fd, void *buf, int len,
|
||||
struct slip_proto *slip);
|
||||
extern int slip_proto_write(int fd, void *buf, int len,
|
||||
struct slip_proto *slip);
|
||||
|
||||
#endif
|
|
@ -26,16 +26,16 @@ void slip_init(struct net_device *dev, void *data)
|
|||
.addr = NULL,
|
||||
.gate_addr = init->gate_addr,
|
||||
.slave = -1,
|
||||
.ibuf = { '\0' },
|
||||
.obuf = { '\0' },
|
||||
.pos = 0,
|
||||
.esc = 0,
|
||||
.slip = SLIP_PROTO_INIT,
|
||||
.dev = dev });
|
||||
|
||||
dev->init = NULL;
|
||||
dev->header_cache_update = NULL;
|
||||
dev->hard_header_cache = NULL;
|
||||
dev->hard_header = NULL;
|
||||
dev->hard_header_len = 0;
|
||||
dev->addr_len = 4;
|
||||
dev->type = ARPHRD_ETHER;
|
||||
dev->addr_len = 0;
|
||||
dev->type = ARPHRD_SLIP;
|
||||
dev->tx_queue_len = 256;
|
||||
dev->flags = IFF_NOARP;
|
||||
printk("SLIP backend - SLIP IP = %s\n", spri->gate_addr);
|
||||
|
|
|
@ -13,7 +13,7 @@
|
|||
#include "user.h"
|
||||
#include "net_user.h"
|
||||
#include "slip.h"
|
||||
#include "slip_proto.h"
|
||||
#include "slip_common.h"
|
||||
#include "helper.h"
|
||||
#include "os.h"
|
||||
|
||||
|
@ -77,41 +77,51 @@ static int slip_tramp(char **argv, int fd)
|
|||
err = os_pipe(fds, 1, 0);
|
||||
if(err < 0){
|
||||
printk("slip_tramp : pipe failed, err = %d\n", -err);
|
||||
return(err);
|
||||
goto out;
|
||||
}
|
||||
|
||||
err = 0;
|
||||
pe_data.stdin = fd;
|
||||
pe_data.stdout = fds[1];
|
||||
pe_data.close_me = fds[0];
|
||||
pid = run_helper(slip_pre_exec, &pe_data, argv, NULL);
|
||||
err = run_helper(slip_pre_exec, &pe_data, argv, NULL);
|
||||
if(err < 0)
|
||||
goto out_close;
|
||||
pid = err;
|
||||
|
||||
if(pid < 0) err = pid;
|
||||
else {
|
||||
output_len = page_size();
|
||||
output = um_kmalloc(output_len);
|
||||
if(output == NULL)
|
||||
printk("slip_tramp : failed to allocate output "
|
||||
"buffer\n");
|
||||
|
||||
os_close_file(fds[1]);
|
||||
read_output(fds[0], output, output_len);
|
||||
if(output != NULL){
|
||||
printk("%s", output);
|
||||
kfree(output);
|
||||
}
|
||||
CATCH_EINTR(err = waitpid(pid, &status, 0));
|
||||
if(err < 0)
|
||||
err = errno;
|
||||
else if(!WIFEXITED(status) || (WEXITSTATUS(status) != 0)){
|
||||
printk("'%s' didn't exit with status 0\n", argv[0]);
|
||||
err = -EINVAL;
|
||||
}
|
||||
output_len = page_size();
|
||||
output = um_kmalloc(output_len);
|
||||
if(output == NULL){
|
||||
printk("slip_tramp : failed to allocate output buffer\n");
|
||||
os_kill_process(pid, 1);
|
||||
err = -ENOMEM;
|
||||
goto out_free;
|
||||
}
|
||||
|
||||
os_close_file(fds[1]);
|
||||
read_output(fds[0], output, output_len);
|
||||
printk("%s", output);
|
||||
|
||||
CATCH_EINTR(err = waitpid(pid, &status, 0));
|
||||
if(err < 0)
|
||||
err = errno;
|
||||
else if(!WIFEXITED(status) || (WEXITSTATUS(status) != 0)){
|
||||
printk("'%s' didn't exit with status 0\n", argv[0]);
|
||||
err = -EINVAL;
|
||||
}
|
||||
else err = 0;
|
||||
|
||||
os_close_file(fds[0]);
|
||||
|
||||
return(err);
|
||||
out_free:
|
||||
kfree(output);
|
||||
return err;
|
||||
|
||||
out_close:
|
||||
os_close_file(fds[0]);
|
||||
os_close_file(fds[1]);
|
||||
out:
|
||||
return err;
|
||||
}
|
||||
|
||||
static int slip_open(void *data)
|
||||
|
@ -123,21 +133,26 @@ static int slip_open(void *data)
|
|||
NULL };
|
||||
int sfd, mfd, err;
|
||||
|
||||
mfd = get_pty();
|
||||
if(mfd < 0){
|
||||
printk("umn : Failed to open pty, err = %d\n", -mfd);
|
||||
return(mfd);
|
||||
err = get_pty();
|
||||
if(err < 0){
|
||||
printk("slip-open : Failed to open pty, err = %d\n", -err);
|
||||
goto out;
|
||||
}
|
||||
sfd = os_open_file(ptsname(mfd), of_rdwr(OPENFLAGS()), 0);
|
||||
if(sfd < 0){
|
||||
printk("Couldn't open tty for slip line, err = %d\n", -sfd);
|
||||
os_close_file(mfd);
|
||||
return(sfd);
|
||||
mfd = err;
|
||||
|
||||
err = os_open_file(ptsname(mfd), of_rdwr(OPENFLAGS()), 0);
|
||||
if(err < 0){
|
||||
printk("Couldn't open tty for slip line, err = %d\n", -err);
|
||||
goto out_close;
|
||||
}
|
||||
if(set_up_tty(sfd)) return(-1);
|
||||
sfd = err;
|
||||
|
||||
if(set_up_tty(sfd))
|
||||
goto out_close2;
|
||||
|
||||
pri->slave = sfd;
|
||||
pri->pos = 0;
|
||||
pri->esc = 0;
|
||||
pri->slip.pos = 0;
|
||||
pri->slip.esc = 0;
|
||||
if(pri->gate_addr != NULL){
|
||||
sprintf(version_buf, "%d", UML_NET_VERSION);
|
||||
strcpy(gate_buf, pri->gate_addr);
|
||||
|
@ -146,12 +161,12 @@ static int slip_open(void *data)
|
|||
|
||||
if(err < 0){
|
||||
printk("slip_tramp failed - err = %d\n", -err);
|
||||
return(err);
|
||||
goto out_close2;
|
||||
}
|
||||
err = os_get_ifname(pri->slave, pri->name);
|
||||
if(err < 0){
|
||||
printk("get_ifname failed, err = %d\n", -err);
|
||||
return(err);
|
||||
goto out_close2;
|
||||
}
|
||||
iter_addresses(pri->dev, open_addr, pri->name);
|
||||
}
|
||||
|
@ -160,10 +175,16 @@ static int slip_open(void *data)
|
|||
if(err < 0){
|
||||
printk("Failed to set slip discipline encapsulation - "
|
||||
"err = %d\n", -err);
|
||||
return(err);
|
||||
goto out_close2;
|
||||
}
|
||||
}
|
||||
return(mfd);
|
||||
out_close2:
|
||||
os_close_file(sfd);
|
||||
out_close:
|
||||
os_close_file(mfd);
|
||||
out:
|
||||
return err;
|
||||
}
|
||||
|
||||
static void slip_close(int fd, void *data)
|
||||
|
@ -190,48 +211,12 @@ static void slip_close(int fd, void *data)
|
|||
|
||||
int slip_user_read(int fd, void *buf, int len, struct slip_data *pri)
|
||||
{
|
||||
int i, n, size, start;
|
||||
|
||||
if(pri->more>0) {
|
||||
i = 0;
|
||||
while(i < pri->more) {
|
||||
size = slip_unesc(pri->ibuf[i++],
|
||||
pri->ibuf, &pri->pos, &pri->esc);
|
||||
if(size){
|
||||
memcpy(buf, pri->ibuf, size);
|
||||
memmove(pri->ibuf, &pri->ibuf[i], pri->more-i);
|
||||
pri->more=pri->more-i;
|
||||
return(size);
|
||||
}
|
||||
}
|
||||
pri->more=0;
|
||||
}
|
||||
|
||||
n = net_read(fd, &pri->ibuf[pri->pos], sizeof(pri->ibuf) - pri->pos);
|
||||
if(n <= 0) return(n);
|
||||
|
||||
start = pri->pos;
|
||||
for(i = 0; i < n; i++){
|
||||
size = slip_unesc(pri->ibuf[start + i],
|
||||
pri->ibuf, &pri->pos, &pri->esc);
|
||||
if(size){
|
||||
memcpy(buf, pri->ibuf, size);
|
||||
memmove(pri->ibuf, &pri->ibuf[start+i+1], n-(i+1));
|
||||
pri->more=n-(i+1);
|
||||
return(size);
|
||||
}
|
||||
}
|
||||
return(0);
|
||||
return slip_proto_read(fd, buf, len, &pri->slip);
|
||||
}
|
||||
|
||||
int slip_user_write(int fd, void *buf, int len, struct slip_data *pri)
|
||||
{
|
||||
int actual, n;
|
||||
|
||||
actual = slip_esc(buf, pri->obuf, len);
|
||||
n = net_write(fd, pri->obuf, actual);
|
||||
if(n < 0) return(n);
|
||||
else return(len);
|
||||
return slip_proto_write(fd, buf, len, &pri->slip);
|
||||
}
|
||||
|
||||
static int slip_set_mtu(int mtu, void *data)
|
||||
|
@ -267,14 +252,3 @@ struct net_user_info slip_user_info = {
|
|||
.delete_address = slip_del_addr,
|
||||
.max_packet = BUF_SIZE
|
||||
};
|
||||
|
||||
/*
|
||||
* Overrides for Emacs so that we follow Linus's tabbing style.
|
||||
* Emacs will notice this stuff at the end of the file and automatically
|
||||
* adjust the settings for this buffer only. This must remain at the end
|
||||
* of the file.
|
||||
* ---------------------------------------------------------------------------
|
||||
* Local variables:
|
||||
* c-file-style: "linux"
|
||||
* End:
|
||||
*/
|
||||
|
|
|
@ -1,10 +1,7 @@
|
|||
#ifndef __UM_SLIRP_H
|
||||
#define __UM_SLIRP_H
|
||||
|
||||
#define BUF_SIZE 1500
|
||||
/* two bytes each for a (pathological) max packet of escaped chars + *
|
||||
* terminating END char + initial END char */
|
||||
#define ENC_BUF_SIZE (2 * BUF_SIZE + 2)
|
||||
#include "slip_common.h"
|
||||
|
||||
#define SLIRP_MAX_ARGS 100
|
||||
/*
|
||||
|
@ -24,28 +21,13 @@ struct slirp_data {
|
|||
struct arg_list_dummy_wrapper argw;
|
||||
int pid;
|
||||
int slave;
|
||||
unsigned char ibuf[ENC_BUF_SIZE];
|
||||
unsigned char obuf[ENC_BUF_SIZE];
|
||||
int more; /* more data: do not read fd until ibuf has been drained */
|
||||
int pos;
|
||||
int esc;
|
||||
struct slip_proto slip;
|
||||
};
|
||||
|
||||
extern struct net_user_info slirp_user_info;
|
||||
|
||||
extern int set_umn_addr(int fd, char *addr, char *ptp_addr);
|
||||
extern int slirp_user_read(int fd, void *buf, int len, struct slirp_data *pri);
|
||||
extern int slirp_user_write(int fd, void *buf, int len, struct slirp_data *pri);
|
||||
extern int slirp_user_write(int fd, void *buf, int len,
|
||||
struct slirp_data *pri);
|
||||
|
||||
#endif
|
||||
|
||||
/*
|
||||
* Overrides for Emacs so that we follow Linus's tabbing style.
|
||||
* Emacs will notice this stuff at the end of the file and automatically
|
||||
* adjust the settings for this buffer only. This must remain at the end
|
||||
* of the file.
|
||||
* ---------------------------------------------------------------------------
|
||||
* Local variables:
|
||||
* c-file-style: "linux"
|
||||
* End:
|
||||
*/
|
||||
|
|
|
@ -25,10 +25,7 @@ void slirp_init(struct net_device *dev, void *data)
|
|||
{ .argw = init->argw,
|
||||
.pid = -1,
|
||||
.slave = -1,
|
||||
.ibuf = { '\0' },
|
||||
.obuf = { '\0' },
|
||||
.pos = 0,
|
||||
.esc = 0,
|
||||
.slip = SLIP_PROTO_INIT,
|
||||
.dev = dev });
|
||||
|
||||
dev->init = NULL;
|
||||
|
|
|
@ -12,7 +12,7 @@
|
|||
#include "user.h"
|
||||
#include "net_user.h"
|
||||
#include "slirp.h"
|
||||
#include "slip_proto.h"
|
||||
#include "slip_common.h"
|
||||
#include "helper.h"
|
||||
#include "os.h"
|
||||
|
||||
|
@ -48,47 +48,32 @@ static int slirp_tramp(char **argv, int fd)
|
|||
return(pid);
|
||||
}
|
||||
|
||||
/* XXX This is just a trivial wrapper around os_pipe */
|
||||
static int slirp_datachan(int *mfd, int *sfd)
|
||||
{
|
||||
int fds[2], err;
|
||||
|
||||
err = os_pipe(fds, 1, 1);
|
||||
if(err < 0){
|
||||
printk("slirp_datachan: Failed to open pipe, err = %d\n", -err);
|
||||
return(err);
|
||||
}
|
||||
|
||||
*mfd = fds[0];
|
||||
*sfd = fds[1];
|
||||
return(0);
|
||||
}
|
||||
|
||||
static int slirp_open(void *data)
|
||||
{
|
||||
struct slirp_data *pri = data;
|
||||
int sfd, mfd, pid, err;
|
||||
int fds[2], pid, err;
|
||||
|
||||
err = slirp_datachan(&mfd, &sfd);
|
||||
err = os_pipe(fds, 1, 1);
|
||||
if(err)
|
||||
return(err);
|
||||
|
||||
pid = slirp_tramp(pri->argw.argv, sfd);
|
||||
|
||||
if(pid < 0){
|
||||
printk("slirp_tramp failed - errno = %d\n", -pid);
|
||||
os_close_file(sfd);
|
||||
os_close_file(mfd);
|
||||
return(pid);
|
||||
err = slirp_tramp(pri->argw.argv, fds[1]);
|
||||
if(err < 0){
|
||||
printk("slirp_tramp failed - errno = %d\n", -err);
|
||||
goto out;
|
||||
}
|
||||
pid = err;
|
||||
|
||||
pri->slave = sfd;
|
||||
pri->pos = 0;
|
||||
pri->esc = 0;
|
||||
pri->slave = fds[1];
|
||||
pri->slip.pos = 0;
|
||||
pri->slip.esc = 0;
|
||||
pri->pid = err;
|
||||
|
||||
pri->pid = pid;
|
||||
|
||||
return(mfd);
|
||||
return(fds[0]);
|
||||
out:
|
||||
os_close_file(fds[0]);
|
||||
os_close_file(fds[1]);
|
||||
return err;
|
||||
}
|
||||
|
||||
static void slirp_close(int fd, void *data)
|
||||
|
@ -129,48 +114,12 @@ static void slirp_close(int fd, void *data)
|
|||
|
||||
int slirp_user_read(int fd, void *buf, int len, struct slirp_data *pri)
|
||||
{
|
||||
int i, n, size, start;
|
||||
|
||||
if(pri->more>0) {
|
||||
i = 0;
|
||||
while(i < pri->more) {
|
||||
size = slip_unesc(pri->ibuf[i++],
|
||||
pri->ibuf,&pri->pos,&pri->esc);
|
||||
if(size){
|
||||
memcpy(buf, pri->ibuf, size);
|
||||
memmove(pri->ibuf, &pri->ibuf[i], pri->more-i);
|
||||
pri->more=pri->more-i;
|
||||
return(size);
|
||||
}
|
||||
}
|
||||
pri->more=0;
|
||||
}
|
||||
|
||||
n = net_read(fd, &pri->ibuf[pri->pos], sizeof(pri->ibuf) - pri->pos);
|
||||
if(n <= 0) return(n);
|
||||
|
||||
start = pri->pos;
|
||||
for(i = 0; i < n; i++){
|
||||
size = slip_unesc(pri->ibuf[start + i],
|
||||
pri->ibuf,&pri->pos,&pri->esc);
|
||||
if(size){
|
||||
memcpy(buf, pri->ibuf, size);
|
||||
memmove(pri->ibuf, &pri->ibuf[start+i+1], n-(i+1));
|
||||
pri->more=n-(i+1);
|
||||
return(size);
|
||||
}
|
||||
}
|
||||
return(0);
|
||||
return slip_proto_read(fd, buf, len, &pri->slip);
|
||||
}
|
||||
|
||||
int slirp_user_write(int fd, void *buf, int len, struct slirp_data *pri)
|
||||
{
|
||||
int actual, n;
|
||||
|
||||
actual = slip_esc(buf, pri->obuf, len);
|
||||
n = net_write(fd, pri->obuf, actual);
|
||||
if(n < 0) return(n);
|
||||
else return(len);
|
||||
return slip_proto_write(fd, buf, len, &pri->slip);
|
||||
}
|
||||
|
||||
static int slirp_set_mtu(int mtu, void *data)
|
||||
|
@ -188,14 +137,3 @@ struct net_user_info slirp_user_info = {
|
|||
.delete_address = NULL,
|
||||
.max_packet = BUF_SIZE
|
||||
};
|
||||
|
||||
/*
|
||||
* Overrides for Emacs so that we follow Linus's tabbing style.
|
||||
* Emacs will notice this stuff at the end of the file and automatically
|
||||
* adjust the settings for this buffer only. This must remain at the end
|
||||
* of the file.
|
||||
* ---------------------------------------------------------------------------
|
||||
* Local variables:
|
||||
* c-file-style: "linux"
|
||||
* End:
|
||||
*/
|
||||
|
|
|
@ -8,6 +8,8 @@
|
|||
|
||||
#include "uml-config.h"
|
||||
#include "user_constants.h"
|
||||
#include "sysdep/faultinfo.h"
|
||||
#include "choose-mode.h"
|
||||
|
||||
#define MAX_REG_NR (UM_FRAME_SIZE / sizeof(unsigned long))
|
||||
#define MAX_REG_OFFSET (UM_FRAME_SIZE)
|
||||
|
@ -58,9 +60,6 @@ extern int sysemu_supported;
|
|||
#define PTRACE_SYSEMU_SINGLESTEP 32
|
||||
#endif
|
||||
|
||||
#include "sysdep/faultinfo.h"
|
||||
#include "choose-mode.h"
|
||||
|
||||
union uml_pt_regs {
|
||||
#ifdef UML_CONFIG_MODE_TT
|
||||
struct tt_regs {
|
||||
|
|
|
@ -24,8 +24,6 @@
|
|||
#include "mode.h"
|
||||
#include "choose-mode.h"
|
||||
#include "uml-config.h"
|
||||
#include "irq_user.h"
|
||||
#include "time_user.h"
|
||||
#include "os.h"
|
||||
|
||||
/* Set in set_stklim, which is called from main and __wrap_malloc.
|
||||
|
|
|
@ -30,7 +30,6 @@
|
|||
#include "init.h"
|
||||
#include "os.h"
|
||||
#include "uml-config.h"
|
||||
#include "ptrace_user.h"
|
||||
#include "choose-mode.h"
|
||||
#include "mode.h"
|
||||
#ifdef UML_CONFIG_MODE_SKAS
|
||||
|
@ -131,7 +130,7 @@ int start_fork_tramp(void *thread_arg, unsigned long temp_stack,
|
|||
return(arg.pid);
|
||||
}
|
||||
|
||||
static int ptrace_child(void *arg)
|
||||
static int ptrace_child(void)
|
||||
{
|
||||
int ret;
|
||||
int pid = os_getpid(), ppid = getppid();
|
||||
|
@ -160,20 +159,16 @@ static int ptrace_child(void *arg)
|
|||
_exit(ret);
|
||||
}
|
||||
|
||||
static int start_ptraced_child(void **stack_out)
|
||||
static int start_ptraced_child(void)
|
||||
{
|
||||
void *stack;
|
||||
unsigned long sp;
|
||||
int pid, n, status;
|
||||
|
||||
stack = mmap(NULL, PAGE_SIZE, PROT_READ | PROT_WRITE | PROT_EXEC,
|
||||
MAP_PRIVATE | MAP_ANONYMOUS, -1, 0);
|
||||
if(stack == MAP_FAILED)
|
||||
panic("check_ptrace : mmap failed, errno = %d", errno);
|
||||
sp = (unsigned long) stack + PAGE_SIZE - sizeof(void *);
|
||||
pid = clone(ptrace_child, (void *) sp, SIGCHLD, NULL);
|
||||
pid = fork();
|
||||
if(pid == 0)
|
||||
ptrace_child();
|
||||
|
||||
if(pid < 0)
|
||||
panic("check_ptrace : clone failed, errno = %d", errno);
|
||||
panic("check_ptrace : fork failed, errno = %d", errno);
|
||||
CATCH_EINTR(n = waitpid(pid, &status, WUNTRACED));
|
||||
if(n < 0)
|
||||
panic("check_ptrace : wait failed, errno = %d", errno);
|
||||
|
@ -181,7 +176,6 @@ static int start_ptraced_child(void **stack_out)
|
|||
panic("check_ptrace : expected SIGSTOP, got status = %d",
|
||||
status);
|
||||
|
||||
*stack_out = stack;
|
||||
return(pid);
|
||||
}
|
||||
|
||||
|
@ -189,12 +183,12 @@ static int start_ptraced_child(void **stack_out)
|
|||
* just avoid using sysemu, not panic, but only if SYSEMU features are broken.
|
||||
* So only for SYSEMU features we test mustpanic, while normal host features
|
||||
* must work anyway!*/
|
||||
static int stop_ptraced_child(int pid, void *stack, int exitcode, int mustpanic)
|
||||
static int stop_ptraced_child(int pid, int exitcode, int mustexit)
|
||||
{
|
||||
int status, n, ret = 0;
|
||||
|
||||
if(ptrace(PTRACE_CONT, pid, 0, 0) < 0)
|
||||
panic("check_ptrace : ptrace failed, errno = %d", errno);
|
||||
panic("stop_ptraced_child : ptrace failed, errno = %d", errno);
|
||||
CATCH_EINTR(n = waitpid(pid, &status, 0));
|
||||
if(!WIFEXITED(status) || (WEXITSTATUS(status) != exitcode)) {
|
||||
int exit_with = WEXITSTATUS(status);
|
||||
|
@ -205,15 +199,13 @@ static int stop_ptraced_child(int pid, void *stack, int exitcode, int mustpanic)
|
|||
printk("check_ptrace : child exited with exitcode %d, while "
|
||||
"expecting %d; status 0x%x", exit_with,
|
||||
exitcode, status);
|
||||
if (mustpanic)
|
||||
if (mustexit)
|
||||
panic("\n");
|
||||
else
|
||||
printk("\n");
|
||||
ret = -1;
|
||||
}
|
||||
|
||||
if(munmap(stack, PAGE_SIZE) < 0)
|
||||
panic("check_ptrace : munmap failed, errno = %d", errno);
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
@ -235,12 +227,11 @@ __uml_setup("nosysemu", nosysemu_cmd_param,
|
|||
|
||||
static void __init check_sysemu(void)
|
||||
{
|
||||
void *stack;
|
||||
int pid, syscall, n, status, count=0;
|
||||
|
||||
printk("Checking syscall emulation patch for ptrace...");
|
||||
sysemu_supported = 0;
|
||||
pid = start_ptraced_child(&stack);
|
||||
pid = start_ptraced_child();
|
||||
|
||||
if(ptrace(PTRACE_SYSEMU, pid, 0, 0) < 0)
|
||||
goto fail;
|
||||
|
@ -258,7 +249,7 @@ static void __init check_sysemu(void)
|
|||
panic("check_sysemu : failed to modify system "
|
||||
"call return, errno = %d", errno);
|
||||
|
||||
if (stop_ptraced_child(pid, stack, 0, 0) < 0)
|
||||
if (stop_ptraced_child(pid, 0, 0) < 0)
|
||||
goto fail_stopped;
|
||||
|
||||
sysemu_supported = 1;
|
||||
|
@ -266,7 +257,7 @@ static void __init check_sysemu(void)
|
|||
set_using_sysemu(!force_sysemu_disabled);
|
||||
|
||||
printk("Checking advanced syscall emulation patch for ptrace...");
|
||||
pid = start_ptraced_child(&stack);
|
||||
pid = start_ptraced_child();
|
||||
while(1){
|
||||
count++;
|
||||
if(ptrace(PTRACE_SYSEMU_SINGLESTEP, pid, 0, 0) < 0)
|
||||
|
@ -291,7 +282,7 @@ static void __init check_sysemu(void)
|
|||
break;
|
||||
}
|
||||
}
|
||||
if (stop_ptraced_child(pid, stack, 0, 0) < 0)
|
||||
if (stop_ptraced_child(pid, 0, 0) < 0)
|
||||
goto fail_stopped;
|
||||
|
||||
sysemu_supported = 2;
|
||||
|
@ -302,18 +293,17 @@ static void __init check_sysemu(void)
|
|||
return;
|
||||
|
||||
fail:
|
||||
stop_ptraced_child(pid, stack, 1, 0);
|
||||
stop_ptraced_child(pid, 1, 0);
|
||||
fail_stopped:
|
||||
printk("missing\n");
|
||||
}
|
||||
|
||||
void __init check_ptrace(void)
|
||||
{
|
||||
void *stack;
|
||||
int pid, syscall, n, status;
|
||||
|
||||
printk("Checking that ptrace can change system call numbers...");
|
||||
pid = start_ptraced_child(&stack);
|
||||
pid = start_ptraced_child();
|
||||
|
||||
if (ptrace(PTRACE_OLDSETOPTIONS, pid, 0, (void *)PTRACE_O_TRACESYSGOOD) < 0)
|
||||
panic("check_ptrace: PTRACE_SETOPTIONS failed, errno = %d", errno);
|
||||
|
@ -340,7 +330,7 @@ void __init check_ptrace(void)
|
|||
break;
|
||||
}
|
||||
}
|
||||
stop_ptraced_child(pid, stack, 0, 1);
|
||||
stop_ptraced_child(pid, 0, 1);
|
||||
printk("OK\n");
|
||||
check_sysemu();
|
||||
}
|
||||
|
@ -372,11 +362,10 @@ void forward_pending_sigio(int target)
|
|||
static inline int check_skas3_ptrace_support(void)
|
||||
{
|
||||
struct ptrace_faultinfo fi;
|
||||
void *stack;
|
||||
int pid, n, ret = 1;
|
||||
|
||||
printf("Checking for the skas3 patch in the host...");
|
||||
pid = start_ptraced_child(&stack);
|
||||
pid = start_ptraced_child();
|
||||
|
||||
n = ptrace(PTRACE_FAULTINFO, pid, 0, &fi);
|
||||
if (n < 0) {
|
||||
|
@ -391,7 +380,7 @@ static inline int check_skas3_ptrace_support(void)
|
|||
}
|
||||
|
||||
init_registers(pid);
|
||||
stop_ptraced_child(pid, stack, 1, 1);
|
||||
stop_ptraced_child(pid, 1, 1);
|
||||
|
||||
return(ret);
|
||||
}
|
||||
|
|
|
@ -26,7 +26,6 @@
|
|||
#include "asm/setup.h"
|
||||
#include "ubd_user.h"
|
||||
#include "asm/current.h"
|
||||
#include "asm/setup.h"
|
||||
#include "user_util.h"
|
||||
#include "kern_util.h"
|
||||
#include "kern.h"
|
||||
|
|
|
@ -14,7 +14,7 @@ quiet_cmd_make_link = SYMLINK $@
|
|||
cmd_make_link = ln -sf $(srctree)/arch/$(SUBARCH)/$($(notdir $@)-dir)/$(notdir $@) $@
|
||||
|
||||
# this needs to be before the foreach, because targets does not accept
|
||||
# complete paths like $(obj)/$(f). To make sure this works, use a := assignment,
|
||||
# complete paths like $(obj)/$(f). To make sure this works, use a := assignment
|
||||
# or we will get $(obj)/$(f) in the "targets" value.
|
||||
# Also, this forces you to use the := syntax when assigning to targets.
|
||||
# Otherwise the line below will cause an infinite loop (if you don't know why,
|
||||
|
|
|
@ -41,6 +41,7 @@
|
|||
#include <asm/uaccess.h>
|
||||
#include <asm/io.h>
|
||||
|
||||
#include <linux/dma-mapping.h>
|
||||
#include <linux/blkdev.h>
|
||||
#include <linux/genhd.h>
|
||||
#include <linux/completion.h>
|
||||
|
@ -126,8 +127,6 @@ static struct board_type products[] = {
|
|||
#define MAX_CTLR_ORIG 8
|
||||
|
||||
|
||||
#define CCISS_DMA_MASK 0xFFFFFFFF /* 32 bit DMA */
|
||||
|
||||
static ctlr_info_t *hba[MAX_CTLR];
|
||||
|
||||
static void do_cciss_request(request_queue_t *q);
|
||||
|
@ -2393,11 +2392,6 @@ static int cciss_pci_init(ctlr_info_t *c, struct pci_dev *pdev)
|
|||
printk(KERN_ERR "cciss: Unable to Enable PCI device\n");
|
||||
return( -1);
|
||||
}
|
||||
if (pci_set_dma_mask(pdev, CCISS_DMA_MASK ) != 0)
|
||||
{
|
||||
printk(KERN_ERR "cciss: Unable to set DMA mask\n");
|
||||
return(-1);
|
||||
}
|
||||
|
||||
subsystem_vendor_id = pdev->subsystem_vendor;
|
||||
subsystem_device_id = pdev->subsystem_device;
|
||||
|
@ -2747,9 +2741,9 @@ static int __devinit cciss_init_one(struct pci_dev *pdev,
|
|||
hba[i]->pdev = pdev;
|
||||
|
||||
/* configure PCI DMA stuff */
|
||||
if (!pci_set_dma_mask(pdev, 0xffffffffffffffffULL))
|
||||
if (!pci_set_dma_mask(pdev, DMA_64BIT_MASK))
|
||||
printk("cciss: using DAC cycles\n");
|
||||
else if (!pci_set_dma_mask(pdev, 0xffffffff))
|
||||
else if (!pci_set_dma_mask(pdev, DMA_32BIT_MASK))
|
||||
printk("cciss: not using DAC cycles\n");
|
||||
else {
|
||||
printk("cciss: no suitable DMA available\n");
|
||||
|
|
|
@ -1202,13 +1202,16 @@ retry:
|
|||
if (new_cfqq) {
|
||||
cfqq = new_cfqq;
|
||||
new_cfqq = NULL;
|
||||
} else if (gfp_mask & __GFP_WAIT) {
|
||||
} else {
|
||||
spin_unlock_irq(cfqd->queue->queue_lock);
|
||||
new_cfqq = kmem_cache_alloc(cfq_pool, gfp_mask);
|
||||
spin_lock_irq(cfqd->queue->queue_lock);
|
||||
|
||||
if (!new_cfqq && !(gfp_mask & __GFP_WAIT))
|
||||
goto out;
|
||||
|
||||
goto retry;
|
||||
} else
|
||||
goto out;
|
||||
}
|
||||
|
||||
memset(cfqq, 0, sizeof(*cfqq));
|
||||
|
||||
|
|
|
@ -220,11 +220,6 @@ void elevator_exit(elevator_t *e)
|
|||
kfree(e);
|
||||
}
|
||||
|
||||
static int elevator_global_init(void)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
int elv_merge(request_queue_t *q, struct request **req, struct bio *bio)
|
||||
{
|
||||
elevator_t *e = q->elevator;
|
||||
|
@ -290,6 +285,13 @@ void elv_requeue_request(request_queue_t *q, struct request *rq)
|
|||
rq = rq->end_io_data;
|
||||
}
|
||||
|
||||
/*
|
||||
* the request is prepped and may have some resources allocated.
|
||||
* allowing unprepped requests to pass this one may cause resource
|
||||
* deadlock. turn on softbarrier.
|
||||
*/
|
||||
rq->flags |= REQ_SOFTBARRIER;
|
||||
|
||||
/*
|
||||
* if iosched has an explicit requeue hook, then use that. otherwise
|
||||
* just put the request at the front of the queue
|
||||
|
@ -322,7 +324,7 @@ void __elv_add_request(request_queue_t *q, struct request *rq, int where,
|
|||
int nrq = q->rq.count[READ] + q->rq.count[WRITE]
|
||||
- q->in_flight;
|
||||
|
||||
if (nrq == q->unplug_thresh)
|
||||
if (nrq >= q->unplug_thresh)
|
||||
__generic_unplug_device(q);
|
||||
}
|
||||
} else
|
||||
|
@ -386,6 +388,12 @@ struct request *elv_next_request(request_queue_t *q)
|
|||
if (ret == BLKPREP_OK) {
|
||||
break;
|
||||
} else if (ret == BLKPREP_DEFER) {
|
||||
/*
|
||||
* the request may have been (partially) prepped.
|
||||
* we need to keep this request in the front to
|
||||
* avoid resource deadlock. turn on softbarrier.
|
||||
*/
|
||||
rq->flags |= REQ_SOFTBARRIER;
|
||||
rq = NULL;
|
||||
break;
|
||||
} else if (ret == BLKPREP_KILL) {
|
||||
|
@ -692,8 +700,6 @@ ssize_t elv_iosched_show(request_queue_t *q, char *name)
|
|||
return len;
|
||||
}
|
||||
|
||||
module_init(elevator_global_init);
|
||||
|
||||
EXPORT_SYMBOL(elv_add_request);
|
||||
EXPORT_SYMBOL(__elv_add_request);
|
||||
EXPORT_SYMBOL(elv_requeue_request);
|
||||
|
|
|
@ -2038,7 +2038,6 @@ EXPORT_SYMBOL(blk_requeue_request);
|
|||
* @rq: request to be inserted
|
||||
* @at_head: insert request at head or tail of queue
|
||||
* @data: private data
|
||||
* @reinsert: true if request it a reinsertion of previously processed one
|
||||
*
|
||||
* Description:
|
||||
* Many block devices need to execute commands asynchronously, so they don't
|
||||
|
@ -2053,8 +2052,9 @@ EXPORT_SYMBOL(blk_requeue_request);
|
|||
* host that is unable to accept a particular command.
|
||||
*/
|
||||
void blk_insert_request(request_queue_t *q, struct request *rq,
|
||||
int at_head, void *data, int reinsert)
|
||||
int at_head, void *data)
|
||||
{
|
||||
int where = at_head ? ELEVATOR_INSERT_FRONT : ELEVATOR_INSERT_BACK;
|
||||
unsigned long flags;
|
||||
|
||||
/*
|
||||
|
@ -2071,20 +2071,12 @@ void blk_insert_request(request_queue_t *q, struct request *rq,
|
|||
/*
|
||||
* If command is tagged, release the tag
|
||||
*/
|
||||
if (reinsert)
|
||||
blk_requeue_request(q, rq);
|
||||
else {
|
||||
int where = ELEVATOR_INSERT_BACK;
|
||||
if (blk_rq_tagged(rq))
|
||||
blk_queue_end_tag(q, rq);
|
||||
|
||||
if (at_head)
|
||||
where = ELEVATOR_INSERT_FRONT;
|
||||
drive_stat_acct(rq, rq->nr_sectors, 1);
|
||||
__elv_add_request(q, rq, where, 0);
|
||||
|
||||
if (blk_rq_tagged(rq))
|
||||
blk_queue_end_tag(q, rq);
|
||||
|
||||
drive_stat_acct(rq, rq->nr_sectors, 1);
|
||||
__elv_add_request(q, rq, where, 0);
|
||||
}
|
||||
if (blk_queue_plugged(q))
|
||||
__generic_unplug_device(q);
|
||||
else
|
||||
|
|
|
@ -723,7 +723,7 @@ static int pd_special_command(struct pd_unit *disk,
|
|||
rq.ref_count = 1;
|
||||
rq.waiting = &wait;
|
||||
rq.end_io = blk_end_sync_rq;
|
||||
blk_insert_request(disk->gd->queue, &rq, 0, func, 0);
|
||||
blk_insert_request(disk->gd->queue, &rq, 0, func);
|
||||
wait_for_completion(&wait);
|
||||
rq.waiting = NULL;
|
||||
if (rq.errors)
|
||||
|
|
|
@ -614,7 +614,7 @@ static int carm_array_info (struct carm_host *host, unsigned int array_idx)
|
|||
spin_unlock_irq(&host->lock);
|
||||
|
||||
DPRINTK("blk_insert_request, tag == %u\n", idx);
|
||||
blk_insert_request(host->oob_q, crq->rq, 1, crq, 0);
|
||||
blk_insert_request(host->oob_q, crq->rq, 1, crq);
|
||||
|
||||
return 0;
|
||||
|
||||
|
@ -653,7 +653,7 @@ static int carm_send_special (struct carm_host *host, carm_sspc_t func)
|
|||
crq->msg_bucket = (u32) rc;
|
||||
|
||||
DPRINTK("blk_insert_request, tag == %u\n", idx);
|
||||
blk_insert_request(host->oob_q, crq->rq, 1, crq, 0);
|
||||
blk_insert_request(host->oob_q, crq->rq, 1, crq);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
|
|
@ -767,10 +767,8 @@ static void fcp_scsi_done (Scsi_Cmnd *SCpnt)
|
|||
{
|
||||
unsigned long flags;
|
||||
|
||||
spin_lock_irqsave(SCpnt->device->host->host_lock, flags);
|
||||
if (FCP_CMND(SCpnt)->done)
|
||||
FCP_CMND(SCpnt)->done(SCpnt);
|
||||
spin_unlock_irqrestore(SCpnt->device->host->host_lock, flags);
|
||||
}
|
||||
|
||||
static int fcp_scsi_queue_it(fc_channel *fc, Scsi_Cmnd *SCpnt, fcp_cmnd *fcmd, int prepare)
|
||||
|
@ -912,9 +910,7 @@ int fcp_scsi_abort(Scsi_Cmnd *SCpnt)
|
|||
unsigned long flags;
|
||||
|
||||
SCpnt->result = DID_ABORT;
|
||||
spin_lock_irqsave(SCpnt->device->host->host_lock, flags);
|
||||
fcmd->done(SCpnt);
|
||||
spin_unlock_irqrestore(SCpnt->device->host->host_lock, flags);
|
||||
printk("FC: soft abort\n");
|
||||
return SUCCESS;
|
||||
} else {
|
||||
|
@ -987,7 +983,10 @@ int fcp_scsi_dev_reset(Scsi_Cmnd *SCpnt)
|
|||
fc->rst_pkt->request->rq_status = RQ_SCSI_BUSY;
|
||||
|
||||
fc->rst_pkt->done = fcp_scsi_reset_done;
|
||||
|
||||
spin_lock_irqsave(SCpnt->device->host->host_lock, flags);
|
||||
fcp_scsi_queue_it(fc, fc->rst_pkt, fcmd, 0);
|
||||
spin_unlock_irqrestore(SCpnt->device->host->host_lock, flags);
|
||||
|
||||
down(&sem);
|
||||
|
||||
|
@ -1006,13 +1005,7 @@ int fcp_scsi_dev_reset(Scsi_Cmnd *SCpnt)
|
|||
return SUCCESS;
|
||||
}
|
||||
|
||||
int fcp_scsi_bus_reset(Scsi_Cmnd *SCpnt)
|
||||
{
|
||||
printk ("FC: bus reset!\n");
|
||||
return FAILED;
|
||||
}
|
||||
|
||||
int fcp_scsi_host_reset(Scsi_Cmnd *SCpnt)
|
||||
static int __fcp_scsi_host_reset(Scsi_Cmnd *SCpnt)
|
||||
{
|
||||
fc_channel *fc = FC_SCMND(SCpnt);
|
||||
fcp_cmnd *fcmd = FCP_CMND(SCpnt);
|
||||
|
@ -1033,6 +1026,17 @@ int fcp_scsi_host_reset(Scsi_Cmnd *SCpnt)
|
|||
else return FAILED;
|
||||
}
|
||||
|
||||
int fcp_scsi_host_reset(Scsi_Cmnd *SCpnt)
|
||||
{
|
||||
int rc;
|
||||
|
||||
spin_lock_irqsave(SCpnt->device->host->host_lock, flags);
|
||||
rc = __fcp_scsi_host_reset(SCpnt);
|
||||
spin_unlock_irqrestore(SCpnt->device->host->host_lock, flags);
|
||||
|
||||
return rc;
|
||||
}
|
||||
|
||||
static int fcp_els_queue_it(fc_channel *fc, fcp_cmnd *fcmd)
|
||||
{
|
||||
long i;
|
||||
|
|
|
@ -27,7 +27,6 @@ EXPORT_SYMBOL(fc_do_prli);
|
|||
EXPORT_SYMBOL(fcp_scsi_queuecommand);
|
||||
EXPORT_SYMBOL(fcp_scsi_abort);
|
||||
EXPORT_SYMBOL(fcp_scsi_dev_reset);
|
||||
EXPORT_SYMBOL(fcp_scsi_bus_reset);
|
||||
EXPORT_SYMBOL(fcp_scsi_host_reset);
|
||||
|
||||
#endif /* CONFIG_MODULES */
|
||||
|
|
|
@ -158,7 +158,6 @@ int fc_do_prli(fc_channel *, unsigned char);
|
|||
int fcp_scsi_queuecommand(Scsi_Cmnd *, void (* done)(Scsi_Cmnd *));
|
||||
int fcp_scsi_abort(Scsi_Cmnd *);
|
||||
int fcp_scsi_dev_reset(Scsi_Cmnd *);
|
||||
int fcp_scsi_bus_reset(Scsi_Cmnd *);
|
||||
int fcp_scsi_host_reset(Scsi_Cmnd *);
|
||||
|
||||
#endif /* !(_FCP_SCSI_H) */
|
||||
|
|
|
@ -745,7 +745,8 @@ static struct scsi_id_instance_data *sbp2_alloc_device(struct unit_directory *ud
|
|||
list_add_tail(&scsi_id->scsi_list, &hi->scsi_ids);
|
||||
|
||||
/* Register our host with the SCSI stack. */
|
||||
scsi_host = scsi_host_alloc(&scsi_driver_template, 0);
|
||||
scsi_host = scsi_host_alloc(&scsi_driver_template,
|
||||
sizeof (unsigned long));
|
||||
if (!scsi_host) {
|
||||
SBP2_ERR("failed to register scsi host");
|
||||
goto failed_alloc;
|
||||
|
@ -1070,7 +1071,7 @@ static int sbp2_handle_physdma_read(struct hpsb_host *host, int nodeid, quadlet_
|
|||
static __inline__ int sbp2_command_conversion_device_type(u8 device_type)
|
||||
{
|
||||
return (((device_type == TYPE_DISK) ||
|
||||
(device_type == TYPE_SDAD) ||
|
||||
(device_type == TYPE_RBC) ||
|
||||
(device_type == TYPE_ROM)) ? 1:0);
|
||||
}
|
||||
|
||||
|
@ -2111,102 +2112,6 @@ static int sbp2_send_command(struct scsi_id_instance_data *scsi_id,
|
|||
*/
|
||||
static void sbp2_check_sbp2_command(struct scsi_id_instance_data *scsi_id, unchar *cmd)
|
||||
{
|
||||
unchar new_cmd[16];
|
||||
u8 device_type = SBP2_DEVICE_TYPE (scsi_id->sbp2_device_type_and_lun);
|
||||
|
||||
SBP2_DEBUG("sbp2_check_sbp2_command");
|
||||
|
||||
switch (*cmd) {
|
||||
|
||||
case READ_6:
|
||||
|
||||
if (sbp2_command_conversion_device_type(device_type)) {
|
||||
|
||||
SBP2_DEBUG("Convert READ_6 to READ_10");
|
||||
|
||||
/*
|
||||
* Need to turn read_6 into read_10
|
||||
*/
|
||||
new_cmd[0] = 0x28;
|
||||
new_cmd[1] = (cmd[1] & 0xe0);
|
||||
new_cmd[2] = 0x0;
|
||||
new_cmd[3] = (cmd[1] & 0x1f);
|
||||
new_cmd[4] = cmd[2];
|
||||
new_cmd[5] = cmd[3];
|
||||
new_cmd[6] = 0x0;
|
||||
new_cmd[7] = 0x0;
|
||||
new_cmd[8] = cmd[4];
|
||||
new_cmd[9] = cmd[5];
|
||||
|
||||
memcpy(cmd, new_cmd, 10);
|
||||
|
||||
}
|
||||
|
||||
break;
|
||||
|
||||
case WRITE_6:
|
||||
|
||||
if (sbp2_command_conversion_device_type(device_type)) {
|
||||
|
||||
SBP2_DEBUG("Convert WRITE_6 to WRITE_10");
|
||||
|
||||
/*
|
||||
* Need to turn write_6 into write_10
|
||||
*/
|
||||
new_cmd[0] = 0x2a;
|
||||
new_cmd[1] = (cmd[1] & 0xe0);
|
||||
new_cmd[2] = 0x0;
|
||||
new_cmd[3] = (cmd[1] & 0x1f);
|
||||
new_cmd[4] = cmd[2];
|
||||
new_cmd[5] = cmd[3];
|
||||
new_cmd[6] = 0x0;
|
||||
new_cmd[7] = 0x0;
|
||||
new_cmd[8] = cmd[4];
|
||||
new_cmd[9] = cmd[5];
|
||||
|
||||
memcpy(cmd, new_cmd, 10);
|
||||
|
||||
}
|
||||
|
||||
break;
|
||||
|
||||
case MODE_SENSE:
|
||||
|
||||
if (sbp2_command_conversion_device_type(device_type)) {
|
||||
|
||||
SBP2_DEBUG("Convert MODE_SENSE_6 to MODE_SENSE_10");
|
||||
|
||||
/*
|
||||
* Need to turn mode_sense_6 into mode_sense_10
|
||||
*/
|
||||
new_cmd[0] = 0x5a;
|
||||
new_cmd[1] = cmd[1];
|
||||
new_cmd[2] = cmd[2];
|
||||
new_cmd[3] = 0x0;
|
||||
new_cmd[4] = 0x0;
|
||||
new_cmd[5] = 0x0;
|
||||
new_cmd[6] = 0x0;
|
||||
new_cmd[7] = 0x0;
|
||||
new_cmd[8] = cmd[4];
|
||||
new_cmd[9] = cmd[5];
|
||||
|
||||
memcpy(cmd, new_cmd, 10);
|
||||
|
||||
}
|
||||
|
||||
break;
|
||||
|
||||
case MODE_SELECT:
|
||||
|
||||
/*
|
||||
* TODO. Probably need to change mode select to 10 byte version
|
||||
*/
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
/*
|
||||
|
@ -2247,7 +2152,6 @@ static void sbp2_check_sbp2_response(struct scsi_id_instance_data *scsi_id,
|
|||
struct scsi_cmnd *SCpnt)
|
||||
{
|
||||
u8 *scsi_buf = SCpnt->request_buffer;
|
||||
u8 device_type = SBP2_DEVICE_TYPE (scsi_id->sbp2_device_type_and_lun);
|
||||
|
||||
SBP2_DEBUG("sbp2_check_sbp2_response");
|
||||
|
||||
|
@ -2271,14 +2175,6 @@ static void sbp2_check_sbp2_response(struct scsi_id_instance_data *scsi_id,
|
|||
scsi_buf[4] = 36 - 5;
|
||||
}
|
||||
|
||||
/*
|
||||
* Check for Simple Direct Access Device and change it to TYPE_DISK
|
||||
*/
|
||||
if ((scsi_buf[0] & 0x1f) == TYPE_SDAD) {
|
||||
SBP2_DEBUG("Changing TYPE_SDAD to TYPE_DISK");
|
||||
scsi_buf[0] &= 0xe0;
|
||||
}
|
||||
|
||||
/*
|
||||
* Fix ansi revision and response data format
|
||||
*/
|
||||
|
@ -2287,27 +2183,6 @@ static void sbp2_check_sbp2_response(struct scsi_id_instance_data *scsi_id,
|
|||
|
||||
break;
|
||||
|
||||
case MODE_SENSE:
|
||||
|
||||
if (sbp2_command_conversion_device_type(device_type)) {
|
||||
|
||||
SBP2_DEBUG("Modify mode sense response (10 byte version)");
|
||||
|
||||
scsi_buf[0] = scsi_buf[1]; /* Mode data length */
|
||||
scsi_buf[1] = scsi_buf[2]; /* Medium type */
|
||||
scsi_buf[2] = scsi_buf[3]; /* Device specific parameter */
|
||||
scsi_buf[3] = scsi_buf[7]; /* Block descriptor length */
|
||||
memcpy(scsi_buf + 4, scsi_buf + 8, scsi_buf[0]);
|
||||
}
|
||||
|
||||
break;
|
||||
|
||||
case MODE_SELECT:
|
||||
|
||||
/*
|
||||
* TODO. Probably need to change mode select to 10 byte version
|
||||
*/
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
@ -2579,8 +2454,6 @@ static void sbp2scsi_complete_command(struct scsi_id_instance_data *scsi_id,
|
|||
u32 scsi_status, struct scsi_cmnd *SCpnt,
|
||||
void (*done)(struct scsi_cmnd *))
|
||||
{
|
||||
unsigned long flags;
|
||||
|
||||
SBP2_DEBUG("sbp2scsi_complete_command");
|
||||
|
||||
/*
|
||||
|
@ -2679,18 +2552,15 @@ static void sbp2scsi_complete_command(struct scsi_id_instance_data *scsi_id,
|
|||
/*
|
||||
* Tell scsi stack that we're done with this command
|
||||
*/
|
||||
spin_lock_irqsave(scsi_id->scsi_host->host_lock,flags);
|
||||
done (SCpnt);
|
||||
spin_unlock_irqrestore(scsi_id->scsi_host->host_lock,flags);
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
static int sbp2scsi_slave_configure (struct scsi_device *sdev)
|
||||
{
|
||||
blk_queue_dma_alignment(sdev->request_queue, (512 - 1));
|
||||
|
||||
sdev->use_10_for_rw = 1;
|
||||
sdev->use_10_for_ms = 1;
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
@ -2746,7 +2616,7 @@ static int sbp2scsi_abort(struct scsi_cmnd *SCpnt)
|
|||
/*
|
||||
* Called by scsi stack when something has really gone wrong.
|
||||
*/
|
||||
static int sbp2scsi_reset(struct scsi_cmnd *SCpnt)
|
||||
static int __sbp2scsi_reset(struct scsi_cmnd *SCpnt)
|
||||
{
|
||||
struct scsi_id_instance_data *scsi_id =
|
||||
(struct scsi_id_instance_data *)SCpnt->device->host->hostdata[0];
|
||||
|
@ -2761,6 +2631,18 @@ static int sbp2scsi_reset(struct scsi_cmnd *SCpnt)
|
|||
return(SUCCESS);
|
||||
}
|
||||
|
||||
static int sbp2scsi_reset(struct scsi_cmnd *SCpnt)
|
||||
{
|
||||
unsigned long flags;
|
||||
int rc;
|
||||
|
||||
spin_lock_irqsave(SCpnt->device->host->host_lock, flags);
|
||||
rc = __sbp2scsi_reset(SCpnt);
|
||||
spin_unlock_irqrestore(SCpnt->device->host->host_lock, flags);
|
||||
|
||||
return rc;
|
||||
}
|
||||
|
||||
static const char *sbp2scsi_info (struct Scsi_Host *host)
|
||||
{
|
||||
return "SCSI emulation for IEEE-1394 SBP-2 Devices";
|
||||
|
|
|
@ -266,10 +266,6 @@ struct sbp2_status_block {
|
|||
#define SBP2_MAX_UDS_PER_NODE 16 /* Maximum scsi devices per node */
|
||||
#define SBP2_MAX_SECTORS 255 /* Max sectors supported */
|
||||
|
||||
#ifndef TYPE_SDAD
|
||||
#define TYPE_SDAD 0x0e /* simplified direct access device */
|
||||
#endif
|
||||
|
||||
/*
|
||||
* SCSI direction table...
|
||||
* (now used as a back-up in case the direction passed down from above is "unknown")
|
||||
|
|
|
@ -352,7 +352,7 @@ static int alps_reconnect(struct psmouse *psmouse)
|
|||
if (alps_get_status(psmouse, param))
|
||||
return -1;
|
||||
|
||||
if (param[0] & 0x04)
|
||||
if (!(param[0] & 0x04))
|
||||
alps_tap_mode(psmouse, 1);
|
||||
|
||||
if (alps_absolute_mode(psmouse)) {
|
||||
|
|
|
@ -2,34 +2,54 @@
|
|||
menu "Fusion MPT device support"
|
||||
|
||||
config FUSION
|
||||
tristate "Fusion MPT (base + ScsiHost) drivers"
|
||||
depends on PCI && SCSI
|
||||
---help---
|
||||
LSI Logic Fusion(TM) Message Passing Technology (MPT) device support
|
||||
provides high performance SCSI host initiator, and LAN [1] interface
|
||||
services to a host system. The Fusion architecture is capable of
|
||||
duplexing these protocols on high-speed Fibre Channel
|
||||
(up to 2 GHz x 2 ports = 4 GHz) and parallel SCSI (up to Ultra-320)
|
||||
physical medium.
|
||||
bool
|
||||
default n
|
||||
|
||||
[1] LAN is not supported on parallel SCSI medium.
|
||||
config FUSION_SPI
|
||||
tristate "Fusion MPT ScsiHost drivers for SPI"
|
||||
depends on PCI && SCSI
|
||||
select FUSION
|
||||
---help---
|
||||
SCSI HOST support for a parallel SCSI host adapters.
|
||||
|
||||
List of supported controllers:
|
||||
|
||||
LSI53C1020
|
||||
LSI53C1020A
|
||||
LSI53C1030
|
||||
LSI53C1035
|
||||
|
||||
config FUSION_FC
|
||||
tristate "Fusion MPT ScsiHost drivers for FC"
|
||||
depends on PCI && SCSI
|
||||
select FUSION
|
||||
---help---
|
||||
SCSI HOST support for a Fiber Channel host adapters.
|
||||
|
||||
List of supported controllers:
|
||||
|
||||
LSIFC909
|
||||
LSIFC919
|
||||
LSIFC919X
|
||||
LSIFC929
|
||||
LSIFC929X
|
||||
LSIFC929XL
|
||||
|
||||
config FUSION_MAX_SGE
|
||||
int "Maximum number of scatter gather entries"
|
||||
int "Maximum number of scatter gather entries (16 - 128)"
|
||||
depends on FUSION
|
||||
default "40"
|
||||
default "128"
|
||||
range 16 128
|
||||
help
|
||||
This option allows you to specify the maximum number of scatter-
|
||||
gather entries per I/O. The driver defaults to 40, a reasonable number
|
||||
for most systems. However, the user may increase this up to 128.
|
||||
Increasing this parameter will require significantly more memory
|
||||
on a per controller instance. Increasing the parameter is not
|
||||
necessary (or recommended) unless the user will be running
|
||||
large I/O's via the raw interface.
|
||||
gather entries per I/O. The driver default is 128, which matches
|
||||
SCSI_MAX_PHYS_SEGMENTS. However, it may decreased down to 16.
|
||||
Decreasing this parameter will reduce memory requirements
|
||||
on a per controller instance.
|
||||
|
||||
config FUSION_CTL
|
||||
tristate "Fusion MPT misc device (ioctl) driver"
|
||||
depends on FUSION
|
||||
depends on FUSION_SPI || FUSION_FC
|
||||
---help---
|
||||
The Fusion MPT misc device driver provides specialized control
|
||||
of MPT adapters via system ioctl calls. Use of ioctl calls to
|
||||
|
@ -48,7 +68,7 @@ config FUSION_CTL
|
|||
|
||||
config FUSION_LAN
|
||||
tristate "Fusion MPT LAN driver"
|
||||
depends on FUSION && NET_FC
|
||||
depends on FUSION_FC && NET_FC
|
||||
---help---
|
||||
This module supports LAN IP traffic over Fibre Channel port(s)
|
||||
on Fusion MPT compatible hardware (LSIFC9xx chips).
|
||||
|
|
|
@ -1,52 +1,38 @@
|
|||
#
|
||||
# Makefile for the LSI Logic Fusion MPT (Message Passing Technology) drivers.
|
||||
#
|
||||
# Note! If you want to turn on various debug defines for an extended period of
|
||||
# time but don't want them lingering around in the Makefile when you pass it on
|
||||
# to someone else, use the MPT_CFLAGS env variable (thanks Steve). -nromer
|
||||
|
||||
#=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-{ LSI_LOGIC
|
||||
|
||||
# Architecture-specific...
|
||||
# # intel
|
||||
#EXTRA_CFLAGS += -g
|
||||
# # sparc64
|
||||
#EXTRA_CFLAGS += -gstabs+
|
||||
|
||||
EXTRA_CFLAGS += ${MPT_CFLAGS}
|
||||
|
||||
# Fusion MPT drivers; recognized debug defines...
|
||||
# MPT general:
|
||||
#EXTRA_CFLAGS += -DMPT_DEBUG_SCSI
|
||||
#EXTRA_CFLAGS += -DMPT_DEBUG
|
||||
#EXTRA_CFLAGS += -DMPT_DEBUG_MSG_FRAME
|
||||
#EXTRA_CFLAGS += -DMPT_DEBUG_SG
|
||||
#EXTRA_CFLAGS += -DMPT_DEBUG_EVENTS
|
||||
#EXTRA_CFLAGS += -DMPT_DEBUG_INIT
|
||||
#EXTRA_CFLAGS += -DMPT_DEBUG_EXIT
|
||||
#EXTRA_CFLAGS += -DMPT_DEBUG_FAIL
|
||||
|
||||
|
||||
#
|
||||
# driver/module specifics...
|
||||
#
|
||||
# For mptbase:
|
||||
#CFLAGS_mptbase.o += -DMPT_DEBUG_HANDSHAKE
|
||||
#CFLAGS_mptbase.o += -DMPT_DEBUG_CONFIG
|
||||
#CFLAGS_mptbase.o += -DMPT_DEBUG_DL
|
||||
#CFLAGS_mptbase.o += -DMPT_DEBUG_IRQ
|
||||
#CFLAGS_mptbase.o += -DMPT_DEBUG_RESET
|
||||
#
|
||||
# For mptscsih:
|
||||
#CFLAGS_mptscsih.o += -DMPT_DEBUG_SCANDV
|
||||
#CFLAGS_mptscsih.o += -DMPT_DEBUG_RESET
|
||||
#CFLAGS_mptscsih.o += -DMPT_DEBUG_NEH
|
||||
#CFLAGS_mptscsih.o += -DMPT_DEBUG_DV
|
||||
#CFLAGS_mptscsih.o += -DMPT_DEBUG_NEGO
|
||||
#CFLAGS_mptscsih.o += -DMPT_DEBUG_TM
|
||||
#CFLAGS_mptscsih.o += -DMPT_DEBUG_SCSI
|
||||
#CFLAGS_mptscsih.o += -DMPT_DEBUG_REPLY
|
||||
#
|
||||
# For mptctl:
|
||||
#CFLAGS_mptctl.o += -DMPT_DEBUG_IOCTL
|
||||
#
|
||||
# For mptlan:
|
||||
#CFLAGS_mptlan.o += -DMPT_LAN_IO_DEBUG
|
||||
#
|
||||
# For isense:
|
||||
|
||||
# EXP...
|
||||
##mptscsih-objs := scsihost.o scsiherr.o
|
||||
|
||||
#=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-} LSI_LOGIC
|
||||
|
||||
obj-$(CONFIG_FUSION) += mptbase.o mptscsih.o
|
||||
obj-$(CONFIG_FUSION_SPI) += mptbase.o mptscsih.o mptspi.o
|
||||
obj-$(CONFIG_FUSION_FC) += mptbase.o mptscsih.o mptfc.o
|
||||
obj-$(CONFIG_FUSION_CTL) += mptctl.o
|
||||
obj-$(CONFIG_FUSION_LAN) += mptlan.o
|
||||
|
|
|
@ -1,12 +1,12 @@
|
|||
/*
|
||||
* Copyright (c) 2000-2003 LSI Logic Corporation.
|
||||
* Copyright (c) 2000-2005 LSI Logic Corporation.
|
||||
*
|
||||
*
|
||||
* Name: mpi.h
|
||||
* Title: MPI Message independent structures and definitions
|
||||
* Creation Date: July 27, 2000
|
||||
*
|
||||
* mpi.h Version: 01.05.xx
|
||||
* mpi.h Version: 01.05.07
|
||||
*
|
||||
* Version History
|
||||
* ---------------
|
||||
|
@ -52,6 +52,25 @@
|
|||
* obsoleted define MPI_IOCSTATUS_TARGET_INVALID_IOCINDEX.
|
||||
* 04-01-03 01.02.09 New IOCStatus code: MPI_IOCSTATUS_FC_EXCHANGE_CANCELED
|
||||
* 06-26-03 01.02.10 Bumped MPI_HEADER_VERSION_UNIT value.
|
||||
* 01-16-04 01.02.11 Added define for MPI_IOCLOGINFO_TYPE_SHIFT.
|
||||
* 04-29-04 01.02.12 Added function codes for MPI_FUNCTION_DIAG_BUFFER_POST
|
||||
* and MPI_FUNCTION_DIAG_RELEASE.
|
||||
* Added MPI_IOCSTATUS_DIAGNOSTIC_RELEASED define.
|
||||
* Bumped MPI_HEADER_VERSION_UNIT value.
|
||||
* 05-11-04 01.03.01 Bumped MPI_VERSION_MINOR for MPI v1.3.
|
||||
* Added codes for Inband.
|
||||
* 08-19-04 01.05.01 Added defines for Host Buffer Access Control doorbell.
|
||||
* Added define for offset of High Priority Request Queue.
|
||||
* Added new function codes and new IOCStatus codes.
|
||||
* Added a IOCLogInfo type of SAS.
|
||||
* 12-07-04 01.05.02 Bumped MPI_HEADER_VERSION_UNIT.
|
||||
* 12-09-04 01.05.03 Bumped MPI_HEADER_VERSION_UNIT.
|
||||
* 01-15-05 01.05.04 Bumped MPI_HEADER_VERSION_UNIT.
|
||||
* 02-09-05 01.05.05 Bumped MPI_HEADER_VERSION_UNIT.
|
||||
* 02-22-05 01.05.06 Bumped MPI_HEADER_VERSION_UNIT.
|
||||
* 03-11-05 01.05.07 Removed function codes for SCSI IO 32 and
|
||||
* TargetAssistExtended requests.
|
||||
* Removed EEDP IOCStatus codes.
|
||||
* --------------------------------------------------------------------------
|
||||
*/
|
||||
|
||||
|
@ -82,7 +101,7 @@
|
|||
/* Note: The major versions of 0xe0 through 0xff are reserved */
|
||||
|
||||
/* versioning for this MPI header set */
|
||||
#define MPI_HEADER_VERSION_UNIT (0x00)
|
||||
#define MPI_HEADER_VERSION_UNIT (0x09)
|
||||
#define MPI_HEADER_VERSION_DEV (0x00)
|
||||
#define MPI_HEADER_VERSION_UNIT_MASK (0xFF00)
|
||||
#define MPI_HEADER_VERSION_UNIT_SHIFT (8)
|
||||
|
@ -122,7 +141,11 @@
|
|||
*
|
||||
*****************************************************************************/
|
||||
|
||||
/* S y s t e m D o o r b e l l */
|
||||
/*
|
||||
* Defines for working with the System Doorbell register.
|
||||
* Values for doorbell function codes are included in the section that defines
|
||||
* all the function codes (further on in this file).
|
||||
*/
|
||||
#define MPI_DOORBELL_OFFSET (0x00000000)
|
||||
#define MPI_DOORBELL_ACTIVE (0x08000000) /* DoorbellUsed */
|
||||
#define MPI_DOORBELL_USED (MPI_DOORBELL_ACTIVE)
|
||||
|
@ -134,6 +157,13 @@
|
|||
#define MPI_DOORBELL_ADD_DWORDS_MASK (0x00FF0000)
|
||||
#define MPI_DOORBELL_ADD_DWORDS_SHIFT (16)
|
||||
#define MPI_DOORBELL_DATA_MASK (0x0000FFFF)
|
||||
#define MPI_DOORBELL_FUNCTION_SPECIFIC_MASK (0x0000FFFF)
|
||||
|
||||
/* values for Host Buffer Access Control doorbell function */
|
||||
#define MPI_DB_HPBAC_VALUE_MASK (0x0000F000)
|
||||
#define MPI_DB_HPBAC_ENABLE_ACCESS (0x01)
|
||||
#define MPI_DB_HPBAC_DISABLE_ACCESS (0x02)
|
||||
#define MPI_DB_HPBAC_FREE_BUFFER (0x03)
|
||||
|
||||
|
||||
#define MPI_WRITE_SEQUENCE_OFFSET (0x00000004)
|
||||
|
@ -257,16 +287,18 @@
|
|||
|
||||
#define MPI_FUNCTION_SMP_PASSTHROUGH (0x1A)
|
||||
#define MPI_FUNCTION_SAS_IO_UNIT_CONTROL (0x1B)
|
||||
#define MPI_FUNCTION_SATA_PASSTHROUGH (0x1C)
|
||||
|
||||
#define MPI_DIAG_BUFFER_POST (0x1D)
|
||||
#define MPI_DIAG_RELEASE (0x1E)
|
||||
|
||||
#define MPI_FUNCTION_SCSI_IO_32 (0x1F)
|
||||
#define MPI_FUNCTION_DIAG_BUFFER_POST (0x1D)
|
||||
#define MPI_FUNCTION_DIAG_RELEASE (0x1E)
|
||||
|
||||
#define MPI_FUNCTION_LAN_SEND (0x20)
|
||||
#define MPI_FUNCTION_LAN_RECEIVE (0x21)
|
||||
#define MPI_FUNCTION_LAN_RESET (0x22)
|
||||
|
||||
#define MPI_FUNCTION_TARGET_CMD_BUF_BASE_POST (0x24)
|
||||
#define MPI_FUNCTION_TARGET_CMD_BUF_LIST_POST (0x25)
|
||||
|
||||
#define MPI_FUNCTION_INBAND_BUFFER_POST (0x28)
|
||||
#define MPI_FUNCTION_INBAND_SEND (0x29)
|
||||
#define MPI_FUNCTION_INBAND_RSP (0x2A)
|
||||
|
@ -276,6 +308,7 @@
|
|||
#define MPI_FUNCTION_IO_UNIT_RESET (0x41)
|
||||
#define MPI_FUNCTION_HANDSHAKE (0x42)
|
||||
#define MPI_FUNCTION_REPLY_FRAME_REMOVAL (0x43)
|
||||
#define MPI_FUNCTION_HOST_PAGEBUF_ACCESS_CONTROL (0x44)
|
||||
|
||||
|
||||
/* standard version format */
|
||||
|
@ -328,8 +361,8 @@ typedef struct _SGE_SIMPLE_UNION
|
|||
U32 Address32;
|
||||
U64 Address64;
|
||||
}u;
|
||||
} SGESimpleUnion_t, MPI_POINTER pSGESimpleUnion_t,
|
||||
SGE_SIMPLE_UNION, MPI_POINTER PTR_SGE_SIMPLE_UNION;
|
||||
} SGE_SIMPLE_UNION, MPI_POINTER PTR_SGE_SIMPLE_UNION,
|
||||
SGESimpleUnion_t, MPI_POINTER pSGESimpleUnion_t;
|
||||
|
||||
/****************************************************************************/
|
||||
/* Chain element structures */
|
||||
|
@ -648,27 +681,21 @@ typedef struct _MSG_DEFAULT_REPLY
|
|||
#define MPI_IOCSTATUS_SCSI_EXT_TERMINATED (0x004C)
|
||||
|
||||
/****************************************************************************/
|
||||
/* For use by SCSI Initiator and SCSI Target end-to-end data protection */
|
||||
/****************************************************************************/
|
||||
|
||||
#define MPI_IOCSTATUS_EEDP_CRC_ERROR (0x004D)
|
||||
#define MPI_IOCSTATUS_EEDP_LBA_TAG_ERROR (0x004E)
|
||||
#define MPI_IOCSTATUS_EEDP_APP_TAG_ERROR (0x004F)
|
||||
|
||||
|
||||
/****************************************************************************/
|
||||
/* SCSI (SPI & FCP) target values */
|
||||
/* SCSI Target values */
|
||||
/****************************************************************************/
|
||||
|
||||
#define MPI_IOCSTATUS_TARGET_PRIORITY_IO (0x0060)
|
||||
#define MPI_IOCSTATUS_TARGET_INVALID_PORT (0x0061)
|
||||
#define MPI_IOCSTATUS_TARGET_INVALID_IOCINDEX (0x0062) /* obsolete */
|
||||
#define MPI_IOCSTATUS_TARGET_INVALID_IOCINDEX (0x0062) /* obsolete name */
|
||||
#define MPI_IOCSTATUS_TARGET_INVALID_IO_INDEX (0x0062)
|
||||
#define MPI_IOCSTATUS_TARGET_ABORTED (0x0063)
|
||||
#define MPI_IOCSTATUS_TARGET_NO_CONN_RETRYABLE (0x0064)
|
||||
#define MPI_IOCSTATUS_TARGET_NO_CONNECTION (0x0065)
|
||||
#define MPI_IOCSTATUS_TARGET_XFER_COUNT_MISMATCH (0x006A)
|
||||
#define MPI_IOCSTATUS_TARGET_STS_DATA_NOT_SENT (0x006B)
|
||||
#define MPI_IOCSTATUS_TARGET_DATA_OFFSET_ERROR (0x006D)
|
||||
#define MPI_IOCSTATUS_TARGET_TOO_MUCH_WRITE_DATA (0x006E)
|
||||
#define MPI_IOCSTATUS_TARGET_IU_TOO_SHORT (0x006F)
|
||||
|
||||
/****************************************************************************/
|
||||
/* Additional FCP target values (obsolete) */
|
||||
|
@ -707,6 +734,7 @@ typedef struct _MSG_DEFAULT_REPLY
|
|||
/****************************************************************************/
|
||||
|
||||
#define MPI_IOCSTATUS_SAS_SMP_REQUEST_FAILED (0x0090)
|
||||
#define MPI_IOCSTATUS_SAS_SMP_DATA_OVERRUN (0x0091)
|
||||
|
||||
/****************************************************************************/
|
||||
/* Inband values */
|
||||
|
|
File diff suppressed because it is too large
Load diff
|
@ -1,12 +1,12 @@
|
|||
/*
|
||||
* Copyright (c) 2000-2003 LSI Logic Corporation.
|
||||
* Copyright (c) 2000-2004 LSI Logic Corporation.
|
||||
*
|
||||
*
|
||||
* Name: mpi_fc.h
|
||||
* Title: MPI Fibre Channel messages and structures
|
||||
* Creation Date: June 12, 2000
|
||||
*
|
||||
* mpi_fc.h Version: 01.05.xx
|
||||
* mpi_fc.h Version: 01.05.01
|
||||
*
|
||||
* Version History
|
||||
* ---------------
|
||||
|
@ -36,6 +36,9 @@
|
|||
* 09-28-01 01.02.02 Change name of reserved field in
|
||||
* MSG_LINK_SERVICE_RSP_REPLY.
|
||||
* 05-31-02 01.02.03 Adding AliasIndex to FC Direct Access requests.
|
||||
* 01-16-04 01.02.04 Added define for MPI_FC_PRIM_SEND_FLAGS_ML_RESET_LINK.
|
||||
* 05-11-04 01.03.01 Original release for MPI v1.3.
|
||||
* 08-19-04 01.05.01 Original release for MPI v1.5.
|
||||
* --------------------------------------------------------------------------
|
||||
*/
|
||||
|
||||
|
|
|
@ -3,25 +3,28 @@
|
|||
MPI Header File Change History
|
||||
==============================
|
||||
|
||||
Copyright (c) 2000-2001 LSI Logic Corporation.
|
||||
Copyright (c) 2000-2005 LSI Logic Corporation.
|
||||
|
||||
---------------------------------------
|
||||
Header Set Release Version: 01.01.10
|
||||
Header Set Release Date: 04-09-01
|
||||
Header Set Release Version: 01.05.09
|
||||
Header Set Release Date: 03-11-05
|
||||
---------------------------------------
|
||||
|
||||
Filename Current version Prior version
|
||||
---------- --------------- -------------
|
||||
mpi.h 01.01.07 01.01.06
|
||||
mpi_ioc.h 01.01.07 01.01.06
|
||||
mpi_cnfg.h 01.01.11 01.01.10
|
||||
mpi_init.h 01.01.05 01.01.04
|
||||
mpi_targ.h 01.01.04 01.01.04
|
||||
mpi_fc.h 01.01.07 01.01.06
|
||||
mpi_lan.h 01.01.03 01.01.03
|
||||
mpi_raid.h 01.01.02 01.01.02
|
||||
mpi_type.h 01.01.02 01.01.02
|
||||
mpi_history.txt 01.01.09 01.01.09
|
||||
mpi.h 01.05.07 01.05.06
|
||||
mpi_ioc.h 01.05.08 01.05.07
|
||||
mpi_cnfg.h 01.05.08 01.05.07
|
||||
mpi_init.h 01.05.04 01.05.03
|
||||
mpi_targ.h 01.05.04 01.05.03
|
||||
mpi_fc.h 01.05.01 01.05.01
|
||||
mpi_lan.h 01.05.01 01.05.01
|
||||
mpi_raid.h 01.05.02 01.05.02
|
||||
mpi_tool.h 01.05.03 01.05.03
|
||||
mpi_inb.h 01.05.01 01.05.01
|
||||
mpi_sas.h 01.05.01 01.05.01
|
||||
mpi_type.h 01.05.01 01.05.01
|
||||
mpi_history.txt 01.05.09 01.05.08
|
||||
|
||||
|
||||
* Date Version Description
|
||||
|
@ -53,6 +56,38 @@ mpi.h
|
|||
* Added function codes for RAID.
|
||||
* 04-09-01 01.01.07 Added alternate define for MPI_DOORBELL_ACTIVE,
|
||||
* MPI_DOORBELL_USED, to better match the spec.
|
||||
* 08-08-01 01.02.01 Original release for v1.2 work.
|
||||
* Changed MPI_VERSION_MINOR from 0x01 to 0x02.
|
||||
* Added define MPI_FUNCTION_TOOLBOX.
|
||||
* 09-28-01 01.02.02 New function code MPI_SCSI_ENCLOSURE_PROCESSOR.
|
||||
* 11-01-01 01.02.03 Changed name to MPI_FUNCTION_SCSI_ENCLOSURE_PROCESSOR.
|
||||
* 03-14-02 01.02.04 Added MPI_HEADER_VERSION_ defines.
|
||||
* 05-31-02 01.02.05 Bumped MPI_HEADER_VERSION_UNIT.
|
||||
* 07-12-02 01.02.06 Added define for MPI_FUNCTION_MAILBOX.
|
||||
* 09-16-02 01.02.07 Bumped value for MPI_HEADER_VERSION_UNIT.
|
||||
* 11-15-02 01.02.08 Added define MPI_IOCSTATUS_TARGET_INVALID_IO_INDEX and
|
||||
* obsoleted define MPI_IOCSTATUS_TARGET_INVALID_IOCINDEX.
|
||||
* 04-01-03 01.02.09 New IOCStatus code: MPI_IOCSTATUS_FC_EXCHANGE_CANCELED
|
||||
* 06-26-03 01.02.10 Bumped MPI_HEADER_VERSION_UNIT value.
|
||||
* 01-16-04 01.02.11 Added define for MPI_IOCLOGINFO_TYPE_SHIFT.
|
||||
* 04-29-04 01.02.12 Added function codes for MPI_FUNCTION_DIAG_BUFFER_POST
|
||||
* and MPI_FUNCTION_DIAG_RELEASE.
|
||||
* Added MPI_IOCSTATUS_DIAGNOSTIC_RELEASED define.
|
||||
* Bumped MPI_HEADER_VERSION_UNIT value.
|
||||
* 05-11-04 01.03.01 Bumped MPI_VERSION_MINOR for MPI v1.3.
|
||||
* Added codes for Inband.
|
||||
* 08-19-04 01.05.01 Added defines for Host Buffer Access Control doorbell.
|
||||
* Added define for offset of High Priority Request Queue.
|
||||
* Added new function codes and new IOCStatus codes.
|
||||
* Added a IOCLogInfo type of SAS.
|
||||
* 12-07-04 01.05.02 Bumped MPI_HEADER_VERSION_UNIT.
|
||||
* 12-09-04 01.05.03 Bumped MPI_HEADER_VERSION_UNIT.
|
||||
* 01-15-05 01.05.04 Bumped MPI_HEADER_VERSION_UNIT.
|
||||
* 02-09-05 01.05.05 Bumped MPI_HEADER_VERSION_UNIT.
|
||||
* 02-22-05 01.05.06 Bumped MPI_HEADER_VERSION_UNIT.
|
||||
* 03-11-05 01.05.07 Removed function codes for SCSI IO 32 and
|
||||
* TargetAssistExtended requests.
|
||||
* Removed EEDP IOCStatus codes.
|
||||
* --------------------------------------------------------------------------
|
||||
|
||||
mpi_ioc.h
|
||||
|
@ -81,6 +116,49 @@ mpi_ioc.h
|
|||
* 03-27-01 01.01.06 Added defines for ProductId field of MPI_FW_HEADER.
|
||||
* Added structure offset comments.
|
||||
* 04-09-01 01.01.07 Added structure EVENT_DATA_EVENT_CHANGE.
|
||||
* 08-08-01 01.02.01 Original release for v1.2 work.
|
||||
* New format for FWVersion and ProductId in
|
||||
* MSG_IOC_FACTS_REPLY and MPI_FW_HEADER.
|
||||
* 08-31-01 01.02.02 Addded event MPI_EVENT_SCSI_DEVICE_STATUS_CHANGE and
|
||||
* related structure and defines.
|
||||
* Added event MPI_EVENT_ON_BUS_TIMER_EXPIRED.
|
||||
* Added MPI_IOCINIT_FLAGS_DISCARD_FW_IMAGE.
|
||||
* Replaced a reserved field in MSG_IOC_FACTS_REPLY with
|
||||
* IOCExceptions and changed DataImageSize to reserved.
|
||||
* Added MPI_FW_DOWNLOAD_ITYPE_NVSTORE_DATA and
|
||||
* MPI_FW_UPLOAD_ITYPE_NVDATA.
|
||||
* 09-28-01 01.02.03 Modified Event Data for Integrated RAID.
|
||||
* 11-01-01 01.02.04 Added defines for MPI_EXT_IMAGE_HEADER ImageType field.
|
||||
* 03-14-02 01.02.05 Added HeaderVersion field to MSG_IOC_FACTS_REPLY.
|
||||
* 05-31-02 01.02.06 Added define for
|
||||
* MPI_IOCFACTS_EXCEPT_RAID_CONFIG_INVALID.
|
||||
* Added AliasIndex to EVENT_DATA_LOGOUT structure.
|
||||
* 04-01-03 01.02.07 Added defines for MPI_FW_HEADER_SIGNATURE_.
|
||||
* 06-26-03 01.02.08 Added new values to the product family defines.
|
||||
* 04-29-04 01.02.09 Added IOCCapabilities field to MSG_IOC_FACTS_REPLY and
|
||||
* added related defines.
|
||||
* 05-11-04 01.03.01 Original release for MPI v1.3.
|
||||
* 08-19-04 01.05.01 Added four new fields to MSG_IOC_INIT.
|
||||
* Added three new fields to MSG_IOC_FACTS_REPLY.
|
||||
* Defined four new bits for the IOCCapabilities field of
|
||||
* the IOCFacts reply.
|
||||
* Added two new PortTypes for the PortFacts reply.
|
||||
* Added six new events along with their EventData
|
||||
* structures.
|
||||
* Added a new MsgFlag to the FwDownload request to
|
||||
* indicate last segment.
|
||||
* Defined a new image type of boot loader.
|
||||
* Added FW family codes for SAS product families.
|
||||
* 10-05-04 01.05.02 Added ReplyFifoHostSignalingAddr field to
|
||||
* MSG_IOC_FACTS_REPLY.
|
||||
* 12-07-04 01.05.03 Added more defines for SAS Discovery Error event.
|
||||
* 12-09-04 01.05.04 Added Unsupported device to SAS Device event.
|
||||
* 01-15-05 01.05.05 Added event data for SAS SES Event.
|
||||
* 02-09-05 01.05.06 Added MPI_FW_UPLOAD_ITYPE_FW_BACKUP define.
|
||||
* 02-22-05 01.05.07 Added Host Page Buffer Persistent flag to IOC Facts
|
||||
* Reply and IOC Init Request.
|
||||
* 03-11-05 01.05.08 Added family code for 1068E family.
|
||||
* Removed IOCFacts Reply EEDP Capability bit.
|
||||
* --------------------------------------------------------------------------
|
||||
|
||||
mpi_cnfg.h
|
||||
|
@ -142,6 +220,166 @@ mpi_cnfg.h
|
|||
* Added IO Unit Page 3.
|
||||
* Modified defines for Scsi Port Page 2.
|
||||
* Modified RAID Volume Pages.
|
||||
* 08-08-01 01.02.01 Original release for v1.2 work.
|
||||
* Added SepID and SepBus to RVP2 IMPhysicalDisk struct.
|
||||
* Added defines for the SEP bits in RVP2 VolumeSettings.
|
||||
* Modified the DeviceSettings field in RVP2 to use the
|
||||
* proper structure.
|
||||
* Added defines for SES, SAF-TE, and cross channel for
|
||||
* IOCPage2 CapabilitiesFlags.
|
||||
* Removed define for MPI_IOUNITPAGE2_FLAGS_RAID_DISABLE.
|
||||
* Removed define for
|
||||
* MPI_SCSIPORTPAGE2_PORT_FLAGS_PARITY_ENABLE.
|
||||
* Added define for MPI_CONFIG_PAGEATTR_RO_PERSISTENT.
|
||||
* 08-29-01 01.02.02 Fixed value for MPI_MANUFACTPAGE_DEVID_53C1035.
|
||||
* Added defines for MPI_FCPORTPAGE1_FLAGS_HARD_ALPA_ONLY
|
||||
* and MPI_FCPORTPAGE1_FLAGS_IMMEDIATE_ERROR_REPLY.
|
||||
* Removed MPI_SCSIPORTPAGE0_CAP_PACING_TRANSFERS,
|
||||
* MPI_SCSIDEVPAGE0_NP_PACING_TRANSFERS, and
|
||||
* MPI_SCSIDEVPAGE1_RP_PACING_TRANSFERS, and
|
||||
* MPI_SCSIDEVPAGE1_CONF_PPR_ALLOWED.
|
||||
* Added defines for MPI_SCSIDEVPAGE1_CONF_WDTR_DISALLOWED
|
||||
* and MPI_SCSIDEVPAGE1_CONF_SDTR_DISALLOWED.
|
||||
* Added OnBusTimerValue to CONFIG_PAGE_SCSI_PORT_1.
|
||||
* Added rejected bits to SCSI Device Page 0 Information.
|
||||
* Increased size of ALPA array in FC Port Page 2 by one
|
||||
* and removed a one byte reserved field.
|
||||
* 09-28-01 01.02.03 Swapped NegWireSpeedLow and NegWireSpeedLow in
|
||||
* CONFIG_PAGE_LAN_1 to match preferred 64-bit ordering.
|
||||
* Added structures for Manufacturing Page 4, IO Unit
|
||||
* Page 3, IOC Page 3, IOC Page 4, RAID Volume Page 0, and
|
||||
* RAID PhysDisk Page 0.
|
||||
* 10-04-01 01.02.04 Added define for MPI_CONFIG_PAGETYPE_RAID_PHYSDISK.
|
||||
* Modified some of the new defines to make them 32
|
||||
* character unique.
|
||||
* Modified how variable length pages (arrays) are defined.
|
||||
* Added generic defines for hot spare pools and RAID
|
||||
* volume types.
|
||||
* 11-01-01 01.02.05 Added define for MPI_IOUNITPAGE1_DISABLE_IR.
|
||||
* 03-14-02 01.02.06 Added PCISlotNum field to CONFIG_PAGE_IOC_1 along with
|
||||
* related define, and bumped the page version define.
|
||||
* 05-31-02 01.02.07 Added a Flags field to CONFIG_PAGE_IOC_2_RAID_VOL in a
|
||||
* reserved byte and added a define.
|
||||
* Added define for
|
||||
* MPI_RAIDVOL0_STATUS_FLAG_VOLUME_INACTIVE.
|
||||
* Added new config page: CONFIG_PAGE_IOC_5.
|
||||
* Added MaxAliases, MaxHardAliases, and NumCurrentAliases
|
||||
* fields to CONFIG_PAGE_FC_PORT_0.
|
||||
* Added AltConnector and NumRequestedAliases fields to
|
||||
* CONFIG_PAGE_FC_PORT_1.
|
||||
* Added new config page: CONFIG_PAGE_FC_PORT_10.
|
||||
* 07-12-02 01.02.08 Added more MPI_MANUFACTPAGE_DEVID_ defines.
|
||||
* Added additional MPI_SCSIDEVPAGE0_NP_ defines.
|
||||
* Added more MPI_SCSIDEVPAGE1_RP_ defines.
|
||||
* Added define for
|
||||
* MPI_SCSIDEVPAGE1_CONF_EXTENDED_PARAMS_ENABLE.
|
||||
* Added new config page: CONFIG_PAGE_SCSI_DEVICE_3.
|
||||
* Modified MPI_FCPORTPAGE5_FLAGS_ defines.
|
||||
* 09-16-02 01.02.09 Added MPI_SCSIDEVPAGE1_CONF_FORCE_PPR_MSG define.
|
||||
* 11-15-02 01.02.10 Added ConnectedID defines for CONFIG_PAGE_SCSI_PORT_0.
|
||||
* Added more Flags defines for CONFIG_PAGE_FC_PORT_1.
|
||||
* Added more Flags defines for CONFIG_PAGE_FC_DEVICE_0.
|
||||
* 04-01-03 01.02.11 Added RR_TOV field and additional Flags defines for
|
||||
* CONFIG_PAGE_FC_PORT_1.
|
||||
* Added define MPI_FCPORTPAGE5_FLAGS_DISABLE to disable
|
||||
* an alias.
|
||||
* Added more device id defines.
|
||||
* 06-26-03 01.02.12 Added MPI_IOUNITPAGE1_IR_USE_STATIC_VOLUME_ID define.
|
||||
* Added TargetConfig and IDConfig fields to
|
||||
* CONFIG_PAGE_SCSI_PORT_1.
|
||||
* Added more PortFlags defines for CONFIG_PAGE_SCSI_PORT_2
|
||||
* to control DV.
|
||||
* Added more Flags defines for CONFIG_PAGE_FC_PORT_1.
|
||||
* In CONFIG_PAGE_FC_DEVICE_0, replaced Reserved1 field
|
||||
* with ADISCHardALPA.
|
||||
* Added MPI_FC_DEVICE_PAGE0_PROT_FCP_RETRY define.
|
||||
* 01-16-04 01.02.13 Added InitiatorDeviceTimeout and InitiatorIoPendTimeout
|
||||
* fields and related defines to CONFIG_PAGE_FC_PORT_1.
|
||||
* Added define for
|
||||
* MPI_FCPORTPAGE1_FLAGS_SOFT_ALPA_FALLBACK.
|
||||
* Added new fields to the substructures of
|
||||
* CONFIG_PAGE_FC_PORT_10.
|
||||
* 04-29-04 01.02.14 Added define for IDP bit for CONFIG_PAGE_SCSI_PORT_0,
|
||||
* CONFIG_PAGE_SCSI_DEVICE_0, and
|
||||
* CONFIG_PAGE_SCSI_DEVICE_1. Also bumped Page Version for
|
||||
* these pages.
|
||||
* 05-11-04 01.03.01 Added structure for CONFIG_PAGE_INBAND_0.
|
||||
* 08-19-04 01.05.01 Modified MSG_CONFIG request to support extended config
|
||||
* pages.
|
||||
* Added a new structure for extended config page header.
|
||||
* Added new extended config pages types and structures for
|
||||
* SAS IO Unit, SAS Expander, SAS Device, and SAS PHY.
|
||||
* Replaced a reserved byte in CONFIG_PAGE_MANUFACTURING_4
|
||||
* to add a Flags field.
|
||||
* Two new Manufacturing config pages (5 and 6).
|
||||
* Two new bits defined for IO Unit Page 1 Flags field.
|
||||
* Modified CONFIG_PAGE_IO_UNIT_2 to add three new fields
|
||||
* to specify the BIOS boot device.
|
||||
* Four new Flags bits defined for IO Unit Page 2.
|
||||
* Added IO Unit Page 4.
|
||||
* Added EEDP Flags settings to IOC Page 1.
|
||||
* Added new BIOS Page 1 config page.
|
||||
* 10-05-04 01.05.02 Added define for
|
||||
* MPI_IOCPAGE1_INITIATOR_CONTEXT_REPLY_DISABLE.
|
||||
* Added new Flags field to CONFIG_PAGE_MANUFACTURING_5 and
|
||||
* associated defines.
|
||||
* Added more defines for SAS IO Unit Page 0
|
||||
* DiscoveryStatus field.
|
||||
* Added define for MPI_SAS_IOUNIT0_DS_SUBTRACTIVE_LINK
|
||||
* and MPI_SAS_IOUNIT0_DS_TABLE_LINK.
|
||||
* Added defines for Physical Mapping Modes to SAS IO Unit
|
||||
* Page 2.
|
||||
* Added define for
|
||||
* MPI_SAS_DEVICE0_FLAGS_PORT_SELECTOR_ATTACH.
|
||||
* 10-27-04 01.05.03 Added defines for new SAS PHY page addressing mode.
|
||||
* Added defines for MaxTargetSpinUp to BIOS Page 1.
|
||||
* Added 5 new ControlFlags defines for SAS IO Unit
|
||||
* Page 1.
|
||||
* Added MaxNumPhysicalMappedIDs field to SAS IO Unit
|
||||
* Page 2.
|
||||
* Added AccessStatus field to SAS Device Page 0 and added
|
||||
* new Flags bits for supported SATA features.
|
||||
* 12-07-04 01.05.04 Added config page structures for BIOS Page 2, RAID
|
||||
* Volume Page 1, and RAID Physical Disk Page 1.
|
||||
* Replaced IO Unit Page 1 BootTargetID,BootBus, and
|
||||
* BootAdapterNum with reserved field.
|
||||
* Added DataScrubRate and ResyncRate to RAID Volume
|
||||
* Page 0.
|
||||
* Added MPI_SAS_IOUNIT2_FLAGS_RESERVE_ID_0_FOR_BOOT
|
||||
* define.
|
||||
* 12-09-04 01.05.05 Added Target Mode Large CDB Enable to FC Port Page 1
|
||||
* Flags field.
|
||||
* Added Auto Port Config flag define for SAS IOUNIT
|
||||
* Page 1 ControlFlags.
|
||||
* Added Disabled bad Phy define to Expander Page 1
|
||||
* Discovery Info field.
|
||||
* Added SAS/SATA device support to SAS IOUnit Page 1
|
||||
* ControlFlags.
|
||||
* Added Unsupported device to SAS Dev Page 0 Flags field
|
||||
* Added disable use SATA Hash Address for SAS IOUNIT
|
||||
* page 1 in ControlFields.
|
||||
* 01-15-05 01.05.06 Added defaults for data scrub rate and resync rate to
|
||||
* Manufacturing Page 4.
|
||||
* Added new defines for BIOS Page 1 IOCSettings field.
|
||||
* Added ExtDiskIdentifier field to RAID Physical Disk
|
||||
* Page 0.
|
||||
* Added new defines for SAS IO Unit Page 1 ControlFlags
|
||||
* and to SAS Device Page 0 Flags to control SATA devices.
|
||||
* Added defines and structures for the new Log Page 0, a
|
||||
* new type of configuration page.
|
||||
* 02-09-05 01.05.07 Added InactiveStatus field to RAID Volume Page 0.
|
||||
* Added WWID field to RAID Volume Page 1.
|
||||
* Added PhysicalPort field to SAS Expander pages 0 and 1.
|
||||
* 03-11-05 01.05.08 Removed the EEDP flags from IOC Page 1.
|
||||
* Added Enclosure/Slot boot device format to BIOS Page 2.
|
||||
* New status value for RAID Volume Page 0 VolumeStatus
|
||||
* (VolumeState subfield).
|
||||
* New value for RAID Physical Page 0 InactiveStatus.
|
||||
* Added Inactive Volume Member flag RAID Physical Disk
|
||||
* Page 0 PhysDiskStatus field.
|
||||
* New physical mapping mode in SAS IO Unit Page 2.
|
||||
* Added CONFIG_PAGE_SAS_ENCLOSURE_0.
|
||||
* Added Slot and Enclosure fields to SAS Device Page 0.
|
||||
* --------------------------------------------------------------------------
|
||||
|
||||
mpi_init.h
|
||||
|
@ -154,6 +392,32 @@ mpi_init.h
|
|||
* 02-20-01 01.01.03 Started using MPI_POINTER.
|
||||
* 03-27-01 01.01.04 Added structure offset comments.
|
||||
* 04-10-01 01.01.05 Added new MsgFlag for MSG_SCSI_TASK_MGMT.
|
||||
* 08-08-01 01.02.01 Original release for v1.2 work.
|
||||
* 08-29-01 01.02.02 Added MPI_SCSITASKMGMT_TASKTYPE_LOGICAL_UNIT_RESET.
|
||||
* Added MPI_SCSI_STATE_QUEUE_TAG_REJECTED for
|
||||
* MSG_SCSI_IO_REPLY.
|
||||
* 09-28-01 01.02.03 Added structures and defines for SCSI Enclosure
|
||||
* Processor messages.
|
||||
* 10-04-01 01.02.04 Added defines for SEP request Action field.
|
||||
* 05-31-02 01.02.05 Added MPI_SCSIIO_MSGFLGS_CMD_DETERMINES_DATA_DIR define
|
||||
* for SCSI IO requests.
|
||||
* 11-15-02 01.02.06 Added special extended SCSI Status defines for FCP.
|
||||
* 06-26-03 01.02.07 Added MPI_SCSI_STATUS_FCPEXT_UNASSIGNED define.
|
||||
* 05-11-04 01.03.01 Original release for MPI v1.3.
|
||||
* 08-19-04 01.05.01 Added MsgFlags defines for EEDP to SCSI IO request.
|
||||
* Added new word to MSG_SCSI_IO_REPLY to add TaskTag field
|
||||
* and a reserved U16.
|
||||
* Added new MSG_SCSI_IO32_REQUEST structure.
|
||||
* Added a TaskType of Clear Task Set to SCSI
|
||||
* Task Management request.
|
||||
* 12-07-04 01.05.02 Added support for Task Management Query Task.
|
||||
* 01-15-05 01.05.03 Modified SCSI Enclosure Processor Request to support
|
||||
* WWID addressing.
|
||||
* 03-11-05 01.05.04 Removed EEDP flags from SCSI IO Request.
|
||||
* Removed SCSI IO 32 Request.
|
||||
* Modified SCSI Enclosure Processor Request and Reply to
|
||||
* support Enclosure/Slot addressing rather than WWID
|
||||
* addressing.
|
||||
* --------------------------------------------------------------------------
|
||||
|
||||
mpi_targ.h
|
||||
|
@ -170,6 +434,33 @@ mpi_targ.h
|
|||
* Added structures for MPI_TARGET_SCSI_SPI_CMD_BUFFER and
|
||||
* MPI_TARGET_FCP_CMD_BUFFER.
|
||||
* 03-27-01 01.01.04 Added structure offset comments.
|
||||
* 08-08-01 01.02.01 Original release for v1.2 work.
|
||||
* 09-28-01 01.02.02 Added structure for MPI_TARGET_SCSI_SPI_STATUS_IU.
|
||||
* Added PriorityReason field to some replies and
|
||||
* defined more PriorityReason codes.
|
||||
* Added some defines for to support previous version
|
||||
* of MPI.
|
||||
* 10-04-01 01.02.03 Added PriorityReason to MSG_TARGET_ERROR_REPLY.
|
||||
* 11-01-01 01.02.04 Added define for TARGET_STATUS_SEND_FLAGS_HIGH_PRIORITY.
|
||||
* 03-14-02 01.02.05 Modified MPI_TARGET_FCP_RSP_BUFFER to get the proper
|
||||
* byte ordering.
|
||||
* 05-31-02 01.02.06 Modified TARGET_MODE_REPLY_ALIAS_MASK to only include
|
||||
* one bit.
|
||||
* Added AliasIndex field to MPI_TARGET_FCP_CMD_BUFFER.
|
||||
* 09-16-02 01.02.07 Added flags for confirmed completion.
|
||||
* Added PRIORITY_REASON_TARGET_BUSY.
|
||||
* 11-15-02 01.02.08 Added AliasID field to MPI_TARGET_SCSI_SPI_CMD_BUFFER.
|
||||
* 04-01-03 01.02.09 Added OptionalOxid field to MPI_TARGET_FCP_CMD_BUFFER.
|
||||
* 05-11-04 01.03.01 Original release for MPI v1.3.
|
||||
* 08-19-04 01.05.01 Added new request message structures for
|
||||
* MSG_TARGET_CMD_BUF_POST_BASE_REQUEST,
|
||||
* MSG_TARGET_CMD_BUF_POST_LIST_REQUEST, and
|
||||
* MSG_TARGET_ASSIST_EXT_REQUEST.
|
||||
* Added new structures for SAS SSP Command buffer, SSP
|
||||
* Task buffer, and SSP Status IU.
|
||||
* 10-05-04 01.05.02 MSG_TARGET_CMD_BUFFER_POST_BASE_LIST_REPLY added.
|
||||
* 02-22-05 01.05.03 Changed a comment.
|
||||
* 03-11-05 01.05.04 Removed TargetAssistExtended Request.
|
||||
* --------------------------------------------------------------------------
|
||||
|
||||
mpi_fc.h
|
||||
|
@ -192,6 +483,13 @@ mpi_fc.h
|
|||
* Added MPI_FC_PRIM_SEND_FLAGS_RESET_LINK define.
|
||||
* Added structure offset comments.
|
||||
* 04-09-01 01.01.07 Added RspLength field to MSG_LINK_SERVICE_RSP_REQUEST.
|
||||
* 08-08-01 01.02.01 Original release for v1.2 work.
|
||||
* 09-28-01 01.02.02 Change name of reserved field in
|
||||
* MSG_LINK_SERVICE_RSP_REPLY.
|
||||
* 05-31-02 01.02.03 Adding AliasIndex to FC Direct Access requests.
|
||||
* 01-16-04 01.02.04 Added define for MPI_FC_PRIM_SEND_FLAGS_ML_RESET_LINK.
|
||||
* 05-11-04 01.03.01 Original release for MPI v1.3.
|
||||
* 08-19-04 01.05.01 Original release for MPI v1.5.
|
||||
* --------------------------------------------------------------------------
|
||||
|
||||
mpi_lan.h
|
||||
|
@ -209,11 +507,56 @@ mpi_lan.h
|
|||
* 11-02-00 01.01.01 Original release for post 1.0 work
|
||||
* 02-20-01 01.01.02 Started using MPI_POINTER.
|
||||
* 03-27-01 01.01.03 Added structure offset comments.
|
||||
* 08-08-01 01.02.01 Original release for v1.2 work.
|
||||
* 05-11-04 01.03.01 Original release for MPI v1.3.
|
||||
* 08-19-04 01.05.01 Original release for MPI v1.5.
|
||||
* --------------------------------------------------------------------------
|
||||
|
||||
mpi_raid.h
|
||||
* 02-27-01 01.01.01 Original release for this file.
|
||||
* 03-27-01 01.01.02 Added structure offset comments.
|
||||
* 08-08-01 01.02.01 Original release for v1.2 work.
|
||||
* 08-29-01 01.02.02 Added DIAG_DATA_UPLOAD_HEADER and related defines.
|
||||
* 09-28-01 01.02.02 Major rework for MPI v1.2 Integrated RAID changes.
|
||||
* 10-04-01 01.02.03 Added ActionData defines for
|
||||
* MPI_RAID_ACTION_DELETE_VOLUME action.
|
||||
* 11-01-01 01.02.04 Added define for MPI_RAID_ACTION_ADATA_DO_NOT_SYNC.
|
||||
* 03-14-02 01.02.05 Added define for MPI_RAID_ACTION_ADATA_LOW_LEVEL_INIT.
|
||||
* 05-07-02 01.02.06 Added define for MPI_RAID_ACTION_ACTIVATE_VOLUME,
|
||||
* MPI_RAID_ACTION_INACTIVATE_VOLUME, and
|
||||
* MPI_RAID_ACTION_ADATA_INACTIVATE_ALL.
|
||||
* 07-12-02 01.02.07 Added structures for Mailbox request and reply.
|
||||
* 11-15-02 01.02.08 Added missing MsgContext field to MSG_MAILBOX_REQUEST.
|
||||
* 04-01-03 01.02.09 New action data option flag for
|
||||
* MPI_RAID_ACTION_DELETE_VOLUME.
|
||||
* 05-11-04 01.03.01 Original release for MPI v1.3.
|
||||
* 08-19-04 01.05.01 Original release for MPI v1.5.
|
||||
* 01-15-05 01.05.02 Added defines for the two new RAID Actions for
|
||||
* _SET_RESYNC_RATE and _SET_DATA_SCRUB_RATE.
|
||||
* --------------------------------------------------------------------------
|
||||
|
||||
mpi_tool.h
|
||||
* 08-08-01 01.02.01 Original release.
|
||||
* 08-29-01 01.02.02 Added DIAG_DATA_UPLOAD_HEADER and related defines.
|
||||
* 01-16-04 01.02.03 Added defines and structures for new tools
|
||||
*. MPI_TOOLBOX_ISTWI_READ_WRITE_TOOL and
|
||||
* MPI_TOOLBOX_FC_MANAGEMENT_TOOL.
|
||||
* 04-29-04 01.02.04 Added message structures for Diagnostic Buffer Post and
|
||||
* Diagnostic Release requests and replies.
|
||||
* 05-11-04 01.03.01 Original release for MPI v1.3.
|
||||
* 08-19-04 01.05.01 Original release for MPI v1.5.
|
||||
* 10-06-04 01.05.02 Added define for MPI_DIAG_BUF_TYPE_COUNT.
|
||||
* 02-09-05 01.05.03 Added frame size option to FC management tool.
|
||||
* Added Beacon tool to the Toolbox.
|
||||
* --------------------------------------------------------------------------
|
||||
|
||||
mpi_inb.h
|
||||
* 05-11-04 01.03.01 Original release.
|
||||
* 08-19-04 01.05.01 Original release for MPI v1.5.
|
||||
* --------------------------------------------------------------------------
|
||||
|
||||
mpi_sas.h
|
||||
* 08-19-04 01.05.01 Original release.
|
||||
* --------------------------------------------------------------------------
|
||||
|
||||
mpi_type.h
|
||||
|
@ -221,21 +564,83 @@ mpi_type.h
|
|||
* 06-06-00 01.00.01 Update version number for 1.0 release.
|
||||
* 11-02-00 01.01.01 Original release for post 1.0 work
|
||||
* 02-20-01 01.01.02 Added define and ifdef for MPI_POINTER.
|
||||
* 08-08-01 01.02.01 Original release for v1.2 work.
|
||||
* 05-11-04 01.03.01 Original release for MPI v1.3.
|
||||
* 08-19-04 01.05.01 Original release for MPI v1.5.
|
||||
* --------------------------------------------------------------------------
|
||||
|
||||
mpi_history.txt Parts list history
|
||||
|
||||
Filename 01.01.10
|
||||
Filename 01.05.09
|
||||
---------- --------
|
||||
mpi.h 01.01.07
|
||||
mpi_ioc.h 01.01.07
|
||||
mpi_cnfg.h 01.01.11
|
||||
mpi_init.h 01.01.05
|
||||
mpi_targ.h 01.01.04
|
||||
mpi_fc.h 01.01.07
|
||||
mpi_lan.h 01.01.03
|
||||
mpi_raid.h 01.01.02
|
||||
mpi_type.h 01.01.02
|
||||
mpi.h 01.05.07
|
||||
mpi_ioc.h 01.05.08
|
||||
mpi_cnfg.h 01.05.08
|
||||
mpi_init.h 01.05.04
|
||||
mpi_targ.h 01.05.04
|
||||
mpi_fc.h 01.05.01
|
||||
mpi_lan.h 01.05.01
|
||||
mpi_raid.h 01.05.02
|
||||
mpi_tool.h 01.05.03
|
||||
mpi_inb.h 01.05.01
|
||||
mpi_sas.h 01.05.01
|
||||
mpi_type.h 01.05.01
|
||||
|
||||
Filename 01.05.08 01.05.07 01.05.06 01.05.05 01.05.04 01.05.03
|
||||
---------- -------- -------- -------- -------- -------- --------
|
||||
mpi.h 01.05.06 01.05.05 01.05.04 01.05.03 01.05.02 01.05.01
|
||||
mpi_ioc.h 01.05.07 01.05.06 01.05.05 01.05.04 01.05.03 01.05.02
|
||||
mpi_cnfg.h 01.05.07 01.05.07 01.05.06 01.05.05 01.05.04 01.05.03
|
||||
mpi_init.h 01.05.03 01.05.03 01.05.03 01.05.02 01.05.02 01.05.01
|
||||
mpi_targ.h 01.05.03 01.05.02 01.05.02 01.05.02 01.05.02 01.05.02
|
||||
mpi_fc.h 01.05.01 01.05.01 01.05.01 01.05.01 01.05.01 01.05.01
|
||||
mpi_lan.h 01.05.01 01.05.01 01.05.01 01.05.01 01.05.01 01.05.01
|
||||
mpi_raid.h 01.05.02 01.05.02 01.05.02 01.05.01 01.05.01 01.05.01
|
||||
mpi_tool.h 01.05.03 01.05.03 01.05.02 01.05.02 01.05.02 01.05.02
|
||||
mpi_inb.h 01.05.01 01.05.01 01.05.01 01.05.01 01.05.01 01.05.01
|
||||
mpi_sas.h 01.05.01 01.05.01 01.05.01 01.05.01 01.05.01 01.05.01
|
||||
mpi_type.h 01.05.01 01.05.01 01.05.01 01.05.01 01.05.01 01.05.01
|
||||
|
||||
Filename 01.05.02 01.05.01 01.03.01 01.02.14 01.02.13 01.02.12
|
||||
---------- -------- -------- -------- -------- -------- --------
|
||||
mpi.h 01.05.01 01.05.01 01.03.01 01.02.12 01.02.11 01.02.10
|
||||
mpi_ioc.h 01.05.02 01.05.01 01.03.01 01.02.09 01.02.08 01.02.08
|
||||
mpi_cnfg.h 01.05.02 01.05.01 01.03.01 01.02.14 01.02.13 01.02.12
|
||||
mpi_init.h 01.05.01 01.05.01 01.03.01 01.02.07 01.02.07 01.02.07
|
||||
mpi_targ.h 01.05.02 01.05.01 01.03.01 01.02.09 01.02.09 01.02.09
|
||||
mpi_fc.h 01.05.01 01.05.01 01.03.01 01.02.04 01.02.04 01.02.03
|
||||
mpi_lan.h 01.05.01 01.05.01 01.03.01 01.02.01 01.02.01 01.02.01
|
||||
mpi_raid.h 01.05.01 01.05.01 01.03.01 01.02.09 01.02.09 01.02.09
|
||||
mpi_tool.h 01.05.02 01.05.01 01.03.01 01.02.01 01.02.01 01.02.01
|
||||
mpi_inb.h 01.05.01 01.05.01 01.03.01
|
||||
mpi_sas.h 01.05.01 01.05.01
|
||||
mpi_type.h 01.05.01 01.05.01 01.03.01 01.02.04 01.02.03 01.02.02
|
||||
|
||||
Filename 01.02.11 01.02.10 01.02.09 01.02.08 01.02.07 01.02.06
|
||||
---------- -------- -------- -------- -------- -------- --------
|
||||
mpi.h 01.02.09 01.02.08 01.02.07 01.02.06 01.02.05 01.02.04
|
||||
mpi_ioc.h 01.02.07 01.02.06 01.02.06 01.02.06 01.02.06 01.02.05
|
||||
mpi_cnfg.h 01.02.11 01.02.10 01.02.09 01.02.08 01.02.07 01.02.06
|
||||
mpi_init.h 01.02.06 01.02.06 01.02.05 01.02.05 01.02.05 01.02.04
|
||||
mpi_targ.h 01.02.09 01.02.08 01.02.07 01.02.06 01.02.06 01.02.05
|
||||
mpi_fc.h 01.02.03 01.02.03 01.02.03 01.02.03 01.02.03 01.02.02
|
||||
mpi_lan.h 01.02.01 01.02.01 01.02.01 01.02.01 01.02.01 01.02.01
|
||||
mpi_raid.h 01.02.09 01.02.08 01.02.07 01.02.07 01.02.06 01.02.05
|
||||
mpi_tool.h 01.02.01 01.02.01 01.02.01 01.02.01 01.02.01 01.02.01
|
||||
mpi_type.h 01.02.02 01.02.02 01.02.02 01.02.02 01.02.02 01.02.02
|
||||
|
||||
Filename 01.02.05 01.02.04 01.02.03 01.02.02 01.02.01 01.01.10
|
||||
---------- -------- -------- -------- -------- -------- --------
|
||||
mpi.h 01.02.03 01.02.02 01.02.02 01.02.01 01.02.01 01.01.07
|
||||
mpi_ioc.h 01.02.04 01.02.03 01.02.03 01.02.02 01.02.01 01.01.07
|
||||
mpi_cnfg.h 01.02.05 01.02.04 01.02.03 01.02.02 01.02.01 01.01.11
|
||||
mpi_init.h 01.02.04 01.02.04 01.02.03 01.02.02 01.02.01 01.01.05
|
||||
mpi_targ.h 01.02.04 01.02.03 01.02.02 01.02.01 01.02.01 01.01.04
|
||||
mpi_fc.h 01.02.02 01.02.02 01.02.02 01.02.01 01.02.01 01.01.07
|
||||
mpi_lan.h 01.02.01 01.02.01 01.02.01 01.02.01 01.02.01 01.01.03
|
||||
mpi_raid.h 01.02.04 01.02.03 01.02.02 01.02.01 01.02.01 01.01.02
|
||||
mpi_tool.h 01.02.02 01.02.02 01.02.02 01.02.02 01.02.01
|
||||
mpi_type.h 01.02.02 01.02.02 01.02.02 01.02.02 01.02.01 01.01.02
|
||||
|
||||
Filename 01.01.09 01.01.08 01.01.07 01.01.06 01.01.05 01.01.04
|
||||
---------- -------- -------- -------- -------- -------- --------
|
||||
|
|
|
@ -1,19 +1,20 @@
|
|||
/*
|
||||
* Copyright (c) 2003 LSI Logic Corporation.
|
||||
* Copyright (c) 2003-2004 LSI Logic Corporation.
|
||||
*
|
||||
*
|
||||
* Name: mpi_inb.h
|
||||
* Title: MPI Inband structures and definitions
|
||||
* Creation Date: September 30, 2003
|
||||
*
|
||||
* mpi_inb.h Version: 01.03.xx
|
||||
* mpi_inb.h Version: 01.05.01
|
||||
*
|
||||
* Version History
|
||||
* ---------------
|
||||
*
|
||||
* Date Version Description
|
||||
* -------- -------- ------------------------------------------------------
|
||||
* ??-??-?? 01.03.01 Original release.
|
||||
* 05-11-04 01.03.01 Original release.
|
||||
* 08-19-04 01.05.01 Original release for MPI v1.5.
|
||||
* --------------------------------------------------------------------------
|
||||
*/
|
||||
|
||||
|
|
|
@ -1,12 +1,12 @@
|
|||
/*
|
||||
* Copyright (c) 2000-2003 LSI Logic Corporation.
|
||||
* Copyright (c) 2000-2005 LSI Logic Corporation.
|
||||
*
|
||||
*
|
||||
* Name: mpi_init.h
|
||||
* Title: MPI initiator mode messages and structures
|
||||
* Creation Date: June 8, 2000
|
||||
*
|
||||
* mpi_init.h Version: 01.05.xx
|
||||
* mpi_init.h Version: 01.05.04
|
||||
*
|
||||
* Version History
|
||||
* ---------------
|
||||
|
@ -33,6 +33,21 @@
|
|||
* for SCSI IO requests.
|
||||
* 11-15-02 01.02.06 Added special extended SCSI Status defines for FCP.
|
||||
* 06-26-03 01.02.07 Added MPI_SCSI_STATUS_FCPEXT_UNASSIGNED define.
|
||||
* 05-11-04 01.03.01 Original release for MPI v1.3.
|
||||
* 08-19-04 01.05.01 Added MsgFlags defines for EEDP to SCSI IO request.
|
||||
* Added new word to MSG_SCSI_IO_REPLY to add TaskTag field
|
||||
* and a reserved U16.
|
||||
* Added new MSG_SCSI_IO32_REQUEST structure.
|
||||
* Added a TaskType of Clear Task Set to SCSI
|
||||
* Task Management request.
|
||||
* 12-07-04 01.05.02 Added support for Task Management Query Task.
|
||||
* 01-15-05 01.05.03 Modified SCSI Enclosure Processor Request to support
|
||||
* WWID addressing.
|
||||
* 03-11-05 01.05.04 Removed EEDP flags from SCSI IO Request.
|
||||
* Removed SCSI IO 32 Request.
|
||||
* Modified SCSI Enclosure Processor Request and Reply to
|
||||
* support Enclosure/Slot addressing rather than WWID
|
||||
* addressing.
|
||||
* --------------------------------------------------------------------------
|
||||
*/
|
||||
|
||||
|
@ -76,20 +91,12 @@ typedef struct _MSG_SCSI_IO_REQUEST
|
|||
#define MPI_SCSIIO_MSGFLGS_SENSE_WIDTH (0x01)
|
||||
#define MPI_SCSIIO_MSGFLGS_SENSE_WIDTH_32 (0x00)
|
||||
#define MPI_SCSIIO_MSGFLGS_SENSE_WIDTH_64 (0x01)
|
||||
|
||||
#define MPI_SCSIIO_MSGFLGS_SENSE_LOCATION (0x02)
|
||||
#define MPI_SCSIIO_MSGFLGS_SENSE_LOC_HOST (0x00)
|
||||
#define MPI_SCSIIO_MSGFLGS_SENSE_LOC_IOC (0x02)
|
||||
#define MPI_SCSIIO_MSGFLGS_CMD_DETERMINES_DATA_DIR (0x04)
|
||||
#define MPI_SCSIIO_MSGFLGS_EEDP_TYPE_MASK (0xE0)
|
||||
#define MPI_SCSIIO_MSGFLGS_EEDP_NONE (0x00)
|
||||
#define MPI_SCSIIO_MSGFLGS_EEDP_RDPROTECT_T10 (0x20)
|
||||
#define MPI_SCSIIO_MSGFLGS_EEDP_VRPROTECT_T10 (0x40)
|
||||
#define MPI_SCSIIO_MSGFLGS_EEDP_WRPROTECT_T10 (0x60)
|
||||
#define MPI_SCSIIO_MSGFLGS_EEDP_520_READ_MODE1 (0x20)
|
||||
#define MPI_SCSIIO_MSGFLGS_EEDP_520_WRITE_MODE1 (0x40)
|
||||
#define MPI_SCSIIO_MSGFLGS_EEDP_8_9_READ_MODE1 (0x60)
|
||||
#define MPI_SCSIIO_MSGFLGS_EEDP_8_9_WRITE_MODE1 (0x80)
|
||||
|
||||
#define MPI_SCSIIO_MSGFLGS_CMD_DETERMINES_DATA_DIR (0x04)
|
||||
|
||||
/* SCSI IO LUN fields */
|
||||
|
||||
|
@ -148,6 +155,8 @@ typedef struct _MSG_SCSI_IO_REPLY
|
|||
U32 TransferCount; /* 14h */
|
||||
U32 SenseCount; /* 18h */
|
||||
U32 ResponseInfo; /* 1Ch */
|
||||
U16 TaskTag; /* 20h */
|
||||
U16 Reserved1; /* 22h */
|
||||
} MSG_SCSI_IO_REPLY, MPI_POINTER PTR_MSG_SCSI_IO_REPLY,
|
||||
SCSIIOReply_t, MPI_POINTER pSCSIIOReply_t;
|
||||
|
||||
|
@ -190,32 +199,7 @@ typedef struct _MSG_SCSI_IO_REPLY
|
|||
#define MPI_SCSI_RSP_INFO_TASK_MGMT_FAILED (0x05000000)
|
||||
#define MPI_SCSI_RSP_INFO_SPI_LQ_INVALID_TYPE (0x06000000)
|
||||
|
||||
|
||||
/****************************************************************************/
|
||||
/* SCSI IO 32 Request message structure */
|
||||
/****************************************************************************/
|
||||
|
||||
typedef struct _MSG_SCSI_IO32_REQUEST
|
||||
{
|
||||
U8 TargetID; /* 00h */
|
||||
U8 Bus; /* 01h */
|
||||
U8 ChainOffset; /* 02h */
|
||||
U8 Function; /* 03h */
|
||||
U8 CDBLength; /* 04h */
|
||||
U8 SenseBufferLength; /* 05h */
|
||||
U8 Reserved; /* 06h */
|
||||
U8 MsgFlags; /* 07h */
|
||||
U32 MsgContext; /* 08h */
|
||||
U8 LUN[8]; /* 0Ch */
|
||||
U32 Control; /* 14h */
|
||||
U8 CDB[32]; /* 18h */
|
||||
U32 DataLength; /* 38h */
|
||||
U32 SenseBufferLowAddr; /* 3Ch */
|
||||
SGE_IO_UNION SGL; /* 40h */
|
||||
} MSG_SCSI_IO32_REQUEST, MPI_POINTER PTR_MSG_SCSI_IO32_REQUEST,
|
||||
SCSIIO32Request_t, MPI_POINTER pSCSIIO32Request_t;
|
||||
|
||||
/* SCSI IO 32 uses the same defines as above for SCSI IO */
|
||||
#define MPI_SCSI_TASKTAG_UNKNOWN (0xFFFF)
|
||||
|
||||
|
||||
/****************************************************************************/
|
||||
|
@ -247,6 +231,7 @@ typedef struct _MSG_SCSI_TASK_MGMT
|
|||
#define MPI_SCSITASKMGMT_TASKTYPE_RESET_BUS (0x04)
|
||||
#define MPI_SCSITASKMGMT_TASKTYPE_LOGICAL_UNIT_RESET (0x05)
|
||||
#define MPI_SCSITASKMGMT_TASKTYPE_CLEAR_TASK_SET (0x06)
|
||||
#define MPI_SCSITASKMGMT_TASKTYPE_QUERY_TASK (0x07)
|
||||
|
||||
/* MsgFlags bits */
|
||||
#define MPI_SCSITASKMGMT_MSGFLAGS_TARGET_RESET_OPTION (0x00)
|
||||
|
@ -260,7 +245,7 @@ typedef struct _MSG_SCSI_TASK_MGMT_REPLY
|
|||
U8 Bus; /* 01h */
|
||||
U8 MsgLength; /* 02h */
|
||||
U8 Function; /* 03h */
|
||||
U8 Reserved; /* 04h */
|
||||
U8 ResponseCode; /* 04h */
|
||||
U8 TaskType; /* 05h */
|
||||
U8 Reserved1; /* 06h */
|
||||
U8 MsgFlags; /* 07h */
|
||||
|
@ -272,6 +257,15 @@ typedef struct _MSG_SCSI_TASK_MGMT_REPLY
|
|||
} MSG_SCSI_TASK_MGMT_REPLY, MPI_POINTER PTR_MSG_SCSI_TASK_MGMT_REPLY,
|
||||
SCSITaskMgmtReply_t, MPI_POINTER pSCSITaskMgmtReply_t;
|
||||
|
||||
/* ResponseCode values */
|
||||
#define MPI_SCSITASKMGMT_RSP_TM_COMPLETE (0x00)
|
||||
#define MPI_SCSITASKMGMT_RSP_INVALID_FRAME (0x02)
|
||||
#define MPI_SCSITASKMGMT_RSP_TM_NOT_SUPPORTED (0x04)
|
||||
#define MPI_SCSITASKMGMT_RSP_TM_FAILED (0x05)
|
||||
#define MPI_SCSITASKMGMT_RSP_TM_SUCCEEDED (0x08)
|
||||
#define MPI_SCSITASKMGMT_RSP_TM_INVALID_LUN (0x09)
|
||||
#define MPI_SCSITASKMGMT_RSP_IO_QUEUED_ON_IOC (0x80)
|
||||
|
||||
|
||||
/****************************************************************************/
|
||||
/* SCSI Enclosure Processor messages */
|
||||
|
@ -284,11 +278,16 @@ typedef struct _MSG_SEP_REQUEST
|
|||
U8 ChainOffset; /* 02h */
|
||||
U8 Function; /* 03h */
|
||||
U8 Action; /* 04h */
|
||||
U8 Reserved1; /* 05h */
|
||||
U8 Reserved2; /* 06h */
|
||||
U8 Flags; /* 05h */
|
||||
U8 Reserved1; /* 06h */
|
||||
U8 MsgFlags; /* 07h */
|
||||
U32 MsgContext; /* 08h */
|
||||
U32 SlotStatus; /* 0Ch */
|
||||
U32 Reserved2; /* 10h */
|
||||
U32 Reserved3; /* 14h */
|
||||
U32 Reserved4; /* 18h */
|
||||
U16 Slot; /* 1Ch */
|
||||
U16 EnclosureHandle; /* 1Eh */
|
||||
} MSG_SEP_REQUEST, MPI_POINTER PTR_MSG_SEP_REQUEST,
|
||||
SEPRequest_t, MPI_POINTER pSEPRequest_t;
|
||||
|
||||
|
@ -296,6 +295,10 @@ typedef struct _MSG_SEP_REQUEST
|
|||
#define MPI_SEP_REQ_ACTION_WRITE_STATUS (0x00)
|
||||
#define MPI_SEP_REQ_ACTION_READ_STATUS (0x01)
|
||||
|
||||
/* Flags defines */
|
||||
#define MPI_SEP_REQ_FLAGS_ENCLOSURE_SLOT_ADDRESS (0x01)
|
||||
#define MPI_SEP_REQ_FLAGS_BUS_TARGETID_ADDRESS (0x00)
|
||||
|
||||
/* SlotStatus bits for MSG_SEP_REQUEST */
|
||||
#define MPI_SEP_REQ_SLOTSTATUS_NO_ERROR (0x00000001)
|
||||
#define MPI_SEP_REQ_SLOTSTATUS_DEV_FAULTY (0x00000002)
|
||||
|
@ -332,6 +335,9 @@ typedef struct _MSG_SEP_REPLY
|
|||
U16 IOCStatus; /* 0Eh */
|
||||
U32 IOCLogInfo; /* 10h */
|
||||
U32 SlotStatus; /* 14h */
|
||||
U32 Reserved4; /* 18h */
|
||||
U16 Slot; /* 1Ch */
|
||||
U16 EnclosureHandle; /* 1Eh */
|
||||
} MSG_SEP_REPLY, MPI_POINTER PTR_MSG_SEP_REPLY,
|
||||
SEPReply_t, MPI_POINTER pSEPReply_t;
|
||||
|
||||
|
|
|
@ -1,12 +1,12 @@
|
|||
/*
|
||||
* Copyright (c) 2000-2003 LSI Logic Corporation.
|
||||
* Copyright (c) 2000-2005 LSI Logic Corporation.
|
||||
*
|
||||
*
|
||||
* Name: mpi_ioc.h
|
||||
* Title: MPI IOC, Port, Event, FW Download, and FW Upload messages
|
||||
* Creation Date: August 11, 2000
|
||||
*
|
||||
* mpi_ioc.h Version: 01.05.xx
|
||||
* mpi_ioc.h Version: 01.05.08
|
||||
*
|
||||
* Version History
|
||||
* ---------------
|
||||
|
@ -57,6 +57,30 @@
|
|||
* Added AliasIndex to EVENT_DATA_LOGOUT structure.
|
||||
* 04-01-03 01.02.07 Added defines for MPI_FW_HEADER_SIGNATURE_.
|
||||
* 06-26-03 01.02.08 Added new values to the product family defines.
|
||||
* 04-29-04 01.02.09 Added IOCCapabilities field to MSG_IOC_FACTS_REPLY and
|
||||
* added related defines.
|
||||
* 05-11-04 01.03.01 Original release for MPI v1.3.
|
||||
* 08-19-04 01.05.01 Added four new fields to MSG_IOC_INIT.
|
||||
* Added three new fields to MSG_IOC_FACTS_REPLY.
|
||||
* Defined four new bits for the IOCCapabilities field of
|
||||
* the IOCFacts reply.
|
||||
* Added two new PortTypes for the PortFacts reply.
|
||||
* Added six new events along with their EventData
|
||||
* structures.
|
||||
* Added a new MsgFlag to the FwDownload request to
|
||||
* indicate last segment.
|
||||
* Defined a new image type of boot loader.
|
||||
* Added FW family codes for SAS product families.
|
||||
* 10-05-04 01.05.02 Added ReplyFifoHostSignalingAddr field to
|
||||
* MSG_IOC_FACTS_REPLY.
|
||||
* 12-07-04 01.05.03 Added more defines for SAS Discovery Error event.
|
||||
* 12-09-04 01.05.04 Added Unsupported device to SAS Device event.
|
||||
* 01-15-05 01.05.05 Added event data for SAS SES Event.
|
||||
* 02-09-05 01.05.06 Added MPI_FW_UPLOAD_ITYPE_FW_BACKUP define.
|
||||
* 02-22-05 01.05.07 Added Host Page Buffer Persistent flag to IOC Facts
|
||||
* Reply and IOC Init Request.
|
||||
* 03-11-05 01.05.08 Added family code for 1068E family.
|
||||
* Removed IOCFacts Reply EEDP Capability bit.
|
||||
* --------------------------------------------------------------------------
|
||||
*/
|
||||
|
||||
|
@ -90,20 +114,37 @@ typedef struct _MSG_IOC_INIT
|
|||
U32 HostMfaHighAddr; /* 10h */
|
||||
U32 SenseBufferHighAddr; /* 14h */
|
||||
U32 ReplyFifoHostSignalingAddr; /* 18h */
|
||||
SGE_SIMPLE_UNION HostPageBufferSGE; /* 1Ch */
|
||||
U16 MsgVersion; /* 28h */
|
||||
U16 HeaderVersion; /* 2Ah */
|
||||
} MSG_IOC_INIT, MPI_POINTER PTR_MSG_IOC_INIT,
|
||||
IOCInit_t, MPI_POINTER pIOCInit_t;
|
||||
|
||||
/* WhoInit values */
|
||||
#define MPI_WHOINIT_NO_ONE (0x00)
|
||||
#define MPI_WHOINIT_SYSTEM_BIOS (0x01)
|
||||
#define MPI_WHOINIT_ROM_BIOS (0x02)
|
||||
#define MPI_WHOINIT_PCI_PEER (0x03)
|
||||
#define MPI_WHOINIT_HOST_DRIVER (0x04)
|
||||
#define MPI_WHOINIT_MANUFACTURER (0x05)
|
||||
#define MPI_WHOINIT_NO_ONE (0x00)
|
||||
#define MPI_WHOINIT_SYSTEM_BIOS (0x01)
|
||||
#define MPI_WHOINIT_ROM_BIOS (0x02)
|
||||
#define MPI_WHOINIT_PCI_PEER (0x03)
|
||||
#define MPI_WHOINIT_HOST_DRIVER (0x04)
|
||||
#define MPI_WHOINIT_MANUFACTURER (0x05)
|
||||
|
||||
/* Flags values */
|
||||
#define MPI_IOCINIT_FLAGS_DISCARD_FW_IMAGE (0x01)
|
||||
#define MPI_IOCINIT_FLAGS_REPLY_FIFO_HOST_SIGNAL (0x02)
|
||||
#define MPI_IOCINIT_FLAGS_HOST_PAGE_BUFFER_PERSISTENT (0x04)
|
||||
#define MPI_IOCINIT_FLAGS_REPLY_FIFO_HOST_SIGNAL (0x02)
|
||||
#define MPI_IOCINIT_FLAGS_DISCARD_FW_IMAGE (0x01)
|
||||
|
||||
/* MsgVersion */
|
||||
#define MPI_IOCINIT_MSGVERSION_MAJOR_MASK (0xFF00)
|
||||
#define MPI_IOCINIT_MSGVERSION_MAJOR_SHIFT (8)
|
||||
#define MPI_IOCINIT_MSGVERSION_MINOR_MASK (0x00FF)
|
||||
#define MPI_IOCINIT_MSGVERSION_MINOR_SHIFT (0)
|
||||
|
||||
/* HeaderVersion */
|
||||
#define MPI_IOCINIT_HEADERVERSION_UNIT_MASK (0xFF00)
|
||||
#define MPI_IOCINIT_HEADERVERSION_UNIT_SHIFT (8)
|
||||
#define MPI_IOCINIT_HEADERVERSION_DEV_MASK (0x00FF)
|
||||
#define MPI_IOCINIT_HEADERVERSION_DEV_SHIFT (0)
|
||||
|
||||
|
||||
typedef struct _MSG_IOC_INIT_REPLY
|
||||
{
|
||||
|
@ -187,32 +228,39 @@ typedef struct _MSG_IOC_FACTS_REPLY
|
|||
MPI_FW_VERSION FWVersion; /* 38h */
|
||||
U16 HighPriorityQueueDepth; /* 3Ch */
|
||||
U16 Reserved2; /* 3Eh */
|
||||
SGE_SIMPLE_UNION HostPageBufferSGE; /* 40h */
|
||||
U32 ReplyFifoHostSignalingAddr; /* 4Ch */
|
||||
} MSG_IOC_FACTS_REPLY, MPI_POINTER PTR_MSG_IOC_FACTS_REPLY,
|
||||
IOCFactsReply_t, MPI_POINTER pIOCFactsReply_t;
|
||||
|
||||
#define MPI_IOCFACTS_MSGVERSION_MAJOR_MASK (0xFF00)
|
||||
#define MPI_IOCFACTS_MSGVERSION_MINOR_MASK (0x00FF)
|
||||
#define MPI_IOCFACTS_MSGVERSION_MAJOR_MASK (0xFF00)
|
||||
#define MPI_IOCFACTS_MSGVERSION_MAJOR_SHIFT (8)
|
||||
#define MPI_IOCFACTS_MSGVERSION_MINOR_MASK (0x00FF)
|
||||
#define MPI_IOCFACTS_MSGVERSION_MINOR_SHIFT (0)
|
||||
|
||||
#define MPI_IOCFACTS_HEADERVERSION_UNIT_MASK (0xFF00)
|
||||
#define MPI_IOCFACTS_HEADERVERSION_DEV_MASK (0x00FF)
|
||||
#define MPI_IOCFACTS_HDRVERSION_UNIT_MASK (0xFF00)
|
||||
#define MPI_IOCFACTS_HDRVERSION_UNIT_SHIFT (8)
|
||||
#define MPI_IOCFACTS_HDRVERSION_DEV_MASK (0x00FF)
|
||||
#define MPI_IOCFACTS_HDRVERSION_DEV_SHIFT (0)
|
||||
|
||||
#define MPI_IOCFACTS_EXCEPT_CONFIG_CHECKSUM_FAIL (0x0001)
|
||||
#define MPI_IOCFACTS_EXCEPT_RAID_CONFIG_INVALID (0x0002)
|
||||
#define MPI_IOCFACTS_EXCEPT_FW_CHECKSUM_FAIL (0x0004)
|
||||
#define MPI_IOCFACTS_EXCEPT_PERSISTENT_TABLE_FULL (0x0008)
|
||||
#define MPI_IOCFACTS_EXCEPT_CONFIG_CHECKSUM_FAIL (0x0001)
|
||||
#define MPI_IOCFACTS_EXCEPT_RAID_CONFIG_INVALID (0x0002)
|
||||
#define MPI_IOCFACTS_EXCEPT_FW_CHECKSUM_FAIL (0x0004)
|
||||
#define MPI_IOCFACTS_EXCEPT_PERSISTENT_TABLE_FULL (0x0008)
|
||||
|
||||
#define MPI_IOCFACTS_FLAGS_FW_DOWNLOAD_BOOT (0x01)
|
||||
#define MPI_IOCFACTS_FLAGS_FW_DOWNLOAD_BOOT (0x01)
|
||||
#define MPI_IOCFACTS_FLAGS_REPLY_FIFO_HOST_SIGNAL (0x02)
|
||||
#define MPI_IOCFACTS_FLAGS_HOST_PAGE_BUFFER_PERSISTENT (0x04)
|
||||
|
||||
#define MPI_IOCFACTS_EVENTSTATE_DISABLED (0x00)
|
||||
#define MPI_IOCFACTS_EVENTSTATE_ENABLED (0x01)
|
||||
#define MPI_IOCFACTS_EVENTSTATE_DISABLED (0x00)
|
||||
#define MPI_IOCFACTS_EVENTSTATE_ENABLED (0x01)
|
||||
|
||||
#define MPI_IOCFACTS_CAPABILITY_HIGH_PRI_Q (0x00000001)
|
||||
#define MPI_IOCFACTS_CAPABILITY_REPLY_HOST_SIGNAL (0x00000002)
|
||||
#define MPI_IOCFACTS_CAPABILITY_QUEUE_FULL_HANDLING (0x00000004)
|
||||
#define MPI_IOCFACTS_CAPABILITY_DIAG_TRACE_BUFFER (0x00000008)
|
||||
#define MPI_IOCFACTS_CAPABILITY_SNAPSHOT_BUFFER (0x00000010)
|
||||
#define MPI_IOCFACTS_CAPABILITY_EXTENDED_BUFFER (0x00000020)
|
||||
#define MPI_IOCFACTS_CAPABILITY_EEDP (0x00000040)
|
||||
#define MPI_IOCFACTS_CAPABILITY_HIGH_PRI_Q (0x00000001)
|
||||
#define MPI_IOCFACTS_CAPABILITY_REPLY_HOST_SIGNAL (0x00000002)
|
||||
#define MPI_IOCFACTS_CAPABILITY_QUEUE_FULL_HANDLING (0x00000004)
|
||||
#define MPI_IOCFACTS_CAPABILITY_DIAG_TRACE_BUFFER (0x00000008)
|
||||
#define MPI_IOCFACTS_CAPABILITY_SNAPSHOT_BUFFER (0x00000010)
|
||||
#define MPI_IOCFACTS_CAPABILITY_EXTENDED_BUFFER (0x00000020)
|
||||
|
||||
|
||||
|
||||
|
@ -408,6 +456,8 @@ typedef struct _MSG_EVENT_ACK_REPLY
|
|||
#define MPI_EVENT_SAS_DEVICE_STATUS_CHANGE (0x0000000F)
|
||||
#define MPI_EVENT_SAS_SES (0x00000010)
|
||||
#define MPI_EVENT_PERSISTENT_TABLE_FULL (0x00000011)
|
||||
#define MPI_EVENT_SAS_PHY_LINK_STATUS (0x00000012)
|
||||
#define MPI_EVENT_SAS_DISCOVERY_ERROR (0x00000013)
|
||||
|
||||
/* AckRequired field values */
|
||||
|
||||
|
@ -467,6 +517,10 @@ typedef struct _EVENT_DATA_SAS_DEVICE_STATUS_CHANGE
|
|||
U8 ASCQ; /* 05h */
|
||||
U16 DevHandle; /* 06h */
|
||||
U32 DeviceInfo; /* 08h */
|
||||
U16 ParentDevHandle; /* 0Ch */
|
||||
U8 PhyNum; /* 0Eh */
|
||||
U8 Reserved1; /* 0Fh */
|
||||
U64 SASAddress; /* 10h */
|
||||
} EVENT_DATA_SAS_DEVICE_STATUS_CHANGE,
|
||||
MPI_POINTER PTR_EVENT_DATA_SAS_DEVICE_STATUS_CHANGE,
|
||||
MpiEventDataSasDeviceStatusChange_t,
|
||||
|
@ -477,6 +531,8 @@ typedef struct _EVENT_DATA_SAS_DEVICE_STATUS_CHANGE
|
|||
#define MPI_EVENT_SAS_DEV_STAT_RC_NOT_RESPONDING (0x04)
|
||||
#define MPI_EVENT_SAS_DEV_STAT_RC_SMART_DATA (0x05)
|
||||
#define MPI_EVENT_SAS_DEV_STAT_RC_NO_PERSIST_ADDED (0x06)
|
||||
#define MPI_EVENT_SAS_DEV_STAT_RC_UNSUPPORTED (0x07)
|
||||
|
||||
|
||||
/* SCSI Event data for Queue Full event */
|
||||
|
||||
|
@ -488,6 +544,35 @@ typedef struct _EVENT_DATA_QUEUE_FULL
|
|||
} EVENT_DATA_QUEUE_FULL, MPI_POINTER PTR_EVENT_DATA_QUEUE_FULL,
|
||||
EventDataQueueFull_t, MPI_POINTER pEventDataQueueFull_t;
|
||||
|
||||
/* MPI Integrated RAID Event data */
|
||||
|
||||
typedef struct _EVENT_DATA_RAID
|
||||
{
|
||||
U8 VolumeID; /* 00h */
|
||||
U8 VolumeBus; /* 01h */
|
||||
U8 ReasonCode; /* 02h */
|
||||
U8 PhysDiskNum; /* 03h */
|
||||
U8 ASC; /* 04h */
|
||||
U8 ASCQ; /* 05h */
|
||||
U16 Reserved; /* 06h */
|
||||
U32 SettingsStatus; /* 08h */
|
||||
} EVENT_DATA_RAID, MPI_POINTER PTR_EVENT_DATA_RAID,
|
||||
MpiEventDataRaid_t, MPI_POINTER pMpiEventDataRaid_t;
|
||||
|
||||
/* MPI Integrated RAID Event data ReasonCode values */
|
||||
#define MPI_EVENT_RAID_RC_VOLUME_CREATED (0x00)
|
||||
#define MPI_EVENT_RAID_RC_VOLUME_DELETED (0x01)
|
||||
#define MPI_EVENT_RAID_RC_VOLUME_SETTINGS_CHANGED (0x02)
|
||||
#define MPI_EVENT_RAID_RC_VOLUME_STATUS_CHANGED (0x03)
|
||||
#define MPI_EVENT_RAID_RC_VOLUME_PHYSDISK_CHANGED (0x04)
|
||||
#define MPI_EVENT_RAID_RC_PHYSDISK_CREATED (0x05)
|
||||
#define MPI_EVENT_RAID_RC_PHYSDISK_DELETED (0x06)
|
||||
#define MPI_EVENT_RAID_RC_PHYSDISK_SETTINGS_CHANGED (0x07)
|
||||
#define MPI_EVENT_RAID_RC_PHYSDISK_STATUS_CHANGED (0x08)
|
||||
#define MPI_EVENT_RAID_RC_DOMAIN_VAL_NEEDED (0x09)
|
||||
#define MPI_EVENT_RAID_RC_SMART_DATA (0x0A)
|
||||
#define MPI_EVENT_RAID_RC_REPLACE_ACTION_STARTED (0x0B)
|
||||
|
||||
/* MPI Link Status Change Event data */
|
||||
|
||||
typedef struct _EVENT_DATA_LINK_STATUS
|
||||
|
@ -535,35 +620,63 @@ typedef struct _EVENT_DATA_LOGOUT
|
|||
|
||||
#define MPI_EVENT_LOGOUT_ALL_ALIASES (0xFF)
|
||||
|
||||
/* SAS SES Event data */
|
||||
|
||||
/* MPI Integrated RAID Event data */
|
||||
|
||||
typedef struct _EVENT_DATA_RAID
|
||||
typedef struct _EVENT_DATA_SAS_SES
|
||||
{
|
||||
U8 VolumeID; /* 00h */
|
||||
U8 VolumeBus; /* 01h */
|
||||
U8 ReasonCode; /* 02h */
|
||||
U8 PhysDiskNum; /* 03h */
|
||||
U8 ASC; /* 04h */
|
||||
U8 ASCQ; /* 05h */
|
||||
U16 Reserved; /* 06h */
|
||||
U32 SettingsStatus; /* 08h */
|
||||
} EVENT_DATA_RAID, MPI_POINTER PTR_EVENT_DATA_RAID,
|
||||
MpiEventDataRaid_t, MPI_POINTER pMpiEventDataRaid_t;
|
||||
U8 PhyNum; /* 00h */
|
||||
U8 Port; /* 01h */
|
||||
U8 PortWidth; /* 02h */
|
||||
U8 Reserved1; /* 04h */
|
||||
} EVENT_DATA_SAS_SES, MPI_POINTER PTR_EVENT_DATA_SAS_SES,
|
||||
MpiEventDataSasSes_t, MPI_POINTER pMpiEventDataSasSes_t;
|
||||
|
||||
/* MPI Integrated RAID Event data ReasonCode values */
|
||||
#define MPI_EVENT_RAID_RC_VOLUME_CREATED (0x00)
|
||||
#define MPI_EVENT_RAID_RC_VOLUME_DELETED (0x01)
|
||||
#define MPI_EVENT_RAID_RC_VOLUME_SETTINGS_CHANGED (0x02)
|
||||
#define MPI_EVENT_RAID_RC_VOLUME_STATUS_CHANGED (0x03)
|
||||
#define MPI_EVENT_RAID_RC_VOLUME_PHYSDISK_CHANGED (0x04)
|
||||
#define MPI_EVENT_RAID_RC_PHYSDISK_CREATED (0x05)
|
||||
#define MPI_EVENT_RAID_RC_PHYSDISK_DELETED (0x06)
|
||||
#define MPI_EVENT_RAID_RC_PHYSDISK_SETTINGS_CHANGED (0x07)
|
||||
#define MPI_EVENT_RAID_RC_PHYSDISK_STATUS_CHANGED (0x08)
|
||||
#define MPI_EVENT_RAID_RC_DOMAIN_VAL_NEEDED (0x09)
|
||||
#define MPI_EVENT_RAID_RC_SMART_DATA (0x0A)
|
||||
#define MPI_EVENT_RAID_RC_REPLACE_ACTION_STARTED (0x0B)
|
||||
/* SAS Phy Link Status Event data */
|
||||
|
||||
typedef struct _EVENT_DATA_SAS_PHY_LINK_STATUS
|
||||
{
|
||||
U8 PhyNum; /* 00h */
|
||||
U8 LinkRates; /* 01h */
|
||||
U16 DevHandle; /* 02h */
|
||||
U64 SASAddress; /* 04h */
|
||||
} EVENT_DATA_SAS_PHY_LINK_STATUS, MPI_POINTER PTR_EVENT_DATA_SAS_PHY_LINK_STATUS,
|
||||
MpiEventDataSasPhyLinkStatus_t, MPI_POINTER pMpiEventDataSasPhyLinkStatus_t;
|
||||
|
||||
/* defines for the LinkRates field of the SAS PHY Link Status event */
|
||||
#define MPI_EVENT_SAS_PLS_LR_CURRENT_MASK (0xF0)
|
||||
#define MPI_EVENT_SAS_PLS_LR_CURRENT_SHIFT (4)
|
||||
#define MPI_EVENT_SAS_PLS_LR_PREVIOUS_MASK (0x0F)
|
||||
#define MPI_EVENT_SAS_PLS_LR_PREVIOUS_SHIFT (0)
|
||||
#define MPI_EVENT_SAS_PLS_LR_RATE_UNKNOWN (0x00)
|
||||
#define MPI_EVENT_SAS_PLS_LR_RATE_PHY_DISABLED (0x01)
|
||||
#define MPI_EVENT_SAS_PLS_LR_RATE_FAILED_SPEED_NEGOTIATION (0x02)
|
||||
#define MPI_EVENT_SAS_PLS_LR_RATE_SATA_OOB_COMPLETE (0x03)
|
||||
#define MPI_EVENT_SAS_PLS_LR_RATE_1_5 (0x08)
|
||||
#define MPI_EVENT_SAS_PLS_LR_RATE_3_0 (0x09)
|
||||
|
||||
/* SAS Discovery Errror Event data */
|
||||
|
||||
typedef struct _EVENT_DATA_DISCOVERY_ERROR
|
||||
{
|
||||
U32 DiscoveryStatus; /* 00h */
|
||||
U8 Port; /* 04h */
|
||||
U8 Reserved1; /* 05h */
|
||||
U16 Reserved2; /* 06h */
|
||||
} EVENT_DATA_DISCOVERY_ERROR, MPI_POINTER PTR_EVENT_DATA_DISCOVERY_ERROR,
|
||||
EventDataDiscoveryError_t, MPI_POINTER pEventDataDiscoveryError_t;
|
||||
|
||||
#define MPI_EVENT_DSCVRY_ERR_DS_LOOP_DETECTED (0x00000001)
|
||||
#define MPI_EVENT_DSCVRY_ERR_DS_UNADDRESSABLE_DEVICE (0x00000002)
|
||||
#define MPI_EVENT_DSCVRY_ERR_DS_MULTIPLE_PORTS (0x00000004)
|
||||
#define MPI_EVENT_DSCVRY_ERR_DS_EXPANDER_ERR (0x00000008)
|
||||
#define MPI_EVENT_DSCVRY_ERR_DS_SMP_TIMEOUT (0x00000010)
|
||||
#define MPI_EVENT_DSCVRY_ERR_DS_OUT_ROUTE_ENTRIES (0x00000020)
|
||||
#define MPI_EVENT_DSCVRY_ERR_DS_INDEX_NOT_EXIST (0x00000040)
|
||||
#define MPI_EVENT_DSCVRY_ERR_DS_SMP_FUNCTION_FAILED (0x00000080)
|
||||
#define MPI_EVENT_DSCVRY_ERR_DS_SMP_CRC_ERROR (0x00000100)
|
||||
#define MPI_EVENT_DSCVRY_ERR_DS_MULTPL_SUBTRACTIVE (0x00000200)
|
||||
#define MPI_EVENT_DSCVRY_ERR_DS_TABLE_TO_TABLE (0x00000400)
|
||||
#define MPI_EVENT_DSCVRY_ERR_DS_MULTPL_PATHS (0x00000800)
|
||||
|
||||
|
||||
/*****************************************************************************
|
||||
|
@ -589,11 +702,13 @@ typedef struct _MSG_FW_DOWNLOAD
|
|||
} MSG_FW_DOWNLOAD, MPI_POINTER PTR_MSG_FW_DOWNLOAD,
|
||||
FWDownload_t, MPI_POINTER pFWDownload_t;
|
||||
|
||||
#define MPI_FW_DOWNLOAD_ITYPE_RESERVED (0x00)
|
||||
#define MPI_FW_DOWNLOAD_ITYPE_FW (0x01)
|
||||
#define MPI_FW_DOWNLOAD_ITYPE_BIOS (0x02)
|
||||
#define MPI_FW_DOWNLOAD_ITYPE_NVDATA (0x03)
|
||||
#define MPI_FW_DOWNLOAD_ITYPE_BOOTLOADER (0x04)
|
||||
#define MPI_FW_DOWNLOAD_MSGFLGS_LAST_SEGMENT (0x01)
|
||||
|
||||
#define MPI_FW_DOWNLOAD_ITYPE_RESERVED (0x00)
|
||||
#define MPI_FW_DOWNLOAD_ITYPE_FW (0x01)
|
||||
#define MPI_FW_DOWNLOAD_ITYPE_BIOS (0x02)
|
||||
#define MPI_FW_DOWNLOAD_ITYPE_NVDATA (0x03)
|
||||
#define MPI_FW_DOWNLOAD_ITYPE_BOOTLOADER (0x04)
|
||||
|
||||
|
||||
typedef struct _FWDownloadTCSGE
|
||||
|
@ -647,6 +762,7 @@ typedef struct _MSG_FW_UPLOAD
|
|||
#define MPI_FW_UPLOAD_ITYPE_BIOS_FLASH (0x02)
|
||||
#define MPI_FW_UPLOAD_ITYPE_NVDATA (0x03)
|
||||
#define MPI_FW_UPLOAD_ITYPE_BOOTLOADER (0x04)
|
||||
#define MPI_FW_UPLOAD_ITYPE_FW_BACKUP (0x05)
|
||||
|
||||
typedef struct _FWUploadTCSGE
|
||||
{
|
||||
|
@ -723,6 +839,7 @@ typedef struct _MPI_FW_HEADER
|
|||
#define MPI_FW_HEADER_PID_PROD_IM_SCSI (0x0400)
|
||||
#define MPI_FW_HEADER_PID_PROD_IS_SCSI (0x0500)
|
||||
#define MPI_FW_HEADER_PID_PROD_CTX_SCSI (0x0600)
|
||||
#define MPI_FW_HEADER_PID_PROD_IR_SCSI (0x0700)
|
||||
|
||||
#define MPI_FW_HEADER_PID_FAMILY_MASK (0x00FF)
|
||||
/* SCSI */
|
||||
|
@ -740,13 +857,16 @@ typedef struct _MPI_FW_HEADER
|
|||
#define MPI_FW_HEADER_PID_FAMILY_1020TA0_SCSI (0x000C)
|
||||
/* Fibre Channel */
|
||||
#define MPI_FW_HEADER_PID_FAMILY_909_FC (0x0000)
|
||||
#define MPI_FW_HEADER_PID_FAMILY_919_FC (0x0001)
|
||||
#define MPI_FW_HEADER_PID_FAMILY_919X_FC (0x0002)
|
||||
#define MPI_FW_HEADER_PID_FAMILY_919XL_FC (0x0003)
|
||||
#define MPI_FW_HEADER_PID_FAMILY_949_FC (0x0004)
|
||||
#define MPI_FW_HEADER_PID_FAMILY_919_FC (0x0001) /* 919 and 929 */
|
||||
#define MPI_FW_HEADER_PID_FAMILY_919X_FC (0x0002) /* 919X and 929X */
|
||||
#define MPI_FW_HEADER_PID_FAMILY_919XL_FC (0x0003) /* 919XL and 929XL */
|
||||
#define MPI_FW_HEADER_PID_FAMILY_939X_FC (0x0004) /* 939X and 949X */
|
||||
#define MPI_FW_HEADER_PID_FAMILY_959_FC (0x0005)
|
||||
/* SAS */
|
||||
#define MPI_FW_HEADER_PID_FAMILY_1064_SAS (0x0001)
|
||||
#define MPI_FW_HEADER_PID_FAMILY_1068_SAS (0x0002)
|
||||
#define MPI_FW_HEADER_PID_FAMILY_1078_SAS (0x0003)
|
||||
#define MPI_FW_HEADER_PID_FAMILY_106xE_SAS (0x0004) /* 1068E, 1066E, and 1064E */
|
||||
|
||||
typedef struct _MPI_EXT_IMAGE_HEADER
|
||||
{
|
||||
|
|
|
@ -1,12 +1,12 @@
|
|||
/*
|
||||
* Copyright (c) 2000-2003 LSI Logic Corporation.
|
||||
* Copyright (c) 2000-2004 LSI Logic Corporation.
|
||||
*
|
||||
*
|
||||
* Name: mpi_lan.h
|
||||
* Title: MPI LAN messages and structures
|
||||
* Creation Date: June 30, 2000
|
||||
*
|
||||
* mpi_lan.h Version: 01.05.xx
|
||||
* mpi_lan.h Version: 01.05.01
|
||||
*
|
||||
* Version History
|
||||
* ---------------
|
||||
|
@ -28,6 +28,8 @@
|
|||
* 02-20-01 01.01.02 Started using MPI_POINTER.
|
||||
* 03-27-01 01.01.03 Added structure offset comments.
|
||||
* 08-08-01 01.02.01 Original release for v1.2 work.
|
||||
* 05-11-04 01.03.01 Original release for MPI v1.3.
|
||||
* 08-19-04 01.05.01 Original release for MPI v1.5.
|
||||
* --------------------------------------------------------------------------
|
||||
*/
|
||||
|
||||
|
|
|
@ -1,12 +1,12 @@
|
|||
/*
|
||||
* Copyright (c) 2001-2003 LSI Logic Corporation.
|
||||
* Copyright (c) 2001-2005 LSI Logic Corporation.
|
||||
*
|
||||
*
|
||||
* Name: mpi_raid.h
|
||||
* Title: MPI RAID message and structures
|
||||
* Creation Date: February 27, 2001
|
||||
*
|
||||
* mpi_raid.h Version: 01.05.xx
|
||||
* mpi_raid.h Version: 01.05.02
|
||||
*
|
||||
* Version History
|
||||
* ---------------
|
||||
|
@ -28,6 +28,10 @@
|
|||
* 11-15-02 01.02.08 Added missing MsgContext field to MSG_MAILBOX_REQUEST.
|
||||
* 04-01-03 01.02.09 New action data option flag for
|
||||
* MPI_RAID_ACTION_DELETE_VOLUME.
|
||||
* 05-11-04 01.03.01 Original release for MPI v1.3.
|
||||
* 08-19-04 01.05.01 Original release for MPI v1.5.
|
||||
* 01-15-05 01.05.02 Added defines for the two new RAID Actions for
|
||||
* _SET_RESYNC_RATE and _SET_DATA_SCRUB_RATE.
|
||||
* --------------------------------------------------------------------------
|
||||
*/
|
||||
|
||||
|
@ -84,6 +88,8 @@ typedef struct _MSG_RAID_ACTION
|
|||
#define MPI_RAID_ACTION_REPLACE_PHYSDISK (0x10)
|
||||
#define MPI_RAID_ACTION_ACTIVATE_VOLUME (0x11)
|
||||
#define MPI_RAID_ACTION_INACTIVATE_VOLUME (0x12)
|
||||
#define MPI_RAID_ACTION_SET_RESYNC_RATE (0x13)
|
||||
#define MPI_RAID_ACTION_SET_DATA_SCRUB_RATE (0x14)
|
||||
|
||||
/* ActionDataWord defines for use with MPI_RAID_ACTION_CREATE_VOLUME action */
|
||||
#define MPI_RAID_ACTION_ADATA_DO_NOT_SYNC (0x00000001)
|
||||
|
@ -99,6 +105,13 @@ typedef struct _MSG_RAID_ACTION
|
|||
/* ActionDataWord defines for use with MPI_RAID_ACTION_ACTIVATE_VOLUME action */
|
||||
#define MPI_RAID_ACTION_ADATA_INACTIVATE_ALL (0x00000001)
|
||||
|
||||
/* ActionDataWord defines for use with MPI_RAID_ACTION_SET_RESYNC_RATE action */
|
||||
#define MPI_RAID_ACTION_ADATA_RESYNC_RATE_MASK (0x000000FF)
|
||||
|
||||
/* ActionDataWord defines for use with MPI_RAID_ACTION_SET_DATA_SCRUB_RATE action */
|
||||
#define MPI_RAID_ACTION_ADATA_DATA_SCRUB_RATE_MASK (0x000000FF)
|
||||
|
||||
|
||||
|
||||
/* RAID Action reply message */
|
||||
|
||||
|
|
|
@ -1,83 +1,29 @@
|
|||
/*
|
||||
* Copyright (c) 2003 LSI Logic Corporation.
|
||||
* Copyright (c) 2004 LSI Logic Corporation.
|
||||
*
|
||||
*
|
||||
* Name: mpi_sas.h
|
||||
* Title: MPI Serial Attached SCSI structures and definitions
|
||||
* Creation Date: April 23, 2003
|
||||
* Creation Date: August 19, 2004
|
||||
*
|
||||
* mpi_sas.h Version: 01.05.xx
|
||||
* mpi_sas.h Version: 01.05.01
|
||||
*
|
||||
* Version History
|
||||
* ---------------
|
||||
*
|
||||
* Date Version Description
|
||||
* -------- -------- ------------------------------------------------------
|
||||
* xx-yy-zz 01.05.01 Original release.
|
||||
* 08-19-04 01.05.01 Original release.
|
||||
* --------------------------------------------------------------------------
|
||||
*/
|
||||
|
||||
#ifndef MPI_SAS_H
|
||||
#define MPI_SAS_H
|
||||
|
||||
/*****************************************************************************
|
||||
*
|
||||
* S e r i a l A t t a c h e d S C S I M e s s a g e s
|
||||
*
|
||||
*****************************************************************************/
|
||||
|
||||
/****************************************************************************/
|
||||
/* Serial Management Protocol Passthrough Request */
|
||||
/****************************************************************************/
|
||||
|
||||
typedef struct _MSG_SMP_PASSTHROUGH_REQUEST
|
||||
{
|
||||
U8 PassthroughFlags; /* 00h */
|
||||
U8 PhysicalPort; /* 01h */
|
||||
U8 ChainOffset; /* 02h */
|
||||
U8 Function; /* 03h */
|
||||
U16 RequestDataLength; /* 04h */
|
||||
U8 ConnectionRate; /* 06h */
|
||||
U8 MsgFlags; /* 07h */
|
||||
U32 MsgContext; /* 08h */
|
||||
U32 Reserved1; /* 0Ch */
|
||||
U64 SASAddress; /* 10h */
|
||||
U32 Reserved2; /* 18h */
|
||||
U32 Reserved3; /* 1Ch */
|
||||
SGE_SIMPLE_UNION SGL; /* 20h */
|
||||
} MSG_SMP_PASSTHROUGH_REQUEST, MPI_POINTER PTR_MSG_SMP_PASSTHROUGH_REQUEST,
|
||||
SmpPassthroughRequest_t, MPI_POINTER pSmpPassthroughRequest_t;
|
||||
|
||||
#define MPI_SMP_PT_REQ_PT_FLAGS_IMMEDIATE (0x80)
|
||||
|
||||
#define MPI_SMP_PT_REQ_CONNECT_RATE_NEGOTIATED (0x00)
|
||||
#define MPI_SMP_PT_REQ_CONNECT_RATE_1_5 (0x08)
|
||||
#define MPI_SMP_PT_REQ_CONNECT_RATE_3_0 (0x09)
|
||||
|
||||
|
||||
/* Serial Management Protocol Passthrough Reply */
|
||||
typedef struct _MSG_SMP_PASSTHROUGH_REPLY
|
||||
{
|
||||
U8 PassthroughFlags; /* 00h */
|
||||
U8 PhysicalPort; /* 01h */
|
||||
U8 MsgLength; /* 02h */
|
||||
U8 Function; /* 03h */
|
||||
U16 ResponseDataLength; /* 04h */
|
||||
U8 Reserved1; /* 06h */
|
||||
U8 MsgFlags; /* 07h */
|
||||
U32 MsgContext; /* 08h */
|
||||
U8 Reserved2; /* 0Ch */
|
||||
U8 SASStatus; /* 0Dh */
|
||||
U16 IOCStatus; /* 0Eh */
|
||||
U32 IOCLogInfo; /* 10h */
|
||||
U32 Reserved3; /* 14h */
|
||||
U8 ResponseData[4]; /* 18h */
|
||||
} MSG_SMP_PASSTHROUGH_REPLY, MPI_POINTER PTR_MSG_SMP_PASSTHROUGH_REPLY,
|
||||
SmpPassthroughReply_t, MPI_POINTER pSmpPassthroughReply_t;
|
||||
|
||||
#define MPI_SMP_PT_REPLY_PT_FLAGS_IMMEDIATE (0x80)
|
||||
|
||||
/* values for the SASStatus field */
|
||||
/*
|
||||
* Values for SASStatus.
|
||||
*/
|
||||
#define MPI_SASSTATUS_SUCCESS (0x00)
|
||||
#define MPI_SASSTATUS_UNKNOWN_ERROR (0x01)
|
||||
#define MPI_SASSTATUS_INVALID_FRAME (0x02)
|
||||
|
@ -124,6 +70,131 @@ typedef struct _MSG_SMP_PASSTHROUGH_REPLY
|
|||
#define MPI_SAS_DEVICE_INFO_FANOUT_EXPANDER (0x00000003)
|
||||
|
||||
|
||||
|
||||
/*****************************************************************************
|
||||
*
|
||||
* S e r i a l A t t a c h e d S C S I M e s s a g e s
|
||||
*
|
||||
*****************************************************************************/
|
||||
|
||||
/****************************************************************************/
|
||||
/* Serial Management Protocol Passthrough Request */
|
||||
/****************************************************************************/
|
||||
|
||||
typedef struct _MSG_SMP_PASSTHROUGH_REQUEST
|
||||
{
|
||||
U8 PassthroughFlags; /* 00h */
|
||||
U8 PhysicalPort; /* 01h */
|
||||
U8 ChainOffset; /* 02h */
|
||||
U8 Function; /* 03h */
|
||||
U16 RequestDataLength; /* 04h */
|
||||
U8 ConnectionRate; /* 06h */
|
||||
U8 MsgFlags; /* 07h */
|
||||
U32 MsgContext; /* 08h */
|
||||
U32 Reserved1; /* 0Ch */
|
||||
U64 SASAddress; /* 10h */
|
||||
U32 Reserved2; /* 18h */
|
||||
U32 Reserved3; /* 1Ch */
|
||||
SGE_SIMPLE_UNION SGL; /* 20h */
|
||||
} MSG_SMP_PASSTHROUGH_REQUEST, MPI_POINTER PTR_MSG_SMP_PASSTHROUGH_REQUEST,
|
||||
SmpPassthroughRequest_t, MPI_POINTER pSmpPassthroughRequest_t;
|
||||
|
||||
/* values for PassthroughFlags field */
|
||||
#define MPI_SMP_PT_REQ_PT_FLAGS_IMMEDIATE (0x80)
|
||||
|
||||
/* values for ConnectionRate field */
|
||||
#define MPI_SMP_PT_REQ_CONNECT_RATE_NEGOTIATED (0x00)
|
||||
#define MPI_SMP_PT_REQ_CONNECT_RATE_1_5 (0x08)
|
||||
#define MPI_SMP_PT_REQ_CONNECT_RATE_3_0 (0x09)
|
||||
|
||||
|
||||
/* Serial Management Protocol Passthrough Reply */
|
||||
typedef struct _MSG_SMP_PASSTHROUGH_REPLY
|
||||
{
|
||||
U8 PassthroughFlags; /* 00h */
|
||||
U8 PhysicalPort; /* 01h */
|
||||
U8 MsgLength; /* 02h */
|
||||
U8 Function; /* 03h */
|
||||
U16 ResponseDataLength; /* 04h */
|
||||
U8 Reserved1; /* 06h */
|
||||
U8 MsgFlags; /* 07h */
|
||||
U32 MsgContext; /* 08h */
|
||||
U8 Reserved2; /* 0Ch */
|
||||
U8 SASStatus; /* 0Dh */
|
||||
U16 IOCStatus; /* 0Eh */
|
||||
U32 IOCLogInfo; /* 10h */
|
||||
U32 Reserved3; /* 14h */
|
||||
U8 ResponseData[4]; /* 18h */
|
||||
} MSG_SMP_PASSTHROUGH_REPLY, MPI_POINTER PTR_MSG_SMP_PASSTHROUGH_REPLY,
|
||||
SmpPassthroughReply_t, MPI_POINTER pSmpPassthroughReply_t;
|
||||
|
||||
#define MPI_SMP_PT_REPLY_PT_FLAGS_IMMEDIATE (0x80)
|
||||
|
||||
|
||||
/****************************************************************************/
|
||||
/* SATA Passthrough Request */
|
||||
/****************************************************************************/
|
||||
|
||||
typedef struct _MSG_SATA_PASSTHROUGH_REQUEST
|
||||
{
|
||||
U8 TargetID; /* 00h */
|
||||
U8 Bus; /* 01h */
|
||||
U8 ChainOffset; /* 02h */
|
||||
U8 Function; /* 03h */
|
||||
U16 PassthroughFlags; /* 04h */
|
||||
U8 ConnectionRate; /* 06h */
|
||||
U8 MsgFlags; /* 07h */
|
||||
U32 MsgContext; /* 08h */
|
||||
U32 Reserved1; /* 0Ch */
|
||||
U32 Reserved2; /* 10h */
|
||||
U32 Reserved3; /* 14h */
|
||||
U32 DataLength; /* 18h */
|
||||
U8 CommandFIS[20]; /* 1Ch */
|
||||
SGE_SIMPLE_UNION SGL; /* 30h */
|
||||
} MSG_SATA_PASSTHROUGH_REQUEST, MPI_POINTER PTR_MSG_SATA_PASSTHROUGH_REQUEST,
|
||||
SataPassthroughRequest_t, MPI_POINTER pSataPassthroughRequest_t;
|
||||
|
||||
/* values for PassthroughFlags field */
|
||||
#define MPI_SATA_PT_REQ_PT_FLAGS_RESET_DEVICE (0x0200)
|
||||
#define MPI_SATA_PT_REQ_PT_FLAGS_EXECUTE_DIAG (0x0100)
|
||||
#define MPI_SATA_PT_REQ_PT_FLAGS_DMA_QUEUED (0x0080)
|
||||
#define MPI_SATA_PT_REQ_PT_FLAGS_PACKET_COMMAND (0x0040)
|
||||
#define MPI_SATA_PT_REQ_PT_FLAGS_DMA (0x0020)
|
||||
#define MPI_SATA_PT_REQ_PT_FLAGS_PIO (0x0010)
|
||||
#define MPI_SATA_PT_REQ_PT_FLAGS_UNSPECIFIED_VU (0x0004)
|
||||
#define MPI_SATA_PT_REQ_PT_FLAGS_WRITE (0x0002)
|
||||
#define MPI_SATA_PT_REQ_PT_FLAGS_READ (0x0001)
|
||||
|
||||
/* values for ConnectionRate field */
|
||||
#define MPI_SATA_PT_REQ_CONNECT_RATE_NEGOTIATED (0x00)
|
||||
#define MPI_SATA_PT_REQ_CONNECT_RATE_1_5 (0x08)
|
||||
#define MPI_SATA_PT_REQ_CONNECT_RATE_3_0 (0x09)
|
||||
|
||||
|
||||
/* SATA Passthrough Reply */
|
||||
typedef struct _MSG_SATA_PASSTHROUGH_REPLY
|
||||
{
|
||||
U8 TargetID; /* 00h */
|
||||
U8 Bus; /* 01h */
|
||||
U8 MsgLength; /* 02h */
|
||||
U8 Function; /* 03h */
|
||||
U16 PassthroughFlags; /* 04h */
|
||||
U8 Reserved1; /* 06h */
|
||||
U8 MsgFlags; /* 07h */
|
||||
U32 MsgContext; /* 08h */
|
||||
U8 Reserved2; /* 0Ch */
|
||||
U8 SASStatus; /* 0Dh */
|
||||
U16 IOCStatus; /* 0Eh */
|
||||
U32 IOCLogInfo; /* 10h */
|
||||
U8 StatusFIS[20]; /* 14h */
|
||||
U32 StatusControlRegisters; /* 28h */
|
||||
U32 TransferCount; /* 2Ch */
|
||||
} MSG_SATA_PASSTHROUGH_REPLY, MPI_POINTER PTR_MSG_SATA_PASSTHROUGH_REPLY,
|
||||
SataPassthroughReply_t, MPI_POINTER pSataPassthroughReply_t;
|
||||
|
||||
|
||||
|
||||
|
||||
/****************************************************************************/
|
||||
/* SAS IO Unit Control Request */
|
||||
/****************************************************************************/
|
||||
|
@ -148,15 +219,13 @@ typedef struct _MSG_SAS_IOUNIT_CONTROL_REQUEST
|
|||
} MSG_SAS_IOUNIT_CONTROL_REQUEST, MPI_POINTER PTR_MSG_SAS_IOUNIT_CONTROL_REQUEST,
|
||||
SasIoUnitControlRequest_t, MPI_POINTER pSasIoUnitControlRequest_t;
|
||||
|
||||
/* values for the ... field */
|
||||
/* values for the Operation field */
|
||||
#define MPI_SAS_OP_CLEAR_NOT_PRESENT (0x01)
|
||||
#define MPI_SAS_OP_CLEAR_ALL (0x02)
|
||||
#define MPI_SAS_OP_MAP (0x03)
|
||||
#define MPI_SAS_OP_MOVE (0x04)
|
||||
#define MPI_SAS_OP_CLEAR (0x05)
|
||||
#define MPI_SAS_OP_CLEAR_ALL_PERSISTENT (0x02)
|
||||
#define MPI_SAS_OP_PHY_LINK_RESET (0x06)
|
||||
#define MPI_SAS_OP_PHY_HARD_RESET (0x07)
|
||||
#define MPI_SAS_OP_PHY_CLEAR_ERROR_LOG (0x08)
|
||||
#define MPI_SAS_OP_MAP_CURRENT (0x09)
|
||||
|
||||
|
||||
/* SAS IO Unit Control Reply */
|
||||
|
|
|
@ -1,12 +1,12 @@
|
|||
/*
|
||||
* Copyright (c) 2000-2003 LSI Logic Corporation.
|
||||
* Copyright (c) 2000-2004 LSI Logic Corporation.
|
||||
*
|
||||
*
|
||||
* Name: mpi_targ.h
|
||||
* Title: MPI Target mode messages and structures
|
||||
* Creation Date: June 22, 2000
|
||||
*
|
||||
* mpi_targ.h Version: 01.05.xx
|
||||
* mpi_targ.h Version: 01.05.04
|
||||
*
|
||||
* Version History
|
||||
* ---------------
|
||||
|
@ -43,6 +43,16 @@
|
|||
* Added PRIORITY_REASON_TARGET_BUSY.
|
||||
* 11-15-02 01.02.08 Added AliasID field to MPI_TARGET_SCSI_SPI_CMD_BUFFER.
|
||||
* 04-01-03 01.02.09 Added OptionalOxid field to MPI_TARGET_FCP_CMD_BUFFER.
|
||||
* 05-11-04 01.03.01 Original release for MPI v1.3.
|
||||
* 08-19-04 01.05.01 Added new request message structures for
|
||||
* MSG_TARGET_CMD_BUF_POST_BASE_REQUEST,
|
||||
* MSG_TARGET_CMD_BUF_POST_LIST_REQUEST, and
|
||||
* MSG_TARGET_ASSIST_EXT_REQUEST.
|
||||
* Added new structures for SAS SSP Command buffer, SSP
|
||||
* Task buffer, and SSP Status IU.
|
||||
* 10-05-04 01.05.02 MSG_TARGET_CMD_BUFFER_POST_BASE_LIST_REPLY added.
|
||||
* 02-22-05 01.05.03 Changed a comment.
|
||||
* 03-11-05 01.05.04 Removed TargetAssistExtended Request.
|
||||
* --------------------------------------------------------------------------
|
||||
*/
|
||||
|
||||
|
@ -133,18 +143,6 @@ typedef struct _MSG_PRIORITY_CMD_RECEIVED_REPLY
|
|||
} MSG_PRIORITY_CMD_RECEIVED_REPLY, MPI_POINTER PTR_MSG_PRIORITY_CMD_RECEIVED_REPLY,
|
||||
PriorityCommandReceivedReply_t, MPI_POINTER pPriorityCommandReceivedReply_t;
|
||||
|
||||
#define PRIORITY_REASON_NO_DISCONNECT (0x00)
|
||||
#define PRIORITY_REASON_SCSI_TASK_MANAGEMENT (0x01)
|
||||
#define PRIORITY_REASON_CMD_PARITY_ERR (0x02)
|
||||
#define PRIORITY_REASON_MSG_OUT_PARITY_ERR (0x03)
|
||||
#define PRIORITY_REASON_LQ_CRC_ERR (0x04)
|
||||
#define PRIORITY_REASON_CMD_CRC_ERR (0x05)
|
||||
#define PRIORITY_REASON_PROTOCOL_ERR (0x06)
|
||||
#define PRIORITY_REASON_DATA_OUT_PARITY_ERR (0x07)
|
||||
#define PRIORITY_REASON_DATA_OUT_CRC_ERR (0x08)
|
||||
#define PRIORITY_REASON_TARGET_BUSY (0x09)
|
||||
#define PRIORITY_REASON_UNKNOWN (0xFF)
|
||||
|
||||
|
||||
typedef struct _MSG_TARGET_CMD_BUFFER_POST_ERROR_REPLY
|
||||
{
|
||||
|
@ -164,6 +162,89 @@ typedef struct _MSG_TARGET_CMD_BUFFER_POST_ERROR_REPLY
|
|||
MPI_POINTER PTR_MSG_TARGET_CMD_BUFFER_POST_ERROR_REPLY,
|
||||
TargetCmdBufferPostErrorReply_t, MPI_POINTER pTargetCmdBufferPostErrorReply_t;
|
||||
|
||||
#define PRIORITY_REASON_NO_DISCONNECT (0x00)
|
||||
#define PRIORITY_REASON_SCSI_TASK_MANAGEMENT (0x01)
|
||||
#define PRIORITY_REASON_CMD_PARITY_ERR (0x02)
|
||||
#define PRIORITY_REASON_MSG_OUT_PARITY_ERR (0x03)
|
||||
#define PRIORITY_REASON_LQ_CRC_ERR (0x04)
|
||||
#define PRIORITY_REASON_CMD_CRC_ERR (0x05)
|
||||
#define PRIORITY_REASON_PROTOCOL_ERR (0x06)
|
||||
#define PRIORITY_REASON_DATA_OUT_PARITY_ERR (0x07)
|
||||
#define PRIORITY_REASON_DATA_OUT_CRC_ERR (0x08)
|
||||
#define PRIORITY_REASON_TARGET_BUSY (0x09)
|
||||
#define PRIORITY_REASON_UNKNOWN (0xFF)
|
||||
|
||||
|
||||
/****************************************************************************/
|
||||
/* Target Command Buffer Post Base Request */
|
||||
/****************************************************************************/
|
||||
|
||||
typedef struct _MSG_TARGET_CMD_BUF_POST_BASE_REQUEST
|
||||
{
|
||||
U8 BufferPostFlags; /* 00h */
|
||||
U8 PortNumber; /* 01h */
|
||||
U8 ChainOffset; /* 02h */
|
||||
U8 Function; /* 03h */
|
||||
U16 TotalCmdBuffers; /* 04h */
|
||||
U8 Reserved; /* 06h */
|
||||
U8 MsgFlags; /* 07h */
|
||||
U32 MsgContext; /* 08h */
|
||||
U32 Reserved1; /* 0Ch */
|
||||
U16 CmdBufferLength; /* 10h */
|
||||
U16 NextCmdBufferOffset; /* 12h */
|
||||
U32 BaseAddressLow; /* 14h */
|
||||
U32 BaseAddressHigh; /* 18h */
|
||||
} MSG_TARGET_CMD_BUF_POST_BASE_REQUEST,
|
||||
MPI_POINTER PTR__MSG_TARGET_CMD_BUF_POST_BASE_REQUEST,
|
||||
TargetCmdBufferPostBaseRequest_t,
|
||||
MPI_POINTER pTargetCmdBufferPostBaseRequest_t;
|
||||
|
||||
#define CMD_BUFFER_POST_BASE_FLAGS_AUTO_POST_ALL (0x01)
|
||||
|
||||
|
||||
typedef struct _MSG_TARGET_CMD_BUFFER_POST_BASE_LIST_REPLY
|
||||
{
|
||||
U16 Reserved; /* 00h */
|
||||
U8 MsgLength; /* 02h */
|
||||
U8 Function; /* 03h */
|
||||
U16 Reserved1; /* 04h */
|
||||
U8 Reserved2; /* 06h */
|
||||
U8 MsgFlags; /* 07h */
|
||||
U32 MsgContext; /* 08h */
|
||||
U16 Reserved3; /* 0Ch */
|
||||
U16 IOCStatus; /* 0Eh */
|
||||
U32 IOCLogInfo; /* 10h */
|
||||
} MSG_TARGET_CMD_BUFFER_POST_BASE_LIST_REPLY,
|
||||
MPI_POINTER PTR_MSG_TARGET_CMD_BUFFER_POST_BASE_LIST_REPLY,
|
||||
TargetCmdBufferPostBaseListReply_t,
|
||||
MPI_POINTER pTargetCmdBufferPostBaseListReply_t;
|
||||
|
||||
|
||||
/****************************************************************************/
|
||||
/* Target Command Buffer Post List Request */
|
||||
/****************************************************************************/
|
||||
|
||||
typedef struct _MSG_TARGET_CMD_BUF_POST_LIST_REQUEST
|
||||
{
|
||||
U8 Reserved; /* 00h */
|
||||
U8 PortNumber; /* 01h */
|
||||
U8 ChainOffset; /* 02h */
|
||||
U8 Function; /* 03h */
|
||||
U16 CmdBufferCount; /* 04h */
|
||||
U8 Reserved1; /* 06h */
|
||||
U8 MsgFlags; /* 07h */
|
||||
U32 MsgContext; /* 08h */
|
||||
U32 Reserved2; /* 0Ch */
|
||||
U16 IoIndex[2]; /* 10h */
|
||||
} MSG_TARGET_CMD_BUF_POST_LIST_REQUEST,
|
||||
MPI_POINTER PTR_MSG_TARGET_CMD_BUF_POST_LIST_REQUEST,
|
||||
TargetCmdBufferPostListRequest_t,
|
||||
MPI_POINTER pTargetCmdBufferPostListRequest_t;
|
||||
|
||||
|
||||
/****************************************************************************/
|
||||
/* Command Buffer Formats (with 16 byte CDB) */
|
||||
/****************************************************************************/
|
||||
|
||||
typedef struct _MPI_TARGET_FCP_CMD_BUFFER
|
||||
{
|
||||
|
@ -201,6 +282,46 @@ typedef struct _MPI_TARGET_SCSI_SPI_CMD_BUFFER
|
|||
MpiTargetScsiSpiCmdBuffer, MPI_POINTER pMpiTargetScsiSpiCmdBuffer;
|
||||
|
||||
|
||||
typedef struct _MPI_TARGET_SSP_CMD_BUFFER
|
||||
{
|
||||
U8 FrameType; /* 00h */
|
||||
U8 Reserved1; /* 01h */
|
||||
U16 Reserved2; /* 02h */
|
||||
U16 InitiatorTag; /* 04h */
|
||||
U16 DevHandle; /* 06h */
|
||||
/* COMMAND information unit starts here */
|
||||
U8 LogicalUnitNumber[8]; /* 08h */
|
||||
U8 Reserved3; /* 10h */
|
||||
U8 TaskAttribute; /* lower 3 bits */ /* 11h */
|
||||
U8 Reserved4; /* 12h */
|
||||
U8 AdditionalCDBLength; /* upper 5 bits */ /* 13h */
|
||||
U8 CDB[16]; /* 14h */
|
||||
/* Additional CDB bytes extend past the CDB field */
|
||||
} MPI_TARGET_SSP_CMD_BUFFER, MPI_POINTER PTR_MPI_TARGET_SSP_CMD_BUFFER,
|
||||
MpiTargetSspCmdBuffer, MPI_POINTER pMpiTargetSspCmdBuffer;
|
||||
|
||||
typedef struct _MPI_TARGET_SSP_TASK_BUFFER
|
||||
{
|
||||
U8 FrameType; /* 00h */
|
||||
U8 Reserved1; /* 01h */
|
||||
U16 Reserved2; /* 02h */
|
||||
U16 InitiatorTag; /* 04h */
|
||||
U16 DevHandle; /* 06h */
|
||||
/* TASK information unit starts here */
|
||||
U8 LogicalUnitNumber[8]; /* 08h */
|
||||
U8 Reserved3; /* 10h */
|
||||
U8 Reserved4; /* 11h */
|
||||
U8 TaskManagementFunction; /* 12h */
|
||||
U8 Reserved5; /* 13h */
|
||||
U16 ManagedTaskTag; /* 14h */
|
||||
U16 Reserved6; /* 16h */
|
||||
U32 Reserved7; /* 18h */
|
||||
U32 Reserved8; /* 1Ch */
|
||||
U32 Reserved9; /* 20h */
|
||||
} MPI_TARGET_SSP_TASK_BUFFER, MPI_POINTER PTR_MPI_TARGET_SSP_TASK_BUFFER,
|
||||
MpiTargetSspTaskBuffer, MPI_POINTER pMpiTargetSspTaskBuffer;
|
||||
|
||||
|
||||
/****************************************************************************/
|
||||
/* Target Assist Request */
|
||||
/****************************************************************************/
|
||||
|
@ -308,6 +429,27 @@ typedef struct _MPI_TARGET_SCSI_SPI_STATUS_IU
|
|||
} MPI_TARGET_SCSI_SPI_STATUS_IU, MPI_POINTER PTR_MPI_TARGET_SCSI_SPI_STATUS_IU,
|
||||
TargetScsiSpiStatusIU_t, MPI_POINTER pTargetScsiSpiStatusIU_t;
|
||||
|
||||
/*
|
||||
* NOTE: The SSP status IU is big-endian. When used on a little-endian system,
|
||||
* this structure properly orders the bytes.
|
||||
*/
|
||||
typedef struct _MPI_TARGET_SSP_RSP_IU
|
||||
{
|
||||
U32 Reserved0[6]; /* reserved for SSP header */ /* 00h */
|
||||
/* start of RESPONSE information unit */
|
||||
U32 Reserved1; /* 18h */
|
||||
U32 Reserved2; /* 1Ch */
|
||||
U16 Reserved3; /* 20h */
|
||||
U8 DataPres; /* lower 2 bits */ /* 22h */
|
||||
U8 Status; /* 23h */
|
||||
U32 Reserved4; /* 24h */
|
||||
U32 SenseDataLength; /* 28h */
|
||||
U32 ResponseDataLength; /* 2Ch */
|
||||
U8 ResponseSenseData[4]; /* 30h */
|
||||
} MPI_TARGET_SSP_RSP_IU, MPI_POINTER PTR_MPI_TARGET_SSP_RSP_IU,
|
||||
MpiTargetSspRspIu_t, MPI_POINTER pMpiTargetSspRspIu_t;
|
||||
|
||||
|
||||
/****************************************************************************/
|
||||
/* Target Mode Abort Request */
|
||||
/****************************************************************************/
|
||||
|
|
|
@ -1,12 +1,12 @@
|
|||
/*
|
||||
* Copyright (c) 2001-2003 LSI Logic Corporation.
|
||||
* Copyright (c) 2001-2005 LSI Logic Corporation.
|
||||
*
|
||||
*
|
||||
* Name: mpi_tool.h
|
||||
* Title: MPI Toolbox structures and definitions
|
||||
* Creation Date: July 30, 2001
|
||||
*
|
||||
* mpi_tool.h Version: 01.05.xx
|
||||
* mpi_tool.h Version: 01.05.03
|
||||
*
|
||||
* Version History
|
||||
* ---------------
|
||||
|
@ -15,6 +15,16 @@
|
|||
* -------- -------- ------------------------------------------------------
|
||||
* 08-08-01 01.02.01 Original release.
|
||||
* 08-29-01 01.02.02 Added DIAG_DATA_UPLOAD_HEADER and related defines.
|
||||
* 01-16-04 01.02.03 Added defines and structures for new tools
|
||||
*. MPI_TOOLBOX_ISTWI_READ_WRITE_TOOL and
|
||||
* MPI_TOOLBOX_FC_MANAGEMENT_TOOL.
|
||||
* 04-29-04 01.02.04 Added message structures for Diagnostic Buffer Post and
|
||||
* Diagnostic Release requests and replies.
|
||||
* 05-11-04 01.03.01 Original release for MPI v1.3.
|
||||
* 08-19-04 01.05.01 Original release for MPI v1.5.
|
||||
* 10-06-04 01.05.02 Added define for MPI_DIAG_BUF_TYPE_COUNT.
|
||||
* 02-09-05 01.05.03 Added frame size option to FC management tool.
|
||||
* Added Beacon tool to the Toolbox.
|
||||
* --------------------------------------------------------------------------
|
||||
*/
|
||||
|
||||
|
@ -26,6 +36,7 @@
|
|||
#define MPI_TOOLBOX_DIAG_DATA_UPLOAD_TOOL (0x02)
|
||||
#define MPI_TOOLBOX_ISTWI_READ_WRITE_TOOL (0x03)
|
||||
#define MPI_TOOLBOX_FC_MANAGEMENT_TOOL (0x04)
|
||||
#define MPI_TOOLBOX_BEACON_TOOL (0x05)
|
||||
|
||||
|
||||
/****************************************************************************/
|
||||
|
@ -185,11 +196,21 @@ typedef struct _MPI_TB_FC_MANAGE_PID_AI
|
|||
} MPI_TB_FC_MANAGE_PID_AI, MPI_POINTER PTR_MPI_TB_FC_MANAGE_PID_AI,
|
||||
MpiTbFcManagePidAi_t, MPI_POINTER pMpiTbFcManagePidAi_t;
|
||||
|
||||
/* ActionInfo for set max frame size */
|
||||
typedef struct _MPI_TB_FC_MANAGE_FRAME_SIZE_AI
|
||||
{
|
||||
U16 FrameSize; /* 00h */
|
||||
U8 PortNum; /* 02h */
|
||||
U8 Reserved1; /* 03h */
|
||||
} MPI_TB_FC_MANAGE_FRAME_SIZE_AI, MPI_POINTER PTR_MPI_TB_FC_MANAGE_FRAME_SIZE_AI,
|
||||
MpiTbFcManageFrameSizeAi_t, MPI_POINTER pMpiTbFcManageFrameSizeAi_t;
|
||||
|
||||
/* union of ActionInfo */
|
||||
typedef union _MPI_TB_FC_MANAGE_AI_UNION
|
||||
{
|
||||
MPI_TB_FC_MANAGE_BUS_TID_AI BusTid;
|
||||
MPI_TB_FC_MANAGE_PID_AI Port;
|
||||
MPI_TB_FC_MANAGE_FRAME_SIZE_AI FrameSize;
|
||||
} MPI_TB_FC_MANAGE_AI_UNION, MPI_POINTER PTR_MPI_TB_FC_MANAGE_AI_UNION,
|
||||
MpiTbFcManageAiUnion_t, MPI_POINTER pMpiTbFcManageAiUnion_t;
|
||||
|
||||
|
@ -214,6 +235,32 @@ typedef struct _MSG_TOOLBOX_FC_MANAGE_REQUEST
|
|||
#define MPI_TB_FC_MANAGE_ACTION_DISC_ALL (0x00)
|
||||
#define MPI_TB_FC_MANAGE_ACTION_DISC_PID (0x01)
|
||||
#define MPI_TB_FC_MANAGE_ACTION_DISC_BUS_TID (0x02)
|
||||
#define MPI_TB_FC_MANAGE_ACTION_SET_MAX_FRAME_SIZE (0x03)
|
||||
|
||||
|
||||
/****************************************************************************/
|
||||
/* Toolbox Beacon Tool request */
|
||||
/****************************************************************************/
|
||||
|
||||
typedef struct _MSG_TOOLBOX_BEACON_REQUEST
|
||||
{
|
||||
U8 Tool; /* 00h */
|
||||
U8 Reserved; /* 01h */
|
||||
U8 ChainOffset; /* 02h */
|
||||
U8 Function; /* 03h */
|
||||
U16 Reserved1; /* 04h */
|
||||
U8 Reserved2; /* 06h */
|
||||
U8 MsgFlags; /* 07h */
|
||||
U32 MsgContext; /* 08h */
|
||||
U8 ConnectNum; /* 0Ch */
|
||||
U8 PortNum; /* 0Dh */
|
||||
U8 Reserved3; /* 0Eh */
|
||||
U8 Flags; /* 0Fh */
|
||||
} MSG_TOOLBOX_BEACON_REQUEST, MPI_POINTER PTR_MSG_TOOLBOX_BEACON_REQUEST,
|
||||
ToolboxBeaconRequest_t, MPI_POINTER pToolboxBeaconRequest_t;
|
||||
|
||||
#define MPI_TOOLBOX_FLAGS_BEACON_MODE_OFF (0x00)
|
||||
#define MPI_TOOLBOX_FLAGS_BEACON_MODE_ON (0x01)
|
||||
|
||||
|
||||
/****************************************************************************/
|
||||
|
@ -233,14 +280,16 @@ typedef struct _MSG_DIAG_BUFFER_POST_REQUEST
|
|||
U32 ExtendedType; /* 0Ch */
|
||||
U32 BufferLength; /* 10h */
|
||||
U32 ProductSpecific[4]; /* 14h */
|
||||
U32 Reserved3; /* 18h */
|
||||
SGE_SIMPLE_UNION SGL; /* 28h */
|
||||
U32 Reserved3; /* 24h */
|
||||
U64 BufferAddress; /* 28h */
|
||||
} MSG_DIAG_BUFFER_POST_REQUEST, MPI_POINTER PTR_MSG_DIAG_BUFFER_POST_REQUEST,
|
||||
DiagBufferPostRequest_t, MPI_POINTER pDiagBufferPostRequest_t;
|
||||
|
||||
#define MPI_DIAG_BUF_TYPE_TRACE (0x00)
|
||||
#define MPI_DIAG_BUF_TYPE_SNAPSHOT (0x01)
|
||||
#define MPI_DIAG_BUF_TYPE_EXTENDED (0x02)
|
||||
/* count of the number of buffer types */
|
||||
#define MPI_DIAG_BUF_TYPE_COUNT (0x03)
|
||||
|
||||
#define MPI_DIAG_EXTENDED_QTAG (0x00000001)
|
||||
|
||||
|
|
|
@ -1,12 +1,12 @@
|
|||
/*
|
||||
* Copyright (c) 2000-2003 LSI Logic Corporation.
|
||||
* Copyright (c) 2000-2004 LSI Logic Corporation.
|
||||
*
|
||||
*
|
||||
* Name: mpi_type.h
|
||||
* Title: MPI Basic type definitions
|
||||
* Creation Date: June 6, 2000
|
||||
*
|
||||
* mpi_type.h Version: 01.05.xx
|
||||
* mpi_type.h Version: 01.05.01
|
||||
*
|
||||
* Version History
|
||||
* ---------------
|
||||
|
@ -18,6 +18,8 @@
|
|||
* 11-02-00 01.01.01 Original release for post 1.0 work
|
||||
* 02-20-01 01.01.02 Added define and ifdef for MPI_POINTER.
|
||||
* 08-08-01 01.02.01 Original release for v1.2 work.
|
||||
* 05-11-04 01.03.01 Original release for MPI v1.3.
|
||||
* 08-19-04 01.05.01 Original release for MPI v1.5.
|
||||
* --------------------------------------------------------------------------
|
||||
*/
|
||||
|
||||
|
@ -50,11 +52,6 @@ typedef unsigned short U16;
|
|||
typedef int32_t S32;
|
||||
typedef u_int32_t U32;
|
||||
|
||||
/*
|
||||
* The only way crap below could work on big-endian boxen would be if it
|
||||
* wasn't used at all.
|
||||
*/
|
||||
|
||||
typedef struct _S64
|
||||
{
|
||||
U32 Low;
|
||||
|
|
|
@ -1,55 +1,13 @@
|
|||
/*
|
||||
* linux/drivers/message/fusion/mptbase.c
|
||||
* High performance SCSI + LAN / Fibre Channel device drivers.
|
||||
* This is the Fusion MPT base driver which supports multiple
|
||||
* (SCSI + LAN) specialized protocol drivers.
|
||||
* For use with PCI chip/adapter(s):
|
||||
* LSIFC9xx/LSI409xx Fibre Channel
|
||||
* For use with LSI Logic PCI chip/adapter(s)
|
||||
* running LSI Logic Fusion MPT (Message Passing Technology) firmware.
|
||||
*
|
||||
* Credits:
|
||||
* There are lots of people not mentioned below that deserve credit
|
||||
* and thanks but won't get it here - sorry in advance that you
|
||||
* got overlooked.
|
||||
*
|
||||
* This driver would not exist if not for Alan Cox's development
|
||||
* of the linux i2o driver.
|
||||
*
|
||||
* A special thanks to Noah Romer (LSI Logic) for tons of work
|
||||
* and tough debugging on the LAN driver, especially early on;-)
|
||||
* And to Roger Hickerson (LSI Logic) for tirelessly supporting
|
||||
* this driver project.
|
||||
*
|
||||
* A special thanks to Pamela Delaney (LSI Logic) for tons of work
|
||||
* and countless enhancements while adding support for the 1030
|
||||
* chip family. Pam has been instrumental in the development of
|
||||
* of the 2.xx.xx series fusion drivers, and her contributions are
|
||||
* far too numerous to hope to list in one place.
|
||||
*
|
||||
* All manner of help from Stephen Shirron (LSI Logic):
|
||||
* low-level FC analysis, debug + various fixes in FCxx firmware,
|
||||
* initial port to alpha platform, various driver code optimizations,
|
||||
* being a faithful sounding board on all sorts of issues & ideas,
|
||||
* etc.
|
||||
*
|
||||
* A huge debt of gratitude is owed to David S. Miller (DaveM)
|
||||
* for fixing much of the stupid and broken stuff in the early
|
||||
* driver while porting to sparc64 platform. THANK YOU!
|
||||
*
|
||||
* Special thanks goes to the I2O LAN driver people at the
|
||||
* University of Helsinki, who, unbeknownst to them, provided
|
||||
* the inspiration and initial structure for this driver.
|
||||
*
|
||||
* A really huge debt of gratitude is owed to Eddie C. Dost
|
||||
* for gobs of hard work fixing and optimizing LAN code.
|
||||
* THANK YOU!
|
||||
*
|
||||
* Copyright (c) 1999-2004 LSI Logic Corporation
|
||||
* Originally By: Steven J. Ralston
|
||||
* (mailto:sjralston1@netscape.net)
|
||||
* Copyright (c) 1999-2005 LSI Logic Corporation
|
||||
* (mailto:mpt_linux_developer@lsil.com)
|
||||
*
|
||||
* $Id: mptbase.c,v 1.126 2002/12/16 15:28:45 pdelaney Exp $
|
||||
*/
|
||||
/*=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=*/
|
||||
/*
|
||||
|
@ -101,6 +59,7 @@
|
|||
#include <linux/blkdev.h>
|
||||
#include <linux/delay.h>
|
||||
#include <linux/interrupt.h> /* needed for in_interrupt() proto */
|
||||
#include <linux/dma-mapping.h>
|
||||
#include <asm/io.h>
|
||||
#ifdef CONFIG_MTRR
|
||||
#include <asm/mtrr.h>
|
||||
|
@ -218,41 +177,35 @@ static void mpt_fc_log_info(MPT_ADAPTER *ioc, u32 log_info);
|
|||
static void mpt_sp_log_info(MPT_ADAPTER *ioc, u32 log_info);
|
||||
|
||||
/* module entry point */
|
||||
static int __devinit mptbase_probe (struct pci_dev *, const struct pci_device_id *);
|
||||
static void __devexit mptbase_remove(struct pci_dev *);
|
||||
static void mptbase_shutdown(struct device * );
|
||||
static int __init fusion_init (void);
|
||||
static void __exit fusion_exit (void);
|
||||
|
||||
/****************************************************************************
|
||||
* Supported hardware
|
||||
*/
|
||||
|
||||
static struct pci_device_id mptbase_pci_table[] = {
|
||||
{ PCI_VENDOR_ID_LSI_LOGIC, PCI_DEVICE_ID_LSI_FC909,
|
||||
PCI_ANY_ID, PCI_ANY_ID },
|
||||
{ PCI_VENDOR_ID_LSI_LOGIC, PCI_DEVICE_ID_LSI_FC929,
|
||||
PCI_ANY_ID, PCI_ANY_ID },
|
||||
{ PCI_VENDOR_ID_LSI_LOGIC, PCI_DEVICE_ID_LSI_FC919,
|
||||
PCI_ANY_ID, PCI_ANY_ID },
|
||||
{ PCI_VENDOR_ID_LSI_LOGIC, PCI_DEVICE_ID_LSI_FC929X,
|
||||
PCI_ANY_ID, PCI_ANY_ID },
|
||||
{ PCI_VENDOR_ID_LSI_LOGIC, PCI_DEVICE_ID_LSI_FC919X,
|
||||
PCI_ANY_ID, PCI_ANY_ID },
|
||||
{ PCI_VENDOR_ID_LSI_LOGIC, PCI_DEVICE_ID_LSI_53C1030,
|
||||
PCI_ANY_ID, PCI_ANY_ID },
|
||||
{ PCI_VENDOR_ID_LSI_LOGIC, PCI_DEVICE_ID_LSI_1030_53C1035,
|
||||
PCI_ANY_ID, PCI_ANY_ID },
|
||||
{0} /* Terminating entry */
|
||||
};
|
||||
MODULE_DEVICE_TABLE(pci, mptbase_pci_table);
|
||||
|
||||
#define CHIPREG_READ32(addr) readl_relaxed(addr)
|
||||
#define CHIPREG_READ32_dmasync(addr) readl(addr)
|
||||
#define CHIPREG_WRITE32(addr,val) writel(val, addr)
|
||||
#define CHIPREG_PIO_WRITE32(addr,val) outl(val, (unsigned long)addr)
|
||||
#define CHIPREG_PIO_READ32(addr) inl((unsigned long)addr)
|
||||
|
||||
static void
|
||||
pci_disable_io_access(struct pci_dev *pdev)
|
||||
{
|
||||
u16 command_reg;
|
||||
|
||||
pci_read_config_word(pdev, PCI_COMMAND, &command_reg);
|
||||
command_reg &= ~1;
|
||||
pci_write_config_word(pdev, PCI_COMMAND, command_reg);
|
||||
}
|
||||
|
||||
static void
|
||||
pci_enable_io_access(struct pci_dev *pdev)
|
||||
{
|
||||
u16 command_reg;
|
||||
|
||||
pci_read_config_word(pdev, PCI_COMMAND, &command_reg);
|
||||
command_reg |= 1;
|
||||
pci_write_config_word(pdev, PCI_COMMAND, command_reg);
|
||||
}
|
||||
|
||||
/*=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=*/
|
||||
/*
|
||||
* mpt_interrupt - MPT adapter (IOC) specific interrupt handler.
|
||||
|
@ -330,8 +283,7 @@ mpt_interrupt(int irq, void *bus_id, struct pt_regs *r)
|
|||
ioc->name, mr, req_idx));
|
||||
DBG_DUMP_REPLY_FRAME(mr)
|
||||
|
||||
/* NEW! 20010301 -sralston
|
||||
* Check/log IOC log info
|
||||
/* Check/log IOC log info
|
||||
*/
|
||||
ioc_stat = le16_to_cpu(mr->u.reply.IOCStatus);
|
||||
if (ioc_stat & MPI_IOCSTATUS_FLAG_LOG_INFO_AVAILABLE) {
|
||||
|
@ -357,9 +309,7 @@ mpt_interrupt(int irq, void *bus_id, struct pt_regs *r)
|
|||
mr = (MPT_FRAME_HDR *) CAST_U32_TO_PTR(pa);
|
||||
} else if (type == MPI_CONTEXT_REPLY_TYPE_LAN) {
|
||||
cb_idx = mpt_lan_index;
|
||||
/*
|
||||
* BUG FIX! 20001218 -sralston
|
||||
* Blind set of mf to NULL here was fatal
|
||||
/* Blind set of mf to NULL here was fatal
|
||||
* after lan_reply says "freeme"
|
||||
* Fix sort of combined with an optimization here;
|
||||
* added explicit check for case where lan_reply
|
||||
|
@ -430,15 +380,8 @@ mpt_interrupt(int irq, void *bus_id, struct pt_regs *r)
|
|||
}
|
||||
|
||||
if (freeme) {
|
||||
unsigned long flags;
|
||||
|
||||
/* Put Request back on FreeQ! */
|
||||
spin_lock_irqsave(&ioc->FreeQlock, flags);
|
||||
list_add_tail(&mf->u.frame.linkage.list, &ioc->FreeQ);
|
||||
#ifdef MFCNT
|
||||
ioc->mfcnt--;
|
||||
#endif
|
||||
spin_unlock_irqrestore(&ioc->FreeQlock, flags);
|
||||
mpt_free_msg_frame(ioc, mf);
|
||||
}
|
||||
|
||||
mb();
|
||||
|
@ -725,11 +668,9 @@ int
|
|||
mpt_device_driver_register(struct mpt_pci_driver * dd_cbfunc, int cb_idx)
|
||||
{
|
||||
MPT_ADAPTER *ioc;
|
||||
int error=0;
|
||||
|
||||
if (cb_idx < 1 || cb_idx >= MPT_MAX_PROTOCOL_DRIVERS) {
|
||||
error= -EINVAL;
|
||||
return error;
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
MptDeviceDriverHandlers[cb_idx] = dd_cbfunc;
|
||||
|
@ -737,14 +678,12 @@ mpt_device_driver_register(struct mpt_pci_driver * dd_cbfunc, int cb_idx)
|
|||
/* call per pci device probe entry point */
|
||||
list_for_each_entry(ioc, &ioc_list, list) {
|
||||
if(dd_cbfunc->probe) {
|
||||
error = dd_cbfunc->probe(ioc->pcidev,
|
||||
dd_cbfunc->probe(ioc->pcidev,
|
||||
ioc->pcidev->driver->id_table);
|
||||
if(error != 0)
|
||||
return error;
|
||||
}
|
||||
}
|
||||
|
||||
return error;
|
||||
return 0;
|
||||
}
|
||||
|
||||
/*=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=*/
|
||||
|
@ -809,8 +748,8 @@ mpt_get_msg_frame(int handle, MPT_ADAPTER *ioc)
|
|||
mf->u.frame.hwhdr.msgctxu.fld.cb_idx = handle; /* byte */
|
||||
req_offset = (u8 *)mf - (u8 *)ioc->req_frames;
|
||||
/* u16! */
|
||||
req_idx = cpu_to_le16(req_offset / ioc->req_sz);
|
||||
mf->u.frame.hwhdr.msgctxu.fld.req_idx = req_idx;
|
||||
req_idx = req_offset / ioc->req_sz;
|
||||
mf->u.frame.hwhdr.msgctxu.fld.req_idx = cpu_to_le16(req_idx);
|
||||
mf->u.frame.hwhdr.msgctxu.fld.rsvd = 0;
|
||||
ioc->RequestNB[req_idx] = ioc->NB_for_64_byte_frame; /* Default, will be changed if necessary in SG generation */
|
||||
#ifdef MFCNT
|
||||
|
@ -856,8 +795,8 @@ mpt_put_msg_frame(int handle, MPT_ADAPTER *ioc, MPT_FRAME_HDR *mf)
|
|||
mf->u.frame.hwhdr.msgctxu.fld.cb_idx = handle; /* byte */
|
||||
req_offset = (u8 *)mf - (u8 *)ioc->req_frames;
|
||||
/* u16! */
|
||||
req_idx = cpu_to_le16(req_offset / ioc->req_sz);
|
||||
mf->u.frame.hwhdr.msgctxu.fld.req_idx = req_idx;
|
||||
req_idx = req_offset / ioc->req_sz;
|
||||
mf->u.frame.hwhdr.msgctxu.fld.req_idx = cpu_to_le16(req_idx);
|
||||
mf->u.frame.hwhdr.msgctxu.fld.rsvd = 0;
|
||||
|
||||
#ifdef MPT_DEBUG_MSG_FRAME
|
||||
|
@ -1058,7 +997,7 @@ mpt_verify_adapter(int iocid, MPT_ADAPTER **iocpp)
|
|||
|
||||
/*=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=*/
|
||||
/*
|
||||
* mptbase_probe - Install a PCI intelligent MPT adapter.
|
||||
* mpt_attach - Install a PCI intelligent MPT adapter.
|
||||
* @pdev: Pointer to pci_dev structure
|
||||
*
|
||||
* This routine performs all the steps necessary to bring the IOC of
|
||||
|
@ -1073,8 +1012,8 @@ mpt_verify_adapter(int iocid, MPT_ADAPTER **iocpp)
|
|||
*
|
||||
* TODO: Add support for polled controllers
|
||||
*/
|
||||
static int __devinit
|
||||
mptbase_probe(struct pci_dev *pdev, const struct pci_device_id *id)
|
||||
int
|
||||
mpt_attach(struct pci_dev *pdev, const struct pci_device_id *id)
|
||||
{
|
||||
MPT_ADAPTER *ioc;
|
||||
u8 __iomem *mem;
|
||||
|
@ -1084,7 +1023,6 @@ mptbase_probe(struct pci_dev *pdev, const struct pci_device_id *id)
|
|||
u32 psize;
|
||||
int ii;
|
||||
int r = -ENODEV;
|
||||
u64 mask = 0xffffffffffffffffULL;
|
||||
u8 revision;
|
||||
u8 pcixcmd;
|
||||
static int mpt_ids = 0;
|
||||
|
@ -1097,15 +1035,15 @@ mptbase_probe(struct pci_dev *pdev, const struct pci_device_id *id)
|
|||
|
||||
dinitprintk((KERN_WARNING MYNAM ": mpt_adapter_install\n"));
|
||||
|
||||
if (!pci_set_dma_mask(pdev, mask)) {
|
||||
if (!pci_set_dma_mask(pdev, DMA_64BIT_MASK)) {
|
||||
dprintk((KERN_INFO MYNAM
|
||||
": 64 BIT PCI BUS DMA ADDRESSING SUPPORTED\n"));
|
||||
} else if (pci_set_dma_mask(pdev, (u64) 0xffffffff)) {
|
||||
} else if (pci_set_dma_mask(pdev, DMA_32BIT_MASK)) {
|
||||
printk(KERN_WARNING MYNAM ": 32 BIT PCI BUS DMA ADDRESSING NOT SUPPORTED\n");
|
||||
return r;
|
||||
}
|
||||
|
||||
if (!pci_set_consistent_dma_mask(pdev, mask))
|
||||
if (!pci_set_consistent_dma_mask(pdev, DMA_64BIT_MASK))
|
||||
dprintk((KERN_INFO MYNAM
|
||||
": Using 64 bit consistent mask\n"));
|
||||
else
|
||||
|
@ -1243,6 +1181,16 @@ mptbase_probe(struct pci_dev *pdev, const struct pci_device_id *id)
|
|||
pcixcmd &= 0x8F;
|
||||
pci_write_config_byte(pdev, 0x6a, pcixcmd);
|
||||
}
|
||||
else if (pdev->device == MPI_MANUFACTPAGE_DEVICEID_FC939X) {
|
||||
ioc->prod_name = "LSIFC939X";
|
||||
ioc->bus_type = FC;
|
||||
ioc->errata_flag_1064 = 1;
|
||||
}
|
||||
else if (pdev->device == MPI_MANUFACTPAGE_DEVICEID_FC949X) {
|
||||
ioc->prod_name = "LSIFC949X";
|
||||
ioc->bus_type = FC;
|
||||
ioc->errata_flag_1064 = 1;
|
||||
}
|
||||
else if (pdev->device == MPI_MANUFACTPAGE_DEVID_53C1030) {
|
||||
ioc->prod_name = "LSI53C1030";
|
||||
ioc->bus_type = SCSI;
|
||||
|
@ -1261,6 +1209,9 @@ mptbase_probe(struct pci_dev *pdev, const struct pci_device_id *id)
|
|||
ioc->bus_type = SCSI;
|
||||
}
|
||||
|
||||
if (ioc->errata_flag_1064)
|
||||
pci_disable_io_access(pdev);
|
||||
|
||||
sprintf(ioc->name, "ioc%d", ioc->id);
|
||||
|
||||
spin_lock_init(&ioc->FreeQlock);
|
||||
|
@ -1303,8 +1254,7 @@ mptbase_probe(struct pci_dev *pdev, const struct pci_device_id *id)
|
|||
#endif
|
||||
}
|
||||
|
||||
/* NEW! 20010220 -sralston
|
||||
* Check for "bound ports" (929, 929X, 1030, 1035) to reduce redundant resets.
|
||||
/* Check for "bound ports" (929, 929X, 1030, 1035) to reduce redundant resets.
|
||||
*/
|
||||
mpt_detect_bound_ports(ioc, pdev);
|
||||
|
||||
|
@ -1354,13 +1304,13 @@ mptbase_probe(struct pci_dev *pdev, const struct pci_device_id *id)
|
|||
|
||||
/*=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=*/
|
||||
/*
|
||||
* mptbase_remove - Remove a PCI intelligent MPT adapter.
|
||||
* mpt_detach - Remove a PCI intelligent MPT adapter.
|
||||
* @pdev: Pointer to pci_dev structure
|
||||
*
|
||||
*/
|
||||
|
||||
static void __devexit
|
||||
mptbase_remove(struct pci_dev *pdev)
|
||||
void
|
||||
mpt_detach(struct pci_dev *pdev)
|
||||
{
|
||||
MPT_ADAPTER *ioc = pci_get_drvdata(pdev);
|
||||
char pname[32];
|
||||
|
@ -1397,43 +1347,21 @@ mptbase_remove(struct pci_dev *pdev)
|
|||
pci_set_drvdata(pdev, NULL);
|
||||
}
|
||||
|
||||
/*=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=*/
|
||||
/*
|
||||
* mptbase_shutdown -
|
||||
*
|
||||
*/
|
||||
static void
|
||||
mptbase_shutdown(struct device * dev)
|
||||
{
|
||||
int ii;
|
||||
|
||||
/* call per device driver shutdown entry point */
|
||||
for(ii=0; ii<MPT_MAX_PROTOCOL_DRIVERS; ii++) {
|
||||
if(MptDeviceDriverHandlers[ii] &&
|
||||
MptDeviceDriverHandlers[ii]->shutdown) {
|
||||
MptDeviceDriverHandlers[ii]->shutdown(dev);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
/**************************************************************************
|
||||
* Power Management
|
||||
*/
|
||||
#ifdef CONFIG_PM
|
||||
/*=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=*/
|
||||
/*
|
||||
* mptbase_suspend - Fusion MPT base driver suspend routine.
|
||||
* mpt_suspend - Fusion MPT base driver suspend routine.
|
||||
*
|
||||
*
|
||||
*/
|
||||
static int
|
||||
mptbase_suspend(struct pci_dev *pdev, pm_message_t state)
|
||||
int
|
||||
mpt_suspend(struct pci_dev *pdev, pm_message_t state)
|
||||
{
|
||||
u32 device_state;
|
||||
MPT_ADAPTER *ioc = pci_get_drvdata(pdev);
|
||||
int ii;
|
||||
|
||||
switch(state)
|
||||
{
|
||||
|
@ -1453,14 +1381,6 @@ mptbase_suspend(struct pci_dev *pdev, pm_message_t state)
|
|||
"pci-suspend: pdev=0x%p, slot=%s, Entering operating state [D%d]\n",
|
||||
ioc->name, pdev, pci_name(pdev), device_state);
|
||||
|
||||
/* call per device driver suspend entry point */
|
||||
for(ii=0; ii<MPT_MAX_PROTOCOL_DRIVERS; ii++) {
|
||||
if(MptDeviceDriverHandlers[ii] &&
|
||||
MptDeviceDriverHandlers[ii]->suspend) {
|
||||
MptDeviceDriverHandlers[ii]->suspend(pdev, state);
|
||||
}
|
||||
}
|
||||
|
||||
pci_save_state(pdev);
|
||||
|
||||
/* put ioc into READY_STATE */
|
||||
|
@ -1484,18 +1404,18 @@ mptbase_suspend(struct pci_dev *pdev, pm_message_t state)
|
|||
|
||||
/*=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=*/
|
||||
/*
|
||||
* mptbase_resume - Fusion MPT base driver resume routine.
|
||||
* mpt_resume - Fusion MPT base driver resume routine.
|
||||
*
|
||||
*
|
||||
*/
|
||||
static int
|
||||
mptbase_resume(struct pci_dev *pdev)
|
||||
int
|
||||
mpt_resume(struct pci_dev *pdev)
|
||||
{
|
||||
MPT_ADAPTER *ioc = pci_get_drvdata(pdev);
|
||||
u32 device_state = pdev->current_state;
|
||||
int recovery_state;
|
||||
int ii;
|
||||
|
||||
|
||||
printk(MYIOC_s_INFO_FMT
|
||||
"pci-resume: pdev=0x%p, slot=%s, Previous operating state [D%d]\n",
|
||||
ioc->name, pdev, pci_name(pdev), device_state);
|
||||
|
@ -1533,14 +1453,6 @@ mptbase_resume(struct pci_dev *pdev)
|
|||
"pci-resume: success\n", ioc->name);
|
||||
}
|
||||
|
||||
/* call per device driver resume entry point */
|
||||
for(ii=0; ii<MPT_MAX_PROTOCOL_DRIVERS; ii++) {
|
||||
if(MptDeviceDriverHandlers[ii] &&
|
||||
MptDeviceDriverHandlers[ii]->resume) {
|
||||
MptDeviceDriverHandlers[ii]->resume(pdev);
|
||||
}
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
#endif
|
||||
|
@ -1719,8 +1631,7 @@ mpt_do_ioc_recovery(MPT_ADAPTER *ioc, u32 reason, int sleepFlag)
|
|||
ioc->alt_ioc->active = 1;
|
||||
}
|
||||
|
||||
/* NEW! 20010120 -sralston
|
||||
* Enable MPT base driver management of EventNotification
|
||||
/* Enable MPT base driver management of EventNotification
|
||||
* and EventAck handling.
|
||||
*/
|
||||
if ((ret == 0) && (!ioc->facts.EventState))
|
||||
|
@ -1729,9 +1640,7 @@ mpt_do_ioc_recovery(MPT_ADAPTER *ioc, u32 reason, int sleepFlag)
|
|||
if (ioc->alt_ioc && alt_ioc_ready && !ioc->alt_ioc->facts.EventState)
|
||||
(void) SendEventNotification(ioc->alt_ioc, 1); /* 1=Enable EventNotification */
|
||||
|
||||
/* (Bugzilla:fibrebugs, #513)
|
||||
* Bug fix (part 2)! 20010905 -sralston
|
||||
* Add additional "reason" check before call to GetLanConfigPages
|
||||
/* Add additional "reason" check before call to GetLanConfigPages
|
||||
* (combined with GetIoUnitPage2 call). This prevents a somewhat
|
||||
* recursive scenario; GetLanConfigPages times out, timer expired
|
||||
* routine calls HardResetHandler, which calls into here again,
|
||||
|
@ -1829,37 +1738,43 @@ mpt_do_ioc_recovery(MPT_ADAPTER *ioc, u32 reason, int sleepFlag)
|
|||
static void
|
||||
mpt_detect_bound_ports(MPT_ADAPTER *ioc, struct pci_dev *pdev)
|
||||
{
|
||||
unsigned int match_lo, match_hi;
|
||||
struct pci_dev *peer=NULL;
|
||||
unsigned int slot = PCI_SLOT(pdev->devfn);
|
||||
unsigned int func = PCI_FUNC(pdev->devfn);
|
||||
MPT_ADAPTER *ioc_srch;
|
||||
|
||||
match_lo = pdev->devfn-1;
|
||||
match_hi = pdev->devfn+1;
|
||||
dprintk((MYIOC_s_INFO_FMT "PCI bus/devfn=%x/%x, searching for devfn match on %x or %x\n",
|
||||
ioc->name, pdev->bus->number, pdev->devfn, match_lo, match_hi));
|
||||
dprintk((MYIOC_s_INFO_FMT "PCI device %s devfn=%x/%x,"
|
||||
" searching for devfn match on %x or %x\n",
|
||||
ioc->name, pci_name(pdev), pdev->devfn,
|
||||
func-1, func+1));
|
||||
|
||||
peer = pci_get_slot(pdev->bus, PCI_DEVFN(slot,func-1));
|
||||
if (!peer) {
|
||||
peer = pci_get_slot(pdev->bus, PCI_DEVFN(slot,func+1));
|
||||
if (!peer)
|
||||
return;
|
||||
}
|
||||
|
||||
list_for_each_entry(ioc_srch, &ioc_list, list) {
|
||||
struct pci_dev *_pcidev = ioc_srch->pcidev;
|
||||
|
||||
if ((_pcidev->device == pdev->device) &&
|
||||
(_pcidev->bus->number == pdev->bus->number) &&
|
||||
(_pcidev->devfn == match_lo || _pcidev->devfn == match_hi) ) {
|
||||
if (_pcidev == peer) {
|
||||
/* Paranoia checks */
|
||||
if (ioc->alt_ioc != NULL) {
|
||||
printk(KERN_WARNING MYNAM ": Oops, already bound (%s <==> %s)!\n",
|
||||
ioc->name, ioc->alt_ioc->name);
|
||||
ioc->name, ioc->alt_ioc->name);
|
||||
break;
|
||||
} else if (ioc_srch->alt_ioc != NULL) {
|
||||
printk(KERN_WARNING MYNAM ": Oops, already bound (%s <==> %s)!\n",
|
||||
ioc_srch->name, ioc_srch->alt_ioc->name);
|
||||
ioc_srch->name, ioc_srch->alt_ioc->name);
|
||||
break;
|
||||
}
|
||||
dprintk((KERN_INFO MYNAM ": FOUND! binding %s <==> %s\n",
|
||||
ioc->name, ioc_srch->name));
|
||||
ioc->name, ioc_srch->name));
|
||||
ioc_srch->alt_ioc = ioc;
|
||||
ioc->alt_ioc = ioc_srch;
|
||||
break;
|
||||
}
|
||||
}
|
||||
pci_dev_put(peer);
|
||||
}
|
||||
|
||||
/*=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=*/
|
||||
|
@ -1922,15 +1837,10 @@ mpt_adapter_disable(MPT_ADAPTER *ioc)
|
|||
ioc->alloc_total -= sz;
|
||||
}
|
||||
|
||||
if (ioc->spi_data.nvram != NULL) {
|
||||
kfree(ioc->spi_data.nvram);
|
||||
ioc->spi_data.nvram = NULL;
|
||||
}
|
||||
|
||||
if (ioc->spi_data.pIocPg3 != NULL) {
|
||||
kfree(ioc->spi_data.pIocPg3);
|
||||
ioc->spi_data.pIocPg3 = NULL;
|
||||
}
|
||||
kfree(ioc->spi_data.nvram);
|
||||
kfree(ioc->spi_data.pIocPg3);
|
||||
ioc->spi_data.nvram = NULL;
|
||||
ioc->spi_data.pIocPg3 = NULL;
|
||||
|
||||
if (ioc->spi_data.pIocPg4 != NULL) {
|
||||
sz = ioc->spi_data.IocPg4Sz;
|
||||
|
@ -1947,10 +1857,8 @@ mpt_adapter_disable(MPT_ADAPTER *ioc)
|
|||
ioc->ReqToChain = NULL;
|
||||
}
|
||||
|
||||
if (ioc->ChainToChain != NULL) {
|
||||
kfree(ioc->ChainToChain);
|
||||
ioc->ChainToChain = NULL;
|
||||
}
|
||||
kfree(ioc->ChainToChain);
|
||||
ioc->ChainToChain = NULL;
|
||||
}
|
||||
|
||||
/*=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=*/
|
||||
|
@ -2333,7 +2241,7 @@ GetIocFacts(MPT_ADAPTER *ioc, int sleepFlag, int reason)
|
|||
return -55;
|
||||
}
|
||||
|
||||
r = sz = le32_to_cpu(facts->BlockSize);
|
||||
r = sz = facts->BlockSize;
|
||||
vv = ((63 / (sz * 4)) + 1) & 0x03;
|
||||
ioc->NB_for_64_byte_frame = vv;
|
||||
while ( sz )
|
||||
|
@ -2785,7 +2693,7 @@ mpt_downloadboot(MPT_ADAPTER *ioc, int sleepFlag)
|
|||
/* prevent a second downloadboot and memory free with alt_ioc */
|
||||
if (ioc->alt_ioc && ioc->alt_ioc->cached_fw)
|
||||
ioc->alt_ioc->cached_fw = NULL;
|
||||
|
||||
|
||||
CHIPREG_WRITE32(&ioc->chip->WriteSequence, 0xFF);
|
||||
CHIPREG_WRITE32(&ioc->chip->WriteSequence, MPI_WRSEQ_1ST_KEY_VALUE);
|
||||
CHIPREG_WRITE32(&ioc->chip->WriteSequence, MPI_WRSEQ_2ND_KEY_VALUE);
|
||||
|
@ -2843,6 +2751,9 @@ mpt_downloadboot(MPT_ADAPTER *ioc, int sleepFlag)
|
|||
/* Write the LoadStartAddress to the DiagRw Address Register
|
||||
* using Programmed IO
|
||||
*/
|
||||
if (ioc->errata_flag_1064)
|
||||
pci_enable_io_access(ioc->pcidev);
|
||||
|
||||
CHIPREG_PIO_WRITE32(&ioc->pio_chip->DiagRwAddress, pFwHeader->LoadStartAddress);
|
||||
ddlprintk((MYIOC_s_INFO_FMT "LoadStart addr written 0x%x \n",
|
||||
ioc->name, pFwHeader->LoadStartAddress));
|
||||
|
@ -2889,6 +2800,9 @@ mpt_downloadboot(MPT_ADAPTER *ioc, int sleepFlag)
|
|||
CHIPREG_PIO_WRITE32(&ioc->pio_chip->DiagRwAddress, 0x3F000000);
|
||||
CHIPREG_PIO_WRITE32(&ioc->pio_chip->DiagRwData, diagRwData);
|
||||
|
||||
if (ioc->errata_flag_1064)
|
||||
pci_disable_io_access(ioc->pcidev);
|
||||
|
||||
diag0val = CHIPREG_READ32(&ioc->chip->Diagnostic);
|
||||
ddlprintk((MYIOC_s_INFO_FMT "downloadboot diag0val=%x, turning off PREVENT_IOC_BOOT, DISABLE_ARM\n",
|
||||
ioc->name, diag0val));
|
||||
|
@ -4250,7 +4164,7 @@ mpt_GetScsiPortSettings(MPT_ADAPTER *ioc, int portnum)
|
|||
if ((ioc->spi_data.busType == MPI_SCSIPORTPAGE0_PHY_SIGNAL_HVD) ||
|
||||
(ioc->spi_data.busType == MPI_SCSIPORTPAGE0_PHY_SIGNAL_SE)) {
|
||||
|
||||
if (ioc->spi_data.minSyncFactor < MPT_ULTRA)
|
||||
if (ioc->spi_data.minSyncFactor < MPT_ULTRA)
|
||||
ioc->spi_data.minSyncFactor = MPT_ULTRA;
|
||||
}
|
||||
}
|
||||
|
@ -4482,10 +4396,8 @@ mpt_read_ioc_pg_3(MPT_ADAPTER *ioc)
|
|||
|
||||
/* Free the old page
|
||||
*/
|
||||
if (ioc->spi_data.pIocPg3) {
|
||||
kfree(ioc->spi_data.pIocPg3);
|
||||
ioc->spi_data.pIocPg3 = NULL;
|
||||
}
|
||||
kfree(ioc->spi_data.pIocPg3);
|
||||
ioc->spi_data.pIocPg3 = NULL;
|
||||
|
||||
/* There is at least one physical disk.
|
||||
* Read and save IOC Page 3
|
||||
|
@ -4753,9 +4665,7 @@ mpt_config(MPT_ADAPTER *ioc, CONFIGPARMS *pCfg)
|
|||
u32 flagsLength;
|
||||
int in_isr;
|
||||
|
||||
/* (Bugzilla:fibrebugs, #513)
|
||||
* Bug fix (part 1)! 20010905 -sralston
|
||||
* Prevent calling wait_event() (below), if caller happens
|
||||
/* Prevent calling wait_event() (below), if caller happens
|
||||
* to be in ISR context, because that is fatal!
|
||||
*/
|
||||
in_isr = in_interrupt();
|
||||
|
@ -4861,9 +4771,7 @@ mpt_toolbox(MPT_ADAPTER *ioc, CONFIGPARMS *pCfg)
|
|||
u32 flagsLength;
|
||||
int in_isr;
|
||||
|
||||
/* (Bugzilla:fibrebugs, #513)
|
||||
* Bug fix (part 1)! 20010905 -sralston
|
||||
* Prevent calling wait_event() (below), if caller happens
|
||||
/* Prevent calling wait_event() (below), if caller happens
|
||||
* to be in ISR context, because that is fatal!
|
||||
*/
|
||||
in_isr = in_interrupt();
|
||||
|
@ -5130,20 +5038,26 @@ static int
|
|||
procmpt_version_read(char *buf, char **start, off_t offset, int request, int *eof, void *data)
|
||||
{
|
||||
int ii;
|
||||
int scsi, lan, ctl, targ, dmp;
|
||||
int scsi, fc, sas, lan, ctl, targ, dmp;
|
||||
char *drvname;
|
||||
int len;
|
||||
|
||||
len = sprintf(buf, "%s-%s\n", "mptlinux", MPT_LINUX_VERSION_COMMON);
|
||||
len += sprintf(buf+len, " Fusion MPT base driver\n");
|
||||
|
||||
scsi = lan = ctl = targ = dmp = 0;
|
||||
scsi = fc = sas = lan = ctl = targ = dmp = 0;
|
||||
for (ii=MPT_MAX_PROTOCOL_DRIVERS-1; ii; ii--) {
|
||||
drvname = NULL;
|
||||
if (MptCallbacks[ii]) {
|
||||
switch (MptDriverClass[ii]) {
|
||||
case MPTSCSIH_DRIVER:
|
||||
if (!scsi++) drvname = "SCSI host";
|
||||
case MPTSPI_DRIVER:
|
||||
if (!scsi++) drvname = "SPI host";
|
||||
break;
|
||||
case MPTFC_DRIVER:
|
||||
if (!fc++) drvname = "FC host";
|
||||
break;
|
||||
case MPTSAS_DRIVER:
|
||||
if (!sas++) drvname = "SAS host";
|
||||
break;
|
||||
case MPTLAN_DRIVER:
|
||||
if (!lan++) drvname = "LAN";
|
||||
|
@ -5832,6 +5746,12 @@ mpt_sp_ioc_info(MPT_ADAPTER *ioc, u32 ioc_status, MPT_FRAME_HDR *mf)
|
|||
}
|
||||
|
||||
/*=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=*/
|
||||
EXPORT_SYMBOL(mpt_attach);
|
||||
EXPORT_SYMBOL(mpt_detach);
|
||||
#ifdef CONFIG_PM
|
||||
EXPORT_SYMBOL(mpt_resume);
|
||||
EXPORT_SYMBOL(mpt_suspend);
|
||||
#endif
|
||||
EXPORT_SYMBOL(ioc_list);
|
||||
EXPORT_SYMBOL(mpt_proc_root_dir);
|
||||
EXPORT_SYMBOL(mpt_register);
|
||||
|
@ -5860,19 +5780,6 @@ EXPORT_SYMBOL(mpt_read_ioc_pg_3);
|
|||
EXPORT_SYMBOL(mpt_alloc_fw_memory);
|
||||
EXPORT_SYMBOL(mpt_free_fw_memory);
|
||||
|
||||
static struct pci_driver mptbase_driver = {
|
||||
.name = "mptbase",
|
||||
.id_table = mptbase_pci_table,
|
||||
.probe = mptbase_probe,
|
||||
.remove = __devexit_p(mptbase_remove),
|
||||
.driver = {
|
||||
.shutdown = mptbase_shutdown,
|
||||
},
|
||||
#ifdef CONFIG_PM
|
||||
.suspend = mptbase_suspend,
|
||||
.resume = mptbase_resume,
|
||||
#endif
|
||||
};
|
||||
|
||||
/*=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=*/
|
||||
/*
|
||||
|
@ -5884,7 +5791,6 @@ static int __init
|
|||
fusion_init(void)
|
||||
{
|
||||
int i;
|
||||
int r;
|
||||
|
||||
show_mptmod_ver(my_NAME, my_VERSION);
|
||||
printk(KERN_INFO COPYRIGHT "\n");
|
||||
|
@ -5896,8 +5802,7 @@ fusion_init(void)
|
|||
MptResetHandlers[i] = NULL;
|
||||
}
|
||||
|
||||
/* NEW! 20010120 -sralston
|
||||
* Register ourselves (mptbase) in order to facilitate
|
||||
/* Register ourselves (mptbase) in order to facilitate
|
||||
* EventNotification handling.
|
||||
*/
|
||||
mpt_base_index = mpt_register(mpt_base_reply, MPTBASE_DRIVER);
|
||||
|
@ -5913,11 +5818,7 @@ fusion_init(void)
|
|||
#ifdef CONFIG_PROC_FS
|
||||
(void) procmpt_create();
|
||||
#endif
|
||||
r = pci_register_driver(&mptbase_driver);
|
||||
if(r)
|
||||
return(r);
|
||||
|
||||
return r;
|
||||
return 0;
|
||||
}
|
||||
|
||||
/*=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=*/
|
||||
|
@ -5933,7 +5834,6 @@ fusion_exit(void)
|
|||
|
||||
dexitprintk((KERN_INFO MYNAM ": fusion_exit() called!\n"));
|
||||
|
||||
pci_unregister_driver(&mptbase_driver);
|
||||
mpt_reset_deregister(mpt_base_index);
|
||||
|
||||
#ifdef CONFIG_PROC_FS
|
||||
|
@ -5941,6 +5841,5 @@ fusion_exit(void)
|
|||
#endif
|
||||
}
|
||||
|
||||
|
||||
module_init(fusion_init);
|
||||
module_exit(fusion_exit);
|
||||
|
|
|
@ -5,15 +5,9 @@
|
|||
* LSIFC9xx/LSI409xx Fibre Channel
|
||||
* running LSI Logic Fusion MPT (Message Passing Technology) firmware.
|
||||
*
|
||||
* Credits:
|
||||
* (see mptbase.c)
|
||||
*
|
||||
* Copyright (c) 1999-2004 LSI Logic Corporation
|
||||
* Originally By: Steven J. Ralston
|
||||
* (mailto:sjralston1@netscape.net)
|
||||
* Copyright (c) 1999-2005 LSI Logic Corporation
|
||||
* (mailto:mpt_linux_developer@lsil.com)
|
||||
*
|
||||
* $Id: mptbase.h,v 1.144 2003/01/28 21:31:56 pdelaney Exp $
|
||||
*/
|
||||
/*=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=*/
|
||||
/*
|
||||
|
@ -71,7 +65,6 @@
|
|||
#include "lsi/mpi_fc.h" /* Fibre Channel (lowlevel) support */
|
||||
#include "lsi/mpi_targ.h" /* SCSI/FCP Target protcol support */
|
||||
#include "lsi/mpi_tool.h" /* Tools support */
|
||||
#include "lsi/fc_log.h"
|
||||
|
||||
/*=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=*/
|
||||
|
||||
|
@ -80,11 +73,11 @@
|
|||
#endif
|
||||
|
||||
#ifndef COPYRIGHT
|
||||
#define COPYRIGHT "Copyright (c) 1999-2004 " MODULEAUTHOR
|
||||
#define COPYRIGHT "Copyright (c) 1999-2005 " MODULEAUTHOR
|
||||
#endif
|
||||
|
||||
#define MPT_LINUX_VERSION_COMMON "3.01.20"
|
||||
#define MPT_LINUX_PACKAGE_NAME "@(#)mptlinux-3.01.20"
|
||||
#define MPT_LINUX_VERSION_COMMON "3.03.02"
|
||||
#define MPT_LINUX_PACKAGE_NAME "@(#)mptlinux-3.03.02"
|
||||
#define WHAT_MAGIC_STRING "@" "(" "#" ")"
|
||||
|
||||
#define show_mptmod_ver(s,ver) \
|
||||
|
@ -203,7 +196,9 @@
|
|||
typedef enum {
|
||||
MPTBASE_DRIVER, /* MPT base class */
|
||||
MPTCTL_DRIVER, /* MPT ioctl class */
|
||||
MPTSCSIH_DRIVER, /* MPT SCSI host (initiator) class */
|
||||
MPTSPI_DRIVER, /* MPT SPI host class */
|
||||
MPTFC_DRIVER, /* MPT FC host class */
|
||||
MPTSAS_DRIVER, /* MPT SAS host class */
|
||||
MPTLAN_DRIVER, /* MPT LAN class */
|
||||
MPTSTM_DRIVER, /* MPT SCSI target mode class */
|
||||
MPTUNKNOWN_DRIVER
|
||||
|
@ -212,11 +207,6 @@ typedef enum {
|
|||
struct mpt_pci_driver{
|
||||
int (*probe) (struct pci_dev *dev, const struct pci_device_id *id);
|
||||
void (*remove) (struct pci_dev *dev);
|
||||
void (*shutdown) (struct device * dev);
|
||||
#ifdef CONFIG_PM
|
||||
int (*resume) (struct pci_dev *dev);
|
||||
int (*suspend) (struct pci_dev *dev, pm_message_t state);
|
||||
#endif
|
||||
};
|
||||
|
||||
/*
|
||||
|
@ -483,6 +473,7 @@ typedef struct _ScsiCfgData {
|
|||
u8 forceDv; /* 1 to force DV scheduling */
|
||||
u8 noQas; /* Disable QAS for this adapter */
|
||||
u8 Saf_Te; /* 1 to force all Processors as SAF-TE if Inquiry data length is too short to check for SAF-TE */
|
||||
u8 mpt_dv; /* command line option: enhanced=1, basic=0 */
|
||||
u8 rsvd[1];
|
||||
} ScsiCfgData;
|
||||
|
||||
|
@ -571,11 +562,21 @@ typedef struct _MPT_ADAPTER
|
|||
FCPortPage0_t fc_port_page0[2];
|
||||
LANPage0_t lan_cnfg_page0;
|
||||
LANPage1_t lan_cnfg_page1;
|
||||
/*
|
||||
* Description: errata_flag_1064
|
||||
* If a PCIX read occurs within 1 or 2 cycles after the chip receives
|
||||
* a split completion for a read data, an internal address pointer incorrectly
|
||||
* increments by 32 bytes
|
||||
*/
|
||||
int errata_flag_1064;
|
||||
u8 FirstWhoInit;
|
||||
u8 upload_fw; /* If set, do a fw upload */
|
||||
u8 reload_fw; /* Force a FW Reload on next reset */
|
||||
u8 NBShiftFactor; /* NB Shift Factor based on Block Size (Facts) */
|
||||
u8 pad1[4];
|
||||
int DoneCtx;
|
||||
int TaskCtx;
|
||||
int InternalCtx;
|
||||
struct list_head list;
|
||||
struct net_device *netdev;
|
||||
} MPT_ADAPTER;
|
||||
|
@ -773,12 +774,6 @@ typedef struct _mpt_sge {
|
|||
#define DBG_DUMP_TM_REPLY_FRAME(mfp)
|
||||
#endif
|
||||
|
||||
#ifdef MPT_DEBUG_NEH
|
||||
#define nehprintk(x) printk x
|
||||
#else
|
||||
#define nehprintk(x)
|
||||
#endif
|
||||
|
||||
#if defined(MPT_DEBUG_CONFIG) || defined(MPT_DEBUG)
|
||||
#define dcprintk(x) printk x
|
||||
#else
|
||||
|
@ -898,6 +893,11 @@ typedef struct _MPT_SCSI_HOST {
|
|||
unsigned long soft_resets; /* fw/external bus resets count */
|
||||
unsigned long timeouts; /* cmd timeouts */
|
||||
ushort sel_timeout[MPT_MAX_FC_DEVICES];
|
||||
char *info_kbuf;
|
||||
wait_queue_head_t scandv_waitq;
|
||||
int scandv_wait_done;
|
||||
long last_queue_full;
|
||||
u8 mpt_pq_filter;
|
||||
} MPT_SCSI_HOST;
|
||||
|
||||
/*=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=*/
|
||||
|
@ -931,6 +931,12 @@ typedef struct _x_config_parms {
|
|||
/*
|
||||
* Public entry points...
|
||||
*/
|
||||
extern int mpt_attach(struct pci_dev *pdev, const struct pci_device_id *id);
|
||||
extern void mpt_detach(struct pci_dev *pdev);
|
||||
#ifdef CONFIG_PM
|
||||
extern int mpt_suspend(struct pci_dev *pdev, pm_message_t state);
|
||||
extern int mpt_resume(struct pci_dev *pdev);
|
||||
#endif
|
||||
extern int mpt_register(MPT_CALLBACK cbfunc, MPT_DRIVER_CLASS dclass);
|
||||
extern void mpt_deregister(int cb_idx);
|
||||
extern int mpt_event_register(int cb_idx, MPT_EVHANDLER ev_cbfunc);
|
||||
|
|
|
@ -1,40 +1,12 @@
|
|||
/*
|
||||
* linux/drivers/message/fusion/mptctl.c
|
||||
* Fusion MPT misc device (ioctl) driver.
|
||||
* For use with PCI chip/adapter(s):
|
||||
* LSIFC9xx/LSI409xx Fibre Channel
|
||||
* mpt Ioctl driver.
|
||||
* For use with LSI Logic PCI chip/adapters
|
||||
* running LSI Logic Fusion MPT (Message Passing Technology) firmware.
|
||||
*
|
||||
* Credits:
|
||||
* This driver would not exist if not for Alan Cox's development
|
||||
* of the linux i2o driver.
|
||||
*
|
||||
* A special thanks to Pamela Delaney (LSI Logic) for tons of work
|
||||
* and countless enhancements while adding support for the 1030
|
||||
* chip family. Pam has been instrumental in the development of
|
||||
* of the 2.xx.xx series fusion drivers, and her contributions are
|
||||
* far too numerous to hope to list in one place.
|
||||
*
|
||||
* A huge debt of gratitude is owed to David S. Miller (DaveM)
|
||||
* for fixing much of the stupid and broken stuff in the early
|
||||
* driver while porting to sparc64 platform. THANK YOU!
|
||||
*
|
||||
* A big THANKS to Eddie C. Dost for fixing the ioctl path
|
||||
* and most importantly f/w download on sparc64 platform!
|
||||
* (plus Eddie's other helpful hints and insights)
|
||||
*
|
||||
* Thanks to Arnaldo Carvalho de Melo for finding and patching
|
||||
* a potential memory leak in mptctl_do_fw_download(),
|
||||
* and for some kmalloc insight:-)
|
||||
*
|
||||
* (see also mptbase.c)
|
||||
*
|
||||
* Copyright (c) 1999-2004 LSI Logic Corporation
|
||||
* Originally By: Steven J. Ralston, Noah Romer
|
||||
* (mailto:sjralston1@netscape.net)
|
||||
* Copyright (c) 1999-2005 LSI Logic Corporation
|
||||
* (mailto:mpt_linux_developer@lsil.com)
|
||||
*
|
||||
* $Id: mptctl.c,v 1.63 2002/12/03 21:26:33 pdelaney Exp $
|
||||
*/
|
||||
/*=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=*/
|
||||
/*
|
||||
|
@ -95,8 +67,8 @@
|
|||
#include <scsi/scsi_host.h>
|
||||
#include <scsi/scsi_tcq.h>
|
||||
|
||||
#define COPYRIGHT "Copyright (c) 1999-2004 LSI Logic Corporation"
|
||||
#define MODULEAUTHOR "Steven J. Ralston, Noah Romer, Pamela Delaney"
|
||||
#define COPYRIGHT "Copyright (c) 1999-2005 LSI Logic Corporation"
|
||||
#define MODULEAUTHOR "LSI Logic Corporation"
|
||||
#include "mptbase.h"
|
||||
#include "mptctl.h"
|
||||
|
||||
|
@ -127,14 +99,14 @@ struct buflist {
|
|||
* arg contents specific to function.
|
||||
*/
|
||||
static int mptctl_fw_download(unsigned long arg);
|
||||
static int mptctl_getiocinfo (unsigned long arg, unsigned int cmd);
|
||||
static int mptctl_gettargetinfo (unsigned long arg);
|
||||
static int mptctl_readtest (unsigned long arg);
|
||||
static int mptctl_mpt_command (unsigned long arg);
|
||||
static int mptctl_eventquery (unsigned long arg);
|
||||
static int mptctl_eventenable (unsigned long arg);
|
||||
static int mptctl_eventreport (unsigned long arg);
|
||||
static int mptctl_replace_fw (unsigned long arg);
|
||||
static int mptctl_getiocinfo(unsigned long arg, unsigned int cmd);
|
||||
static int mptctl_gettargetinfo(unsigned long arg);
|
||||
static int mptctl_readtest(unsigned long arg);
|
||||
static int mptctl_mpt_command(unsigned long arg);
|
||||
static int mptctl_eventquery(unsigned long arg);
|
||||
static int mptctl_eventenable(unsigned long arg);
|
||||
static int mptctl_eventreport(unsigned long arg);
|
||||
static int mptctl_replace_fw(unsigned long arg);
|
||||
|
||||
static int mptctl_do_reset(unsigned long arg);
|
||||
static int mptctl_hp_hostinfo(unsigned long arg, unsigned int cmd);
|
||||
|
@ -149,11 +121,11 @@ static long compat_mpctl_ioctl(struct file *f, unsigned cmd, unsigned long arg);
|
|||
/*
|
||||
* Private function calls.
|
||||
*/
|
||||
static int mptctl_do_mpt_command (struct mpt_ioctl_command karg, void __user *mfPtr);
|
||||
static int mptctl_do_mpt_command(struct mpt_ioctl_command karg, void __user *mfPtr);
|
||||
static int mptctl_do_fw_download(int ioc, char __user *ufwbuf, size_t fwlen);
|
||||
static MptSge_t *kbuf_alloc_2_sgl( int bytes, u32 dir, int sge_offset, int *frags,
|
||||
static MptSge_t *kbuf_alloc_2_sgl(int bytes, u32 dir, int sge_offset, int *frags,
|
||||
struct buflist **blp, dma_addr_t *sglbuf_dma, MPT_ADAPTER *ioc);
|
||||
static void kfree_sgl( MptSge_t *sgl, dma_addr_t sgl_dma,
|
||||
static void kfree_sgl(MptSge_t *sgl, dma_addr_t sgl_dma,
|
||||
struct buflist *buflist, MPT_ADAPTER *ioc);
|
||||
static void mptctl_timeout_expired (MPT_IOCTL *ioctl);
|
||||
static int mptctl_bus_reset(MPT_IOCTL *ioctl);
|
||||
|
@ -1119,7 +1091,7 @@ mptctl_getiocinfo (unsigned long arg, unsigned int data_size)
|
|||
int numDevices = 0;
|
||||
unsigned int max_id;
|
||||
int ii;
|
||||
int port;
|
||||
unsigned int port;
|
||||
int cim_rev;
|
||||
u8 revision;
|
||||
|
||||
|
@ -1162,9 +1134,7 @@ mptctl_getiocinfo (unsigned long arg, unsigned int data_size)
|
|||
return -ENODEV;
|
||||
}
|
||||
|
||||
/* Verify the data transfer size is correct.
|
||||
* Ignore the port setting.
|
||||
*/
|
||||
/* Verify the data transfer size is correct. */
|
||||
if (karg->hdr.maxDataSize != data_size) {
|
||||
printk(KERN_ERR "%s@%d::mptctl_getiocinfo - "
|
||||
"Structure size mismatch. Command not completed.\n",
|
||||
|
@ -1181,6 +1151,8 @@ mptctl_getiocinfo (unsigned long arg, unsigned int data_size)
|
|||
else
|
||||
karg->adapterType = MPT_IOCTL_INTERFACE_SCSI;
|
||||
|
||||
if (karg->hdr.port > 1)
|
||||
return -EINVAL;
|
||||
port = karg->hdr.port;
|
||||
|
||||
karg->port = port;
|
||||
|
|
|
@ -5,22 +5,9 @@
|
|||
* LSIFC9xx/LSI409xx Fibre Channel
|
||||
* running LSI Logic Fusion MPT (Message Passing Technology) firmware.
|
||||
*
|
||||
* Credits:
|
||||
* This driver would not exist if not for Alan Cox's development
|
||||
* of the linux i2o driver.
|
||||
*
|
||||
* A huge debt of gratitude is owed to David S. Miller (DaveM)
|
||||
* for fixing much of the stupid and broken stuff in the early
|
||||
* driver while porting to sparc64 platform. THANK YOU!
|
||||
*
|
||||
* (see also mptbase.c)
|
||||
*
|
||||
* Copyright (c) 1999-2004 LSI Logic Corporation
|
||||
* Originally By: Steven J. Ralston
|
||||
* (mailto:sjralston1@netscape.net)
|
||||
* Copyright (c) 1999-2005 LSI Logic Corporation
|
||||
* (mailto:mpt_linux_developer@lsil.com)
|
||||
*
|
||||
* $Id: mptctl.h,v 1.13 2002/12/03 21:26:33 pdelaney Exp $
|
||||
*/
|
||||
/*=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=*/
|
||||
/*
|
||||
|
|
431
drivers/message/fusion/mptfc.c
Normal file
431
drivers/message/fusion/mptfc.c
Normal file
|
@ -0,0 +1,431 @@
|
|||
/*
|
||||
* linux/drivers/message/fusion/mptfc.c
|
||||
* For use with LSI Logic PCI chip/adapter(s)
|
||||
* running LSI Logic Fusion MPT (Message Passing Technology) firmware.
|
||||
*
|
||||
* Copyright (c) 1999-2005 LSI Logic Corporation
|
||||
* (mailto:mpt_linux_developer@lsil.com)
|
||||
*
|
||||
*/
|
||||
/*=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=*/
|
||||
/*
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation; version 2 of the License.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
NO WARRANTY
|
||||
THE PROGRAM IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OR
|
||||
CONDITIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED INCLUDING, WITHOUT
|
||||
LIMITATION, ANY WARRANTIES OR CONDITIONS OF TITLE, NON-INFRINGEMENT,
|
||||
MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Each Recipient is
|
||||
solely responsible for determining the appropriateness of using and
|
||||
distributing the Program and assumes all risks associated with its
|
||||
exercise of rights under this Agreement, including but not limited to
|
||||
the risks and costs of program errors, damage to or loss of data,
|
||||
programs or equipment, and unavailability or interruption of operations.
|
||||
|
||||
DISCLAIMER OF LIABILITY
|
||||
NEITHER RECIPIENT NOR ANY CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR ANY
|
||||
DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
||||
DAMAGES (INCLUDING WITHOUT LIMITATION LOST PROFITS), HOWEVER CAUSED AND
|
||||
ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR
|
||||
TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE
|
||||
USE OR DISTRIBUTION OF THE PROGRAM OR THE EXERCISE OF ANY RIGHTS GRANTED
|
||||
HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program; if not, write to the Free Software
|
||||
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
*/
|
||||
/*=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=*/
|
||||
#include "linux_compat.h" /* linux-2.6 tweaks */
|
||||
#include <linux/module.h>
|
||||
#include <linux/kernel.h>
|
||||
#include <linux/init.h>
|
||||
#include <linux/errno.h>
|
||||
#include <linux/kdev_t.h>
|
||||
#include <linux/blkdev.h>
|
||||
#include <linux/delay.h> /* for mdelay */
|
||||
#include <linux/interrupt.h> /* needed for in_interrupt() proto */
|
||||
#include <linux/reboot.h> /* notifier code */
|
||||
#include <linux/sched.h>
|
||||
#include <linux/workqueue.h>
|
||||
|
||||
#include <scsi/scsi.h>
|
||||
#include <scsi/scsi_cmnd.h>
|
||||
#include <scsi/scsi_device.h>
|
||||
#include <scsi/scsi_host.h>
|
||||
#include <scsi/scsi_tcq.h>
|
||||
|
||||
#include "mptbase.h"
|
||||
#include "mptscsih.h"
|
||||
|
||||
/*=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=*/
|
||||
#define my_NAME "Fusion MPT FC Host driver"
|
||||
#define my_VERSION MPT_LINUX_VERSION_COMMON
|
||||
#define MYNAM "mptfc"
|
||||
|
||||
MODULE_AUTHOR(MODULEAUTHOR);
|
||||
MODULE_DESCRIPTION(my_NAME);
|
||||
MODULE_LICENSE("GPL");
|
||||
|
||||
/* Command line args */
|
||||
static int mpt_pq_filter = 0;
|
||||
module_param(mpt_pq_filter, int, 0);
|
||||
MODULE_PARM_DESC(mpt_pq_filter, " Enable peripheral qualifier filter: enable=1 (default=0)");
|
||||
|
||||
static int mptfcDoneCtx = -1;
|
||||
static int mptfcTaskCtx = -1;
|
||||
static int mptfcInternalCtx = -1; /* Used only for internal commands */
|
||||
|
||||
static struct device_attribute mptfc_queue_depth_attr = {
|
||||
.attr = {
|
||||
.name = "queue_depth",
|
||||
.mode = S_IWUSR,
|
||||
},
|
||||
.store = mptscsih_store_queue_depth,
|
||||
};
|
||||
|
||||
static struct device_attribute *mptfc_dev_attrs[] = {
|
||||
&mptfc_queue_depth_attr,
|
||||
NULL,
|
||||
};
|
||||
|
||||
static struct scsi_host_template mptfc_driver_template = {
|
||||
.proc_name = "mptfc",
|
||||
.proc_info = mptscsih_proc_info,
|
||||
.name = "MPT FC Host",
|
||||
.info = mptscsih_info,
|
||||
.queuecommand = mptscsih_qcmd,
|
||||
.slave_alloc = mptscsih_slave_alloc,
|
||||
.slave_configure = mptscsih_slave_configure,
|
||||
.slave_destroy = mptscsih_slave_destroy,
|
||||
.eh_abort_handler = mptscsih_abort,
|
||||
.eh_device_reset_handler = mptscsih_dev_reset,
|
||||
.eh_bus_reset_handler = mptscsih_bus_reset,
|
||||
.eh_host_reset_handler = mptscsih_host_reset,
|
||||
.bios_param = mptscsih_bios_param,
|
||||
.can_queue = MPT_FC_CAN_QUEUE,
|
||||
.this_id = -1,
|
||||
.sg_tablesize = MPT_SCSI_SG_DEPTH,
|
||||
.max_sectors = 8192,
|
||||
.cmd_per_lun = 7,
|
||||
.use_clustering = ENABLE_CLUSTERING,
|
||||
.sdev_attrs = mptfc_dev_attrs,
|
||||
};
|
||||
|
||||
/****************************************************************************
|
||||
* Supported hardware
|
||||
*/
|
||||
|
||||
static struct pci_device_id mptfc_pci_table[] = {
|
||||
{ PCI_VENDOR_ID_LSI_LOGIC, PCI_DEVICE_ID_LSI_FC909,
|
||||
PCI_ANY_ID, PCI_ANY_ID },
|
||||
{ PCI_VENDOR_ID_LSI_LOGIC, PCI_DEVICE_ID_LSI_FC919,
|
||||
PCI_ANY_ID, PCI_ANY_ID },
|
||||
{ PCI_VENDOR_ID_LSI_LOGIC, PCI_DEVICE_ID_LSI_FC929,
|
||||
PCI_ANY_ID, PCI_ANY_ID },
|
||||
{ PCI_VENDOR_ID_LSI_LOGIC, PCI_DEVICE_ID_LSI_FC919X,
|
||||
PCI_ANY_ID, PCI_ANY_ID },
|
||||
{ PCI_VENDOR_ID_LSI_LOGIC, PCI_DEVICE_ID_LSI_FC929X,
|
||||
PCI_ANY_ID, PCI_ANY_ID },
|
||||
{ PCI_VENDOR_ID_LSI_LOGIC, PCI_DEVICE_ID_LSI_FC939X,
|
||||
PCI_ANY_ID, PCI_ANY_ID },
|
||||
{ PCI_VENDOR_ID_LSI_LOGIC, PCI_DEVICE_ID_LSI_FC949X,
|
||||
PCI_ANY_ID, PCI_ANY_ID },
|
||||
{0} /* Terminating entry */
|
||||
};
|
||||
MODULE_DEVICE_TABLE(pci, mptfc_pci_table);
|
||||
|
||||
/*=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=*/
|
||||
/*=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=*/
|
||||
/*
|
||||
* mptfc_probe - Installs scsi devices per bus.
|
||||
* @pdev: Pointer to pci_dev structure
|
||||
*
|
||||
* Returns 0 for success, non-zero for failure.
|
||||
*
|
||||
*/
|
||||
static int
|
||||
mptfc_probe(struct pci_dev *pdev, const struct pci_device_id *id)
|
||||
{
|
||||
struct Scsi_Host *sh;
|
||||
MPT_SCSI_HOST *hd;
|
||||
MPT_ADAPTER *ioc;
|
||||
unsigned long flags;
|
||||
int sz, ii;
|
||||
int numSGE = 0;
|
||||
int scale;
|
||||
int ioc_cap;
|
||||
u8 *mem;
|
||||
int error=0;
|
||||
int r;
|
||||
|
||||
if ((r = mpt_attach(pdev,id)) != 0)
|
||||
return r;
|
||||
|
||||
ioc = pci_get_drvdata(pdev);
|
||||
ioc->DoneCtx = mptfcDoneCtx;
|
||||
ioc->TaskCtx = mptfcTaskCtx;
|
||||
ioc->InternalCtx = mptfcInternalCtx;
|
||||
|
||||
/* Added sanity check on readiness of the MPT adapter.
|
||||
*/
|
||||
if (ioc->last_state != MPI_IOC_STATE_OPERATIONAL) {
|
||||
printk(MYIOC_s_WARN_FMT
|
||||
"Skipping because it's not operational!\n",
|
||||
ioc->name);
|
||||
return -ENODEV;
|
||||
}
|
||||
|
||||
if (!ioc->active) {
|
||||
printk(MYIOC_s_WARN_FMT "Skipping because it's disabled!\n",
|
||||
ioc->name);
|
||||
return -ENODEV;
|
||||
}
|
||||
|
||||
/* Sanity check - ensure at least 1 port is INITIATOR capable
|
||||
*/
|
||||
ioc_cap = 0;
|
||||
for (ii=0; ii < ioc->facts.NumberOfPorts; ii++) {
|
||||
if (ioc->pfacts[ii].ProtocolFlags &
|
||||
MPI_PORTFACTS_PROTOCOL_INITIATOR)
|
||||
ioc_cap ++;
|
||||
}
|
||||
|
||||
if (!ioc_cap) {
|
||||
printk(MYIOC_s_WARN_FMT
|
||||
"Skipping ioc=%p because SCSI Initiator mode is NOT enabled!\n",
|
||||
ioc->name, ioc);
|
||||
return -ENODEV;
|
||||
}
|
||||
|
||||
sh = scsi_host_alloc(&mptfc_driver_template, sizeof(MPT_SCSI_HOST));
|
||||
|
||||
if (!sh) {
|
||||
printk(MYIOC_s_WARN_FMT
|
||||
"Unable to register controller with SCSI subsystem\n",
|
||||
ioc->name);
|
||||
return -1;
|
||||
}
|
||||
|
||||
spin_lock_irqsave(&ioc->FreeQlock, flags);
|
||||
|
||||
/* Attach the SCSI Host to the IOC structure
|
||||
*/
|
||||
ioc->sh = sh;
|
||||
|
||||
sh->io_port = 0;
|
||||
sh->n_io_port = 0;
|
||||
sh->irq = 0;
|
||||
|
||||
/* set 16 byte cdb's */
|
||||
sh->max_cmd_len = 16;
|
||||
|
||||
sh->max_id = MPT_MAX_FC_DEVICES<256 ? MPT_MAX_FC_DEVICES : 255;
|
||||
|
||||
sh->max_lun = MPT_LAST_LUN + 1;
|
||||
sh->max_channel = 0;
|
||||
sh->this_id = ioc->pfacts[0].PortSCSIID;
|
||||
|
||||
/* Required entry.
|
||||
*/
|
||||
sh->unique_id = ioc->id;
|
||||
|
||||
/* Verify that we won't exceed the maximum
|
||||
* number of chain buffers
|
||||
* We can optimize: ZZ = req_sz/sizeof(SGE)
|
||||
* For 32bit SGE's:
|
||||
* numSGE = 1 + (ZZ-1)*(maxChain -1) + ZZ
|
||||
* + (req_sz - 64)/sizeof(SGE)
|
||||
* A slightly different algorithm is required for
|
||||
* 64bit SGEs.
|
||||
*/
|
||||
scale = ioc->req_sz/(sizeof(dma_addr_t) + sizeof(u32));
|
||||
if (sizeof(dma_addr_t) == sizeof(u64)) {
|
||||
numSGE = (scale - 1) *
|
||||
(ioc->facts.MaxChainDepth-1) + scale +
|
||||
(ioc->req_sz - 60) / (sizeof(dma_addr_t) +
|
||||
sizeof(u32));
|
||||
} else {
|
||||
numSGE = 1 + (scale - 1) *
|
||||
(ioc->facts.MaxChainDepth-1) + scale +
|
||||
(ioc->req_sz - 64) / (sizeof(dma_addr_t) +
|
||||
sizeof(u32));
|
||||
}
|
||||
|
||||
if (numSGE < sh->sg_tablesize) {
|
||||
/* Reset this value */
|
||||
dprintk((MYIOC_s_INFO_FMT
|
||||
"Resetting sg_tablesize to %d from %d\n",
|
||||
ioc->name, numSGE, sh->sg_tablesize));
|
||||
sh->sg_tablesize = numSGE;
|
||||
}
|
||||
|
||||
/* Set the pci device pointer in Scsi_Host structure.
|
||||
*/
|
||||
scsi_set_device(sh, &ioc->pcidev->dev);
|
||||
|
||||
spin_unlock_irqrestore(&ioc->FreeQlock, flags);
|
||||
|
||||
hd = (MPT_SCSI_HOST *) sh->hostdata;
|
||||
hd->ioc = ioc;
|
||||
|
||||
/* SCSI needs scsi_cmnd lookup table!
|
||||
* (with size equal to req_depth*PtrSz!)
|
||||
*/
|
||||
sz = ioc->req_depth * sizeof(void *);
|
||||
mem = kmalloc(sz, GFP_ATOMIC);
|
||||
if (mem == NULL) {
|
||||
error = -ENOMEM;
|
||||
goto mptfc_probe_failed;
|
||||
}
|
||||
|
||||
memset(mem, 0, sz);
|
||||
hd->ScsiLookup = (struct scsi_cmnd **) mem;
|
||||
|
||||
dprintk((MYIOC_s_INFO_FMT "ScsiLookup @ %p, sz=%d\n",
|
||||
ioc->name, hd->ScsiLookup, sz));
|
||||
|
||||
/* Allocate memory for the device structures.
|
||||
* A non-Null pointer at an offset
|
||||
* indicates a device exists.
|
||||
* max_id = 1 + maximum id (hosts.h)
|
||||
*/
|
||||
sz = sh->max_id * sizeof(void *);
|
||||
mem = kmalloc(sz, GFP_ATOMIC);
|
||||
if (mem == NULL) {
|
||||
error = -ENOMEM;
|
||||
goto mptfc_probe_failed;
|
||||
}
|
||||
|
||||
memset(mem, 0, sz);
|
||||
hd->Targets = (VirtDevice **) mem;
|
||||
|
||||
dprintk((KERN_INFO
|
||||
" Targets @ %p, sz=%d\n", hd->Targets, sz));
|
||||
|
||||
/* Clear the TM flags
|
||||
*/
|
||||
hd->tmPending = 0;
|
||||
hd->tmState = TM_STATE_NONE;
|
||||
hd->resetPending = 0;
|
||||
hd->abortSCpnt = NULL;
|
||||
|
||||
/* Clear the pointer used to store
|
||||
* single-threaded commands, i.e., those
|
||||
* issued during a bus scan, dv and
|
||||
* configuration pages.
|
||||
*/
|
||||
hd->cmdPtr = NULL;
|
||||
|
||||
/* Initialize this SCSI Hosts' timers
|
||||
* To use, set the timer expires field
|
||||
* and add_timer
|
||||
*/
|
||||
init_timer(&hd->timer);
|
||||
hd->timer.data = (unsigned long) hd;
|
||||
hd->timer.function = mptscsih_timer_expired;
|
||||
|
||||
hd->mpt_pq_filter = mpt_pq_filter;
|
||||
|
||||
ddvprintk((MYIOC_s_INFO_FMT
|
||||
"mpt_pq_filter %x\n",
|
||||
ioc->name,
|
||||
mpt_pq_filter));
|
||||
|
||||
init_waitqueue_head(&hd->scandv_waitq);
|
||||
hd->scandv_wait_done = 0;
|
||||
hd->last_queue_full = 0;
|
||||
|
||||
error = scsi_add_host (sh, &ioc->pcidev->dev);
|
||||
if(error) {
|
||||
dprintk((KERN_ERR MYNAM
|
||||
"scsi_add_host failed\n"));
|
||||
goto mptfc_probe_failed;
|
||||
}
|
||||
|
||||
scsi_scan_host(sh);
|
||||
return 0;
|
||||
|
||||
mptfc_probe_failed:
|
||||
|
||||
mptscsih_remove(pdev);
|
||||
return error;
|
||||
}
|
||||
|
||||
static struct pci_driver mptfc_driver = {
|
||||
.name = "mptfc",
|
||||
.id_table = mptfc_pci_table,
|
||||
.probe = mptfc_probe,
|
||||
.remove = __devexit_p(mptscsih_remove),
|
||||
.driver = {
|
||||
.shutdown = mptscsih_shutdown,
|
||||
},
|
||||
#ifdef CONFIG_PM
|
||||
.suspend = mptscsih_suspend,
|
||||
.resume = mptscsih_resume,
|
||||
#endif
|
||||
};
|
||||
|
||||
/*=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=*/
|
||||
/**
|
||||
* mptfc_init - Register MPT adapter(s) as SCSI host(s) with
|
||||
* linux scsi mid-layer.
|
||||
*
|
||||
* Returns 0 for success, non-zero for failure.
|
||||
*/
|
||||
static int __init
|
||||
mptfc_init(void)
|
||||
{
|
||||
|
||||
show_mptmod_ver(my_NAME, my_VERSION);
|
||||
|
||||
mptfcDoneCtx = mpt_register(mptscsih_io_done, MPTFC_DRIVER);
|
||||
mptfcTaskCtx = mpt_register(mptscsih_taskmgmt_complete, MPTFC_DRIVER);
|
||||
mptfcInternalCtx = mpt_register(mptscsih_scandv_complete, MPTFC_DRIVER);
|
||||
|
||||
if (mpt_event_register(mptfcDoneCtx, mptscsih_event_process) == 0) {
|
||||
devtprintk((KERN_INFO MYNAM
|
||||
": Registered for IOC event notifications\n"));
|
||||
}
|
||||
|
||||
if (mpt_reset_register(mptfcDoneCtx, mptscsih_ioc_reset) == 0) {
|
||||
dprintk((KERN_INFO MYNAM
|
||||
": Registered for IOC reset notifications\n"));
|
||||
}
|
||||
|
||||
return pci_register_driver(&mptfc_driver);
|
||||
}
|
||||
|
||||
/*=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=*/
|
||||
/*=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=*/
|
||||
/**
|
||||
* mptfc_exit - Unregisters MPT adapter(s)
|
||||
*
|
||||
*/
|
||||
static void __exit
|
||||
mptfc_exit(void)
|
||||
{
|
||||
pci_unregister_driver(&mptfc_driver);
|
||||
|
||||
mpt_reset_deregister(mptfcDoneCtx);
|
||||
dprintk((KERN_INFO MYNAM
|
||||
": Deregistered for IOC reset notifications\n"));
|
||||
|
||||
mpt_event_deregister(mptfcDoneCtx);
|
||||
dprintk((KERN_INFO MYNAM
|
||||
": Deregistered for IOC event notifications\n"));
|
||||
|
||||
mpt_deregister(mptfcInternalCtx);
|
||||
mpt_deregister(mptfcTaskCtx);
|
||||
mpt_deregister(mptfcDoneCtx);
|
||||
}
|
||||
|
||||
module_init(mptfc_init);
|
||||
module_exit(mptfc_exit);
|
|
@ -1,33 +1,11 @@
|
|||
/*
|
||||
* linux/drivers/message/fusion/mptlan.c
|
||||
* IP Over Fibre Channel device driver.
|
||||
* For use with PCI chip/adapter(s):
|
||||
* LSIFC9xx/LSI409xx Fibre Channel
|
||||
* For use with LSI Logic Fibre Channel PCI chip/adapters
|
||||
* running LSI Logic Fusion MPT (Message Passing Technology) firmware.
|
||||
*
|
||||
* Credits:
|
||||
* This driver would not exist if not for Alan Cox's development
|
||||
* of the linux i2o driver.
|
||||
* Copyright (c) 2000-2005 LSI Logic Corporation
|
||||
*
|
||||
* Special thanks goes to the I2O LAN driver people at the
|
||||
* University of Helsinki, who, unbeknownst to them, provided
|
||||
* the inspiration and initial structure for this driver.
|
||||
*
|
||||
* A huge debt of gratitude is owed to David S. Miller (DaveM)
|
||||
* for fixing much of the stupid and broken stuff in the early
|
||||
* driver while porting to sparc64 platform. THANK YOU!
|
||||
*
|
||||
* A really huge debt of gratitude is owed to Eddie C. Dost
|
||||
* for gobs of hard work fixing and optimizing LAN code.
|
||||
* THANK YOU!
|
||||
*
|
||||
* (see also mptbase.c)
|
||||
*
|
||||
* Copyright (c) 2000-2004 LSI Logic Corporation
|
||||
* Originally By: Noah Romer
|
||||
* (mailto:mpt_linux_developer@lsil.com)
|
||||
*
|
||||
* $Id: mptlan.c,v 1.53 2002/10/17 20:15:58 pdelaney Exp $
|
||||
*/
|
||||
/*=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=*/
|
||||
/*
|
||||
|
@ -221,7 +199,7 @@ lan_reply (MPT_ADAPTER *ioc, MPT_FRAME_HDR *mf, MPT_FRAME_HDR *reply)
|
|||
|
||||
// NOTE! (Optimization) First case here is now caught in
|
||||
// mptbase.c::mpt_interrupt() routine and callcack here
|
||||
// is now skipped for this case! 20001218 -sralston
|
||||
// is now skipped for this case!
|
||||
#if 0
|
||||
case LAN_REPLY_FORM_MESSAGE_CONTEXT:
|
||||
// dioprintk((KERN_INFO MYNAM "/lan_reply: "
|
||||
|
@ -234,7 +212,7 @@ lan_reply (MPT_ADAPTER *ioc, MPT_FRAME_HDR *mf, MPT_FRAME_HDR *reply)
|
|||
// dioprintk((MYNAM "/lan_reply: "
|
||||
// "calling mpt_lan_send_reply (turbo)\n"));
|
||||
|
||||
// Potential BUG here? -sralston
|
||||
// Potential BUG here?
|
||||
// FreeReqFrame = mpt_lan_send_turbo(dev, tmsg);
|
||||
// If/when mpt_lan_send_turbo would return 1 here,
|
||||
// calling routine (mptbase.c|mpt_interrupt)
|
||||
|
@ -310,8 +288,7 @@ lan_reply (MPT_ADAPTER *ioc, MPT_FRAME_HDR *mf, MPT_FRAME_HDR *reply)
|
|||
|
||||
case MPI_FUNCTION_EVENT_NOTIFICATION:
|
||||
case MPI_FUNCTION_EVENT_ACK:
|
||||
/* UPDATE! 20010120 -sralston
|
||||
* _EVENT_NOTIFICATION should NOT come down this path any more.
|
||||
/* _EVENT_NOTIFICATION should NOT come down this path any more.
|
||||
* Should be routed to mpt_lan_event_process(), but just in case...
|
||||
*/
|
||||
FreeReqFrame = 1;
|
||||
|
@ -561,8 +538,8 @@ mpt_lan_close(struct net_device *dev)
|
|||
}
|
||||
}
|
||||
|
||||
kfree (priv->RcvCtl);
|
||||
kfree (priv->mpt_rxfidx);
|
||||
kfree(priv->RcvCtl);
|
||||
kfree(priv->mpt_rxfidx);
|
||||
|
||||
for (i = 0; i < priv->tx_max_out; i++) {
|
||||
if (priv->SendCtl[i].skb != NULL) {
|
||||
|
|
|
@ -1,3 +1,49 @@
|
|||
/*
|
||||
* linux/drivers/message/fusion/mptlan.h
|
||||
* IP Over Fibre Channel device driver.
|
||||
* For use with LSI Logic Fibre Channel PCI chip/adapters
|
||||
* running LSI Logic Fusion MPT (Message Passing Technology) firmware.
|
||||
*
|
||||
* Copyright (c) 2000-2005 LSI Logic Corporation
|
||||
*
|
||||
*/
|
||||
/*=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=*/
|
||||
/*
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation; version 2 of the License.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
NO WARRANTY
|
||||
THE PROGRAM IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OR
|
||||
CONDITIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED INCLUDING, WITHOUT
|
||||
LIMITATION, ANY WARRANTIES OR CONDITIONS OF TITLE, NON-INFRINGEMENT,
|
||||
MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Each Recipient is
|
||||
solely responsible for determining the appropriateness of using and
|
||||
distributing the Program and assumes all risks associated with its
|
||||
exercise of rights under this Agreement, including but not limited to
|
||||
the risks and costs of program errors, damage to or loss of data,
|
||||
programs or equipment, and unavailability or interruption of operations.
|
||||
|
||||
DISCLAIMER OF LIABILITY
|
||||
NEITHER RECIPIENT NOR ANY CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR ANY
|
||||
DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
||||
DAMAGES (INCLUDING WITHOUT LIMITATION LOST PROFITS), HOWEVER CAUSED AND
|
||||
ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR
|
||||
TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE
|
||||
USE OR DISTRIBUTION OF THE PROGRAM OR THE EXERCISE OF ANY RIGHTS GRANTED
|
||||
HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program; if not, write to the Free Software
|
||||
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
*/
|
||||
/*=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=*/
|
||||
|
||||
/* mptlan.h */
|
||||
|
||||
#ifndef LINUX_MPTLAN_H_INCLUDED
|
||||
|
@ -29,7 +75,7 @@
|
|||
#include <asm/io.h>
|
||||
|
||||
/* Override mptbase.h by pre-defining these! */
|
||||
#define MODULEAUTHOR "Noah Romer, Eddie C. Dost"
|
||||
#define MODULEAUTHOR "LSI Logic Corporation"
|
||||
|
||||
#include "mptbase.h"
|
||||
|
||||
|
|
File diff suppressed because it is too large
Load diff
|
@ -1,26 +1,13 @@
|
|||
/*
|
||||
* linux/drivers/message/fusion/mptscsih.h
|
||||
* linux/drivers/message/fusion/mptscsi.h
|
||||
* High performance SCSI / Fibre Channel SCSI Host device driver.
|
||||
* For use with PCI chip/adapter(s):
|
||||
* LSIFC9xx/LSI409xx Fibre Channel
|
||||
* running LSI Logic Fusion MPT (Message Passing Technology) firmware.
|
||||
*
|
||||
* Credits:
|
||||
* This driver would not exist if not for Alan Cox's development
|
||||
* of the linux i2o driver.
|
||||
*
|
||||
* A huge debt of gratitude is owed to David S. Miller (DaveM)
|
||||
* for fixing much of the stupid and broken stuff in the early
|
||||
* driver while porting to sparc64 platform. THANK YOU!
|
||||
*
|
||||
* (see also mptbase.c)
|
||||
*
|
||||
* Copyright (c) 1999-2004 LSI Logic Corporation
|
||||
* Originally By: Steven J. Ralston
|
||||
* (mailto:netscape.net)
|
||||
* Copyright (c) 1999-2005 LSI Logic Corporation
|
||||
* (mailto:mpt_linux_developer@lsil.com)
|
||||
*
|
||||
* $Id: mptscsih.h,v 1.21 2002/12/03 21:26:35 pdelaney Exp $
|
||||
*/
|
||||
/*=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=*/
|
||||
/*
|
||||
|
@ -91,4 +78,30 @@
|
|||
#define MPTSCSIH_MIN_SYNC 0x08
|
||||
#define MPTSCSIH_SAF_TE 0
|
||||
|
||||
|
||||
#endif
|
||||
|
||||
extern void mptscsih_remove(struct pci_dev *);
|
||||
extern void mptscsih_shutdown(struct device *);
|
||||
#ifdef CONFIG_PM
|
||||
extern int mptscsih_suspend(struct pci_dev *pdev, u32 state);
|
||||
extern int mptscsih_resume(struct pci_dev *pdev);
|
||||
#endif
|
||||
extern int mptscsih_proc_info(struct Scsi_Host *host, char *buffer, char **start, off_t offset, int length, int func);
|
||||
extern const char * mptscsih_info(struct Scsi_Host *SChost);
|
||||
extern int mptscsih_qcmd(struct scsi_cmnd *SCpnt, void (*done)(struct scsi_cmnd *));
|
||||
extern int mptscsih_slave_alloc(struct scsi_device *device);
|
||||
extern void mptscsih_slave_destroy(struct scsi_device *device);
|
||||
extern int mptscsih_slave_configure(struct scsi_device *device);
|
||||
extern int mptscsih_abort(struct scsi_cmnd * SCpnt);
|
||||
extern int mptscsih_dev_reset(struct scsi_cmnd * SCpnt);
|
||||
extern int mptscsih_bus_reset(struct scsi_cmnd * SCpnt);
|
||||
extern int mptscsih_host_reset(struct scsi_cmnd *SCpnt);
|
||||
extern int mptscsih_bios_param(struct scsi_device * sdev, struct block_device *bdev, sector_t capacity, int geom[]);
|
||||
extern int mptscsih_io_done(MPT_ADAPTER *ioc, MPT_FRAME_HDR *mf, MPT_FRAME_HDR *r);
|
||||
extern int mptscsih_taskmgmt_complete(MPT_ADAPTER *ioc, MPT_FRAME_HDR *mf, MPT_FRAME_HDR *r);
|
||||
extern int mptscsih_scandv_complete(MPT_ADAPTER *ioc, MPT_FRAME_HDR *mf, MPT_FRAME_HDR *r);
|
||||
extern int mptscsih_event_process(MPT_ADAPTER *ioc, EventNotificationReply_t *pEvReply);
|
||||
extern int mptscsih_ioc_reset(MPT_ADAPTER *ioc, int post_reset);
|
||||
extern ssize_t mptscsih_store_queue_depth(struct device *dev, const char *buf, size_t count);
|
||||
extern void mptscsih_timer_expired(unsigned long data);
|
||||
|
|
486
drivers/message/fusion/mptspi.c
Normal file
486
drivers/message/fusion/mptspi.c
Normal file
|
@ -0,0 +1,486 @@
|
|||
/*
|
||||
* linux/drivers/message/fusion/mptspi.c
|
||||
* For use with LSI Logic PCI chip/adapter(s)
|
||||
* running LSI Logic Fusion MPT (Message Passing Technology) firmware.
|
||||
*
|
||||
* Copyright (c) 1999-2005 LSI Logic Corporation
|
||||
* (mailto:mpt_linux_developer@lsil.com)
|
||||
*
|
||||
*/
|
||||
/*=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=*/
|
||||
/*
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation; version 2 of the License.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
NO WARRANTY
|
||||
THE PROGRAM IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OR
|
||||
CONDITIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED INCLUDING, WITHOUT
|
||||
LIMITATION, ANY WARRANTIES OR CONDITIONS OF TITLE, NON-INFRINGEMENT,
|
||||
MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Each Recipient is
|
||||
solely responsible for determining the appropriateness of using and
|
||||
distributing the Program and assumes all risks associated with its
|
||||
exercise of rights under this Agreement, including but not limited to
|
||||
the risks and costs of program errors, damage to or loss of data,
|
||||
programs or equipment, and unavailability or interruption of operations.
|
||||
|
||||
DISCLAIMER OF LIABILITY
|
||||
NEITHER RECIPIENT NOR ANY CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR ANY
|
||||
DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
||||
DAMAGES (INCLUDING WITHOUT LIMITATION LOST PROFITS), HOWEVER CAUSED AND
|
||||
ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR
|
||||
TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE
|
||||
USE OR DISTRIBUTION OF THE PROGRAM OR THE EXERCISE OF ANY RIGHTS GRANTED
|
||||
HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program; if not, write to the Free Software
|
||||
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
*/
|
||||
/*=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=*/
|
||||
|
||||
#include "linux_compat.h" /* linux-2.6 tweaks */
|
||||
#include <linux/module.h>
|
||||
#include <linux/kernel.h>
|
||||
#include <linux/init.h>
|
||||
#include <linux/errno.h>
|
||||
#include <linux/kdev_t.h>
|
||||
#include <linux/blkdev.h>
|
||||
#include <linux/delay.h> /* for mdelay */
|
||||
#include <linux/interrupt.h> /* needed for in_interrupt() proto */
|
||||
#include <linux/reboot.h> /* notifier code */
|
||||
#include <linux/sched.h>
|
||||
#include <linux/workqueue.h>
|
||||
|
||||
#include <scsi/scsi.h>
|
||||
#include <scsi/scsi_cmnd.h>
|
||||
#include <scsi/scsi_device.h>
|
||||
#include <scsi/scsi_host.h>
|
||||
#include <scsi/scsi_tcq.h>
|
||||
|
||||
#include "mptbase.h"
|
||||
#include "mptscsih.h"
|
||||
|
||||
/*=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=*/
|
||||
#define my_NAME "Fusion MPT SPI Host driver"
|
||||
#define my_VERSION MPT_LINUX_VERSION_COMMON
|
||||
#define MYNAM "mptspi"
|
||||
|
||||
MODULE_AUTHOR(MODULEAUTHOR);
|
||||
MODULE_DESCRIPTION(my_NAME);
|
||||
MODULE_LICENSE("GPL");
|
||||
|
||||
/* Command line args */
|
||||
#ifdef MPTSCSIH_ENABLE_DOMAIN_VALIDATION
|
||||
static int mpt_dv = MPTSCSIH_DOMAIN_VALIDATION;
|
||||
module_param(mpt_dv, int, 0);
|
||||
MODULE_PARM_DESC(mpt_dv, " DV Algorithm: enhanced=1, basic=0 (default=MPTSCSIH_DOMAIN_VALIDATION=1)");
|
||||
|
||||
static int mpt_width = MPTSCSIH_MAX_WIDTH;
|
||||
module_param(mpt_width, int, 0);
|
||||
MODULE_PARM_DESC(mpt_width, " Max Bus Width: wide=1, narrow=0 (default=MPTSCSIH_MAX_WIDTH=1)");
|
||||
|
||||
static ushort mpt_factor = MPTSCSIH_MIN_SYNC;
|
||||
module_param(mpt_factor, ushort, 0);
|
||||
MODULE_PARM_DESC(mpt_factor, " Min Sync Factor (default=MPTSCSIH_MIN_SYNC=0x08)");
|
||||
#endif
|
||||
|
||||
static int mpt_saf_te = MPTSCSIH_SAF_TE;
|
||||
module_param(mpt_saf_te, int, 0);
|
||||
MODULE_PARM_DESC(mpt_saf_te, " Force enabling SEP Processor: enable=1 (default=MPTSCSIH_SAF_TE=0)");
|
||||
|
||||
static int mpt_pq_filter = 0;
|
||||
module_param(mpt_pq_filter, int, 0);
|
||||
MODULE_PARM_DESC(mpt_pq_filter, " Enable peripheral qualifier filter: enable=1 (default=0)");
|
||||
|
||||
static int mptspiDoneCtx = -1;
|
||||
static int mptspiTaskCtx = -1;
|
||||
static int mptspiInternalCtx = -1; /* Used only for internal commands */
|
||||
|
||||
static struct device_attribute mptspi_queue_depth_attr = {
|
||||
.attr = {
|
||||
.name = "queue_depth",
|
||||
.mode = S_IWUSR,
|
||||
},
|
||||
.store = mptscsih_store_queue_depth,
|
||||
};
|
||||
|
||||
static struct device_attribute *mptspi_dev_attrs[] = {
|
||||
&mptspi_queue_depth_attr,
|
||||
NULL,
|
||||
};
|
||||
|
||||
static struct scsi_host_template mptspi_driver_template = {
|
||||
.proc_name = "mptspi",
|
||||
.proc_info = mptscsih_proc_info,
|
||||
.name = "MPT SPI Host",
|
||||
.info = mptscsih_info,
|
||||
.queuecommand = mptscsih_qcmd,
|
||||
.slave_alloc = mptscsih_slave_alloc,
|
||||
.slave_configure = mptscsih_slave_configure,
|
||||
.slave_destroy = mptscsih_slave_destroy,
|
||||
.eh_abort_handler = mptscsih_abort,
|
||||
.eh_device_reset_handler = mptscsih_dev_reset,
|
||||
.eh_bus_reset_handler = mptscsih_bus_reset,
|
||||
.eh_host_reset_handler = mptscsih_host_reset,
|
||||
.bios_param = mptscsih_bios_param,
|
||||
.can_queue = MPT_SCSI_CAN_QUEUE,
|
||||
.this_id = -1,
|
||||
.sg_tablesize = MPT_SCSI_SG_DEPTH,
|
||||
.max_sectors = 8192,
|
||||
.cmd_per_lun = 7,
|
||||
.use_clustering = ENABLE_CLUSTERING,
|
||||
.sdev_attrs = mptspi_dev_attrs,
|
||||
};
|
||||
|
||||
|
||||
/****************************************************************************
|
||||
* Supported hardware
|
||||
*/
|
||||
|
||||
static struct pci_device_id mptspi_pci_table[] = {
|
||||
{ PCI_VENDOR_ID_LSI_LOGIC, PCI_DEVICE_ID_LSI_53C1030,
|
||||
PCI_ANY_ID, PCI_ANY_ID },
|
||||
{ PCI_VENDOR_ID_LSI_LOGIC, PCI_DEVICE_ID_LSI_1030_53C1035,
|
||||
PCI_ANY_ID, PCI_ANY_ID },
|
||||
{0} /* Terminating entry */
|
||||
};
|
||||
MODULE_DEVICE_TABLE(pci, mptspi_pci_table);
|
||||
|
||||
/*=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=*/
|
||||
/*=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=*/
|
||||
/*
|
||||
* mptspi_probe - Installs scsi devices per bus.
|
||||
* @pdev: Pointer to pci_dev structure
|
||||
*
|
||||
* Returns 0 for success, non-zero for failure.
|
||||
*
|
||||
*/
|
||||
static int
|
||||
mptspi_probe(struct pci_dev *pdev, const struct pci_device_id *id)
|
||||
{
|
||||
struct Scsi_Host *sh;
|
||||
MPT_SCSI_HOST *hd;
|
||||
MPT_ADAPTER *ioc;
|
||||
unsigned long flags;
|
||||
int sz, ii;
|
||||
int numSGE = 0;
|
||||
int scale;
|
||||
int ioc_cap;
|
||||
u8 *mem;
|
||||
int error=0;
|
||||
int r;
|
||||
|
||||
if ((r = mpt_attach(pdev,id)) != 0)
|
||||
return r;
|
||||
|
||||
ioc = pci_get_drvdata(pdev);
|
||||
ioc->DoneCtx = mptspiDoneCtx;
|
||||
ioc->TaskCtx = mptspiTaskCtx;
|
||||
ioc->InternalCtx = mptspiInternalCtx;
|
||||
|
||||
/* Added sanity check on readiness of the MPT adapter.
|
||||
*/
|
||||
if (ioc->last_state != MPI_IOC_STATE_OPERATIONAL) {
|
||||
printk(MYIOC_s_WARN_FMT
|
||||
"Skipping because it's not operational!\n",
|
||||
ioc->name);
|
||||
return -ENODEV;
|
||||
}
|
||||
|
||||
if (!ioc->active) {
|
||||
printk(MYIOC_s_WARN_FMT "Skipping because it's disabled!\n",
|
||||
ioc->name);
|
||||
return -ENODEV;
|
||||
}
|
||||
|
||||
/* Sanity check - ensure at least 1 port is INITIATOR capable
|
||||
*/
|
||||
ioc_cap = 0;
|
||||
for (ii=0; ii < ioc->facts.NumberOfPorts; ii++) {
|
||||
if (ioc->pfacts[ii].ProtocolFlags &
|
||||
MPI_PORTFACTS_PROTOCOL_INITIATOR)
|
||||
ioc_cap ++;
|
||||
}
|
||||
|
||||
if (!ioc_cap) {
|
||||
printk(MYIOC_s_WARN_FMT
|
||||
"Skipping ioc=%p because SCSI Initiator mode is NOT enabled!\n",
|
||||
ioc->name, ioc);
|
||||
return -ENODEV;
|
||||
}
|
||||
|
||||
sh = scsi_host_alloc(&mptspi_driver_template, sizeof(MPT_SCSI_HOST));
|
||||
|
||||
if (!sh) {
|
||||
printk(MYIOC_s_WARN_FMT
|
||||
"Unable to register controller with SCSI subsystem\n",
|
||||
ioc->name);
|
||||
return -1;
|
||||
}
|
||||
|
||||
spin_lock_irqsave(&ioc->FreeQlock, flags);
|
||||
|
||||
/* Attach the SCSI Host to the IOC structure
|
||||
*/
|
||||
ioc->sh = sh;
|
||||
|
||||
sh->io_port = 0;
|
||||
sh->n_io_port = 0;
|
||||
sh->irq = 0;
|
||||
|
||||
/* set 16 byte cdb's */
|
||||
sh->max_cmd_len = 16;
|
||||
|
||||
/* Yikes! This is important!
|
||||
* Otherwise, by default, linux
|
||||
* only scans target IDs 0-7!
|
||||
* pfactsN->MaxDevices unreliable
|
||||
* (not supported in early
|
||||
* versions of the FW).
|
||||
* max_id = 1 + actual max id,
|
||||
* max_lun = 1 + actual last lun,
|
||||
* see hosts.h :o(
|
||||
*/
|
||||
sh->max_id = MPT_MAX_SCSI_DEVICES;
|
||||
|
||||
sh->max_lun = MPT_LAST_LUN + 1;
|
||||
sh->max_channel = 0;
|
||||
sh->this_id = ioc->pfacts[0].PortSCSIID;
|
||||
|
||||
/* Required entry.
|
||||
*/
|
||||
sh->unique_id = ioc->id;
|
||||
|
||||
/* Verify that we won't exceed the maximum
|
||||
* number of chain buffers
|
||||
* We can optimize: ZZ = req_sz/sizeof(SGE)
|
||||
* For 32bit SGE's:
|
||||
* numSGE = 1 + (ZZ-1)*(maxChain -1) + ZZ
|
||||
* + (req_sz - 64)/sizeof(SGE)
|
||||
* A slightly different algorithm is required for
|
||||
* 64bit SGEs.
|
||||
*/
|
||||
scale = ioc->req_sz/(sizeof(dma_addr_t) + sizeof(u32));
|
||||
if (sizeof(dma_addr_t) == sizeof(u64)) {
|
||||
numSGE = (scale - 1) *
|
||||
(ioc->facts.MaxChainDepth-1) + scale +
|
||||
(ioc->req_sz - 60) / (sizeof(dma_addr_t) +
|
||||
sizeof(u32));
|
||||
} else {
|
||||
numSGE = 1 + (scale - 1) *
|
||||
(ioc->facts.MaxChainDepth-1) + scale +
|
||||
(ioc->req_sz - 64) / (sizeof(dma_addr_t) +
|
||||
sizeof(u32));
|
||||
}
|
||||
|
||||
if (numSGE < sh->sg_tablesize) {
|
||||
/* Reset this value */
|
||||
dprintk((MYIOC_s_INFO_FMT
|
||||
"Resetting sg_tablesize to %d from %d\n",
|
||||
ioc->name, numSGE, sh->sg_tablesize));
|
||||
sh->sg_tablesize = numSGE;
|
||||
}
|
||||
|
||||
/* Set the pci device pointer in Scsi_Host structure.
|
||||
*/
|
||||
scsi_set_device(sh, &ioc->pcidev->dev);
|
||||
|
||||
spin_unlock_irqrestore(&ioc->FreeQlock, flags);
|
||||
|
||||
hd = (MPT_SCSI_HOST *) sh->hostdata;
|
||||
hd->ioc = ioc;
|
||||
|
||||
/* SCSI needs scsi_cmnd lookup table!
|
||||
* (with size equal to req_depth*PtrSz!)
|
||||
*/
|
||||
sz = ioc->req_depth * sizeof(void *);
|
||||
mem = kmalloc(sz, GFP_ATOMIC);
|
||||
if (mem == NULL) {
|
||||
error = -ENOMEM;
|
||||
goto mptspi_probe_failed;
|
||||
}
|
||||
|
||||
memset(mem, 0, sz);
|
||||
hd->ScsiLookup = (struct scsi_cmnd **) mem;
|
||||
|
||||
dprintk((MYIOC_s_INFO_FMT "ScsiLookup @ %p, sz=%d\n",
|
||||
ioc->name, hd->ScsiLookup, sz));
|
||||
|
||||
/* Allocate memory for the device structures.
|
||||
* A non-Null pointer at an offset
|
||||
* indicates a device exists.
|
||||
* max_id = 1 + maximum id (hosts.h)
|
||||
*/
|
||||
sz = sh->max_id * sizeof(void *);
|
||||
mem = kmalloc(sz, GFP_ATOMIC);
|
||||
if (mem == NULL) {
|
||||
error = -ENOMEM;
|
||||
goto mptspi_probe_failed;
|
||||
}
|
||||
|
||||
memset(mem, 0, sz);
|
||||
hd->Targets = (VirtDevice **) mem;
|
||||
|
||||
dprintk((KERN_INFO
|
||||
" Targets @ %p, sz=%d\n", hd->Targets, sz));
|
||||
|
||||
/* Clear the TM flags
|
||||
*/
|
||||
hd->tmPending = 0;
|
||||
hd->tmState = TM_STATE_NONE;
|
||||
hd->resetPending = 0;
|
||||
hd->abortSCpnt = NULL;
|
||||
|
||||
/* Clear the pointer used to store
|
||||
* single-threaded commands, i.e., those
|
||||
* issued during a bus scan, dv and
|
||||
* configuration pages.
|
||||
*/
|
||||
hd->cmdPtr = NULL;
|
||||
|
||||
/* Initialize this SCSI Hosts' timers
|
||||
* To use, set the timer expires field
|
||||
* and add_timer
|
||||
*/
|
||||
init_timer(&hd->timer);
|
||||
hd->timer.data = (unsigned long) hd;
|
||||
hd->timer.function = mptscsih_timer_expired;
|
||||
|
||||
ioc->spi_data.Saf_Te = mpt_saf_te;
|
||||
hd->mpt_pq_filter = mpt_pq_filter;
|
||||
|
||||
#ifdef MPTSCSIH_ENABLE_DOMAIN_VALIDATION
|
||||
if (ioc->spi_data.maxBusWidth > mpt_width)
|
||||
ioc->spi_data.maxBusWidth = mpt_width;
|
||||
if (ioc->spi_data.minSyncFactor < mpt_factor)
|
||||
ioc->spi_data.minSyncFactor = mpt_factor;
|
||||
if (ioc->spi_data.minSyncFactor == MPT_ASYNC) {
|
||||
ioc->spi_data.maxSyncOffset = 0;
|
||||
}
|
||||
ioc->spi_data.mpt_dv = mpt_dv;
|
||||
hd->negoNvram = 0;
|
||||
|
||||
ddvprintk((MYIOC_s_INFO_FMT
|
||||
"dv %x width %x factor %x saf_te %x mpt_pq_filter %x\n",
|
||||
ioc->name,
|
||||
mpt_dv,
|
||||
mpt_width,
|
||||
mpt_factor,
|
||||
mpt_saf_te,
|
||||
mpt_pq_filter));
|
||||
#else
|
||||
hd->negoNvram = MPT_SCSICFG_USE_NVRAM;
|
||||
ddvprintk((MYIOC_s_INFO_FMT
|
||||
"saf_te %x mpt_pq_filter %x\n",
|
||||
ioc->name,
|
||||
mpt_saf_te,
|
||||
mpt_pq_filter));
|
||||
#endif
|
||||
|
||||
ioc->spi_data.forceDv = 0;
|
||||
ioc->spi_data.noQas = 0;
|
||||
|
||||
for (ii=0; ii < MPT_MAX_SCSI_DEVICES; ii++)
|
||||
ioc->spi_data.dvStatus[ii] =
|
||||
MPT_SCSICFG_NEGOTIATE;
|
||||
|
||||
for (ii=0; ii < MPT_MAX_SCSI_DEVICES; ii++)
|
||||
ioc->spi_data.dvStatus[ii] |=
|
||||
MPT_SCSICFG_DV_NOT_DONE;
|
||||
|
||||
init_waitqueue_head(&hd->scandv_waitq);
|
||||
hd->scandv_wait_done = 0;
|
||||
hd->last_queue_full = 0;
|
||||
|
||||
error = scsi_add_host (sh, &ioc->pcidev->dev);
|
||||
if(error) {
|
||||
dprintk((KERN_ERR MYNAM
|
||||
"scsi_add_host failed\n"));
|
||||
goto mptspi_probe_failed;
|
||||
}
|
||||
|
||||
scsi_scan_host(sh);
|
||||
return 0;
|
||||
|
||||
mptspi_probe_failed:
|
||||
|
||||
mptscsih_remove(pdev);
|
||||
return error;
|
||||
}
|
||||
|
||||
static struct pci_driver mptspi_driver = {
|
||||
.name = "mptspi",
|
||||
.id_table = mptspi_pci_table,
|
||||
.probe = mptspi_probe,
|
||||
.remove = __devexit_p(mptscsih_remove),
|
||||
.driver = {
|
||||
.shutdown = mptscsih_shutdown,
|
||||
},
|
||||
#ifdef CONFIG_PM
|
||||
.suspend = mptscsih_suspend,
|
||||
.resume = mptscsih_resume,
|
||||
#endif
|
||||
};
|
||||
|
||||
/*=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=*/
|
||||
/**
|
||||
* mptspi_init - Register MPT adapter(s) as SCSI host(s) with
|
||||
* linux scsi mid-layer.
|
||||
*
|
||||
* Returns 0 for success, non-zero for failure.
|
||||
*/
|
||||
static int __init
|
||||
mptspi_init(void)
|
||||
{
|
||||
|
||||
show_mptmod_ver(my_NAME, my_VERSION);
|
||||
|
||||
mptspiDoneCtx = mpt_register(mptscsih_io_done, MPTSPI_DRIVER);
|
||||
mptspiTaskCtx = mpt_register(mptscsih_taskmgmt_complete, MPTSPI_DRIVER);
|
||||
mptspiInternalCtx = mpt_register(mptscsih_scandv_complete, MPTSPI_DRIVER);
|
||||
|
||||
if (mpt_event_register(mptspiDoneCtx, mptscsih_event_process) == 0) {
|
||||
devtprintk((KERN_INFO MYNAM
|
||||
": Registered for IOC event notifications\n"));
|
||||
}
|
||||
|
||||
if (mpt_reset_register(mptspiDoneCtx, mptscsih_ioc_reset) == 0) {
|
||||
dprintk((KERN_INFO MYNAM
|
||||
": Registered for IOC reset notifications\n"));
|
||||
}
|
||||
|
||||
return pci_register_driver(&mptspi_driver);
|
||||
}
|
||||
|
||||
/*=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=*/
|
||||
/*=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=*/
|
||||
/**
|
||||
* mptspi_exit - Unregisters MPT adapter(s)
|
||||
*
|
||||
*/
|
||||
static void __exit
|
||||
mptspi_exit(void)
|
||||
{
|
||||
pci_unregister_driver(&mptspi_driver);
|
||||
|
||||
mpt_reset_deregister(mptspiDoneCtx);
|
||||
dprintk((KERN_INFO MYNAM
|
||||
": Deregistered for IOC reset notifications\n"));
|
||||
|
||||
mpt_event_deregister(mptspiDoneCtx);
|
||||
dprintk((KERN_INFO MYNAM
|
||||
": Deregistered for IOC event notifications\n"));
|
||||
|
||||
mpt_deregister(mptspiInternalCtx);
|
||||
mpt_deregister(mptspiTaskCtx);
|
||||
mpt_deregister(mptspiDoneCtx);
|
||||
}
|
||||
|
||||
module_init(mptspi_init);
|
||||
module_exit(mptspi_exit);
|
|
@ -573,6 +573,7 @@ static int i2o_block_reply(struct i2o_controller *c, u32 m,
|
|||
static void i2o_block_event(struct i2o_event *evt)
|
||||
{
|
||||
osm_info("block-osm: event received\n");
|
||||
kfree(evt);
|
||||
};
|
||||
|
||||
/*
|
||||
|
|
|
@ -389,7 +389,7 @@ config VIA_FIR
|
|||
help
|
||||
Say Y here if you want to build support for the VIA VT8231
|
||||
and VIA VT1211 IrDA controllers, found on the motherboards using
|
||||
those those VIA chipsets. To use this controller, you will need
|
||||
those VIA chipsets. To use this controller, you will need
|
||||
to plug a specific 5 pins FIR IrDA dongle in the specific
|
||||
motherboard connector. The driver provides support for SIR, MIR
|
||||
and FIR (4Mbps) speeds.
|
||||
|
|
|
@ -415,7 +415,7 @@ struct rtl8169_private {
|
|||
struct work_struct task;
|
||||
};
|
||||
|
||||
MODULE_AUTHOR("Realtek and the Linux r8169 crew <netdev@oss.sgi.com>");
|
||||
MODULE_AUTHOR("Realtek and the Linux r8169 crew <netdev@vger.kernel.org>");
|
||||
MODULE_DESCRIPTION("RealTek RTL-8169 Gigabit Ethernet driver");
|
||||
module_param_array(media, int, &num_media, 0);
|
||||
module_param(rx_copybreak, int, 0);
|
||||
|
|
|
@ -393,7 +393,10 @@ int pci_register_driver(struct pci_driver *drv)
|
|||
drv->driver.bus = &pci_bus_type;
|
||||
drv->driver.probe = pci_device_probe;
|
||||
drv->driver.remove = pci_device_remove;
|
||||
drv->driver.shutdown = pci_device_shutdown,
|
||||
/* FIXME, once all of the existing PCI drivers have been fixed to set
|
||||
* the pci shutdown function, this test can go away. */
|
||||
if (!drv->driver.shutdown)
|
||||
drv->driver.shutdown = pci_device_shutdown,
|
||||
drv->driver.owner = drv->owner;
|
||||
drv->driver.kobj.ktype = &pci_driver_kobj_type;
|
||||
pci_init_dynids(&drv->dynids);
|
||||
|
|
|
@ -125,7 +125,7 @@ static inline unsigned int pci_calc_resource_flags(unsigned int flags)
|
|||
/*
|
||||
* Find the extent of a PCI decode..
|
||||
*/
|
||||
static u32 pci_size(u32 base, u32 maxbase, unsigned long mask)
|
||||
static u32 pci_size(u32 base, u32 maxbase, u32 mask)
|
||||
{
|
||||
u32 size = mask & maxbase; /* Find the significant bits */
|
||||
if (!size)
|
||||
|
|
|
@ -97,11 +97,6 @@ MODULE_PARM_DESC(loglevel,
|
|||
"FC ERP QDIO CIO Config FSF SCSI Other, "
|
||||
"levels: 0=none 1=normal 2=devel 3=trace");
|
||||
|
||||
#ifdef ZFCP_PRINT_FLAGS
|
||||
u32 flags_dump = 0;
|
||||
module_param(flags_dump, uint, 0);
|
||||
#endif
|
||||
|
||||
/****************************************************************/
|
||||
/************** Functions without logging ***********************/
|
||||
/****************************************************************/
|
||||
|
@ -223,13 +218,20 @@ zfcp_in_els_dbf_event(struct zfcp_adapter *adapter, const char *text,
|
|||
* Parse "device=..." parameter string.
|
||||
*/
|
||||
static int __init
|
||||
zfcp_device_setup(char *str)
|
||||
zfcp_device_setup(char *devstr)
|
||||
{
|
||||
char *tmp;
|
||||
char *tmp, *str;
|
||||
size_t len;
|
||||
|
||||
if (!str)
|
||||
if (!devstr)
|
||||
return 0;
|
||||
|
||||
len = strlen(devstr) + 1;
|
||||
str = (char *) kmalloc(len, GFP_KERNEL);
|
||||
if (!str)
|
||||
goto err_out;
|
||||
memcpy(str, devstr, len);
|
||||
|
||||
tmp = strchr(str, ',');
|
||||
if (!tmp)
|
||||
goto err_out;
|
||||
|
@ -246,10 +248,12 @@ zfcp_device_setup(char *str)
|
|||
zfcp_data.init_fcp_lun = simple_strtoull(tmp, &tmp, 0);
|
||||
if (*tmp != '\0')
|
||||
goto err_out;
|
||||
kfree(str);
|
||||
return 1;
|
||||
|
||||
err_out:
|
||||
ZFCP_LOG_NORMAL("Parse error for device parameter string %s\n", str);
|
||||
kfree(str);
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
@ -525,7 +529,7 @@ zfcp_cfdc_dev_ioctl(struct file *file, unsigned int command,
|
|||
|
||||
out:
|
||||
if (fsf_req != NULL)
|
||||
zfcp_fsf_req_cleanup(fsf_req);
|
||||
zfcp_fsf_req_free(fsf_req);
|
||||
|
||||
if ((adapter != NULL) && (retval != -ENXIO))
|
||||
zfcp_adapter_put(adapter);
|
||||
|
@ -1154,7 +1158,7 @@ zfcp_adapter_enqueue(struct ccw_device *ccw_device)
|
|||
INIT_LIST_HEAD(&adapter->port_remove_lh);
|
||||
|
||||
/* initialize list of fsf requests */
|
||||
rwlock_init(&adapter->fsf_req_list_lock);
|
||||
spin_lock_init(&adapter->fsf_req_list_lock);
|
||||
INIT_LIST_HEAD(&adapter->fsf_req_list_head);
|
||||
|
||||
/* initialize abort lock */
|
||||
|
@ -1239,9 +1243,9 @@ zfcp_adapter_dequeue(struct zfcp_adapter *adapter)
|
|||
zfcp_sysfs_adapter_remove_files(&adapter->ccw_device->dev);
|
||||
dev_set_drvdata(&adapter->ccw_device->dev, NULL);
|
||||
/* sanity check: no pending FSF requests */
|
||||
read_lock_irqsave(&adapter->fsf_req_list_lock, flags);
|
||||
spin_lock_irqsave(&adapter->fsf_req_list_lock, flags);
|
||||
retval = !list_empty(&adapter->fsf_req_list_head);
|
||||
read_unlock_irqrestore(&adapter->fsf_req_list_lock, flags);
|
||||
spin_unlock_irqrestore(&adapter->fsf_req_list_lock, flags);
|
||||
if (retval) {
|
||||
ZFCP_LOG_NORMAL("bug: adapter %s (%p) still in use, "
|
||||
"%i requests outstanding\n",
|
||||
|
@ -1483,19 +1487,15 @@ zfcp_fsf_incoming_els_rscn(struct zfcp_adapter *adapter,
|
|||
fcp_rscn_element++;
|
||||
switch (fcp_rscn_element->addr_format) {
|
||||
case ZFCP_PORT_ADDRESS:
|
||||
ZFCP_LOG_FLAGS(1, "ZFCP_PORT_ADDRESS\n");
|
||||
range_mask = ZFCP_PORTS_RANGE_PORT;
|
||||
break;
|
||||
case ZFCP_AREA_ADDRESS:
|
||||
ZFCP_LOG_FLAGS(1, "ZFCP_AREA_ADDRESS\n");
|
||||
range_mask = ZFCP_PORTS_RANGE_AREA;
|
||||
break;
|
||||
case ZFCP_DOMAIN_ADDRESS:
|
||||
ZFCP_LOG_FLAGS(1, "ZFCP_DOMAIN_ADDRESS\n");
|
||||
range_mask = ZFCP_PORTS_RANGE_DOMAIN;
|
||||
break;
|
||||
case ZFCP_FABRIC_ADDRESS:
|
||||
ZFCP_LOG_FLAGS(1, "ZFCP_FABRIC_ADDRESS\n");
|
||||
range_mask = ZFCP_PORTS_RANGE_FABRIC;
|
||||
break;
|
||||
default:
|
||||
|
@ -1762,7 +1762,10 @@ static void zfcp_ns_gid_pn_handler(unsigned long data)
|
|||
ct_iu_req = zfcp_sg_to_address(ct->req);
|
||||
ct_iu_resp = zfcp_sg_to_address(ct->resp);
|
||||
|
||||
if ((ct->status != 0) || zfcp_check_ct_response(&ct_iu_resp->header)) {
|
||||
if (ct->status != 0)
|
||||
goto failed;
|
||||
|
||||
if (zfcp_check_ct_response(&ct_iu_resp->header)) {
|
||||
/* FIXME: do we need some specific erp entry points */
|
||||
atomic_set_mask(ZFCP_STATUS_PORT_INVALID_WWPN, &port->status);
|
||||
goto failed;
|
||||
|
|
|
@ -62,9 +62,6 @@
|
|||
#include <linux/syscalls.h>
|
||||
#include <linux/ioctl.h>
|
||||
|
||||
/************************ DEBUG FLAGS *****************************************/
|
||||
|
||||
#define ZFCP_PRINT_FLAGS
|
||||
|
||||
/********************* GENERAL DEFINES *********************************/
|
||||
|
||||
|
@ -152,8 +149,10 @@ typedef u32 scsi_lun_t;
|
|||
#define FSF_QTCB_UNSOLICITED_STATUS 0x6305
|
||||
#define ZFCP_STATUS_READ_FAILED_THRESHOLD 3
|
||||
#define ZFCP_STATUS_READS_RECOM FSF_STATUS_READS_RECOM
|
||||
#define ZFCP_EXCHANGE_CONFIG_DATA_RETRIES 6
|
||||
#define ZFCP_EXCHANGE_CONFIG_DATA_SLEEP 50
|
||||
|
||||
/* Do 1st retry in 1 second, then double the timeout for each following retry */
|
||||
#define ZFCP_EXCHANGE_CONFIG_DATA_FIRST_SLEEP 100
|
||||
#define ZFCP_EXCHANGE_CONFIG_DATA_RETRIES 7
|
||||
|
||||
/* timeout value for "default timer" for fsf requests */
|
||||
#define ZFCP_FSF_REQUEST_TIMEOUT (60*HZ);
|
||||
|
@ -472,17 +471,6 @@ do { \
|
|||
ZFCP_LOG(ZFCP_LOG_LEVEL_TRACE, fmt , ##args)
|
||||
#endif
|
||||
|
||||
#ifndef ZFCP_PRINT_FLAGS
|
||||
# define ZFCP_LOG_FLAGS(level, fmt, args...)
|
||||
#else
|
||||
extern u32 flags_dump;
|
||||
# define ZFCP_LOG_FLAGS(level, fmt, args...) \
|
||||
do { \
|
||||
if (level <= flags_dump) \
|
||||
_ZFCP_LOG(fmt, ##args); \
|
||||
} while (0)
|
||||
#endif
|
||||
|
||||
/*************** ADAPTER/PORT/UNIT AND FSF_REQ STATUS FLAGS ******************/
|
||||
|
||||
/*
|
||||
|
@ -502,6 +490,7 @@ do { \
|
|||
#define ZFCP_STATUS_COMMON_CLOSING 0x02000000
|
||||
#define ZFCP_STATUS_COMMON_ERP_INUSE 0x01000000
|
||||
#define ZFCP_STATUS_COMMON_ACCESS_DENIED 0x00800000
|
||||
#define ZFCP_STATUS_COMMON_ACCESS_BOXED 0x00400000
|
||||
|
||||
/* adapter status */
|
||||
#define ZFCP_STATUS_ADAPTER_QDIOUP 0x00000002
|
||||
|
@ -763,6 +752,7 @@ typedef void (*zfcp_send_els_handler_t)(unsigned long);
|
|||
/**
|
||||
* struct zfcp_send_els - used to pass parameters to function zfcp_fsf_send_els
|
||||
* @adapter: adapter where request is sent from
|
||||
* @port: port where ELS is destinated (port reference count has to be increased)
|
||||
* @d_id: destiniation id of port where request is sent to
|
||||
* @req: scatter-gather list for request
|
||||
* @resp: scatter-gather list for response
|
||||
|
@ -777,6 +767,7 @@ typedef void (*zfcp_send_els_handler_t)(unsigned long);
|
|||
*/
|
||||
struct zfcp_send_els {
|
||||
struct zfcp_adapter *adapter;
|
||||
struct zfcp_port *port;
|
||||
fc_id_t d_id;
|
||||
struct scatterlist *req;
|
||||
struct scatterlist *resp;
|
||||
|
@ -871,7 +862,7 @@ struct zfcp_adapter {
|
|||
u32 ports; /* number of remote ports */
|
||||
struct timer_list scsi_er_timer; /* SCSI err recovery watch */
|
||||
struct list_head fsf_req_list_head; /* head of FSF req list */
|
||||
rwlock_t fsf_req_list_lock; /* lock for ops on list of
|
||||
spinlock_t fsf_req_list_lock; /* lock for ops on list of
|
||||
FSF requests */
|
||||
atomic_t fsf_reqs_active; /* # active FSF reqs */
|
||||
struct zfcp_qdio_queue request_queue; /* request queue */
|
||||
|
|
|
@ -35,7 +35,7 @@
|
|||
|
||||
#include "zfcp_ext.h"
|
||||
|
||||
static int zfcp_erp_adisc(struct zfcp_adapter *, fc_id_t);
|
||||
static int zfcp_erp_adisc(struct zfcp_port *);
|
||||
static void zfcp_erp_adisc_handler(unsigned long);
|
||||
|
||||
static int zfcp_erp_adapter_reopen_internal(struct zfcp_adapter *, int);
|
||||
|
@ -295,12 +295,12 @@ zfcp_erp_unit_shutdown(struct zfcp_unit *unit, int clear_mask)
|
|||
|
||||
/**
|
||||
* zfcp_erp_adisc - send ADISC ELS command
|
||||
* @adapter: adapter structure
|
||||
* @d_id: d_id of port where ADISC is sent to
|
||||
* @port: port structure
|
||||
*/
|
||||
int
|
||||
zfcp_erp_adisc(struct zfcp_adapter *adapter, fc_id_t d_id)
|
||||
zfcp_erp_adisc(struct zfcp_port *port)
|
||||
{
|
||||
struct zfcp_adapter *adapter = port->adapter;
|
||||
struct zfcp_send_els *send_els;
|
||||
struct zfcp_ls_adisc *adisc;
|
||||
void *address = NULL;
|
||||
|
@ -332,7 +332,8 @@ zfcp_erp_adisc(struct zfcp_adapter *adapter, fc_id_t d_id)
|
|||
send_els->req_count = send_els->resp_count = 1;
|
||||
|
||||
send_els->adapter = adapter;
|
||||
send_els->d_id = d_id;
|
||||
send_els->port = port;
|
||||
send_els->d_id = port->d_id;
|
||||
send_els->handler = zfcp_erp_adisc_handler;
|
||||
send_els->handler_data = (unsigned long) send_els;
|
||||
|
||||
|
@ -350,7 +351,7 @@ zfcp_erp_adisc(struct zfcp_adapter *adapter, fc_id_t d_id)
|
|||
ZFCP_LOG_INFO("ADISC request from s_id 0x%08x to d_id 0x%08x "
|
||||
"(wwpn=0x%016Lx, wwnn=0x%016Lx, "
|
||||
"hard_nport_id=0x%08x, nport_id=0x%08x)\n",
|
||||
adapter->s_id, d_id, (wwn_t) adisc->wwpn,
|
||||
adapter->s_id, send_els->d_id, (wwn_t) adisc->wwpn,
|
||||
(wwn_t) adisc->wwnn, adisc->hard_nport_id,
|
||||
adisc->nport_id);
|
||||
|
||||
|
@ -367,7 +368,7 @@ zfcp_erp_adisc(struct zfcp_adapter *adapter, fc_id_t d_id)
|
|||
retval = zfcp_fsf_send_els(send_els);
|
||||
if (retval != 0) {
|
||||
ZFCP_LOG_NORMAL("error: initiation of Send ELS failed for port "
|
||||
"0x%08x on adapter %s\n", d_id,
|
||||
"0x%08x on adapter %s\n", send_els->d_id,
|
||||
zfcp_get_busid_by_adapter(adapter));
|
||||
del_timer(send_els->timer);
|
||||
goto freemem;
|
||||
|
@ -411,14 +412,9 @@ zfcp_erp_adisc_handler(unsigned long data)
|
|||
del_timer(send_els->timer);
|
||||
|
||||
adapter = send_els->adapter;
|
||||
port = send_els->port;
|
||||
d_id = send_els->d_id;
|
||||
|
||||
read_lock(&zfcp_data.config_lock);
|
||||
port = zfcp_get_port_by_did(send_els->adapter, send_els->d_id);
|
||||
read_unlock(&zfcp_data.config_lock);
|
||||
|
||||
BUG_ON(port == NULL);
|
||||
|
||||
/* request rejected or timed out */
|
||||
if (send_els->status != 0) {
|
||||
ZFCP_LOG_NORMAL("ELS request rejected/timed out, "
|
||||
|
@ -482,7 +478,7 @@ zfcp_test_link(struct zfcp_port *port)
|
|||
int retval;
|
||||
|
||||
zfcp_port_get(port);
|
||||
retval = zfcp_erp_adisc(port->adapter, port->d_id);
|
||||
retval = zfcp_erp_adisc(port);
|
||||
if (retval != 0) {
|
||||
zfcp_port_put(port);
|
||||
ZFCP_LOG_NORMAL("reopen needed for port 0x%016Lx "
|
||||
|
@ -895,7 +891,7 @@ zfcp_erp_strategy_check_fsfreq(struct zfcp_erp_action *erp_action)
|
|||
|
||||
if (erp_action->fsf_req) {
|
||||
/* take lock to ensure that request is not being deleted meanwhile */
|
||||
write_lock(&adapter->fsf_req_list_lock);
|
||||
spin_lock(&adapter->fsf_req_list_lock);
|
||||
/* check whether fsf req does still exist */
|
||||
list_for_each_entry(fsf_req, &adapter->fsf_req_list_head, list)
|
||||
if (fsf_req == erp_action->fsf_req)
|
||||
|
@ -938,7 +934,7 @@ zfcp_erp_strategy_check_fsfreq(struct zfcp_erp_action *erp_action)
|
|||
*/
|
||||
erp_action->fsf_req = NULL;
|
||||
}
|
||||
write_unlock(&adapter->fsf_req_list_lock);
|
||||
spin_unlock(&adapter->fsf_req_list_lock);
|
||||
} else
|
||||
debug_text_event(adapter->erp_dbf, 3, "a_ca_noreq");
|
||||
|
||||
|
@ -2286,12 +2282,12 @@ zfcp_erp_adapter_strategy_open_fsf_xconfig(struct zfcp_erp_action *erp_action)
|
|||
{
|
||||
int retval = ZFCP_ERP_SUCCEEDED;
|
||||
int retries;
|
||||
int sleep = ZFCP_EXCHANGE_CONFIG_DATA_FIRST_SLEEP;
|
||||
struct zfcp_adapter *adapter = erp_action->adapter;
|
||||
|
||||
atomic_clear_mask(ZFCP_STATUS_ADAPTER_XCONFIG_OK, &adapter->status);
|
||||
retries = ZFCP_EXCHANGE_CONFIG_DATA_RETRIES;
|
||||
|
||||
do {
|
||||
for (retries = ZFCP_EXCHANGE_CONFIG_DATA_RETRIES; retries; retries--) {
|
||||
atomic_clear_mask(ZFCP_STATUS_ADAPTER_HOST_CON_INIT,
|
||||
&adapter->status);
|
||||
ZFCP_LOG_DEBUG("Doing exchange config data\n");
|
||||
|
@ -2329,16 +2325,17 @@ zfcp_erp_adapter_strategy_open_fsf_xconfig(struct zfcp_erp_action *erp_action)
|
|||
zfcp_get_busid_by_adapter(adapter));
|
||||
break;
|
||||
}
|
||||
if (atomic_test_mask(ZFCP_STATUS_ADAPTER_HOST_CON_INIT,
|
||||
&adapter->status)) {
|
||||
ZFCP_LOG_DEBUG("host connection still initialising... "
|
||||
"waiting and retrying...\n");
|
||||
/* sleep a little bit before retry */
|
||||
msleep(jiffies_to_msecs(ZFCP_EXCHANGE_CONFIG_DATA_SLEEP));
|
||||
}
|
||||
} while ((retries--) &&
|
||||
atomic_test_mask(ZFCP_STATUS_ADAPTER_HOST_CON_INIT,
|
||||
&adapter->status));
|
||||
|
||||
if (!atomic_test_mask(ZFCP_STATUS_ADAPTER_HOST_CON_INIT,
|
||||
&adapter->status))
|
||||
break;
|
||||
|
||||
ZFCP_LOG_DEBUG("host connection still initialising... "
|
||||
"waiting and retrying...\n");
|
||||
/* sleep a little bit before retry */
|
||||
msleep(jiffies_to_msecs(sleep));
|
||||
sleep *= 2;
|
||||
}
|
||||
|
||||
if (!atomic_test_mask(ZFCP_STATUS_ADAPTER_XCONFIG_OK,
|
||||
&adapter->status)) {
|
||||
|
@ -3484,6 +3481,45 @@ zfcp_erp_action_to_ready(struct zfcp_erp_action *erp_action)
|
|||
list_move(&erp_action->list, &erp_action->adapter->erp_ready_head);
|
||||
}
|
||||
|
||||
/*
|
||||
* function: zfcp_erp_port_boxed
|
||||
*
|
||||
* purpose:
|
||||
*/
|
||||
void
|
||||
zfcp_erp_port_boxed(struct zfcp_port *port)
|
||||
{
|
||||
struct zfcp_adapter *adapter = port->adapter;
|
||||
unsigned long flags;
|
||||
|
||||
debug_text_event(adapter->erp_dbf, 3, "p_access_boxed");
|
||||
debug_event(adapter->erp_dbf, 3, &port->wwpn, sizeof(wwn_t));
|
||||
read_lock_irqsave(&zfcp_data.config_lock, flags);
|
||||
zfcp_erp_modify_port_status(port,
|
||||
ZFCP_STATUS_COMMON_ACCESS_BOXED,
|
||||
ZFCP_SET);
|
||||
read_unlock_irqrestore(&zfcp_data.config_lock, flags);
|
||||
zfcp_erp_port_reopen(port, ZFCP_STATUS_COMMON_ERP_FAILED);
|
||||
}
|
||||
|
||||
/*
|
||||
* function: zfcp_erp_unit_boxed
|
||||
*
|
||||
* purpose:
|
||||
*/
|
||||
void
|
||||
zfcp_erp_unit_boxed(struct zfcp_unit *unit)
|
||||
{
|
||||
struct zfcp_adapter *adapter = unit->port->adapter;
|
||||
|
||||
debug_text_event(adapter->erp_dbf, 3, "u_access_boxed");
|
||||
debug_event(adapter->erp_dbf, 3, &unit->fcp_lun, sizeof(fcp_lun_t));
|
||||
zfcp_erp_modify_unit_status(unit,
|
||||
ZFCP_STATUS_COMMON_ACCESS_BOXED,
|
||||
ZFCP_SET);
|
||||
zfcp_erp_unit_reopen(unit, ZFCP_STATUS_COMMON_ERP_FAILED);
|
||||
}
|
||||
|
||||
/*
|
||||
* function: zfcp_erp_port_access_denied
|
||||
*
|
||||
|
@ -3495,11 +3531,13 @@ zfcp_erp_port_access_denied(struct zfcp_port *port)
|
|||
struct zfcp_adapter *adapter = port->adapter;
|
||||
unsigned long flags;
|
||||
|
||||
debug_text_event(adapter->erp_dbf, 3, "p_access_block");
|
||||
debug_text_event(adapter->erp_dbf, 3, "p_access_denied");
|
||||
debug_event(adapter->erp_dbf, 3, &port->wwpn, sizeof(wwn_t));
|
||||
read_lock_irqsave(&zfcp_data.config_lock, flags);
|
||||
zfcp_erp_modify_port_status(port, ZFCP_STATUS_COMMON_ERP_FAILED |
|
||||
ZFCP_STATUS_COMMON_ACCESS_DENIED, ZFCP_SET);
|
||||
zfcp_erp_modify_port_status(port,
|
||||
ZFCP_STATUS_COMMON_ERP_FAILED |
|
||||
ZFCP_STATUS_COMMON_ACCESS_DENIED,
|
||||
ZFCP_SET);
|
||||
read_unlock_irqrestore(&zfcp_data.config_lock, flags);
|
||||
}
|
||||
|
||||
|
@ -3513,10 +3551,12 @@ zfcp_erp_unit_access_denied(struct zfcp_unit *unit)
|
|||
{
|
||||
struct zfcp_adapter *adapter = unit->port->adapter;
|
||||
|
||||
debug_text_event(adapter->erp_dbf, 3, "u_access_block");
|
||||
debug_text_event(adapter->erp_dbf, 3, "u_access_denied");
|
||||
debug_event(adapter->erp_dbf, 3, &unit->fcp_lun, sizeof(fcp_lun_t));
|
||||
zfcp_erp_modify_unit_status(unit, ZFCP_STATUS_COMMON_ERP_FAILED |
|
||||
ZFCP_STATUS_COMMON_ACCESS_DENIED, ZFCP_SET);
|
||||
zfcp_erp_modify_unit_status(unit,
|
||||
ZFCP_STATUS_COMMON_ERP_FAILED |
|
||||
ZFCP_STATUS_COMMON_ACCESS_DENIED,
|
||||
ZFCP_SET);
|
||||
}
|
||||
|
||||
/*
|
||||
|
@ -3530,7 +3570,7 @@ zfcp_erp_adapter_access_changed(struct zfcp_adapter *adapter)
|
|||
struct zfcp_port *port;
|
||||
unsigned long flags;
|
||||
|
||||
debug_text_event(adapter->erp_dbf, 3, "a_access_unblock");
|
||||
debug_text_event(adapter->erp_dbf, 3, "a_access_recover");
|
||||
debug_event(adapter->erp_dbf, 3, &adapter->name, 8);
|
||||
|
||||
read_lock_irqsave(&zfcp_data.config_lock, flags);
|
||||
|
@ -3553,10 +3593,12 @@ zfcp_erp_port_access_changed(struct zfcp_port *port)
|
|||
struct zfcp_adapter *adapter = port->adapter;
|
||||
struct zfcp_unit *unit;
|
||||
|
||||
debug_text_event(adapter->erp_dbf, 3, "p_access_unblock");
|
||||
debug_text_event(adapter->erp_dbf, 3, "p_access_recover");
|
||||
debug_event(adapter->erp_dbf, 3, &port->wwpn, sizeof(wwn_t));
|
||||
|
||||
if (!atomic_test_mask(ZFCP_STATUS_COMMON_ACCESS_DENIED,
|
||||
&port->status) &&
|
||||
!atomic_test_mask(ZFCP_STATUS_COMMON_ACCESS_BOXED,
|
||||
&port->status)) {
|
||||
if (!atomic_test_mask(ZFCP_STATUS_PORT_WKA, &port->status))
|
||||
list_for_each_entry(unit, &port->unit_list_head, list)
|
||||
|
@ -3583,10 +3625,13 @@ zfcp_erp_unit_access_changed(struct zfcp_unit *unit)
|
|||
{
|
||||
struct zfcp_adapter *adapter = unit->port->adapter;
|
||||
|
||||
debug_text_event(adapter->erp_dbf, 3, "u_access_unblock");
|
||||
debug_text_event(adapter->erp_dbf, 3, "u_access_recover");
|
||||
debug_event(adapter->erp_dbf, 3, &unit->fcp_lun, sizeof(fcp_lun_t));
|
||||
|
||||
if (!atomic_test_mask(ZFCP_STATUS_COMMON_ACCESS_DENIED, &unit->status))
|
||||
if (!atomic_test_mask(ZFCP_STATUS_COMMON_ACCESS_DENIED,
|
||||
&unit->status) &&
|
||||
!atomic_test_mask(ZFCP_STATUS_COMMON_ACCESS_BOXED,
|
||||
&unit->status))
|
||||
return;
|
||||
|
||||
ZFCP_LOG_NORMAL("reopen of unit 0x%016Lx on port 0x%016Lx "
|
||||
|
|
|
@ -116,7 +116,7 @@ extern int zfcp_fsf_send_fcp_command_task(struct zfcp_adapter *,
|
|||
struct timer_list*, int);
|
||||
extern int zfcp_fsf_req_complete(struct zfcp_fsf_req *);
|
||||
extern void zfcp_fsf_incoming_els(struct zfcp_fsf_req *);
|
||||
extern void zfcp_fsf_req_cleanup(struct zfcp_fsf_req *);
|
||||
extern void zfcp_fsf_req_free(struct zfcp_fsf_req *);
|
||||
extern struct zfcp_fsf_req *zfcp_fsf_send_fcp_command_task_management(
|
||||
struct zfcp_adapter *, struct zfcp_unit *, u8, int);
|
||||
extern struct zfcp_fsf_req *zfcp_fsf_abort_fcp_command(
|
||||
|
@ -171,6 +171,8 @@ extern int zfcp_erp_async_handler(struct zfcp_erp_action *, unsigned long);
|
|||
|
||||
extern int zfcp_test_link(struct zfcp_port *);
|
||||
|
||||
extern void zfcp_erp_port_boxed(struct zfcp_port *);
|
||||
extern void zfcp_erp_unit_boxed(struct zfcp_unit *);
|
||||
extern void zfcp_erp_port_access_denied(struct zfcp_port *);
|
||||
extern void zfcp_erp_unit_access_denied(struct zfcp_unit *);
|
||||
extern void zfcp_erp_adapter_access_changed(struct zfcp_adapter *);
|
||||
|
|
File diff suppressed because it is too large
Load diff
|
@ -229,52 +229,14 @@ zfcp_qdio_handler_error_check(struct zfcp_adapter *adapter,
|
|||
ZFCP_LOG_TRACE("status is"
|
||||
" QDIO_STATUS_OUTBOUND_INT \n");
|
||||
}
|
||||
} // if (ZFCP_LOG_CHECK(ZFCP_LOG_LEVEL_TRACE))
|
||||
}
|
||||
if (unlikely(status & QDIO_STATUS_LOOK_FOR_ERROR)) {
|
||||
retval = -EIO;
|
||||
|
||||
ZFCP_LOG_FLAGS(1, "QDIO_STATUS_LOOK_FOR_ERROR \n");
|
||||
|
||||
ZFCP_LOG_INFO("QDIO problem occurred (status=0x%x, "
|
||||
"qdio_error=0x%x, siga_error=0x%x)\n",
|
||||
status, qdio_error, siga_error);
|
||||
|
||||
if (status & QDIO_STATUS_ACTIVATE_CHECK_CONDITION) {
|
||||
ZFCP_LOG_FLAGS(2,
|
||||
"QDIO_STATUS_ACTIVATE_CHECK_CONDITION\n");
|
||||
}
|
||||
if (status & QDIO_STATUS_MORE_THAN_ONE_QDIO_ERROR) {
|
||||
ZFCP_LOG_FLAGS(2,
|
||||
"QDIO_STATUS_MORE_THAN_ONE_QDIO_ERROR\n");
|
||||
}
|
||||
if (status & QDIO_STATUS_MORE_THAN_ONE_SIGA_ERROR) {
|
||||
ZFCP_LOG_FLAGS(2,
|
||||
"QDIO_STATUS_MORE_THAN_ONE_SIGA_ERROR\n");
|
||||
}
|
||||
|
||||
if (siga_error & QDIO_SIGA_ERROR_ACCESS_EXCEPTION) {
|
||||
ZFCP_LOG_FLAGS(2, "QDIO_SIGA_ERROR_ACCESS_EXCEPTION\n");
|
||||
}
|
||||
|
||||
if (siga_error & QDIO_SIGA_ERROR_B_BIT_SET) {
|
||||
ZFCP_LOG_FLAGS(2, "QDIO_SIGA_ERROR_B_BIT_SET\n");
|
||||
}
|
||||
|
||||
switch (qdio_error) {
|
||||
case 0:
|
||||
ZFCP_LOG_FLAGS(3, "QDIO_OK");
|
||||
break;
|
||||
case SLSB_P_INPUT_ERROR:
|
||||
ZFCP_LOG_FLAGS(1, "SLSB_P_INPUT_ERROR\n");
|
||||
break;
|
||||
case SLSB_P_OUTPUT_ERROR:
|
||||
ZFCP_LOG_FLAGS(1, "SLSB_P_OUTPUT_ERROR\n");
|
||||
break;
|
||||
default:
|
||||
ZFCP_LOG_NORMAL("bug: unknown QDIO error 0x%x\n",
|
||||
qdio_error);
|
||||
break;
|
||||
}
|
||||
/* Restarting IO on the failed adapter from scratch */
|
||||
debug_text_event(adapter->erp_dbf, 1, "qdio_err");
|
||||
/*
|
||||
|
@ -484,37 +446,37 @@ int
|
|||
zfcp_qdio_reqid_check(struct zfcp_adapter *adapter, void *sbale_addr)
|
||||
{
|
||||
struct zfcp_fsf_req *fsf_req;
|
||||
int retval = 0;
|
||||
|
||||
/* invalid (per convention used in this driver) */
|
||||
if (unlikely(!sbale_addr)) {
|
||||
ZFCP_LOG_NORMAL("bug: invalid reqid\n");
|
||||
retval = -EINVAL;
|
||||
goto out;
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
/* valid request id and thus (hopefully :) valid fsf_req address */
|
||||
fsf_req = (struct zfcp_fsf_req *) sbale_addr;
|
||||
|
||||
/* serialize with zfcp_fsf_req_dismiss_all */
|
||||
spin_lock(&adapter->fsf_req_list_lock);
|
||||
if (list_empty(&adapter->fsf_req_list_head)) {
|
||||
spin_unlock(&adapter->fsf_req_list_lock);
|
||||
return 0;
|
||||
}
|
||||
list_del(&fsf_req->list);
|
||||
atomic_dec(&adapter->fsf_reqs_active);
|
||||
spin_unlock(&adapter->fsf_req_list_lock);
|
||||
|
||||
if (unlikely(adapter != fsf_req->adapter)) {
|
||||
ZFCP_LOG_NORMAL("bug: invalid reqid (fsf_req=%p, "
|
||||
"fsf_req->adapter=%p, adapter=%p)\n",
|
||||
fsf_req, fsf_req->adapter, adapter);
|
||||
retval = -EINVAL;
|
||||
goto out;
|
||||
}
|
||||
|
||||
ZFCP_LOG_TRACE("fsf_req at %p, QTCB at %p\n", fsf_req, fsf_req->qtcb);
|
||||
if (likely(fsf_req->qtcb)) {
|
||||
ZFCP_LOG_TRACE("hex dump of QTCB:\n");
|
||||
ZFCP_HEX_DUMP(ZFCP_LOG_LEVEL_TRACE, (char *) fsf_req->qtcb,
|
||||
sizeof(struct fsf_qtcb));
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
/* finish the FSF request */
|
||||
zfcp_fsf_req_complete(fsf_req);
|
||||
out:
|
||||
return retval;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
@ -433,7 +433,7 @@ zfcp_port_lookup(struct zfcp_adapter *adapter, int channel, scsi_id_t id)
|
|||
* FAILED - otherwise
|
||||
*/
|
||||
int
|
||||
zfcp_scsi_eh_abort_handler(struct scsi_cmnd *scpnt)
|
||||
__zfcp_scsi_eh_abort_handler(struct scsi_cmnd *scpnt)
|
||||
{
|
||||
int retval = SUCCESS;
|
||||
struct zfcp_fsf_req *new_fsf_req, *old_fsf_req;
|
||||
|
@ -575,7 +575,7 @@ zfcp_scsi_eh_abort_handler(struct scsi_cmnd *scpnt)
|
|||
*(u64 *) & new_fsf_req->qtcb->header.fsf_status_qual.word[0];
|
||||
dbf_fsf_qual[1] =
|
||||
*(u64 *) & new_fsf_req->qtcb->header.fsf_status_qual.word[2];
|
||||
zfcp_fsf_req_cleanup(new_fsf_req);
|
||||
zfcp_fsf_req_free(new_fsf_req);
|
||||
#else
|
||||
retval = zfcp_fsf_req_wait_and_cleanup(new_fsf_req,
|
||||
ZFCP_UNINTERRUPTIBLE, &status);
|
||||
|
@ -611,6 +611,17 @@ zfcp_scsi_eh_abort_handler(struct scsi_cmnd *scpnt)
|
|||
return retval;
|
||||
}
|
||||
|
||||
int
|
||||
zfcp_scsi_eh_abort_handler(struct scsi_cmnd *scpnt)
|
||||
{
|
||||
int rc;
|
||||
struct Scsi_Host *scsi_host = scpnt->device->host;
|
||||
spin_lock_irq(scsi_host->host_lock);
|
||||
rc = __zfcp_scsi_eh_abort_handler(scpnt);
|
||||
spin_unlock_irq(scsi_host->host_lock);
|
||||
return rc;
|
||||
}
|
||||
|
||||
/*
|
||||
* function: zfcp_scsi_eh_device_reset_handler
|
||||
*
|
||||
|
@ -625,8 +636,6 @@ zfcp_scsi_eh_device_reset_handler(struct scsi_cmnd *scpnt)
|
|||
struct zfcp_unit *unit = (struct zfcp_unit *) scpnt->device->hostdata;
|
||||
struct Scsi_Host *scsi_host = scpnt->device->host;
|
||||
|
||||
spin_unlock_irq(scsi_host->host_lock);
|
||||
|
||||
if (!unit) {
|
||||
ZFCP_LOG_NORMAL("bug: Tried reset for nonexistent unit\n");
|
||||
retval = SUCCESS;
|
||||
|
@ -669,7 +678,6 @@ zfcp_scsi_eh_device_reset_handler(struct scsi_cmnd *scpnt)
|
|||
retval = SUCCESS;
|
||||
}
|
||||
out:
|
||||
spin_lock_irq(scsi_host->host_lock);
|
||||
return retval;
|
||||
}
|
||||
|
||||
|
@ -723,8 +731,6 @@ zfcp_scsi_eh_bus_reset_handler(struct scsi_cmnd *scpnt)
|
|||
struct zfcp_unit *unit;
|
||||
struct Scsi_Host *scsi_host = scpnt->device->host;
|
||||
|
||||
spin_unlock_irq(scsi_host->host_lock);
|
||||
|
||||
unit = (struct zfcp_unit *) scpnt->device->hostdata;
|
||||
ZFCP_LOG_NORMAL("bus reset because of problems with "
|
||||
"unit 0x%016Lx\n", unit->fcp_lun);
|
||||
|
@ -732,7 +738,6 @@ zfcp_scsi_eh_bus_reset_handler(struct scsi_cmnd *scpnt)
|
|||
zfcp_erp_wait(unit->port->adapter);
|
||||
retval = SUCCESS;
|
||||
|
||||
spin_lock_irq(scsi_host->host_lock);
|
||||
return retval;
|
||||
}
|
||||
|
||||
|
@ -750,8 +755,6 @@ zfcp_scsi_eh_host_reset_handler(struct scsi_cmnd *scpnt)
|
|||
struct zfcp_unit *unit;
|
||||
struct Scsi_Host *scsi_host = scpnt->device->host;
|
||||
|
||||
spin_unlock_irq(scsi_host->host_lock);
|
||||
|
||||
unit = (struct zfcp_unit *) scpnt->device->hostdata;
|
||||
ZFCP_LOG_NORMAL("host reset because of problems with "
|
||||
"unit 0x%016Lx\n", unit->fcp_lun);
|
||||
|
@ -759,7 +762,6 @@ zfcp_scsi_eh_host_reset_handler(struct scsi_cmnd *scpnt)
|
|||
zfcp_erp_wait(unit->port->adapter);
|
||||
retval = SUCCESS;
|
||||
|
||||
spin_lock_irq(scsi_host->host_lock);
|
||||
return retval;
|
||||
}
|
||||
|
||||
|
|
|
@ -1695,8 +1695,6 @@ static int twa_scsi_eh_reset(struct scsi_cmnd *SCpnt)
|
|||
|
||||
tw_dev = (TW_Device_Extension *)SCpnt->device->host->hostdata;
|
||||
|
||||
spin_unlock_irq(tw_dev->host->host_lock);
|
||||
|
||||
tw_dev->num_resets++;
|
||||
|
||||
printk(KERN_WARNING "3w-9xxx: scsi%d: WARNING: (0x%02X:0x%04X): Unit #%d: Command (0x%x) timed out, resetting card.\n", tw_dev->host->host_no, TW_DRIVER, 0x2c, SCpnt->device->id, SCpnt->cmnd[0]);
|
||||
|
@ -1709,7 +1707,6 @@ static int twa_scsi_eh_reset(struct scsi_cmnd *SCpnt)
|
|||
|
||||
retval = SUCCESS;
|
||||
out:
|
||||
spin_lock_irq(tw_dev->host->host_lock);
|
||||
return retval;
|
||||
} /* End twa_scsi_eh_reset() */
|
||||
|
||||
|
|
|
@ -1430,8 +1430,6 @@ static int tw_scsi_eh_reset(struct scsi_cmnd *SCpnt)
|
|||
|
||||
tw_dev = (TW_Device_Extension *)SCpnt->device->host->hostdata;
|
||||
|
||||
spin_unlock_irq(tw_dev->host->host_lock);
|
||||
|
||||
tw_dev->num_resets++;
|
||||
|
||||
printk(KERN_WARNING "3w-xxxx: scsi%d: WARNING: Unit #%d: Command (0x%x) timed out, resetting card.\n", tw_dev->host->host_no, SCpnt->device->id, SCpnt->cmnd[0]);
|
||||
|
@ -1444,7 +1442,6 @@ static int tw_scsi_eh_reset(struct scsi_cmnd *SCpnt)
|
|||
|
||||
retval = SUCCESS;
|
||||
out:
|
||||
spin_lock_irq(tw_dev->host->host_lock);
|
||||
return retval;
|
||||
} /* End tw_scsi_eh_reset() */
|
||||
|
||||
|
|
|
@ -170,7 +170,6 @@ MODULE_LICENSE("GPL");
|
|||
STATIC int NCR_700_queuecommand(struct scsi_cmnd *, void (*done)(struct scsi_cmnd *));
|
||||
STATIC int NCR_700_abort(struct scsi_cmnd * SCpnt);
|
||||
STATIC int NCR_700_bus_reset(struct scsi_cmnd * SCpnt);
|
||||
STATIC int NCR_700_dev_reset(struct scsi_cmnd * SCpnt);
|
||||
STATIC int NCR_700_host_reset(struct scsi_cmnd * SCpnt);
|
||||
STATIC void NCR_700_chip_setup(struct Scsi_Host *host);
|
||||
STATIC void NCR_700_chip_reset(struct Scsi_Host *host);
|
||||
|
@ -330,7 +329,6 @@ NCR_700_detect(struct scsi_host_template *tpnt,
|
|||
/* Fill in the missing routines from the host template */
|
||||
tpnt->queuecommand = NCR_700_queuecommand;
|
||||
tpnt->eh_abort_handler = NCR_700_abort;
|
||||
tpnt->eh_device_reset_handler = NCR_700_dev_reset;
|
||||
tpnt->eh_bus_reset_handler = NCR_700_bus_reset;
|
||||
tpnt->eh_host_reset_handler = NCR_700_host_reset;
|
||||
tpnt->can_queue = NCR_700_COMMAND_SLOTS_PER_HOST;
|
||||
|
@ -1959,34 +1957,31 @@ NCR_700_bus_reset(struct scsi_cmnd * SCp)
|
|||
printk(KERN_INFO "scsi%d (%d:%d) New error handler wants BUS reset, cmd %p\n\t",
|
||||
SCp->device->host->host_no, SCp->device->id, SCp->device->lun, SCp);
|
||||
scsi_print_command(SCp);
|
||||
|
||||
/* In theory, eh_complete should always be null because the
|
||||
* eh is single threaded, but just in case we're handling a
|
||||
* reset via sg or something */
|
||||
while(hostdata->eh_complete != NULL) {
|
||||
spin_lock_irq(SCp->device->host->host_lock);
|
||||
while (hostdata->eh_complete != NULL) {
|
||||
spin_unlock_irq(SCp->device->host->host_lock);
|
||||
msleep_interruptible(100);
|
||||
spin_lock_irq(SCp->device->host->host_lock);
|
||||
}
|
||||
|
||||
hostdata->eh_complete = &complete;
|
||||
NCR_700_internal_bus_reset(SCp->device->host);
|
||||
|
||||
spin_unlock_irq(SCp->device->host->host_lock);
|
||||
wait_for_completion(&complete);
|
||||
spin_lock_irq(SCp->device->host->host_lock);
|
||||
|
||||
hostdata->eh_complete = NULL;
|
||||
/* Revalidate the transport parameters of the failing device */
|
||||
if(hostdata->fast)
|
||||
spi_schedule_dv_device(SCp->device);
|
||||
return SUCCESS;
|
||||
}
|
||||
|
||||
STATIC int
|
||||
NCR_700_dev_reset(struct scsi_cmnd * SCp)
|
||||
{
|
||||
printk(KERN_INFO "scsi%d (%d:%d) New error handler wants device reset\n\t",
|
||||
SCp->device->host->host_no, SCp->device->id, SCp->device->lun);
|
||||
scsi_print_command(SCp);
|
||||
|
||||
return FAILED;
|
||||
spin_unlock_irq(SCp->device->host->host_lock);
|
||||
return SUCCESS;
|
||||
}
|
||||
|
||||
STATIC int
|
||||
|
@ -1996,8 +1991,13 @@ NCR_700_host_reset(struct scsi_cmnd * SCp)
|
|||
SCp->device->host->host_no, SCp->device->id, SCp->device->lun);
|
||||
scsi_print_command(SCp);
|
||||
|
||||
spin_lock_irq(SCp->device->host->host_lock);
|
||||
|
||||
NCR_700_internal_bus_reset(SCp->device->host);
|
||||
NCR_700_chip_reset(SCp->device->host);
|
||||
|
||||
spin_unlock_irq(SCp->device->host->host_lock);
|
||||
|
||||
return SUCCESS;
|
||||
}
|
||||
|
||||
|
|
Some files were not shown because too many files have changed in this diff Show more
Loading…
Reference in a new issue