I have a Motorola SM56 PCI Winmodem card for which I want to write a
driver. The card is the one described here:
http://xmodem.org/chipsets/motorola/motorola_sm56pci.html . This card is
also mentioned at
http://www.linuxdriverproject.org/foswiki/bin/view/Main/DriversNeeded as
one of the cards for which Linux drivers are needed but not freely
available. I have tried googling around but I cannot find any reference
to a datasheet that tells me the usage of the hardware registers for
this card. Therefore I want to try the following:
- install a virtual machine package, either QEMU or Bochs
- install an OS for which a SM56 driver is available (I am thinking
Windows 98), and install said SM56 driver.
- modify the virtual machine code to add code to expose a virtual PCI
card with the same resources as the SM56 PCI card. This code will log
the register accesses performed on the virtual SM56, and then pass them
to the actual card. Currently the only resource the card exposes is a
256-byte MMIO region.
- with the real SM56 plugged in the host, write a userspace driver that
will be contacted by my code in the modified virtual machine, and
perform the actual register accesses as directed by the virtual machine
However, I am worried about DMA accesses. If the sequence of register
accesses happen to set up a DMA transfer, I might end up writing data
from the card to an arbitrary memory address on the host (which was
supposed to be valid in the guest) and crash my machine. Therefore I ask
the following:
Is there any measure I can take to guard against the scenario described
above?
Is there an alternative to find out how the card works, besides the
strategy shown above?
Is there any other caveat that I should be aware of?
--
To unsubscribe from this list: send the line "unsubscribe linux-pci" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html