On Sun, May 13, 2012 at 7:56 AM, Jakub Jermar jakub@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@gmail.com wrote:
On Sat, May 12, 2012 at 6:29 PM, Blue Swirl blauwirbel@gmail.com wrote:
On Sat, May 12, 2012 at 3:57 PM, Artyom Tarasenko atar4qemu@gmail.com wrote:
On Sat, May 12, 2012 at 1:42 PM, Blue Swirl blauwirbel@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@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@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