[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