📄 ibmmca.txt
字号:
1) Finally, after some 3.1Beta-releases, the 3.1 release. Sorry, for the delayed release, but it was not finished with the release of Kernel 2.2.0. - Michael Lang Feb 10, 1999 (v3.1) 1) Added a new commandline parameter called 'bypass' in order to bypass every integrated subsystem SCSI-command consequently in case of troubles. 2) Concatenated read_capacity requests to the harddisks. It gave a lot of troubles with some controllers and after I wanted to apply some extensions, it jumped out in the same situation, on my w/cache, as like on D. Weinehalls' Model 56, having integrated SCSI. This gave me the decisive hint to move the code-part out and declare it global. Now it seems to work far better and more stable. Let us see what the world thinks of it... 3) By the way, only Sony DAT-drives seem to show density code 0x13. A test with a HP drive gave right results, so the problem is vendor- specific and not a problem of the OS or the driver. - Michael Lang Feb 18, 1999 (v3.1d) 1) The abort command and the reset function have been checked for inconsistencies. From the logical point of thinking, they work at their optimum, now, but as the subsystem does not answer with an interrupt, abort never finishes, sigh... 2) Everything, that is accessed by a busmaster request from the adapter is now declared as global variable, even the return-buffer in the local checking phase. This assures, that no accesses to undefined memory areas are performed. 3) In ibmmca.h, the line unchecked_isa_dma is added with 1 in order to avoid memory-pointers for the areas higher than 16MByte in order to be sure, it also works on 16-Bit Microchannel bus systems. 4) A lot of small things have been found, but nothing that endangered the driver operations. Just it should be more stable, now. - Michael Lang Feb 20, 1999 (v3.1e) 1) I took the warning from the Linux Kernel Hackers Guide serious and checked the cmd->result return value to the done-function very carefully. It is obvious, that the IBM SCSI only delivers the tsb.dev_status, if some error appeared, else it is undefined. Now, this is fixed. Before any SCB command gets queued, the tsb.dev_status is set to 0, so the cmd->result won't screw up Linux higher level drivers. 2) The reset-function has slightly improved. This is still planed for abort. During the abort and the reset function, no interrupts are allowed. This is however quite hard to cope with, so the INT-status register is read. When the interrupt gets queued, one can find its status immediately on that register and is enabled to continue in the reset function. I had no chance to test this really, only in a bogus situation, I got this function running, but the situation was too much worse for Linux :-(, so tests will continue. 3) Buffers got now consistent. No open address mapping, as before and therefore no further troubles with the unassigned memory segmentation faults that scrambled probes on 95XX series and even on 85XX series, when the kernel is done in a not so perfectly fitting way. 4) Spontaneous interrupts from the subsystem, appearing without any command previously queued are answered with a DID_BAD_INTR result. 5) Taken into account ZP Gus' proposals to reverse the SCSI-device scan order. As it does not work on Kernel 2.1.x or 2.2.x, as proposed by him, I implemented it in a slightly derived way, which offers in addition more flexibility. - Michael Lang Apr 23, 2000 (v3.2pre1) 1) During a very long time, I collected a huge amount of bug reports from various people, trying really quite different things on their SCSI- PS/2s. Today, all these bug reports are taken into account and should be mostly solved. The major topics were: - Driver crashes during boottime by no obvious reason. - Driver panics while the midlevel-SCSI-driver is trying to inquire the SCSI-device properties, even though hardware is in perfect state. - Displayed info for the various slot-cards is interpreted wrong. The main reasons for the crashes were two: 1) The commands to check for device information like INQUIRY, TEST_UNIT_READY, REQUEST_SENSE and MODE_SENSE cause the devices to deliver information of up to 255 bytes. Midlevel drivers offer 1024 bytes of space for the answer, but the IBM-SCSI-adapters do not accept this, as they stick quite near to ANSI-SCSI and report a COMMAND_ERROR message which causes the driver to panic. The main problem was located around the INQUIRY command. Now, for all the mentioned commands, the buffersize sent to the adapter is at maximum 255 which seems to be a quite reasonable solution. TEST_UNIT_READY gets a buffersize of 0 to make sure that no data is transferred in order to avoid any possible command failure. 2) On unsuccessful TEST_UNIT_READY, the mid-level driver has to send a REQUEST_SENSE in order to see where the problem is located. This REQUEST_SENSE may have various length in its answer-buffer. IBM SCSI-subsystems report a command failure if the returned buffersize is different from the sent buffersize, but this can be suppressed by a special bit, which is now done and problems seem to be solved. 2) Code adaption to all kernel-releases. Now, the 3.2 code compiles on 2.0.x, 2.1.x, 2.2.x and 2.3.x kernel releases without any code-changes. 3) Commandline-parameters are recognized again, even under Kernel 2.3.x or higher. - Michael Lang April 27, 2000 (v3.2pre2) 1) Bypassed commands get read by the adapter by one cycle instead of two. This increases SCSI-performance. 2) Synchronous datatransfer is provided for sure to be 5 MHz on older SCSI and 10 MHz on internal F/W SCSI-adapter. 3) New commandline parameters allow to force the adapter to slow down while in synchronous transfer. Could be helpful for very old devices. - Michael Lang June 2, 2000 (v3.2pre5) 1) Added Jim Shorney's contribution to make the activity indicator flashing in addition to the LED-alphanumeric display-panel on models 95A. To be enabled to choose this feature freely, a new commandline parameter is added, called 'activity'. 2) Added the READ_CONTROL bit for test_unit_ready SCSI-command. 3) Added some suppress_exception bits to read_device_capacity and all device_inquiry occurrences in the driver code. 4) Complaints about the various KERNEL_VERSION implementations are taken into account. Every local_LinuxKernelVersion occurrence is now replaced by KERNEL_VERSION, defined in linux/version.h. Corresponding changes were applied to ibmmca.h, too. This was a contribution to all kernel-parts by Philipp Hahn. - Michael Lang July 17, 2000 (v3.2pre8) A long period of collecting bug reports from all corners of the world now lead to the following corrections to the code: 1) SCSI-2 F/W support crashed with a COMMAND ERROR. The reason for this was that it is possible to disable Fast-SCSI for the external bus. The feature-control command, where this crash appeared regularly, tried to set the maximum speed of 10MHz synchronous transfer speed and that reports a COMMAND ERROR if external bus Fast-SCSI is disabled. Now, the feature-command probes down from maximum speed until the adapter stops to complain, which is at the same time the maximum possible speed selected in the reference program. So, F/W external can run at 5 MHz (slow-) or 10 MHz (fast-SCSI). During feature probing, the COMMAND ERROR message is used to detect if the adapter does not complain. 2) Up to now, only combined busmode is supported, if you use external SCSI-devices, attached to the F/W-controller. If dual bus is selected, only the internal SCSI-devices get accessed by Linux. For most applications, this should do fine. 3) Wide-SCSI-addressing (16-Bit) is now possible for the internal F/W bus on the F/W adapter. If F/W adapter is detected, the driver automatically uses the extended PUN/LUN <-> LDN mapping tables, which are now new from 3.2pre8. This allows PUNs between 0 and 15 and should provide more fun with the F/W adapter. 4) Several machines use the SCSI: POS registers for internal/undocumented storage of system relevant info. This confused the driver, mainly on models 9595, as it expected no onboard SCSI only, if all POS in the integrated SCSI-area are set to 0x00 or 0xff. Now, the mechanism to check for integrated SCSI is much more restrictive and these problems should be history. - Michael Lang July 18, 2000 (v3.2pre9) This develop rather quickly at the moment. Two major things were still missing in 3.2pre8: 1) The adapter PUN for F/W adapters has 4-bits, while all other adapters have 3-bits. This is now taken into account for F/W. 2) When you select CONFIG_IBMMCA_SCSI_ORDER_STANDARD, you should normally get the inverse probing order of your devices on the SCSI-bus. The ANSI device order gets scrambled in version 3.2pre8!! Now, a new and tested algorithm inverts the device-order on the SCSI-bus and automatically avoids accidental access to whatever SCSI PUN the adapter is set and works with SCSI- and Wide-SCSI-addressing. - Michael Lang July 23, 2000 (v3.2pre10 unpublished) 1) LED panel display supports wide-addressing in ibmmca=display mode. 2) Adapter-information and autoadaption to address-space is done. 3) Auto-probing for maximum synchronous SCSI transfer rate is working. 4) Optimization to some embedded function calls is applied. 5) Added some comment for the user to wait for SCSI-devices being probed. 6) Finished version 3.2 for Kernel 2.4.0. It least, I thought it is but... - Michael Lang July 26, 2000 (v3.2pre11) 1) I passed a horrible weekend getting mad with NMIs on kernel 2.2.14 and a model 9595. Asking around in the community, nobody except of me has seen such errors. Weird, but I am trying to recompile everything on the model 9595. Maybe, as I use a specially modified gcc, that could cause problems. But, it was not the reason. The true background was, that the kernel was compiled for i386 and the 9595 has a 486DX-2. Normally, no troubles should appear, but for this special machine, only the right processor support is working fine! 2) Previous problems with synchronous speed, slowing down from one adapter to the next during probing are corrected. Now, local variables store the synchronous bitmask for every single adapter found on the MCA bus. 3) LED alphanumeric panel support for XX95 systems is now showing some alive rotator during boottime. This makes sense, when no monitor is connected to the system. You can get rid of all display activity, if you do not use any parameter or just ibmmcascsi=activity, for the harddrive activity LED, existent on all PS/2, except models 8595-XXX. If no monitor is available, please use ibmmcascsi=display, which works fine together with the linuxinfo utility for the LED-panel. - Michael Lang July 29, 2000 (v3.2) 1) Submission of this driver for kernel 2.4test-XX and 2.2.17. - Michael Lang December 28, 2000 (v3.2d / v4.0) 1) The interrupt handler had some wrong statement to wait for. This was done due to experimental reasons during 3.2 development but it has shown that this is not stable enough. Going back to wait for the adapter to be not busy is best. 2) Inquiry requests can be shorter than 255 bytes of return buffer. Due to a bug in the ibmmca_queuecommand routine, this buffer was forced to 255 at minimum. If the memory address, this return buffer is pointing to does not offer more space, invalid memory accesses destabilized the kernel. 3) version 4.0 is only valid for kernel 2.4.0 or later. This is necessary to remove old kernel version dependent waste from the driver. 3.2d is only distributed with older kernels but keeps compatibility with older kernel versions. 4.0 and higher versions cannot be used with older kernels anymore!! You must have at least kernel 2.4.0!! 4) The commandline argument 'bypass' and all its functionality got removed in version 4.0. This was never really necessary, as all troubles were based on non-command related reasons up to now, so bypassing commands did not help to avoid any bugs. It is kept in 3.2X for debugging reasons. 5) Dynamical reassignment of ldns was again verified and analyzed to be completely inoperational. This is corrected and should work now. 6) All commands that get sent to the SCSI adapter were verified and completed in such a way, that they are now completely conform to the demands in the technical description of IBM. Main candidates were the DEVICE_INQUIRY, REQUEST_SENSE and DEVICE_CAPACITY commands. They must be transferred by bypassing the internal command buffer of the adapter or else the response can be a random result. GET_POS_INFO would be more safe in usage, if one could use the SUPRESS_EXCEPTION_SHORT, but this is not allowed by the technical references of IBM. (Sorry, folks, the model 80 problem is still a task to be solved in a different way.) 7) v3.2d is still hold back for some days for testing, while 4.0 is released. - Michael Lang January 3, 2001 (v4.0a)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -