motti@ocsmd.ocs.com (Motti Bazar) (03/20/89)
Hi there, its Motti again (with my driver problems again). I'm still fighting with Xenix and developing a driver for our CD-ROM controller. The new problem I encountered is as follows: First, the driver is called via the character interface (read) that calls physio (that calls my strategy). The kernel somehow decides to cut my request to multiple 1Kb and 3Kb requests to my strategy. Does somebody know how to tell physio not to cut it ??? It looks like I can't (this is an answer from SCO). Second and more problematic, I can leave with multiple calls (it will be slower). Then What I'm doing is buffering things in a buffer that I allocated in the driver. The problem is that when I go and call the DMA setup routine (dma_param(....)) and then go to sleep (sleep(....)) I see the operation (drive busy light goes on) but then I get a nice panic message telling me about a parity error and the machine is dead with the hard-disk busy light on forever. Somebody have any idea ????? Its a real pain !!!!! its a lot more easier doing it under SunOS. One of the big problems is that there is no demo source available to show how you really develop a device driver under Xenix (yes its easy to give a terminal driver or alike but what about real hardware access with interrupts and DMA ?????). It looks like that when I'll finish I'll publish an article or post at least something how to do all of these things (It will have to be authorized by the comapany but I do not see problems). I'll appreciate any help and let you know how it goes. Thanks in advance ... Motti
davidsen@steinmetz.ge.com (Wm. E. Davidsen Jr) (03/25/89)
In article <649@ocsmd.ocs.com> motti@ocsmd.ocs.com (Motti Bazar) writes: | Second and more problematic, I can leave with multiple calls (it will | be slower). Then What I'm doing is buffering things in a buffer that I | allocated in the driver. The problem is that when I go and call the DMA | setup routine (dma_param(....)) and then go to sleep (sleep(....)) I see | the operation (drive busy light goes on) but then I get a nice panic | message telling me about a parity error and the machine is dead with | the hard-disk busy light on forever. Somebody have any idea ????? I have seen this on a number of machines when I was evaluating 386's. I'm sorry to say that it usually comes when the following occur: hard disk i/o DMA to floppy/tape/whatever CPU in 32 bit mode The last is important. IBM diagnostics and MS-DOS just don't cause the problem. My *guess* is that the memory is on the ragged edge and loses a refresh causing a parity error. My *experience* tells me that changing the memory to faster memory (or just other memory) frequently helps, slowing the CPU sometimes helps. I don't know what your machine is, but a lot of clones seem to be running on the edge of memory spec for 32 bit. Dell redesigned their motherboard between the 310 and 325 series, and replaced a MB for us, due to just this type of problem. They admitted and fixed the problem, a lot of vendors call it software because their diagnostics run just fine. -- bill davidsen (wedu@crd.GE.COM) {uunet | philabs}!steinmetz!crdos1!davidsen "Stupidity, like virtue, is its own reward" -me