[OpenBIOS] Faulty Qemu SPARC64 IDE emulation?
Blue Swirl
blauwirbel at gmail.com
Tue Dec 22 20:51:50 CET 2009
On Tue, Dec 22, 2009 at 7:20 PM, Tarl Neustaedter
<Tarl.Neustaedter at sun.com> wrote:
> Tarl Neustaedter wrote:
>>
>> [...]
>>>
>>> Right, I think I understand now. So the obvious question to ask now is
>>> how is PCI configuration space mapped on Sparc64? I can see that on x86 it's
>>> mapped to an I/O port at 0xCF8 but I can't seem to find how this is
>>> implemented on Sparc64. Anyone have any idea?
>>
>> PCI spaces are each mapped in separately in physical spaces on SPARC.
>> [...]
>
> On a sun4u system (Tazmo, SUNW,Ultra-4), the first PCI root complex is a
> Psycho (Sun's first PCI bus chip) and has spaces at:
QEMU is emulating a Sabre/Simba based system.
>
> Config: 000001fe.01000000, length 00800000.
> IO: 000001fe.02010000 length 00010000.
> mem32: 000001ff.80000000 length 80000000.
> mem64: 000001ff.80000000 length 80000000
There the values are (from the US-IIi manual)
Config: 000001fe.01000000, length 00800000?
IO: 000001fe.02000000 length 00100000
mem32: 000001ff.00000000 length f0000000 (4G - PROM)
mem64: 000001ff.80000000 length f0000000 (I think)
> This can be derived from the "Ranges" property in the PCI node, attached
> below. Note that Psycho did not implement mem64 separately, so the mem64
> space simply points to mem32 space. And it only has 31 bits of
> addressability - I recall the other half of the mem32 space is used for DMA,
> so thus not mappable as registers.
>
> The config space is addressed precisely as defined by the PCI bindings
> "phys.hi" definition. That means it's composed of:
>
> phys.hi: xxxxxxxx bbbbbbbb dddddfff rrrrrrrr
>
> Where xxxx is not part of the addressing in above address space, bbbbbbbb is
> eight bits of bus number, ddddd is five bits of device number, fff is three
> bits of function number and rrrrrrrr is eight bits of register offset
> addressing (sorry I got it wrong on an earlier email, I was thinking of some
> pci-e stuff).
Same as Sabre.
> - - - - -
> PCI node as shown by Solaris "prtconf -pv":
>
> Node 0xf006ebb8
> slot-names:
> 0000001e.4d6f7468.6572626f.61726400.4d6f7468.6572626f.61726
> 400.4d6f7468.6572626f.61726400.50434920.736c6f74.20313000
> available:
> 82000000.00000000.00017000.00000000.7ffe9000.81000000.000000
> 00.00000900.00000000.0000f700
> bus-range: 00000000.00000000
> version#: 00000004
> implementation#: 00000000
> address: fffb4000.fffb2000.fffa4000
> #upa-interrupt-proxies: 00000002
> clock-frequency: 01f78a40
> upa-portid: 0000001f
> interrupts: 000007f1.000007ee.000007ef.000007e5.000007e8.000007f2
> ranges:
> 00000000.00000000.00000000.000001fe.01000000.00000000.00800000.
> 01000000.00000000.00000000.000001fe.02010000.00000000.00010000.02000000.00000000
> .00000000.000001ff.80000000.00000000.80000000.03000000.00000000.00000000.000001f
> f.80000000.00000000.80000000
> reg:
> 000001fe.00004000.00000000.00002000.000001fe.01000000.00000000.000
> 00100.000001fe.00000000.00000000.0000d000
> no-probe-list: '0'
> latency-timer: 00000040
> model: 'SUNW,psycho'
> compatible: 'pci108e,8000' + 'pciclass,060000'
> thermal-interrupt: bus-parity-generated: #size-cells:
> 00000002
> #address-cells: 00000003
> device_type: 'pci'
> name: 'pci'
This one is from "SUNW,Ultra-5_10":
Node 0xf005f1e0
bus-range: 00000000.00000002
available: 82000000.00000000.00001000.00000000.fffff000.81000000.000000
00.00000400.00000000.00fffc00.00006176.61696c61
virtual-dma: c0000000.20000000
#virtual-dma-size-cells: 00000001
#virtual-dma-addr-cells: 00000001
latency-timer:
address: fffc4000.fffc2000
button-interrupt:
no-streaming-cache:
clock-frequency: 03ef1480
upa-portid: 0000001f
66mhz-capable:
interrupts: 000007f0.000007ee.000007ef.000007e5
ranges: 00000000.00000000.00000000.000001fe.01000000.00000000.01000000.
01000000.00000000.00000000.000001fe.02000000.00000000.01000000.02000000.00000000
.00000000.000001ff.00000000.00000001.00000000.03000000.00000000.00000000.000001f
f.00000000.00000001.00000000
reg: 000001fe.00000000.00000000.00010000.000001fe.01000000.00000000.000
00100
model: 'SUNW,sabre'
compatible: 70636931.3038652c.61303030.00706369
bus-parity-generated:
#size-cells: '00000002'
#address-cells: '00000003'
device_type: 'pci'
name: 'pci'
Node 0xf005f9d4
bus-range: 00000001.00000001
scsi-initiator-id: 00000007
compatible: 70636931.3038652c.35303030.00706369
66mhz-capable:
fast-back-to-back:
devsel-speed: 00000001
class-code: 00060400
revision-id: 00000011
device-id: 00005000
vendor-id: 0000108e
interrupt-map: 00010800.00000000.00000000.00000001.f005f1e0.0000002
1.00011000.00000000.00000000.00000001.f005f1e0.0000000f.00011800.00000000.000000
00.00000001.f005f1e0.00000020
interrupt-map-mask: 00fff800.00000000.00000000.00000007
#interrupt-cells: 00000001
slot-names: 00000000
no-probe-list: '0'
clock-frequency: 01f78a40
model: 'SUNW,simba'
#address-cells: 00000003
#size-cells: 00000002
reg: 00000900.00000000.00000000.00000000.00000000
device_type: 'pci'
name: 'pci'
More information about the OpenBIOS
mailing list