Forgive me for waking an old post, but I believe my questions are relevant.
SpyderTL, how did you do on your Buslogic SCSI driver? Were you able to read (and write) from an (emulated) disk?
I have been working on my implementation and have a working start. I have retrieved all the information needed, set up the controller, and can send and receive SCSI commands. However, I cannot get the controller to fire an interrupt. I currently poll the INTERRUPT register for command completion.
I am now working on making it an interrupt based callback and cannot get the (Virtualbox) controller to fire an interrupt.
- I retrieved the IRQ LINE from the PCI Config space as IRQ 11.
- I have interrupt 11 on the PIC8259 unmasked.
- After a Buslogic (BT-958D) hard reset, the interrupts are enabled.
- I have cleared the interrupt bit using a write to the Buslogic CONTROL register.
- I have verified that my system IRQ handler allows interrupts and can see all interrupts (via debug messages) for other devices.
- I have polled that the Buslogic INTERRUPT register does indeed have bit 7 set, meaning an interrupt should have been sent to the PCI bus, which is then sent to the CPU.
- Whether it matters or not, I have verified that the
irq_ch in the CONFIG reply as well as in the AUTOSCSI reply match for IRQ 11.
I want to say that the VirtualBox emulation is in error, but with a bit of research, I have found that it works on quite a few modern distros of *nix based systems as well as Win95 (with a modification). I think this modification was that you have to send the BUSLOGIC_MOD_IOADDR (0x95) command to disable the Legacy ISA Port I/O so that Win95 doesn't see two controllers, one at 0x33? and another at the PCI address.
Anyway, I am just wondering if anyone has a working BT-958D Buslogic
Interrupt based driver for VirtualBox. This way I can eliminate the question of whether it is my code or VirtualBox.
Thank you,
Ben
-
http://www.fysnet.net/osdesign_book_series.htm