diff -Nru a/Documentation/scsi/ChangeLog.megaraid b/Documentation/scsi/ChangeLog.megaraid --- /dev/null Wed Dec 31 16:00:00 1969 +++ b/Documentation/scsi/ChangeLog.megaraid Thu Apr 17 09:58:30 2003 @@ -0,0 +1,42 @@ +### Version 2.00.3 +Wed Jan 29 09:13:44 EST 200 - Atul Mukker +i. Change the handshake in ISR while acknowledging interrupts. Write the + valid interrupt pattern 0x10001234 as soon as it is read from the + outdoor register. In existing driver and on certain platform, invalid + command ids were being returned. + + Also, do not wait on status be become 0xFF, since FW can return this + status in certain circumstances. + + Initialize the numstatus field of mailbox to 0xFF so that we can wait + on this wait in next interrupt. Firmware does not change its value + unless there are some status to be posted + +ii. Specify the logical drive number while issuing the RESERVATION_STATUS + +iii. Reduce the default mailbox busy wait time from 300us to 10us. This is + done to avaoid a possible deadlock in FW because of longer bust waits. + +iv. The max outstanding commands are reduced to 126 because that't the + safest value on all FW. + +v. Number of sectors per IO are reduced to 128 (64kb), becuase FW needs + resources in special circumstances like check consistency, rebuilds + etc. + +vi. max_commands is no longer a module parameter because of iv. + +### Version: 2.00.2 +i. Intermediate release with kernel specific code + + +### Version: 2.00.1i +Wed Dec 4 14:34:51 EST 2002 - Atul Mukker +i. Making the older IO based controllers to work with this driver + + +### Version 2.00.1 +Fri Nov 15 10:59:44 EST 2002 - Atul Mukker +i. Release host lock before issuing internal command to reset + reservations in megaraid_reset() and reacquire after internal command + is completed. diff -Nru a/Documentation/scsi/dc395x.txt b/Documentation/scsi/dc395x.txt --- /dev/null Wed Dec 31 16:00:00 1969 +++ b/Documentation/scsi/dc395x.txt Sat Apr 26 14:17:46 2003 @@ -0,0 +1,72 @@ +README file for the dc395x SCSI driver +========================================== + +Status +------ +The driver has been tested with CD-R and CD-R/W drives. These should +be safe to use. Testing with hard disks has not been done to any +great degree and caution should be exercised if you want to attempt +to use this driver with hard disks. + +This is a 2.5 only driver. For a 2.4 driver please see the original +driver (which this driver started from) at +http://www.garloff.de/kurt/linux/dc395/ + +Problems, questions and patches should be submitted to the mailing +list. Details on the list, including archives, are available at +http://lists.twibble.org/mailman/listinfo/dc395x/ + +Parameters +---------- +The driver uses the settings from the EEPROM set in the SCSI BIOS +setup. If there is no EEPROM, the driver uses default values. +Both can be overriden by command line parameters (module or kernel +parameters). + +The syntax is as follows: + dc395x = AdapterID, SpeedIdx, DevMode, AdaptMode, Tags, DelayReset + +AdapterID : Host Adapter SCSI ID +SpeedIdx : 0,1,...7 = 20,13.3,10,8,6.7,5.8,5,4 MHz [ 7] +DevMode : Bitmap for Dev Cfg [63] +AdaptMode : Bitmap for Adapter Cfg [47] +Tags : The number of tags is 1<= 1. + +If you set AdapterID to -1, the adapter will use conservative +("safe") default settings instead; more precisely, dc395x=-1 is a +shortcut for dc395x=7,4,9,15,2,10 + +If you specify -2 for a value, it will be ignored. You don't need to +specify all six parameters. + +Copyright +--------- +The driver is free software. It is protected by the GNU General Public +License (GPL). Please read it, before using this driver. It should be +included in your kernel sources and with your distribution. It carries the +filename COPYING. If you don't have it, please ask me to send you one by +email. +Note: The GNU GPL says also something about warranty and liability. +Please be aware the following: While we do my best to provide a working and +reliable driver, there is a chance, that it will kill your valuable data. +We refuse to take any responsibility for that. The driver is provided as-is +and YOU USE IT AT YOUR OWN RESPONSIBILITY. diff -Nru a/Documentation/scsi/scsi_mid_low_api.txt b/Documentation/scsi/scsi_mid_low_api.txt --- a/Documentation/scsi/scsi_mid_low_api.txt Fri Feb 21 07:25:49 2003 +++ b/Documentation/scsi/scsi_mid_low_api.txt Mon Apr 21 07:42:33 2003 @@ -16,13 +16,13 @@ (SPI) controllers based on that company's 7xxx chip series. The aic7xxx LLD can be built into the kernel or loaded as a module. There can only be one aic7xxx LLD running in a Linux system but it may be controlling many -HBAs. These HBAs might be either on PCI daughterboards or built into +HBAs. These HBAs might be either on PCI daughter-boards or built into the motherboard (or both). Like most modern HBAs, each aic7xxx host -has its own PCI device address. [The one-to-one correspondance between +has its own PCI device address. [The one-to-one correspondence between a SCSI host and a PCI device is common but not required (e.g. with ISA or MCA adapters).] -This version of the document roughly matches linux kernel version 2.5.63 . +This version of the document roughly matches linux kernel version 2.5.67 . Documentation ============= @@ -33,14 +33,15 @@ (e.g. aic7xxx.txt). The SCSI mid-level is briefly described in scsi.txt (with a url to a document describing the SCSI subsystem in the lk 2.4 series). Two upper level drivers have documents in that directory: -st.txt (SCSI tape driver) and scsi-generic.txt . +st.txt (SCSI tape driver) and scsi-generic.txt (for the sg driver). Some documentation (or urls) for LLDs may be in the C source code or -in the same directory. For example to find a url about the USB mass -storage driver see the /usr/src/linux/drivers/usb/storage directory. +in the same directory as the C source code. For example to find a url +about the USB mass storage driver see the +/usr/src/linux/drivers/usb/storage directory. The Linux kernel source Documentation/DocBook/scsidrivers.tmpl file -refers to this file. With the appropriate DocBook toolset, this permits +refers to this file. With the appropriate DocBook tool-set, this permits users to generate html, ps and pdf renderings of information within this file (e.g. the interface functions). @@ -49,17 +50,15 @@ Traditionally a LLD 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 have more than two files. For example the -aic7xxx driver has separate files for generic and OS-specific code -(e.g. FreeBSD and Linux). Such drivers tend to have their own directory -under the drivers/scsi directory. +why this couldn't all be in one file; the header file is superfluous.] Some +drivers that have been ported to several operating systems have more than +two files. For example the aic7xxx driver has separate files for generic +and OS-specific code (e.g. FreeBSD and Linux). Such drivers tend to have +their own directory under the drivers/scsi directory. When a new LLD is being added to Linux, the following files (found in the -drivers/scsi directory) will need some attention: Makefile, Config.help and -Config.in . SCSI documentation is found in the Documentation/scsi directory -of the kernel source tree. It is probably best to study how existing LLDs -are organized. +drivers/scsi directory) will need some attention: Makefile and Kconfig . +It is probably best to study how existing LLDs are organized. As the 2.5 series development kernels evolve, changes are being introduced into this interface. An example of this is driver @@ -78,7 +77,8 @@ a) directly invoking functions supplied by the mid level b) passing a set of function pointers to a registration function supplied by the mid level. The mid level will then invoke these - functions at some point in the future + functions at some point in the future. The LLD will supply + implementations of these functions. c) direct access to instances of well known data structures maintained by the mid level @@ -86,7 +86,7 @@ supplied functions" below. Those functions in group b) are listed in a section entitled "Interface -functions" below. The function pointers are placed in the members of +functions" below. Their function pointers are placed in the members of "struct SHT", an instance of which is passed to scsi_register() [or scsi_register_host() in the passive initialization model]. Those interface functions that are not mandatory and that the LLD does not wish to supply @@ -97,34 +97,42 @@ Those instances in group c) are slowly being removed as they tend to be "racy" especially in a hotplug environment. +All functions defined within a LLD and all data defined at file scope +should be static. For example the slave_alloc() function in a LLD +called "xxx" could be defined as +"static int xxx_slave_alloc(struct scsi_device * sdev) { /* code */ }" + Hotplug initialization model ============================ In this model a LLD controls when SCSI hosts are introduced and removed from the SCSI subsystem. Hosts can be introduced as early as driver initialization and removed as late as driver shutdown. Typically a driver -will respond to a sysfs probe() callback that indicates a HBA is present -(e.g. a PCI device). After confirming it is a device that it wants to -control, it will initialize the HBA and then register a new host with the -SCSI mid level. +will respond to a sysfs probe() callback that indicates a HBA has been +detected. After confirming that the new device is one that the LLD wants +to control, the LLD will initialize the HBA and then register a new host +with the SCSI mid level. Hot unplugging a HBA that controls a disk which is processing SCSI commands on a mounted file system is an ugly situation. Issues with this scenario are still being worked through. The primary concern is the stability of the kernel (specifically the block and SCSI subsystems) since the effected disk can be "cleaned up" the next time it is seen. +In the sysfs model, a remove() callback indicates a HBA has disappeared. During LLD initialization the driver should register itself with the appropriate IO bus on which it expects to find HBA(s) (e.g. the PCI bus). This can probably be done via sysfs. Any driver parameters (especially -those that are writeable after the driver is loaded) could also be -registered with sysfs at this point. At the end of driver initialization -the SCSI mid level is typically not aware of its presence. +those that are writable after the driver is loaded) could also be +registered with sysfs at this point. The SCSI mid level first becomes +aware of a LLD when that LLD registers its first HBA. At some later time, the LLD becomes aware of a HBA and what follows is a typical sequence of calls between the LLD and the mid level. -This example shows 3 devices being found and 1 device not being found: +This example shows the mid level scanning the newly introduced HBA for 3 +scsi devices of which only the first 2 respond: +[HBA PROBE] LLD mid level LLD --- --------- --- scsi_register() --> @@ -136,9 +144,6 @@ slave_alloc() slave_configure() --> scsi_adjust_queue_depth() | - slave_alloc() - slave_configure() --> scsi_adjust_queue_depth() - | slave_alloc() ** slave_destroy() ** @@ -150,21 +155,40 @@ Here is the corresponding sequence when a host (HBA) is being removed: -LLD mid level ---- --------- -scsi_remove_host() -----+ - | - slave_destroy() - slave_destroy() - slave_destroy() -scsi_unregister() --> +[HBA REMOVE] +LLD mid level LLD +--- --------- --- +scsi_remove_host() ---------+ + | + slave_destroy() + slave_destroy() + release() --> scsi_unregister() It is practical for a LLD to keep track of struct Scsi_Host instances (a pointer is returned by scsi_register() ) and struct scsi_device instances (a pointer is passed as the parameter to slave_alloc() and slave_configure() ). Both classes of instances are "owned" by the mid-level. struct scsi_device instances are freed after slave_destroy(). -struct Scsi_Host instances are freed after scsi_unregister(). +struct Scsi_Host instances are freed within scsi_unregister(). + +TODO: +Descriptions, are the following correct? +[DEVICE hotplug] +LLD mid level LLD +--- --------- --- +scsi_add_device() ------+ + | + slave_alloc() + slave_configure() --> scsi_adjust_queue_depth() + +[DEVICE unplug] +LLD mid level LLD +--- --------- --- +scsi_set_device_offline() +scsi_remove_device() -------+ + | + slave_destroy() + Passive initialization model @@ -226,8 +250,7 @@ slave_destroy() release() --> scsi_unregister() -Both slave_destroy() and release() are optional. If they are not supplied -the mid level supplies default actions. +slave_destroy() is optional. The shortcoming of the "passive initialization model" is that host registration and de-registration are (typically) tied to LLD initialization @@ -238,39 +261,97 @@ Conventions =========== -First Linus's thoughts on C coding found in file Documentation/CodingStyle . +First, Linus's thoughts on C coding can be found in the file +Documentation/CodingStyle . -Next there is a movement to "outlaw" typedefs introducing synonyms for +Next, there is a movement to "outlaw" typedefs introducing synonyms for struct tags. Both can be still found in the SCSI subsystem, for example: "typedef struct SHT { ...} Scsi_Host_Template;" in hosts.h . In this -case "struct SHT" is preferred to "Scsi_Host_Template". +case "struct SHT" is preferred to "Scsi_Host_Template". [The poor naming +example was chosen with malevolent intent.] -Also C99 additions are encouraged to the extent they are supported +Also, C99 enhancements are encouraged to the extent they are supported by the relevant gcc compilers. So "//" style comments are encouraged were appropriate as are C99 style structure and array initializers. +Don't go too far, VLAs are not properly supported yet. + +Well written, tested and documented code, need not be re-formatted to +comply with the above conventions. For example, the aic7xxx driver +comes to Linux from FreeBSD and Adaptec's own labs. No doubt FreeBSD +and Adaptec have their own coding conventions. Mid level supplied functions ============================ These functions are supplied by the SCSI mid level for use by LLDs. -The names (i.e. entry points) of these functions are exported -so a LLD that is a module can access them when the SCSI -mid level is built into the kernel. The kernel will arrange for the -SCSI mid level to be loaded and initialized before any LLD +The names (i.e. entry points) of these functions are exported (in +scsi_syms.c) so a LLD that is a module can access them. The kernel will +arrange for the SCSI mid level to be loaded and initialized before any LLD is initialized. The functions below are listed alphabetically and their names all start with "scsi_". +Summary: + scsi_add_device - creates new scsi device (lu) instance + scsi_add_host - perform sysfs registration and SCSI bus scan. + scsi_add_timer - (re-)start timer on a SCSI command. + scsi_adjust_queue_depth - change the queue depth on a SCSI device + scsi_assign_lock - replace default host_lock with given lock + scsi_bios_ptable - return copy of block device's partition table + scsi_block_requests - prevent further commands being queued to given host + scsi_delete_timer - cancel timer on a SCSI command. + scsi_partsize - parse partition table into cylinders, heads + sectors + scsi_register - create and register a scsi host adapter instance. + scsi_register_host - register a low level host driver + scsi_remove_device - detach and remove a SCSI device + scsi_remove_host - detach and remove all SCSI devices owned by host + scsi_report_bus_reset - report scsi _bus_ reset observed + scsi_set_device - place device reference in host structure + scsi_set_device_offline - set device offline then flush its queue + scsi_to_pci_dma_dir - convert SCSI subsystem direction flag to PCI + scsi_to_sbus_dma_dir - convert SCSI subsystem direction flag to SBUS + scsi_track_queue_full - track successive QUEUE_FULL events + scsi_unblock_requests - allow further commands to be queued to given host + scsi_unregister - unregister and free memory used by host instance + scsi_unregister_host - unregister a low level host adapter driver + +Details: + +/** + * scsi_add_device - creates new scsi device (lu) instance + * @shost: pointer to scsi host instance + * @channel: channel number (rarely other than 0) + * @id: target id number + * @lun: logical unit number + * + * Returns pointer to new struct scsi_device instance or + * ERR_PTR(-ENODEV) (or some other bent pointer) if something is + * wrong (e.g. no lu responds at given address) + * + * Notes: This call is usually performed internally during a scsi + * bus scan when a HBA is added (i.e. scsi_add_host()). So it + * should only be called if the HBA becomes aware of a new scsi + * device (lu) after scsi_add_host() has completed. If successful + * this call we lead to slave_alloc() and slave_configure() callbacks + * into the LLD. + * + * Defined in: drivers/scsi/scsi_scan.c + **/ +struct scsi_device * scsi_add_device(struct Scsi_Host *shost, + unsigned int channel, + unsigned int id, unsigned int lun) + + /** * scsi_add_host - perform sysfs registration and SCSI bus scan. * @shost: pointer to scsi host instance - * @dev: pointer to struct device host instance of class type scsi - * (or related) + * @dev: pointer to struct device host instance * * Returns 0 on success, negative errno of failure (e.g. -ENOMEM) * * Notes: Only required in "hotplug initialization model" after a * successful call to scsi_register(). - * Defined in drivers/scsi/hosts.c + * + * Defined in: drivers/scsi/hosts.c **/ int scsi_add_host(struct Scsi_Host *shost, struct device * dev) @@ -283,10 +364,12 @@ * * Returns nothing * - * Notes: All commands issued by upper levels already have a timeout - * associated with them. A LLD can use this function to change + * Notes: Each scsi command has its own timer, and as it is added + * to the queue, we set up the timer. When the command completes, + * we cancel the timer. A LLD can use this function to change * the existing timeout value. - * Defined in drivers/scsi/scsi_error.c + * + * Defined in: drivers/scsi/scsi_error.c **/ void scsi_add_timer(Scsi_Cmnd *scmd, int timeout, void (*complete) (Scsi_Cmnd *)) @@ -295,10 +378,10 @@ /** * scsi_adjust_queue_depth - change the queue depth on a SCSI device * @SDpnt: pointer to SCSI device to change queue depth on - * @tagged: 0 - no tagged queueing - * MSG_SIMPLE_TAG - simple (unordered) tagged queueing - * MSG_ORDERED_TAG - ordered tagged queueing - * @tags Number of tags allowed if tagged queueing enabled, + * @tagged: 0 - no tagged queuing + * MSG_SIMPLE_TAG - simple (unordered) tagged queuing + * MSG_ORDERED_TAG - ordered tagged queuing + * @tags Number of tags allowed if tagged queuing enabled, * or number of commands the LLD can queue up * in non-tagged mode (as per cmd_per_lun). * @@ -309,7 +392,8 @@ * slave_destroy().] Can safely be invoked from interrupt code. Actual * queue depth change may be delayed until the next command is being * processed. - * Defined in drivers/scsi/scsi.c [see source code for more notes] + * + * Defined in: drivers/scsi/scsi.c [see source code for more notes] * **/ void scsi_adjust_queue_depth(struct scsi_device * SDpnt, int tagged, @@ -323,7 +407,7 @@ * * Returns nothing * - * Notes: Defined in drivers/scsi/hosts.h . + * Defined in: drivers/scsi/hosts.h . **/ void scsi_assign_lock(struct Scsi_Host *shost, spinlock_t *lock) @@ -332,10 +416,11 @@ * scsi_bios_ptable - return copy of block device's partition table * @dev: pointer to block device * - * Returns pointer to partition table, or NULL or failure + * Returns pointer to partition table, or NULL for failure * * Notes: Caller owns memory returned (free with kfree() ) - * Defined in drivers/scsi/scsicam.c + * + * Defined in: drivers/scsi/scsicam.c **/ unsigned char *scsi_bios_ptable(struct block_device *dev) @@ -349,7 +434,8 @@ * * Notes: There is no timer nor any other means by which the requests * get unblocked other than the LLD calling scsi_unblock_requests(). - * Defined in drivers/scsi/scsi_lib.c + * + * Defined in: drivers/scsi/scsi_lib.c **/ void scsi_block_requests(struct Scsi_Host * SHpnt) @@ -364,7 +450,8 @@ * Notes: All commands issued by upper levels already have a timeout * associated with them. A LLD can use this function to cancel the * timer. - * Defined in drivers/scsi/scsi_error.c + * + * Defined in: drivers/scsi/scsi_error.c **/ int scsi_delete_timer(Scsi_Cmnd *scmd) @@ -380,10 +467,11 @@ * Returns 0 on success, -1 on failure * * Notes: Caller owns memory returned (free with kfree() ) - * Defined in drivers/scsi/scsicam.c + * + * Defined in: drivers/scsi/scsicam.c **/ int scsi_partsize(unsigned char *buf, unsigned long capacity, - unsigned int *cyls, unsigned int *hds, unsigned int *secs) + unsigned int *cyls, unsigned int *hds, unsigned int *secs) /** @@ -398,7 +486,8 @@ * this host has _not_ yet been done. * The hostdata array (by default zero length) is a per host scratch * area for the LLD. - * Defined in drivers/scsi/hosts.c . + * + * Defined in: drivers/scsi/hosts.c . **/ struct Scsi_Host * scsi_register(struct SHT *, int xtr_bytes) @@ -415,12 +504,30 @@ * function by including the scsi_module.c file. * This function is deprecated, use the "hotplug initialization * model" instead. - * Defined in drivers/scsi/hosts.c . + * + * Defined in: drivers/scsi/hosts.c . **/ int scsi_register_host(Scsi_Host_Template *shost_tp) /** + * scsi_remove_device - detach and remove a SCSI device + * @sdev: a pointer to a scsi device instance + * + * Returns value: 0 on success, -EINVAL if device not attached + * + * Notes: If a LLD becomes aware that a scsi device (lu) has + * been removed but its host is still present then it can request + * the removal of that scsi device. If successful this call will + * lead to the slave_destroy() callback being invoked. sdev is an + * invalid pointer after this call. + * + * Defined in: drivers/scsi/scsi_scan.c . + **/ +int scsi_remove_device(struct scsi_device *sdev) + + +/** * scsi_remove_host - detach and remove all SCSI devices owned by host * @shost: a pointer to a scsi host instance * @@ -429,7 +536,8 @@ * Notes: Should only be invoked if the "hotplug initialization * model" is being used. It should be called _prior_ to * scsi_unregister(). - * Defined in drivers/scsi/hosts.c . + * + * Defined in: drivers/scsi/hosts.c . **/ int scsi_remove_host(struct Scsi_Host *shost) @@ -446,7 +554,8 @@ * mid level itself don't need to call this, but there should be * no harm. The main purpose of this is to make sure that a * CHECK_CONDITION is properly treated. - * Defined in drivers/scsi/scsi_lib.c . + * + * Defined in: drivers/scsi/scsi_lib.c . **/ void scsi_report_bus_reset(struct Scsi_Host * shost, int channel) @@ -458,12 +567,27 @@ * * Returns nothing * - * Notes: Defined in drivers/scsi/hosts.h . + * Defined in: drivers/scsi/hosts.h . **/ void scsi_set_device(struct Scsi_Host * shost, struct device * dev) /** + * scsi_set_device_offline - set device offline then flush its queue + * @sdev: a pointer to a scsi device instance to be set offline + * + * Returns nothing + * + * Notes: Commands that are currently active on the scsi device have + * their timers cancelled and are transferred to the host's + * "eh" list for cancellation. + + * Defined in: drivers/scsi/scsi.c . + **/ +void scsi_set_device_offline(struct scsi_device * sdev) + + +/** * scsi_to_pci_dma_dir - convert SCSI subsystem direction flag to PCI * @scsi_data_direction: SCSI subsystem direction flag * @@ -472,12 +596,26 @@ * PCI_DMA_BIDIRECTIONAL given SCSI_DATA_UNKNOWN * else returns PCI_DMA_NONE * - * Notes: Defined in drivers/scsi/scsi.h . + * Defined in: drivers/scsi/scsi.h . **/ int scsi_to_pci_dma_dir(unsigned char scsi_data_direction) /** + * scsi_to_sbus_dma_dir - convert SCSI subsystem direction flag to SBUS + * @scsi_data_direction: SCSI subsystem direction flag + * + * Returns SBUS_DMA_TODEVICE given SCSI_DATA_WRITE, + * SBUS_DMA_FROMDEVICE given SCSI_DATA_READ + * SBUS_DMA_BIDIRECTIONAL given SCSI_DATA_UNKNOWN + * else returns SBUS_DMA_NONE + * + * Defined in: drivers/scsi/scsi.h . + **/ +int scsi_to_sbus_dma_dir(unsigned char scsi_data_direction) + + +/** * scsi_track_queue_full - track successive QUEUE_FULL events on given * device to determine if and when there is a need * to adjust the queue depth on the device. @@ -492,7 +630,8 @@ * * Notes: LLDs may call this at any time and we will do "The Right * Thing"; interrupt context safe. - * Defined in drivers/scsi/scsi.c . + * + * Defined in: drivers/scsi/scsi.c . **/ int scsi_track_queue_full(Scsi_Device *SDptr, int depth) @@ -504,22 +643,22 @@ * * Returns nothing * - * Notes: Defined in drivers/scsi/scsi_lib.c . + * Defined in: drivers/scsi/scsi_lib.c . **/ void scsi_unblock_requests(struct Scsi_Host * SHpnt) /** - * scsi_unregister - unregister and free host + * scsi_unregister - unregister and free memory used by host instance * @shp: pointer to scsi host instance to unregister. - * N.B. shp points to freed memory on return * * Returns nothing * * Notes: Should only be invoked if the "hotplug initialization * model" is being used. It should be called _after_ - * scsi_remove_host(). - * Defined in drivers/scsi/hosts.c . + * scsi_remove_host(). The shp pointer is invalid after this call. + * + * Defined in: drivers/scsi/hosts.c . **/ void scsi_unregister(struct Scsi_Host * shp) @@ -532,11 +671,13 @@ * * Notes: Should only be invoked if the "passive initialization * model" is being used. Notice this is a _driver_ rather than - * HBA deregistration function. Most older drivers call this - * function by including the scsi_module.c file. - * This function is deprecated, use the "hotplug initialization + * HBA deregistration function. So if there are multiple HBAs + * associated with the given template, they are each removed. Most + * older drivers call this function by including the scsi_module.c + * file. This function is deprecated, use the "hotplug initialization * model" instead. - * Defined in drivers/scsi/hosts.c . + * + * Defined in: drivers/scsi/hosts.c . **/ int scsi_unregister_host(Scsi_Host_Template *shost_tp) @@ -567,6 +708,25 @@ The interface functions are listed below in alphabetical order. +Summary: + bios_param - fetch head, sector, cylinder info for a disk + command - send scsi command to device, wait for reply + detect - detects HBAs this driver wants to control + eh_abort_handler - abort given command + eh_bus_reset_handler - issue SCSI bus reset + eh_device_reset_handler - issue SCSI device reset + eh_host_reset_handler - reset host (host bus adapter) + eh_strategy_handler - driver supplied alternate to scsi_unjam_host() + info - supply information about given host + ioctl - driver can respond to ioctls + proc_info - supports /proc/scsi/{driver_name}/{host_no} + queuecommand - queue scsi command, invoke 'done' on completion + release - release all resources associated with given host + slave_alloc - prior to any commands being sent to a new device + slave_configure - driver fine tuning for given device after attach + slave_destroy - given device is about to be shut down + +Details: /** * bios_param - fetch head, sector, cylinder info for a disk @@ -588,6 +748,8 @@ * if this function is not provided. The params array is * pre-initialized with made up values just in case this function * doesn't output anything. + * + * Defined in: LLD **/ int bios_param(struct scsi_device * sdev, struct block_device *bdev, sector_t capacity, int params[3]); @@ -609,6 +771,8 @@ * * Notes: Drivers tend to be dropping support for this function and * supporting queuecommand() instead. + * + * Defined in: LLD **/ int command(struct scsi_cmnd * scp); @@ -629,6 +793,8 @@ * driver. Upper level drivers (e.g. sd) may not (yet) be present. * For each host found, this method should call scsi_register() * [see hosts.c]. + * + * Defined in: LLD **/ int detect(struct SHT * shtp); @@ -646,42 +812,48 @@ * * Notes: Invoked from scsi_eh thread. No other commands will be * queued on current host during eh. + * + * Defined in: LLD **/ int eh_abort_handler(struct scsi_cmnd * scp); /** - * eh_device_reset_handler - issue SCSI device reset - * @scp: identifies SCSI device to be reset + * eh_bus_reset_handler - issue SCSI bus reset + * @scp: SCSI bus that contains this device should be reset * * Returns SUCCESS if command aborted else FAILED * * Required: no * - * Locks: struct Scsi_Host::host_lock held (with irqsave) on entry + * Locks: struct Scsi_Host::host_lock held (with irqsave) on entry * and assumed to be held on return. * * Notes: Invoked from scsi_eh thread. No other commands will be * queued on current host during eh. + * + * Defined in: LLD **/ - int eh_device_reset_handler(struct scsi_cmnd * scp); + int eh_bus_reset_handler(struct scsi_cmnd * scp); /** - * eh_bus_reset_handler - issue SCSI bus reset - * @scp: SCSI bus that contains this device should be reset + * eh_device_reset_handler - issue SCSI device reset + * @scp: identifies SCSI device to be reset * * Returns SUCCESS if command aborted else FAILED * * Required: no * - * Locks: struct Scsi_Host::host_lock held (with irqsave) on entry + * Locks: struct Scsi_Host::host_lock held (with irqsave) on entry * and assumed to be held on return. * * Notes: Invoked from scsi_eh thread. No other commands will be * queued on current host during eh. + * + * Defined in: LLD **/ - int eh_bus_reset_handler(struct scsi_cmnd * scp); + int eh_device_reset_handler(struct scsi_cmnd * scp); /** @@ -701,6 +873,8 @@ * _device_reset_, _bus_reset_ or this eh handler function are * defined (or they all return FAILED) then the device in question * will be set offline whenever eh is invoked. + * + * Defined in: LLD **/ int eh_host_reset_handler(struct scsi_cmnd * scp); @@ -717,6 +891,8 @@ * * Notes: Invoked from scsi_eh thread. Driver supplied alternate to * scsi_unjam_host() found in scsi_error.c + * + * Defined in: LLD **/ int eh_strategy_handler(struct Scsi_Host * shp); @@ -745,6 +921,8 @@ * each host's "info" (or name) for the driver it is registering. * Also if proc_info() is not supplied, the output of this function * is used instead. + * + * Defined in: LLD **/ const char * info(struct Scsi_Host * shp); @@ -776,6 +954,8 @@ * numbers when this function is not supplied by the driver. * Unfortunately some applications expect -EINVAL and react badly * when -ENOTTY is returned; stick with -EINVAL. + * + * Defined in: LLD **/ int ioctl(struct scsi_device *sdp, int cmd, void *arg); @@ -803,6 +983,8 @@ * Locks: none held * * Notes: Driven from scsi_proc.c which interfaces to proc_fs + * + * Defined in: LLD **/ int proc_info(char * buffer, char ** start, off_t offset, int length, int hostno, int writeto1_read0); @@ -840,6 +1022,8 @@ * 'done' callback is invoked, then the LLD driver should * perform autosense and fill in the struct scsi_cmnd::sense_buffer * array. + * + * Defined in: LLD **/ int queuecommand(struct scsi_cmnd * scp, void (*done)(struct scsi_cmnd *)); @@ -849,16 +1033,20 @@ * release - release all resources associated with given host * @shp: host to be released. * - * Return value ignored. + * Return value ignored (could soon be a function returning void). * - * Required: no + * Required: yes (see notes) * - * Locks: lock_kernel() active on entry and expected to be active - * on return. + * Locks: none held * * Notes: Invoked from mid level's scsi_unregister_host(). - * This function should call scsi_unregister(shp) [found in hosts.c] - * prior to returning. + * LLD's implementation of this function should call + * scsi_unregister(shp) prior to returning. + * If not supplied mid-level [in hosts.c] supplies its own + * implementation (see scsi_host_legacy_release()) which is for old + * ISA adapters so it is best not to use it. + * + * Defined in: LLD **/ int release(struct Scsi_Host * shp); @@ -882,12 +1070,14 @@ * slave_configure() will be called while if a device is not found * slave_destroy() is called. * For more details see the hosts.h file. + * + * Defined in: LLD **/ int slave_alloc(struct scsi_device *sdp); /** - * slave_configure - driver fine tuning for give device just after it + * slave_configure - driver fine tuning for given device just after it * has been first scanned (i.e. it responded to an * INQUIRY) * @sdp: device that has just been attached @@ -908,6 +1098,8 @@ * value on behalf of the given device. If this function is * supplied then its implementation must call * scsi_adjust_queue_depth(). + * + * Defined in: LLD **/ int slave_configure(struct scsi_device *sdp); @@ -930,6 +1122,8 @@ * could be re-attached in the future in which case a new instance * of struct scsi_device would be supplied by future slave_alloc() * and slave_configure() calls.] + * + * Defined in: LLD **/ void slave_destroy(struct scsi_device *sdp); @@ -943,14 +1137,20 @@ typically initialized as a file scope static in a driver's header file. That way members that are not explicitly initialized will be set to 0 or NULL. Member of interest: - name - name of driver (should only use characters that are - permitted in a unix file name) - proc_name - name used in "/proc/scsi//" + name - name of driver (may contain spaces, please limit to + less than 80 characters) + proc_name - name used in "/proc/scsi//" and + by sysfs in one of its "drivers" directories. Hence + "proc_name" should only contain characters acceptable + to a Unix file name. + (*release)() - should be defined by all LLDs as the default (legacy) + implementation is only appropriate for ISA adapters). The structure is defined and commented in hosts.h *** In extreme situations a single driver may have several instances if it controls several different classes of hardware (e.g. the - advansys driver handles both ISA and PCI cards). + advansys driver handles both ISA and PCI cards and has a separate + instance of struct SHT for each). struct Scsi_Host ---------------- @@ -982,24 +1182,29 @@ 0->use bounce buffers if data is in high memory hostt - pointer to driver's struct SHT from which this struct Scsi_Host instance was spawned - host_queue - deceptively named pointer to the start of a double linked - list of struct scsi_device instances that belong to this - host. + sh_list - a double linked list of pointers to all struct Scsi_Host + instances (currently ordered by ascending host_no) + my_devices - a double linked list of pointers to struct scsi_device + instances that belong to this host. + hostdata[0] - area reserved for LLD at end of struct Scsi_Host. Size + is set by the second argument (named 'xtr_bytes') to + scsi_register(). The structure is defined in hosts.h struct scsi_device ------------------ Generally, there is one instance of this structure for each SCSI logical unit on a host. Scsi devices are uniquely identified within a host by bus number, -target id and logical unit number (lun). +cahnnel number, target id and logical unit number (lun). The structure is defined in scsi.h struct scsi_cmnd ---------------- -Instances of this structure convey SCSI commands to the LLD. -Each SCSI device has a pool of struct scsi_cmnd instances whose size -is determined by scsi_adjust_queue_depth() (or struct Scsi_Host::cmd_per_lun). -There will be at least one instance of struct scsi_cmnd for each SCSI device. +Instances of this structure convey SCSI commands to the LLD and responses +back to the mid level. The SCSI mid level will ensure that no more SCSI +commands become queued against the LLD than are indicated by +scsi_adjust_queue_depth() (or struct Scsi_Host::cmd_per_lun). There will +be at least one instance of struct scsi_cmnd available for each SCSI device. The structure is defined in scsi.h @@ -1033,9 +1238,9 @@ Either way, the mid level decides whether the LLD has performed autosense by checking struct scsi_cmnd::sense_buffer[0] . If this -byte has an upper nibble of 7 then autosense is assumed to have taken -place. If it has another value (and this byte is initialized to 0 before -each command) then the mid level will issue a REQUEST SENSE command. +byte has an upper nibble of 7 (or 0xf) then autosense is assumed to have +taken place. If it has another value (and this byte is initialized to 0 +before each command) then the mid level will issue a REQUEST SENSE command. In the presence of queued commands the "nexus" that maintains sense buffer data from the command that failed until a following REQUEST SENSE @@ -1076,4 +1281,4 @@ Douglas Gilbert dgilbert@interlog.com -21st February 2003 +19th April 2003 diff -Nru a/MAINTAINERS b/MAINTAINERS --- a/MAINTAINERS Thu Apr 17 12:34:56 2003 +++ b/MAINTAINERS Sat Apr 26 16:12:25 2003 @@ -505,6 +505,17 @@ L: linux-hams@vger.kernel.org S: Maintained +DC395x SCSI driver +P: Oliver Neukum +M: oliver@neukum.name +P: Ali Akcaagac +M: aliakc@web.de +P: Jamie Lenehan +M: lenehan@twibble.org +W: http://twibble.org/dist/dc395x/ +L: http://lists.twibble.org/mailman/listinfo/dc395x/ +S: Maintained + DC390/AM53C974 SCSI driver P: Kurt Garloff M: garloff@suse.de @@ -651,9 +662,11 @@ S: Maintained ETHERNET BRIDGE +P: Stephen Hemminger +M: shemminger@osdl.org L: bridge@math.leidenuniv.nl W: http://bridge.sourceforge.net/ -S: Unmaintained +S: Maintained ETHERTEAM 16I DRIVER P: Mika Kuoppala diff -Nru a/Makefile b/Makefile --- a/Makefile Sat Apr 19 19:39:07 2003 +++ b/Makefile Sun Apr 27 04:31:50 2003 @@ -1,7 +1,7 @@ VERSION = 2 PATCHLEVEL = 5 SUBLEVEL = 68 -EXTRAVERSION = +EXTRAVERSION = -bk8 # *DOCUMENTATION* # To see a list of typical targets execute "make help" diff -Nru a/arch/alpha/Kconfig b/arch/alpha/Kconfig --- a/arch/alpha/Kconfig Tue Apr 15 12:43:41 2003 +++ b/arch/alpha/Kconfig Sun Apr 20 12:56:50 2003 @@ -291,7 +291,7 @@ VESA. If you have PCI, say Y, otherwise N. The PCI-HOWTO, available from - , contains valuable + , contains valuable information about which PCI hardware does work under Linux and which doesn't. @@ -514,7 +514,7 @@ See also the , , , and the SMP-HOWTO available at - . + . If you don't know what to do here, say N. @@ -688,7 +688,7 @@ want to say Y here. Information about ELF is contained in the ELF HOWTO available from - . + . If you find that after upgrading from Linux kernel 1.2 and saying Y here, you still can't run any ELF binaries (they just crash), then @@ -710,7 +710,7 @@ programs that need an interpreter to run like Java, Python or Emacs-Lisp. It's also useful if you often run DOS executables under the Linux DOS emulator DOSEMU (read the DOSEMU-HOWTO, available from - ). Once you have + ). Once you have registered such a binary class with the kernel, you can start one of those programs simply by typing in its name at a shell prompt; Linux will automatically feed it to the correct interpreter. @@ -862,7 +862,7 @@ ---help--- If you have a CD-ROM drive that is neither SCSI nor IDE/ATAPI, say Y here, otherwise N. Read the CD-ROM-HOWTO, available from - . + . Note that the answer to this question doesn't directly affect the kernel: saying N will just cause the configurator to skip all @@ -912,7 +912,7 @@ interrupt and DMA channel), because you will be asked for it. You want to read the Sound-HOWTO, available from - . General information about + . General information about the modular sound system is contained in the files . The file contains some slightly diff -Nru a/arch/alpha/kernel/core_irongate.c b/arch/alpha/kernel/core_irongate.c --- a/arch/alpha/kernel/core_irongate.c Tue Feb 18 05:29:57 2003 +++ b/arch/alpha/kernel/core_irongate.c Sun Apr 20 09:14:40 2003 @@ -14,6 +14,7 @@ #include #include #include +#include #include #include diff -Nru a/arch/alpha/kernel/core_marvel.c b/arch/alpha/kernel/core_marvel.c --- a/arch/alpha/kernel/core_marvel.c Sat Feb 15 04:55:38 2003 +++ b/arch/alpha/kernel/core_marvel.c Thu Apr 24 00:15:06 2003 @@ -452,7 +452,6 @@ /* With multiple PCI busses, we play with I/O as physical addrs. */ ioport_resource.end = ~0UL; - iomem_resource.end = ~0UL; /* PCI DMA Direct Mapping is 1GB at 2GB. */ __direct_map_base = 0x80000000; diff -Nru a/arch/alpha/kernel/core_mcpcia.c b/arch/alpha/kernel/core_mcpcia.c --- a/arch/alpha/kernel/core_mcpcia.c Fri Sep 6 05:36:45 2002 +++ b/arch/alpha/kernel/core_mcpcia.c Thu Apr 24 00:15:06 2003 @@ -407,7 +407,6 @@ { /* With multiple PCI busses, we play with I/O as physical addrs. */ ioport_resource.end = ~0UL; - iomem_resource.end = ~0UL; /* Allocate hose 0. That's the one that all the ISA junk hangs off of, from which we'll be registering stuff here in a bit. diff -Nru a/arch/alpha/kernel/core_titan.c b/arch/alpha/kernel/core_titan.c --- a/arch/alpha/kernel/core_titan.c Sat Feb 15 04:55:54 2003 +++ b/arch/alpha/kernel/core_titan.c Thu Apr 24 00:15:06 2003 @@ -412,7 +412,6 @@ /* With multiple PCI busses, we play with I/O as physical addrs. */ ioport_resource.end = ~0UL; - iomem_resource.end = ~0UL; /* PCI DMA Direct Mapping is 1GB at 2GB. */ __direct_map_base = 0x80000000; diff -Nru a/arch/alpha/kernel/core_tsunami.c b/arch/alpha/kernel/core_tsunami.c --- a/arch/alpha/kernel/core_tsunami.c Thu Jan 16 16:01:37 2003 +++ b/arch/alpha/kernel/core_tsunami.c Thu Apr 24 00:15:06 2003 @@ -390,7 +390,6 @@ #endif /* With multiple PCI busses, we play with I/O as physical addrs. */ ioport_resource.end = ~0UL; - iomem_resource.end = ~0UL; /* Find how many hoses we have, and initialize them. TSUNAMI and TYPHOON can have 2, but might only have 1 (DS10). */ diff -Nru a/arch/alpha/kernel/core_wildfire.c b/arch/alpha/kernel/core_wildfire.c --- a/arch/alpha/kernel/core_wildfire.c Mon Dec 30 07:03:59 2002 +++ b/arch/alpha/kernel/core_wildfire.c Thu Apr 24 00:15:06 2003 @@ -309,7 +309,6 @@ /* With multiple PCI buses, we play with I/O as physical addrs. */ ioport_resource.end = ~0UL; - iomem_resource.end = ~0UL; /* Probe the hardware for info about configuration. */ diff -Nru a/arch/alpha/kernel/irq.c b/arch/alpha/kernel/irq.c --- a/arch/alpha/kernel/irq.c Sat Mar 8 14:50:43 2003 +++ b/arch/alpha/kernel/irq.c Mon Apr 21 10:00:46 2003 @@ -45,7 +45,10 @@ * Special irq handlers. */ -void no_action(int cpl, void *dev_id, struct pt_regs *regs) { } +irqreturn_t no_action(int cpl, void *dev_id, struct pt_regs *regs) +{ + return IRQ_NONE; +} /* * Generic no controller code @@ -414,7 +417,7 @@ } int -request_irq(unsigned int irq, void (*handler)(int, void *, struct pt_regs *), +request_irq(unsigned int irq, irqreturn_t (*handler)(int, void *, struct pt_regs *), unsigned long irqflags, const char * devname, void *dev_id) { int retval; diff -Nru a/arch/alpha/kernel/proto.h b/arch/alpha/kernel/proto.h --- a/arch/alpha/kernel/proto.h Tue Apr 15 10:38:00 2003 +++ b/arch/alpha/kernel/proto.h Mon Apr 21 10:00:46 2003 @@ -1,4 +1,5 @@ #include +#include /* Prototypes of functions used across modules here in this directory. */ @@ -128,7 +129,7 @@ /* extern void reset_for_srm(void); */ /* time.c */ -extern void timer_interrupt(int irq, void *dev, struct pt_regs * regs); +extern irqreturn_t timer_interrupt(int irq, void *dev, struct pt_regs * regs); extern void common_init_rtc(void); extern unsigned long est_cycle_freq; diff -Nru a/arch/alpha/kernel/setup.c b/arch/alpha/kernel/setup.c --- a/arch/alpha/kernel/setup.c Tue Apr 15 10:58:12 2003 +++ b/arch/alpha/kernel/setup.c Sun Apr 20 09:14:40 2003 @@ -32,11 +32,7 @@ #include #include #include - -#ifdef CONFIG_BLK_DEV_INITRD -#include -#endif - +#include #ifdef CONFIG_MAGIC_SYSRQ #include #include diff -Nru a/arch/alpha/kernel/srmcons.c b/arch/alpha/kernel/srmcons.c --- a/arch/alpha/kernel/srmcons.c Mon Jan 20 09:38:36 2003 +++ b/arch/alpha/kernel/srmcons.c Thu Apr 24 03:30:40 2003 @@ -318,11 +318,11 @@ spin_unlock_irqrestore(&srmcons_callback_lock, flags); } -static kdev_t -srm_console_device(struct console *co) +static struct tty_driver * +srm_console_device(struct console *co, int *index) { - return mk_kdev(srmcons_driver.major, - srmcons_driver.minor_start + co->index); + *index = co->index; + return &srmcons_driver; } static int __init diff -Nru a/arch/alpha/kernel/time.c b/arch/alpha/kernel/time.c --- a/arch/alpha/kernel/time.c Thu Apr 3 14:49:57 2003 +++ b/arch/alpha/kernel/time.c Mon Apr 21 10:00:46 2003 @@ -94,7 +94,7 @@ * timer_interrupt() needs to keep up the real-time clock, * as well as call the "do_timer()" routine every clocktick */ -void timer_interrupt(int irq, void *dev, struct pt_regs * regs) +irqreturn_t timer_interrupt(int irq, void *dev, struct pt_regs * regs) { unsigned long delta; __u32 now; @@ -139,6 +139,7 @@ } write_sequnlock(&xtime_lock); + return IRQ_HANDLED; } void diff -Nru a/arch/alpha/mm/init.c b/arch/alpha/mm/init.c --- a/arch/alpha/mm/init.c Wed Jan 8 12:37:27 2003 +++ b/arch/alpha/mm/init.c Sat Apr 19 23:22:41 2003 @@ -66,19 +66,9 @@ pte_t * pte_alloc_one_kernel(struct mm_struct *mm, unsigned long address) { - pte_t *pte; - long timeout = 10; - - retry: - pte = (pte_t *) __get_free_page(GFP_KERNEL); + pte_t *pte = (pte_t *)__get_free_page(GFP_KERNEL|__GFP_REPEAT); if (pte) clear_page(pte); - else if (--timeout >= 0) { - current->state = TASK_UNINTERRUPTIBLE; - schedule_timeout(HZ); - goto retry; - } - return pte; } diff -Nru a/arch/alpha/mm/numa.c b/arch/alpha/mm/numa.c --- a/arch/alpha/mm/numa.c Tue Feb 18 05:31:01 2003 +++ b/arch/alpha/mm/numa.c Sun Apr 20 09:14:40 2003 @@ -12,9 +12,7 @@ #include #include #include -#ifdef CONFIG_BLK_DEV_INITRD -#include -#endif +#include #include #include diff -Nru a/arch/arm/Kconfig b/arch/arm/Kconfig --- a/arch/arm/Kconfig Tue Apr 15 07:31:47 2003 +++ b/arch/arm/Kconfig Sun Apr 20 12:56:50 2003 @@ -445,7 +445,7 @@ VESA. If you have PCI, say Y, otherwise N. The PCI-HOWTO, available from - , contains valuable + , contains valuable information about which PCI hardware does work under Linux and which doesn't. @@ -459,7 +459,7 @@ VESA. If you have PCI, say Y, otherwise N. The PCI-HOWTO, available from - , contains valuable + , contains valuable information about which PCI hardware does work under Linux and which doesn't. @@ -717,7 +717,7 @@ want to say Y here. Information about ELF is contained in the ELF HOWTO available from - . + . If you find that after upgrading from Linux kernel 1.2 and saying Y here, you still can't run any ELF binaries (they just crash), then @@ -739,7 +739,7 @@ programs that need an interpreter to run like Java, Python or Emacs-Lisp. It's also useful if you often run DOS executables under the Linux DOS emulator DOSEMU (read the DOSEMU-HOWTO, available from - ). Once you have + ). Once you have registered such a binary class with the kernel, you can start one of those programs simply by typing in its name at a shell prompt; Linux will automatically feed it to the correct interpreter. @@ -770,7 +770,7 @@ page on the WWW at and the Battery Powered Linux mini-HOWTO, available from - . + . Note that, even if you say N here, Linux on the x86 architecture will issue the hlt instruction if nothing is to be done, thereby @@ -809,7 +809,7 @@ In order to use APM, you will need supporting software. For location and more information, read and the Battery Powered Linux mini-HOWTO, available from - . + . This driver does not spin down disk drives (see the hdparm(8) manpage ("man 8 hdparm") for that), and it doesn't turn off @@ -1063,7 +1063,7 @@ interrupt and DMA channel), because you will be asked for it. You want to read the Sound-HOWTO, available from - . General information about + . General information about the modular sound system is contained in the files . The file contains some slightly diff -Nru a/arch/arm/boot/compressed/head-xscale.S b/arch/arm/boot/compressed/head-xscale.S --- a/arch/arm/boot/compressed/head-xscale.S Tue Apr 15 08:12:47 2003 +++ b/arch/arm/boot/compressed/head-xscale.S Mon Apr 21 04:10:46 2003 @@ -35,7 +35,7 @@ mcr p15, 0, r0, c1, c0, 0 #ifdef CONFIG_ARCH_IQ80321 - orr pc, pc, #0xa0000000 + orr pc, pc, #PHYS_OFFSET @ jump to physical memory if we are not there. nop mov r7, #MACH_TYPE_IQ80321 #endif diff -Nru a/arch/arm/kernel/process.c b/arch/arm/kernel/process.c --- a/arch/arm/kernel/process.c Tue Mar 4 16:50:09 2003 +++ b/arch/arm/kernel/process.c Mon Apr 21 15:43:40 2003 @@ -2,7 +2,7 @@ * linux/arch/arm/kernel/process.c * * Copyright (C) 1996-2000 Russell King - Converted to ARM. - * Origional Copyright (C) 1995 Linus Torvalds + * Original Copyright (C) 1995 Linus Torvalds * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License version 2 as diff -Nru a/arch/arm/kernel/setup.c b/arch/arm/kernel/setup.c --- a/arch/arm/kernel/setup.c Tue Mar 4 16:48:44 2003 +++ b/arch/arm/kernel/setup.c Sun Apr 20 09:14:40 2003 @@ -13,7 +13,7 @@ #include #include #include -#include +#include #include #include #include diff -Nru a/arch/arm/mach-clps711x/fortunet.c b/arch/arm/mach-clps711x/fortunet.c --- a/arch/arm/mach-clps711x/fortunet.c Sun Nov 17 07:31:08 2002 +++ b/arch/arm/mach-clps711x/fortunet.c Sun Apr 20 09:14:40 2003 @@ -22,7 +22,7 @@ #include #include #include -#include +#include #include #include diff -Nru a/arch/arm/mach-iop3xx/iop321-pci.c b/arch/arm/mach-iop3xx/iop321-pci.c --- a/arch/arm/mach-iop3xx/iop321-pci.c Tue Apr 15 08:12:47 2003 +++ b/arch/arm/mach-iop3xx/iop321-pci.c Mon Apr 21 04:16:16 2003 @@ -212,13 +212,13 @@ switch (nr) { case 0: - res[0].start = IOP321_PCI_LOWER_IO + 0x6e000000; - res[0].end = IOP321_PCI_LOWER_IO + 0x6e00ffff; + res[0].start = IOP321_PCI_IO_BASE + 0x6e000000; + res[0].end = IOP321_PCI_IO_BASE + IOP321_PCI_IO_SIZE-1 + 0x6e000000; res[0].name = "PCI IO Primary"; res[0].flags = IORESOURCE_IO; - res[1].start = IOP321_PCI_LOWER_MEM; - res[1].end = IOP321_PCI_LOWER_MEM + IOP321_PCI_WINDOW_SIZE; + res[1].start = IOP321_PCI_MEM_BASE; + res[1].end = IOP321_PCI_MEM_BASE + IOP321_PCI_MEM_SIZE; res[1].name = "PCI Memory Primary"; res[1].flags = IORESOURCE_MEM; break; diff -Nru a/arch/arm/mach-iop3xx/iq80310-time.c b/arch/arm/mach-iop3xx/iq80310-time.c --- a/arch/arm/mach-iop3xx/iq80310-time.c Tue Apr 1 03:16:51 2003 +++ b/arch/arm/mach-iop3xx/iq80310-time.c Mon Apr 21 15:43:40 2003 @@ -101,7 +101,7 @@ * * Since the timer interrupt is cascaded through the CPLD and * the 80312 and the demux code calls do_IRQ, the irq count is - * going to be atleast 2 when we get here and this will cause the + * going to be at least 2 when we get here and this will cause the * kernel to increment the system tick counter even if we're * idle. This causes it to look like there's always 100% system * time, which is not the case. To get around it, we just decrement diff -Nru a/arch/arm/mach-iop3xx/mm-321.c b/arch/arm/mach-iop3xx/mm-321.c --- a/arch/arm/mach-iop3xx/mm-321.c Tue Apr 15 08:12:47 2003 +++ b/arch/arm/mach-iop3xx/mm-321.c Mon Apr 21 15:43:40 2003 @@ -1,7 +1,7 @@ /* * linux/arch/arm/mach-iop3xx/mm.c * - * Low level memory intialization for IOP321 based systems + * Low level memory initialization for IOP321 based systems * * Author: Rory Bolt * Copyright (C) 2002 Rory Bolt @@ -31,7 +31,7 @@ /* virtual physical length type */ /* mem mapped registers */ - { 0xfff00000, 0xffffe000, 0x00002000, MT_DEVICE }, + { IOP321_VIRT_MEM_BASE, IOP321_PHY_MEM_BASE, 0x00002000, MT_DEVICE }, /* PCI IO space */ { 0xfe000000, 0x90000000, 0x00020000, MT_DEVICE } @@ -52,7 +52,7 @@ /* virtual physical length type */ /* on-board devices */ - { 0xfe800000, 0xfe800000, 0x00100000, MT_DEVICE } + { 0xfe800000, IQ80321_UART1, 0x00100000, MT_DEVICE } }; void __init iq80321_map_io(void) diff -Nru a/arch/arm/mach-pxa/generic.c b/arch/arm/mach-pxa/generic.c --- a/arch/arm/mach-pxa/generic.c Wed Feb 19 05:30:25 2003 +++ b/arch/arm/mach-pxa/generic.c Mon Apr 21 15:43:40 2003 @@ -13,7 +13,7 @@ * * Since this file should be linked before any other machine specific file, * the __initcall() here will be executed first. This serves as default - * initialization stuff for PXA machines which can be overriden later if + * initialization stuff for PXA machines which can be overridden later if * need be. */ #include diff -Nru a/arch/arm/mach-pxa/sleep.S b/arch/arm/mach-pxa/sleep.S --- a/arch/arm/mach-pxa/sleep.S Tue Jul 16 13:04:42 2002 +++ b/arch/arm/mach-pxa/sleep.S Mon Apr 21 15:43:40 2003 @@ -95,7 +95,7 @@ * This is to allow sleep_save_sp to be accessed with a relative load * while we can't rely on any MMU translation. We could have put * sleep_save_sp in the .text section as well, but some setups might - * insist on it to be truely read-only. + * insist on it to be truly read-only. */ .data diff -Nru a/arch/arm/mach-sa1100/sleep.S b/arch/arm/mach-sa1100/sleep.S --- a/arch/arm/mach-sa1100/sleep.S Wed Jul 10 09:01:31 2002 +++ b/arch/arm/mach-sa1100/sleep.S Mon Apr 21 15:43:40 2003 @@ -171,7 +171,7 @@ * This is to allow sleep_save_sp to be accessed with a relative load * while we can't rely on any MMU translation. We could have put * sleep_save_sp in the .text section as well, but some setups might - * insist on it to be truely read-only. + * insist on it to be truly read-only. */ .data diff -Nru a/arch/arm/mm/discontig.c b/arch/arm/mm/discontig.c --- a/arch/arm/mm/discontig.c Mon Nov 11 05:21:09 2002 +++ b/arch/arm/mm/discontig.c Mon Apr 21 15:43:41 2003 @@ -20,7 +20,7 @@ #endif /* - * Our node_data structure for discontigous memory. + * Our node_data structure for discontiguous memory. */ static bootmem_data_t node_bootmem_data[NR_NODES]; diff -Nru a/arch/arm/mm/init.c b/arch/arm/mm/init.c --- a/arch/arm/mm/init.c Wed Jan 8 12:37:27 2003 +++ b/arch/arm/mm/init.c Sun Apr 20 09:14:40 2003 @@ -20,7 +20,7 @@ #include #include #include -#include +#include #include #include diff -Nru a/arch/cris/Kconfig b/arch/cris/Kconfig --- a/arch/cris/Kconfig Sat Mar 8 14:50:37 2003 +++ b/arch/cris/Kconfig Sun Apr 20 12:56:50 2003 @@ -40,7 +40,7 @@ want to say Y here. Information about ELF is contained in the ELF HOWTO available from - . + . If you find that after upgrading from Linux kernel 1.2 and saying Y here, you still can't run any ELF binaries (they just crash), then @@ -615,7 +615,7 @@ ---help--- If you have a CD-ROM drive that is neither SCSI nor IDE/ATAPI, say Y here, otherwise N. Read the CD-ROM-HOWTO, available from - . + . Note that the answer to this question doesn't directly affect the kernel: saying N will just cause the configurator to skip all @@ -667,7 +667,7 @@ interrupt and DMA channel), because you will be asked for it. You want to read the Sound-HOWTO, available from - . General information about + . General information about the modular sound system is contained in the files . The file contains some slightly diff -Nru a/arch/cris/drivers/Kconfig b/arch/cris/drivers/Kconfig --- a/arch/cris/drivers/Kconfig Sun Feb 9 17:29:49 2003 +++ b/arch/cris/drivers/Kconfig Sun Apr 20 12:56:50 2003 @@ -30,7 +30,7 @@ If your Linux machine will be connected to an Ethernet and you have an Ethernet network interface card (NIC) installed in your computer, say Y here and read the Ethernet-HOWTO, available from - . You will then also have + . You will then also have to say Y to the driver for your particular NIC. Note that the answer to this question won't directly affect the @@ -392,7 +392,7 @@ box (as opposed to using a serial printer; if the connector at the printer has 9 or 25 holes ["female"], then it's serial), say Y. Also read the Printing-HOWTO, available from - . + . It is possible to share one parallel port among several devices (e.g. printer and ZIP drive) and it is safe to compile the @@ -485,7 +485,7 @@ topics, is contained in . For detailed information about hard drives, consult the Disk-HOWTO and the Multi-Disk-HOWTO, available from - . + . To fine-tune ATA/IDE drive/interface parameters for improved performance, look for the hdparm package at diff -Nru a/arch/cris/drivers/serial.c b/arch/cris/drivers/serial.c --- a/arch/cris/drivers/serial.c Tue Feb 25 10:27:11 2003 +++ b/arch/cris/drivers/serial.c Mon Apr 21 20:58:41 2003 @@ -1402,7 +1402,7 @@ if (!E100_RTS_GET(info) && CIRC_SPACE(info->recv.head, info->recv.tail, SERIAL_RECV_SIZE) < TTY_THROTTLE_LIMIT) - info->tty->driver.throttle(info->tty); + info->tty->driver->throttle(info->tty); START_FLUSH_FAST_TIMER(info, "receive_chars"); @@ -1658,7 +1658,7 @@ /* unthrottle if we have throttled */ if (E100_RTS_GET(info) && CIRC_SPACE(info->recv.head, info->recv.tail, SERIAL_RECV_SIZE) > TTY_THROTTLE_LIMIT) - tty->driver.unthrottle(info->tty); + tty->driver->unthrottle(info->tty); } static _INLINE_ void @@ -3049,8 +3049,8 @@ #endif shutdown(info); - if (tty->driver.flush_buffer) - tty->driver.flush_buffer(tty); + if (tty->driver->flush_buffer) + tty->driver->flush_buffer(tty); if (tty->ldisc.flush_buffer) tty->ldisc.flush_buffer(tty); tty->closing = 0; @@ -3169,7 +3169,7 @@ * If this is a callout device, then just make sure the normal * device isn't being used. */ - if (tty->driver.subtype == SERIAL_TYPE_CALLOUT) { + if (tty->driver->subtype == SERIAL_TYPE_CALLOUT) { if (info->flags & ASYNC_NORMAL_ACTIVE) return -EBUSY; if ((info->flags & ASYNC_CALLOUT_ACTIVE) && @@ -3289,7 +3289,7 @@ /* find which port we want to open */ - line = MINOR(tty->device) - tty->driver.minor_start; + line = tty->index; if (line < 0 || line >= NR_PORTS) return -ENODEV; @@ -3302,8 +3302,7 @@ return -ENODEV; #ifdef SERIAL_DEBUG_OPEN - printk("[%d] rs_open %s%d, count = %d\n", current->pid, - tty->driver.name, info->line, + printk("[%d] rs_open %s, count = %d\n", current->pid, tty->name, info->count); #endif @@ -3359,7 +3358,7 @@ } if ((info->count == 1) && (info->flags & ASYNC_SPLIT_TERMIOS)) { - if (tty->driver.subtype == SERIAL_TYPE_NORMAL) + if (tty->driver->subtype == SERIAL_TYPE_NORMAL) *tty->termios = info->normal_termios; else *tty->termios = info->callout_termios; diff -Nru a/arch/h8300/Kconfig b/arch/h8300/Kconfig --- a/arch/h8300/Kconfig Thu Apr 17 12:30:45 2003 +++ b/arch/h8300/Kconfig Sun Apr 20 12:56:51 2003 @@ -181,7 +181,7 @@ telephone line with a modem either via UUCP (UUCP is a protocol to forward mail and news between unix hosts over telephone lines; read the UUCP-HOWTO, available from - ) or dialing up a shell + ) or dialing up a shell account or a BBS, even using term (term is a program which gives you almost full Internet connectivity if you have a regular dial up shell account on some Internet connected Unix computer. Read @@ -201,7 +201,7 @@ Make sure to read the NET-3-HOWTO. Eventually, you will have to read Olaf Kirch's excellent and free book "Network Administrator's - Guide", to be found in . If + Guide", to be found in . If unsure, say Y. endmenu diff -Nru a/arch/i386/Kconfig b/arch/i386/Kconfig --- a/arch/i386/Kconfig Fri Apr 4 07:22:18 2003 +++ b/arch/i386/Kconfig Tue Apr 22 04:20:16 2003 @@ -183,7 +183,7 @@ optimizations. config MPENTIUMIII - bool "Pentium-III/Celeron(Coppermine)" + bool "Pentium-III/Celeron(Coppermine)/Pentium-III Xeon" help Select this for Intel chips based on the Pentium-III and Celeron-Coppermine core. This option enables use of some @@ -191,7 +191,7 @@ extensions. config MPENTIUM4 - bool "Pentium-4/Celeron(P4-based)" + bool "Pentium-4/Celeron(P4-based)/Xeon" help Select this for Intel Pentium 4 chips. This includes both the Pentium 4 and P4-based Celeron chips. This option @@ -345,7 +345,7 @@ config X86_INTEL_USERCOPY bool - depends on MPENTIUM4 || MPENTIUMIII || MPENTIUMII || M586MMX + depends on MPENTIUM4 || MPENTIUMIII || MPENTIUMII || M586MMX || X86_GENERIC || MK8 || MK7 default y config X86_USE_PPRO_CHECKSUM @@ -409,7 +409,7 @@ See also the , , , and the SMP-HOWTO available at - . + . If you don't know what to do here, say N. @@ -790,7 +790,7 @@ page on the WWW at and the Battery Powered Linux mini-HOWTO, available from - . + . Note that, even if you say N here, Linux on the x86 architecture will issue the hlt instruction if nothing is to be done, thereby @@ -798,7 +798,7 @@ config SOFTWARE_SUSPEND bool "Software Suspend (EXPERIMENTAL)" - depends on EXPERIMENTAL && PM + depends on EXPERIMENTAL && PM && SWAP ---help--- Enable the possibilty of suspendig machine. It doesn't need APM. You may suspend your machine by 'swsusp' or 'shutdown -z