Jump to content

VirtIO-Net support added in Catalina


Leoyzen
 Share

1 post in this topic

Recommended Posts

Earlier I found apple add virtio-net support in catalina:

image.thumb.png.8f4981021fc41385a0d68d5ced586eeb.png

 

And during test, I found a way virtio net work but with some limitation:

  1. do not predifined virtio device in the xml, instead should use virsh-device attach hotplug the nic during clover boot, otherwise the virtio-device will change it's macaddress and can't get an ip address
  2. use boot-args: debug=0x100 and keepsyms=1, otherwise the boot will crash with error

The speed of virtio is awesome, but we definately NEED MORE HELP to make it work more flexiable.

image.png.ee3f7c7e2087428d0ac7631da08b2c4d.png

 

The problem I summaried here:

 

1. the kernel panic when do not add extra boot args; but booting with args , there is no crash or relevant message in log!

here is the kernel panic without extra boot args:

panic(cpu 3 caller 0xffffff8018ee0cee): "m_free: freeing an already freed mbuf"@/BuildRoot/Library/Caches/com.apple.xbs/Sources/xnu/xnu-6153.11.24/bsd/kern/uipc_mbuf.c:4814
Backtrace (CPU 3), Frame : Return Address
0xffffff81228b3a50 : 0xffffff80189419fb mach_kernel : _handle_debugger_trap + 0x47b
0xffffff81228b3aa0 : 0xffffff8018a78d35 mach_kernel : _kdp_i386_trap + 0x155
0xffffff81228b3ae0 : 0xffffff8018a6a79e mach_kernel : _kernel_trap + 0x4ee
0xffffff81228b3b30 : 0xffffff80188e8a40 mach_kernel : _return_from_trap + 0xe0
0xffffff81228b3b50 : 0xffffff80189410e7 mach_kernel : _DebuggerTrapWithState + 0x17
0xffffff81228b3c50 : 0xffffff80189414cb mach_kernel : _panic_trap_to_debugger + 0x21b
0xffffff81228b3ca0 : 0xffffff80190d2a49 mach_kernel : _panic + 0x61
0xffffff81228b3d10 : 0xffffff8018ee0cee mach_kernel : _m_mclfree + 0x114e
0xffffff81228b3da0 : 0xffffff7f9b043dc7 com.apple.driver.AppleVirtIO : __ZN18AppleVirtIONetwork5startEP9IOService + 0x651
0xffffff81228b3de0 : 0xffffff801901d986 mach_kernel : __ZN9IOService14startCandidateEPS_ + 0xf6
0xffffff81228b3e40 : 0xffffff801901d531 mach_kernel : __ZN9IOService15probeCandidatesEP12OSOrderedSet + 0xb21
0xffffff81228b3ef0 : 0xffffff801901c87e mach_kernel : __ZN9IOService14doServiceMatchEj + 0x2ce
0xffffff81228b3f50 : 0xffffff801901f01d mach_kernel : __ZN15_IOConfigThread4mainEPvi + 0x15d
0xffffff81228b3fa0 : 0xffffff80188e813e mach_kernel : _call_continuation + 0x2e
      Kernel Extensions in backtrace:
         com.apple.driver.AppleVirtIO(1.0)[E8BE7597-9A3B-3DA2-9765-5454D2E0FAB1]@0xffffff7f9b042000->0xffffff7f9b065fff
            dependency: com.apple.iokit.IOSerialFamily(11)[6F9E4E0C-4EEF-3F5C-B650-172B0299FC9E]@0xffffff7f9ad5e000
            dependency: com.apple.iokit.IOPCIFamily(2.9)[F2770E7E-657B-3500-8427-77DF6A190D63]@0xffffff7f9932f000
            dependency: com.apple.iokit.IOStorageFamily(2.1)[0358FA7E-B2E2-3261-A143-1F7D546BC871]@0xffffff7f9950c000
            dependency: com.apple.iokit.IONetworkingFamily(3.4)[2C54AF95-A727-3D8A-820C-0DB683516681]@0xffffff7f99265000

BSD process name corresponding to current thread: kernel_task
Boot args: -v keepsyms=1 

Mac OS version:
Not yet set

Kernel version:
Darwin Kernel Version 19.0.0: Tue Sep 17 01:59:51 PDT 2019; root:xnu-6153.11.24~17/RELEASE_X86_64
Kernel UUID: 40B0A1FB-7EFD-373C-AB47-D7E8D18DA3B2
Kernel slide:     0x0000000018600000
Kernel text base: 0xffffff8018800000
__HIB  text base: 0xffffff8018700000
System model name: MacPro5,1 (Mac-F221BEC8)
System shutdown begun: NO
Panic diags file unavailable, panic occurred prior to initialization

System uptime in nanoseconds: 1269248919

2. You have to hotplug the device instead of predefined in the xml, otherwise the macaddress changes every boot time.

It is strange, I try to find out why but after digging the code I realise it maybe a feature? or dsdt related issues?

The only difference I've found in ACPI is "IOFeature" variable, it works when set to 0x38, and random macdress with 0x08.

 

the acpi which not work

image.png.08713c975d4eb41336a8b41621b45425.png

 

There is no more log relevant after adding boot args with "apple-xgbe-debug=0xff".

 

The code I found to get features (maybe wrong), I'm not familar with the apple stuff so I don't understand what it is doing.

image.thumb.png.57ddfadd55fab26972f3ba3c1ce51970.png

 

Some help or point me out the direction will be much appreciate!

@Miezecan you give some comments or advises?

Edited by Leoyzen
Link to comment
Share on other sites

 Share

×
×
  • Create New...