Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 26 Apr 2006 10:47:08 -0600 (MDT)
From:      "M. Warner Losh" <imp@bsdimp.com>
To:        scottl@samsco.org
Cc:        src-committers@FreeBSD.org, bde@zeta.org.au, jhb@FreeBSD.org, cvs-src@FreeBSD.org, cvs-all@FreeBSD.org, mj@feral.com
Subject:   Re: cvs commit: src/sys/dev/bce if_bcereg.h
Message-ID:  <20060426.104708.85411757.imp@bsdimp.com>
In-Reply-To: <20060426.102502.11595340.imp@bsdimp.com>
References:  <444F0923.8050508@samsco.org> <20060426.101245.90994186.imp@bsdimp.com> <20060426.102502.11595340.imp@bsdimp.com>

next in thread | previous in thread | raw e-mail | index | archive | help
In message: <20060426.102502.11595340.imp@bsdimp.com>
            "M. Warner Losh" <imp@bsdimp.com> writes:
: While an individual DMA transfer on the
: PCI-E bus may not cross such a boundary, I bleieve that individual
: resources can consume more than 4G.  Our PCI code doesn't handle BARs
: that are > 4G in size correctly, but it does handle BARs that are
: mapped anywhere in a 64-bit address space.

I went ahead and looked it up in the standard.  Our current PCI code
does sizing of 64-bit BARs with only 32-bits.  But the 2.2 standard
specifically says, in an implementation note, that it should be done
with 64-bits.  On page 204 in section 6.2.5.1:
	"64-bit (memory) Base Address registers can be handled the
	same, except that the second 32-bit register is considered an
	extension of the first; ie bits 32-63.  Software writes
	0xffffffff to both registers, reads them back, and combines
	the result into a 64-bit value.  Size calculation is done on
	the 64-bit value."

Anyway, consider this just a footnote to the conversation.  I'm happy
leaving well enough alone for the i386 implementation given the
sentiment expressed in this thread.

Warner



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