tech-kern archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

Re: pchb@acpi



On Mon, Aug 02, 2010 at 06:42:11PM +0900, KIYOHARA Takashi wrote:
> Hi! Quentin,
> 
> 
> From: Quentin Garnier <cube%cubidou.net@localhost>
> 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@acpi has been fairly supported in FreeBSD since before.
> > > 
> > > ftp://ftp.netbsd.org/pub/NetBSD/misc/kiyohara/ia64/pchb%acpi-support.diff@localhost
> > 
> > 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%ojctech.com@localhost      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>


Home | Main Index | Thread Index | Old Index