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

Cédric Le Goater clg at kaod.org
Sun Aug 7 12:05:10 CEST 2016


Hello Mark,

The recent changes in openbios and qemu really improved the support 
of 10.4.11. I can now logon on the raw disk I have and the system 
looks pretty good and stable. All these issues are gone :

	https://www.coreboot.org/pipermail/openbios/2016-June/009436.html

I still need :

	-prom-env boot-device=hd:3,\System\Library\CoreServices\BootX

to boot, but I suppose this is due to the state of the disk which also 
has a macosx 9 on it.
  
However, the network is not detected. This is curious as the command 
'ioreg' does list a rtl8139 with this patchset, see below, and I suppose 
the driver is correct  : 

   28    1 0x55c000   0x1f000    0x1e000    com.apple.iokit.IONetworkingFamily (1.5.0) <6 5 4 3 2>
   29    0 0x57b000   0x5000     0x4000     com.apple.driver.AppleRTL8139Ethernet (1.1.0) <28 16 5 4 3 2>

 
Is there anything I could do to learn a bit more why the adapter is not
showing in the system ?  I did not find anything in the osx logs.

Thanks,
C. 
  

+-o Root  <class IORegistryEntry, retain count 6>
  +-o PowerMac3,1  <class IOPlatformExpertDevice, registered, matched, active, busy 1, retain count 20>
    +-o Core99PE  <class Core99PE, !registered, !matched, active, busy 1, retain count 14>
    | +-o IOPMrootDomain  <class IOPMrootDomain, registered, matched, active, busy 0, retain count 29>
    | | +-o IORootParent  <class IORootParent, !registered, !matched, active, busy 0, retain count 8>
    | | +-o RootDomainUserClient  <class RootDomainUserClient, !registered, !matched, active, busy 0, retain count 5>
    | | +-o RootDomainUserClient  <class RootDomainUserClient, !registered, !matched, active, busy 0, retain count 5>
    | | +-o RootDomainUserClient  <class RootDomainUserClient, !registered, !matched, active, busy 0, retain count 5>
    | | +-o RootDomainUserClient  <class RootDomainUserClient, !registered, !matched, active, busy 0, retain count 5>
    | | +-o RootDomainUserClient  <class RootDomainUserClient, !registered, !matched, active, busy 0, retain count 5>
    | | +-o RootDomainUserClient  <class RootDomainUserClient, !registered, !matched, active, busy 0, retain count 5>
    | | +-o RootDomainUserClient  <class RootDomainUserClient, !registered, !matched, active, busy 0, retain count 5>
    | | +-o RootDomainUserClient  <class RootDomainUserClient, !registered, !matched, active, busy 0, retain count 5>
    | | +-o RootDomainUserClient  <class RootDomainUserClient, !registered, !matched, active, busy 0, retain count 5>
    | | +-o RootDomainUserClient  <class RootDomainUserClient, !registered, !matched, active, busy 0, retain count 5>
    | | +-o RootDomainUserClient  <class RootDomainUserClient, !registered, !matched, active, busy 0, retain count 5>
    | | +-o RootDomainUserClient  <class RootDomainUserClient, !registered, !matched, active, busy 0, retain count 5>
    | | +-o RootDomainUserClient  <class RootDomainUserClient, !registered, !matched, active, busy 0, retain count 5>
    | | +-o RootDomainUserClient  <class RootDomainUserClient, !registered, !matched, active, busy 0, retain count 5>
    | | +-o RootDomainUserClient  <class RootDomainUserClient, !registered, !matched, active, busy 0, retain count 5>
    | | +-o RootDomainUserClient  <class RootDomainUserClient, !registered, !matched, active, busy 0, retain count 5>
    | +-o IOPMUSB99  <class IOPMUSB99, !registered, !matched, active, busy 0, retain count 8>
    | +-o IOPMSlots99  <class IOPMSlots99, !registered, !matched, active, busy 0, retain count 7>
    | +-o options  <class IODTNVRAM, registered, matched, active, busy 0, retain count 6>
    | +-o PowerPC,G4 at 0  <class IOPlatformDevice, registered, matched, active, busy 0, retain count 8>
    | | +-o Core99CPU  <class Core99CPU, registered, matched, active, busy 0, retain count 7>
    | |   +-o IOCPUInterruptController  <class IOCPUInterruptController, registered, matched, active, busy 0, retain count 6>
    | +-o builtin  <class IOPlatformDevice, registered, matched, active, busy 0, retain count 7>
    | +-o cpus  <class IOPlatformDevice, registered, matched, active, busy 0, retain count 8>
    | +-o pci at f2000000  <class IOPlatformDevice, registered, matched, active, busy 1, retain count 11>
    | | +-o AppleMacRiscPCI  <class AppleMacRiscPCI, !registered, !matched, active, busy 2, retain count 14>
    | |   +-o mac-io at C  <class IOPCIDevice, registered, matched, active, busy 0, retain count 16>
    | |   | +-o AppleKeyLargo  <class AppleKeyLargo, registered, matched, active, busy 0, retain count 23>
    | |   |   +-o via-cuda at 16000  <class AppleMacIODevice, registered, matched, active, busy 0, retain count 9>
    | |   |   | +-o AppleVIA  <class AppleVIA, !registered, !matched, active, busy 0, retain count 5>
    | |   |   |   +-o cuda  <class AppleVIADevice, registered, matched, active, busy 0, retain count 6>
    | |   |   |     +-o AppleCuda  <class AppleCuda, registered, matched, active, busy 0, retain count 8>
    | |   |   |       +-o IOCudaADBController  <class IOCudaADBController, !registered, !matched, active, busy 0, retain count 8>
    | |   |   |         +-o 2-00 at 2  <class IOADBDevice, registered, matched, active, busy 0, retain count 6>
    | |   |   |         | +-o AppleADBKeyboard  <class AppleADBKeyboard, registered, matched, active, busy 0, retain count 8>
    | |   |   |         |   +-o IOHIDSystem  <class IOHIDSystem, registered, matched, active, busy 0, retain count 10>
    | |   |   |         |   | +-o IOHIDUserClient  <class IOHIDUserClient, !registered, !matched, active, busy 0, retain count 5>
    | |   |   |         |   | +-o IOHIDParamUserClient  <class IOHIDParamUserClient, !registered, !matched, active, busy 0, retain count 5>
    | |   |   |         |   +-o IOBSDConsole  <class IOBSDConsole, !registered, !matched, active, busy 0, retain count 5>
    | |   |   |         |   +-o IOHIDKeyboardDevice  <class IOHIDKeyboardDevice, registered, matched, active, busy 0, retain count 6>
    | |   |   |         |     +-o IOHIDInterface  <class IOHIDInterface, registered, matched, active, busy 0, retain count 5>
    | |   |   |         +-o 3-00 at 3  <class IOADBDevice, registered, matched, active, busy 0, retain count 6>
    | |   |   |           +-o AppleADBMouseType2  <class AppleADBMouseType2, registered, matched, active, busy 0, retain count 7>
    | |   |   |             +-o IOHIDPointingDevice  <class IOHIDPointingDevice, registered, matched, active, busy 0, retain count 6>
    | |   |   |             | +-o IOHIDInterface  <class IOHIDInterface, registered, matched, active, busy 0, retain count 5>
    | |   |   |             +-o IOHIDSystem  <class IOHIDSystem, registered, matched, active, busy 0, retain count 10>
    | |   |   |               +-o IOHIDUserClient  <class IOHIDUserClient, !registered, !matched, active, busy 0, retain count 5>
    | |   |   |               +-o IOHIDParamUserClient  <class IOHIDParamUserClient, !registered, !matched, active, busy 0, retain count 5>
    | |   |   +-o adb  <class AppleMacIODevice, registered, matched, active, busy 0, retain count 8>
    | |   |   +-o keyboard at 8  <class AppleMacIODevice, registered, matched, active, busy 0, retain count 6>
    | |   |   +-o power-mgt  <class AppleMacIODevice, registered, matched, active, busy 0, retain count 7>
    | |   |   +-o escc at 13000  <class AppleMacIODevice, registered, matched, active, busy 0, retain count 8>
    | |   |   +-o ch-a at 13020  <class AppleMacIODevice, registered, matched, active, busy 0, retain count 6>
    | |   |   +-o ch-b at 13000  <class AppleMacIODevice, registered, matched, active, busy 0, retain count 6>
    | |   |   +-o escc-legacy at 12000  <class AppleMacIODevice, registered, matched, active, busy 0, retain count 8>
    | |   |   +-o ch-a at 12004  <class AppleMacIODevice, registered, matched, active, busy 0, retain count 6>
    | |   |   +-o ch-b at 12000  <class AppleMacIODevice, registered, matched, active, busy 0, retain count 6>
    | |   |   +-o ata-3 at 20000  <class AppleMacIODevice, registered, matched, active, busy 0, retain count 13>
    | |   |   | +-o KeyLargoATA  <class KeyLargoATA, registered, matched, active, busy 0, retain count 6>
    | |   |   |   +-o ATADeviceNub at 0  <class ATADeviceNub, registered, matched, active, busy 0, retain count 6>
    | |   |   |   | +-o IOATABlockStorageDriver  <class IOATABlockStorageDriver, registered, matched, active, busy 0, retain count 7>
    | |   |   |   |   +-o IOATABlockStorageDevice  <class IOATABlockStorageDevice, registered, matched, active, busy 0, retain count 5>
    | |   |   |   |     +-o IOBlockStorageDriver  <class IOBlockStorageDriver, registered, matched, active, busy 0, retain count 7>
    | |   |   |   |       +-o QEMU HARDDISK Media  <class IOMedia, registered, matched, active, busy 0, retain count 10>
    | |   |   |   |         +-o IOMediaBSDClient  <class IOMediaBSDClient, registered, matched, active, busy 0, retain count 5>
    | |   |   |   |         +-o IOApplePartitionScheme  <class IOApplePartitionScheme, !registered, !matched, active, busy 0, retain count 7>
    | |   |   |   |           +-o Apple at 1  <class IOMedia, registered, matched, active, busy 0, retain count 8>
    | |   |   |   |           | +-o IOMediaBSDClient  <class IOMediaBSDClient, registered, matched, active, busy 0, retain count 5>
    | |   |   |   |           +-o Apple_HFS_Untitled_1 at 3  <class IOMedia, registered, matched, active, busy 0, retain count 10>
    | |   |   |   |             +-o IOMediaBSDClient  <class IOMediaBSDClient, registered, matched, active, busy 0, retain count 6>
    | |   |   |   +-o ATADeviceNub at 1  <class ATADeviceNub, registered, matched, active, busy 0, retain count 6>
    | |   |   |     +-o IOATABlockStorageDriver  <class IOATABlockStorageDriver, registered, matched, active, busy 0, retain count 7>
    | |   |   |       +-o IOATABlockStorageDevice  <class IOATABlockStorageDevice, registered, matched, active, busy 0, retain count 5>
    | |   |   |         +-o IOBlockStorageDriver  <class IOBlockStorageDriver, registered, matched, active, busy 0, retain count 7>
    | |   |   |           +-o QEMU HARDDISK Media  <class IOMedia, registered, matched, active, busy 0, retain count 10>
    | |   |   |             +-o IOMediaBSDClient  <class IOMediaBSDClient, registered, matched, active, busy 0, retain count 5>
    | |   |   |             +-o IOApplePartitionScheme  <class IOApplePartitionScheme, !registered, !matched, active, busy 0, retain count 7>
    | |   |   |               +-o Apple at 1  <class IOMedia, registered, matched, active, busy 0, retain count 8>
    | |   |   |               | +-o IOMediaBSDClient  <class IOMediaBSDClient, registered, matched, active, busy 0, retain count 5>
    | |   |   |               +-o Apple_HFS_Untitled_1 at 3  <class IOMedia, registered, matched, active, busy 0, retain count 9>
    | |   |   |                 +-o IOMediaBSDClient  <class IOMediaBSDClient, registered, matched, active, busy 0, retain count 6>
    | |   |   +-o ata-3 at 21000  <class AppleMacIODevice, registered, matched, active, busy 0, retain count 8>
    | |   |   | +-o KeyLargoATA  <class KeyLargoATA, registered, matched, active, busy 0, retain count 5>
    | |   |   |   +-o ATADeviceNub at 0  <class ATADeviceNub, registered, matched, active, busy 0, retain count 6>
    | |   |   |     +-o IOATAPIProtocolTransport  <class IOATAPIProtocolTransport, registered, matched, active, busy 0, retain count 8>
    | |   |   |       +-o IOSCSIPeripheralDeviceNub  <class IOSCSIPeripheralDeviceNub, registered, matched, active, busy 0, retain count 5>
    | |   |   |         +-o IOSCSIPeripheralDeviceType05  <class IOSCSIPeripheralDeviceType05, !registered, !matched, active, busy 0, retain count 7>
    | |   |   |           +-o IODVDServices  <class IODVDServices, registered, matched, active, busy 0, retain count 5>
    | |   |   |             +-o IODVDBlockStorageDriver  <class IODVDBlockStorageDriver, registered, matched, active, busy 0, retain count 7>
    | |   |   |               +-o QEMU QEMU DVD-ROM Media  <class IOCDMedia, registered, matched, active, busy 0, retain count 10>
    | |   |   |                 +-o IOCDMediaBSDClient  <class IOCDMediaBSDClient, registered, matched, active, busy 0, retain count 5>
    | |   |   |                 +-o IOCDPartitionScheme  <class IOCDPartitionScheme, !registered, !matched, active, busy 0, retain count 6>
    | |   |   |                   +-o Untitled 0 at 0  <class IOMedia, registered, matched, active, busy 0, retain count 8>
    | |   |   |                     +-o IOMediaBSDClient  <class IOMediaBSDClient, registered, matched, active, busy 0, retain count 6>
    | |   |   +-o cdrom at 0  <class AppleMacIODevice, registered, matched, active, busy 0, retain count 5>
    | |   |   +-o interrupt-controller at 40000  <class AppleMacIODevice, registered, matched, active, busy 0, retain count 7>
    | |   |     +-o AppleMPICInterruptController  <class AppleMPICInterruptController, registered, matched, active, busy 0, retain count 5>
    | |   +-o usb at D  <class IOPCIDevice, !registered, matched, active, busy 1, retain count 11>
    | |   | +-o AppleUSBOHCI  <class AppleUSBOHCI, !registered, !matched, active, busy 0, retain count 6>
    | |   +-o QEMU,VGA at E  <class IOPCIDevice, registered, matched, active, busy 0, retain count 10>
    | |   | +-o .Display_boot  <class IONDRVFramebuffer, registered, matched, active, busy 0, retain count 10>
    | |   |   +-o display0  <class IODisplayConnect, registered, matched, active, busy 0, retain count 5>
    | |   |   | +-o AppleDisplay  <class AppleDisplay, registered, matched, active, busy 0, retain count 7>
    | |   |   +-o IOFramebufferUserClient  <class IOFramebufferUserClient, !registered, !matched, active, busy 0, retain count 5>
    | |   +-o rtl8139 at F  <class IOPCIDevice, !registered, matched, active, busy 1, retain count 12>
    | |     | {
    | |     |   "removable" = <"network">
    | |     |   "IODeviceMemory" = ({"offset"=0x400,"parent"=({"address"=0xfffffffff2000000,"length"=0x10000}),"length"=0x100},({"address"=0xffffffff82020000,"length"=0x100}))
    | |     |   "interrupts" = <00000001>
    | |     |   "device-id" = <00008139>
    | |     |   "name" = <"rtl8139">
    | |     |   "cache-line-size" = <00000000>
    | |     |   "category" = <"net">
    | |     |   "device_type" = <"network">
    | |     |   "vendor-id" = <000010ec>
    | |     |   "revision-id" = <00000020>
    | |     |   "max-latency" = <00000000>
    | |     |   "subsystem-vendor-id" = <00001af4>
    | |     |   "devsel-speed" = <00000000>
    | |     |   "model" = <"RTL8139 PCI">
    | |     |   "network-type" = <"ethernet">
    | |     |   "IOInterruptControllers" = ("IOInterruptControllerFFF55788")
    | |     |   "min-grant" = <00000000>
    | |     |   "Power Management protected data" = "{ theNumberOfPowerStates = 3, version 1, power state 0 = { capabilityFlags 00000000, outputPowerCharacter 00000000, inputPowerRequirement 00000000, staticP$
    | |     |   "AAPL,address" = <f200040082020000>
    | |     |   "Power Management private data" = "{ this object = 01998100, interested driver = 01998100, driverDesire = 0, deviceDesire = 2, ourDesiredPowerState = 2, previousRequest = 2 }"
    | |     |   "class-code" = <00020000>
    | |     |   "compatible" = <"pci10ec,8139">
    | |     |   "AAPL,phandle" = <fff567f0>
    | |     |   "subsystem-id" = <00001100>
    | |     |   "assigned-addresses" = <01007810000000000000040000000000000001000200781400000000820200000000000000000100>
    | |     |   "reg" = <000078000000000000000000000000000000000001007810000000000000000000000000000001000200781400000000000000000000000000000100>
    | |     |   "IOInterruptSpecifiers" = (<0000001b00000003>)
    | |     | }
    | |     | 
    | |     +-o com_apple_driver_RTL8139  <class com_apple_driver_RTL8139, !registered, !matched, active, busy 0, retain count 6>
    | +-o nvram at fff04000  <class IOPlatformDevice, registered, matched, active, busy 0, retain count 7>
    | | +-o Core99NVRAM  <class Core99NVRAM, !registered, !matched, active, busy 0, retain count 4>
    | +-o uni-n at f8000000  <class IOPlatformDevice, registered, matched, active, busy 0, retain count 7>
    +-o IOResources  <class IOResources, registered, matched, active, busy 0, retain count 14>
      +-o IOHIDSystem  <class IOHIDSystem, registered, matched, active, busy 0, retain count 10>
      | +-o IOHIDUserClient  <class IOHIDUserClient, !registered, !matched, active, busy 0, retain count 5>
      | +-o IOHIDParamUserClient  <class IOHIDParamUserClient, !registered, !matched, active, busy 0, retain count 5>
      +-o com_apple_BootCache  <class com_apple_BootCache, !registered, !matched, active, busy 0, retain count 4>
      +-o IOBSDConsole  <class IOBSDConsole, !registered, !matched, active, busy 0, retain count 5>
      +-o IONetworkStack  <class IONetworkStack, registered, matched, active, busy 0, retain count 5>
      | +-o IONetworkStackUserClient  <class IONetworkStackUserClient, !registered, !matched, active, busy 0, retain count 5>
      +-o com_apple_driver_AudioIPCDevice  <class com_apple_driver_AudioIPCDevice, registered, matched, active, busy 0, retain count 7>
      | +-o com_apple_driver_AudioIPCEngine  <class com_apple_driver_AudioIPCEngine, registered, matched, active, busy 0, retain count 8>
      |   +-o IOAudioEngineUserClient  <class IOAudioEngineUserClient, !registered, !matched, active, busy 0, retain count 6>
      |   +-o IOAudioEngineUserClient  <class IOAudioEngineUserClient, !registered, !matched, active, busy 0, retain count 6>
      |   +-o IOAudioEngineUserClient  <class IOAudioEngineUserClient, !registered, !matched, active, busy 0, retain count 6>
      +-o DigiIO  <class DigiIO, registered, matched, active, busy 0, retain count 4>
      +-o IODisplayWrangler  <class IODisplayWrangler, registered, matched, active, busy 0, retain count 6>
      +-o AppleSCSISubsystemGlobals  <class AppleSCSISubsystemGlobals, registered, matched, active, busy 0, retain count 5>



On 08/05/2016 06:35 PM, 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 2 patches add the basic support routines while the last patch enables
> bus mastering for the rtl8139 card on Apple PPC machines which is required for 
> some OS 9, OS X and MorphOS drivers.
> 
> Signed-off-by: Mark Cave-Ayland <mark.cave-ayland at ilande.co.uk>
> 
> Mark Cave-Ayland (3):
>   pci: introduce ob_pci_enable_bus_master() function
>   pci: add PCI database entry for rtl8139 network card
>   pci: add rtl8139_config_cb() to configure rtl8139 network cards
> 
>  drivers/pci.c          |   27 +++++++++++++++++++++++++++
>  drivers/pci_database.c |    6 ++++++
>  drivers/pci_database.h |    3 +++
>  include/drivers/pci.h  |    1 +
>  4 files changed, 37 insertions(+)
> 




More information about the OpenBIOS mailing list