Subject: alpha pci pio problems
To: None <port-alpha@netbsd.org>
From: Simon Burge <simonb@netbsd.org>
List: port-alpha
Date: 06/21/2000 15:47:25
Folks,

I'm playing around trying to get the XFree86 SuperProbe working (on
a PC164) using Jason's direct memory stuff in libalpha with a kernel
that can properly mmap >4GB addresses and getting a lockup on the first
use of inb().  First off, note that I'm mostly ignorant of XFree86 and
completely ignorant with the Intel I/O port model.

I've got a program that's basically:

	u_int32_t vgaIObase;

	alpha_pci_io_enable(1);
	vgaIOBase = (inb(0x3cc) & 0x01) ? 0x3D0 : 0x3B0;

and it does roughly:

	mmap(size = 0x40000000, addr = 0x8580000000) = 0x1603ec000
	alpha_pci_io_swiz: abw->abw_addr = 0x1603ec000
	alpha_pci_io_swiz: port = 0x1603f3980
	alpha_pci_io_swiz_inb: return (*port && 0xff);

and at the last line the machine hangs hard and needs a reset.

If I add a kernel printf to show the K0SEG version (0x8580007980) I at
least get a number back (0x3000067) but I've yet to figure out if the
number is actually correct, although it being odd means that SuperProbe
would think that the display is color and not mono which is right.

From what I understand, while I'm just probing the I/O space I don't
need to map anything in with alpha_pci_mem_map() yet, right?

Is there anything obviously wrong in what I'm trying to do so far?

Simon.