Microdroid: Add support for android15-6.6 GKI as guest kernel

Bug: 325991735
Test: build & install virt APEX with android15-6.6 GKI
Test: AVF presubmit tests
Change-Id: I16b5b4e0927cbddd000d17724319bcecd5ab6640
diff --git a/microdroid/Android.bp b/microdroid/Android.bp
index c6d6090..d4158d4 100644
--- a/microdroid/Android.bp
+++ b/microdroid/Android.bp
@@ -646,6 +646,74 @@
     src: ":microdroid_gki-android14-6.1-pkvm_experimental_initrd_debuggable",
 }
 
+///////////////////////////////////////
+// GKI-android15-6.6
+///////////////////////////////////////
+prebuilt_etc {
+    name: "microdroid_gki-android15-6.6.json",
+    src: "microdroid_gki-android15-6.6.json",
+}
+
+avb_add_hash_footer {
+    name: "microdroid_gki-android15-6.6_kernel_signed",
+    defaults: ["microdroid_kernel_signed_defaults"],
+    filename: "microdroid_gki-android15-6.6_kernel_signed",
+    arch: {
+        arm64: {
+            src: ":microdroid_gki_kernel_prebuilts-android15-6.6-arm64",
+        },
+        x86_64: {
+            src: ":microdroid_gki_kernel_prebuilts-android15-6.6-x86_64",
+        },
+    },
+    include_descriptors_from_images: [
+        ":microdroid_gki-android15-6.6_initrd_normal_hashdesc",
+        ":microdroid_gki-android15-6.6_initrd_debug_hashdesc",
+    ],
+}
+
+// HACK: use cc_genrule for arch-specific properties
+cc_genrule {
+    name: "microdroid_gki-android15-6.6_kernel_signed-lz4",
+    out: ["microdroid_gki-android15-6.6_kernel_signed-lz4"],
+    srcs: [":empty_file"],
+    arch: {
+        arm64: {
+            srcs: [":microdroid_gki-android15-6.6_kernel_signed"],
+            exclude_srcs: [":empty_file"],
+        },
+    },
+    tools: ["lz4"],
+    cmd: "$(location lz4) -9 $(in) $(out)",
+}
+
+prebuilt_etc {
+    name: "microdroid_gki-android15-6.6_kernel",
+    filename: "microdroid_gki-android15-6.6_kernel",
+    src: ":empty_file",
+    relative_install_path: "fs",
+    arch: {
+        arm64: {
+            src: ":microdroid_gki-android15-6.6_kernel_signed",
+        },
+        x86_64: {
+            src: ":microdroid_gki-android15-6.6_kernel_signed",
+        },
+    },
+}
+
+avb_gen_vbmeta_image {
+    name: "microdroid_gki-android15-6.6_initrd_normal_hashdesc",
+    defaults: ["microdroid_initrd_normal_defaults"],
+    src: ":microdroid_gki-android15-6.6_initrd_normal",
+}
+
+avb_gen_vbmeta_image {
+    name: "microdroid_gki-android15-6.6_initrd_debug_hashdesc",
+    defaults: ["microdroid_initrd_debug_defaults"],
+    src: ":microdroid_gki-android15-6.6_initrd_debuggable",
+}
+
 python_binary_host {
     name: "extract_microdroid_kernel_hashes",
     srcs: ["extract_microdroid_kernel_hashes.py"],
@@ -657,10 +725,16 @@
     srcs: [":microdroid_kernel"],
     arch: {
         arm64: {
-            srcs: [":microdroid_gki-android14-6.1-pkvm_experimental_kernel_signed"],
+            srcs: [
+                ":microdroid_gki-android14-6.1-pkvm_experimental_kernel_signed",
+                ":microdroid_gki-android15-6.6_kernel_signed",
+            ],
         },
         x86_64: {
-            srcs: [":microdroid_gki-android14-6.1-pkvm_experimental_kernel_signed"],
+            srcs: [
+                ":microdroid_gki-android14-6.1-pkvm_experimental_kernel_signed",
+                ":microdroid_gki-android15-6.6_kernel_signed",
+            ],
         },
     },
     out: ["lib.rs"],
diff --git a/microdroid/initrd/Android.bp b/microdroid/initrd/Android.bp
index 7246f04..9bb4657 100644
--- a/microdroid/initrd/Android.bp
+++ b/microdroid/initrd/Android.bp
@@ -52,6 +52,17 @@
 }
 
 genrule {
+    name: "microdroid_gki-android15-6.6_initrd_gen_arm64",
+    srcs: [
+        ":microdroid_ramdisk",
+        ":microdroid_first_stage_ramdisk",
+        ":microdroid_gki_modules-android15-6.6-arm64",
+    ],
+    out: ["microdroid_initrd.img"],
+    cmd: "cat $(in) > $(out)",
+}
+
+genrule {
     name: "microdroid_gki-android14-6.1-pkvm_experimental_initrd_gen_x86_64",
     srcs: [
         ":microdroid_ramdisk",
@@ -62,6 +73,17 @@
     cmd: "cat $(in) > $(out)",
 }
 
+genrule {
+    name: "microdroid_gki-android15-6.6_initrd_gen_x86_64",
+    srcs: [
+        ":microdroid_ramdisk",
+        ":microdroid_first_stage_ramdisk",
+        ":microdroid_gki_modules-android15-6.6-x86_64",
+    ],
+    out: ["microdroid_initrd.img"],
+    cmd: "cat $(in) > $(out)",
+}
+
 // This contains vbmeta hashes & related (boot)configs which are passed to kernel/init
 genrule {
     name: "microdroid_vbmeta_bootconfig_gen",
@@ -107,6 +129,17 @@
 }
 
 genrule {
+    name: "microdroid_gki-android15-6.6_initrd_debuggable_arm64",
+    tools: ["initrd_bootconfig"],
+    srcs: [
+        ":microdroid_gki-android15-6.6_initrd_gen_arm64",
+        ":microdroid_bootconfig_debuggable_src",
+    ] + bootconfigs_arm64,
+    out: ["microdroid_gki-android15-6.6_initrd_debuggable_arm64"],
+    cmd: "$(location initrd_bootconfig) attach --output $(out) $(in)",
+}
+
+genrule {
     name: "microdroid_initrd_debuggable_x86_64",
     tools: ["initrd_bootconfig"],
     srcs: [
@@ -129,6 +162,17 @@
 }
 
 genrule {
+    name: "microdroid_gki-android15-6.6_initrd_debuggable_x86_64",
+    tools: ["initrd_bootconfig"],
+    srcs: [
+        ":microdroid_gki-android15-6.6_initrd_gen_x86_64",
+        ":microdroid_bootconfig_debuggable_src",
+    ] + bootconfigs_x86_64,
+    out: ["microdroid_gki-android15-6.6_initrd_debuggable_x86_64"],
+    cmd: "$(location initrd_bootconfig) attach --output $(out) $(in)",
+}
+
+genrule {
     name: "microdroid_initrd_normal_arm64",
     tools: ["initrd_bootconfig"],
     srcs: [
@@ -151,6 +195,17 @@
 }
 
 genrule {
+    name: "microdroid_gki-android15-6.6_initrd_normal_arm64",
+    tools: ["initrd_bootconfig"],
+    srcs: [
+        ":microdroid_gki-android15-6.6_initrd_gen_arm64",
+        ":microdroid_bootconfig_normal_src",
+    ] + bootconfigs_arm64,
+    out: ["microdroid_gki-android15-6.6_initrd_normal_arm64"],
+    cmd: "$(location initrd_bootconfig) attach --output $(out) $(in)",
+}
+
+genrule {
     name: "microdroid_initrd_normal_x86_64",
     tools: ["initrd_bootconfig"],
     srcs: [
@@ -172,6 +227,17 @@
     cmd: "$(location initrd_bootconfig) attach --output $(out) $(in)",
 }
 
+genrule {
+    name: "microdroid_gki-android15-6.6_initrd_normal_x86_64",
+    tools: ["initrd_bootconfig"],
+    srcs: [
+        ":microdroid_gki-android15-6.6_initrd_gen_x86_64",
+        ":microdroid_bootconfig_normal_src",
+    ] + bootconfigs_x86_64,
+    out: ["microdroid_gki-android15-6.6_initrd_normal_x86_64"],
+    cmd: "$(location initrd_bootconfig) attach --output $(out) $(in)",
+}
+
 prebuilt_etc {
     name: "microdroid_initrd_debuggable",
     // We don't have ramdisk for architectures other than x86_64 & arm64
@@ -203,6 +269,21 @@
 }
 
 prebuilt_etc {
+    name: "microdroid_gki-android15-6.6_initrd_debuggable",
+    // We don't have ramdisk for architectures other than x86_64 & arm64
+    src: ":empty_file",
+    arch: {
+        arm64: {
+            src: ":microdroid_gki-android15-6.6_initrd_debuggable_arm64",
+        },
+        x86_64: {
+            src: ":microdroid_gki-android15-6.6_initrd_debuggable_x86_64",
+        },
+    },
+    filename: "microdroid_gki-android15-6.6_initrd_debuggable.img",
+}
+
+prebuilt_etc {
     name: "microdroid_initrd_normal",
     // We don't have ramdisk for architectures other than x86_64 & arm64
     src: ":empty_file",
@@ -231,3 +312,18 @@
     },
     filename: "microdroid_gki-android14-6.1-pkvm_experimental_initrd_normal.img",
 }
+
+prebuilt_etc {
+    name: "microdroid_gki-android15-6.6_initrd_normal",
+    // We don't have ramdisk for architectures other than x86_64 & arm64
+    src: ":empty_file",
+    arch: {
+        arm64: {
+            src: ":microdroid_gki-android15-6.6_initrd_normal_arm64",
+        },
+        x86_64: {
+            src: ":microdroid_gki-android15-6.6_initrd_normal_x86_64",
+        },
+    },
+    filename: "microdroid_gki-android15-6.6_initrd_normal.img",
+}
diff --git a/microdroid/microdroid_gki-android15-6.6.json b/microdroid/microdroid_gki-android15-6.6.json
new file mode 100644
index 0000000..f7f6d47
--- /dev/null
+++ b/microdroid/microdroid_gki-android15-6.6.json
@@ -0,0 +1,20 @@
+{
+  "kernel": "/apex/com.android.virt/etc/fs/microdroid_gki-android15-6.6_kernel",
+  "disks": [
+    {
+      "partitions": [
+        {
+          "label": "vbmeta_a",
+          "path": "/apex/com.android.virt/etc/fs/microdroid_vbmeta.img"
+        },
+        {
+          "label": "super",
+          "path": "/apex/com.android.virt/etc/fs/microdroid_super.img"
+        }
+      ],
+      "writable": false
+    }
+  ],
+  "memory_mib": 256,
+  "platform_version": "~1.0"
+}