[OpenBIOS] [PATCH v4] arch/ppc/qemu: Add a node for the other (empty) PCI bus to the device tree
BALATON Zoltan
balaton at eik.bme.hu
Sat Jun 30 13:05:56 CEST 2018
On Sat, 30 Jun 2018, Mark Cave-Ayland wrote:
> On 29/06/18 21:10, BALATON Zoltan wrote:
>
>>> How about changing ob_pci_init() to take a single bus_num int which is the
>>> starting bus number and then passing that down into
>>> ob_configure_pci_device()? That will allow you to set the correct bus_num
>>> for the 0xf2000000 PCI bus which should solve your problem, and also get
>>> OpenBIOS a small step closer to multiple PCI bus support.
>>
>> I don't remember the details by now and don't want to debug this again but
>> AFAIR the problem was not the bus-range but that only one PCI bus appears
>> in the device tree while there are two buses emulated. I think MorphOS
>> checks for up to 3 PCI buses and may not get all info from the device tree
>> apart from addresses but may have some assumptions for other properties so
>> it may not be possible to fix it with a device tree that does not look
>> similar enough to a real Mac. Since only one PCI bus was present in the
>> device tree, when trying to access config registers of bus 1 MorphOS talked
>> to bus 0 instead which of course did not work as devices are on bus 1 and
>> config reg accesses went to bus 0 and got ignored silently because there
>> were no devices on that bus. The devices were still mmio mapped so some of
>> them appeared to work when did not need initialisation but symptoms were
>> failing to setting bus master bit for network card and not finding USB
>> devices that are results of this mismatch between PCI buses. This is fixed
>> by adding an empty/dummy pci bus 0 in the device tree which makes MorphOS
>> notice there are two PCI busses and use the correct one for accessing PCI
>> registers. So there needs to be two PCI buses in the device tree and since
>> devices are on the second one the dummy one needs to be _before_ the second
>> one (this is why I could not patch it from Forth or command line and need
>> this patch).
>>
>> If you can come up with any other patch to fix this (you can test with the
>> MorphOS demo iso) then I'm fine with that but I could not find any other
>> simple way to make this work without multiple PCI bus support in OpenBIOS
>> but that's too much work I don't have time for. (Since the first PCI bus is
>> empty it should not matter too much what info we have about that in device
>> tree now as nothing should access it really.)
>
> I'm not asking that you implement full multiple PCI bus support for OpenBIOS,
> just that you try setting bus-range manually to the correct value from a real
> device tree to see if it makes a difference.
Not sure what would be the correct value and where to change it. If you
give me a patch I can test it.
> Unfortunately my copy of MorphOS (3.7) in my OpenBIOS test repository never
> seems to get past the bootloader so I don't have a way to test it myself or
> know what to look for to know if this has succeeded or not.
It needs the target/ppc/translate.c patch I've sent to the QEMU list
cc-ing you and the command line options in that patch. I'm not sure 3.7
will work, I think you'd need at least 3.8 but the most recent one is 3.10
which I'm using for testing now so maybe you should get a recent one.
Regards,
BALATON Zoltan
More information about the OpenBIOS
mailing list