[OpenBIOS] [PATCH 0/5] Enable bus master support for rtl8139 network cards on Apple PPC machines

BALATON Zoltan balaton at eik.bme.hu
Fri Aug 5 22:44:00 CEST 2016

On Fri, 5 Aug 2016, Mark Cave-Ayland wrote:
> On 30/12/15 16:44, Mark Cave-Ayland wrote:
>> This patchset is loosely based on earlier work by BALATON Zoltan <balaton at eik.bme.hu>
>> and provides basic infrastructure to allow OpenBIOS to enable PCI device
>> bus mastering.
>> Following on from discussions on the QEMU mailing list, it seems that Apple's OF
>> enables bus mastering for some PCI devices by default, and as a result some buggy
>> drivers forget to explicitly enable it and hence these devices fail under QEMU's
>> emulation.
>> The first 3 patches add the basic support routines while the last 2 patches enable
>> bus mastering for the rtl8139 card on Apple PPC machines which is required for
>> OS X and MorphOS.
>> Signed-off-by: Mark Cave-Ayland <mark.cave-ayland at ilande.co.uk>
>> Mark Cave-Ayland (5):
>>   pci: introduce ob_pci_enable_bus_master() function
>>   pci: introduce ob_pci_is_bus_master_capable() function
>>   pci: add PCI database entry for rtl8139 network card
>>   pci: add rtl8139_config_cb() to configure rtl8139 network cards
>>   ppc: mark PCI slots 0-2 for Apple PPC machies as bus master capable
>>  openbios-devel/arch/ppc/qemu/init.c   |    9 ++++---
>>  openbios-devel/drivers/pci.c          |   44 +++++++++++++++++++++++++++++++++
>>  openbios-devel/drivers/pci_database.c |    6 +++++
>>  openbios-devel/drivers/pci_database.h |    4 +++
>>  openbios-devel/include/drivers/pci.h  |    2 ++
>>  5 files changed, 62 insertions(+), 3 deletions(-)
> Following up from this, I found out today that the reason OS 9 rtl8139
> drivers don't work in QEMU is due to the same issue, i.e. by default
> Apple OF appears to enable bus mastering upon boot (OpenBIOS currently
> doesn't) and so many driver authors forget to explicitly enable this.
> So taking this patch and making a few minor tweaks I was able to get the
> rtl8139 working in OS 9.2 and surf the web in Classilla :)  I'm not sure
> whether it solves similar issues people were having in 10.4.11 but I'd
> invite people to test and report back.

I'm not sure if this is the correct fix but I've found it before this was 
needed to get RTL8139 working.

Recently I've seen changes in QEMU to calling realize functions for some 
devices that were not realized due to not being connected via a bridge and 
that mentioned that bus master is set on realize and this was needed to 
fix that (or something similar, not sure I got it completely and I've 
forgot it since; I think these were around commit 685f9a3 on QEMU). I've 
hoped this might also fix this issue but haven't tested that yet.

Also on real hardware there's a bridge chip which is currently disabled 
due to OpenBIOS not handling it correctly according to a comment in 

I'm not sure any of this is related to this issue, just mentioning it in 
case it rings a bell for someone.


More information about the OpenBIOS mailing list