[OpenBIOS] [PATCH 0/2] Sparc64: virtio-block and interrupt support

Artyom Tarasenko atar4qemu at gmail.com
Sun May 13 09:08:41 CEST 2012


On Sun, May 13, 2012 at 7:56 AM, Jakub Jermar <jakub at jermar.eu> wrote:
> On 05/13/2012 12:00 AM, Artyom Tarasenko wrote:
>> On Sat, May 12, 2012 at 7:06 PM, Artyom Tarasenko <atar4qemu at gmail.com> wrote:
>>> On Sat, May 12, 2012 at 6:29 PM, Blue Swirl <blauwirbel at gmail.com> wrote:
>>>> On Sat, May 12, 2012 at 3:57 PM, Artyom Tarasenko <atar4qemu at gmail.com> wrote:
>>>>> On Sat, May 12, 2012 at 1:42 PM, Blue Swirl <blauwirbel at gmail.com> wrote:
>>>>>> Based on Artyom's Sparc64 work (thanks a lot!), I added some minimal
>>>>>> support for virtio-block and interrupt nodes.
>>>>>>
>>>>>> With these patches and QEMU HEAD, Linux can boot like Artyom describes in
>>>>>> http://tyom.blogspot.de/2012_05_01_archive.html
>>>>>> but without any manual OpenBIOS setup.
>>>>>
>>>>> My test kernel - 3.3.2 - still needs the ebus interrupt mapping properties:
>>>>>
>>>>> cd /pci at 1fe,0/ebus
>>>>> 000001fe encode-int 020003f8 encode-int encode+ 1 encode-int encode+
>>>>> ffe29140 encode-int encode+ 2b encode-int encode+ " interrupt-map" property
>>>>> 000001ff encode-int ffffffff encode-int encode+ 00000003 encode-int encode+
>>>>> " interrupt-map-mask" property
>>>>> device-end
>>>>> boot
>>>>
>>>> Updated patch attached. This change seems to help the serial driver.
>>>
>>> Looks good. The result seems to be identical with my hack, but there
>>> is one point I'd like to discuss:
>>>
>>> cd /pci at 1fe,0/pci-ata  ok
>>> .properties
>>> name                      "pci-ata"
>>> [...]
>>> interrupts                0
>>>
>>> I'm not sure that this is a valid value for the interrupts property.
>>
>> Tarl, Jakub, can you comment whether 0 is allowed?
>
> According to the UltraSPARC IIi User's Manual, section 19.3.3, INO 0
> (again, relative to the parent node mapping), would be INTA# on bus 0
> and INO 1 would be INTB#.

Yes, this is how it's wired in qemu too. But I meant the OBP level.
What worries me is that this construction seems to be never used in
sun4u OBP:

$  grep interrupts linux/kernel/git/davem/prtconfs/* | grep -c 00000001
402
$ grep interrupts linux/kernel/git/davem/prtconfs/* | grep -c 00000000
2

And the both hits are sun4v:

$  grep interrupts ~/openbios/linux/kernel/git/davem/prtconfs/* | grep 00000000
linux/kernel/git/davem/prtconfs/t1000:            interrupts:  00000000
linux/kernel/git/davem/prtconfs/t2000_1:            interrupts:  00000000

Can it be, that 0 is (or used to be) some magic constant?

>>> I guess it has to be changed back to 1, and the
>>> additional interrupt mappings have to be added to the root pci node.

Artyom

-- 
Regards,
Artyom Tarasenko

solaris/sparc under qemu blog: http://tyom.blogspot.com/search/label/qemu



More information about the OpenBIOS mailing list