Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 28 Jul 1998 22:24:28 +0000 (GMT)
From:      Terry Lambert <tlambert@primenet.com>
To:        cc@tarsier.ca.sandia.gov (Chris Csanady)
Cc:        tlambert@primenet.com, hackers@FreeBSD.ORG
Subject:   Re: pci_map_mem() failing..
Message-ID:  <199807282224.PAA20070@usr04.primenet.com>
In-Reply-To: <199807282209.PAA13462@tarsier.ca.sandia.gov> from "Chris Csanady" at Jul 28, 98 03:09:12 pm

next in thread | previous in thread | raw e-mail | index | archive | help
> >Information about how you intend to latch a 64 bit address onto a 32
> >bit bus?
> >
> >Or do you mean "64 bit" the way the video card manufacturers mean
> >it, which is internal data path between video memory and the graphics
> >engine on the card itself?
> 
> The card actually is actuall a 64 bit card, so it is possible to address
> the memory in an alpha or such.  The second and third bit of the base
> address register (0xfffff004) in this case say that the memory mapping may
> be anywhere in the 64 bit address space.  (For 32 bit, they should be zero.)

PCI does not support 64 address lines, only 32.

There is a move to extend the PCI specification, but it has yet to
be ratified as a standard, AFAIK.


> The following case in pci/pci.c throws out all 64 bit cards it seems:
> 
>         /*              
>         **      check the type
>         */              
>                         
>         if (!((data & PCI_MAP_MEMORY_TYPE_MASK) == PCI_MAP_MEMORY_TYPE_32BIT_1M
>               && (paddr & ~0xfffff) == 0)
>             && (data & PCI_MAP_MEMORY_TYPE_MASK) != PCI_MAP_MEMORY_TYPE_32BIT){
>                 printf ("pci_map_mem failed: bad memory type=0x%x\n",
>                         (unsigned) data);
>                 return (0);
>         };
> 
> Is this correct?  After removing this, it still does not seem to work.  Does
> the pci code need to play with the next 32 bits of the base address register
> too?

If it was supported, then yes, it would need to, from my knowledge of
experimental 64 bit PCI implementations by Intel and another vendor
with a competing connector and lead arrangement.

Is there a particular reason you are trying to do this in 64 bit mode
instead of 32 bit mode?

Do you have one of these experimental extended bus connectors that you
are using?

If the answer to either of these questions is "no", then you should use
a 32 bit mapping instead.

I don't believe the kernel virtual address space is large enough to
cope with 64 bits in any case; the FS code does it by mapping windows
onto the file.


> I noticed that the current code is much different, although I am not
> set up to do developement on current now.  It is painful enough typing
> one handed, so I am looking for the quick and dirty solution.

Q&D would be "use a 32 bit mapping".

Sorry about the hand; I broke the pinky of my right hand a while
ago, and typing was a bugger (I'm right handed, as well).  Very
quick route to tendonitus in the other hand.  8-(.


					Terry Lambert
					terry@lambert.org
---
Any opinions in this posting are my own and not those of my present
or previous employers.

To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-hackers" in the body of the message



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?199807282224.PAA20070>