[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