Subject: 64-bit memory fun with an adaptec 3950U2B..
To: None <tech-kern@netbsd.org>
From: Bill Studenmund <wrstuden@nas.nasa.gov>
List: tech-kern
Date: 03/13/2000 09:48:04
I'm testing an adaptec 3950 U2B in a Blue & White G3 powermac, and have
run into a problem.

The problem is that the card is a 64-bit CPI card (it has two Ultra2 SCSI
busses on it, so it makes a lot of sense to want the 64 bit data path),
and it is configured to want 64-bit memory. Open Firmware gives it 64-bit
memory, but pci_mem_find disaproves.

On line 157 of pci_map.c, the following switch statement starts:

        switch (PCI_MAPREG_MEM_TYPE(address)) {
        case PCI_MAPREG_MEM_TYPE_32BIT:
        case PCI_MAPREG_MEM_TYPE_32BIT_1M:
                break;
        case PCI_MAPREG_MEM_TYPE_64BIT:
                printf("pci_mem_find: 64-bit memory mapping register\n");
                return (1);
        default:
                printf("pci_mem_find: reserved mapping register type\n");
                return (1);
        }

This is after the found and requested memory spaces have been compared and
found to match. So at this point we know the driver requested 64-bit
memory, and the hardware expected it too.

So what do we do to fix this? We NEED to have this card work. :-) Apple's
been shipping them in machines for like a year, and they will definitly
get a performance boost with the 64-bit bus. :-)

The one thing which comes to mind is some MD hook to make sure that the
64-bit address is ok. On 32-bit powerpc, for instance, it would make sure
that the MSW of the address is zero.

Thoughts?

Take care,

Bill