Re: out-of-date [WAS: RE: 2 VMS books?]



On 2008-06-12, j.spilling@xxxxxxxxxxx <j.spilling@xxxxxxxxxxx> wrote:
I had written drivers for TURBOchannel/(E)ISA/PCI GPIB and multiport
serial I/O cards written. The first drivers were written in MACRO-32
for VAX and AXP. Later, other cards are required (because of 3.3V PCI)
and all drivers was ported to C (based on the drivers book!). The
porting to IA64 was as so simple: compile, link and run. So I support
this drivers until now ...

I also had little trouble porting my C-based drivers to IA64. Over the
last few years, I had kept tabs on where things were going so I had
already thought about and incorporated into the device driver everything
I knew about (64-bit PFNs, stuff like that).

I also made all my PCI devices run with a generic PCI device driver that
I wrote; it provides facilities to create register mappings, enable and
field interrupts, and lock and map buffers to support DMA traffic.

So I wound up with only one driver I had to port.

Minor issues were:

- The IA64 register mapping routines don't fill in the bus address field
of the IOHANDLE; Alpha does because it needs to describe the
difference between swizzle space and PCI addresses. I was using the
bus address to create PFN mappings in the unsupported byte/word space on
EV5 and up processors so our FORTRAN code dating back to the VAX days
could get access to the hardware.

Because of this change, the driver has to figure out where to get the
PCI bus address based on whether it's an Alpha or an Itanium. Of
course, if it's on an Alpha it has to figure out how to get to the
unsupported byte/word space...

- I've found one place where the IA64 kernel crashes that appears to be a
typo in some 64-bit parameter checking code. I forget the details.
I was able to come up with a workaround that works the same on both
platforms.

- We also had to modify the addressing of one of our devices to move the
registers to memory space instead of I/O space. On the Alpha it doesn't
matter, but I don't know how to get to I/O space on Itanium; I don't
have Itanium listings yet.

Other than those, it was much smoother than I expected it to be.

I also turned up a minor bug in the Alpha kernel on one of our
machines, so I guess it evens out. I hadn't run the generic driver on
*all* our boxes until about time to do the Itanium port, and the one
that was a bit different than the rest had a problem.

My resident HP guy has reported the bugs. I'm not certain whether
to consider the bus address bit in the IOHANDLE to be a bug, since
(given how old the documentation is) I don't think it's documented
anywhere.
--
roger ivie
rivie@xxxxxxxxxxxx
.



Relevant Pages

  • >>>>>> PCI DRIVERS <<<<<<
    ... drivers for radeon 9250 pci ... intel mini pci wireless card drivers ... lucent pci modem drivers 1456vqh-t2 ...
    (sci.electronics.misc)
  • >>>> PCI DRIVERS <<<<
    ... drivers for radeon 9250 pci ... intel mini pci wireless card drivers ... lucent pci modem drivers 1456vqh-t2 ...
    (sci.geo.meteorology)
  • PANIC with linux-next-2.6.26-next-20080718
    ... ACPI: ... ACPI: PM-Timer IO Port: 0x408 ... ACPI: bus type pci registered ... # Device Drivers ...
    (Linux-Kernel)
  • init_emergency_isa_pool calling mempool_create in non-sleeping context
    ... I just saw this when booting a current linux-2.6.git kernel. ... # Power management and ACPI options ... # Bus options (PCI etc.) ... # Enable WiMAX to see the WiMAX drivers ...
    (Linux-Kernel)
  • Re: Code density and performance?
    ... Maybe I write OS code and IO drivers for an Alpha based O/S? ... the I/O buffer is provided by an entity that you do not control. ... However, C and Unix support were a sine qua non for the Alpha, ... POSIX asynchronous I/O semantics. ...
    (comp.arch)