From 023175b40e49310d32869837a31f38877327b671 Mon Sep 17 00:00:00 2001 From: Nikita Ioffe Date: Thu, 7 Nov 2024 16:03:29 +0000 Subject: [PATCH] ANDROID: GKI: enable options to run GKI as Microdroid guest Starting with android15-6.6 we are planning to support running GKI as Microdroid guest kernel to enable VM use cases that require loading vendor-provided kernel modules into guest VM (e.g. device assignment). Additionally adjust the rockpi4_gki.fragment to address the build breakage caused by changes to the gki_defconfig. Bug: 354274657 Bug: 302467077 Test: tools/bazel run //common:kernel_aarch64_dist Test: tools/bazel run //common:kernel_x86_64_dist Change-Id: Ide66b713a0edee869264ee9dd1def5f21d28c862 Signed-off-by: Nikita Ioffe --- BUILD.bazel | 3 --- arch/arm64/configs/gki_defconfig | 10 ++++++++++ arch/arm64/configs/rockpi4_gki.fragment | 1 + arch/x86/configs/gki_defconfig | 7 +++++++ modules.bzl | 9 +++++++++ 5 files changed, 27 insertions(+), 3 deletions(-) diff --git a/BUILD.bazel b/BUILD.bazel index 4b816b116ed0..dcc8d36c693e 100644 --- a/BUILD.bazel +++ b/BUILD.bazel @@ -903,7 +903,6 @@ pkg_install( _ROCKPI4_MODULE_OUTS = [ # keep sorted - "drivers/block/virtio_blk.ko", "drivers/char/hw_random/virtio-rng.ko", "drivers/clk/clk-rk808.ko", "drivers/cpufreq/cpufreq-dt.ko", @@ -948,9 +947,7 @@ _ROCKPI4_MODULE_OUTS = [ "drivers/thermal/rockchip_thermal.ko", "drivers/usb/host/ohci-hcd.ko", "drivers/usb/host/ohci-platform.ko", - "drivers/virtio/virtio_pci.ko", "drivers/virtio/virtio_pci_legacy_dev.ko", - "drivers/virtio/virtio_pci_modern_dev.ko", "net/core/failover.ko", ] diff --git a/arch/arm64/configs/gki_defconfig b/arch/arm64/configs/gki_defconfig index 96ae04288d1d..aa6a63abfc58 100644 --- a/arch/arm64/configs/gki_defconfig +++ b/arch/arm64/configs/gki_defconfig @@ -270,6 +270,7 @@ CONFIG_NET_ACT_MIRRED=y CONFIG_NET_ACT_SKBEDIT=y CONFIG_NET_ACT_BPF=y CONFIG_VSOCKETS=y +CONFIG_VIRTIO_VSOCKETS=m CONFIG_CGROUP_NET_PRIO=y CONFIG_CAN=m CONFIG_BT=m @@ -309,11 +310,14 @@ CONFIG_BLK_DEV_LOOP=y CONFIG_BLK_DEV_LOOP_MIN_COUNT=16 CONFIG_BLK_DEV_RAM=y CONFIG_BLK_DEV_RAM_SIZE=8192 +CONFIG_VIRTIO_BLK=m CONFIG_BLK_DEV_UBLK=y CONFIG_BLK_DEV_NVME=y CONFIG_NVME_MULTIPATH=y CONFIG_SRAM=y CONFIG_UID_SYS_STATS=y +CONFIG_OPEN_DICE=m +CONFIG_VCPU_STALL_DETECTOR=m CONFIG_SCSI=y # CONFIG_SCSI_PROC_FS is not set CONFIG_BLK_DEV_SD=y @@ -400,7 +404,9 @@ CONFIG_SERIAL_SPRD_CONSOLE=y CONFIG_NULL_TTY=y CONFIG_HVC_DCC=y CONFIG_SERIAL_DEV_BUS=y +CONFIG_VIRTIO_CONSOLE=m CONFIG_HW_RANDOM=y +CONFIG_HW_RANDOM_CCTRNG=m # CONFIG_DEVMEM is not set # CONFIG_DEVPORT is not set # CONFIG_I2C_HELPER_AUTO is not set @@ -553,6 +559,9 @@ CONFIG_RTC_DRV_PL030=y CONFIG_RTC_DRV_PL031=y CONFIG_DMABUF_HEAPS=y CONFIG_UIO=y +CONFIG_VIRTIO_PCI=m +# CONFIG_VIRTIO_PCI_LEGACY is not set +CONFIG_VIRTIO_BALLOON=m CONFIG_VHOST_VSOCK=y CONFIG_STAGING=y CONFIG_ASHMEM=y @@ -700,6 +709,7 @@ CONFIG_TRACE_MMIO_ACCESS=y CONFIG_CRC_CCITT=y CONFIG_XZ_DEC=y CONFIG_SWIOTLB_DYNAMIC=y +CONFIG_DMA_RESTRICTED_POOL=y CONFIG_DMA_CMA=y CONFIG_PRINTK_TIME=y CONFIG_PRINTK_CALLER=y diff --git a/arch/arm64/configs/rockpi4_gki.fragment b/arch/arm64/configs/rockpi4_gki.fragment index 7dffe587e290..b35b9042bb15 100644 --- a/arch/arm64/configs/rockpi4_gki.fragment +++ b/arch/arm64/configs/rockpi4_gki.fragment @@ -77,3 +77,4 @@ CONFIG_HW_RANDOM_VIRTIO=m CONFIG_VIRTIO_PCI=m CONFIG_VIRTIO_BLK=m CONFIG_VIRTIO_NET=m +CONFIG_VIRTIO_PCI_LEGACY=y diff --git a/arch/x86/configs/gki_defconfig b/arch/x86/configs/gki_defconfig index 4b10f2c74ecc..0a6db3bb4b4d 100644 --- a/arch/x86/configs/gki_defconfig +++ b/arch/x86/configs/gki_defconfig @@ -264,6 +264,7 @@ CONFIG_NET_ACT_MIRRED=y CONFIG_NET_ACT_SKBEDIT=y CONFIG_NET_ACT_BPF=y CONFIG_VSOCKETS=y +CONFIG_VIRTIO_VSOCKETS=m CONFIG_CGROUP_NET_PRIO=y CONFIG_CAN=m CONFIG_BT=m @@ -298,11 +299,13 @@ CONFIG_BLK_DEV_LOOP=y CONFIG_BLK_DEV_LOOP_MIN_COUNT=16 CONFIG_BLK_DEV_RAM=y CONFIG_BLK_DEV_RAM_SIZE=8192 +CONFIG_VIRTIO_BLK=m CONFIG_BLK_DEV_UBLK=y CONFIG_BLK_DEV_NVME=y CONFIG_NVME_MULTIPATH=y CONFIG_SRAM=y CONFIG_UID_SYS_STATS=y +CONFIG_VCPU_STALL_DETECTOR=m CONFIG_SCSI=y # CONFIG_SCSI_PROC_FS is not set CONFIG_BLK_DEV_SD=y @@ -380,6 +383,7 @@ CONFIG_SERIAL_SAMSUNG=y CONFIG_SERIAL_SAMSUNG_CONSOLE=y CONFIG_NULL_TTY=y CONFIG_SERIAL_DEV_BUS=y +CONFIG_VIRTIO_CONSOLE=m CONFIG_HW_RANDOM=y # CONFIG_HW_RANDOM_VIA is not set # CONFIG_DEVMEM is not set @@ -517,6 +521,9 @@ CONFIG_RTC_CLASS=y CONFIG_RTC_LIB_KUNIT_TEST=m CONFIG_DMABUF_HEAPS=y CONFIG_UIO=y +CONFIG_VIRTIO_PCI=m +# CONFIG_VIRTIO_PCI_LEGACY is not set +CONFIG_VIRTIO_BALLOON=m CONFIG_VHOST_VSOCK=y CONFIG_STAGING=y CONFIG_ASHMEM=y diff --git a/modules.bzl b/modules.bzl index 50c90b0abdcd..dfd7c709e0dc 100644 --- a/modules.bzl +++ b/modules.bzl @@ -8,11 +8,14 @@ This module contains a full list of kernel modules _COMMON_GKI_MODULES_LIST = [ # keep sorted + "drivers/block/virtio_blk.ko", "drivers/block/zram/zram.ko", "drivers/bluetooth/btbcm.ko", "drivers/bluetooth/btqca.ko", "drivers/bluetooth/btsdio.ko", "drivers/bluetooth/hci_uart.ko", + "drivers/char/virtio_console.ko", + "drivers/misc/vcpu_stall_detector.ko", "drivers/net/can/dev/can-dev.ko", "drivers/net/can/slcan/slcan.ko", "drivers/net/can/vcan.ko", @@ -43,6 +46,9 @@ _COMMON_GKI_MODULES_LIST = [ "drivers/usb/mon/usbmon.ko", "drivers/usb/serial/ftdi_sio.ko", "drivers/usb/serial/usbserial.ko", + "drivers/virtio/virtio_balloon.ko", + "drivers/virtio/virtio_pci.ko", + "drivers/virtio/virtio_pci_modern_dev.ko", "fs/netfs/netfs.ko", "kernel/kheaders.ko", "lib/crypto/libarc4.ko", @@ -75,6 +81,7 @@ _COMMON_GKI_MODULES_LIST = [ "net/rfkill/rfkill.ko", "net/tipc/tipc.ko", "net/tipc/tipc_diag.ko", + "net/vmw_vsock/vmw_vsock_virtio_transport.ko", ] # Deprecated - Use `get_gki_modules_list` function instead. @@ -87,6 +94,8 @@ _ARM_GKI_MODULES_LIST = [ _ARM64_GKI_MODULES_LIST = [ # keep sorted + "drivers/char/hw_random/cctrng.ko", + "drivers/misc/open-dice.ko", "drivers/ptp/ptp_kvm.ko", ]