David Young | 10 Aug 2010 01:19
Picon
Favicon

Re: pchb <at> acpi

On Mon, Aug 02, 2010 at 06:42:11PM +0900, KIYOHARA Takashi wrote:
> Hi! Quentin,
> 
> 
> From: Quentin Garnier <cube <at> cubidou.net>
> Date: Sun, 1 Aug 2010 15:21:18 +0000
> 
> > On Sun, Aug 01, 2010 at 11:17:54PM +0900, KIYOHARA Takashi wrote:
> 
> > > All recent PC has information on PCI in ACPI.
> > > We can attach pchb in acpi like a lot of other acpi devices. 
> > > pchb <at> acpi has been fairly supported in FreeBSD since before.
> > > 
> > > ftp://ftp.netbsd.org/pub/NetBSD/misc/kiyohara/ia64/pchb <at> acpi-support.diff
> > 
> > Do you have anything further in mind?  This patch is only dmesg
> > cosmetics.
> 
> No, I don't.
> My ia64 machine not need it.
> However it pass segment information to pci(4) in the future possibly.

What kind of segment information?

Attached is a preview of information that I supply to instances of
pci(4), ppb(4), and cbb(4) through their device properties.  The
information will help them manage PCI address spaces and to program
their address windows correctly, so that I can retire rbus and
PCI_ADDR_FIXUP, whose heuristics are incomplete.

Currently, I derive the information by scanning PCI Configuration Space.
The system BIOS---be it OpenFirmware, ACPI, or something else---may
supply similar information.

Dave

-- 
David Young             OJC Technologies
dyoung <at> ojctech.com      Urbana, IL * (217) 278-3933
Properties for device `pci0':
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
	<key>device-driver</key>
	<string>pci</string>
	<key>device-unit</key>
	<integer>0x0</integer>
	<key>pci-resources</key>
	<dict>
		<key>memory</key>
		<dict>
			<key>bios-reservations</key>
			<array>
				<dict>
					<key>address</key>
					<integer>0xf2000000</integer>
					<key>bus</key>
					<integer>0x0</integer>
					<key>device</key>
					<integer>0x2</integer>
					<key>function</key>
					<integer>0x0</integer>
					<key>size</key>
					<integer>0x6000000</integer>
					<key>type</key>
					<string>window</string>
				</dict>
				<dict>
					<key>address</key>
					<integer>0xfc300000</integer>
					<key>bus</key>
					<integer>0x0</integer>
					<key>device</key>
					<integer>0x3</integer>
					<key>function</key>
					<integer>0x0</integer>
					<key>size</key>
					<integer>0x300000</integer>
					<key>type</key>
					<string>window</string>
				</dict>
				<dict>
					<key>address</key>
					<integer>0xf8000000</integer>
					<key>bus</key>
					<integer>0x0</integer>
					<key>device</key>
					<integer>0x1c</integer>
					<key>function</key>
					<integer>0x0</integer>
					<key>size</key>
					<integer>0x4000000</integer>
					<key>type</key>
					<string>window</string>
				</dict>
				<dict>
					<key>address</key>
					<integer>0xfc600000</integer>
					<key>bus</key>
					<integer>0x0</integer>
					<key>device</key>
					<integer>0x1d</integer>
					<key>function</key>
					<integer>0x7</integer>
					<key>size</key>
					<integer>0x400</integer>
					<key>type</key>
					<string>BAR</string>
				</dict>
				<dict>
					<key>address</key>
					<integer>0xfc100000</integer>
					<key>bus</key>
					<integer>0x0</integer>
					<key>device</key>
					<integer>0x1e</integer>
					<key>function</key>
					<integer>0x0</integer>
					<key>size</key>
					<integer>0x200000</integer>
					<key>type</key>
					<string>window</string>
				</dict>
				<dict>
					<key>address</key>
					<integer>0xfc400000</integer>
					<key>bus</key>
					<integer>0x1</integer>
					<key>device</key>
					<integer>0x0</integer>
					<key>function</key>
					<integer>0x0</integer>
					<key>size</key>
					<integer>0x200000</integer>
					<key>type</key>
					<string>window</string>
				</dict>
				<dict>
					<key>address</key>
					<integer>0xd80f0000</integer>
					<key>bus</key>
					<integer>0x2</integer>
					<key>device</key>
					<integer>0xe</integer>
					<key>function</key>
					<integer>0x0</integer>
					<key>size</key>
					<integer>0x10000</integer>
					<key>type</key>
					<string>BAR</string>
				</dict>
				<dict>
					<key>address</key>
					<integer>0xfc5c0000</integer>
					<key>bus</key>
					<integer>0x2</integer>
					<key>device</key>
					<integer>0xe</integer>
					<key>function</key>
					<integer>0x0</integer>
					<key>size</key>
					<integer>0x20000</integer>
					<key>type</key>
					<string>BAR</string>
				</dict>
				<dict>
					<key>address</key>
					<integer>0xf8000000</integer>
					<key>bus</key>
					<integer>0x4</integer>
					<key>device</key>
					<integer>0x0</integer>
					<key>function</key>
					<integer>0x0</integer>
					<key>size</key>
					<integer>0x4000000</integer>
					<key>type</key>
					<string>window</string>
				</dict>
				<dict>
					<key>address</key>
					<integer>0xf8000000</integer>
					<key>bus</key>
					<integer>0x5</integer>
					<key>device</key>
					<integer>0x0</integer>
					<key>function</key>
					<integer>0x0</integer>
					<key>size</key>
					<integer>0x2000000</integer>
					<key>type</key>
					<string>BAR</string>
				</dict>
				<dict>
					<key>address</key>
					<integer>0xf4000000</integer>
					<key>bus</key>
					<integer>0x6</integer>
					<key>device</key>
					<integer>0x0</integer>
					<key>function</key>
					<integer>0x0</integer>
					<key>size</key>
					<integer>0x4000000</integer>
					<key>type</key>
					<string>window</string>
				</dict>
				<dict>
					<key>address</key>
					<integer>0xf4000000</integer>
					<key>bus</key>
					<integer>0x7</integer>
					<key>device</key>
					<integer>0x0</integer>
					<key>function</key>
					<integer>0x0</integer>
					<key>size</key>
					<integer>0x4000000</integer>
					<key>type</key>
					<string>window</string>
				</dict>
				<dict>
					<key>address</key>
					<integer>0xf4000000</integer>
					<key>bus</key>
					<integer>0x8</integer>
					<key>device</key>
					<integer>0x0</integer>
					<key>function</key>
					<integer>0x0</integer>
					<key>size</key>
					<integer>0x4000000</integer>
					<key>type</key>
					<string>window</string>
				</dict>
				<dict>
					<key>address</key>
					<integer>0xf4000000</integer>
					<key>bus</key>
					<integer>0x9</integer>
					<key>device</key>
					<integer>0x0</integer>
					<key>function</key>
					<integer>0x0</integer>
					<key>size</key>
					<integer>0x2000000</integer>
					<key>type</key>
					<string>BAR</string>
				</dict>
				<dict>
					<key>address</key>
					<integer>0xd0000000</integer>
					<key>bus</key>
					<integer>0x10</integer>
					<key>device</key>
					<integer>0xd</integer>
					<key>function</key>
					<integer>0x0</integer>
					<key>size</key>
					<integer>0x8000000</integer>
					<key>type</key>
					<string>BAR</string>
				</dict>
				<dict>
					<key>address</key>
					<integer>0xfc2d0000</integer>
					<key>bus</key>
					<integer>0x10</integer>
					<key>device</key>
					<integer>0xd</integer>
					<key>function</key>
					<integer>0x0</integer>
					<key>size</key>
					<integer>0x10000</integer>
					<key>type</key>
					<string>BAR</string>
				</dict>
			</array>
			<key>size</key>
			<integer>0x2c600400</integer>
			<key>start</key>
			<integer>0xd0000000</integer>
		</dict>
	</dict>
</dict>
</plist>
Properties for device `pci4':
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
	<key>device-driver</key>
	<string>pci</string>
	<key>device-unit</key>
	<integer>0x4</integer>
	<key>pci-resources</key>
	<dict>
		<key>memory</key>
		<dict>
			<key>bios-reservations</key>
			<array>
				<dict>
					<key>address</key>
					<integer>0xf4000000</integer>
					<key>bus</key>
					<integer>0x9</integer>
					<key>device</key>
					<integer>0x0</integer>
					<key>function</key>
					<integer>0x0</integer>
					<key>size</key>
					<integer>0x2000000</integer>
					<key>type</key>
					<string>BAR</string>
				</dict>
			</array>
			<key>size</key>
			<integer>0x2c600400</integer>
			<key>start</key>
			<integer>0xd0000000</integer>
		</dict>
	</dict>
</dict>
</plist>

Gmane