Thanks to visit codestin.com
Credit goes to github.com

Skip to content

AArch64 support #1125

@michael2012z

Description

@michael2012z

Hi,

Henry(@MrXinWang) and I are developers of ARM. We are working to enable Cloud-hypervisor on AArch64. Now an initial version is ready, although all functionalities are not supported.

As a minimal implementation, it supports a small set of devices: including serial device, RTC and Virtio devices with MMIO transport option. We are about to submit the code as a starting point, all other devices and functionalities will be added in steps.

Before coding, we made an analysis of the gap to fully support AArch64, which could be taken as a TODO list: (updated)

  • Build on AArch64: AArch64 initial build #1168
    • Fix build warnings and errors
    • Add cross-build workflows in PR Check
  • FDT and architecture specific devices: AArch64: Adding AArch64 arch-related files #1223
  • Device Manager:
    • Hide Port-IO
    • Add legacy devices to MMIO bus.
  • Allocators:
    • GsiAllocator: Update IRQ and GSI allocation algorithm.
  • Ioapic: Refactor IOAPIC #1232
    • Now Ioapic is directly referenced in device manager, but it is architecutre specific. A way to improve could be refactoring: introduce a architecture agnostic Interrupt Controller trait. Different architecture provides its own implementation: for X86 it's Ioapic; for Aarch64 it would be GIC.
  • Booting:
  • Virtio:
    • MMIO transport: Add device info to FDT
    • PCI transport: Add PCI bus info to FDT
  • Migration:
    • Enable dependencies for AArch64: kvm-bindings, kvm-ioctls.
  • Vhost-user-*:
    • To be tested and determined.
  • VFIO:
    • To be tested and determined.
  • CI:
    • Update Dockerfile.
    • Get guest disk images for integration tests.
    • Add and setup CI machines.
    • Enable Aarch64 CI.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions