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
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions