Snap for 10447354 from 5b6f3e14b15882bd5ba12f2c833846b83844406c to mainline-cellbroadcast-release

Change-Id: I1e4d76b4fe75fe098184af4aefdedc11e2812a33
diff --git a/BUILD.bazel b/BUILD.bazel
new file mode 100644
index 0000000..86539a6
--- /dev/null
+++ b/BUILD.bazel
@@ -0,0 +1,6 @@
+package(default_visibility = ["//visibility:public"])
+
+filegroup(
+    name = "prebuilt-runtime-adb",
+    srcs = ["adb"],
+)
diff --git a/TEST_MAPPING b/TEST_MAPPING
new file mode 100644
index 0000000..05075c5
--- /dev/null
+++ b/TEST_MAPPING
@@ -0,0 +1,7 @@
+{
+  "imports": [
+    {
+      "path": "art"
+    }
+  ]
+}
diff --git a/adb b/adb
index 5468031..fb682c3 100755
--- a/adb
+++ b/adb
Binary files differ
diff --git a/mainline/README.md b/mainline/README.md
index 62c0079..c7e93a4 100644
--- a/mainline/README.md
+++ b/mainline/README.md
@@ -9,22 +9,38 @@
 
 To update:
 
-1. Submit the changes that need to go into the prebuilt.
+1. Submit the changes that need to go into the prebuilts.
 
-2. Wait for new builds on branch `aosp-master`, target
-   `mainline_modules_sdks-userdebug`.
+2. Wait for new builds on branches `aosp-master` and/or `aosp-master-throttled`,
+   depending on which prebuilts are required. See `update.py` for details about
+   which branches and targets are used for what.
+
+   In general `mainline_modules_sdks-userdebug` is the slowest build to
+   complete, so look for that to be on the safe side.
 
 3. Run:
 
    ```
-   prebuilts/runtime/mainline/update.py -b aosp-master --build <build id>
+   prebuilts/runtime/mainline/update.py \
+     --aosp-master-build <build id> --aosp-master-throttled-build <build id>
    ```
 
-   where `<build id>` is the ID of the build in step #2.
+   where the two `<build id>` are the builds from step #2.
 
-   The `update-py` script has code to download and unpack all prebuilts, but
-   most of them are commented out (see the `PREBUILT_INSTALL_MODULES` list).
-   Hence you may need to tweak the script to download the prebuilts you need.
+   The script will download, extract and put the right prebuilts in the right
+   places in `prebuilts/runtime`, `prebuilts/module_sdk/conscrypt`, and/or
+   `prebuilts/module_sdk/StatsD`. However, some prebuilts may not have
+   corresponding CI builds so they may not be complete - see `update.py` for
+   details.
 
-4. Try to minimize the updates in the CL created in `prebuilts/runtime`, and
-   ensure they are safe. mast@google.com is happy to help with review.
+4. Try to minimize the updates in the created CLs and ensure they are safe. This
+   usually means reverting some prebuilts back to their old contents, and
+   reverting specific hunks in the Android.bp files. Also, please improve the
+   autogenerated CL descriptions to make them more accurate and describe the
+   reason for the update. Please avoid doing any other changes - in particular
+   there must be no local change in any prebuilt file (not counting
+   Android.bp's). mast@google.com is happy to help with review.
+
+Note that the script takes a `--local-dist` argument that you can use to test
+with prebuilts from a local build in another tree. However, CLs created that way
+should not be submitted.
diff --git a/mainline/conscrypt/apex/com.android.conscrypt-arm.apex b/mainline/conscrypt/apex/com.android.conscrypt-arm.apex
index dcf473f..f02b1f6 100644
--- a/mainline/conscrypt/apex/com.android.conscrypt-arm.apex
+++ b/mainline/conscrypt/apex/com.android.conscrypt-arm.apex
Binary files differ
diff --git a/mainline/conscrypt/apex/com.android.conscrypt-arm64.apex b/mainline/conscrypt/apex/com.android.conscrypt-arm64.apex
index ea1c4ef..7280870 100644
--- a/mainline/conscrypt/apex/com.android.conscrypt-arm64.apex
+++ b/mainline/conscrypt/apex/com.android.conscrypt-arm64.apex
Binary files differ
diff --git a/mainline/conscrypt/apex/com.android.conscrypt-x86.apex b/mainline/conscrypt/apex/com.android.conscrypt-x86.apex
index 6916f7f..8b7783e 100644
--- a/mainline/conscrypt/apex/com.android.conscrypt-x86.apex
+++ b/mainline/conscrypt/apex/com.android.conscrypt-x86.apex
Binary files differ
diff --git a/mainline/conscrypt/apex/com.android.conscrypt-x86_64.apex b/mainline/conscrypt/apex/com.android.conscrypt-x86_64.apex
index 1c64877..676c357 100644
--- a/mainline/conscrypt/apex/com.android.conscrypt-x86_64.apex
+++ b/mainline/conscrypt/apex/com.android.conscrypt-x86_64.apex
Binary files differ
diff --git a/mainline/i18n/apex/com.android.i18n-arm.apex b/mainline/i18n/apex/com.android.i18n-arm.apex
index 538a7f4..31938d6 100644
--- a/mainline/i18n/apex/com.android.i18n-arm.apex
+++ b/mainline/i18n/apex/com.android.i18n-arm.apex
Binary files differ
diff --git a/mainline/i18n/apex/com.android.i18n-arm64.apex b/mainline/i18n/apex/com.android.i18n-arm64.apex
index de343af..904adb7 100644
--- a/mainline/i18n/apex/com.android.i18n-arm64.apex
+++ b/mainline/i18n/apex/com.android.i18n-arm64.apex
Binary files differ
diff --git a/mainline/i18n/apex/com.android.i18n-x86.apex b/mainline/i18n/apex/com.android.i18n-x86.apex
index dd9a44e..b3915b4 100644
--- a/mainline/i18n/apex/com.android.i18n-x86.apex
+++ b/mainline/i18n/apex/com.android.i18n-x86.apex
Binary files differ
diff --git a/mainline/i18n/apex/com.android.i18n-x86_64.apex b/mainline/i18n/apex/com.android.i18n-x86_64.apex
index 18bac5a..acad4a4 100644
--- a/mainline/i18n/apex/com.android.i18n-x86_64.apex
+++ b/mainline/i18n/apex/com.android.i18n-x86_64.apex
Binary files differ
diff --git a/mainline/platform/impl/arm/heapprofd_client_api.so b/mainline/platform/impl/arm/heapprofd_client_api.so
index 09689c0..2433401 100644
--- a/mainline/platform/impl/arm/heapprofd_client_api.so
+++ b/mainline/platform/impl/arm/heapprofd_client_api.so
Binary files differ
diff --git a/mainline/platform/impl/arm/libandroid_runtime_lazy.so b/mainline/platform/impl/arm/libandroid_runtime_lazy.so
new file mode 100644
index 0000000..0395b5c
--- /dev/null
+++ b/mainline/platform/impl/arm/libandroid_runtime_lazy.so
Binary files differ
diff --git a/mainline/platform/impl/arm/libartpalette-system.so b/mainline/platform/impl/arm/libartpalette-system.so
index 7d1d56a..e7747cd 100644
--- a/mainline/platform/impl/arm/libartpalette-system.so
+++ b/mainline/platform/impl/arm/libartpalette-system.so
Binary files differ
diff --git a/mainline/platform/impl/arm/libbinder.so b/mainline/platform/impl/arm/libbinder.so
new file mode 100644
index 0000000..17e677b
--- /dev/null
+++ b/mainline/platform/impl/arm/libbinder.so
Binary files differ
diff --git a/mainline/platform/impl/arm/libbinder_ndk.so b/mainline/platform/impl/arm/libbinder_ndk.so
new file mode 100644
index 0000000..d071c97
--- /dev/null
+++ b/mainline/platform/impl/arm/libbinder_ndk.so
Binary files differ
diff --git a/mainline/platform/impl/arm/libcutils.so b/mainline/platform/impl/arm/libcutils.so
new file mode 100644
index 0000000..25ef09e
--- /dev/null
+++ b/mainline/platform/impl/arm/libcutils.so
Binary files differ
diff --git a/mainline/platform/impl/arm/liblog.so b/mainline/platform/impl/arm/liblog.so
index c850d0d..70a287b 100644
--- a/mainline/platform/impl/arm/liblog.so
+++ b/mainline/platform/impl/arm/liblog.so
Binary files differ
diff --git a/mainline/platform/impl/arm/libutils.so b/mainline/platform/impl/arm/libutils.so
new file mode 100644
index 0000000..2a72a2a
--- /dev/null
+++ b/mainline/platform/impl/arm/libutils.so
Binary files differ
diff --git a/mainline/platform/impl/arm/libvndksupport.so b/mainline/platform/impl/arm/libvndksupport.so
new file mode 100644
index 0000000..563280e
--- /dev/null
+++ b/mainline/platform/impl/arm/libvndksupport.so
Binary files differ
diff --git a/mainline/platform/impl/arm64/heapprofd_client_api.so b/mainline/platform/impl/arm64/heapprofd_client_api.so
index bdaaff3..0686f13 100644
--- a/mainline/platform/impl/arm64/heapprofd_client_api.so
+++ b/mainline/platform/impl/arm64/heapprofd_client_api.so
Binary files differ
diff --git a/mainline/platform/impl/arm64/libandroid_runtime_lazy.so b/mainline/platform/impl/arm64/libandroid_runtime_lazy.so
new file mode 100644
index 0000000..4572528
--- /dev/null
+++ b/mainline/platform/impl/arm64/libandroid_runtime_lazy.so
Binary files differ
diff --git a/mainline/platform/impl/arm64/libartpalette-system.so b/mainline/platform/impl/arm64/libartpalette-system.so
index e290c7e..d4c8623 100644
--- a/mainline/platform/impl/arm64/libartpalette-system.so
+++ b/mainline/platform/impl/arm64/libartpalette-system.so
Binary files differ
diff --git a/mainline/platform/impl/arm64/libbinder.so b/mainline/platform/impl/arm64/libbinder.so
new file mode 100644
index 0000000..9c03528
--- /dev/null
+++ b/mainline/platform/impl/arm64/libbinder.so
Binary files differ
diff --git a/mainline/platform/impl/arm64/libbinder_ndk.so b/mainline/platform/impl/arm64/libbinder_ndk.so
new file mode 100644
index 0000000..fa19050
--- /dev/null
+++ b/mainline/platform/impl/arm64/libbinder_ndk.so
Binary files differ
diff --git a/mainline/platform/impl/arm64/libcutils.so b/mainline/platform/impl/arm64/libcutils.so
new file mode 100644
index 0000000..396d182
--- /dev/null
+++ b/mainline/platform/impl/arm64/libcutils.so
Binary files differ
diff --git a/mainline/platform/impl/arm64/liblog.so b/mainline/platform/impl/arm64/liblog.so
index 9d2c3f5..16a3656 100644
--- a/mainline/platform/impl/arm64/liblog.so
+++ b/mainline/platform/impl/arm64/liblog.so
Binary files differ
diff --git a/mainline/platform/impl/arm64/libutils.so b/mainline/platform/impl/arm64/libutils.so
new file mode 100644
index 0000000..6128532
--- /dev/null
+++ b/mainline/platform/impl/arm64/libutils.so
Binary files differ
diff --git a/mainline/platform/impl/arm64/libvndksupport.so b/mainline/platform/impl/arm64/libvndksupport.so
new file mode 100644
index 0000000..004ee4c
--- /dev/null
+++ b/mainline/platform/impl/arm64/libvndksupport.so
Binary files differ
diff --git a/mainline/platform/impl/x86/heapprofd_client_api.so b/mainline/platform/impl/x86/heapprofd_client_api.so
index 00b53f1..ba508de 100644
--- a/mainline/platform/impl/x86/heapprofd_client_api.so
+++ b/mainline/platform/impl/x86/heapprofd_client_api.so
Binary files differ
diff --git a/mainline/platform/impl/x86/libandroid_runtime_lazy.so b/mainline/platform/impl/x86/libandroid_runtime_lazy.so
new file mode 100644
index 0000000..7c3dd1f
--- /dev/null
+++ b/mainline/platform/impl/x86/libandroid_runtime_lazy.so
Binary files differ
diff --git a/mainline/platform/impl/x86/libartpalette-system.so b/mainline/platform/impl/x86/libartpalette-system.so
index 5764800..6a5272e 100644
--- a/mainline/platform/impl/x86/libartpalette-system.so
+++ b/mainline/platform/impl/x86/libartpalette-system.so
Binary files differ
diff --git a/mainline/platform/impl/x86/libbinder.so b/mainline/platform/impl/x86/libbinder.so
new file mode 100644
index 0000000..19d18d9
--- /dev/null
+++ b/mainline/platform/impl/x86/libbinder.so
Binary files differ
diff --git a/mainline/platform/impl/x86/libbinder_ndk.so b/mainline/platform/impl/x86/libbinder_ndk.so
new file mode 100644
index 0000000..8f456d6
--- /dev/null
+++ b/mainline/platform/impl/x86/libbinder_ndk.so
Binary files differ
diff --git a/mainline/platform/impl/x86/libcutils.so b/mainline/platform/impl/x86/libcutils.so
new file mode 100644
index 0000000..6b03379
--- /dev/null
+++ b/mainline/platform/impl/x86/libcutils.so
Binary files differ
diff --git a/mainline/platform/impl/x86/liblog.so b/mainline/platform/impl/x86/liblog.so
index 3a3d08c..808d8a6 100644
--- a/mainline/platform/impl/x86/liblog.so
+++ b/mainline/platform/impl/x86/liblog.so
Binary files differ
diff --git a/mainline/platform/impl/x86/libutils.so b/mainline/platform/impl/x86/libutils.so
new file mode 100644
index 0000000..2c94683
--- /dev/null
+++ b/mainline/platform/impl/x86/libutils.so
Binary files differ
diff --git a/mainline/platform/impl/x86/libvndksupport.so b/mainline/platform/impl/x86/libvndksupport.so
new file mode 100644
index 0000000..e5c79f2
--- /dev/null
+++ b/mainline/platform/impl/x86/libvndksupport.so
Binary files differ
diff --git a/mainline/platform/impl/x86_64/heapprofd_client_api.so b/mainline/platform/impl/x86_64/heapprofd_client_api.so
index a978c8f..2fc2808 100644
--- a/mainline/platform/impl/x86_64/heapprofd_client_api.so
+++ b/mainline/platform/impl/x86_64/heapprofd_client_api.so
Binary files differ
diff --git a/mainline/platform/impl/x86_64/libandroid_runtime_lazy.so b/mainline/platform/impl/x86_64/libandroid_runtime_lazy.so
new file mode 100644
index 0000000..1692850
--- /dev/null
+++ b/mainline/platform/impl/x86_64/libandroid_runtime_lazy.so
Binary files differ
diff --git a/mainline/platform/impl/x86_64/libartpalette-system.so b/mainline/platform/impl/x86_64/libartpalette-system.so
index 0ebe80a..0a709b9 100644
--- a/mainline/platform/impl/x86_64/libartpalette-system.so
+++ b/mainline/platform/impl/x86_64/libartpalette-system.so
Binary files differ
diff --git a/mainline/platform/impl/x86_64/libbinder.so b/mainline/platform/impl/x86_64/libbinder.so
new file mode 100644
index 0000000..4c5cdd7
--- /dev/null
+++ b/mainline/platform/impl/x86_64/libbinder.so
Binary files differ
diff --git a/mainline/platform/impl/x86_64/libbinder_ndk.so b/mainline/platform/impl/x86_64/libbinder_ndk.so
new file mode 100644
index 0000000..af38bc8
--- /dev/null
+++ b/mainline/platform/impl/x86_64/libbinder_ndk.so
Binary files differ
diff --git a/mainline/platform/impl/x86_64/libcutils.so b/mainline/platform/impl/x86_64/libcutils.so
new file mode 100644
index 0000000..7efe4cc
--- /dev/null
+++ b/mainline/platform/impl/x86_64/libcutils.so
Binary files differ
diff --git a/mainline/platform/impl/x86_64/liblog.so b/mainline/platform/impl/x86_64/liblog.so
index a1c2a43..fcf14f1 100644
--- a/mainline/platform/impl/x86_64/liblog.so
+++ b/mainline/platform/impl/x86_64/liblog.so
Binary files differ
diff --git a/mainline/platform/impl/x86_64/libutils.so b/mainline/platform/impl/x86_64/libutils.so
new file mode 100644
index 0000000..c9838f9
--- /dev/null
+++ b/mainline/platform/impl/x86_64/libutils.so
Binary files differ
diff --git a/mainline/platform/impl/x86_64/libvndksupport.so b/mainline/platform/impl/x86_64/libvndksupport.so
new file mode 100644
index 0000000..96e92b0
--- /dev/null
+++ b/mainline/platform/impl/x86_64/libvndksupport.so
Binary files differ
diff --git a/mainline/platform/sdk/Android.bp b/mainline/platform/sdk/Android.bp
index af934a8..ae07829 100755
--- a/mainline/platform/sdk/Android.bp
+++ b/mainline/platform/sdk/Android.bp
@@ -21,6 +21,17 @@
 }
 
 license {
+    name: "platform-mainline-sdk_external_libcap_license",
+    visibility: ["//visibility:private"],
+    license_kinds: [
+        "SPDX-license-identifier-Apache-2.0",
+        "SPDX-license-identifier-BSD",
+        "SPDX-license-identifier-BSD-3-Clause",
+    ],
+    license_text: ["licenses/external/libcap/NOTICE"],
+}
+
+license {
     name: "platform-mainline-sdk_external_perfetto_license",
     visibility: ["//visibility:private"],
     license_kinds: [
@@ -67,16 +78,36 @@
             },
         },
         android_arm64: {
-            srcs: ["android/arm64/lib/liblog.so"],
+            shared: {
+                srcs: ["android/arm64/lib/liblog.so"],
+            },
+            static: {
+                enabled: false,
+            },
         },
         android_x86_64: {
-            srcs: ["android/x86_64/lib/liblog.so"],
+            shared: {
+                srcs: ["android/x86_64/lib/liblog.so"],
+            },
+            static: {
+                enabled: false,
+            },
         },
         android_arm: {
-            srcs: ["android/arm/lib/liblog.so"],
+            shared: {
+                srcs: ["android/arm/lib/liblog.so"],
+            },
+            static: {
+                enabled: false,
+            },
         },
         android_x86: {
-            srcs: ["android/x86/lib/liblog.so"],
+            shared: {
+                srcs: ["android/x86/lib/liblog.so"],
+            },
+            static: {
+                enabled: false,
+            },
         },
         linux_bionic: {
             compile_multilib: "64",
@@ -237,6 +268,64 @@
 }
 
 cc_prebuilt_library_static {
+    name: "libcap",
+    prefer: false,
+    visibility: ["//visibility:public"],
+    apex_available: [
+        "//apex_available:platform",
+        "com.android.adbd",
+        "com.android.art",
+        "com.android.art.debug",
+        "com.android.compos",
+        "com.android.media.swcodec",
+        "com.android.virt",
+    ],
+    licenses: ["platform-mainline-sdk_external_libcap_license"],
+    host_supported: true,
+    vendor_available: true,
+    product_available: true,
+    export_include_dirs: ["common_os/include/external/libcap/libcap/include"],
+    target: {
+        host: {
+            enabled: false,
+        },
+        android: {
+            compile_multilib: "both",
+        },
+        android_arm64: {
+            srcs: ["android/arm64/lib/libcap.a"],
+        },
+        android_x86_64: {
+            srcs: ["android/x86_64/lib/libcap.a"],
+        },
+        android_arm: {
+            srcs: ["android/arm/lib/libcap.a"],
+        },
+        android_x86: {
+            srcs: ["android/x86/lib/libcap.a"],
+        },
+        linux_bionic: {
+            compile_multilib: "64",
+        },
+        linux_bionic_x86_64: {
+            enabled: true,
+            srcs: ["linux_bionic/x86_64/lib/libcap.a"],
+        },
+        linux_glibc: {
+            compile_multilib: "both",
+        },
+        linux_glibc_x86_64: {
+            enabled: true,
+            srcs: ["linux_glibc/x86_64/lib/libcap.a"],
+        },
+        linux_glibc_x86: {
+            enabled: true,
+            srcs: ["linux_glibc/x86/lib/libcap.a"],
+        },
+    },
+}
+
+cc_prebuilt_library_static {
     name: "libperfetto_client_experimental",
     prefer: false,
     visibility: ["//visibility:public"],
diff --git a/mainline/platform/sdk/android/arm/lib/libcap.a b/mainline/platform/sdk/android/arm/lib/libcap.a
new file mode 100644
index 0000000..2645aa6
--- /dev/null
+++ b/mainline/platform/sdk/android/arm/lib/libcap.a
Binary files differ
diff --git a/mainline/platform/sdk/android/arm64/lib/libcap.a b/mainline/platform/sdk/android/arm64/lib/libcap.a
new file mode 100644
index 0000000..a4aec1c
--- /dev/null
+++ b/mainline/platform/sdk/android/arm64/lib/libcap.a
Binary files differ
diff --git a/mainline/platform/sdk/android/x86/lib/libcap.a b/mainline/platform/sdk/android/x86/lib/libcap.a
new file mode 100644
index 0000000..f61704d
--- /dev/null
+++ b/mainline/platform/sdk/android/x86/lib/libcap.a
Binary files differ
diff --git a/mainline/platform/sdk/android/x86_64/lib/libcap.a b/mainline/platform/sdk/android/x86_64/lib/libcap.a
new file mode 100644
index 0000000..b4bbc45
--- /dev/null
+++ b/mainline/platform/sdk/android/x86_64/lib/libcap.a
Binary files differ
diff --git a/mainline/platform/sdk/common_os/include/external/libcap/libcap/include/sys/capability.h b/mainline/platform/sdk/common_os/include/external/libcap/libcap/include/sys/capability.h
new file mode 100644
index 0000000..ac13c12
--- /dev/null
+++ b/mainline/platform/sdk/common_os/include/external/libcap/libcap/include/sys/capability.h
@@ -0,0 +1,216 @@
+/*
+ * <sys/capability.h>
+ *
+ * Copyright (C) 1997   Aleph One
+ * Copyright (C) 1997,8, 2008,19,20 Andrew G. Morgan <morgan@kernel.org>
+ *
+ * defunct POSIX.1e Standard: 25.2 Capabilities           <sys/capability.h>
+ */
+
+#ifndef _SYS_CAPABILITY_H
+#define _SYS_CAPABILITY_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/*
+ * This file complements the kernel file by providing prototype
+ * information for the user library.
+ */
+
+#include <sys/types.h>
+#include <stdint.h>
+#include <linux/types.h>
+
+#ifndef __user
+#define __user
+#endif
+#include <linux/capability.h>
+
+/*
+ * POSIX capability types
+ */
+
+/*
+ * Opaque capability handle (defined internally by libcap)
+ * internal capability representation
+ */
+typedef struct _cap_struct *cap_t;
+
+/* "external" capability representation is a (void *) */
+
+/*
+ * This is the type used to identify capabilities
+ */
+
+typedef int cap_value_t;
+
+/*
+ * libcap initialized first unnamed capability of the running kernel.
+ * capsh includes a runtime test to flag when this is larger than
+ * what is known to libcap... Time for a new libcap release!
+ */
+extern cap_value_t cap_max_bits(void);
+
+/*
+ * Set identifiers
+ */
+typedef enum {
+    CAP_EFFECTIVE = 0,                 /* Specifies the effective flag */
+    CAP_PERMITTED = 1,                 /* Specifies the permitted flag */
+    CAP_INHERITABLE = 2                /* Specifies the inheritable flag */
+} cap_flag_t;
+
+typedef enum {
+    CAP_IAB_INH = 2,
+    CAP_IAB_AMB = 3,
+    CAP_IAB_BOUND = 4
+} cap_iab_vector_t;
+
+/*
+ * An opaque generalization of the inheritable bits that includes both
+ * what ambient bits to raise and what bounding bits to *lower* (aka
+ * drop).  None of these bits once set, using cap_iab_set(), affect
+ * the running process but are consulted, through the execve() system
+ * call, by the kernel. Note, the ambient bits ('A') of the running
+ * process are fragile with respect to other aspects of the "posix"
+ * (cap_t) operations: most importantly, 'A' cannot ever hold bits not
+ * present in the intersection of 'pI' and 'pP'. The kernel
+ * immediately drops all ambient caps whenever such a situation
+ * arises. Typically, the ambient bits are used to support a naive
+ * capability inheritance model - at odds with the POSIX (sic) model
+ * of inheritance where inherited (pI) capabilities need to also be
+ * wanted by the executed binary (fI) in order to become raised
+ * through exec.
+ */
+typedef struct cap_iab_s *cap_iab_t;
+
+/*
+ * These are the states available to each capability
+ */
+typedef enum {
+    CAP_CLEAR=0,                            /* The flag is cleared/disabled */
+    CAP_SET=1                                    /* The flag is set/enabled */
+} cap_flag_value_t;
+
+/*
+ * User-space capability manipulation routines
+ */
+typedef unsigned cap_mode_t;
+#define CAP_MODE_UNCERTAIN    ((cap_mode_t) 0)
+#define CAP_MODE_NOPRIV       ((cap_mode_t) 1)
+#define CAP_MODE_PURE1E_INIT  ((cap_mode_t) 2)
+#define CAP_MODE_PURE1E       ((cap_mode_t) 3)
+
+/* libcap/cap_alloc.c */
+extern cap_t      cap_dup(cap_t);
+extern int        cap_free(void *);
+extern cap_t      cap_init(void);
+extern cap_iab_t  cap_iab_init(void);
+
+/* libcap/cap_flag.c */
+extern int     cap_get_flag(cap_t, cap_value_t, cap_flag_t, cap_flag_value_t *);
+extern int     cap_set_flag(cap_t, cap_flag_t, int, const cap_value_t *,
+			    cap_flag_value_t);
+extern int     cap_clear(cap_t);
+extern int     cap_clear_flag(cap_t, cap_flag_t);
+
+extern cap_flag_value_t cap_iab_get_vector(cap_iab_t, cap_iab_vector_t,
+					 cap_value_t);
+extern int     cap_iab_set_vector(cap_iab_t, cap_iab_vector_t, cap_value_t,
+				cap_flag_value_t);
+extern int     cap_iab_fill(cap_iab_t, cap_iab_vector_t, cap_t, cap_flag_t);
+
+/* libcap/cap_file.c */
+extern cap_t   cap_get_fd(int);
+extern cap_t   cap_get_file(const char *);
+extern uid_t   cap_get_nsowner(cap_t);
+extern int     cap_set_fd(int, cap_t);
+extern int     cap_set_file(const char *, cap_t);
+extern int     cap_set_nsowner(cap_t, uid_t);
+
+/* libcap/cap_proc.c */
+extern cap_t   cap_get_proc(void);
+extern cap_t   cap_get_pid(pid_t);
+extern int     cap_set_proc(cap_t);
+
+extern int     cap_get_bound(cap_value_t);
+extern int     cap_drop_bound(cap_value_t);
+#define CAP_IS_SUPPORTED(cap)  (cap_get_bound(cap) >= 0)
+
+extern int     cap_get_ambient(cap_value_t);
+extern int     cap_set_ambient(cap_value_t, cap_flag_value_t);
+extern int     cap_reset_ambient(void);
+#define CAP_AMBIENT_SUPPORTED() (cap_get_ambient(CAP_CHOWN) >= 0)
+
+/* libcap/cap_extint.c */
+extern ssize_t cap_size(cap_t);
+extern ssize_t cap_copy_ext(void *, cap_t, ssize_t);
+extern cap_t   cap_copy_int(const void *);
+
+/* libcap/cap_text.c */
+extern cap_t   cap_from_text(const char *);
+extern char *  cap_to_text(cap_t, ssize_t *);
+extern int     cap_from_name(const char *, cap_value_t *);
+extern char *  cap_to_name(cap_value_t);
+
+extern char *     cap_iab_to_text(cap_iab_t iab);
+extern cap_iab_t  cap_iab_from_text(const char *text);
+
+#define CAP_DIFFERS(result, flag)  (((result) & (1 << (flag))) != 0)
+extern int     cap_compare(cap_t, cap_t);
+
+/* libcap/cap_proc.c */
+extern void cap_set_syscall(long int (*new_syscall)(long int,
+				long int, long int, long int),
+			    long int (*new_syscall6)(long int,
+				long int, long int, long int,
+				long int, long int, long int));
+
+extern int cap_set_mode(cap_mode_t flavor);
+extern cap_mode_t cap_get_mode(void);
+extern const char *cap_mode_name(cap_mode_t flavor);
+
+extern unsigned cap_get_secbits(void);
+extern int cap_set_secbits(unsigned bits);
+
+extern int cap_setuid(uid_t uid);
+extern int cap_setgroups(gid_t gid, size_t ngroups, const gid_t groups[]);
+
+extern cap_iab_t cap_iab_get_proc(void);
+extern int cap_iab_set_proc(cap_iab_t iab);
+
+typedef struct cap_launch_s *cap_launch_t;
+
+extern cap_launch_t cap_new_launcher(const char *arg0, const char * const *argv,
+				     const char * const *envp);
+extern void cap_launcher_callback(cap_launch_t attr,
+				  int (callback_fn)(void *detail));
+extern void cap_launcher_setuid(cap_launch_t attr, uid_t uid);
+extern void cap_launcher_setgroups(cap_launch_t attr, gid_t gid,
+				   int ngroups, const gid_t *groups);
+extern void cap_launcher_set_mode(cap_launch_t attr, cap_mode_t flavor);
+extern cap_iab_t cap_launcher_set_iab(cap_launch_t attr, cap_iab_t iab);
+extern void cap_launcher_set_chroot(cap_launch_t attr, const char *chroot);
+extern pid_t cap_launch(cap_launch_t attr, void *data);
+
+/*
+ * system calls - look to libc for function to system call
+ * mapping. Note, libcap does not use capset directly, but permits the
+ * cap_set_syscall() to redirect the system call function.
+ */
+extern int capget(cap_user_header_t header, cap_user_data_t data);
+extern int capset(cap_user_header_t header, const cap_user_data_t data);
+
+/* deprecated - use cap_get_pid() */
+extern int capgetp(pid_t pid, cap_t cap_d);
+
+/* not valid with filesystem capability support - use cap_set_proc() */
+extern int capsetp(pid_t pid, cap_t cap_d);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _SYS_CAPABILITY_H */
diff --git a/mainline/platform/sdk/common_os/include/external/libcap/libcap/include/sys/securebits.h b/mainline/platform/sdk/common_os/include/external/libcap/libcap/include/sys/securebits.h
new file mode 100644
index 0000000..14cf3c5
--- /dev/null
+++ b/mainline/platform/sdk/common_os/include/external/libcap/libcap/include/sys/securebits.h
@@ -0,0 +1,22 @@
+/*
+ * <sys/securebits.h>
+ * Copyright (C) 2010	Serge Hallyn <serue@us.ibm.com>
+ */
+
+#ifndef _SYS_SECUREBITS_H
+#define _SYS_SECUREBITS_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#ifndef __user
+#define __user
+#endif
+#include <linux/securebits.h>
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _SYS_SECUREBITS_H */
diff --git a/mainline/platform/sdk/common_os/include/external/libcap/libcap/include/uapi/linux/capability.h b/mainline/platform/sdk/common_os/include/external/libcap/libcap/include/uapi/linux/capability.h
new file mode 100644
index 0000000..09b5563
--- /dev/null
+++ b/mainline/platform/sdk/common_os/include/external/libcap/libcap/include/uapi/linux/capability.h
@@ -0,0 +1,426 @@
+/*
+ * This is <linux/capability.h>
+ *
+ * Andrew G. Morgan <morgan@kernel.org>
+ * Alexander Kjeldaas <astor@guardian.no>
+ * with help from Aleph1, Roland Buresund and Andrew Main.
+ *
+ * See here for the libcap library ("POSIX draft" compliance):
+ *
+ * https://git.kernel.org/pub/scm/libs/libcap/libcap.git/refs/
+ * http://www.kernel.org/pub/linux/libs/security/linux-privs/
+ */
+
+#ifndef _UAPI_LINUX_CAPABILITY_H
+#define _UAPI_LINUX_CAPABILITY_H
+
+#include <linux/types.h>
+
+/* User-level do most of the mapping between kernel and user
+   capabilities based on the version tag given by the kernel. The
+   kernel might be somewhat backwards compatible, but don't bet on
+   it. */
+
+/* Note, cap_t, is defined by POSIX (draft) to be an "opaque" pointer to
+   a set of three capability sets.  The transposition of 3*the
+   following structure to such a composite is better handled in a user
+   library since the draft standard requires the use of malloc/free
+   etc.. */
+
+#define _LINUX_CAPABILITY_VERSION_1  0x19980330
+#define _LINUX_CAPABILITY_U32S_1     1
+
+#define _LINUX_CAPABILITY_VERSION_2  0x20071026  /* deprecated - use v3 */
+#define _LINUX_CAPABILITY_U32S_2     2
+
+#define _LINUX_CAPABILITY_VERSION_3  0x20080522
+#define _LINUX_CAPABILITY_U32S_3     2
+
+typedef struct __user_cap_header_struct {
+	__u32 version;
+	int pid;
+} *cap_user_header_t;
+
+typedef struct __user_cap_data_struct {
+        __u32 effective;
+        __u32 permitted;
+        __u32 inheritable;
+} *cap_user_data_t;
+
+
+#define VFS_CAP_REVISION_MASK	0xFF000000
+#define VFS_CAP_REVISION_SHIFT	24
+#define VFS_CAP_FLAGS_MASK	~VFS_CAP_REVISION_MASK
+#define VFS_CAP_FLAGS_EFFECTIVE	0x000001
+
+#define VFS_CAP_REVISION_1	0x01000000
+#define VFS_CAP_U32_1           1
+#define XATTR_CAPS_SZ_1         (sizeof(__le32)*(1 + 2*VFS_CAP_U32_1))
+
+#define VFS_CAP_REVISION_2	0x02000000
+#define VFS_CAP_U32_2           2
+#define XATTR_CAPS_SZ_2         (sizeof(__le32)*(1 + 2*VFS_CAP_U32_2))
+
+#define VFS_CAP_REVISION_3	0x03000000
+#define VFS_CAP_U32_3           VFS_CAP_U32_2
+#define XATTR_CAPS_SZ_3         (sizeof(__le32)+XATTR_CAPS_SZ_2)
+
+/*
+ * Kernel capabilities default to v2. The v3 VFS caps are only used,
+ * at present, for namespace specific filesystem capabilities.
+ */
+#define XATTR_CAPS_SZ           XATTR_CAPS_SZ_2
+#define VFS_CAP_U32             VFS_CAP_U32_2
+#define VFS_CAP_REVISION	VFS_CAP_REVISION_2
+
+#define _VFS_CAP_DATA_HEAD \
+	__le32 magic_etc;            /* Little endian */ \
+	struct {                                         \
+		__le32 permitted;    /* Little endian */ \
+		__le32 inheritable;  /* Little endian */ \
+	} data[VFS_CAP_U32]
+
+struct vfs_cap_data {
+	_VFS_CAP_DATA_HEAD;
+};
+
+struct vfs_ns_cap_data {
+	_VFS_CAP_DATA_HEAD;
+	__le32 rootid;
+};
+
+#ifndef __KERNEL__
+
+/*
+ * Backwardly compatible definition for source code - trapped in a
+ * 32-bit world. If you find you need this, please consider using
+ * libcap to untrap yourself...
+ */
+#define _LINUX_CAPABILITY_VERSION  _LINUX_CAPABILITY_VERSION_1
+#define _LINUX_CAPABILITY_U32S     _LINUX_CAPABILITY_U32S_1
+
+#endif
+
+
+/**
+ ** POSIX-draft defined capabilities.
+ **/
+
+/* In a system with the [_POSIX_CHOWN_RESTRICTED] option defined, this
+   overrides the restriction of changing file ownership and group
+   ownership. */
+
+#define CAP_CHOWN            0
+
+/* Override all DAC access, including ACL execute access if
+   [_POSIX_ACL] is defined. Excluding DAC access covered by
+   CAP_LINUX_IMMUTABLE. */
+
+#define CAP_DAC_OVERRIDE     1
+
+/* Overrides all DAC restrictions regarding read and search on files
+   and directories, including ACL restrictions if [_POSIX_ACL] is
+   defined. Excluding DAC access covered by CAP_LINUX_IMMUTABLE. */
+
+#define CAP_DAC_READ_SEARCH  2
+
+/* Overrides all restrictions about allowed operations on files, where
+   file owner ID must be equal to the user ID, except where CAP_FSETID
+   is applicable. It doesn't override MAC and DAC restrictions. */
+
+#define CAP_FOWNER           3
+
+/* Overrides the following restrictions that the effective user ID
+   shall match the file owner ID when setting the S_ISUID and S_ISGID
+   bits on that file; that the effective group ID (or one of the
+   supplementary group IDs) shall match the file owner ID when setting
+   the S_ISGID bit on that file; that the S_ISUID and S_ISGID bits are
+   cleared on successful return from chown(2) (not implemented). */
+
+#define CAP_FSETID           4
+
+/* Overrides the restriction that the real or effective user ID of a
+   process sending a signal must match the real or effective user ID
+   of the process receiving the signal. */
+
+#define CAP_KILL             5
+
+/* Allows setgid(2) manipulation */
+/* Allows setgroups(2) */
+/* Allows forged gids on socket credentials passing. */
+
+#define CAP_SETGID           6
+
+/* Allows set*uid(2) manipulation (including fsuid). */
+/* Allows forged pids on socket credentials passing. */
+
+#define CAP_SETUID           7
+
+
+/**
+ ** Linux-specific capabilities
+ **/
+
+/* Without VFS support for capabilities:
+ *   Transfer any capability in your permitted set to any pid,
+ *   remove any capability in your permitted set from any pid
+ * With VFS support for capabilities (neither of above, but)
+ *   Add any capability from current's capability bounding set
+ *       to the current process' inheritable set
+ *   Allow taking bits out of capability bounding set
+ *   Allow modification of the securebits for a process
+ */
+
+#define CAP_SETPCAP          8
+
+/* Allow modification of S_IMMUTABLE and S_APPEND file attributes */
+
+#define CAP_LINUX_IMMUTABLE  9
+
+/* Allows binding to TCP/UDP sockets below 1024 */
+/* Allows binding to ATM VCIs below 32 */
+
+#define CAP_NET_BIND_SERVICE 10
+
+/* Allow broadcasting, listen to multicast */
+
+#define CAP_NET_BROADCAST    11
+
+/* Allow interface configuration */
+/* Allow administration of IP firewall, masquerading and accounting */
+/* Allow setting debug option on sockets */
+/* Allow modification of routing tables */
+/* Allow setting arbitrary process / process group ownership on
+   sockets */
+/* Allow binding to any address for transparent proxying (also via NET_RAW) */
+/* Allow setting TOS (type of service) */
+/* Allow setting promiscuous mode */
+/* Allow clearing driver statistics */
+/* Allow multicasting */
+/* Allow read/write of device-specific registers */
+/* Allow activation of ATM control sockets */
+
+#define CAP_NET_ADMIN        12
+
+/* Allow use of RAW sockets */
+/* Allow use of PACKET sockets */
+/* Allow binding to any address for transparent proxying (also via NET_ADMIN) */
+
+#define CAP_NET_RAW          13
+
+/* Allow locking of shared memory segments */
+/* Allow mlock and mlockall (which doesn't really have anything to do
+   with IPC) */
+
+#define CAP_IPC_LOCK         14
+
+/* Override IPC ownership checks */
+
+#define CAP_IPC_OWNER        15
+
+/* Insert and remove kernel modules - modify kernel without limit */
+#define CAP_SYS_MODULE       16
+
+/* Allow ioperm/iopl access */
+/* Allow sending USB messages to any device via /dev/bus/usb */
+
+#define CAP_SYS_RAWIO        17
+
+/* Allow use of chroot() */
+
+#define CAP_SYS_CHROOT       18
+
+/* Allow ptrace() of any process */
+
+#define CAP_SYS_PTRACE       19
+
+/* Allow configuration of process accounting */
+
+#define CAP_SYS_PACCT        20
+
+/* Allow configuration of the secure attention key */
+/* Allow administration of the random device */
+/* Allow examination and configuration of disk quotas */
+/* Allow setting the domainname */
+/* Allow setting the hostname */
+/* Allow calling bdflush() */
+/* Allow mount() and umount(), setting up new smb connection */
+/* Allow some autofs root ioctls */
+/* Allow nfsservctl */
+/* Allow VM86_REQUEST_IRQ */
+/* Allow to read/write pci config on alpha */
+/* Allow irix_prctl on mips (setstacksize) */
+/* Allow flushing all cache on m68k (sys_cacheflush) */
+/* Allow removing semaphores */
+/* Used instead of CAP_CHOWN to "chown" IPC message queues, semaphores
+   and shared memory */
+/* Allow locking/unlocking of shared memory segment */
+/* Allow turning swap on/off */
+/* Allow forged pids on socket credentials passing */
+/* Allow setting readahead and flushing buffers on block devices */
+/* Allow setting geometry in floppy driver */
+/* Allow turning DMA on/off in xd driver */
+/* Allow administration of md devices (mostly the above, but some
+   extra ioctls) */
+/* Allow tuning the ide driver */
+/* Allow access to the nvram device */
+/* Allow administration of apm_bios, serial and bttv (TV) device */
+/* Allow manufacturer commands in isdn CAPI support driver */
+/* Allow reading non-standardized portions of pci configuration space */
+/* Allow DDI debug ioctl on sbpcd driver */
+/* Allow setting up serial ports */
+/* Allow sending raw qic-117 commands */
+/* Allow enabling/disabling tagged queuing on SCSI controllers and sending
+   arbitrary SCSI commands */
+/* Allow setting encryption key on loopback filesystem */
+/* Allow setting zone reclaim policy */
+
+#define CAP_SYS_ADMIN        21
+
+/* Allow use of reboot() */
+
+#define CAP_SYS_BOOT         22
+
+/* Allow raising priority and setting priority on other (different
+   UID) processes */
+/* Allow use of FIFO and round-robin (realtime) scheduling on own
+   processes and setting the scheduling algorithm used by another
+   process. */
+/* Allow setting cpu affinity on other processes */
+
+#define CAP_SYS_NICE         23
+
+/* Override resource limits. Set resource limits. */
+/* Override quota limits. */
+/* Override reserved space on ext2 filesystem */
+/* Modify data journaling mode on ext3 filesystem (uses journaling
+   resources) */
+/* NOTE: ext2 honors fsuid when checking for resource overrides, so
+   you can override using fsuid too */
+/* Override size restrictions on IPC message queues */
+/* Allow more than 64hz interrupts from the real-time clock */
+/* Override max number of consoles on console allocation */
+/* Override max number of keymaps */
+
+#define CAP_SYS_RESOURCE     24
+
+/* Allow manipulation of system clock */
+/* Allow irix_stime on mips */
+/* Allow setting the real-time clock */
+
+#define CAP_SYS_TIME         25
+
+/* Allow configuration of tty devices */
+/* Allow vhangup() of tty */
+
+#define CAP_SYS_TTY_CONFIG   26
+
+/* Allow the privileged aspects of mknod() */
+
+#define CAP_MKNOD            27
+
+/* Allow taking of leases on files */
+
+#define CAP_LEASE            28
+
+/* Allow writing the audit log via unicast netlink socket */
+
+#define CAP_AUDIT_WRITE      29
+
+/* Allow configuration of audit via unicast netlink socket */
+
+#define CAP_AUDIT_CONTROL    30
+
+/* Set capabilities on files. */
+
+#define CAP_SETFCAP	     31
+
+/* Override MAC access.
+   The base kernel enforces no MAC policy.
+   An LSM may enforce a MAC policy, and if it does and it chooses
+   to implement capability based overrides of that policy, this is
+   the capability it should use to do so. */
+
+#define CAP_MAC_OVERRIDE     32
+
+/* Allow MAC configuration or state changes.
+   The base kernel requires no MAC configuration.
+   An LSM may enforce a MAC policy, and if it does and it chooses
+   to implement capability based checks on modifications to that
+   policy or the data required to maintain it, this is the
+   capability it should use to do so. */
+
+#define CAP_MAC_ADMIN        33
+
+/* Allow configuring the kernel's syslog (printk behaviour) */
+
+#define CAP_SYSLOG           34
+
+/* Allow triggering something that will wake the system */
+
+#define CAP_WAKE_ALARM            35
+
+/* Allow preventing system suspends */
+
+#define CAP_BLOCK_SUSPEND    36
+
+/* Allow reading the audit log via multicast netlink socket */
+
+#define CAP_AUDIT_READ       37
+
+/* Allow system performance and observability privileged operations using
+ * perf_events, i915_perf and other kernel subsystems. */
+
+#define CAP_PERFMON	     38
+
+/*
+ * CAP_BPF allows the following BPF operations:
+ * - Creating all types of BPF maps
+ * - Advanced verifier features
+ *   - Indirect variable access
+ *   - Bounded loops
+ *   - BPF to BPF function calls
+ *   - Scalar precision tracking
+ *   - Larger complexity limits
+ *   - Dead code elimination
+ *   - And potentially other features
+ * - Loading BPF Type Format (BTF) data
+ * - Retrieve xlated and JITed code of BPF programs
+ * - Use bpf_spin_lock() helper
+ *
+ * CAP_PERFMON relaxes the verifier checks further:
+ * - BPF progs can use of pointer-to-integer conversions
+ * - speculation attack hardening measures are bypassed
+ * - bpf_probe_read to read arbitrary kernel memory is allowed
+ * - bpf_trace_printk to print kernel memory is allowed
+ *
+ * CAP_SYS_ADMIN is required to use bpf_probe_write_user.
+ *
+ * CAP_SYS_ADMIN is required to iterate system wide loaded
+ * programs, maps, links, BTFs and convert their IDs to file descriptors.
+ *
+ * CAP_PERFMON and CAP_BPF are required to load tracing programs.
+ * CAP_NET_ADMIN and CAP_BPF are required to load networking programs.
+ */
+
+#define CAP_BPF		     39
+
+/* Allow checkpoint/restore related operations */
+/* Allow PID selection during clone3() */
+/* Allow writing to ns_last_pid */
+
+#define CAP_CHECKPOINT_RESTORE 40
+
+#define CAP_LAST_CAP         CAP_CHECKPOINT_RESTORE
+
+#define cap_valid(x) ((x) >= 0 && (x) <= CAP_LAST_CAP)
+
+/*
+ * Bit location of each capability (used by user-space library and kernel)
+ */
+
+#define CAP_TO_INDEX(x)     ((x) >> 5)        /* 1 << 5 == bits in __u32 */
+#define CAP_TO_MASK(x)      (1u << ((x) & 31)) /* mask for indexed __u32 */
+
+
+#endif /* _UAPI_LINUX_CAPABILITY_H */
diff --git a/mainline/platform/sdk/common_os/include/external/libcap/libcap/include/uapi/linux/prctl.h b/mainline/platform/sdk/common_os/include/external/libcap/libcap/include/uapi/linux/prctl.h
new file mode 100644
index 0000000..1b6a009
--- /dev/null
+++ b/mainline/platform/sdk/common_os/include/external/libcap/libcap/include/uapi/linux/prctl.h
@@ -0,0 +1,200 @@
+#ifndef _LINUX_PRCTL_H
+#define _LINUX_PRCTL_H
+
+#include <linux/types.h>
+
+/* Values to pass as first argument to prctl() */
+
+#define PR_SET_PDEATHSIG  1  /* Second arg is a signal */
+#define PR_GET_PDEATHSIG  2  /* Second arg is a ptr to return the signal */
+
+/* Get/set current->mm->dumpable */
+#define PR_GET_DUMPABLE   3
+#define PR_SET_DUMPABLE   4
+
+/* Get/set unaligned access control bits (if meaningful) */
+#define PR_GET_UNALIGN	  5
+#define PR_SET_UNALIGN	  6
+# define PR_UNALIGN_NOPRINT	1	/* silently fix up unaligned user accesses */
+# define PR_UNALIGN_SIGBUS	2	/* generate SIGBUS on unaligned user access */
+
+/* Get/set whether or not to drop capabilities on setuid() away from
+ * uid 0 (as per security/commoncap.c) */
+#define PR_GET_KEEPCAPS   7
+#define PR_SET_KEEPCAPS   8
+
+/* Get/set floating-point emulation control bits (if meaningful) */
+#define PR_GET_FPEMU  9
+#define PR_SET_FPEMU 10
+# define PR_FPEMU_NOPRINT	1	/* silently emulate fp operations accesses */
+# define PR_FPEMU_SIGFPE	2	/* don't emulate fp operations, send SIGFPE instead */
+
+/* Get/set floating-point exception mode (if meaningful) */
+#define PR_GET_FPEXC	11
+#define PR_SET_FPEXC	12
+# define PR_FP_EXC_SW_ENABLE	0x80	/* Use FPEXC for FP exception enables */
+# define PR_FP_EXC_DIV		0x010000	/* floating point divide by zero */
+# define PR_FP_EXC_OVF		0x020000	/* floating point overflow */
+# define PR_FP_EXC_UND		0x040000	/* floating point underflow */
+# define PR_FP_EXC_RES		0x080000	/* floating point inexact result */
+# define PR_FP_EXC_INV		0x100000	/* floating point invalid operation */
+# define PR_FP_EXC_DISABLED	0	/* FP exceptions disabled */
+# define PR_FP_EXC_NONRECOV	1	/* async non-recoverable exc. mode */
+# define PR_FP_EXC_ASYNC	2	/* async recoverable exception mode */
+# define PR_FP_EXC_PRECISE	3	/* precise exception mode */
+
+/* Get/set whether we use statistical process timing or accurate timestamp
+ * based process timing */
+#define PR_GET_TIMING   13
+#define PR_SET_TIMING   14
+# define PR_TIMING_STATISTICAL  0       /* Normal, traditional,
+                                                   statistical process timing */
+# define PR_TIMING_TIMESTAMP    1       /* Accurate timestamp based
+                                                   process timing */
+
+#define PR_SET_NAME    15		/* Set process name */
+#define PR_GET_NAME    16		/* Get process name */
+
+/* Get/set process endian */
+#define PR_GET_ENDIAN	19
+#define PR_SET_ENDIAN	20
+# define PR_ENDIAN_BIG		0
+# define PR_ENDIAN_LITTLE	1	/* True little endian mode */
+# define PR_ENDIAN_PPC_LITTLE	2	/* "PowerPC" pseudo little endian */
+
+/* Get/set process seccomp mode */
+#define PR_GET_SECCOMP	21
+#define PR_SET_SECCOMP	22
+
+/* Get/set the capability bounding set (as per security/commoncap.c) */
+#define PR_CAPBSET_READ 23
+#define PR_CAPBSET_DROP 24
+
+/* Get/set the process' ability to use the timestamp counter instruction */
+#define PR_GET_TSC 25
+#define PR_SET_TSC 26
+# define PR_TSC_ENABLE		1	/* allow the use of the timestamp counter */
+# define PR_TSC_SIGSEGV		2	/* throw a SIGSEGV instead of reading the TSC */
+
+/* Get/set securebits (as per security/commoncap.c) */
+#define PR_GET_SECUREBITS 27
+#define PR_SET_SECUREBITS 28
+
+/*
+ * Get/set the timerslack as used by poll/select/nanosleep
+ * A value of 0 means "use default"
+ */
+#define PR_SET_TIMERSLACK 29
+#define PR_GET_TIMERSLACK 30
+
+#define PR_TASK_PERF_EVENTS_DISABLE		31
+#define PR_TASK_PERF_EVENTS_ENABLE		32
+
+/*
+ * Set early/late kill mode for hwpoison memory corruption.
+ * This influences when the process gets killed on a memory corruption.
+ */
+#define PR_MCE_KILL	33
+# define PR_MCE_KILL_CLEAR   0
+# define PR_MCE_KILL_SET     1
+
+# define PR_MCE_KILL_LATE    0
+# define PR_MCE_KILL_EARLY   1
+# define PR_MCE_KILL_DEFAULT 2
+
+#define PR_MCE_KILL_GET 34
+
+/*
+ * Tune up process memory map specifics.
+ */
+#define PR_SET_MM		35
+# define PR_SET_MM_START_CODE		1
+# define PR_SET_MM_END_CODE		2
+# define PR_SET_MM_START_DATA		3
+# define PR_SET_MM_END_DATA		4
+# define PR_SET_MM_START_STACK		5
+# define PR_SET_MM_START_BRK		6
+# define PR_SET_MM_BRK			7
+# define PR_SET_MM_ARG_START		8
+# define PR_SET_MM_ARG_END		9
+# define PR_SET_MM_ENV_START		10
+# define PR_SET_MM_ENV_END		11
+# define PR_SET_MM_AUXV			12
+# define PR_SET_MM_EXE_FILE		13
+# define PR_SET_MM_MAP			14
+# define PR_SET_MM_MAP_SIZE		15
+
+/*
+ * This structure provides new memory descriptor
+ * map which mostly modifies /proc/pid/stat[m]
+ * output for a task. This mostly done in a
+ * sake of checkpoint/restore functionality.
+ */
+struct prctl_mm_map {
+	__u64	start_code;		/* code section bounds */
+	__u64	end_code;
+	__u64	start_data;		/* data section bounds */
+	__u64	end_data;
+	__u64	start_brk;		/* heap for brk() syscall */
+	__u64	brk;
+	__u64	start_stack;		/* stack starts at */
+	__u64	arg_start;		/* command line arguments bounds */
+	__u64	arg_end;
+	__u64	env_start;		/* environment variables bounds */
+	__u64	env_end;
+	__u64	*auxv;			/* auxiliary vector */
+	__u32	auxv_size;		/* vector size */
+	__u32	exe_fd;			/* /proc/$pid/exe link file */
+};
+
+/*
+ * Set specific pid that is allowed to ptrace the current task.
+ * A value of 0 mean "no process".
+ */
+#define PR_SET_PTRACER 0x59616d61
+# define PR_SET_PTRACER_ANY ((unsigned long)-1)
+
+#define PR_SET_CHILD_SUBREAPER	36
+#define PR_GET_CHILD_SUBREAPER	37
+
+/*
+ * If no_new_privs is set, then operations that grant new privileges (i.e.
+ * execve) will either fail or not grant them.  This affects suid/sgid,
+ * file capabilities, and LSMs.
+ *
+ * Operations that merely manipulate or drop existing privileges (setresuid,
+ * capset, etc.) will still work.  Drop those privileges if you want them gone.
+ *
+ * Changing LSM security domain is considered a new privilege.  So, for example,
+ * asking selinux for a specific new context (e.g. with runcon) will result
+ * in execve returning -EPERM.
+ *
+ * See Documentation/prctl/no_new_privs.txt for more details.
+ */
+#define PR_SET_NO_NEW_PRIVS	38
+#define PR_GET_NO_NEW_PRIVS	39
+
+#define PR_GET_TID_ADDRESS	40
+
+#define PR_SET_THP_DISABLE	41
+#define PR_GET_THP_DISABLE	42
+
+/*
+ * Tell the kernel to start/stop helping userspace manage bounds tables.
+ */
+#define PR_MPX_ENABLE_MANAGEMENT  43
+#define PR_MPX_DISABLE_MANAGEMENT 44
+
+#define PR_SET_FP_MODE		45
+#define PR_GET_FP_MODE		46
+# define PR_FP_MODE_FR		(1u << 0)	/* 64b FP registers */
+# define PR_FP_MODE_FRE		(1u << 1)	/* 32b compatibility */
+
+/* Control the ambient capability set */
+#define PR_CAP_AMBIENT			47
+# define PR_CAP_AMBIENT_IS_SET		1
+# define PR_CAP_AMBIENT_RAISE		2
+# define PR_CAP_AMBIENT_LOWER		3
+# define PR_CAP_AMBIENT_CLEAR_ALL	4
+
+#endif /* _LINUX_PRCTL_H */
diff --git a/mainline/platform/sdk/common_os/include/external/libcap/libcap/include/uapi/linux/securebits.h b/mainline/platform/sdk/common_os/include/external/libcap/libcap/include/uapi/linux/securebits.h
new file mode 100644
index 0000000..e9b1309
--- /dev/null
+++ b/mainline/platform/sdk/common_os/include/external/libcap/libcap/include/uapi/linux/securebits.h
@@ -0,0 +1,60 @@
+#ifndef _UAPI_LINUX_SECUREBITS_H
+#define _UAPI_LINUX_SECUREBITS_H
+
+/* Each securesetting is implemented using two bits. One bit specifies
+   whether the setting is on or off. The other bit specify whether the
+   setting is locked or not. A setting which is locked cannot be
+   changed from user-level. */
+#define issecure_mask(X)	(1u << (X))
+
+#define SECUREBITS_DEFAULT 0x00000000
+
+/* When set UID 0 has no special privileges. When unset, we support
+   inheritance of root-permissions and suid-root executable under
+   compatibility mode. We raise the effective and inheritable bitmasks
+   *of the executable file* if the effective uid of the new process is
+   0. If the real uid is 0, we raise the effective (legacy) bit of the
+   executable file. */
+#define SECURE_NOROOT			0
+#define SECURE_NOROOT_LOCKED		1  /* make bit-0 immutable */
+
+#define SECBIT_NOROOT		(issecure_mask(SECURE_NOROOT))
+#define SECBIT_NOROOT_LOCKED	(issecure_mask(SECURE_NOROOT_LOCKED))
+
+/* When set, setuid to/from uid 0 does not trigger capability-"fixup".
+   When unset, to provide compatibility with old programs relying on
+   set*uid to gain/lose privilege, transitions to/from uid 0 cause
+   capabilities to be gained/lost. */
+#define SECURE_NO_SETUID_FIXUP		2
+#define SECURE_NO_SETUID_FIXUP_LOCKED	3  /* make bit-2 immutable */
+
+#define SECBIT_NO_SETUID_FIXUP	(issecure_mask(SECURE_NO_SETUID_FIXUP))
+#define SECBIT_NO_SETUID_FIXUP_LOCKED \
+			(issecure_mask(SECURE_NO_SETUID_FIXUP_LOCKED))
+
+/* When set, a process can retain its capabilities even after
+   transitioning to a non-root user (the set-uid fixup suppressed by
+   bit 2). Bit-4 is cleared when a process calls exec(); setting both
+   bit 4 and 5 will create a barrier through exec that no exec()'d
+   child can use this feature again. */
+#define SECURE_KEEP_CAPS		4
+#define SECURE_KEEP_CAPS_LOCKED		5  /* make bit-4 immutable */
+
+#define SECBIT_KEEP_CAPS	(issecure_mask(SECURE_KEEP_CAPS))
+#define SECBIT_KEEP_CAPS_LOCKED (issecure_mask(SECURE_KEEP_CAPS_LOCKED))
+
+/* When set, a process cannot add new capabilities to its ambient set. */
+#define SECURE_NO_CAP_AMBIENT_RAISE		6
+#define SECURE_NO_CAP_AMBIENT_RAISE_LOCKED	7  /* make bit-6 immutable */
+
+#define SECBIT_NO_CAP_AMBIENT_RAISE (issecure_mask(SECURE_NO_CAP_AMBIENT_RAISE))
+#define SECBIT_NO_CAP_AMBIENT_RAISE_LOCKED \
+			(issecure_mask(SECURE_NO_CAP_AMBIENT_RAISE_LOCKED))
+
+#define SECURE_ALL_BITS		(issecure_mask(SECURE_NOROOT) | \
+				 issecure_mask(SECURE_NO_SETUID_FIXUP) | \
+				 issecure_mask(SECURE_KEEP_CAPS) | \
+				 issecure_mask(SECURE_NO_CAP_AMBIENT_RAISE))
+#define SECURE_ALL_LOCKS	(SECURE_ALL_BITS << 1)
+
+#endif /* _UAPI_LINUX_SECUREBITS_H */
diff --git a/mainline/platform/sdk/licenses/build/soong/licenses/LICENSE b/mainline/platform/sdk/licenses/build/soong/licenses/LICENSE
index dae0406..d645695 100644
--- a/mainline/platform/sdk/licenses/build/soong/licenses/LICENSE
+++ b/mainline/platform/sdk/licenses/build/soong/licenses/LICENSE
@@ -1,16 +1,4 @@
 
-   Copyright (c) The Android Open Source Project
-
-   Licensed under the Apache License, Version 2.0 (the "License");
-   you may not use this file except in compliance with the License.
-
-   Unless required by applicable law or agreed to in writing, software
-   distributed under the License is distributed on an "AS IS" BASIS,
-   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-   See the License for the specific language governing permissions and
-   limitations under the License.
-
-
                                  Apache License
                            Version 2.0, January 2004
                         http://www.apache.org/licenses/
diff --git a/mainline/platform/sdk/licenses/external/libcap/NOTICE b/mainline/platform/sdk/licenses/external/libcap/NOTICE
new file mode 100644
index 0000000..8a352bc
--- /dev/null
+++ b/mainline/platform/sdk/licenses/external/libcap/NOTICE
@@ -0,0 +1,385 @@
+Unless otherwise *explicitly* stated, the following text describes the
+licensed conditions under which the contents of this libcap release
+may be used and distributed:
+
+-------------------------------------------------------------------------
+Redistribution and use in source and binary forms of libcap, with
+or without modification, are permitted provided that the following
+conditions are met:
+
+1. Redistributions of source code must retain any existing copyright
+   notice, and this entire permission notice in its entirety,
+   including the disclaimer of warranties.
+
+2. Redistributions in binary form must reproduce all prior and current
+   copyright notices, this list of conditions, and the following
+   disclaimer in the documentation and/or other materials provided
+   with the distribution.
+
+3. The name of any author may not be used to endorse or promote
+   products derived from this software without their specific prior
+   written permission.
+
+ALTERNATIVELY, this product may be distributed under the terms of the
+GNU General Public License (v2.0 - see below), in which case the
+provisions of the GNU GPL are required INSTEAD OF the above
+restrictions.  (This clause is necessary due to a potential conflict
+between the GNU GPL and the restrictions contained in a BSD-style
+copyright.)
+
+THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED
+WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+IN NO EVENT SHALL THE AUTHOR(S) BE LIABLE FOR ANY DIRECT, INDIRECT,
+INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
+OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR
+TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE
+USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
+DAMAGE.
+-------------------------------------------------------------------------
+
+-------------------------
+Full text of gpl-2.0.txt:
+-------------------------
+
+                    GNU GENERAL PUBLIC LICENSE
+                       Version 2, June 1991
+
+ Copyright (C) 1989, 1991 Free Software Foundation, Inc.,
+ 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+                            Preamble
+
+  The licenses for most software are designed to take away your
+freedom to share and change it.  By contrast, the GNU General Public
+License is intended to guarantee your freedom to share and change free
+software--to make sure the software is free for all its users.  This
+General Public License applies to most of the Free Software
+Foundation's software and to any other program whose authors commit to
+using it.  (Some other Free Software Foundation software is covered by
+the GNU Lesser General Public License instead.)  You can apply it to
+your programs, too.
+
+  When we speak of free software, we are referring to freedom, not
+price.  Our General Public Licenses are designed to make sure that you
+have the freedom to distribute copies of free software (and charge for
+this service if you wish), that you receive source code or can get it
+if you want it, that you can change the software or use pieces of it
+in new free programs; and that you know you can do these things.
+
+  To protect your rights, we need to make restrictions that forbid
+anyone to deny you these rights or to ask you to surrender the rights.
+These restrictions translate to certain responsibilities for you if you
+distribute copies of the software, or if you modify it.
+
+  For example, if you distribute copies of such a program, whether
+gratis or for a fee, you must give the recipients all the rights that
+you have.  You must make sure that they, too, receive or can get the
+source code.  And you must show them these terms so they know their
+rights.
+
+  We protect your rights with two steps: (1) copyright the software, and
+(2) offer you this license which gives you legal permission to copy,
+distribute and/or modify the software.
+
+  Also, for each author's protection and ours, we want to make certain
+that everyone understands that there is no warranty for this free
+software.  If the software is modified by someone else and passed on, we
+want its recipients to know that what they have is not the original, so
+that any problems introduced by others will not reflect on the original
+authors' reputations.
+
+  Finally, any free program is threatened constantly by software
+patents.  We wish to avoid the danger that redistributors of a free
+program will individually obtain patent licenses, in effect making the
+program proprietary.  To prevent this, we have made it clear that any
+patent must be licensed for everyone's free use or not licensed at all.
+
+  The precise terms and conditions for copying, distribution and
+modification follow.
+
+                    GNU GENERAL PUBLIC LICENSE
+   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+  0. This License applies to any program or other work which contains
+a notice placed by the copyright holder saying it may be distributed
+under the terms of this General Public License.  The "Program", below,
+refers to any such program or work, and a "work based on the Program"
+means either the Program or any derivative work under copyright law:
+that is to say, a work containing the Program or a portion of it,
+either verbatim or with modifications and/or translated into another
+language.  (Hereinafter, translation is included without limitation in
+the term "modification".)  Each licensee is addressed as "you".
+
+Activities other than copying, distribution and modification are not
+covered by this License; they are outside its scope.  The act of
+running the Program is not restricted, and the output from the Program
+is covered only if its contents constitute a work based on the
+Program (independent of having been made by running the Program).
+Whether that is true depends on what the Program does.
+
+  1. You may copy and distribute verbatim copies of the Program's
+source code as you receive it, in any medium, provided that you
+conspicuously and appropriately publish on each copy an appropriate
+copyright notice and disclaimer of warranty; keep intact all the
+notices that refer to this License and to the absence of any warranty;
+and give any other recipients of the Program a copy of this License
+along with the Program.
+
+You may charge a fee for the physical act of transferring a copy, and
+you may at your option offer warranty protection in exchange for a fee.
+
+  2. You may modify your copy or copies of the Program or any portion
+of it, thus forming a work based on the Program, and copy and
+distribute such modifications or work under the terms of Section 1
+above, provided that you also meet all of these conditions:
+
+    a) You must cause the modified files to carry prominent notices
+    stating that you changed the files and the date of any change.
+
+    b) You must cause any work that you distribute or publish, that in
+    whole or in part contains or is derived from the Program or any
+    part thereof, to be licensed as a whole at no charge to all third
+    parties under the terms of this License.
+
+    c) If the modified program normally reads commands interactively
+    when run, you must cause it, when started running for such
+    interactive use in the most ordinary way, to print or display an
+    announcement including an appropriate copyright notice and a
+    notice that there is no warranty (or else, saying that you provide
+    a warranty) and that users may redistribute the program under
+    these conditions, and telling the user how to view a copy of this
+    License.  (Exception: if the Program itself is interactive but
+    does not normally print such an announcement, your work based on
+    the Program is not required to print an announcement.)
+
+These requirements apply to the modified work as a whole.  If
+identifiable sections of that work are not derived from the Program,
+and can be reasonably considered independent and separate works in
+themselves, then this License, and its terms, do not apply to those
+sections when you distribute them as separate works.  But when you
+distribute the same sections as part of a whole which is a work based
+on the Program, the distribution of the whole must be on the terms of
+this License, whose permissions for other licensees extend to the
+entire whole, and thus to each and every part regardless of who wrote it.
+
+Thus, it is not the intent of this section to claim rights or contest
+your rights to work written entirely by you; rather, the intent is to
+exercise the right to control the distribution of derivative or
+collective works based on the Program.
+
+In addition, mere aggregation of another work not based on the Program
+with the Program (or with a work based on the Program) on a volume of
+a storage or distribution medium does not bring the other work under
+the scope of this License.
+
+  3. You may copy and distribute the Program (or a work based on it,
+under Section 2) in object code or executable form under the terms of
+Sections 1 and 2 above provided that you also do one of the following:
+
+    a) Accompany it with the complete corresponding machine-readable
+    source code, which must be distributed under the terms of Sections
+    1 and 2 above on a medium customarily used for software interchange; or,
+
+    b) Accompany it with a written offer, valid for at least three
+    years, to give any third party, for a charge no more than your
+    cost of physically performing source distribution, a complete
+    machine-readable copy of the corresponding source code, to be
+    distributed under the terms of Sections 1 and 2 above on a medium
+    customarily used for software interchange; or,
+
+    c) Accompany it with the information you received as to the offer
+    to distribute corresponding source code.  (This alternative is
+    allowed only for noncommercial distribution and only if you
+    received the program in object code or executable form with such
+    an offer, in accord with Subsection b above.)
+
+The source code for a work means the preferred form of the work for
+making modifications to it.  For an executable work, complete source
+code means all the source code for all modules it contains, plus any
+associated interface definition files, plus the scripts used to
+control compilation and installation of the executable.  However, as a
+special exception, the source code distributed need not include
+anything that is normally distributed (in either source or binary
+form) with the major components (compiler, kernel, and so on) of the
+operating system on which the executable runs, unless that component
+itself accompanies the executable.
+
+If distribution of executable or object code is made by offering
+access to copy from a designated place, then offering equivalent
+access to copy the source code from the same place counts as
+distribution of the source code, even though third parties are not
+compelled to copy the source along with the object code.
+
+  4. You may not copy, modify, sublicense, or distribute the Program
+except as expressly provided under this License.  Any attempt
+otherwise to copy, modify, sublicense or distribute the Program is
+void, and will automatically terminate your rights under this License.
+However, parties who have received copies, or rights, from you under
+this License will not have their licenses terminated so long as such
+parties remain in full compliance.
+
+  5. You are not required to accept this License, since you have not
+signed it.  However, nothing else grants you permission to modify or
+distribute the Program or its derivative works.  These actions are
+prohibited by law if you do not accept this License.  Therefore, by
+modifying or distributing the Program (or any work based on the
+Program), you indicate your acceptance of this License to do so, and
+all its terms and conditions for copying, distributing or modifying
+the Program or works based on it.
+
+  6. Each time you redistribute the Program (or any work based on the
+Program), the recipient automatically receives a license from the
+original licensor to copy, distribute or modify the Program subject to
+these terms and conditions.  You may not impose any further
+restrictions on the recipients' exercise of the rights granted herein.
+You are not responsible for enforcing compliance by third parties to
+this License.
+
+  7. If, as a consequence of a court judgment or allegation of patent
+infringement or for any other reason (not limited to patent issues),
+conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License.  If you cannot
+distribute so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you
+may not distribute the Program at all.  For example, if a patent
+license would not permit royalty-free redistribution of the Program by
+all those who receive copies directly or indirectly through you, then
+the only way you could satisfy both it and this License would be to
+refrain entirely from distribution of the Program.
+
+If any portion of this section is held invalid or unenforceable under
+any particular circumstance, the balance of the section is intended to
+apply and the section as a whole is intended to apply in other
+circumstances.
+
+It is not the purpose of this section to induce you to infringe any
+patents or other property right claims or to contest validity of any
+such claims; this section has the sole purpose of protecting the
+integrity of the free software distribution system, which is
+implemented by public license practices.  Many people have made
+generous contributions to the wide range of software distributed
+through that system in reliance on consistent application of that
+system; it is up to the author/donor to decide if he or she is willing
+to distribute software through any other system and a licensee cannot
+impose that choice.
+
+This section is intended to make thoroughly clear what is believed to
+be a consequence of the rest of this License.
+
+  8. If the distribution and/or use of the Program is restricted in
+certain countries either by patents or by copyrighted interfaces, the
+original copyright holder who places the Program under this License
+may add an explicit geographical distribution limitation excluding
+those countries, so that distribution is permitted only in or among
+countries not thus excluded.  In such case, this License incorporates
+the limitation as if written in the body of this License.
+
+  9. The Free Software Foundation may publish revised and/or new versions
+of the General Public License from time to time.  Such new versions will
+be similar in spirit to the present version, but may differ in detail to
+address new problems or concerns.
+
+Each version is given a distinguishing version number.  If the Program
+specifies a version number of this License which applies to it and "any
+later version", you have the option of following the terms and conditions
+either of that version or of any later version published by the Free
+Software Foundation.  If the Program does not specify a version number of
+this License, you may choose any version ever published by the Free Software
+Foundation.
+
+  10. If you wish to incorporate parts of the Program into other free
+programs whose distribution conditions are different, write to the author
+to ask for permission.  For software which is copyrighted by the Free
+Software Foundation, write to the Free Software Foundation; we sometimes
+make exceptions for this.  Our decision will be guided by the two goals
+of preserving the free status of all derivatives of our free software and
+of promoting the sharing and reuse of software generally.
+
+                            NO WARRANTY
+
+  11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
+FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW.  EXCEPT WHEN
+OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
+PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
+OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.  THE ENTIRE RISK AS
+TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU.  SHOULD THE
+PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
+REPAIR OR CORRECTION.
+
+  12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
+REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
+INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
+OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
+TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
+YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
+PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGES.
+
+                     END OF TERMS AND CONDITIONS
+
+            How to Apply These Terms to Your New Programs
+
+  If you develop a new program, and you want it to be of the greatest
+possible use to the public, the best way to achieve this is to make it
+free software which everyone can redistribute and change under these terms.
+
+  To do so, attach the following notices to the program.  It is safest
+to attach them to the start of each source file to most effectively
+convey the exclusion of warranty; and each file should have at least
+the "copyright" line and a pointer to where the full notice is found.
+
+    <one line to give the program's name and a brief idea of what it does.>
+    Copyright (C) <year>  <name of author>
+
+    This program is free software; you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation; either version 2 of the License, or
+    (at your option) any later version.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License along
+    with this program; if not, write to the Free Software Foundation, Inc.,
+    51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+Also add information on how to contact you by electronic and paper mail.
+
+If the program is interactive, make it output a short notice like this
+when it starts in an interactive mode:
+
+    Gnomovision version 69, Copyright (C) year name of author
+    Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
+    This is free software, and you are welcome to redistribute it
+    under certain conditions; type `show c' for details.
+
+The hypothetical commands `show w' and `show c' should show the appropriate
+parts of the General Public License.  Of course, the commands you use may
+be called something other than `show w' and `show c'; they could even be
+mouse-clicks or menu items--whatever suits your program.
+
+You should also get your employer (if you work as a programmer) or your
+school, if any, to sign a "copyright disclaimer" for the program, if
+necessary.  Here is a sample; alter the names:
+
+  Yoyodyne, Inc., hereby disclaims all copyright interest in the program
+  `Gnomovision' (which makes passes at compilers) written by James Hacker.
+
+  <signature of Ty Coon>, 1 April 1989
+  Ty Coon, President of Vice
+
+This General Public License does not permit incorporating your program into
+proprietary programs.  If your program is a subroutine library, you may
+consider it more useful to permit linking proprietary applications with the
+library.  If this is what you want to do, use the GNU Lesser General
+Public License instead of this License.
diff --git a/mainline/platform/sdk/linux_bionic/x86_64/lib/libcap.a b/mainline/platform/sdk/linux_bionic/x86_64/lib/libcap.a
new file mode 100644
index 0000000..d294837
--- /dev/null
+++ b/mainline/platform/sdk/linux_bionic/x86_64/lib/libcap.a
Binary files differ
diff --git a/mainline/platform/sdk/linux_glibc/x86/lib/libcap.a b/mainline/platform/sdk/linux_glibc/x86/lib/libcap.a
new file mode 100644
index 0000000..cff1349
--- /dev/null
+++ b/mainline/platform/sdk/linux_glibc/x86/lib/libcap.a
Binary files differ
diff --git a/mainline/platform/sdk/linux_glibc/x86_64/lib/libcap.a b/mainline/platform/sdk/linux_glibc/x86_64/lib/libcap.a
new file mode 100644
index 0000000..5af2106
--- /dev/null
+++ b/mainline/platform/sdk/linux_glibc/x86_64/lib/libcap.a
Binary files differ
diff --git a/mainline/runtime/apex/com.android.runtime-arm.apex b/mainline/runtime/apex/com.android.runtime-arm.apex
index 13d47a0..f13b130 100644
--- a/mainline/runtime/apex/com.android.runtime-arm.apex
+++ b/mainline/runtime/apex/com.android.runtime-arm.apex
Binary files differ
diff --git a/mainline/runtime/apex/com.android.runtime-arm64.apex b/mainline/runtime/apex/com.android.runtime-arm64.apex
index c100ff5..9f0ef2a 100644
--- a/mainline/runtime/apex/com.android.runtime-arm64.apex
+++ b/mainline/runtime/apex/com.android.runtime-arm64.apex
Binary files differ
diff --git a/mainline/runtime/apex/com.android.runtime-x86.apex b/mainline/runtime/apex/com.android.runtime-x86.apex
index 8843082..3ba82a9 100644
--- a/mainline/runtime/apex/com.android.runtime-x86.apex
+++ b/mainline/runtime/apex/com.android.runtime-x86.apex
Binary files differ
diff --git a/mainline/runtime/apex/com.android.runtime-x86_64.apex b/mainline/runtime/apex/com.android.runtime-x86_64.apex
index fa41880..ff350c1 100644
--- a/mainline/runtime/apex/com.android.runtime-x86_64.apex
+++ b/mainline/runtime/apex/com.android.runtime-x86_64.apex
Binary files differ
diff --git a/mainline/runtime/host-exports/Android.bp b/mainline/runtime/host-exports/Android.bp
index 9f6da86..a6f6210 100755
--- a/mainline/runtime/host-exports/Android.bp
+++ b/mainline/runtime/host-exports/Android.bp
@@ -31,15 +31,16 @@
     name: "linkerconfig",
     prefer: false,
     visibility: ["//visibility:public"],
-    apex_available: [
-        "//apex_available:platform",
-        "com.android.runtime",
-    ],
+    apex_available: ["com.android.runtime"],
     licenses: ["runtime-module-host-exports_Android-Apache-2.0"],
     device_supported: false,
     host_supported: true,
     stl: "c++_static",
     compile_multilib: "64",
+    shared_libs: [
+        "libbase",
+        "libbase",
+    ],
     target: {
         host: {
             enabled: false,
diff --git a/mainline/runtime/host-exports/licenses/bionic/linker/NOTICE b/mainline/runtime/host-exports/licenses/bionic/linker/NOTICE
index 8f70d87..d61a193 100644
--- a/mainline/runtime/host-exports/licenses/bionic/linker/NOTICE
+++ b/mainline/runtime/host-exports/licenses/bionic/linker/NOTICE
@@ -334,3 +334,31 @@
 
 -------------------------------------------------------------------
 
+Copyright (C) 2022 The Android Open Source Project
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions
+are met:
+ * Redistributions of source code must retain the above copyright
+   notice, this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+   notice, this list of conditions and the following disclaimer in
+   the documentation and/or other materials provided with the
+   distribution.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
+OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
+AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
+OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+SUCH DAMAGE.
+
+-------------------------------------------------------------------
+
diff --git a/mainline/runtime/host-exports/linux_bionic/x86_64/bin/linkerconfig b/mainline/runtime/host-exports/linux_bionic/x86_64/bin/linkerconfig
index e66a603..6287425 100755
--- a/mainline/runtime/host-exports/linux_bionic/x86_64/bin/linkerconfig
+++ b/mainline/runtime/host-exports/linux_bionic/x86_64/bin/linkerconfig
Binary files differ
diff --git a/mainline/runtime/host-exports/linux_glibc/x86_64/bin/linkerconfig b/mainline/runtime/host-exports/linux_glibc/x86_64/bin/linkerconfig
index 0bd5fa4..403c5c4 100755
--- a/mainline/runtime/host-exports/linux_glibc/x86_64/bin/linkerconfig
+++ b/mainline/runtime/host-exports/linux_glibc/x86_64/bin/linkerconfig
Binary files differ
diff --git a/mainline/runtime/host-exports/snapshot-creation-build-number.txt b/mainline/runtime/host-exports/snapshot-creation-build-number.txt
new file mode 100644
index 0000000..8675c6f
--- /dev/null
+++ b/mainline/runtime/host-exports/snapshot-creation-build-number.txt
@@ -0,0 +1 @@
+9469196
\ No newline at end of file
diff --git a/mainline/runtime/host-exports/x86_64/bin/linker64 b/mainline/runtime/host-exports/x86_64/bin/linker64
index 0fd5f81..79849f0 100755
--- a/mainline/runtime/host-exports/x86_64/bin/linker64
+++ b/mainline/runtime/host-exports/x86_64/bin/linker64
Binary files differ
diff --git a/mainline/runtime/sdk/Android.bp b/mainline/runtime/sdk/Android.bp
index 916f325..8e52fa5 100755
--- a/mainline/runtime/sdk/Android.bp
+++ b/mainline/runtime/sdk/Android.bp
@@ -58,6 +58,7 @@
         "//external/scudo:__subpackages__",
         "//frameworks:__subpackages__",
         "//system/core/debuggerd:__subpackages__",
+        "//system/core/init:__subpackages__",
         "//system/core/libcutils:__subpackages__",
         "//system/memory/libmemunreachable:__subpackages__",
         "//system/unwinding/libunwindstack:__subpackages__",
@@ -66,7 +67,6 @@
     apex_available: [
         "//apex_available:anyapex",
         "//apex_available:platform",
-        "com.android.media",
         "com.android.runtime",
     ],
     licenses: ["runtime-module-sdk_bionic_libc_license"],
@@ -282,22 +282,22 @@
             compile_multilib: "both",
         },
         android_arm64: {
-            srcs: ["android/arm64/lib/crtend.o"],
+            srcs: ["android/arm64/lib/crtend_android.o"],
         },
         android_x86_64: {
-            srcs: ["android/x86_64/lib/crtend.o"],
+            srcs: ["android/x86_64/lib/crtend_android.o"],
         },
         android_arm: {
-            srcs: ["android/arm/lib/crtend.o"],
+            srcs: ["android/arm/lib/crtend_android.o"],
         },
         android_x86: {
-            srcs: ["android/x86/lib/crtend.o"],
+            srcs: ["android/x86/lib/crtend_android.o"],
         },
         linux_bionic: {
             compile_multilib: "64",
         },
         linux_bionic_x86_64: {
-            srcs: ["linux_bionic/x86_64/lib/crtend.o"],
+            srcs: ["linux_bionic/x86_64/lib/crtend_android.o"],
         },
     },
 }
@@ -627,12 +627,8 @@
     prefer: false,
     visibility: ["//visibility:public"],
     apex_available: [
+        "//apex_available:anyapex",
         "//apex_available:platform",
-        "com.android.art",
-        "com.android.art.debug",
-        "com.android.media",
-        "com.android.media.swcodec",
-        "com.android.runtime",
     ],
     licenses: ["runtime-module-sdk_bionic_libc_license"],
     host_supported: true,
diff --git a/mainline/runtime/sdk/android/arm/include/bionic/libc/include/android/api-level.h b/mainline/runtime/sdk/android/arm/include/bionic/libc/include/android/api-level.h
index ecf318d..79085d1 100644
--- a/mainline/runtime/sdk/android/arm/include/bionic/libc/include/android/api-level.h
+++ b/mainline/runtime/sdk/android/arm/include/bionic/libc/include/android/api-level.h
@@ -139,21 +139,32 @@
 #define __ANDROID_API_P__ 28
 
 /**
- * Names the "Q" API level (29), for comparison against `__ANDROID_API__`.
- * This release was called Android 10 publicly, not to be (but sure to be)
- * confused with API level 10.
+ * Names the Android 10 (aka "Q" or "Quince Tart") API level (29), for
+ * comparison against `__ANDROID_API__`.
  */
 #define __ANDROID_API_Q__ 29
 
-/** Names the "R" API level (30), for comparison against `__ANDROID_API__`. */
+/**
+ * Names the Android 11 (aka "R" or "Red Velvet Cake") API level (30), for
+ * comparison against `__ANDROID_API__`.
+ */
 #define __ANDROID_API_R__ 30
 
-/** Names the "S" API level (31), for comparison against `__ANDROID_API__`. */
+/**
+ * Names the Android 12 (aka "S" or "Snowcone") API level (31), for
+ * comparison against `__ANDROID_API__`.
+ */
 #define __ANDROID_API_S__ 31
 
-/** Names the "T" API level (33), for comparison against `__ANDROID_API__`. */
+/**
+ * Names the Android 13 (aka "T" or "Tiramisu") API level (33), for
+ * comparison against `__ANDROID_API__`.
+ */
 #define __ANDROID_API_T__ 33
 
+/** Names the "U" API level (34), for comparison against `__ANDROID_API__`. */
+#define __ANDROID_API_U__ 34
+
 /* This file is included in <features.h>, and might be used from .S files. */
 #if !defined(__ASSEMBLY__)
 
diff --git a/mainline/runtime/sdk/android/arm/include/bionic/libc/include/android/fdsan.h b/mainline/runtime/sdk/android/arm/include/bionic/libc/include/android/fdsan.h
index e23de85..59ce133 100644
--- a/mainline/runtime/sdk/android/arm/include/bionic/libc/include/android/fdsan.h
+++ b/mainline/runtime/sdk/android/arm/include/bionic/libc/include/android/fdsan.h
@@ -123,6 +123,9 @@
 
   /* libziparchive's ZipArchive */
   ANDROID_FDSAN_OWNER_TYPE_ZIPARCHIVE = 12,
+
+  /* native_handle_t */
+  ANDROID_FDSAN_OWNER_TYPE_NATIVE_HANDLE = 13,
 };
 
 /*
diff --git a/mainline/runtime/sdk/android/arm/include/bionic/libc/include/android/legacy_stdlib_inlines.h b/mainline/runtime/sdk/android/arm/include/bionic/libc/include/android/legacy_stdlib_inlines.h
index aeb1575..6903536 100644
--- a/mainline/runtime/sdk/android/arm/include/bionic/libc/include/android/legacy_stdlib_inlines.h
+++ b/mainline/runtime/sdk/android/arm/include/bionic/libc/include/android/legacy_stdlib_inlines.h
@@ -57,13 +57,11 @@
 __BEGIN_DECLS
 
 static __inline float strtof(const char* nptr, char** endptr) {
+  // N.B. Double-rounding makes this function incorrect for some inputs.
   double d = strtod(nptr, endptr);
-  if (d > FLT_MAX) {
+  if (__builtin_isfinite(d) && __builtin_fabs(d) > FLT_MAX) {
     errno = ERANGE;
-    return __builtin_huge_valf();
-  } else if (d < -FLT_MAX) {
-    errno = ERANGE;
-    return -__builtin_huge_valf();
+    return __builtin_copysign(__builtin_huge_valf(), d);
   }
   return __BIONIC_CAST(static_cast, float, d);
 }
diff --git a/mainline/runtime/sdk/android/arm/include/bionic/libc/include/bits/elf_arm.h b/mainline/runtime/sdk/android/arm/include/bionic/libc/include/bits/elf_arm.h
deleted file mode 100644
index 08fe1d5..0000000
--- a/mainline/runtime/sdk/android/arm/include/bionic/libc/include/bits/elf_arm.h
+++ /dev/null
@@ -1,131 +0,0 @@
-/*	$NetBSD: elf_machdep.h,v 1.17 2014/02/25 19:20:09 matt Exp $	*/
-
-#ifndef _ARM_ELF_MACHDEP_H_
-#define _ARM_ELF_MACHDEP_H_
-
-/* Android-added. */
-#define R_ARM_IRELATIVE		160
-
-/* Processor specific flags for the ELF header e_flags field.  */
-#define EF_ARM_RELEXEC		0x00000001
-#define EF_ARM_HASENTRY		0x00000002
-#define EF_ARM_INTERWORK	0x00000004 /* GNU binutils 000413 */
-#define EF_ARM_SYMSARESORTED	0x00000004 /* ARM ELF A08 */
-#define EF_ARM_APCS_26		0x00000008 /* GNU binutils 000413 */
-#define EF_ARM_DYNSYMSUSESEGIDX	0x00000008 /* ARM ELF B01 */
-#define EF_ARM_APCS_FLOAT	0x00000010 /* GNU binutils 000413 */
-#define EF_ARM_MAPSYMSFIRST	0x00000010 /* ARM ELF B01 */
-#define EF_ARM_PIC		0x00000020
-#define EF_ARM_ALIGN8		0x00000040 /* 8-bit structure alignment.  */
-#define EF_ARM_NEW_ABI		0x00000080
-#define EF_ARM_OLD_ABI		0x00000100
-#define EF_ARM_SOFT_FLOAT	0x00000200
-#define EF_ARM_BE8		0x00800000
-#define EF_ARM_EABIMASK		0xff000000
-#define	EF_ARM_EABI_VER1	0x01000000
-#define	EF_ARM_EABI_VER2	0x02000000
-#define	EF_ARM_EABI_VER3	0x03000000
-#define	EF_ARM_EABI_VER4	0x04000000
-#define	EF_ARM_EABI_VER5	0x05000000
-
-/* Processor specific relocation types */
-
-#define R_ARM_NONE		0
-#define R_ARM_PC24		1
-#define R_ARM_ABS32		2
-#define R_ARM_REL32		3
-#define R_ARM_PC13		4
-#define R_ARM_ABS16		5
-#define R_ARM_ABS12		6
-#define R_ARM_THM_ABS5		7
-#define R_ARM_ABS8		8
-#define R_ARM_SBREL32		9
-#define R_ARM_THM_PC22		10
-#define R_ARM_THM_PC8		11
-#define R_ARM_AMP_VCALL9	12
-#define R_ARM_SWI24		13	/* obsolete static relocation */
-#define R_ARM_TLS_DESC		13	/* dynamic relocation */
-#define R_ARM_THM_SWI8		14
-#define R_ARM_XPC25		15
-#define R_ARM_THM_XPC22		16
-
-/* TLS relocations */
-#define R_ARM_TLS_DTPMOD32	17	/* ID of module containing symbol */
-#define R_ARM_TLS_DTPOFF32	18	/* Offset in TLS block */
-#define R_ARM_TLS_TPOFF32	19	/* Offset in static TLS block */
-
-/* 20-31 are reserved for ARM Linux. */
-#define R_ARM_COPY		20
-#define R_ARM_GLOB_DAT		21
-#define	R_ARM_JUMP_SLOT		22
-#define R_ARM_RELATIVE		23
-#define	R_ARM_GOTOFF		24
-#define R_ARM_GOTPC		25
-#define R_ARM_GOT32		26
-#define R_ARM_PLT32		27
-#define R_ARM_CALL		28
-#define R_ARM_JUMP24		29
-#define R_ARM_THM_JUMP24	30
-#define R_ARM_BASE_ABS		31
-#define R_ARM_ALU_PCREL_7_0	32
-#define R_ARM_ALU_PCREL_15_8	33
-#define R_ARM_ALU_PCREL_23_15	34
-#define R_ARM_ALU_SBREL_11_0	35
-#define R_ARM_ALU_SBREL_19_12	36
-#define R_ARM_ALU_SBREL_27_20	37	// depcreated
-#define R_ARM_TARGET1		38
-#define R_ARM_SBREL31		39	// deprecated
-#define R_ARM_V4BX		40
-#define R_ARM_TARGET2		41
-#define R_ARM_PREL31		42
-#define R_ARM_MOVW_ABS_NC	43
-#define R_ARM_MOVT_ABS		44
-#define R_ARM_MOVW_PREL_NC	45
-#define R_ARM_MOVT_PREL		46
-#define R_ARM_THM_MOVW_ABS_NC	47
-#define R_ARM_THM_MOVT_ABS	48
-#define R_ARM_THM_MOVW_PREL_NC	49
-#define R_ARM_THM_MOVT_PREL	50
-
-/* 96-111 are reserved to G++. */
-#define R_ARM_GNU_VTENTRY	100
-#define R_ARM_GNU_VTINHERIT	101
-#define R_ARM_THM_PC11		102
-#define R_ARM_THM_PC9		103
-
-/* More TLS relocations */
-#define R_ARM_TLS_GD32		104	/* PC-rel 32 bit for global dynamic */
-#define R_ARM_TLS_LDM32		105	/* PC-rel 32 bit for local dynamic */
-#define R_ARM_TLS_LDO32		106	/* 32 bit offset relative to TLS */
-#define R_ARM_TLS_IE32		107	/* PC-rel 32 bit for GOT entry of */
-#define R_ARM_TLS_LE32		108
-#define R_ARM_TLS_LDO12		109
-#define R_ARM_TLS_LE12		110
-#define R_ARM_TLS_IE12GP	111
-
-/* 112-127 are reserved for private experiments. */
-
-#define R_ARM_RXPC25		249
-#define R_ARM_RSBREL32		250
-#define R_ARM_THM_RPC22		251
-#define R_ARM_RREL32		252
-#define R_ARM_RABS32		253
-#define R_ARM_RPC24		254
-#define R_ARM_RBASE		255
-
-/* Processor specific program header flags */
-#define PF_ARM_SB		0x10000000
-#define PF_ARM_PI		0x20000000
-#define PF_ARM_ENTRY		0x80000000
-
-/* Processor specific program header types */
-#define PT_ARM_EXIDX		(PT_LOPROC + 1)
-
-/* Processor specific section header flags */
-#define SHF_ENTRYSECT		0x10000000
-#define SHF_COMDEF		0x80000000
-
-/* Processor specific symbol types */
-#define STT_ARM_TFUNC		STT_LOPROC
-
-#endif /* _ARM_ELF_MACHDEP_H_ */
diff --git a/mainline/runtime/sdk/android/arm/include/bionic/libc/include/bits/elf_arm64.h b/mainline/runtime/sdk/android/arm/include/bionic/libc/include/bits/elf_arm64.h
deleted file mode 100644
index 9330d7b..0000000
--- a/mainline/runtime/sdk/android/arm/include/bionic/libc/include/bits/elf_arm64.h
+++ /dev/null
@@ -1,97 +0,0 @@
-/*
- * Copyright (C) 2013 The Android Open Source Project
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *  * Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- *  * Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
- * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
- * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
- * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
- * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- */
-
-#ifndef _AARCH64_ELF_MACHDEP_H_
-#define _AARCH64_ELF_MACHDEP_H_
-
-/* Null relocations */
-#define R_ARM_NONE                      0
-#define R_AARCH64_NONE                  256
-
-/* Static Data relocations */
-#define R_AARCH64_ABS64                 257
-#define R_AARCH64_ABS32                 258
-#define R_AARCH64_ABS16                 259
-#define R_AARCH64_PREL64                260
-#define R_AARCH64_PREL32                261
-#define R_AARCH64_PREL16                262
-
-#define R_AARCH64_MOVW_UABS_G0          263
-#define R_AARCH64_MOVW_UABS_G0_NC       264
-#define R_AARCH64_MOVW_UABS_G1          265
-#define R_AARCH64_MOVW_UABS_G1_NC       266
-#define R_AARCH64_MOVW_UABS_G2          267
-#define R_AARCH64_MOVW_UABS_G2_NC       268
-#define R_AARCH64_MOVW_UABS_G3          269
-#define R_AARCH64_MOVW_SABS_G0          270
-#define R_AARCH64_MOVW_SABS_G1          271
-#define R_AARCH64_MOVW_SABS_G2          272
-
-/* PC-relative addresses */
-#define R_AARCH64_LD_PREL_LO19          273
-#define R_AARCH64_ADR_PREL_LO21         274
-#define R_AARCH64_ADR_PREL_PG_HI21      275
-#define R_AARCH64_ADR_PREL_PG_HI21_NC   276
-#define R_AARCH64_ADD_ABS_LO12_NC       277
-#define R_AARCH64_LDST8_ABS_LO12_NC     278
-
-/* Control-flow relocations */
-#define R_AARCH64_TSTBR14               279
-#define R_AARCH64_CONDBR19              280
-#define R_AARCH64_JUMP26                282
-#define R_AARCH64_CALL26                283
-#define R_AARCH64_LDST16_ABS_LO12_NC    284
-#define R_AARCH64_LDST32_ABS_LO12_NC    285
-#define R_AARCH64_LDST64_ABS_LO12_NC    286
-#define R_AARCH64_LDST128_ABS_LO12_NC   299
-
-#define R_AARCH64_MOVW_PREL_G0          287
-#define R_AARCH64_MOVW_PREL_G0_NC       288
-#define R_AARCH64_MOVW_PREL_G1          289
-#define R_AARCH64_MOVW_PREL_G1_NC       290
-#define R_AARCH64_MOVW_PREL_G2          291
-#define R_AARCH64_MOVW_PREL_G2_NC       292
-#define R_AARCH64_MOVW_PREL_G3          293
-
-/* Dynamic relocations */
-#define R_AARCH64_COPY                  1024
-#define R_AARCH64_GLOB_DAT              1025    /* Create GOT entry.  */
-#define R_AARCH64_JUMP_SLOT             1026    /* Create PLT entry.  */
-#define R_AARCH64_RELATIVE              1027    /* Adjust by program base.  */
-#define R_AARCH64_TLS_DTPMOD            1028    /* Module index. */
-#define R_AARCH64_TLS_DTPREL            1029    /* Module-relative offset. */
-#define R_AARCH64_TLS_TPREL             1030    /* TP-relative offset. */
-#define R_AARCH64_TLSDESC               1031    /* 16-byte descriptor: resolver func + arg. */
-#define R_AARCH64_IRELATIVE             1032
-
-/* Dynamic array tags */
-#define DT_AARCH64_BTI_PLT              0x70000001
-#define DT_AARCH64_PAC_PLT              0x70000003
-#define DT_AARCH64_VARIANT_PCS          0x70000005
-
-#endif /* _AARCH64_ELF_MACHDEP_H_ */
diff --git a/mainline/runtime/sdk/android/arm/include/bionic/libc/include/bits/elf_common.h b/mainline/runtime/sdk/android/arm/include/bionic/libc/include/bits/elf_common.h
new file mode 100644
index 0000000..ea833f4
--- /dev/null
+++ b/mainline/runtime/sdk/android/arm/include/bionic/libc/include/bits/elf_common.h
@@ -0,0 +1,1430 @@
+/*-
+ * SPDX-License-Identifier: BSD-2-Clause-FreeBSD
+ *
+ * Copyright (c) 2017, 2018 Dell EMC
+ * Copyright (c) 2000, 2001, 2008, 2011, David E. O'Brien
+ * Copyright (c) 1998 John D. Polstra.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ *
+ * $FreeBSD$
+ */
+
+#ifndef _SYS_ELF_COMMON_H_
+#define	_SYS_ELF_COMMON_H_ 1
+
+/*
+ * ELF definitions that are independent of architecture or word size.
+ */
+
+/*
+ * Option kinds.
+ */
+#define	ODK_NULL	0	/* undefined */
+#define	ODK_REGINFO	1	/* register usage info */
+#define	ODK_EXCEPTIONS	2	/* exception processing info */
+#define	ODK_PAD		3	/* section padding */
+#define	ODK_HWPATCH	4	/* hardware patch applied */
+#define	ODK_FILL	5	/* fill value used by the linker */
+#define	ODK_TAGS	6	/* reserved space for tools */
+#define	ODK_HWAND	7	/* hardware AND patch applied */
+#define	ODK_HWOR	8	/* hardware OR patch applied */
+#define	ODK_GP_GROUP	9	/* GP group for text/data sections */
+#define	ODK_IDENT	10	/* ID information */
+#define	ODK_PAGESIZE	11	/* page size information */
+
+/*
+ * ODK_EXCEPTIONS info field masks.
+ */
+#define	OEX_FPU_MIN	0x0000001f	/* min FPU exception required */
+#define	OEX_FPU_MAX	0x00001f00	/* max FPU exception allowed */
+#define	OEX_PAGE0	0x00010000	/* page zero must be mapped */
+#define	OEX_SMM		0x00020000	/* run in sequential memory mode */
+#define	OEX_PRECISEFP	0x00040000	/* run in precise FP exception mode */
+#define	OEX_DISMISS	0x00080000	/* dismiss invalid address traps */
+
+/*
+ * ODK_PAD info field masks.
+ */
+#define	OPAD_PREFIX	0x0001
+#define	OPAD_POSTFIX	0x0002
+#define	OPAD_SYMBOL	0x0004
+
+/*
+ * ODK_HWPATCH info field masks.
+ */
+#define	OHW_R4KEOP	0x00000001	/* patch for R4000 branch at end-of-page bug */
+#define	OHW_R8KPFETCH	0x00000002	/* R8000 prefetch bug may occur */
+#define	OHW_R5KEOP	0x00000004	/* patch for R5000 branch at end-of-page bug */
+#define	OHW_R5KCVTL	0x00000008	/* R5000 cvt.[ds].l bug: clean == 1 */
+#define	OHW_R10KLDL	0x00000010UL	/* need patch for R10000 misaligned load */
+
+/*
+ * ODK_HWAND/ODK_HWOR info field and hwp_flags[12] masks.
+ */
+#define	OHWA0_R4KEOP_CHECKED	0x00000001	/* object checked for R4000 end-of-page bug */
+#define	OHWA0_R4KEOP_CLEAN	0x00000002	/* object verified clean for R4000 end-of-page bug */
+#define	OHWO0_FIXADE		0x00000001	/* object requires call to fixade */
+
+/*
+ * ODK_IDENT/ODK_GP_GROUP info field masks.
+ */
+#define	OGP_GROUP	0x0000ffff	/* GP group number */
+#define	OGP_SELF	0x00010000	/* GP group is self-contained */
+
+/* Indexes into the e_ident array.  Keep synced with
+   http://www.sco.com/developers/gabi/latest/ch4.eheader.html */
+#define	EI_MAG0		0	/* Magic number, byte 0. */
+#define	EI_MAG1		1	/* Magic number, byte 1. */
+#define	EI_MAG2		2	/* Magic number, byte 2. */
+#define	EI_MAG3		3	/* Magic number, byte 3. */
+#define	EI_CLASS	4	/* Class of machine. */
+#define	EI_DATA		5	/* Data format. */
+#define	EI_VERSION	6	/* ELF format version. */
+#define	EI_OSABI	7	/* Operating system / ABI identification */
+#define	EI_ABIVERSION	8	/* ABI version */
+#define	OLD_EI_BRAND	8	/* Start of architecture identification. */
+#define	EI_PAD		9	/* Start of padding (per SVR4 ABI). */
+#define	EI_NIDENT	16	/* Size of e_ident array. */
+
+/* Values for the magic number bytes. */
+#define	ELFMAG0		0x7f
+#define	ELFMAG1		'E'
+#define	ELFMAG2		'L'
+#define	ELFMAG3		'F'
+#define	ELFMAG		"\177ELF"	/* magic string */
+#define	SELFMAG		4		/* magic string size */
+
+/* Values for e_ident[EI_VERSION] and e_version. */
+#define	EV_NONE		0
+#define	EV_CURRENT	1
+
+/* Values for e_ident[EI_CLASS]. */
+#define	ELFCLASSNONE	0	/* Unknown class. */
+#define	ELFCLASS32	1	/* 32-bit architecture. */
+#define	ELFCLASS64	2	/* 64-bit architecture. */
+
+/* Values for e_ident[EI_DATA]. */
+#define	ELFDATANONE	0	/* Unknown data format. */
+#define	ELFDATA2LSB	1	/* 2's complement little-endian. */
+#define	ELFDATA2MSB	2	/* 2's complement big-endian. */
+
+/* Values for e_ident[EI_OSABI]. */
+#define	ELFOSABI_NONE		0	/* UNIX System V ABI */
+#define	ELFOSABI_HPUX		1	/* HP-UX operating system */
+#define	ELFOSABI_NETBSD		2	/* NetBSD */
+#define	ELFOSABI_LINUX		3	/* GNU/Linux */
+#define	ELFOSABI_HURD		4	/* GNU/Hurd */
+#define	ELFOSABI_86OPEN		5	/* 86Open common IA32 ABI */
+#define	ELFOSABI_SOLARIS	6	/* Solaris */
+#define	ELFOSABI_AIX		7	/* AIX */
+#define	ELFOSABI_IRIX		8	/* IRIX */
+#define	ELFOSABI_FREEBSD	9	/* FreeBSD */
+#define	ELFOSABI_TRU64		10	/* TRU64 UNIX */
+#define	ELFOSABI_MODESTO	11	/* Novell Modesto */
+#define	ELFOSABI_OPENBSD	12	/* OpenBSD */
+#define	ELFOSABI_OPENVMS	13	/* Open VMS */
+#define	ELFOSABI_NSK		14	/* HP Non-Stop Kernel */
+#define	ELFOSABI_AROS		15	/* Amiga Research OS */
+#define	ELFOSABI_FENIXOS	16	/* FenixOS */
+#define	ELFOSABI_CLOUDABI	17	/* Nuxi CloudABI */
+#define	ELFOSABI_OPENVOS	18	/* Stratus Technologies OpenVOS */
+#define	ELFOSABI_ARM_AEABI	64	/* ARM EABI */
+#define	ELFOSABI_ARM		97	/* ARM */
+#define	ELFOSABI_STANDALONE	255	/* Standalone (embedded) application */
+
+#define	ELFOSABI_MONTEREY	ELFOSABI_AIX	/* Monterey */
+
+/* e_ident */
+#define	IS_ELF(ehdr)	((ehdr).e_ident[EI_MAG0] == ELFMAG0 && \
+			 (ehdr).e_ident[EI_MAG1] == ELFMAG1 && \
+			 (ehdr).e_ident[EI_MAG2] == ELFMAG2 && \
+			 (ehdr).e_ident[EI_MAG3] == ELFMAG3)
+
+/* Values for e_type. */
+#define	ET_NONE		0	/* Unknown type. */
+#define	ET_REL		1	/* Relocatable. */
+#define	ET_EXEC		2	/* Executable. */
+#define	ET_DYN		3	/* Shared object. */
+#define	ET_CORE		4	/* Core file. */
+#define	ET_LOOS		0xfe00	/* First operating system specific. */
+#define	ET_HIOS		0xfeff	/* Last operating system-specific. */
+#define	ET_LOPROC	0xff00	/* First processor-specific. */
+#define	ET_HIPROC	0xffff	/* Last processor-specific. */
+
+/* Values for e_machine. */
+#define	EM_NONE		0	/* Unknown machine. */
+#define	EM_M32		1	/* AT&T WE32100. */
+#define	EM_SPARC	2	/* Sun SPARC. */
+#define	EM_386		3	/* Intel i386. */
+#define	EM_68K		4	/* Motorola 68000. */
+#define	EM_88K		5	/* Motorola 88000. */
+#define	EM_IAMCU	6	/* Intel MCU. */
+#define	EM_860		7	/* Intel i860. */
+#define	EM_MIPS		8	/* MIPS R3000 Big-Endian only. */
+#define	EM_S370		9	/* IBM System/370. */
+#define	EM_MIPS_RS3_LE	10	/* MIPS R3000 Little-Endian. */
+#define	EM_PARISC	15	/* HP PA-RISC. */
+#define	EM_VPP500	17	/* Fujitsu VPP500. */
+#define	EM_SPARC32PLUS	18	/* SPARC v8plus. */
+#define	EM_960		19	/* Intel 80960. */
+#define	EM_PPC		20	/* PowerPC 32-bit. */
+#define	EM_PPC64	21	/* PowerPC 64-bit. */
+#define	EM_S390		22	/* IBM System/390. */
+#define	EM_V800		36	/* NEC V800. */
+#define	EM_FR20		37	/* Fujitsu FR20. */
+#define	EM_RH32		38	/* TRW RH-32. */
+#define	EM_RCE		39	/* Motorola RCE. */
+#define	EM_ARM		40	/* ARM. */
+#define	EM_SH		42	/* Hitachi SH. */
+#define	EM_SPARCV9	43	/* SPARC v9 64-bit. */
+#define	EM_TRICORE	44	/* Siemens TriCore embedded processor. */
+#define	EM_ARC		45	/* Argonaut RISC Core. */
+#define	EM_H8_300	46	/* Hitachi H8/300. */
+#define	EM_H8_300H	47	/* Hitachi H8/300H. */
+#define	EM_H8S		48	/* Hitachi H8S. */
+#define	EM_H8_500	49	/* Hitachi H8/500. */
+#define	EM_IA_64	50	/* Intel IA-64 Processor. */
+#define	EM_MIPS_X	51	/* Stanford MIPS-X. */
+#define	EM_COLDFIRE	52	/* Motorola ColdFire. */
+#define	EM_68HC12	53	/* Motorola M68HC12. */
+#define	EM_MMA		54	/* Fujitsu MMA. */
+#define	EM_PCP		55	/* Siemens PCP. */
+#define	EM_NCPU		56	/* Sony nCPU. */
+#define	EM_NDR1		57	/* Denso NDR1 microprocessor. */
+#define	EM_STARCORE	58	/* Motorola Star*Core processor. */
+#define	EM_ME16		59	/* Toyota ME16 processor. */
+#define	EM_ST100	60	/* STMicroelectronics ST100 processor. */
+#define	EM_TINYJ	61	/* Advanced Logic Corp. TinyJ processor. */
+#define	EM_X86_64	62	/* Advanced Micro Devices x86-64 */
+#define	EM_AMD64	EM_X86_64	/* Advanced Micro Devices x86-64 (compat) */
+#define	EM_PDSP		63	/* Sony DSP Processor. */
+#define	EM_FX66		66	/* Siemens FX66 microcontroller. */
+#define	EM_ST9PLUS	67	/* STMicroelectronics ST9+ 8/16
+				   microcontroller. */
+#define	EM_ST7		68	/* STmicroelectronics ST7 8-bit
+				   microcontroller. */
+#define	EM_68HC16	69	/* Motorola MC68HC16 microcontroller. */
+#define	EM_68HC11	70	/* Motorola MC68HC11 microcontroller. */
+#define	EM_68HC08	71	/* Motorola MC68HC08 microcontroller. */
+#define	EM_68HC05	72	/* Motorola MC68HC05 microcontroller. */
+#define	EM_SVX		73	/* Silicon Graphics SVx. */
+#define	EM_ST19		74	/* STMicroelectronics ST19 8-bit mc. */
+#define	EM_VAX		75	/* Digital VAX. */
+#define	EM_CRIS		76	/* Axis Communications 32-bit embedded
+				   processor. */
+#define	EM_JAVELIN	77	/* Infineon Technologies 32-bit embedded
+				   processor. */
+#define	EM_FIREPATH	78	/* Element 14 64-bit DSP Processor. */
+#define	EM_ZSP		79	/* LSI Logic 16-bit DSP Processor. */
+#define	EM_MMIX		80	/* Donald Knuth's educational 64-bit proc. */
+#define	EM_HUANY	81	/* Harvard University machine-independent
+				   object files. */
+#define	EM_PRISM	82	/* SiTera Prism. */
+#define	EM_AVR		83	/* Atmel AVR 8-bit microcontroller. */
+#define	EM_FR30		84	/* Fujitsu FR30. */
+#define	EM_D10V		85	/* Mitsubishi D10V. */
+#define	EM_D30V		86	/* Mitsubishi D30V. */
+#define	EM_V850		87	/* NEC v850. */
+#define	EM_M32R		88	/* Mitsubishi M32R. */
+#define	EM_MN10300	89	/* Matsushita MN10300. */
+#define	EM_MN10200	90	/* Matsushita MN10200. */
+#define	EM_PJ		91	/* picoJava. */
+#define	EM_OPENRISC	92	/* OpenRISC 32-bit embedded processor. */
+#define	EM_ARC_A5	93	/* ARC Cores Tangent-A5. */
+#define	EM_XTENSA	94	/* Tensilica Xtensa Architecture. */
+#define	EM_VIDEOCORE	95	/* Alphamosaic VideoCore processor. */
+#define	EM_TMM_GPP	96	/* Thompson Multimedia General Purpose
+				   Processor. */
+#define	EM_NS32K	97	/* National Semiconductor 32000 series. */
+#define	EM_TPC		98	/* Tenor Network TPC processor. */
+#define	EM_SNP1K	99	/* Trebia SNP 1000 processor. */
+#define	EM_ST200	100	/* STMicroelectronics ST200 microcontroller. */
+#define	EM_IP2K		101	/* Ubicom IP2xxx microcontroller family. */
+#define	EM_MAX		102	/* MAX Processor. */
+#define	EM_CR		103	/* National Semiconductor CompactRISC
+				   microprocessor. */
+#define	EM_F2MC16	104	/* Fujitsu F2MC16. */
+#define	EM_MSP430	105	/* Texas Instruments embedded microcontroller
+				   msp430. */
+#define	EM_BLACKFIN	106	/* Analog Devices Blackfin (DSP) processor. */
+#define	EM_SE_C33	107	/* S1C33 Family of Seiko Epson processors. */
+#define	EM_SEP		108	/* Sharp embedded microprocessor. */
+#define	EM_ARCA		109	/* Arca RISC Microprocessor. */
+#define	EM_UNICORE	110	/* Microprocessor series from PKU-Unity Ltd.
+				   and MPRC of Peking University */
+#define	EM_AARCH64	183	/* AArch64 (64-bit ARM) */
+#define	EM_RISCV	243	/* RISC-V */
+
+/* Non-standard or deprecated. */
+#define	EM_486		6	/* Intel i486. */
+#define	EM_MIPS_RS4_BE	10	/* MIPS R4000 Big-Endian */
+#define	EM_ALPHA_STD	41	/* Digital Alpha (standard value). */
+#define	EM_ALPHA	0x9026	/* Alpha (written in the absence of an ABI) */
+
+/**
+ * e_flags
+ */
+#define	EF_ARM_RELEXEC	0x1
+#define	EF_ARM_HASENTRY	0x2
+#define	EF_ARM_SYMSARESORTED	0x4
+#define	EF_ARM_DYNSYMSUSESEGIDX	0x8
+#define	EF_ARM_MAPSYMSFIRST	0x10
+#define	EF_ARM_LE8		0x00400000
+#define	EF_ARM_BE8		0x00800000
+#define	EF_ARM_EABIMASK		0xFF000000
+#define	EF_ARM_EABI_UNKNOWN	0x00000000
+#define	EF_ARM_EABI_VER1	0x01000000
+#define	EF_ARM_EABI_VER2	0x02000000
+#define	EF_ARM_EABI_VER3	0x03000000
+#define	EF_ARM_EABI_VER4	0x04000000
+#define	EF_ARM_EABI_VER5	0x05000000
+#define	EF_ARM_INTERWORK	0x00000004
+#define	EF_ARM_APCS_26		0x00000008
+#define	EF_ARM_APCS_FLOAT	0x00000010
+#define	EF_ARM_PIC		0x00000020
+#define	EF_ARM_ALIGN8		0x00000040
+#define	EF_ARM_NEW_ABI		0x00000080
+#define	EF_ARM_OLD_ABI		0x00000100
+#define	EF_ARM_ABI_FLOAT_SOFT	0x00000200
+#define	EF_ARM_SOFT_FLOAT	EF_ARM_ABI_FLOAT_SOFT /* Pre-V5 ABI name */
+#define	EF_ARM_ABI_FLOAT_HARD	0x00000400
+#define	EF_ARM_VFP_FLOAT	EF_ARM_ABI_FLOAT_HARD /* Pre-V5 ABI name */
+#define	EF_ARM_MAVERICK_FLOAT	0x00000800
+
+#define	EF_MIPS_NOREORDER	0x00000001
+#define	EF_MIPS_PIC		0x00000002	/* Contains PIC code */
+#define	EF_MIPS_CPIC		0x00000004	/* STD PIC calling sequence */
+#define	EF_MIPS_UCODE		0x00000010
+#define	EF_MIPS_ABI2		0x00000020	/* N32 */
+#define	EF_MIPS_OPTIONS_FIRST	0x00000080
+#define	EF_MIPS_ABI		0x0000F000
+#define	EF_MIPS_ABI_O32		0x00001000
+#define	EF_MIPS_ABI_O64		0x00002000
+#define	EF_MIPS_ABI_EABI32	0x00003000
+#define	EF_MIPS_ABI_EABI64	0x00004000
+#define	EF_MIPS_ARCH_ASE	0x0F000000	/* Architectural extensions */
+#define	EF_MIPS_ARCH_ASE_MDMX	0x08000000	/* MDMX multimedia extension */
+#define	EF_MIPS_ARCH_ASE_M16	0x04000000	/* MIPS-16 ISA extensions */
+#define	EF_MIPS_ARCH		0xF0000000	/* Architecture field */
+#define	EF_MIPS_ARCH_1		0x00000000	/* -mips1 code */
+#define	EF_MIPS_ARCH_2		0x10000000	/* -mips2 code */
+#define	EF_MIPS_ARCH_3		0x20000000	/* -mips3 code */
+#define	EF_MIPS_ARCH_4		0x30000000	/* -mips4 code */
+#define	EF_MIPS_ARCH_5		0x40000000	/* -mips5 code */
+#define	EF_MIPS_ARCH_32		0x50000000	/* -mips32 code */
+#define	EF_MIPS_ARCH_64		0x60000000	/* -mips64 code */
+#define	EF_MIPS_ARCH_32R2	0x70000000	/* -mips32r2 code */
+#define	EF_MIPS_ARCH_64R2	0x80000000	/* -mips64r2 code */
+
+#define	EF_PPC_EMB		0x80000000
+#define	EF_PPC_RELOCATABLE	0x00010000
+#define	EF_PPC_RELOCATABLE_LIB	0x00008000
+
+#define	EF_RISCV_RVC		0x00000001
+#define	EF_RISCV_FLOAT_ABI_MASK	0x00000006
+#define	EF_RISCV_FLOAT_ABI_SOFT	0x00000000
+#define	EF_RISCV_FLOAT_ABI_SINGLE 0x000002
+#define	EF_RISCV_FLOAT_ABI_DOUBLE 0x000004
+#define	EF_RISCV_FLOAT_ABI_QUAD	0x00000006
+#define	EF_RISCV_RVE		0x00000008
+#define	EF_RISCV_TSO		0x00000010
+
+#define	EF_SPARC_EXT_MASK	0x00ffff00
+#define	EF_SPARC_32PLUS		0x00000100
+#define	EF_SPARC_SUN_US1	0x00000200
+#define	EF_SPARC_HAL_R1		0x00000200
+#define	EF_SPARC_SUN_US3	0x00000800
+
+#define	EF_SPARCV9_MM		0x00000003
+#define	EF_SPARCV9_TSO		0x00000000
+#define	EF_SPARCV9_PSO		0x00000001
+#define	EF_SPARCV9_RMO		0x00000002
+
+/* Special section indexes. */
+#define	SHN_UNDEF	     0		/* Undefined, missing, irrelevant. */
+#define	SHN_LORESERVE	0xff00		/* First of reserved range. */
+#define	SHN_LOPROC	0xff00		/* First processor-specific. */
+#define	SHN_HIPROC	0xff1f		/* Last processor-specific. */
+#define	SHN_LOOS	0xff20		/* First operating system-specific. */
+#define	SHN_FBSD_CACHED	SHN_LOOS	/* Transient, for sys/kern/link_elf_obj
+					   linker only: Cached global in local
+					   symtab. */
+#define	SHN_HIOS	0xff3f		/* Last operating system-specific. */
+#define	SHN_ABS		0xfff1		/* Absolute values. */
+#define	SHN_COMMON	0xfff2		/* Common data. */
+#define	SHN_XINDEX	0xffff		/* Escape -- index stored elsewhere. */
+#define	SHN_HIRESERVE	0xffff		/* Last of reserved range. */
+
+/* sh_type */
+#define	SHT_NULL		0	/* inactive */
+#define	SHT_PROGBITS		1	/* program defined information */
+#define	SHT_SYMTAB		2	/* symbol table section */
+#define	SHT_STRTAB		3	/* string table section */
+#define	SHT_RELA		4	/* relocation section with addends */
+#define	SHT_HASH		5	/* symbol hash table section */
+#define	SHT_DYNAMIC		6	/* dynamic section */
+#define	SHT_NOTE		7	/* note section */
+#define	SHT_NOBITS		8	/* no space section */
+#define	SHT_REL			9	/* relocation section - no addends */
+#define	SHT_SHLIB		10	/* reserved - purpose unknown */
+#define	SHT_DYNSYM		11	/* dynamic symbol table section */
+#define	SHT_INIT_ARRAY		14	/* Initialization function pointers. */
+#define	SHT_FINI_ARRAY		15	/* Termination function pointers. */
+#define	SHT_PREINIT_ARRAY	16	/* Pre-initialization function ptrs. */
+#define	SHT_GROUP		17	/* Section group. */
+#define	SHT_SYMTAB_SHNDX	18	/* Section indexes (see SHN_XINDEX). */
+#define	SHT_LOOS		0x60000000	/* First of OS specific semantics */
+#define	SHT_LOSUNW		0x6ffffff4
+#define	SHT_SUNW_dof		0x6ffffff4
+#define	SHT_SUNW_cap		0x6ffffff5
+#define	SHT_GNU_ATTRIBUTES	0x6ffffff5
+#define	SHT_SUNW_SIGNATURE	0x6ffffff6
+#define	SHT_GNU_HASH		0x6ffffff6
+#define	SHT_GNU_LIBLIST		0x6ffffff7
+#define	SHT_SUNW_ANNOTATE	0x6ffffff7
+#define	SHT_SUNW_DEBUGSTR	0x6ffffff8
+#define	SHT_SUNW_DEBUG		0x6ffffff9
+#define	SHT_SUNW_move		0x6ffffffa
+#define	SHT_SUNW_COMDAT		0x6ffffffb
+#define	SHT_SUNW_syminfo	0x6ffffffc
+#define	SHT_SUNW_verdef		0x6ffffffd
+#define	SHT_GNU_verdef		0x6ffffffd	/* Symbol versions provided */
+#define	SHT_SUNW_verneed	0x6ffffffe
+#define	SHT_GNU_verneed		0x6ffffffe	/* Symbol versions required */
+#define	SHT_SUNW_versym		0x6fffffff
+#define	SHT_GNU_versym		0x6fffffff	/* Symbol version table */
+#define	SHT_HISUNW		0x6fffffff
+#define	SHT_HIOS		0x6fffffff	/* Last of OS specific semantics */
+#define	SHT_LOPROC		0x70000000	/* reserved range for processor */
+#define	SHT_X86_64_UNWIND	0x70000001	/* unwind information */
+#define	SHT_AMD64_UNWIND	SHT_X86_64_UNWIND 
+
+#define	SHT_ARM_EXIDX		0x70000001	/* Exception index table. */
+#define	SHT_ARM_PREEMPTMAP	0x70000002	/* BPABI DLL dynamic linking 
+						   pre-emption map. */
+#define	SHT_ARM_ATTRIBUTES	0x70000003	/* Object file compatibility 
+						   attributes. */
+#define	SHT_ARM_DEBUGOVERLAY	0x70000004	/* See DBGOVL for details. */
+#define	SHT_ARM_OVERLAYSECTION	0x70000005	/* See DBGOVL for details. */
+#define	SHT_MIPS_LIBLIST	0x70000000
+#define	SHT_MIPS_MSYM		0x70000001
+#define	SHT_MIPS_CONFLICT	0x70000002
+#define	SHT_MIPS_GPTAB		0x70000003
+#define	SHT_MIPS_UCODE		0x70000004
+#define	SHT_MIPS_DEBUG		0x70000005
+#define	SHT_MIPS_REGINFO	0x70000006
+#define	SHT_MIPS_PACKAGE	0x70000007
+#define	SHT_MIPS_PACKSYM	0x70000008
+#define	SHT_MIPS_RELD		0x70000009
+#define	SHT_MIPS_IFACE		0x7000000b
+#define	SHT_MIPS_CONTENT	0x7000000c
+#define	SHT_MIPS_OPTIONS	0x7000000d
+#define	SHT_MIPS_DELTASYM	0x7000001b
+#define	SHT_MIPS_DELTAINST	0x7000001c
+#define	SHT_MIPS_DELTACLASS	0x7000001d
+#define	SHT_MIPS_DWARF		0x7000001e	/* MIPS gcc uses MIPS_DWARF */
+#define	SHT_MIPS_DELTADECL	0x7000001f
+#define	SHT_MIPS_SYMBOL_LIB	0x70000020
+#define	SHT_MIPS_EVENTS		0x70000021
+#define	SHT_MIPS_TRANSLATE	0x70000022
+#define	SHT_MIPS_PIXIE		0x70000023
+#define	SHT_MIPS_XLATE		0x70000024
+#define	SHT_MIPS_XLATE_DEBUG	0x70000025
+#define	SHT_MIPS_WHIRL		0x70000026
+#define	SHT_MIPS_EH_REGION	0x70000027
+#define	SHT_MIPS_XLATE_OLD	0x70000028
+#define	SHT_MIPS_PDR_EXCEPTION	0x70000029
+#define	SHT_MIPS_ABIFLAGS	0x7000002a
+
+#define	SHT_SPARC_GOTDATA	0x70000000
+
+#define	SHTORDERED
+#define	SHT_HIPROC		0x7fffffff	/* specific section header types */
+#define	SHT_LOUSER		0x80000000	/* reserved range for application */
+#define	SHT_HIUSER		0xffffffff	/* specific indexes */
+
+/* Flags for sh_flags. */
+#define	SHF_WRITE		0x1	/* Section contains writable data. */
+#define	SHF_ALLOC		0x2	/* Section occupies memory. */
+#define	SHF_EXECINSTR		0x4	/* Section contains instructions. */
+#define	SHF_MERGE		0x10	/* Section may be merged. */
+#define	SHF_STRINGS		0x20	/* Section contains strings. */
+#define	SHF_INFO_LINK		0x40	/* sh_info holds section index. */
+#define	SHF_LINK_ORDER		0x80	/* Special ordering requirements. */
+#define	SHF_OS_NONCONFORMING	0x100	/* OS-specific processing required. */
+#define	SHF_GROUP		0x200	/* Member of section group. */
+#define	SHF_TLS			0x400	/* Section contains TLS data. */
+#define	SHF_COMPRESSED		0x800	/* Section contains compressed data. */
+#define	SHF_MASKOS	0x0ff00000	/* OS-specific semantics. */
+#define	SHF_MASKPROC	0xf0000000	/* Processor-specific semantics. */
+
+/* Flags for section groups. */
+#define	GRP_COMDAT	0x1	/* COMDAT semantics. */
+
+/*
+ * Flags / mask for .gnu.versym sections.
+ */
+#define	VERSYM_VERSION	0x7fff
+#define	VERSYM_HIDDEN	0x8000
+
+/* Values for p_type. */
+#define	PT_NULL		0	/* Unused entry. */
+#define	PT_LOAD		1	/* Loadable segment. */
+#define	PT_DYNAMIC	2	/* Dynamic linking information segment. */
+#define	PT_INTERP	3	/* Pathname of interpreter. */
+#define	PT_NOTE		4	/* Auxiliary information. */
+#define	PT_SHLIB	5	/* Reserved (not used). */
+#define	PT_PHDR		6	/* Location of program header itself. */
+#define	PT_TLS		7	/* Thread local storage segment */
+#define	PT_LOOS		0x60000000	/* First OS-specific. */
+#define	PT_SUNW_UNWIND	0x6464e550	/* amd64 UNWIND program header */
+#define	PT_DUMP_DELTA	0x6fb5d000	/* va->pa map for kernel dumps
+					   (currently arm). */
+#define	PT_LOSUNW	0x6ffffffa
+#define	PT_SUNWBSS	0x6ffffffa	/* Sun Specific segment */
+#define	PT_SUNWSTACK	0x6ffffffb	/* describes the stack segment */
+#define	PT_SUNWDTRACE	0x6ffffffc	/* private */
+#define	PT_SUNWCAP	0x6ffffffd	/* hard/soft capabilities segment */
+#define	PT_HISUNW	0x6fffffff
+#define	PT_HIOS		0x6fffffff	/* Last OS-specific. */
+#define	PT_LOPROC	0x70000000	/* First processor-specific type. */
+#define	PT_ARM_ARCHEXT	0x70000000	/* ARM arch compat information. */
+#define	PT_ARM_EXIDX	0x70000001	/* ARM exception unwind tables. */
+#define	PT_MIPS_REGINFO		0x70000000	/* MIPS register usage info */
+#define	PT_MIPS_RTPROC		0x70000001	/* MIPS runtime procedure tbl */
+#define	PT_MIPS_OPTIONS		0x70000002	/* MIPS e_flags value*/
+#define	PT_MIPS_ABIFLAGS	0x70000003	/* MIPS fp mode */
+#define	PT_HIPROC	0x7fffffff	/* Last processor-specific type. */
+
+#define	PT_OPENBSD_RANDOMIZE	0x65A3DBE6	/* OpenBSD random data segment */
+#define	PT_OPENBSD_WXNEEDED	0x65A3DBE7	/* OpenBSD EXEC/WRITE pages needed */
+#define	PT_OPENBSD_BOOTDATA	0x65A41BE6	/* OpenBSD section for boot args */
+
+/* Values for p_flags. */
+#define	PF_X		0x1		/* Executable. */
+#define	PF_W		0x2		/* Writable. */
+#define	PF_R		0x4		/* Readable. */
+#define	PF_MASKOS	0x0ff00000	/* Operating system-specific. */
+#define	PF_MASKPROC	0xf0000000	/* Processor-specific. */
+
+/* Extended program header index. */
+#define	PN_XNUM		0xffff
+
+/* Values for d_tag. */
+#define	DT_NULL		0	/* Terminating entry. */
+#define	DT_NEEDED	1	/* String table offset of a needed shared
+				   library. */
+#define	DT_PLTRELSZ	2	/* Total size in bytes of PLT relocations. */
+#define	DT_PLTGOT	3	/* Processor-dependent address. */
+#define	DT_HASH		4	/* Address of symbol hash table. */
+#define	DT_STRTAB	5	/* Address of string table. */
+#define	DT_SYMTAB	6	/* Address of symbol table. */
+#define	DT_RELA		7	/* Address of ElfNN_Rela relocations. */
+#define	DT_RELASZ	8	/* Total size of ElfNN_Rela relocations. */
+#define	DT_RELAENT	9	/* Size of each ElfNN_Rela relocation entry. */
+#define	DT_STRSZ	10	/* Size of string table. */
+#define	DT_SYMENT	11	/* Size of each symbol table entry. */
+#define	DT_INIT		12	/* Address of initialization function. */
+#define	DT_FINI		13	/* Address of finalization function. */
+#define	DT_SONAME	14	/* String table offset of shared object
+				   name. */
+#define	DT_RPATH	15	/* String table offset of library path. [sup] */
+#define	DT_SYMBOLIC	16	/* Indicates "symbolic" linking. [sup] */
+#define	DT_REL		17	/* Address of ElfNN_Rel relocations. */
+#define	DT_RELSZ	18	/* Total size of ElfNN_Rel relocations. */
+#define	DT_RELENT	19	/* Size of each ElfNN_Rel relocation. */
+#define	DT_PLTREL	20	/* Type of relocation used for PLT. */
+#define	DT_DEBUG	21	/* Reserved (not used). */
+#define	DT_TEXTREL	22	/* Indicates there may be relocations in
+				   non-writable segments. [sup] */
+#define	DT_JMPREL	23	/* Address of PLT relocations. */
+#define	DT_BIND_NOW	24	/* [sup] */
+#define	DT_INIT_ARRAY	25	/* Address of the array of pointers to
+				   initialization functions */
+#define	DT_FINI_ARRAY	26	/* Address of the array of pointers to
+				   termination functions */
+#define	DT_INIT_ARRAYSZ	27	/* Size in bytes of the array of
+				   initialization functions. */
+#define	DT_FINI_ARRAYSZ	28	/* Size in bytes of the array of
+				   termination functions. */
+#define	DT_RUNPATH	29	/* String table offset of a null-terminated
+				   library search path string. */
+#define	DT_FLAGS	30	/* Object specific flag values. */
+#define	DT_ENCODING	32	/* Values greater than or equal to DT_ENCODING
+				   and less than DT_LOOS follow the rules for
+				   the interpretation of the d_un union
+				   as follows: even == 'd_ptr', odd == 'd_val'
+				   or none */
+#define	DT_PREINIT_ARRAY 32	/* Address of the array of pointers to
+				   pre-initialization functions. */
+#define	DT_PREINIT_ARRAYSZ 33	/* Size in bytes of the array of
+				   pre-initialization functions. */
+#define	DT_MAXPOSTAGS	34	/* number of positive tags */
+#define	DT_RELRSZ	35	/* Total size of ElfNN_Relr relocations. */
+#define	DT_RELR		36	/* Address of ElfNN_Relr relocations. */
+#define	DT_RELRENT	37	/* Size of each ElfNN_Relr relocation. */
+#define	DT_LOOS		0x6000000d	/* First OS-specific */
+#define	DT_SUNW_AUXILIARY	0x6000000d	/* symbol auxiliary name */
+#define	DT_SUNW_RTLDINF		0x6000000e	/* ld.so.1 info (private) */
+#define	DT_SUNW_FILTER		0x6000000f	/* symbol filter name */
+#define	DT_SUNW_CAP		0x60000010	/* hardware/software */
+#define	DT_SUNW_ASLR		0x60000023	/* ASLR control */
+#define	DT_HIOS		0x6ffff000	/* Last OS-specific */
+
+/*
+ * DT_* entries which fall between DT_VALRNGHI & DT_VALRNGLO use the
+ * Dyn.d_un.d_val field of the Elf*_Dyn structure.
+ */
+#define	DT_VALRNGLO	0x6ffffd00
+#define	DT_GNU_PRELINKED	0x6ffffdf5 /* prelinking timestamp */
+#define	DT_GNU_CONFLICTSZ	0x6ffffdf6 /* size of conflict section */
+#define	DT_GNU_LIBLISTSZ	0x6ffffdf7 /* size of library list */
+#define	DT_CHECKSUM	0x6ffffdf8	/* elf checksum */
+#define	DT_PLTPADSZ	0x6ffffdf9	/* pltpadding size */
+#define	DT_MOVEENT	0x6ffffdfa	/* move table entry size */
+#define	DT_MOVESZ	0x6ffffdfb	/* move table size */
+#define	DT_FEATURE	0x6ffffdfc	/* feature holder */
+#define	DT_FEATURE_1	DT_FEATURE
+#define	DT_POSFLAG_1	0x6ffffdfd	/* flags for DT_* entries, effecting */
+					/*	the following DT_* entry. */
+					/*	See DF_P1_* definitions */
+#define	DT_SYMINSZ	0x6ffffdfe	/* syminfo table size (in bytes) */
+#define	DT_SYMINENT	0x6ffffdff	/* syminfo entry size (in bytes) */
+#define	DT_VALRNGHI	0x6ffffdff
+
+/*
+ * DT_* entries which fall between DT_ADDRRNGHI & DT_ADDRRNGLO use the
+ * Dyn.d_un.d_ptr field of the Elf*_Dyn structure.
+ *
+ * If any adjustment is made to the ELF object after it has been
+ * built, these entries will need to be adjusted.
+ */
+#define	DT_ADDRRNGLO	0x6ffffe00
+#define	DT_GNU_HASH	0x6ffffef5	/* GNU-style hash table */
+#define	DT_TLSDESC_PLT	0x6ffffef6	/* loc. of PLT for tlsdesc resolver */
+#define	DT_TLSDESC_GOT	0x6ffffef7	/* loc. of GOT for tlsdesc resolver */
+#define	DT_GNU_CONFLICT	0x6ffffef8	/* address of conflict section */
+#define	DT_GNU_LIBLIST	0x6ffffef9	/* address of library list */
+#define	DT_CONFIG	0x6ffffefa	/* configuration information */
+#define	DT_DEPAUDIT	0x6ffffefb	/* dependency auditing */
+#define	DT_AUDIT	0x6ffffefc	/* object auditing */
+#define	DT_PLTPAD	0x6ffffefd	/* pltpadding (sparcv9) */
+#define	DT_MOVETAB	0x6ffffefe	/* move table */
+#define	DT_SYMINFO	0x6ffffeff	/* syminfo table */
+#define	DT_ADDRRNGHI	0x6ffffeff
+
+#define	DT_VERSYM	0x6ffffff0	/* Address of versym section. */
+#define	DT_RELACOUNT	0x6ffffff9	/* number of RELATIVE relocations */
+#define	DT_RELCOUNT	0x6ffffffa	/* number of RELATIVE relocations */
+#define	DT_FLAGS_1	0x6ffffffb	/* state flags - see DF_1_* defs */
+#define	DT_VERDEF	0x6ffffffc	/* Address of verdef section. */
+#define	DT_VERDEFNUM	0x6ffffffd	/* Number of elems in verdef section */
+#define	DT_VERNEED	0x6ffffffe	/* Address of verneed section. */
+#define	DT_VERNEEDNUM	0x6fffffff	/* Number of elems in verneed section */
+
+#define	DT_LOPROC	0x70000000	/* First processor-specific type. */
+
+#define	DT_AARCH64_BTI_PLT		0x70000001
+#define	DT_AARCH64_PAC_PLT		0x70000003
+#define	DT_AARCH64_VARIANT_PCS		0x70000005
+
+#define	DT_ARM_SYMTABSZ			0x70000001
+#define	DT_ARM_PREEMPTMAP		0x70000002
+
+#define	DT_SPARC_REGISTER		0x70000001
+#define	DT_DEPRECATED_SPARC_REGISTER	0x7000001
+
+#define	DT_MIPS_RLD_VERSION		0x70000001
+#define	DT_MIPS_TIME_STAMP		0x70000002
+#define	DT_MIPS_ICHECKSUM		0x70000003
+#define	DT_MIPS_IVERSION		0x70000004
+#define	DT_MIPS_FLAGS			0x70000005
+#define	DT_MIPS_BASE_ADDRESS		0x70000006
+#define	DT_MIPS_CONFLICT		0x70000008
+#define	DT_MIPS_LIBLIST			0x70000009
+#define	DT_MIPS_LOCAL_GOTNO		0x7000000a
+#define	DT_MIPS_CONFLICTNO		0x7000000b
+#define	DT_MIPS_LIBLISTNO		0x70000010
+#define	DT_MIPS_SYMTABNO		0x70000011
+#define	DT_MIPS_UNREFEXTNO		0x70000012
+#define	DT_MIPS_GOTSYM			0x70000013
+#define	DT_MIPS_HIPAGENO		0x70000014
+#define	DT_MIPS_RLD_MAP			0x70000016
+#define	DT_MIPS_DELTA_CLASS		0x70000017
+#define	DT_MIPS_DELTA_CLASS_NO		0x70000018
+#define	DT_MIPS_DELTA_INSTANCE		0x70000019
+#define	DT_MIPS_DELTA_INSTANCE_NO	0x7000001A
+#define	DT_MIPS_DELTA_RELOC		0x7000001B
+#define	DT_MIPS_DELTA_RELOC_NO		0x7000001C
+#define	DT_MIPS_DELTA_SYM		0x7000001D
+#define	DT_MIPS_DELTA_SYM_NO		0x7000001E
+#define	DT_MIPS_DELTA_CLASSSYM		0x70000020
+#define	DT_MIPS_DELTA_CLASSSYM_NO	0x70000021
+#define	DT_MIPS_CXX_FLAGS		0x70000022
+#define	DT_MIPS_PIXIE_INIT		0x70000023
+#define	DT_MIPS_SYMBOL_LIB		0x70000024
+#define	DT_MIPS_LOCALPAGE_GOTIDX	0x70000025
+#define	DT_MIPS_LOCAL_GOTIDX		0x70000026
+#define	DT_MIPS_HIDDEN_GOTIDX		0x70000027
+#define	DT_MIPS_PROTECTED_GOTIDX	0x70000028
+#define	DT_MIPS_OPTIONS			0x70000029
+#define	DT_MIPS_INTERFACE		0x7000002A
+#define	DT_MIPS_DYNSTR_ALIGN		0x7000002B
+#define	DT_MIPS_INTERFACE_SIZE		0x7000002C
+#define	DT_MIPS_RLD_TEXT_RESOLVE_ADDR	0x7000002D
+#define	DT_MIPS_PERF_SUFFIX		0x7000002E
+#define	DT_MIPS_COMPACT_SIZE		0x7000002F
+#define	DT_MIPS_GP_VALUE		0x70000030
+#define	DT_MIPS_AUX_DYNAMIC		0x70000031
+#define	DT_MIPS_PLTGOT			0x70000032
+#define	DT_MIPS_RLD_OBJ_UPDATE		0x70000033
+#define	DT_MIPS_RWPLT			0x70000034
+#define	DT_MIPS_RLD_MAP_REL		0x70000035
+
+#define	DT_PPC_GOT			0x70000000
+#define	DT_PPC_TLSOPT			0x70000001
+
+#define	DT_PPC64_GLINK			0x70000000
+#define	DT_PPC64_OPD			0x70000001
+#define	DT_PPC64_OPDSZ			0x70000002
+#define	DT_PPC64_TLSOPT			0x70000003
+
+#define	DT_AUXILIARY	0x7ffffffd	/* shared library auxiliary name */
+#define	DT_USED		0x7ffffffe	/* ignored - same as needed */
+#define	DT_FILTER	0x7fffffff	/* shared library filter name */
+#define	DT_HIPROC	0x7fffffff	/* Last processor-specific type. */
+
+/* Values for DT_FLAGS */
+#define	DF_ORIGIN	0x0001	/* Indicates that the object being loaded may
+				   make reference to the $ORIGIN substitution
+				   string */
+#define	DF_SYMBOLIC	0x0002	/* Indicates "symbolic" linking. */
+#define	DF_TEXTREL	0x0004	/* Indicates there may be relocations in
+				   non-writable segments. */
+#define	DF_BIND_NOW	0x0008	/* Indicates that the dynamic linker should
+				   process all relocations for the object
+				   containing this entry before transferring
+				   control to the program. */
+#define	DF_STATIC_TLS	0x0010	/* Indicates that the shared object or
+				   executable contains code using a static
+				   thread-local storage scheme. */
+
+/* Values for DT_FLAGS_1 */
+#define	DF_1_BIND_NOW	0x00000001	/* Same as DF_BIND_NOW */
+#define	DF_1_GLOBAL	0x00000002	/* Set the RTLD_GLOBAL for object */
+#define	DF_1_NODELETE	0x00000008	/* Set the RTLD_NODELETE for object */
+#define	DF_1_LOADFLTR	0x00000010	/* Immediate loading of filtees */
+#define	DF_1_NOOPEN     0x00000040	/* Do not allow loading on dlopen() */
+#define	DF_1_ORIGIN	0x00000080	/* Process $ORIGIN */
+#define	DF_1_INTERPOSE	0x00000400	/* Interpose all objects but main */
+#define	DF_1_NODEFLIB	0x00000800	/* Do not search default paths */
+#define	DF_1_PIE	0x08000000	/* Is position-independent executable */
+
+/* Values for l_flags. */
+#define	LL_NONE			0x0	/* no flags */
+#define	LL_EXACT_MATCH		0x1	/* require an exact match */
+#define	LL_IGNORE_INT_VER	0x2	/* ignore version incompatibilities */
+#define	LL_REQUIRE_MINOR	0x4
+#define	LL_EXPORTS		0x8
+#define	LL_DELAY_LOAD		0x10
+#define	LL_DELTA		0x20
+
+/* Note section names */
+#define	ELF_NOTE_FREEBSD	"FreeBSD"
+#define	ELF_NOTE_NETBSD		"NetBSD"
+#define	ELF_NOTE_SOLARIS	"SUNW Solaris"
+#define	ELF_NOTE_GNU		"GNU"
+
+/* Values for n_type used in executables. */
+#define	NT_FREEBSD_ABI_TAG	1
+#define	NT_FREEBSD_NOINIT_TAG	2
+#define	NT_FREEBSD_ARCH_TAG	3
+#define	NT_FREEBSD_FEATURE_CTL	4
+
+/* NT_FREEBSD_FEATURE_CTL desc[0] bits */
+#define	NT_FREEBSD_FCTL_ASLR_DISABLE	0x00000001
+#define	NT_FREEBSD_FCTL_PROTMAX_DISABLE	0x00000002
+#define	NT_FREEBSD_FCTL_STKGAP_DISABLE	0x00000004
+#define	NT_FREEBSD_FCTL_WXNEEDED	0x00000008
+#define	NT_FREEBSD_FCTL_LA48		0x00000010
+/* was ASG_DISABLE, do not reuse	0x00000020 */
+
+/* Values for n_type.  Used in core files. */
+#define	NT_PRSTATUS	1	/* Process status. */
+#define	NT_FPREGSET	2	/* Floating point registers. */
+#define	NT_PRPSINFO	3	/* Process state info. */
+#define	NT_THRMISC	7	/* Thread miscellaneous info. */
+#define	NT_PROCSTAT_PROC	8	/* Procstat proc data. */
+#define	NT_PROCSTAT_FILES	9	/* Procstat files data. */
+#define	NT_PROCSTAT_VMMAP	10	/* Procstat vmmap data. */
+#define	NT_PROCSTAT_GROUPS	11	/* Procstat groups data. */
+#define	NT_PROCSTAT_UMASK	12	/* Procstat umask data. */
+#define	NT_PROCSTAT_RLIMIT	13	/* Procstat rlimit data. */
+#define	NT_PROCSTAT_OSREL	14	/* Procstat osreldate data. */
+#define	NT_PROCSTAT_PSSTRINGS	15	/* Procstat ps_strings data. */
+#define	NT_PROCSTAT_AUXV	16	/* Procstat auxv data. */
+#define	NT_PTLWPINFO		17	/* Thread ptrace miscellaneous info. */
+#define	NT_PPC_VMX	0x100	/* PowerPC Altivec/VMX registers */
+#define	NT_PPC_VSX	0x102	/* PowerPC VSX registers */
+#define	NT_X86_SEGBASES	0x200	/* x86 FS/GS base addresses. */
+#define	NT_X86_XSTATE	0x202	/* x86 XSAVE extended state. */
+#define	NT_ARM_VFP	0x400	/* ARM VFP registers */
+#define	NT_ARM_TLS	0x401	/* ARM TLS register */
+#define	NT_ARM_ADDR_MASK	0x406	/* arm64 address mask (e.g. for TBI) */
+
+/* GNU note types. */
+#define	NT_GNU_ABI_TAG		1
+#define	NT_GNU_HWCAP		2
+#define	NT_GNU_BUILD_ID		3
+#define	NT_GNU_GOLD_VERSION	4
+#define	NT_GNU_PROPERTY_TYPE_0	5
+
+#define	GNU_PROPERTY_LOPROC			0xc0000000
+#define	GNU_PROPERTY_HIPROC			0xdfffffff
+
+#define	GNU_PROPERTY_AARCH64_FEATURE_1_AND	0xc0000000
+
+#define	GNU_PROPERTY_AARCH64_FEATURE_1_PAC	0x00000002
+
+#define	GNU_PROPERTY_X86_FEATURE_1_AND		0xc0000002
+
+#define	GNU_PROPERTY_X86_FEATURE_1_IBT		0x00000001
+#define	GNU_PROPERTY_X86_FEATURE_1_SHSTK	0x00000002
+
+/* Symbol Binding - ELFNN_ST_BIND - st_info */
+#define	STB_LOCAL	0	/* Local symbol */
+#define	STB_GLOBAL	1	/* Global symbol */
+#define	STB_WEAK	2	/* like global - lower precedence */
+#define	STB_LOOS	10	/* Start of operating system reserved range. */
+#define	STB_GNU_UNIQUE	10	/* Unique symbol (GNU) */
+#define	STB_HIOS	12	/* End of operating system reserved range. */
+#define	STB_LOPROC	13	/* reserved range for processor */
+#define	STB_HIPROC	15	/*   specific semantics. */
+
+/* Symbol type - ELFNN_ST_TYPE - st_info */
+#define	STT_NOTYPE	0	/* Unspecified type. */
+#define	STT_OBJECT	1	/* Data object. */
+#define	STT_FUNC	2	/* Function. */
+#define	STT_SECTION	3	/* Section. */
+#define	STT_FILE	4	/* Source file. */
+#define	STT_COMMON	5	/* Uninitialized common block. */
+#define	STT_TLS		6	/* TLS object. */
+#define	STT_NUM		7
+#define	STT_LOOS	10	/* Reserved range for operating system */
+#define	STT_GNU_IFUNC	10
+#define	STT_HIOS	12	/*   specific semantics. */
+#define	STT_LOPROC	13	/* Start of processor reserved range. */
+#define	STT_SPARC_REGISTER 13	/* SPARC register information. */
+#define	STT_HIPROC	15	/* End of processor reserved range. */
+
+/* Symbol visibility - ELFNN_ST_VISIBILITY - st_other */
+#define	STV_DEFAULT	0x0	/* Default visibility (see binding). */
+#define	STV_INTERNAL	0x1	/* Special meaning in relocatable objects. */
+#define	STV_HIDDEN	0x2	/* Not visible. */
+#define	STV_PROTECTED	0x3	/* Visible but not preemptible. */
+#define	STV_EXPORTED	0x4
+#define	STV_SINGLETON	0x5
+#define	STV_ELIMINATE	0x6
+
+/* Special symbol table indexes. */
+#define	STN_UNDEF	0	/* Undefined symbol index. */
+
+/* Symbol versioning flags. */
+#define	VER_DEF_CURRENT	1
+#define	VER_DEF_IDX(x)	VER_NDX(x)
+
+#define	VER_FLG_BASE	0x01
+#define	VER_FLG_WEAK	0x02
+
+#define	VER_NEED_CURRENT	1
+#define	VER_NEED_WEAK	(1u << 15)
+#define	VER_NEED_HIDDEN	VER_NDX_HIDDEN
+#define	VER_NEED_IDX(x)	VER_NDX(x)
+
+#define	VER_NDX_LOCAL	0
+#define	VER_NDX_GLOBAL	1
+#define	VER_NDX_GIVEN	2
+
+#define	VER_NDX_HIDDEN	(1u << 15)
+#define	VER_NDX(x)	((x) & ~(1u << 15))
+
+#define	CA_SUNW_NULL	0
+#define	CA_SUNW_HW_1	1		/* first hardware capabilities entry */
+#define	CA_SUNW_SF_1	2		/* first software capabilities entry */
+
+/*
+ * Syminfo flag values
+ */
+#define	SYMINFO_FLG_DIRECT	0x0001	/* symbol ref has direct association */
+					/*	to object containing defn. */
+#define	SYMINFO_FLG_PASSTHRU	0x0002	/* ignored - see SYMINFO_FLG_FILTER */
+#define	SYMINFO_FLG_COPY	0x0004	/* symbol is a copy-reloc */
+#define	SYMINFO_FLG_LAZYLOAD	0x0008	/* object containing defn should be */
+					/*	lazily-loaded */
+#define	SYMINFO_FLG_DIRECTBIND	0x0010	/* ref should be bound directly to */
+					/*	object containing defn. */
+#define	SYMINFO_FLG_NOEXTDIRECT	0x0020	/* don't let an external reference */
+					/*	directly bind to this symbol */
+#define	SYMINFO_FLG_FILTER	0x0002	/* symbol ref is associated to a */
+#define	SYMINFO_FLG_AUXILIARY	0x0040	/* 	standard or auxiliary filter */
+
+/*
+ * Syminfo.si_boundto values.
+ */
+#define	SYMINFO_BT_SELF		0xffff	/* symbol bound to self */
+#define	SYMINFO_BT_PARENT	0xfffe	/* symbol bound to parent */
+#define	SYMINFO_BT_NONE		0xfffd	/* no special symbol binding */
+#define	SYMINFO_BT_EXTERN	0xfffc	/* symbol defined as external */
+#define	SYMINFO_BT_LOWRESERVE	0xff00	/* beginning of reserved entries */
+
+/*
+ * Syminfo version values.
+ */
+#define	SYMINFO_NONE		0	/* Syminfo version */
+#define	SYMINFO_CURRENT		1
+#define	SYMINFO_NUM		2
+
+/* Values for ch_type (compressed section headers). */
+#define	ELFCOMPRESS_ZLIB	1	/* ZLIB/DEFLATE */
+#define	ELFCOMPRESS_ZSTD	2	/* Zstandard */
+#define	ELFCOMPRESS_LOOS	0x60000000	/* OS-specific */
+#define	ELFCOMPRESS_HIOS	0x6fffffff
+#define	ELFCOMPRESS_LOPROC	0x70000000	/* Processor-specific */
+#define	ELFCOMPRESS_HIPROC	0x7fffffff
+
+/*
+ * Relocation types.
+ *
+ * All machine architectures are defined here to allow tools on one to
+ * handle others.
+ */
+
+#define	R_386_NONE		0	/* No relocation. */
+#define	R_386_32		1	/* Add symbol value. */
+#define	R_386_PC32		2	/* Add PC-relative symbol value. */
+#define	R_386_GOT32		3	/* Add PC-relative GOT offset. */
+#define	R_386_PLT32		4	/* Add PC-relative PLT offset. */
+#define	R_386_COPY		5	/* Copy data from shared object. */
+#define	R_386_GLOB_DAT		6	/* Set GOT entry to data address. */
+#define	R_386_JMP_SLOT		7	/* Set GOT entry to code address. */
+#define	R_386_RELATIVE		8	/* Add load address of shared object. */
+#define	R_386_GOTOFF		9	/* Add GOT-relative symbol address. */
+#define	R_386_GOTPC		10	/* Add PC-relative GOT table address. */
+#define	R_386_32PLT		11
+#define	R_386_TLS_TPOFF		14	/* Negative offset in static TLS block */
+#define	R_386_TLS_IE		15	/* Absolute address of GOT for -ve static TLS */
+#define	R_386_TLS_GOTIE		16	/* GOT entry for negative static TLS block */
+#define	R_386_TLS_LE		17	/* Negative offset relative to static TLS */
+#define	R_386_TLS_GD		18	/* 32 bit offset to GOT (index,off) pair */
+#define	R_386_TLS_LDM		19	/* 32 bit offset to GOT (index,zero) pair */
+#define	R_386_16		20
+#define	R_386_PC16		21
+#define	R_386_8			22
+#define	R_386_PC8		23
+#define	R_386_TLS_GD_32		24	/* 32 bit offset to GOT (index,off) pair */
+#define	R_386_TLS_GD_PUSH	25	/* pushl instruction for Sun ABI GD sequence */
+#define	R_386_TLS_GD_CALL	26	/* call instruction for Sun ABI GD sequence */
+#define	R_386_TLS_GD_POP	27	/* popl instruction for Sun ABI GD sequence */
+#define	R_386_TLS_LDM_32	28	/* 32 bit offset to GOT (index,zero) pair */
+#define	R_386_TLS_LDM_PUSH	29	/* pushl instruction for Sun ABI LD sequence */
+#define	R_386_TLS_LDM_CALL	30	/* call instruction for Sun ABI LD sequence */
+#define	R_386_TLS_LDM_POP	31	/* popl instruction for Sun ABI LD sequence */
+#define	R_386_TLS_LDO_32	32	/* 32 bit offset from start of TLS block */
+#define	R_386_TLS_IE_32		33	/* 32 bit offset to GOT static TLS offset entry */
+#define	R_386_TLS_LE_32		34	/* 32 bit offset within static TLS block */
+#define	R_386_TLS_DTPMOD32	35	/* GOT entry containing TLS index */
+#define	R_386_TLS_DTPOFF32	36	/* GOT entry containing TLS offset */
+#define	R_386_TLS_TPOFF32	37	/* GOT entry of -ve static TLS offset */
+#define	R_386_SIZE32		38
+#define	R_386_TLS_GOTDESC	39
+#define	R_386_TLS_DESC_CALL	40
+#define	R_386_TLS_DESC		41
+#define	R_386_IRELATIVE		42	/* PLT entry resolved indirectly at runtime */
+#define	R_386_GOT32X		43
+
+#define	R_AARCH64_NONE		0	/* No relocation */
+#define	R_AARCH64_ABS64		257	/* Absolute offset */
+#define	R_AARCH64_ABS32		258	/* Absolute, 32-bit overflow check */
+#define	R_AARCH64_ABS16		259	/* Absolute, 16-bit overflow check */
+#define	R_AARCH64_PREL64	260	/* PC relative */
+#define	R_AARCH64_PREL32	261	/* PC relative, 32-bit overflow check */
+#define	R_AARCH64_PREL16	262	/* PC relative, 16-bit overflow check */
+#define	R_AARCH64_TSTBR14	279	/* TBZ/TBNZ immediate */
+#define	R_AARCH64_CONDBR19	280	/* Conditional branch immediate */
+#define	R_AARCH64_JUMP26	282	/* Branch immediate */
+#define	R_AARCH64_CALL26	283	/* Call immediate */
+#define	R_AARCH64_COPY		1024	/* Copy data from shared object */
+#define	R_AARCH64_GLOB_DAT	1025	/* Set GOT entry to data address */
+#define	R_AARCH64_JUMP_SLOT	1026	/* Set GOT entry to code address */
+#define	R_AARCH64_RELATIVE 	1027	/* Add load address of shared object */
+#define	R_AARCH64_TLS_DTPREL64	1028
+#define	R_AARCH64_TLS_DTPMOD64	1029
+#define	R_AARCH64_TLS_TPREL64 	1030
+#define	R_AARCH64_TLSDESC 	1031	/* Identify the TLS descriptor */
+#define	R_AARCH64_IRELATIVE	1032
+
+#define	R_ARM_NONE		0	/* No relocation. */
+#define	R_ARM_PC24		1
+#define	R_ARM_ABS32		2
+#define	R_ARM_REL32		3
+#define	R_ARM_PC13		4
+#define	R_ARM_ABS16		5
+#define	R_ARM_ABS12		6
+#define	R_ARM_THM_ABS5		7
+#define	R_ARM_ABS8		8
+#define	R_ARM_SBREL32		9
+#define	R_ARM_THM_PC22		10
+#define	R_ARM_THM_PC8		11
+#define	R_ARM_AMP_VCALL9	12
+#define	R_ARM_SWI24		13
+#define	R_ARM_THM_SWI8		14
+#define	R_ARM_XPC25		15
+#define	R_ARM_THM_XPC22		16
+/* TLS relocations */
+#define	R_ARM_TLS_DTPMOD32	17	/* ID of module containing symbol */
+#define	R_ARM_TLS_DTPOFF32	18	/* Offset in TLS block */
+#define	R_ARM_TLS_TPOFF32	19	/* Offset in static TLS block */
+#define	R_ARM_COPY		20	/* Copy data from shared object. */
+#define	R_ARM_GLOB_DAT		21	/* Set GOT entry to data address. */
+#define	R_ARM_JUMP_SLOT		22	/* Set GOT entry to code address. */
+#define	R_ARM_RELATIVE		23	/* Add load address of shared object. */
+#define	R_ARM_GOTOFF		24	/* Add GOT-relative symbol address. */
+#define	R_ARM_GOTPC		25	/* Add PC-relative GOT table address. */
+#define	R_ARM_GOT32		26	/* Add PC-relative GOT offset. */
+#define	R_ARM_PLT32		27	/* Add PC-relative PLT offset. */
+#define	R_ARM_GNU_VTENTRY	100
+#define	R_ARM_GNU_VTINHERIT	101
+#define	R_ARM_RSBREL32		250
+#define	R_ARM_THM_RPC22		251
+#define	R_ARM_RREL32		252
+#define	R_ARM_RABS32		253
+#define	R_ARM_RPC24		254
+#define	R_ARM_RBASE		255
+
+/*	Name			Value	   Field	Calculation */
+#define	R_IA_64_NONE		0	/* None */
+#define	R_IA_64_IMM14		0x21	/* immediate14	S + A */
+#define	R_IA_64_IMM22		0x22	/* immediate22	S + A */
+#define	R_IA_64_IMM64		0x23	/* immediate64	S + A */
+#define	R_IA_64_DIR32MSB	0x24	/* word32 MSB	S + A */
+#define	R_IA_64_DIR32LSB	0x25	/* word32 LSB	S + A */
+#define	R_IA_64_DIR64MSB	0x26	/* word64 MSB	S + A */
+#define	R_IA_64_DIR64LSB	0x27	/* word64 LSB	S + A */
+#define	R_IA_64_GPREL22		0x2a	/* immediate22	@gprel(S + A) */
+#define	R_IA_64_GPREL64I	0x2b	/* immediate64	@gprel(S + A) */
+#define	R_IA_64_GPREL32MSB	0x2c	/* word32 MSB	@gprel(S + A) */
+#define	R_IA_64_GPREL32LSB	0x2d	/* word32 LSB	@gprel(S + A) */
+#define	R_IA_64_GPREL64MSB	0x2e	/* word64 MSB	@gprel(S + A) */
+#define	R_IA_64_GPREL64LSB	0x2f	/* word64 LSB	@gprel(S + A) */
+#define	R_IA_64_LTOFF22		0x32	/* immediate22	@ltoff(S + A) */
+#define	R_IA_64_LTOFF64I	0x33	/* immediate64	@ltoff(S + A) */
+#define	R_IA_64_PLTOFF22	0x3a	/* immediate22	@pltoff(S + A) */
+#define	R_IA_64_PLTOFF64I	0x3b	/* immediate64	@pltoff(S + A) */
+#define	R_IA_64_PLTOFF64MSB	0x3e	/* word64 MSB	@pltoff(S + A) */
+#define	R_IA_64_PLTOFF64LSB	0x3f	/* word64 LSB	@pltoff(S + A) */
+#define	R_IA_64_FPTR64I		0x43	/* immediate64	@fptr(S + A) */
+#define	R_IA_64_FPTR32MSB	0x44	/* word32 MSB	@fptr(S + A) */
+#define	R_IA_64_FPTR32LSB	0x45	/* word32 LSB	@fptr(S + A) */
+#define	R_IA_64_FPTR64MSB	0x46	/* word64 MSB	@fptr(S + A) */
+#define	R_IA_64_FPTR64LSB	0x47	/* word64 LSB	@fptr(S + A) */
+#define	R_IA_64_PCREL60B	0x48	/* immediate60 form1 S + A - P */
+#define	R_IA_64_PCREL21B	0x49	/* immediate21 form1 S + A - P */
+#define	R_IA_64_PCREL21M	0x4a	/* immediate21 form2 S + A - P */
+#define	R_IA_64_PCREL21F	0x4b	/* immediate21 form3 S + A - P */
+#define	R_IA_64_PCREL32MSB	0x4c	/* word32 MSB	S + A - P */
+#define	R_IA_64_PCREL32LSB	0x4d	/* word32 LSB	S + A - P */
+#define	R_IA_64_PCREL64MSB	0x4e	/* word64 MSB	S + A - P */
+#define	R_IA_64_PCREL64LSB	0x4f	/* word64 LSB	S + A - P */
+#define	R_IA_64_LTOFF_FPTR22	0x52	/* immediate22	@ltoff(@fptr(S + A)) */
+#define	R_IA_64_LTOFF_FPTR64I	0x53	/* immediate64	@ltoff(@fptr(S + A)) */
+#define	R_IA_64_LTOFF_FPTR32MSB	0x54	/* word32 MSB	@ltoff(@fptr(S + A)) */
+#define	R_IA_64_LTOFF_FPTR32LSB	0x55	/* word32 LSB	@ltoff(@fptr(S + A)) */
+#define	R_IA_64_LTOFF_FPTR64MSB	0x56	/* word64 MSB	@ltoff(@fptr(S + A)) */
+#define	R_IA_64_LTOFF_FPTR64LSB	0x57	/* word64 LSB	@ltoff(@fptr(S + A)) */
+#define	R_IA_64_SEGREL32MSB	0x5c	/* word32 MSB	@segrel(S + A) */
+#define	R_IA_64_SEGREL32LSB	0x5d	/* word32 LSB	@segrel(S + A) */
+#define	R_IA_64_SEGREL64MSB	0x5e	/* word64 MSB	@segrel(S + A) */
+#define	R_IA_64_SEGREL64LSB	0x5f	/* word64 LSB	@segrel(S + A) */
+#define	R_IA_64_SECREL32MSB	0x64	/* word32 MSB	@secrel(S + A) */
+#define	R_IA_64_SECREL32LSB	0x65	/* word32 LSB	@secrel(S + A) */
+#define	R_IA_64_SECREL64MSB	0x66	/* word64 MSB	@secrel(S + A) */
+#define	R_IA_64_SECREL64LSB	0x67	/* word64 LSB	@secrel(S + A) */
+#define	R_IA_64_REL32MSB	0x6c	/* word32 MSB	BD + A */
+#define	R_IA_64_REL32LSB	0x6d	/* word32 LSB	BD + A */
+#define	R_IA_64_REL64MSB	0x6e	/* word64 MSB	BD + A */
+#define	R_IA_64_REL64LSB	0x6f	/* word64 LSB	BD + A */
+#define	R_IA_64_LTV32MSB	0x74	/* word32 MSB	S + A */
+#define	R_IA_64_LTV32LSB	0x75	/* word32 LSB	S + A */
+#define	R_IA_64_LTV64MSB	0x76	/* word64 MSB	S + A */
+#define	R_IA_64_LTV64LSB	0x77	/* word64 LSB	S + A */
+#define	R_IA_64_PCREL21BI	0x79	/* immediate21 form1 S + A - P */
+#define	R_IA_64_PCREL22		0x7a	/* immediate22	S + A - P */
+#define	R_IA_64_PCREL64I	0x7b	/* immediate64	S + A - P */
+#define	R_IA_64_IPLTMSB		0x80	/* function descriptor MSB special */
+#define	R_IA_64_IPLTLSB		0x81	/* function descriptor LSB speciaal */
+#define	R_IA_64_SUB		0x85	/* immediate64	A - S */
+#define	R_IA_64_LTOFF22X	0x86	/* immediate22	special */
+#define	R_IA_64_LDXMOV		0x87	/* immediate22	special */
+#define	R_IA_64_TPREL14		0x91	/* imm14	@tprel(S + A) */
+#define	R_IA_64_TPREL22		0x92	/* imm22	@tprel(S + A) */
+#define	R_IA_64_TPREL64I	0x93	/* imm64	@tprel(S + A) */
+#define	R_IA_64_TPREL64MSB	0x96	/* word64 MSB	@tprel(S + A) */
+#define	R_IA_64_TPREL64LSB	0x97	/* word64 LSB	@tprel(S + A) */
+#define	R_IA_64_LTOFF_TPREL22	0x9a	/* imm22	@ltoff(@tprel(S+A)) */
+#define	R_IA_64_DTPMOD64MSB	0xa6	/* word64 MSB	@dtpmod(S + A) */
+#define	R_IA_64_DTPMOD64LSB	0xa7	/* word64 LSB	@dtpmod(S + A) */
+#define	R_IA_64_LTOFF_DTPMOD22	0xaa	/* imm22	@ltoff(@dtpmod(S+A)) */
+#define	R_IA_64_DTPREL14	0xb1	/* imm14	@dtprel(S + A) */
+#define	R_IA_64_DTPREL22	0xb2	/* imm22	@dtprel(S + A) */
+#define	R_IA_64_DTPREL64I	0xb3	/* imm64	@dtprel(S + A) */
+#define	R_IA_64_DTPREL32MSB	0xb4	/* word32 MSB	@dtprel(S + A) */
+#define	R_IA_64_DTPREL32LSB	0xb5	/* word32 LSB	@dtprel(S + A) */
+#define	R_IA_64_DTPREL64MSB	0xb6	/* word64 MSB	@dtprel(S + A) */
+#define	R_IA_64_DTPREL64LSB	0xb7	/* word64 LSB	@dtprel(S + A) */
+#define	R_IA_64_LTOFF_DTPREL22	0xba	/* imm22	@ltoff(@dtprel(S+A)) */
+
+#define	R_MIPS_NONE	0	/* No reloc */
+#define	R_MIPS_16	1	/* Direct 16 bit */
+#define	R_MIPS_32	2	/* Direct 32 bit */
+#define	R_MIPS_REL32	3	/* PC relative 32 bit */
+#define	R_MIPS_26	4	/* Direct 26 bit shifted */
+#define	R_MIPS_HI16	5	/* High 16 bit */
+#define	R_MIPS_LO16	6	/* Low 16 bit */
+#define	R_MIPS_GPREL16	7	/* GP relative 16 bit */
+#define	R_MIPS_LITERAL	8	/* 16 bit literal entry */
+#define	R_MIPS_GOT16	9	/* 16 bit GOT entry */
+#define	R_MIPS_PC16	10	/* PC relative 16 bit */
+#define	R_MIPS_CALL16	11	/* 16 bit GOT entry for function */
+#define	R_MIPS_GPREL32	12	/* GP relative 32 bit */
+#define	R_MIPS_64	18	/* Direct 64 bit */
+#define	R_MIPS_GOT_DISP	19
+#define	R_MIPS_GOT_PAGE	20
+#define	R_MIPS_GOT_OFST	21
+#define	R_MIPS_GOT_HI16	22	/* GOT HI 16 bit */
+#define	R_MIPS_GOT_LO16	23	/* GOT LO 16 bit */
+#define	R_MIPS_SUB	24
+#define	R_MIPS_CALLHI16 30	/* upper 16 bit GOT entry for function */
+#define	R_MIPS_CALLLO16 31	/* lower 16 bit GOT entry for function */
+#define	R_MIPS_JALR	37
+#define	R_MIPS_TLS_GD	42
+#define	R_MIPS_COPY	126
+#define	R_MIPS_JUMP_SLOT	127
+
+#define	R_PPC_NONE		0	/* No relocation. */
+#define	R_PPC_ADDR32		1
+#define	R_PPC_ADDR24		2
+#define	R_PPC_ADDR16		3
+#define	R_PPC_ADDR16_LO		4
+#define	R_PPC_ADDR16_HI		5
+#define	R_PPC_ADDR16_HA		6
+#define	R_PPC_ADDR14		7
+#define	R_PPC_ADDR14_BRTAKEN	8
+#define	R_PPC_ADDR14_BRNTAKEN	9
+#define	R_PPC_REL24		10
+#define	R_PPC_REL14		11
+#define	R_PPC_REL14_BRTAKEN	12
+#define	R_PPC_REL14_BRNTAKEN	13
+#define	R_PPC_GOT16		14
+#define	R_PPC_GOT16_LO		15
+#define	R_PPC_GOT16_HI		16
+#define	R_PPC_GOT16_HA		17
+#define	R_PPC_PLTREL24		18
+#define	R_PPC_COPY		19
+#define	R_PPC_GLOB_DAT		20
+#define	R_PPC_JMP_SLOT		21
+#define	R_PPC_RELATIVE		22
+#define	R_PPC_LOCAL24PC		23
+#define	R_PPC_UADDR32		24
+#define	R_PPC_UADDR16		25
+#define	R_PPC_REL32		26
+#define	R_PPC_PLT32		27
+#define	R_PPC_PLTREL32		28
+#define	R_PPC_PLT16_LO		29
+#define	R_PPC_PLT16_HI		30
+#define	R_PPC_PLT16_HA		31
+#define	R_PPC_SDAREL16		32
+#define	R_PPC_SECTOFF		33
+#define	R_PPC_SECTOFF_LO	34
+#define	R_PPC_SECTOFF_HI	35
+#define	R_PPC_SECTOFF_HA	36
+#define	R_PPC_IRELATIVE		248
+
+/*
+ * 64-bit relocations
+ */
+#define	R_PPC64_ADDR64		38
+#define	R_PPC64_ADDR16_HIGHER	39
+#define	R_PPC64_ADDR16_HIGHERA	40
+#define	R_PPC64_ADDR16_HIGHEST	41
+#define	R_PPC64_ADDR16_HIGHESTA	42
+#define	R_PPC64_UADDR64		43
+#define	R_PPC64_REL64		44
+#define	R_PPC64_PLT64		45
+#define	R_PPC64_PLTREL64	46
+#define	R_PPC64_TOC16		47
+#define	R_PPC64_TOC16_LO	48
+#define	R_PPC64_TOC16_HI	49
+#define	R_PPC64_TOC16_HA	50
+#define	R_PPC64_TOC		51
+#define	R_PPC64_DTPMOD64	68
+#define	R_PPC64_TPREL64		73
+#define	R_PPC64_DTPREL64	78
+
+/*
+ * TLS relocations
+ */
+#define	R_PPC_TLS		67
+#define	R_PPC_DTPMOD32		68
+#define	R_PPC_TPREL16		69
+#define	R_PPC_TPREL16_LO	70
+#define	R_PPC_TPREL16_HI	71
+#define	R_PPC_TPREL16_HA	72
+#define	R_PPC_TPREL32		73
+#define	R_PPC_DTPREL16		74
+#define	R_PPC_DTPREL16_LO	75
+#define	R_PPC_DTPREL16_HI	76
+#define	R_PPC_DTPREL16_HA	77
+#define	R_PPC_DTPREL32		78
+#define	R_PPC_GOT_TLSGD16	79
+#define	R_PPC_GOT_TLSGD16_LO	80
+#define	R_PPC_GOT_TLSGD16_HI	81
+#define	R_PPC_GOT_TLSGD16_HA	82
+#define	R_PPC_GOT_TLSLD16	83
+#define	R_PPC_GOT_TLSLD16_LO	84
+#define	R_PPC_GOT_TLSLD16_HI	85
+#define	R_PPC_GOT_TLSLD16_HA	86
+#define	R_PPC_GOT_TPREL16	87
+#define	R_PPC_GOT_TPREL16_LO	88
+#define	R_PPC_GOT_TPREL16_HI	89
+#define	R_PPC_GOT_TPREL16_HA	90
+
+/*
+ * The remaining relocs are from the Embedded ELF ABI, and are not in the
+ *  SVR4 ELF ABI.
+ */
+
+#define	R_PPC_EMB_NADDR32	101
+#define	R_PPC_EMB_NADDR16	102
+#define	R_PPC_EMB_NADDR16_LO	103
+#define	R_PPC_EMB_NADDR16_HI	104
+#define	R_PPC_EMB_NADDR16_HA	105
+#define	R_PPC_EMB_SDAI16	106
+#define	R_PPC_EMB_SDA2I16	107
+#define	R_PPC_EMB_SDA2REL	108
+#define	R_PPC_EMB_SDA21		109
+#define	R_PPC_EMB_MRKREF	110
+#define	R_PPC_EMB_RELSEC16	111
+#define	R_PPC_EMB_RELST_LO	112
+#define	R_PPC_EMB_RELST_HI	113
+#define	R_PPC_EMB_RELST_HA	114
+#define	R_PPC_EMB_BIT_FLD	115
+#define	R_PPC_EMB_RELSDA	116
+
+/*
+ * RISC-V relocation types.
+ */
+
+/* Relocation types used by the dynamic linker. */
+#define	R_RISCV_NONE		0
+#define	R_RISCV_32		1
+#define	R_RISCV_64		2
+#define	R_RISCV_RELATIVE	3
+#define	R_RISCV_COPY		4
+#define	R_RISCV_JUMP_SLOT	5
+#define	R_RISCV_TLS_DTPMOD32	6
+#define	R_RISCV_TLS_DTPMOD64	7
+#define	R_RISCV_TLS_DTPREL32	8
+#define	R_RISCV_TLS_DTPREL64	9
+#define	R_RISCV_TLS_TPREL32	10
+#define	R_RISCV_TLS_TPREL64	11
+
+/* Relocation types not used by the dynamic linker. */
+#define	R_RISCV_BRANCH		16
+#define	R_RISCV_JAL		17
+#define	R_RISCV_CALL		18
+#define	R_RISCV_CALL_PLT	19
+#define	R_RISCV_GOT_HI20	20
+#define	R_RISCV_TLS_GOT_HI20	21
+#define	R_RISCV_TLS_GD_HI20	22
+#define	R_RISCV_PCREL_HI20	23
+#define	R_RISCV_PCREL_LO12_I	24
+#define	R_RISCV_PCREL_LO12_S	25
+#define	R_RISCV_HI20		26
+#define	R_RISCV_LO12_I		27
+#define	R_RISCV_LO12_S		28
+#define	R_RISCV_TPREL_HI20	29
+#define	R_RISCV_TPREL_LO12_I	30
+#define	R_RISCV_TPREL_LO12_S	31
+#define	R_RISCV_TPREL_ADD	32
+#define	R_RISCV_ADD8		33
+#define	R_RISCV_ADD16		34
+#define	R_RISCV_ADD32		35
+#define	R_RISCV_ADD64		36
+#define	R_RISCV_SUB8		37
+#define	R_RISCV_SUB16		38
+#define	R_RISCV_SUB32		39
+#define	R_RISCV_SUB64		40
+#define	R_RISCV_GNU_VTINHERIT	41
+#define	R_RISCV_GNU_VTENTRY	42
+#define	R_RISCV_ALIGN		43
+#define	R_RISCV_RVC_BRANCH	44
+#define	R_RISCV_RVC_JUMP	45
+#define	R_RISCV_RVC_LUI		46
+#define	R_RISCV_RELAX		51
+#define	R_RISCV_SUB6		52
+#define	R_RISCV_SET6		53
+#define	R_RISCV_SET8		54
+#define	R_RISCV_SET16		55
+#define	R_RISCV_SET32		56
+#define	R_RISCV_32_PCREL	57
+#define	R_RISCV_IRELATIVE	58
+
+#define	R_SPARC_NONE		0
+#define	R_SPARC_8		1
+#define	R_SPARC_16		2
+#define	R_SPARC_32		3
+#define	R_SPARC_DISP8		4
+#define	R_SPARC_DISP16		5
+#define	R_SPARC_DISP32		6
+#define	R_SPARC_WDISP30		7
+#define	R_SPARC_WDISP22		8
+#define	R_SPARC_HI22		9
+#define	R_SPARC_22		10
+#define	R_SPARC_13		11
+#define	R_SPARC_LO10		12
+#define	R_SPARC_GOT10		13
+#define	R_SPARC_GOT13		14
+#define	R_SPARC_GOT22		15
+#define	R_SPARC_PC10		16
+#define	R_SPARC_PC22		17
+#define	R_SPARC_WPLT30		18
+#define	R_SPARC_COPY		19
+#define	R_SPARC_GLOB_DAT	20
+#define	R_SPARC_JMP_SLOT	21
+#define	R_SPARC_RELATIVE	22
+#define	R_SPARC_UA32		23
+#define	R_SPARC_PLT32		24
+#define	R_SPARC_HIPLT22		25
+#define	R_SPARC_LOPLT10		26
+#define	R_SPARC_PCPLT32		27
+#define	R_SPARC_PCPLT22		28
+#define	R_SPARC_PCPLT10		29
+#define	R_SPARC_10		30
+#define	R_SPARC_11		31
+#define	R_SPARC_64		32
+#define	R_SPARC_OLO10		33
+#define	R_SPARC_HH22		34
+#define	R_SPARC_HM10		35
+#define	R_SPARC_LM22		36
+#define	R_SPARC_PC_HH22		37
+#define	R_SPARC_PC_HM10		38
+#define	R_SPARC_PC_LM22		39
+#define	R_SPARC_WDISP16		40
+#define	R_SPARC_WDISP19		41
+#define	R_SPARC_GLOB_JMP	42
+#define	R_SPARC_7		43
+#define	R_SPARC_5		44
+#define	R_SPARC_6		45
+#define	R_SPARC_DISP64		46
+#define	R_SPARC_PLT64		47
+#define	R_SPARC_HIX22		48
+#define	R_SPARC_LOX10		49
+#define	R_SPARC_H44		50
+#define	R_SPARC_M44		51
+#define	R_SPARC_L44		52
+#define	R_SPARC_REGISTER	53
+#define	R_SPARC_UA64		54
+#define	R_SPARC_UA16		55
+#define	R_SPARC_TLS_GD_HI22	56
+#define	R_SPARC_TLS_GD_LO10	57
+#define	R_SPARC_TLS_GD_ADD	58
+#define	R_SPARC_TLS_GD_CALL	59
+#define	R_SPARC_TLS_LDM_HI22	60
+#define	R_SPARC_TLS_LDM_LO10	61
+#define	R_SPARC_TLS_LDM_ADD	62
+#define	R_SPARC_TLS_LDM_CALL	63
+#define	R_SPARC_TLS_LDO_HIX22	64
+#define	R_SPARC_TLS_LDO_LOX10	65
+#define	R_SPARC_TLS_LDO_ADD	66
+#define	R_SPARC_TLS_IE_HI22	67
+#define	R_SPARC_TLS_IE_LO10	68
+#define	R_SPARC_TLS_IE_LD	69
+#define	R_SPARC_TLS_IE_LDX	70
+#define	R_SPARC_TLS_IE_ADD	71
+#define	R_SPARC_TLS_LE_HIX22	72
+#define	R_SPARC_TLS_LE_LOX10	73
+#define	R_SPARC_TLS_DTPMOD32	74
+#define	R_SPARC_TLS_DTPMOD64	75
+#define	R_SPARC_TLS_DTPOFF32	76
+#define	R_SPARC_TLS_DTPOFF64	77
+#define	R_SPARC_TLS_TPOFF32	78
+#define	R_SPARC_TLS_TPOFF64	79
+
+#define	R_X86_64_NONE		0	/* No relocation. */
+#define	R_X86_64_64		1	/* Add 64 bit symbol value. */
+#define	R_X86_64_PC32		2	/* PC-relative 32 bit signed sym value. */
+#define	R_X86_64_GOT32		3	/* PC-relative 32 bit GOT offset. */
+#define	R_X86_64_PLT32		4	/* PC-relative 32 bit PLT offset. */
+#define	R_X86_64_COPY		5	/* Copy data from shared object. */
+#define	R_X86_64_GLOB_DAT	6	/* Set GOT entry to data address. */
+#define	R_X86_64_JMP_SLOT	7	/* Set GOT entry to code address. */
+#define	R_X86_64_RELATIVE	8	/* Add load address of shared object. */
+#define	R_X86_64_GOTPCREL	9	/* Add 32 bit signed pcrel offset to GOT. */
+#define	R_X86_64_32		10	/* Add 32 bit zero extended symbol value */
+#define	R_X86_64_32S		11	/* Add 32 bit sign extended symbol value */
+#define	R_X86_64_16		12	/* Add 16 bit zero extended symbol value */
+#define	R_X86_64_PC16		13	/* Add 16 bit signed extended pc relative symbol value */
+#define	R_X86_64_8		14	/* Add 8 bit zero extended symbol value */
+#define	R_X86_64_PC8		15	/* Add 8 bit signed extended pc relative symbol value */
+#define	R_X86_64_DTPMOD64	16	/* ID of module containing symbol */
+#define	R_X86_64_DTPOFF64	17	/* Offset in TLS block */
+#define	R_X86_64_TPOFF64	18	/* Offset in static TLS block */
+#define	R_X86_64_TLSGD		19	/* PC relative offset to GD GOT entry */
+#define	R_X86_64_TLSLD		20	/* PC relative offset to LD GOT entry */
+#define	R_X86_64_DTPOFF32	21	/* Offset in TLS block */
+#define	R_X86_64_GOTTPOFF	22	/* PC relative offset to IE GOT entry */
+#define	R_X86_64_TPOFF32	23	/* Offset in static TLS block */
+#define	R_X86_64_PC64		24	/* PC-relative 64 bit signed sym value. */
+#define	R_X86_64_GOTOFF64	25
+#define	R_X86_64_GOTPC32	26
+#define	R_X86_64_GOT64		27
+#define	R_X86_64_GOTPCREL64	28
+#define	R_X86_64_GOTPC64	29
+#define	R_X86_64_GOTPLT64	30
+#define	R_X86_64_PLTOFF64	31
+#define	R_X86_64_SIZE32		32
+#define	R_X86_64_SIZE64		33
+#define	R_X86_64_GOTPC32_TLSDESC 34
+#define	R_X86_64_TLSDESC_CALL	35
+#define	R_X86_64_TLSDESC	36
+#define	R_X86_64_IRELATIVE	37
+#define	R_X86_64_RELATIVE64	38
+/* 39 and 40 were BND-related, already decomissioned */
+#define	R_X86_64_GOTPCRELX	41
+#define	R_X86_64_REX_GOTPCRELX	42
+
+#define	ELF_BSDF_SIGFASTBLK	0x0001	/* Kernel supports fast sigblock */
+#define	ELF_BSDF_VMNOOVERCOMMIT	0x0002
+
+#endif /* !_SYS_ELF_COMMON_H_ */
diff --git a/mainline/runtime/sdk/android/arm/include/bionic/libc/include/bits/elf_x86.h b/mainline/runtime/sdk/android/arm/include/bionic/libc/include/bits/elf_x86.h
deleted file mode 100644
index dfbaba0..0000000
--- a/mainline/runtime/sdk/android/arm/include/bionic/libc/include/bits/elf_x86.h
+++ /dev/null
@@ -1,60 +0,0 @@
-/*	$NetBSD: elf_machdep.h,v 1.12 2016/02/02 20:16:59 christos Exp $	*/
-
-#ifndef _X86_ELF_MACHDEP_H_
-#define _X86_ELF_MACHDEP_H_
-
-/* i386 relocations */
-#define	R_386_NONE	0
-#define	R_386_32	1
-#define	R_386_PC32	2
-#define	R_386_GOT32	3
-#define	R_386_PLT32	4
-#define	R_386_COPY	5
-#define	R_386_GLOB_DAT	6
-#define	R_386_JMP_SLOT	7
-#define	R_386_RELATIVE	8
-#define	R_386_GOTOFF	9
-#define	R_386_GOTPC	10
-#define	R_386_32PLT	11
-
-/* TLS relocations */
-#define	R_386_TLS_TPOFF	14
-#define	R_386_TLS_IE	15
-#define	R_386_TLS_GOTIE	16
-#define	R_386_TLS_LE	17
-#define	R_386_TLS_GD	18
-#define	R_386_TLS_LDM	19
-
-/* The following relocations are GNU extensions. */
-#define	R_386_16	20
-#define	R_386_PC16	21
-#define	R_386_8		22
-#define	R_386_PC8	23
-
-/* More TLS relocations */
-#define	R_386_TLS_GD_32		24
-#define	R_386_TLS_GD_PUSH	25
-#define	R_386_TLS_GD_CALL	26
-#define	R_386_TLS_GD_POP	27
-#define	R_386_TLS_LDM_32	28
-#define	R_386_TLS_LDM_PUSH	29
-#define	R_386_TLS_LDM_CALL	30
-#define	R_386_TLS_LDM_POP	31
-#define	R_386_TLS_LDO_32	32
-#define	R_386_TLS_IE_32		33
-#define	R_386_TLS_LE_32		34
-#define	R_386_TLS_DTPMOD32	35
-#define	R_386_TLS_DTPOFF32	36
-#define	R_386_TLS_TPOFF32	37
-
-#define R_386_SIZE32		38
-
-/* More TLS relocations */
-#define	R_386_TLS_GOTDESC	39
-#define	R_386_TLS_DESC_CALL	40
-#define	R_386_TLS_DESC		41
-
-#define R_386_IRELATIVE		42
-#define R_386_GOT32X		43
-
-#endif
diff --git a/mainline/runtime/sdk/android/arm/include/bionic/libc/include/bits/elf_x86_64.h b/mainline/runtime/sdk/android/arm/include/bionic/libc/include/bits/elf_x86_64.h
deleted file mode 100644
index 30062af..0000000
--- a/mainline/runtime/sdk/android/arm/include/bionic/libc/include/bits/elf_x86_64.h
+++ /dev/null
@@ -1,55 +0,0 @@
-/*	$NetBSD: elf_machdep.h,v 1.5 2016/02/02 20:13:59 christos Exp $	*/
-
-#ifndef _X86_64_ELF_MACHDEP_H_
-#define _X86_64_ELF_MACHDEP_H_
-
-/* x86-64 relocations */
-
-#define R_X86_64_NONE		0
-#define R_X86_64_64		1
-#define R_X86_64_PC32		2
-#define R_X86_64_GOT32		3
-#define R_X86_64_PLT32		4
-#define R_X86_64_COPY		5
-#define R_X86_64_GLOB_DAT	6
-#define R_X86_64_JUMP_SLOT	7
-#define R_X86_64_RELATIVE	8
-#define R_X86_64_GOTPCREL	9
-#define R_X86_64_32		10
-#define R_X86_64_32S		11
-#define R_X86_64_16		12
-#define R_X86_64_PC16		13
-#define R_X86_64_8		14
-#define R_X86_64_PC8		15
-
-/* TLS relocations */
-#define R_X86_64_DTPMOD64	16
-#define R_X86_64_DTPOFF64	17
-#define R_X86_64_TPOFF64	18
-#define R_X86_64_TLSGD		19
-#define R_X86_64_TLSLD		20
-#define R_X86_64_DTPOFF32	21
-#define R_X86_64_GOTTPOFF	22
-#define R_X86_64_TPOFF32	23
-
-#define R_X86_64_PC64		24
-#define R_X86_64_GOTOFF64	25
-#define R_X86_64_GOTPC32	26
-#define R_X86_64_GOT64		27
-#define R_X86_64_GOTPCREL64	28
-#define R_X86_64_GOTPC64	29
-#define R_X86_64_GOTPLT64	30
-#define R_X86_64_PLTOFF64	31
-#define R_X86_64_SIZE32		32
-#define R_X86_64_SIZE64		33
-#define R_X86_64_GOTPC32_TLSDESC 34
-#define R_X86_64_TLSDESC_CALL	35
-#define R_X86_64_TLSDESC	36
-#define R_X86_64_IRELATIVE	37
-#define R_X86_64_RELATIVE64	38
-#define R_X86_64_PC32_BND	39
-#define R_X86_64_PLT32_BND	40
-#define R_X86_64_GOTPCRELX	41
-#define R_X86_64_REX_GOTPCRELX	42
-
-#endif
diff --git a/mainline/runtime/sdk/android/arm/include/bionic/libc/include/bits/fenv_riscv64.h b/mainline/runtime/sdk/android/arm/include/bionic/libc/include/bits/fenv_riscv64.h
new file mode 100644
index 0000000..e1e43b6
--- /dev/null
+++ b/mainline/runtime/sdk/android/arm/include/bionic/libc/include/bits/fenv_riscv64.h
@@ -0,0 +1,52 @@
+/*
+ * Copyright (C) 2022 The Android Open Source Project
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *  * Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ *  * Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in
+ *    the documentation and/or other materials provided with the
+ *    distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+ * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+ * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
+ * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
+ * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+ * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
+ * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ */
+
+#pragma once
+
+#include <sys/types.h>
+
+__BEGIN_DECLS
+
+typedef __uint32_t fenv_t;
+typedef __uint32_t fexcept_t;
+
+/* Exception flags. No FE_DENORMAL for riscv64. */
+#define FE_INEXACT    0x01
+#define FE_UNDERFLOW  0x02
+#define FE_OVERFLOW   0x04
+#define FE_DIVBYZERO  0x08
+#define FE_INVALID    0x10
+#define FE_ALL_EXCEPT (FE_DIVBYZERO | FE_INEXACT | FE_INVALID | FE_OVERFLOW | FE_UNDERFLOW)
+
+/* Rounding modes. */
+#define FE_TONEAREST  0x0
+#define FE_TOWARDZERO 0x1
+#define FE_DOWNWARD   0x2
+#define FE_UPWARD     0x3
+
+__END_DECLS
diff --git a/mainline/runtime/sdk/android/arm/include/bionic/libc/include/bits/fortify/fcntl.h b/mainline/runtime/sdk/android/arm/include/bionic/libc/include/bits/fortify/fcntl.h
index 7063541..7fe60f4 100644
--- a/mainline/runtime/sdk/android/arm/include/bionic/libc/include/bits/fortify/fcntl.h
+++ b/mainline/runtime/sdk/android/arm/include/bionic/libc/include/bits/fortify/fcntl.h
@@ -41,7 +41,7 @@
 #if defined(__BIONIC_FORTIFY)
 #define __open_too_many_args_error "too many arguments"
 #define __open_too_few_args_error "called with O_CREAT or O_TMPFILE, but missing mode"
-#define __open_useless_modes_warning "has superfluous mode bits; missing O_CREAT?"
+#define __open_useless_modes_warning "has superfluous mode bits; missing O_CREAT or O_TMPFILE?"
 /* O_TMPFILE shares bits with O_DIRECTORY. */
 #define __open_modes_useful(flags) (((flags) & O_CREAT) || ((flags) & O_TMPFILE) == O_TMPFILE)
 
diff --git a/mainline/runtime/sdk/android/arm/include/bionic/libc/include/elf.h b/mainline/runtime/sdk/android/arm/include/bionic/libc/include/elf.h
index 4739bbd..1dfc008 100644
--- a/mainline/runtime/sdk/android/arm/include/bionic/libc/include/elf.h
+++ b/mainline/runtime/sdk/android/arm/include/bionic/libc/include/elf.h
@@ -30,13 +30,12 @@
 
 #include <sys/cdefs.h>
 
-#include <bits/auxvec.h>
-#include <bits/elf_arm.h>
-#include <bits/elf_arm64.h>
-#include <bits/elf_x86.h>
-#include <bits/elf_x86_64.h>
 #include <linux/elf.h>
 #include <linux/elf-em.h>
+#undef EI_PAD
+
+#include <bits/auxvec.h>
+#include <bits/elf_common.h>
 
 /* http://www.sco.com/developers/gabi/latest/ch4.intro.html */
 typedef __u64 Elf32_Xword;
@@ -83,14 +82,6 @@
   Elf64_Word l_version;
   Elf64_Word l_flags;
 } Elf64_Lib;
-/* ElfW(Lib)::l_flags values. */
-#define LL_NONE 0x0
-#define LL_EXACT_MATCH 0x1
-#define LL_IGNORE_INT_VER 0x2
-#define LL_REQUIRE_MINOR 0x4
-#define LL_EXPORTS 0x8
-#define LL_DELAY_LOAD 0x10
-#define LL_DELTA 0x20
 
 typedef struct {
   Elf32_Xword m_value;
@@ -118,14 +109,6 @@
   Elf64_Half si_boundto;
   Elf64_Half si_flags;
 } Elf64_Syminfo;
-/* ElfW(Syminfo)::si_boundto values. */
-#define SYMINFO_BT_SELF 0xffff
-#define SYMINFO_BT_PARENT 0xfffe
-/* ElfW(Syminfo)::si_flags values. */
-#define SYMINFO_FLG_DIRECT 0x1
-#define SYMINFO_FLG_PASSTHRU 0x2
-#define SYMINFO_FLG_COPY 0x4
-#define SYMINFO_FLG_LAZYLOAD 0x8
 
 typedef Elf32_Half Elf32_Versym;
 typedef Elf64_Half Elf64_Versym;
@@ -197,24 +180,12 @@
 typedef Elf64_Xword Elf64_Relr;
 
 /* http://www.sco.com/developers/gabi/latest/ch5.dynamic.html */
-#define DF_ORIGIN     0x00000001
-#define DF_SYMBOLIC   0x00000002
-#define DF_TEXTREL    0x00000004
-#define DF_BIND_NOW   0x00000008
-#define DF_STATIC_TLS 0x00000010
 
 #define DF_1_NOW        0x00000001 /* Perform complete relocation processing. */
-#define DF_1_GLOBAL     0x00000002 /* implies RTLD_GLOBAL */
 #define DF_1_GROUP      0x00000004
-#define DF_1_NODELETE   0x00000008 /* implies RTLD_NODELETE */
-#define DF_1_LOADFLTR   0x00000010
 #define DF_1_INITFIRST  0x00000020
-#define DF_1_NOOPEN     0x00000040 /* Object can not be used with dlopen(3) */
-#define DF_1_ORIGIN     0x00000080
 #define DF_1_DIRECT     0x00000100
 #define DF_1_TRANS      0x00000200
-#define DF_1_INTERPOSE  0x00000400
-#define DF_1_NODEFLIB   0x00000800
 #define DF_1_NODUMP     0x00001000 /* Object cannot be dumped with dldump(3) */
 #define DF_1_CONFALT    0x00002000
 #define DF_1_ENDFILTEE  0x00004000
@@ -230,58 +201,10 @@
 #define DF_1_GLOBAUDIT  0x01000000
 #define DF_1_SINGLETON  0x02000000
 #define DF_1_STUB       0x04000000
-#define DF_1_PIE        0x08000000
-
-/* http://www.sco.com/developers/gabi/latest/ch5.dynamic.html */
-#define DT_BIND_NOW 24
-#define DT_INIT_ARRAY 25
-#define DT_FINI_ARRAY 26
-#define DT_INIT_ARRAYSZ 27
-#define DT_FINI_ARRAYSZ 28
-#define DT_RUNPATH 29
-#define DT_FLAGS 30
-/* glibc and BSD disagree for DT_ENCODING; glibc looks wrong. */
-#define DT_PREINIT_ARRAY 32
-#define DT_PREINIT_ARRAYSZ 33
-#define DT_RELRSZ 35
-#define DT_RELR 36
-#define DT_RELRENT 37
-
-#define DT_GNU_HASH 0x6ffffef5
-#define DT_TLSDESC_PLT 0x6ffffef6
-#define DT_TLSDESC_GOT 0x6ffffef7
-
-/* http://www.sco.com/developers/gabi/latest/ch4.eheader.html */
-#define EI_ABIVERSION 8
-#undef EI_PAD
-#define EI_PAD 9
-
-/* http://www.sco.com/developers/gabi/latest/ch4.sheader.html */
-#define ELFCOMPRESS_ZLIB 1
-#define ELFCOMPRESS_LOOS 0x60000000
-#define ELFCOMPRESS_HIOS 0x6fffffff
-#define ELFCOMPRESS_LOPROC 0x70000000
-#define ELFCOMPRESS_HIPROC 0x7fffffff
 
 /* http://www.sco.com/developers/gabi/latest/ch4.eheader.html */
 #define ELFOSABI_SYSV 0 /* Synonym for ELFOSABI_NONE used by valgrind. */
-#define ELFOSABI_HPUX 1
-#define ELFOSABI_NETBSD 2
 #define ELFOSABI_GNU 3 /* Synonym for ELFOSABI_LINUX. */
-#define ELFOSABI_SOLARIS 6
-#define ELFOSABI_AIX 7
-#define ELFOSABI_IRIX 8
-#define ELFOSABI_FREEBSD 9
-#define ELFOSABI_TRU64 10
-#define ELFOSABI_MODESTO 11
-#define ELFOSABI_OPENBSD 12
-#define ELFOSABI_OPENVMS 13
-#define ELFOSABI_NSK 14
-#define ELFOSABI_AROS 15
-#define ELFOSABI_FENIXOS 16
-#define ELFOSABI_CLOUDABI 17
-#define ELFOSABI_OPENVOS 18
-#define ELFOSABI_ARM_AEABI 64
 
 /* http://www.sco.com/developers/gabi/latest/ch4.reloc.html */
 #define ELF32_R_INFO(sym, type) ((((Elf32_Word)sym) << 8) | ((type) & 0xff))
@@ -294,236 +217,17 @@
 #define ELF32_ST_INFO(b,t) ELF_ST_INFO(b,t)
 #define ELF64_ST_INFO(b,t) ELF_ST_INFO(b,t)
 
-/* http://www.sco.com/developers/gabi/latest/ch4.eheader.html */
-#define EM_S370 9
-#define EM_VPP500 17
-#define EM_960 19
-#define EM_V800 36
-#define EM_FR20 37
-#define EM_RH32 38
-#define EM_RCE 39
-#define EM_FAKE_ALPHA 41
-#define EM_TRICORE 44
-#define EM_ARC 45
-#define EM_H8_300H 47
-#define EM_H8S 48
-#define EM_H8_500 49
-#define EM_MIPS_X 51
-#define EM_COLDFIRE 52
-#define EM_68HC12 53
-#define EM_MMA 54
-#define EM_PCP 55
-#define EM_NCPU 56
-#define EM_NDR1 57
-#define EM_STARCORE 58
-#define EM_ME16 59
-#define EM_ST100 60
-#define EM_TINYJ 61
-#define EM_PDSP 63
-#define EM_PDP10 64
-#define EM_PDP11 65
-#define EM_FX66 66
-#define EM_ST9PLUS 67
-#define EM_ST7 68
-#define EM_68HC16 69
-#define EM_68HC11 70
-#define EM_68HC08 71
-#define EM_68HC05 72
-#define EM_SVX 73
-#define EM_ST19 74
-#define EM_VAX 75
-#define EM_JAVELIN 77
-#define EM_FIREPATH 78
-#define EM_ZSP 79
-#define EM_MMIX 80
-#define EM_HUANY 81
-#define EM_PRISM 82
-#define EM_AVR 83
-#define EM_FR30 84
-#define EM_D10V 85
-#define EM_D30V 86
-#define EM_V850 87
-#define EM_MN10200 90
-#define EM_PJ 91
-#define EM_ARC_COMPACT 93
-#define EM_XTENSA 94
-#define EM_VIDEOCORE 95
-#define EM_TMM_GPP 96
-#define EM_NS32K 97
-#define EM_TPC 98
-#define EM_SNP1K 99
-#define EM_ST200 100
-#define EM_IP2K 101
-#define EM_MAX 102
-#define EM_CR 103
-#define EM_F2MC16 104
-#define EM_MSP430 105
-#define EM_SE_C33 107
-#define EM_SEP 108
-#define EM_ARCA 109
-#define EM_UNICORE 110
-#define EM_EXCESS 111
-#define EM_DXP 112
-#define EM_CRX 114
-#define EM_XGATE 115
-#define EM_C166 116
-#define EM_M16C 117
-#define EM_DSPIC30F 118
-#define EM_CE 119
-#define EM_M32C 120
-#define EM_TSK3000 131
-#define EM_RS08 132
-#define EM_SHARC 133
-#define EM_ECOG2 134
-#define EM_SCORE7 135
-#define EM_DSP24 136
-#define EM_VIDEOCORE3 137
-#define EM_LATTICEMICO32 138
-#define EM_SE_C17 139
-#define EM_TI_C2000 141
-#define EM_TI_C5500 142
-#define EM_MMDSP_PLUS 160
-#define EM_CYPRESS_M8C 161
-#define EM_R32C 162
-#define EM_TRIMEDIA 163
-#define EM_QDSP6 164
-#define EM_8051 165
-#define EM_STXP7X 166
-#define EM_NDS32 167
-#define EM_ECOG1 168
-#define EM_ECOG1X 168
-#define EM_MAXQ30 169
-#define EM_XIMO16 170
-#define EM_MANIK 171
-#define EM_CRAYNV2 172
-#define EM_RX 173
-#define EM_METAG 174
-#define EM_MCST_ELBRUS 175
-#define EM_ECOG16 176
-#define EM_CR16 177
-#define EM_ETPU 178
-#define EM_SLE9X 179
-#define EM_L10M 180
-#define EM_K10M 181
-#define EM_AVR32 185
-#define EM_STM8 186
-#define EM_TILE64 187
-#define EM_CUDA 190
-#define EM_CLOUDSHIELD 192
-#define EM_COREA_1ST 193
-#define EM_COREA_2ND 194
-#define EM_ARC_COMPACT2 195
-#define EM_OPEN8 196
-#define EM_RL78 197
-#define EM_VIDEOCORE5 198
-#define EM_78KOR 199
-#define EM_56800EX 200
-#define EM_BA1 201
-#define EM_BA2 202
-#define EM_XCORE 203
-#define EM_MCHP_PIC 204
-#define EM_INTEL205 205
-#define EM_INTEL206 206
-#define EM_INTEL207 207
-#define EM_INTEL208 208
-#define EM_INTEL209 209
-#define EM_KM32 210
-#define EM_KMX32 211
-#define EM_KMX16 212
-#define EM_KMX8 213
-#define EM_KVARC 214
-#define EM_CDP 215
-#define EM_COGE 216
-#define EM_COOL 217
-#define EM_NORC 218
-#define EM_CSR_KALIMBA 219
-#define EM_Z80 220
-#define EM_VISIUM 221
-#define EM_FT32 222
-#define EM_MOXIE 223
-#define EM_AMDGPU 224
-#define EM_RISCV 243
-
-/* http://www.sco.com/developers/gabi/latest/ch4.eheader.html */
-#define ET_LOOS 0xfe00
-#define ET_HIOS 0xfeff
-
 /* http://www.sco.com/developers/gabi/latest/ch4.sheader.html */
-#define GRP_COMDAT 0x1
 #define GRP_MASKOS   0x0ff00000
 #define GRP_MASKPROC 0xf0000000
 
-/* http://www.sco.com/developers/gabi/latest/ch5.pheader.html */
-#define PF_X 0x1
-#define PF_W 0x2
-#define PF_R 0x4
-#define PF_MASKOS   0x0ff00000
-#define PF_MASKPROC 0xf0000000
-
-#define PT_GNU_RELRO 0x6474e552
-
-#define STB_LOOS 10
-#define STB_HIOS 12
-#define STB_LOPROC 13
-#define STB_HIPROC 15
-
 /* http://www.sco.com/developers/gabi/latest/ch4.sheader.html */
-#define SHF_MERGE 0x10
-#define SHF_STRINGS 0x20
-#define SHF_INFO_LINK 0x40
-#define SHF_LINK_ORDER 0x80
-#define SHF_OS_NONCONFORMING 0x100
-#define SHF_GROUP 0x200
-#define SHF_TLS 0x400
-#define SHF_COMPRESSED 0x800
-#define SHF_MASKOS 0x0ff00000
-#define SHF_MASKPROC 0xf0000000
-
-/* http://www.sco.com/developers/gabi/latest/ch4.sheader.html */
-#define SHN_LOOS 0xff20
-#define SHN_HIOS 0xff3f
-#define SHN_XINDEX 0xffff
-
-/* http://www.sco.com/developers/gabi/latest/ch4.sheader.html */
-#define SHT_INIT_ARRAY 14
-#define SHT_FINI_ARRAY 15
-#define SHT_PREINIT_ARRAY 16
-#define SHT_GROUP 17
-#define SHT_SYMTAB_SHNDX 18
+/*
+ * Standard replacement for SHT_ANDROID_RELR.
+ */
 #define SHT_RELR 19
 #undef SHT_NUM
 #define SHT_NUM 20
-#define SHT_LOOS 0x60000000
-#define SHT_HIOS 0x6fffffff
-
-/* http://www.sco.com/developers/gabi/latest/ch4.symtab.html */
-#define STN_UNDEF 0
-
-/* http://www.sco.com/developers/gabi/latest/ch4.symtab.html */
-#define STT_GNU_IFUNC 10
-#define STT_LOOS 10
-#define STT_HIOS 12
-#define STT_LOPROC 13
-#define STT_HIPROC 15
-
-/* http://www.sco.com/developers/gabi/latest/ch4.symtab.html */
-#define STV_DEFAULT 0
-#define STV_INTERNAL 1
-#define STV_HIDDEN 2
-#define STV_PROTECTED 3
-
-/* The kernel uses NT_PRFPREG but glibc also offers NT_FPREGSET */
-#define NT_FPREGSET NT_PRFPREG
-
-#define ELF_NOTE_GNU "GNU"
-
-#define NT_GNU_BUILD_ID 3
-
-#define VER_FLG_BASE 0x1
-#define VER_FLG_WEAK 0x2
-
-#define VER_NDX_LOCAL 0
-#define VER_NDX_GLOBAL 1
 
 /*
  * Experimental support for SHT_RELR sections. For details, see proposal
@@ -553,3 +257,13 @@
 #define DT_ANDROID_RELSZ 0x60000010 // DT_LOOS + 3
 #define DT_ANDROID_RELA 0x60000011 // DT_LOOS + 4
 #define DT_ANDROID_RELASZ 0x60000012 // DT_LOOS + 5
+
+/* Linux traditionally doesn't have the trailing 64 that BSD has on these. */
+#define R_AARCH64_TLS_DTPREL R_AARCH64_TLS_DTPREL64
+#define R_AARCH64_TLS_DTPMOD R_AARCH64_TLS_DTPMOD64
+#define R_AARCH64_TLS_TPREL R_AARCH64_TLS_TPREL64
+
+/* TODO: upstream these to FreeBSD? */
+#define R_ARM_TLS_DESC 13
+#define R_ARM_IRELATIVE 160
+#define R_X86_64_JUMP_SLOT 7
diff --git a/mainline/runtime/sdk/android/arm/include/bionic/libc/include/fenv.h b/mainline/runtime/sdk/android/arm/include/bionic/libc/include/fenv.h
index 7b775b6..3fd9852 100644
--- a/mainline/runtime/sdk/android/arm/include/bionic/libc/include/fenv.h
+++ b/mainline/runtime/sdk/android/arm/include/bionic/libc/include/fenv.h
@@ -35,6 +35,8 @@
 #include <bits/fenv_arm.h>
 #elif defined(__i386__)
 #include <bits/fenv_x86.h>
+#elif defined(__riscv)
+#include <bits/fenv_riscv64.h>
 #elif defined(__x86_64__)
 #include <bits/fenv_x86_64.h>
 #endif
diff --git a/mainline/runtime/sdk/android/arm/include/bionic/libc/include/langinfo.h b/mainline/runtime/sdk/android/arm/include/bionic/libc/include/langinfo.h
index d9d8c15..2b43892 100644
--- a/mainline/runtime/sdk/android/arm/include/bionic/libc/include/langinfo.h
+++ b/mainline/runtime/sdk/android/arm/include/bionic/libc/include/langinfo.h
@@ -92,8 +92,8 @@
 #define NOEXPR 54
 #define CRNCYSTR 55
 
-char* nl_langinfo(nl_item __item) __INTRODUCED_IN(26);
-char* nl_langinfo_l(nl_item __item, locale_t __l) __INTRODUCED_IN(26);
+char* _Nonnull nl_langinfo(nl_item __item) __INTRODUCED_IN(26);
+char* _Nonnull nl_langinfo_l(nl_item __item, locale_t _Nonnull __l) __INTRODUCED_IN(26);
 
 __END_DECLS
 
diff --git a/mainline/runtime/sdk/android/arm/include/bionic/libc/include/libgen.h b/mainline/runtime/sdk/android/arm/include/bionic/libc/include/libgen.h
index b910790..474f066 100644
--- a/mainline/runtime/sdk/android/arm/include/bionic/libc/include/libgen.h
+++ b/mainline/runtime/sdk/android/arm/include/bionic/libc/include/libgen.h
@@ -50,7 +50,7 @@
  * Note that Android's cv-qualifiers differ from POSIX; Android's implementation doesn't
  * modify its input and uses thread-local storage for the result if necessary.
  */
-char* __posix_basename(const char* __path) __RENAME(basename);
+char* _Nullable __posix_basename(const char* _Nullable __path) __RENAME(basename);
 
 /**
  * This macro ensures that callers get the POSIX basename() if they include this header,
@@ -65,13 +65,13 @@
  * Note that Android's cv-qualifiers differ from POSIX; Android's implementation doesn't
  * modify its input and uses thread-local storage for the result if necessary.
  */
-char* dirname(const char* __path);
+char* _Nullable dirname(const char* _Nullable __path);
 
 #if !defined(__LP64__)
 /** Deprecated. Use dirname() instead. */
-int dirname_r(const char* __path, char* __buf, size_t __n);
+int dirname_r(const char* _Nullable __path, char* _Nullable __buf, size_t __n);
 /** Deprecated. Use basename() instead. */
-int basename_r(const char* __path, char* __buf, size_t __n);
+int basename_r(const char* _Nullable __path, char* _Nullable __buf, size_t __n);
 #endif
 
 __END_DECLS
diff --git a/mainline/runtime/sdk/android/arm/include/bionic/libc/include/malloc.h b/mainline/runtime/sdk/android/arm/include/bionic/libc/include/malloc.h
index 40786fa..02bda60 100644
--- a/mainline/runtime/sdk/android/arm/include/bionic/libc/include/malloc.h
+++ b/mainline/runtime/sdk/android/arm/include/bionic/libc/include/malloc.h
@@ -40,7 +40,7 @@
  * Returns a pointer to the allocated memory on success and returns a null
  * pointer and sets `errno` on failure.
  */
-void* malloc(size_t __byte_count) __mallocfunc __BIONIC_ALLOC_SIZE(1) __wur;
+void* _Nullable malloc(size_t __byte_count) __mallocfunc __BIONIC_ALLOC_SIZE(1) __wur;
 
 /**
  * [calloc(3)](http://man7.org/linux/man-pages/man3/calloc.3.html) allocates
@@ -49,7 +49,7 @@
  * Returns a pointer to the allocated memory on success and returns a null
  * pointer and sets `errno` on failure.
  */
-void* calloc(size_t __item_count, size_t __item_size) __mallocfunc __BIONIC_ALLOC_SIZE(1,2) __wur;
+void* _Nullable calloc(size_t __item_count, size_t __item_size) __mallocfunc __BIONIC_ALLOC_SIZE(1,2) __wur;
 
 /**
  * [realloc(3)](http://man7.org/linux/man-pages/man3/realloc.3.html) resizes
@@ -58,7 +58,7 @@
  * Returns a pointer (which may be different from `__ptr`) to the resized
  * memory on success and returns a null pointer and sets `errno` on failure.
  */
-void* realloc(void* __ptr, size_t __byte_count) __BIONIC_ALLOC_SIZE(2) __wur;
+void* _Nullable realloc(void* _Nullable __ptr, size_t __byte_count) __BIONIC_ALLOC_SIZE(2) __wur;
 
 /**
  * [reallocarray(3)](http://man7.org/linux/man-pages/man3/realloc.3.html) resizes
@@ -70,13 +70,13 @@
  * Returns a pointer (which may be different from `__ptr`) to the resized
  * memory on success and returns a null pointer and sets `errno` on failure.
  */
-void* reallocarray(void* __ptr, size_t __item_count, size_t __item_size) __BIONIC_ALLOC_SIZE(2, 3) __wur __INTRODUCED_IN(29);
+void* _Nullable reallocarray(void* _Nullable __ptr, size_t __item_count, size_t __item_size) __BIONIC_ALLOC_SIZE(2, 3) __wur __INTRODUCED_IN(29);
 
 /**
  * [free(3)](http://man7.org/linux/man-pages/man3/free.3.html) deallocates
  * memory on the heap.
  */
-void free(void* __ptr);
+void free(void* _Nullable __ptr);
 
 /**
  * [memalign(3)](http://man7.org/linux/man-pages/man3/memalign.3.html) allocates
@@ -87,7 +87,7 @@
  *
  * See also posix_memalign().
  */
-void* memalign(size_t __alignment, size_t __byte_count) __mallocfunc __BIONIC_ALLOC_SIZE(2) __wur;
+void* _Nullable memalign(size_t __alignment, size_t __byte_count) __mallocfunc __BIONIC_ALLOC_SIZE(2) __wur;
 
 /**
  * [malloc_usable_size(3)](http://man7.org/linux/man-pages/man3/malloc_usable_size.3.html)
@@ -95,7 +95,7 @@
  *
  * Available since API level 17.
  */
-size_t malloc_usable_size(const void* __ptr) __INTRODUCED_IN(17);
+size_t malloc_usable_size(const void* _Nullable __ptr) __INTRODUCED_IN(17);
 
 #define __MALLINFO_BODY \
   /** Total number of non-mmapped bytes currently allocated from OS. */ \
@@ -168,7 +168,7 @@
  *
  * Available since API level 23.
  */
-int malloc_info(int __must_be_zero, FILE* __fp) __INTRODUCED_IN(23);
+int malloc_info(int __must_be_zero, FILE* _Nonnull __fp) __INTRODUCED_IN(23);
 
 /**
  * mallopt() option to set the decay time. Valid values are 0 and 1.
@@ -329,7 +329,7 @@
  *
  * See also: [extra documentation](https://android.googlesource.com/platform/bionic/+/master/libc/malloc_hooks/README.md)
  */
-extern void* (*volatile __malloc_hook)(size_t __byte_count, const void* __caller) __INTRODUCED_IN(28);
+extern void* _Nonnull (*volatile _Nonnull __malloc_hook)(size_t __byte_count, const void* _Nonnull __caller) __INTRODUCED_IN(28);
 
 /**
  * [__realloc_hook(3)](http://man7.org/linux/man-pages/man3/__realloc_hook.3.html)
@@ -340,7 +340,7 @@
  *
  * See also: [extra documentation](https://android.googlesource.com/platform/bionic/+/master/libc/malloc_hooks/README.md)
  */
-extern void* (*volatile __realloc_hook)(void* __ptr, size_t __byte_count, const void* __caller) __INTRODUCED_IN(28);
+extern void* _Nonnull (*volatile _Nonnull __realloc_hook)(void* _Nullable __ptr, size_t __byte_count, const void* _Nonnull __caller) __INTRODUCED_IN(28);
 
 /**
  * [__free_hook(3)](http://man7.org/linux/man-pages/man3/__free_hook.3.html)
@@ -351,7 +351,7 @@
  *
  * See also: [extra documentation](https://android.googlesource.com/platform/bionic/+/master/libc/malloc_hooks/README.md)
  */
-extern void (*volatile __free_hook)(void* __ptr, const void* __caller) __INTRODUCED_IN(28);
+extern void (*volatile _Nonnull __free_hook)(void* _Nullable __ptr, const void* _Nonnull __caller) __INTRODUCED_IN(28);
 
 /**
  * [__memalign_hook(3)](http://man7.org/linux/man-pages/man3/__memalign_hook.3.html)
@@ -362,6 +362,6 @@
  *
  * See also: [extra documentation](https://android.googlesource.com/platform/bionic/+/master/libc/malloc_hooks/README.md)
  */
-extern void* (*volatile __memalign_hook)(size_t __alignment, size_t __byte_count, const void* __caller) __INTRODUCED_IN(28);
+extern void* _Nonnull (*volatile _Nonnull __memalign_hook)(size_t __alignment, size_t __byte_count, const void* _Nonnull __caller) __INTRODUCED_IN(28);
 
 __END_DECLS
diff --git a/mainline/runtime/sdk/android/arm/include/bionic/libc/include/regex.h b/mainline/runtime/sdk/android/arm/include/bionic/libc/include/regex.h
index c4cc39c..be1418e 100644
--- a/mainline/runtime/sdk/android/arm/include/bionic/libc/include/regex.h
+++ b/mainline/runtime/sdk/android/arm/include/bionic/libc/include/regex.h
@@ -49,8 +49,8 @@
 typedef struct {
 	int re_magic;
 	size_t re_nsub;		/* number of parenthesized subexpressions */
-	const char *re_endp;	/* end pointer for REG_PEND */
-	struct re_guts *re_g;	/* none of your business :-) */
+	const char * _Null_unspecified re_endp;	/* end pointer for REG_PEND */
+	struct re_guts * _Null_unspecified re_g;	/* none of your business :-) */
 } regex_t;
 
 typedef struct {
@@ -67,6 +67,7 @@
 #define	REG_NOSPEC	0020
 #define	REG_PEND	0040
 #define	REG_DUMP	0200
+#define	REG_GNU		0400
 
 /* regerror() flags */
 #define	REG_NOMATCH	 1
@@ -85,6 +86,7 @@
 #define	REG_EMPTY	14
 #define	REG_ASSERT	15
 #define	REG_INVARG	16
+#define	REG_ILLSEQ	17
 #define	REG_ATOI	255	/* convert name to number (!) */
 #define	REG_ITOA	0400	/* convert number to name (!) */
 
@@ -97,10 +99,10 @@
 #define	REG_BACKR	02000	/* force use of backref code */
 
 __BEGIN_DECLS
-int regcomp(regex_t* __re, const char* __regex, int __flags);
-size_t regerror(int __error_code, const regex_t* __re, char* __buf, size_t __n);
-int regexec(const regex_t* __re, const char* __s, size_t __match_count, regmatch_t __matches[], int __flags);
-void regfree(regex_t* __re);
+int regcomp(regex_t* _Nonnull __re, const char* _Nonnull __regex, int __flags);
+size_t regerror(int __error_code, const regex_t* _Nullable __re, char* _Nullable __buf, size_t __n);
+int regexec(const regex_t* _Nonnull __re, const char* _Nonnull __s, size_t __match_count, regmatch_t __matches[_Nullable], int __flags);
+void regfree(regex_t* _Nonnull __re);
 __END_DECLS
 
 #endif
diff --git a/mainline/runtime/sdk/android/arm/include/bionic/libc/include/setjmp.h b/mainline/runtime/sdk/android/arm/include/bionic/libc/include/setjmp.h
index 3a64b33..a3de9c7 100644
--- a/mainline/runtime/sdk/android/arm/include/bionic/libc/include/setjmp.h
+++ b/mainline/runtime/sdk/android/arm/include/bionic/libc/include/setjmp.h
@@ -37,8 +37,12 @@
  *	@(#)setjmp.h	8.2 (Berkeley) 1/21/94
  */
 
-#ifndef _SETJMP_H_
-#define _SETJMP_H_
+#pragma once
+
+/**
+ * @file setjmp.h
+ * @brief Non-local jumps.
+ */
 
 #include <sys/cdefs.h>
 
@@ -48,28 +52,60 @@
 #define _JBLEN 64
 #elif defined(__i386__)
 #define _JBLEN 10
+#elif defined(__riscv)
+#define _JBLEN 29
 #elif defined(__x86_64__)
 #define _JBLEN 11
 #endif
 
+/** The type of the buffer used by sigsetjmp()/siglongjmp(). */
 typedef long sigjmp_buf[_JBLEN + 1];
+
+/** The type of the buffer used by setjmp()/longjmp(). */
 typedef long jmp_buf[_JBLEN];
 
 #undef _JBLEN
 
 __BEGIN_DECLS
 
+/**
+ * Equivalent to sigsetjmp() with the second argument 0, so that the signal
+ * mask is not saved.
+ */
 int _setjmp(jmp_buf __env) __returns_twice;
+
+/** Equivalent to siglongjmp(). */
 __noreturn void _longjmp(jmp_buf __env, int __value);
 
+/**
+ * Equivalent to sigsetjmp() with the second argument 1, so that the signal
+ * mask is saved.
+ */
 int setjmp(jmp_buf __env) __returns_twice;
-__noreturn void longjmp(jmp_buf __env, int __value);
 
+/** C11 says setjmp() must be a macro, but Android already had a function. */
 #define setjmp(__env) setjmp(__env)
 
-int sigsetjmp(sigjmp_buf __env, int __save_signal_mask);
+/** Equivalent to siglongjmp(). */
+__noreturn void longjmp(jmp_buf __env, int __value);
+
+/**
+ * [sigsetjmp(3)](http://man7.org/linux/man-pages/man3/sigsetjmp.3.html)
+ * sets the target of a future siglongjmp() call, saving or not saving the
+ * current signal mask based on the second argument.
+ *
+ * Returns 0 when first called, and returns the value passed to siglongjmp()
+ * when returning here as a result of a siglongjmp() call.
+ */
+int sigsetjmp(sigjmp_buf __env, int __save_signal_mask) __returns_twice;
+
+/**
+ * [siglongjmp(3)](http://man7.org/linux/man-pages/man3/siglongjmp.3.html)
+ * transfers control back to the site of the sigsetjmp() call that initialized
+ * the given jump buffer, returning the given value.
+ *
+ * Does not return.
+ */
 __noreturn void siglongjmp(sigjmp_buf __env, int __value);
 
 __END_DECLS
-
-#endif
diff --git a/mainline/runtime/sdk/android/arm/include/bionic/libc/include/spawn.h b/mainline/runtime/sdk/android/arm/include/bionic/libc/include/spawn.h
index 2e239bf..e445453 100644
--- a/mainline/runtime/sdk/android/arm/include/bionic/libc/include/spawn.h
+++ b/mainline/runtime/sdk/android/arm/include/bionic/libc/include/spawn.h
@@ -46,6 +46,8 @@
 #define POSIX_SPAWN_USEVFORK 64
 #define POSIX_SPAWN_SETSID 128
 #endif
+// mark all fds (except stdin/out/err) as close-on-exec prior to executing registered file actions
+#define POSIX_SPAWN_CLOEXEC_DEFAULT 256
 
 typedef struct __posix_spawnattr* posix_spawnattr_t;
 typedef struct __posix_spawn_file_actions* posix_spawn_file_actions_t;
diff --git a/mainline/runtime/sdk/android/arm/include/bionic/libc/include/stdio_ext.h b/mainline/runtime/sdk/android/arm/include/bionic/libc/include/stdio_ext.h
index 3aa183d..eda5919 100644
--- a/mainline/runtime/sdk/android/arm/include/bionic/libc/include/stdio_ext.h
+++ b/mainline/runtime/sdk/android/arm/include/bionic/libc/include/stdio_ext.h
@@ -96,13 +96,21 @@
 
 /**
  * [__fpending(3)](http://man7.org/linux/man-pages/man3/__fpending.3.html) returns the number of
- * bytes in the output buffer.
+ * bytes in the output buffer. See __freadahead() for the input buffer.
  *
  * Available since API level 23.
  */
 size_t __fpending(FILE* __fp) __INTRODUCED_IN(23);
 
 /**
+ * __freadahead(3) returns the number of bytes in the input buffer.
+ * See __fpending() for the output buffer.
+ *
+ * Available since API level 34.
+ */
+size_t __freadahead(FILE* __fp) __INTRODUCED_IN(34);
+
+/**
  * [_flushlbf(3)](http://man7.org/linux/man-pages/man3/_flushlbf.3.html) flushes all
  * line-buffered streams.
  *
diff --git a/mainline/runtime/sdk/android/arm/include/bionic/libc/include/stdlib.h b/mainline/runtime/sdk/android/arm/include/bionic/libc/include/stdlib.h
index 4aa27f9..06ed3f4 100644
--- a/mainline/runtime/sdk/android/arm/include/bionic/libc/include/stdlib.h
+++ b/mainline/runtime/sdk/android/arm/include/bionic/libc/include/stdlib.h
@@ -49,82 +49,82 @@
 __noreturn void _Exit(int) __RENAME(_exit);
 #endif
 
-int atexit(void (*__fn)(void));
+int atexit(void (* _Nonnull __fn)(void));
 
-int at_quick_exit(void (*__fn)(void)) __INTRODUCED_IN(21);
+int at_quick_exit(void (* _Nonnull __fn)(void)) __INTRODUCED_IN(21);
 void quick_exit(int __status) __noreturn __INTRODUCED_IN(21);
 
-char* getenv(const char* __name);
-int putenv(char* __assignment);
-int setenv(const char* __name, const char* __value, int __overwrite);
-int unsetenv(const char* __name);
+char* _Nullable getenv(const char* _Nonnull __name);
+int putenv(char* _Nonnull __assignment);
+int setenv(const char* _Nonnull __name, const char* _Nonnull __value, int __overwrite);
+int unsetenv(const char* _Nonnull __name);
 int clearenv(void);
 
-char* mkdtemp(char* __template);
-char* mktemp(char* __template) __attribute__((deprecated("mktemp is unsafe, use mkstemp or tmpfile instead")));
+char* _Nullable mkdtemp(char* _Nonnull __template);
+char* _Nullable mktemp(char* _Nonnull __template) __attribute__((deprecated("mktemp is unsafe, use mkstemp or tmpfile instead")));
 
-int mkostemp64(char* __template, int __flags) __INTRODUCED_IN(23);
-int mkostemp(char* __template, int __flags) __INTRODUCED_IN(23);
-int mkostemps64(char* __template, int __suffix_length, int __flags) __INTRODUCED_IN(23);
-int mkostemps(char* __template, int __suffix_length, int __flags) __INTRODUCED_IN(23);
-int mkstemp64(char* __template) __INTRODUCED_IN(21);
-int mkstemp(char* __template);
-int mkstemps64(char* __template, int __flags) __INTRODUCED_IN(23);
-int mkstemps(char* __template, int __flags);
+int mkostemp64(char* _Nonnull __template, int __flags) __INTRODUCED_IN(23);
+int mkostemp(char* _Nonnull __template, int __flags) __INTRODUCED_IN(23);
+int mkostemps64(char* _Nonnull __template, int __suffix_length, int __flags) __INTRODUCED_IN(23);
+int mkostemps(char* _Nonnull __template, int __suffix_length, int __flags) __INTRODUCED_IN(23);
+int mkstemp64(char* _Nonnull __template) __INTRODUCED_IN(21);
+int mkstemp(char* _Nonnull __template);
+int mkstemps64(char* _Nonnull __template, int __flags) __INTRODUCED_IN(23);
+int mkstemps(char* _Nonnull __template, int __flags);
 
-long strtol(const char* __s, char** __end_ptr, int __base);
-long long strtoll(const char* __s, char** __end_ptr, int __base);
-unsigned long strtoul(const char* __s, char** __end_ptr, int __base);
-unsigned long long strtoull(const char* __s, char** __end_ptr, int __base);
+long strtol(const char* _Nonnull __s, char* _Nullable * _Nullable __end_ptr, int __base);
+long long strtoll(const char* _Nonnull __s, char* _Nullable * _Nullable __end_ptr, int __base);
+unsigned long strtoul(const char* _Nonnull __s, char* _Nullable * _Nullable __end_ptr, int __base);
+unsigned long long strtoull(const char* _Nonnull __s, char* _Nullable * _Nullable __end_ptr, int __base);
 
-int posix_memalign(void** __memptr, size_t __alignment, size_t __size) __INTRODUCED_IN(17);
+int posix_memalign(void* _Nullable * _Nullable __memptr, size_t __alignment, size_t __size) __INTRODUCED_IN(17);
 
-void* aligned_alloc(size_t __alignment, size_t __size) __INTRODUCED_IN(28);
+void* _Nullable aligned_alloc(size_t __alignment, size_t __size) __INTRODUCED_IN(28);
 
-double strtod(const char* __s, char** __end_ptr);
-long double strtold(const char* __s, char** __end_ptr) __RENAME_LDBL(strtod, 3, 21);
+double strtod(const char* _Nonnull __s, char* _Nullable * _Nullable __end_ptr);
+long double strtold(const char* _Nonnull __s, char* _Nullable * _Nullable __end_ptr) __RENAME_LDBL(strtod, 3, 21);
 
-unsigned long strtoul_l(const char* __s, char** __end_ptr, int __base, locale_t __l) __INTRODUCED_IN(26);
+unsigned long strtoul_l(const char* _Nonnull __s, char* _Nullable * _Nullable __end_ptr, int __base, locale_t _Nonnull __l) __INTRODUCED_IN(26);
 
-int atoi(const char* __s) __attribute_pure__;
-long atol(const char* __s) __attribute_pure__;
-long long atoll(const char* __s) __attribute_pure__;
+int atoi(const char* _Nonnull __s) __attribute_pure__;
+long atol(const char* _Nonnull __s) __attribute_pure__;
+long long atoll(const char* _Nonnull __s) __attribute_pure__;
 
-__wur char* realpath(const char* __path, char* __resolved);
-int system(const char* __command);
+__wur char* _Nullable realpath(const char* _Nonnull __path, char* _Nullable __resolved);
+int system(const char* _Nonnull __command);
 
-void* bsearch(const void* __key, const void* __base, size_t __nmemb, size_t __size, int (*__comparator)(const void* __lhs, const void* __rhs));
+void* _Nullable bsearch(const void* _Nonnull __key, const void* _Nullable __base, size_t __nmemb, size_t __size, int (* _Nonnull __comparator)(const void* _Nonnull __lhs, const void* _Nonnull __rhs));
 
-void qsort(void* __base, size_t __nmemb, size_t __size, int (*__comparator)(const void* __lhs, const void* __rhs));
+void qsort(void* _Nullable __base, size_t __nmemb, size_t __size, int (* _Nonnull __comparator)(const void* _Nonnull __lhs, const void* _Nonnull __rhs));
 
 uint32_t arc4random(void);
 uint32_t arc4random_uniform(uint32_t __upper_bound);
-void arc4random_buf(void* __buf, size_t __n);
+void arc4random_buf(void* _Nonnull __buf, size_t __n);
 
 #define RAND_MAX 0x7fffffff
 
-int rand_r(unsigned int* __seed_ptr) __INTRODUCED_IN(21);
+int rand_r(unsigned int* _Nonnull __seed_ptr) __INTRODUCED_IN(21);
 
 double drand48(void);
-double erand48(unsigned short __xsubi[3]);
-long jrand48(unsigned short __xsubi[3]);
-void lcong48(unsigned short __param[7]) __INTRODUCED_IN(23);
+double erand48(unsigned short __xsubi[_Nonnull 3]);
+long jrand48(unsigned short __xsubi[_Nonnull 3]);
+void lcong48(unsigned short __param[_Nonnull 7]) __INTRODUCED_IN(23);
 long lrand48(void);
 long mrand48(void);
-long nrand48(unsigned short __xsubi[3]);
-unsigned short* seed48(unsigned short __seed16v[3]);
+long nrand48(unsigned short __xsubi[_Nonnull 3]);
+unsigned short* _Nonnull seed48(unsigned short __seed16v[_Nonnull 3]);
 void srand48(long __seed);
 
-char* initstate(unsigned int __seed, char* __state, size_t __n) __INTRODUCED_IN(21);
-char* setstate(char* __state) __INTRODUCED_IN(21);
+char* _Nullable initstate(unsigned int __seed, char* _Nonnull __state, size_t __n) __INTRODUCED_IN(21);
+char* _Nullable setstate(char* _Nonnull __state) __INTRODUCED_IN(21);
 
 int getpt(void);
 int posix_openpt(int __flags) __INTRODUCED_IN(21);
-char* ptsname(int __fd);
-int ptsname_r(int __fd, char* __buf, size_t __n);
+char* _Nullable ptsname(int __fd);
+int ptsname_r(int __fd, char* _Nonnull __buf, size_t __n);
 int unlockpt(int __fd);
 
-int getsubopt(char** __option, char* const* __tokens, char** __value_ptr) __INTRODUCED_IN(26);
+int getsubopt(char* _Nonnull * _Nonnull __option, char* _Nonnull const* _Nonnull __tokens, char* _Nullable * _Nonnull __value_ptr) __INTRODUCED_IN(26);
 
 typedef struct {
   int quot;
@@ -154,18 +154,18 @@
  *
  * Returns the number of samples written to `__averages` (at most 3), and returns -1 on failure.
  */
-int getloadavg(double __averages[], int __n) __INTRODUCED_IN(29);
+int getloadavg(double __averages[_Nonnull], int __n) __INTRODUCED_IN(29);
 
 /* BSD compatibility. */
-const char* getprogname(void) __INTRODUCED_IN(21);
-void setprogname(const char* __name) __INTRODUCED_IN(21);
+const char* _Nullable getprogname(void) __INTRODUCED_IN(21);
+void setprogname(const char* _Nonnull __name) __INTRODUCED_IN(21);
 
-int mblen(const char* __s, size_t __n) __INTRODUCED_IN_NO_GUARD_FOR_NDK(26);
-size_t mbstowcs(wchar_t* __dst, const char* __src, size_t __n) __INTRODUCED_IN_NO_GUARD_FOR_NDK(21);
-int mbtowc(wchar_t* __wc_ptr, const char* __s, size_t __n) __INTRODUCED_IN_NO_GUARD_FOR_NDK(21);
-int wctomb(char* __dst, wchar_t __wc) __INTRODUCED_IN_NO_GUARD_FOR_NDK(21);
+int mblen(const char* _Nullable __s, size_t __n) __INTRODUCED_IN_NO_GUARD_FOR_NDK(26);
+size_t mbstowcs(wchar_t* _Nullable __dst, const char* _Nullable __src, size_t __n) __INTRODUCED_IN_NO_GUARD_FOR_NDK(21);
+int mbtowc(wchar_t* _Nullable __wc_ptr, const char*  _Nullable __s, size_t __n) __INTRODUCED_IN_NO_GUARD_FOR_NDK(21);
+int wctomb(char* _Nullable __dst, wchar_t __wc) __INTRODUCED_IN_NO_GUARD_FOR_NDK(21);
 
-size_t wcstombs(char* __dst, const wchar_t* __src, size_t __n) __INTRODUCED_IN_NO_GUARD_FOR_NDK(21);
+size_t wcstombs(char* _Nullable __dst, const wchar_t* _Nullable __src, size_t __n) __INTRODUCED_IN_NO_GUARD_FOR_NDK(21);
 
 #if __ANDROID_API__ >= 21
 size_t __ctype_get_mb_cur_max(void) __INTRODUCED_IN(21);
@@ -192,25 +192,25 @@
 #endif
 
 #if __ANDROID_API__ >= 21
-float strtof(const char* __s, char** __end_ptr) __INTRODUCED_IN(21);
-double atof(const char* __s) __attribute_pure__ __INTRODUCED_IN(21);
+float strtof(const char* _Nonnull __s, char* _Nullable * _Nullable __end_ptr) __INTRODUCED_IN(21);
+double atof(const char* _Nonnull __s) __attribute_pure__ __INTRODUCED_IN(21);
 int rand(void) __INTRODUCED_IN(21);
 void srand(unsigned int __seed) __INTRODUCED_IN(21);
 long random(void) __INTRODUCED_IN(21);
 void srandom(unsigned int __seed) __INTRODUCED_IN(21);
 int grantpt(int __fd) __INTRODUCED_IN(21);
 
-long long strtoll_l(const char* __s, char** __end_ptr, int __base, locale_t __l) __INTRODUCED_IN(21);
-unsigned long long strtoull_l(const char* __s, char** __end_ptr, int __base, locale_t __l) __INTRODUCED_IN(21);
-long double strtold_l(const char* __s, char** __end_ptr, locale_t __l) __INTRODUCED_IN(21);
+long long strtoll_l(const char* _Nonnull __s, char* _Nullable * _Nullable __end_ptr, int __base, locale_t _Nonnull __l) __INTRODUCED_IN(21);
+unsigned long long strtoull_l(const char* _Nonnull __s, char* _Nullable * _Nullable __end_ptr, int __base, locale_t _Nonnull __l) __INTRODUCED_IN(21);
+long double strtold_l(const char* _Nonnull __s, char* _Nullable * _Nullable __end_ptr, locale_t _Nonnull __l) __INTRODUCED_IN(21);
 #else
 // Implemented as static inlines before 21.
 #endif
 
 #if __ANDROID_API__ >= 26
-double strtod_l(const char* __s, char** __end_ptr, locale_t __l) __INTRODUCED_IN(26);
-float strtof_l(const char* __s, char** __end_ptr, locale_t __l) __INTRODUCED_IN(26);
-long strtol_l(const char* __s, char** __end_ptr, int, locale_t __l) __INTRODUCED_IN(26);
+double strtod_l(const char* _Nonnull __s, char* _Nullable * _Nullable __end_ptr, locale_t _Nonnull __l) __INTRODUCED_IN(26);
+float strtof_l(const char* _Nonnull __s, char* _Nullable * _Nullable __end_ptr, locale_t _Nonnull __l) __INTRODUCED_IN(26);
+long strtol_l(const char* _Nonnull __s, char* _Nullable * _Nullable __end_ptr, int, locale_t _Nonnull __l) __INTRODUCED_IN(26);
 #else
 // Implemented as static inlines before 26.
 #endif
diff --git a/mainline/runtime/sdk/android/arm/include/bionic/libc/include/string.h b/mainline/runtime/sdk/android/arm/include/bionic/libc/include/string.h
index 0cc5611..59c4687 100644
--- a/mainline/runtime/sdk/android/arm/include/bionic/libc/include/string.h
+++ b/mainline/runtime/sdk/android/arm/include/bionic/libc/include/string.h
@@ -55,7 +55,24 @@
 void* mempcpy(void* __dst, const void* __src, size_t __n) __INTRODUCED_IN(23);
 #endif
 void* memmove(void* __dst, const void* __src, size_t __n);
+
+/**
+ * [memset(3)](http://man7.org/linux/man-pages/man3/memset.3.html) writes the
+ * bottom 8 bits of the given int to the next `n` bytes of `dst`.
+ *
+ * Returns `dst`.
+ */
 void* memset(void* __dst, int __ch, size_t __n);
+
+/**
+ * [memset_explicit(3)](http://man7.org/linux/man-pages/man3/memset_explicit.3.html)
+ * writes the bottom 8 bits of the given int to the next `n` bytes of `dst`,
+ * but won't be optimized out by the compiler.
+ *
+ * Returns `dst`.
+ */
+void* memset_explicit(void* __dst, int __ch, size_t __n) __INTRODUCED_IN(34);
+
 void* memmem(const void* __haystack, size_t __haystack_size, const void* __needle, size_t __needle_size) __attribute_pure__;
 
 char* strchr(const char* __s, int __ch) __attribute_pure__;
diff --git a/mainline/runtime/sdk/android/arm/include/bionic/libc/include/sys/mman.h b/mainline/runtime/sdk/android/arm/include/bionic/libc/include/sys/mman.h
index 6ef0c12..fea9332 100644
--- a/mainline/runtime/sdk/android/arm/include/bionic/libc/include/sys/mman.h
+++ b/mainline/runtime/sdk/android/arm/include/bionic/libc/include/sys/mman.h
@@ -110,6 +110,8 @@
  * [mlockall(2)](http://man7.org/linux/man-pages/man2/mlockall.2.html)
  * locks pages (preventing swapping).
  *
+ * Available since API level 17.
+ *
  * Returns 0 on success, and returns -1 and sets `errno` on failure.
  */
 int mlockall(int __flags) __INTRODUCED_IN(17);
@@ -118,6 +120,8 @@
  * [munlockall(2)](http://man7.org/linux/man-pages/man2/munlockall.2.html)
  * unlocks pages (allowing swapping).
  *
+ * Available since API level 17.
+ *
  * Returns 0 on success, and returns -1 and sets `errno` on failure.
  */
 int munlockall(void) __INTRODUCED_IN(17);
@@ -134,6 +138,8 @@
  * [mlock2(2)](http://man7.org/linux/man-pages/man2/mlock.2.html)
  * locks pages (preventing swapping), with optional flags.
  *
+ * Available since API level 30.
+ *
  * Returns 0 on success, and returns -1 and sets `errno` on failure.
  */
 int mlock2(const void* __addr, size_t __size, int __flags) __INTRODUCED_IN(30);
@@ -167,9 +173,14 @@
  * works just like madvise(2) but applies to the process specified by the given
  * PID file descriptor.
  *
+ * Available since API level 31. Its sibling process_mrelease() does not have a
+ * libc wrapper and should be called using syscall() instead. Given the lack of
+ * widespread applicability of this system call and the absence of wrappers in
+ * other libcs, it was probably a mistake to have added this wrapper to bionic.
+ *
  * Returns the number of bytes advised on success, and returns -1 and sets `errno` on failure.
  */
-ssize_t process_madvise(int __pid_fd, const struct iovec* __iov, size_t __count, int __advice, unsigned __flags);
+ssize_t process_madvise(int __pid_fd, const struct iovec* __iov, size_t __count, int __advice, unsigned __flags) __INTRODUCED_IN(31);
 
 #if defined(__USE_GNU)
 
@@ -177,6 +188,8 @@
  * [memfd_create(2)](http://man7.org/linux/man-pages/man2/memfd_create.2.html)
  * creates an anonymous file.
  *
+ * Available since API level 30.
+ *
  * Returns an fd on success, and returns -1 and sets `errno` on failure.
  */
 int memfd_create(const char* __name, unsigned __flags) __INTRODUCED_IN(30);
@@ -211,9 +224,10 @@
  * [posix_madvise(3)](http://man7.org/linux/man-pages/man3/posix_madvise.3.html)
  * gives the kernel advice about future usage patterns.
  *
- * Returns 0 on success, and returns a positive error number on failure.
+ * Available since API level 23.
+ * See also madvise() which is available at all API levels.
  *
- * See also madvise() which has been available much longer.
+ * Returns 0 on success, and returns a positive error number on failure.
  */
 int posix_madvise(void* __addr, size_t __size, int __advice) __INTRODUCED_IN(23);
 
diff --git a/mainline/runtime/sdk/android/arm/include/bionic/libc/include/sys/resource.h b/mainline/runtime/sdk/android/arm/include/bionic/libc/include/sys/resource.h
index 9181125..ccb267d 100644
--- a/mainline/runtime/sdk/android/arm/include/bionic/libc/include/sys/resource.h
+++ b/mainline/runtime/sdk/android/arm/include/bionic/libc/include/sys/resource.h
@@ -41,6 +41,7 @@
 #define RLIM_SAVED_MAX RLIM_INFINITY
 
 typedef unsigned long rlim_t;
+typedef unsigned long long rlim64_t;
 
 int getrlimit(int __resource, struct rlimit* __limit);
 int setrlimit(int __resource, const struct rlimit* __limit);
diff --git a/mainline/runtime/sdk/android/arm/include/bionic/libc/include/sys/stat.h b/mainline/runtime/sdk/android/arm/include/bionic/libc/include/sys/stat.h
index 4184f6c..623631e 100644
--- a/mainline/runtime/sdk/android/arm/include/bionic/libc/include/sys/stat.h
+++ b/mainline/runtime/sdk/android/arm/include/bionic/libc/include/sys/stat.h
@@ -40,7 +40,7 @@
 
 __BEGIN_DECLS
 
-#if defined(__aarch64__)
+#if defined(__aarch64__) || defined(__riscv)
 #define __STAT64_BODY \
   dev_t st_dev; \
   ino_t st_ino; \
diff --git a/mainline/runtime/sdk/android/arm/include/bionic/libc/include/sys/ucontext.h b/mainline/runtime/sdk/android/arm/include/bionic/libc/include/sys/ucontext.h
index 9c5801f..8e5873d 100644
--- a/mainline/runtime/sdk/android/arm/include/bionic/libc/include/sys/ucontext.h
+++ b/mainline/runtime/sdk/android/arm/include/bionic/libc/include/sys/ucontext.h
@@ -26,8 +26,7 @@
  * SUCH DAMAGE.
  */
 
-#ifndef _SYS_UCONTEXT_H_
-#define _SYS_UCONTEXT_H_
+#pragma once
 
 #include <sys/cdefs.h>
 
@@ -313,8 +312,69 @@
   struct _libc_fpstate __fpregs_mem;
 } ucontext_t;
 
+#elif defined(__riscv)
+
+#define NGREG 32
+
+#define REG_PC 0
+#define REG_RA 1
+#define REG_SP 2
+#define REG_TP 4
+#define REG_S0 8
+#define REG_A0 10
+
+typedef unsigned long __riscv_mc_gp_state[NGREG];
+
+typedef unsigned long greg_t;
+typedef unsigned long gregset_t[NGREG];
+typedef union __riscv_mc_fp_state fpregset_t;
+
+/* These match the kernel <asm/ptrace.h> types but with different names. */
+
+struct __riscv_mc_f_ext_state {
+  uint32_t __f[32];
+  uint32_t __fcsr;
+};
+
+struct __riscv_mc_d_ext_state {
+  uint64_t __f[32];
+  uint32_t __fcsr;
+};
+
+struct __riscv_mc_q_ext_state {
+  uint64_t __f[64] __attribute__((__aligned__(16)));
+  uint32_t __fcsr;
+  uint32_t __reserved[3];
+};
+
+union __riscv_mc_fp_state {
+  struct __riscv_mc_f_ext_state __f;
+  struct __riscv_mc_d_ext_state __d;
+  struct __riscv_mc_q_ext_state __q;
+};
+
+/* This matches the kernel <asm/sigcontext.h> but with different names. */
+
+typedef struct mcontext_t {
+  __riscv_mc_gp_state __gregs;
+  union __riscv_mc_fp_state __fpregs;
+} mcontext_t;
+
+/* This matches the kernel <asm/ucontext.h> but using mcontext_t. */
+
+typedef struct ucontext_t {
+  unsigned long uc_flags;
+  struct ucontext_t* uc_link;
+  stack_t uc_stack;
+  union {
+    sigset_t uc_sigmask;
+    sigset64_t uc_sigmask64;
+  };
+  /* The kernel adds extra padding here to allow sigset_t to grow. */
+  char __padding[128 - sizeof(sigset_t)];
+  mcontext_t uc_mcontext;
+} ucontext_t;
+
 #endif
 
 __END_DECLS
-
-#endif /* _SYS_UCONTEXT_H_ */
diff --git a/mainline/runtime/sdk/android/arm/include/bionic/libc/include/sys/user.h b/mainline/runtime/sdk/android/arm/include/bionic/libc/include/sys/user.h
index 2392edd..432c7cb 100644
--- a/mainline/runtime/sdk/android/arm/include/bionic/libc/include/sys/user.h
+++ b/mainline/runtime/sdk/android/arm/include/bionic/libc/include/sys/user.h
@@ -26,8 +26,7 @@
  * SUCH DAMAGE.
  */
 
-#ifndef _SYS_USER_H_
-#define _SYS_USER_H_
+#pragma once
 
 #include <sys/cdefs.h>
 #include <stddef.h> /* For size_t. */
@@ -233,6 +232,11 @@
   uint32_t fpcr;
 };
 
+#elif defined(__riscv)
+
+// This space deliberately left blank for now.
+// No other libcs have any riscv64-specific structs.
+
 #else
 
 #error "Unsupported architecture."
@@ -240,5 +244,3 @@
 #endif
 
 __END_DECLS
-
-#endif  /* _SYS_USER_H_ */
diff --git a/mainline/runtime/sdk/android/arm/include/bionic/libc/include/syslog.h b/mainline/runtime/sdk/android/arm/include/bionic/libc/include/syslog.h
index 45de253..d89d769 100644
--- a/mainline/runtime/sdk/android/arm/include/bionic/libc/include/syslog.h
+++ b/mainline/runtime/sdk/android/arm/include/bionic/libc/include/syslog.h
@@ -133,9 +133,10 @@
 
 /**
  * [openlog(3)](http://man7.org/linux/man-pages/man3/openlog.3.html) sets
- * the log tag to `__prefix`. On Android, the other two arguments are ignored.
+ * the log tag to `__prefix`, which can be NULL to return to the default of
+ * getprogname(). On Android, the other two arguments are ignored.
  */
-void openlog(const char* __prefix, int __option, int __facility);
+void openlog(const char* _Nullable __prefix, int __option, int __facility);
 
 /**
  * [setlogmask(3)](http://man7.org/linux/man-pages/man3/setlogmask.3.html)
@@ -149,13 +150,13 @@
  * the printf()-like message and logs it with the given priority, unless
  * suppressed by setlogmask(). On Android, the output goes to logcat.
  */
-void syslog(int __priority, const char* __fmt, ...) __printflike(2, 3);
+void syslog(int __priority, const char* _Nonnull __fmt, ...) __printflike(2, 3);
 
 /**
  * [vsyslog(3)](http://man7.org/linux/man-pages/man3/vsyslog.3.html) formats
  * the vprintf()-like message and logs it with the given priority, unless
  * suppressed by setlogmask(). On Android, the output goes to logcat.
  */
-void vsyslog(int __priority, const char* __fmt, va_list __args) __printflike(2, 0);
+void vsyslog(int __priority, const char* _Nonnull __fmt, va_list __args) __printflike(2, 0);
 
 __END_DECLS
diff --git a/mainline/runtime/sdk/android/arm/include/bionic/libc/include/time.h b/mainline/runtime/sdk/android/arm/include/bionic/libc/include/time.h
index 0db14ff..4b005c6 100644
--- a/mainline/runtime/sdk/android/arm/include/bionic/libc/include/time.h
+++ b/mainline/runtime/sdk/android/arm/include/bionic/libc/include/time.h
@@ -37,7 +37,7 @@
 
 #define CLOCKS_PER_SEC 1000000
 
-extern char* tzname[];
+extern char* _Nonnull tzname[];
 extern int daylight;
 extern long int timezone;
 
@@ -54,62 +54,64 @@
   int tm_yday;
   int tm_isdst;
   long int tm_gmtoff;
-  const char* tm_zone;
+  const char* _Nullable tm_zone;
 };
 
 #define TM_ZONE tm_zone
 
-time_t time(time_t* __t);
-int nanosleep(const struct timespec* __request, struct timespec* __remainder);
+time_t time(time_t* _Nullable __t);
+int nanosleep(const struct timespec* _Nonnull __request, struct timespec* _Nullable __remainder);
 
-char* asctime(const struct tm* __tm);
-char* asctime_r(const struct tm* __tm, char* __buf);
+char* _Nullable asctime(const struct tm* _Nonnull __tm);
+char* _Nullable asctime_r(const struct tm* _Nonnull __tm, char* _Nonnull __buf);
 
 double difftime(time_t __lhs, time_t __rhs);
-time_t mktime(struct tm* __tm);
+time_t mktime(struct tm* _Nonnull __tm);
 
-struct tm* localtime(const time_t* __t);
-struct tm* localtime_r(const time_t* __t, struct tm* __tm);
+struct tm* _Nullable localtime(const time_t* _Nonnull __t);
+struct tm* _Nullable localtime_r(const time_t* _Nonnull __t, struct tm* _Nonnull __tm);
 
-struct tm* gmtime(const time_t* __t);
-struct tm* gmtime_r(const time_t* __t, struct tm* __tm);
+struct tm* _Nullable gmtime(const time_t* _Nonnull __t);
+struct tm* _Nullable gmtime_r(const time_t* _Nonnull __t, struct tm* _Nonnull __tm);
 
-char* strptime(const char* __s, const char* __fmt, struct tm* __tm) __strftimelike(2);
-char* strptime_l(const char* __s, const char* __fmt, struct tm* __tm, locale_t __l) __strftimelike(2) __INTRODUCED_IN(28);
+char* _Nullable strptime(const char* _Nonnull __s, const char* _Nonnull __fmt, struct tm* _Nonnull __tm) __strftimelike(2);
+char* _Nullable strptime_l(const char* _Nonnull __s, const char* _Nonnull __fmt, struct tm* _Nonnull __tm, locale_t _Nonnull __l) __strftimelike(2) __INTRODUCED_IN(28);
 
-size_t strftime(char* __buf, size_t __n, const char* __fmt, const struct tm* __tm) __strftimelike(3);
+size_t strftime(char* _Nonnull __buf, size_t __n, const char* _Nonnull __fmt, const struct tm* _Nullable __tm) __strftimelike(3);
 #if __ANDROID_API__ >= 21
-size_t strftime_l(char* __buf, size_t __n, const char* __fmt, const struct tm* __tm, locale_t __l) __strftimelike(3) __INTRODUCED_IN(21);
+size_t strftime_l(char* _Nonnull __buf, size_t __n, const char* _Nonnull __fmt, const struct tm* _Nullable __tm, locale_t _Nonnull __l) __strftimelike(3) __INTRODUCED_IN(21);
 #else
 // Implemented as static inline before 21.
 #endif
 
-char* ctime(const time_t* __t);
-char* ctime_r(const time_t* __t, char* __buf);
+
+char* _Nullable ctime(const time_t* _Nonnull __t);
+char* _Nullable ctime_r(const time_t* _Nonnull __t, char* _Nonnull __buf);
 
 void tzset(void);
 
 clock_t clock(void);
 
-int clock_getcpuclockid(pid_t __pid, clockid_t* __clock) __INTRODUCED_IN(23);
+int clock_getcpuclockid(pid_t __pid, clockid_t* _Nonnull __clock) __INTRODUCED_IN(23);
 
-int clock_getres(clockid_t __clock, struct timespec* __resolution);
-int clock_gettime(clockid_t __clock, struct timespec* __ts);
-int clock_nanosleep(clockid_t __clock, int __flags, const struct timespec* __request, struct timespec* __remainder);
-int clock_settime(clockid_t __clock, const struct timespec* __ts);
 
-int timer_create(clockid_t __clock, struct sigevent* __event, timer_t* __timer_ptr);
-int timer_delete(timer_t __timer);
-int timer_settime(timer_t __timer, int __flags, const struct itimerspec* __new_value, struct itimerspec* __old_value);
-int timer_gettime(timer_t __timer, struct itimerspec* __ts);
-int timer_getoverrun(timer_t __timer);
+int clock_getres(clockid_t __clock, struct timespec* _Nullable __resolution);
+int clock_gettime(clockid_t __clock, struct timespec* _Nonnull __ts);
+int clock_nanosleep(clockid_t __clock, int __flags, const struct timespec* _Nonnull __request, struct timespec* _Nullable __remainder);
+int clock_settime(clockid_t __clock, const struct timespec* _Nonnull __ts);
+
+int timer_create(clockid_t __clock, struct sigevent* _Nullable __event, timer_t _Nonnull * _Nonnull __timer_ptr);
+int timer_delete(timer_t _Nonnull __timer);
+int timer_settime(timer_t _Nonnull __timer, int __flags, const struct itimerspec* _Nonnull __new_value, struct itimerspec* _Nullable __old_value);
+int timer_gettime(timer_t _Nonnull _timer, struct itimerspec* _Nonnull __ts);
+int timer_getoverrun(timer_t _Nonnull __timer);
 
 /* Non-standard extensions that are in the BSDs and glibc. */
-time_t timelocal(struct tm* __tm);
-time_t timegm(struct tm* __tm);
+time_t timelocal(struct tm* _Nonnull __tm);
+time_t timegm(struct tm* _Nonnull __tm);
 
 #define TIME_UTC 1
-int timespec_get(struct timespec* __ts, int __base) __INTRODUCED_IN(29);
+int timespec_get(struct timespec* _Nonnull __ts, int __base) __INTRODUCED_IN(29);
 
 __END_DECLS
 
diff --git a/mainline/runtime/sdk/android/arm/include/bionic/libc/include/time64.h b/mainline/runtime/sdk/android/arm/include/bionic/libc/include/time64.h
index 905669d..7d70030 100644
--- a/mainline/runtime/sdk/android/arm/include/bionic/libc/include/time64.h
+++ b/mainline/runtime/sdk/android/arm/include/bionic/libc/include/time64.h
@@ -47,17 +47,17 @@
 
 typedef int64_t time64_t;
 
-char* asctime64(const struct tm*);
-char* asctime64_r(const struct tm*, char*);
-char* ctime64(const time64_t*);
-char* ctime64_r(const time64_t*, char*);
-struct tm* gmtime64(const time64_t*);
-struct tm* gmtime64_r(const time64_t*, struct tm*);
-struct tm* localtime64(const time64_t*);
-struct tm* localtime64_r(const time64_t*, struct tm*);
-time64_t mktime64(const struct tm*);
-time64_t timegm64(const struct tm*);
-time64_t timelocal64(const struct tm*);
+char* _Nullable asctime64(const struct tm* _Nonnull);
+char* _Nullable asctime64_r(const struct tm* _Nonnull, char* _Nonnull);
+char* _Nullable ctime64(const time64_t* _Nonnull);
+char* _Nullable ctime64_r(const time64_t* _Nonnull, char* _Nonnull);
+struct tm* _Nullable gmtime64(const time64_t* _Nonnull);
+struct tm* _Nullable gmtime64_r(const time64_t* _Nonnull, struct tm* _Nonnull);
+struct tm* _Nullable localtime64(const time64_t* _Nonnull);
+struct tm* _Nullable localtime64_r(const time64_t* _Nonnull, struct tm* _Nonnull);
+time64_t mktime64(const struct tm* _Nonnull);
+time64_t timegm64(const struct tm* _Nonnull);
+time64_t timelocal64(const struct tm* _Nonnull);
 
 __END_DECLS
 
diff --git a/mainline/runtime/sdk/android/arm/include/bionic/libc/include/unistd.h b/mainline/runtime/sdk/android/arm/include/bionic/libc/include/unistd.h
index e360421..3efc9a2 100644
--- a/mainline/runtime/sdk/android/arm/include/bionic/libc/include/unistd.h
+++ b/mainline/runtime/sdk/android/arm/include/bionic/libc/include/unistd.h
@@ -313,10 +313,37 @@
 int getdomainname(char* __buf, size_t __buf_size) __INTRODUCED_IN(26);
 int setdomainname(const char* __name, size_t __n) __INTRODUCED_IN(26);
 
+/**
+ * [copy_file_range(2)](https://man7.org/linux/man-pages/man2/copy_file_range.2.html) copies
+ * a range of data from one file descriptor to another.
+ *
+ * Available since API level 34.
+ *
+ * Returns the number of bytes copied on success, and returns -1 and sets
+ * `errno` on failure.
+ */
+ssize_t copy_file_range(int __fd_in, off64_t* __off_in, int __fd_out, off64_t* __off_out, size_t __length, unsigned int __flags) __INTRODUCED_IN(34);
+
 #if __ANDROID_API__ >= 28
 void swab(const void* __src, void* __dst, ssize_t __byte_count) __INTRODUCED_IN(28);
 #endif
 
+/**
+ * [close_range(2)](https://man7.org/linux/man-pages/man2/close_range.2.html)
+ * performs an action (which depends on value of flags) on an inclusive range
+ * of file descriptors.
+ *
+ * Available since API level 34.
+ *
+ * Note: there is no emulation on too old kernels, hence this will fail with
+ * -1/ENOSYS on pre-5.9 kernels, -1/EINVAL for unsupported flags.  In particular
+ * CLOSE_RANGE_CLOEXEC requires 5.11, though support was backported to Android
+ * Common Kernel 5.10-T.
+ *
+ * Returns 0 on success, and returns -1 and sets `errno` on failure.
+ */
+int close_range(unsigned int __min_fd, unsigned int __max_fd, int __flags) __INTRODUCED_IN(34);
+
 #if defined(__BIONIC_INCLUDE_FORTIFY_HEADERS)
 #define _UNISTD_H_
 #include <bits/fortify/unistd.h>
diff --git a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/android/scsi/scsi/scsi_proto.h b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/android/scsi/scsi/scsi_proto.h
index eea87a0..13ac4c8 100644
--- a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/android/scsi/scsi/scsi_proto.h
+++ b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/android/scsi/scsi/scsi_proto.h
@@ -183,6 +183,8 @@
   ZBC_ZONE_TYPE_CONV = 0x1,
   ZBC_ZONE_TYPE_SEQWRITE_REQ = 0x2,
   ZBC_ZONE_TYPE_SEQWRITE_PREF = 0x3,
+  ZBC_ZONE_TYPE_SEQ_OR_BEFORE_REQ = 0x4,
+  ZBC_ZONE_TYPE_GAP = 0x5,
 };
 enum zbc_zone_cond {
   ZBC_ZONE_COND_NO_WP = 0x0,
@@ -194,6 +196,10 @@
   ZBC_ZONE_COND_FULL = 0xe,
   ZBC_ZONE_COND_OFFLINE = 0xf,
 };
+enum zbc_zone_alignment_method {
+  ZBC_CONSTANT_ZONE_LENGTH = 0x1,
+  ZBC_CONSTANT_ZONE_START_OFFSET = 0x8,
+};
 enum scsi_version_descriptor {
   SCSI_VERSION_DESCRIPTOR_FCP4 = 0x0a40,
   SCSI_VERSION_DESCRIPTOR_ISCSI = 0x0960,
diff --git a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/asm-arm/asm/signal.h b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/asm-arm/asm/signal.h
index 5f7e0c5..0424380 100644
--- a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/asm-arm/asm/signal.h
+++ b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/asm-arm/asm/signal.h
@@ -78,6 +78,6 @@
 typedef struct sigaltstack {
   void __user * ss_sp;
   int ss_flags;
-  size_t ss_size;
+  __kernel_size_t ss_size;
 } stack_t;
 #endif
diff --git a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/asm-arm64/asm/hwcap.h b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/asm-arm64/asm/hwcap.h
index 4316724..af32056 100644
--- a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/asm-arm64/asm/hwcap.h
+++ b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/asm-arm64/asm/hwcap.h
@@ -72,4 +72,16 @@
 #define HWCAP2_ECV (1 << 19)
 #define HWCAP2_AFP (1 << 20)
 #define HWCAP2_RPRES (1 << 21)
+#define HWCAP2_MTE3 (1 << 22)
+#define HWCAP2_SME (1 << 23)
+#define HWCAP2_SME_I16I64 (1 << 24)
+#define HWCAP2_SME_F64F64 (1 << 25)
+#define HWCAP2_SME_I8I32 (1 << 26)
+#define HWCAP2_SME_F16F32 (1 << 27)
+#define HWCAP2_SME_B16F32 (1 << 28)
+#define HWCAP2_SME_F32F32 (1 << 29)
+#define HWCAP2_SME_FA64 (1 << 30)
+#define HWCAP2_WFXT (1UL << 31)
+#define HWCAP2_EBF16 (1UL << 32)
+#define HWCAP2_SVE_EBF16 (1UL << 33)
 #endif
diff --git a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/asm-arm64/asm/kvm.h b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/asm-arm64/asm/kvm.h
index c53ee87..4f9b347 100644
--- a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/asm-arm64/asm/kvm.h
+++ b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/asm-arm64/asm/kvm.h
@@ -51,9 +51,9 @@
 #define KVM_ARM_TARGET_GENERIC_V8 5
 #define KVM_ARM_NUM_TARGETS 6
 #define KVM_ARM_DEVICE_TYPE_SHIFT 0
-#define KVM_ARM_DEVICE_TYPE_MASK (0xffff << KVM_ARM_DEVICE_TYPE_SHIFT)
+#define KVM_ARM_DEVICE_TYPE_MASK GENMASK(KVM_ARM_DEVICE_TYPE_SHIFT + 15, KVM_ARM_DEVICE_TYPE_SHIFT)
 #define KVM_ARM_DEVICE_ID_SHIFT 16
-#define KVM_ARM_DEVICE_ID_MASK (0xffff << KVM_ARM_DEVICE_ID_SHIFT)
+#define KVM_ARM_DEVICE_ID_MASK GENMASK(KVM_ARM_DEVICE_ID_SHIFT + 15, KVM_ARM_DEVICE_ID_SHIFT)
 #define KVM_ARM_DEVICE_VGIC_V2 0
 #define KVM_VGIC_V2_ADDR_TYPE_DIST 0
 #define KVM_VGIC_V2_ADDR_TYPE_CPU 1
@@ -88,8 +88,10 @@
   __u64 dbg_wcr[KVM_ARM_MAX_DBG_REGS];
   __u64 dbg_wvr[KVM_ARM_MAX_DBG_REGS];
 };
+#define KVM_DEBUG_ARCH_HSR_HIGH_VALID (1 << 0)
 struct kvm_debug_exit_arch {
   __u32 hsr;
+  __u32 hsr_high;
   __u64 far;
 };
 #define KVM_GUESTDBG_USE_SW_BP (1 << 16)
@@ -185,6 +187,21 @@
 #define KVM_ARM64_SVE_VQ_MAX __SVE_VQ_MAX
 #define KVM_REG_ARM64_SVE_VLS (KVM_REG_ARM64 | KVM_REG_ARM64_SVE | KVM_REG_SIZE_U512 | 0xffff)
 #define KVM_ARM64_SVE_VLS_WORDS ((KVM_ARM64_SVE_VQ_MAX - KVM_ARM64_SVE_VQ_MIN) / 64 + 1)
+#define KVM_REG_ARM_FW_FEAT_BMAP (0x0016 << KVM_REG_ARM_COPROC_SHIFT)
+#define KVM_REG_ARM_FW_FEAT_BMAP_REG(r) (KVM_REG_ARM64 | KVM_REG_SIZE_U64 | KVM_REG_ARM_FW_FEAT_BMAP | ((r) & 0xffff))
+#define KVM_REG_ARM_STD_BMAP KVM_REG_ARM_FW_FEAT_BMAP_REG(0)
+enum {
+  KVM_REG_ARM_STD_BIT_TRNG_V1_0 = 0,
+};
+#define KVM_REG_ARM_STD_HYP_BMAP KVM_REG_ARM_FW_FEAT_BMAP_REG(1)
+enum {
+  KVM_REG_ARM_STD_HYP_BIT_PV_TIME = 0,
+};
+#define KVM_REG_ARM_VENDOR_HYP_BMAP KVM_REG_ARM_FW_FEAT_BMAP_REG(2)
+enum {
+  KVM_REG_ARM_VENDOR_HYP_BIT_FUNC_FEAT = 0,
+  KVM_REG_ARM_VENDOR_HYP_BIT_PTP = 1,
+};
 #define KVM_DEV_ARM_VGIC_GRP_ADDR 0
 #define KVM_DEV_ARM_VGIC_GRP_DIST_REGS 1
 #define KVM_DEV_ARM_VGIC_GRP_CPU_REGS 2
@@ -214,6 +231,7 @@
 #define KVM_ARM_VCPU_PMU_V3_IRQ 0
 #define KVM_ARM_VCPU_PMU_V3_INIT 1
 #define KVM_ARM_VCPU_PMU_V3_FILTER 2
+#define KVM_ARM_VCPU_PMU_V3_SET_PMU 3
 #define KVM_ARM_VCPU_TIMER_CTRL 1
 #define KVM_ARM_VCPU_TIMER_IRQ_VTIMER 0
 #define KVM_ARM_VCPU_TIMER_IRQ_PTIMER 1
@@ -244,5 +262,7 @@
 #define KVM_PSCI_RET_NI PSCI_RET_NOT_SUPPORTED
 #define KVM_PSCI_RET_INVAL PSCI_RET_INVALID_PARAMS
 #define KVM_PSCI_RET_DENIED PSCI_RET_DENIED
+#define KVM_SYSTEM_EVENT_RESET_FLAG_PSCI_RESET2 (1ULL << 0)
+#define KVM_EXIT_FAIL_ENTRY_CPU_UNSUPPORTED (1ULL << 0)
 #endif
 #endif
diff --git a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/asm-arm64/asm/perf_regs.h b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/asm-arm64/asm/perf_regs.h
index 71d496f..e18fd05 100644
--- a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/asm-arm64/asm/perf_regs.h
+++ b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/asm-arm64/asm/perf_regs.h
@@ -53,5 +53,8 @@
   PERF_REG_ARM64_SP,
   PERF_REG_ARM64_PC,
   PERF_REG_ARM64_MAX,
+  PERF_REG_ARM64_VG = 46,
+  PERF_REG_ARM64_EXTENDED_MAX
 };
+#define PERF_REG_EXTENDED_MASK (1ULL << PERF_REG_ARM64_VG)
 #endif
diff --git a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/asm-arm64/asm/ptrace.h b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/asm-arm64/asm/ptrace.h
index 480efcf..9540c3e 100644
--- a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/asm-arm64/asm/ptrace.h
+++ b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/asm-arm64/asm/ptrace.h
@@ -111,7 +111,7 @@
 #define SVE_PT_SVE_FPSR_OFFSET(vq) ((SVE_PT_SVE_FFR_OFFSET(vq) + SVE_PT_SVE_FFR_SIZE(vq) + (__SVE_VQ_BYTES - 1)) / __SVE_VQ_BYTES * __SVE_VQ_BYTES)
 #define SVE_PT_SVE_FPCR_OFFSET(vq) (SVE_PT_SVE_FPSR_OFFSET(vq) + SVE_PT_SVE_FPSR_SIZE)
 #define SVE_PT_SVE_SIZE(vq,flags) ((SVE_PT_SVE_FPCR_OFFSET(vq) + SVE_PT_SVE_FPCR_SIZE - SVE_PT_SVE_OFFSET + (__SVE_VQ_BYTES - 1)) / __SVE_VQ_BYTES * __SVE_VQ_BYTES)
-#define SVE_PT_SIZE(vq,flags) (((flags) & SVE_PT_REGS_MASK) == SVE_PT_REGS_SVE ? SVE_PT_SVE_OFFSET + SVE_PT_SVE_SIZE(vq, flags) : SVE_PT_FPSIMD_OFFSET + SVE_PT_FPSIMD_SIZE(vq, flags))
+#define SVE_PT_SIZE(vq,flags) (((flags) & SVE_PT_REGS_MASK) == SVE_PT_REGS_SVE ? SVE_PT_SVE_OFFSET + SVE_PT_SVE_SIZE(vq, flags) : ((((flags) & SVE_PT_REGS_MASK) == SVE_PT_REGS_FPSIMD ? SVE_PT_FPSIMD_OFFSET + SVE_PT_FPSIMD_SIZE(vq, flags) : SVE_PT_REGS_OFFSET)))
 struct user_pac_mask {
   __u64 data_mask;
   __u64 insn_mask;
@@ -125,5 +125,19 @@
 struct user_pac_generic_keys {
   __uint128_t apgakey;
 };
+struct user_za_header {
+  __u32 size;
+  __u32 max_size;
+  __u16 vl;
+  __u16 max_vl;
+  __u16 flags;
+  __u16 __reserved;
+};
+#define ZA_PT_VL_INHERIT ((1 << 17) >> 16)
+#define ZA_PT_VL_ONEXEC ((1 << 18) >> 16)
+#define ZA_PT_ZA_OFFSET ((sizeof(struct user_za_header) + (__SVE_VQ_BYTES - 1)) / __SVE_VQ_BYTES * __SVE_VQ_BYTES)
+#define ZA_PT_ZAV_OFFSET(vq,n) (ZA_PT_ZA_OFFSET + ((vq * __SVE_VQ_BYTES) * n))
+#define ZA_PT_ZA_SIZE(vq) ((vq * __SVE_VQ_BYTES) * (vq * __SVE_VQ_BYTES))
+#define ZA_PT_SIZE(vq) (ZA_PT_ZA_OFFSET + ZA_PT_ZA_SIZE(vq))
 #endif
 #endif
diff --git a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/asm-arm64/asm/sigcontext.h b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/asm-arm64/asm/sigcontext.h
index 518079d..04aa593 100644
--- a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/asm-arm64/asm/sigcontext.h
+++ b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/asm-arm64/asm/sigcontext.h
@@ -55,6 +55,14 @@
 struct sve_context {
   struct _aarch64_ctx head;
   __u16 vl;
+  __u16 flags;
+  __u16 __reserved[2];
+};
+#define SVE_SIG_FLAG_SM 0x1
+#define ZA_MAGIC 0x54366345
+struct za_context {
+  struct _aarch64_ctx head;
+  __u16 vl;
   __u16 __reserved[3];
 };
 #endif
@@ -82,4 +90,8 @@
 #define SVE_SIG_FFR_OFFSET(vq) (SVE_SIG_REGS_OFFSET + __SVE_FFR_OFFSET(vq))
 #define SVE_SIG_REGS_SIZE(vq) (__SVE_FFR_OFFSET(vq) + __SVE_FFR_SIZE(vq))
 #define SVE_SIG_CONTEXT_SIZE(vq) (SVE_SIG_REGS_OFFSET + SVE_SIG_REGS_SIZE(vq))
+#define ZA_SIG_REGS_OFFSET ((sizeof(struct za_context) + (__SVE_VQ_BYTES - 1)) / __SVE_VQ_BYTES * __SVE_VQ_BYTES)
+#define ZA_SIG_REGS_SIZE(vq) ((vq * __SVE_VQ_BYTES) * (vq * __SVE_VQ_BYTES))
+#define ZA_SIG_ZAV_OFFSET(vq,n) (ZA_SIG_REGS_OFFSET + (SVE_SIG_ZREG_SIZE(vq) * n))
+#define ZA_SIG_CONTEXT_SIZE(vq) (ZA_SIG_REGS_OFFSET + ZA_SIG_REGS_SIZE(vq))
 #endif
diff --git a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/asm-generic/fcntl.h b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/asm-generic/fcntl.h
index a2cb5f4..ea8c108 100644
--- a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/asm-generic/fcntl.h
+++ b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/asm-generic/fcntl.h
@@ -100,7 +100,7 @@
 #define F_SETSIG 10
 #define F_GETSIG 11
 #endif
-#ifndef __LP64__
+#if __BITS_PER_LONG == 32
 #ifndef F_GETLK64
 #define F_GETLK64 12
 #define F_SETLK64 13
@@ -144,13 +144,5 @@
 #define LOCK_RW 192
 #define F_LINUX_SPECIFIC_BASE 1024
 #ifndef HAVE_ARCH_STRUCT_FLOCK
-#ifndef __ARCH_FLOCK_PAD
-#define __ARCH_FLOCK_PAD
-#endif
-#endif
-#ifndef HAVE_ARCH_STRUCT_FLOCK64
-#ifndef __ARCH_FLOCK64_PAD
-#define __ARCH_FLOCK64_PAD
-#endif
 #endif
 #endif
diff --git a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/asm-generic/hugetlb_encode.h b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/asm-generic/hugetlb_encode.h
index 73d8180..059991c 100644
--- a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/asm-generic/hugetlb_encode.h
+++ b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/asm-generic/hugetlb_encode.h
@@ -20,17 +20,17 @@
 #define _ASM_GENERIC_HUGETLB_ENCODE_H_
 #define HUGETLB_FLAG_ENCODE_SHIFT 26
 #define HUGETLB_FLAG_ENCODE_MASK 0x3f
-#define HUGETLB_FLAG_ENCODE_16KB (14 << HUGETLB_FLAG_ENCODE_SHIFT)
-#define HUGETLB_FLAG_ENCODE_64KB (16 << HUGETLB_FLAG_ENCODE_SHIFT)
-#define HUGETLB_FLAG_ENCODE_512KB (19 << HUGETLB_FLAG_ENCODE_SHIFT)
-#define HUGETLB_FLAG_ENCODE_1MB (20 << HUGETLB_FLAG_ENCODE_SHIFT)
-#define HUGETLB_FLAG_ENCODE_2MB (21 << HUGETLB_FLAG_ENCODE_SHIFT)
-#define HUGETLB_FLAG_ENCODE_8MB (23 << HUGETLB_FLAG_ENCODE_SHIFT)
-#define HUGETLB_FLAG_ENCODE_16MB (24 << HUGETLB_FLAG_ENCODE_SHIFT)
-#define HUGETLB_FLAG_ENCODE_32MB (25 << HUGETLB_FLAG_ENCODE_SHIFT)
-#define HUGETLB_FLAG_ENCODE_256MB (28 << HUGETLB_FLAG_ENCODE_SHIFT)
-#define HUGETLB_FLAG_ENCODE_512MB (29 << HUGETLB_FLAG_ENCODE_SHIFT)
-#define HUGETLB_FLAG_ENCODE_1GB (30 << HUGETLB_FLAG_ENCODE_SHIFT)
-#define HUGETLB_FLAG_ENCODE_2GB (31 << HUGETLB_FLAG_ENCODE_SHIFT)
-#define HUGETLB_FLAG_ENCODE_16GB (34 << HUGETLB_FLAG_ENCODE_SHIFT)
+#define HUGETLB_FLAG_ENCODE_16KB (14U << HUGETLB_FLAG_ENCODE_SHIFT)
+#define HUGETLB_FLAG_ENCODE_64KB (16U << HUGETLB_FLAG_ENCODE_SHIFT)
+#define HUGETLB_FLAG_ENCODE_512KB (19U << HUGETLB_FLAG_ENCODE_SHIFT)
+#define HUGETLB_FLAG_ENCODE_1MB (20U << HUGETLB_FLAG_ENCODE_SHIFT)
+#define HUGETLB_FLAG_ENCODE_2MB (21U << HUGETLB_FLAG_ENCODE_SHIFT)
+#define HUGETLB_FLAG_ENCODE_8MB (23U << HUGETLB_FLAG_ENCODE_SHIFT)
+#define HUGETLB_FLAG_ENCODE_16MB (24U << HUGETLB_FLAG_ENCODE_SHIFT)
+#define HUGETLB_FLAG_ENCODE_32MB (25U << HUGETLB_FLAG_ENCODE_SHIFT)
+#define HUGETLB_FLAG_ENCODE_256MB (28U << HUGETLB_FLAG_ENCODE_SHIFT)
+#define HUGETLB_FLAG_ENCODE_512MB (29U << HUGETLB_FLAG_ENCODE_SHIFT)
+#define HUGETLB_FLAG_ENCODE_1GB (30U << HUGETLB_FLAG_ENCODE_SHIFT)
+#define HUGETLB_FLAG_ENCODE_2GB (31U << HUGETLB_FLAG_ENCODE_SHIFT)
+#define HUGETLB_FLAG_ENCODE_16GB (34U << HUGETLB_FLAG_ENCODE_SHIFT)
 #endif
diff --git a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/asm-generic/mman-common.h b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/asm-generic/mman-common.h
index 9440576..966d05b 100644
--- a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/asm-generic/mman-common.h
+++ b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/asm-generic/mman-common.h
@@ -62,6 +62,8 @@
 #define MADV_PAGEOUT 21
 #define MADV_POPULATE_READ 22
 #define MADV_POPULATE_WRITE 23
+#define MADV_DONTNEED_LOCKED 24
+#define MADV_COLLAPSE 25
 #define MAP_FILE 0
 #define PKEY_DISABLE_ACCESS 0x1
 #define PKEY_DISABLE_WRITE 0x2
diff --git a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/asm-generic/shmbuf.h b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/asm-generic/shmbuf.h
index 067ffbc..11487f4 100644
--- a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/asm-generic/shmbuf.h
+++ b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/asm-generic/shmbuf.h
@@ -19,9 +19,11 @@
 #ifndef __ASM_GENERIC_SHMBUF_H
 #define __ASM_GENERIC_SHMBUF_H
 #include <asm/bitsperlong.h>
+#include <asm/ipcbuf.h>
+#include <asm/posix_types.h>
 struct shmid64_ds {
   struct ipc64_perm shm_perm;
-  size_t shm_segsz;
+  __kernel_size_t shm_segsz;
 #if __BITS_PER_LONG == 64
   long shm_atime;
   long shm_dtime;
diff --git a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/asm-generic/siginfo.h b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/asm-generic/siginfo.h
index f9199e5..c5e4178 100644
--- a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/asm-generic/siginfo.h
+++ b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/asm-generic/siginfo.h
@@ -80,6 +80,7 @@
       struct {
         unsigned long _data;
         __u32 _type;
+        __u32 _flags;
       } _perf;
     };
   } _sigfault;
@@ -125,6 +126,7 @@
 #define si_pkey _sifields._sigfault._addr_pkey._pkey
 #define si_perf_data _sifields._sigfault._perf._data
 #define si_perf_type _sifields._sigfault._perf._type
+#define si_perf_flags _sifields._sigfault._perf._flags
 #define si_band _sifields._sigpoll._band
 #define si_fd _sifields._sigpoll._fd
 #define si_call_addr _sifields._sigsys._call_addr
@@ -197,6 +199,7 @@
 #define TRAP_UNK 5
 #define TRAP_PERF 6
 #define NSIGTRAP 6
+#define TRAP_PERF_FLAG_ASYNC (1u << 0)
 #define CLD_EXITED 1
 #define CLD_KILLED 2
 #define CLD_DUMPED 3
diff --git a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/asm-generic/signal.h b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/asm-generic/signal.h
index 874fece..5cb1dce 100644
--- a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/asm-generic/signal.h
+++ b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/asm-generic/signal.h
@@ -84,7 +84,7 @@
 typedef struct sigaltstack {
   void __user * ss_sp;
   int ss_flags;
-  size_t ss_size;
+  __kernel_size_t ss_size;
 } stack_t;
 #endif
 #endif
diff --git a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/asm-generic/socket.h b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/asm-generic/socket.h
index 6767993..1a321bf 100644
--- a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/asm-generic/socket.h
+++ b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/asm-generic/socket.h
@@ -100,6 +100,8 @@
 #define SO_NETNS_COOKIE 71
 #define SO_BUF_LOCK 72
 #define SO_RESERVE_MEM 73
+#define SO_TXREHASH 74
+#define SO_RCVMARK 75
 #if __BITS_PER_LONG == 64 || defined(__x86_64__) && defined(__ILP32__)
 #define SO_TIMESTAMP SO_TIMESTAMP_OLD
 #define SO_TIMESTAMPNS SO_TIMESTAMPNS_OLD
diff --git a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/asm-generic/termbits-common.h b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/asm-generic/termbits-common.h
new file mode 100644
index 0000000..281eee8
--- /dev/null
+++ b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/asm-generic/termbits-common.h
@@ -0,0 +1,68 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef __ASM_GENERIC_TERMBITS_COMMON_H
+#define __ASM_GENERIC_TERMBITS_COMMON_H
+typedef unsigned char cc_t;
+typedef unsigned int speed_t;
+#define IGNBRK 0x001
+#define BRKINT 0x002
+#define IGNPAR 0x004
+#define PARMRK 0x008
+#define INPCK 0x010
+#define ISTRIP 0x020
+#define INLCR 0x040
+#define IGNCR 0x080
+#define ICRNL 0x100
+#define IXANY 0x800
+#define OPOST 0x01
+#define OCRNL 0x08
+#define ONOCR 0x10
+#define ONLRET 0x20
+#define OFILL 0x40
+#define OFDEL 0x80
+#define B0 0x00000000
+#define B50 0x00000001
+#define B75 0x00000002
+#define B110 0x00000003
+#define B134 0x00000004
+#define B150 0x00000005
+#define B200 0x00000006
+#define B300 0x00000007
+#define B600 0x00000008
+#define B1200 0x00000009
+#define B1800 0x0000000a
+#define B2400 0x0000000b
+#define B4800 0x0000000c
+#define B9600 0x0000000d
+#define B19200 0x0000000e
+#define B38400 0x0000000f
+#define EXTA B19200
+#define EXTB B38400
+#define ADDRB 0x20000000
+#define CMSPAR 0x40000000
+#define CRTSCTS 0x80000000
+#define IBSHIFT 16
+#define TCOOFF 0
+#define TCOON 1
+#define TCIOFF 2
+#define TCION 3
+#define TCIFLUSH 0
+#define TCOFLUSH 1
+#define TCIOFLUSH 2
+#endif
diff --git a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/asm-generic/termbits.h b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/asm-generic/termbits.h
index b592964..87d6c82 100644
--- a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/asm-generic/termbits.h
+++ b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/asm-generic/termbits.h
@@ -18,9 +18,7 @@
  ****************************************************************************/
 #ifndef __ASM_GENERIC_TERMBITS_H
 #define __ASM_GENERIC_TERMBITS_H
-#include <linux/posix_types.h>
-typedef unsigned char cc_t;
-typedef unsigned int speed_t;
+#include <asm-generic/termbits-common.h>
 typedef unsigned int tcflag_t;
 #define NCCS 19
 struct termios {
@@ -68,126 +66,82 @@
 #define VWERASE 14
 #define VLNEXT 15
 #define VEOL2 16
-#define IGNBRK 0000001
-#define BRKINT 0000002
-#define IGNPAR 0000004
-#define PARMRK 0000010
-#define INPCK 0000020
-#define ISTRIP 0000040
-#define INLCR 0000100
-#define IGNCR 0000200
-#define ICRNL 0000400
-#define IUCLC 0001000
-#define IXON 0002000
-#define IXANY 0004000
-#define IXOFF 0010000
-#define IMAXBEL 0020000
-#define IUTF8 0040000
-#define OPOST 0000001
-#define OLCUC 0000002
-#define ONLCR 0000004
-#define OCRNL 0000010
-#define ONOCR 0000020
-#define ONLRET 0000040
-#define OFILL 0000100
-#define OFDEL 0000200
-#define NLDLY 0000400
-#define NL0 0000000
-#define NL1 0000400
-#define CRDLY 0003000
-#define CR0 0000000
-#define CR1 0001000
-#define CR2 0002000
-#define CR3 0003000
-#define TABDLY 0014000
-#define TAB0 0000000
-#define TAB1 0004000
-#define TAB2 0010000
-#define TAB3 0014000
-#define XTABS 0014000
-#define BSDLY 0020000
-#define BS0 0000000
-#define BS1 0020000
-#define VTDLY 0040000
-#define VT0 0000000
-#define VT1 0040000
-#define FFDLY 0100000
-#define FF0 0000000
-#define FF1 0100000
-#define CBAUD 0010017
-#define B0 0000000
-#define B50 0000001
-#define B75 0000002
-#define B110 0000003
-#define B134 0000004
-#define B150 0000005
-#define B200 0000006
-#define B300 0000007
-#define B600 0000010
-#define B1200 0000011
-#define B1800 0000012
-#define B2400 0000013
-#define B4800 0000014
-#define B9600 0000015
-#define B19200 0000016
-#define B38400 0000017
-#define EXTA B19200
-#define EXTB B38400
-#define CSIZE 0000060
-#define CS5 0000000
-#define CS6 0000020
-#define CS7 0000040
-#define CS8 0000060
-#define CSTOPB 0000100
-#define CREAD 0000200
-#define PARENB 0000400
-#define PARODD 0001000
-#define HUPCL 0002000
-#define CLOCAL 0004000
-#define CBAUDEX 0010000
-#define BOTHER 0010000
-#define B57600 0010001
-#define B115200 0010002
-#define B230400 0010003
-#define B460800 0010004
-#define B500000 0010005
-#define B576000 0010006
-#define B921600 0010007
-#define B1000000 0010010
-#define B1152000 0010011
-#define B1500000 0010012
-#define B2000000 0010013
-#define B2500000 0010014
-#define B3000000 0010015
-#define B3500000 0010016
-#define B4000000 0010017
-#define CIBAUD 002003600000
-#define CMSPAR 010000000000
-#define CRTSCTS 020000000000
-#define IBSHIFT 16
-#define ISIG 0000001
-#define ICANON 0000002
-#define XCASE 0000004
-#define ECHO 0000010
-#define ECHOE 0000020
-#define ECHOK 0000040
-#define ECHONL 0000100
-#define NOFLSH 0000200
-#define TOSTOP 0000400
-#define ECHOCTL 0001000
-#define ECHOPRT 0002000
-#define ECHOKE 0004000
-#define FLUSHO 0010000
-#define PENDIN 0040000
-#define IEXTEN 0100000
-#define EXTPROC 0200000
-#define TCOOFF 0
-#define TCOON 1
-#define TCIOFF 2
-#define TCION 3
-#define TCIFLUSH 0
-#define TCOFLUSH 1
-#define TCIOFLUSH 2
+#define IUCLC 0x0200
+#define IXON 0x0400
+#define IXOFF 0x1000
+#define IMAXBEL 0x2000
+#define IUTF8 0x4000
+#define OLCUC 0x00002
+#define ONLCR 0x00004
+#define NLDLY 0x00100
+#define NL0 0x00000
+#define NL1 0x00100
+#define CRDLY 0x00600
+#define CR0 0x00000
+#define CR1 0x00200
+#define CR2 0x00400
+#define CR3 0x00600
+#define TABDLY 0x01800
+#define TAB0 0x00000
+#define TAB1 0x00800
+#define TAB2 0x01000
+#define TAB3 0x01800
+#define XTABS 0x01800
+#define BSDLY 0x02000
+#define BS0 0x00000
+#define BS1 0x02000
+#define VTDLY 0x04000
+#define VT0 0x00000
+#define VT1 0x04000
+#define FFDLY 0x08000
+#define FF0 0x00000
+#define FF1 0x08000
+#define CBAUD 0x0000100f
+#define CSIZE 0x00000030
+#define CS5 0x00000000
+#define CS6 0x00000010
+#define CS7 0x00000020
+#define CS8 0x00000030
+#define CSTOPB 0x00000040
+#define CREAD 0x00000080
+#define PARENB 0x00000100
+#define PARODD 0x00000200
+#define HUPCL 0x00000400
+#define CLOCAL 0x00000800
+#define CBAUDEX 0x00001000
+#define BOTHER 0x00001000
+#define B57600 0x00001001
+#define B115200 0x00001002
+#define B230400 0x00001003
+#define B460800 0x00001004
+#define B500000 0x00001005
+#define B576000 0x00001006
+#define B921600 0x00001007
+#define B1000000 0x00001008
+#define B1152000 0x00001009
+#define B1500000 0x0000100a
+#define B2000000 0x0000100b
+#define B2500000 0x0000100c
+#define B3000000 0x0000100d
+#define B3500000 0x0000100e
+#define B4000000 0x0000100f
+#define CIBAUD 0x100f0000
+#define ISIG 0x00001
+#define ICANON 0x00002
+#define XCASE 0x00004
+#define ECHO 0x00008
+#define ECHOE 0x00010
+#define ECHOK 0x00020
+#define ECHONL 0x00040
+#define NOFLSH 0x00080
+#define TOSTOP 0x00100
+#define ECHOCTL 0x00200
+#define ECHOPRT 0x00400
+#define ECHOKE 0x00800
+#define FLUSHO 0x01000
+#define PENDIN 0x04000
+#define IEXTEN 0x08000
+#define EXTPROC 0x10000
 #define TCSANOW 0
 #define TCSADRAIN 1
 #define TCSAFLUSH 2
diff --git a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/asm-generic/unistd.h b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/asm-generic/unistd.h
index 4b9f174..d23958b 100644
--- a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/asm-generic/unistd.h
+++ b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/asm-generic/unistd.h
@@ -360,7 +360,7 @@
 #endif
 #define __NR_rseq 293
 #define __NR_kexec_file_load 294
-#if __BITS_PER_LONG == 32
+#if defined(__SYSCALL_COMPAT) || __BITS_PER_LONG == 32
 #define __NR_clock_gettime64 403
 #define __NR_clock_settime64 404
 #define __NR_clock_adjtime64 405
diff --git a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/asm-riscv/asm/auxvec.h b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/asm-riscv/asm/auxvec.h
new file mode 100644
index 0000000..c70be17
--- /dev/null
+++ b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/asm-riscv/asm/auxvec.h
@@ -0,0 +1,31 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPI_ASM_RISCV_AUXVEC_H
+#define _UAPI_ASM_RISCV_AUXVEC_H
+#define AT_SYSINFO_EHDR 33
+#define AT_L1I_CACHESIZE 40
+#define AT_L1I_CACHEGEOMETRY 41
+#define AT_L1D_CACHESIZE 42
+#define AT_L1D_CACHEGEOMETRY 43
+#define AT_L2_CACHESIZE 44
+#define AT_L2_CACHEGEOMETRY 45
+#define AT_L3_CACHESIZE 46
+#define AT_L3_CACHEGEOMETRY 47
+#define AT_VECTOR_SIZE_ARCH 9
+#endif
diff --git a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/asm-riscv/asm/bitsperlong.h b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/asm-riscv/asm/bitsperlong.h
new file mode 100644
index 0000000..098b610
--- /dev/null
+++ b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/asm-riscv/asm/bitsperlong.h
@@ -0,0 +1,23 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPI_ASM_RISCV_BITSPERLONG_H
+#define _UAPI_ASM_RISCV_BITSPERLONG_H
+#define __BITS_PER_LONG (__SIZEOF_POINTER__ * 8)
+#include <asm-generic/bitsperlong.h>
+#endif
diff --git a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/asm-riscv/asm/bpf_perf_event.h b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/asm-riscv/asm/bpf_perf_event.h
new file mode 100644
index 0000000..47c09fd
--- /dev/null
+++ b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/asm-riscv/asm/bpf_perf_event.h
@@ -0,0 +1,23 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPI__ASM_BPF_PERF_EVENT_H__
+#define _UAPI__ASM_BPF_PERF_EVENT_H__
+#include <asm/ptrace.h>
+typedef struct user_regs_struct bpf_user_pt_regs_t;
+#endif
diff --git a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/asm-riscv/asm/byteorder.h b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/asm-riscv/asm/byteorder.h
new file mode 100644
index 0000000..42afc14
--- /dev/null
+++ b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/asm-riscv/asm/byteorder.h
@@ -0,0 +1,22 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPI_ASM_RISCV_BYTEORDER_H
+#define _UAPI_ASM_RISCV_BYTEORDER_H
+#include <linux/byteorder/little_endian.h>
+#endif
diff --git a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/asm-riscv/asm/elf.h b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/asm-riscv/asm/elf.h
new file mode 100644
index 0000000..07593d9
--- /dev/null
+++ b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/asm-riscv/asm/elf.h
@@ -0,0 +1,89 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPI_ASM_RISCV_ELF_H
+#define _UAPI_ASM_RISCV_ELF_H
+#include <asm/ptrace.h>
+typedef unsigned long elf_greg_t;
+typedef struct user_regs_struct elf_gregset_t;
+#define ELF_NGREG (sizeof(elf_gregset_t) / sizeof(elf_greg_t))
+typedef __u64 elf_fpreg_t;
+typedef union __riscv_fp_state elf_fpregset_t;
+#define ELF_NFPREG (sizeof(struct __riscv_d_ext_state) / sizeof(elf_fpreg_t))
+#if __riscv_xlen == 64
+#define ELF_RISCV_R_SYM(r_info) ELF64_R_SYM(r_info)
+#define ELF_RISCV_R_TYPE(r_info) ELF64_R_TYPE(r_info)
+#else
+#define ELF_RISCV_R_SYM(r_info) ELF32_R_SYM(r_info)
+#define ELF_RISCV_R_TYPE(r_info) ELF32_R_TYPE(r_info)
+#endif
+#define R_RISCV_NONE 0
+#define R_RISCV_32 1
+#define R_RISCV_64 2
+#define R_RISCV_RELATIVE 3
+#define R_RISCV_COPY 4
+#define R_RISCV_JUMP_SLOT 5
+#define R_RISCV_TLS_DTPMOD32 6
+#define R_RISCV_TLS_DTPMOD64 7
+#define R_RISCV_TLS_DTPREL32 8
+#define R_RISCV_TLS_DTPREL64 9
+#define R_RISCV_TLS_TPREL32 10
+#define R_RISCV_TLS_TPREL64 11
+#define R_RISCV_BRANCH 16
+#define R_RISCV_JAL 17
+#define R_RISCV_CALL 18
+#define R_RISCV_CALL_PLT 19
+#define R_RISCV_GOT_HI20 20
+#define R_RISCV_TLS_GOT_HI20 21
+#define R_RISCV_TLS_GD_HI20 22
+#define R_RISCV_PCREL_HI20 23
+#define R_RISCV_PCREL_LO12_I 24
+#define R_RISCV_PCREL_LO12_S 25
+#define R_RISCV_HI20 26
+#define R_RISCV_LO12_I 27
+#define R_RISCV_LO12_S 28
+#define R_RISCV_TPREL_HI20 29
+#define R_RISCV_TPREL_LO12_I 30
+#define R_RISCV_TPREL_LO12_S 31
+#define R_RISCV_TPREL_ADD 32
+#define R_RISCV_ADD8 33
+#define R_RISCV_ADD16 34
+#define R_RISCV_ADD32 35
+#define R_RISCV_ADD64 36
+#define R_RISCV_SUB8 37
+#define R_RISCV_SUB16 38
+#define R_RISCV_SUB32 39
+#define R_RISCV_SUB64 40
+#define R_RISCV_GNU_VTINHERIT 41
+#define R_RISCV_GNU_VTENTRY 42
+#define R_RISCV_ALIGN 43
+#define R_RISCV_RVC_BRANCH 44
+#define R_RISCV_RVC_JUMP 45
+#define R_RISCV_LUI 46
+#define R_RISCV_GPREL_I 47
+#define R_RISCV_GPREL_S 48
+#define R_RISCV_TPREL_I 49
+#define R_RISCV_TPREL_S 50
+#define R_RISCV_RELAX 51
+#define R_RISCV_SUB6 52
+#define R_RISCV_SET6 53
+#define R_RISCV_SET8 54
+#define R_RISCV_SET16 55
+#define R_RISCV_SET32 56
+#define R_RISCV_32_PCREL 57
+#endif
diff --git a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/asm-riscv/asm/errno.h b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/asm-riscv/asm/errno.h
new file mode 100644
index 0000000..392cd94
--- /dev/null
+++ b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/asm-riscv/asm/errno.h
@@ -0,0 +1,19 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#include <asm-generic/errno.h>
diff --git a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/asm-riscv/asm/fcntl.h b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/asm-riscv/asm/fcntl.h
new file mode 100644
index 0000000..518d3a7
--- /dev/null
+++ b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/asm-riscv/asm/fcntl.h
@@ -0,0 +1,19 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#include <asm-generic/fcntl.h>
diff --git a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/asm-riscv/asm/hwcap.h b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/asm-riscv/asm/hwcap.h
new file mode 100644
index 0000000..d130cf7
--- /dev/null
+++ b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/asm-riscv/asm/hwcap.h
@@ -0,0 +1,27 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPI_ASM_RISCV_HWCAP_H
+#define _UAPI_ASM_RISCV_HWCAP_H
+#define COMPAT_HWCAP_ISA_I (1 << ('I' - 'A'))
+#define COMPAT_HWCAP_ISA_M (1 << ('M' - 'A'))
+#define COMPAT_HWCAP_ISA_A (1 << ('A' - 'A'))
+#define COMPAT_HWCAP_ISA_F (1 << ('F' - 'A'))
+#define COMPAT_HWCAP_ISA_D (1 << ('D' - 'A'))
+#define COMPAT_HWCAP_ISA_C (1 << ('C' - 'A'))
+#endif
diff --git a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/asm-riscv/asm/ioctl.h b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/asm-riscv/asm/ioctl.h
new file mode 100644
index 0000000..7b7bd37
--- /dev/null
+++ b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/asm-riscv/asm/ioctl.h
@@ -0,0 +1,19 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#include <asm-generic/ioctl.h>
diff --git a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/asm-riscv/asm/ioctls.h b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/asm-riscv/asm/ioctls.h
new file mode 100644
index 0000000..0c66935
--- /dev/null
+++ b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/asm-riscv/asm/ioctls.h
@@ -0,0 +1,19 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#include <asm-generic/ioctls.h>
diff --git a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/asm-riscv/asm/ipcbuf.h b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/asm-riscv/asm/ipcbuf.h
new file mode 100644
index 0000000..0021f14
--- /dev/null
+++ b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/asm-riscv/asm/ipcbuf.h
@@ -0,0 +1,19 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#include <asm-generic/ipcbuf.h>
diff --git a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/asm-riscv/asm/kvm.h b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/asm-riscv/asm/kvm.h
new file mode 100644
index 0000000..5dc165b
--- /dev/null
+++ b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/asm-riscv/asm/kvm.h
@@ -0,0 +1,102 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef __LINUX_KVM_RISCV_H
+#define __LINUX_KVM_RISCV_H
+#ifndef __ASSEMBLY__
+#include <linux/types.h>
+#include <asm/ptrace.h>
+#define __KVM_HAVE_READONLY_MEM
+#define KVM_COALESCED_MMIO_PAGE_OFFSET 1
+#define KVM_INTERRUPT_SET - 1U
+#define KVM_INTERRUPT_UNSET - 2U
+struct kvm_regs {
+};
+struct kvm_fpu {
+};
+struct kvm_debug_exit_arch {
+};
+struct kvm_guest_debug_arch {
+};
+struct kvm_sync_regs {
+};
+struct kvm_sregs {
+};
+struct kvm_riscv_config {
+  unsigned long isa;
+  unsigned long zicbom_block_size;
+};
+struct kvm_riscv_core {
+  struct user_regs_struct regs;
+  unsigned long mode;
+};
+#define KVM_RISCV_MODE_S 1
+#define KVM_RISCV_MODE_U 0
+struct kvm_riscv_csr {
+  unsigned long sstatus;
+  unsigned long sie;
+  unsigned long stvec;
+  unsigned long sscratch;
+  unsigned long sepc;
+  unsigned long scause;
+  unsigned long stval;
+  unsigned long sip;
+  unsigned long satp;
+  unsigned long scounteren;
+};
+struct kvm_riscv_timer {
+  __u64 frequency;
+  __u64 time;
+  __u64 compare;
+  __u64 state;
+};
+enum KVM_RISCV_ISA_EXT_ID {
+  KVM_RISCV_ISA_EXT_A = 0,
+  KVM_RISCV_ISA_EXT_C,
+  KVM_RISCV_ISA_EXT_D,
+  KVM_RISCV_ISA_EXT_F,
+  KVM_RISCV_ISA_EXT_H,
+  KVM_RISCV_ISA_EXT_I,
+  KVM_RISCV_ISA_EXT_M,
+  KVM_RISCV_ISA_EXT_SVPBMT,
+  KVM_RISCV_ISA_EXT_SSTC,
+  KVM_RISCV_ISA_EXT_SVINVAL,
+  KVM_RISCV_ISA_EXT_ZIHINTPAUSE,
+  KVM_RISCV_ISA_EXT_ZICBOM,
+  KVM_RISCV_ISA_EXT_MAX,
+};
+#define KVM_RISCV_TIMER_STATE_OFF 0
+#define KVM_RISCV_TIMER_STATE_ON 1
+#define KVM_REG_SIZE(id) (1U << (((id) & KVM_REG_SIZE_MASK) >> KVM_REG_SIZE_SHIFT))
+#define KVM_REG_RISCV_TYPE_MASK 0x00000000FF000000
+#define KVM_REG_RISCV_TYPE_SHIFT 24
+#define KVM_REG_RISCV_CONFIG (0x01 << KVM_REG_RISCV_TYPE_SHIFT)
+#define KVM_REG_RISCV_CONFIG_REG(name) (offsetof(struct kvm_riscv_config, name) / sizeof(unsigned long))
+#define KVM_REG_RISCV_CORE (0x02 << KVM_REG_RISCV_TYPE_SHIFT)
+#define KVM_REG_RISCV_CORE_REG(name) (offsetof(struct kvm_riscv_core, name) / sizeof(unsigned long))
+#define KVM_REG_RISCV_CSR (0x03 << KVM_REG_RISCV_TYPE_SHIFT)
+#define KVM_REG_RISCV_CSR_REG(name) (offsetof(struct kvm_riscv_csr, name) / sizeof(unsigned long))
+#define KVM_REG_RISCV_TIMER (0x04 << KVM_REG_RISCV_TYPE_SHIFT)
+#define KVM_REG_RISCV_TIMER_REG(name) (offsetof(struct kvm_riscv_timer, name) / sizeof(__u64))
+#define KVM_REG_RISCV_FP_F (0x05 << KVM_REG_RISCV_TYPE_SHIFT)
+#define KVM_REG_RISCV_FP_F_REG(name) (offsetof(struct __riscv_f_ext_state, name) / sizeof(__u32))
+#define KVM_REG_RISCV_FP_D (0x06 << KVM_REG_RISCV_TYPE_SHIFT)
+#define KVM_REG_RISCV_FP_D_REG(name) (offsetof(struct __riscv_d_ext_state, name) / sizeof(__u64))
+#define KVM_REG_RISCV_ISA_EXT (0x07 << KVM_REG_RISCV_TYPE_SHIFT)
+#endif
+#endif
diff --git a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/asm-riscv/asm/mman.h b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/asm-riscv/asm/mman.h
new file mode 100644
index 0000000..6c23fb6
--- /dev/null
+++ b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/asm-riscv/asm/mman.h
@@ -0,0 +1,19 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#include <asm-generic/mman.h>
diff --git a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/asm-riscv/asm/msgbuf.h b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/asm-riscv/asm/msgbuf.h
new file mode 100644
index 0000000..7809e3c
--- /dev/null
+++ b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/asm-riscv/asm/msgbuf.h
@@ -0,0 +1,19 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#include <asm-generic/msgbuf.h>
diff --git a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/asm-riscv/asm/param.h b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/asm-riscv/asm/param.h
new file mode 100644
index 0000000..5ccf935
--- /dev/null
+++ b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/asm-riscv/asm/param.h
@@ -0,0 +1,19 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#include <asm-generic/param.h>
diff --git a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/asm-riscv/asm/perf_regs.h b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/asm-riscv/asm/perf_regs.h
new file mode 100644
index 0000000..ceb0bbe
--- /dev/null
+++ b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/asm-riscv/asm/perf_regs.h
@@ -0,0 +1,56 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _ASM_RISCV_PERF_REGS_H
+#define _ASM_RISCV_PERF_REGS_H
+enum perf_event_riscv_regs {
+  PERF_REG_RISCV_PC,
+  PERF_REG_RISCV_RA,
+  PERF_REG_RISCV_SP,
+  PERF_REG_RISCV_GP,
+  PERF_REG_RISCV_TP,
+  PERF_REG_RISCV_T0,
+  PERF_REG_RISCV_T1,
+  PERF_REG_RISCV_T2,
+  PERF_REG_RISCV_S0,
+  PERF_REG_RISCV_S1,
+  PERF_REG_RISCV_A0,
+  PERF_REG_RISCV_A1,
+  PERF_REG_RISCV_A2,
+  PERF_REG_RISCV_A3,
+  PERF_REG_RISCV_A4,
+  PERF_REG_RISCV_A5,
+  PERF_REG_RISCV_A6,
+  PERF_REG_RISCV_A7,
+  PERF_REG_RISCV_S2,
+  PERF_REG_RISCV_S3,
+  PERF_REG_RISCV_S4,
+  PERF_REG_RISCV_S5,
+  PERF_REG_RISCV_S6,
+  PERF_REG_RISCV_S7,
+  PERF_REG_RISCV_S8,
+  PERF_REG_RISCV_S9,
+  PERF_REG_RISCV_S10,
+  PERF_REG_RISCV_S11,
+  PERF_REG_RISCV_T3,
+  PERF_REG_RISCV_T4,
+  PERF_REG_RISCV_T5,
+  PERF_REG_RISCV_T6,
+  PERF_REG_RISCV_MAX,
+};
+#endif
diff --git a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/asm-riscv/asm/poll.h b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/asm-riscv/asm/poll.h
new file mode 100644
index 0000000..d7e8adc
--- /dev/null
+++ b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/asm-riscv/asm/poll.h
@@ -0,0 +1,19 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#include <asm-generic/poll.h>
diff --git a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/asm-riscv/asm/posix_types.h b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/asm-riscv/asm/posix_types.h
new file mode 100644
index 0000000..1b89253
--- /dev/null
+++ b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/asm-riscv/asm/posix_types.h
@@ -0,0 +1,19 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#include <asm-generic/posix_types.h>
diff --git a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/asm-riscv/asm/ptrace.h b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/asm-riscv/asm/ptrace.h
new file mode 100644
index 0000000..94e4ac9
--- /dev/null
+++ b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/asm-riscv/asm/ptrace.h
@@ -0,0 +1,76 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPI_ASM_RISCV_PTRACE_H
+#define _UAPI_ASM_RISCV_PTRACE_H
+#ifndef __ASSEMBLY__
+#include <linux/types.h>
+struct user_regs_struct {
+  unsigned long pc;
+  unsigned long ra;
+  unsigned long sp;
+  unsigned long gp;
+  unsigned long tp;
+  unsigned long t0;
+  unsigned long t1;
+  unsigned long t2;
+  unsigned long s0;
+  unsigned long s1;
+  unsigned long a0;
+  unsigned long a1;
+  unsigned long a2;
+  unsigned long a3;
+  unsigned long a4;
+  unsigned long a5;
+  unsigned long a6;
+  unsigned long a7;
+  unsigned long s2;
+  unsigned long s3;
+  unsigned long s4;
+  unsigned long s5;
+  unsigned long s6;
+  unsigned long s7;
+  unsigned long s8;
+  unsigned long s9;
+  unsigned long s10;
+  unsigned long s11;
+  unsigned long t3;
+  unsigned long t4;
+  unsigned long t5;
+  unsigned long t6;
+};
+struct __riscv_f_ext_state {
+  __u32 f[32];
+  __u32 fcsr;
+};
+struct __riscv_d_ext_state {
+  __u64 f[32];
+  __u32 fcsr;
+};
+struct __riscv_q_ext_state {
+  __u64 f[64] __attribute__((aligned(16)));
+  __u32 fcsr;
+  __u32 reserved[3];
+};
+union __riscv_fp_state {
+  struct __riscv_f_ext_state f;
+  struct __riscv_d_ext_state d;
+  struct __riscv_q_ext_state q;
+};
+#endif
+#endif
diff --git a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/asm-riscv/asm/resource.h b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/asm-riscv/asm/resource.h
new file mode 100644
index 0000000..371adb5
--- /dev/null
+++ b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/asm-riscv/asm/resource.h
@@ -0,0 +1,19 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#include <asm-generic/resource.h>
diff --git a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/asm-riscv/asm/sembuf.h b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/asm-riscv/asm/sembuf.h
new file mode 100644
index 0000000..6ce6549
--- /dev/null
+++ b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/asm-riscv/asm/sembuf.h
@@ -0,0 +1,19 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#include <asm-generic/sembuf.h>
diff --git a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/asm-riscv/asm/setup.h b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/asm-riscv/asm/setup.h
new file mode 100644
index 0000000..940c4db
--- /dev/null
+++ b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/asm-riscv/asm/setup.h
@@ -0,0 +1,19 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#include <asm-generic/setup.h>
diff --git a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/asm-riscv/asm/shmbuf.h b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/asm-riscv/asm/shmbuf.h
new file mode 100644
index 0000000..fe8b1be
--- /dev/null
+++ b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/asm-riscv/asm/shmbuf.h
@@ -0,0 +1,19 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#include <asm-generic/shmbuf.h>
diff --git a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/asm-riscv/asm/sigcontext.h b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/asm-riscv/asm/sigcontext.h
new file mode 100644
index 0000000..0553b94
--- /dev/null
+++ b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/asm-riscv/asm/sigcontext.h
@@ -0,0 +1,26 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPI_ASM_RISCV_SIGCONTEXT_H
+#define _UAPI_ASM_RISCV_SIGCONTEXT_H
+#include <asm/ptrace.h>
+struct sigcontext {
+  struct user_regs_struct sc_regs;
+  union __riscv_fp_state sc_fpregs;
+};
+#endif
diff --git a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/asm-riscv/asm/siginfo.h b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/asm-riscv/asm/siginfo.h
new file mode 100644
index 0000000..a31ebb2
--- /dev/null
+++ b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/asm-riscv/asm/siginfo.h
@@ -0,0 +1,19 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#include <asm-generic/siginfo.h>
diff --git a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/asm-riscv/asm/signal.h b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/asm-riscv/asm/signal.h
new file mode 100644
index 0000000..64373fe
--- /dev/null
+++ b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/asm-riscv/asm/signal.h
@@ -0,0 +1,19 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#include <asm-generic/signal.h>
diff --git a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/asm-riscv/asm/socket.h b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/asm-riscv/asm/socket.h
new file mode 100644
index 0000000..50a9874
--- /dev/null
+++ b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/asm-riscv/asm/socket.h
@@ -0,0 +1,19 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#include <asm-generic/socket.h>
diff --git a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/asm-riscv/asm/sockios.h b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/asm-riscv/asm/sockios.h
new file mode 100644
index 0000000..710db92
--- /dev/null
+++ b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/asm-riscv/asm/sockios.h
@@ -0,0 +1,19 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#include <asm-generic/sockios.h>
diff --git a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/asm-riscv/asm/stat.h b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/asm-riscv/asm/stat.h
new file mode 100644
index 0000000..af7ebfc
--- /dev/null
+++ b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/asm-riscv/asm/stat.h
@@ -0,0 +1,19 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#include <asm-generic/stat.h>
diff --git a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/asm-riscv/asm/statfs.h b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/asm-riscv/asm/statfs.h
new file mode 100644
index 0000000..93de275
--- /dev/null
+++ b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/asm-riscv/asm/statfs.h
@@ -0,0 +1,19 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#include <asm-generic/statfs.h>
diff --git a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/asm-riscv/asm/swab.h b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/asm-riscv/asm/swab.h
new file mode 100644
index 0000000..0049f53
--- /dev/null
+++ b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/asm-riscv/asm/swab.h
@@ -0,0 +1,19 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#include <asm-generic/swab.h>
diff --git a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/asm-riscv/asm/termbits.h b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/asm-riscv/asm/termbits.h
new file mode 100644
index 0000000..42af6fe
--- /dev/null
+++ b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/asm-riscv/asm/termbits.h
@@ -0,0 +1,19 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#include <asm-generic/termbits.h>
diff --git a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/asm-riscv/asm/termios.h b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/asm-riscv/asm/termios.h
new file mode 100644
index 0000000..feca4c6
--- /dev/null
+++ b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/asm-riscv/asm/termios.h
@@ -0,0 +1,19 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#include <asm-generic/termios.h>
diff --git a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/asm-riscv/asm/types.h b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/asm-riscv/asm/types.h
new file mode 100644
index 0000000..8250f43
--- /dev/null
+++ b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/asm-riscv/asm/types.h
@@ -0,0 +1,19 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#include <asm-generic/types.h>
diff --git a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/asm-riscv/asm/ucontext.h b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/asm-riscv/asm/ucontext.h
new file mode 100644
index 0000000..8b72cc1
--- /dev/null
+++ b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/asm-riscv/asm/ucontext.h
@@ -0,0 +1,30 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPI_ASM_RISCV_UCONTEXT_H
+#define _UAPI_ASM_RISCV_UCONTEXT_H
+#include <linux/types.h>
+struct ucontext {
+  unsigned long uc_flags;
+  struct ucontext * uc_link;
+  stack_t uc_stack;
+  sigset_t uc_sigmask;
+  __u8 __linux_unused[1024 / 8 - sizeof(sigset_t)];
+  struct sigcontext uc_mcontext;
+};
+#endif
diff --git a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/asm-riscv/asm/unistd.h b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/asm-riscv/asm/unistd.h
new file mode 100644
index 0000000..665b820
--- /dev/null
+++ b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/asm-riscv/asm/unistd.h
@@ -0,0 +1,29 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#if defined(__LP64__) && !defined(__SYSCALL_COMPAT)
+#define __ARCH_WANT_NEW_STAT
+#define __ARCH_WANT_SET_GET_RLIMIT
+#endif
+#define __ARCH_WANT_SYS_CLONE3
+#define __ARCH_WANT_MEMFD_SECRET
+#include <asm-generic/unistd.h>
+#ifndef __NR_riscv_flush_icache
+#define __NR_riscv_flush_icache (__NR_arch_specific_syscall + 15)
+#endif
+__SYSCALL(__NR_riscv_flush_icache, sys_riscv_flush_icache)
diff --git a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/asm-x86/asm/amd_hsmp.h b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/asm-x86/asm/amd_hsmp.h
new file mode 100644
index 0000000..c026aac
--- /dev/null
+++ b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/asm-x86/asm/amd_hsmp.h
@@ -0,0 +1,189 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPI_ASM_X86_AMD_HSMP_H_
+#define _UAPI_ASM_X86_AMD_HSMP_H_
+#include <linux/types.h>
+#pragma pack(4)
+#define HSMP_MAX_MSG_LEN 8
+enum hsmp_message_ids {
+  HSMP_TEST = 1,
+  HSMP_GET_SMU_VER,
+  HSMP_GET_PROTO_VER,
+  HSMP_GET_SOCKET_POWER,
+  HSMP_SET_SOCKET_POWER_LIMIT,
+  HSMP_GET_SOCKET_POWER_LIMIT,
+  HSMP_GET_SOCKET_POWER_LIMIT_MAX,
+  HSMP_SET_BOOST_LIMIT,
+  HSMP_SET_BOOST_LIMIT_SOCKET,
+  HSMP_GET_BOOST_LIMIT,
+  HSMP_GET_PROC_HOT,
+  HSMP_SET_XGMI_LINK_WIDTH,
+  HSMP_SET_DF_PSTATE,
+  HSMP_SET_AUTO_DF_PSTATE,
+  HSMP_GET_FCLK_MCLK,
+  HSMP_GET_CCLK_THROTTLE_LIMIT,
+  HSMP_GET_C0_PERCENT,
+  HSMP_SET_NBIO_DPM_LEVEL,
+  HSMP_GET_NBIO_DPM_LEVEL,
+  HSMP_GET_DDR_BANDWIDTH,
+  HSMP_GET_TEMP_MONITOR,
+  HSMP_GET_DIMM_TEMP_RANGE,
+  HSMP_GET_DIMM_POWER,
+  HSMP_GET_DIMM_THERMAL,
+  HSMP_GET_SOCKET_FREQ_LIMIT,
+  HSMP_GET_CCLK_CORE_LIMIT,
+  HSMP_GET_RAILS_SVI,
+  HSMP_GET_SOCKET_FMAX_FMIN,
+  HSMP_GET_IOLINK_BANDWITH,
+  HSMP_GET_XGMI_BANDWITH,
+  HSMP_SET_GMI3_WIDTH,
+  HSMP_SET_PCI_RATE,
+  HSMP_SET_POWER_MODE,
+  HSMP_SET_PSTATE_MAX_MIN,
+  HSMP_MSG_ID_MAX,
+};
+struct hsmp_message {
+  __u32 msg_id;
+  __u16 num_args;
+  __u16 response_sz;
+  __u32 args[HSMP_MAX_MSG_LEN];
+  __u16 sock_ind;
+};
+enum hsmp_msg_type {
+  HSMP_RSVD = - 1,
+  HSMP_SET = 0,
+  HSMP_GET = 1,
+};
+struct hsmp_msg_desc {
+  int num_args;
+  int response_sz;
+  enum hsmp_msg_type type;
+};
+static const struct hsmp_msg_desc hsmp_msg_desc_table[] = {
+ {
+    0, 0, HSMP_RSVD
+  }
+ , {
+    1, 1, HSMP_GET
+  }
+ , {
+    0, 1, HSMP_GET
+  }
+ , {
+    0, 1, HSMP_GET
+  }
+ , {
+    0, 1, HSMP_GET
+  }
+ , {
+    1, 0, HSMP_SET
+  }
+ , {
+    0, 1, HSMP_GET
+  }
+ , {
+    0, 1, HSMP_GET
+  }
+ , {
+    1, 0, HSMP_SET
+  }
+ , {
+    1, 0, HSMP_SET
+  }
+ , {
+    1, 1, HSMP_GET
+  }
+ , {
+    0, 1, HSMP_GET
+  }
+ , {
+    1, 0, HSMP_SET
+  }
+ , {
+    1, 0, HSMP_SET
+  }
+ , {
+    0, 0, HSMP_SET
+  }
+ , {
+    0, 2, HSMP_GET
+  }
+ , {
+    0, 1, HSMP_GET
+  }
+ , {
+    0, 1, HSMP_GET
+  }
+ , {
+    1, 0, HSMP_SET
+  }
+ , {
+    1, 1, HSMP_GET
+  }
+ , {
+    0, 1, HSMP_GET
+  }
+ , {
+    0, 1, HSMP_GET
+  }
+ , {
+    1, 1, HSMP_GET
+  }
+ , {
+    1, 1, HSMP_GET
+  }
+ , {
+    1, 1, HSMP_GET
+  }
+ , {
+    0, 1, HSMP_GET
+  }
+ , {
+    1, 1, HSMP_GET
+  }
+ , {
+    0, 1, HSMP_GET
+  }
+ , {
+    0, 1, HSMP_GET
+  }
+ , {
+    1, 1, HSMP_GET
+  }
+ , {
+    1, 1, HSMP_GET
+  }
+ , {
+    1, 0, HSMP_SET
+  }
+ , {
+    1, 1, HSMP_SET
+  }
+ , {
+    1, 0, HSMP_SET
+  }
+ , {
+    1, 0, HSMP_SET
+  }
+ ,
+};
+#pragma pack()
+#define HSMP_BASE_IOCTL_NR 0xF8
+#define HSMP_IOCTL_CMD _IOWR(HSMP_BASE_IOCTL_NR, 0, struct hsmp_message)
+#endif
diff --git a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/asm-x86/asm/bootparam.h b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/asm-x86/asm/bootparam.h
index 7401135..ab9d7f3 100644
--- a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/asm-x86/asm/bootparam.h
+++ b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/asm-x86/asm/bootparam.h
@@ -25,8 +25,12 @@
 #define SETUP_EFI 4
 #define SETUP_APPLE_PROPERTIES 5
 #define SETUP_JAILHOUSE 6
+#define SETUP_CC_BLOB 7
+#define SETUP_IMA 8
+#define SETUP_RNG_SEED 9
+#define SETUP_ENUM_MAX SETUP_RNG_SEED
 #define SETUP_INDIRECT (1 << 31)
-#define SETUP_TYPE_MAX (SETUP_INDIRECT | SETUP_JAILHOUSE)
+#define SETUP_TYPE_MAX (SETUP_ENUM_MAX | SETUP_INDIRECT)
 #define RAMDISK_IMAGE_START_MASK 0x07FF
 #define RAMDISK_PROMPT_FLAG 0x8000
 #define RAMDISK_LOAD_FLAG 0x4000
@@ -53,7 +57,7 @@
   __u64 next;
   __u32 type;
   __u32 len;
-  __u8 data[0];
+  __u8 data[];
 };
 struct setup_indirect {
   __u32 type;
@@ -147,6 +151,10 @@
     __u32 flags;
   } __attribute__((packed)) v2;
 } __attribute__((packed));
+struct ima_setup_data {
+  __u64 addr;
+  __u64 size;
+} __attribute__((packed));
 struct boot_params {
   struct screen_info screen_info;
   struct apm_bios_info apm_bios_info;
@@ -162,7 +170,8 @@
   __u32 ext_ramdisk_image;
   __u32 ext_ramdisk_size;
   __u32 ext_cmd_line_ptr;
-  __u8 _pad4[116];
+  __u8 _pad4[112];
+  __u32 cc_blob_address;
   struct edid_info edid_info;
   struct efi_info efi_info;
   __u32 alt_mem_k;
diff --git a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/asm-x86/asm/kvm.h b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/asm-x86/asm/kvm.h
index caf8fc0..f07b00e 100644
--- a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/asm-x86/asm/kvm.h
+++ b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/asm-x86/asm/kvm.h
@@ -178,11 +178,11 @@
 struct kvm_msrs {
   __u32 nmsrs;
   __u32 pad;
-  struct kvm_msr_entry entries[0];
+  struct kvm_msr_entry entries[];
 };
 struct kvm_msr_list {
   __u32 nmsrs;
-  __u32 indices[0];
+  __u32 indices[];
 };
 #define KVM_MSR_FILTER_MAX_BITMAP_SIZE 0x600
 struct kvm_msr_filter_range {
@@ -211,7 +211,7 @@
 struct kvm_cpuid {
   __u32 nent;
   __u32 padding;
-  struct kvm_cpuid_entry entries[0];
+  struct kvm_cpuid_entry entries[];
 };
 struct kvm_cpuid_entry2 {
   __u32 function;
@@ -229,7 +229,7 @@
 struct kvm_cpuid2 {
   __u32 nent;
   __u32 padding;
-  struct kvm_cpuid_entry2 entries[0];
+  struct kvm_cpuid_entry2 entries[];
 };
 struct kvm_pit_channel_state {
   __u32 count;
@@ -265,6 +265,7 @@
   struct kvm_pit_channel_state channels[3];
 };
 #define KVM_PIT_FLAGS_HPET_LEGACY 0x00000001
+#define KVM_PIT_FLAGS_SPEAKER_DATA_ON 0x00000002
 struct kvm_pit_state2 {
   struct kvm_pit_channel_state channels[3];
   __u32 flags;
@@ -279,6 +280,7 @@
 #define KVM_VCPUEVENT_VALID_SHADOW 0x00000004
 #define KVM_VCPUEVENT_VALID_SMM 0x00000008
 #define KVM_VCPUEVENT_VALID_PAYLOAD 0x00000010
+#define KVM_VCPUEVENT_VALID_TRIPLE_FAULT 0x00000020
 #define KVM_X86_SHADOW_INT_MOV_SS 0x01
 #define KVM_X86_SHADOW_INT_STI 0x02
 struct kvm_vcpu_events {
@@ -309,7 +311,10 @@
     __u8 smm_inside_nmi;
     __u8 latched_init;
   } smi;
-  __u8 reserved[27];
+  struct {
+    __u8 pending;
+  } triple_fault;
+  __u8 reserved[26];
   __u8 exception_has_payload;
   __u64 exception_payload;
 };
@@ -322,7 +327,7 @@
 };
 struct kvm_xsave {
   __u32 region[1024];
-  __u32 extra[0];
+  __u32 extra[];
 };
 #define KVM_MAX_XCRS 16
 struct kvm_xcr {
@@ -350,6 +355,8 @@
 #define KVM_X86_QUIRK_LAPIC_MMIO_HOLE (1 << 2)
 #define KVM_X86_QUIRK_OUT_7E_INC_RIP (1 << 3)
 #define KVM_X86_QUIRK_MISC_ENABLE_NO_MWAIT (1 << 4)
+#define KVM_X86_QUIRK_FIX_HYPERCALL_INSN (1 << 5)
+#define KVM_X86_QUIRK_MWAIT_NEVER_UD_FAULTS (1 << 6)
 #define KVM_STATE_NESTED_FORMAT_VMX 0
 #define KVM_STATE_NESTED_FORMAT_SVM 1
 #define KVM_STATE_NESTED_GUEST_MODE 0x00000001
@@ -403,7 +410,7 @@
   __u32 fixed_counter_bitmap;
   __u32 flags;
   __u32 pad[4];
-  __u64 events[0];
+  __u64 events[];
 };
 #define KVM_PMU_EVENT_ALLOW 0
 #define KVM_PMU_EVENT_DENY 1
diff --git a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/asm-x86/asm/processor-flags.h b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/asm-x86/asm/processor-flags.h
index 85f9d7e..0a95afd 100644
--- a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/asm-x86/asm/processor-flags.h
+++ b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/asm-x86/asm/processor-flags.h
@@ -127,6 +127,8 @@
 #define X86_CR4_SMAP _BITUL(X86_CR4_SMAP_BIT)
 #define X86_CR4_PKE_BIT 22
 #define X86_CR4_PKE _BITUL(X86_CR4_PKE_BIT)
+#define X86_CR4_CET_BIT 23
+#define X86_CR4_CET _BITUL(X86_CR4_CET_BIT)
 #define X86_CR8_TPR _AC(0x0000000f, UL)
 #define CX86_PCR0 0x20
 #define CX86_GCR 0xb8
diff --git a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/asm-x86/asm/sgx.h b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/asm-x86/asm/sgx.h
index 1874b78..fdc2700 100644
--- a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/asm-x86/asm/sgx.h
+++ b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/asm-x86/asm/sgx.h
@@ -29,6 +29,9 @@
 #define SGX_IOC_ENCLAVE_INIT _IOW(SGX_MAGIC, 0x02, struct sgx_enclave_init)
 #define SGX_IOC_ENCLAVE_PROVISION _IOW(SGX_MAGIC, 0x03, struct sgx_enclave_provision)
 #define SGX_IOC_VEPC_REMOVE_ALL _IO(SGX_MAGIC, 0x04)
+#define SGX_IOC_ENCLAVE_RESTRICT_PERMISSIONS _IOWR(SGX_MAGIC, 0x05, struct sgx_enclave_restrict_permissions)
+#define SGX_IOC_ENCLAVE_MODIFY_TYPES _IOWR(SGX_MAGIC, 0x06, struct sgx_enclave_modify_types)
+#define SGX_IOC_ENCLAVE_REMOVE_PAGES _IOWR(SGX_MAGIC, 0x07, struct sgx_enclave_remove_pages)
 struct sgx_enclave_create {
   __u64 src;
 };
@@ -46,6 +49,25 @@
 struct sgx_enclave_provision {
   __u64 fd;
 };
+struct sgx_enclave_restrict_permissions {
+  __u64 offset;
+  __u64 length;
+  __u64 permissions;
+  __u64 result;
+  __u64 count;
+};
+struct sgx_enclave_modify_types {
+  __u64 offset;
+  __u64 length;
+  __u64 page_type;
+  __u64 result;
+  __u64 count;
+};
+struct sgx_enclave_remove_pages {
+  __u64 offset;
+  __u64 length;
+  __u64 count;
+};
 struct sgx_enclave_run;
 typedef int(* sgx_enclave_user_handler_t) (long rdi, long rsi, long rdx, long rsp, long r8, long r9, struct sgx_enclave_run * run);
 struct sgx_enclave_run {
diff --git a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/asm-x86/asm/shmbuf.h b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/asm-x86/asm/shmbuf.h
index 03e195e..2a0dcb5 100644
--- a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/asm-x86/asm/shmbuf.h
+++ b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/asm-x86/asm/shmbuf.h
@@ -21,9 +21,11 @@
 #if !defined(__x86_64__) || !defined(__ILP32__)
 #include <asm-generic/shmbuf.h>
 #else
+#include <asm/ipcbuf.h>
+#include <asm/posix_types.h>
 struct shmid64_ds {
   struct ipc64_perm shm_perm;
-  size_t shm_segsz;
+  __kernel_size_t shm_segsz;
   __kernel_long_t shm_atime;
   __kernel_long_t shm_dtime;
   __kernel_long_t shm_ctime;
diff --git a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/asm-x86/asm/signal.h b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/asm-x86/asm/signal.h
index 8226da8..cbeeac4 100644
--- a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/asm-x86/asm/signal.h
+++ b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/asm-x86/asm/signal.h
@@ -90,7 +90,7 @@
 typedef struct sigaltstack {
   void __user * ss_sp;
   int ss_flags;
-  size_t ss_size;
+  __kernel_size_t ss_size;
 } stack_t;
 #endif
 #endif
diff --git a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/asm-x86/asm/svm.h b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/asm-x86/asm/svm.h
index d051481..8bda2d5 100644
--- a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/asm-x86/asm/svm.h
+++ b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/asm-x86/asm/svm.h
@@ -122,8 +122,16 @@
 #define SVM_VMGEXIT_AP_JUMP_TABLE 0x80000005
 #define SVM_VMGEXIT_SET_AP_JUMP_TABLE 0
 #define SVM_VMGEXIT_GET_AP_JUMP_TABLE 1
+#define SVM_VMGEXIT_PSC 0x80000010
+#define SVM_VMGEXIT_GUEST_REQUEST 0x80000011
+#define SVM_VMGEXIT_EXT_GUEST_REQUEST 0x80000012
+#define SVM_VMGEXIT_AP_CREATION 0x80000013
+#define SVM_VMGEXIT_AP_CREATE_ON_INIT 0
+#define SVM_VMGEXIT_AP_CREATE 1
+#define SVM_VMGEXIT_AP_DESTROY 2
+#define SVM_VMGEXIT_HV_FEATURES 0x8000fffd
 #define SVM_VMGEXIT_UNSUPPORTED_EVENT 0x8000ffff
 #define SVM_EXIT_SW 0xf0000000
 #define SVM_EXIT_ERR - 1
-#define SVM_EXIT_REASONS { SVM_EXIT_READ_CR0, "read_cr0" }, { SVM_EXIT_READ_CR2, "read_cr2" }, { SVM_EXIT_READ_CR3, "read_cr3" }, { SVM_EXIT_READ_CR4, "read_cr4" }, { SVM_EXIT_READ_CR8, "read_cr8" }, { SVM_EXIT_WRITE_CR0, "write_cr0" }, { SVM_EXIT_WRITE_CR2, "write_cr2" }, { SVM_EXIT_WRITE_CR3, "write_cr3" }, { SVM_EXIT_WRITE_CR4, "write_cr4" }, { SVM_EXIT_WRITE_CR8, "write_cr8" }, { SVM_EXIT_READ_DR0, "read_dr0" }, { SVM_EXIT_READ_DR1, "read_dr1" }, { SVM_EXIT_READ_DR2, "read_dr2" }, { SVM_EXIT_READ_DR3, "read_dr3" }, { SVM_EXIT_READ_DR4, "read_dr4" }, { SVM_EXIT_READ_DR5, "read_dr5" }, { SVM_EXIT_READ_DR6, "read_dr6" }, { SVM_EXIT_READ_DR7, "read_dr7" }, { SVM_EXIT_WRITE_DR0, "write_dr0" }, { SVM_EXIT_WRITE_DR1, "write_dr1" }, { SVM_EXIT_WRITE_DR2, "write_dr2" }, { SVM_EXIT_WRITE_DR3, "write_dr3" }, { SVM_EXIT_WRITE_DR4, "write_dr4" }, { SVM_EXIT_WRITE_DR5, "write_dr5" }, { SVM_EXIT_WRITE_DR6, "write_dr6" }, { SVM_EXIT_WRITE_DR7, "write_dr7" }, { SVM_EXIT_EXCP_BASE + DE_VECTOR, "DE excp" }, { SVM_EXIT_EXCP_BASE + DB_VECTOR, "DB excp" }, { SVM_EXIT_EXCP_BASE + BP_VECTOR, "BP excp" }, { SVM_EXIT_EXCP_BASE + OF_VECTOR, "OF excp" }, { SVM_EXIT_EXCP_BASE + BR_VECTOR, "BR excp" }, { SVM_EXIT_EXCP_BASE + UD_VECTOR, "UD excp" }, { SVM_EXIT_EXCP_BASE + NM_VECTOR, "NM excp" }, { SVM_EXIT_EXCP_BASE + DF_VECTOR, "DF excp" }, { SVM_EXIT_EXCP_BASE + TS_VECTOR, "TS excp" }, { SVM_EXIT_EXCP_BASE + NP_VECTOR, "NP excp" }, { SVM_EXIT_EXCP_BASE + SS_VECTOR, "SS excp" }, { SVM_EXIT_EXCP_BASE + GP_VECTOR, "GP excp" }, { SVM_EXIT_EXCP_BASE + PF_VECTOR, "PF excp" }, { SVM_EXIT_EXCP_BASE + MF_VECTOR, "MF excp" }, { SVM_EXIT_EXCP_BASE + AC_VECTOR, "AC excp" }, { SVM_EXIT_EXCP_BASE + MC_VECTOR, "MC excp" }, { SVM_EXIT_EXCP_BASE + XM_VECTOR, "XF excp" }, { SVM_EXIT_INTR, "interrupt" }, { SVM_EXIT_NMI, "nmi" }, { SVM_EXIT_SMI, "smi" }, { SVM_EXIT_INIT, "init" }, { SVM_EXIT_VINTR, "vintr" }, { SVM_EXIT_CR0_SEL_WRITE, "cr0_sel_write" }, { SVM_EXIT_IDTR_READ, "read_idtr" }, { SVM_EXIT_GDTR_READ, "read_gdtr" }, { SVM_EXIT_LDTR_READ, "read_ldtr" }, { SVM_EXIT_TR_READ, "read_rt" }, { SVM_EXIT_IDTR_WRITE, "write_idtr" }, { SVM_EXIT_GDTR_WRITE, "write_gdtr" }, { SVM_EXIT_LDTR_WRITE, "write_ldtr" }, { SVM_EXIT_TR_WRITE, "write_rt" }, { SVM_EXIT_RDTSC, "rdtsc" }, { SVM_EXIT_RDPMC, "rdpmc" }, { SVM_EXIT_PUSHF, "pushf" }, { SVM_EXIT_POPF, "popf" }, { SVM_EXIT_CPUID, "cpuid" }, { SVM_EXIT_RSM, "rsm" }, { SVM_EXIT_IRET, "iret" }, { SVM_EXIT_SWINT, "swint" }, { SVM_EXIT_INVD, "invd" }, { SVM_EXIT_PAUSE, "pause" }, { SVM_EXIT_HLT, "hlt" }, { SVM_EXIT_INVLPG, "invlpg" }, { SVM_EXIT_INVLPGA, "invlpga" }, { SVM_EXIT_IOIO, "io" }, { SVM_EXIT_MSR, "msr" }, { SVM_EXIT_TASK_SWITCH, "task_switch" }, { SVM_EXIT_FERR_FREEZE, "ferr_freeze" }, { SVM_EXIT_SHUTDOWN, "shutdown" }, { SVM_EXIT_VMRUN, "vmrun" }, { SVM_EXIT_VMMCALL, "hypercall" }, { SVM_EXIT_VMLOAD, "vmload" }, { SVM_EXIT_VMSAVE, "vmsave" }, { SVM_EXIT_STGI, "stgi" }, { SVM_EXIT_CLGI, "clgi" }, { SVM_EXIT_SKINIT, "skinit" }, { SVM_EXIT_RDTSCP, "rdtscp" }, { SVM_EXIT_ICEBP, "icebp" }, { SVM_EXIT_WBINVD, "wbinvd" }, { SVM_EXIT_MONITOR, "monitor" }, { SVM_EXIT_MWAIT, "mwait" }, { SVM_EXIT_XSETBV, "xsetbv" }, { SVM_EXIT_EFER_WRITE_TRAP, "write_efer_trap" }, { SVM_EXIT_CR0_WRITE_TRAP, "write_cr0_trap" }, { SVM_EXIT_CR4_WRITE_TRAP, "write_cr4_trap" }, { SVM_EXIT_CR8_WRITE_TRAP, "write_cr8_trap" }, { SVM_EXIT_INVPCID, "invpcid" }, { SVM_EXIT_NPF, "npf" }, { SVM_EXIT_AVIC_INCOMPLETE_IPI, "avic_incomplete_ipi" }, { SVM_EXIT_AVIC_UNACCELERATED_ACCESS, "avic_unaccelerated_access" }, { SVM_EXIT_VMGEXIT, "vmgexit" }, { SVM_VMGEXIT_MMIO_READ, "vmgexit_mmio_read" }, { SVM_VMGEXIT_MMIO_WRITE, "vmgexit_mmio_write" }, { SVM_VMGEXIT_NMI_COMPLETE, "vmgexit_nmi_complete" }, { SVM_VMGEXIT_AP_HLT_LOOP, "vmgexit_ap_hlt_loop" }, { SVM_VMGEXIT_AP_JUMP_TABLE, "vmgexit_ap_jump_table" }, { SVM_EXIT_ERR, "invalid_guest_state" }
+#define SVM_EXIT_REASONS { SVM_EXIT_READ_CR0, "read_cr0" }, { SVM_EXIT_READ_CR2, "read_cr2" }, { SVM_EXIT_READ_CR3, "read_cr3" }, { SVM_EXIT_READ_CR4, "read_cr4" }, { SVM_EXIT_READ_CR8, "read_cr8" }, { SVM_EXIT_WRITE_CR0, "write_cr0" }, { SVM_EXIT_WRITE_CR2, "write_cr2" }, { SVM_EXIT_WRITE_CR3, "write_cr3" }, { SVM_EXIT_WRITE_CR4, "write_cr4" }, { SVM_EXIT_WRITE_CR8, "write_cr8" }, { SVM_EXIT_READ_DR0, "read_dr0" }, { SVM_EXIT_READ_DR1, "read_dr1" }, { SVM_EXIT_READ_DR2, "read_dr2" }, { SVM_EXIT_READ_DR3, "read_dr3" }, { SVM_EXIT_READ_DR4, "read_dr4" }, { SVM_EXIT_READ_DR5, "read_dr5" }, { SVM_EXIT_READ_DR6, "read_dr6" }, { SVM_EXIT_READ_DR7, "read_dr7" }, { SVM_EXIT_WRITE_DR0, "write_dr0" }, { SVM_EXIT_WRITE_DR1, "write_dr1" }, { SVM_EXIT_WRITE_DR2, "write_dr2" }, { SVM_EXIT_WRITE_DR3, "write_dr3" }, { SVM_EXIT_WRITE_DR4, "write_dr4" }, { SVM_EXIT_WRITE_DR5, "write_dr5" }, { SVM_EXIT_WRITE_DR6, "write_dr6" }, { SVM_EXIT_WRITE_DR7, "write_dr7" }, { SVM_EXIT_EXCP_BASE + DE_VECTOR, "DE excp" }, { SVM_EXIT_EXCP_BASE + DB_VECTOR, "DB excp" }, { SVM_EXIT_EXCP_BASE + BP_VECTOR, "BP excp" }, { SVM_EXIT_EXCP_BASE + OF_VECTOR, "OF excp" }, { SVM_EXIT_EXCP_BASE + BR_VECTOR, "BR excp" }, { SVM_EXIT_EXCP_BASE + UD_VECTOR, "UD excp" }, { SVM_EXIT_EXCP_BASE + NM_VECTOR, "NM excp" }, { SVM_EXIT_EXCP_BASE + DF_VECTOR, "DF excp" }, { SVM_EXIT_EXCP_BASE + TS_VECTOR, "TS excp" }, { SVM_EXIT_EXCP_BASE + NP_VECTOR, "NP excp" }, { SVM_EXIT_EXCP_BASE + SS_VECTOR, "SS excp" }, { SVM_EXIT_EXCP_BASE + GP_VECTOR, "GP excp" }, { SVM_EXIT_EXCP_BASE + PF_VECTOR, "PF excp" }, { SVM_EXIT_EXCP_BASE + MF_VECTOR, "MF excp" }, { SVM_EXIT_EXCP_BASE + AC_VECTOR, "AC excp" }, { SVM_EXIT_EXCP_BASE + MC_VECTOR, "MC excp" }, { SVM_EXIT_EXCP_BASE + XM_VECTOR, "XF excp" }, { SVM_EXIT_INTR, "interrupt" }, { SVM_EXIT_NMI, "nmi" }, { SVM_EXIT_SMI, "smi" }, { SVM_EXIT_INIT, "init" }, { SVM_EXIT_VINTR, "vintr" }, { SVM_EXIT_CR0_SEL_WRITE, "cr0_sel_write" }, { SVM_EXIT_IDTR_READ, "read_idtr" }, { SVM_EXIT_GDTR_READ, "read_gdtr" }, { SVM_EXIT_LDTR_READ, "read_ldtr" }, { SVM_EXIT_TR_READ, "read_rt" }, { SVM_EXIT_IDTR_WRITE, "write_idtr" }, { SVM_EXIT_GDTR_WRITE, "write_gdtr" }, { SVM_EXIT_LDTR_WRITE, "write_ldtr" }, { SVM_EXIT_TR_WRITE, "write_rt" }, { SVM_EXIT_RDTSC, "rdtsc" }, { SVM_EXIT_RDPMC, "rdpmc" }, { SVM_EXIT_PUSHF, "pushf" }, { SVM_EXIT_POPF, "popf" }, { SVM_EXIT_CPUID, "cpuid" }, { SVM_EXIT_RSM, "rsm" }, { SVM_EXIT_IRET, "iret" }, { SVM_EXIT_SWINT, "swint" }, { SVM_EXIT_INVD, "invd" }, { SVM_EXIT_PAUSE, "pause" }, { SVM_EXIT_HLT, "hlt" }, { SVM_EXIT_INVLPG, "invlpg" }, { SVM_EXIT_INVLPGA, "invlpga" }, { SVM_EXIT_IOIO, "io" }, { SVM_EXIT_MSR, "msr" }, { SVM_EXIT_TASK_SWITCH, "task_switch" }, { SVM_EXIT_FERR_FREEZE, "ferr_freeze" }, { SVM_EXIT_SHUTDOWN, "shutdown" }, { SVM_EXIT_VMRUN, "vmrun" }, { SVM_EXIT_VMMCALL, "hypercall" }, { SVM_EXIT_VMLOAD, "vmload" }, { SVM_EXIT_VMSAVE, "vmsave" }, { SVM_EXIT_STGI, "stgi" }, { SVM_EXIT_CLGI, "clgi" }, { SVM_EXIT_SKINIT, "skinit" }, { SVM_EXIT_RDTSCP, "rdtscp" }, { SVM_EXIT_ICEBP, "icebp" }, { SVM_EXIT_WBINVD, "wbinvd" }, { SVM_EXIT_MONITOR, "monitor" }, { SVM_EXIT_MWAIT, "mwait" }, { SVM_EXIT_XSETBV, "xsetbv" }, { SVM_EXIT_EFER_WRITE_TRAP, "write_efer_trap" }, { SVM_EXIT_CR0_WRITE_TRAP, "write_cr0_trap" }, { SVM_EXIT_CR4_WRITE_TRAP, "write_cr4_trap" }, { SVM_EXIT_CR8_WRITE_TRAP, "write_cr8_trap" }, { SVM_EXIT_INVPCID, "invpcid" }, { SVM_EXIT_NPF, "npf" }, { SVM_EXIT_AVIC_INCOMPLETE_IPI, "avic_incomplete_ipi" }, { SVM_EXIT_AVIC_UNACCELERATED_ACCESS, "avic_unaccelerated_access" }, { SVM_EXIT_VMGEXIT, "vmgexit" }, { SVM_VMGEXIT_MMIO_READ, "vmgexit_mmio_read" }, { SVM_VMGEXIT_MMIO_WRITE, "vmgexit_mmio_write" }, { SVM_VMGEXIT_NMI_COMPLETE, "vmgexit_nmi_complete" }, { SVM_VMGEXIT_AP_HLT_LOOP, "vmgexit_ap_hlt_loop" }, { SVM_VMGEXIT_AP_JUMP_TABLE, "vmgexit_ap_jump_table" }, { SVM_VMGEXIT_PSC, "vmgexit_page_state_change" }, { SVM_VMGEXIT_GUEST_REQUEST, "vmgexit_guest_request" }, { SVM_VMGEXIT_EXT_GUEST_REQUEST, "vmgexit_ext_guest_request" }, { SVM_VMGEXIT_AP_CREATION, "vmgexit_ap_creation" }, { SVM_VMGEXIT_HV_FEATURES, "vmgexit_hypervisor_feature" }, { SVM_EXIT_ERR, "invalid_guest_state" }
 #endif
diff --git a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/asm-x86/asm/vmx.h b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/asm-x86/asm/vmx.h
index 6c07d4c..fdea539 100644
--- a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/asm-x86/asm/vmx.h
+++ b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/asm-x86/asm/vmx.h
@@ -81,7 +81,8 @@
 #define EXIT_REASON_UMWAIT 67
 #define EXIT_REASON_TPAUSE 68
 #define EXIT_REASON_BUS_LOCK 74
-#define VMX_EXIT_REASONS { EXIT_REASON_EXCEPTION_NMI, "EXCEPTION_NMI" }, { EXIT_REASON_EXTERNAL_INTERRUPT, "EXTERNAL_INTERRUPT" }, { EXIT_REASON_TRIPLE_FAULT, "TRIPLE_FAULT" }, { EXIT_REASON_INIT_SIGNAL, "INIT_SIGNAL" }, { EXIT_REASON_SIPI_SIGNAL, "SIPI_SIGNAL" }, { EXIT_REASON_INTERRUPT_WINDOW, "INTERRUPT_WINDOW" }, { EXIT_REASON_NMI_WINDOW, "NMI_WINDOW" }, { EXIT_REASON_TASK_SWITCH, "TASK_SWITCH" }, { EXIT_REASON_CPUID, "CPUID" }, { EXIT_REASON_HLT, "HLT" }, { EXIT_REASON_INVD, "INVD" }, { EXIT_REASON_INVLPG, "INVLPG" }, { EXIT_REASON_RDPMC, "RDPMC" }, { EXIT_REASON_RDTSC, "RDTSC" }, { EXIT_REASON_VMCALL, "VMCALL" }, { EXIT_REASON_VMCLEAR, "VMCLEAR" }, { EXIT_REASON_VMLAUNCH, "VMLAUNCH" }, { EXIT_REASON_VMPTRLD, "VMPTRLD" }, { EXIT_REASON_VMPTRST, "VMPTRST" }, { EXIT_REASON_VMREAD, "VMREAD" }, { EXIT_REASON_VMRESUME, "VMRESUME" }, { EXIT_REASON_VMWRITE, "VMWRITE" }, { EXIT_REASON_VMOFF, "VMOFF" }, { EXIT_REASON_VMON, "VMON" }, { EXIT_REASON_CR_ACCESS, "CR_ACCESS" }, { EXIT_REASON_DR_ACCESS, "DR_ACCESS" }, { EXIT_REASON_IO_INSTRUCTION, "IO_INSTRUCTION" }, { EXIT_REASON_MSR_READ, "MSR_READ" }, { EXIT_REASON_MSR_WRITE, "MSR_WRITE" }, { EXIT_REASON_INVALID_STATE, "INVALID_STATE" }, { EXIT_REASON_MSR_LOAD_FAIL, "MSR_LOAD_FAIL" }, { EXIT_REASON_MWAIT_INSTRUCTION, "MWAIT_INSTRUCTION" }, { EXIT_REASON_MONITOR_TRAP_FLAG, "MONITOR_TRAP_FLAG" }, { EXIT_REASON_MONITOR_INSTRUCTION, "MONITOR_INSTRUCTION" }, { EXIT_REASON_PAUSE_INSTRUCTION, "PAUSE_INSTRUCTION" }, { EXIT_REASON_MCE_DURING_VMENTRY, "MCE_DURING_VMENTRY" }, { EXIT_REASON_TPR_BELOW_THRESHOLD, "TPR_BELOW_THRESHOLD" }, { EXIT_REASON_APIC_ACCESS, "APIC_ACCESS" }, { EXIT_REASON_EOI_INDUCED, "EOI_INDUCED" }, { EXIT_REASON_GDTR_IDTR, "GDTR_IDTR" }, { EXIT_REASON_LDTR_TR, "LDTR_TR" }, { EXIT_REASON_EPT_VIOLATION, "EPT_VIOLATION" }, { EXIT_REASON_EPT_MISCONFIG, "EPT_MISCONFIG" }, { EXIT_REASON_INVEPT, "INVEPT" }, { EXIT_REASON_RDTSCP, "RDTSCP" }, { EXIT_REASON_PREEMPTION_TIMER, "PREEMPTION_TIMER" }, { EXIT_REASON_INVVPID, "INVVPID" }, { EXIT_REASON_WBINVD, "WBINVD" }, { EXIT_REASON_XSETBV, "XSETBV" }, { EXIT_REASON_APIC_WRITE, "APIC_WRITE" }, { EXIT_REASON_RDRAND, "RDRAND" }, { EXIT_REASON_INVPCID, "INVPCID" }, { EXIT_REASON_VMFUNC, "VMFUNC" }, { EXIT_REASON_ENCLS, "ENCLS" }, { EXIT_REASON_RDSEED, "RDSEED" }, { EXIT_REASON_PML_FULL, "PML_FULL" }, { EXIT_REASON_XSAVES, "XSAVES" }, { EXIT_REASON_XRSTORS, "XRSTORS" }, { EXIT_REASON_UMWAIT, "UMWAIT" }, { EXIT_REASON_TPAUSE, "TPAUSE" }, { EXIT_REASON_BUS_LOCK, "BUS_LOCK" }
+#define EXIT_REASON_NOTIFY 75
+#define VMX_EXIT_REASONS { EXIT_REASON_EXCEPTION_NMI, "EXCEPTION_NMI" }, { EXIT_REASON_EXTERNAL_INTERRUPT, "EXTERNAL_INTERRUPT" }, { EXIT_REASON_TRIPLE_FAULT, "TRIPLE_FAULT" }, { EXIT_REASON_INIT_SIGNAL, "INIT_SIGNAL" }, { EXIT_REASON_SIPI_SIGNAL, "SIPI_SIGNAL" }, { EXIT_REASON_INTERRUPT_WINDOW, "INTERRUPT_WINDOW" }, { EXIT_REASON_NMI_WINDOW, "NMI_WINDOW" }, { EXIT_REASON_TASK_SWITCH, "TASK_SWITCH" }, { EXIT_REASON_CPUID, "CPUID" }, { EXIT_REASON_HLT, "HLT" }, { EXIT_REASON_INVD, "INVD" }, { EXIT_REASON_INVLPG, "INVLPG" }, { EXIT_REASON_RDPMC, "RDPMC" }, { EXIT_REASON_RDTSC, "RDTSC" }, { EXIT_REASON_VMCALL, "VMCALL" }, { EXIT_REASON_VMCLEAR, "VMCLEAR" }, { EXIT_REASON_VMLAUNCH, "VMLAUNCH" }, { EXIT_REASON_VMPTRLD, "VMPTRLD" }, { EXIT_REASON_VMPTRST, "VMPTRST" }, { EXIT_REASON_VMREAD, "VMREAD" }, { EXIT_REASON_VMRESUME, "VMRESUME" }, { EXIT_REASON_VMWRITE, "VMWRITE" }, { EXIT_REASON_VMOFF, "VMOFF" }, { EXIT_REASON_VMON, "VMON" }, { EXIT_REASON_CR_ACCESS, "CR_ACCESS" }, { EXIT_REASON_DR_ACCESS, "DR_ACCESS" }, { EXIT_REASON_IO_INSTRUCTION, "IO_INSTRUCTION" }, { EXIT_REASON_MSR_READ, "MSR_READ" }, { EXIT_REASON_MSR_WRITE, "MSR_WRITE" }, { EXIT_REASON_INVALID_STATE, "INVALID_STATE" }, { EXIT_REASON_MSR_LOAD_FAIL, "MSR_LOAD_FAIL" }, { EXIT_REASON_MWAIT_INSTRUCTION, "MWAIT_INSTRUCTION" }, { EXIT_REASON_MONITOR_TRAP_FLAG, "MONITOR_TRAP_FLAG" }, { EXIT_REASON_MONITOR_INSTRUCTION, "MONITOR_INSTRUCTION" }, { EXIT_REASON_PAUSE_INSTRUCTION, "PAUSE_INSTRUCTION" }, { EXIT_REASON_MCE_DURING_VMENTRY, "MCE_DURING_VMENTRY" }, { EXIT_REASON_TPR_BELOW_THRESHOLD, "TPR_BELOW_THRESHOLD" }, { EXIT_REASON_APIC_ACCESS, "APIC_ACCESS" }, { EXIT_REASON_EOI_INDUCED, "EOI_INDUCED" }, { EXIT_REASON_GDTR_IDTR, "GDTR_IDTR" }, { EXIT_REASON_LDTR_TR, "LDTR_TR" }, { EXIT_REASON_EPT_VIOLATION, "EPT_VIOLATION" }, { EXIT_REASON_EPT_MISCONFIG, "EPT_MISCONFIG" }, { EXIT_REASON_INVEPT, "INVEPT" }, { EXIT_REASON_RDTSCP, "RDTSCP" }, { EXIT_REASON_PREEMPTION_TIMER, "PREEMPTION_TIMER" }, { EXIT_REASON_INVVPID, "INVVPID" }, { EXIT_REASON_WBINVD, "WBINVD" }, { EXIT_REASON_XSETBV, "XSETBV" }, { EXIT_REASON_APIC_WRITE, "APIC_WRITE" }, { EXIT_REASON_RDRAND, "RDRAND" }, { EXIT_REASON_INVPCID, "INVPCID" }, { EXIT_REASON_VMFUNC, "VMFUNC" }, { EXIT_REASON_ENCLS, "ENCLS" }, { EXIT_REASON_RDSEED, "RDSEED" }, { EXIT_REASON_PML_FULL, "PML_FULL" }, { EXIT_REASON_XSAVES, "XSAVES" }, { EXIT_REASON_XRSTORS, "XRSTORS" }, { EXIT_REASON_UMWAIT, "UMWAIT" }, { EXIT_REASON_TPAUSE, "TPAUSE" }, { EXIT_REASON_BUS_LOCK, "BUS_LOCK" }, { EXIT_REASON_NOTIFY, "NOTIFY" }
 #define VMX_EXIT_REASON_FLAGS { VMX_EXIT_REASONS_FAILED_VMENTRY, "FAILED_VMENTRY" }
 #define VMX_ABORT_SAVE_GUEST_MSR_FAIL 1
 #define VMX_ABORT_LOAD_HOST_PDPTE_FAIL 2
diff --git a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/drm/amdgpu_drm.h b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/drm/amdgpu_drm.h
index 3764d51..658eb31 100644
--- a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/drm/amdgpu_drm.h
+++ b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/drm/amdgpu_drm.h
@@ -72,6 +72,7 @@
 #define AMDGPU_GEM_CREATE_VRAM_WIPE_ON_RELEASE (1 << 9)
 #define AMDGPU_GEM_CREATE_ENCRYPTED (1 << 10)
 #define AMDGPU_GEM_CREATE_PREEMPTIBLE (1 << 11)
+#define AMDGPU_GEM_CREATE_DISCARDABLE (1 << 12)
 struct drm_amdgpu_gem_create_in {
   __u64 bo_size;
   __u64 alignment;
@@ -112,6 +113,8 @@
 #define AMDGPU_CTX_OP_FREE_CTX 2
 #define AMDGPU_CTX_OP_QUERY_STATE 3
 #define AMDGPU_CTX_OP_QUERY_STATE2 4
+#define AMDGPU_CTX_OP_GET_STABLE_PSTATE 5
+#define AMDGPU_CTX_OP_SET_STABLE_PSTATE 6
 #define AMDGPU_CTX_NO_RESET 0
 #define AMDGPU_CTX_GUILTY_RESET 1
 #define AMDGPU_CTX_INNOCENT_RESET 2
@@ -127,6 +130,12 @@
 #define AMDGPU_CTX_PRIORITY_NORMAL 0
 #define AMDGPU_CTX_PRIORITY_HIGH 512
 #define AMDGPU_CTX_PRIORITY_VERY_HIGH 1023
+#define AMDGPU_CTX_STABLE_PSTATE_FLAGS_MASK 0xf
+#define AMDGPU_CTX_STABLE_PSTATE_NONE 0
+#define AMDGPU_CTX_STABLE_PSTATE_STANDARD 1
+#define AMDGPU_CTX_STABLE_PSTATE_MIN_SCLK 2
+#define AMDGPU_CTX_STABLE_PSTATE_MIN_MCLK 3
+#define AMDGPU_CTX_STABLE_PSTATE_PEAK 4
 struct drm_amdgpu_ctx_in {
   __u32 op;
   __u32 flags;
@@ -143,6 +152,10 @@
     __u32 hangs;
     __u32 reset_status;
   } state;
+  struct {
+    __u32 flags;
+    __u32 _pad;
+  } pstate;
 };
 union drm_amdgpu_ctx {
   struct drm_amdgpu_ctx_in in;
@@ -307,6 +320,7 @@
 #define AMDGPU_VM_MTYPE_CC (3 << 5)
 #define AMDGPU_VM_MTYPE_UC (4 << 5)
 #define AMDGPU_VM_MTYPE_RW (5 << 5)
+#define AMDGPU_VM_PAGE_NOALLOC (1 << 9)
 struct drm_amdgpu_gem_va {
   __u32 handle;
   __u32 _pad;
@@ -438,6 +452,12 @@
 #define AMDGPU_INFO_FW_TA 0x13
 #define AMDGPU_INFO_FW_DMCUB 0x14
 #define AMDGPU_INFO_FW_TOC 0x15
+#define AMDGPU_INFO_FW_CAP 0x16
+#define AMDGPU_INFO_FW_GFX_RLCP 0x17
+#define AMDGPU_INFO_FW_GFX_RLCV 0x18
+#define AMDGPU_INFO_FW_MES_KIQ 0x19
+#define AMDGPU_INFO_FW_MES 0x1a
+#define AMDGPU_INFO_FW_IMU 0x1b
 #define AMDGPU_INFO_NUM_BYTES_MOVED 0x0f
 #define AMDGPU_INFO_VRAM_USAGE 0x10
 #define AMDGPU_INFO_GTT_USAGE 0x11
@@ -575,6 +595,8 @@
 #define AMDGPU_VRAM_TYPE_DDR4 8
 #define AMDGPU_VRAM_TYPE_GDDR6 9
 #define AMDGPU_VRAM_TYPE_DDR5 10
+#define AMDGPU_VRAM_TYPE_LPDDR4 11
+#define AMDGPU_VRAM_TYPE_LPDDR5 12
 struct drm_amdgpu_info_device {
   __u32 device_id;
   __u32 chip_rev;
@@ -633,7 +655,7 @@
   __u32 ib_start_alignment;
   __u32 ib_size_alignment;
   __u32 available_rings;
-  __u32 _pad;
+  __u32 ip_discovery_version;
 };
 struct drm_amdgpu_info_num_handles {
   __u32 uvd_max_handles;
@@ -681,7 +703,11 @@
 #define AMDGPU_FAMILY_RV 142
 #define AMDGPU_FAMILY_NV 143
 #define AMDGPU_FAMILY_VGH 144
+#define AMDGPU_FAMILY_GC_11_0_0 145
 #define AMDGPU_FAMILY_YC 146
+#define AMDGPU_FAMILY_GC_11_0_1 148
+#define AMDGPU_FAMILY_GC_10_3_6 149
+#define AMDGPU_FAMILY_GC_10_3_7 151
 #ifdef __cplusplus
 }
 #endif
diff --git a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/drm/drm_fourcc.h b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/drm/drm_fourcc.h
index e845c8c..8188b8f 100644
--- a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/drm/drm_fourcc.h
+++ b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/drm/drm_fourcc.h
@@ -25,7 +25,17 @@
 #define fourcc_code(a,b,c,d) ((__u32) (a) | ((__u32) (b) << 8) | ((__u32) (c) << 16) | ((__u32) (d) << 24))
 #define DRM_FORMAT_BIG_ENDIAN (1U << 31)
 #define DRM_FORMAT_INVALID 0
+#define DRM_FORMAT_C1 fourcc_code('C', '1', ' ', ' ')
+#define DRM_FORMAT_C2 fourcc_code('C', '2', ' ', ' ')
+#define DRM_FORMAT_C4 fourcc_code('C', '4', ' ', ' ')
 #define DRM_FORMAT_C8 fourcc_code('C', '8', ' ', ' ')
+#define DRM_FORMAT_D1 fourcc_code('D', '1', ' ', ' ')
+#define DRM_FORMAT_D2 fourcc_code('D', '2', ' ', ' ')
+#define DRM_FORMAT_D4 fourcc_code('D', '4', ' ', ' ')
+#define DRM_FORMAT_D8 fourcc_code('D', '8', ' ', ' ')
+#define DRM_FORMAT_R1 fourcc_code('R', '1', ' ', ' ')
+#define DRM_FORMAT_R2 fourcc_code('R', '2', ' ', ' ')
+#define DRM_FORMAT_R4 fourcc_code('R', '4', ' ', ' ')
 #define DRM_FORMAT_R8 fourcc_code('R', '8', ' ', ' ')
 #define DRM_FORMAT_R10 fourcc_code('R', '1', '0', ' ')
 #define DRM_FORMAT_R12 fourcc_code('R', '1', '2', ' ')
@@ -86,7 +96,9 @@
 #define DRM_FORMAT_UYVY fourcc_code('U', 'Y', 'V', 'Y')
 #define DRM_FORMAT_VYUY fourcc_code('V', 'Y', 'U', 'Y')
 #define DRM_FORMAT_AYUV fourcc_code('A', 'Y', 'U', 'V')
+#define DRM_FORMAT_AVUY8888 fourcc_code('A', 'V', 'U', 'Y')
 #define DRM_FORMAT_XYUV8888 fourcc_code('X', 'Y', 'U', 'V')
+#define DRM_FORMAT_XVUY8888 fourcc_code('X', 'V', 'U', 'Y')
 #define DRM_FORMAT_VUY888 fourcc_code('V', 'U', '2', '4')
 #define DRM_FORMAT_VUY101010 fourcc_code('V', 'U', '3', '0')
 #define DRM_FORMAT_Y210 fourcc_code('Y', '2', '1', '0')
@@ -163,9 +175,15 @@
 #define I915_FORMAT_MOD_Y_TILED_GEN12_RC_CCS fourcc_mod_code(INTEL, 6)
 #define I915_FORMAT_MOD_Y_TILED_GEN12_MC_CCS fourcc_mod_code(INTEL, 7)
 #define I915_FORMAT_MOD_Y_TILED_GEN12_RC_CCS_CC fourcc_mod_code(INTEL, 8)
+#define I915_FORMAT_MOD_4_TILED fourcc_mod_code(INTEL, 9)
+#define I915_FORMAT_MOD_4_TILED_DG2_RC_CCS fourcc_mod_code(INTEL, 10)
+#define I915_FORMAT_MOD_4_TILED_DG2_MC_CCS fourcc_mod_code(INTEL, 11)
+#define I915_FORMAT_MOD_4_TILED_DG2_RC_CCS_CC fourcc_mod_code(INTEL, 12)
 #define DRM_FORMAT_MOD_SAMSUNG_64_32_TILE fourcc_mod_code(SAMSUNG, 1)
 #define DRM_FORMAT_MOD_SAMSUNG_16_16_TILE fourcc_mod_code(SAMSUNG, 2)
 #define DRM_FORMAT_MOD_QCOM_COMPRESSED fourcc_mod_code(QCOM, 1)
+#define DRM_FORMAT_MOD_QCOM_TILED3 fourcc_mod_code(QCOM, 3)
+#define DRM_FORMAT_MOD_QCOM_TILED2 fourcc_mod_code(QCOM, 2)
 #define DRM_FORMAT_MOD_VIVANTE_TILED fourcc_mod_code(VIVANTE, 1)
 #define DRM_FORMAT_MOD_VIVANTE_SUPER_TILED fourcc_mod_code(VIVANTE, 2)
 #define DRM_FORMAT_MOD_VIVANTE_SPLIT_TILED fourcc_mod_code(VIVANTE, 3)
@@ -235,11 +253,13 @@
 #define AMD_FMT_MOD_TILE_VER_GFX9 1
 #define AMD_FMT_MOD_TILE_VER_GFX10 2
 #define AMD_FMT_MOD_TILE_VER_GFX10_RBPLUS 3
+#define AMD_FMT_MOD_TILE_VER_GFX11 4
 #define AMD_FMT_MOD_TILE_GFX9_64K_S 9
 #define AMD_FMT_MOD_TILE_GFX9_64K_D 10
 #define AMD_FMT_MOD_TILE_GFX9_64K_S_X 25
 #define AMD_FMT_MOD_TILE_GFX9_64K_D_X 26
 #define AMD_FMT_MOD_TILE_GFX9_64K_R_X 27
+#define AMD_FMT_MOD_TILE_GFX11_256K_R_X 31
 #define AMD_FMT_MOD_DCC_BLOCK_64B 0
 #define AMD_FMT_MOD_DCC_BLOCK_128B 1
 #define AMD_FMT_MOD_DCC_BLOCK_256B 2
@@ -271,9 +291,9 @@
 #define AMD_FMT_MOD_RB_MASK 0x7
 #define AMD_FMT_MOD_PIPE_SHIFT 33
 #define AMD_FMT_MOD_PIPE_MASK 0x7
-#define AMD_FMT_MOD_SET(field,value) ((uint64_t) (value) << AMD_FMT_MOD_ ##field ##_SHIFT)
+#define AMD_FMT_MOD_SET(field,value) ((__u64) (value) << AMD_FMT_MOD_ ##field ##_SHIFT)
 #define AMD_FMT_MOD_GET(field,value) (((value) >> AMD_FMT_MOD_ ##field ##_SHIFT) & AMD_FMT_MOD_ ##field ##_MASK)
-#define AMD_FMT_MOD_CLEAR(field) (~((uint64_t) AMD_FMT_MOD_ ##field ##_MASK << AMD_FMT_MOD_ ##field ##_SHIFT))
+#define AMD_FMT_MOD_CLEAR(field) (~((__u64) AMD_FMT_MOD_ ##field ##_MASK << AMD_FMT_MOD_ ##field ##_SHIFT))
 #ifdef __cplusplus
 }
 #endif
diff --git a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/drm/i915_drm.h b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/drm/i915_drm.h
index 52bfad2..198b969 100644
--- a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/drm/i915_drm.h
+++ b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/drm/i915_drm.h
@@ -41,13 +41,14 @@
   I915_ENGINE_CLASS_COPY = 1,
   I915_ENGINE_CLASS_VIDEO = 2,
   I915_ENGINE_CLASS_VIDEO_ENHANCE = 3,
+  I915_ENGINE_CLASS_COMPUTE = 4,
   I915_ENGINE_CLASS_INVALID = - 1
 };
 struct i915_engine_class_instance {
   __u16 engine_class;
-  __u16 engine_instance;
 #define I915_ENGINE_CLASS_INVALID_NONE - 1
 #define I915_ENGINE_CLASS_INVALID_VIRTUAL - 2
+  __u16 engine_instance;
 };
 enum drm_i915_pmu_engine_sample {
   I915_SAMPLE_BUSY = 0,
@@ -367,10 +368,11 @@
 #define I915_PARAM_PERF_REVISION 54
 #define I915_PARAM_HAS_EXEC_TIMELINE_FENCES 55
 #define I915_PARAM_HAS_USERPTR_PROBE 56
-typedef struct drm_i915_getparam {
+struct drm_i915_getparam {
   __s32 param;
   int __user * value;
-} drm_i915_getparam_t;
+};
+typedef struct drm_i915_getparam drm_i915_getparam_t;
 #define I915_SETPARAM_USE_MI_BATCHBUFFER_START 1
 #define I915_SETPARAM_TEX_LRU_LOG_GRANULARITY 2
 #define I915_SETPARAM_ALLOW_BATCHBUFFER 3
@@ -525,13 +527,13 @@
 };
 struct drm_i915_gem_exec_fence {
   __u32 handle;
+  __u32 flags;
 #define I915_EXEC_FENCE_WAIT (1 << 0)
 #define I915_EXEC_FENCE_SIGNAL (1 << 1)
 #define __I915_EXEC_FENCE_UNKNOWN_FLAGS (- (I915_EXEC_FENCE_SIGNAL << 1))
-  __u32 flags;
 };
-#define DRM_I915_GEM_EXECBUFFER_EXT_TIMELINE_FENCES 0
 struct drm_i915_gem_execbuffer_ext_timeline_fences {
+#define DRM_I915_GEM_EXECBUFFER_EXT_TIMELINE_FENCES 0
   struct i915_user_extension base;
   __u64 fence_count;
   __u64 handles_ptr;
@@ -546,6 +548,7 @@
   __u32 DR4;
   __u32 num_cliprects;
   __u64 cliprects_ptr;
+  __u64 flags;
 #define I915_EXEC_RING_MASK (0x3f)
 #define I915_EXEC_DEFAULT (0 << 0)
 #define I915_EXEC_RENDER (1 << 0)
@@ -556,10 +559,6 @@
 #define I915_EXEC_CONSTANTS_REL_GENERAL (0 << 6)
 #define I915_EXEC_CONSTANTS_ABSOLUTE (1 << 6)
 #define I915_EXEC_CONSTANTS_REL_SURFACE (2 << 6)
-  __u64 flags;
-  __u64 rsvd1;
-  __u64 rsvd2;
-};
 #define I915_EXEC_GEN7_SOL_RESET (1 << 8)
 #define I915_EXEC_SECURE (1 << 9)
 #define I915_EXEC_IS_PINNED (1 << 10)
@@ -578,6 +577,9 @@
 #define I915_EXEC_FENCE_SUBMIT (1 << 20)
 #define I915_EXEC_USE_EXTENSIONS (1 << 21)
 #define __I915_EXEC_UNKNOWN_FLAGS (- (I915_EXEC_USE_EXTENSIONS << 1))
+  __u64 rsvd1;
+  __u64 rsvd2;
+};
 #define I915_EXEC_CONTEXT_ID_MASK (0xffffffff)
 #define i915_execbuffer2_set_context_id(eb2,context) (eb2).rsvd1 = context & I915_EXEC_CONTEXT_ID_MASK
 #define i915_execbuffer2_get_context_id(eb2) ((eb2).rsvd1 & I915_EXEC_CONTEXT_ID_MASK)
@@ -721,6 +723,8 @@
 #define I915_CONTEXT_CREATE_FLAGS_SINGLE_TIMELINE (1u << 1)
 #define I915_CONTEXT_CREATE_FLAGS_UNKNOWN (- (I915_CONTEXT_CREATE_FLAGS_SINGLE_TIMELINE << 1))
   __u64 extensions;
+#define I915_CONTEXT_CREATE_EXT_SETPARAM 0
+#define I915_CONTEXT_CREATE_EXT_CLONE 1
 };
 struct drm_i915_gem_context_param {
   __u32 ctx_id;
@@ -760,7 +764,7 @@
   __u16 num_siblings;
   __u32 flags;
   __u64 mbz64;
-  struct i915_engine_class_instance engines[0];
+  struct i915_engine_class_instance engines[];
 } __attribute__((packed));
 #define I915_DEFINE_CONTEXT_ENGINES_LOAD_BALANCE(name__,N__) struct { struct i915_user_extension base; __u16 engine_index; __u16 num_siblings; __u32 flags; __u64 mbz64; struct i915_engine_class_instance engines[N__]; \
 } __attribute__((packed)) name__
@@ -771,7 +775,7 @@
   __u16 num_bonds;
   __u64 flags;
   __u64 mbz64[4];
-  struct i915_engine_class_instance engines[0];
+  struct i915_engine_class_instance engines[];
 } __attribute__((packed));
 #define I915_DEFINE_CONTEXT_ENGINES_BOND(name__,N__) struct { struct i915_user_extension base; struct i915_engine_class_instance master; __u16 virtual_index; __u16 num_bonds; __u64 flags; __u64 mbz64[4]; struct i915_engine_class_instance engines[N__]; \
 } __attribute__((packed)) name__
@@ -783,8 +787,8 @@
   __u16 mbz16;
   __u64 flags;
   __u64 mbz64[3];
-  struct i915_engine_class_instance engines[0];
-} __packed;
+  struct i915_engine_class_instance engines[];
+} __attribute__((__packed__));
 #define I915_DEFINE_CONTEXT_ENGINES_PARALLEL_SUBMIT(name__,N__) struct { struct i915_user_extension base; __u16 engine_index; __u16 width; __u16 num_siblings; __u16 mbz16; __u64 flags; __u64 mbz64[3]; struct i915_engine_class_instance engines[N__]; \
 } __attribute__((packed)) name__
 struct i915_context_param_engines {
@@ -797,11 +801,9 @@
 #define I915_DEFINE_CONTEXT_PARAM_ENGINES(name__,N__) struct { __u64 extensions; struct i915_engine_class_instance engines[N__]; \
 } __attribute__((packed)) name__
 struct drm_i915_gem_context_create_ext_setparam {
-#define I915_CONTEXT_CREATE_EXT_SETPARAM 0
   struct i915_user_extension base;
   struct drm_i915_gem_context_param param;
 };
-#define I915_CONTEXT_CREATE_EXT_CLONE 1
 struct drm_i915_gem_context_destroy {
   __u32 ctx_id;
   __u32 pad;
@@ -894,6 +896,8 @@
 #define DRM_I915_QUERY_ENGINE_INFO 2
 #define DRM_I915_QUERY_PERF_CONFIG 3
 #define DRM_I915_QUERY_MEMORY_REGIONS 4
+#define DRM_I915_QUERY_HWCONFIG_BLOB 5
+#define DRM_I915_QUERY_GEOMETRY_SUBSLICES 6
   __s32 length;
   __u32 flags;
 #define DRM_I915_QUERY_PERF_CONFIG_LIST 1
@@ -956,7 +960,13 @@
   __u32 rsvd0;
   __u64 probed_size;
   __u64 unallocated_size;
-  __u64 rsvd1[8];
+  union {
+    __u64 rsvd1[8];
+    struct {
+      __u64 probed_cpu_visible_size;
+      __u64 unallocated_cpu_visible_size;
+    };
+  };
 };
 struct drm_i915_query_memory_regions {
   __u32 num_regions;
@@ -966,6 +976,7 @@
 struct drm_i915_gem_create_ext {
   __u64 size;
   __u32 handle;
+#define I915_GEM_CREATE_EXT_FLAG_NEEDS_CPU_ACCESS (1 << 0)
   __u32 flags;
 #define I915_GEM_CREATE_EXT_MEMORY_REGIONS 0
 #define I915_GEM_CREATE_EXT_PROTECTED_CONTENT 1
diff --git a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/drm/msm_drm.h b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/drm/msm_drm.h
index b4ba1d0..c2edefd 100644
--- a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/drm/msm_drm.h
+++ b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/drm/msm_drm.h
@@ -43,11 +43,18 @@
 #define MSM_PARAM_PP_PGTABLE 0x08
 #define MSM_PARAM_FAULTS 0x09
 #define MSM_PARAM_SUSPENDS 0x0a
+#define MSM_PARAM_SYSPROF 0x0b
+#define MSM_PARAM_COMM 0x0c
+#define MSM_PARAM_CMDLINE 0x0d
+#define MSM_PARAM_VA_START 0x0e
+#define MSM_PARAM_VA_SIZE 0x0f
 #define MSM_PARAM_NR_RINGS MSM_PARAM_PRIORITIES
 struct drm_msm_param {
   __u32 pipe;
   __u32 param;
   __u64 value;
+  __u32 len;
+  __u32 pad;
 };
 #define MSM_BO_SCANOUT 0x00000001
 #define MSM_BO_GPU_READONLY 0x00000002
@@ -66,6 +73,7 @@
 #define MSM_INFO_GET_IOVA 0x01
 #define MSM_INFO_SET_NAME 0x02
 #define MSM_INFO_GET_NAME 0x03
+#define MSM_INFO_SET_IOVA 0x04
 struct drm_msm_gem_info {
   __u32 handle;
   __u32 info;
@@ -119,7 +127,8 @@
 #define MSM_SUBMIT_SUDO 0x10000000
 #define MSM_SUBMIT_SYNCOBJ_IN 0x08000000
 #define MSM_SUBMIT_SYNCOBJ_OUT 0x04000000
-#define MSM_SUBMIT_FLAGS (MSM_SUBMIT_NO_IMPLICIT | MSM_SUBMIT_FENCE_FD_IN | MSM_SUBMIT_FENCE_FD_OUT | MSM_SUBMIT_SUDO | MSM_SUBMIT_SYNCOBJ_IN | MSM_SUBMIT_SYNCOBJ_OUT | 0)
+#define MSM_SUBMIT_FENCE_SN_IN 0x02000000
+#define MSM_SUBMIT_FLAGS (MSM_SUBMIT_NO_IMPLICIT | MSM_SUBMIT_FENCE_FD_IN | MSM_SUBMIT_FENCE_FD_OUT | MSM_SUBMIT_SUDO | MSM_SUBMIT_SYNCOBJ_IN | MSM_SUBMIT_SYNCOBJ_OUT | MSM_SUBMIT_FENCE_SN_IN | 0)
 #define MSM_SUBMIT_SYNCOBJ_RESET 0x00000001
 #define MSM_SUBMIT_SYNCOBJ_FLAGS (MSM_SUBMIT_SYNCOBJ_RESET | 0)
 struct drm_msm_gem_submit_syncobj {
@@ -172,6 +181,7 @@
   __u32 pad;
 };
 #define DRM_MSM_GET_PARAM 0x00
+#define DRM_MSM_SET_PARAM 0x01
 #define DRM_MSM_GEM_NEW 0x02
 #define DRM_MSM_GEM_INFO 0x03
 #define DRM_MSM_GEM_CPU_PREP 0x04
@@ -183,6 +193,7 @@
 #define DRM_MSM_SUBMITQUEUE_CLOSE 0x0B
 #define DRM_MSM_SUBMITQUEUE_QUERY 0x0C
 #define DRM_IOCTL_MSM_GET_PARAM DRM_IOWR(DRM_COMMAND_BASE + DRM_MSM_GET_PARAM, struct drm_msm_param)
+#define DRM_IOCTL_MSM_SET_PARAM DRM_IOW(DRM_COMMAND_BASE + DRM_MSM_SET_PARAM, struct drm_msm_param)
 #define DRM_IOCTL_MSM_GEM_NEW DRM_IOWR(DRM_COMMAND_BASE + DRM_MSM_GEM_NEW, struct drm_msm_gem_new)
 #define DRM_IOCTL_MSM_GEM_INFO DRM_IOWR(DRM_COMMAND_BASE + DRM_MSM_GEM_INFO, struct drm_msm_gem_info)
 #define DRM_IOCTL_MSM_GEM_CPU_PREP DRM_IOW(DRM_COMMAND_BASE + DRM_MSM_GEM_CPU_PREP, struct drm_msm_gem_cpu_prep)
diff --git a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/drm/panfrost_drm.h b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/drm/panfrost_drm.h
index 1f4473d..04a85df 100644
--- a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/drm/panfrost_drm.h
+++ b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/drm/panfrost_drm.h
@@ -136,6 +136,38 @@
   __u32 madv;
   __u32 retained;
 };
+#define PANFROSTDUMP_MAJOR 1
+#define PANFROSTDUMP_MINOR 0
+#define PANFROSTDUMP_MAGIC 0x464E4150
+#define PANFROSTDUMP_BUF_REG 0
+#define PANFROSTDUMP_BUF_BOMAP (PANFROSTDUMP_BUF_REG + 1)
+#define PANFROSTDUMP_BUF_BO (PANFROSTDUMP_BUF_BOMAP + 1)
+#define PANFROSTDUMP_BUF_TRAILER (PANFROSTDUMP_BUF_BO + 1)
+struct panfrost_dump_object_header {
+  __u32 magic;
+  __u32 type;
+  __u32 file_size;
+  __u32 file_offset;
+  union {
+    struct {
+      __u64 jc;
+      __u32 gpu_id;
+      __u32 major;
+      __u32 minor;
+      __u64 nbos;
+    } reghdr;
+    struct {
+      __u32 valid;
+      __u64 iova;
+      __u32 data[2];
+    } bomap;
+    __u32 sizer[496];
+  };
+};
+struct panfrost_dump_registers {
+  __u32 reg;
+  __u32 value;
+};
 #ifdef __cplusplus
 }
 #endif
diff --git a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/drm/vmwgfx_drm.h b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/drm/vmwgfx_drm.h
index 395743b..2f75589 100644
--- a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/drm/vmwgfx_drm.h
+++ b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/drm/vmwgfx_drm.h
@@ -76,6 +76,7 @@
 #define DRM_VMW_PARAM_SM4_1 14
 #define DRM_VMW_PARAM_SM5 15
 #define DRM_VMW_PARAM_GL43 16
+#define DRM_VMW_PARAM_DEVICE_ID 17
 enum drm_vmw_handle_type {
   DRM_VMW_HANDLE_LEGACY = 0,
   DRM_VMW_HANDLE_PRIME = 1
diff --git a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/acct.h b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/acct.h
index aecc9f6..ba9d25f 100644
--- a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/acct.h
+++ b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/acct.h
@@ -74,6 +74,7 @@
 #define ACOMPAT 0x04
 #define ACORE 0x08
 #define AXSIG 0x10
+#define AGROUP 0x20
 #if defined(__BYTE_ORDER) ? __BYTE_ORDER == __BIG_ENDIAN : defined(__BIG_ENDIAN)
 #define ACCT_BYTEORDER 0x80
 #elif defined(__BYTE_ORDER)?__BYTE_ORDER==__LITTLE_ENDIAN:defined(__LITTLE_ENDIAN)
diff --git a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/agpgart.h b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/agpgart.h
index 3b126f1..9dda7bf 100644
--- a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/agpgart.h
+++ b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/agpgart.h
@@ -38,7 +38,6 @@
 #define FALSE 0
 #endif
 #include <linux/types.h>
-#include <stdlib.h>
 struct agp_version {
   __u16 major;
   __u16 minor;
@@ -48,10 +47,10 @@
   __u32 bridge_id;
   __u32 agp_mode;
   unsigned long aper_base;
-  size_t aper_size;
-  size_t pg_total;
-  size_t pg_system;
-  size_t pg_used;
+  __kernel_size_t aper_size;
+  __kernel_size_t pg_total;
+  __kernel_size_t pg_system;
+  __kernel_size_t pg_used;
 } agp_info;
 typedef struct _agp_setup {
   __u32 agp_mode;
diff --git a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/android/binder.h b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/android/binder.h
index ded1756..52f4c6b 100644
--- a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/android/binder.h
+++ b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/android/binder.h
@@ -127,6 +127,11 @@
   __u32 sync_recv;
   __u32 async_recv;
 };
+struct binder_extended_error {
+  __u32 id;
+  __u32 command;
+  __s32 param;
+};
 #define BINDER_WRITE_READ _IOWR('b', 1, struct binder_write_read)
 #define BINDER_SET_IDLE_TIMEOUT _IOW('b', 3, __s64)
 #define BINDER_SET_MAX_THREADS _IOW('b', 5, __u32)
@@ -140,12 +145,14 @@
 #define BINDER_FREEZE _IOW('b', 14, struct binder_freeze_info)
 #define BINDER_GET_FROZEN_INFO _IOWR('b', 15, struct binder_frozen_status_info)
 #define BINDER_ENABLE_ONEWAY_SPAM_DETECTION _IOW('b', 16, __u32)
+#define BINDER_GET_EXTENDED_ERROR _IOWR('b', 17, struct binder_extended_error)
 enum transaction_flags {
   TF_ONE_WAY = 0x01,
   TF_ROOT_OBJECT = 0x04,
   TF_STATUS_CODE = 0x08,
   TF_ACCEPT_FDS = 0x10,
   TF_CLEAR_BUF = 0x20,
+  TF_UPDATE_TXN = 0x40,
 };
 struct binder_transaction_data {
   union {
@@ -155,8 +162,8 @@
   binder_uintptr_t cookie;
   __u32 code;
   __u32 flags;
-  pid_t sender_pid;
-  uid_t sender_euid;
+  __kernel_pid_t sender_pid;
+  __kernel_uid32_t sender_euid;
   binder_size_t data_size;
   binder_size_t offsets_size;
   union {
@@ -182,7 +189,7 @@
 struct binder_handle_cookie {
   __u32 handle;
   binder_uintptr_t cookie;
-} __packed;
+} __attribute__((__packed__));
 struct binder_pri_desc {
   __s32 priority;
   __u32 desc;
diff --git a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/ashmem.h b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/ashmem.h
index 174667f..88f0e81 100644
--- a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/ashmem.h
+++ b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/ashmem.h
@@ -41,4 +41,5 @@
 #define ASHMEM_UNPIN _IOW(__ASHMEMIOC, 8, struct ashmem_pin)
 #define ASHMEM_GET_PIN_STATUS _IO(__ASHMEMIOC, 9)
 #define ASHMEM_PURGE_ALL_CACHES _IO(__ASHMEMIOC, 10)
+#define ASHMEM_GET_FILE_ID _IOR(__ASHMEMIOC, 11, unsigned long)
 #endif
diff --git a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/audit.h b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/audit.h
index 30a94af..f7c969b 100644
--- a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/audit.h
+++ b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/audit.h
@@ -140,7 +140,7 @@
 #define AUDIT_MAX_KEY_LEN 256
 #define AUDIT_BITMASK_SIZE 64
 #define AUDIT_WORD(nr) ((__u32) ((nr) / 32))
-#define AUDIT_BIT(nr) (1 << ((nr) - AUDIT_WORD(nr) * 32))
+#define AUDIT_BIT(nr) (1U << ((nr) - AUDIT_WORD(nr) * 32))
 #define AUDIT_SYSCALL_CLASSES 16
 #define AUDIT_CLASS_DIR_WRITE 0
 #define AUDIT_CLASS_DIR_WRITE_32 1
@@ -323,6 +323,8 @@
 #define AUDIT_ARCH_UNICORE (EM_UNICORE | __AUDIT_ARCH_LE)
 #define AUDIT_ARCH_X86_64 (EM_X86_64 | __AUDIT_ARCH_64BIT | __AUDIT_ARCH_LE)
 #define AUDIT_ARCH_XTENSA (EM_XTENSA)
+#define AUDIT_ARCH_LOONGARCH32 (EM_LOONGARCH | __AUDIT_ARCH_LE)
+#define AUDIT_ARCH_LOONGARCH64 (EM_LOONGARCH | __AUDIT_ARCH_64BIT | __AUDIT_ARCH_LE)
 #define AUDIT_PERM_EXEC 1
 #define AUDIT_PERM_WRITE 2
 #define AUDIT_PERM_READ 4
diff --git a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/blkzoned.h b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/blkzoned.h
index b551e8b..e41ac9f 100644
--- a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/blkzoned.h
+++ b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/blkzoned.h
@@ -54,7 +54,7 @@
   __u64 sector;
   __u32 nr_zones;
   __u32 flags;
-  struct blk_zone zones[0];
+  struct blk_zone zones[];
 };
 struct blk_zone_range {
   __u64 sector;
diff --git a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/bpf.h b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/bpf.h
index d363e81..807884a 100644
--- a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/bpf.h
+++ b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/bpf.h
@@ -74,10 +74,27 @@
   __u64 cgroup_inode_id;
   __u32 attach_type;
 };
+enum bpf_cgroup_iter_order {
+  BPF_CGROUP_ITER_ORDER_UNSPEC = 0,
+  BPF_CGROUP_ITER_SELF_ONLY,
+  BPF_CGROUP_ITER_DESCENDANTS_PRE,
+  BPF_CGROUP_ITER_DESCENDANTS_POST,
+  BPF_CGROUP_ITER_ANCESTORS_UP,
+};
 union bpf_iter_link_info {
   struct {
     __u32 map_fd;
   } map;
+  struct {
+    enum bpf_cgroup_iter_order order;
+    __u32 cgroup_fd;
+    __u64 cgroup_id;
+  } cgroup;
+  struct {
+    __u32 tid;
+    __u32 pid;
+    __u32 pid_fd;
+  } task;
 };
 enum bpf_cmd {
   BPF_MAP_CREATE,
@@ -150,6 +167,7 @@
   BPF_MAP_TYPE_INODE_STORAGE,
   BPF_MAP_TYPE_TASK_STORAGE,
   BPF_MAP_TYPE_BLOOM_FILTER,
+  BPF_MAP_TYPE_USER_RINGBUF,
 };
 enum bpf_prog_type {
   BPF_PROG_TYPE_UNSPEC,
@@ -228,6 +246,8 @@
   BPF_SK_REUSEPORT_SELECT,
   BPF_SK_REUSEPORT_SELECT_OR_MIGRATE,
   BPF_PERF_EVENT,
+  BPF_TRACE_KPROBE_MULTI,
+  BPF_LSM_CGROUP,
   __MAX_BPF_ATTACH_TYPE
 };
 #define MAX_BPF_ATTACH_TYPE __MAX_BPF_ATTACH_TYPE
@@ -240,6 +260,8 @@
   BPF_LINK_TYPE_NETNS = 5,
   BPF_LINK_TYPE_XDP = 6,
   BPF_LINK_TYPE_PERF_EVENT = 7,
+  BPF_LINK_TYPE_KPROBE_MULTI = 8,
+  BPF_LINK_TYPE_STRUCT_OPS = 9,
   MAX_BPF_LINK_TYPE,
 };
 #define BPF_F_ALLOW_OVERRIDE (1U << 0)
@@ -250,6 +272,8 @@
 #define BPF_F_TEST_RND_HI32 (1U << 2)
 #define BPF_F_TEST_STATE_FREQ (1U << 3)
 #define BPF_F_SLEEPABLE (1U << 4)
+#define BPF_F_XDP_HAS_FRAGS (1U << 5)
+#define BPF_F_KPROBE_MULTI_RETURN (1U << 0)
 #define BPF_PSEUDO_MAP_FD 1
 #define BPF_PSEUDO_MAP_IDX 5
 #define BPF_PSEUDO_MAP_VALUE 2
@@ -281,6 +305,7 @@
 };
 #define BPF_F_QUERY_EFFECTIVE (1U << 0)
 #define BPF_F_TEST_RUN_ON_CPU (1U << 0)
+#define BPF_F_TEST_XDP_LIVE_FRAMES (1U << 1)
 enum bpf_stats_type {
   BPF_STATS_RUN_TIME = 0,
 };
@@ -392,6 +417,7 @@
     __aligned_u64 ctx_out;
     __u32 flags;
     __u32 cpu;
+    __u32 batch_size;
   } test;
   struct {
     union {
@@ -416,6 +442,7 @@
     __u32 attach_flags;
     __aligned_u64 prog_ids;
     __u32 prog_cnt;
+    __aligned_u64 prog_attach_flags;
   } query;
   struct {
     __u64 name;
@@ -456,6 +483,17 @@
       struct {
         __u64 bpf_cookie;
       } perf_event;
+      struct {
+        __u32 flags;
+        __u32 cnt;
+        __aligned_u64 syms;
+        __aligned_u64 addrs;
+        __aligned_u64 cookies;
+      } kprobe_multi;
+      struct {
+        __u32 target_btf_id;
+        __u64 cookie;
+      } tracing;
     };
   } link_create;
   struct {
@@ -480,7 +518,7 @@
     __u32 flags;
   } prog_bind_map;
 } __attribute__((aligned(8)));
-#define __BPF_FUNC_MAPPER(FN) FN(unspec), FN(map_lookup_elem), FN(map_update_elem), FN(map_delete_elem), FN(probe_read), FN(ktime_get_ns), FN(trace_printk), FN(get_prandom_u32), FN(get_smp_processor_id), FN(skb_store_bytes), FN(l3_csum_replace), FN(l4_csum_replace), FN(tail_call), FN(clone_redirect), FN(get_current_pid_tgid), FN(get_current_uid_gid), FN(get_current_comm), FN(get_cgroup_classid), FN(skb_vlan_push), FN(skb_vlan_pop), FN(skb_get_tunnel_key), FN(skb_set_tunnel_key), FN(perf_event_read), FN(redirect), FN(get_route_realm), FN(perf_event_output), FN(skb_load_bytes), FN(get_stackid), FN(csum_diff), FN(skb_get_tunnel_opt), FN(skb_set_tunnel_opt), FN(skb_change_proto), FN(skb_change_type), FN(skb_under_cgroup), FN(get_hash_recalc), FN(get_current_task), FN(probe_write_user), FN(current_task_under_cgroup), FN(skb_change_tail), FN(skb_pull_data), FN(csum_update), FN(set_hash_invalid), FN(get_numa_node_id), FN(skb_change_head), FN(xdp_adjust_head), FN(probe_read_str), FN(get_socket_cookie), FN(get_socket_uid), FN(set_hash), FN(setsockopt), FN(skb_adjust_room), FN(redirect_map), FN(sk_redirect_map), FN(sock_map_update), FN(xdp_adjust_meta), FN(perf_event_read_value), FN(perf_prog_read_value), FN(getsockopt), FN(override_return), FN(sock_ops_cb_flags_set), FN(msg_redirect_map), FN(msg_apply_bytes), FN(msg_cork_bytes), FN(msg_pull_data), FN(bind), FN(xdp_adjust_tail), FN(skb_get_xfrm_state), FN(get_stack), FN(skb_load_bytes_relative), FN(fib_lookup), FN(sock_hash_update), FN(msg_redirect_hash), FN(sk_redirect_hash), FN(lwt_push_encap), FN(lwt_seg6_store_bytes), FN(lwt_seg6_adjust_srh), FN(lwt_seg6_action), FN(rc_repeat), FN(rc_keydown), FN(skb_cgroup_id), FN(get_current_cgroup_id), FN(get_local_storage), FN(sk_select_reuseport), FN(skb_ancestor_cgroup_id), FN(sk_lookup_tcp), FN(sk_lookup_udp), FN(sk_release), FN(map_push_elem), FN(map_pop_elem), FN(map_peek_elem), FN(msg_push_data), FN(msg_pop_data), FN(rc_pointer_rel), FN(spin_lock), FN(spin_unlock), FN(sk_fullsock), FN(tcp_sock), FN(skb_ecn_set_ce), FN(get_listener_sock), FN(skc_lookup_tcp), FN(tcp_check_syncookie), FN(sysctl_get_name), FN(sysctl_get_current_value), FN(sysctl_get_new_value), FN(sysctl_set_new_value), FN(strtol), FN(strtoul), FN(sk_storage_get), FN(sk_storage_delete), FN(send_signal), FN(tcp_gen_syncookie), FN(skb_output), FN(probe_read_user), FN(probe_read_kernel), FN(probe_read_user_str), FN(probe_read_kernel_str), FN(tcp_send_ack), FN(send_signal_thread), FN(jiffies64), FN(read_branch_records), FN(get_ns_current_pid_tgid), FN(xdp_output), FN(get_netns_cookie), FN(get_current_ancestor_cgroup_id), FN(sk_assign), FN(ktime_get_boot_ns), FN(seq_printf), FN(seq_write), FN(sk_cgroup_id), FN(sk_ancestor_cgroup_id), FN(ringbuf_output), FN(ringbuf_reserve), FN(ringbuf_submit), FN(ringbuf_discard), FN(ringbuf_query), FN(csum_level), FN(skc_to_tcp6_sock), FN(skc_to_tcp_sock), FN(skc_to_tcp_timewait_sock), FN(skc_to_tcp_request_sock), FN(skc_to_udp6_sock), FN(get_task_stack), FN(load_hdr_opt), FN(store_hdr_opt), FN(reserve_hdr_opt), FN(inode_storage_get), FN(inode_storage_delete), FN(d_path), FN(copy_from_user), FN(snprintf_btf), FN(seq_printf_btf), FN(skb_cgroup_classid), FN(redirect_neigh), FN(per_cpu_ptr), FN(this_cpu_ptr), FN(redirect_peer), FN(task_storage_get), FN(task_storage_delete), FN(get_current_task_btf), FN(bprm_opts_set), FN(ktime_get_coarse_ns), FN(ima_inode_hash), FN(sock_from_file), FN(check_mtu), FN(for_each_map_elem), FN(snprintf), FN(sys_bpf), FN(btf_find_by_name_kind), FN(sys_close), FN(timer_init), FN(timer_set_callback), FN(timer_start), FN(timer_cancel), FN(get_func_ip), FN(get_attach_cookie), FN(task_pt_regs), FN(get_branch_snapshot), FN(trace_vprintk), FN(skc_to_unix_sock), FN(kallsyms_lookup_name), FN(find_vma), FN(loop), FN(strncmp), FN(get_func_arg), FN(get_func_ret), FN(get_func_arg_cnt),
+#define __BPF_FUNC_MAPPER(FN) FN(unspec), FN(map_lookup_elem), FN(map_update_elem), FN(map_delete_elem), FN(probe_read), FN(ktime_get_ns), FN(trace_printk), FN(get_prandom_u32), FN(get_smp_processor_id), FN(skb_store_bytes), FN(l3_csum_replace), FN(l4_csum_replace), FN(tail_call), FN(clone_redirect), FN(get_current_pid_tgid), FN(get_current_uid_gid), FN(get_current_comm), FN(get_cgroup_classid), FN(skb_vlan_push), FN(skb_vlan_pop), FN(skb_get_tunnel_key), FN(skb_set_tunnel_key), FN(perf_event_read), FN(redirect), FN(get_route_realm), FN(perf_event_output), FN(skb_load_bytes), FN(get_stackid), FN(csum_diff), FN(skb_get_tunnel_opt), FN(skb_set_tunnel_opt), FN(skb_change_proto), FN(skb_change_type), FN(skb_under_cgroup), FN(get_hash_recalc), FN(get_current_task), FN(probe_write_user), FN(current_task_under_cgroup), FN(skb_change_tail), FN(skb_pull_data), FN(csum_update), FN(set_hash_invalid), FN(get_numa_node_id), FN(skb_change_head), FN(xdp_adjust_head), FN(probe_read_str), FN(get_socket_cookie), FN(get_socket_uid), FN(set_hash), FN(setsockopt), FN(skb_adjust_room), FN(redirect_map), FN(sk_redirect_map), FN(sock_map_update), FN(xdp_adjust_meta), FN(perf_event_read_value), FN(perf_prog_read_value), FN(getsockopt), FN(override_return), FN(sock_ops_cb_flags_set), FN(msg_redirect_map), FN(msg_apply_bytes), FN(msg_cork_bytes), FN(msg_pull_data), FN(bind), FN(xdp_adjust_tail), FN(skb_get_xfrm_state), FN(get_stack), FN(skb_load_bytes_relative), FN(fib_lookup), FN(sock_hash_update), FN(msg_redirect_hash), FN(sk_redirect_hash), FN(lwt_push_encap), FN(lwt_seg6_store_bytes), FN(lwt_seg6_adjust_srh), FN(lwt_seg6_action), FN(rc_repeat), FN(rc_keydown), FN(skb_cgroup_id), FN(get_current_cgroup_id), FN(get_local_storage), FN(sk_select_reuseport), FN(skb_ancestor_cgroup_id), FN(sk_lookup_tcp), FN(sk_lookup_udp), FN(sk_release), FN(map_push_elem), FN(map_pop_elem), FN(map_peek_elem), FN(msg_push_data), FN(msg_pop_data), FN(rc_pointer_rel), FN(spin_lock), FN(spin_unlock), FN(sk_fullsock), FN(tcp_sock), FN(skb_ecn_set_ce), FN(get_listener_sock), FN(skc_lookup_tcp), FN(tcp_check_syncookie), FN(sysctl_get_name), FN(sysctl_get_current_value), FN(sysctl_get_new_value), FN(sysctl_set_new_value), FN(strtol), FN(strtoul), FN(sk_storage_get), FN(sk_storage_delete), FN(send_signal), FN(tcp_gen_syncookie), FN(skb_output), FN(probe_read_user), FN(probe_read_kernel), FN(probe_read_user_str), FN(probe_read_kernel_str), FN(tcp_send_ack), FN(send_signal_thread), FN(jiffies64), FN(read_branch_records), FN(get_ns_current_pid_tgid), FN(xdp_output), FN(get_netns_cookie), FN(get_current_ancestor_cgroup_id), FN(sk_assign), FN(ktime_get_boot_ns), FN(seq_printf), FN(seq_write), FN(sk_cgroup_id), FN(sk_ancestor_cgroup_id), FN(ringbuf_output), FN(ringbuf_reserve), FN(ringbuf_submit), FN(ringbuf_discard), FN(ringbuf_query), FN(csum_level), FN(skc_to_tcp6_sock), FN(skc_to_tcp_sock), FN(skc_to_tcp_timewait_sock), FN(skc_to_tcp_request_sock), FN(skc_to_udp6_sock), FN(get_task_stack), FN(load_hdr_opt), FN(store_hdr_opt), FN(reserve_hdr_opt), FN(inode_storage_get), FN(inode_storage_delete), FN(d_path), FN(copy_from_user), FN(snprintf_btf), FN(seq_printf_btf), FN(skb_cgroup_classid), FN(redirect_neigh), FN(per_cpu_ptr), FN(this_cpu_ptr), FN(redirect_peer), FN(task_storage_get), FN(task_storage_delete), FN(get_current_task_btf), FN(bprm_opts_set), FN(ktime_get_coarse_ns), FN(ima_inode_hash), FN(sock_from_file), FN(check_mtu), FN(for_each_map_elem), FN(snprintf), FN(sys_bpf), FN(btf_find_by_name_kind), FN(sys_close), FN(timer_init), FN(timer_set_callback), FN(timer_start), FN(timer_cancel), FN(get_func_ip), FN(get_attach_cookie), FN(task_pt_regs), FN(get_branch_snapshot), FN(trace_vprintk), FN(skc_to_unix_sock), FN(kallsyms_lookup_name), FN(find_vma), FN(loop), FN(strncmp), FN(get_func_arg), FN(get_func_ret), FN(get_func_arg_cnt), FN(get_retval), FN(set_retval), FN(xdp_get_buff_len), FN(xdp_load_bytes), FN(xdp_store_bytes), FN(copy_from_user_task), FN(skb_set_tstamp), FN(ima_file_hash), FN(kptr_xchg), FN(map_lookup_percpu_elem), FN(skc_to_mptcp_sock), FN(dynptr_from_mem), FN(ringbuf_reserve_dynptr), FN(ringbuf_submit_dynptr), FN(ringbuf_discard_dynptr), FN(dynptr_read), FN(dynptr_write), FN(dynptr_data), FN(tcp_raw_gen_syncookie_ipv4), FN(tcp_raw_gen_syncookie_ipv6), FN(tcp_raw_check_syncookie_ipv4), FN(tcp_raw_check_syncookie_ipv6), FN(ktime_get_tai_ns), FN(user_ringbuf_drain),
 #define __BPF_ENUM_FN(x) BPF_FUNC_ ##x
 enum bpf_func_id {
   __BPF_FUNC_MAPPER(__BPF_ENUM_FN) __BPF_FUNC_MAX_ID,
@@ -517,6 +555,9 @@
   BPF_F_SEQ_NUMBER = (1ULL << 3),
 };
 enum {
+  BPF_F_TUNINFO_FLAGS = (1ULL << 4),
+};
+enum {
   BPF_F_INDEX_MASK = 0xffffffffULL,
   BPF_F_CURRENT_CPU = BPF_F_INDEX_MASK,
   BPF_F_CTXLEN_MASK = (0xfffffULL << 32),
@@ -595,6 +636,10 @@
 };
 #define __bpf_md_ptr(type,name) union { type name; __u64 : 64; \
 } __attribute__((aligned(8)))
+enum {
+  BPF_SKB_TSTAMP_UNSPEC,
+  BPF_SKB_TSTAMP_DELIVERY_MONO,
+};
 struct __sk_buff {
   __u32 len;
   __u32 pkt_type;
@@ -628,7 +673,8 @@
   __u32 gso_segs;
   __bpf_md_ptr(struct bpf_sock *, sk);
   __u32 gso_size;
-  __u32 : 32;
+  __u8 tstamp_type;
+  __u32 : 24;
   __u64 hwtstamp;
 };
 struct bpf_tunnel_key {
@@ -639,8 +685,15 @@
   };
   __u8 tunnel_tos;
   __u8 tunnel_ttl;
-  __u16 tunnel_ext;
+  union {
+    __u16 tunnel_ext;
+    __be16 tunnel_flags;
+  };
   __u32 tunnel_label;
+  union {
+    __u32 local_ipv4;
+    __u32 local_ipv6[4];
+  };
 };
 struct bpf_xfrm_state {
   __u32 reqid;
@@ -657,6 +710,7 @@
   BPF_DROP = 2,
   BPF_REDIRECT = 7,
   BPF_LWT_REROUTE = 128,
+  BPF_FLOW_DISSECTOR_CONTINUE = 129,
 };
 struct bpf_sock {
   __u32 bound_dev_if;
@@ -668,7 +722,8 @@
   __u32 src_ip4;
   __u32 src_ip6[4];
   __u32 src_port;
-  __u32 dst_port;
+  __be16 dst_port;
+  __u16 : 16;
   __u32 dst_ip4;
   __u32 dst_ip6[4];
   __u32 state;
@@ -818,6 +873,8 @@
   __u64 run_cnt;
   __u64 recursion_misses;
   __u32 verified_insns;
+  __u32 attach_btf_obj_id;
+  __u32 attach_btf_id;
 } __attribute__((aligned(8)));
 struct bpf_map_info {
   __u32 type;
@@ -871,6 +928,16 @@
           __u32 map_id;
         } map;
       };
+      union {
+        struct {
+          __u64 cgroup_id;
+          __u32 order;
+        } cgroup;
+        struct {
+          __u32 tid;
+          __u32 pid;
+        } task;
+      };
     } iter;
     struct {
       __u32 netns_ino;
@@ -1134,6 +1201,10 @@
   __u64 : 64;
   __u64 : 64;
 } __attribute__((aligned(8)));
+struct bpf_dynptr {
+  __u64 : 64;
+  __u64 : 64;
+} __attribute__((aligned(8)));
 struct bpf_sysctl {
   __u32 write;
   __u32 file_pos;
@@ -1160,7 +1231,8 @@
   __u32 protocol;
   __u32 remote_ip4;
   __u32 remote_ip6[4];
-  __u32 remote_port;
+  __be16 remote_port;
+  __u16 : 16;
   __u32 local_ip4;
   __u32 local_ip6[4];
   __u32 local_port;
@@ -1190,6 +1262,7 @@
   BPF_CORE_TYPE_SIZE = 9,
   BPF_CORE_ENUMVAL_EXISTS = 10,
   BPF_CORE_ENUMVAL_VALUE = 11,
+  BPF_CORE_TYPE_MATCHES = 12,
 };
 struct bpf_core_relo {
   __u32 insn_off;
diff --git a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/btf.h b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/btf.h
index fc57d3c..a1f68bf 100644
--- a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/btf.h
+++ b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/btf.h
@@ -65,6 +65,7 @@
   BTF_KIND_FLOAT = 16,
   BTF_KIND_DECL_TAG = 17,
   BTF_KIND_TYPE_TAG = 18,
+  BTF_KIND_ENUM64 = 19,
   NR_BTF_KINDS,
   BTF_KIND_MAX = NR_BTF_KINDS - 1,
 };
@@ -115,4 +116,9 @@
 struct btf_decl_tag {
   __s32 component_idx;
 };
+struct btf_enum64 {
+  __u32 name_off;
+  __u32 val_lo32;
+  __u32 val_hi32;
+};
 #endif
diff --git a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/btrfs.h b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/btrfs.h
index 08b96a3..506238f 100644
--- a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/btrfs.h
+++ b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/btrfs.h
@@ -59,7 +59,7 @@
   __u64 num_ref_copies;
   __u64 num_excl_copies;
   struct btrfs_qgroup_limit lim;
-  __u64 qgroups[0];
+  __u64 qgroups[];
 };
 struct btrfs_ioctl_qgroup_limit_args {
   __u64 qgroupid;
@@ -176,6 +176,7 @@
 #define BTRFS_FEATURE_COMPAT_RO_FREE_SPACE_TREE (1ULL << 0)
 #define BTRFS_FEATURE_COMPAT_RO_FREE_SPACE_TREE_VALID (1ULL << 1)
 #define BTRFS_FEATURE_COMPAT_RO_VERITY (1ULL << 2)
+#define BTRFS_FEATURE_COMPAT_RO_BLOCK_GROUP_TREE (1ULL << 3)
 #define BTRFS_FEATURE_INCOMPAT_MIXED_BACKREF (1ULL << 0)
 #define BTRFS_FEATURE_INCOMPAT_DEFAULT_SUBVOL (1ULL << 1)
 #define BTRFS_FEATURE_INCOMPAT_MIXED_GROUPS (1ULL << 2)
@@ -189,6 +190,7 @@
 #define BTRFS_FEATURE_INCOMPAT_METADATA_UUID (1ULL << 10)
 #define BTRFS_FEATURE_INCOMPAT_RAID1C34 (1ULL << 11)
 #define BTRFS_FEATURE_INCOMPAT_ZONED (1ULL << 12)
+#define BTRFS_FEATURE_INCOMPAT_EXTENT_TREE_V2 (1ULL << 13)
 struct btrfs_ioctl_feature_flags {
   __u64 compat_flags;
   __u64 compat_ro_flags;
@@ -303,7 +305,7 @@
 struct btrfs_ioctl_search_args_v2 {
   struct btrfs_ioctl_search_key key;
   __u64 buf_size;
-  __u64 buf[0];
+  __u64 buf[];
 };
 struct btrfs_ioctl_clone_range_args {
   __s64 src_fd;
@@ -334,7 +336,7 @@
   __u16 dest_count;
   __u16 reserved1;
   __u32 reserved2;
-  struct btrfs_ioctl_same_extent_info info[0];
+  struct btrfs_ioctl_same_extent_info info[];
 };
 struct btrfs_ioctl_space_info {
   __u64 flags;
@@ -344,14 +346,14 @@
 struct btrfs_ioctl_space_args {
   __u64 space_slots;
   __u64 total_spaces;
-  struct btrfs_ioctl_space_info spaces[0];
+  struct btrfs_ioctl_space_info spaces[];
 };
 struct btrfs_data_container {
   __u32 bytes_left;
   __u32 bytes_missing;
   __u32 elem_cnt;
   __u32 elem_missed;
-  __u64 val[0];
+  __u64 val[];
 };
 struct btrfs_ioctl_ino_path_args {
   __u64 inum;
@@ -421,7 +423,8 @@
 #define BTRFS_SEND_FLAG_OMIT_STREAM_HEADER 0x2
 #define BTRFS_SEND_FLAG_OMIT_END_CMD 0x4
 #define BTRFS_SEND_FLAG_VERSION 0x8
-#define BTRFS_SEND_FLAG_MASK (BTRFS_SEND_FLAG_NO_FILE_DATA | BTRFS_SEND_FLAG_OMIT_STREAM_HEADER | BTRFS_SEND_FLAG_OMIT_END_CMD | BTRFS_SEND_FLAG_VERSION)
+#define BTRFS_SEND_FLAG_COMPRESSED 0x10
+#define BTRFS_SEND_FLAG_MASK (BTRFS_SEND_FLAG_NO_FILE_DATA | BTRFS_SEND_FLAG_OMIT_STREAM_HEADER | BTRFS_SEND_FLAG_OMIT_END_CMD | BTRFS_SEND_FLAG_VERSION | BTRFS_SEND_FLAG_COMPRESSED)
 struct btrfs_ioctl_send_args {
   __s64 send_fd;
   __u64 clone_sources_count;
@@ -461,6 +464,29 @@
   __u8 num_items;
   __u8 align[7];
 };
+struct btrfs_ioctl_encoded_io_args {
+  const struct iovec __user * iov;
+  unsigned long iovcnt;
+  __s64 offset;
+  __u64 flags;
+  __u64 len;
+  __u64 unencoded_len;
+  __u64 unencoded_offset;
+  __u32 compression;
+  __u32 encryption;
+  __u8 reserved[64];
+};
+#define BTRFS_ENCODED_IO_COMPRESSION_NONE 0
+#define BTRFS_ENCODED_IO_COMPRESSION_ZLIB 1
+#define BTRFS_ENCODED_IO_COMPRESSION_ZSTD 2
+#define BTRFS_ENCODED_IO_COMPRESSION_LZO_4K 3
+#define BTRFS_ENCODED_IO_COMPRESSION_LZO_8K 4
+#define BTRFS_ENCODED_IO_COMPRESSION_LZO_16K 5
+#define BTRFS_ENCODED_IO_COMPRESSION_LZO_32K 6
+#define BTRFS_ENCODED_IO_COMPRESSION_LZO_64K 7
+#define BTRFS_ENCODED_IO_COMPRESSION_TYPES 8
+#define BTRFS_ENCODED_IO_ENCRYPTION_NONE 0
+#define BTRFS_ENCODED_IO_ENCRYPTION_TYPES 1
 enum btrfs_err_code {
   BTRFS_ERROR_DEV_RAID1_MIN_NOT_MET = 1,
   BTRFS_ERROR_DEV_RAID10_MIN_NOT_MET,
@@ -534,4 +560,6 @@
 #define BTRFS_IOC_GET_SUBVOL_ROOTREF _IOWR(BTRFS_IOCTL_MAGIC, 61, struct btrfs_ioctl_get_subvol_rootref_args)
 #define BTRFS_IOC_INO_LOOKUP_USER _IOWR(BTRFS_IOCTL_MAGIC, 62, struct btrfs_ioctl_ino_lookup_user_args)
 #define BTRFS_IOC_SNAP_DESTROY_V2 _IOW(BTRFS_IOCTL_MAGIC, 63, struct btrfs_ioctl_vol_args_v2)
+#define BTRFS_IOC_ENCODED_READ _IOR(BTRFS_IOCTL_MAGIC, 64, struct btrfs_ioctl_encoded_io_args)
+#define BTRFS_IOC_ENCODED_WRITE _IOW(BTRFS_IOCTL_MAGIC, 64, struct btrfs_ioctl_encoded_io_args)
 #endif
diff --git a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/btrfs_tree.h b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/btrfs_tree.h
index 0476733..6cd46dd 100644
--- a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/btrfs_tree.h
+++ b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/btrfs_tree.h
@@ -31,6 +31,7 @@
 #define BTRFS_QUOTA_TREE_OBJECTID 8ULL
 #define BTRFS_UUID_TREE_OBJECTID 9ULL
 #define BTRFS_FREE_SPACE_TREE_OBJECTID 10ULL
+#define BTRFS_BLOCK_GROUP_TREE_OBJECTID 11ULL
 #define BTRFS_DEV_STATS_OBJECTID 0ULL
 #define BTRFS_BALANCE_OBJECTID - 4ULL
 #define BTRFS_ORPHAN_OBJECTID - 5ULL
@@ -220,7 +221,7 @@
   __le64 parent_objectid;
   __le64 index;
   __le16 name_len;
-  __u8 name[0];
+  __u8 name[];
 } __attribute__((__packed__));
 struct btrfs_timespec {
   __le64 sec;
@@ -372,18 +373,6 @@
 #define BTRFS_BLOCK_GROUP_RAID1C3 (1ULL << 9)
 #define BTRFS_BLOCK_GROUP_RAID1C4 (1ULL << 10)
 #define BTRFS_BLOCK_GROUP_RESERVED (BTRFS_AVAIL_ALLOC_BIT_SINGLE | BTRFS_SPACE_INFO_GLOBAL_RSV)
-enum btrfs_raid_types {
-  BTRFS_RAID_RAID10,
-  BTRFS_RAID_RAID1,
-  BTRFS_RAID_DUP,
-  BTRFS_RAID_RAID0,
-  BTRFS_RAID_SINGLE,
-  BTRFS_RAID_RAID5,
-  BTRFS_RAID_RAID6,
-  BTRFS_RAID_RAID1C3,
-  BTRFS_RAID_RAID1C4,
-  BTRFS_NR_RAID_TYPES
-};
 #define BTRFS_BLOCK_GROUP_TYPE_MASK (BTRFS_BLOCK_GROUP_DATA | BTRFS_BLOCK_GROUP_SYSTEM | BTRFS_BLOCK_GROUP_METADATA)
 #define BTRFS_BLOCK_GROUP_PROFILE_MASK (BTRFS_BLOCK_GROUP_RAID0 | BTRFS_BLOCK_GROUP_RAID1 | BTRFS_BLOCK_GROUP_RAID1C3 | BTRFS_BLOCK_GROUP_RAID1C4 | BTRFS_BLOCK_GROUP_RAID5 | BTRFS_BLOCK_GROUP_RAID6 | BTRFS_BLOCK_GROUP_DUP | BTRFS_BLOCK_GROUP_RAID10)
 #define BTRFS_BLOCK_GROUP_RAID56_MASK (BTRFS_BLOCK_GROUP_RAID5 | BTRFS_BLOCK_GROUP_RAID6)
@@ -405,6 +394,7 @@
 #define BTRFS_QGROUP_STATUS_FLAG_ON (1ULL << 0)
 #define BTRFS_QGROUP_STATUS_FLAG_RESCAN (1ULL << 1)
 #define BTRFS_QGROUP_STATUS_FLAG_INCONSISTENT (1ULL << 2)
+#define BTRFS_QGROUP_STATUS_FLAGS_MASK (BTRFS_QGROUP_STATUS_FLAG_ON | BTRFS_QGROUP_STATUS_FLAG_RESCAN | BTRFS_QGROUP_STATUS_FLAG_INCONSISTENT)
 #define BTRFS_QGROUP_STATUS_VERSION 1
 struct btrfs_qgroup_status_item {
   __le64 version;
diff --git a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/cachefiles.h b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/cachefiles.h
new file mode 100644
index 0000000..f5a58a5
--- /dev/null
+++ b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/cachefiles.h
@@ -0,0 +1,48 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _LINUX_CACHEFILES_H
+#define _LINUX_CACHEFILES_H
+#include <linux/types.h>
+#include <linux/ioctl.h>
+#define CACHEFILES_MSG_MAX_SIZE 1024
+enum cachefiles_opcode {
+  CACHEFILES_OP_OPEN,
+  CACHEFILES_OP_CLOSE,
+  CACHEFILES_OP_READ,
+};
+struct cachefiles_msg {
+  __u32 msg_id;
+  __u32 opcode;
+  __u32 len;
+  __u32 object_id;
+  __u8 data[];
+};
+struct cachefiles_open {
+  __u32 volume_key_size;
+  __u32 cookie_key_size;
+  __u32 fd;
+  __u32 flags;
+  __u8 data[];
+};
+struct cachefiles_read {
+  __u64 off;
+  __u64 len;
+};
+#define CACHEFILES_IOC_READ_COMPLETE _IOW(0x98, 1, int)
+#endif
diff --git a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/can.h b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/can.h
index 30eeca2..1365dba 100644
--- a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/can.h
+++ b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/can.h
@@ -20,21 +20,29 @@
 #define _UAPI_CAN_H
 #include <linux/types.h>
 #include <linux/socket.h>
+#include <linux/stddef.h>
 #define CAN_EFF_FLAG 0x80000000U
 #define CAN_RTR_FLAG 0x40000000U
 #define CAN_ERR_FLAG 0x20000000U
 #define CAN_SFF_MASK 0x000007FFU
 #define CAN_EFF_MASK 0x1FFFFFFFU
 #define CAN_ERR_MASK 0x1FFFFFFFU
+#define CANXL_PRIO_MASK CAN_SFF_MASK
 typedef __u32 canid_t;
 #define CAN_SFF_ID_BITS 11
 #define CAN_EFF_ID_BITS 29
+#define CANXL_PRIO_BITS CAN_SFF_ID_BITS
 typedef __u32 can_err_mask_t;
 #define CAN_MAX_DLC 8
 #define CAN_MAX_RAW_DLC 15
 #define CAN_MAX_DLEN 8
 #define CANFD_MAX_DLC 15
 #define CANFD_MAX_DLEN 64
+#define CANXL_MIN_DLC 0
+#define CANXL_MAX_DLC 2047
+#define CANXL_MAX_DLC_MASK 0x07FF
+#define CANXL_MIN_DLEN 1
+#define CANXL_MAX_DLEN 2048
 struct can_frame {
   canid_t can_id;
   union {
@@ -57,8 +65,22 @@
   __u8 __res1;
   __u8 data[CANFD_MAX_DLEN] __attribute__((aligned(8)));
 };
+#define CANXL_XLF 0x80
+#define CANXL_SEC 0x01
+struct canxl_frame {
+  canid_t prio;
+  __u8 flags;
+  __u8 sdt;
+  __u16 len;
+  __u32 af;
+  __u8 data[CANXL_MAX_DLEN];
+};
 #define CAN_MTU (sizeof(struct can_frame))
 #define CANFD_MTU (sizeof(struct canfd_frame))
+#define CANXL_MTU (sizeof(struct canxl_frame))
+#define CANXL_HDR_SIZE (offsetof(struct canxl_frame, data))
+#define CANXL_MIN_MTU (CANXL_HDR_SIZE + 64)
+#define CANXL_MAX_MTU CANXL_MTU
 #define CAN_RAW 1
 #define CAN_BCM 2
 #define CAN_TP16 3
diff --git a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/can/bcm.h b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/can/bcm.h
index 42e0782..f5ab2c2 100644
--- a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/can/bcm.h
+++ b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/can/bcm.h
@@ -31,7 +31,7 @@
   struct bcm_timeval ival1, ival2;
   canid_t can_id;
   __u32 nframes;
-  struct can_frame frames[0];
+  struct can_frame frames[];
 };
 enum {
   TX_SETUP = 1,
diff --git a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/can/error.h b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/can/error.h
index 645373b..f585d2c 100644
--- a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/can/error.h
+++ b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/can/error.h
@@ -28,6 +28,7 @@
 #define CAN_ERR_BUSOFF 0x00000040U
 #define CAN_ERR_BUSERROR 0x00000080U
 #define CAN_ERR_RESTARTED 0x00000100U
+#define CAN_ERR_CNT 0x00000200U
 #define CAN_ERR_LOSTARB_UNSPEC 0x00
 #define CAN_ERR_CRTL_UNSPEC 0x00
 #define CAN_ERR_CRTL_RX_OVERFLOW 0x01
@@ -76,4 +77,7 @@
 #define CAN_ERR_TRX_CANL_SHORT_TO_VCC 0x60
 #define CAN_ERR_TRX_CANL_SHORT_TO_GND 0x70
 #define CAN_ERR_TRX_CANL_SHORT_TO_CANH 0x80
+#define CAN_ERROR_WARNING_THRESHOLD 96
+#define CAN_ERROR_PASSIVE_THRESHOLD 128
+#define CAN_BUS_OFF_THRESHOLD 256
 #endif
diff --git a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/can/isotp.h b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/can/isotp.h
index dd5e4f5..f51aa59 100644
--- a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/can/isotp.h
+++ b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/can/isotp.h
@@ -44,26 +44,28 @@
   __u8 tx_dl;
   __u8 tx_flags;
 };
-#define CAN_ISOTP_LISTEN_MODE 0x001
-#define CAN_ISOTP_EXTEND_ADDR 0x002
-#define CAN_ISOTP_TX_PADDING 0x004
-#define CAN_ISOTP_RX_PADDING 0x008
-#define CAN_ISOTP_CHK_PAD_LEN 0x010
-#define CAN_ISOTP_CHK_PAD_DATA 0x020
-#define CAN_ISOTP_HALF_DUPLEX 0x040
-#define CAN_ISOTP_FORCE_TXSTMIN 0x080
-#define CAN_ISOTP_FORCE_RXSTMIN 0x100
-#define CAN_ISOTP_RX_EXT_ADDR 0x200
-#define CAN_ISOTP_WAIT_TX_DONE 0x400
-#define CAN_ISOTP_SF_BROADCAST 0x800
+#define CAN_ISOTP_LISTEN_MODE 0x0001
+#define CAN_ISOTP_EXTEND_ADDR 0x0002
+#define CAN_ISOTP_TX_PADDING 0x0004
+#define CAN_ISOTP_RX_PADDING 0x0008
+#define CAN_ISOTP_CHK_PAD_LEN 0x0010
+#define CAN_ISOTP_CHK_PAD_DATA 0x0020
+#define CAN_ISOTP_HALF_DUPLEX 0x0040
+#define CAN_ISOTP_FORCE_TXSTMIN 0x0080
+#define CAN_ISOTP_FORCE_RXSTMIN 0x0100
+#define CAN_ISOTP_RX_EXT_ADDR 0x0200
+#define CAN_ISOTP_WAIT_TX_DONE 0x0400
+#define CAN_ISOTP_SF_BROADCAST 0x0800
+#define CAN_ISOTP_CF_BROADCAST 0x1000
 #define CAN_ISOTP_DEFAULT_FLAGS 0
 #define CAN_ISOTP_DEFAULT_EXT_ADDRESS 0x00
 #define CAN_ISOTP_DEFAULT_PAD_CONTENT 0xCC
-#define CAN_ISOTP_DEFAULT_FRAME_TXTIME 0
+#define CAN_ISOTP_DEFAULT_FRAME_TXTIME 50000
 #define CAN_ISOTP_DEFAULT_RECV_BS 0
 #define CAN_ISOTP_DEFAULT_RECV_STMIN 0x00
 #define CAN_ISOTP_DEFAULT_RECV_WFTMAX 0
 #define CAN_ISOTP_DEFAULT_LL_MTU CAN_MTU
 #define CAN_ISOTP_DEFAULT_LL_TX_DL CAN_MAX_DLEN
 #define CAN_ISOTP_DEFAULT_LL_TX_FLAGS 0
+#define CAN_ISOTP_FRAME_TXTIME_ZERO 0xFFFFFFFF
 #endif
diff --git a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/can/raw.h b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/can/raw.h
index a3bddb7..f8de179 100644
--- a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/can/raw.h
+++ b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/can/raw.h
@@ -30,5 +30,6 @@
   CAN_RAW_RECV_OWN_MSGS,
   CAN_RAW_FD_FRAMES,
   CAN_RAW_JOIN_FILTERS,
+  CAN_RAW_XL_FRAMES,
 };
 #endif
diff --git a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/capability.h b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/capability.h
index 958e6ab..c1b5dbf 100644
--- a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/capability.h
+++ b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/capability.h
@@ -111,5 +111,5 @@
 #define CAP_LAST_CAP CAP_CHECKPOINT_RESTORE
 #define cap_valid(x) ((x) >= 0 && (x) <= CAP_LAST_CAP)
 #define CAP_TO_INDEX(x) ((x) >> 5)
-#define CAP_TO_MASK(x) (1 << ((x) & 31))
+#define CAP_TO_MASK(x) (1U << ((x) & 31))
 #endif
diff --git a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/cec.h b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/cec.h
index b90dc49..3953fe3 100644
--- a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/cec.h
+++ b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/cec.h
@@ -340,6 +340,7 @@
 #define CEC_OP_FEAT_DEV_HAS_SET_AUDIO_RATE 0x08
 #define CEC_OP_FEAT_DEV_SINK_HAS_ARC_TX 0x04
 #define CEC_OP_FEAT_DEV_SOURCE_HAS_ARC_RX 0x02
+#define CEC_OP_FEAT_DEV_HAS_SET_AUDIO_VOLUME_LEVEL 0x01
 #define CEC_MSG_GIVE_FEATURES 0xa5
 #define CEC_MSG_DECK_CONTROL 0x42
 #define CEC_OP_DECK_CTL_MODE_SKIP_FWD 1
@@ -554,6 +555,7 @@
 #define CEC_MSG_SYSTEM_AUDIO_MODE_STATUS 0x7e
 #define CEC_OP_AUD_FMT_ID_CEA861 0
 #define CEC_OP_AUD_FMT_ID_CEA861_CXT 1
+#define CEC_MSG_SET_AUDIO_VOLUME_LEVEL 0x73
 #define CEC_MSG_SET_AUDIO_RATE 0x9a
 #define CEC_OP_AUD_RATE_OFF 0
 #define CEC_OP_AUD_RATE_WIDE_STD 1
diff --git a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/connector.h b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/connector.h
index adf3a7f..e3891e3 100644
--- a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/connector.h
+++ b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/connector.h
@@ -50,6 +50,6 @@
   __u32 ack;
   __u16 len;
   __u16 flags;
-  __u8 data[0];
+  __u8 data[];
 };
 #endif
diff --git a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/counter.h b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/counter.h
index 091e33d..f986365 100644
--- a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/counter.h
+++ b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/counter.h
@@ -45,6 +45,8 @@
   COUNTER_EVENT_OVERFLOW_UNDERFLOW,
   COUNTER_EVENT_THRESHOLD,
   COUNTER_EVENT_INDEX,
+  COUNTER_EVENT_CHANGE_OF_STATE,
+  COUNTER_EVENT_CAPTURE,
 };
 struct counter_watch {
   struct counter_component component;
@@ -90,4 +92,8 @@
   COUNTER_SYNAPSE_ACTION_FALLING_EDGE,
   COUNTER_SYNAPSE_ACTION_BOTH_EDGES,
 };
+enum counter_signal_polarity {
+  COUNTER_SIGNAL_POLARITY_POSITIVE,
+  COUNTER_SIGNAL_POLARITY_NEGATIVE,
+};
 #endif
diff --git a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/cxl_mem.h b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/cxl_mem.h
index 15e9e29..578cefd 100644
--- a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/cxl_mem.h
+++ b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/cxl_mem.h
@@ -38,8 +38,8 @@
   __u32 id;
   __u32 flags;
 #define CXL_MEM_COMMAND_FLAG_MASK GENMASK(0, 0)
-  __s32 size_in;
-  __s32 size_out;
+  __u32 size_in;
+  __u32 size_out;
 };
 struct cxl_mem_query_commands {
   __u32 n_commands;
@@ -58,12 +58,12 @@
   };
   __u32 retval;
   struct {
-    __s32 size;
+    __u32 size;
     __u32 rsvd;
     __u64 payload;
   } in;
   struct {
-    __s32 size;
+    __u32 size;
     __u32 rsvd;
     __u64 payload;
   } out;
diff --git a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/cycx_cfm.h b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/cycx_cfm.h
index 052de53..230b58d 100644
--- a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/cycx_cfm.h
+++ b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/cycx_cfm.h
@@ -53,7 +53,7 @@
   unsigned short reserved[6];
   char descr[CFM_DESCR_LEN];
   struct cycx_fw_info info;
-  unsigned char image[0];
+  unsigned char image[];
 };
 struct cycx_fw_header {
   unsigned long reset_size;
diff --git a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/devlink.h b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/devlink.h
index a809306..b2cdafa 100644
--- a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/devlink.h
+++ b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/devlink.h
@@ -103,6 +103,12 @@
   DEVLINK_CMD_RATE_SET,
   DEVLINK_CMD_RATE_NEW,
   DEVLINK_CMD_RATE_DEL,
+  DEVLINK_CMD_LINECARD_GET,
+  DEVLINK_CMD_LINECARD_SET,
+  DEVLINK_CMD_LINECARD_NEW,
+  DEVLINK_CMD_LINECARD_DEL,
+  DEVLINK_CMD_SELFTESTS_GET,
+  DEVLINK_CMD_SELFTESTS_RUN,
   __DEVLINK_CMD_MAX,
   DEVLINK_CMD_MAX = __DEVLINK_CMD_MAX - 1
 };
@@ -184,6 +190,25 @@
 #define DEVLINK_FLASH_OVERWRITE_SETTINGS _BITUL(DEVLINK_FLASH_OVERWRITE_SETTINGS_BIT)
 #define DEVLINK_FLASH_OVERWRITE_IDENTIFIERS _BITUL(DEVLINK_FLASH_OVERWRITE_IDENTIFIERS_BIT)
 #define DEVLINK_SUPPORTED_FLASH_OVERWRITE_SECTIONS (_BITUL(__DEVLINK_FLASH_OVERWRITE_MAX_BIT) - 1)
+enum devlink_attr_selftest_id {
+  DEVLINK_ATTR_SELFTEST_ID_UNSPEC,
+  DEVLINK_ATTR_SELFTEST_ID_FLASH,
+  __DEVLINK_ATTR_SELFTEST_ID_MAX,
+  DEVLINK_ATTR_SELFTEST_ID_MAX = __DEVLINK_ATTR_SELFTEST_ID_MAX - 1
+};
+enum devlink_selftest_status {
+  DEVLINK_SELFTEST_STATUS_SKIP,
+  DEVLINK_SELFTEST_STATUS_PASS,
+  DEVLINK_SELFTEST_STATUS_FAIL
+};
+enum devlink_attr_selftest_result {
+  DEVLINK_ATTR_SELFTEST_RESULT_UNSPEC,
+  DEVLINK_ATTR_SELFTEST_RESULT,
+  DEVLINK_ATTR_SELFTEST_RESULT_ID,
+  DEVLINK_ATTR_SELFTEST_RESULT_STATUS,
+  __DEVLINK_ATTR_SELFTEST_RESULT_MAX,
+  DEVLINK_ATTR_SELFTEST_RESULT_MAX = __DEVLINK_ATTR_SELFTEST_RESULT_MAX - 1
+};
 enum devlink_trap_action {
   DEVLINK_TRAP_ACTION_DROP,
   DEVLINK_TRAP_ACTION_TRAP,
@@ -212,6 +237,17 @@
   DEVLINK_RELOAD_LIMIT_MAX = __DEVLINK_RELOAD_LIMIT_MAX - 1
 };
 #define DEVLINK_RELOAD_LIMITS_VALID_MASK (_BITUL(__DEVLINK_RELOAD_LIMIT_MAX) - 1)
+enum devlink_linecard_state {
+  DEVLINK_LINECARD_STATE_UNSPEC,
+  DEVLINK_LINECARD_STATE_UNPROVISIONED,
+  DEVLINK_LINECARD_STATE_UNPROVISIONING,
+  DEVLINK_LINECARD_STATE_PROVISIONING,
+  DEVLINK_LINECARD_STATE_PROVISIONING_FAILED,
+  DEVLINK_LINECARD_STATE_PROVISIONED,
+  DEVLINK_LINECARD_STATE_ACTIVE,
+  __DEVLINK_LINECARD_STATE_MAX,
+  DEVLINK_LINECARD_STATE_MAX = __DEVLINK_LINECARD_STATE_MAX - 1
+};
 enum devlink_attr {
   DEVLINK_ATTR_UNSPEC,
   DEVLINK_ATTR_BUS_NAME,
@@ -384,6 +420,12 @@
   DEVLINK_ATTR_RATE_NODE_NAME,
   DEVLINK_ATTR_RATE_PARENT_NODE_NAME,
   DEVLINK_ATTR_REGION_MAX_SNAPSHOTS,
+  DEVLINK_ATTR_LINECARD_INDEX,
+  DEVLINK_ATTR_LINECARD_STATE,
+  DEVLINK_ATTR_LINECARD_TYPE,
+  DEVLINK_ATTR_LINECARD_SUPPORTED_TYPES,
+  DEVLINK_ATTR_NESTED_DEVLINK,
+  DEVLINK_ATTR_SELFTESTS,
   __DEVLINK_ATTR_MAX,
   DEVLINK_ATTR_MAX = __DEVLINK_ATTR_MAX - 1
 };
diff --git a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/dlm.h b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/dlm.h
index c75918f..499baad 100644
--- a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/dlm.h
+++ b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/dlm.h
@@ -31,6 +31,5 @@
   char * sb_lvbptr;
 };
 #define DLM_LSFL_TIMEWARN 0x00000002
-#define DLM_LSFL_FS 0x00000004
 #define DLM_LSFL_NEWEXCL 0x00000008
 #endif
diff --git a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/dm-ioctl.h b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/dm-ioctl.h
index 09f8a98..f0ff78c 100644
--- a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/dm-ioctl.h
+++ b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/dm-ioctl.h
@@ -48,23 +48,23 @@
 struct dm_target_deps {
   __u32 count;
   __u32 padding;
-  __u64 dev[0];
+  __u64 dev[];
 };
 struct dm_name_list {
   __u64 dev;
   __u32 next;
-  char name[0];
+  char name[];
 };
 #define DM_NAME_LIST_FLAG_HAS_UUID 1
 #define DM_NAME_LIST_FLAG_DOESNT_HAVE_UUID 2
 struct dm_target_versions {
   __u32 next;
   __u32 version[3];
-  char name[0];
+  char name[];
 };
 struct dm_target_msg {
   __u64 sector;
-  char message[0];
+  char message[];
 };
 enum {
   DM_VERSION_CMD = 0,
@@ -106,9 +106,9 @@
 #define DM_TARGET_MSG _IOWR(DM_IOCTL, DM_TARGET_MSG_CMD, struct dm_ioctl)
 #define DM_DEV_SET_GEOMETRY _IOWR(DM_IOCTL, DM_DEV_SET_GEOMETRY_CMD, struct dm_ioctl)
 #define DM_VERSION_MAJOR 4
-#define DM_VERSION_MINOR 45
+#define DM_VERSION_MINOR 47
 #define DM_VERSION_PATCHLEVEL 0
-#define DM_VERSION_EXTRA "-ioctl(2021-03-22)"
+#define DM_VERSION_EXTRA "-ioctl(2022-07-28)"
 #define DM_READONLY_FLAG (1 << 0)
 #define DM_SUSPEND_FLAG (1 << 1)
 #define DM_PERSISTENT_DEV_FLAG (1 << 3)
diff --git a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/dm-log-userspace.h b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/dm-log-userspace.h
index 4f0671b..37feee6 100644
--- a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/dm-log-userspace.h
+++ b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/dm-log-userspace.h
@@ -49,6 +49,6 @@
   __u32 seq;
   __u32 request_type;
   __u32 data_size;
-  char data[0];
+  char data[];
 };
 #endif
diff --git a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/dma-buf.h b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/dma-buf.h
index 221c20f..7462c15 100644
--- a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/dma-buf.h
+++ b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/dma-buf.h
@@ -29,9 +29,19 @@
 #define DMA_BUF_SYNC_END (1 << 2)
 #define DMA_BUF_SYNC_VALID_FLAGS_MASK (DMA_BUF_SYNC_RW | DMA_BUF_SYNC_END)
 #define DMA_BUF_NAME_LEN 32
+struct dma_buf_export_sync_file {
+  __u32 flags;
+  __s32 fd;
+};
+struct dma_buf_import_sync_file {
+  __u32 flags;
+  __s32 fd;
+};
 #define DMA_BUF_BASE 'b'
 #define DMA_BUF_IOCTL_SYNC _IOW(DMA_BUF_BASE, 0, struct dma_buf_sync)
 #define DMA_BUF_SET_NAME _IOW(DMA_BUF_BASE, 1, const char *)
-#define DMA_BUF_SET_NAME_A _IOW(DMA_BUF_BASE, 1, u32)
-#define DMA_BUF_SET_NAME_B _IOW(DMA_BUF_BASE, 1, u64)
+#define DMA_BUF_SET_NAME_A _IOW(DMA_BUF_BASE, 1, __u32)
+#define DMA_BUF_SET_NAME_B _IOW(DMA_BUF_BASE, 1, __u64)
+#define DMA_BUF_IOCTL_EXPORT_SYNC_FILE _IOWR(DMA_BUF_BASE, 2, struct dma_buf_export_sync_file)
+#define DMA_BUF_IOCTL_IMPORT_SYNC_FILE _IOW(DMA_BUF_BASE, 3, struct dma_buf_import_sync_file)
 #endif
diff --git a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/dn.h b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/dn.h
deleted file mode 100644
index 621f60f..0000000
--- a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/dn.h
+++ /dev/null
@@ -1,114 +0,0 @@
-/****************************************************************************
- ****************************************************************************
- ***
- ***   This header was automatically generated from a Linux kernel header
- ***   of the same name, to make information necessary for userspace to
- ***   call into the kernel available to libc.  It contains only constants,
- ***   structures, and macros generated from the original header, and thus,
- ***   contains no copyrightable information.
- ***
- ***   To edit the content of this header, modify the corresponding
- ***   source file (e.g. under external/kernel-headers/original/) then
- ***   run bionic/libc/kernel/tools/update_all.py
- ***
- ***   Any manual change here will be lost the next time this script will
- ***   be run. You've been warned!
- ***
- ****************************************************************************
- ****************************************************************************/
-#ifndef _LINUX_DN_H
-#define _LINUX_DN_H
-#include <linux/ioctl.h>
-#include <linux/types.h>
-#include <linux/if_ether.h>
-#define DNPROTO_NSP 2
-#define DNPROTO_ROU 3
-#define DNPROTO_NML 4
-#define DNPROTO_EVL 5
-#define DNPROTO_EVR 6
-#define DNPROTO_NSPT 7
-#define DN_ADDL 2
-#define DN_MAXADDL 2
-#define DN_MAXOPTL 16
-#define DN_MAXOBJL 16
-#define DN_MAXACCL 40
-#define DN_MAXALIASL 128
-#define DN_MAXNODEL 256
-#define DNBUFSIZE 65023
-#define SO_CONDATA 1
-#define SO_CONACCESS 2
-#define SO_PROXYUSR 3
-#define SO_LINKINFO 7
-#define DSO_CONDATA 1
-#define DSO_DISDATA 10
-#define DSO_CONACCESS 2
-#define DSO_ACCEPTMODE 4
-#define DSO_CONACCEPT 5
-#define DSO_CONREJECT 6
-#define DSO_LINKINFO 7
-#define DSO_STREAM 8
-#define DSO_SEQPACKET 9
-#define DSO_MAXWINDOW 11
-#define DSO_NODELAY 12
-#define DSO_CORK 13
-#define DSO_SERVICES 14
-#define DSO_INFO 15
-#define DSO_MAX 15
-#define LL_INACTIVE 0
-#define LL_CONNECTING 1
-#define LL_RUNNING 2
-#define LL_DISCONNECTING 3
-#define ACC_IMMED 0
-#define ACC_DEFER 1
-#define SDF_WILD 1
-#define SDF_PROXY 2
-#define SDF_UICPROXY 4
-struct dn_naddr {
-  __le16 a_len;
-  __u8 a_addr[DN_MAXADDL];
-};
-struct sockaddr_dn {
-  __u16 sdn_family;
-  __u8 sdn_flags;
-  __u8 sdn_objnum;
-  __le16 sdn_objnamel;
-  __u8 sdn_objname[DN_MAXOBJL];
-  struct dn_naddr sdn_add;
-};
-#define sdn_nodeaddrl sdn_add.a_len
-#define sdn_nodeaddr sdn_add.a_addr
-struct optdata_dn {
-  __le16 opt_status;
-#define opt_sts opt_status
-  __le16 opt_optl;
-  __u8 opt_data[16];
-};
-struct accessdata_dn {
-  __u8 acc_accl;
-  __u8 acc_acc[DN_MAXACCL];
-  __u8 acc_passl;
-  __u8 acc_pass[DN_MAXACCL];
-  __u8 acc_userl;
-  __u8 acc_user[DN_MAXACCL];
-};
-struct linkinfo_dn {
-  __u16 idn_segsize;
-  __u8 idn_linkstate;
-};
-union etheraddress {
-  __u8 dne_addr[ETH_ALEN];
-  struct {
-    __u8 dne_hiord[4];
-    __u8 dne_nodeaddr[2];
-  } dne_remote;
-};
-struct dn_addr {
-  __le16 dna_family;
-  union etheraddress dna_netaddr;
-};
-#define DECNET_IOCTL_BASE 0x89
-#define SIOCSNETADDR _IOW(DECNET_IOCTL_BASE, 0xe0, struct dn_naddr)
-#define SIOCGNETADDR _IOR(DECNET_IOCTL_BASE, 0xe1, struct dn_naddr)
-#define OSIOCSNETADDR _IOW(DECNET_IOCTL_BASE, 0xe0, int)
-#define OSIOCGNETADDR _IOR(DECNET_IOCTL_BASE, 0xe1, int)
-#endif
diff --git a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/dns_resolver.h b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/dns_resolver.h
index 21cb5c0..e7113d0 100644
--- a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/dns_resolver.h
+++ b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/dns_resolver.h
@@ -55,13 +55,13 @@
   __u8 zero;
   __u8 content;
   __u8 version;
-} __packed;
+} __attribute__((__packed__));
 struct dns_server_list_v1_header {
   struct dns_payload_header hdr;
   __u8 source;
   __u8 status;
   __u8 nr_servers;
-} __packed;
+} __attribute__((__packed__));
 struct dns_server_list_v1_server {
   __u16 name_len;
   __u16 priority;
@@ -71,8 +71,8 @@
   __u8 status;
   __u8 protocol;
   __u8 nr_addrs;
-} __packed;
+} __attribute__((__packed__));
 struct dns_server_list_v1_address {
   __u8 address_type;
-} __packed;
+} __attribute__((__packed__));
 #endif
diff --git a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/dw100.h b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/dw100.h
new file mode 100644
index 0000000..13d8487
--- /dev/null
+++ b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/dw100.h
@@ -0,0 +1,23 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef __UAPI_DW100_H__
+#define __UAPI_DW100_H__
+#include <linux/v4l2-controls.h>
+#define V4L2_CID_DW100_DEWARPING_16x16_VERTEX_MAP (V4L2_CID_USER_DW100_BASE + 1)
+#endif
diff --git a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/elf-em.h b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/elf-em.h
index d1ed1f6..92da93d 100644
--- a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/elf-em.h
+++ b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/elf-em.h
@@ -61,6 +61,7 @@
 #define EM_RISCV 243
 #define EM_BPF 247
 #define EM_CSKY 252
+#define EM_LOONGARCH 258
 #define EM_FRV 0x5441
 #define EM_ALPHA 0x9026
 #define EM_CYGNUS_M32R 0x9041
diff --git a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/elf.h b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/elf.h
index 7655f12..28c8426 100644
--- a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/elf.h
+++ b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/elf.h
@@ -45,9 +45,11 @@
 #define PT_HIOS 0x6fffffff
 #define PT_LOPROC 0x70000000
 #define PT_HIPROC 0x7fffffff
-#define PT_GNU_EH_FRAME 0x6474e550
-#define PT_GNU_PROPERTY 0x6474e553
+#define PT_GNU_EH_FRAME (PT_LOOS + 0x474e550)
 #define PT_GNU_STACK (PT_LOOS + 0x474e551)
+#define PT_GNU_RELRO (PT_LOOS + 0x474e552)
+#define PT_GNU_PROPERTY (PT_LOOS + 0x474e553)
+#define PT_AARCH64_MEMTAG_MTE (PT_LOPROC + 0x2)
 #define PN_XNUM 0xffff
 #define ET_NONE 0
 #define ET_REL 1
@@ -110,7 +112,7 @@
 #define STT_COMMON 5
 #define STT_TLS 6
 #define ELF_ST_BIND(x) ((x) >> 4)
-#define ELF_ST_TYPE(x) (((unsigned int) x) & 0xf)
+#define ELF_ST_TYPE(x) ((x) & 0xf)
 #define ELF32_ST_BIND(x) ELF_ST_BIND(x)
 #define ELF32_ST_TYPE(x) ELF_ST_TYPE(x)
 #define ELF64_ST_BIND(x) ELF_ST_BIND(x)
@@ -350,6 +352,7 @@
 #define NT_S390_GS_CB 0x30b
 #define NT_S390_GS_BC 0x30c
 #define NT_S390_RI_CB 0x30d
+#define NT_S390_PV_CPU_DATA 0x30e
 #define NT_ARM_VFP 0x400
 #define NT_ARM_TLS 0x401
 #define NT_ARM_HW_BREAK 0x402
@@ -361,11 +364,18 @@
 #define NT_ARM_PACG_KEYS 0x408
 #define NT_ARM_TAGGED_ADDR_CTRL 0x409
 #define NT_ARM_PAC_ENABLED_KEYS 0x40a
+#define NT_ARM_SSVE 0x40b
+#define NT_ARM_ZA 0x40c
 #define NT_ARC_V2 0x600
 #define NT_VMCOREDD 0x700
 #define NT_MIPS_DSP 0x800
 #define NT_MIPS_FP_MODE 0x801
 #define NT_MIPS_MSA 0x802
+#define NT_LOONGARCH_CPUCFG 0xa00
+#define NT_LOONGARCH_CSR 0xa01
+#define NT_LOONGARCH_LSX 0xa02
+#define NT_LOONGARCH_LASX 0xa03
+#define NT_LOONGARCH_LBT 0xa04
 #define NT_GNU_PROPERTY_TYPE_0 5
 typedef struct elf32_note {
   Elf32_Word n_namesz;
diff --git a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/ethtool.h b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/ethtool.h
index 741ea2a..8bdd622 100644
--- a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/ethtool.h
+++ b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/ethtool.h
@@ -98,7 +98,7 @@
   __u32 id;
   __u32 type_id;
   __u32 len;
-  void * data[0];
+  void * data[];
 };
 #define DOWNSHIFT_DEV_DEFAULT_COUNT 0xff
 #define DOWNSHIFT_DEV_DISABLE 0
@@ -118,14 +118,14 @@
   __u32 cmd;
   __u32 version;
   __u32 len;
-  __u8 data[0];
+  __u8 data[];
 };
 struct ethtool_eeprom {
   __u32 cmd;
   __u32 magic;
   __u32 offset;
   __u32 len;
-  __u8 data[0];
+  __u8 data[];
 };
 struct ethtool_eee {
   __u32 cmd;
@@ -277,17 +277,31 @@
   ETHTOOL_MODULE_POWER_MODE_LOW = 1,
   ETHTOOL_MODULE_POWER_MODE_HIGH,
 };
+enum ethtool_podl_pse_admin_state {
+  ETHTOOL_PODL_PSE_ADMIN_STATE_UNKNOWN = 1,
+  ETHTOOL_PODL_PSE_ADMIN_STATE_DISABLED,
+  ETHTOOL_PODL_PSE_ADMIN_STATE_ENABLED,
+};
+enum ethtool_podl_pse_pw_d_status {
+  ETHTOOL_PODL_PSE_PW_D_STATUS_UNKNOWN = 1,
+  ETHTOOL_PODL_PSE_PW_D_STATUS_DISABLED,
+  ETHTOOL_PODL_PSE_PW_D_STATUS_SEARCHING,
+  ETHTOOL_PODL_PSE_PW_D_STATUS_DELIVERING,
+  ETHTOOL_PODL_PSE_PW_D_STATUS_SLEEP,
+  ETHTOOL_PODL_PSE_PW_D_STATUS_IDLE,
+  ETHTOOL_PODL_PSE_PW_D_STATUS_ERROR,
+};
 struct ethtool_gstrings {
   __u32 cmd;
   __u32 string_set;
   __u32 len;
-  __u8 data[0];
+  __u8 data[];
 };
 struct ethtool_sset_info {
   __u32 cmd;
   __u32 reserved;
   __u64 sset_mask;
-  __u32 data[0];
+  __u32 data[];
 };
 enum ethtool_test_flags {
   ETH_TEST_FL_OFFLINE = (1 << 0),
@@ -300,17 +314,17 @@
   __u32 flags;
   __u32 reserved;
   __u32 len;
-  __u64 data[0];
+  __u64 data[];
 };
 struct ethtool_stats {
   __u32 cmd;
   __u32 n_stats;
-  __u64 data[0];
+  __u64 data[];
 };
 struct ethtool_perm_addr {
   __u32 cmd;
   __u32 size;
-  __u8 data[0];
+  __u8 data[];
 };
 enum ethtool_flags {
   ETH_FLAG_TXVLAN = (1 << 7),
@@ -410,7 +424,7 @@
 struct ethtool_rxfh_indir {
   __u32 cmd;
   __u32 size;
-  __u32 ring_index[0];
+  __u32 ring_index[];
 };
 struct ethtool_rxfh {
   __u32 cmd;
@@ -420,7 +434,7 @@
   __u8 hfunc;
   __u8 rsvd8[3];
   __u32 rsvd32;
-  __u32 rss_config[0];
+  __u32 rss_config[];
 };
 #define ETH_RXFH_CONTEXT_ALLOC 0xffffffff
 #define ETH_RXFH_INDIR_NO_CHANGE 0xffffffff
@@ -462,7 +476,7 @@
   __u32 version;
   __u32 flag;
   __u32 len;
-  __u8 data[0];
+  __u8 data[];
 };
 #define ETH_FW_DUMP_DISABLE 0
 struct ethtool_get_features_block {
@@ -474,7 +488,7 @@
 struct ethtool_gfeatures {
   __u32 cmd;
   __u32 size;
-  struct ethtool_get_features_block features[0];
+  struct ethtool_get_features_block features[];
 };
 struct ethtool_set_features_block {
   __u32 valid;
@@ -483,7 +497,7 @@
 struct ethtool_sfeatures {
   __u32 cmd;
   __u32 size;
-  struct ethtool_set_features_block features[0];
+  struct ethtool_set_features_block features[];
 };
 struct ethtool_ts_info {
   __u32 cmd;
@@ -704,6 +718,7 @@
   ETHTOOL_LINK_MODE_400000baseCR4_Full_BIT = 89,
   ETHTOOL_LINK_MODE_100baseFX_Half_BIT = 90,
   ETHTOOL_LINK_MODE_100baseFX_Full_BIT = 91,
+  ETHTOOL_LINK_MODE_10baseT1L_Full_BIT = 92,
   __ETHTOOL_LINK_MODE_MASK_NBITS
 };
 #define __ETHTOOL_LINK_MODE_LEGACY_MASK(base_name) (1UL << (ETHTOOL_LINK_MODE_ ##base_name ##_BIT))
@@ -799,6 +814,10 @@
 #define MASTER_SLAVE_STATE_MASTER 2
 #define MASTER_SLAVE_STATE_SLAVE 3
 #define MASTER_SLAVE_STATE_ERR 4
+#define RATE_MATCH_NONE 0
+#define RATE_MATCH_PAUSE 1
+#define RATE_MATCH_CRS 2
+#define RATE_MATCH_OPEN_LOOP 3
 #define PORT_TP 0x00
 #define PORT_AUI 0x01
 #define PORT_MII 0x02
@@ -900,8 +919,8 @@
   __u8 transceiver;
   __u8 master_slave_cfg;
   __u8 master_slave_state;
-  __u8 reserved1[1];
+  __u8 rate_matching;
   __u32 reserved[7];
-  __u32 link_mode_masks[0];
+  __u32 link_mode_masks[];
 };
 #endif
diff --git a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/ethtool_netlink.h b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/ethtool_netlink.h
index 7dcae22..08c6936 100644
--- a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/ethtool_netlink.h
+++ b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/ethtool_netlink.h
@@ -56,6 +56,8 @@
   ETHTOOL_MSG_PHC_VCLOCKS_GET,
   ETHTOOL_MSG_MODULE_GET,
   ETHTOOL_MSG_MODULE_SET,
+  ETHTOOL_MSG_PSE_GET,
+  ETHTOOL_MSG_PSE_SET,
   __ETHTOOL_MSG_USER_CNT,
   ETHTOOL_MSG_USER_MAX = __ETHTOOL_MSG_USER_CNT - 1
 };
@@ -97,6 +99,7 @@
   ETHTOOL_MSG_PHC_VCLOCKS_GET_REPLY,
   ETHTOOL_MSG_MODULE_GET_REPLY,
   ETHTOOL_MSG_MODULE_NTF,
+  ETHTOOL_MSG_PSE_GET_REPLY,
   __ETHTOOL_MSG_KERNEL_CNT,
   ETHTOOL_MSG_KERNEL_MAX = __ETHTOOL_MSG_KERNEL_CNT - 1
 };
@@ -193,6 +196,7 @@
   ETHTOOL_A_LINKMODES_MASTER_SLAVE_CFG,
   ETHTOOL_A_LINKMODES_MASTER_SLAVE_STATE,
   ETHTOOL_A_LINKMODES_LANES,
+  ETHTOOL_A_LINKMODES_RATE_MATCHING,
   __ETHTOOL_A_LINKMODES_CNT,
   ETHTOOL_A_LINKMODES_MAX = __ETHTOOL_A_LINKMODES_CNT - 1
 };
@@ -240,6 +244,11 @@
   ETHTOOL_A_PRIVFLAGS_MAX = __ETHTOOL_A_PRIVFLAGS_CNT - 1
 };
 enum {
+  ETHTOOL_TCP_DATA_SPLIT_UNKNOWN = 0,
+  ETHTOOL_TCP_DATA_SPLIT_DISABLED,
+  ETHTOOL_TCP_DATA_SPLIT_ENABLED,
+};
+enum {
   ETHTOOL_A_RINGS_UNSPEC,
   ETHTOOL_A_RINGS_HEADER,
   ETHTOOL_A_RINGS_RX_MAX,
@@ -251,6 +260,9 @@
   ETHTOOL_A_RINGS_RX_JUMBO,
   ETHTOOL_A_RINGS_TX,
   ETHTOOL_A_RINGS_RX_BUF_LEN,
+  ETHTOOL_A_RINGS_TCP_DATA_SPLIT,
+  ETHTOOL_A_RINGS_CQE_SIZE,
+  ETHTOOL_A_RINGS_TX_PUSH,
   __ETHTOOL_A_RINGS_CNT,
   ETHTOOL_A_RINGS_MAX = (__ETHTOOL_A_RINGS_CNT - 1)
 };
@@ -601,6 +613,15 @@
   __ETHTOOL_A_MODULE_CNT,
   ETHTOOL_A_MODULE_MAX = (__ETHTOOL_A_MODULE_CNT - 1)
 };
+enum {
+  ETHTOOL_A_PSE_UNSPEC,
+  ETHTOOL_A_PSE_HEADER,
+  ETHTOOL_A_PODL_PSE_ADMIN_STATE,
+  ETHTOOL_A_PODL_PSE_ADMIN_CONTROL,
+  ETHTOOL_A_PODL_PSE_PW_D_STATUS,
+  __ETHTOOL_A_PSE_CNT,
+  ETHTOOL_A_PSE_MAX = (__ETHTOOL_A_PSE_CNT - 1)
+};
 #define ETHTOOL_GENL_NAME "ethtool"
 #define ETHTOOL_GENL_VERSION 1
 #define ETHTOOL_MCGRP_MONITOR_NAME "monitor"
diff --git a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/f2fs.h b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/f2fs.h
index 76da8f6..3fcd444 100644
--- a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/f2fs.h
+++ b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/f2fs.h
@@ -25,7 +25,7 @@
 #define F2FS_IOC_COMMIT_ATOMIC_WRITE _IO(F2FS_IOCTL_MAGIC, 2)
 #define F2FS_IOC_START_VOLATILE_WRITE _IO(F2FS_IOCTL_MAGIC, 3)
 #define F2FS_IOC_RELEASE_VOLATILE_WRITE _IO(F2FS_IOCTL_MAGIC, 4)
-#define F2FS_IOC_ABORT_VOLATILE_WRITE _IO(F2FS_IOCTL_MAGIC, 5)
+#define F2FS_IOC_ABORT_ATOMIC_WRITE _IO(F2FS_IOCTL_MAGIC, 5)
 #define F2FS_IOC_GARBAGE_COLLECT _IOW(F2FS_IOCTL_MAGIC, 6, __u32)
 #define F2FS_IOC_WRITE_CHECKPOINT _IO(F2FS_IOCTL_MAGIC, 7)
 #define F2FS_IOC_DEFRAGMENT _IOWR(F2FS_IOCTL_MAGIC, 8, struct f2fs_defragment)
diff --git a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/fanotify.h b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/fanotify.h
index 6249292..9815a64 100644
--- a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/fanotify.h
+++ b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/fanotify.h
@@ -67,9 +67,12 @@
 #define FAN_MARK_IGNORED_MASK 0x00000020
 #define FAN_MARK_IGNORED_SURV_MODIFY 0x00000040
 #define FAN_MARK_FLUSH 0x00000080
+#define FAN_MARK_EVICTABLE 0x00000200
+#define FAN_MARK_IGNORE 0x00000400
 #define FAN_MARK_INODE 0x00000000
 #define FAN_MARK_MOUNT 0x00000010
 #define FAN_MARK_FILESYSTEM 0x00000100
+#define FAN_MARK_IGNORE_SURV (FAN_MARK_IGNORE | FAN_MARK_IGNORED_SURV_MODIFY)
 #define FAN_ALL_MARK_FLAGS (FAN_MARK_ADD | FAN_MARK_REMOVE | FAN_MARK_DONT_FOLLOW | FAN_MARK_ONLYDIR | FAN_MARK_MOUNT | FAN_MARK_IGNORED_MASK | FAN_MARK_IGNORED_SURV_MODIFY | FAN_MARK_FLUSH)
 #define FAN_ALL_EVENTS (FAN_ACCESS | FAN_MODIFY | FAN_CLOSE | FAN_OPEN)
 #define FAN_ALL_PERM_EVENTS (FAN_OPEN_PERM | FAN_ACCESS_PERM)
@@ -99,7 +102,7 @@
 struct fanotify_event_info_fid {
   struct fanotify_event_info_header hdr;
   __kernel_fsid_t fsid;
-  unsigned char handle[0];
+  unsigned char handle[];
 };
 struct fanotify_event_info_pidfd {
   struct fanotify_event_info_header hdr;
diff --git a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/fiemap.h b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/fiemap.h
index 4310786..a67a5fe 100644
--- a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/fiemap.h
+++ b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/fiemap.h
@@ -34,7 +34,7 @@
   __u32 fm_mapped_extents;
   __u32 fm_extent_count;
   __u32 fm_reserved;
-  struct fiemap_extent fm_extents[0];
+  struct fiemap_extent fm_extents[];
 };
 #define FIEMAP_MAX_OFFSET (~0ULL)
 #define FIEMAP_FLAG_SYNC 0x00000001
diff --git a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/firewire-cdev.h b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/firewire-cdev.h
index 92957bc..a54191c 100644
--- a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/firewire-cdev.h
+++ b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/firewire-cdev.h
@@ -50,7 +50,7 @@
   __u32 type;
   __u32 rcode;
   __u32 length;
-  __u32 data[0];
+  __u32 data[];
 };
 struct fw_cdev_event_request {
   __u64 closure;
@@ -59,7 +59,7 @@
   __u64 offset;
   __u32 handle;
   __u32 length;
-  __u32 data[0];
+  __u32 data[];
 };
 struct fw_cdev_event_request2 {
   __u64 closure;
@@ -72,14 +72,14 @@
   __u32 generation;
   __u32 handle;
   __u32 length;
-  __u32 data[0];
+  __u32 data[];
 };
 struct fw_cdev_event_iso_interrupt {
   __u64 closure;
   __u32 type;
   __u32 cycle;
   __u32 header_length;
-  __u32 header[0];
+  __u32 header[];
 };
 struct fw_cdev_event_iso_interrupt_mc {
   __u64 closure;
@@ -98,7 +98,7 @@
   __u32 type;
   __u32 rcode;
   __u32 length;
-  __u32 data[0];
+  __u32 data[];
 };
 union fw_cdev_event {
   struct fw_cdev_event_common common;
@@ -207,7 +207,7 @@
 #define FW_CDEV_ISO_HEADER_LENGTH(v) ((v) << 24)
 struct fw_cdev_iso_packet {
   __u32 control;
-  __u32 header[0];
+  __u32 header[];
 };
 struct fw_cdev_queue_iso {
   __u64 packets;
diff --git a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/fs.h b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/fs.h
index 3bb4183..96f9181 100644
--- a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/fs.h
+++ b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/fs.h
@@ -63,7 +63,7 @@
   __u16 dest_count;
   __u16 reserved1;
   __u32 reserved2;
-  struct file_dedupe_range_info info[0];
+  struct file_dedupe_range_info info[];
 };
 struct files_stat_struct {
   unsigned long nr_files;
diff --git a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/fscrypt.h b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/fscrypt.h
index ca42eb3..e6b5358 100644
--- a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/fscrypt.h
+++ b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/fscrypt.h
@@ -33,6 +33,7 @@
 #define FSCRYPT_MODE_AES_128_CBC 5
 #define FSCRYPT_MODE_AES_128_CTS 6
 #define FSCRYPT_MODE_ADIANTUM 9
+#define FSCRYPT_MODE_AES_256_HCTR2 10
 #define FSCRYPT_POLICY_V1 0
 #define FSCRYPT_KEY_DESCRIPTOR_SIZE 8
 struct fscrypt_policy_v1 {
diff --git a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/fsi.h b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/fsi.h
index fc88464..b080c21 100644
--- a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/fsi.h
+++ b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/fsi.h
@@ -48,4 +48,5 @@
 #define FSI_SCOM_READ _IOWR('s', 0x01, struct scom_access)
 #define FSI_SCOM_WRITE _IOWR('s', 0x02, struct scom_access)
 #define FSI_SCOM_RESET _IOW('s', 0x03, __u32)
+#define FSI_SBEFIFO_READ_TIMEOUT_SECONDS _IOW('s', 0x00, __u32)
 #endif
diff --git a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/fuse.h b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/fuse.h
index 144e960..ae667eb 100644
--- a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/fuse.h
+++ b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/fuse.h
@@ -20,7 +20,7 @@
 #define _LINUX_FUSE_H
 #include <stdint.h>
 #define FUSE_KERNEL_VERSION 7
-#define FUSE_KERNEL_MINOR_VERSION 36
+#define FUSE_KERNEL_MINOR_VERSION 37
 #define FUSE_ROOT_ID 1
 struct fuse_attr {
   uint64_t ino;
@@ -187,6 +187,7 @@
   FUSE_SETUPMAPPING = 48,
   FUSE_REMOVEMAPPING = 49,
   FUSE_SYNCFS = 50,
+  FUSE_TMPFILE = 51,
   FUSE_CANONICAL_PATH = 2016,
   CUSE_INIT = 4096,
   CUSE_INIT_BSWAP_RESERVED = 1048576,
diff --git a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/genetlink.h b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/genetlink.h
index 2e2137d..0f86331 100644
--- a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/genetlink.h
+++ b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/genetlink.h
@@ -81,6 +81,7 @@
   CTRL_ATTR_MCAST_GRP_ID,
   __CTRL_ATTR_MCAST_GRP_MAX,
 };
+#define CTRL_ATTR_MCAST_GRP_MAX (__CTRL_ATTR_MCAST_GRP_MAX - 1)
 enum {
   CTRL_ATTR_POLICY_UNSPEC,
   CTRL_ATTR_POLICY_DO,
@@ -88,5 +89,5 @@
   __CTRL_ATTR_POLICY_DUMP_MAX,
   CTRL_ATTR_POLICY_DUMP_MAX = __CTRL_ATTR_POLICY_DUMP_MAX - 1
 };
-#define CTRL_ATTR_MCAST_GRP_MAX (__CTRL_ATTR_MCAST_GRP_MAX - 1)
+#define CTRL_ATTR_POLICY_MAX (__CTRL_ATTR_POLICY_DUMP_MAX - 1)
 #endif
diff --git a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/gpio.h b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/gpio.h
index 7e010d9..e760321 100644
--- a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/gpio.h
+++ b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/gpio.h
@@ -42,6 +42,7 @@
   GPIO_V2_LINE_FLAG_BIAS_PULL_DOWN = _BITULL(9),
   GPIO_V2_LINE_FLAG_BIAS_DISABLED = _BITULL(10),
   GPIO_V2_LINE_FLAG_EVENT_CLOCK_REALTIME = _BITULL(11),
+  GPIO_V2_LINE_FLAG_EVENT_CLOCK_HTE = _BITULL(12),
 };
 struct gpio_v2_line_values {
   __aligned_u64 bits;
diff --git a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/gtp.h b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/gtp.h
index 3b9416e..20bc3d6 100644
--- a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/gtp.h
+++ b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/gtp.h
@@ -23,6 +23,7 @@
   GTP_CMD_NEWPDP,
   GTP_CMD_DELPDP,
   GTP_CMD_GETPDP,
+  GTP_CMD_ECHOREQ,
   GTP_CMD_MAX,
 };
 enum gtp_version {
diff --git a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/hid.h b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/hid.h
index ce93cd7..37ab462 100644
--- a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/hid.h
+++ b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/hid.h
@@ -22,12 +22,20 @@
 #define USB_INTERFACE_SUBCLASS_BOOT 1
 #define USB_INTERFACE_PROTOCOL_KEYBOARD 1
 #define USB_INTERFACE_PROTOCOL_MOUSE 2
-#define HID_REQ_GET_REPORT 0x01
-#define HID_REQ_GET_IDLE 0x02
-#define HID_REQ_GET_PROTOCOL 0x03
-#define HID_REQ_SET_REPORT 0x09
-#define HID_REQ_SET_IDLE 0x0A
-#define HID_REQ_SET_PROTOCOL 0x0B
+enum hid_report_type {
+  HID_INPUT_REPORT = 0,
+  HID_OUTPUT_REPORT = 1,
+  HID_FEATURE_REPORT = 2,
+  HID_REPORT_TYPES,
+};
+enum hid_class_request {
+  HID_REQ_GET_REPORT = 0x01,
+  HID_REQ_GET_IDLE = 0x02,
+  HID_REQ_GET_PROTOCOL = 0x03,
+  HID_REQ_SET_REPORT = 0x09,
+  HID_REQ_SET_IDLE = 0x0A,
+  HID_REQ_SET_PROTOCOL = 0x0B,
+};
 #define HID_DT_HID (USB_TYPE_CLASS | 0x01)
 #define HID_DT_REPORT (USB_TYPE_CLASS | 0x02)
 #define HID_DT_PHYSICAL (USB_TYPE_CLASS | 0x03)
diff --git a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/icmp.h b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/icmp.h
index 8847a48..77cb328 100644
--- a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/icmp.h
+++ b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/icmp.h
@@ -84,7 +84,11 @@
     } echo;
     __be32 gateway;
     struct {
+#ifdef __BIONIC__
       __be16 __linux_unused;
+#else
+      __be16 __linux_unused;
+#endif
       __be16 mtu;
     } frag;
     __u8 reserved[4];
diff --git a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/idxd.h b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/idxd.h
index ad9ed48..a456352 100644
--- a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/idxd.h
+++ b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/idxd.h
@@ -38,6 +38,7 @@
   IDXD_SCMD_WQ_NO_SIZE = 0x800e0000,
   IDXD_SCMD_WQ_NO_PRIV = 0x800f0000,
   IDXD_SCMD_WQ_IRQ_ERR = 0x80100000,
+  IDXD_SCMD_WQ_USER_NO_IOMMU = 0x80110000,
 };
 #define IDXD_SCMD_SOFTERR_MASK 0x80000000
 #define IDXD_SCMD_SOFTERR_SHIFT 16
@@ -57,6 +58,11 @@
 #define IDXD_OP_FLAG_DRDBK 0x4000
 #define IDXD_OP_FLAG_DSTS 0x8000
 #define IDXD_OP_FLAG_RD_SRC2_AECS 0x010000
+#define IDXD_OP_FLAG_RD_SRC2_2ND 0x020000
+#define IDXD_OP_FLAG_WR_SRC2_AECS_COMP 0x040000
+#define IDXD_OP_FLAG_WR_SRC2_AECS_OVFL 0x080000
+#define IDXD_OP_FLAG_SRC2_STS 0x100000
+#define IDXD_OP_FLAG_CRC_RFC3720 0x200000
 enum dsa_opcode {
   DSA_OPCODE_NOOP = 0,
   DSA_OPCODE_BATCH,
@@ -82,6 +88,18 @@
   IAX_OPCODE_MEMMOVE,
   IAX_OPCODE_DECOMPRESS = 0x42,
   IAX_OPCODE_COMPRESS,
+  IAX_OPCODE_CRC64,
+  IAX_OPCODE_ZERO_DECOMP_32 = 0x48,
+  IAX_OPCODE_ZERO_DECOMP_16,
+  IAX_OPCODE_ZERO_COMP_32 = 0x4c,
+  IAX_OPCODE_ZERO_COMP_16,
+  IAX_OPCODE_SCAN = 0x50,
+  IAX_OPCODE_SET_MEMBER,
+  IAX_OPCODE_EXTRACT,
+  IAX_OPCODE_SELECT,
+  IAX_OPCODE_RLE_BURST,
+  IAX_OPCODE_FIND_UNIQUE,
+  IAX_OPCODE_EXPAND,
 };
 enum dsa_completion_status {
   DSA_COMP_NONE = 0,
@@ -118,6 +136,7 @@
   IAX_COMP_NONE = 0,
   IAX_COMP_SUCCESS,
   IAX_COMP_PAGE_FAULT_IR = 0x04,
+  IAX_COMP_ANALYTICS_ERROR = 0x0a,
   IAX_COMP_OUTBUF_OVERFLOW,
   IAX_COMP_BAD_OPCODE = 0x10,
   IAX_COMP_INVALID_FLAGS,
@@ -138,7 +157,10 @@
   IAX_COMP_WATCHDOG,
   IAX_COMP_INVALID_COMP_FLAG = 0x30,
   IAX_COMP_INVALID_FILTER_FLAG,
-  IAX_COMP_INVALID_NUM_ELEMS = 0x33,
+  IAX_COMP_INVALID_INPUT_SIZE,
+  IAX_COMP_INVALID_NUM_ELEMS,
+  IAX_COMP_INVALID_SRC1_WIDTH,
+  IAX_COMP_INVALID_INVERT_OUT,
 };
 #define DSA_COMP_STATUS_MASK 0x7f
 #define DSA_COMP_STATUS_WRITE 0x80
@@ -291,8 +313,12 @@
   uint32_t output_size;
   uint8_t output_bits;
   uint8_t rsvd3;
-  uint16_t rsvd4;
-  uint64_t rsvd5[4];
+  uint16_t xor_csum;
+  uint32_t crc;
+  uint32_t min;
+  uint32_t max;
+  uint32_t sum;
+  uint64_t rsvd4[2];
 } __attribute__((packed));
 struct iax_raw_completion_record {
   uint64_t field[8];
diff --git a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/if_addr.h b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/if_addr.h
index 6a6b640..a225e69 100644
--- a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/if_addr.h
+++ b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/if_addr.h
@@ -39,6 +39,7 @@
   IFA_FLAGS,
   IFA_RT_PRIORITY,
   IFA_TARGET_NETNSID,
+  IFA_PROTO,
   __IFA_MAX,
 };
 #define IFA_MAX (__IFA_MAX - 1)
@@ -63,4 +64,8 @@
 };
 #define IFA_RTA(r) ((struct rtattr *) (((char *) (r)) + NLMSG_ALIGN(sizeof(struct ifaddrmsg))))
 #define IFA_PAYLOAD(n) NLMSG_PAYLOAD(n, sizeof(struct ifaddrmsg))
+#define IFAPROT_UNSPEC 0
+#define IFAPROT_KERNEL_LO 1
+#define IFAPROT_KERNEL_RA 2
+#define IFAPROT_KERNEL_LL 3
 #endif
diff --git a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/if_alg.h b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/if_alg.h
index 6530a16..237fe6e 100644
--- a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/if_alg.h
+++ b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/if_alg.h
@@ -35,7 +35,7 @@
 };
 struct af_alg_iv {
   __u32 ivlen;
-  __u8 iv[0];
+  __u8 iv[];
 };
 #define ALG_SET_KEY 1
 #define ALG_SET_IV 2
diff --git a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/if_arcnet.h b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/if_arcnet.h
index 6aece37..65b07e1 100644
--- a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/if_arcnet.h
+++ b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/if_arcnet.h
@@ -40,18 +40,18 @@
   __u8 proto;
   __u8 split_flag;
   __be16 sequence;
-  __u8 payload[0];
+  __u8 payload[];
 };
 #define RFC1201_HDR_SIZE 4
 struct arc_rfc1051 {
   __u8 proto;
-  __u8 payload[0];
+  __u8 payload[];
 };
 #define RFC1051_HDR_SIZE 1
 struct arc_eth_encap {
   __u8 proto;
   struct ethhdr eth;
-  __u8 payload[0];
+  __u8 payload[];
 };
 #define ETH_ENCAP_HDR_SIZE 14
 struct arc_cap {
diff --git a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/if_bridge.h b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/if_bridge.h
index 2054fb3..0f08866 100644
--- a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/if_bridge.h
+++ b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/if_bridge.h
@@ -108,6 +108,7 @@
   IFLA_BRIDGE_VLAN_TUNNEL_INFO,
   IFLA_BRIDGE_MRP,
   IFLA_BRIDGE_CFM,
+  IFLA_BRIDGE_MST,
   __IFLA_BRIDGE_MAX,
 };
 #define IFLA_BRIDGE_MAX (__IFLA_BRIDGE_MAX - 1)
@@ -384,6 +385,19 @@
   __IFLA_BRIDGE_CFM_CC_PEER_STATUS_MAX,
 };
 #define IFLA_BRIDGE_CFM_CC_PEER_STATUS_MAX (__IFLA_BRIDGE_CFM_CC_PEER_STATUS_MAX - 1)
+enum {
+  IFLA_BRIDGE_MST_UNSPEC,
+  IFLA_BRIDGE_MST_ENTRY,
+  __IFLA_BRIDGE_MST_MAX,
+};
+#define IFLA_BRIDGE_MST_MAX (__IFLA_BRIDGE_MST_MAX - 1)
+enum {
+  IFLA_BRIDGE_MST_ENTRY_UNSPEC,
+  IFLA_BRIDGE_MST_ENTRY_MSTI,
+  IFLA_BRIDGE_MST_ENTRY_STATE,
+  __IFLA_BRIDGE_MST_ENTRY_MAX,
+};
+#define IFLA_BRIDGE_MST_ENTRY_MAX (__IFLA_BRIDGE_MST_ENTRY_MAX - 1)
 struct bridge_stp_xstats {
   __u64 transition_blk;
   __u64 transition_fwd;
@@ -460,6 +474,7 @@
   BRIDGE_VLANDB_GOPTS_MCAST_QUERIER,
   BRIDGE_VLANDB_GOPTS_MCAST_ROUTER_PORTS,
   BRIDGE_VLANDB_GOPTS_MCAST_QUERIER_STATE,
+  BRIDGE_VLANDB_GOPTS_MSTI,
   __BRIDGE_VLANDB_GOPTS_MAX
 };
 #define BRIDGE_VLANDB_GOPTS_MAX (__BRIDGE_VLANDB_GOPTS_MAX - 1)
@@ -599,6 +614,7 @@
 enum br_boolopt_id {
   BR_BOOLOPT_NO_LL_LEARN,
   BR_BOOLOPT_MCAST_VLAN_SNOOPING,
+  BR_BOOLOPT_MST_ENABLE,
   BR_BOOLOPT_MAX
 };
 struct br_boolopt_multi {
diff --git a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/if_ether.h b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/if_ether.h
index 1f7f8f2..6043921 100644
--- a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/if_ether.h
+++ b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/if_ether.h
@@ -67,8 +67,10 @@
 #define ETH_P_LINK_CTL 0x886c
 #define ETH_P_ATMFATE 0x8884
 #define ETH_P_PAE 0x888E
+#define ETH_P_PROFINET 0x8892
 #define ETH_P_REALTEK 0x8899
 #define ETH_P_AOE 0x88A2
+#define ETH_P_ETHERCAT 0x88A4
 #define ETH_P_8021AD 0x88A8
 #define ETH_P_802_EX1 0x88B5
 #define ETH_P_PREAUTH 0x88C7
@@ -95,6 +97,7 @@
 #define ETH_P_QINQ3 0x9300
 #define ETH_P_EDSA 0xDADA
 #define ETH_P_DSA_8021Q 0xDADB
+#define ETH_P_DSA_A5PSW 0xE001
 #define ETH_P_IFE 0xED3E
 #define ETH_P_AF_IUCV 0xFBFB
 #define ETH_P_802_3_MIN 0x0600
@@ -109,6 +112,7 @@
 #define ETH_P_LOCALTALK 0x0009
 #define ETH_P_CAN 0x000C
 #define ETH_P_CANFD 0x000D
+#define ETH_P_CANXL 0x000E
 #define ETH_P_PPPTALK 0x0010
 #define ETH_P_TR_802_2 0x0011
 #define ETH_P_MOBITEX 0x0015
diff --git a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/if_link.h b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/if_link.h
index 7e413ae..ebf403a 100644
--- a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/if_link.h
+++ b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/if_link.h
@@ -71,6 +71,18 @@
   __u64 rx_compressed;
   __u64 tx_compressed;
   __u64 rx_nohandler;
+  __u64 rx_otherhost_dropped;
+};
+struct rtnl_hw_stats64 {
+  __u64 rx_packets;
+  __u64 tx_packets;
+  __u64 rx_bytes;
+  __u64 tx_bytes;
+  __u64 rx_errors;
+  __u64 tx_errors;
+  __u64 rx_dropped;
+  __u64 tx_dropped;
+  __u64 multicast;
 };
 struct rtnl_link_ifmap {
   __u64 mem_start;
@@ -151,6 +163,9 @@
   IFLA_PARENT_DEV_NAME,
   IFLA_PARENT_DEV_BUS_NAME,
   IFLA_GRO_MAX_SIZE,
+  IFLA_TSO_MAX_SIZE,
+  IFLA_TSO_MAX_SEGS,
+  IFLA_ALLMULTI,
   __IFLA_MAX
 };
 #define IFLA_MAX (__IFLA_MAX - 1)
@@ -289,6 +304,7 @@
   IFLA_BRPORT_MRP_IN_OPEN,
   IFLA_BRPORT_MCAST_EHT_HOSTS_LIMIT,
   IFLA_BRPORT_MCAST_EHT_HOSTS_CNT,
+  IFLA_BRPORT_LOCKED,
   __IFLA_BRPORT_MAX
 };
 #define IFLA_BRPORT_MAX (__IFLA_BRPORT_MAX - 1)
@@ -396,6 +412,7 @@
   IFLA_XFRM_UNSPEC,
   IFLA_XFRM_LINK,
   IFLA_XFRM_IF_ID,
+  IFLA_XFRM_COLLECT_METADATA,
   __IFLA_XFRM_MAX
 };
 #define IFLA_XFRM_MAX (__IFLA_XFRM_MAX - 1)
@@ -428,6 +445,44 @@
 };
 #define IPVLAN_F_PRIVATE 0x01
 #define IPVLAN_F_VEPA 0x02
+struct tunnel_msg {
+  __u8 family;
+  __u8 flags;
+  __u16 reserved2;
+  __u32 ifindex;
+};
+#define TUNNEL_MSG_FLAG_STATS 0x01
+#define TUNNEL_MSG_VALID_USER_FLAGS TUNNEL_MSG_FLAG_STATS
+enum {
+  VNIFILTER_ENTRY_STATS_UNSPEC,
+  VNIFILTER_ENTRY_STATS_RX_BYTES,
+  VNIFILTER_ENTRY_STATS_RX_PKTS,
+  VNIFILTER_ENTRY_STATS_RX_DROPS,
+  VNIFILTER_ENTRY_STATS_RX_ERRORS,
+  VNIFILTER_ENTRY_STATS_TX_BYTES,
+  VNIFILTER_ENTRY_STATS_TX_PKTS,
+  VNIFILTER_ENTRY_STATS_TX_DROPS,
+  VNIFILTER_ENTRY_STATS_TX_ERRORS,
+  VNIFILTER_ENTRY_STATS_PAD,
+  __VNIFILTER_ENTRY_STATS_MAX
+};
+#define VNIFILTER_ENTRY_STATS_MAX (__VNIFILTER_ENTRY_STATS_MAX - 1)
+enum {
+  VXLAN_VNIFILTER_ENTRY_UNSPEC,
+  VXLAN_VNIFILTER_ENTRY_START,
+  VXLAN_VNIFILTER_ENTRY_END,
+  VXLAN_VNIFILTER_ENTRY_GROUP,
+  VXLAN_VNIFILTER_ENTRY_GROUP6,
+  VXLAN_VNIFILTER_ENTRY_STATS,
+  __VXLAN_VNIFILTER_ENTRY_MAX
+};
+#define VXLAN_VNIFILTER_ENTRY_MAX (__VXLAN_VNIFILTER_ENTRY_MAX - 1)
+enum {
+  VXLAN_VNIFILTER_UNSPEC,
+  VXLAN_VNIFILTER_ENTRY,
+  __VXLAN_VNIFILTER_MAX
+};
+#define VXLAN_VNIFILTER_MAX (__VXLAN_VNIFILTER_MAX - 1)
 enum {
   IFLA_VXLAN_UNSPEC,
   IFLA_VXLAN_ID,
@@ -459,6 +514,7 @@
   IFLA_VXLAN_GPE,
   IFLA_VXLAN_TTL_INHERIT,
   IFLA_VXLAN_DF,
+  IFLA_VXLAN_VNIFILTER,
   __IFLA_VXLAN_MAX
 };
 #define IFLA_VXLAN_MAX (__IFLA_VXLAN_MAX - 1)
@@ -488,6 +544,7 @@
   IFLA_GENEVE_LABEL,
   IFLA_GENEVE_TTL_INHERIT,
   IFLA_GENEVE_DF,
+  IFLA_GENEVE_INNER_PROTO_INHERIT,
   __IFLA_GENEVE_MAX
 };
 #define IFLA_GENEVE_MAX (__IFLA_GENEVE_MAX - 1)
@@ -523,6 +580,8 @@
   IFLA_GTP_FD1,
   IFLA_GTP_PDP_HASHSIZE,
   IFLA_GTP_ROLE,
+  IFLA_GTP_CREATE_SOCKETS,
+  IFLA_GTP_RESTART_COUNT,
   __IFLA_GTP_MAX,
 };
 #define IFLA_GTP_MAX (__IFLA_GTP_MAX - 1)
@@ -558,6 +617,7 @@
   IFLA_BOND_PEER_NOTIF_DELAY,
   IFLA_BOND_AD_LACP_ACTIVE,
   IFLA_BOND_MISSED_MAX,
+  IFLA_BOND_NS_IP6_TARGET,
   __IFLA_BOND_MAX,
 };
 #define IFLA_BOND_MAX (__IFLA_BOND_MAX - 1)
@@ -581,6 +641,7 @@
   IFLA_BOND_SLAVE_AD_AGGREGATOR_ID,
   IFLA_BOND_SLAVE_AD_ACTOR_OPER_PORT_STATE,
   IFLA_BOND_SLAVE_AD_PARTNER_OPER_PORT_STATE,
+  IFLA_BOND_SLAVE_PRIO,
   __IFLA_BOND_SLAVE_MAX,
 };
 #define IFLA_BOND_SLAVE_MAX (__IFLA_BOND_SLAVE_MAX - 1)
@@ -777,6 +838,13 @@
 #define IFLA_STATS_MAX (__IFLA_STATS_MAX - 1)
 #define IFLA_STATS_FILTER_BIT(ATTR) (1 << (ATTR - 1))
 enum {
+  IFLA_STATS_GETSET_UNSPEC,
+  IFLA_STATS_GET_FILTERS,
+  IFLA_STATS_SET_OFFLOAD_XSTATS_L3_STATS,
+  __IFLA_STATS_GETSET_MAX,
+};
+#define IFLA_STATS_GETSET_MAX (__IFLA_STATS_GETSET_MAX - 1)
+enum {
   LINK_XSTATS_TYPE_UNSPEC,
   LINK_XSTATS_TYPE_BRIDGE,
   LINK_XSTATS_TYPE_BOND,
@@ -786,9 +854,18 @@
 enum {
   IFLA_OFFLOAD_XSTATS_UNSPEC,
   IFLA_OFFLOAD_XSTATS_CPU_HIT,
+  IFLA_OFFLOAD_XSTATS_HW_S_INFO,
+  IFLA_OFFLOAD_XSTATS_L3_STATS,
   __IFLA_OFFLOAD_XSTATS_MAX
 };
 #define IFLA_OFFLOAD_XSTATS_MAX (__IFLA_OFFLOAD_XSTATS_MAX - 1)
+enum {
+  IFLA_OFFLOAD_XSTATS_HW_S_INFO_UNSPEC,
+  IFLA_OFFLOAD_XSTATS_HW_S_INFO_REQUEST,
+  IFLA_OFFLOAD_XSTATS_HW_S_INFO_USED,
+  __IFLA_OFFLOAD_XSTATS_HW_S_INFO_MAX,
+};
+#define IFLA_OFFLOAD_XSTATS_HW_S_INFO_MAX (__IFLA_OFFLOAD_XSTATS_HW_S_INFO_MAX - 1)
 #define XDP_FLAGS_UPDATE_IF_NOEXIST (1U << 0)
 #define XDP_FLAGS_SKB_MODE (1U << 1)
 #define XDP_FLAGS_DRV_MODE (1U << 2)
@@ -862,4 +939,10 @@
   __IFLA_MCTP_MAX,
 };
 #define IFLA_MCTP_MAX (__IFLA_MCTP_MAX - 1)
+enum {
+  IFLA_DSA_UNSPEC,
+  IFLA_DSA_MASTER,
+  __IFLA_DSA_MAX,
+};
+#define IFLA_DSA_MAX (__IFLA_DSA_MAX - 1)
 #endif
diff --git a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/if_macsec.h b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/if_macsec.h
index e60d767..7b51f80 100644
--- a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/if_macsec.h
+++ b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/if_macsec.h
@@ -23,6 +23,7 @@
 #define MACSEC_GENL_VERSION 1
 #define MACSEC_MAX_KEY_LEN 128
 #define MACSEC_KEYID_LEN 16
+#define MACSEC_SALT_LEN 12
 #define MACSEC_CIPHER_ID_GCM_AES_128 0x0080C20001000001ULL
 #define MACSEC_CIPHER_ID_GCM_AES_256 0x0080C20001000002ULL
 #define MACSEC_CIPHER_ID_GCM_AES_XPN_128 0x0080C20001000003ULL
diff --git a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/if_pppox.h b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/if_pppox.h
index 40d25e8..2acafdf 100644
--- a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/if_pppox.h
+++ b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/if_pppox.h
@@ -51,27 +51,27 @@
     struct pppoe_addr pppoe;
     struct pptp_addr pptp;
   } sa_addr;
-} __packed;
+} __attribute__((__packed__));
 struct sockaddr_pppol2tp {
   __kernel_sa_family_t sa_family;
   unsigned int sa_protocol;
   struct pppol2tp_addr pppol2tp;
-} __packed;
+} __attribute__((__packed__));
 struct sockaddr_pppol2tpin6 {
   __kernel_sa_family_t sa_family;
   unsigned int sa_protocol;
   struct pppol2tpin6_addr pppol2tp;
-} __packed;
+} __attribute__((__packed__));
 struct sockaddr_pppol2tpv3 {
   __kernel_sa_family_t sa_family;
   unsigned int sa_protocol;
   struct pppol2tpv3_addr pppol2tp;
-} __packed;
+} __attribute__((__packed__));
 struct sockaddr_pppol2tpv3in6 {
   __kernel_sa_family_t sa_family;
   unsigned int sa_protocol;
   struct pppol2tpv3in6_addr pppol2tp;
-} __packed;
+} __attribute__((__packed__));
 #define PPPOEIOCSFWD _IOW(0xB1, 0, size_t)
 #define PPPOEIOCDFWD _IO(0xB1, 1)
 #define PADI_CODE 0x09
@@ -82,7 +82,7 @@
 struct pppoe_tag {
   __be16 tag_type;
   __be16 tag_len;
-  char tag_data[0];
+  char tag_data[];
 } __attribute__((packed));
 #define PTT_EOL __cpu_to_be16(0x0000)
 #define PTT_SRV_NAME __cpu_to_be16(0x0101)
@@ -107,7 +107,7 @@
   __u8 code;
   __be16 sid;
   __be16 length;
-  struct pppoe_tag tag[0];
-} __packed;
+  struct pppoe_tag tag[];
+} __attribute__((__packed__));
 #define PPPOE_SES_HLEN 8
 #endif
diff --git a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/if_tun.h b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/if_tun.h
index d1a8f9e..dda0830 100644
--- a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/if_tun.h
+++ b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/if_tun.h
@@ -57,6 +57,7 @@
 #define IFF_TAP 0x0002
 #define IFF_NAPI 0x0010
 #define IFF_NAPI_FRAGS 0x0020
+#define IFF_NO_CARRIER 0x0040
 #define IFF_NO_PI 0x1000
 #define IFF_ONE_QUEUE 0x2000
 #define IFF_VNET_HDR 0x4000
@@ -81,6 +82,6 @@
 struct tun_filter {
   __u16 flags;
   __u16 count;
-  __u8 addr[0][ETH_ALEN];
+  __u8 addr[][ETH_ALEN];
 };
 #endif
diff --git a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/if_tunnel.h b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/if_tunnel.h
index 8e1847f..01c2dc9 100644
--- a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/if_tunnel.h
+++ b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/if_tunnel.h
@@ -169,5 +169,6 @@
 #define TUNNEL_VXLAN_OPT __cpu_to_be16(0x1000)
 #define TUNNEL_NOCACHE __cpu_to_be16(0x2000)
 #define TUNNEL_ERSPAN_OPT __cpu_to_be16(0x4000)
-#define TUNNEL_OPTIONS_PRESENT (TUNNEL_GENEVE_OPT | TUNNEL_VXLAN_OPT | TUNNEL_ERSPAN_OPT)
+#define TUNNEL_GTP_OPT __cpu_to_be16(0x8000)
+#define TUNNEL_OPTIONS_PRESENT (TUNNEL_GENEVE_OPT | TUNNEL_VXLAN_OPT | TUNNEL_ERSPAN_OPT | TUNNEL_GTP_OPT)
 #endif
diff --git a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/igmp.h b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/igmp.h
index 885b0f8..71c2c8d 100644
--- a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/igmp.h
+++ b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/igmp.h
@@ -37,7 +37,7 @@
   __u8 grec_auxwords;
   __be16 grec_nsrcs;
   __be32 grec_mca;
-  __be32 grec_src[0];
+  __be32 grec_src[];
 };
 struct igmpv3_report {
   __u8 type;
@@ -45,7 +45,7 @@
   __sum16 csum;
   __be16 resv2;
   __be16 ngrec;
-  struct igmpv3_grec grec[0];
+  struct igmpv3_grec grec[];
 };
 struct igmpv3_query {
   __u8 type;
@@ -61,7 +61,7 @@
 #endif
   __u8 qqic;
   __be16 nsrcs;
-  __be32 srcs[0];
+  __be32 srcs[];
 };
 #define IGMP_HOST_MEMBERSHIP_QUERY 0x11
 #define IGMP_HOST_MEMBERSHIP_REPORT 0x12
diff --git a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/iio/types.h b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/iio/types.h
index 22409a7..af7bdda 100644
--- a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/iio/types.h
+++ b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/iio/types.h
@@ -101,6 +101,12 @@
   IIO_MOD_ETHANOL,
   IIO_MOD_H2,
   IIO_MOD_O2,
+  IIO_MOD_LINEAR_X,
+  IIO_MOD_LINEAR_Y,
+  IIO_MOD_LINEAR_Z,
+  IIO_MOD_PITCH,
+  IIO_MOD_YAW,
+  IIO_MOD_ROLL,
 };
 enum iio_event_type {
   IIO_EV_TYPE_THRESH,
@@ -109,11 +115,15 @@
   IIO_EV_TYPE_THRESH_ADAPTIVE,
   IIO_EV_TYPE_MAG_ADAPTIVE,
   IIO_EV_TYPE_CHANGE,
+  IIO_EV_TYPE_MAG_REFERENCED,
+  IIO_EV_TYPE_GESTURE,
 };
 enum iio_event_direction {
   IIO_EV_DIR_EITHER,
   IIO_EV_DIR_RISING,
   IIO_EV_DIR_FALLING,
   IIO_EV_DIR_NONE,
+  IIO_EV_DIR_SINGLETAP,
+  IIO_EV_DIR_DOUBLETAP,
 };
 #endif
diff --git a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/in.h b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/in.h
index d4060e7..53d3074 100644
--- a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/in.h
+++ b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/in.h
@@ -22,6 +22,7 @@
 #include <bits/ip_mreq_source.h>
 #include <bits/in_addr.h>
 #include <linux/types.h>
+#include <linux/stddef.h>
 #include <linux/libc-compat.h>
 #include <linux/socket.h>
 #if __UAPI_DEF_IN_IPPROTO
@@ -68,6 +69,8 @@
 #define IPPROTO_PIM IPPROTO_PIM
   IPPROTO_COMP = 108,
 #define IPPROTO_COMP IPPROTO_COMP
+  IPPROTO_L2TP = 115,
+#define IPPROTO_L2TP IPPROTO_L2TP
   IPPROTO_SCTP = 132,
 #define IPPROTO_SCTP IPPROTO_SCTP
   IPPROTO_UDPLITE = 136,
diff --git a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/inet_diag.h b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/inet_diag.h
index 8656dd4..27f390b 100644
--- a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/inet_diag.h
+++ b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/inet_diag.h
@@ -89,7 +89,7 @@
   __u8 family;
   __u8 prefix_len;
   int port;
-  __be32 addr[0];
+  __be32 addr[];
 };
 struct inet_diag_markcond {
   __u32 mark;
diff --git a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/inotify.h b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/inotify.h
index eb9ac3c..3b4b577 100644
--- a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/inotify.h
+++ b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/inotify.h
@@ -25,7 +25,7 @@
   __u32 mask;
   __u32 cookie;
   __u32 len;
-  char name[0];
+  char name[];
 };
 #define IN_ACCESS 0x00000001
 #define IN_MODIFY 0x00000002
diff --git a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/input-event-codes.h b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/input-event-codes.h
index 34cd23c..40827b5 100644
--- a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/input-event-codes.h
+++ b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/input-event-codes.h
@@ -580,6 +580,21 @@
 #define KEY_ONSCREEN_KEYBOARD 0x278
 #define KEY_PRIVACY_SCREEN_TOGGLE 0x279
 #define KEY_SELECTIVE_SCREENSHOT 0x27a
+#define KEY_NEXT_ELEMENT 0x27b
+#define KEY_PREVIOUS_ELEMENT 0x27c
+#define KEY_AUTOPILOT_ENGAGE_TOGGLE 0x27d
+#define KEY_MARK_WAYPOINT 0x27e
+#define KEY_SOS 0x27f
+#define KEY_NAV_CHART 0x280
+#define KEY_FISHING_CHART 0x281
+#define KEY_SINGLE_RANGE_RADAR 0x282
+#define KEY_DUAL_RANGE_RADAR 0x283
+#define KEY_RADAR_OVERLAY 0x284
+#define KEY_TRADITIONAL_SONAR 0x285
+#define KEY_CLEARVU_SONAR 0x286
+#define KEY_SIDEVU_SONAR 0x287
+#define KEY_NAV_INFO 0x288
+#define KEY_BRIGHTNESS_MENU 0x289
 #define KEY_MACRO1 0x290
 #define KEY_MACRO2 0x291
 #define KEY_MACRO3 0x292
@@ -705,6 +720,7 @@
 #define ABS_TILT_Y 0x1b
 #define ABS_TOOL_WIDTH 0x1c
 #define ABS_VOLUME 0x20
+#define ABS_PROFILE 0x21
 #define ABS_MISC 0x28
 #define ABS_RESERVED 0x2e
 #define ABS_MT_SLOT 0x2f
diff --git a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/input.h b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/input.h
index fe17226..4858c81 100644
--- a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/input.h
+++ b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/input.h
@@ -125,6 +125,7 @@
 #define BUS_RMI 0x1D
 #define BUS_CEC 0x1E
 #define BUS_INTEL_ISHTP 0x1F
+#define BUS_AMD_SFH 0x20
 #define MT_TOOL_FINGER 0x00
 #define MT_TOOL_PEN 0x01
 #define MT_TOOL_PALM 0x02
diff --git a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/io_uring.h b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/io_uring.h
index 96944f8..82dee97 100644
--- a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/io_uring.h
+++ b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/io_uring.h
@@ -20,6 +20,10 @@
 #define LINUX_IO_URING_H
 #include <linux/fs.h>
 #include <linux/types.h>
+#include <linux/time_types.h>
+#ifdef __cplusplus
+extern "C" {
+#endif
 struct io_uring_sqe {
   __u8 opcode;
   __u8 flags;
@@ -28,6 +32,10 @@
   union {
     __u64 off;
     __u64 addr2;
+    struct {
+      __u32 cmd_op;
+      __u32 __pad1;
+    };
   };
   union {
     __u64 addr;
@@ -51,6 +59,9 @@
     __u32 rename_flags;
     __u32 unlink_flags;
     __u32 hardlink_flags;
+    __u32 xattr_flags;
+    __u32 msg_ring_flags;
+    __u32 uring_cmd_flags;
   };
   __u64 user_data;
   union {
@@ -61,9 +72,20 @@
   union {
     __s32 splice_fd_in;
     __u32 file_index;
+    struct {
+      __u16 addr_len;
+      __u16 __pad3[1];
+    };
   };
-  __u64 __pad2[2];
+  union {
+    struct {
+      __u64 addr3;
+      __u64 __pad2[1];
+    };
+    __u8 cmd[0];
+  };
 };
+#define IORING_FILE_INDEX_ALLOC (~0U)
 enum {
   IOSQE_FIXED_FILE_BIT,
   IOSQE_IO_DRAIN_BIT,
@@ -87,7 +109,14 @@
 #define IORING_SETUP_CLAMP (1U << 4)
 #define IORING_SETUP_ATTACH_WQ (1U << 5)
 #define IORING_SETUP_R_DISABLED (1U << 6)
-enum {
+#define IORING_SETUP_SUBMIT_ALL (1U << 7)
+#define IORING_SETUP_COOP_TASKRUN (1U << 8)
+#define IORING_SETUP_TASKRUN_FLAG (1U << 9)
+#define IORING_SETUP_SQE128 (1U << 10)
+#define IORING_SETUP_CQE32 (1U << 11)
+#define IORING_SETUP_SINGLE_ISSUER (1U << 12)
+#define IORING_SETUP_DEFER_TASKRUN (1U << 13)
+enum io_uring_op {
   IORING_OP_NOP,
   IORING_OP_READV,
   IORING_OP_WRITEV,
@@ -128,8 +157,18 @@
   IORING_OP_MKDIRAT,
   IORING_OP_SYMLINKAT,
   IORING_OP_LINKAT,
+  IORING_OP_MSG_RING,
+  IORING_OP_FSETXATTR,
+  IORING_OP_SETXATTR,
+  IORING_OP_FGETXATTR,
+  IORING_OP_GETXATTR,
+  IORING_OP_SOCKET,
+  IORING_OP_URING_CMD,
+  IORING_OP_SEND_ZC,
+  IORING_OP_SENDMSG_ZC,
   IORING_OP_LAST,
 };
+#define IORING_URING_CMD_FIXED (1U << 0)
 #define IORING_FSYNC_DATASYNC (1U << 0)
 #define IORING_TIMEOUT_ABS (1U << 0)
 #define IORING_TIMEOUT_UPDATE (1U << 1)
@@ -143,13 +182,30 @@
 #define IORING_POLL_ADD_MULTI (1U << 0)
 #define IORING_POLL_UPDATE_EVENTS (1U << 1)
 #define IORING_POLL_UPDATE_USER_DATA (1U << 2)
+#define IORING_POLL_ADD_LEVEL (1U << 3)
+#define IORING_ASYNC_CANCEL_ALL (1U << 0)
+#define IORING_ASYNC_CANCEL_FD (1U << 1)
+#define IORING_ASYNC_CANCEL_ANY (1U << 2)
+#define IORING_ASYNC_CANCEL_FD_FIXED (1U << 3)
+#define IORING_RECVSEND_POLL_FIRST (1U << 0)
+#define IORING_RECV_MULTISHOT (1U << 1)
+#define IORING_RECVSEND_FIXED_BUF (1U << 2)
+#define IORING_ACCEPT_MULTISHOT (1U << 0)
+enum {
+  IORING_MSG_DATA,
+  IORING_MSG_SEND_FD,
+};
+#define IORING_MSG_RING_CQE_SKIP (1U << 0)
 struct io_uring_cqe {
   __u64 user_data;
   __s32 res;
   __u32 flags;
+  __u64 big_cqe[];
 };
 #define IORING_CQE_F_BUFFER (1U << 0)
 #define IORING_CQE_F_MORE (1U << 1)
+#define IORING_CQE_F_SOCK_NONEMPTY (1U << 2)
+#define IORING_CQE_F_NOTIF (1U << 3)
 enum {
   IORING_CQE_BUFFER_SHIFT = 16,
 };
@@ -169,6 +225,7 @@
 };
 #define IORING_SQ_NEED_WAKEUP (1U << 0)
 #define IORING_SQ_CQ_OVERFLOW (1U << 1)
+#define IORING_SQ_TASKRUN (1U << 2)
 struct io_cqring_offsets {
   __u32 head;
   __u32 tail;
@@ -185,6 +242,7 @@
 #define IORING_ENTER_SQ_WAKEUP (1U << 1)
 #define IORING_ENTER_SQ_WAIT (1U << 2)
 #define IORING_ENTER_EXT_ARG (1U << 3)
+#define IORING_ENTER_REGISTERED_RING (1U << 4)
 struct io_uring_params {
   __u32 sq_entries;
   __u32 cq_entries;
@@ -209,6 +267,7 @@
 #define IORING_FEAT_NATIVE_WORKERS (1U << 9)
 #define IORING_FEAT_RSRC_TAGS (1U << 10)
 #define IORING_FEAT_CQE_SKIP (1U << 11)
+#define IORING_FEAT_LINKED_FILE (1U << 12)
 enum {
   IORING_REGISTER_BUFFERS = 0,
   IORING_UNREGISTER_BUFFERS = 1,
@@ -230,6 +289,12 @@
   IORING_REGISTER_IOWQ_AFF = 17,
   IORING_UNREGISTER_IOWQ_AFF = 18,
   IORING_REGISTER_IOWQ_MAX_WORKERS = 19,
+  IORING_REGISTER_RING_FDS = 20,
+  IORING_UNREGISTER_RING_FDS = 21,
+  IORING_REGISTER_PBUF_RING = 22,
+  IORING_UNREGISTER_PBUF_RING = 23,
+  IORING_REGISTER_SYNC_CANCEL = 24,
+  IORING_REGISTER_FILE_ALLOC_RANGE = 25,
   IORING_REGISTER_LAST
 };
 enum {
@@ -241,9 +306,10 @@
   __u32 resv;
   __aligned_u64 fds;
 };
+#define IORING_RSRC_REGISTER_SPARSE (1U << 0)
 struct io_uring_rsrc_register {
   __u32 nr;
-  __u32 resv;
+  __u32 flags;
   __u64 resv2;
   __aligned_u64 data;
   __aligned_u64 tags;
@@ -261,6 +327,17 @@
   __u32 nr;
   __u32 resv2;
 };
+struct io_uring_notification_slot {
+  __u64 tag;
+  __u64 resv[3];
+};
+struct io_uring_notification_register {
+  __u32 nr_slots;
+  __u32 resv;
+  __u64 resv2;
+  __u64 data;
+  __u64 resv3;
+};
 #define IORING_REGISTER_FILES_SKIP (- 2)
 #define IO_URING_OP_SUPPORTED (1U << 0)
 struct io_uring_probe_op {
@@ -274,7 +351,7 @@
   __u8 ops_len;
   __u16 resv;
   __u32 resv2[3];
-  struct io_uring_probe_op ops[0];
+  struct io_uring_probe_op ops[];
 };
 struct io_uring_restriction {
   __u16 opcode;
@@ -286,6 +363,30 @@
   __u8 resv;
   __u32 resv2[3];
 };
+struct io_uring_buf {
+  __u64 addr;
+  __u32 len;
+  __u16 bid;
+  __u16 resv;
+};
+struct io_uring_buf_ring {
+  union {
+    struct {
+      __u64 resv1;
+      __u32 resv2;
+      __u16 resv3;
+      __u16 tail;
+    };
+    struct io_uring_buf bufs[0];
+  };
+};
+struct io_uring_buf_reg {
+  __u64 ring_addr;
+  __u32 ring_entries;
+  __u16 bgid;
+  __u16 pad;
+  __u64 resv[3];
+};
 enum {
   IORING_RESTRICTION_REGISTER_OP = 0,
   IORING_RESTRICTION_SQE_OP = 1,
@@ -299,4 +400,25 @@
   __u32 pad;
   __u64 ts;
 };
+struct io_uring_sync_cancel_reg {
+  __u64 addr;
+  __s32 fd;
+  __u32 flags;
+  struct __kernel_timespec timeout;
+  __u64 pad[4];
+};
+struct io_uring_file_index_range {
+  __u32 off;
+  __u32 len;
+  __u64 resv;
+};
+struct io_uring_recvmsg_out {
+  __u32 namelen;
+  __u32 controllen;
+  __u32 payloadlen;
+  __u32 flags;
+};
+#ifdef __cplusplus
+}
+#endif
 #endif
diff --git a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/ioam6_iptunnel.h b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/ioam6_iptunnel.h
index 7426225..ec1a6a8 100644
--- a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/ioam6_iptunnel.h
+++ b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/ioam6_iptunnel.h
@@ -32,6 +32,10 @@
   IOAM6_IPTUNNEL_MODE,
   IOAM6_IPTUNNEL_DST,
   IOAM6_IPTUNNEL_TRACE,
+#define IOAM6_IPTUNNEL_FREQ_MIN 1
+#define IOAM6_IPTUNNEL_FREQ_MAX 1000000
+  IOAM6_IPTUNNEL_FREQ_K,
+  IOAM6_IPTUNNEL_FREQ_N,
   __IOAM6_IPTUNNEL_MAX,
 };
 #define IOAM6_IPTUNNEL_MAX (__IOAM6_IPTUNNEL_MAX - 1)
diff --git a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/iommu.h b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/iommu.h
index 0a0af92..0304a32 100644
--- a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/iommu.h
+++ b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/iommu.h
@@ -85,76 +85,4 @@
   __u32 grpid;
   __u32 code;
 };
-enum iommu_inv_granularity {
-  IOMMU_INV_GRANU_DOMAIN,
-  IOMMU_INV_GRANU_PASID,
-  IOMMU_INV_GRANU_ADDR,
-  IOMMU_INV_GRANU_NR,
-};
-struct iommu_inv_addr_info {
-#define IOMMU_INV_ADDR_FLAGS_PASID (1 << 0)
-#define IOMMU_INV_ADDR_FLAGS_ARCHID (1 << 1)
-#define IOMMU_INV_ADDR_FLAGS_LEAF (1 << 2)
-  __u32 flags;
-  __u32 archid;
-  __u64 pasid;
-  __u64 addr;
-  __u64 granule_size;
-  __u64 nb_granules;
-};
-struct iommu_inv_pasid_info {
-#define IOMMU_INV_PASID_FLAGS_PASID (1 << 0)
-#define IOMMU_INV_PASID_FLAGS_ARCHID (1 << 1)
-  __u32 flags;
-  __u32 archid;
-  __u64 pasid;
-};
-struct iommu_cache_invalidate_info {
-  __u32 argsz;
-#define IOMMU_CACHE_INVALIDATE_INFO_VERSION_1 1
-  __u32 version;
-#define IOMMU_CACHE_INV_TYPE_IOTLB (1 << 0)
-#define IOMMU_CACHE_INV_TYPE_DEV_IOTLB (1 << 1)
-#define IOMMU_CACHE_INV_TYPE_PASID (1 << 2)
-#define IOMMU_CACHE_INV_TYPE_NR (3)
-  __u8 cache;
-  __u8 granularity;
-  __u8 padding[6];
-  union {
-    struct iommu_inv_pasid_info pasid_info;
-    struct iommu_inv_addr_info addr_info;
-  } granu;
-};
-struct iommu_gpasid_bind_data_vtd {
-#define IOMMU_SVA_VTD_GPASID_SRE (1 << 0)
-#define IOMMU_SVA_VTD_GPASID_EAFE (1 << 1)
-#define IOMMU_SVA_VTD_GPASID_PCD (1 << 2)
-#define IOMMU_SVA_VTD_GPASID_PWT (1 << 3)
-#define IOMMU_SVA_VTD_GPASID_EMTE (1 << 4)
-#define IOMMU_SVA_VTD_GPASID_CD (1 << 5)
-#define IOMMU_SVA_VTD_GPASID_WPE (1 << 6)
-#define IOMMU_SVA_VTD_GPASID_LAST (1 << 7)
-  __u64 flags;
-  __u32 pat;
-  __u32 emt;
-};
-#define IOMMU_SVA_VTD_GPASID_MTS_MASK (IOMMU_SVA_VTD_GPASID_CD | IOMMU_SVA_VTD_GPASID_EMTE | IOMMU_SVA_VTD_GPASID_PCD | IOMMU_SVA_VTD_GPASID_PWT)
-struct iommu_gpasid_bind_data {
-  __u32 argsz;
-#define IOMMU_GPASID_BIND_VERSION_1 1
-  __u32 version;
-#define IOMMU_PASID_FORMAT_INTEL_VTD 1
-#define IOMMU_PASID_FORMAT_LAST 2
-  __u32 format;
-  __u32 addr_width;
-#define IOMMU_SVA_GPASID_VAL (1 << 0)
-  __u64 flags;
-  __u64 gpgd;
-  __u64 hpasid;
-  __u64 gpasid;
-  __u8 padding[8];
-  union {
-    struct iommu_gpasid_bind_data_vtd vtd;
-  } vendor;
-};
 #endif
diff --git a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/ip.h b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/ip.h
index 9571cac..766a808 100644
--- a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/ip.h
+++ b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/ip.h
@@ -86,8 +86,9 @@
   __u8 ttl;
   __u8 protocol;
   __sum16 check;
-  __be32 saddr;
+  __struct_group(, addrs,, __be32 saddr;
   __be32 daddr;
+ );
 };
 struct ip_auth_hdr {
   __u8 nexthdr;
@@ -95,12 +96,12 @@
   __be16 reserved;
   __be32 spi;
   __be32 seq_no;
-  __u8 auth_data[0];
+  __u8 auth_data[];
 };
 struct ip_esp_hdr {
   __be32 spi;
   __be32 seq_no;
-  __u8 enc_data[0];
+  __u8 enc_data[];
 };
 struct ip_comp_hdr {
   __u8 nexthdr;
diff --git a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/ip_vs.h b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/ip_vs.h
index 6e3defe..916fcf0 100644
--- a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/ip_vs.h
+++ b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/ip_vs.h
@@ -159,11 +159,11 @@
   __be16 port;
   __u32 fwmark;
   unsigned int num_dests;
-  struct ip_vs_dest_entry entrytable[0];
+  struct ip_vs_dest_entry entrytable[];
 };
 struct ip_vs_get_services {
   unsigned int num_services;
-  struct ip_vs_service_entry entrytable[0];
+  struct ip_vs_service_entry entrytable[];
 };
 struct ip_vs_timeout_user {
   int tcp_timeout;
diff --git a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/ipv6.h b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/ipv6.h
index b3db9ce..2e57ed1 100644
--- a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/ipv6.h
+++ b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/ipv6.h
@@ -87,8 +87,9 @@
   __be16 payload_len;
   __u8 nexthdr;
   __u8 hop_limit;
-  struct in6_addr saddr;
+  __struct_group(, addrs,, struct in6_addr saddr;
   struct in6_addr daddr;
+ );
 };
 enum {
   DEVCONF_FORWARDING = 0,
@@ -148,6 +149,7 @@
   DEVCONF_IOAM6_ID,
   DEVCONF_IOAM6_ID_WIDE,
   DEVCONF_NDISC_EVICT_NOCARRIER,
+  DEVCONF_ACCEPT_UNTRACKED_NA,
   DEVCONF_MAX
 };
 #endif
diff --git a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/iso_fs.h b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/iso_fs.h
index 8227031..f9c4f48 100644
--- a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/iso_fs.h
+++ b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/iso_fs.h
@@ -132,7 +132,7 @@
   __u8 name_len[2];
   __u8 extent[4];
   __u8 parent[2];
-  char name[0];
+  char name[];
 } __attribute__((packed));
 struct iso_directory_record {
   __u8 length[ISODCL(1, 1)];
@@ -145,7 +145,7 @@
   __u8 interleave[ISODCL(28, 28)];
   __u8 volume_sequence_number[ISODCL(29, 32)];
   __u8 name_len[ISODCL(33, 33)];
-  char name[0];
+  char name[];
 } __attribute__((packed));
 #define ISOFS_BLOCK_BITS 11
 #define ISOFS_BLOCK_SIZE 2048
diff --git a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/jffs2.h b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/jffs2.h
index 698f953..643aa2e 100644
--- a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/jffs2.h
+++ b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/jffs2.h
@@ -86,7 +86,7 @@
   __u8 unused[2];
   jint32_t node_crc;
   jint32_t name_crc;
-  __u8 name[0];
+  __u8 name[];
 };
 struct jffs2_raw_inode {
   jint16_t magic;
@@ -110,7 +110,7 @@
   jint16_t flags;
   jint32_t data_crc;
   jint32_t node_crc;
-  __u8 data[0];
+  __u8 data[];
 };
 struct jffs2_raw_xattr {
   jint16_t magic;
@@ -124,7 +124,7 @@
   jint16_t value_len;
   jint32_t data_crc;
   jint32_t node_crc;
-  __u8 data[0];
+  __u8 data[];
 } __attribute__((packed));
 struct jffs2_raw_xref {
   jint16_t magic;
@@ -146,7 +146,7 @@
   jint32_t padded;
   jint32_t sum_crc;
   jint32_t node_crc;
-  jint32_t sum[0];
+  jint32_t sum[];
 };
 union jffs2_node_union {
   struct jffs2_raw_inode i;
diff --git a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/kcov.h b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/kcov.h
index cf2660b..5b6f6b1 100644
--- a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/kcov.h
+++ b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/kcov.h
@@ -24,7 +24,7 @@
   __u32 area_size;
   __u32 num_handles;
   __aligned_u64 common_handle;
-  __aligned_u64 handles[0];
+  __aligned_u64 handles[];
 };
 #define KCOV_REMOTE_MAX_HANDLES 0x100
 #define KCOV_INIT_TRACE _IOR('c', 1, unsigned long)
diff --git a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/kexec.h b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/kexec.h
index 2e3bd0c..438c07b 100644
--- a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/kexec.h
+++ b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/kexec.h
@@ -40,11 +40,12 @@
 #define KEXEC_ARCH_MIPS (8 << 16)
 #define KEXEC_ARCH_AARCH64 (183 << 16)
 #define KEXEC_ARCH_RISCV (243 << 16)
+#define KEXEC_ARCH_LOONGARCH (258 << 16)
 #define KEXEC_SEGMENT_MAX 16
 struct kexec_segment {
   const void * buf;
-  size_t bufsz;
+  __kernel_size_t bufsz;
   const void * mem;
-  size_t memsz;
+  __kernel_size_t memsz;
 };
 #endif
diff --git a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/kfd_ioctl.h b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/kfd_ioctl.h
index c52ac64..d21e0fc 100644
--- a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/kfd_ioctl.h
+++ b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/kfd_ioctl.h
@@ -21,7 +21,7 @@
 #include <drm/drm.h>
 #include <linux/ioctl.h>
 #define KFD_IOCTL_MAJOR_VERSION 1
-#define KFD_IOCTL_MINOR_VERSION 6
+#define KFD_IOCTL_MINOR_VERSION 11
 struct kfd_ioctl_get_version_args {
   __u32 major_version;
   __u32 minor_version;
@@ -72,6 +72,11 @@
   __u32 queue_id;
   __u32 pad;
 };
+struct kfd_ioctl_get_available_memory_args {
+  __u64 available;
+  __u32 gpu_id;
+  __u32 pad;
+};
 #define KFD_IOC_CACHE_POLICY_COHERENT 0
 #define KFD_IOC_CACHE_POLICY_NONCOHERENT 1
 struct kfd_ioctl_set_memory_policy_args {
@@ -132,6 +137,7 @@
   __u32 gpu_id;
   __u32 buf_size_in_bytes;
 };
+#define KFD_INVALID_FD 0xffffffff
 #define KFD_IOC_EVENT_SIGNAL 0
 #define KFD_IOC_EVENT_NODECHANGE 1
 #define KFD_IOC_EVENT_DEVICESTATECHANGE 2
@@ -294,12 +300,74 @@
   KFD_SMI_EVENT_THERMAL_THROTTLE = 2,
   KFD_SMI_EVENT_GPU_PRE_RESET = 3,
   KFD_SMI_EVENT_GPU_POST_RESET = 4,
+  KFD_SMI_EVENT_MIGRATE_START = 5,
+  KFD_SMI_EVENT_MIGRATE_END = 6,
+  KFD_SMI_EVENT_PAGE_FAULT_START = 7,
+  KFD_SMI_EVENT_PAGE_FAULT_END = 8,
+  KFD_SMI_EVENT_QUEUE_EVICTION = 9,
+  KFD_SMI_EVENT_QUEUE_RESTORE = 10,
+  KFD_SMI_EVENT_UNMAP_FROM_GPU = 11,
+  KFD_SMI_EVENT_ALL_PROCESS = 64
+};
+enum KFD_MIGRATE_TRIGGERS {
+  KFD_MIGRATE_TRIGGER_PREFETCH,
+  KFD_MIGRATE_TRIGGER_PAGEFAULT_GPU,
+  KFD_MIGRATE_TRIGGER_PAGEFAULT_CPU,
+  KFD_MIGRATE_TRIGGER_TTM_EVICTION
+};
+enum KFD_QUEUE_EVICTION_TRIGGERS {
+  KFD_QUEUE_EVICTION_TRIGGER_SVM,
+  KFD_QUEUE_EVICTION_TRIGGER_USERPTR,
+  KFD_QUEUE_EVICTION_TRIGGER_TTM,
+  KFD_QUEUE_EVICTION_TRIGGER_SUSPEND,
+  KFD_QUEUE_EVICTION_CRIU_CHECKPOINT,
+  KFD_QUEUE_EVICTION_CRIU_RESTORE
+};
+enum KFD_SVM_UNMAP_TRIGGERS {
+  KFD_SVM_UNMAP_TRIGGER_MMU_NOTIFY,
+  KFD_SVM_UNMAP_TRIGGER_MMU_NOTIFY_MIGRATE,
+  KFD_SVM_UNMAP_TRIGGER_UNMAP_FROM_CPU
 };
 #define KFD_SMI_EVENT_MASK_FROM_INDEX(i) (1ULL << ((i) - 1))
+#define KFD_SMI_EVENT_MSG_SIZE 96
 struct kfd_ioctl_smi_events_args {
   __u32 gpuid;
   __u32 anon_fd;
 };
+enum kfd_criu_op {
+  KFD_CRIU_OP_PROCESS_INFO,
+  KFD_CRIU_OP_CHECKPOINT,
+  KFD_CRIU_OP_UNPAUSE,
+  KFD_CRIU_OP_RESTORE,
+  KFD_CRIU_OP_RESUME,
+};
+struct kfd_ioctl_criu_args {
+  __u64 devices;
+  __u64 bos;
+  __u64 priv_data;
+  __u64 priv_data_size;
+  __u32 num_devices;
+  __u32 num_bos;
+  __u32 num_objects;
+  __u32 pid;
+  __u32 op;
+};
+struct kfd_criu_device_bucket {
+  __u32 user_gpu_id;
+  __u32 actual_gpu_id;
+  __u32 drm_fd;
+  __u32 pad;
+};
+struct kfd_criu_bo_bucket {
+  __u64 addr;
+  __u64 size;
+  __u64 offset;
+  __u64 restored_offset;
+  __u32 gpu_id;
+  __u32 alloc_flags;
+  __u32 dmabuf_fd;
+  __u32 pad;
+};
 enum kfd_mmio_remap {
   KFD_MMIO_REMAP_HDP_MEM_FLUSH_CNTL = 0,
   KFD_MMIO_REMAP_HDP_REG_FLUSH_CNTL = 4,
@@ -310,6 +378,7 @@
 #define KFD_IOCTL_SVM_FLAG_GPU_RO 0x00000008
 #define KFD_IOCTL_SVM_FLAG_GPU_EXEC 0x00000010
 #define KFD_IOCTL_SVM_FLAG_GPU_READ_MOSTLY 0x00000020
+#define KFD_IOCTL_SVM_FLAG_GPU_ALWAYS_MAPPED 0x00000040
 enum kfd_ioctl_svm_op {
   KFD_IOCTL_SVM_OP_SET_ATTR,
   KFD_IOCTL_SVM_OP_GET_ATTR
@@ -337,7 +406,7 @@
   __u64 size;
   __u32 op;
   __u32 nattr;
-  struct kfd_ioctl_svm_attribute attrs[0];
+  struct kfd_ioctl_svm_attribute attrs[];
 };
 struct kfd_ioctl_set_xnack_mode_args {
   __s32 xnack_enabled;
@@ -359,10 +428,10 @@
 #define AMDKFD_IOC_SET_EVENT AMDKFD_IOW(0x0A, struct kfd_ioctl_set_event_args)
 #define AMDKFD_IOC_RESET_EVENT AMDKFD_IOW(0x0B, struct kfd_ioctl_reset_event_args)
 #define AMDKFD_IOC_WAIT_EVENTS AMDKFD_IOWR(0x0C, struct kfd_ioctl_wait_events_args)
-#define AMDKFD_IOC_DBG_REGISTER AMDKFD_IOW(0x0D, struct kfd_ioctl_dbg_register_args)
-#define AMDKFD_IOC_DBG_UNREGISTER AMDKFD_IOW(0x0E, struct kfd_ioctl_dbg_unregister_args)
-#define AMDKFD_IOC_DBG_ADDRESS_WATCH AMDKFD_IOW(0x0F, struct kfd_ioctl_dbg_address_watch_args)
-#define AMDKFD_IOC_DBG_WAVE_CONTROL AMDKFD_IOW(0x10, struct kfd_ioctl_dbg_wave_control_args)
+#define AMDKFD_IOC_DBG_REGISTER_DEPRECATED AMDKFD_IOW(0x0D, struct kfd_ioctl_dbg_register_args)
+#define AMDKFD_IOC_DBG_UNREGISTER_DEPRECATED AMDKFD_IOW(0x0E, struct kfd_ioctl_dbg_unregister_args)
+#define AMDKFD_IOC_DBG_ADDRESS_WATCH_DEPRECATED AMDKFD_IOW(0x0F, struct kfd_ioctl_dbg_address_watch_args)
+#define AMDKFD_IOC_DBG_WAVE_CONTROL_DEPRECATED AMDKFD_IOW(0x10, struct kfd_ioctl_dbg_wave_control_args)
 #define AMDKFD_IOC_SET_SCRATCH_BACKING_VA AMDKFD_IOWR(0x11, struct kfd_ioctl_set_scratch_backing_va_args)
 #define AMDKFD_IOC_GET_TILE_CONFIG AMDKFD_IOWR(0x12, struct kfd_ioctl_get_tile_config_args)
 #define AMDKFD_IOC_SET_TRAP_HANDLER AMDKFD_IOW(0x13, struct kfd_ioctl_set_trap_handler_args)
@@ -380,6 +449,8 @@
 #define AMDKFD_IOC_SMI_EVENTS AMDKFD_IOWR(0x1F, struct kfd_ioctl_smi_events_args)
 #define AMDKFD_IOC_SVM AMDKFD_IOWR(0x20, struct kfd_ioctl_svm_args)
 #define AMDKFD_IOC_SET_XNACK_MODE AMDKFD_IOWR(0x21, struct kfd_ioctl_set_xnack_mode_args)
+#define AMDKFD_IOC_CRIU_OP AMDKFD_IOWR(0x22, struct kfd_ioctl_criu_args)
+#define AMDKFD_IOC_AVAILABLE_MEMORY AMDKFD_IOWR(0x23, struct kfd_ioctl_get_available_memory_args)
 #define AMDKFD_COMMAND_START 0x01
-#define AMDKFD_COMMAND_END 0x22
+#define AMDKFD_COMMAND_END 0x24
 #endif
diff --git a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/kvm.h b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/kvm.h
index 1cf7182..768f57e 100644
--- a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/kvm.h
+++ b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/kvm.h
@@ -216,6 +216,8 @@
 #define KVM_EXIT_X86_BUS_LOCK 33
 #define KVM_EXIT_XEN 34
 #define KVM_EXIT_RISCV_SBI 35
+#define KVM_EXIT_RISCV_CSR 36
+#define KVM_EXIT_NOTIFY 37
 #define KVM_INTERNAL_ERROR_EMULATION 1
 #define KVM_INTERNAL_ERROR_SIMUL_EX 2
 #define KVM_INTERNAL_ERROR_DELIVERY_EV 3
@@ -336,8 +338,15 @@
 #define KVM_SYSTEM_EVENT_SHUTDOWN 1
 #define KVM_SYSTEM_EVENT_RESET 2
 #define KVM_SYSTEM_EVENT_CRASH 3
+#define KVM_SYSTEM_EVENT_WAKEUP 4
+#define KVM_SYSTEM_EVENT_SUSPEND 5
+#define KVM_SYSTEM_EVENT_SEV_TERM 6
       __u32 type;
-      __u64 flags;
+      __u32 ndata;
+      union {
+        __u64 flags;
+        __u64 data[16];
+      };
     } system_event;
     struct {
       __u64 addr;
@@ -372,6 +381,16 @@
       unsigned long args[6];
       unsigned long ret[2];
     } riscv_sbi;
+    struct {
+      unsigned long csr_num;
+      unsigned long new_value;
+      unsigned long write_mask;
+      unsigned long ret_value;
+    } riscv_csr;
+    struct {
+#define KVM_NOTIFY_CONTEXT_INVALID (1 << 0)
+      __u32 flags;
+    } notify;
     char padding[256];
   };
 #define SYNC_REGS_SIZE_BYTES 2048
@@ -401,7 +420,7 @@
 };
 struct kvm_coalesced_mmio_ring {
   __u32 first, last;
-  struct kvm_coalesced_mmio coalesced_mmio[0];
+  struct kvm_coalesced_mmio coalesced_mmio[];
 };
 #define KVM_COALESCED_MMIO_MAX ((PAGE_SIZE - sizeof(struct kvm_coalesced_mmio_ring)) / sizeof(struct kvm_coalesced_mmio))
 struct kvm_translation {
@@ -419,7 +438,10 @@
   __u32 op;
   __u64 buf;
   union {
-    __u8 ar;
+    struct {
+      __u8 ar;
+      __u8 key;
+    };
     __u32 sida_offset;
     __u8 reserved[32];
   };
@@ -428,8 +450,11 @@
 #define KVM_S390_MEMOP_LOGICAL_WRITE 1
 #define KVM_S390_MEMOP_SIDA_READ 2
 #define KVM_S390_MEMOP_SIDA_WRITE 3
+#define KVM_S390_MEMOP_ABSOLUTE_READ 4
+#define KVM_S390_MEMOP_ABSOLUTE_WRITE 5
 #define KVM_S390_MEMOP_F_CHECK_ONLY (1ULL << 0)
 #define KVM_S390_MEMOP_F_INJECT_EXCEPTION (1ULL << 1)
+#define KVM_S390_MEMOP_F_SKEY_PROTECTION (1ULL << 2)
 struct kvm_interrupt {
   __u32 irq;
 };
@@ -452,7 +477,7 @@
 };
 struct kvm_signal_mask {
   __u32 len;
-  __u8 sigset[0];
+  __u8 sigset[];
 };
 struct kvm_tpr_access_ctl {
   __u32 enabled;
@@ -472,6 +497,7 @@
 #define KVM_MP_STATE_OPERATING 7
 #define KVM_MP_STATE_LOAD 8
 #define KVM_MP_STATE_AP_RESET_HOLD 9
+#define KVM_MP_STATE_SUSPENDED 10
 struct kvm_mp_state {
   __u32 mp_state;
 };
@@ -890,6 +916,19 @@
 #define KVM_CAP_XSAVE2 208
 #define KVM_CAP_SYS_ATTRIBUTES 209
 #define KVM_CAP_PPC_AIL_MODE_3 210
+#define KVM_CAP_S390_MEM_OP_EXTENSION 211
+#define KVM_CAP_PMU_CAPABILITY 212
+#define KVM_CAP_DISABLE_QUIRKS2 213
+#define KVM_CAP_VM_TSC_CONTROL 214
+#define KVM_CAP_SYSTEM_EVENT_DATA 215
+#define KVM_CAP_ARM_SYSTEM_SUSPEND 216
+#define KVM_CAP_S390_PROTECTED_DUMP 217
+#define KVM_CAP_X86_TRIPLE_FAULT_EVENT 218
+#define KVM_CAP_X86_NOTIFY_VMEXIT 219
+#define KVM_CAP_VM_DISABLE_NX_HUGE_PAGES 220
+#define KVM_CAP_S390_ZPCI_OP 221
+#define KVM_CAP_S390_CPU_TOPOLOGY 222
+#define KVM_CAP_DIRTY_LOG_RING_ACQ_REL 223
 #ifdef KVM_CAP_IRQ_ROUTING
 struct kvm_irq_routing_irqchip {
   __u32 irqchip;
@@ -943,7 +982,7 @@
 struct kvm_irq_routing {
   __u32 nr;
   __u32 flags;
-  struct kvm_irq_routing_entry entries[0];
+  struct kvm_irq_routing_entry entries[];
 };
 #endif
 #ifdef KVM_CAP_MCE
@@ -963,6 +1002,7 @@
 #define KVM_XEN_HVM_CONFIG_SHARED_INFO (1 << 2)
 #define KVM_XEN_HVM_CONFIG_RUNSTATE (1 << 3)
 #define KVM_XEN_HVM_CONFIG_EVTCHN_2LEVEL (1 << 4)
+#define KVM_XEN_HVM_CONFIG_EVTCHN_SEND (1 << 5)
 struct kvm_xen_hvm_config {
   __u32 flags;
   __u32 msr;
@@ -1028,7 +1068,7 @@
 #define KVM_REG_SIZE_U2048 0x0080000000000000ULL
 struct kvm_reg_list {
   __u64 n;
-  __u64 reg[0];
+  __u64 reg[];
 };
 struct kvm_one_reg {
   __u64 id;
@@ -1242,6 +1282,48 @@
   __u64 size;
   __u64 tweak;
 };
+enum pv_cmd_dmp_id {
+  KVM_PV_DUMP_INIT,
+  KVM_PV_DUMP_CONFIG_STOR_STATE,
+  KVM_PV_DUMP_COMPLETE,
+  KVM_PV_DUMP_CPU,
+};
+struct kvm_s390_pv_dmp {
+  __u64 subcmd;
+  __u64 buff_addr;
+  __u64 buff_len;
+  __u64 gaddr;
+  __u64 reserved[4];
+};
+enum pv_cmd_info_id {
+  KVM_PV_INFO_VM,
+  KVM_PV_INFO_DUMP,
+};
+struct kvm_s390_pv_info_dump {
+  __u64 dump_cpu_buffer_len;
+  __u64 dump_config_mem_buffer_per_1m;
+  __u64 dump_config_finalize_len;
+};
+struct kvm_s390_pv_info_vm {
+  __u64 inst_calls_list[4];
+  __u64 max_cpus;
+  __u64 max_guests;
+  __u64 max_guest_addr;
+  __u64 feature_indication;
+};
+struct kvm_s390_pv_info_header {
+  __u32 id;
+  __u32 len_max;
+  __u32 len_written;
+  __u32 reserved;
+};
+struct kvm_s390_pv_info {
+  struct kvm_s390_pv_info_header header;
+  union {
+    struct kvm_s390_pv_info_dump dump;
+    struct kvm_s390_pv_info_vm vm;
+  };
+};
 enum pv_cmd_id {
   KVM_PV_ENABLE,
   KVM_PV_DISABLE,
@@ -1250,6 +1332,8 @@
   KVM_PV_VERIFY,
   KVM_PV_PREP_RESET,
   KVM_PV_UNSHARE_ALL,
+  KVM_PV_INFO,
+  KVM_PV_DUMP,
 };
 struct kvm_pv_cmd {
   __u32 cmd;
@@ -1273,14 +1357,38 @@
     struct {
       __u64 gfn;
     } shared_info;
+    struct {
+      __u32 send_port;
+      __u32 type;
+      __u32 flags;
+#define KVM_XEN_EVTCHN_DEASSIGN (1 << 0)
+#define KVM_XEN_EVTCHN_UPDATE (1 << 1)
+#define KVM_XEN_EVTCHN_RESET (1 << 2)
+      union {
+        struct {
+          __u32 port;
+          __u32 vcpu;
+          __u32 priority;
+        } port;
+        struct {
+          __u32 port;
+          __s32 fd;
+        } eventfd;
+        __u32 padding[4];
+      } deliver;
+    } evtchn;
+    __u32 xen_version;
     __u64 pad[8];
   } u;
 };
 #define KVM_XEN_ATTR_TYPE_LONG_MODE 0x0
 #define KVM_XEN_ATTR_TYPE_SHARED_INFO 0x1
 #define KVM_XEN_ATTR_TYPE_UPCALL_VECTOR 0x2
+#define KVM_XEN_ATTR_TYPE_EVTCHN 0x3
+#define KVM_XEN_ATTR_TYPE_XEN_VERSION 0x4
 #define KVM_XEN_VCPU_GET_ATTR _IOWR(KVMIO, 0xca, struct kvm_xen_vcpu_attr)
 #define KVM_XEN_VCPU_SET_ATTR _IOW(KVMIO, 0xcb, struct kvm_xen_vcpu_attr)
+#define KVM_XEN_HVM_EVTCHN_SEND _IOW(KVMIO, 0xd0, struct kvm_irq_routing_xen_evtchn)
 #define KVM_GET_SREGS2 _IOR(KVMIO, 0xcc, struct kvm_sregs2)
 #define KVM_SET_SREGS2 _IOW(KVMIO, 0xcd, struct kvm_sregs2)
 struct kvm_xen_vcpu_attr {
@@ -1297,6 +1405,13 @@
       __u64 time_blocked;
       __u64 time_offline;
     } runstate;
+    __u32 vcpu_id;
+    struct {
+      __u32 port;
+      __u32 priority;
+      __u64 expires_ns;
+    } timer;
+    __u8 vector;
   } u;
 };
 #define KVM_XEN_VCPU_ATTR_TYPE_VCPU_INFO 0x0
@@ -1305,6 +1420,9 @@
 #define KVM_XEN_VCPU_ATTR_TYPE_RUNSTATE_CURRENT 0x3
 #define KVM_XEN_VCPU_ATTR_TYPE_RUNSTATE_DATA 0x4
 #define KVM_XEN_VCPU_ATTR_TYPE_RUNSTATE_ADJUST 0x5
+#define KVM_XEN_VCPU_ATTR_TYPE_VCPU_ID 0x6
+#define KVM_XEN_VCPU_ATTR_TYPE_TIMER 0x7
+#define KVM_XEN_VCPU_ATTR_TYPE_UPCALL_VECTOR 0x8
 enum sev_cmd_id {
   KVM_SEV_INIT = 0,
   KVM_SEV_ES_INIT,
@@ -1480,6 +1598,7 @@
 };
 #define KVM_BUS_LOCK_DETECTION_OFF (1 << 0)
 #define KVM_BUS_LOCK_DETECTION_EXIT (1 << 1)
+#define KVM_PMU_CAP_DISABLE (1 << 0)
 struct kvm_stats_header {
   __u32 flags;
   __u32 name_size;
@@ -1502,7 +1621,8 @@
 #define KVM_STATS_UNIT_BYTES (0x1 << KVM_STATS_UNIT_SHIFT)
 #define KVM_STATS_UNIT_SECONDS (0x2 << KVM_STATS_UNIT_SHIFT)
 #define KVM_STATS_UNIT_CYCLES (0x3 << KVM_STATS_UNIT_SHIFT)
-#define KVM_STATS_UNIT_MAX KVM_STATS_UNIT_CYCLES
+#define KVM_STATS_UNIT_BOOLEAN (0x4 << KVM_STATS_UNIT_SHIFT)
+#define KVM_STATS_UNIT_MAX KVM_STATS_UNIT_BOOLEAN
 #define KVM_STATS_BASE_SHIFT 8
 #define KVM_STATS_BASE_MASK (0xF << KVM_STATS_BASE_SHIFT)
 #define KVM_STATS_BASE_POW10 (0x0 << KVM_STATS_BASE_SHIFT)
@@ -1518,4 +1638,28 @@
 };
 #define KVM_GET_STATS_FD _IO(KVMIO, 0xce)
 #define KVM_GET_XSAVE2 _IOR(KVMIO, 0xcf, struct kvm_xsave)
+#define KVM_S390_PV_CPU_COMMAND _IOWR(KVMIO, 0xd0, struct kvm_pv_cmd)
+#define KVM_X86_NOTIFY_VMEXIT_ENABLED (1ULL << 0)
+#define KVM_X86_NOTIFY_VMEXIT_USER (1ULL << 1)
+#define KVM_S390_ZPCI_OP _IOW(KVMIO, 0xd1, struct kvm_s390_zpci_op)
+struct kvm_s390_zpci_op {
+  __u32 fh;
+  __u8 op;
+  __u8 pad[3];
+  union {
+    struct {
+      __u64 ibv;
+      __u64 sb;
+      __u32 flags;
+      __u32 noi;
+      __u8 isc;
+      __u8 sbo;
+      __u16 pad;
+    } reg_aen;
+    __u64 reserved[8];
+  } u;
+};
+#define KVM_S390_ZPCIOP_REG_AEN 0
+#define KVM_S390_ZPCIOP_DEREG_AEN 1
+#define KVM_S390_ZPCIOP_REGAEN_HOST (1 << 0)
 #endif
diff --git a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/l2tp.h b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/l2tp.h
index a054819..dee634e 100644
--- a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/l2tp.h
+++ b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/l2tp.h
@@ -22,7 +22,6 @@
 #include <linux/socket.h>
 #include <linux/in.h>
 #include <linux/in6.h>
-#define IPPROTO_L2TP 115
 #define __SOCK_SIZE__ 16
 struct sockaddr_l2tpip {
   __kernel_sa_family_t l2tp_family;
diff --git a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/landlock.h b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/landlock.h
index 50d79d8..ea2fd74 100644
--- a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/landlock.h
+++ b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/landlock.h
@@ -43,4 +43,5 @@
 #define LANDLOCK_ACCESS_FS_MAKE_FIFO (1ULL << 10)
 #define LANDLOCK_ACCESS_FS_MAKE_BLOCK (1ULL << 11)
 #define LANDLOCK_ACCESS_FS_MAKE_SYM (1ULL << 12)
+#define LANDLOCK_ACCESS_FS_REFER (1ULL << 13)
 #endif
diff --git a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/lirc.h b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/lirc.h
index a0ac24a..dff0b63 100644
--- a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/lirc.h
+++ b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/lirc.h
@@ -26,18 +26,21 @@
 #define LIRC_MODE2_PULSE 0x01000000
 #define LIRC_MODE2_FREQUENCY 0x02000000
 #define LIRC_MODE2_TIMEOUT 0x03000000
+#define LIRC_MODE2_OVERFLOW 0x04000000
 #define LIRC_VALUE_MASK 0x00FFFFFF
 #define LIRC_MODE2_MASK 0xFF000000
 #define LIRC_SPACE(val) (((val) & LIRC_VALUE_MASK) | LIRC_MODE2_SPACE)
 #define LIRC_PULSE(val) (((val) & LIRC_VALUE_MASK) | LIRC_MODE2_PULSE)
 #define LIRC_FREQUENCY(val) (((val) & LIRC_VALUE_MASK) | LIRC_MODE2_FREQUENCY)
 #define LIRC_TIMEOUT(val) (((val) & LIRC_VALUE_MASK) | LIRC_MODE2_TIMEOUT)
+#define LIRC_OVERFLOW(val) (((val) & LIRC_VALUE_MASK) | LIRC_MODE2_OVERFLOW)
 #define LIRC_VALUE(val) ((val) & LIRC_VALUE_MASK)
 #define LIRC_MODE2(val) ((val) & LIRC_MODE2_MASK)
 #define LIRC_IS_SPACE(val) (LIRC_MODE2(val) == LIRC_MODE2_SPACE)
 #define LIRC_IS_PULSE(val) (LIRC_MODE2(val) == LIRC_MODE2_PULSE)
 #define LIRC_IS_FREQUENCY(val) (LIRC_MODE2(val) == LIRC_MODE2_FREQUENCY)
 #define LIRC_IS_TIMEOUT(val) (LIRC_MODE2(val) == LIRC_MODE2_TIMEOUT)
+#define LIRC_IS_OVERFLOW(val) (LIRC_MODE2(val) == LIRC_MODE2_OVERFLOW)
 #define lirc_t int
 #define LIRC_MODE2SEND(x) (x)
 #define LIRC_SEND2MODE(x) (x)
@@ -63,17 +66,15 @@
 #define LIRC_CAN_REC_LIRCCODE LIRC_MODE2REC(LIRC_MODE_LIRCCODE)
 #define LIRC_CAN_REC_MASK LIRC_MODE2REC(LIRC_CAN_SEND_MASK)
 #define LIRC_CAN_SET_REC_CARRIER (LIRC_CAN_SET_SEND_CARRIER << 16)
-#define LIRC_CAN_SET_REC_DUTY_CYCLE (LIRC_CAN_SET_SEND_DUTY_CYCLE << 16)
-#define LIRC_CAN_SET_REC_DUTY_CYCLE_RANGE 0x40000000
 #define LIRC_CAN_SET_REC_CARRIER_RANGE 0x80000000
 #define LIRC_CAN_GET_REC_RESOLUTION 0x20000000
 #define LIRC_CAN_SET_REC_TIMEOUT 0x10000000
-#define LIRC_CAN_SET_REC_FILTER 0x08000000
 #define LIRC_CAN_MEASURE_CARRIER 0x02000000
 #define LIRC_CAN_USE_WIDEBAND_RECEIVER 0x04000000
 #define LIRC_CAN_SEND(x) ((x) & LIRC_CAN_SEND_MASK)
 #define LIRC_CAN_REC(x) ((x) & LIRC_CAN_REC_MASK)
-#define LIRC_CAN_NOTIFY_DECODE 0x01000000
+#define LIRC_CAN_SET_REC_FILTER 0
+#define LIRC_CAN_NOTIFY_DECODE 0
 #define LIRC_GET_FEATURES _IOR('i', 0x00000000, __u32)
 #define LIRC_GET_SEND_MODE _IOR('i', 0x00000001, __u32)
 #define LIRC_GET_REC_MODE _IOR('i', 0x00000002, __u32)
diff --git a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/loadpin.h b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/loadpin.h
new file mode 100644
index 0000000..2641939
--- /dev/null
+++ b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/loadpin.h
@@ -0,0 +1,23 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPI_LINUX_LOOP_LOADPIN_H
+#define _UAPI_LINUX_LOOP_LOADPIN_H
+#define LOADPIN_IOC_MAGIC 'L'
+#define LOADPIN_IOC_SET_TRUSTED_VERITY_DIGESTS _IOW(LOADPIN_IOC_MAGIC, 0x00, unsigned int)
+#endif
diff --git a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/lwtunnel.h b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/lwtunnel.h
index e6fb536..94011dd 100644
--- a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/lwtunnel.h
+++ b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/lwtunnel.h
@@ -30,6 +30,7 @@
   LWTUNNEL_ENCAP_SEG6_LOCAL,
   LWTUNNEL_ENCAP_RPL,
   LWTUNNEL_ENCAP_IOAM6,
+  LWTUNNEL_ENCAP_XFRM,
   __LWTUNNEL_ENCAP_MAX,
 };
 #define LWTUNNEL_ENCAP_MAX (__LWTUNNEL_ENCAP_MAX - 1)
@@ -107,4 +108,11 @@
 };
 #define LWT_BPF_MAX (__LWT_BPF_MAX - 1)
 #define LWT_BPF_MAX_HEADROOM 256
+enum {
+  LWT_XFRM_UNSPEC,
+  LWT_XFRM_IF_ID,
+  LWT_XFRM_LINK,
+  __LWT_XFRM_MAX,
+};
+#define LWT_XFRM_MAX (__LWT_XFRM_MAX - 1)
 #endif
diff --git a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/magic.h b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/magic.h
index 6563411..ac2a0f3 100644
--- a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/magic.h
+++ b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/magic.h
@@ -99,11 +99,7 @@
 #define AAFS_MAGIC 0x5a3c69f0
 #define ZONEFS_MAGIC 0x5a4f4653
 #define UDF_SUPER_MAGIC 0x15013346
-#define BALLOON_KVM_MAGIC 0x13661366
-#define ZSMALLOC_MAGIC 0x58295829
 #define DMA_BUF_MAGIC 0x444d4142
 #define DEVMEM_MAGIC 0x454d444d
-#define Z3FOLD_MAGIC 0x33
-#define PPC_CMM_MAGIC 0xc7571590
 #define SECRETMEM_MAGIC 0x5345434d
 #endif
diff --git a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/mctp.h b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/mctp.h
index 21a9a14..f02c12f 100644
--- a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/mctp.h
+++ b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/mctp.h
@@ -46,5 +46,13 @@
 #define MCTP_ADDR_ANY 0xff
 #define MCTP_TAG_MASK 0x07
 #define MCTP_TAG_OWNER 0x08
+#define MCTP_TAG_PREALLOC 0x10
 #define MCTP_OPT_ADDR_EXT 1
+#define SIOCMCTPALLOCTAG (SIOCPROTOPRIVATE + 0)
+#define SIOCMCTPDROPTAG (SIOCPROTOPRIVATE + 1)
+struct mctp_ioc_tag_ctl {
+  mctp_eid_t peer_addr;
+  __u8 tag;
+  __u16 flags;
+};
 #endif
diff --git a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/mdio.h b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/mdio.h
index d5c9da8..7a2c9af 100644
--- a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/mdio.h
+++ b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/mdio.h
@@ -66,6 +66,19 @@
 #define MDIO_PCS_10GBRT_STAT2 33
 #define MDIO_AN_10GBT_CTRL 32
 #define MDIO_AN_10GBT_STAT 33
+#define MDIO_B10L_PMA_CTRL 2294
+#define MDIO_PMA_10T1L_STAT 2295
+#define MDIO_PCS_10T1L_CTRL 2278
+#define MDIO_PMA_PMD_BT1 18
+#define MDIO_AN_T1_CTRL 512
+#define MDIO_AN_T1_STAT 513
+#define MDIO_AN_T1_ADV_L 514
+#define MDIO_AN_T1_ADV_M 515
+#define MDIO_AN_T1_ADV_H 516
+#define MDIO_AN_T1_LP_L 517
+#define MDIO_AN_T1_LP_M 518
+#define MDIO_AN_T1_LP_H 519
+#define MDIO_PMA_PMD_BT1_CTRL 2100
 #define MDIO_PMA_LASI_RXCTRL 0x9000
 #define MDIO_PMA_LASI_TXCTRL 0x9001
 #define MDIO_PMA_LASI_CTRL 0x9002
@@ -139,6 +152,7 @@
 #define MDIO_PMA_CTRL2_10BT 0x000f
 #define MDIO_PMA_CTRL2_2_5GBT 0x0030
 #define MDIO_PMA_CTRL2_5GBT 0x0031
+#define MDIO_PMA_CTRL2_BASET1 0x003D
 #define MDIO_PCS_CTRL2_TYPE 0x0003
 #define MDIO_PCS_CTRL2_10GBR 0x0000
 #define MDIO_PCS_CTRL2_10GBX 0x0001
@@ -184,6 +198,7 @@
 #define MDIO_PMA_EXTABLE_1000BKX 0x0040
 #define MDIO_PMA_EXTABLE_100BTX 0x0080
 #define MDIO_PMA_EXTABLE_10BT 0x0100
+#define MDIO_PMA_EXTABLE_BT1 0x0800
 #define MDIO_PMA_EXTABLE_NBT 0x4000
 #define MDIO_PHYXS_LNSTAT_SYNC0 0x0001
 #define MDIO_PHYXS_LNSTAT_SYNC1 0x0002
@@ -218,6 +233,44 @@
 #define MDIO_AN_10GBT_STAT_LOCOK 0x2000
 #define MDIO_AN_10GBT_STAT_MS 0x4000
 #define MDIO_AN_10GBT_STAT_MSFLT 0x8000
+#define MDIO_PMA_10T1L_CTRL_LB_EN 0x0001
+#define MDIO_PMA_10T1L_CTRL_EEE_EN 0x0400
+#define MDIO_PMA_10T1L_CTRL_LOW_POWER 0x0800
+#define MDIO_PMA_10T1L_CTRL_2V4_EN 0x1000
+#define MDIO_PMA_10T1L_CTRL_TX_DIS 0x4000
+#define MDIO_PMA_10T1L_CTRL_PMA_RST 0x8000
+#define MDIO_PMA_10T1L_STAT_LINK 0x0001
+#define MDIO_PMA_10T1L_STAT_FAULT 0x0002
+#define MDIO_PMA_10T1L_STAT_POLARITY 0x0004
+#define MDIO_PMA_10T1L_STAT_RECV_FAULT 0x0200
+#define MDIO_PMA_10T1L_STAT_EEE 0x0400
+#define MDIO_PMA_10T1L_STAT_LOW_POWER 0x0800
+#define MDIO_PMA_10T1L_STAT_2V4_ABLE 0x1000
+#define MDIO_PMA_10T1L_STAT_LB_ABLE 0x2000
+#define MDIO_PCS_10T1L_CTRL_LB 0x4000
+#define MDIO_PCS_10T1L_CTRL_RESET 0x8000
+#define MDIO_PMA_PMD_BT1_B10L_ABLE 0x0004
+#define MDIO_AN_T1_ADV_L_PAUSE_CAP ADVERTISE_PAUSE_CAP
+#define MDIO_AN_T1_ADV_L_PAUSE_ASYM ADVERTISE_PAUSE_ASYM
+#define MDIO_AN_T1_ADV_L_FORCE_MS 0x1000
+#define MDIO_AN_T1_ADV_L_REMOTE_FAULT ADVERTISE_RFAULT
+#define MDIO_AN_T1_ADV_L_ACK ADVERTISE_LPACK
+#define MDIO_AN_T1_ADV_L_NEXT_PAGE_REQ ADVERTISE_NPAGE
+#define MDIO_AN_T1_ADV_M_B10L 0x4000
+#define MDIO_AN_T1_ADV_M_MST 0x0010
+#define MDIO_AN_T1_ADV_H_10L_TX_HI_REQ 0x1000
+#define MDIO_AN_T1_ADV_H_10L_TX_HI 0x2000
+#define MDIO_AN_T1_LP_L_PAUSE_CAP LPA_PAUSE_CAP
+#define MDIO_AN_T1_LP_L_PAUSE_ASYM LPA_PAUSE_ASYM
+#define MDIO_AN_T1_LP_L_FORCE_MS 0x1000
+#define MDIO_AN_T1_LP_L_REMOTE_FAULT LPA_RFAULT
+#define MDIO_AN_T1_LP_L_ACK LPA_LPACK
+#define MDIO_AN_T1_LP_L_NEXT_PAGE_REQ LPA_NPAGE
+#define MDIO_AN_T1_LP_M_MST 0x0010
+#define MDIO_AN_T1_LP_M_B10L 0x4000
+#define MDIO_AN_T1_LP_H_10L_TX_HI_REQ 0x1000
+#define MDIO_AN_T1_LP_H_10L_TX_HI 0x2000
+#define MDIO_PMA_PMD_BT1_CTRL_CFG_MST 0x4000
 #define MDIO_AN_EEE_ADV_100TX 0x0002
 #define MDIO_AN_EEE_ADV_1000T 0x0004
 #define MDIO_EEE_100TX MDIO_AN_EEE_ADV_100TX
diff --git a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/media-bus-format.h b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/media-bus-format.h
index 2542a32..4555de1 100644
--- a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/media-bus-format.h
+++ b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/media-bus-format.h
@@ -43,9 +43,13 @@
 #define MEDIA_BUS_FMT_RGB888_3X8_DELTA 0x101d
 #define MEDIA_BUS_FMT_RGB888_1X7X4_SPWG 0x1011
 #define MEDIA_BUS_FMT_RGB888_1X7X4_JEIDA 0x1012
+#define MEDIA_BUS_FMT_RGB666_1X30_CPADLO 0x101e
+#define MEDIA_BUS_FMT_RGB888_1X30_CPADLO 0x101f
 #define MEDIA_BUS_FMT_ARGB8888_1X32 0x100d
 #define MEDIA_BUS_FMT_RGB888_1X32_PADHI 0x100f
 #define MEDIA_BUS_FMT_RGB101010_1X30 0x1018
+#define MEDIA_BUS_FMT_RGB666_1X36_CPADLO 0x1020
+#define MEDIA_BUS_FMT_RGB888_1X36_CPADLO 0x1021
 #define MEDIA_BUS_FMT_RGB121212_1X36 0x1019
 #define MEDIA_BUS_FMT_RGB161616_1X48 0x101a
 #define MEDIA_BUS_FMT_Y8_1X8 0x2001
diff --git a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/media.h b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/media.h
index 5c8efcd..869d47b 100644
--- a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/media.h
+++ b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/media.h
@@ -18,7 +18,6 @@
  ****************************************************************************/
 #ifndef __LINUX_MEDIA_H
 #define __LINUX_MEDIA_H
-#include <stdint.h>
 #include <linux/ioctl.h>
 #include <linux/types.h>
 struct media_device_info {
@@ -117,6 +116,7 @@
 #define MEDIA_LNK_FL_LINK_TYPE (0xf << 28)
 #define MEDIA_LNK_FL_DATA_LINK (0 << 28)
 #define MEDIA_LNK_FL_INTERFACE_LINK (1 << 28)
+#define MEDIA_LNK_FL_ANCILLARY_LINK (2 << 28)
 struct media_link_desc {
   struct media_pad_desc source;
   struct media_pad_desc sink;
diff --git a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/minix_fs.h b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/minix_fs.h
index b6f1c69..0878efe 100644
--- a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/minix_fs.h
+++ b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/minix_fs.h
@@ -77,10 +77,10 @@
 };
 struct minix_dir_entry {
   __u16 inode;
-  char name[0];
+  char name[];
 };
 struct minix3_dir_entry {
   __u32 inode;
-  char name[0];
+  char name[];
 };
 #endif
diff --git a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/mmc/ioctl.h b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/mmc/ioctl.h
index afea6a5..451134b 100644
--- a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/mmc/ioctl.h
+++ b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/mmc/ioctl.h
@@ -39,7 +39,7 @@
 #define mmc_ioc_cmd_set_data(ic,ptr) ic.data_ptr = (__u64) (unsigned long) ptr
 struct mmc_ioc_multi_cmd {
   __u64 num_of_cmds;
-  struct mmc_ioc_cmd cmds[0];
+  struct mmc_ioc_cmd cmds[];
 };
 #define MMC_IOC_CMD _IOWR(MMC_BLOCK_MAJOR, 0, struct mmc_ioc_cmd)
 #define MMC_IOC_MULTI_CMD _IOWR(MMC_BLOCK_MAJOR, 1, struct mmc_ioc_multi_cmd)
diff --git a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/mptcp.h b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/mptcp.h
index 67b0ce3..da1b5af 100644
--- a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/mptcp.h
+++ b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/mptcp.h
@@ -18,12 +18,13 @@
  ****************************************************************************/
 #ifndef _UAPI_MPTCP_H
 #define _UAPI_MPTCP_H
+#include <netinet/in.h>
+#include <sys/socket.h>
 #include <linux/const.h>
 #include <linux/types.h>
 #include <linux/in.h>
 #include <linux/in6.h>
 #include <linux/socket.h>
-#include <sys/socket.h>
 #define MPTCP_SUBFLOW_FLAG_MCAP_REM _BITUL(0)
 #define MPTCP_SUBFLOW_FLAG_MCAP_LOC _BITUL(1)
 #define MPTCP_SUBFLOW_FLAG_JOIN_REM _BITUL(2)
@@ -58,6 +59,9 @@
   MPTCP_PM_ATTR_ADDR,
   MPTCP_PM_ATTR_RCV_ADD_ADDRS,
   MPTCP_PM_ATTR_SUBFLOWS,
+  MPTCP_PM_ATTR_TOKEN,
+  MPTCP_PM_ATTR_LOC_ID,
+  MPTCP_PM_ATTR_ADDR_REMOTE,
   __MPTCP_PM_ATTR_MAX
 };
 #define MPTCP_PM_ATTR_MAX (__MPTCP_PM_ATTR_MAX - 1)
@@ -77,6 +81,7 @@
 #define MPTCP_PM_ADDR_FLAG_SUBFLOW (1 << 1)
 #define MPTCP_PM_ADDR_FLAG_BACKUP (1 << 2)
 #define MPTCP_PM_ADDR_FLAG_FULLMESH (1 << 3)
+#define MPTCP_PM_ADDR_FLAG_IMPLICIT (1 << 4)
 enum {
   MPTCP_PM_CMD_UNSPEC,
   MPTCP_PM_CMD_ADD_ADDR,
@@ -86,6 +91,10 @@
   MPTCP_PM_CMD_SET_LIMITS,
   MPTCP_PM_CMD_GET_LIMITS,
   MPTCP_PM_CMD_SET_FLAGS,
+  MPTCP_PM_CMD_ANNOUNCE,
+  MPTCP_PM_CMD_REMOVE,
+  MPTCP_PM_CMD_SUBFLOW_CREATE,
+  MPTCP_PM_CMD_SUBFLOW_DESTROY,
   __MPTCP_PM_CMD_AFTER_LAST
 };
 #define MPTCP_INFO_FLAG_FALLBACK _BITUL(0)
@@ -136,6 +145,7 @@
   MPTCP_ATTR_IF_IDX,
   MPTCP_ATTR_RESET_REASON,
   MPTCP_ATTR_RESET_FLAGS,
+  MPTCP_ATTR_SERVER_SIDE,
   __MPTCP_ATTR_AFTER_LAST
 };
 #define MPTCP_ATTR_MAX (__MPTCP_ATTR_AFTER_LAST - 1)
diff --git a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/mroute6.h b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/mroute6.h
index c73765c..68480de 100644
--- a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/mroute6.h
+++ b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/mroute6.h
@@ -93,6 +93,7 @@
 #define MRT6MSG_NOCACHE 1
 #define MRT6MSG_WRONGMIF 2
 #define MRT6MSG_WHOLEPKT 3
+#define MRT6MSG_WRMIFWHOLE 4
   __u8 im6_mbz;
   __u8 im6_msgtype;
   __u16 im6_mif;
diff --git a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/ndctl.h b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/ndctl.h
index 53f8ba4..7e0d560 100644
--- a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/ndctl.h
+++ b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/ndctl.h
@@ -22,33 +22,33 @@
 struct nd_cmd_dimm_flags {
   __u32 status;
   __u32 flags;
-} __packed;
+} __attribute__((__packed__));
 struct nd_cmd_get_config_size {
   __u32 status;
   __u32 config_size;
   __u32 max_xfer;
-} __packed;
+} __attribute__((__packed__));
 struct nd_cmd_get_config_data_hdr {
   __u32 in_offset;
   __u32 in_length;
   __u32 status;
-  __u8 out_buf[0];
-} __packed;
+  __u8 out_buf[];
+} __attribute__((__packed__));
 struct nd_cmd_set_config_hdr {
   __u32 in_offset;
   __u32 in_length;
-  __u8 in_buf[0];
-} __packed;
+  __u8 in_buf[];
+} __attribute__((__packed__));
 struct nd_cmd_vendor_hdr {
   __u32 opcode;
   __u32 in_length;
-  __u8 in_buf[0];
-} __packed;
+  __u8 in_buf[];
+} __attribute__((__packed__));
 struct nd_cmd_vendor_tail {
   __u32 status;
   __u32 out_length;
-  __u8 out_buf[0];
-} __packed;
+  __u8 out_buf[];
+} __attribute__((__packed__));
 struct nd_cmd_ars_cap {
   __u64 address;
   __u64 length;
@@ -57,7 +57,7 @@
   __u32 clear_err_unit;
   __u16 flags;
   __u16 reserved;
-} __packed;
+} __attribute__((__packed__));
 struct nd_cmd_ars_start {
   __u64 address;
   __u64 length;
@@ -66,7 +66,7 @@
   __u8 reserved[5];
   __u32 status;
   __u32 scrub_time;
-} __packed;
+} __attribute__((__packed__));
 struct nd_cmd_ars_status {
   __u32 status;
   __u32 out_length;
@@ -82,15 +82,15 @@
     __u32 reserved;
     __u64 err_address;
     __u64 length;
-  } __packed records[0];
-} __packed;
+  } __attribute__((__packed__)) records[];
+} __attribute__((__packed__));
 struct nd_cmd_clear_error {
   __u64 address;
   __u64 length;
   __u32 status;
   __u8 reserved[4];
   __u64 cleared;
-} __packed;
+} __attribute__((__packed__));
 enum {
   ND_CMD_IMPLEMENTED = 0,
   ND_CMD_ARS_CAP = 1,
@@ -129,7 +129,6 @@
 #define ND_DEVICE_REGION_BLK 3
 #define ND_DEVICE_NAMESPACE_IO 4
 #define ND_DEVICE_NAMESPACE_PMEM 5
-#define ND_DEVICE_NAMESPACE_BLK 6
 #define ND_DEVICE_DAX_PMEM 7
 enum nd_driver_flags {
   ND_DRIVER_DIMM = 1 << ND_DEVICE_DIMM,
@@ -137,7 +136,6 @@
   ND_DRIVER_REGION_BLK = 1 << ND_DEVICE_REGION_BLK,
   ND_DRIVER_NAMESPACE_IO = 1 << ND_DEVICE_NAMESPACE_IO,
   ND_DRIVER_NAMESPACE_PMEM = 1 << ND_DEVICE_NAMESPACE_PMEM,
-  ND_DRIVER_NAMESPACE_BLK = 1 << ND_DEVICE_NAMESPACE_BLK,
   ND_DRIVER_DAX_PMEM = 1 << ND_DEVICE_DAX_PMEM,
 };
 enum ars_masks {
diff --git a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/neighbour.h b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/neighbour.h
index 278f7d1..b86d2ae 100644
--- a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/neighbour.h
+++ b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/neighbour.h
@@ -46,6 +46,8 @@
   NDA_NH_ID,
   NDA_FDB_EXT_ATTRS,
   NDA_FLAGS_EXT,
+  NDA_NDM_STATE_MASK,
+  NDA_NDM_FLAGS_MASK,
   __NDA_MAX
 };
 #define NDA_MAX (__NDA_MAX - 1)
@@ -106,6 +108,7 @@
   NDTPA_QUEUE_LENBYTES,
   NDTPA_MCAST_REPROBES,
   NDTPA_PAD,
+  NDTPA_INTERVAL_PROBE_TIME_MS,
   __NDTPA_MAX
 };
 #define NDTPA_MAX (__NDTPA_MAX - 1)
diff --git a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/net_dropmon.h b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/net_dropmon.h
index 01b76cb..4d2c336 100644
--- a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/net_dropmon.h
+++ b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/net_dropmon.h
@@ -36,11 +36,11 @@
 };
 struct net_dm_config_msg {
   __u32 entries;
-  struct net_dm_config_entry options[0];
+  struct net_dm_config_entry options[];
 };
 struct net_dm_alert_msg {
   __u32 entries;
-  struct net_dm_drop_point points[0];
+  struct net_dm_drop_point points[];
 };
 struct net_dm_user_msg {
   union {
@@ -87,6 +87,7 @@
   NET_DM_ATTR_SW_DROPS,
   NET_DM_ATTR_HW_DROPS,
   NET_DM_ATTR_FLOW_ACTION_COOKIE,
+  NET_DM_ATTR_REASON,
   __NET_DM_ATTR_MAX,
   NET_DM_ATTR_MAX = __NET_DM_ATTR_MAX - 1
 };
diff --git a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/netfilter/nfnetlink_queue.h b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/netfilter/nfnetlink_queue.h
index 75fa359..d100dec 100644
--- a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/netfilter/nfnetlink_queue.h
+++ b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/netfilter/nfnetlink_queue.h
@@ -70,6 +70,7 @@
   NFQA_SECCTX,
   NFQA_VLAN,
   NFQA_L2HDR,
+  NFQA_PRIORITY,
   __NFQA_MAX
 };
 #define NFQA_MAX (__NFQA_MAX - 1)
diff --git a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/netfilter/x_tables.h b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/netfilter/x_tables.h
index 46bde57..0993265 100644
--- a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/netfilter/x_tables.h
+++ b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/netfilter/x_tables.h
@@ -36,7 +36,7 @@
     } kernel;
     __u16 match_size;
   } u;
-  unsigned char data[0];
+  unsigned char data[];
 };
 struct xt_entry_target {
   union {
@@ -87,7 +87,7 @@
 struct xt_counters_info {
   char name[XT_TABLE_MAXNAMELEN];
   unsigned int num_counters;
-  struct xt_counters counters[0];
+  struct xt_counters counters[];
 };
 #define XT_INV_PROTO 0x40
 #define XT_MATCH_ITERATE(type,e,fn,args...) \
diff --git a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/netfilter_arp/arp_tables.h b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/netfilter_arp/arp_tables.h
index 340625f..862f514 100644
--- a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/netfilter_arp/arp_tables.h
+++ b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/netfilter_arp/arp_tables.h
@@ -72,7 +72,7 @@
   __u16 next_offset;
   unsigned int comefrom;
   struct xt_counters counters;
-  unsigned char elems[0];
+  unsigned char elems[];
 };
 #define ARPT_BASE_CTL 96
 #define ARPT_SO_SET_REPLACE (ARPT_BASE_CTL)
@@ -99,11 +99,11 @@
   unsigned int underflow[NF_ARP_NUMHOOKS];
   unsigned int num_counters;
   struct xt_counters __user * counters;
-  struct arpt_entry entries[0];
+  struct arpt_entry entries[];
 };
 struct arpt_get_entries {
   char name[XT_TABLE_MAXNAMELEN];
   unsigned int size;
-  struct arpt_entry entrytable[0];
+  struct arpt_entry entrytable[];
 };
 #endif
diff --git a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/netfilter_bridge/ebt_among.h b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/netfilter_bridge/ebt_among.h
index 74cd550..aa39c5b 100644
--- a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/netfilter_bridge/ebt_among.h
+++ b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/netfilter_bridge/ebt_among.h
@@ -28,7 +28,7 @@
 struct ebt_mac_wormhash {
   int table[257];
   int poolsize;
-  struct ebt_mac_wormhash_tuple pool[0];
+  struct ebt_mac_wormhash_tuple pool[];
 };
 #define ebt_mac_wormhash_size(x) ((x) ? sizeof(struct ebt_mac_wormhash) + (x)->poolsize * sizeof(struct ebt_mac_wormhash_tuple) : 0)
 struct ebt_among_info {
diff --git a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/netfilter_decnet.h b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/netfilter_decnet.h
deleted file mode 100644
index c9c16ca..0000000
--- a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/netfilter_decnet.h
+++ /dev/null
@@ -1,57 +0,0 @@
-/****************************************************************************
- ****************************************************************************
- ***
- ***   This header was automatically generated from a Linux kernel header
- ***   of the same name, to make information necessary for userspace to
- ***   call into the kernel available to libc.  It contains only constants,
- ***   structures, and macros generated from the original header, and thus,
- ***   contains no copyrightable information.
- ***
- ***   To edit the content of this header, modify the corresponding
- ***   source file (e.g. under external/kernel-headers/original/) then
- ***   run bionic/libc/kernel/tools/update_all.py
- ***
- ***   Any manual change here will be lost the next time this script will
- ***   be run. You've been warned!
- ***
- ****************************************************************************
- ****************************************************************************/
-#ifndef __LINUX_DECNET_NETFILTER_H
-#define __LINUX_DECNET_NETFILTER_H
-#include <linux/netfilter.h>
-#include <limits.h>
-#define NF_DN_NUMHOOKS 7
-#define NF_DN_PRE_ROUTING 0
-#define NF_DN_LOCAL_IN 1
-#define NF_DN_FORWARD 2
-#define NF_DN_LOCAL_OUT 3
-#define NF_DN_POST_ROUTING 4
-#define NF_DN_HELLO 5
-#define NF_DN_ROUTE 6
-enum nf_dn_hook_priorities {
-  NF_DN_PRI_FIRST = INT_MIN,
-  NF_DN_PRI_CONNTRACK = - 200,
-  NF_DN_PRI_MANGLE = - 150,
-  NF_DN_PRI_NAT_DST = - 100,
-  NF_DN_PRI_FILTER = 0,
-  NF_DN_PRI_NAT_SRC = 100,
-  NF_DN_PRI_DNRTMSG = 200,
-  NF_DN_PRI_LAST = INT_MAX,
-};
-struct nf_dn_rtmsg {
-  int nfdn_ifindex;
-};
-#define NFDN_RTMSG(r) ((unsigned char *) (r) + NLMSG_ALIGN(sizeof(struct nf_dn_rtmsg)))
-#define DNRMG_L1_GROUP 0x01
-#define DNRMG_L2_GROUP 0x02
-enum {
-  DNRNG_NLGRP_NONE,
-#define DNRNG_NLGRP_NONE DNRNG_NLGRP_NONE
-  DNRNG_NLGRP_L1,
-#define DNRNG_NLGRP_L1 DNRNG_NLGRP_L1
-  DNRNG_NLGRP_L2,
-#define DNRNG_NLGRP_L2 DNRNG_NLGRP_L2
-  __DNRNG_NLGRP_MAX
-};
-#define DNRNG_NLGRP_MAX (__DNRNG_NLGRP_MAX - 1)
-#endif
diff --git a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/netfilter_ipv4/ip_tables.h b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/netfilter_ipv4/ip_tables.h
index 033c519..14a65ad 100644
--- a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/netfilter_ipv4/ip_tables.h
+++ b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/netfilter_ipv4/ip_tables.h
@@ -79,7 +79,7 @@
   __u16 next_offset;
   unsigned int comefrom;
   struct xt_counters counters;
-  unsigned char elems[0];
+  unsigned char elems[];
 };
 #define IPT_BASE_CTL 64
 #define IPT_SO_SET_REPLACE (IPT_BASE_CTL)
@@ -113,12 +113,12 @@
   unsigned int underflow[NF_INET_NUMHOOKS];
   unsigned int num_counters;
   struct xt_counters __user * counters;
-  struct ipt_entry entries[0];
+  struct ipt_entry entries[];
 };
 struct ipt_get_entries {
   char name[XT_TABLE_MAXNAMELEN];
   unsigned int size;
-  struct ipt_entry entrytable[0];
+  struct ipt_entry entrytable[];
 };
 static __inline__ struct xt_entry_target * ipt_get_target(struct ipt_entry * e) {
   return(struct xt_entry_target *) ((char *) e + e->target_offset);
diff --git a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/netfilter_ipv6/ip6_tables.h b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/netfilter_ipv6/ip6_tables.h
index b3f426d..22071db 100644
--- a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/netfilter_ipv6/ip6_tables.h
+++ b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/netfilter_ipv6/ip6_tables.h
@@ -133,12 +133,12 @@
   unsigned int underflow[NF_INET_NUMHOOKS];
   unsigned int num_counters;
   struct xt_counters __user * counters;
-  struct ip6t_entry entries[0];
+  struct ip6t_entry entries[];
 };
 struct ip6t_get_entries {
   char name[XT_TABLE_MAXNAMELEN];
   unsigned int size;
-  struct ip6t_entry entrytable[0];
+  struct ip6t_entry entrytable[];
 };
 static __inline__ struct xt_entry_target * ip6t_get_target(struct ip6t_entry * e) {
   return(struct xt_entry_target *) ((char *) e + e->target_offset);
diff --git a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/netlink.h b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/netlink.h
index 77825cc..17d5291 100644
--- a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/netlink.h
+++ b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/netlink.h
@@ -73,6 +73,7 @@
 #define NLM_F_CREATE 0x400
 #define NLM_F_APPEND 0x800
 #define NLM_F_NONREC 0x100
+#define NLM_F_BULK 0x200
 #define NLM_F_CAPPED 0x100
 #define NLM_F_ACK_TLVS 0x200
 #define NLMSG_ALIGNTO 4U
@@ -99,6 +100,8 @@
   NLMSGERR_ATTR_OFFS,
   NLMSGERR_ATTR_COOKIE,
   NLMSGERR_ATTR_POLICY,
+  NLMSGERR_ATTR_MISS_TYPE,
+  NLMSGERR_ATTR_MISS_NEST,
   __NLMSGERR_ATTR_MAX,
   NLMSGERR_ATTR_MAX = __NLMSGERR_ATTR_MAX - 1
 };
diff --git a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/nfs4.h b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/nfs4.h
index 9d614ce..ef860e2 100644
--- a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/nfs4.h
+++ b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/nfs4.h
@@ -45,6 +45,7 @@
 #define NFS4_FH_VOL_RENAME 0x0008
 #define NFS4_OPEN_RESULT_CONFIRM 0x0002
 #define NFS4_OPEN_RESULT_LOCKTYPE_POSIX 0x0004
+#define NFS4_OPEN_RESULT_PRESERVE_UNLINKED 0x0008
 #define NFS4_OPEN_RESULT_MAY_NOTIFY_LOCK 0x0020
 #define NFS4_SHARE_ACCESS_MASK 0x000F
 #define NFS4_SHARE_ACCESS_READ 0x0001
diff --git a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/nl80211.h b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/nl80211.h
index e902178..faff80a 100644
--- a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/nl80211.h
+++ b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/nl80211.h
@@ -185,6 +185,11 @@
   NL80211_CMD_COLOR_CHANGE_COMPLETED,
   NL80211_CMD_SET_FILS_AAD,
   NL80211_CMD_ASSOC_COMEBACK,
+  NL80211_CMD_ADD_LINK,
+  NL80211_CMD_REMOVE_LINK,
+  NL80211_CMD_ADD_LINK_STA,
+  NL80211_CMD_MODIFY_LINK_STA,
+  NL80211_CMD_REMOVE_LINK_STA,
   __NL80211_CMD_AFTER_LAST,
   NL80211_CMD_MAX = __NL80211_CMD_AFTER_LAST - 1
 };
@@ -511,6 +516,17 @@
   NL80211_ATTR_MBSSID_ELEMS,
   NL80211_ATTR_RADAR_BACKGROUND,
   NL80211_ATTR_AP_SETTINGS_FLAGS,
+  NL80211_ATTR_EHT_CAPABILITY,
+  NL80211_ATTR_DISABLE_EHT,
+  NL80211_ATTR_MLO_LINKS,
+  NL80211_ATTR_MLO_LINK_ID,
+  NL80211_ATTR_MLD_ADDR,
+  NL80211_ATTR_MLO_SUPPORT,
+  NL80211_ATTR_MAX_NUM_AKM_SUITES,
+  NL80211_ATTR_EML_CAPABILITY,
+  NL80211_ATTR_MLD_CAPA_AND_OPS,
+  NL80211_ATTR_TX_HW_TIMESTAMP,
+  NL80211_ATTR_RX_HW_TIMESTAMP,
   __NL80211_ATTR_AFTER_LAST,
   NUM_NL80211_ATTR = __NL80211_ATTR_AFTER_LAST,
   NL80211_ATTR_MAX = __NL80211_ATTR_AFTER_LAST - 1
@@ -555,6 +571,8 @@
 #define NL80211_HE_MAX_CAPABILITY_LEN 54
 #define NL80211_MAX_NR_CIPHER_SUITES 5
 #define NL80211_MAX_NR_AKM_SUITES 2
+#define NL80211_EHT_MIN_CAPABILITY_LEN 13
+#define NL80211_EHT_MAX_CAPABILITY_LEN 51
 #define NL80211_MIN_REMAIN_ON_CHANNEL_TIME 10
 #define NL80211_SCAN_RSSI_THOLD_OFF - 300
 #define NL80211_CQM_TXE_MAX_INTVL 1800
@@ -616,6 +634,29 @@
   NL80211_RATE_INFO_HE_RU_ALLOC_996,
   NL80211_RATE_INFO_HE_RU_ALLOC_2x996,
 };
+enum nl80211_eht_gi {
+  NL80211_RATE_INFO_EHT_GI_0_8,
+  NL80211_RATE_INFO_EHT_GI_1_6,
+  NL80211_RATE_INFO_EHT_GI_3_2,
+};
+enum nl80211_eht_ru_alloc {
+  NL80211_RATE_INFO_EHT_RU_ALLOC_26,
+  NL80211_RATE_INFO_EHT_RU_ALLOC_52,
+  NL80211_RATE_INFO_EHT_RU_ALLOC_52P26,
+  NL80211_RATE_INFO_EHT_RU_ALLOC_106,
+  NL80211_RATE_INFO_EHT_RU_ALLOC_106P26,
+  NL80211_RATE_INFO_EHT_RU_ALLOC_242,
+  NL80211_RATE_INFO_EHT_RU_ALLOC_484,
+  NL80211_RATE_INFO_EHT_RU_ALLOC_484P242,
+  NL80211_RATE_INFO_EHT_RU_ALLOC_996,
+  NL80211_RATE_INFO_EHT_RU_ALLOC_996P484,
+  NL80211_RATE_INFO_EHT_RU_ALLOC_996P484P242,
+  NL80211_RATE_INFO_EHT_RU_ALLOC_2x996,
+  NL80211_RATE_INFO_EHT_RU_ALLOC_2x996P484,
+  NL80211_RATE_INFO_EHT_RU_ALLOC_3x996,
+  NL80211_RATE_INFO_EHT_RU_ALLOC_3x996P484,
+  NL80211_RATE_INFO_EHT_RU_ALLOC_4x996,
+};
 enum nl80211_rate_info {
   __NL80211_RATE_INFO_INVALID,
   NL80211_RATE_INFO_BITRATE,
@@ -635,6 +676,11 @@
   NL80211_RATE_INFO_HE_GI,
   NL80211_RATE_INFO_HE_DCM,
   NL80211_RATE_INFO_HE_RU_ALLOC,
+  NL80211_RATE_INFO_320_MHZ_WIDTH,
+  NL80211_RATE_INFO_EHT_MCS,
+  NL80211_RATE_INFO_EHT_NSS,
+  NL80211_RATE_INFO_EHT_GI,
+  NL80211_RATE_INFO_EHT_RU_ALLOC,
   __NL80211_RATE_INFO_AFTER_LAST,
   NL80211_RATE_INFO_MAX = __NL80211_RATE_INFO_AFTER_LAST - 1
 };
@@ -754,6 +800,10 @@
   NL80211_BAND_IFTYPE_ATTR_HE_CAP_PPE,
   NL80211_BAND_IFTYPE_ATTR_HE_6GHZ_CAPA,
   NL80211_BAND_IFTYPE_ATTR_VENDOR_ELEMS,
+  NL80211_BAND_IFTYPE_ATTR_EHT_CAP_MAC,
+  NL80211_BAND_IFTYPE_ATTR_EHT_CAP_PHY,
+  NL80211_BAND_IFTYPE_ATTR_EHT_CAP_MCS_SET,
+  NL80211_BAND_IFTYPE_ATTR_EHT_CAP_PPE,
   __NL80211_BAND_IFTYPE_ATTR_AFTER_LAST,
   NL80211_BAND_IFTYPE_ATTR_MAX = __NL80211_BAND_IFTYPE_ATTR_AFTER_LAST - 1
 };
@@ -810,6 +860,8 @@
   NL80211_FREQUENCY_ATTR_4MHZ,
   NL80211_FREQUENCY_ATTR_8MHZ,
   NL80211_FREQUENCY_ATTR_16MHZ,
+  NL80211_FREQUENCY_ATTR_NO_320MHZ,
+  NL80211_FREQUENCY_ATTR_NO_EHT,
   __NL80211_FREQUENCY_ATTR_AFTER_LAST,
   NL80211_FREQUENCY_ATTR_MAX = __NL80211_FREQUENCY_ATTR_AFTER_LAST - 1
 };
@@ -878,6 +930,7 @@
   NL80211_RRF_NO_80MHZ = 1 << 15,
   NL80211_RRF_NO_160MHZ = 1 << 16,
   NL80211_RRF_NO_HE = 1 << 17,
+  NL80211_RRF_NO_320MHZ = 1 << 18,
 };
 #define NL80211_RRF_PASSIVE_SCAN NL80211_RRF_NO_IR
 #define NL80211_RRF_NO_IBSS NL80211_RRF_NO_IR
@@ -1033,6 +1086,7 @@
   NL80211_CHAN_WIDTH_4,
   NL80211_CHAN_WIDTH_8,
   NL80211_CHAN_WIDTH_16,
+  NL80211_CHAN_WIDTH_320,
 };
 enum nl80211_bss_scan_width {
   NL80211_BSS_CHAN_WIDTH_20,
@@ -1063,6 +1117,8 @@
   NL80211_BSS_PARENT_BSSID,
   NL80211_BSS_CHAIN_SIGNAL,
   NL80211_BSS_FREQUENCY_OFFSET,
+  NL80211_BSS_MLO_LINK_ID,
+  NL80211_BSS_MLD_ADDR,
   __NL80211_BSS_AFTER_LAST,
   NL80211_BSS_MAX = __NL80211_BSS_AFTER_LAST - 1
 };
@@ -1475,6 +1531,7 @@
   NL80211_EXT_FEATURE_BSS_COLOR,
   NL80211_EXT_FEATURE_FILS_CRYPTO_OFFLOAD,
   NL80211_EXT_FEATURE_RADAR_BACKGROUND,
+  NL80211_EXT_FEATURE_POWERED_ADDR_CHANGE,
   NUM_NL80211_EXT_FEATURES,
   MAX_NL80211_EXT_FEATURES = NUM_NL80211_EXT_FEATURES - 1
 };
diff --git a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/nvme_ioctl.h b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/nvme_ioctl.h
index f2a328e..388e83f 100644
--- a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/nvme_ioctl.h
+++ b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/nvme_ioctl.h
@@ -63,7 +63,10 @@
   __u64 metadata;
   __u64 addr;
   __u32 metadata_len;
-  __u32 data_len;
+  union {
+    __u32 data_len;
+    __u32 vec_cnt;
+  };
   __u32 cdw10;
   __u32 cdw11;
   __u32 cdw12;
@@ -74,6 +77,26 @@
   __u32 rsvd2;
   __u64 result;
 };
+struct nvme_uring_cmd {
+  __u8 opcode;
+  __u8 flags;
+  __u16 rsvd1;
+  __u32 nsid;
+  __u32 cdw2;
+  __u32 cdw3;
+  __u64 metadata;
+  __u64 addr;
+  __u32 metadata_len;
+  __u32 data_len;
+  __u32 cdw10;
+  __u32 cdw11;
+  __u32 cdw12;
+  __u32 cdw13;
+  __u32 cdw14;
+  __u32 cdw15;
+  __u32 timeout_ms;
+  __u32 rsvd2;
+};
 #define nvme_admin_cmd nvme_passthru_cmd
 #define NVME_IOCTL_ID _IO('N', 0x40)
 #define NVME_IOCTL_ADMIN_CMD _IOWR('N', 0x41, struct nvme_admin_cmd)
@@ -84,4 +107,9 @@
 #define NVME_IOCTL_RESCAN _IO('N', 0x46)
 #define NVME_IOCTL_ADMIN64_CMD _IOWR('N', 0x47, struct nvme_passthru_cmd64)
 #define NVME_IOCTL_IO64_CMD _IOWR('N', 0x48, struct nvme_passthru_cmd64)
+#define NVME_IOCTL_IO64_CMD_VEC _IOWR('N', 0x49, struct nvme_passthru_cmd64)
+#define NVME_URING_CMD_IO _IOWR('N', 0x80, struct nvme_uring_cmd)
+#define NVME_URING_CMD_IO_VEC _IOWR('N', 0x81, struct nvme_uring_cmd)
+#define NVME_URING_CMD_ADMIN _IOWR('N', 0x82, struct nvme_uring_cmd)
+#define NVME_URING_CMD_ADMIN_VEC _IOWR('N', 0x83, struct nvme_uring_cmd)
 #endif
diff --git a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/omap3isp.h b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/omap3isp.h
index d2eceb7..53345e3 100644
--- a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/omap3isp.h
+++ b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/omap3isp.h
@@ -89,10 +89,11 @@
 struct omap3isp_stat_data {
   struct timeval ts;
   void __user * buf;
-  __u32 buf_size;
+  __struct_group(, frame,, __u32 buf_size;
   __u16 frame_number;
   __u16 cur_frame;
   __u16 config_counter;
+ );
 };
 #define OMAP3ISP_HIST_BINS_32 0
 #define OMAP3ISP_HIST_BINS_64 1
diff --git a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/openvswitch.h b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/openvswitch.h
index 1f8ae17..c44e950 100644
--- a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/openvswitch.h
+++ b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/openvswitch.h
@@ -44,6 +44,7 @@
   OVS_DP_ATTR_PAD,
   OVS_DP_ATTR_MASKS_CACHE_SIZE,
   OVS_DP_ATTR_PER_CPU_PIDS,
+  OVS_DP_ATTR_IFINDEX,
   __OVS_DP_ATTR_MAX
 };
 #define OVS_DP_ATTR_MAX (__OVS_DP_ATTR_MAX - 1)
@@ -190,6 +191,10 @@
   OVS_KEY_ATTR_CT_ORIG_TUPLE_IPV4,
   OVS_KEY_ATTR_CT_ORIG_TUPLE_IPV6,
   OVS_KEY_ATTR_NSH,
+  OVS_KEY_ATTR_PACKET_TYPE,
+  OVS_KEY_ATTR_ND_EXTENSIONS,
+  OVS_KEY_ATTR_TUNNEL_INFO,
+  OVS_KEY_ATTR_IPV6_EXTHDRS,
   __OVS_KEY_ATTR_MAX
 };
 #define OVS_KEY_ATTR_MAX (__OVS_KEY_ATTR_MAX - 1)
@@ -245,6 +250,9 @@
   __u8 ipv6_hlimit;
   __u8 ipv6_frag;
 };
+struct ovs_key_ipv6_exthdrs {
+  __u16 hdrs;
+};
 struct ovs_key_tcp {
   __be16 tcp_src;
   __be16 tcp_dst;
diff --git a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/pci_regs.h b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/pci_regs.h
index 46612da..87549aa 100644
--- a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/pci_regs.h
+++ b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/pci_regs.h
@@ -525,6 +525,7 @@
 #define PCI_EXP_SLTCTL_PWR_OFF 0x0400
 #define PCI_EXP_SLTCTL_EIC 0x0800
 #define PCI_EXP_SLTCTL_DLLSCE 0x1000
+#define PCI_EXP_SLTCTL_ASPL_DISABLE 0x2000
 #define PCI_EXP_SLTCTL_IBPD_DISABLE 0x4000
 #define PCI_EXP_SLTSTA 0x1a
 #define PCI_EXP_SLTSTA_ABP 0x0001
@@ -634,7 +635,8 @@
 #define PCI_EXT_CAP_ID_DVSEC 0x23
 #define PCI_EXT_CAP_ID_DLF 0x25
 #define PCI_EXT_CAP_ID_PL_16GT 0x26
-#define PCI_EXT_CAP_ID_MAX PCI_EXT_CAP_ID_PL_16GT
+#define PCI_EXT_CAP_ID_DOE 0x2E
+#define PCI_EXT_CAP_ID_MAX PCI_EXT_CAP_ID_DOE
 #define PCI_EXT_CAP_DSN_SIZEOF 12
 #define PCI_EXT_CAP_MCAST_ENDPOINT_SIZEOF 40
 #define PCI_ERR_UNCOR_STATUS 0x04
@@ -937,4 +939,25 @@
 #define PCI_PL_16GT_LE_CTRL_DSP_TX_PRESET_MASK 0x0000000F
 #define PCI_PL_16GT_LE_CTRL_USP_TX_PRESET_MASK 0x000000F0
 #define PCI_PL_16GT_LE_CTRL_USP_TX_PRESET_SHIFT 4
+#define PCI_DOE_CAP 0x04
+#define PCI_DOE_CAP_INT_SUP 0x00000001
+#define PCI_DOE_CAP_INT_MSG_NUM 0x00000ffe
+#define PCI_DOE_CTRL 0x08
+#define PCI_DOE_CTRL_ABORT 0x00000001
+#define PCI_DOE_CTRL_INT_EN 0x00000002
+#define PCI_DOE_CTRL_GO 0x80000000
+#define PCI_DOE_STATUS 0x0c
+#define PCI_DOE_STATUS_BUSY 0x00000001
+#define PCI_DOE_STATUS_INT_STATUS 0x00000002
+#define PCI_DOE_STATUS_ERROR 0x00000004
+#define PCI_DOE_STATUS_DATA_OBJECT_READY 0x80000000
+#define PCI_DOE_WRITE 0x10
+#define PCI_DOE_READ 0x14
+#define PCI_DOE_DATA_OBJECT_HEADER_1_VID 0x0000ffff
+#define PCI_DOE_DATA_OBJECT_HEADER_1_TYPE 0x00ff0000
+#define PCI_DOE_DATA_OBJECT_HEADER_2_LENGTH 0x0003ffff
+#define PCI_DOE_DATA_OBJECT_DISC_REQ_3_INDEX 0x000000ff
+#define PCI_DOE_DATA_OBJECT_DISC_RSP_3_VID 0x0000ffff
+#define PCI_DOE_DATA_OBJECT_DISC_RSP_3_PROTOCOL 0x00ff0000
+#define PCI_DOE_DATA_OBJECT_DISC_RSP_3_NEXT_INDEX 0xff000000
 #endif
diff --git a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/perf_event.h b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/perf_event.h
index b022586..8f081ed 100644
--- a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/perf_event.h
+++ b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/perf_event.h
@@ -108,7 +108,6 @@
   PERF_SAMPLE_CODE_PAGE_SIZE = 1U << 23,
   PERF_SAMPLE_WEIGHT_STRUCT = 1U << 24,
   PERF_SAMPLE_MAX = 1U << 25,
-  __PERF_SAMPLE_CALLCHAIN_EARLY = 1ULL << 63,
 };
 #define PERF_SAMPLE_WEIGHT_TYPE (PERF_SAMPLE_WEIGHT | PERF_SAMPLE_WEIGHT_STRUCT)
 enum perf_branch_sample_type_shift {
@@ -130,6 +129,7 @@
   PERF_SAMPLE_BRANCH_NO_CYCLES_SHIFT = 15,
   PERF_SAMPLE_BRANCH_TYPE_SAVE_SHIFT = 16,
   PERF_SAMPLE_BRANCH_HW_INDEX_SHIFT = 17,
+  PERF_SAMPLE_BRANCH_PRIV_SAVE_SHIFT = 18,
   PERF_SAMPLE_BRANCH_MAX_SHIFT
 };
 enum perf_branch_sample_type {
@@ -151,6 +151,7 @@
   PERF_SAMPLE_BRANCH_NO_CYCLES = 1U << PERF_SAMPLE_BRANCH_NO_CYCLES_SHIFT,
   PERF_SAMPLE_BRANCH_TYPE_SAVE = 1U << PERF_SAMPLE_BRANCH_TYPE_SAVE_SHIFT,
   PERF_SAMPLE_BRANCH_HW_INDEX = 1U << PERF_SAMPLE_BRANCH_HW_INDEX_SHIFT,
+  PERF_SAMPLE_BRANCH_PRIV_SAVE = 1U << PERF_SAMPLE_BRANCH_PRIV_SAVE_SHIFT,
   PERF_SAMPLE_BRANCH_MAX = 1U << PERF_SAMPLE_BRANCH_MAX_SHIFT,
 };
 enum {
@@ -165,8 +166,42 @@
   PERF_BR_SYSRET = 8,
   PERF_BR_COND_CALL = 9,
   PERF_BR_COND_RET = 10,
+  PERF_BR_ERET = 11,
+  PERF_BR_IRQ = 12,
+  PERF_BR_SERROR = 13,
+  PERF_BR_NO_TX = 14,
+  PERF_BR_EXTEND_ABI = 15,
   PERF_BR_MAX,
 };
+enum {
+  PERF_BR_SPEC_NA = 0,
+  PERF_BR_SPEC_WRONG_PATH = 1,
+  PERF_BR_NON_SPEC_CORRECT_PATH = 2,
+  PERF_BR_SPEC_CORRECT_PATH = 3,
+  PERF_BR_SPEC_MAX,
+};
+enum {
+  PERF_BR_NEW_FAULT_ALGN = 0,
+  PERF_BR_NEW_FAULT_DATA = 1,
+  PERF_BR_NEW_FAULT_INST = 2,
+  PERF_BR_NEW_ARCH_1 = 3,
+  PERF_BR_NEW_ARCH_2 = 4,
+  PERF_BR_NEW_ARCH_3 = 5,
+  PERF_BR_NEW_ARCH_4 = 6,
+  PERF_BR_NEW_ARCH_5 = 7,
+  PERF_BR_NEW_MAX,
+};
+enum {
+  PERF_BR_PRIV_UNKNOWN = 0,
+  PERF_BR_PRIV_USER = 1,
+  PERF_BR_PRIV_KERNEL = 2,
+  PERF_BR_PRIV_HV = 3,
+};
+#define PERF_BR_ARM64_FIQ PERF_BR_NEW_ARCH_1
+#define PERF_BR_ARM64_DEBUG_HALT PERF_BR_NEW_ARCH_2
+#define PERF_BR_ARM64_DEBUG_EXIT PERF_BR_NEW_ARCH_3
+#define PERF_BR_ARM64_DEBUG_INST PERF_BR_NEW_ARCH_4
+#define PERF_BR_ARM64_DEBUG_DATA PERF_BR_NEW_ARCH_5
 #define PERF_SAMPLE_BRANCH_PLM_ALL (PERF_SAMPLE_BRANCH_USER | PERF_SAMPLE_BRANCH_KERNEL | PERF_SAMPLE_BRANCH_HV)
 enum perf_sample_regs_abi {
   PERF_SAMPLE_REGS_ABI_NONE = 0,
@@ -191,7 +226,8 @@
   PERF_FORMAT_TOTAL_TIME_RUNNING = 1U << 1,
   PERF_FORMAT_ID = 1U << 2,
   PERF_FORMAT_GROUP = 1U << 3,
-  PERF_FORMAT_MAX = 1U << 4,
+  PERF_FORMAT_LOST = 1U << 4,
+  PERF_FORMAT_MAX = 1U << 5,
 };
 #define PERF_ATTR_SIZE_VER0 64
 #define PERF_ATTR_SIZE_VER1 72
@@ -244,7 +280,7 @@
 struct perf_event_query_bpf {
   __u32 ids_len;
   __u32 prog_cnt;
-  __u32 ids[0];
+  __u32 ids[];
 };
 #define PERF_EVENT_IOC_ENABLE _IO('$', 0)
 #define PERF_EVENT_IOC_DISABLE _IO('$', 1)
@@ -432,6 +468,8 @@
 #define PERF_MEM_LVLNUM_L2 0x02
 #define PERF_MEM_LVLNUM_L3 0x03
 #define PERF_MEM_LVLNUM_L4 0x04
+#define PERF_MEM_LVLNUM_CXL 0x09
+#define PERF_MEM_LVLNUM_IO 0x0a
 #define PERF_MEM_LVLNUM_ANY_CACHE 0x0b
 #define PERF_MEM_LVLNUM_LFB 0x0c
 #define PERF_MEM_LVLNUM_RAM 0x0d
@@ -445,6 +483,7 @@
 #define PERF_MEM_SNOOP_HITM 0x10
 #define PERF_MEM_SNOOP_SHIFT 19
 #define PERF_MEM_SNOOPX_FWD 0x01
+#define PERF_MEM_SNOOPX_PEER 0x02
 #define PERF_MEM_SNOOPX_SHIFT 38
 #define PERF_MEM_LOCK_NA 0x01
 #define PERF_MEM_LOCK_LOCKED 0x02
@@ -470,7 +509,7 @@
 struct perf_branch_entry {
   __u64 from;
   __u64 to;
-  __u64 mispred : 1, predicted : 1, in_tx : 1, abort : 1, cycles : 16, type : 4, reserved : 40;
+  __u64 mispred : 1, predicted : 1, in_tx : 1, abort : 1, cycles : 16, type : 4, spec : 2, new_type : 4, priv : 3, reserved : 31;
 };
 union perf_sample_weight {
   __u64 full;
diff --git a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/pkt_cls.h b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/pkt_cls.h
index 9fd89e0..876cb73 100644
--- a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/pkt_cls.h
+++ b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/pkt_cls.h
@@ -199,7 +199,7 @@
   short offoff;
   short hoff;
   __be32 hmask;
-  struct tc_u32_key keys[0];
+  struct tc_u32_key keys[];
 };
 struct tc_u32_mark {
   __u32 val;
@@ -209,7 +209,7 @@
 struct tc_u32_pcnt {
   __u64 rcnt;
   __u64 rhit;
-  __u64 kcnts[0];
+  __u64 kcnts[];
 };
 #define TC_U32_TERMINAL 1
 #define TC_U32_OFFSET 2
@@ -459,6 +459,10 @@
   TCA_FLOWER_KEY_MPLS_OPTS,
   TCA_FLOWER_KEY_HASH,
   TCA_FLOWER_KEY_HASH_MASK,
+  TCA_FLOWER_KEY_NUM_OF_VLANS,
+  TCA_FLOWER_KEY_PPPOE_SID,
+  TCA_FLOWER_KEY_PPP_PROTO,
+  TCA_FLOWER_KEY_L2TPV3_SID,
   __TCA_FLOWER_MAX,
 };
 #define TCA_FLOWER_MAX (__TCA_FLOWER_MAX - 1)
@@ -476,6 +480,7 @@
   TCA_FLOWER_KEY_ENC_OPTS_GENEVE,
   TCA_FLOWER_KEY_ENC_OPTS_VXLAN,
   TCA_FLOWER_KEY_ENC_OPTS_ERSPAN,
+  TCA_FLOWER_KEY_ENC_OPTS_GTP,
   __TCA_FLOWER_KEY_ENC_OPTS_MAX,
 };
 #define TCA_FLOWER_KEY_ENC_OPTS_MAX (__TCA_FLOWER_KEY_ENC_OPTS_MAX - 1)
@@ -503,6 +508,13 @@
 };
 #define TCA_FLOWER_KEY_ENC_OPT_ERSPAN_MAX (__TCA_FLOWER_KEY_ENC_OPT_ERSPAN_MAX - 1)
 enum {
+  TCA_FLOWER_KEY_ENC_OPT_GTP_UNSPEC,
+  TCA_FLOWER_KEY_ENC_OPT_GTP_PDU_TYPE,
+  TCA_FLOWER_KEY_ENC_OPT_GTP_QFI,
+  __TCA_FLOWER_KEY_ENC_OPT_GTP_MAX,
+};
+#define TCA_FLOWER_KEY_ENC_OPT_GTP_MAX (__TCA_FLOWER_KEY_ENC_OPT_GTP_MAX - 1)
+enum {
   TCA_FLOWER_KEY_MPLS_OPTS_UNSPEC,
   TCA_FLOWER_KEY_MPLS_OPTS_LSE,
   __TCA_FLOWER_KEY_MPLS_OPTS_MAX,
diff --git a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/pkt_sched.h b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/pkt_sched.h
index e298b74..c31b8bb 100644
--- a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/pkt_sched.h
+++ b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/pkt_sched.h
@@ -924,6 +924,13 @@
 #define TCA_TAPRIO_ATTR_FLAG_TXTIME_ASSIST _BITUL(0)
 #define TCA_TAPRIO_ATTR_FLAG_FULL_OFFLOAD _BITUL(1)
 enum {
+  TCA_TAPRIO_TC_ENTRY_UNSPEC,
+  TCA_TAPRIO_TC_ENTRY_INDEX,
+  TCA_TAPRIO_TC_ENTRY_MAX_SDU,
+  __TCA_TAPRIO_TC_ENTRY_CNT,
+  TCA_TAPRIO_TC_ENTRY_MAX = (__TCA_TAPRIO_TC_ENTRY_CNT - 1)
+};
+enum {
   TCA_TAPRIO_ATTR_UNSPEC,
   TCA_TAPRIO_ATTR_PRIOMAP,
   TCA_TAPRIO_ATTR_SCHED_ENTRY_LIST,
@@ -936,6 +943,7 @@
   TCA_TAPRIO_ATTR_SCHED_CYCLE_TIME_EXTENSION,
   TCA_TAPRIO_ATTR_FLAGS,
   TCA_TAPRIO_ATTR_TXTIME_DELAY,
+  TCA_TAPRIO_ATTR_TC_ENTRY,
   __TCA_TAPRIO_ATTR_MAX,
 };
 #define TCA_TAPRIO_ATTR_MAX (__TCA_TAPRIO_ATTR_MAX - 1)
diff --git a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/prctl.h b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/prctl.h
index 9b4c695..1dac726 100644
--- a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/prctl.h
+++ b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/prctl.h
@@ -179,6 +179,11 @@
 #define PR_SCHED_CORE_SCOPE_THREAD 0
 #define PR_SCHED_CORE_SCOPE_THREAD_GROUP 1
 #define PR_SCHED_CORE_SCOPE_PROCESS_GROUP 2
+#define PR_SME_SET_VL 63
+#define PR_SME_SET_VL_ONEXEC (1 << 18)
+#define PR_SME_GET_VL 64
+#define PR_SME_VL_LEN_MASK 0xffff
+#define PR_SME_VL_INHERIT (1 << 17)
 #define PR_SET_VMA 0x53564d41
 #define PR_SET_VMA_ANON_NAME 0
 #endif
diff --git a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/psci.h b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/psci.h
index bc522e7..4dead17 100644
--- a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/psci.h
+++ b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/psci.h
@@ -39,11 +39,23 @@
 #define PSCI_0_2_FN64_MIGRATE PSCI_0_2_FN64(5)
 #define PSCI_0_2_FN64_MIGRATE_INFO_UP_CPU PSCI_0_2_FN64(7)
 #define PSCI_1_0_FN_PSCI_FEATURES PSCI_0_2_FN(10)
+#define PSCI_1_0_FN_CPU_FREEZE PSCI_0_2_FN(11)
+#define PSCI_1_0_FN_CPU_DEFAULT_SUSPEND PSCI_0_2_FN(12)
+#define PSCI_1_0_FN_NODE_HW_STATE PSCI_0_2_FN(13)
 #define PSCI_1_0_FN_SYSTEM_SUSPEND PSCI_0_2_FN(14)
 #define PSCI_1_0_FN_SET_SUSPEND_MODE PSCI_0_2_FN(15)
+#define PSCI_1_0_FN_STAT_RESIDENCY PSCI_0_2_FN(16)
+#define PSCI_1_0_FN_STAT_COUNT PSCI_0_2_FN(17)
 #define PSCI_1_1_FN_SYSTEM_RESET2 PSCI_0_2_FN(18)
+#define PSCI_1_1_FN_MEM_PROTECT PSCI_0_2_FN(19)
+#define PSCI_1_1_FN_MEM_PROTECT_CHECK_RANGE PSCI_0_2_FN(19)
+#define PSCI_1_0_FN64_CPU_DEFAULT_SUSPEND PSCI_0_2_FN64(12)
+#define PSCI_1_0_FN64_NODE_HW_STATE PSCI_0_2_FN64(13)
 #define PSCI_1_0_FN64_SYSTEM_SUSPEND PSCI_0_2_FN64(14)
+#define PSCI_1_0_FN64_STAT_RESIDENCY PSCI_0_2_FN64(16)
+#define PSCI_1_0_FN64_STAT_COUNT PSCI_0_2_FN64(17)
 #define PSCI_1_1_FN64_SYSTEM_RESET2 PSCI_0_2_FN64(18)
+#define PSCI_1_1_FN64_MEM_PROTECT_CHECK_RANGE PSCI_0_2_FN64(19)
 #define PSCI_0_2_POWER_STATE_ID_MASK 0xffff
 #define PSCI_0_2_POWER_STATE_ID_SHIFT 0
 #define PSCI_0_2_POWER_STATE_TYPE_SHIFT 16
@@ -60,6 +72,8 @@
 #define PSCI_0_2_TOS_UP_MIGRATE 0
 #define PSCI_0_2_TOS_UP_NO_MIGRATE 1
 #define PSCI_0_2_TOS_MP 2
+#define PSCI_1_1_RESET_TYPE_SYSTEM_WARM_RESET 0
+#define PSCI_1_1_RESET_TYPE_VENDOR_START 0x80000000U
 #define PSCI_VERSION_MAJOR_SHIFT 16
 #define PSCI_VERSION_MINOR_MASK ((1U << PSCI_VERSION_MAJOR_SHIFT) - 1)
 #define PSCI_VERSION_MAJOR_MASK ~PSCI_VERSION_MINOR_MASK
diff --git a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/psp-sev.h b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/psp-sev.h
index 6c4f73d..8c9ec80 100644
--- a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/psp-sev.h
+++ b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/psp-sev.h
@@ -66,37 +66,37 @@
   __u32 flags;
   __u8 build;
   __u32 guest_count;
-} __packed;
+} __attribute__((__packed__));
 #define SEV_STATUS_FLAGS_CONFIG_ES 0x0100
 struct sev_user_data_pek_csr {
   __u64 address;
   __u32 length;
-} __packed;
+} __attribute__((__packed__));
 struct sev_user_data_pek_cert_import {
   __u64 pek_cert_address;
   __u32 pek_cert_len;
   __u64 oca_cert_address;
   __u32 oca_cert_len;
-} __packed;
+} __attribute__((__packed__));
 struct sev_user_data_pdh_cert_export {
   __u64 pdh_cert_address;
   __u32 pdh_cert_len;
   __u64 cert_chain_address;
   __u32 cert_chain_len;
-} __packed;
+} __attribute__((__packed__));
 struct sev_user_data_get_id {
   __u8 socket1[64];
   __u8 socket2[64];
-} __packed;
+} __attribute__((__packed__));
 struct sev_user_data_get_id2 {
   __u64 address;
   __u32 length;
-} __packed;
+} __attribute__((__packed__));
 struct sev_issue_cmd {
   __u32 cmd;
   __u64 data;
   __u32 error;
-} __packed;
+} __attribute__((__packed__));
 #define SEV_IOC_TYPE 'S'
 #define SEV_ISSUE_CMD _IOWR(SEV_IOC_TYPE, 0x0, struct sev_issue_cmd)
 #endif
diff --git a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/qrtr.h b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/qrtr.h
index c0a4c72..ee56aca 100644
--- a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/qrtr.h
+++ b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/qrtr.h
@@ -54,5 +54,5 @@
       __le32 port;
     } client;
   };
-} __packed;
+} __attribute__((__packed__));
 #endif
diff --git a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/raid/md_p.h b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/raid/md_p.h
index 4ad444a..dc3084a 100644
--- a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/raid/md_p.h
+++ b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/raid/md_p.h
@@ -168,7 +168,7 @@
   __le32 sb_csum;
   __le32 max_dev;
   __u8 pad3[64 - 32];
-  __le16 dev_roles[0];
+  __le16 dev_roles[];
 };
 #define MD_FEATURE_BITMAP_OFFSET 1
 #define MD_FEATURE_RECOVERY_OFFSET 2
diff --git a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/random.h b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/random.h
index 2d3cfef..8df411b 100644
--- a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/random.h
+++ b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/random.h
@@ -31,7 +31,7 @@
 struct rand_pool_info {
   int entropy_count;
   int buf_size;
-  __u32 buf[0];
+  __u32 buf[];
 };
 #define GRND_NONBLOCK 0x0001
 #define GRND_RANDOM 0x0002
diff --git a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/reiserfs_xattr.h b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/reiserfs_xattr.h
index 36d31f6..16a7a08 100644
--- a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/reiserfs_xattr.h
+++ b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/reiserfs_xattr.h
@@ -27,6 +27,6 @@
 struct reiserfs_security_handle {
   const char * name;
   void * value;
-  size_t length;
+  __kernel_size_t length;
 };
 #endif
diff --git a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/rfkill.h b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/rfkill.h
index 6020baf..b90e67c 100644
--- a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/rfkill.h
+++ b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/rfkill.h
@@ -63,4 +63,6 @@
 #define RFKILL_IOC_MAGIC 'R'
 #define RFKILL_IOC_NOINPUT 1
 #define RFKILL_IOCTL_NOINPUT _IO(RFKILL_IOC_MAGIC, RFKILL_IOC_NOINPUT)
+#define RFKILL_IOC_MAX_SIZE 2
+#define RFKILL_IOCTL_MAX_SIZE _IOW(RFKILL_IOC_MAGIC, RFKILL_IOC_MAX_SIZE, __u32)
 #endif
diff --git a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/rkisp1-config.h b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/rkisp1-config.h
index cea14cd..7175c23 100644
--- a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/rkisp1-config.h
+++ b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/rkisp1-config.h
@@ -67,6 +67,37 @@
 #define RKISP1_CIF_ISP_HISTOGRAM_WEIGHT_GRIDS_SIZE_V12 81
 #define RKISP1_CIF_ISP_HISTOGRAM_WEIGHT_GRIDS_SIZE RKISP1_CIF_ISP_HISTOGRAM_WEIGHT_GRIDS_SIZE_V12
 #define RKISP1_CIF_ISP_DPCC_METHODS_MAX 3
+#define RKISP1_CIF_ISP_DPCC_MODE_STAGE1_ENABLE (1U << 2)
+#define RKISP1_CIF_ISP_DPCC_OUTPUT_MODE_STAGE1_INCL_G_CENTER (1U << 0)
+#define RKISP1_CIF_ISP_DPCC_OUTPUT_MODE_STAGE1_INCL_RB_CENTER (1U << 1)
+#define RKISP1_CIF_ISP_DPCC_OUTPUT_MODE_STAGE1_G_3X3 (1U << 2)
+#define RKISP1_CIF_ISP_DPCC_OUTPUT_MODE_STAGE1_RB_3X3 (1U << 3)
+#define RKISP1_CIF_ISP_DPCC_SET_USE_STAGE1_USE_SET(n) ((n) << 0)
+#define RKISP1_CIF_ISP_DPCC_SET_USE_STAGE1_USE_FIX_SET (1U << 3)
+#define RKISP1_CIF_ISP_DPCC_METHODS_SET_PG_GREEN_ENABLE (1U << 0)
+#define RKISP1_CIF_ISP_DPCC_METHODS_SET_LC_GREEN_ENABLE (1U << 1)
+#define RKISP1_CIF_ISP_DPCC_METHODS_SET_RO_GREEN_ENABLE (1U << 2)
+#define RKISP1_CIF_ISP_DPCC_METHODS_SET_RND_GREEN_ENABLE (1U << 3)
+#define RKISP1_CIF_ISP_DPCC_METHODS_SET_RG_GREEN_ENABLE (1U << 4)
+#define RKISP1_CIF_ISP_DPCC_METHODS_SET_PG_RED_BLUE_ENABLE (1U << 8)
+#define RKISP1_CIF_ISP_DPCC_METHODS_SET_LC_RED_BLUE_ENABLE (1U << 9)
+#define RKISP1_CIF_ISP_DPCC_METHODS_SET_RO_RED_BLUE_ENABLE (1U << 10)
+#define RKISP1_CIF_ISP_DPCC_METHODS_SET_RND_RED_BLUE_ENABLE (1U << 11)
+#define RKISP1_CIF_ISP_DPCC_METHODS_SET_RG_RED_BLUE_ENABLE (1U << 12)
+#define RKISP1_CIF_ISP_DPCC_LINE_THRESH_G(v) ((v) << 0)
+#define RKISP1_CIF_ISP_DPCC_LINE_THRESH_RB(v) ((v) << 8)
+#define RKISP1_CIF_ISP_DPCC_LINE_MAD_FAC_G(v) ((v) << 0)
+#define RKISP1_CIF_ISP_DPCC_LINE_MAD_FAC_RB(v) ((v) << 8)
+#define RKISP1_CIF_ISP_DPCC_PG_FAC_G(v) ((v) << 0)
+#define RKISP1_CIF_ISP_DPCC_PG_FAC_RB(v) ((v) << 8)
+#define RKISP1_CIF_ISP_DPCC_RND_THRESH_G(v) ((v) << 0)
+#define RKISP1_CIF_ISP_DPCC_RND_THRESH_RB(v) ((v) << 8)
+#define RKISP1_CIF_ISP_DPCC_RG_FAC_G(v) ((v) << 0)
+#define RKISP1_CIF_ISP_DPCC_RG_FAC_RB(v) ((v) << 8)
+#define RKISP1_CIF_ISP_DPCC_RO_LIMITS_n_G(n,v) ((v) << ((n) * 4))
+#define RKISP1_CIF_ISP_DPCC_RO_LIMITS_n_RB(n,v) ((v) << ((n) * 4 + 2))
+#define RKISP1_CIF_ISP_DPCC_RND_OFFS_n_G(n,v) ((v) << ((n) * 4))
+#define RKISP1_CIF_ISP_DPCC_RND_OFFS_n_RB(n,v) ((v) << ((n) * 4 + 2))
 #define RKISP1_CIF_ISP_DPF_MAX_NLF_COEFFS 17
 #define RKISP1_CIF_ISP_DPF_MAX_SPATIAL_COEFFS 6
 #define RKISP1_CIF_ISP_STAT_AWB (1U << 0)
diff --git a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/romfs_fs.h b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/romfs_fs.h
index 8e98714..bffbaf9 100644
--- a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/romfs_fs.h
+++ b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/romfs_fs.h
@@ -35,14 +35,14 @@
   __be32 word1;
   __be32 size;
   __be32 checksum;
-  char name[0];
+  char name[];
 };
 struct romfs_inode {
   __be32 next;
   __be32 spec;
   __be32 size;
   __be32 checksum;
-  char name[0];
+  char name[];
 };
 #define ROMFH_TYPE 7
 #define ROMFH_HRD 0
diff --git a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/rpmsg.h b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/rpmsg.h
index c5b5a76..9ceccdd 100644
--- a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/rpmsg.h
+++ b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/rpmsg.h
@@ -28,4 +28,6 @@
 };
 #define RPMSG_CREATE_EPT_IOCTL _IOW(0xb5, 0x1, struct rpmsg_endpoint_info)
 #define RPMSG_DESTROY_EPT_IOCTL _IO(0xb5, 0x2)
+#define RPMSG_CREATE_DEV_IOCTL _IOW(0xb5, 0x3, struct rpmsg_endpoint_info)
+#define RPMSG_RELEASE_DEV_IOCTL _IOW(0xb5, 0x4, struct rpmsg_endpoint_info)
 #endif
diff --git a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/rseq.h b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/rseq.h
index ba0ceb1..29a9457 100644
--- a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/rseq.h
+++ b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/rseq.h
@@ -47,22 +47,7 @@
 struct rseq {
   __u32 cpu_id_start;
   __u32 cpu_id;
-  union {
-    __u64 ptr64;
-#ifdef __LP64__
-    __u64 ptr;
-#else
-    struct {
-#if defined(__BYTE_ORDER) && __BYTE_ORDER == __BIG_ENDIAN || defined(__BIG_ENDIAN)
-      __u32 padding;
-      __u32 ptr32;
-#else
-      __u32 ptr32;
-      __u32 padding;
-#endif
-    } ptr;
-#endif
-  } rseq_cs;
+  __u64 rseq_cs;
   __u32 flags;
 } __attribute__((aligned(4 * sizeof(__u64))));
 #endif
diff --git a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/rtc.h b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/rtc.h
index cf5f22a..d75bc45 100644
--- a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/rtc.h
+++ b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/rtc.h
@@ -96,7 +96,8 @@
 #define RTC_FEATURE_UPDATE_INTERRUPT 4
 #define RTC_FEATURE_CORRECTION 5
 #define RTC_FEATURE_BACKUP_SWITCH_MODE 6
-#define RTC_FEATURE_CNT 7
+#define RTC_FEATURE_ALARM_WAKEUP_ONLY 7
+#define RTC_FEATURE_CNT 8
 #define RTC_PARAM_FEATURES 0
 #define RTC_PARAM_CORRECTION 1
 #define RTC_PARAM_BACKUP_SWITCH_MODE 2
diff --git a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/rtnetlink.h b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/rtnetlink.h
index 91c3ee4..7201827 100644
--- a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/rtnetlink.h
+++ b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/rtnetlink.h
@@ -131,6 +131,8 @@
 #define RTM_NEWSTATS RTM_NEWSTATS
   RTM_GETSTATS = 94,
 #define RTM_GETSTATS RTM_GETSTATS
+  RTM_SETSTATS,
+#define RTM_SETSTATS RTM_SETSTATS
   RTM_NEWCACHEREPORT = 96,
 #define RTM_NEWCACHEREPORT RTM_NEWCACHEREPORT
   RTM_NEWCHAIN = 100,
@@ -163,6 +165,12 @@
 #define RTM_DELNEXTHOPBUCKET RTM_DELNEXTHOPBUCKET
   RTM_GETNEXTHOPBUCKET,
 #define RTM_GETNEXTHOPBUCKET RTM_GETNEXTHOPBUCKET
+  RTM_NEWTUNNEL = 120,
+#define RTM_NEWTUNNEL RTM_NEWTUNNEL
+  RTM_DELTUNNEL,
+#define RTM_DELTUNNEL RTM_DELTUNNEL
+  RTM_GETTUNNEL,
+#define RTM_GETTUNNEL RTM_GETTUNNEL
   __RTM_MAX,
 #define RTM_MAX (((__RTM_MAX + 3) & ~3) - 1)
 };
@@ -315,7 +323,7 @@
 #define RTNH_DATA(rtnh) ((struct rtattr *) (((char *) (rtnh)) + RTNH_LENGTH(0)))
 struct rtvia {
   __kernel_sa_family_t rtvia_family;
-  __u8 rtvia_addr[0];
+  __u8 rtvia_addr[];
 };
 struct rta_cacheinfo {
   __u32 rta_clntref;
@@ -561,6 +569,10 @@
 #define RTNLGRP_BRVLAN RTNLGRP_BRVLAN
   RTNLGRP_MCTP_IFADDR,
 #define RTNLGRP_MCTP_IFADDR RTNLGRP_MCTP_IFADDR
+  RTNLGRP_TUNNEL,
+#define RTNLGRP_TUNNEL RTNLGRP_TUNNEL
+  RTNLGRP_STATS,
+#define RTNLGRP_STATS RTNLGRP_STATS
   __RTNLGRP_MAX
 };
 #define RTNLGRP_MAX (__RTNLGRP_MAX - 1)
@@ -592,4 +604,5 @@
 #define RTEXT_FILTER_MRP (1 << 4)
 #define RTEXT_FILTER_CFM_CONFIG (1 << 5)
 #define RTEXT_FILTER_CFM_STATUS (1 << 6)
+#define RTEXT_FILTER_MST (1 << 7)
 #endif
diff --git a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/sctp.h b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/sctp.h
index 765d6c9..4bf2412 100644
--- a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/sctp.h
+++ b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/sctp.h
@@ -210,7 +210,7 @@
   __u16 sac_outbound_streams;
   __u16 sac_inbound_streams;
   sctp_assoc_t sac_assoc_id;
-  __u8 sac_info[0];
+  __u8 sac_info[];
 };
 enum sctp_sac_state {
   SCTP_COMM_UP,
@@ -244,7 +244,7 @@
   __u32 sre_length;
   __be16 sre_error;
   sctp_assoc_t sre_assoc_id;
-  __u8 sre_data[0];
+  __u8 sre_data[];
 };
 struct sctp_send_failed {
   __u16 ssf_type;
@@ -253,7 +253,7 @@
   __u32 ssf_error;
   struct sctp_sndrcvinfo ssf_info;
   sctp_assoc_t ssf_assoc_id;
-  __u8 ssf_data[0];
+  __u8 ssf_data[];
 };
 struct sctp_send_failed_event {
   __u16 ssf_type;
@@ -262,7 +262,7 @@
   __u32 ssf_error;
   struct sctp_sndinfo ssfe_info;
   sctp_assoc_t ssf_assoc_id;
-  __u8 ssf_data[0];
+  __u8 ssf_data[];
 };
 enum sctp_ssf_flags {
   SCTP_DATA_UNSENT,
@@ -570,7 +570,7 @@
 struct sctp_getaddrs {
   sctp_assoc_t assoc_id;
   __u32 addr_num;
-  __u8 addrs[0];
+  __u8 addrs[];
 };
 struct sctp_assoc_stats {
   sctp_assoc_t sas_assoc_id;
diff --git a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/seccomp.h b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/seccomp.h
index e58b421..cc506ae 100644
--- a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/seccomp.h
+++ b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/seccomp.h
@@ -32,6 +32,7 @@
 #define SECCOMP_FILTER_FLAG_SPEC_ALLOW (1UL << 2)
 #define SECCOMP_FILTER_FLAG_NEW_LISTENER (1UL << 3)
 #define SECCOMP_FILTER_FLAG_TSYNC_ESRCH (1UL << 4)
+#define SECCOMP_FILTER_FLAG_WAIT_KILLABLE_RECV (1UL << 5)
 #define SECCOMP_RET_KILL_PROCESS 0x80000000U
 #define SECCOMP_RET_KILL_THREAD 0x00000000U
 #define SECCOMP_RET_KILL SECCOMP_RET_KILL_THREAD
diff --git a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/sed-opal.h b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/sed-opal.h
index a20197a..f7ac9bd 100644
--- a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/sed-opal.h
+++ b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/sed-opal.h
@@ -112,6 +112,16 @@
   __u64 flags;
   __u64 priv;
 };
+#define OPAL_FL_SUPPORTED 0x00000001
+#define OPAL_FL_LOCKING_SUPPORTED 0x00000002
+#define OPAL_FL_LOCKING_ENABLED 0x00000004
+#define OPAL_FL_LOCKED 0x00000008
+#define OPAL_FL_MBR_ENABLED 0x00000010
+#define OPAL_FL_MBR_DONE 0x00000020
+struct opal_status {
+  __u32 flags;
+  __u32 reserved;
+};
 #define IOC_OPAL_SAVE _IOW('p', 220, struct opal_lock_unlock)
 #define IOC_OPAL_LOCK_UNLOCK _IOW('p', 221, struct opal_lock_unlock)
 #define IOC_OPAL_TAKE_OWNERSHIP _IOW('p', 222, struct opal_key)
@@ -128,4 +138,5 @@
 #define IOC_OPAL_MBR_DONE _IOW('p', 233, struct opal_mbr_done)
 #define IOC_OPAL_WRITE_SHADOW_MBR _IOW('p', 234, struct opal_shadow_mbr)
 #define IOC_OPAL_GENERIC_TABLE_RW _IOW('p', 235, struct opal_read_write_table)
+#define IOC_OPAL_GET_STATUS _IOR('p', 236, struct opal_status)
 #endif
diff --git a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/seg6.h b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/seg6.h
index f180485..b8206cc 100644
--- a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/seg6.h
+++ b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/seg6.h
@@ -28,7 +28,7 @@
   __u8 first_segment;
   __u8 flags;
   __u16 tag;
-  struct in6_addr segments[0];
+  struct in6_addr segments[];
 };
 #define SR6_FLAG1_PROTECTED (1 << 6)
 #define SR6_FLAG1_OAM (1 << 5)
diff --git a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/seg6_iptunnel.h b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/seg6_iptunnel.h
index 1c1ad83..19d8ba4 100644
--- a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/seg6_iptunnel.h
+++ b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/seg6_iptunnel.h
@@ -27,12 +27,14 @@
 #define SEG6_IPTUNNEL_MAX (__SEG6_IPTUNNEL_MAX - 1)
 struct seg6_iptunnel_encap {
   int mode;
-  struct ipv6_sr_hdr srh[0];
+  struct ipv6_sr_hdr srh[];
 };
 #define SEG6_IPTUN_ENCAP_SIZE(x) ((sizeof(* x)) + (((x)->srh->hdrlen + 1) << 3))
 enum {
   SEG6_IPTUN_MODE_INLINE,
   SEG6_IPTUN_MODE_ENCAP,
   SEG6_IPTUN_MODE_L2ENCAP,
+  SEG6_IPTUN_MODE_ENCAP_RED,
+  SEG6_IPTUN_MODE_L2ENCAP_RED,
 };
 #endif
diff --git a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/seg6_local.h b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/seg6_local.h
index 61a8d97..4d062e8 100644
--- a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/seg6_local.h
+++ b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/seg6_local.h
@@ -31,6 +31,7 @@
   SEG6_LOCAL_BPF,
   SEG6_LOCAL_VRFTABLE,
   SEG6_LOCAL_COUNTERS,
+  SEG6_LOCAL_FLAVORS,
   __SEG6_LOCAL_MAX,
 };
 #define SEG6_LOCAL_MAX (__SEG6_LOCAL_MAX - 1)
@@ -71,4 +72,21 @@
   __SEG6_LOCAL_CNT_MAX,
 };
 #define SEG6_LOCAL_CNT_MAX (__SEG6_LOCAL_CNT_MAX - 1)
+enum {
+  SEG6_LOCAL_FLV_UNSPEC,
+  SEG6_LOCAL_FLV_OPERATION,
+  SEG6_LOCAL_FLV_LCBLOCK_BITS,
+  SEG6_LOCAL_FLV_LCNODE_FN_BITS,
+  __SEG6_LOCAL_FLV_MAX,
+};
+#define SEG6_LOCAL_FLV_MAX (__SEG6_LOCAL_FLV_MAX - 1)
+enum {
+  SEG6_LOCAL_FLV_OP_UNSPEC,
+  SEG6_LOCAL_FLV_OP_PSP,
+  SEG6_LOCAL_FLV_OP_USP,
+  SEG6_LOCAL_FLV_OP_USD,
+  SEG6_LOCAL_FLV_OP_NEXT_CSID,
+  __SEG6_LOCAL_FLV_OP_MAX
+};
+#define SEG6_LOCAL_FLV_OP_MAX (__SEG6_LOCAL_FLV_OP_MAX - 1)
 #endif
diff --git a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/serial.h b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/serial.h
index e4e903d..5a83c62 100644
--- a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/serial.h
+++ b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/serial.h
@@ -96,9 +96,20 @@
 #define SER_RS485_RTS_AFTER_SEND (1 << 2)
 #define SER_RS485_RX_DURING_TX (1 << 4)
 #define SER_RS485_TERMINATE_BUS (1 << 5)
+#define SER_RS485_ADDRB (1 << 6)
+#define SER_RS485_ADDR_RECV (1 << 7)
+#define SER_RS485_ADDR_DEST (1 << 8)
   __u32 delay_rts_before_send;
   __u32 delay_rts_after_send;
-  __u32 padding[5];
+  union {
+    __u32 padding[5];
+    struct {
+      __u8 addr_recv;
+      __u8 addr_dest;
+      __u8 padding0[2];
+      __u32 padding1[4];
+    };
+  };
 };
 struct serial_iso7816 {
   __u32 flags;
diff --git a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/serial_core.h b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/serial_core.h
index 0caf698..1e04429 100644
--- a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/serial_core.h
+++ b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/serial_core.h
@@ -47,6 +47,7 @@
 #define PORT_SUNSAB 39
 #define PORT_NPCM 40
 #define PORT_TEGRA_TCU 41
+#define PORT_ASPEED_VUART 42
 #define PORT_PCH_8LINE 44
 #define PORT_PCH_2LINE 45
 #define PORT_DZ 46
@@ -68,8 +69,6 @@
 #define PORT_IMX 62
 #define PORT_MPSC 63
 #define PORT_TXX9 64
-#define PORT_VR41XX_SIU 65
-#define PORT_VR41XX_DSIU 66
 #define PORT_S3C2400 67
 #define PORT_M32R_SIO 68
 #define PORT_JSM 69
@@ -122,4 +121,5 @@
 #define PORT_SIFIVE_V0 120
 #define PORT_SUNIX 121
 #define PORT_LINFLEXUART 122
+#define PORT_SUNPLUS 123
 #endif
diff --git a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/serial_reg.h b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/serial_reg.h
index b6648f8..e41e649 100644
--- a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/serial_reg.h
+++ b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/serial_reg.h
@@ -99,7 +99,7 @@
 #define UART_LSR_PE 0x04
 #define UART_LSR_OE 0x02
 #define UART_LSR_DR 0x01
-#define UART_LSR_BRK_ERROR_BITS 0x1E
+#define UART_LSR_BRK_ERROR_BITS (UART_LSR_BI | UART_LSR_FE | UART_LSR_PE | UART_LSR_OE)
 #define UART_MSR 6
 #define UART_MSR_DCD 0x80
 #define UART_MSR_RI 0x40
@@ -109,7 +109,7 @@
 #define UART_MSR_TERI 0x04
 #define UART_MSR_DDSR 0x02
 #define UART_MSR_DCTS 0x01
-#define UART_MSR_ANY_DELTA 0x0F
+#define UART_MSR_ANY_DELTA (UART_MSR_DDCD | UART_MSR_TERI | UART_MSR_DDSR | UART_MSR_DCTS)
 #define UART_SCR 7
 #define UART_DLL 0
 #define UART_DLM 1
diff --git a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/sev-guest.h b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/sev-guest.h
new file mode 100644
index 0000000..796479a
--- /dev/null
+++ b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/sev-guest.h
@@ -0,0 +1,56 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef __UAPI_LINUX_SEV_GUEST_H_
+#define __UAPI_LINUX_SEV_GUEST_H_
+#include <linux/types.h>
+struct snp_report_req {
+  __u8 user_data[64];
+  __u32 vmpl;
+  __u8 rsvd[28];
+};
+struct snp_report_resp {
+  __u8 data[4000];
+};
+struct snp_derived_key_req {
+  __u32 root_key_select;
+  __u32 rsvd;
+  __u64 guest_field_select;
+  __u32 vmpl;
+  __u32 guest_svn;
+  __u64 tcb_version;
+};
+struct snp_derived_key_resp {
+  __u8 data[64];
+};
+struct snp_guest_request_ioctl {
+  __u8 msg_version;
+  __u64 req_data;
+  __u64 resp_data;
+  __u64 fw_err;
+};
+struct snp_ext_report_req {
+  struct snp_report_req data;
+  __u64 certs_address;
+  __u32 certs_len;
+};
+#define SNP_GUEST_REQ_IOC_TYPE 'S'
+#define SNP_GET_REPORT _IOWR(SNP_GUEST_REQ_IOC_TYPE, 0x0, struct snp_guest_request_ioctl)
+#define SNP_GET_DERIVED_KEY _IOWR(SNP_GUEST_REQ_IOC_TYPE, 0x1, struct snp_guest_request_ioctl)
+#define SNP_GET_EXT_REPORT _IOWR(SNP_GUEST_REQ_IOC_TYPE, 0x2, struct snp_guest_request_ioctl)
+#endif
diff --git a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/smc.h b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/smc.h
index 01494da..200c9b6 100644
--- a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/smc.h
+++ b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/smc.h
@@ -57,6 +57,9 @@
   SMC_NETLINK_DUMP_SEID,
   SMC_NETLINK_ENABLE_SEID,
   SMC_NETLINK_DISABLE_SEID,
+  SMC_NETLINK_DUMP_HS_LIMITATION,
+  SMC_NETLINK_ENABLE_HS_LIMITATION,
+  SMC_NETLINK_DISABLE_HS_LIMITATION,
 };
 enum {
   SMC_GEN_UNSPEC,
@@ -109,6 +112,7 @@
   SMC_NLA_LGR_R_V2,
   SMC_NLA_LGR_R_NET_COOKIE,
   SMC_NLA_LGR_R_PAD,
+  SMC_NLA_LGR_R_BUF_TYPE,
   __SMC_NLA_LGR_R_MAX,
   SMC_NLA_LGR_R_MAX = __SMC_NLA_LGR_R_MAX - 1
 };
@@ -249,4 +253,11 @@
   __SMC_NLA_SEID_TABLE_MAX,
   SMC_NLA_SEID_TABLE_MAX = __SMC_NLA_SEID_TABLE_MAX - 1
 };
+enum {
+  SMC_NLA_HS_LIMITATION_UNSPEC,
+  SMC_NLA_HS_LIMITATION_ENABLED,
+  __SMC_NLA_HS_LIMITATION_MAX,
+  SMC_NLA_HS_LIMITATION_MAX = __SMC_NLA_HS_LIMITATION_MAX - 1
+};
+#define SMC_LIMIT_HS 1
 #endif
diff --git a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/snmp.h b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/snmp.h
index a503a7e..d98f39e 100644
--- a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/snmp.h
+++ b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/snmp.h
@@ -305,6 +305,8 @@
   LINUX_MIB_TLSRXDEVICE,
   LINUX_MIB_TLSDECRYPTERROR,
   LINUX_MIB_TLSRXDEVICERESYNC,
+  LINUX_MIB_TLSDECRYPTRETRY,
+  LINUX_MIB_TLSRXNOPADVIOL,
   __LINUX_MIB_TLSMAX
 };
 #endif
diff --git a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/socket.h b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/socket.h
index be16548..4a530a8 100644
--- a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/socket.h
+++ b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/socket.h
@@ -32,4 +32,7 @@
 #define SOCK_SNDBUF_LOCK 1
 #define SOCK_RCVBUF_LOCK 2
 #define SOCK_BUF_LOCK_MASK (SOCK_SNDBUF_LOCK | SOCK_RCVBUF_LOCK)
+#define SOCK_TXREHASH_DEFAULT 255
+#define SOCK_TXREHASH_DISABLED 0
+#define SOCK_TXREHASH_ENABLED 1
 #endif
diff --git a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/spi/spi.h b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/spi/spi.h
index 39267a2..693e752 100644
--- a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/spi/spi.h
+++ b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/spi/spi.h
@@ -40,5 +40,6 @@
 #define SPI_TX_OCTAL _BITUL(13)
 #define SPI_RX_OCTAL _BITUL(14)
 #define SPI_3WIRE_HIZ _BITUL(15)
-#define SPI_MODE_USER_MASK (_BITUL(16) - 1)
+#define SPI_RX_CPHA_FLIP _BITUL(16)
+#define SPI_MODE_USER_MASK (_BITUL(17) - 1)
 #endif
diff --git a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/stat.h b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/stat.h
index a15b9b5..89304ce 100644
--- a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/stat.h
+++ b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/stat.h
@@ -78,7 +78,8 @@
   __u32 stx_dev_major;
   __u32 stx_dev_minor;
   __u64 stx_mnt_id;
-  __u64 __spare2;
+  __u32 stx_dio_mem_align;
+  __u32 stx_dio_offset_align;
   __u64 __spare3[12];
 };
 #define STATX_TYPE 0x00000001U
@@ -95,6 +96,7 @@
 #define STATX_BASIC_STATS 0x000007ffU
 #define STATX_BTIME 0x00000800U
 #define STATX_MNT_ID 0x00001000U
+#define STATX_DIOALIGN 0x00002000U
 #define STATX__RESERVED 0x80000000U
 #define STATX_ALL 0x00000fffU
 #define STATX_ATTR_COMPRESSED 0x00000004
diff --git a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/stddef.h b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/stddef.h
index d5cdf80..6bc6925 100644
--- a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/stddef.h
+++ b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/stddef.h
@@ -16,9 +16,12 @@
  ***
  ****************************************************************************
  ****************************************************************************/
+#ifndef _UAPI_LINUX_STDDEF_H
+#define _UAPI_LINUX_STDDEF_H
 #include <linux/compiler_types.h>
 #ifndef __always_inline
 #define __always_inline inline
 #endif
 #define __struct_group(TAG,NAME,ATTRS,MEMBERS...) union { struct { MEMBERS } ATTRS; struct TAG { MEMBERS } ATTRS NAME; }
 #define __DECLARE_FLEX_ARRAY(TYPE,NAME) struct { struct { } __empty_ ##NAME; TYPE NAME[]; }
+#endif
diff --git a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/stm.h b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/stm.h
index 1c7f7f3..b1453f7 100644
--- a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/stm.h
+++ b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/stm.h
@@ -28,7 +28,7 @@
   __u16 width;
   __u16 __reserved_0;
   __u32 __reserved_1;
-  char id[0];
+  char id[];
 };
 #define STP_POLICY_ID_SET _IOWR('%', 0, struct stp_policy_id)
 #define STP_POLICY_ID_GET _IOR('%', 1, struct stp_policy_id)
diff --git a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/sysctl.h b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/sysctl.h
index ae9c2ba..ff17f7c 100644
--- a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/sysctl.h
+++ b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/sysctl.h
@@ -516,6 +516,7 @@
   NET_NEIGH_GC_THRESH3 = 16,
   NET_NEIGH_RETRANS_TIME_MS = 17,
   NET_NEIGH_REACHABLE_TIME_MS = 18,
+  NET_NEIGH_INTERVAL_PROBE_TIME_MS = 19,
 };
 enum {
   NET_DCCP_DEFAULT = 1,
diff --git a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/target_core_user.h b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/target_core_user.h
index dcba00e..83e155e 100644
--- a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/target_core_user.h
+++ b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/target_core_user.h
@@ -34,7 +34,7 @@
   __u32 cmdr_size;
   __u32 cmd_head;
   __u32 cmd_tail __attribute__((__aligned__(ALIGN_SIZE)));
-} __packed;
+} __attribute__((__packed__));
 enum tcmu_opcode {
   TCMU_OP_PAD = 0,
   TCMU_OP_CMD,
@@ -48,7 +48,7 @@
 #define TCMU_UFLAG_READ_LEN 0x2
 #define TCMU_UFLAG_KEEP_BUF 0x4
   __u8 uflags;
-} __packed;
+} __attribute__((__packed__));
 #define TCMU_OP_MASK 0x7
 #define TCMU_SENSE_BUFFERSIZE 96
 struct tcmu_cmd_entry {
@@ -71,7 +71,7 @@
       char sense_buffer[TCMU_SENSE_BUFFERSIZE];
     } rsp;
   };
-} __packed;
+} __attribute__((__packed__));
 struct tcmu_tmr_entry {
   struct tcmu_cmd_entry_hdr hdr;
 #define TCMU_TMR_UNKNOWN 0
@@ -89,8 +89,8 @@
   __u32 cmd_cnt;
   __u64 __pad3;
   __u64 __pad4;
-  __u16 cmd_ids[0];
-} __packed;
+  __u16 cmd_ids[];
+} __attribute__((__packed__));
 #define TCMU_OP_ALIGN_SIZE sizeof(__u64)
 enum tcmu_genl_cmd {
   TCMU_CMD_UNSPEC,
diff --git a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/taskstats.h b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/taskstats.h
index efa5b4a..c1cda52 100644
--- a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/taskstats.h
+++ b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/taskstats.h
@@ -19,7 +19,7 @@
 #ifndef _LINUX_TASKSTATS_H
 #define _LINUX_TASKSTATS_H
 #include <linux/types.h>
-#define TASKSTATS_VERSION 11
+#define TASKSTATS_VERSION 13
 #define TS_COMM_LEN 32
 struct taskstats {
   __u16 version;
@@ -71,6 +71,12 @@
   __u64 ac_btime64;
   __u64 compact_count;
   __u64 compact_delay_total;
+  __u32 ac_tgid;
+  __u64 ac_tgetime __attribute__((aligned(8)));
+  __u64 ac_exe_dev;
+  __u64 ac_exe_inode;
+  __u64 wpcopy_count;
+  __u64 wpcopy_delay_total;
 };
 enum {
   TASKSTATS_CMD_UNSPEC = 0,
diff --git a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/tc_act/tc_skbedit.h b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/tc_act/tc_skbedit.h
index 5706d4d..b041a6a 100644
--- a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/tc_act/tc_skbedit.h
+++ b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/tc_act/tc_skbedit.h
@@ -25,6 +25,7 @@
 #define SKBEDIT_F_PTYPE 0x8
 #define SKBEDIT_F_MASK 0x10
 #define SKBEDIT_F_INHERITDSFIELD 0x20
+#define SKBEDIT_F_TXQ_SKBHASH 0x40
 struct tc_skbedit {
   tc_gen;
 };
@@ -39,6 +40,7 @@
   TCA_SKBEDIT_PTYPE,
   TCA_SKBEDIT_MASK,
   TCA_SKBEDIT_FLAGS,
+  TCA_SKBEDIT_QUEUE_MAPPING_MAX,
   __TCA_SKBEDIT_MAX
 };
 #define TCA_SKBEDIT_MAX (__TCA_SKBEDIT_MAX - 1)
diff --git a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/tee.h b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/tee.h
index 5cfe713..404b7b2 100644
--- a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/tee.h
+++ b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/tee.h
@@ -22,8 +22,6 @@
 #include <linux/types.h>
 #define TEE_IOC_MAGIC 0xa4
 #define TEE_IOC_BASE 0
-#define TEE_IOCTL_SHM_MAPPED 0x1
-#define TEE_IOCTL_SHM_DMA_BUF 0x2
 #define TEE_MAX_ARG_SIZE 1024
 #define TEE_GEN_CAP_GP (1 << 0)
 #define TEE_GEN_CAP_PRIVILEGED (1 << 1)
diff --git a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/thermal.h b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/thermal.h
index 72ea378..2f9dccb 100644
--- a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/thermal.h
+++ b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/thermal.h
@@ -54,6 +54,10 @@
   THERMAL_GENL_ATTR_CDEV_MAX_STATE,
   THERMAL_GENL_ATTR_CDEV_NAME,
   THERMAL_GENL_ATTR_GOV_NAME,
+  THERMAL_GENL_ATTR_CPU_CAPABILITY,
+  THERMAL_GENL_ATTR_CPU_CAPABILITY_ID,
+  THERMAL_GENL_ATTR_CPU_CAPABILITY_PERFORMANCE,
+  THERMAL_GENL_ATTR_CPU_CAPABILITY_EFFICIENCY,
   __THERMAL_GENL_ATTR_MAX,
 };
 #define THERMAL_GENL_ATTR_MAX (__THERMAL_GENL_ATTR_MAX - 1)
@@ -77,6 +81,7 @@
   THERMAL_GENL_EVENT_CDEV_DELETE,
   THERMAL_GENL_EVENT_CDEV_STATE_UPDATE,
   THERMAL_GENL_EVENT_TZ_GOV_CHANGE,
+  THERMAL_GENL_EVENT_CPU_CAPABILITY_CHANGE,
   __THERMAL_GENL_EVENT_MAX,
 };
 #define THERMAL_GENL_EVENT_MAX (__THERMAL_GENL_EVENT_MAX - 1)
diff --git a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/tipc_config.h b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/tipc_config.h
index a371e37..c6ee1d1 100644
--- a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/tipc_config.h
+++ b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/tipc_config.h
@@ -22,7 +22,6 @@
 #include <linux/string.h>
 #include <linux/tipc.h>
 #include <asm/byteorder.h>
-#include <arpa/inet.h>
 #define TIPC_CMD_NOOP 0x0000
 #define TIPC_CMD_GET_NODES 0x0001
 #define TIPC_CMD_GET_MEDIA_NAMES 0x0002
diff --git a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/tls.h b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/tls.h
index c98ea0b..fcab74b 100644
--- a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/tls.h
+++ b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/tls.h
@@ -21,6 +21,8 @@
 #include <linux/types.h>
 #define TLS_TX 1
 #define TLS_RX 2
+#define TLS_TX_ZEROCOPY_RO 3
+#define TLS_RX_EXPECT_NO_PAD 4
 #define TLS_VERSION_MINOR(ver) ((ver) & 0xFF)
 #define TLS_VERSION_MAJOR(ver) (((ver) >> 8) & 0xFF)
 #define TLS_VERSION_NUMBER(id) ((((id ##_VERSION_MAJOR) & 0xFF) << 8) | ((id ##_VERSION_MINOR) & 0xFF))
@@ -66,6 +68,18 @@
 #define TLS_CIPHER_SM4_CCM_SALT_SIZE 4
 #define TLS_CIPHER_SM4_CCM_TAG_SIZE 16
 #define TLS_CIPHER_SM4_CCM_REC_SEQ_SIZE 8
+#define TLS_CIPHER_ARIA_GCM_128 57
+#define TLS_CIPHER_ARIA_GCM_128_IV_SIZE 8
+#define TLS_CIPHER_ARIA_GCM_128_KEY_SIZE 16
+#define TLS_CIPHER_ARIA_GCM_128_SALT_SIZE 4
+#define TLS_CIPHER_ARIA_GCM_128_TAG_SIZE 16
+#define TLS_CIPHER_ARIA_GCM_128_REC_SEQ_SIZE 8
+#define TLS_CIPHER_ARIA_GCM_256 58
+#define TLS_CIPHER_ARIA_GCM_256_IV_SIZE 8
+#define TLS_CIPHER_ARIA_GCM_256_KEY_SIZE 32
+#define TLS_CIPHER_ARIA_GCM_256_SALT_SIZE 4
+#define TLS_CIPHER_ARIA_GCM_256_TAG_SIZE 16
+#define TLS_CIPHER_ARIA_GCM_256_REC_SEQ_SIZE 8
 #define TLS_SET_RECORD_TYPE 1
 #define TLS_GET_RECORD_TYPE 2
 struct tls_crypto_info {
@@ -114,12 +128,28 @@
   unsigned char salt[TLS_CIPHER_SM4_CCM_SALT_SIZE];
   unsigned char rec_seq[TLS_CIPHER_SM4_CCM_REC_SEQ_SIZE];
 };
+struct tls12_crypto_info_aria_gcm_128 {
+  struct tls_crypto_info info;
+  unsigned char iv[TLS_CIPHER_ARIA_GCM_128_IV_SIZE];
+  unsigned char key[TLS_CIPHER_ARIA_GCM_128_KEY_SIZE];
+  unsigned char salt[TLS_CIPHER_ARIA_GCM_128_SALT_SIZE];
+  unsigned char rec_seq[TLS_CIPHER_ARIA_GCM_128_REC_SEQ_SIZE];
+};
+struct tls12_crypto_info_aria_gcm_256 {
+  struct tls_crypto_info info;
+  unsigned char iv[TLS_CIPHER_ARIA_GCM_256_IV_SIZE];
+  unsigned char key[TLS_CIPHER_ARIA_GCM_256_KEY_SIZE];
+  unsigned char salt[TLS_CIPHER_ARIA_GCM_256_SALT_SIZE];
+  unsigned char rec_seq[TLS_CIPHER_ARIA_GCM_256_REC_SEQ_SIZE];
+};
 enum {
   TLS_INFO_UNSPEC,
   TLS_INFO_VERSION,
   TLS_INFO_CIPHER,
   TLS_INFO_TXCONF,
   TLS_INFO_RXCONF,
+  TLS_INFO_ZC_RO_TX,
+  TLS_INFO_RX_NO_PAD,
   __TLS_INFO_MAX,
 };
 #define TLS_INFO_MAX (__TLS_INFO_MAX - 1)
diff --git a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/tty.h b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/tty.h
index dcce572..a94e6e6 100644
--- a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/tty.h
+++ b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/tty.h
@@ -18,7 +18,6 @@
  ****************************************************************************/
 #ifndef _UAPI_LINUX_TTY_H
 #define _UAPI_LINUX_TTY_H
-#define NR_LDISCS 30
 #define N_TTY 0
 #define N_SLIP 1
 #define N_MOUSE 2
@@ -48,4 +47,7 @@
 #define N_SPEAKUP 26
 #define N_NULL 27
 #define N_MCTP 28
+#define N_DEVELOPMENT 29
+#define N_CAN327 30
+#define NR_LDISCS 31
 #endif
diff --git a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/types.h b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/types.h
index 9145e66..f41d676 100644
--- a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/types.h
+++ b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/types.h
@@ -21,8 +21,8 @@
 #include <asm/types.h>
 #ifndef __ASSEMBLY__
 #include <linux/posix_types.h>
-#define __bitwise__
-#define __bitwise __bitwise__
+#define __bitwise
+#define __bitwise__ __bitwise
 typedef __u16 __bitwise __le16;
 typedef __u16 __bitwise __be16;
 typedef __u32 __bitwise __le32;
diff --git a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/ublk_cmd.h b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/ublk_cmd.h
new file mode 100644
index 0000000..8c9cbeb
--- /dev/null
+++ b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/ublk_cmd.h
@@ -0,0 +1,127 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef USER_BLK_DRV_CMD_INC_H
+#define USER_BLK_DRV_CMD_INC_H
+#include <linux/types.h>
+#define UBLK_CMD_GET_QUEUE_AFFINITY 0x01
+#define UBLK_CMD_GET_DEV_INFO 0x02
+#define UBLK_CMD_ADD_DEV 0x04
+#define UBLK_CMD_DEL_DEV 0x05
+#define UBLK_CMD_START_DEV 0x06
+#define UBLK_CMD_STOP_DEV 0x07
+#define UBLK_CMD_SET_PARAMS 0x08
+#define UBLK_CMD_GET_PARAMS 0x09
+#define UBLK_CMD_START_USER_RECOVERY 0x10
+#define UBLK_CMD_END_USER_RECOVERY 0x11
+#define UBLK_IO_FETCH_REQ 0x20
+#define UBLK_IO_COMMIT_AND_FETCH_REQ 0x21
+#define UBLK_IO_NEED_GET_DATA 0x22
+#define UBLK_IO_RES_OK 0
+#define UBLK_IO_RES_NEED_GET_DATA 1
+#define UBLK_IO_RES_ABORT (- ENODEV)
+#define UBLKSRV_CMD_BUF_OFFSET 0
+#define UBLKSRV_IO_BUF_OFFSET 0x80000000
+#define UBLK_MAX_QUEUE_DEPTH 4096
+#define UBLK_F_SUPPORT_ZERO_COPY (1ULL << 0)
+#define UBLK_F_URING_CMD_COMP_IN_TASK (1ULL << 1)
+#define UBLK_F_NEED_GET_DATA (1UL << 2)
+#define UBLK_F_USER_RECOVERY (1UL << 3)
+#define UBLK_F_USER_RECOVERY_REISSUE (1UL << 4)
+#define UBLK_S_DEV_DEAD 0
+#define UBLK_S_DEV_LIVE 1
+#define UBLK_S_DEV_QUIESCED 2
+struct ublksrv_ctrl_cmd {
+  __u32 dev_id;
+  __u16 queue_id;
+  __u16 len;
+  __u64 addr;
+  __u64 data[2];
+};
+struct ublksrv_ctrl_dev_info {
+  __u16 nr_hw_queues;
+  __u16 queue_depth;
+  __u16 state;
+  __u16 pad0;
+  __u32 max_io_buf_bytes;
+  __u32 dev_id;
+  __s32 ublksrv_pid;
+  __u32 pad1;
+  __u64 flags;
+  __u64 ublksrv_flags;
+  __u64 reserved0;
+  __u64 reserved1;
+  __u64 reserved2;
+};
+#define UBLK_IO_OP_READ 0
+#define UBLK_IO_OP_WRITE 1
+#define UBLK_IO_OP_FLUSH 2
+#define UBLK_IO_OP_DISCARD 3
+#define UBLK_IO_OP_WRITE_SAME 4
+#define UBLK_IO_OP_WRITE_ZEROES 5
+#define UBLK_IO_F_FAILFAST_DEV (1U << 8)
+#define UBLK_IO_F_FAILFAST_TRANSPORT (1U << 9)
+#define UBLK_IO_F_FAILFAST_DRIVER (1U << 10)
+#define UBLK_IO_F_META (1U << 11)
+#define UBLK_IO_F_FUA (1U << 13)
+#define UBLK_IO_F_NOUNMAP (1U << 15)
+#define UBLK_IO_F_SWAP (1U << 16)
+struct ublksrv_io_desc {
+  __u32 op_flags;
+  __u32 nr_sectors;
+  __u64 start_sector;
+  __u64 addr;
+};
+struct ublksrv_io_cmd {
+  __u16 q_id;
+  __u16 tag;
+  __s32 result;
+  __u64 addr;
+};
+struct ublk_param_basic {
+#define UBLK_ATTR_READ_ONLY (1 << 0)
+#define UBLK_ATTR_ROTATIONAL (1 << 1)
+#define UBLK_ATTR_VOLATILE_CACHE (1 << 2)
+#define UBLK_ATTR_FUA (1 << 3)
+  __u32 attrs;
+  __u8 logical_bs_shift;
+  __u8 physical_bs_shift;
+  __u8 io_opt_shift;
+  __u8 io_min_shift;
+  __u32 max_sectors;
+  __u32 chunk_sectors;
+  __u64 dev_sectors;
+  __u64 virt_boundary_mask;
+};
+struct ublk_param_discard {
+  __u32 discard_alignment;
+  __u32 discard_granularity;
+  __u32 max_discard_sectors;
+  __u32 max_write_zeroes_sectors;
+  __u16 max_discard_segments;
+  __u16 reserved0;
+};
+struct ublk_params {
+  __u32 len;
+#define UBLK_PARAM_TYPE_BASIC (1 << 0)
+#define UBLK_PARAM_TYPE_DISCARD (1 << 1)
+  __u32 types;
+  struct ublk_param_basic basic;
+  struct ublk_param_discard discard;
+};
+#endif
diff --git a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/usb/audio.h b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/usb/audio.h
index 7d36157..bfda540 100644
--- a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/usb/audio.h
+++ b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/usb/audio.h
@@ -186,7 +186,7 @@
   __u8 bUnitID;
   __u8 bSourceID;
   __u8 bControlSize;
-  __u8 bmaControls[0];
+  __u8 bmaControls[];
 } __attribute__((packed));
 struct uac_processing_unit_descriptor {
   __u8 bLength;
diff --git a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/usb/cdc.h b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/usb/cdc.h
index 59c9488..bbfc4db 100644
--- a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/usb/cdc.h
+++ b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/usb/cdc.h
@@ -131,7 +131,7 @@
   __u8 bDescriptorType;
   __u8 bDescriptorSubType;
   __u8 bGuidDescriptorType;
-  __u8 bDetailData[0];
+  __u8 bDetailData[];
 } __attribute__((packed));
 struct usb_cdc_obex_desc {
   __u8 bLength;
@@ -201,6 +201,8 @@
 #define USB_CDC_SPACE_PARITY 4
   __u8 bDataBits;
 } __attribute__((packed));
+#define USB_CDC_CTRL_DTR (1 << 0)
+#define USB_CDC_CTRL_RTS (1 << 1)
 #define USB_CDC_PACKET_TYPE_PROMISCUOUS (1 << 0)
 #define USB_CDC_PACKET_TYPE_ALL_MULTICAST (1 << 1)
 #define USB_CDC_PACKET_TYPE_DIRECTED (1 << 2)
@@ -217,6 +219,13 @@
   __le16 wIndex;
   __le16 wLength;
 } __attribute__((packed));
+#define USB_CDC_SERIAL_STATE_DCD (1 << 0)
+#define USB_CDC_SERIAL_STATE_DSR (1 << 1)
+#define USB_CDC_SERIAL_STATE_BREAK (1 << 2)
+#define USB_CDC_SERIAL_STATE_RING_SIGNAL (1 << 3)
+#define USB_CDC_SERIAL_STATE_FRAMING (1 << 4)
+#define USB_CDC_SERIAL_STATE_PARITY (1 << 5)
+#define USB_CDC_SERIAL_STATE_OVERRUN (1 << 6)
 struct usb_cdc_speed_change {
   __le32 DLBitRRate;
   __le32 ULBitRate;
@@ -267,7 +276,7 @@
   __le32 dwSignature;
   __le16 wLength;
   __le16 wNextNdpIndex;
-  struct usb_cdc_ncm_dpe16 dpe16[0];
+  struct usb_cdc_ncm_dpe16 dpe16[];
 } __attribute__((packed));
 struct usb_cdc_ncm_dpe32 {
   __le32 dwDatagramIndex;
@@ -279,7 +288,7 @@
   __le16 wReserved6;
   __le32 dwNextNdpIndex;
   __le32 dwReserved12;
-  struct usb_cdc_ncm_dpe32 dpe32[0];
+  struct usb_cdc_ncm_dpe32 dpe32[];
 } __attribute__((packed));
 #define USB_CDC_NCM_NDP16_INDEX_MIN 0x000C
 #define USB_CDC_NCM_NDP32_INDEX_MIN 0x0010
diff --git a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/usb/ch9.h b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/usb/ch9.h
index f1dade9..49eb5fa 100644
--- a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/usb/ch9.h
+++ b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/usb/ch9.h
@@ -324,7 +324,7 @@
   __u8 bDescriptorType;
   __u8 tTKID[3];
   __u8 bReserved;
-  __u8 bKeyData[0];
+  __u8 bKeyData[];
 } __attribute__((packed));
 struct usb_encryption_descriptor {
   __u8 bLength;
diff --git a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/usb/raw_gadget.h b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/usb/raw_gadget.h
index 70d5a26..8b60c8d 100644
--- a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/usb/raw_gadget.h
+++ b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/usb/raw_gadget.h
@@ -35,7 +35,7 @@
 struct usb_raw_event {
   __u32 type;
   __u32 length;
-  __u8 data[0];
+  __u8 data[];
 };
 #define USB_RAW_IO_FLAGS_ZERO 0x0001
 #define USB_RAW_IO_FLAGS_MASK 0x0001
@@ -43,7 +43,7 @@
   __u16 ep;
   __u16 flags;
   __u32 length;
-  __u8 data[0];
+  __u8 data[];
 };
 #define USB_RAW_EPS_NUM_MAX 30
 #define USB_RAW_EP_NAME_MAX 16
diff --git a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/usbdevice_fs.h b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/usbdevice_fs.h
index 7936ad9..5fef522 100644
--- a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/usbdevice_fs.h
+++ b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/usbdevice_fs.h
@@ -91,7 +91,7 @@
   int error_count;
   unsigned int signr;
   void __user * usercontext;
-  struct usbdevfs_iso_packet_desc iso_frame_desc[0];
+  struct usbdevfs_iso_packet_desc iso_frame_desc[];
 };
 struct usbdevfs_ioctl {
   int ifno;
@@ -121,7 +121,7 @@
 struct usbdevfs_streams {
   unsigned int num_streams;
   unsigned int num_eps;
-  unsigned char eps[0];
+  unsigned char eps[];
 };
 #define USBDEVFS_CONTROL _IOWR('U', 0, struct usbdevfs_ctrltransfer)
 #define USBDEVFS_CONTROL32 _IOWR('U', 0, struct usbdevfs_ctrltransfer32)
diff --git a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/usbip.h b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/usbip.h
index ae18347..b0c1067 100644
--- a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/usbip.h
+++ b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/usbip.h
@@ -27,4 +27,21 @@
   VDEV_ST_USED,
   VDEV_ST_ERROR
 };
+#define USBIP_URB_SHORT_NOT_OK 0x0001
+#define USBIP_URB_ISO_ASAP 0x0002
+#define USBIP_URB_NO_TRANSFER_DMA_MAP 0x0004
+#define USBIP_URB_ZERO_PACKET 0x0040
+#define USBIP_URB_NO_INTERRUPT 0x0080
+#define USBIP_URB_FREE_BUFFER 0x0100
+#define USBIP_URB_DIR_IN 0x0200
+#define USBIP_URB_DIR_OUT 0
+#define USBIP_URB_DIR_MASK USBIP_URB_DIR_IN
+#define USBIP_URB_DMA_MAP_SINGLE 0x00010000
+#define USBIP_URB_DMA_MAP_PAGE 0x00020000
+#define USBIP_URB_DMA_MAP_SG 0x00040000
+#define USBIP_URB_MAP_LOCAL 0x00080000
+#define USBIP_URB_SETUP_MAP_SINGLE 0x00100000
+#define USBIP_URB_SETUP_MAP_LOCAL 0x00200000
+#define USBIP_URB_DMA_SG_COMBINED 0x00400000
+#define USBIP_URB_ALIGNED_TEMP_BUFFER 0x00800000
 #endif
diff --git a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/userfaultfd.h b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/userfaultfd.h
index ca7b7a5..09e0d80 100644
--- a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/userfaultfd.h
+++ b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/userfaultfd.h
@@ -19,12 +19,14 @@
 #ifndef _LINUX_USERFAULTFD_H
 #define _LINUX_USERFAULTFD_H
 #include <linux/types.h>
+#define USERFAULTFD_IOC 0xAA
+#define USERFAULTFD_IOC_NEW _IO(USERFAULTFD_IOC, 0x00)
 #define UFFD_API ((__u64) 0xAA)
 #define UFFD_API_REGISTER_MODES (UFFDIO_REGISTER_MODE_MISSING | UFFDIO_REGISTER_MODE_WP | UFFDIO_REGISTER_MODE_MINOR)
-#define UFFD_API_FEATURES (UFFD_FEATURE_PAGEFAULT_FLAG_WP | UFFD_FEATURE_EVENT_FORK | UFFD_FEATURE_EVENT_REMAP | UFFD_FEATURE_EVENT_REMOVE | UFFD_FEATURE_EVENT_UNMAP | UFFD_FEATURE_MISSING_HUGETLBFS | UFFD_FEATURE_MISSING_SHMEM | UFFD_FEATURE_SIGBUS | UFFD_FEATURE_THREAD_ID | UFFD_FEATURE_MINOR_HUGETLBFS | UFFD_FEATURE_MINOR_SHMEM)
+#define UFFD_API_FEATURES (UFFD_FEATURE_PAGEFAULT_FLAG_WP | UFFD_FEATURE_EVENT_FORK | UFFD_FEATURE_EVENT_REMAP | UFFD_FEATURE_EVENT_REMOVE | UFFD_FEATURE_EVENT_UNMAP | UFFD_FEATURE_MISSING_HUGETLBFS | UFFD_FEATURE_MISSING_SHMEM | UFFD_FEATURE_SIGBUS | UFFD_FEATURE_THREAD_ID | UFFD_FEATURE_MINOR_HUGETLBFS | UFFD_FEATURE_MINOR_SHMEM | UFFD_FEATURE_EXACT_ADDRESS | UFFD_FEATURE_WP_HUGETLBFS_SHMEM)
 #define UFFD_API_IOCTLS ((__u64) 1 << _UFFDIO_REGISTER | (__u64) 1 << _UFFDIO_UNREGISTER | (__u64) 1 << _UFFDIO_API)
 #define UFFD_API_RANGE_IOCTLS ((__u64) 1 << _UFFDIO_WAKE | (__u64) 1 << _UFFDIO_COPY | (__u64) 1 << _UFFDIO_ZEROPAGE | (__u64) 1 << _UFFDIO_WRITEPROTECT | (__u64) 1 << _UFFDIO_CONTINUE)
-#define UFFD_API_RANGE_IOCTLS_BASIC ((__u64) 1 << _UFFDIO_WAKE | (__u64) 1 << _UFFDIO_COPY | (__u64) 1 << _UFFDIO_CONTINUE)
+#define UFFD_API_RANGE_IOCTLS_BASIC ((__u64) 1 << _UFFDIO_WAKE | (__u64) 1 << _UFFDIO_COPY | (__u64) 1 << _UFFDIO_CONTINUE | (__u64) 1 << _UFFDIO_WRITEPROTECT)
 #define _UFFDIO_REGISTER (0x00)
 #define _UFFDIO_UNREGISTER (0x01)
 #define _UFFDIO_WAKE (0x02)
@@ -73,7 +75,7 @@
       __u64 reserved3;
     } reserved;
   } arg;
-} __packed;
+} __attribute__((__packed__));
 #define UFFD_EVENT_PAGEFAULT 0x12
 #define UFFD_EVENT_FORK 0x13
 #define UFFD_EVENT_REMAP 0x14
@@ -95,6 +97,8 @@
 #define UFFD_FEATURE_THREAD_ID (1 << 8)
 #define UFFD_FEATURE_MINOR_HUGETLBFS (1 << 9)
 #define UFFD_FEATURE_MINOR_SHMEM (1 << 10)
+#define UFFD_FEATURE_EXACT_ADDRESS (1 << 11)
+#define UFFD_FEATURE_WP_HUGETLBFS_SHMEM (1 << 12)
   __u64 features;
   __u64 ioctls;
 };
diff --git a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/uvcvideo.h b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/uvcvideo.h
index 719147a..46528a9 100644
--- a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/uvcvideo.h
+++ b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/uvcvideo.h
@@ -68,5 +68,5 @@
   __u8 length;
   __u8 flags;
   __u8 buf[];
-} __packed;
+} __attribute__((__packed__));
 #endif
diff --git a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/v4l2-controls.h b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/v4l2-controls.h
index 1a11355..276ecaa 100644
--- a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/v4l2-controls.h
+++ b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/v4l2-controls.h
@@ -119,6 +119,8 @@
 #define V4L2_CID_USER_CODA_BASE (V4L2_CID_USER_BASE + 0x10e0)
 #define V4L2_CID_USER_CCS_BASE (V4L2_CID_USER_BASE + 0x10f0)
 #define V4L2_CID_USER_ALLEGRO_BASE (V4L2_CID_USER_BASE + 0x1170)
+#define V4L2_CID_USER_ISL7998X_BASE (V4L2_CID_USER_BASE + 0x1180)
+#define V4L2_CID_USER_DW100_BASE (V4L2_CID_USER_BASE + 0x1190)
 #define V4L2_CID_CODEC_BASE (V4L2_CTRL_CLASS_CODEC | 0x900)
 #define V4L2_CID_CODEC_CLASS (V4L2_CTRL_CLASS_CODEC | 1)
 #define V4L2_CID_MPEG_STREAM_TYPE (V4L2_CID_CODEC_BASE + 0)
@@ -329,6 +331,11 @@
 #define V4L2_CID_MPEG_VIDEO_USE_LTR_FRAMES (V4L2_CID_CODEC_BASE + 234)
 #define V4L2_CID_MPEG_VIDEO_DEC_CONCEAL_COLOR (V4L2_CID_CODEC_BASE + 235)
 #define V4L2_CID_MPEG_VIDEO_INTRA_REFRESH_PERIOD (V4L2_CID_CODEC_BASE + 236)
+#define V4L2_CID_MPEG_VIDEO_INTRA_REFRESH_PERIOD_TYPE (V4L2_CID_CODEC_BASE + 237)
+enum v4l2_mpeg_video_intra_refresh_period_type {
+  V4L2_CID_MPEG_VIDEO_INTRA_REFRESH_PERIOD_TYPE_RANDOM = 0,
+  V4L2_CID_MPEG_VIDEO_INTRA_REFRESH_PERIOD_TYPE_CYCLIC = 1,
+};
 #define V4L2_CID_MPEG_VIDEO_MPEG2_LEVEL (V4L2_CID_CODEC_BASE + 270)
 enum v4l2_mpeg_video_mpeg2_level {
   V4L2_MPEG_VIDEO_MPEG2_LEVEL_LOW = 0,
@@ -1153,6 +1160,8 @@
 #define V4L2_H264_DECODE_PARAM_FLAG_IDR_PIC 0x01
 #define V4L2_H264_DECODE_PARAM_FLAG_FIELD_PIC 0x02
 #define V4L2_H264_DECODE_PARAM_FLAG_BOTTOM_FIELD 0x04
+#define V4L2_H264_DECODE_PARAM_FLAG_PFRAME 0x08
+#define V4L2_H264_DECODE_PARAM_FLAG_BFRAME 0x10
 #define V4L2_CID_STATELESS_H264_DECODE_PARAMS (V4L2_CID_CODEC_STATELESS_BASE + 7)
 struct v4l2_ctrl_h264_decode_params {
   struct v4l2_h264_dpb_entry dpb[V4L2_H264_NUM_DPB_ENTRIES];
@@ -1323,6 +1332,204 @@
   __u8 chroma_intra_quantiser_matrix[64];
   __u8 chroma_non_intra_quantiser_matrix[64];
 };
+#define V4L2_CID_STATELESS_HEVC_SPS (V4L2_CID_CODEC_STATELESS_BASE + 400)
+#define V4L2_CID_STATELESS_HEVC_PPS (V4L2_CID_CODEC_STATELESS_BASE + 401)
+#define V4L2_CID_STATELESS_HEVC_SLICE_PARAMS (V4L2_CID_CODEC_STATELESS_BASE + 402)
+#define V4L2_CID_STATELESS_HEVC_SCALING_MATRIX (V4L2_CID_CODEC_STATELESS_BASE + 403)
+#define V4L2_CID_STATELESS_HEVC_DECODE_PARAMS (V4L2_CID_CODEC_STATELESS_BASE + 404)
+#define V4L2_CID_STATELESS_HEVC_DECODE_MODE (V4L2_CID_CODEC_STATELESS_BASE + 405)
+#define V4L2_CID_STATELESS_HEVC_START_CODE (V4L2_CID_CODEC_STATELESS_BASE + 406)
+#define V4L2_CID_STATELESS_HEVC_ENTRY_POINT_OFFSETS (V4L2_CID_CODEC_STATELESS_BASE + 407)
+enum v4l2_stateless_hevc_decode_mode {
+  V4L2_STATELESS_HEVC_DECODE_MODE_SLICE_BASED,
+  V4L2_STATELESS_HEVC_DECODE_MODE_FRAME_BASED,
+};
+enum v4l2_stateless_hevc_start_code {
+  V4L2_STATELESS_HEVC_START_CODE_NONE,
+  V4L2_STATELESS_HEVC_START_CODE_ANNEX_B,
+};
+#define V4L2_HEVC_SLICE_TYPE_B 0
+#define V4L2_HEVC_SLICE_TYPE_P 1
+#define V4L2_HEVC_SLICE_TYPE_I 2
+#define V4L2_HEVC_SPS_FLAG_SEPARATE_COLOUR_PLANE (1ULL << 0)
+#define V4L2_HEVC_SPS_FLAG_SCALING_LIST_ENABLED (1ULL << 1)
+#define V4L2_HEVC_SPS_FLAG_AMP_ENABLED (1ULL << 2)
+#define V4L2_HEVC_SPS_FLAG_SAMPLE_ADAPTIVE_OFFSET (1ULL << 3)
+#define V4L2_HEVC_SPS_FLAG_PCM_ENABLED (1ULL << 4)
+#define V4L2_HEVC_SPS_FLAG_PCM_LOOP_FILTER_DISABLED (1ULL << 5)
+#define V4L2_HEVC_SPS_FLAG_LONG_TERM_REF_PICS_PRESENT (1ULL << 6)
+#define V4L2_HEVC_SPS_FLAG_SPS_TEMPORAL_MVP_ENABLED (1ULL << 7)
+#define V4L2_HEVC_SPS_FLAG_STRONG_INTRA_SMOOTHING_ENABLED (1ULL << 8)
+struct v4l2_ctrl_hevc_sps {
+  __u8 video_parameter_set_id;
+  __u8 seq_parameter_set_id;
+  __u16 pic_width_in_luma_samples;
+  __u16 pic_height_in_luma_samples;
+  __u8 bit_depth_luma_minus8;
+  __u8 bit_depth_chroma_minus8;
+  __u8 log2_max_pic_order_cnt_lsb_minus4;
+  __u8 sps_max_dec_pic_buffering_minus1;
+  __u8 sps_max_num_reorder_pics;
+  __u8 sps_max_latency_increase_plus1;
+  __u8 log2_min_luma_coding_block_size_minus3;
+  __u8 log2_diff_max_min_luma_coding_block_size;
+  __u8 log2_min_luma_transform_block_size_minus2;
+  __u8 log2_diff_max_min_luma_transform_block_size;
+  __u8 max_transform_hierarchy_depth_inter;
+  __u8 max_transform_hierarchy_depth_intra;
+  __u8 pcm_sample_bit_depth_luma_minus1;
+  __u8 pcm_sample_bit_depth_chroma_minus1;
+  __u8 log2_min_pcm_luma_coding_block_size_minus3;
+  __u8 log2_diff_max_min_pcm_luma_coding_block_size;
+  __u8 num_short_term_ref_pic_sets;
+  __u8 num_long_term_ref_pics_sps;
+  __u8 chroma_format_idc;
+  __u8 sps_max_sub_layers_minus1;
+  __u8 reserved[6];
+  __u64 flags;
+};
+#define V4L2_HEVC_PPS_FLAG_DEPENDENT_SLICE_SEGMENT_ENABLED (1ULL << 0)
+#define V4L2_HEVC_PPS_FLAG_OUTPUT_FLAG_PRESENT (1ULL << 1)
+#define V4L2_HEVC_PPS_FLAG_SIGN_DATA_HIDING_ENABLED (1ULL << 2)
+#define V4L2_HEVC_PPS_FLAG_CABAC_INIT_PRESENT (1ULL << 3)
+#define V4L2_HEVC_PPS_FLAG_CONSTRAINED_INTRA_PRED (1ULL << 4)
+#define V4L2_HEVC_PPS_FLAG_TRANSFORM_SKIP_ENABLED (1ULL << 5)
+#define V4L2_HEVC_PPS_FLAG_CU_QP_DELTA_ENABLED (1ULL << 6)
+#define V4L2_HEVC_PPS_FLAG_PPS_SLICE_CHROMA_QP_OFFSETS_PRESENT (1ULL << 7)
+#define V4L2_HEVC_PPS_FLAG_WEIGHTED_PRED (1ULL << 8)
+#define V4L2_HEVC_PPS_FLAG_WEIGHTED_BIPRED (1ULL << 9)
+#define V4L2_HEVC_PPS_FLAG_TRANSQUANT_BYPASS_ENABLED (1ULL << 10)
+#define V4L2_HEVC_PPS_FLAG_TILES_ENABLED (1ULL << 11)
+#define V4L2_HEVC_PPS_FLAG_ENTROPY_CODING_SYNC_ENABLED (1ULL << 12)
+#define V4L2_HEVC_PPS_FLAG_LOOP_FILTER_ACROSS_TILES_ENABLED (1ULL << 13)
+#define V4L2_HEVC_PPS_FLAG_PPS_LOOP_FILTER_ACROSS_SLICES_ENABLED (1ULL << 14)
+#define V4L2_HEVC_PPS_FLAG_DEBLOCKING_FILTER_OVERRIDE_ENABLED (1ULL << 15)
+#define V4L2_HEVC_PPS_FLAG_PPS_DISABLE_DEBLOCKING_FILTER (1ULL << 16)
+#define V4L2_HEVC_PPS_FLAG_LISTS_MODIFICATION_PRESENT (1ULL << 17)
+#define V4L2_HEVC_PPS_FLAG_SLICE_SEGMENT_HEADER_EXTENSION_PRESENT (1ULL << 18)
+#define V4L2_HEVC_PPS_FLAG_DEBLOCKING_FILTER_CONTROL_PRESENT (1ULL << 19)
+#define V4L2_HEVC_PPS_FLAG_UNIFORM_SPACING (1ULL << 20)
+struct v4l2_ctrl_hevc_pps {
+  __u8 pic_parameter_set_id;
+  __u8 num_extra_slice_header_bits;
+  __u8 num_ref_idx_l0_default_active_minus1;
+  __u8 num_ref_idx_l1_default_active_minus1;
+  __s8 init_qp_minus26;
+  __u8 diff_cu_qp_delta_depth;
+  __s8 pps_cb_qp_offset;
+  __s8 pps_cr_qp_offset;
+  __u8 num_tile_columns_minus1;
+  __u8 num_tile_rows_minus1;
+  __u8 column_width_minus1[20];
+  __u8 row_height_minus1[22];
+  __s8 pps_beta_offset_div2;
+  __s8 pps_tc_offset_div2;
+  __u8 log2_parallel_merge_level_minus2;
+  __u8 reserved;
+  __u64 flags;
+};
+#define V4L2_HEVC_DPB_ENTRY_LONG_TERM_REFERENCE 0x01
+#define V4L2_HEVC_SEI_PIC_STRUCT_FRAME 0
+#define V4L2_HEVC_SEI_PIC_STRUCT_TOP_FIELD 1
+#define V4L2_HEVC_SEI_PIC_STRUCT_BOTTOM_FIELD 2
+#define V4L2_HEVC_SEI_PIC_STRUCT_TOP_BOTTOM 3
+#define V4L2_HEVC_SEI_PIC_STRUCT_BOTTOM_TOP 4
+#define V4L2_HEVC_SEI_PIC_STRUCT_TOP_BOTTOM_TOP 5
+#define V4L2_HEVC_SEI_PIC_STRUCT_BOTTOM_TOP_BOTTOM 6
+#define V4L2_HEVC_SEI_PIC_STRUCT_FRAME_DOUBLING 7
+#define V4L2_HEVC_SEI_PIC_STRUCT_FRAME_TRIPLING 8
+#define V4L2_HEVC_SEI_PIC_STRUCT_TOP_PAIRED_PREVIOUS_BOTTOM 9
+#define V4L2_HEVC_SEI_PIC_STRUCT_BOTTOM_PAIRED_PREVIOUS_TOP 10
+#define V4L2_HEVC_SEI_PIC_STRUCT_TOP_PAIRED_NEXT_BOTTOM 11
+#define V4L2_HEVC_SEI_PIC_STRUCT_BOTTOM_PAIRED_NEXT_TOP 12
+#define V4L2_HEVC_DPB_ENTRIES_NUM_MAX 16
+struct v4l2_hevc_dpb_entry {
+  __u64 timestamp;
+  __u8 flags;
+  __u8 field_pic;
+  __u16 reserved;
+  __s32 pic_order_cnt_val;
+};
+struct v4l2_hevc_pred_weight_table {
+  __s8 delta_luma_weight_l0[V4L2_HEVC_DPB_ENTRIES_NUM_MAX];
+  __s8 luma_offset_l0[V4L2_HEVC_DPB_ENTRIES_NUM_MAX];
+  __s8 delta_chroma_weight_l0[V4L2_HEVC_DPB_ENTRIES_NUM_MAX][2];
+  __s8 chroma_offset_l0[V4L2_HEVC_DPB_ENTRIES_NUM_MAX][2];
+  __s8 delta_luma_weight_l1[V4L2_HEVC_DPB_ENTRIES_NUM_MAX];
+  __s8 luma_offset_l1[V4L2_HEVC_DPB_ENTRIES_NUM_MAX];
+  __s8 delta_chroma_weight_l1[V4L2_HEVC_DPB_ENTRIES_NUM_MAX][2];
+  __s8 chroma_offset_l1[V4L2_HEVC_DPB_ENTRIES_NUM_MAX][2];
+  __u8 luma_log2_weight_denom;
+  __s8 delta_chroma_log2_weight_denom;
+};
+#define V4L2_HEVC_SLICE_PARAMS_FLAG_SLICE_SAO_LUMA (1ULL << 0)
+#define V4L2_HEVC_SLICE_PARAMS_FLAG_SLICE_SAO_CHROMA (1ULL << 1)
+#define V4L2_HEVC_SLICE_PARAMS_FLAG_SLICE_TEMPORAL_MVP_ENABLED (1ULL << 2)
+#define V4L2_HEVC_SLICE_PARAMS_FLAG_MVD_L1_ZERO (1ULL << 3)
+#define V4L2_HEVC_SLICE_PARAMS_FLAG_CABAC_INIT (1ULL << 4)
+#define V4L2_HEVC_SLICE_PARAMS_FLAG_COLLOCATED_FROM_L0 (1ULL << 5)
+#define V4L2_HEVC_SLICE_PARAMS_FLAG_USE_INTEGER_MV (1ULL << 6)
+#define V4L2_HEVC_SLICE_PARAMS_FLAG_SLICE_DEBLOCKING_FILTER_DISABLED (1ULL << 7)
+#define V4L2_HEVC_SLICE_PARAMS_FLAG_SLICE_LOOP_FILTER_ACROSS_SLICES_ENABLED (1ULL << 8)
+#define V4L2_HEVC_SLICE_PARAMS_FLAG_DEPENDENT_SLICE_SEGMENT (1ULL << 9)
+struct v4l2_ctrl_hevc_slice_params {
+  __u32 bit_size;
+  __u32 data_byte_offset;
+  __u32 num_entry_point_offsets;
+  __u8 nal_unit_type;
+  __u8 nuh_temporal_id_plus1;
+  __u8 slice_type;
+  __u8 colour_plane_id;
+  __s32 slice_pic_order_cnt;
+  __u8 num_ref_idx_l0_active_minus1;
+  __u8 num_ref_idx_l1_active_minus1;
+  __u8 collocated_ref_idx;
+  __u8 five_minus_max_num_merge_cand;
+  __s8 slice_qp_delta;
+  __s8 slice_cb_qp_offset;
+  __s8 slice_cr_qp_offset;
+  __s8 slice_act_y_qp_offset;
+  __s8 slice_act_cb_qp_offset;
+  __s8 slice_act_cr_qp_offset;
+  __s8 slice_beta_offset_div2;
+  __s8 slice_tc_offset_div2;
+  __u8 pic_struct;
+  __u8 reserved0[3];
+  __u32 slice_segment_addr;
+  __u8 ref_idx_l0[V4L2_HEVC_DPB_ENTRIES_NUM_MAX];
+  __u8 ref_idx_l1[V4L2_HEVC_DPB_ENTRIES_NUM_MAX];
+  __u16 short_term_ref_pic_set_size;
+  __u16 long_term_ref_pic_set_size;
+  struct v4l2_hevc_pred_weight_table pred_weight_table;
+  __u8 reserved1[2];
+  __u64 flags;
+};
+#define V4L2_HEVC_DECODE_PARAM_FLAG_IRAP_PIC 0x1
+#define V4L2_HEVC_DECODE_PARAM_FLAG_IDR_PIC 0x2
+#define V4L2_HEVC_DECODE_PARAM_FLAG_NO_OUTPUT_OF_PRIOR 0x4
+struct v4l2_ctrl_hevc_decode_params {
+  __s32 pic_order_cnt_val;
+  __u16 short_term_ref_pic_set_size;
+  __u16 long_term_ref_pic_set_size;
+  __u8 num_active_dpb_entries;
+  __u8 num_poc_st_curr_before;
+  __u8 num_poc_st_curr_after;
+  __u8 num_poc_lt_curr;
+  __u8 poc_st_curr_before[V4L2_HEVC_DPB_ENTRIES_NUM_MAX];
+  __u8 poc_st_curr_after[V4L2_HEVC_DPB_ENTRIES_NUM_MAX];
+  __u8 poc_lt_curr[V4L2_HEVC_DPB_ENTRIES_NUM_MAX];
+  __u8 reserved[4];
+  struct v4l2_hevc_dpb_entry dpb[V4L2_HEVC_DPB_ENTRIES_NUM_MAX];
+  __u64 flags;
+};
+struct v4l2_ctrl_hevc_scaling_matrix {
+  __u8 scaling_list_4x4[6][16];
+  __u8 scaling_list_8x8[6][64];
+  __u8 scaling_list_16x16[6][64];
+  __u8 scaling_list_32x32[2][64];
+  __u8 scaling_list_dc_coef_16x16[6];
+  __u8 scaling_list_dc_coef_32x32[2];
+};
 #define V4L2_CID_COLORIMETRY_CLASS_BASE (V4L2_CTRL_CLASS_COLORIMETRY | 0x900)
 #define V4L2_CID_COLORIMETRY_CLASS (V4L2_CTRL_CLASS_COLORIMETRY | 1)
 #define V4L2_CID_COLORIMETRY_HDR10_CLL_INFO (V4L2_CID_COLORIMETRY_CLASS_BASE + 0)
diff --git a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/vbox_vmmdev_types.h b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/vbox_vmmdev_types.h
index 009f9a6..777a2bb 100644
--- a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/vbox_vmmdev_types.h
+++ b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/vbox_vmmdev_types.h
@@ -157,7 +157,7 @@
       __u32 offset;
     } page_list;
   } u;
-} __packed;
+} __attribute__((__packed__));
 struct vmmdev_hgcm_function_parameter64 {
   enum vmmdev_hgcm_function_parameter_type type;
   union {
@@ -169,13 +169,13 @@
         __u64 phys_addr;
         __u64 linear_addr;
       } u;
-    } __packed pointer;
+    } __attribute__((__packed__)) pointer;
     struct {
       __u32 size;
       __u32 offset;
     } page_list;
-  } __packed u;
-} __packed;
+  } __attribute__((__packed__)) u;
+} __attribute__((__packed__));
 #if __BITS_PER_LONG == 64
 #define vmmdev_hgcm_function_parameter vmmdev_hgcm_function_parameter64
 #else
diff --git a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/vdpa.h b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/vdpa.h
index b3e5d39..ed61cdd 100644
--- a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/vdpa.h
+++ b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/vdpa.h
@@ -28,6 +28,7 @@
   VDPA_CMD_DEV_DEL,
   VDPA_CMD_DEV_GET,
   VDPA_CMD_DEV_CONFIG_GET,
+  VDPA_CMD_DEV_VSTATS_GET,
 };
 enum vdpa_attr {
   VDPA_ATTR_UNSPEC,
@@ -48,6 +49,11 @@
   VDPA_ATTR_DEV_NEGOTIATED_FEATURES,
   VDPA_ATTR_DEV_MGMTDEV_MAX_VQS,
   VDPA_ATTR_DEV_SUPPORTED_FEATURES,
+  VDPA_ATTR_DEV_QUEUE_INDEX,
+  VDPA_ATTR_DEV_VENDOR_ATTR_NAME,
+  VDPA_ATTR_DEV_VENDOR_ATTR_VALUE,
+  VDPA_ATTR_DEV_FEATURES,
+  VDPA_ATTR_VDPA_DEV_SUPPORTED_FEATURES,
   VDPA_ATTR_MAX,
 };
 #endif
diff --git a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/vduse.h b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/vduse.h
index 2dc8c82..f0b6d6b 100644
--- a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/vduse.h
+++ b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/vduse.h
@@ -90,6 +90,22 @@
 };
 #define VDUSE_VQ_SETUP_KICKFD _IOW(VDUSE_BASE, 0x16, struct vduse_vq_eventfd)
 #define VDUSE_VQ_INJECT_IRQ _IOW(VDUSE_BASE, 0x17, __u32)
+struct vduse_iova_umem {
+  __u64 uaddr;
+  __u64 iova;
+  __u64 size;
+  __u64 reserved[3];
+};
+#define VDUSE_IOTLB_REG_UMEM _IOW(VDUSE_BASE, 0x18, struct vduse_iova_umem)
+#define VDUSE_IOTLB_DEREG_UMEM _IOW(VDUSE_BASE, 0x19, struct vduse_iova_umem)
+struct vduse_iova_info {
+  __u64 start;
+  __u64 last;
+#define VDUSE_IOVA_CAP_UMEM (1 << 0)
+  __u64 capability;
+  __u64 reserved[3];
+};
+#define VDUSE_IOTLB_GET_INFO _IOWR(VDUSE_BASE, 0x1a, struct vduse_iova_info)
 enum vduse_req_type {
   VDUSE_GET_VQ_STATE,
   VDUSE_SET_STATUS,
diff --git a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/version.h b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/version.h
index 2dfd696..ab95caf 100644
--- a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/version.h
+++ b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/version.h
@@ -16,8 +16,8 @@
  ***
  ****************************************************************************
  ****************************************************************************/
-#define LINUX_VERSION_CODE 332032
+#define LINUX_VERSION_CODE 393472
 #define KERNEL_VERSION(a,b,c) (((a) << 16) + ((b) << 8) + ((c) > 255 ? 255 : (c)))
-#define LINUX_VERSION_MAJOR 5
-#define LINUX_VERSION_PATCHLEVEL 17
+#define LINUX_VERSION_MAJOR 6
+#define LINUX_VERSION_PATCHLEVEL 1
 #define LINUX_VERSION_SUBLEVEL 0
diff --git a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/vfio.h b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/vfio.h
index e0f322b..dffa136 100644
--- a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/vfio.h
+++ b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/vfio.h
@@ -110,7 +110,7 @@
 #define VFIO_REGION_TYPE_PCI_VENDOR_MASK (0xffff)
 #define VFIO_REGION_TYPE_GFX (1)
 #define VFIO_REGION_TYPE_CCW (2)
-#define VFIO_REGION_TYPE_MIGRATION (3)
+#define VFIO_REGION_TYPE_MIGRATION_DEPRECATED (3)
 #define VFIO_REGION_SUBTYPE_INTEL_IGD_OPREGION (1)
 #define VFIO_REGION_SUBTYPE_INTEL_IGD_HOST_CFG (2)
 #define VFIO_REGION_SUBTYPE_INTEL_IGD_LPC_CFG (3)
@@ -130,17 +130,17 @@
 #define VFIO_REGION_SUBTYPE_CCW_ASYNC_CMD (1)
 #define VFIO_REGION_SUBTYPE_CCW_SCHIB (2)
 #define VFIO_REGION_SUBTYPE_CCW_CRW (3)
-#define VFIO_REGION_SUBTYPE_MIGRATION (1)
+#define VFIO_REGION_SUBTYPE_MIGRATION_DEPRECATED (1)
 struct vfio_device_migration_info {
   __u32 device_state;
-#define VFIO_DEVICE_STATE_STOP (0)
-#define VFIO_DEVICE_STATE_RUNNING (1 << 0)
-#define VFIO_DEVICE_STATE_SAVING (1 << 1)
-#define VFIO_DEVICE_STATE_RESUMING (1 << 2)
-#define VFIO_DEVICE_STATE_MASK (VFIO_DEVICE_STATE_RUNNING | VFIO_DEVICE_STATE_SAVING | VFIO_DEVICE_STATE_RESUMING)
-#define VFIO_DEVICE_STATE_VALID(state) (state & VFIO_DEVICE_STATE_RESUMING ? (state & VFIO_DEVICE_STATE_MASK) == VFIO_DEVICE_STATE_RESUMING : 1)
-#define VFIO_DEVICE_STATE_IS_ERROR(state) ((state & VFIO_DEVICE_STATE_MASK) == (VFIO_DEVICE_STATE_SAVING | VFIO_DEVICE_STATE_RESUMING))
-#define VFIO_DEVICE_STATE_SET_ERROR(state) ((state & ~VFIO_DEVICE_STATE_MASK) | VFIO_DEVICE_SATE_SAVING | VFIO_DEVICE_STATE_RESUMING)
+#define VFIO_DEVICE_STATE_V1_STOP (0)
+#define VFIO_DEVICE_STATE_V1_RUNNING (1 << 0)
+#define VFIO_DEVICE_STATE_V1_SAVING (1 << 1)
+#define VFIO_DEVICE_STATE_V1_RESUMING (1 << 2)
+#define VFIO_DEVICE_STATE_MASK (VFIO_DEVICE_STATE_V1_RUNNING | VFIO_DEVICE_STATE_V1_SAVING | VFIO_DEVICE_STATE_V1_RESUMING)
+#define VFIO_DEVICE_STATE_VALID(state) (state & VFIO_DEVICE_STATE_V1_RESUMING ? (state & VFIO_DEVICE_STATE_MASK) == VFIO_DEVICE_STATE_V1_RESUMING : 1)
+#define VFIO_DEVICE_STATE_IS_ERROR(state) ((state & VFIO_DEVICE_STATE_MASK) == (VFIO_DEVICE_STATE_V1_SAVING | VFIO_DEVICE_STATE_V1_RESUMING))
+#define VFIO_DEVICE_STATE_SET_ERROR(state) ((state & ~VFIO_DEVICE_STATE_MASK) | VFIO_DEVICE_STATE_V1_SAVING | VFIO_DEVICE_STATE_V1_RESUMING)
   __u32 reserved;
   __u64 pending_bytes;
   __u64 data_offset;
@@ -285,6 +285,51 @@
 };
 #define VFIO_DEVICE_FEATURE _IO(VFIO_TYPE, VFIO_BASE + 17)
 #define VFIO_DEVICE_FEATURE_PCI_VF_TOKEN (0)
+struct vfio_device_feature_migration {
+  __aligned_u64 flags;
+#define VFIO_MIGRATION_STOP_COPY (1 << 0)
+#define VFIO_MIGRATION_P2P (1 << 1)
+};
+#define VFIO_DEVICE_FEATURE_MIGRATION 1
+struct vfio_device_feature_mig_state {
+  __u32 device_state;
+  __s32 data_fd;
+};
+#define VFIO_DEVICE_FEATURE_MIG_DEVICE_STATE 2
+enum vfio_device_mig_state {
+  VFIO_DEVICE_STATE_ERROR = 0,
+  VFIO_DEVICE_STATE_STOP = 1,
+  VFIO_DEVICE_STATE_RUNNING = 2,
+  VFIO_DEVICE_STATE_STOP_COPY = 3,
+  VFIO_DEVICE_STATE_RESUMING = 4,
+  VFIO_DEVICE_STATE_RUNNING_P2P = 5,
+};
+#define VFIO_DEVICE_FEATURE_LOW_POWER_ENTRY 3
+struct vfio_device_low_power_entry_with_wakeup {
+  __s32 wakeup_eventfd;
+  __u32 reserved;
+};
+#define VFIO_DEVICE_FEATURE_LOW_POWER_ENTRY_WITH_WAKEUP 4
+#define VFIO_DEVICE_FEATURE_LOW_POWER_EXIT 5
+struct vfio_device_feature_dma_logging_control {
+  __aligned_u64 page_size;
+  __u32 num_ranges;
+  __u32 __reserved;
+  __aligned_u64 ranges;
+};
+struct vfio_device_feature_dma_logging_range {
+  __aligned_u64 iova;
+  __aligned_u64 length;
+};
+#define VFIO_DEVICE_FEATURE_DMA_LOGGING_START 6
+#define VFIO_DEVICE_FEATURE_DMA_LOGGING_STOP 7
+struct vfio_device_feature_dma_logging_report {
+  __aligned_u64 iova;
+  __aligned_u64 length;
+  __aligned_u64 page_size;
+  __aligned_u64 bitmap;
+};
+#define VFIO_DEVICE_FEATURE_DMA_LOGGING_REPORT 8
 struct vfio_iommu_type1_info {
   __u32 argsz;
   __u32 flags;
diff --git a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/vfio_ccw.h b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/vfio_ccw.h
index a6defc5..7bf08f5 100644
--- a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/vfio_ccw.h
+++ b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/vfio_ccw.h
@@ -27,19 +27,19 @@
 #define IRB_AREA_SIZE 96
   __u8 irb_area[IRB_AREA_SIZE];
   __u32 ret_code;
-} __packed;
+} __attribute__((__packed__));
 #define VFIO_CCW_ASYNC_CMD_HSCH (1 << 0)
 #define VFIO_CCW_ASYNC_CMD_CSCH (1 << 1)
 struct ccw_cmd_region {
   __u32 command;
   __u32 ret_code;
-} __packed;
+} __attribute__((__packed__));
 struct ccw_schib_region {
 #define SCHIB_AREA_SIZE 52
   __u8 schib_area[SCHIB_AREA_SIZE];
-} __packed;
+} __attribute__((__packed__));
 struct ccw_crw_region {
   __u32 crw;
   __u32 pad;
-} __packed;
+} __attribute__((__packed__));
 #endif
diff --git a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/vfio_zdev.h b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/vfio_zdev.h
index c678e9a..1c3a943 100644
--- a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/vfio_zdev.h
+++ b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/vfio_zdev.h
@@ -29,6 +29,7 @@
   __u16 fmb_length;
   __u8 pft;
   __u8 gid;
+  __u32 fh;
 };
 struct vfio_device_info_cap_zpci_group {
   struct vfio_info_cap_header header;
@@ -40,6 +41,8 @@
   __u16 noi;
   __u16 maxstbl;
   __u8 version;
+  __u8 reserved;
+  __u16 imaxstbl;
 };
 struct vfio_device_info_cap_zpci_util {
   struct vfio_info_cap_header header;
diff --git a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/vhost.h b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/vhost.h
index 53b01c4..e5b1327 100644
--- a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/vhost.h
+++ b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/vhost.h
@@ -43,8 +43,6 @@
 #define VHOST_SET_VRING_ERR _IOW(VHOST_VIRTIO, 0x22, struct vhost_vring_file)
 #define VHOST_SET_VRING_BUSYLOOP_TIMEOUT _IOW(VHOST_VIRTIO, 0x23, struct vhost_vring_state)
 #define VHOST_GET_VRING_BUSYLOOP_TIMEOUT _IOW(VHOST_VIRTIO, 0x24, struct vhost_vring_state)
-#define VHOST_BACKEND_F_IOTLB_MSG_V2 0x1
-#define VHOST_BACKEND_F_IOTLB_BATCH 0x2
 #define VHOST_SET_BACKEND_FEATURES _IOW(VHOST_VIRTIO, 0x25, __u64)
 #define VHOST_GET_BACKEND_FEATURES _IOR(VHOST_VIRTIO, 0x26, __u64)
 #define VHOST_NET_SET_BACKEND _IOW(VHOST_VIRTIO, 0x30, struct vhost_vring_file)
@@ -64,4 +62,11 @@
 #define VHOST_VDPA_GET_VRING_NUM _IOR(VHOST_VIRTIO, 0x76, __u16)
 #define VHOST_VDPA_SET_CONFIG_CALL _IOW(VHOST_VIRTIO, 0x77, int)
 #define VHOST_VDPA_GET_IOVA_RANGE _IOR(VHOST_VIRTIO, 0x78, struct vhost_vdpa_iova_range)
+#define VHOST_VDPA_GET_CONFIG_SIZE _IOR(VHOST_VIRTIO, 0x79, __u32)
+#define VHOST_VDPA_GET_VQS_COUNT _IOR(VHOST_VIRTIO, 0x80, __u32)
+#define VHOST_VDPA_GET_GROUP_NUM _IOR(VHOST_VIRTIO, 0x81, __u32)
+#define VHOST_VDPA_GET_AS_NUM _IOR(VHOST_VIRTIO, 0x7A, unsigned int)
+#define VHOST_VDPA_GET_VRING_GROUP _IOWR(VHOST_VIRTIO, 0x7B, struct vhost_vring_state)
+#define VHOST_VDPA_SET_GROUP_ASID _IOW(VHOST_VIRTIO, 0x7C, struct vhost_vring_state)
+#define VHOST_VDPA_SUSPEND _IO(VHOST_VIRTIO, 0x7D)
 #endif
diff --git a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/vhost_types.h b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/vhost_types.h
index 6b4cc77..32efa85 100644
--- a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/vhost_types.h
+++ b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/vhost_types.h
@@ -66,7 +66,7 @@
 };
 struct vhost_msg_v2 {
   __u32 type;
-  __u32 reserved;
+  __u32 asid;
   union {
     struct vhost_iotlb_msg iotlb;
     __u8 padding[64];
@@ -82,7 +82,7 @@
 struct vhost_memory {
   __u32 nregions;
   __u32 padding;
-  struct vhost_memory_region regions[0];
+  struct vhost_memory_region regions[];
 };
 #define VHOST_SCSI_ABI_VERSION 1
 struct vhost_scsi_target {
@@ -94,7 +94,7 @@
 struct vhost_vdpa_config {
   __u32 off;
   __u32 len;
-  __u8 buf[0];
+  __u8 buf[];
 };
 struct vhost_vdpa_iova_range {
   __u64 first;
@@ -102,4 +102,8 @@
 };
 #define VHOST_F_LOG_ALL 26
 #define VHOST_NET_F_VIRTIO_NET_HDR 27
+#define VHOST_BACKEND_F_IOTLB_MSG_V2 0x1
+#define VHOST_BACKEND_F_IOTLB_BATCH 0x2
+#define VHOST_BACKEND_F_IOTLB_ASID 0x3
+#define VHOST_BACKEND_F_SUSPEND 0x4
 #endif
diff --git a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/videodev2.h b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/videodev2.h
index 1cae711..3d8dd72 100644
--- a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/videodev2.h
+++ b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/videodev2.h
@@ -24,7 +24,7 @@
 #include <linux/types.h>
 #include <linux/v4l2-common.h>
 #include <linux/v4l2-controls.h>
-#define VIDEO_MAX_FRAME 32
+#define VIDEO_MAX_FRAME 64
 #define VIDEO_MAX_PLANES 8
 #define v4l2_fourcc(a,b,c,d) ((__u32) (a) | ((__u32) (b) << 8) | ((__u32) (c) << 16) | ((__u32) (d) << 24))
 #define v4l2_fourcc_be(a,b,c,d) (v4l2_fourcc(a, b, c, d) | (1U << 31))
@@ -185,7 +185,6 @@
 #define V4L2_CAP_SDR_OUTPUT 0x00400000
 #define V4L2_CAP_META_CAPTURE 0x00800000
 #define V4L2_CAP_READWRITE 0x01000000
-#define V4L2_CAP_ASYNCIO 0x02000000
 #define V4L2_CAP_STREAMING 0x04000000
 #define V4L2_CAP_META_OUTPUT 0x08000000
 #define V4L2_CAP_TOUCH 0x10000000
@@ -255,6 +254,7 @@
 #define V4L2_PIX_FMT_Y16_BE v4l2_fourcc_be('Y', '1', '6', ' ')
 #define V4L2_PIX_FMT_Y10BPACK v4l2_fourcc('Y', '1', '0', 'B')
 #define V4L2_PIX_FMT_Y10P v4l2_fourcc('Y', '1', '0', 'P')
+#define V4L2_PIX_FMT_IPU3_Y10 v4l2_fourcc('i', 'p', '3', 'y')
 #define V4L2_PIX_FMT_PAL8 v4l2_fourcc('P', 'A', 'L', '8')
 #define V4L2_PIX_FMT_UV8 v4l2_fourcc('U', 'V', '8', ' ')
 #define V4L2_PIX_FMT_YUYV v4l2_fourcc('Y', 'U', 'Y', 'V')
@@ -272,6 +272,8 @@
 #define V4L2_PIX_FMT_XYUV32 v4l2_fourcc('X', 'Y', 'U', 'V')
 #define V4L2_PIX_FMT_VUYA32 v4l2_fourcc('V', 'U', 'Y', 'A')
 #define V4L2_PIX_FMT_VUYX32 v4l2_fourcc('V', 'U', 'Y', 'X')
+#define V4L2_PIX_FMT_YUVA32 v4l2_fourcc('Y', 'U', 'V', 'A')
+#define V4L2_PIX_FMT_YUVX32 v4l2_fourcc('Y', 'U', 'V', 'X')
 #define V4L2_PIX_FMT_M420 v4l2_fourcc('M', '4', '2', '0')
 #define V4L2_PIX_FMT_NV12 v4l2_fourcc('N', 'V', '1', '2')
 #define V4L2_PIX_FMT_NV21 v4l2_fourcc('N', 'V', '2', '1')
@@ -279,6 +281,7 @@
 #define V4L2_PIX_FMT_NV61 v4l2_fourcc('N', 'V', '6', '1')
 #define V4L2_PIX_FMT_NV24 v4l2_fourcc('N', 'V', '2', '4')
 #define V4L2_PIX_FMT_NV42 v4l2_fourcc('N', 'V', '4', '2')
+#define V4L2_PIX_FMT_P010 v4l2_fourcc('P', '0', '1', '0')
 #define V4L2_PIX_FMT_NV12M v4l2_fourcc('N', 'M', '1', '2')
 #define V4L2_PIX_FMT_NV21M v4l2_fourcc('N', 'M', '2', '1')
 #define V4L2_PIX_FMT_NV16M v4l2_fourcc('N', 'M', '1', '6')
@@ -298,8 +301,11 @@
 #define V4L2_PIX_FMT_NV12_4L4 v4l2_fourcc('V', 'T', '1', '2')
 #define V4L2_PIX_FMT_NV12_16L16 v4l2_fourcc('H', 'M', '1', '2')
 #define V4L2_PIX_FMT_NV12_32L32 v4l2_fourcc('S', 'T', '1', '2')
+#define V4L2_PIX_FMT_P010_4L4 v4l2_fourcc('T', '0', '1', '0')
 #define V4L2_PIX_FMT_NV12MT v4l2_fourcc('T', 'M', '1', '2')
 #define V4L2_PIX_FMT_NV12MT_16X16 v4l2_fourcc('V', 'M', '1', '2')
+#define V4L2_PIX_FMT_NV12M_8L128 v4l2_fourcc('N', 'A', '1', '2')
+#define V4L2_PIX_FMT_NV12M_10BE_8L128 v4l2_fourcc_be('N', 'T', '1', '2')
 #define V4L2_PIX_FMT_SBGGR8 v4l2_fourcc('B', 'A', '8', '1')
 #define V4L2_PIX_FMT_SGBRG8 v4l2_fourcc('G', 'B', 'R', 'G')
 #define V4L2_PIX_FMT_SGRBG8 v4l2_fourcc('G', 'R', 'B', 'G')
@@ -365,6 +371,7 @@
 #define V4L2_PIX_FMT_FWHT v4l2_fourcc('F', 'W', 'H', 'T')
 #define V4L2_PIX_FMT_FWHT_STATELESS v4l2_fourcc('S', 'F', 'W', 'H')
 #define V4L2_PIX_FMT_H264_SLICE v4l2_fourcc('S', '2', '6', '4')
+#define V4L2_PIX_FMT_HEVC_SLICE v4l2_fourcc('S', '2', '6', '5')
 #define V4L2_PIX_FMT_CPIA1 v4l2_fourcc('C', 'P', 'I', 'A')
 #define V4L2_PIX_FMT_WNVA v4l2_fourcc('W', 'N', 'V', 'A')
 #define V4L2_PIX_FMT_SN9C10X v4l2_fourcc('S', '9', '1', '0')
@@ -399,6 +406,8 @@
 #define V4L2_PIX_FMT_INZI v4l2_fourcc('I', 'N', 'Z', 'I')
 #define V4L2_PIX_FMT_CNF4 v4l2_fourcc('C', 'N', 'F', '4')
 #define V4L2_PIX_FMT_HI240 v4l2_fourcc('H', 'I', '2', '4')
+#define V4L2_PIX_FMT_QC08C v4l2_fourcc('Q', '0', '8', 'C')
+#define V4L2_PIX_FMT_QC10C v4l2_fourcc('Q', '1', '0', 'C')
 #define V4L2_PIX_FMT_IPU3_SBGGR10 v4l2_fourcc('i', 'p', '3', 'b')
 #define V4L2_PIX_FMT_IPU3_SGBRG10 v4l2_fourcc('i', 'p', '3', 'g')
 #define V4L2_PIX_FMT_IPU3_SGRBG10 v4l2_fourcc('i', 'p', '3', 'G')
@@ -782,7 +791,7 @@
 #define V4L2_DV_FL_CAN_DETECT_REDUCED_FPS (1 << 9)
 #define V4L2_DV_BT_BLANKING_WIDTH(bt) ((bt)->hfrontporch + (bt)->hsync + (bt)->hbackporch)
 #define V4L2_DV_BT_FRAME_WIDTH(bt) ((bt)->width + V4L2_DV_BT_BLANKING_WIDTH(bt))
-#define V4L2_DV_BT_BLANKING_HEIGHT(bt) ((bt)->vfrontporch + (bt)->vsync + (bt)->vbackporch + (bt)->il_vfrontporch + (bt)->il_vsync + (bt)->il_vbackporch)
+#define V4L2_DV_BT_BLANKING_HEIGHT(bt) ((bt)->vfrontporch + (bt)->vsync + (bt)->vbackporch + ((bt)->interlaced ? ((bt)->il_vfrontporch + (bt)->il_vsync + (bt)->il_vbackporch) : 0))
 #define V4L2_DV_BT_FRAME_HEIGHT(bt) ((bt)->height + V4L2_DV_BT_BLANKING_HEIGHT(bt))
 struct v4l2_dv_timings {
   __u32 type;
@@ -901,6 +910,11 @@
     struct v4l2_ctrl_mpeg2_quantisation __user * p_mpeg2_quantisation;
     struct v4l2_ctrl_vp9_compressed_hdr __user * p_vp9_compressed_hdr_probs;
     struct v4l2_ctrl_vp9_frame __user * p_vp9_frame;
+    struct v4l2_ctrl_hevc_sps __user * p_hevc_sps;
+    struct v4l2_ctrl_hevc_pps __user * p_hevc_pps;
+    struct v4l2_ctrl_hevc_slice_params __user * p_hevc_slice_params;
+    struct v4l2_ctrl_hevc_scaling_matrix __user * p_hevc_scaling_matrix;
+    struct v4l2_ctrl_hevc_decode_params __user * p_hevc_decode_params;
     void __user * ptr;
   };
 } __attribute__((packed));
@@ -953,6 +967,11 @@
   V4L2_CTRL_TYPE_MPEG2_PICTURE = 0x0252,
   V4L2_CTRL_TYPE_VP9_COMPRESSED_HDR = 0x0260,
   V4L2_CTRL_TYPE_VP9_FRAME = 0x0261,
+  V4L2_CTRL_TYPE_HEVC_SPS = 0x0270,
+  V4L2_CTRL_TYPE_HEVC_PPS = 0x0271,
+  V4L2_CTRL_TYPE_HEVC_SLICE_PARAMS = 0x0272,
+  V4L2_CTRL_TYPE_HEVC_SCALING_MATRIX = 0x0273,
+  V4L2_CTRL_TYPE_HEVC_DECODE_PARAMS = 0x0274,
 };
 struct v4l2_queryctrl {
   __u32 id;
@@ -1000,6 +1019,7 @@
 #define V4L2_CTRL_FLAG_HAS_PAYLOAD 0x0100
 #define V4L2_CTRL_FLAG_EXECUTE_ON_WRITE 0x0200
 #define V4L2_CTRL_FLAG_MODIFY_LAYOUT 0x0400
+#define V4L2_CTRL_FLAG_DYNAMIC_ARRAY 0x0800
 #define V4L2_CTRL_FLAG_NEXT_CTRL 0x80000000
 #define V4L2_CTRL_FLAG_NEXT_COMPOUND 0x40000000
 #define V4L2_CID_MAX_CTRLS 1024
@@ -1303,6 +1323,7 @@
 #define V4L2_EVENT_CTRL_CH_VALUE (1 << 0)
 #define V4L2_EVENT_CTRL_CH_FLAGS (1 << 1)
 #define V4L2_EVENT_CTRL_CH_RANGE (1 << 2)
+#define V4L2_EVENT_CTRL_CH_DIMENSIONS (1 << 3)
 struct v4l2_event_ctrl {
   __u32 changes;
   __u32 type;
@@ -1474,4 +1495,5 @@
 #define BASE_VIDIOC_PRIVATE 192
 #define V4L2_PIX_FMT_HM12 V4L2_PIX_FMT_NV12_16L16
 #define V4L2_PIX_FMT_SUNXI_TILED_NV12 V4L2_PIX_FMT_NV12_32L32
+#define V4L2_CAP_ASYNCIO 0x02000000
 #endif
diff --git a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/virtio_9p.h b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/virtio_9p.h
index 1d9dfb1..2e05786 100644
--- a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/virtio_9p.h
+++ b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/virtio_9p.h
@@ -24,6 +24,6 @@
 #define VIRTIO_9P_MOUNT_TAG 0
 struct virtio_9p_config {
   __virtio16 tag_len;
-  __u8 tag[0];
+  __u8 tag[];
 } __attribute__((packed));
 #endif
diff --git a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/virtio_blk.h b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/virtio_blk.h
index f2f0381..0dd08c5 100644
--- a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/virtio_blk.h
+++ b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/virtio_blk.h
@@ -31,6 +31,7 @@
 #define VIRTIO_BLK_F_MQ 12
 #define VIRTIO_BLK_F_DISCARD 13
 #define VIRTIO_BLK_F_WRITE_ZEROES 14
+#define VIRTIO_BLK_F_SECURE_ERASE 16
 #ifndef VIRTIO_BLK_NO_LEGACY
 #define VIRTIO_BLK_F_BARRIER 0
 #define VIRTIO_BLK_F_SCSI 7
@@ -63,6 +64,9 @@
   __virtio32 max_write_zeroes_seg;
   __u8 write_zeroes_may_unmap;
   __u8 unused1[3];
+  __virtio32 max_secure_erase_sectors;
+  __virtio32 max_secure_erase_seg;
+  __virtio32 secure_erase_sector_alignment;
 } __attribute__((packed));
 #define VIRTIO_BLK_T_IN 0
 #define VIRTIO_BLK_T_OUT 1
@@ -73,6 +77,7 @@
 #define VIRTIO_BLK_T_GET_ID 8
 #define VIRTIO_BLK_T_DISCARD 11
 #define VIRTIO_BLK_T_WRITE_ZEROES 13
+#define VIRTIO_BLK_T_SECURE_ERASE 14
 #ifndef VIRTIO_BLK_NO_LEGACY
 #define VIRTIO_BLK_T_BARRIER 0x80000000
 #endif
diff --git a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/virtio_config.h b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/virtio_config.h
index 6198fd1..bdd2e73 100644
--- a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/virtio_config.h
+++ b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/virtio_config.h
@@ -26,7 +26,7 @@
 #define VIRTIO_CONFIG_S_NEEDS_RESET 0x40
 #define VIRTIO_CONFIG_S_FAILED 0x80
 #define VIRTIO_TRANSPORT_F_START 28
-#define VIRTIO_TRANSPORT_F_END 38
+#define VIRTIO_TRANSPORT_F_END 41
 #ifndef VIRTIO_CONFIG_NO_LEGACY
 #define VIRTIO_F_NOTIFY_ON_EMPTY 24
 #define VIRTIO_F_ANY_LAYOUT 27
@@ -35,6 +35,8 @@
 #define VIRTIO_F_ACCESS_PLATFORM 33
 #define VIRTIO_F_IOMMU_PLATFORM VIRTIO_F_ACCESS_PLATFORM
 #define VIRTIO_F_RING_PACKED 34
+#define VIRTIO_F_IN_ORDER 35
 #define VIRTIO_F_ORDER_PLATFORM 36
 #define VIRTIO_F_SR_IOV 37
+#define VIRTIO_F_RING_RESET 40
 #endif
diff --git a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/virtio_crypto.h b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/virtio_crypto.h
index 2ce760f..7d7561d 100644
--- a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/virtio_crypto.h
+++ b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/virtio_crypto.h
@@ -26,6 +26,7 @@
 #define VIRTIO_CRYPTO_SERVICE_HASH 1
 #define VIRTIO_CRYPTO_SERVICE_MAC 2
 #define VIRTIO_CRYPTO_SERVICE_AEAD 3
+#define VIRTIO_CRYPTO_SERVICE_AKCIPHER 4
 #define VIRTIO_CRYPTO_OPCODE(service,op) (((service) << 8) | (op))
 struct virtio_crypto_ctrl_header {
 #define VIRTIO_CRYPTO_CIPHER_CREATE_SESSION VIRTIO_CRYPTO_OPCODE(VIRTIO_CRYPTO_SERVICE_CIPHER, 0x02)
@@ -36,6 +37,8 @@
 #define VIRTIO_CRYPTO_MAC_DESTROY_SESSION VIRTIO_CRYPTO_OPCODE(VIRTIO_CRYPTO_SERVICE_MAC, 0x03)
 #define VIRTIO_CRYPTO_AEAD_CREATE_SESSION VIRTIO_CRYPTO_OPCODE(VIRTIO_CRYPTO_SERVICE_AEAD, 0x02)
 #define VIRTIO_CRYPTO_AEAD_DESTROY_SESSION VIRTIO_CRYPTO_OPCODE(VIRTIO_CRYPTO_SERVICE_AEAD, 0x03)
+#define VIRTIO_CRYPTO_AKCIPHER_CREATE_SESSION VIRTIO_CRYPTO_OPCODE(VIRTIO_CRYPTO_SERVICE_AKCIPHER, 0x04)
+#define VIRTIO_CRYPTO_AKCIPHER_DESTROY_SESSION VIRTIO_CRYPTO_OPCODE(VIRTIO_CRYPTO_SERVICE_AKCIPHER, 0x05)
   __le32 opcode;
   __le32 algo;
   __le32 flag;
@@ -137,6 +140,51 @@
   struct virtio_crypto_aead_session_para para;
   __u8 padding[32];
 };
+struct virtio_crypto_rsa_session_para {
+#define VIRTIO_CRYPTO_RSA_RAW_PADDING 0
+#define VIRTIO_CRYPTO_RSA_PKCS1_PADDING 1
+  __le32 padding_algo;
+#define VIRTIO_CRYPTO_RSA_NO_HASH 0
+#define VIRTIO_CRYPTO_RSA_MD2 1
+#define VIRTIO_CRYPTO_RSA_MD3 2
+#define VIRTIO_CRYPTO_RSA_MD4 3
+#define VIRTIO_CRYPTO_RSA_MD5 4
+#define VIRTIO_CRYPTO_RSA_SHA1 5
+#define VIRTIO_CRYPTO_RSA_SHA256 6
+#define VIRTIO_CRYPTO_RSA_SHA384 7
+#define VIRTIO_CRYPTO_RSA_SHA512 8
+#define VIRTIO_CRYPTO_RSA_SHA224 9
+  __le32 hash_algo;
+};
+struct virtio_crypto_ecdsa_session_para {
+#define VIRTIO_CRYPTO_CURVE_UNKNOWN 0
+#define VIRTIO_CRYPTO_CURVE_NIST_P192 1
+#define VIRTIO_CRYPTO_CURVE_NIST_P224 2
+#define VIRTIO_CRYPTO_CURVE_NIST_P256 3
+#define VIRTIO_CRYPTO_CURVE_NIST_P384 4
+#define VIRTIO_CRYPTO_CURVE_NIST_P521 5
+  __le32 curve_id;
+  __le32 padding;
+};
+struct virtio_crypto_akcipher_session_para {
+#define VIRTIO_CRYPTO_NO_AKCIPHER 0
+#define VIRTIO_CRYPTO_AKCIPHER_RSA 1
+#define VIRTIO_CRYPTO_AKCIPHER_DSA 2
+#define VIRTIO_CRYPTO_AKCIPHER_ECDSA 3
+  __le32 algo;
+#define VIRTIO_CRYPTO_AKCIPHER_KEY_TYPE_PUBLIC 1
+#define VIRTIO_CRYPTO_AKCIPHER_KEY_TYPE_PRIVATE 2
+  __le32 keytype;
+  __le32 keylen;
+  union {
+    struct virtio_crypto_rsa_session_para rsa;
+    struct virtio_crypto_ecdsa_session_para ecdsa;
+  } u;
+};
+struct virtio_crypto_akcipher_create_session_req {
+  struct virtio_crypto_akcipher_session_para para;
+  __u8 padding[36];
+};
 struct virtio_crypto_alg_chain_session_para {
 #define VIRTIO_CRYPTO_SYM_ALG_CHAIN_ORDER_HASH_THEN_CIPHER 1
 #define VIRTIO_CRYPTO_SYM_ALG_CHAIN_ORDER_CIPHER_THEN_HASH 2
@@ -180,6 +228,7 @@
     struct virtio_crypto_hash_create_session_req hash_create_session;
     struct virtio_crypto_mac_create_session_req mac_create_session;
     struct virtio_crypto_aead_create_session_req aead_create_session;
+    struct virtio_crypto_akcipher_create_session_req akcipher_create_session;
     struct virtio_crypto_destroy_session_req destroy_session;
     __u8 padding[56];
   } u;
@@ -191,6 +240,10 @@
 #define VIRTIO_CRYPTO_MAC VIRTIO_CRYPTO_OPCODE(VIRTIO_CRYPTO_SERVICE_MAC, 0x00)
 #define VIRTIO_CRYPTO_AEAD_ENCRYPT VIRTIO_CRYPTO_OPCODE(VIRTIO_CRYPTO_SERVICE_AEAD, 0x00)
 #define VIRTIO_CRYPTO_AEAD_DECRYPT VIRTIO_CRYPTO_OPCODE(VIRTIO_CRYPTO_SERVICE_AEAD, 0x01)
+#define VIRTIO_CRYPTO_AKCIPHER_ENCRYPT VIRTIO_CRYPTO_OPCODE(VIRTIO_CRYPTO_SERVICE_AKCIPHER, 0x00)
+#define VIRTIO_CRYPTO_AKCIPHER_DECRYPT VIRTIO_CRYPTO_OPCODE(VIRTIO_CRYPTO_SERVICE_AKCIPHER, 0x01)
+#define VIRTIO_CRYPTO_AKCIPHER_SIGN VIRTIO_CRYPTO_OPCODE(VIRTIO_CRYPTO_SERVICE_AKCIPHER, 0x02)
+#define VIRTIO_CRYPTO_AKCIPHER_VERIFY VIRTIO_CRYPTO_OPCODE(VIRTIO_CRYPTO_SERVICE_AKCIPHER, 0x03)
   __le32 opcode;
   __le32 algo;
   __le64 session_id;
@@ -256,6 +309,14 @@
   struct virtio_crypto_aead_para para;
   __u8 padding[32];
 };
+struct virtio_crypto_akcipher_para {
+  __le32 src_data_len;
+  __le32 dst_data_len;
+};
+struct virtio_crypto_akcipher_data_req {
+  struct virtio_crypto_akcipher_para para;
+  __u8 padding[40];
+};
 struct virtio_crypto_op_data_req {
   struct virtio_crypto_op_header header;
   union {
@@ -263,6 +324,7 @@
     struct virtio_crypto_hash_data_req hash_req;
     struct virtio_crypto_mac_data_req mac_req;
     struct virtio_crypto_aead_data_req aead_req;
+    struct virtio_crypto_akcipher_data_req akcipher_req;
     __u8 padding[48];
   } u;
 };
@@ -271,6 +333,8 @@
 #define VIRTIO_CRYPTO_BADMSG 2
 #define VIRTIO_CRYPTO_NOTSUPP 3
 #define VIRTIO_CRYPTO_INVSESS 4
+#define VIRTIO_CRYPTO_NOSPC 5
+#define VIRTIO_CRYPTO_KEY_REJECTED 6
 #define VIRTIO_CRYPTO_S_HW_READY (1 << 0)
 struct virtio_crypto_config {
   __le32 status;
@@ -284,7 +348,7 @@
   __le32 aead_algo;
   __le32 max_cipher_key_len;
   __le32 max_auth_key_len;
-  __le32 reserve;
+  __le32 akcipher_algo;
   __le64 max_size;
 };
 struct virtio_crypto_inhdr {
diff --git a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/virtio_ids.h b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/virtio_ids.h
index 2894700..b31ed93 100644
--- a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/virtio_ids.h
+++ b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/virtio_ids.h
@@ -57,11 +57,11 @@
 #define VIRTIO_ID_AUDIO_POLICY 39
 #define VIRTIO_ID_BT 40
 #define VIRTIO_ID_GPIO 41
-#define VIRTIO_TRANS_ID_NET 1000
-#define VIRTIO_TRANS_ID_BLOCK 1001
-#define VIRTIO_TRANS_ID_BALLOON 1002
-#define VIRTIO_TRANS_ID_CONSOLE 1003
-#define VIRTIO_TRANS_ID_SCSI 1004
-#define VIRTIO_TRANS_ID_RNG 1005
-#define VIRTIO_TRANS_ID_9P 1009
+#define VIRTIO_TRANS_ID_NET 0x1000
+#define VIRTIO_TRANS_ID_BLOCK 0x1001
+#define VIRTIO_TRANS_ID_BALLOON 0x1002
+#define VIRTIO_TRANS_ID_CONSOLE 0x1003
+#define VIRTIO_TRANS_ID_SCSI 0x1004
+#define VIRTIO_TRANS_ID_RNG 0x1005
+#define VIRTIO_TRANS_ID_9P 0x1009
 #endif
diff --git a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/virtio_net.h b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/virtio_net.h
index 2d92904..6fe90aa 100644
--- a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/virtio_net.h
+++ b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/virtio_net.h
@@ -45,6 +45,7 @@
 #define VIRTIO_NET_F_GUEST_ANNOUNCE 21
 #define VIRTIO_NET_F_MQ 22
 #define VIRTIO_NET_F_CTRL_MAC_ADDR 23
+#define VIRTIO_NET_F_NOTF_COAL 53
 #define VIRTIO_NET_F_HASH_REPORT 57
 #define VIRTIO_NET_F_RSS 60
 #define VIRTIO_NET_F_RSC_EXT 61
@@ -186,4 +187,15 @@
 #define VIRTIO_NET_CTRL_MQ_HASH_CONFIG 2
 #define VIRTIO_NET_CTRL_GUEST_OFFLOADS 5
 #define VIRTIO_NET_CTRL_GUEST_OFFLOADS_SET 0
+#define VIRTIO_NET_CTRL_NOTF_COAL 6
+struct virtio_net_ctrl_coal_tx {
+  __le32 tx_max_packets;
+  __le32 tx_usecs;
+};
+#define VIRTIO_NET_CTRL_NOTF_COAL_TX_SET 0
+struct virtio_net_ctrl_coal_rx {
+  __le32 rx_max_packets;
+  __le32 rx_usecs;
+};
+#define VIRTIO_NET_CTRL_NOTF_COAL_RX_SET 1
 #endif
diff --git a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/virtio_pci.h b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/virtio_pci.h
index e6d2731..94ca0a2 100644
--- a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/virtio_pci.h
+++ b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/virtio_pci.h
@@ -117,5 +117,7 @@
 #define VIRTIO_PCI_COMMON_Q_AVAILHI 44
 #define VIRTIO_PCI_COMMON_Q_USEDLO 48
 #define VIRTIO_PCI_COMMON_Q_USEDHI 52
+#define VIRTIO_PCI_COMMON_Q_NDATA 56
+#define VIRTIO_PCI_COMMON_Q_RESET 58
 #endif
 #endif
diff --git a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/wmi.h b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/wmi.h
index 26f54d9..7b72056 100644
--- a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/wmi.h
+++ b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/wmi.h
@@ -30,17 +30,17 @@
   __u16 cmd_select;
   volatile __u32 input[4];
   volatile __u32 output[4];
-} __packed;
+} __attribute__((__packed__));
 struct dell_wmi_extensions {
   __u32 argattrib;
   __u32 blength;
   __u8 data[];
-} __packed;
+} __attribute__((__packed__));
 struct dell_wmi_smbios_buffer {
   __u64 length;
   struct calling_interface_buffer std;
   struct dell_wmi_extensions ext;
-} __packed;
+} __attribute__((__packed__));
 #define CLASS_TOKEN_READ 0
 #define CLASS_TOKEN_WRITE 1
 #define SELECT_TOKEN_STD 0
diff --git a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/xfrm.h b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/xfrm.h
index f4df95f..77ded42 100644
--- a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/xfrm.h
+++ b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/xfrm.h
@@ -35,7 +35,7 @@
   __u8 ctx_alg;
   __u16 ctx_len;
   __u32 ctx_sid;
-  char ctx_str[0];
+  char ctx_str[];
 };
 #define XFRM_SC_DOI_RESERVED 0
 #define XFRM_SC_DOI_LSM 1
@@ -85,24 +85,24 @@
   __u32 oseq_hi;
   __u32 seq_hi;
   __u32 replay_window;
-  __u32 bmp[0];
+  __u32 bmp[];
 };
 struct xfrm_algo {
   char alg_name[64];
   unsigned int alg_key_len;
-  char alg_key[0];
+  char alg_key[];
 };
 struct xfrm_algo_auth {
   char alg_name[64];
   unsigned int alg_key_len;
   unsigned int alg_trunc_len;
-  char alg_key[0];
+  char alg_key[];
 };
 struct xfrm_algo_aead {
   char alg_name[64];
   unsigned int alg_key_len;
   unsigned int alg_icv_len;
-  char alg_key[0];
+  char alg_key[];
 };
 struct xfrm_stats {
   __u32 replay_window;
diff --git a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/zorro.h b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/zorro.h
index f8e47a1..86320aa 100644
--- a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/zorro.h
+++ b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/linux/zorro.h
@@ -42,7 +42,7 @@
   __u8 ln_Type;
   __s8 ln_Pri;
   __be32 ln_Name;
-} __packed;
+} __attribute__((__packed__));
 struct ExpansionRom {
   __u8 er_Type;
   __u8 er_Product;
@@ -55,7 +55,7 @@
   __u8 er_Reserved0d;
   __u8 er_Reserved0e;
   __u8 er_Reserved0f;
-} __packed;
+} __attribute__((__packed__));
 #define ERT_TYPEMASK 0xc0
 #define ERT_ZORROII 0xc0
 #define ERT_ZORROIII 0x80
@@ -73,6 +73,6 @@
   __be32 cd_Driver;
   __be32 cd_NextCD;
   __be32 cd_Unused[4];
-} __packed;
+} __attribute__((__packed__));
 #define ZORRO_NUM_AUTO 16
 #endif
diff --git a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/misc/fastrpc.h b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/misc/fastrpc.h
index 62955ec..e82b961 100644
--- a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/misc/fastrpc.h
+++ b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/misc/fastrpc.h
@@ -27,11 +27,32 @@
 #define FASTRPC_IOCTL_MMAP _IOWR('R', 6, struct fastrpc_req_mmap)
 #define FASTRPC_IOCTL_MUNMAP _IOWR('R', 7, struct fastrpc_req_munmap)
 #define FASTRPC_IOCTL_INIT_ATTACH_SNS _IO('R', 8)
+#define FASTRPC_IOCTL_MEM_MAP _IOWR('R', 10, struct fastrpc_mem_map)
+#define FASTRPC_IOCTL_MEM_UNMAP _IOWR('R', 11, struct fastrpc_mem_unmap)
+#define FASTRPC_IOCTL_GET_DSP_INFO _IOWR('R', 13, struct fastrpc_ioctl_capability)
+enum fastrpc_map_flags {
+  FASTRPC_MAP_STATIC = 0,
+  FASTRPC_MAP_RESERVED,
+  FASTRPC_MAP_FD = 2,
+  FASTRPC_MAP_FD_DELAYED,
+  FASTRPC_MAP_FD_NOMAP = 16,
+  FASTRPC_MAP_MAX,
+};
+enum fastrpc_proc_attr {
+  FASTRPC_MODE_DEBUG = (1 << 0),
+  FASTRPC_MODE_PTRACE = (1 << 1),
+  FASTRPC_MODE_CRC = (1 << 2),
+  FASTRPC_MODE_UNSIGNED_MODULE = (1 << 3),
+  FASTRPC_MODE_ADAPTIVE_QOS = (1 << 4),
+  FASTRPC_MODE_SYSTEM_PROCESS = (1 << 5),
+  FASTRPC_MODE_PRIVILEGED = (1 << 6),
+};
+#define FASTRPC_ATTR_SECUREMAP (1)
 struct fastrpc_invoke_args {
   __u64 ptr;
   __u64 length;
   __s32 fd;
-  __u32 reserved;
+  __u32 attr;
 };
 struct fastrpc_invoke {
   __u32 handle;
@@ -57,8 +78,32 @@
   __u64 size;
   __u64 vaddrout;
 };
+struct fastrpc_mem_map {
+  __s32 version;
+  __s32 fd;
+  __s32 offset;
+  __u32 flags;
+  __u64 vaddrin;
+  __u64 length;
+  __u64 vaddrout;
+  __s32 attrs;
+  __s32 reserved[4];
+};
 struct fastrpc_req_munmap {
   __u64 vaddrout;
   __u64 size;
 };
+struct fastrpc_mem_unmap {
+  __s32 vesion;
+  __s32 fd;
+  __u64 vaddr;
+  __u64 length;
+  __s32 reserved[5];
+};
+struct fastrpc_ioctl_capability {
+  __u32 domain;
+  __u32 attribute_id;
+  __u32 capability;
+  __u32 reserved[4];
+};
 #endif
diff --git a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/misc/habanalabs.h b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/misc/habanalabs.h
index 6e3439a..b6140bc 100644
--- a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/misc/habanalabs.h
+++ b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/misc/habanalabs.h
@@ -24,6 +24,7 @@
 #define GAUDI_DRIVER_SRAM_RESERVED_SIZE_FROM_START 0x80
 #define GAUDI_FIRST_AVAILABLE_W_S_SYNC_OBJECT 144
 #define GAUDI_FIRST_AVAILABLE_W_S_MONITOR 72
+#define TS_MAX_ELEMENTS_NUM (1 << 20)
 enum goya_queue_id {
   GOYA_QUEUE_ID_DMA_0 = 0,
   GOYA_QUEUE_ID_DMA_1 = 1,
@@ -158,6 +159,270 @@
   GAUDI_QUEUE_ID_NIC_9_3 = 112,
   GAUDI_QUEUE_ID_SIZE
 };
+enum gaudi2_queue_id {
+  GAUDI2_QUEUE_ID_PDMA_0_0 = 0,
+  GAUDI2_QUEUE_ID_PDMA_0_1 = 1,
+  GAUDI2_QUEUE_ID_PDMA_0_2 = 2,
+  GAUDI2_QUEUE_ID_PDMA_0_3 = 3,
+  GAUDI2_QUEUE_ID_PDMA_1_0 = 4,
+  GAUDI2_QUEUE_ID_PDMA_1_1 = 5,
+  GAUDI2_QUEUE_ID_PDMA_1_2 = 6,
+  GAUDI2_QUEUE_ID_PDMA_1_3 = 7,
+  GAUDI2_QUEUE_ID_DCORE0_EDMA_0_0 = 8,
+  GAUDI2_QUEUE_ID_DCORE0_EDMA_0_1 = 9,
+  GAUDI2_QUEUE_ID_DCORE0_EDMA_0_2 = 10,
+  GAUDI2_QUEUE_ID_DCORE0_EDMA_0_3 = 11,
+  GAUDI2_QUEUE_ID_DCORE0_EDMA_1_0 = 12,
+  GAUDI2_QUEUE_ID_DCORE0_EDMA_1_1 = 13,
+  GAUDI2_QUEUE_ID_DCORE0_EDMA_1_2 = 14,
+  GAUDI2_QUEUE_ID_DCORE0_EDMA_1_3 = 15,
+  GAUDI2_QUEUE_ID_DCORE0_MME_0_0 = 16,
+  GAUDI2_QUEUE_ID_DCORE0_MME_0_1 = 17,
+  GAUDI2_QUEUE_ID_DCORE0_MME_0_2 = 18,
+  GAUDI2_QUEUE_ID_DCORE0_MME_0_3 = 19,
+  GAUDI2_QUEUE_ID_DCORE0_TPC_0_0 = 20,
+  GAUDI2_QUEUE_ID_DCORE0_TPC_0_1 = 21,
+  GAUDI2_QUEUE_ID_DCORE0_TPC_0_2 = 22,
+  GAUDI2_QUEUE_ID_DCORE0_TPC_0_3 = 23,
+  GAUDI2_QUEUE_ID_DCORE0_TPC_1_0 = 24,
+  GAUDI2_QUEUE_ID_DCORE0_TPC_1_1 = 25,
+  GAUDI2_QUEUE_ID_DCORE0_TPC_1_2 = 26,
+  GAUDI2_QUEUE_ID_DCORE0_TPC_1_3 = 27,
+  GAUDI2_QUEUE_ID_DCORE0_TPC_2_0 = 28,
+  GAUDI2_QUEUE_ID_DCORE0_TPC_2_1 = 29,
+  GAUDI2_QUEUE_ID_DCORE0_TPC_2_2 = 30,
+  GAUDI2_QUEUE_ID_DCORE0_TPC_2_3 = 31,
+  GAUDI2_QUEUE_ID_DCORE0_TPC_3_0 = 32,
+  GAUDI2_QUEUE_ID_DCORE0_TPC_3_1 = 33,
+  GAUDI2_QUEUE_ID_DCORE0_TPC_3_2 = 34,
+  GAUDI2_QUEUE_ID_DCORE0_TPC_3_3 = 35,
+  GAUDI2_QUEUE_ID_DCORE0_TPC_4_0 = 36,
+  GAUDI2_QUEUE_ID_DCORE0_TPC_4_1 = 37,
+  GAUDI2_QUEUE_ID_DCORE0_TPC_4_2 = 38,
+  GAUDI2_QUEUE_ID_DCORE0_TPC_4_3 = 39,
+  GAUDI2_QUEUE_ID_DCORE0_TPC_5_0 = 40,
+  GAUDI2_QUEUE_ID_DCORE0_TPC_5_1 = 41,
+  GAUDI2_QUEUE_ID_DCORE0_TPC_5_2 = 42,
+  GAUDI2_QUEUE_ID_DCORE0_TPC_5_3 = 43,
+  GAUDI2_QUEUE_ID_DCORE0_TPC_6_0 = 44,
+  GAUDI2_QUEUE_ID_DCORE0_TPC_6_1 = 45,
+  GAUDI2_QUEUE_ID_DCORE0_TPC_6_2 = 46,
+  GAUDI2_QUEUE_ID_DCORE0_TPC_6_3 = 47,
+  GAUDI2_QUEUE_ID_DCORE1_EDMA_0_0 = 48,
+  GAUDI2_QUEUE_ID_DCORE1_EDMA_0_1 = 49,
+  GAUDI2_QUEUE_ID_DCORE1_EDMA_0_2 = 50,
+  GAUDI2_QUEUE_ID_DCORE1_EDMA_0_3 = 51,
+  GAUDI2_QUEUE_ID_DCORE1_EDMA_1_0 = 52,
+  GAUDI2_QUEUE_ID_DCORE1_EDMA_1_1 = 53,
+  GAUDI2_QUEUE_ID_DCORE1_EDMA_1_2 = 54,
+  GAUDI2_QUEUE_ID_DCORE1_EDMA_1_3 = 55,
+  GAUDI2_QUEUE_ID_DCORE1_MME_0_0 = 56,
+  GAUDI2_QUEUE_ID_DCORE1_MME_0_1 = 57,
+  GAUDI2_QUEUE_ID_DCORE1_MME_0_2 = 58,
+  GAUDI2_QUEUE_ID_DCORE1_MME_0_3 = 59,
+  GAUDI2_QUEUE_ID_DCORE1_TPC_0_0 = 60,
+  GAUDI2_QUEUE_ID_DCORE1_TPC_0_1 = 61,
+  GAUDI2_QUEUE_ID_DCORE1_TPC_0_2 = 62,
+  GAUDI2_QUEUE_ID_DCORE1_TPC_0_3 = 63,
+  GAUDI2_QUEUE_ID_DCORE1_TPC_1_0 = 64,
+  GAUDI2_QUEUE_ID_DCORE1_TPC_1_1 = 65,
+  GAUDI2_QUEUE_ID_DCORE1_TPC_1_2 = 66,
+  GAUDI2_QUEUE_ID_DCORE1_TPC_1_3 = 67,
+  GAUDI2_QUEUE_ID_DCORE1_TPC_2_0 = 68,
+  GAUDI2_QUEUE_ID_DCORE1_TPC_2_1 = 69,
+  GAUDI2_QUEUE_ID_DCORE1_TPC_2_2 = 70,
+  GAUDI2_QUEUE_ID_DCORE1_TPC_2_3 = 71,
+  GAUDI2_QUEUE_ID_DCORE1_TPC_3_0 = 72,
+  GAUDI2_QUEUE_ID_DCORE1_TPC_3_1 = 73,
+  GAUDI2_QUEUE_ID_DCORE1_TPC_3_2 = 74,
+  GAUDI2_QUEUE_ID_DCORE1_TPC_3_3 = 75,
+  GAUDI2_QUEUE_ID_DCORE1_TPC_4_0 = 76,
+  GAUDI2_QUEUE_ID_DCORE1_TPC_4_1 = 77,
+  GAUDI2_QUEUE_ID_DCORE1_TPC_4_2 = 78,
+  GAUDI2_QUEUE_ID_DCORE1_TPC_4_3 = 79,
+  GAUDI2_QUEUE_ID_DCORE1_TPC_5_0 = 80,
+  GAUDI2_QUEUE_ID_DCORE1_TPC_5_1 = 81,
+  GAUDI2_QUEUE_ID_DCORE1_TPC_5_2 = 82,
+  GAUDI2_QUEUE_ID_DCORE1_TPC_5_3 = 83,
+  GAUDI2_QUEUE_ID_DCORE2_EDMA_0_0 = 84,
+  GAUDI2_QUEUE_ID_DCORE2_EDMA_0_1 = 85,
+  GAUDI2_QUEUE_ID_DCORE2_EDMA_0_2 = 86,
+  GAUDI2_QUEUE_ID_DCORE2_EDMA_0_3 = 87,
+  GAUDI2_QUEUE_ID_DCORE2_EDMA_1_0 = 88,
+  GAUDI2_QUEUE_ID_DCORE2_EDMA_1_1 = 89,
+  GAUDI2_QUEUE_ID_DCORE2_EDMA_1_2 = 90,
+  GAUDI2_QUEUE_ID_DCORE2_EDMA_1_3 = 91,
+  GAUDI2_QUEUE_ID_DCORE2_MME_0_0 = 92,
+  GAUDI2_QUEUE_ID_DCORE2_MME_0_1 = 93,
+  GAUDI2_QUEUE_ID_DCORE2_MME_0_2 = 94,
+  GAUDI2_QUEUE_ID_DCORE2_MME_0_3 = 95,
+  GAUDI2_QUEUE_ID_DCORE2_TPC_0_0 = 96,
+  GAUDI2_QUEUE_ID_DCORE2_TPC_0_1 = 97,
+  GAUDI2_QUEUE_ID_DCORE2_TPC_0_2 = 98,
+  GAUDI2_QUEUE_ID_DCORE2_TPC_0_3 = 99,
+  GAUDI2_QUEUE_ID_DCORE2_TPC_1_0 = 100,
+  GAUDI2_QUEUE_ID_DCORE2_TPC_1_1 = 101,
+  GAUDI2_QUEUE_ID_DCORE2_TPC_1_2 = 102,
+  GAUDI2_QUEUE_ID_DCORE2_TPC_1_3 = 103,
+  GAUDI2_QUEUE_ID_DCORE2_TPC_2_0 = 104,
+  GAUDI2_QUEUE_ID_DCORE2_TPC_2_1 = 105,
+  GAUDI2_QUEUE_ID_DCORE2_TPC_2_2 = 106,
+  GAUDI2_QUEUE_ID_DCORE2_TPC_2_3 = 107,
+  GAUDI2_QUEUE_ID_DCORE2_TPC_3_0 = 108,
+  GAUDI2_QUEUE_ID_DCORE2_TPC_3_1 = 109,
+  GAUDI2_QUEUE_ID_DCORE2_TPC_3_2 = 110,
+  GAUDI2_QUEUE_ID_DCORE2_TPC_3_3 = 111,
+  GAUDI2_QUEUE_ID_DCORE2_TPC_4_0 = 112,
+  GAUDI2_QUEUE_ID_DCORE2_TPC_4_1 = 113,
+  GAUDI2_QUEUE_ID_DCORE2_TPC_4_2 = 114,
+  GAUDI2_QUEUE_ID_DCORE2_TPC_4_3 = 115,
+  GAUDI2_QUEUE_ID_DCORE2_TPC_5_0 = 116,
+  GAUDI2_QUEUE_ID_DCORE2_TPC_5_1 = 117,
+  GAUDI2_QUEUE_ID_DCORE2_TPC_5_2 = 118,
+  GAUDI2_QUEUE_ID_DCORE2_TPC_5_3 = 119,
+  GAUDI2_QUEUE_ID_DCORE3_EDMA_0_0 = 120,
+  GAUDI2_QUEUE_ID_DCORE3_EDMA_0_1 = 121,
+  GAUDI2_QUEUE_ID_DCORE3_EDMA_0_2 = 122,
+  GAUDI2_QUEUE_ID_DCORE3_EDMA_0_3 = 123,
+  GAUDI2_QUEUE_ID_DCORE3_EDMA_1_0 = 124,
+  GAUDI2_QUEUE_ID_DCORE3_EDMA_1_1 = 125,
+  GAUDI2_QUEUE_ID_DCORE3_EDMA_1_2 = 126,
+  GAUDI2_QUEUE_ID_DCORE3_EDMA_1_3 = 127,
+  GAUDI2_QUEUE_ID_DCORE3_MME_0_0 = 128,
+  GAUDI2_QUEUE_ID_DCORE3_MME_0_1 = 129,
+  GAUDI2_QUEUE_ID_DCORE3_MME_0_2 = 130,
+  GAUDI2_QUEUE_ID_DCORE3_MME_0_3 = 131,
+  GAUDI2_QUEUE_ID_DCORE3_TPC_0_0 = 132,
+  GAUDI2_QUEUE_ID_DCORE3_TPC_0_1 = 133,
+  GAUDI2_QUEUE_ID_DCORE3_TPC_0_2 = 134,
+  GAUDI2_QUEUE_ID_DCORE3_TPC_0_3 = 135,
+  GAUDI2_QUEUE_ID_DCORE3_TPC_1_0 = 136,
+  GAUDI2_QUEUE_ID_DCORE3_TPC_1_1 = 137,
+  GAUDI2_QUEUE_ID_DCORE3_TPC_1_2 = 138,
+  GAUDI2_QUEUE_ID_DCORE3_TPC_1_3 = 139,
+  GAUDI2_QUEUE_ID_DCORE3_TPC_2_0 = 140,
+  GAUDI2_QUEUE_ID_DCORE3_TPC_2_1 = 141,
+  GAUDI2_QUEUE_ID_DCORE3_TPC_2_2 = 142,
+  GAUDI2_QUEUE_ID_DCORE3_TPC_2_3 = 143,
+  GAUDI2_QUEUE_ID_DCORE3_TPC_3_0 = 144,
+  GAUDI2_QUEUE_ID_DCORE3_TPC_3_1 = 145,
+  GAUDI2_QUEUE_ID_DCORE3_TPC_3_2 = 146,
+  GAUDI2_QUEUE_ID_DCORE3_TPC_3_3 = 147,
+  GAUDI2_QUEUE_ID_DCORE3_TPC_4_0 = 148,
+  GAUDI2_QUEUE_ID_DCORE3_TPC_4_1 = 149,
+  GAUDI2_QUEUE_ID_DCORE3_TPC_4_2 = 150,
+  GAUDI2_QUEUE_ID_DCORE3_TPC_4_3 = 151,
+  GAUDI2_QUEUE_ID_DCORE3_TPC_5_0 = 152,
+  GAUDI2_QUEUE_ID_DCORE3_TPC_5_1 = 153,
+  GAUDI2_QUEUE_ID_DCORE3_TPC_5_2 = 154,
+  GAUDI2_QUEUE_ID_DCORE3_TPC_5_3 = 155,
+  GAUDI2_QUEUE_ID_NIC_0_0 = 156,
+  GAUDI2_QUEUE_ID_NIC_0_1 = 157,
+  GAUDI2_QUEUE_ID_NIC_0_2 = 158,
+  GAUDI2_QUEUE_ID_NIC_0_3 = 159,
+  GAUDI2_QUEUE_ID_NIC_1_0 = 160,
+  GAUDI2_QUEUE_ID_NIC_1_1 = 161,
+  GAUDI2_QUEUE_ID_NIC_1_2 = 162,
+  GAUDI2_QUEUE_ID_NIC_1_3 = 163,
+  GAUDI2_QUEUE_ID_NIC_2_0 = 164,
+  GAUDI2_QUEUE_ID_NIC_2_1 = 165,
+  GAUDI2_QUEUE_ID_NIC_2_2 = 166,
+  GAUDI2_QUEUE_ID_NIC_2_3 = 167,
+  GAUDI2_QUEUE_ID_NIC_3_0 = 168,
+  GAUDI2_QUEUE_ID_NIC_3_1 = 169,
+  GAUDI2_QUEUE_ID_NIC_3_2 = 170,
+  GAUDI2_QUEUE_ID_NIC_3_3 = 171,
+  GAUDI2_QUEUE_ID_NIC_4_0 = 172,
+  GAUDI2_QUEUE_ID_NIC_4_1 = 173,
+  GAUDI2_QUEUE_ID_NIC_4_2 = 174,
+  GAUDI2_QUEUE_ID_NIC_4_3 = 175,
+  GAUDI2_QUEUE_ID_NIC_5_0 = 176,
+  GAUDI2_QUEUE_ID_NIC_5_1 = 177,
+  GAUDI2_QUEUE_ID_NIC_5_2 = 178,
+  GAUDI2_QUEUE_ID_NIC_5_3 = 179,
+  GAUDI2_QUEUE_ID_NIC_6_0 = 180,
+  GAUDI2_QUEUE_ID_NIC_6_1 = 181,
+  GAUDI2_QUEUE_ID_NIC_6_2 = 182,
+  GAUDI2_QUEUE_ID_NIC_6_3 = 183,
+  GAUDI2_QUEUE_ID_NIC_7_0 = 184,
+  GAUDI2_QUEUE_ID_NIC_7_1 = 185,
+  GAUDI2_QUEUE_ID_NIC_7_2 = 186,
+  GAUDI2_QUEUE_ID_NIC_7_3 = 187,
+  GAUDI2_QUEUE_ID_NIC_8_0 = 188,
+  GAUDI2_QUEUE_ID_NIC_8_1 = 189,
+  GAUDI2_QUEUE_ID_NIC_8_2 = 190,
+  GAUDI2_QUEUE_ID_NIC_8_3 = 191,
+  GAUDI2_QUEUE_ID_NIC_9_0 = 192,
+  GAUDI2_QUEUE_ID_NIC_9_1 = 193,
+  GAUDI2_QUEUE_ID_NIC_9_2 = 194,
+  GAUDI2_QUEUE_ID_NIC_9_3 = 195,
+  GAUDI2_QUEUE_ID_NIC_10_0 = 196,
+  GAUDI2_QUEUE_ID_NIC_10_1 = 197,
+  GAUDI2_QUEUE_ID_NIC_10_2 = 198,
+  GAUDI2_QUEUE_ID_NIC_10_3 = 199,
+  GAUDI2_QUEUE_ID_NIC_11_0 = 200,
+  GAUDI2_QUEUE_ID_NIC_11_1 = 201,
+  GAUDI2_QUEUE_ID_NIC_11_2 = 202,
+  GAUDI2_QUEUE_ID_NIC_11_3 = 203,
+  GAUDI2_QUEUE_ID_NIC_12_0 = 204,
+  GAUDI2_QUEUE_ID_NIC_12_1 = 205,
+  GAUDI2_QUEUE_ID_NIC_12_2 = 206,
+  GAUDI2_QUEUE_ID_NIC_12_3 = 207,
+  GAUDI2_QUEUE_ID_NIC_13_0 = 208,
+  GAUDI2_QUEUE_ID_NIC_13_1 = 209,
+  GAUDI2_QUEUE_ID_NIC_13_2 = 210,
+  GAUDI2_QUEUE_ID_NIC_13_3 = 211,
+  GAUDI2_QUEUE_ID_NIC_14_0 = 212,
+  GAUDI2_QUEUE_ID_NIC_14_1 = 213,
+  GAUDI2_QUEUE_ID_NIC_14_2 = 214,
+  GAUDI2_QUEUE_ID_NIC_14_3 = 215,
+  GAUDI2_QUEUE_ID_NIC_15_0 = 216,
+  GAUDI2_QUEUE_ID_NIC_15_1 = 217,
+  GAUDI2_QUEUE_ID_NIC_15_2 = 218,
+  GAUDI2_QUEUE_ID_NIC_15_3 = 219,
+  GAUDI2_QUEUE_ID_NIC_16_0 = 220,
+  GAUDI2_QUEUE_ID_NIC_16_1 = 221,
+  GAUDI2_QUEUE_ID_NIC_16_2 = 222,
+  GAUDI2_QUEUE_ID_NIC_16_3 = 223,
+  GAUDI2_QUEUE_ID_NIC_17_0 = 224,
+  GAUDI2_QUEUE_ID_NIC_17_1 = 225,
+  GAUDI2_QUEUE_ID_NIC_17_2 = 226,
+  GAUDI2_QUEUE_ID_NIC_17_3 = 227,
+  GAUDI2_QUEUE_ID_NIC_18_0 = 228,
+  GAUDI2_QUEUE_ID_NIC_18_1 = 229,
+  GAUDI2_QUEUE_ID_NIC_18_2 = 230,
+  GAUDI2_QUEUE_ID_NIC_18_3 = 231,
+  GAUDI2_QUEUE_ID_NIC_19_0 = 232,
+  GAUDI2_QUEUE_ID_NIC_19_1 = 233,
+  GAUDI2_QUEUE_ID_NIC_19_2 = 234,
+  GAUDI2_QUEUE_ID_NIC_19_3 = 235,
+  GAUDI2_QUEUE_ID_NIC_20_0 = 236,
+  GAUDI2_QUEUE_ID_NIC_20_1 = 237,
+  GAUDI2_QUEUE_ID_NIC_20_2 = 238,
+  GAUDI2_QUEUE_ID_NIC_20_3 = 239,
+  GAUDI2_QUEUE_ID_NIC_21_0 = 240,
+  GAUDI2_QUEUE_ID_NIC_21_1 = 241,
+  GAUDI2_QUEUE_ID_NIC_21_2 = 242,
+  GAUDI2_QUEUE_ID_NIC_21_3 = 243,
+  GAUDI2_QUEUE_ID_NIC_22_0 = 244,
+  GAUDI2_QUEUE_ID_NIC_22_1 = 245,
+  GAUDI2_QUEUE_ID_NIC_22_2 = 246,
+  GAUDI2_QUEUE_ID_NIC_22_3 = 247,
+  GAUDI2_QUEUE_ID_NIC_23_0 = 248,
+  GAUDI2_QUEUE_ID_NIC_23_1 = 249,
+  GAUDI2_QUEUE_ID_NIC_23_2 = 250,
+  GAUDI2_QUEUE_ID_NIC_23_3 = 251,
+  GAUDI2_QUEUE_ID_ROT_0_0 = 252,
+  GAUDI2_QUEUE_ID_ROT_0_1 = 253,
+  GAUDI2_QUEUE_ID_ROT_0_2 = 254,
+  GAUDI2_QUEUE_ID_ROT_0_3 = 255,
+  GAUDI2_QUEUE_ID_ROT_1_0 = 256,
+  GAUDI2_QUEUE_ID_ROT_1_1 = 257,
+  GAUDI2_QUEUE_ID_ROT_1_2 = 258,
+  GAUDI2_QUEUE_ID_ROT_1_3 = 259,
+  GAUDI2_QUEUE_ID_CPU_PQ = 260,
+  GAUDI2_QUEUE_ID_SIZE
+};
 enum goya_engine_id {
   GOYA_ENGINE_ID_DMA_0 = 0,
   GOYA_ENGINE_ID_DMA_1,
@@ -208,6 +473,84 @@
   GAUDI_ENGINE_ID_NIC_9,
   GAUDI_ENGINE_ID_SIZE
 };
+enum gaudi2_engine_id {
+  GAUDI2_DCORE0_ENGINE_ID_EDMA_0 = 0,
+  GAUDI2_DCORE0_ENGINE_ID_EDMA_1,
+  GAUDI2_DCORE0_ENGINE_ID_MME,
+  GAUDI2_DCORE0_ENGINE_ID_TPC_0,
+  GAUDI2_DCORE0_ENGINE_ID_TPC_1,
+  GAUDI2_DCORE0_ENGINE_ID_TPC_2,
+  GAUDI2_DCORE0_ENGINE_ID_TPC_3,
+  GAUDI2_DCORE0_ENGINE_ID_TPC_4,
+  GAUDI2_DCORE0_ENGINE_ID_TPC_5,
+  GAUDI2_DCORE0_ENGINE_ID_DEC_0,
+  GAUDI2_DCORE0_ENGINE_ID_DEC_1,
+  GAUDI2_DCORE1_ENGINE_ID_EDMA_0,
+  GAUDI2_DCORE1_ENGINE_ID_EDMA_1,
+  GAUDI2_DCORE1_ENGINE_ID_MME,
+  GAUDI2_DCORE1_ENGINE_ID_TPC_0,
+  GAUDI2_DCORE1_ENGINE_ID_TPC_1,
+  GAUDI2_DCORE1_ENGINE_ID_TPC_2,
+  GAUDI2_DCORE1_ENGINE_ID_TPC_3,
+  GAUDI2_DCORE1_ENGINE_ID_TPC_4,
+  GAUDI2_DCORE1_ENGINE_ID_TPC_5,
+  GAUDI2_DCORE1_ENGINE_ID_DEC_0,
+  GAUDI2_DCORE1_ENGINE_ID_DEC_1,
+  GAUDI2_DCORE2_ENGINE_ID_EDMA_0,
+  GAUDI2_DCORE2_ENGINE_ID_EDMA_1,
+  GAUDI2_DCORE2_ENGINE_ID_MME,
+  GAUDI2_DCORE2_ENGINE_ID_TPC_0,
+  GAUDI2_DCORE2_ENGINE_ID_TPC_1,
+  GAUDI2_DCORE2_ENGINE_ID_TPC_2,
+  GAUDI2_DCORE2_ENGINE_ID_TPC_3,
+  GAUDI2_DCORE2_ENGINE_ID_TPC_4,
+  GAUDI2_DCORE2_ENGINE_ID_TPC_5,
+  GAUDI2_DCORE2_ENGINE_ID_DEC_0,
+  GAUDI2_DCORE2_ENGINE_ID_DEC_1,
+  GAUDI2_DCORE3_ENGINE_ID_EDMA_0,
+  GAUDI2_DCORE3_ENGINE_ID_EDMA_1,
+  GAUDI2_DCORE3_ENGINE_ID_MME,
+  GAUDI2_DCORE3_ENGINE_ID_TPC_0,
+  GAUDI2_DCORE3_ENGINE_ID_TPC_1,
+  GAUDI2_DCORE3_ENGINE_ID_TPC_2,
+  GAUDI2_DCORE3_ENGINE_ID_TPC_3,
+  GAUDI2_DCORE3_ENGINE_ID_TPC_4,
+  GAUDI2_DCORE3_ENGINE_ID_TPC_5,
+  GAUDI2_DCORE3_ENGINE_ID_DEC_0,
+  GAUDI2_DCORE3_ENGINE_ID_DEC_1,
+  GAUDI2_DCORE0_ENGINE_ID_TPC_6,
+  GAUDI2_ENGINE_ID_PDMA_0,
+  GAUDI2_ENGINE_ID_PDMA_1,
+  GAUDI2_ENGINE_ID_ROT_0,
+  GAUDI2_ENGINE_ID_ROT_1,
+  GAUDI2_PCIE_ENGINE_ID_DEC_0,
+  GAUDI2_PCIE_ENGINE_ID_DEC_1,
+  GAUDI2_ENGINE_ID_NIC0_0,
+  GAUDI2_ENGINE_ID_NIC0_1,
+  GAUDI2_ENGINE_ID_NIC1_0,
+  GAUDI2_ENGINE_ID_NIC1_1,
+  GAUDI2_ENGINE_ID_NIC2_0,
+  GAUDI2_ENGINE_ID_NIC2_1,
+  GAUDI2_ENGINE_ID_NIC3_0,
+  GAUDI2_ENGINE_ID_NIC3_1,
+  GAUDI2_ENGINE_ID_NIC4_0,
+  GAUDI2_ENGINE_ID_NIC4_1,
+  GAUDI2_ENGINE_ID_NIC5_0,
+  GAUDI2_ENGINE_ID_NIC5_1,
+  GAUDI2_ENGINE_ID_NIC6_0,
+  GAUDI2_ENGINE_ID_NIC6_1,
+  GAUDI2_ENGINE_ID_NIC7_0,
+  GAUDI2_ENGINE_ID_NIC7_1,
+  GAUDI2_ENGINE_ID_NIC8_0,
+  GAUDI2_ENGINE_ID_NIC8_1,
+  GAUDI2_ENGINE_ID_NIC9_0,
+  GAUDI2_ENGINE_ID_NIC9_1,
+  GAUDI2_ENGINE_ID_NIC10_0,
+  GAUDI2_ENGINE_ID_NIC10_1,
+  GAUDI2_ENGINE_ID_NIC11_0,
+  GAUDI2_ENGINE_ID_NIC11_1,
+  GAUDI2_ENGINE_ID_SIZE
+};
 enum hl_goya_pll_index {
   HL_GOYA_CPU_PLL = 0,
   HL_GOYA_IC_PLL,
@@ -231,21 +574,56 @@
   HL_GAUDI_IF_PLL,
   HL_GAUDI_PLL_MAX
 };
+enum hl_gaudi2_pll_index {
+  HL_GAUDI2_CPU_PLL = 0,
+  HL_GAUDI2_PCI_PLL,
+  HL_GAUDI2_SRAM_PLL,
+  HL_GAUDI2_HBM_PLL,
+  HL_GAUDI2_NIC_PLL,
+  HL_GAUDI2_DMA_PLL,
+  HL_GAUDI2_MESH_PLL,
+  HL_GAUDI2_MME_PLL,
+  HL_GAUDI2_TPC_PLL,
+  HL_GAUDI2_IF_PLL,
+  HL_GAUDI2_VID_PLL,
+  HL_GAUDI2_MSS_PLL,
+  HL_GAUDI2_PLL_MAX
+};
+enum hl_goya_dma_direction {
+  HL_DMA_HOST_TO_DRAM,
+  HL_DMA_HOST_TO_SRAM,
+  HL_DMA_DRAM_TO_SRAM,
+  HL_DMA_SRAM_TO_DRAM,
+  HL_DMA_SRAM_TO_HOST,
+  HL_DMA_DRAM_TO_HOST,
+  HL_DMA_DRAM_TO_DRAM,
+  HL_DMA_SRAM_TO_SRAM,
+  HL_DMA_ENUM_MAX
+};
 enum hl_device_status {
   HL_DEVICE_STATUS_OPERATIONAL,
   HL_DEVICE_STATUS_IN_RESET,
   HL_DEVICE_STATUS_MALFUNCTION,
   HL_DEVICE_STATUS_NEEDS_RESET,
   HL_DEVICE_STATUS_IN_DEVICE_CREATION,
-  HL_DEVICE_STATUS_LAST = HL_DEVICE_STATUS_IN_DEVICE_CREATION
+  HL_DEVICE_STATUS_IN_RESET_AFTER_DEVICE_RELEASE,
+  HL_DEVICE_STATUS_LAST = HL_DEVICE_STATUS_IN_RESET_AFTER_DEVICE_RELEASE
 };
 enum hl_server_type {
   HL_SERVER_TYPE_UNKNOWN = 0,
   HL_SERVER_GAUDI_HLS1 = 1,
   HL_SERVER_GAUDI_HLS1H = 2,
   HL_SERVER_GAUDI_TYPE1 = 3,
-  HL_SERVER_GAUDI_TYPE2 = 4
+  HL_SERVER_GAUDI_TYPE2 = 4,
+  HL_SERVER_GAUDI2_HLS2 = 5
 };
+#define HL_NOTIFIER_EVENT_TPC_ASSERT (1ULL << 0)
+#define HL_NOTIFIER_EVENT_UNDEFINED_OPCODE (1ULL << 1)
+#define HL_NOTIFIER_EVENT_DEVICE_RESET (1ULL << 2)
+#define HL_NOTIFIER_EVENT_CS_TIMEOUT (1ULL << 3)
+#define HL_NOTIFIER_EVENT_DEVICE_UNAVAILABLE (1ULL << 4)
+#define HL_NOTIFIER_EVENT_USER_ENGINE_ERR (1ULL << 5)
+#define HL_NOTIFIER_EVENT_GENERAL_HW_ERR (1ULL << 6)
 #define HL_INFO_HW_IP_INFO 0
 #define HL_INFO_HW_EVENTS 1
 #define HL_INFO_DRAM_USAGE 2
@@ -269,8 +647,16 @@
 #define HL_INFO_LAST_ERR_OPEN_DEV_TIME 23
 #define HL_INFO_CS_TIMEOUT_EVENT 24
 #define HL_INFO_RAZWI_EVENT 25
+#define HL_INFO_DEV_MEM_ALLOC_PAGE_SIZES 26
+#define HL_INFO_SECURED_ATTESTATION 27
+#define HL_INFO_REGISTER_EVENTFD 28
+#define HL_INFO_UNREGISTER_EVENTFD 29
+#define HL_INFO_GET_EVENTS 30
+#define HL_INFO_UNDEFINED_OPCODE_EVENT 31
+#define HL_INFO_ENGINE_STATUS 32
 #define HL_INFO_VERSION_MAX_LEN 128
 #define HL_INFO_CARD_NAME_MAX_LEN 16
+#define HL_ENGINES_DATA_MAX_SIZE SZ_1M
 struct hl_info_hw_ip_info {
   __u64 sram_base_address;
   __u64 dram_base_address;
@@ -279,7 +665,7 @@
   __u32 num_of_events;
   __u32 device_id;
   __u32 module_id;
-  __u32 reserved;
+  __u32 decoder_enabled_mask;
   __u16 first_available_interrupt_id;
   __u16 server_type;
   __u32 cpld_version;
@@ -289,11 +675,17 @@
   __u32 psoc_pci_pll_div_factor;
   __u8 tpc_enabled_mask;
   __u8 dram_enabled;
-  __u8 pad[2];
+  __u8 security_enabled;
+  __u8 mme_master_slave_mode;
   __u8 cpucp_version[HL_INFO_VERSION_MAX_LEN];
   __u8 card_name[HL_INFO_CARD_NAME_MAX_LEN];
-  __u64 reserved2;
+  __u64 tpc_enabled_mask_ext;
   __u64 dram_page_size;
+  __u32 edma_enabled_mask;
+  __u16 number_of_user_interrupts;
+  __u16 pad2;
+  __u64 reserved4;
+  __u64 device_mem_alloc_default_page_size;
 };
 struct hl_info_dram_usage {
   __u64 dram_free_mem;
@@ -353,6 +745,9 @@
 struct hl_open_stats_info {
   __u64 open_counter;
   __u64 last_open_period_ms;
+  __u8 is_compute_ctx_active;
+  __u8 compute_ctx_in_release;
+  __u8 pad[6];
 };
 struct hl_power_info {
   __u64 power;
@@ -395,6 +790,40 @@
   __u8 error_type;
   __u8 pad[2];
 };
+#define MAX_QMAN_STREAMS_INFO 4
+#define OPCODE_INFO_MAX_ADDR_SIZE 8
+struct hl_info_undefined_opcode_event {
+  __s64 timestamp;
+  __u64 cb_addr_streams[MAX_QMAN_STREAMS_INFO][OPCODE_INFO_MAX_ADDR_SIZE];
+  __u64 cq_addr;
+  __u32 cq_size;
+  __u32 cb_addr_streams_len;
+  __u32 engine_id;
+  __u32 stream_id;
+};
+struct hl_info_dev_memalloc_page_sizes {
+  __u64 page_order_bitmask;
+};
+#define SEC_PCR_DATA_BUF_SZ 256
+#define SEC_PCR_QUOTE_BUF_SZ 510
+#define SEC_SIGNATURE_BUF_SZ 255
+#define SEC_PUB_DATA_BUF_SZ 510
+#define SEC_CERTIFICATE_BUF_SZ 2046
+struct hl_info_sec_attest {
+  __u32 nonce;
+  __u16 pcr_quote_len;
+  __u16 pub_data_len;
+  __u16 certificate_len;
+  __u8 pcr_num_reg;
+  __u8 pcr_reg_len;
+  __u8 quote_sig_len;
+  __u8 pcr_data[SEC_PCR_DATA_BUF_SZ];
+  __u8 pcr_quote[SEC_PCR_QUOTE_BUF_SZ];
+  __u8 quote_sig[SEC_SIGNATURE_BUF_SZ];
+  __u8 public_data[SEC_PUB_DATA_BUF_SZ];
+  __u8 certificate[SEC_CERTIFICATE_BUF_SZ];
+  __u8 pad0[2];
+};
 enum gaudi_dcores {
   HL_GAUDI_WS_DCORE,
   HL_GAUDI_WN_DCORE,
@@ -410,6 +839,9 @@
     __u32 ctx_id;
     __u32 period_ms;
     __u32 pll_index;
+    __u32 eventfd;
+    __u32 user_buffer_actual_size;
+    __u32 sec_attest_nonce;
   };
   __u32 pad;
 };
@@ -472,11 +904,23 @@
 #define HL_CS_FLAGS_ENCAP_SIGNALS 0x800
 #define HL_CS_FLAGS_RESERVE_SIGNALS_ONLY 0x1000
 #define HL_CS_FLAGS_UNRESERVE_SIGNALS_ONLY 0x2000
+#define HL_CS_FLAGS_ENGINE_CORE_COMMAND 0x4000
 #define HL_CS_STATUS_SUCCESS 0
 #define HL_MAX_JOBS_PER_CS 512
+#define HL_ENGINE_CORE_HALT (1 << 0)
+#define HL_ENGINE_CORE_RUN (1 << 1)
 struct hl_cs_in {
-  __u64 chunks_restore;
-  __u64 chunks_execute;
+  union {
+    struct {
+      __u64 chunks_restore;
+      __u64 chunks_execute;
+    };
+    struct {
+      __u64 engine_cores;
+      __u32 num_engine_cores;
+      __u32 core_command;
+    };
+  };
   union {
     __u64 seq;
     __u32 encaps_sig_handle_id;
@@ -490,6 +934,7 @@
   __u32 timeout;
   __u32 cs_flags;
   __u32 ctx_id;
+  __u8 pad[4];
 };
 struct hl_cs_out {
   union {
@@ -510,8 +955,11 @@
 };
 #define HL_WAIT_CS_FLAGS_INTERRUPT 0x2
 #define HL_WAIT_CS_FLAGS_INTERRUPT_MASK 0xFFF00000
+#define HL_WAIT_CS_FLAGS_ANY_CQ_INTERRUPT 0xFFF00000
+#define HL_WAIT_CS_FLAGS_ANY_DEC_INTERRUPT 0xFFE00000
 #define HL_WAIT_CS_FLAGS_MULTI_CS 0x4
 #define HL_WAIT_CS_FLAGS_INTERRUPT_KERNEL_CQ 0x10
+#define HL_WAIT_CS_FLAGS_REGISTER_INTERRUPT 0x20
 #define HL_WAIT_MULTI_CS_LIST_MAX_LEN 32
 struct hl_wait_cs_in {
   union {
@@ -537,6 +985,8 @@
     __u64 interrupt_timeout_us;
   };
   __u64 cq_counters_offset;
+  __u64 timestamp_handle;
+  __u64 timestamp_offset;
 };
 #define HL_WAIT_CS_STATUS_COMPLETED 0
 #define HL_WAIT_CS_STATUS_BUSY 1
@@ -561,14 +1011,17 @@
 #define HL_MEM_OP_UNMAP 3
 #define HL_MEM_OP_MAP_BLOCK 4
 #define HL_MEM_OP_EXPORT_DMABUF_FD 5
+#define HL_MEM_OP_TS_ALLOC 6
 #define HL_MEM_CONTIGUOUS 0x1
 #define HL_MEM_SHARED 0x2
 #define HL_MEM_USERPTR 0x4
 #define HL_MEM_FORCE_HINT 0x8
+#define HL_MEM_PREFETCH 0x40
 struct hl_mem_in {
   union {
     struct {
       __u64 mem_size;
+      __u64 page_size;
     } alloc;
     struct {
       __u64 handle;
@@ -596,7 +1049,7 @@
   __u32 op;
   __u32 flags;
   __u32 ctx_id;
-  __u32 pad;
+  __u32 num_of_elements;
 };
 struct hl_mem_out {
   union {
@@ -641,12 +1094,18 @@
   __u32 bw_win;
   __u32 win_capture;
   __u32 id;
-  __u32 pad;
+  __u32 control;
+  __u64 start_addr2;
+  __u64 end_addr2;
+  __u64 start_addr3;
+  __u64 end_addr3;
 };
 struct hl_debug_params_spmu {
   __u64 event_types[HL_DEBUG_MAX_AUX_VALUES];
   __u32 event_types_num;
-  __u32 pad;
+  __u32 pmtrc_val;
+  __u32 trc_ctrl_host_val;
+  __u32 trc_en_host_val;
 };
 #define HL_DEBUG_OP_ETR 0
 #define HL_DEBUG_OP_ETF 1
diff --git a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/misc/uacce/hisi_qm.h b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/misc/uacce/hisi_qm.h
index 87757a9..d2509d0 100644
--- a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/misc/uacce/hisi_qm.h
+++ b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/misc/uacce/hisi_qm.h
@@ -23,8 +23,15 @@
   __u16 id;
   __u16 qc_type;
 };
+struct hisi_qp_info {
+  __u32 sqe_size;
+  __u16 sq_depth;
+  __u16 cq_depth;
+  __u64 reserved;
+};
 #define HISI_QM_API_VER_BASE "hisi_qm_v1"
 #define HISI_QM_API_VER2_BASE "hisi_qm_v2"
 #define HISI_QM_API_VER3_BASE "hisi_qm_v3"
 #define UACCE_CMD_QM_SET_QP_CTX _IOWR('H', 10, struct hisi_qp_ctx)
+#define UACCE_CMD_QM_SET_QP_INFO _IOWR('H', 11, struct hisi_qp_info)
 #endif
diff --git a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/mtd/mtd-abi.h b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/mtd/mtd-abi.h
index 50ae565..6e26cae 100644
--- a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/mtd/mtd-abi.h
+++ b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/mtd/mtd-abi.h
@@ -52,6 +52,21 @@
   __u8 mode;
   __u8 padding[7];
 };
+struct mtd_read_req_ecc_stats {
+  __u32 uncorrectable_errors;
+  __u32 corrected_bitflips;
+  __u32 max_bitflips;
+};
+struct mtd_read_req {
+  __u64 start;
+  __u64 len;
+  __u64 ooblen;
+  __u64 usr_data;
+  __u64 usr_oob;
+  __u8 mode;
+  __u8 padding[7];
+  struct mtd_read_req_ecc_stats ecc_stats;
+};
 #define MTD_ABSENT 0
 #define MTD_RAM 1
 #define MTD_ROM 2
@@ -122,6 +137,7 @@
 #define MEMISLOCKED _IOR('M', 23, struct erase_info_user)
 #define MEMWRITE _IOWR('M', 24, struct mtd_write_req)
 #define OTPERASE _IOW('M', 25, struct otp_info)
+#define MEMREAD _IOWR('M', 26, struct mtd_read_req)
 struct nand_oobinfo {
   __u32 useecc;
   __u32 eccbytes;
diff --git a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/mtd/ubi-user.h b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/mtd/ubi-user.h
index 866fbd2..db203d5 100644
--- a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/mtd/ubi-user.h
+++ b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/mtd/ubi-user.h
@@ -56,7 +56,8 @@
   __s32 mtd_num;
   __s32 vid_hdr_offset;
   __s16 max_beb_per1024;
-  __s8 padding[10];
+  __s8 disable_fm;
+  __s8 padding[9];
 };
 enum {
   UBI_VOL_SKIP_CRC_CHECK_FLG = 0x1,
@@ -71,11 +72,11 @@
   __s16 name_len;
   __s8 padding2[4];
   char name[UBI_MAX_VOLUME_NAME + 1];
-} __packed;
+} __attribute__((__packed__));
 struct ubi_rsvol_req {
   __s64 bytes;
   __s32 vol_id;
-} __packed;
+} __attribute__((__packed__));
 struct ubi_rnvol_req {
   __s32 count;
   __s8 padding1[12];
@@ -85,24 +86,24 @@
     __s8 padding2[2];
     char name[UBI_MAX_VOLUME_NAME + 1];
   } ents[UBI_MAX_RNVOL];
-} __packed;
+} __attribute__((__packed__));
 struct ubi_leb_change_req {
   __s32 lnum;
   __s32 bytes;
   __s8 dtype;
   __s8 padding[7];
-} __packed;
+} __attribute__((__packed__));
 struct ubi_map_req {
   __s32 lnum;
   __s8 dtype;
   __s8 padding[3];
-} __packed;
+} __attribute__((__packed__));
 struct ubi_set_vol_prop_req {
   __u8 property;
   __u8 padding[7];
   __u64 value;
-} __packed;
+} __attribute__((__packed__));
 struct ubi_blkcreate_req {
   __s8 padding[128];
-} __packed;
+} __attribute__((__packed__));
 #endif
diff --git a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/rdma/efa-abi.h b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/rdma/efa-abi.h
index 4b6842b..bfb3f18 100644
--- a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/rdma/efa-abi.h
+++ b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/rdma/efa-abi.h
@@ -49,6 +49,7 @@
 };
 enum {
   EFA_CREATE_CQ_WITH_COMPLETION_CHANNEL = 1 << 0,
+  EFA_CREATE_CQ_WITH_SGID = 1 << 1,
 };
 struct efa_ibv_create_cq {
   __u32 comp_mask;
@@ -102,6 +103,7 @@
   EFA_QUERY_DEVICE_CAPS_RDMA_READ = 1 << 0,
   EFA_QUERY_DEVICE_CAPS_RNR_RETRY = 1 << 1,
   EFA_QUERY_DEVICE_CAPS_CQ_NOTIFICATIONS = 1 << 2,
+  EFA_QUERY_DEVICE_CAPS_CQ_WITH_SGID = 1 << 3,
 };
 struct efa_ibv_ex_query_device_resp {
   __u32 comp_mask;
diff --git a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/rdma/erdma-abi.h b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/rdma/erdma-abi.h
new file mode 100644
index 0000000..4df1757
--- /dev/null
+++ b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/rdma/erdma-abi.h
@@ -0,0 +1,54 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef __ERDMA_USER_H__
+#define __ERDMA_USER_H__
+#include <linux/types.h>
+#define ERDMA_ABI_VERSION 1
+struct erdma_ureq_create_cq {
+  __aligned_u64 db_record_va;
+  __aligned_u64 qbuf_va;
+  __u32 qbuf_len;
+  __u32 rsvd0;
+};
+struct erdma_uresp_create_cq {
+  __u32 cq_id;
+  __u32 num_cqe;
+};
+struct erdma_ureq_create_qp {
+  __aligned_u64 db_record_va;
+  __aligned_u64 qbuf_va;
+  __u32 qbuf_len;
+  __u32 rsvd0;
+};
+struct erdma_uresp_create_qp {
+  __u32 qp_id;
+  __u32 num_sqe;
+  __u32 num_rqe;
+  __u32 rq_offset;
+};
+struct erdma_uresp_alloc_ctx {
+  __u32 dev_id;
+  __u32 pad;
+  __u32 sdb_type;
+  __u32 sdb_offset;
+  __aligned_u64 sdb;
+  __aligned_u64 rdb;
+  __aligned_u64 cdb;
+};
+#endif
diff --git a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/rdma/hfi/hfi1_user.h b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/rdma/hfi/hfi1_user.h
index 3352907..6d58600 100644
--- a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/rdma/hfi/hfi1_user.h
+++ b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/rdma/hfi/hfi1_user.h
@@ -80,7 +80,7 @@
 struct hfi1_status {
   __aligned_u64 dev;
   __aligned_u64 port;
-  char freezemsg[0];
+  char freezemsg[];
 };
 enum sdma_req_opcode {
   EXPECTED = 0,
diff --git a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/rdma/ib_user_ioctl_verbs.h b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/rdma/ib_user_ioctl_verbs.h
index 3b94907..766d5be 100644
--- a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/rdma/ib_user_ioctl_verbs.h
+++ b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/rdma/ib_user_ioctl_verbs.h
@@ -191,6 +191,7 @@
   RDMA_DRIVER_QIB,
   RDMA_DRIVER_EFA,
   RDMA_DRIVER_SIW,
+  RDMA_DRIVER_ERDMA,
 };
 enum ib_uverbs_gid_type {
   IB_UVERBS_GID_TYPE_IB,
diff --git a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/rdma/ib_user_verbs.h b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/rdma/ib_user_verbs.h
index d9ac9e0..552c80a 100644
--- a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/rdma/ib_user_verbs.h
+++ b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/rdma/ib_user_verbs.h
@@ -106,16 +106,16 @@
 };
 struct ib_uverbs_get_context {
   __aligned_u64 response;
-  __aligned_u64 driver_data[0];
+  __aligned_u64 driver_data[];
 };
 struct ib_uverbs_get_context_resp {
   __u32 async_fd;
   __u32 num_comp_vectors;
-  __aligned_u64 driver_data[0];
+  __aligned_u64 driver_data[];
 };
 struct ib_uverbs_query_device {
   __aligned_u64 response;
-  __aligned_u64 driver_data[0];
+  __aligned_u64 driver_data[];
 };
 struct ib_uverbs_query_device_resp {
   __aligned_u64 fw_ver;
@@ -208,7 +208,7 @@
   __aligned_u64 response;
   __u8 port_num;
   __u8 reserved[7];
-  __aligned_u64 driver_data[0];
+  __aligned_u64 driver_data[];
 };
 struct ib_uverbs_query_port_resp {
   __u32 port_cap_flags;
@@ -236,11 +236,11 @@
 };
 struct ib_uverbs_alloc_pd {
   __aligned_u64 response;
-  __aligned_u64 driver_data[0];
+  __aligned_u64 driver_data[];
 };
 struct ib_uverbs_alloc_pd_resp {
   __u32 pd_handle;
-  __u32 driver_data[0];
+  __u32 driver_data[];
 };
 struct ib_uverbs_dealloc_pd {
   __u32 pd_handle;
@@ -249,11 +249,11 @@
   __aligned_u64 response;
   __u32 fd;
   __u32 oflags;
-  __aligned_u64 driver_data[0];
+  __aligned_u64 driver_data[];
 };
 struct ib_uverbs_open_xrcd_resp {
   __u32 xrcd_handle;
-  __u32 driver_data[0];
+  __u32 driver_data[];
 };
 struct ib_uverbs_close_xrcd {
   __u32 xrcd_handle;
@@ -265,13 +265,13 @@
   __aligned_u64 hca_va;
   __u32 pd_handle;
   __u32 access_flags;
-  __aligned_u64 driver_data[0];
+  __aligned_u64 driver_data[];
 };
 struct ib_uverbs_reg_mr_resp {
   __u32 mr_handle;
   __u32 lkey;
   __u32 rkey;
-  __u32 driver_data[0];
+  __u32 driver_data[];
 };
 struct ib_uverbs_rereg_mr {
   __aligned_u64 response;
@@ -282,12 +282,12 @@
   __aligned_u64 hca_va;
   __u32 pd_handle;
   __u32 access_flags;
-  __aligned_u64 driver_data[0];
+  __aligned_u64 driver_data[];
 };
 struct ib_uverbs_rereg_mr_resp {
   __u32 lkey;
   __u32 rkey;
-  __aligned_u64 driver_data[0];
+  __aligned_u64 driver_data[];
 };
 struct ib_uverbs_dereg_mr {
   __u32 mr_handle;
@@ -297,12 +297,12 @@
   __u32 pd_handle;
   __u8 mw_type;
   __u8 reserved[3];
-  __aligned_u64 driver_data[0];
+  __aligned_u64 driver_data[];
 };
 struct ib_uverbs_alloc_mw_resp {
   __u32 mw_handle;
   __u32 rkey;
-  __aligned_u64 driver_data[0];
+  __aligned_u64 driver_data[];
 };
 struct ib_uverbs_dealloc_mw {
   __u32 mw_handle;
@@ -320,7 +320,7 @@
   __u32 comp_vector;
   __s32 comp_channel;
   __u32 reserved;
-  __aligned_u64 driver_data[0];
+  __aligned_u64 driver_data[];
 };
 enum ib_uverbs_ex_create_cq_flags {
   IB_UVERBS_CQ_FLAGS_TIMESTAMP_COMPLETION = 1 << 0,
@@ -349,12 +349,12 @@
   __aligned_u64 response;
   __u32 cq_handle;
   __u32 cqe;
-  __aligned_u64 driver_data[0];
+  __aligned_u64 driver_data[];
 };
 struct ib_uverbs_resize_cq_resp {
   __u32 cqe;
   __u32 reserved;
-  __aligned_u64 driver_data[0];
+  __aligned_u64 driver_data[];
 };
 struct ib_uverbs_poll_cq {
   __aligned_u64 response;
@@ -394,7 +394,7 @@
 struct ib_uverbs_poll_cq_resp {
   __u32 count;
   __u32 reserved;
-  struct ib_uverbs_wc wc[0];
+  struct ib_uverbs_wc wc[];
 };
 struct ib_uverbs_req_notify_cq {
   __u32 cq_handle;
@@ -476,7 +476,7 @@
   __u8 qp_type;
   __u8 is_srq;
   __u8 reserved;
-  __aligned_u64 driver_data[0];
+  __aligned_u64 driver_data[];
 };
 enum ib_uverbs_create_qp_mask {
   IB_UVERBS_CREATE_QP_MASK_IND_TABLE = 1UL << 0,
@@ -511,7 +511,7 @@
   __u32 qpn;
   __u8 qp_type;
   __u8 reserved[7];
-  __aligned_u64 driver_data[0];
+  __aligned_u64 driver_data[];
 };
 struct ib_uverbs_create_qp_resp {
   __u32 qp_handle;
@@ -547,7 +547,7 @@
   __aligned_u64 response;
   __u32 qp_handle;
   __u32 attr_mask;
-  __aligned_u64 driver_data[0];
+  __aligned_u64 driver_data[];
 };
 struct ib_uverbs_query_qp_resp {
   struct ib_uverbs_qp_dest dest;
@@ -580,7 +580,7 @@
   __u8 alt_timeout;
   __u8 sq_sig_all;
   __u8 reserved[5];
-  __aligned_u64 driver_data[0];
+  __aligned_u64 driver_data[];
 };
 struct ib_uverbs_modify_qp {
   struct ib_uverbs_qp_dest dest;
@@ -685,7 +685,7 @@
   __u32 wr_count;
   __u32 sge_count;
   __u32 wqe_size;
-  struct ib_uverbs_send_wr send_wr[0];
+  struct ib_uverbs_send_wr send_wr[];
 };
 struct ib_uverbs_post_send_resp {
   __u32 bad_wr;
@@ -701,7 +701,7 @@
   __u32 wr_count;
   __u32 sge_count;
   __u32 wqe_size;
-  struct ib_uverbs_recv_wr recv_wr[0];
+  struct ib_uverbs_recv_wr recv_wr[];
 };
 struct ib_uverbs_post_recv_resp {
   __u32 bad_wr;
@@ -712,7 +712,7 @@
   __u32 wr_count;
   __u32 sge_count;
   __u32 wqe_size;
-  struct ib_uverbs_recv_wr recv[0];
+  struct ib_uverbs_recv_wr recv[];
 };
 struct ib_uverbs_post_srq_recv_resp {
   __u32 bad_wr;
@@ -723,11 +723,11 @@
   __u32 pd_handle;
   __u32 reserved;
   struct ib_uverbs_ah_attr attr;
-  __aligned_u64 driver_data[0];
+  __aligned_u64 driver_data[];
 };
 struct ib_uverbs_create_ah_resp {
   __u32 ah_handle;
-  __u32 driver_data[0];
+  __u32 driver_data[];
 };
 struct ib_uverbs_destroy_ah {
   __u32 ah_handle;
@@ -737,14 +737,14 @@
   __u32 qp_handle;
   __u16 mlid;
   __u16 reserved;
-  __aligned_u64 driver_data[0];
+  __aligned_u64 driver_data[];
 };
 struct ib_uverbs_detach_mcast {
   __u8 gid[16];
   __u32 qp_handle;
   __u16 mlid;
   __u16 reserved;
-  __aligned_u64 driver_data[0];
+  __aligned_u64 driver_data[];
 };
 struct ib_uverbs_flow_spec_hdr {
   __u32 type;
@@ -944,7 +944,7 @@
   __u8 reserved[2];
   __u8 port;
   __u32 flags;
-  struct ib_uverbs_flow_spec_hdr flow_specs[0];
+  struct ib_uverbs_flow_spec_hdr flow_specs[];
 };
 struct ib_uverbs_create_flow {
   __u32 comp_mask;
@@ -966,7 +966,7 @@
   __u32 max_wr;
   __u32 max_sge;
   __u32 srq_limit;
-  __aligned_u64 driver_data[0];
+  __aligned_u64 driver_data[];
 };
 struct ib_uverbs_create_xsrq {
   __aligned_u64 response;
@@ -979,27 +979,27 @@
   __u32 max_num_tags;
   __u32 xrcd_handle;
   __u32 cq_handle;
-  __aligned_u64 driver_data[0];
+  __aligned_u64 driver_data[];
 };
 struct ib_uverbs_create_srq_resp {
   __u32 srq_handle;
   __u32 max_wr;
   __u32 max_sge;
   __u32 srqn;
-  __u32 driver_data[0];
+  __u32 driver_data[];
 };
 struct ib_uverbs_modify_srq {
   __u32 srq_handle;
   __u32 attr_mask;
   __u32 max_wr;
   __u32 srq_limit;
-  __aligned_u64 driver_data[0];
+  __aligned_u64 driver_data[];
 };
 struct ib_uverbs_query_srq {
   __aligned_u64 response;
   __u32 srq_handle;
   __u32 reserved;
-  __aligned_u64 driver_data[0];
+  __aligned_u64 driver_data[];
 };
 struct ib_uverbs_query_srq_resp {
   __u32 max_wr;
@@ -1056,7 +1056,7 @@
 struct ib_uverbs_ex_create_rwq_ind_table {
   __u32 comp_mask;
   __u32 log_ind_tbl_size;
-  __u32 wq_handles[0];
+  __u32 wq_handles[];
 };
 struct ib_uverbs_ex_create_rwq_ind_table_resp {
   __u32 comp_mask;
@@ -1079,4 +1079,37 @@
   __u32 reserved;
 };
 #define IB_DEVICE_NAME_MAX 64
+enum ib_uverbs_device_cap_flags {
+  IB_UVERBS_DEVICE_RESIZE_MAX_WR = 1 << 0,
+  IB_UVERBS_DEVICE_BAD_PKEY_CNTR = 1 << 1,
+  IB_UVERBS_DEVICE_BAD_QKEY_CNTR = 1 << 2,
+  IB_UVERBS_DEVICE_RAW_MULTI = 1 << 3,
+  IB_UVERBS_DEVICE_AUTO_PATH_MIG = 1 << 4,
+  IB_UVERBS_DEVICE_CHANGE_PHY_PORT = 1 << 5,
+  IB_UVERBS_DEVICE_UD_AV_PORT_ENFORCE = 1 << 6,
+  IB_UVERBS_DEVICE_CURR_QP_STATE_MOD = 1 << 7,
+  IB_UVERBS_DEVICE_SHUTDOWN_PORT = 1 << 8,
+  IB_UVERBS_DEVICE_PORT_ACTIVE_EVENT = 1 << 10,
+  IB_UVERBS_DEVICE_SYS_IMAGE_GUID = 1 << 11,
+  IB_UVERBS_DEVICE_RC_RNR_NAK_GEN = 1 << 12,
+  IB_UVERBS_DEVICE_SRQ_RESIZE = 1 << 13,
+  IB_UVERBS_DEVICE_N_NOTIFY_CQ = 1 << 14,
+  IB_UVERBS_DEVICE_MEM_WINDOW = 1 << 17,
+  IB_UVERBS_DEVICE_UD_IP_CSUM = 1 << 18,
+  IB_UVERBS_DEVICE_XRC = 1 << 20,
+  IB_UVERBS_DEVICE_MEM_MGT_EXTENSIONS = 1 << 21,
+  IB_UVERBS_DEVICE_MEM_WINDOW_TYPE_2A = 1 << 23,
+  IB_UVERBS_DEVICE_MEM_WINDOW_TYPE_2B = 1 << 24,
+  IB_UVERBS_DEVICE_RC_IP_CSUM = 1 << 25,
+  IB_UVERBS_DEVICE_RAW_IP_CSUM = 1 << 26,
+  IB_UVERBS_DEVICE_MANAGED_FLOW_STEERING = 1 << 29,
+  IB_UVERBS_DEVICE_RAW_SCATTER_FCS = 1ULL << 34,
+  IB_UVERBS_DEVICE_PCI_WRITE_END_PADDING = 1ULL << 36,
+};
+enum ib_uverbs_raw_packet_caps {
+  IB_UVERBS_RAW_PACKET_CAP_CVLAN_STRIPPING = 1 << 0,
+  IB_UVERBS_RAW_PACKET_CAP_SCATTER_FCS = 1 << 1,
+  IB_UVERBS_RAW_PACKET_CAP_IP_CSUM = 1 << 2,
+  IB_UVERBS_RAW_PACKET_CAP_DELAY_DROP = 1 << 3,
+};
 #endif
diff --git a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/rdma/mlx5-abi.h b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/rdma/mlx5-abi.h
index aadb20e..f41c887 100644
--- a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/rdma/mlx5-abi.h
+++ b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/rdma/mlx5-abi.h
@@ -70,6 +70,7 @@
   MLX5_IB_ALLOC_UCONTEXT_RESP_MASK_ECE = 1UL << 2,
   MLX5_IB_ALLOC_UCONTEXT_RESP_MASK_SQD2RTS = 1UL << 3,
   MLX5_IB_ALLOC_UCONTEXT_RESP_MASK_REAL_TIME_TS = 1UL << 4,
+  MLX5_IB_ALLOC_UCONTEXT_RESP_MASK_MKEY_UPDATE_TAG = 1UL << 5,
 };
 enum mlx5_user_cmds_supp_uhw {
   MLX5_USER_CMDS_SUPP_UHW_QUERY_DEVICE = 1 << 0,
diff --git a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/rdma/mlx5_user_ioctl_cmds.h b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/rdma/mlx5_user_ioctl_cmds.h
index 862abcb..c060482 100644
--- a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/rdma/mlx5_user_ioctl_cmds.h
+++ b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/rdma/mlx5_user_ioctl_cmds.h
@@ -135,6 +135,7 @@
   MLX5_IB_ATTR_DEVX_UMEM_REG_ACCESS,
   MLX5_IB_ATTR_DEVX_UMEM_REG_OUT_ID,
   MLX5_IB_ATTR_DEVX_UMEM_REG_PGSZ_BITMAP,
+  MLX5_IB_ATTR_DEVX_UMEM_REG_DMABUF_FD,
 };
 enum mlx5_ib_devx_umem_dereg_attrs {
   MLX5_IB_ATTR_DEVX_UMEM_DEREG_HANDLE = (1U << UVERBS_ID_NS_SHIFT),
@@ -179,6 +180,7 @@
   MLX5_IB_OBJECT_VAR,
   MLX5_IB_OBJECT_PP,
   MLX5_IB_OBJECT_UAR,
+  MLX5_IB_OBJECT_STEERING_ANCHOR,
 };
 enum mlx5_ib_flow_matcher_create_attrs {
   MLX5_IB_ATTR_FLOW_MATCHER_CREATE_HANDLE = (1U << UVERBS_ID_NS_SHIFT),
@@ -195,6 +197,19 @@
   MLX5_IB_METHOD_FLOW_MATCHER_CREATE = (1U << UVERBS_ID_NS_SHIFT),
   MLX5_IB_METHOD_FLOW_MATCHER_DESTROY,
 };
+enum mlx5_ib_flow_steering_anchor_create_attrs {
+  MLX5_IB_ATTR_STEERING_ANCHOR_CREATE_HANDLE = (1U << UVERBS_ID_NS_SHIFT),
+  MLX5_IB_ATTR_STEERING_ANCHOR_FT_TYPE,
+  MLX5_IB_ATTR_STEERING_ANCHOR_PRIORITY,
+  MLX5_IB_ATTR_STEERING_ANCHOR_FT_ID,
+};
+enum mlx5_ib_flow_steering_anchor_destroy_attrs {
+  MLX5_IB_ATTR_STEERING_ANCHOR_DESTROY_HANDLE = (1U << UVERBS_ID_NS_SHIFT),
+};
+enum mlx5_ib_steering_anchor_methods {
+  MLX5_IB_METHOD_STEERING_ANCHOR_CREATE = (1U << UVERBS_ID_NS_SHIFT),
+  MLX5_IB_METHOD_STEERING_ANCHOR_DESTROY,
+};
 enum mlx5_ib_device_query_context_attrs {
   MLX5_IB_ATTR_QUERY_CONTEXT_RESP_UCTX = (1U << UVERBS_ID_NS_SHIFT),
 };
diff --git a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/rdma/mlx5_user_ioctl_verbs.h b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/rdma/mlx5_user_ioctl_verbs.h
index c3c3f89..f68c0b3 100644
--- a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/rdma/mlx5_user_ioctl_verbs.h
+++ b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/rdma/mlx5_user_ioctl_verbs.h
@@ -43,6 +43,7 @@
   MLX5_IB_UAPI_DM_TYPE_MEMIC,
   MLX5_IB_UAPI_DM_TYPE_STEERING_SW_ICM,
   MLX5_IB_UAPI_DM_TYPE_HEADER_MODIFY_SW_ICM,
+  MLX5_IB_UAPI_DM_TYPE_HEADER_MODIFY_PATTERN_SW_ICM,
 };
 enum mlx5_ib_uapi_devx_create_event_channel_flags {
   MLX5_IB_UAPI_DEVX_CR_EV_CH_FLAGS_OMIT_DATA = 1 << 0,
diff --git a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/rdma/rdma_user_cm.h b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/rdma/rdma_user_cm.h
index 7b1f7ee..37927f8 100644
--- a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/rdma/rdma_user_cm.h
+++ b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/rdma/rdma_user_cm.h
@@ -145,7 +145,7 @@
 struct rdma_ucm_query_path_resp {
   __u32 num_paths;
   __u32 reserved;
-  struct ib_path_rec_data path_data[0];
+  struct ib_path_rec_data path_data[];
 };
 struct rdma_ucm_conn_param {
   __u32 qp_num;
diff --git a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/rdma/rdma_user_ioctl_cmds.h b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/rdma/rdma_user_ioctl_cmds.h
index 22adfaa..dbaf9ed 100644
--- a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/rdma/rdma_user_ioctl_cmds.h
+++ b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/rdma/rdma_user_ioctl_cmds.h
@@ -50,6 +50,6 @@
   __aligned_u64 reserved1;
   __u32 driver_id;
   __u32 reserved2;
-  struct ib_uverbs_attr attrs[0];
+  struct ib_uverbs_attr attrs[];
 };
 #endif
diff --git a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/rdma/rdma_user_rxe.h b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/rdma/rdma_user_rxe.h
index cdb00c7..2476699 100644
--- a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/rdma/rdma_user_rxe.h
+++ b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/rdma/rdma_user_rxe.h
@@ -52,7 +52,7 @@
 };
 struct rxe_send_wr {
   __aligned_u64 wr_id;
-  __u32 num_sge;
+  __u32 reserved;
   __u32 opcode;
   __u32 send_flags;
   union {
@@ -128,7 +128,7 @@
 };
 struct rxe_recv_wqe {
   __aligned_u64 wr_id;
-  __u32 num_sge;
+  __u32 reserved;
   __u32 padding;
   struct rxe_dma_info dma;
 };
diff --git a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/scsi/fc/fc_els.h b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/scsi/fc/fc_els.h
index 04ae5b8..d29287d 100644
--- a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/scsi/fc/fc_els.h
+++ b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/scsi/fc/fc_els.h
@@ -142,7 +142,7 @@
 struct fc_tlv_desc {
   __be32 desc_tag;
   __be32 desc_len;
-  __u8 desc_value[0];
+  __u8 desc_value[];
 };
 #define FC_TLV_DESC_HDR_SZ sizeof(struct fc_tlv_desc)
 #define FC_TLV_DESC_LENGTH_FROM_SZ(desc) (sizeof(desc) - FC_TLV_DESC_HDR_SZ)
@@ -618,7 +618,7 @@
   __be32 event_threshold;
   __be32 event_count;
   __be32 pname_count;
-  __be64 pname_list[0];
+  __be64 pname_list[];
 };
 struct fc_fn_deli_desc {
   __be32 desc_tag;
@@ -636,7 +636,7 @@
   __be16 event_modifier;
   __be32 event_period;
   __be32 pname_count;
-  __be64 pname_list[0];
+  __be64 pname_list[];
 };
 struct fc_fn_congn_desc {
   __be32 desc_tag;
@@ -651,25 +651,25 @@
   __u8 fpin_cmd;
   __u8 fpin_zero[3];
   __be32 desc_len;
-  struct fc_tlv_desc fpin_desc[0];
+  struct fc_tlv_desc fpin_desc[];
 };
 struct fc_df_desc_fpin_reg {
   __be32 desc_tag;
   __be32 desc_len;
   __be32 count;
-  __be32 desc_tags[0];
+  __be32 desc_tags[];
 };
 struct fc_els_rdf {
   __u8 fpin_cmd;
   __u8 fpin_zero[3];
   __be32 desc_len;
-  struct fc_tlv_desc desc[0];
+  struct fc_tlv_desc desc[];
 };
 struct fc_els_rdf_resp {
   struct fc_els_ls_acc acc_hdr;
   __be32 desc_list_len;
   struct fc_els_lsri_desc lsri;
-  struct fc_tlv_desc desc[0];
+  struct fc_tlv_desc desc[];
 };
 struct fc_diag_lnkflt_desc {
   __be32 desc_tag;
@@ -707,12 +707,12 @@
   __u8 edc_cmd;
   __u8 edc_zero[3];
   __be32 desc_len;
-  struct fc_tlv_desc desc[0];
+  struct fc_tlv_desc desc[];
 };
 struct fc_els_edc_resp {
   struct fc_els_ls_acc acc_hdr;
   __be32 desc_list_len;
   struct fc_els_lsri_desc lsri;
-  struct fc_tlv_desc desc[0];
+  struct fc_tlv_desc desc[];
 };
 #endif
diff --git a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/scsi/scsi_bsg_fc.h b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/scsi/scsi_bsg_fc.h
index 8966f61..2647249 100644
--- a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/scsi/scsi_bsg_fc.h
+++ b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/scsi/scsi_bsg_fc.h
@@ -66,7 +66,7 @@
 };
 struct fc_bsg_host_vendor {
   __u64 vendor_id;
-  __u32 vendor_cmd[0];
+  __u32 vendor_cmd[];
 };
 struct fc_bsg_host_vendor_reply {
   __u32 vendor_rsp[0];
diff --git a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/scsi/scsi_bsg_mpi3mr.h b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/scsi/scsi_bsg_mpi3mr.h
new file mode 100644
index 0000000..fcba8cd
--- /dev/null
+++ b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/scsi/scsi_bsg_mpi3mr.h
@@ -0,0 +1,333 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef SCSI_BSG_MPI3MR_H_INCLUDED
+#define SCSI_BSG_MPI3MR_H_INCLUDED
+#include <linux/types.h>
+#define MPI3MR_IOCTL_VERSION 0x06
+#define MPI3MR_APP_DEFAULT_TIMEOUT (60)
+#define MPI3MR_BSG_ADPTYPE_UNKNOWN 0
+#define MPI3MR_BSG_ADPTYPE_AVGFAMILY 1
+#define MPI3MR_BSG_ADPSTATE_UNKNOWN 0
+#define MPI3MR_BSG_ADPSTATE_OPERATIONAL 1
+#define MPI3MR_BSG_ADPSTATE_FAULT 2
+#define MPI3MR_BSG_ADPSTATE_IN_RESET 3
+#define MPI3MR_BSG_ADPSTATE_UNRECOVERABLE 4
+#define MPI3MR_BSG_ADPRESET_UNKNOWN 0
+#define MPI3MR_BSG_ADPRESET_SOFT 1
+#define MPI3MR_BSG_ADPRESET_DIAG_FAULT 2
+#define MPI3MR_BSG_LOGDATA_MAX_ENTRIES 400
+#define MPI3MR_BSG_LOGDATA_ENTRY_HEADER_SZ 4
+#define MPI3MR_DRVBSG_OPCODE_UNKNOWN 0
+#define MPI3MR_DRVBSG_OPCODE_ADPINFO 1
+#define MPI3MR_DRVBSG_OPCODE_ADPRESET 2
+#define MPI3MR_DRVBSG_OPCODE_ALLTGTDEVINFO 4
+#define MPI3MR_DRVBSG_OPCODE_GETCHGCNT 5
+#define MPI3MR_DRVBSG_OPCODE_LOGDATAENABLE 6
+#define MPI3MR_DRVBSG_OPCODE_PELENABLE 7
+#define MPI3MR_DRVBSG_OPCODE_GETLOGDATA 8
+#define MPI3MR_DRVBSG_OPCODE_QUERY_HDB 9
+#define MPI3MR_DRVBSG_OPCODE_REPOST_HDB 10
+#define MPI3MR_DRVBSG_OPCODE_UPLOAD_HDB 11
+#define MPI3MR_DRVBSG_OPCODE_REFRESH_HDB_TRIGGERS 12
+#define MPI3MR_BSG_BUFTYPE_UNKNOWN 0
+#define MPI3MR_BSG_BUFTYPE_RAIDMGMT_CMD 1
+#define MPI3MR_BSG_BUFTYPE_RAIDMGMT_RESP 2
+#define MPI3MR_BSG_BUFTYPE_DATA_IN 3
+#define MPI3MR_BSG_BUFTYPE_DATA_OUT 4
+#define MPI3MR_BSG_BUFTYPE_MPI_REPLY 5
+#define MPI3MR_BSG_BUFTYPE_ERR_RESPONSE 6
+#define MPI3MR_BSG_BUFTYPE_MPI_REQUEST 0xFE
+#define MPI3MR_BSG_MPI_REPLY_BUFTYPE_UNKNOWN 0
+#define MPI3MR_BSG_MPI_REPLY_BUFTYPE_STATUS 1
+#define MPI3MR_BSG_MPI_REPLY_BUFTYPE_ADDRESS 2
+#define MPI3MR_HDB_BUFTYPE_UNKNOWN 0
+#define MPI3MR_HDB_BUFTYPE_TRACE 1
+#define MPI3MR_HDB_BUFTYPE_FIRMWARE 2
+#define MPI3MR_HDB_BUFTYPE_RESERVED 3
+#define MPI3MR_HDB_BUFSTATUS_UNKNOWN 0
+#define MPI3MR_HDB_BUFSTATUS_NOT_ALLOCATED 1
+#define MPI3MR_HDB_BUFSTATUS_POSTED_UNPAUSED 2
+#define MPI3MR_HDB_BUFSTATUS_POSTED_PAUSED 3
+#define MPI3MR_HDB_BUFSTATUS_RELEASED 4
+#define MPI3MR_HDB_TRIGGER_TYPE_UNKNOWN 0
+#define MPI3MR_HDB_TRIGGER_TYPE_DIAGFAULT 1
+#define MPI3MR_HDB_TRIGGER_TYPE_ELEMENT 2
+#define MPI3MR_HDB_TRIGGER_TYPE_MASTER 3
+enum command {
+  MPI3MR_DRV_CMD = 1,
+  MPI3MR_MPT_CMD = 2,
+};
+struct mpi3_driver_info_layout {
+  __le32 information_length;
+  __u8 driver_signature[12];
+  __u8 os_name[16];
+  __u8 os_version[12];
+  __u8 driver_name[20];
+  __u8 driver_version[32];
+  __u8 driver_release_date[20];
+  __le32 driver_capabilities;
+};
+struct mpi3mr_bsg_in_adpinfo {
+  __u32 adp_type;
+  __u32 rsvd1;
+  __u32 pci_dev_id;
+  __u32 pci_dev_hw_rev;
+  __u32 pci_subsys_dev_id;
+  __u32 pci_subsys_ven_id;
+  __u32 pci_dev : 5;
+  __u32 pci_func : 3;
+  __u32 pci_bus : 8;
+  __u16 rsvd2;
+  __u32 pci_seg_id;
+  __u32 app_intfc_ver;
+  __u8 adp_state;
+  __u8 rsvd3;
+  __u16 rsvd4;
+  __u32 rsvd5[2];
+  struct mpi3_driver_info_layout driver_info;
+};
+struct mpi3mr_bsg_adp_reset {
+  __u8 reset_type;
+  __u8 rsvd1;
+  __u16 rsvd2;
+};
+struct mpi3mr_change_count {
+  __u16 change_count;
+  __u16 rsvd;
+};
+struct mpi3mr_device_map_info {
+  __u16 handle;
+  __u16 perst_id;
+  __u32 target_id;
+  __u8 bus_id;
+  __u8 rsvd1;
+  __u16 rsvd2;
+};
+struct mpi3mr_all_tgt_info {
+  __u16 num_devices;
+  __u16 rsvd1;
+  __u32 rsvd2;
+  struct mpi3mr_device_map_info dmi[1];
+};
+struct mpi3mr_logdata_enable {
+  __u16 max_entries;
+  __u16 rsvd;
+};
+struct mpi3mr_bsg_out_pel_enable {
+  __u16 pel_locale;
+  __u8 pel_class;
+  __u8 rsvd;
+};
+struct mpi3mr_logdata_entry {
+  __u8 valid_entry;
+  __u8 rsvd1;
+  __u16 rsvd2;
+  __u8 data[1];
+};
+struct mpi3mr_bsg_in_log_data {
+  struct mpi3mr_logdata_entry entry[1];
+};
+struct mpi3mr_hdb_entry {
+  __u8 buf_type;
+  __u8 status;
+  __u8 trigger_type;
+  __u8 rsvd1;
+  __u16 size;
+  __u16 rsvd2;
+  __u64 trigger_data;
+  __u32 rsvd3;
+  __u32 rsvd4;
+};
+struct mpi3mr_bsg_in_hdb_status {
+  __u8 num_hdb_types;
+  __u8 rsvd1;
+  __u16 rsvd2;
+  __u32 rsvd3;
+  struct mpi3mr_hdb_entry entry[1];
+};
+struct mpi3mr_bsg_out_repost_hdb {
+  __u8 buf_type;
+  __u8 rsvd1;
+  __u16 rsvd2;
+};
+struct mpi3mr_bsg_out_upload_hdb {
+  __u8 buf_type;
+  __u8 rsvd1;
+  __u16 rsvd2;
+  __u32 start_offset;
+  __u32 length;
+};
+struct mpi3mr_bsg_out_refresh_hdb_triggers {
+  __u8 page_type;
+  __u8 rsvd1;
+  __u16 rsvd2;
+};
+struct mpi3mr_bsg_drv_cmd {
+  __u8 mrioc_id;
+  __u8 opcode;
+  __u16 rsvd1;
+  __u32 rsvd2[4];
+};
+struct mpi3mr_bsg_in_reply_buf {
+  __u8 mpi_reply_type;
+  __u8 rsvd1;
+  __u16 rsvd2;
+  __u8 reply_buf[1];
+};
+struct mpi3mr_buf_entry {
+  __u8 buf_type;
+  __u8 rsvd1;
+  __u16 rsvd2;
+  __u32 buf_len;
+};
+struct mpi3mr_buf_entry_list {
+  __u8 num_of_entries;
+  __u8 rsvd1;
+  __u16 rsvd2;
+  __u32 rsvd3;
+  struct mpi3mr_buf_entry buf_entry[1];
+};
+struct mpi3mr_bsg_mptcmd {
+  __u8 mrioc_id;
+  __u8 rsvd1;
+  __u16 timeout;
+  __u32 rsvd2;
+  struct mpi3mr_buf_entry_list buf_entry_list;
+};
+struct mpi3mr_bsg_packet {
+  __u8 cmd_type;
+  __u8 rsvd1;
+  __u16 rsvd2;
+  __u32 rsvd3;
+  union {
+    struct mpi3mr_bsg_drv_cmd drvrcmd;
+    struct mpi3mr_bsg_mptcmd mptcmd;
+  } cmd;
+};
+#ifndef MPI3_NVME_ENCAP_CMD_MAX
+#define MPI3_NVME_ENCAP_CMD_MAX (1)
+#endif
+struct mpi3_nvme_encapsulated_request {
+  __le16 host_tag;
+  __u8 ioc_use_only02;
+  __u8 function;
+  __le16 ioc_use_only04;
+  __u8 ioc_use_only06;
+  __u8 msg_flags;
+  __le16 change_count;
+  __le16 dev_handle;
+  __le16 encapsulated_command_length;
+  __le16 flags;
+  __le32 data_length;
+  __le32 reserved14[3];
+  __le32 command[MPI3_NVME_ENCAP_CMD_MAX];
+};
+struct mpi3_nvme_encapsulated_error_reply {
+  __le16 host_tag;
+  __u8 ioc_use_only02;
+  __u8 function;
+  __le16 ioc_use_only04;
+  __u8 ioc_use_only06;
+  __u8 msg_flags;
+  __le16 ioc_use_only08;
+  __le16 ioc_status;
+  __le32 ioc_log_info;
+  __le32 nvme_completion_entry[4];
+};
+#define MPI3MR_NVME_PRP_SIZE 8
+#define MPI3MR_NVME_CMD_PRP1_OFFSET 24
+#define MPI3MR_NVME_CMD_PRP2_OFFSET 32
+#define MPI3MR_NVME_CMD_SGL_OFFSET 24
+#define MPI3MR_NVME_DATA_FORMAT_PRP 0
+#define MPI3MR_NVME_DATA_FORMAT_SGL1 1
+#define MPI3MR_NVME_DATA_FORMAT_SGL2 2
+struct mpi3_scsi_task_mgmt_request {
+  __le16 host_tag;
+  __u8 ioc_use_only02;
+  __u8 function;
+  __le16 ioc_use_only04;
+  __u8 ioc_use_only06;
+  __u8 msg_flags;
+  __le16 change_count;
+  __le16 dev_handle;
+  __le16 task_host_tag;
+  __u8 task_type;
+  __u8 reserved0f;
+  __le16 task_request_queue_id;
+  __le16 reserved12;
+  __le32 reserved14;
+  __u8 lun[8];
+};
+#define MPI3_SCSITASKMGMT_MSGFLAGS_DO_NOT_SEND_TASK_IU (0x08)
+#define MPI3_SCSITASKMGMT_TASKTYPE_ABORT_TASK (0x01)
+#define MPI3_SCSITASKMGMT_TASKTYPE_ABORT_TASK_SET (0x02)
+#define MPI3_SCSITASKMGMT_TASKTYPE_TARGET_RESET (0x03)
+#define MPI3_SCSITASKMGMT_TASKTYPE_LOGICAL_UNIT_RESET (0x05)
+#define MPI3_SCSITASKMGMT_TASKTYPE_CLEAR_TASK_SET (0x06)
+#define MPI3_SCSITASKMGMT_TASKTYPE_QUERY_TASK (0x07)
+#define MPI3_SCSITASKMGMT_TASKTYPE_CLEAR_ACA (0x08)
+#define MPI3_SCSITASKMGMT_TASKTYPE_QUERY_TASK_SET (0x09)
+#define MPI3_SCSITASKMGMT_TASKTYPE_QUERY_ASYNC_EVENT (0x0a)
+#define MPI3_SCSITASKMGMT_TASKTYPE_I_T_NEXUS_RESET (0x0b)
+struct mpi3_scsi_task_mgmt_reply {
+  __le16 host_tag;
+  __u8 ioc_use_only02;
+  __u8 function;
+  __le16 ioc_use_only04;
+  __u8 ioc_use_only06;
+  __u8 msg_flags;
+  __le16 ioc_use_only08;
+  __le16 ioc_status;
+  __le32 ioc_log_info;
+  __le32 termination_count;
+  __le32 response_data;
+  __le32 reserved18;
+};
+#define MPI3_SCSITASKMGMT_RSPCODE_TM_COMPLETE (0x00)
+#define MPI3_SCSITASKMGMT_RSPCODE_INVALID_FRAME (0x02)
+#define MPI3_SCSITASKMGMT_RSPCODE_TM_FUNCTION_NOT_SUPPORTED (0x04)
+#define MPI3_SCSITASKMGMT_RSPCODE_TM_FAILED (0x05)
+#define MPI3_SCSITASKMGMT_RSPCODE_TM_SUCCEEDED (0x08)
+#define MPI3_SCSITASKMGMT_RSPCODE_TM_INVALID_LUN (0x09)
+#define MPI3_SCSITASKMGMT_RSPCODE_TM_OVERLAPPED_TAG (0x0a)
+#define MPI3_SCSITASKMGMT_RSPCODE_IO_QUEUED_ON_IOC (0x80)
+#define MPI3_SCSITASKMGMT_RSPCODE_TM_NVME_DENIED (0x81)
+#define MPI3_PEL_LOCALE_FLAGS_NON_BLOCKING_BOOT_EVENT (0x0200)
+#define MPI3_PEL_LOCALE_FLAGS_BLOCKING_BOOT_EVENT (0x0100)
+#define MPI3_PEL_LOCALE_FLAGS_PCIE (0x0080)
+#define MPI3_PEL_LOCALE_FLAGS_CONFIGURATION (0x0040)
+#define MPI3_PEL_LOCALE_FLAGS_CONTROLER (0x0020)
+#define MPI3_PEL_LOCALE_FLAGS_SAS (0x0010)
+#define MPI3_PEL_LOCALE_FLAGS_EPACK (0x0008)
+#define MPI3_PEL_LOCALE_FLAGS_ENCLOSURE (0x0004)
+#define MPI3_PEL_LOCALE_FLAGS_PD (0x0002)
+#define MPI3_PEL_LOCALE_FLAGS_VD (0x0001)
+#define MPI3_PEL_CLASS_DEBUG (0x00)
+#define MPI3_PEL_CLASS_PROGRESS (0x01)
+#define MPI3_PEL_CLASS_INFORMATIONAL (0x02)
+#define MPI3_PEL_CLASS_WARNING (0x03)
+#define MPI3_PEL_CLASS_CRITICAL (0x04)
+#define MPI3_PEL_CLASS_FATAL (0x05)
+#define MPI3_PEL_CLASS_FAULT (0x06)
+#define MPI3_BSG_FUNCTION_MGMT_PASSTHROUGH (0x0a)
+#define MPI3_BSG_FUNCTION_SCSI_IO (0x20)
+#define MPI3_BSG_FUNCTION_SCSI_TASK_MGMT (0x21)
+#define MPI3_BSG_FUNCTION_SMP_PASSTHROUGH (0x22)
+#define MPI3_BSG_FUNCTION_NVME_ENCAPSULATED (0x24)
+#endif
diff --git a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/scsi/scsi_netlink_fc.h b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/scsi/scsi_netlink_fc.h
index ff92877..6eeb866 100644
--- a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/scsi/scsi_netlink_fc.h
+++ b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/scsi/scsi_netlink_fc.h
@@ -30,6 +30,9 @@
   __u16 event_datalen;
   __u32 event_num;
   __u32 event_code;
-  __u32 event_data;
+  union {
+    __u32 event_data;
+    __DECLARE_FLEX_ARRAY(__u8, event_data_flex);
+  };
 } __attribute__((aligned(sizeof(__u64))));
 #endif
diff --git a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/sound/asoc.h b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/sound/asoc.h
index eeb12b0..1940e5d 100644
--- a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/sound/asoc.h
+++ b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/sound/asoc.h
@@ -356,7 +356,7 @@
   __le32 pcm_elems;
   __le32 dai_link_elems;
   struct snd_soc_tplg_private priv;
-} __packed;
+} __attribute__((__packed__));
 struct snd_soc_tplg_stream_caps_v4 {
   __le32 size;
   char name[SNDRV_CTL_ELEM_ID_NAME_MAXLEN];
@@ -372,7 +372,7 @@
   __le32 period_size_max;
   __le32 buffer_size_min;
   __le32 buffer_size_max;
-} __packed;
+} __attribute__((__packed__));
 struct snd_soc_tplg_pcm_v4 {
   __le32 size;
   char pcm_name[SNDRV_CTL_ELEM_ID_NAME_MAXLEN];
@@ -385,11 +385,11 @@
   struct snd_soc_tplg_stream stream[SND_SOC_TPLG_STREAM_CONFIG_MAX];
   __le32 num_streams;
   struct snd_soc_tplg_stream_caps_v4 caps[2];
-} __packed;
+} __attribute__((__packed__));
 struct snd_soc_tplg_link_config_v4 {
   __le32 size;
   __le32 id;
   struct snd_soc_tplg_stream stream[SND_SOC_TPLG_STREAM_CONFIG_MAX];
   __le32 num_streams;
-} __packed;
+} __attribute__((__packed__));
 #endif
diff --git a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/sound/asound.h b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/sound/asound.h
index b0e47c1..6e325e9 100644
--- a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/sound/asound.h
+++ b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/sound/asound.h
@@ -605,7 +605,7 @@
   __u32 tv_nsec;
   __u64 tv_sec;
   __u8 data[SNDRV_RAWMIDI_FRAMING_DATA_LENGTH];
-} __packed;
+} __attribute__((__packed__));
 struct snd_rawmidi_params {
   int stream;
   size_t buffer_size;
@@ -884,7 +884,7 @@
 struct snd_ctl_tlv {
   unsigned int numid;
   unsigned int length;
-  unsigned int tlv[0];
+  unsigned int tlv[];
 };
 #define SNDRV_CTL_IOCTL_PVERSION _IOR('U', 0x00, int)
 #define SNDRV_CTL_IOCTL_CARD_INFO _IOR('U', 0x01, struct snd_ctl_card_info)
diff --git a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/sound/firewire.h b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/sound/firewire.h
index 198a8f4..d26d722 100644
--- a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/sound/firewire.h
+++ b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/sound/firewire.h
@@ -46,11 +46,11 @@
   __be32 category;
   __be32 command;
   __be32 status;
-  __be32 params[0];
+  __be32 params[];
 };
 struct snd_firewire_event_efw_response {
   unsigned int type;
-  __be32 response[0];
+  __be32 response[];
 };
 struct snd_firewire_event_digi00x_message {
   unsigned int type;
@@ -67,7 +67,7 @@
 };
 struct snd_firewire_event_tascam_control {
   unsigned int type;
-  struct snd_firewire_tascam_change changes[0];
+  struct snd_firewire_tascam_change changes[];
 };
 struct snd_firewire_event_motu_register_dsp_change {
   unsigned int type;
diff --git a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/sound/intel/avs/tokens.h b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/sound/intel/avs/tokens.h
new file mode 100644
index 0000000..b6b3002
--- /dev/null
+++ b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/sound/intel/avs/tokens.h
@@ -0,0 +1,111 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef __UAPI_SOUND_INTEL_AVS_TOKENS_H
+#define __UAPI_SOUND_INTEL_AVS_TOKENS_H
+enum avs_tplg_token {
+  AVS_TKN_MANIFEST_NAME_STRING = 1,
+  AVS_TKN_MANIFEST_VERSION_U32 = 2,
+  AVS_TKN_MANIFEST_NUM_LIBRARIES_U32 = 3,
+  AVS_TKN_MANIFEST_NUM_AFMTS_U32 = 4,
+  AVS_TKN_MANIFEST_NUM_MODCFGS_BASE_U32 = 5,
+  AVS_TKN_MANIFEST_NUM_MODCFGS_EXT_U32 = 6,
+  AVS_TKN_MANIFEST_NUM_PPLCFGS_U32 = 7,
+  AVS_TKN_MANIFEST_NUM_BINDINGS_U32 = 8,
+  AVS_TKN_LIBRARY_ID_U32 = 101,
+  AVS_TKN_LIBRARY_NAME_STRING = 102,
+  AVS_TKN_AFMT_ID_U32 = 201,
+  AVS_TKN_AFMT_SAMPLE_RATE_U32 = 202,
+  AVS_TKN_AFMT_BIT_DEPTH_U32 = 203,
+  AVS_TKN_AFMT_CHANNEL_MAP_U32 = 204,
+  AVS_TKN_AFMT_CHANNEL_CFG_U32 = 205,
+  AVS_TKN_AFMT_INTERLEAVING_U32 = 206,
+  AVS_TKN_AFMT_NUM_CHANNELS_U32 = 207,
+  AVS_TKN_AFMT_VALID_BIT_DEPTH_U32 = 208,
+  AVS_TKN_AFMT_SAMPLE_TYPE_U32 = 209,
+  AVS_TKN_MODCFG_BASE_ID_U32 = 301,
+  AVS_TKN_MODCFG_BASE_CPC_U32 = 302,
+  AVS_TKN_MODCFG_BASE_IBS_U32 = 303,
+  AVS_TKN_MODCFG_BASE_OBS_U32 = 304,
+  AVS_TKN_MODCFG_BASE_PAGES_U32 = 305,
+  AVS_TKN_MODCFG_EXT_ID_U32 = 401,
+  AVS_TKN_MODCFG_EXT_TYPE_UUID = 402,
+  AVS_TKN_MODCFG_CPR_OUT_AFMT_ID_U32 = 403,
+  AVS_TKN_MODCFG_CPR_FEATURE_MASK_U32 = 404,
+  AVS_TKN_MODCFG_CPR_DMA_TYPE_U32 = 405,
+  AVS_TKN_MODCFG_CPR_DMABUFF_SIZE_U32 = 406,
+  AVS_TKN_MODCFG_CPR_VINDEX_U8 = 407,
+  AVS_TKN_MODCFG_CPR_BLOB_FMT_ID_U32 = 408,
+  AVS_TKN_MODCFG_MICSEL_OUT_AFMT_ID_U32 = 409,
+  AVS_TKN_MODCFG_INTELWOV_CPC_LP_MODE_U32 = 410,
+  AVS_TKN_MODCFG_SRC_OUT_FREQ_U32 = 411,
+  AVS_TKN_MODCFG_MUX_REF_AFMT_ID_U32 = 412,
+  AVS_TKN_MODCFG_MUX_OUT_AFMT_ID_U32 = 413,
+  AVS_TKN_MODCFG_AEC_REF_AFMT_ID_U32 = 414,
+  AVS_TKN_MODCFG_AEC_OUT_AFMT_ID_U32 = 415,
+  AVS_TKN_MODCFG_AEC_CPC_LP_MODE_U32 = 416,
+  AVS_TKN_MODCFG_ASRC_OUT_FREQ_U32 = 417,
+  AVS_TKN_MODCFG_ASRC_MODE_U8 = 418,
+  AVS_TKN_MODCFG_ASRC_DISABLE_JITTER_U8 = 419,
+  AVS_TKN_MODCFG_UPDOWN_MIX_OUT_CHAN_CFG_U32 = 420,
+  AVS_TKN_MODCFG_UPDOWN_MIX_COEFF_SELECT_U32 = 421,
+  AVS_TKN_MODCFG_UPDOWN_MIX_COEFF_0_S32 = 422,
+  AVS_TKN_MODCFG_UPDOWN_MIX_COEFF_1_S32 = 423,
+  AVS_TKN_MODCFG_UPDOWN_MIX_COEFF_2_S32 = 424,
+  AVS_TKN_MODCFG_UPDOWN_MIX_COEFF_3_S32 = 425,
+  AVS_TKN_MODCFG_UPDOWN_MIX_COEFF_4_S32 = 426,
+  AVS_TKN_MODCFG_UPDOWN_MIX_COEFF_5_S32 = 427,
+  AVS_TKN_MODCFG_UPDOWN_MIX_COEFF_6_S32 = 428,
+  AVS_TKN_MODCFG_UPDOWN_MIX_COEFF_7_S32 = 429,
+  AVS_TKN_MODCFG_UPDOWN_MIX_CHAN_MAP_U32 = 430,
+  AVS_TKN_MODCFG_EXT_NUM_INPUT_PINS_U16 = 431,
+  AVS_TKN_MODCFG_EXT_NUM_OUTPUT_PINS_U16 = 432,
+  AVS_TKN_PPLCFG_ID_U32 = 1401,
+  AVS_TKN_PPLCFG_REQ_SIZE_U16 = 1402,
+  AVS_TKN_PPLCFG_PRIORITY_U8 = 1403,
+  AVS_TKN_PPLCFG_LOW_POWER_BOOL = 1404,
+  AVS_TKN_PPLCFG_ATTRIBUTES_U16 = 1405,
+  AVS_TKN_PPLCFG_TRIGGER_U32 = 1406,
+  AVS_TKN_BINDING_ID_U32 = 1501,
+  AVS_TKN_BINDING_TARGET_TPLG_NAME_STRING = 1502,
+  AVS_TKN_BINDING_TARGET_PATH_TMPL_ID_U32 = 1503,
+  AVS_TKN_BINDING_TARGET_PPL_ID_U32 = 1504,
+  AVS_TKN_BINDING_TARGET_MOD_ID_U32 = 1505,
+  AVS_TKN_BINDING_TARGET_MOD_PIN_U8 = 1506,
+  AVS_TKN_BINDING_MOD_ID_U32 = 1507,
+  AVS_TKN_BINDING_MOD_PIN_U8 = 1508,
+  AVS_TKN_BINDING_IS_SINK_U8 = 1509,
+  AVS_TKN_PPL_ID_U32 = 1601,
+  AVS_TKN_PPL_PPLCFG_ID_U32 = 1602,
+  AVS_TKN_PPL_NUM_BINDING_IDS_U32 = 1603,
+  AVS_TKN_PPL_BINDING_ID_U32 = 1604,
+  AVS_TKN_MOD_ID_U32 = 1701,
+  AVS_TKN_MOD_MODCFG_BASE_ID_U32 = 1702,
+  AVS_TKN_MOD_IN_AFMT_ID_U32 = 1703,
+  AVS_TKN_MOD_CORE_ID_U8 = 1704,
+  AVS_TKN_MOD_PROC_DOMAIN_U8 = 1705,
+  AVS_TKN_MOD_MODCFG_EXT_ID_U32 = 1706,
+  AVS_TKN_PATH_TMPL_ID_U32 = 1801,
+  AVS_TKN_PATH_ID_U32 = 1901,
+  AVS_TKN_PATH_FE_FMT_ID_U32 = 1902,
+  AVS_TKN_PATH_BE_FMT_ID_U32 = 1903,
+  AVS_TKN_PIN_FMT_INDEX_U32 = 2201,
+  AVS_TKN_PIN_FMT_IOBS_U32 = 2202,
+  AVS_TKN_PIN_FMT_AFMT_ID_U32 = 2203,
+};
+#endif
diff --git a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/sound/skl-tplg-interface.h b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/sound/skl-tplg-interface.h
index b516a08..6dd9655 100644
--- a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/sound/skl-tplg-interface.h
+++ b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/sound/skl-tplg-interface.h
@@ -110,8 +110,8 @@
   __u32 rsvd : 30;
   __u32 param_id;
   __u32 max;
-  char params[0];
-} __packed;
+  char params[];
+} __attribute__((__packed__));
 enum skl_tkn_dir {
   SKL_DIR_IN,
   SKL_DIR_OUT
@@ -123,7 +123,7 @@
 struct skl_dfw_v4_module_pin {
   __u16 module_id;
   __u16 instance_id;
-} __packed;
+} __attribute__((__packed__));
 struct skl_dfw_v4_module_fmt {
   __u32 channels;
   __u32 freq;
@@ -133,21 +133,21 @@
   __u32 interleaving_style;
   __u32 sample_type;
   __u32 ch_map;
-} __packed;
+} __attribute__((__packed__));
 struct skl_dfw_v4_module_caps {
   __u32 set_params : 2;
   __u32 rsvd : 30;
   __u32 param_id;
   __u32 caps_size;
   __u32 caps[HDA_SST_CFG_MAX];
-} __packed;
+} __attribute__((__packed__));
 struct skl_dfw_v4_pipe {
   __u8 pipe_id;
   __u8 pipe_priority;
   __u16 conn_type : 4;
   __u16 rsvd : 4;
   __u16 memory_pages : 8;
-} __packed;
+} __attribute__((__packed__));
 struct skl_dfw_v4_module {
   char uuid[SKL_UUID_STR_SZ];
   __u16 module_id;
@@ -181,5 +181,5 @@
   struct skl_dfw_v4_module_pin in_pin[MAX_IN_QUEUE];
   struct skl_dfw_v4_module_pin out_pin[MAX_OUT_QUEUE];
   struct skl_dfw_v4_module_caps caps;
-} __packed;
+} __attribute__((__packed__));
 #endif
diff --git a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/sound/sof/abi.h b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/sound/sof/abi.h
index 3af3c9d..dc4e525 100644
--- a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/sound/sof/abi.h
+++ b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/sound/sof/abi.h
@@ -18,8 +18,9 @@
  ****************************************************************************/
 #ifndef __INCLUDE_UAPI_SOUND_SOF_ABI_H__
 #define __INCLUDE_UAPI_SOUND_SOF_ABI_H__
+#include <linux/types.h>
 #define SOF_ABI_MAJOR 3
-#define SOF_ABI_MINOR 18
+#define SOF_ABI_MINOR 23
 #define SOF_ABI_PATCH 0
 #define SOF_ABI_MAJOR_SHIFT 24
 #define SOF_ABI_MAJOR_MASK 0xff
diff --git a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/sound/sof/fw.h b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/sound/sof/fw.h
index c36c2b9..97b7de3 100644
--- a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/sound/sof/fw.h
+++ b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/sound/sof/fw.h
@@ -46,7 +46,7 @@
   enum snd_sof_fw_blk_type type;
   __u32 size;
   __u32 offset;
-} __packed;
+} __attribute__((__packed__));
 enum snd_sof_fw_mod_type {
   SOF_FW_BASE = 0,
   SOF_FW_MODULE = 1,
@@ -55,11 +55,11 @@
   enum snd_sof_fw_mod_type type;
   __u32 size;
   __u32 num_blocks;
-} __packed;
+} __attribute__((__packed__));
 struct snd_sof_fw_header {
   unsigned char sig[SND_SOF_FW_SIG_SIZE];
   __u32 file_size;
   __u32 num_modules;
   __u32 abi;
-} __packed;
+} __attribute__((__packed__));
 #endif
diff --git a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/sound/sof/header.h b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/sound/sof/header.h
index 3fbd4a4..7514550 100644
--- a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/sound/sof/header.h
+++ b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/sound/sof/header.h
@@ -25,6 +25,19 @@
   __u32 size;
   __u32 abi;
   __u32 reserved[4];
-  __u32 data[0];
-} __packed;
+  __u32 data[];
+} __attribute__((__packed__));
+#define SOF_MANIFEST_DATA_TYPE_NHLT 1
+struct sof_manifest_tlv {
+  __le32 type;
+  __le32 size;
+  __u8 data[];
+};
+struct sof_manifest {
+  __le16 abi_major;
+  __le16 abi_minor;
+  __le16 abi_patch;
+  __le16 count;
+  struct sof_manifest_tlv items[];
+};
 #endif
diff --git a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/sound/sof/tokens.h b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/sound/sof/tokens.h
index 856281a..b07ed42 100644
--- a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/sound/sof/tokens.h
+++ b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/sound/sof/tokens.h
@@ -37,8 +37,13 @@
 #define SOF_TKN_SCHED_FRAMES 204
 #define SOF_TKN_SCHED_TIME_DOMAIN 205
 #define SOF_TKN_SCHED_DYNAMIC_PIPELINE 206
+#define SOF_TKN_SCHED_LP_MODE 207
+#define SOF_TKN_SCHED_MEM_USAGE 208
 #define SOF_TKN_VOLUME_RAMP_STEP_TYPE 250
 #define SOF_TKN_VOLUME_RAMP_STEP_MS 251
+#define SOF_TKN_GAIN_RAMP_TYPE 260
+#define SOF_TKN_GAIN_RAMP_DURATION 261
+#define SOF_TKN_GAIN_VAL 262
 #define SOF_TKN_SRC_RATE_IN 300
 #define SOF_TKN_SRC_RATE_OUT 301
 #define SOF_TKN_ASRC_RATE_IN 320
@@ -51,6 +56,9 @@
 #define SOF_TKN_COMP_FORMAT 402
 #define SOF_TKN_COMP_CORE_ID 404
 #define SOF_TKN_COMP_UUID 405
+#define SOF_TKN_COMP_CPC 406
+#define SOF_TKN_COMP_IS_PAGES 409
+#define SOF_TKN_COMP_NUM_AUDIO_FORMATS 410
 #define SOF_TKN_INTEL_SSP_CLKS_CONTROL 500
 #define SOF_TKN_INTEL_SSP_MCLK_ID 501
 #define SOF_TKN_INTEL_SSP_SAMPLE_BITS 502
@@ -90,4 +98,29 @@
 #define SOF_TKN_MEDIATEK_AFE_RATE 1600
 #define SOF_TKN_MEDIATEK_AFE_CH 1601
 #define SOF_TKN_MEDIATEK_AFE_FORMAT 1602
+#define SOF_TKN_MIXER_TYPE 1700
+#define SOF_TKN_AMD_ACPDMIC_RATE 1800
+#define SOF_TKN_AMD_ACPDMIC_CH 1801
+#define SOF_TKN_CAVS_AUDIO_FORMAT_IN_RATE 1900
+#define SOF_TKN_CAVS_AUDIO_FORMAT_IN_BIT_DEPTH 1901
+#define SOF_TKN_CAVS_AUDIO_FORMAT_IN_VALID_BIT 1902
+#define SOF_TKN_CAVS_AUDIO_FORMAT_IN_CHANNELS 1903
+#define SOF_TKN_CAVS_AUDIO_FORMAT_IN_CH_MAP 1904
+#define SOF_TKN_CAVS_AUDIO_FORMAT_IN_CH_CFG 1905
+#define SOF_TKN_CAVS_AUDIO_FORMAT_IN_INTERLEAVING_STYLE 1906
+#define SOF_TKN_CAVS_AUDIO_FORMAT_IN_FMT_CFG 1907
+#define SOF_TKN_CAVS_AUDIO_FORMAT_IN_SAMPLE_TYPE 1908
+#define SOF_TKN_CAVS_AUDIO_FORMAT_OUT_RATE 1930
+#define SOF_TKN_CAVS_AUDIO_FORMAT_OUT_BIT_DEPTH 1931
+#define SOF_TKN_CAVS_AUDIO_FORMAT_OUT_VALID_BIT 1932
+#define SOF_TKN_CAVS_AUDIO_FORMAT_OUT_CHANNELS 1933
+#define SOF_TKN_CAVS_AUDIO_FORMAT_OUT_CH_MAP 1934
+#define SOF_TKN_CAVS_AUDIO_FORMAT_OUT_CH_CFG 1935
+#define SOF_TKN_CAVS_AUDIO_FORMAT_OUT_INTERLEAVING_STYLE 1936
+#define SOF_TKN_CAVS_AUDIO_FORMAT_OUT_FMT_CFG 1937
+#define SOF_TKN_CAVS_AUDIO_FORMAT_OUT_SAMPLE_TYPE 1938
+#define SOF_TKN_CAVS_AUDIO_FORMAT_IBS 1970
+#define SOF_TKN_CAVS_AUDIO_FORMAT_OBS 1971
+#define SOF_TKN_CAVS_AUDIO_FORMAT_DMA_BUFFER_SIZE 1972
+#define SOF_TKN_INTEL_COPIER_NODE_TYPE 1980
 #endif
diff --git a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/sound/usb_stream.h b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/sound/usb_stream.h
index bb7fe80..ac87c31 100644
--- a/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/sound/usb_stream.h
+++ b/mainline/runtime/sdk/android/arm/include/bionic/libc/kernel/uapi/sound/usb_stream.h
@@ -49,7 +49,7 @@
   unsigned inpacket_split_at;
   unsigned next_inpacket_split;
   unsigned next_inpacket_split_at;
-  struct usb_stream_packet inpacket[0];
+  struct usb_stream_packet inpacket[];
 };
 enum usb_stream_state {
   usb_stream_invalid,
diff --git a/mainline/runtime/sdk/android/arm/lib/crtbegin_dynamic.o b/mainline/runtime/sdk/android/arm/lib/crtbegin_dynamic.o
index d25f281..ff67de2 100644
--- a/mainline/runtime/sdk/android/arm/lib/crtbegin_dynamic.o
+++ b/mainline/runtime/sdk/android/arm/lib/crtbegin_dynamic.o
Binary files differ
diff --git a/mainline/runtime/sdk/android/arm/lib/crtbegin_so.o b/mainline/runtime/sdk/android/arm/lib/crtbegin_so.o
index 11a7c4d..b6a71e8 100644
--- a/mainline/runtime/sdk/android/arm/lib/crtbegin_so.o
+++ b/mainline/runtime/sdk/android/arm/lib/crtbegin_so.o
Binary files differ
diff --git a/mainline/runtime/sdk/android/arm/lib/crtend.o b/mainline/runtime/sdk/android/arm/lib/crtend.o
deleted file mode 100644
index a940626..0000000
--- a/mainline/runtime/sdk/android/arm/lib/crtend.o
+++ /dev/null
Binary files differ
diff --git a/mainline/runtime/sdk/android/arm/lib/crtend_android.o b/mainline/runtime/sdk/android/arm/lib/crtend_android.o
new file mode 100644
index 0000000..8216612
--- /dev/null
+++ b/mainline/runtime/sdk/android/arm/lib/crtend_android.o
Binary files differ
diff --git a/mainline/runtime/sdk/android/arm/lib/crtend_so.o b/mainline/runtime/sdk/android/arm/lib/crtend_so.o
index 7c4a231..e3a599d 100644
--- a/mainline/runtime/sdk/android/arm/lib/crtend_so.o
+++ b/mainline/runtime/sdk/android/arm/lib/crtend_so.o
Binary files differ
diff --git a/mainline/runtime/sdk/android/arm/lib/libasync_safe.a b/mainline/runtime/sdk/android/arm/lib/libasync_safe.a
index 8fc377b..0eb5fa3 100644
--- a/mainline/runtime/sdk/android/arm/lib/libasync_safe.a
+++ b/mainline/runtime/sdk/android/arm/lib/libasync_safe.a
Binary files differ
diff --git a/mainline/runtime/sdk/android/arm/lib/libc.so b/mainline/runtime/sdk/android/arm/lib/libc.so
index 5e6ecbc..2bb70f5 100755
--- a/mainline/runtime/sdk/android/arm/lib/libc.so
+++ b/mainline/runtime/sdk/android/arm/lib/libc.so
Binary files differ
diff --git a/mainline/runtime/sdk/android/arm/lib/libdl.so b/mainline/runtime/sdk/android/arm/lib/libdl.so
index 0cf15ee..c249721 100755
--- a/mainline/runtime/sdk/android/arm/lib/libdl.so
+++ b/mainline/runtime/sdk/android/arm/lib/libdl.so
Binary files differ
diff --git a/mainline/runtime/sdk/android/arm/lib/libdl_android.so b/mainline/runtime/sdk/android/arm/lib/libdl_android.so
index eac9139..c61a4e7 100755
--- a/mainline/runtime/sdk/android/arm/lib/libdl_android.so
+++ b/mainline/runtime/sdk/android/arm/lib/libdl_android.so
Binary files differ
diff --git a/mainline/runtime/sdk/android/arm/lib/libm.so b/mainline/runtime/sdk/android/arm/lib/libm.so
index a7fdd50..573e89d 100755
--- a/mainline/runtime/sdk/android/arm/lib/libm.so
+++ b/mainline/runtime/sdk/android/arm/lib/libm.so
Binary files differ
diff --git a/mainline/runtime/sdk/android/arm64/include/bionic/libc/include/android/api-level.h b/mainline/runtime/sdk/android/arm64/include/bionic/libc/include/android/api-level.h
index ecf318d..79085d1 100644
--- a/mainline/runtime/sdk/android/arm64/include/bionic/libc/include/android/api-level.h
+++ b/mainline/runtime/sdk/android/arm64/include/bionic/libc/include/android/api-level.h
@@ -139,21 +139,32 @@
 #define __ANDROID_API_P__ 28
 
 /**
- * Names the "Q" API level (29), for comparison against `__ANDROID_API__`.
- * This release was called Android 10 publicly, not to be (but sure to be)
- * confused with API level 10.
+ * Names the Android 10 (aka "Q" or "Quince Tart") API level (29), for
+ * comparison against `__ANDROID_API__`.
  */
 #define __ANDROID_API_Q__ 29
 
-/** Names the "R" API level (30), for comparison against `__ANDROID_API__`. */
+/**
+ * Names the Android 11 (aka "R" or "Red Velvet Cake") API level (30), for
+ * comparison against `__ANDROID_API__`.
+ */
 #define __ANDROID_API_R__ 30
 
-/** Names the "S" API level (31), for comparison against `__ANDROID_API__`. */
+/**
+ * Names the Android 12 (aka "S" or "Snowcone") API level (31), for
+ * comparison against `__ANDROID_API__`.
+ */
 #define __ANDROID_API_S__ 31
 
-/** Names the "T" API level (33), for comparison against `__ANDROID_API__`. */
+/**
+ * Names the Android 13 (aka "T" or "Tiramisu") API level (33), for
+ * comparison against `__ANDROID_API__`.
+ */
 #define __ANDROID_API_T__ 33
 
+/** Names the "U" API level (34), for comparison against `__ANDROID_API__`. */
+#define __ANDROID_API_U__ 34
+
 /* This file is included in <features.h>, and might be used from .S files. */
 #if !defined(__ASSEMBLY__)
 
diff --git a/mainline/runtime/sdk/android/arm64/include/bionic/libc/include/android/fdsan.h b/mainline/runtime/sdk/android/arm64/include/bionic/libc/include/android/fdsan.h
index e23de85..59ce133 100644
--- a/mainline/runtime/sdk/android/arm64/include/bionic/libc/include/android/fdsan.h
+++ b/mainline/runtime/sdk/android/arm64/include/bionic/libc/include/android/fdsan.h
@@ -123,6 +123,9 @@
 
   /* libziparchive's ZipArchive */
   ANDROID_FDSAN_OWNER_TYPE_ZIPARCHIVE = 12,
+
+  /* native_handle_t */
+  ANDROID_FDSAN_OWNER_TYPE_NATIVE_HANDLE = 13,
 };
 
 /*
diff --git a/mainline/runtime/sdk/android/arm64/include/bionic/libc/include/android/legacy_stdlib_inlines.h b/mainline/runtime/sdk/android/arm64/include/bionic/libc/include/android/legacy_stdlib_inlines.h
index aeb1575..6903536 100644
--- a/mainline/runtime/sdk/android/arm64/include/bionic/libc/include/android/legacy_stdlib_inlines.h
+++ b/mainline/runtime/sdk/android/arm64/include/bionic/libc/include/android/legacy_stdlib_inlines.h
@@ -57,13 +57,11 @@
 __BEGIN_DECLS
 
 static __inline float strtof(const char* nptr, char** endptr) {
+  // N.B. Double-rounding makes this function incorrect for some inputs.
   double d = strtod(nptr, endptr);
-  if (d > FLT_MAX) {
+  if (__builtin_isfinite(d) && __builtin_fabs(d) > FLT_MAX) {
     errno = ERANGE;
-    return __builtin_huge_valf();
-  } else if (d < -FLT_MAX) {
-    errno = ERANGE;
-    return -__builtin_huge_valf();
+    return __builtin_copysign(__builtin_huge_valf(), d);
   }
   return __BIONIC_CAST(static_cast, float, d);
 }
diff --git a/mainline/runtime/sdk/android/arm64/include/bionic/libc/include/bits/elf_arm.h b/mainline/runtime/sdk/android/arm64/include/bionic/libc/include/bits/elf_arm.h
deleted file mode 100644
index 08fe1d5..0000000
--- a/mainline/runtime/sdk/android/arm64/include/bionic/libc/include/bits/elf_arm.h
+++ /dev/null
@@ -1,131 +0,0 @@
-/*	$NetBSD: elf_machdep.h,v 1.17 2014/02/25 19:20:09 matt Exp $	*/
-
-#ifndef _ARM_ELF_MACHDEP_H_
-#define _ARM_ELF_MACHDEP_H_
-
-/* Android-added. */
-#define R_ARM_IRELATIVE		160
-
-/* Processor specific flags for the ELF header e_flags field.  */
-#define EF_ARM_RELEXEC		0x00000001
-#define EF_ARM_HASENTRY		0x00000002
-#define EF_ARM_INTERWORK	0x00000004 /* GNU binutils 000413 */
-#define EF_ARM_SYMSARESORTED	0x00000004 /* ARM ELF A08 */
-#define EF_ARM_APCS_26		0x00000008 /* GNU binutils 000413 */
-#define EF_ARM_DYNSYMSUSESEGIDX	0x00000008 /* ARM ELF B01 */
-#define EF_ARM_APCS_FLOAT	0x00000010 /* GNU binutils 000413 */
-#define EF_ARM_MAPSYMSFIRST	0x00000010 /* ARM ELF B01 */
-#define EF_ARM_PIC		0x00000020
-#define EF_ARM_ALIGN8		0x00000040 /* 8-bit structure alignment.  */
-#define EF_ARM_NEW_ABI		0x00000080
-#define EF_ARM_OLD_ABI		0x00000100
-#define EF_ARM_SOFT_FLOAT	0x00000200
-#define EF_ARM_BE8		0x00800000
-#define EF_ARM_EABIMASK		0xff000000
-#define	EF_ARM_EABI_VER1	0x01000000
-#define	EF_ARM_EABI_VER2	0x02000000
-#define	EF_ARM_EABI_VER3	0x03000000
-#define	EF_ARM_EABI_VER4	0x04000000
-#define	EF_ARM_EABI_VER5	0x05000000
-
-/* Processor specific relocation types */
-
-#define R_ARM_NONE		0
-#define R_ARM_PC24		1
-#define R_ARM_ABS32		2
-#define R_ARM_REL32		3
-#define R_ARM_PC13		4
-#define R_ARM_ABS16		5
-#define R_ARM_ABS12		6
-#define R_ARM_THM_ABS5		7
-#define R_ARM_ABS8		8
-#define R_ARM_SBREL32		9
-#define R_ARM_THM_PC22		10
-#define R_ARM_THM_PC8		11
-#define R_ARM_AMP_VCALL9	12
-#define R_ARM_SWI24		13	/* obsolete static relocation */
-#define R_ARM_TLS_DESC		13	/* dynamic relocation */
-#define R_ARM_THM_SWI8		14
-#define R_ARM_XPC25		15
-#define R_ARM_THM_XPC22		16
-
-/* TLS relocations */
-#define R_ARM_TLS_DTPMOD32	17	/* ID of module containing symbol */
-#define R_ARM_TLS_DTPOFF32	18	/* Offset in TLS block */
-#define R_ARM_TLS_TPOFF32	19	/* Offset in static TLS block */
-
-/* 20-31 are reserved for ARM Linux. */
-#define R_ARM_COPY		20
-#define R_ARM_GLOB_DAT		21
-#define	R_ARM_JUMP_SLOT		22
-#define R_ARM_RELATIVE		23
-#define	R_ARM_GOTOFF		24
-#define R_ARM_GOTPC		25
-#define R_ARM_GOT32		26
-#define R_ARM_PLT32		27
-#define R_ARM_CALL		28
-#define R_ARM_JUMP24		29
-#define R_ARM_THM_JUMP24	30
-#define R_ARM_BASE_ABS		31
-#define R_ARM_ALU_PCREL_7_0	32
-#define R_ARM_ALU_PCREL_15_8	33
-#define R_ARM_ALU_PCREL_23_15	34
-#define R_ARM_ALU_SBREL_11_0	35
-#define R_ARM_ALU_SBREL_19_12	36
-#define R_ARM_ALU_SBREL_27_20	37	// depcreated
-#define R_ARM_TARGET1		38
-#define R_ARM_SBREL31		39	// deprecated
-#define R_ARM_V4BX		40
-#define R_ARM_TARGET2		41
-#define R_ARM_PREL31		42
-#define R_ARM_MOVW_ABS_NC	43
-#define R_ARM_MOVT_ABS		44
-#define R_ARM_MOVW_PREL_NC	45
-#define R_ARM_MOVT_PREL		46
-#define R_ARM_THM_MOVW_ABS_NC	47
-#define R_ARM_THM_MOVT_ABS	48
-#define R_ARM_THM_MOVW_PREL_NC	49
-#define R_ARM_THM_MOVT_PREL	50
-
-/* 96-111 are reserved to G++. */
-#define R_ARM_GNU_VTENTRY	100
-#define R_ARM_GNU_VTINHERIT	101
-#define R_ARM_THM_PC11		102
-#define R_ARM_THM_PC9		103
-
-/* More TLS relocations */
-#define R_ARM_TLS_GD32		104	/* PC-rel 32 bit for global dynamic */
-#define R_ARM_TLS_LDM32		105	/* PC-rel 32 bit for local dynamic */
-#define R_ARM_TLS_LDO32		106	/* 32 bit offset relative to TLS */
-#define R_ARM_TLS_IE32		107	/* PC-rel 32 bit for GOT entry of */
-#define R_ARM_TLS_LE32		108
-#define R_ARM_TLS_LDO12		109
-#define R_ARM_TLS_LE12		110
-#define R_ARM_TLS_IE12GP	111
-
-/* 112-127 are reserved for private experiments. */
-
-#define R_ARM_RXPC25		249
-#define R_ARM_RSBREL32		250
-#define R_ARM_THM_RPC22		251
-#define R_ARM_RREL32		252
-#define R_ARM_RABS32		253
-#define R_ARM_RPC24		254
-#define R_ARM_RBASE		255
-
-/* Processor specific program header flags */
-#define PF_ARM_SB		0x10000000
-#define PF_ARM_PI		0x20000000
-#define PF_ARM_ENTRY		0x80000000
-
-/* Processor specific program header types */
-#define PT_ARM_EXIDX		(PT_LOPROC + 1)
-
-/* Processor specific section header flags */
-#define SHF_ENTRYSECT		0x10000000
-#define SHF_COMDEF		0x80000000
-
-/* Processor specific symbol types */
-#define STT_ARM_TFUNC		STT_LOPROC
-
-#endif /* _ARM_ELF_MACHDEP_H_ */
diff --git a/mainline/runtime/sdk/android/arm64/include/bionic/libc/include/bits/elf_arm64.h b/mainline/runtime/sdk/android/arm64/include/bionic/libc/include/bits/elf_arm64.h
deleted file mode 100644
index 9330d7b..0000000
--- a/mainline/runtime/sdk/android/arm64/include/bionic/libc/include/bits/elf_arm64.h
+++ /dev/null
@@ -1,97 +0,0 @@
-/*
- * Copyright (C) 2013 The Android Open Source Project
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *  * Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- *  * Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
- * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
- * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
- * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
- * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- */
-
-#ifndef _AARCH64_ELF_MACHDEP_H_
-#define _AARCH64_ELF_MACHDEP_H_
-
-/* Null relocations */
-#define R_ARM_NONE                      0
-#define R_AARCH64_NONE                  256
-
-/* Static Data relocations */
-#define R_AARCH64_ABS64                 257
-#define R_AARCH64_ABS32                 258
-#define R_AARCH64_ABS16                 259
-#define R_AARCH64_PREL64                260
-#define R_AARCH64_PREL32                261
-#define R_AARCH64_PREL16                262
-
-#define R_AARCH64_MOVW_UABS_G0          263
-#define R_AARCH64_MOVW_UABS_G0_NC       264
-#define R_AARCH64_MOVW_UABS_G1          265
-#define R_AARCH64_MOVW_UABS_G1_NC       266
-#define R_AARCH64_MOVW_UABS_G2          267
-#define R_AARCH64_MOVW_UABS_G2_NC       268
-#define R_AARCH64_MOVW_UABS_G3          269
-#define R_AARCH64_MOVW_SABS_G0          270
-#define R_AARCH64_MOVW_SABS_G1          271
-#define R_AARCH64_MOVW_SABS_G2          272
-
-/* PC-relative addresses */
-#define R_AARCH64_LD_PREL_LO19          273
-#define R_AARCH64_ADR_PREL_LO21         274
-#define R_AARCH64_ADR_PREL_PG_HI21      275
-#define R_AARCH64_ADR_PREL_PG_HI21_NC   276
-#define R_AARCH64_ADD_ABS_LO12_NC       277
-#define R_AARCH64_LDST8_ABS_LO12_NC     278
-
-/* Control-flow relocations */
-#define R_AARCH64_TSTBR14               279
-#define R_AARCH64_CONDBR19              280
-#define R_AARCH64_JUMP26                282
-#define R_AARCH64_CALL26                283
-#define R_AARCH64_LDST16_ABS_LO12_NC    284
-#define R_AARCH64_LDST32_ABS_LO12_NC    285
-#define R_AARCH64_LDST64_ABS_LO12_NC    286
-#define R_AARCH64_LDST128_ABS_LO12_NC   299
-
-#define R_AARCH64_MOVW_PREL_G0          287
-#define R_AARCH64_MOVW_PREL_G0_NC       288
-#define R_AARCH64_MOVW_PREL_G1          289
-#define R_AARCH64_MOVW_PREL_G1_NC       290
-#define R_AARCH64_MOVW_PREL_G2          291
-#define R_AARCH64_MOVW_PREL_G2_NC       292
-#define R_AARCH64_MOVW_PREL_G3          293
-
-/* Dynamic relocations */
-#define R_AARCH64_COPY                  1024
-#define R_AARCH64_GLOB_DAT              1025    /* Create GOT entry.  */
-#define R_AARCH64_JUMP_SLOT             1026    /* Create PLT entry.  */
-#define R_AARCH64_RELATIVE              1027    /* Adjust by program base.  */
-#define R_AARCH64_TLS_DTPMOD            1028    /* Module index. */
-#define R_AARCH64_TLS_DTPREL            1029    /* Module-relative offset. */
-#define R_AARCH64_TLS_TPREL             1030    /* TP-relative offset. */
-#define R_AARCH64_TLSDESC               1031    /* 16-byte descriptor: resolver func + arg. */
-#define R_AARCH64_IRELATIVE             1032
-
-/* Dynamic array tags */
-#define DT_AARCH64_BTI_PLT              0x70000001
-#define DT_AARCH64_PAC_PLT              0x70000003
-#define DT_AARCH64_VARIANT_PCS          0x70000005
-
-#endif /* _AARCH64_ELF_MACHDEP_H_ */
diff --git a/mainline/runtime/sdk/android/arm64/include/bionic/libc/include/bits/elf_common.h b/mainline/runtime/sdk/android/arm64/include/bionic/libc/include/bits/elf_common.h
new file mode 100644
index 0000000..ea833f4
--- /dev/null
+++ b/mainline/runtime/sdk/android/arm64/include/bionic/libc/include/bits/elf_common.h
@@ -0,0 +1,1430 @@
+/*-
+ * SPDX-License-Identifier: BSD-2-Clause-FreeBSD
+ *
+ * Copyright (c) 2017, 2018 Dell EMC
+ * Copyright (c) 2000, 2001, 2008, 2011, David E. O'Brien
+ * Copyright (c) 1998 John D. Polstra.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ *
+ * $FreeBSD$
+ */
+
+#ifndef _SYS_ELF_COMMON_H_
+#define	_SYS_ELF_COMMON_H_ 1
+
+/*
+ * ELF definitions that are independent of architecture or word size.
+ */
+
+/*
+ * Option kinds.
+ */
+#define	ODK_NULL	0	/* undefined */
+#define	ODK_REGINFO	1	/* register usage info */
+#define	ODK_EXCEPTIONS	2	/* exception processing info */
+#define	ODK_PAD		3	/* section padding */
+#define	ODK_HWPATCH	4	/* hardware patch applied */
+#define	ODK_FILL	5	/* fill value used by the linker */
+#define	ODK_TAGS	6	/* reserved space for tools */
+#define	ODK_HWAND	7	/* hardware AND patch applied */
+#define	ODK_HWOR	8	/* hardware OR patch applied */
+#define	ODK_GP_GROUP	9	/* GP group for text/data sections */
+#define	ODK_IDENT	10	/* ID information */
+#define	ODK_PAGESIZE	11	/* page size information */
+
+/*
+ * ODK_EXCEPTIONS info field masks.
+ */
+#define	OEX_FPU_MIN	0x0000001f	/* min FPU exception required */
+#define	OEX_FPU_MAX	0x00001f00	/* max FPU exception allowed */
+#define	OEX_PAGE0	0x00010000	/* page zero must be mapped */
+#define	OEX_SMM		0x00020000	/* run in sequential memory mode */
+#define	OEX_PRECISEFP	0x00040000	/* run in precise FP exception mode */
+#define	OEX_DISMISS	0x00080000	/* dismiss invalid address traps */
+
+/*
+ * ODK_PAD info field masks.
+ */
+#define	OPAD_PREFIX	0x0001
+#define	OPAD_POSTFIX	0x0002
+#define	OPAD_SYMBOL	0x0004
+
+/*
+ * ODK_HWPATCH info field masks.
+ */
+#define	OHW_R4KEOP	0x00000001	/* patch for R4000 branch at end-of-page bug */
+#define	OHW_R8KPFETCH	0x00000002	/* R8000 prefetch bug may occur */
+#define	OHW_R5KEOP	0x00000004	/* patch for R5000 branch at end-of-page bug */
+#define	OHW_R5KCVTL	0x00000008	/* R5000 cvt.[ds].l bug: clean == 1 */
+#define	OHW_R10KLDL	0x00000010UL	/* need patch for R10000 misaligned load */
+
+/*
+ * ODK_HWAND/ODK_HWOR info field and hwp_flags[12] masks.
+ */
+#define	OHWA0_R4KEOP_CHECKED	0x00000001	/* object checked for R4000 end-of-page bug */
+#define	OHWA0_R4KEOP_CLEAN	0x00000002	/* object verified clean for R4000 end-of-page bug */
+#define	OHWO0_FIXADE		0x00000001	/* object requires call to fixade */
+
+/*
+ * ODK_IDENT/ODK_GP_GROUP info field masks.
+ */
+#define	OGP_GROUP	0x0000ffff	/* GP group number */
+#define	OGP_SELF	0x00010000	/* GP group is self-contained */
+
+/* Indexes into the e_ident array.  Keep synced with
+   http://www.sco.com/developers/gabi/latest/ch4.eheader.html */
+#define	EI_MAG0		0	/* Magic number, byte 0. */
+#define	EI_MAG1		1	/* Magic number, byte 1. */
+#define	EI_MAG2		2	/* Magic number, byte 2. */
+#define	EI_MAG3		3	/* Magic number, byte 3. */
+#define	EI_CLASS	4	/* Class of machine. */
+#define	EI_DATA		5	/* Data format. */
+#define	EI_VERSION	6	/* ELF format version. */
+#define	EI_OSABI	7	/* Operating system / ABI identification */
+#define	EI_ABIVERSION	8	/* ABI version */
+#define	OLD_EI_BRAND	8	/* Start of architecture identification. */
+#define	EI_PAD		9	/* Start of padding (per SVR4 ABI). */
+#define	EI_NIDENT	16	/* Size of e_ident array. */
+
+/* Values for the magic number bytes. */
+#define	ELFMAG0		0x7f
+#define	ELFMAG1		'E'
+#define	ELFMAG2		'L'
+#define	ELFMAG3		'F'
+#define	ELFMAG		"\177ELF"	/* magic string */
+#define	SELFMAG		4		/* magic string size */
+
+/* Values for e_ident[EI_VERSION] and e_version. */
+#define	EV_NONE		0
+#define	EV_CURRENT	1
+
+/* Values for e_ident[EI_CLASS]. */
+#define	ELFCLASSNONE	0	/* Unknown class. */
+#define	ELFCLASS32	1	/* 32-bit architecture. */
+#define	ELFCLASS64	2	/* 64-bit architecture. */
+
+/* Values for e_ident[EI_DATA]. */
+#define	ELFDATANONE	0	/* Unknown data format. */
+#define	ELFDATA2LSB	1	/* 2's complement little-endian. */
+#define	ELFDATA2MSB	2	/* 2's complement big-endian. */
+
+/* Values for e_ident[EI_OSABI]. */
+#define	ELFOSABI_NONE		0	/* UNIX System V ABI */
+#define	ELFOSABI_HPUX		1	/* HP-UX operating system */
+#define	ELFOSABI_NETBSD		2	/* NetBSD */
+#define	ELFOSABI_LINUX		3	/* GNU/Linux */
+#define	ELFOSABI_HURD		4	/* GNU/Hurd */
+#define	ELFOSABI_86OPEN		5	/* 86Open common IA32 ABI */
+#define	ELFOSABI_SOLARIS	6	/* Solaris */
+#define	ELFOSABI_AIX		7	/* AIX */
+#define	ELFOSABI_IRIX		8	/* IRIX */
+#define	ELFOSABI_FREEBSD	9	/* FreeBSD */
+#define	ELFOSABI_TRU64		10	/* TRU64 UNIX */
+#define	ELFOSABI_MODESTO	11	/* Novell Modesto */
+#define	ELFOSABI_OPENBSD	12	/* OpenBSD */
+#define	ELFOSABI_OPENVMS	13	/* Open VMS */
+#define	ELFOSABI_NSK		14	/* HP Non-Stop Kernel */
+#define	ELFOSABI_AROS		15	/* Amiga Research OS */
+#define	ELFOSABI_FENIXOS	16	/* FenixOS */
+#define	ELFOSABI_CLOUDABI	17	/* Nuxi CloudABI */
+#define	ELFOSABI_OPENVOS	18	/* Stratus Technologies OpenVOS */
+#define	ELFOSABI_ARM_AEABI	64	/* ARM EABI */
+#define	ELFOSABI_ARM		97	/* ARM */
+#define	ELFOSABI_STANDALONE	255	/* Standalone (embedded) application */
+
+#define	ELFOSABI_MONTEREY	ELFOSABI_AIX	/* Monterey */
+
+/* e_ident */
+#define	IS_ELF(ehdr)	((ehdr).e_ident[EI_MAG0] == ELFMAG0 && \
+			 (ehdr).e_ident[EI_MAG1] == ELFMAG1 && \
+			 (ehdr).e_ident[EI_MAG2] == ELFMAG2 && \
+			 (ehdr).e_ident[EI_MAG3] == ELFMAG3)
+
+/* Values for e_type. */
+#define	ET_NONE		0	/* Unknown type. */
+#define	ET_REL		1	/* Relocatable. */
+#define	ET_EXEC		2	/* Executable. */
+#define	ET_DYN		3	/* Shared object. */
+#define	ET_CORE		4	/* Core file. */
+#define	ET_LOOS		0xfe00	/* First operating system specific. */
+#define	ET_HIOS		0xfeff	/* Last operating system-specific. */
+#define	ET_LOPROC	0xff00	/* First processor-specific. */
+#define	ET_HIPROC	0xffff	/* Last processor-specific. */
+
+/* Values for e_machine. */
+#define	EM_NONE		0	/* Unknown machine. */
+#define	EM_M32		1	/* AT&T WE32100. */
+#define	EM_SPARC	2	/* Sun SPARC. */
+#define	EM_386		3	/* Intel i386. */
+#define	EM_68K		4	/* Motorola 68000. */
+#define	EM_88K		5	/* Motorola 88000. */
+#define	EM_IAMCU	6	/* Intel MCU. */
+#define	EM_860		7	/* Intel i860. */
+#define	EM_MIPS		8	/* MIPS R3000 Big-Endian only. */
+#define	EM_S370		9	/* IBM System/370. */
+#define	EM_MIPS_RS3_LE	10	/* MIPS R3000 Little-Endian. */
+#define	EM_PARISC	15	/* HP PA-RISC. */
+#define	EM_VPP500	17	/* Fujitsu VPP500. */
+#define	EM_SPARC32PLUS	18	/* SPARC v8plus. */
+#define	EM_960		19	/* Intel 80960. */
+#define	EM_PPC		20	/* PowerPC 32-bit. */
+#define	EM_PPC64	21	/* PowerPC 64-bit. */
+#define	EM_S390		22	/* IBM System/390. */
+#define	EM_V800		36	/* NEC V800. */
+#define	EM_FR20		37	/* Fujitsu FR20. */
+#define	EM_RH32		38	/* TRW RH-32. */
+#define	EM_RCE		39	/* Motorola RCE. */
+#define	EM_ARM		40	/* ARM. */
+#define	EM_SH		42	/* Hitachi SH. */
+#define	EM_SPARCV9	43	/* SPARC v9 64-bit. */
+#define	EM_TRICORE	44	/* Siemens TriCore embedded processor. */
+#define	EM_ARC		45	/* Argonaut RISC Core. */
+#define	EM_H8_300	46	/* Hitachi H8/300. */
+#define	EM_H8_300H	47	/* Hitachi H8/300H. */
+#define	EM_H8S		48	/* Hitachi H8S. */
+#define	EM_H8_500	49	/* Hitachi H8/500. */
+#define	EM_IA_64	50	/* Intel IA-64 Processor. */
+#define	EM_MIPS_X	51	/* Stanford MIPS-X. */
+#define	EM_COLDFIRE	52	/* Motorola ColdFire. */
+#define	EM_68HC12	53	/* Motorola M68HC12. */
+#define	EM_MMA		54	/* Fujitsu MMA. */
+#define	EM_PCP		55	/* Siemens PCP. */
+#define	EM_NCPU		56	/* Sony nCPU. */
+#define	EM_NDR1		57	/* Denso NDR1 microprocessor. */
+#define	EM_STARCORE	58	/* Motorola Star*Core processor. */
+#define	EM_ME16		59	/* Toyota ME16 processor. */
+#define	EM_ST100	60	/* STMicroelectronics ST100 processor. */
+#define	EM_TINYJ	61	/* Advanced Logic Corp. TinyJ processor. */
+#define	EM_X86_64	62	/* Advanced Micro Devices x86-64 */
+#define	EM_AMD64	EM_X86_64	/* Advanced Micro Devices x86-64 (compat) */
+#define	EM_PDSP		63	/* Sony DSP Processor. */
+#define	EM_FX66		66	/* Siemens FX66 microcontroller. */
+#define	EM_ST9PLUS	67	/* STMicroelectronics ST9+ 8/16
+				   microcontroller. */
+#define	EM_ST7		68	/* STmicroelectronics ST7 8-bit
+				   microcontroller. */
+#define	EM_68HC16	69	/* Motorola MC68HC16 microcontroller. */
+#define	EM_68HC11	70	/* Motorola MC68HC11 microcontroller. */
+#define	EM_68HC08	71	/* Motorola MC68HC08 microcontroller. */
+#define	EM_68HC05	72	/* Motorola MC68HC05 microcontroller. */
+#define	EM_SVX		73	/* Silicon Graphics SVx. */
+#define	EM_ST19		74	/* STMicroelectronics ST19 8-bit mc. */
+#define	EM_VAX		75	/* Digital VAX. */
+#define	EM_CRIS		76	/* Axis Communications 32-bit embedded
+				   processor. */
+#define	EM_JAVELIN	77	/* Infineon Technologies 32-bit embedded
+				   processor. */
+#define	EM_FIREPATH	78	/* Element 14 64-bit DSP Processor. */
+#define	EM_ZSP		79	/* LSI Logic 16-bit DSP Processor. */
+#define	EM_MMIX		80	/* Donald Knuth's educational 64-bit proc. */
+#define	EM_HUANY	81	/* Harvard University machine-independent
+				   object files. */
+#define	EM_PRISM	82	/* SiTera Prism. */
+#define	EM_AVR		83	/* Atmel AVR 8-bit microcontroller. */
+#define	EM_FR30		84	/* Fujitsu FR30. */
+#define	EM_D10V		85	/* Mitsubishi D10V. */
+#define	EM_D30V		86	/* Mitsubishi D30V. */
+#define	EM_V850		87	/* NEC v850. */
+#define	EM_M32R		88	/* Mitsubishi M32R. */
+#define	EM_MN10300	89	/* Matsushita MN10300. */
+#define	EM_MN10200	90	/* Matsushita MN10200. */
+#define	EM_PJ		91	/* picoJava. */
+#define	EM_OPENRISC	92	/* OpenRISC 32-bit embedded processor. */
+#define	EM_ARC_A5	93	/* ARC Cores Tangent-A5. */
+#define	EM_XTENSA	94	/* Tensilica Xtensa Architecture. */
+#define	EM_VIDEOCORE	95	/* Alphamosaic VideoCore processor. */
+#define	EM_TMM_GPP	96	/* Thompson Multimedia General Purpose
+				   Processor. */
+#define	EM_NS32K	97	/* National Semiconductor 32000 series. */
+#define	EM_TPC		98	/* Tenor Network TPC processor. */
+#define	EM_SNP1K	99	/* Trebia SNP 1000 processor. */
+#define	EM_ST200	100	/* STMicroelectronics ST200 microcontroller. */
+#define	EM_IP2K		101	/* Ubicom IP2xxx microcontroller family. */
+#define	EM_MAX		102	/* MAX Processor. */
+#define	EM_CR		103	/* National Semiconductor CompactRISC
+				   microprocessor. */
+#define	EM_F2MC16	104	/* Fujitsu F2MC16. */
+#define	EM_MSP430	105	/* Texas Instruments embedded microcontroller
+				   msp430. */
+#define	EM_BLACKFIN	106	/* Analog Devices Blackfin (DSP) processor. */
+#define	EM_SE_C33	107	/* S1C33 Family of Seiko Epson processors. */
+#define	EM_SEP		108	/* Sharp embedded microprocessor. */
+#define	EM_ARCA		109	/* Arca RISC Microprocessor. */
+#define	EM_UNICORE	110	/* Microprocessor series from PKU-Unity Ltd.
+				   and MPRC of Peking University */
+#define	EM_AARCH64	183	/* AArch64 (64-bit ARM) */
+#define	EM_RISCV	243	/* RISC-V */
+
+/* Non-standard or deprecated. */
+#define	EM_486		6	/* Intel i486. */
+#define	EM_MIPS_RS4_BE	10	/* MIPS R4000 Big-Endian */
+#define	EM_ALPHA_STD	41	/* Digital Alpha (standard value). */
+#define	EM_ALPHA	0x9026	/* Alpha (written in the absence of an ABI) */
+
+/**
+ * e_flags
+ */
+#define	EF_ARM_RELEXEC	0x1
+#define	EF_ARM_HASENTRY	0x2
+#define	EF_ARM_SYMSARESORTED	0x4
+#define	EF_ARM_DYNSYMSUSESEGIDX	0x8
+#define	EF_ARM_MAPSYMSFIRST	0x10
+#define	EF_ARM_LE8		0x00400000
+#define	EF_ARM_BE8		0x00800000
+#define	EF_ARM_EABIMASK		0xFF000000
+#define	EF_ARM_EABI_UNKNOWN	0x00000000
+#define	EF_ARM_EABI_VER1	0x01000000
+#define	EF_ARM_EABI_VER2	0x02000000
+#define	EF_ARM_EABI_VER3	0x03000000
+#define	EF_ARM_EABI_VER4	0x04000000
+#define	EF_ARM_EABI_VER5	0x05000000
+#define	EF_ARM_INTERWORK	0x00000004
+#define	EF_ARM_APCS_26		0x00000008
+#define	EF_ARM_APCS_FLOAT	0x00000010
+#define	EF_ARM_PIC		0x00000020
+#define	EF_ARM_ALIGN8		0x00000040
+#define	EF_ARM_NEW_ABI		0x00000080
+#define	EF_ARM_OLD_ABI		0x00000100
+#define	EF_ARM_ABI_FLOAT_SOFT	0x00000200
+#define	EF_ARM_SOFT_FLOAT	EF_ARM_ABI_FLOAT_SOFT /* Pre-V5 ABI name */
+#define	EF_ARM_ABI_FLOAT_HARD	0x00000400
+#define	EF_ARM_VFP_FLOAT	EF_ARM_ABI_FLOAT_HARD /* Pre-V5 ABI name */
+#define	EF_ARM_MAVERICK_FLOAT	0x00000800
+
+#define	EF_MIPS_NOREORDER	0x00000001
+#define	EF_MIPS_PIC		0x00000002	/* Contains PIC code */
+#define	EF_MIPS_CPIC		0x00000004	/* STD PIC calling sequence */
+#define	EF_MIPS_UCODE		0x00000010
+#define	EF_MIPS_ABI2		0x00000020	/* N32 */
+#define	EF_MIPS_OPTIONS_FIRST	0x00000080
+#define	EF_MIPS_ABI		0x0000F000
+#define	EF_MIPS_ABI_O32		0x00001000
+#define	EF_MIPS_ABI_O64		0x00002000
+#define	EF_MIPS_ABI_EABI32	0x00003000
+#define	EF_MIPS_ABI_EABI64	0x00004000
+#define	EF_MIPS_ARCH_ASE	0x0F000000	/* Architectural extensions */
+#define	EF_MIPS_ARCH_ASE_MDMX	0x08000000	/* MDMX multimedia extension */
+#define	EF_MIPS_ARCH_ASE_M16	0x04000000	/* MIPS-16 ISA extensions */
+#define	EF_MIPS_ARCH		0xF0000000	/* Architecture field */
+#define	EF_MIPS_ARCH_1		0x00000000	/* -mips1 code */
+#define	EF_MIPS_ARCH_2		0x10000000	/* -mips2 code */
+#define	EF_MIPS_ARCH_3		0x20000000	/* -mips3 code */
+#define	EF_MIPS_ARCH_4		0x30000000	/* -mips4 code */
+#define	EF_MIPS_ARCH_5		0x40000000	/* -mips5 code */
+#define	EF_MIPS_ARCH_32		0x50000000	/* -mips32 code */
+#define	EF_MIPS_ARCH_64		0x60000000	/* -mips64 code */
+#define	EF_MIPS_ARCH_32R2	0x70000000	/* -mips32r2 code */
+#define	EF_MIPS_ARCH_64R2	0x80000000	/* -mips64r2 code */
+
+#define	EF_PPC_EMB		0x80000000
+#define	EF_PPC_RELOCATABLE	0x00010000
+#define	EF_PPC_RELOCATABLE_LIB	0x00008000
+
+#define	EF_RISCV_RVC		0x00000001
+#define	EF_RISCV_FLOAT_ABI_MASK	0x00000006
+#define	EF_RISCV_FLOAT_ABI_SOFT	0x00000000
+#define	EF_RISCV_FLOAT_ABI_SINGLE 0x000002
+#define	EF_RISCV_FLOAT_ABI_DOUBLE 0x000004
+#define	EF_RISCV_FLOAT_ABI_QUAD	0x00000006
+#define	EF_RISCV_RVE		0x00000008
+#define	EF_RISCV_TSO		0x00000010
+
+#define	EF_SPARC_EXT_MASK	0x00ffff00
+#define	EF_SPARC_32PLUS		0x00000100
+#define	EF_SPARC_SUN_US1	0x00000200
+#define	EF_SPARC_HAL_R1		0x00000200
+#define	EF_SPARC_SUN_US3	0x00000800
+
+#define	EF_SPARCV9_MM		0x00000003
+#define	EF_SPARCV9_TSO		0x00000000
+#define	EF_SPARCV9_PSO		0x00000001
+#define	EF_SPARCV9_RMO		0x00000002
+
+/* Special section indexes. */
+#define	SHN_UNDEF	     0		/* Undefined, missing, irrelevant. */
+#define	SHN_LORESERVE	0xff00		/* First of reserved range. */
+#define	SHN_LOPROC	0xff00		/* First processor-specific. */
+#define	SHN_HIPROC	0xff1f		/* Last processor-specific. */
+#define	SHN_LOOS	0xff20		/* First operating system-specific. */
+#define	SHN_FBSD_CACHED	SHN_LOOS	/* Transient, for sys/kern/link_elf_obj
+					   linker only: Cached global in local
+					   symtab. */
+#define	SHN_HIOS	0xff3f		/* Last operating system-specific. */
+#define	SHN_ABS		0xfff1		/* Absolute values. */
+#define	SHN_COMMON	0xfff2		/* Common data. */
+#define	SHN_XINDEX	0xffff		/* Escape -- index stored elsewhere. */
+#define	SHN_HIRESERVE	0xffff		/* Last of reserved range. */
+
+/* sh_type */
+#define	SHT_NULL		0	/* inactive */
+#define	SHT_PROGBITS		1	/* program defined information */
+#define	SHT_SYMTAB		2	/* symbol table section */
+#define	SHT_STRTAB		3	/* string table section */
+#define	SHT_RELA		4	/* relocation section with addends */
+#define	SHT_HASH		5	/* symbol hash table section */
+#define	SHT_DYNAMIC		6	/* dynamic section */
+#define	SHT_NOTE		7	/* note section */
+#define	SHT_NOBITS		8	/* no space section */
+#define	SHT_REL			9	/* relocation section - no addends */
+#define	SHT_SHLIB		10	/* reserved - purpose unknown */
+#define	SHT_DYNSYM		11	/* dynamic symbol table section */
+#define	SHT_INIT_ARRAY		14	/* Initialization function pointers. */
+#define	SHT_FINI_ARRAY		15	/* Termination function pointers. */
+#define	SHT_PREINIT_ARRAY	16	/* Pre-initialization function ptrs. */
+#define	SHT_GROUP		17	/* Section group. */
+#define	SHT_SYMTAB_SHNDX	18	/* Section indexes (see SHN_XINDEX). */
+#define	SHT_LOOS		0x60000000	/* First of OS specific semantics */
+#define	SHT_LOSUNW		0x6ffffff4
+#define	SHT_SUNW_dof		0x6ffffff4
+#define	SHT_SUNW_cap		0x6ffffff5
+#define	SHT_GNU_ATTRIBUTES	0x6ffffff5
+#define	SHT_SUNW_SIGNATURE	0x6ffffff6
+#define	SHT_GNU_HASH		0x6ffffff6
+#define	SHT_GNU_LIBLIST		0x6ffffff7
+#define	SHT_SUNW_ANNOTATE	0x6ffffff7
+#define	SHT_SUNW_DEBUGSTR	0x6ffffff8
+#define	SHT_SUNW_DEBUG		0x6ffffff9
+#define	SHT_SUNW_move		0x6ffffffa
+#define	SHT_SUNW_COMDAT		0x6ffffffb
+#define	SHT_SUNW_syminfo	0x6ffffffc
+#define	SHT_SUNW_verdef		0x6ffffffd
+#define	SHT_GNU_verdef		0x6ffffffd	/* Symbol versions provided */
+#define	SHT_SUNW_verneed	0x6ffffffe
+#define	SHT_GNU_verneed		0x6ffffffe	/* Symbol versions required */
+#define	SHT_SUNW_versym		0x6fffffff
+#define	SHT_GNU_versym		0x6fffffff	/* Symbol version table */
+#define	SHT_HISUNW		0x6fffffff
+#define	SHT_HIOS		0x6fffffff	/* Last of OS specific semantics */
+#define	SHT_LOPROC		0x70000000	/* reserved range for processor */
+#define	SHT_X86_64_UNWIND	0x70000001	/* unwind information */
+#define	SHT_AMD64_UNWIND	SHT_X86_64_UNWIND 
+
+#define	SHT_ARM_EXIDX		0x70000001	/* Exception index table. */
+#define	SHT_ARM_PREEMPTMAP	0x70000002	/* BPABI DLL dynamic linking 
+						   pre-emption map. */
+#define	SHT_ARM_ATTRIBUTES	0x70000003	/* Object file compatibility 
+						   attributes. */
+#define	SHT_ARM_DEBUGOVERLAY	0x70000004	/* See DBGOVL for details. */
+#define	SHT_ARM_OVERLAYSECTION	0x70000005	/* See DBGOVL for details. */
+#define	SHT_MIPS_LIBLIST	0x70000000
+#define	SHT_MIPS_MSYM		0x70000001
+#define	SHT_MIPS_CONFLICT	0x70000002
+#define	SHT_MIPS_GPTAB		0x70000003
+#define	SHT_MIPS_UCODE		0x70000004
+#define	SHT_MIPS_DEBUG		0x70000005
+#define	SHT_MIPS_REGINFO	0x70000006
+#define	SHT_MIPS_PACKAGE	0x70000007
+#define	SHT_MIPS_PACKSYM	0x70000008
+#define	SHT_MIPS_RELD		0x70000009
+#define	SHT_MIPS_IFACE		0x7000000b
+#define	SHT_MIPS_CONTENT	0x7000000c
+#define	SHT_MIPS_OPTIONS	0x7000000d
+#define	SHT_MIPS_DELTASYM	0x7000001b
+#define	SHT_MIPS_DELTAINST	0x7000001c
+#define	SHT_MIPS_DELTACLASS	0x7000001d
+#define	SHT_MIPS_DWARF		0x7000001e	/* MIPS gcc uses MIPS_DWARF */
+#define	SHT_MIPS_DELTADECL	0x7000001f
+#define	SHT_MIPS_SYMBOL_LIB	0x70000020
+#define	SHT_MIPS_EVENTS		0x70000021
+#define	SHT_MIPS_TRANSLATE	0x70000022
+#define	SHT_MIPS_PIXIE		0x70000023
+#define	SHT_MIPS_XLATE		0x70000024
+#define	SHT_MIPS_XLATE_DEBUG	0x70000025
+#define	SHT_MIPS_WHIRL		0x70000026
+#define	SHT_MIPS_EH_REGION	0x70000027
+#define	SHT_MIPS_XLATE_OLD	0x70000028
+#define	SHT_MIPS_PDR_EXCEPTION	0x70000029
+#define	SHT_MIPS_ABIFLAGS	0x7000002a
+
+#define	SHT_SPARC_GOTDATA	0x70000000
+
+#define	SHTORDERED
+#define	SHT_HIPROC		0x7fffffff	/* specific section header types */
+#define	SHT_LOUSER		0x80000000	/* reserved range for application */
+#define	SHT_HIUSER		0xffffffff	/* specific indexes */
+
+/* Flags for sh_flags. */
+#define	SHF_WRITE		0x1	/* Section contains writable data. */
+#define	SHF_ALLOC		0x2	/* Section occupies memory. */
+#define	SHF_EXECINSTR		0x4	/* Section contains instructions. */
+#define	SHF_MERGE		0x10	/* Section may be merged. */
+#define	SHF_STRINGS		0x20	/* Section contains strings. */
+#define	SHF_INFO_LINK		0x40	/* sh_info holds section index. */
+#define	SHF_LINK_ORDER		0x80	/* Special ordering requirements. */
+#define	SHF_OS_NONCONFORMING	0x100	/* OS-specific processing required. */
+#define	SHF_GROUP		0x200	/* Member of section group. */
+#define	SHF_TLS			0x400	/* Section contains TLS data. */
+#define	SHF_COMPRESSED		0x800	/* Section contains compressed data. */
+#define	SHF_MASKOS	0x0ff00000	/* OS-specific semantics. */
+#define	SHF_MASKPROC	0xf0000000	/* Processor-specific semantics. */
+
+/* Flags for section groups. */
+#define	GRP_COMDAT	0x1	/* COMDAT semantics. */
+
+/*
+ * Flags / mask for .gnu.versym sections.
+ */
+#define	VERSYM_VERSION	0x7fff
+#define	VERSYM_HIDDEN	0x8000
+
+/* Values for p_type. */
+#define	PT_NULL		0	/* Unused entry. */
+#define	PT_LOAD		1	/* Loadable segment. */
+#define	PT_DYNAMIC	2	/* Dynamic linking information segment. */
+#define	PT_INTERP	3	/* Pathname of interpreter. */
+#define	PT_NOTE		4	/* Auxiliary information. */
+#define	PT_SHLIB	5	/* Reserved (not used). */
+#define	PT_PHDR		6	/* Location of program header itself. */
+#define	PT_TLS		7	/* Thread local storage segment */
+#define	PT_LOOS		0x60000000	/* First OS-specific. */
+#define	PT_SUNW_UNWIND	0x6464e550	/* amd64 UNWIND program header */
+#define	PT_DUMP_DELTA	0x6fb5d000	/* va->pa map for kernel dumps
+					   (currently arm). */
+#define	PT_LOSUNW	0x6ffffffa
+#define	PT_SUNWBSS	0x6ffffffa	/* Sun Specific segment */
+#define	PT_SUNWSTACK	0x6ffffffb	/* describes the stack segment */
+#define	PT_SUNWDTRACE	0x6ffffffc	/* private */
+#define	PT_SUNWCAP	0x6ffffffd	/* hard/soft capabilities segment */
+#define	PT_HISUNW	0x6fffffff
+#define	PT_HIOS		0x6fffffff	/* Last OS-specific. */
+#define	PT_LOPROC	0x70000000	/* First processor-specific type. */
+#define	PT_ARM_ARCHEXT	0x70000000	/* ARM arch compat information. */
+#define	PT_ARM_EXIDX	0x70000001	/* ARM exception unwind tables. */
+#define	PT_MIPS_REGINFO		0x70000000	/* MIPS register usage info */
+#define	PT_MIPS_RTPROC		0x70000001	/* MIPS runtime procedure tbl */
+#define	PT_MIPS_OPTIONS		0x70000002	/* MIPS e_flags value*/
+#define	PT_MIPS_ABIFLAGS	0x70000003	/* MIPS fp mode */
+#define	PT_HIPROC	0x7fffffff	/* Last processor-specific type. */
+
+#define	PT_OPENBSD_RANDOMIZE	0x65A3DBE6	/* OpenBSD random data segment */
+#define	PT_OPENBSD_WXNEEDED	0x65A3DBE7	/* OpenBSD EXEC/WRITE pages needed */
+#define	PT_OPENBSD_BOOTDATA	0x65A41BE6	/* OpenBSD section for boot args */
+
+/* Values for p_flags. */
+#define	PF_X		0x1		/* Executable. */
+#define	PF_W		0x2		/* Writable. */
+#define	PF_R		0x4		/* Readable. */
+#define	PF_MASKOS	0x0ff00000	/* Operating system-specific. */
+#define	PF_MASKPROC	0xf0000000	/* Processor-specific. */
+
+/* Extended program header index. */
+#define	PN_XNUM		0xffff
+
+/* Values for d_tag. */
+#define	DT_NULL		0	/* Terminating entry. */
+#define	DT_NEEDED	1	/* String table offset of a needed shared
+				   library. */
+#define	DT_PLTRELSZ	2	/* Total size in bytes of PLT relocations. */
+#define	DT_PLTGOT	3	/* Processor-dependent address. */
+#define	DT_HASH		4	/* Address of symbol hash table. */
+#define	DT_STRTAB	5	/* Address of string table. */
+#define	DT_SYMTAB	6	/* Address of symbol table. */
+#define	DT_RELA		7	/* Address of ElfNN_Rela relocations. */
+#define	DT_RELASZ	8	/* Total size of ElfNN_Rela relocations. */
+#define	DT_RELAENT	9	/* Size of each ElfNN_Rela relocation entry. */
+#define	DT_STRSZ	10	/* Size of string table. */
+#define	DT_SYMENT	11	/* Size of each symbol table entry. */
+#define	DT_INIT		12	/* Address of initialization function. */
+#define	DT_FINI		13	/* Address of finalization function. */
+#define	DT_SONAME	14	/* String table offset of shared object
+				   name. */
+#define	DT_RPATH	15	/* String table offset of library path. [sup] */
+#define	DT_SYMBOLIC	16	/* Indicates "symbolic" linking. [sup] */
+#define	DT_REL		17	/* Address of ElfNN_Rel relocations. */
+#define	DT_RELSZ	18	/* Total size of ElfNN_Rel relocations. */
+#define	DT_RELENT	19	/* Size of each ElfNN_Rel relocation. */
+#define	DT_PLTREL	20	/* Type of relocation used for PLT. */
+#define	DT_DEBUG	21	/* Reserved (not used). */
+#define	DT_TEXTREL	22	/* Indicates there may be relocations in
+				   non-writable segments. [sup] */
+#define	DT_JMPREL	23	/* Address of PLT relocations. */
+#define	DT_BIND_NOW	24	/* [sup] */
+#define	DT_INIT_ARRAY	25	/* Address of the array of pointers to
+				   initialization functions */
+#define	DT_FINI_ARRAY	26	/* Address of the array of pointers to
+				   termination functions */
+#define	DT_INIT_ARRAYSZ	27	/* Size in bytes of the array of
+				   initialization functions. */
+#define	DT_FINI_ARRAYSZ	28	/* Size in bytes of the array of
+				   termination functions. */
+#define	DT_RUNPATH	29	/* String table offset of a null-terminated
+				   library search path string. */
+#define	DT_FLAGS	30	/* Object specific flag values. */
+#define	DT_ENCODING	32	/* Values greater than or equal to DT_ENCODING
+				   and less than DT_LOOS follow the rules for
+				   the interpretation of the d_un union
+				   as follows: even == 'd_ptr', odd == 'd_val'
+				   or none */
+#define	DT_PREINIT_ARRAY 32	/* Address of the array of pointers to
+				   pre-initialization functions. */
+#define	DT_PREINIT_ARRAYSZ 33	/* Size in bytes of the array of
+				   pre-initialization functions. */
+#define	DT_MAXPOSTAGS	34	/* number of positive tags */
+#define	DT_RELRSZ	35	/* Total size of ElfNN_Relr relocations. */
+#define	DT_RELR		36	/* Address of ElfNN_Relr relocations. */
+#define	DT_RELRENT	37	/* Size of each ElfNN_Relr relocation. */
+#define	DT_LOOS		0x6000000d	/* First OS-specific */
+#define	DT_SUNW_AUXILIARY	0x6000000d	/* symbol auxiliary name */
+#define	DT_SUNW_RTLDINF		0x6000000e	/* ld.so.1 info (private) */
+#define	DT_SUNW_FILTER		0x6000000f	/* symbol filter name */
+#define	DT_SUNW_CAP		0x60000010	/* hardware/software */
+#define	DT_SUNW_ASLR		0x60000023	/* ASLR control */
+#define	DT_HIOS		0x6ffff000	/* Last OS-specific */
+
+/*
+ * DT_* entries which fall between DT_VALRNGHI & DT_VALRNGLO use the
+ * Dyn.d_un.d_val field of the Elf*_Dyn structure.
+ */
+#define	DT_VALRNGLO	0x6ffffd00
+#define	DT_GNU_PRELINKED	0x6ffffdf5 /* prelinking timestamp */
+#define	DT_GNU_CONFLICTSZ	0x6ffffdf6 /* size of conflict section */
+#define	DT_GNU_LIBLISTSZ	0x6ffffdf7 /* size of library list */
+#define	DT_CHECKSUM	0x6ffffdf8	/* elf checksum */
+#define	DT_PLTPADSZ	0x6ffffdf9	/* pltpadding size */
+#define	DT_MOVEENT	0x6ffffdfa	/* move table entry size */
+#define	DT_MOVESZ	0x6ffffdfb	/* move table size */
+#define	DT_FEATURE	0x6ffffdfc	/* feature holder */
+#define	DT_FEATURE_1	DT_FEATURE
+#define	DT_POSFLAG_1	0x6ffffdfd	/* flags for DT_* entries, effecting */
+					/*	the following DT_* entry. */
+					/*	See DF_P1_* definitions */
+#define	DT_SYMINSZ	0x6ffffdfe	/* syminfo table size (in bytes) */
+#define	DT_SYMINENT	0x6ffffdff	/* syminfo entry size (in bytes) */
+#define	DT_VALRNGHI	0x6ffffdff
+
+/*
+ * DT_* entries which fall between DT_ADDRRNGHI & DT_ADDRRNGLO use the
+ * Dyn.d_un.d_ptr field of the Elf*_Dyn structure.
+ *
+ * If any adjustment is made to the ELF object after it has been
+ * built, these entries will need to be adjusted.
+ */
+#define	DT_ADDRRNGLO	0x6ffffe00
+#define	DT_GNU_HASH	0x6ffffef5	/* GNU-style hash table */
+#define	DT_TLSDESC_PLT	0x6ffffef6	/* loc. of PLT for tlsdesc resolver */
+#define	DT_TLSDESC_GOT	0x6ffffef7	/* loc. of GOT for tlsdesc resolver */
+#define	DT_GNU_CONFLICT	0x6ffffef8	/* address of conflict section */
+#define	DT_GNU_LIBLIST	0x6ffffef9	/* address of library list */
+#define	DT_CONFIG	0x6ffffefa	/* configuration information */
+#define	DT_DEPAUDIT	0x6ffffefb	/* dependency auditing */
+#define	DT_AUDIT	0x6ffffefc	/* object auditing */
+#define	DT_PLTPAD	0x6ffffefd	/* pltpadding (sparcv9) */
+#define	DT_MOVETAB	0x6ffffefe	/* move table */
+#define	DT_SYMINFO	0x6ffffeff	/* syminfo table */
+#define	DT_ADDRRNGHI	0x6ffffeff
+
+#define	DT_VERSYM	0x6ffffff0	/* Address of versym section. */
+#define	DT_RELACOUNT	0x6ffffff9	/* number of RELATIVE relocations */
+#define	DT_RELCOUNT	0x6ffffffa	/* number of RELATIVE relocations */
+#define	DT_FLAGS_1	0x6ffffffb	/* state flags - see DF_1_* defs */
+#define	DT_VERDEF	0x6ffffffc	/* Address of verdef section. */
+#define	DT_VERDEFNUM	0x6ffffffd	/* Number of elems in verdef section */
+#define	DT_VERNEED	0x6ffffffe	/* Address of verneed section. */
+#define	DT_VERNEEDNUM	0x6fffffff	/* Number of elems in verneed section */
+
+#define	DT_LOPROC	0x70000000	/* First processor-specific type. */
+
+#define	DT_AARCH64_BTI_PLT		0x70000001
+#define	DT_AARCH64_PAC_PLT		0x70000003
+#define	DT_AARCH64_VARIANT_PCS		0x70000005
+
+#define	DT_ARM_SYMTABSZ			0x70000001
+#define	DT_ARM_PREEMPTMAP		0x70000002
+
+#define	DT_SPARC_REGISTER		0x70000001
+#define	DT_DEPRECATED_SPARC_REGISTER	0x7000001
+
+#define	DT_MIPS_RLD_VERSION		0x70000001
+#define	DT_MIPS_TIME_STAMP		0x70000002
+#define	DT_MIPS_ICHECKSUM		0x70000003
+#define	DT_MIPS_IVERSION		0x70000004
+#define	DT_MIPS_FLAGS			0x70000005
+#define	DT_MIPS_BASE_ADDRESS		0x70000006
+#define	DT_MIPS_CONFLICT		0x70000008
+#define	DT_MIPS_LIBLIST			0x70000009
+#define	DT_MIPS_LOCAL_GOTNO		0x7000000a
+#define	DT_MIPS_CONFLICTNO		0x7000000b
+#define	DT_MIPS_LIBLISTNO		0x70000010
+#define	DT_MIPS_SYMTABNO		0x70000011
+#define	DT_MIPS_UNREFEXTNO		0x70000012
+#define	DT_MIPS_GOTSYM			0x70000013
+#define	DT_MIPS_HIPAGENO		0x70000014
+#define	DT_MIPS_RLD_MAP			0x70000016
+#define	DT_MIPS_DELTA_CLASS		0x70000017
+#define	DT_MIPS_DELTA_CLASS_NO		0x70000018
+#define	DT_MIPS_DELTA_INSTANCE		0x70000019
+#define	DT_MIPS_DELTA_INSTANCE_NO	0x7000001A
+#define	DT_MIPS_DELTA_RELOC		0x7000001B
+#define	DT_MIPS_DELTA_RELOC_NO		0x7000001C
+#define	DT_MIPS_DELTA_SYM		0x7000001D
+#define	DT_MIPS_DELTA_SYM_NO		0x7000001E
+#define	DT_MIPS_DELTA_CLASSSYM		0x70000020
+#define	DT_MIPS_DELTA_CLASSSYM_NO	0x70000021
+#define	DT_MIPS_CXX_FLAGS		0x70000022
+#define	DT_MIPS_PIXIE_INIT		0x70000023
+#define	DT_MIPS_SYMBOL_LIB		0x70000024
+#define	DT_MIPS_LOCALPAGE_GOTIDX	0x70000025
+#define	DT_MIPS_LOCAL_GOTIDX		0x70000026
+#define	DT_MIPS_HIDDEN_GOTIDX		0x70000027
+#define	DT_MIPS_PROTECTED_GOTIDX	0x70000028
+#define	DT_MIPS_OPTIONS			0x70000029
+#define	DT_MIPS_INTERFACE		0x7000002A
+#define	DT_MIPS_DYNSTR_ALIGN		0x7000002B
+#define	DT_MIPS_INTERFACE_SIZE		0x7000002C
+#define	DT_MIPS_RLD_TEXT_RESOLVE_ADDR	0x7000002D
+#define	DT_MIPS_PERF_SUFFIX		0x7000002E
+#define	DT_MIPS_COMPACT_SIZE		0x7000002F
+#define	DT_MIPS_GP_VALUE		0x70000030
+#define	DT_MIPS_AUX_DYNAMIC		0x70000031
+#define	DT_MIPS_PLTGOT			0x70000032
+#define	DT_MIPS_RLD_OBJ_UPDATE		0x70000033
+#define	DT_MIPS_RWPLT			0x70000034
+#define	DT_MIPS_RLD_MAP_REL		0x70000035
+
+#define	DT_PPC_GOT			0x70000000
+#define	DT_PPC_TLSOPT			0x70000001
+
+#define	DT_PPC64_GLINK			0x70000000
+#define	DT_PPC64_OPD			0x70000001
+#define	DT_PPC64_OPDSZ			0x70000002
+#define	DT_PPC64_TLSOPT			0x70000003
+
+#define	DT_AUXILIARY	0x7ffffffd	/* shared library auxiliary name */
+#define	DT_USED		0x7ffffffe	/* ignored - same as needed */
+#define	DT_FILTER	0x7fffffff	/* shared library filter name */
+#define	DT_HIPROC	0x7fffffff	/* Last processor-specific type. */
+
+/* Values for DT_FLAGS */
+#define	DF_ORIGIN	0x0001	/* Indicates that the object being loaded may
+				   make reference to the $ORIGIN substitution
+				   string */
+#define	DF_SYMBOLIC	0x0002	/* Indicates "symbolic" linking. */
+#define	DF_TEXTREL	0x0004	/* Indicates there may be relocations in
+				   non-writable segments. */
+#define	DF_BIND_NOW	0x0008	/* Indicates that the dynamic linker should
+				   process all relocations for the object
+				   containing this entry before transferring
+				   control to the program. */
+#define	DF_STATIC_TLS	0x0010	/* Indicates that the shared object or
+				   executable contains code using a static
+				   thread-local storage scheme. */
+
+/* Values for DT_FLAGS_1 */
+#define	DF_1_BIND_NOW	0x00000001	/* Same as DF_BIND_NOW */
+#define	DF_1_GLOBAL	0x00000002	/* Set the RTLD_GLOBAL for object */
+#define	DF_1_NODELETE	0x00000008	/* Set the RTLD_NODELETE for object */
+#define	DF_1_LOADFLTR	0x00000010	/* Immediate loading of filtees */
+#define	DF_1_NOOPEN     0x00000040	/* Do not allow loading on dlopen() */
+#define	DF_1_ORIGIN	0x00000080	/* Process $ORIGIN */
+#define	DF_1_INTERPOSE	0x00000400	/* Interpose all objects but main */
+#define	DF_1_NODEFLIB	0x00000800	/* Do not search default paths */
+#define	DF_1_PIE	0x08000000	/* Is position-independent executable */
+
+/* Values for l_flags. */
+#define	LL_NONE			0x0	/* no flags */
+#define	LL_EXACT_MATCH		0x1	/* require an exact match */
+#define	LL_IGNORE_INT_VER	0x2	/* ignore version incompatibilities */
+#define	LL_REQUIRE_MINOR	0x4
+#define	LL_EXPORTS		0x8
+#define	LL_DELAY_LOAD		0x10
+#define	LL_DELTA		0x20
+
+/* Note section names */
+#define	ELF_NOTE_FREEBSD	"FreeBSD"
+#define	ELF_NOTE_NETBSD		"NetBSD"
+#define	ELF_NOTE_SOLARIS	"SUNW Solaris"
+#define	ELF_NOTE_GNU		"GNU"
+
+/* Values for n_type used in executables. */
+#define	NT_FREEBSD_ABI_TAG	1
+#define	NT_FREEBSD_NOINIT_TAG	2
+#define	NT_FREEBSD_ARCH_TAG	3
+#define	NT_FREEBSD_FEATURE_CTL	4
+
+/* NT_FREEBSD_FEATURE_CTL desc[0] bits */
+#define	NT_FREEBSD_FCTL_ASLR_DISABLE	0x00000001
+#define	NT_FREEBSD_FCTL_PROTMAX_DISABLE	0x00000002
+#define	NT_FREEBSD_FCTL_STKGAP_DISABLE	0x00000004
+#define	NT_FREEBSD_FCTL_WXNEEDED	0x00000008
+#define	NT_FREEBSD_FCTL_LA48		0x00000010
+/* was ASG_DISABLE, do not reuse	0x00000020 */
+
+/* Values for n_type.  Used in core files. */
+#define	NT_PRSTATUS	1	/* Process status. */
+#define	NT_FPREGSET	2	/* Floating point registers. */
+#define	NT_PRPSINFO	3	/* Process state info. */
+#define	NT_THRMISC	7	/* Thread miscellaneous info. */
+#define	NT_PROCSTAT_PROC	8	/* Procstat proc data. */
+#define	NT_PROCSTAT_FILES	9	/* Procstat files data. */
+#define	NT_PROCSTAT_VMMAP	10	/* Procstat vmmap data. */
+#define	NT_PROCSTAT_GROUPS	11	/* Procstat groups data. */
+#define	NT_PROCSTAT_UMASK	12	/* Procstat umask data. */
+#define	NT_PROCSTAT_RLIMIT	13	/* Procstat rlimit data. */
+#define	NT_PROCSTAT_OSREL	14	/* Procstat osreldate data. */
+#define	NT_PROCSTAT_PSSTRINGS	15	/* Procstat ps_strings data. */
+#define	NT_PROCSTAT_AUXV	16	/* Procstat auxv data. */
+#define	NT_PTLWPINFO		17	/* Thread ptrace miscellaneous info. */
+#define	NT_PPC_VMX	0x100	/* PowerPC Altivec/VMX registers */
+#define	NT_PPC_VSX	0x102	/* PowerPC VSX registers */
+#define	NT_X86_SEGBASES	0x200	/* x86 FS/GS base addresses. */
+#define	NT_X86_XSTATE	0x202	/* x86 XSAVE extended state. */
+#define	NT_ARM_VFP	0x400	/* ARM VFP registers */
+#define	NT_ARM_TLS	0x401	/* ARM TLS register */
+#define	NT_ARM_ADDR_MASK	0x406	/* arm64 address mask (e.g. for TBI) */
+
+/* GNU note types. */
+#define	NT_GNU_ABI_TAG		1
+#define	NT_GNU_HWCAP		2
+#define	NT_GNU_BUILD_ID		3
+#define	NT_GNU_GOLD_VERSION	4
+#define	NT_GNU_PROPERTY_TYPE_0	5
+
+#define	GNU_PROPERTY_LOPROC			0xc0000000
+#define	GNU_PROPERTY_HIPROC			0xdfffffff
+
+#define	GNU_PROPERTY_AARCH64_FEATURE_1_AND	0xc0000000
+
+#define	GNU_PROPERTY_AARCH64_FEATURE_1_PAC	0x00000002
+
+#define	GNU_PROPERTY_X86_FEATURE_1_AND		0xc0000002
+
+#define	GNU_PROPERTY_X86_FEATURE_1_IBT		0x00000001
+#define	GNU_PROPERTY_X86_FEATURE_1_SHSTK	0x00000002
+
+/* Symbol Binding - ELFNN_ST_BIND - st_info */
+#define	STB_LOCAL	0	/* Local symbol */
+#define	STB_GLOBAL	1	/* Global symbol */
+#define	STB_WEAK	2	/* like global - lower precedence */
+#define	STB_LOOS	10	/* Start of operating system reserved range. */
+#define	STB_GNU_UNIQUE	10	/* Unique symbol (GNU) */
+#define	STB_HIOS	12	/* End of operating system reserved range. */
+#define	STB_LOPROC	13	/* reserved range for processor */
+#define	STB_HIPROC	15	/*   specific semantics. */
+
+/* Symbol type - ELFNN_ST_TYPE - st_info */
+#define	STT_NOTYPE	0	/* Unspecified type. */
+#define	STT_OBJECT	1	/* Data object. */
+#define	STT_FUNC	2	/* Function. */
+#define	STT_SECTION	3	/* Section. */
+#define	STT_FILE	4	/* Source file. */
+#define	STT_COMMON	5	/* Uninitialized common block. */
+#define	STT_TLS		6	/* TLS object. */
+#define	STT_NUM		7
+#define	STT_LOOS	10	/* Reserved range for operating system */
+#define	STT_GNU_IFUNC	10
+#define	STT_HIOS	12	/*   specific semantics. */
+#define	STT_LOPROC	13	/* Start of processor reserved range. */
+#define	STT_SPARC_REGISTER 13	/* SPARC register information. */
+#define	STT_HIPROC	15	/* End of processor reserved range. */
+
+/* Symbol visibility - ELFNN_ST_VISIBILITY - st_other */
+#define	STV_DEFAULT	0x0	/* Default visibility (see binding). */
+#define	STV_INTERNAL	0x1	/* Special meaning in relocatable objects. */
+#define	STV_HIDDEN	0x2	/* Not visible. */
+#define	STV_PROTECTED	0x3	/* Visible but not preemptible. */
+#define	STV_EXPORTED	0x4
+#define	STV_SINGLETON	0x5
+#define	STV_ELIMINATE	0x6
+
+/* Special symbol table indexes. */
+#define	STN_UNDEF	0	/* Undefined symbol index. */
+
+/* Symbol versioning flags. */
+#define	VER_DEF_CURRENT	1
+#define	VER_DEF_IDX(x)	VER_NDX(x)
+
+#define	VER_FLG_BASE	0x01
+#define	VER_FLG_WEAK	0x02
+
+#define	VER_NEED_CURRENT	1
+#define	VER_NEED_WEAK	(1u << 15)
+#define	VER_NEED_HIDDEN	VER_NDX_HIDDEN
+#define	VER_NEED_IDX(x)	VER_NDX(x)
+
+#define	VER_NDX_LOCAL	0
+#define	VER_NDX_GLOBAL	1
+#define	VER_NDX_GIVEN	2
+
+#define	VER_NDX_HIDDEN	(1u << 15)
+#define	VER_NDX(x)	((x) & ~(1u << 15))
+
+#define	CA_SUNW_NULL	0
+#define	CA_SUNW_HW_1	1		/* first hardware capabilities entry */
+#define	CA_SUNW_SF_1	2		/* first software capabilities entry */
+
+/*
+ * Syminfo flag values
+ */
+#define	SYMINFO_FLG_DIRECT	0x0001	/* symbol ref has direct association */
+					/*	to object containing defn. */
+#define	SYMINFO_FLG_PASSTHRU	0x0002	/* ignored - see SYMINFO_FLG_FILTER */
+#define	SYMINFO_FLG_COPY	0x0004	/* symbol is a copy-reloc */
+#define	SYMINFO_FLG_LAZYLOAD	0x0008	/* object containing defn should be */
+					/*	lazily-loaded */
+#define	SYMINFO_FLG_DIRECTBIND	0x0010	/* ref should be bound directly to */
+					/*	object containing defn. */
+#define	SYMINFO_FLG_NOEXTDIRECT	0x0020	/* don't let an external reference */
+					/*	directly bind to this symbol */
+#define	SYMINFO_FLG_FILTER	0x0002	/* symbol ref is associated to a */
+#define	SYMINFO_FLG_AUXILIARY	0x0040	/* 	standard or auxiliary filter */
+
+/*
+ * Syminfo.si_boundto values.
+ */
+#define	SYMINFO_BT_SELF		0xffff	/* symbol bound to self */
+#define	SYMINFO_BT_PARENT	0xfffe	/* symbol bound to parent */
+#define	SYMINFO_BT_NONE		0xfffd	/* no special symbol binding */
+#define	SYMINFO_BT_EXTERN	0xfffc	/* symbol defined as external */
+#define	SYMINFO_BT_LOWRESERVE	0xff00	/* beginning of reserved entries */
+
+/*
+ * Syminfo version values.
+ */
+#define	SYMINFO_NONE		0	/* Syminfo version */
+#define	SYMINFO_CURRENT		1
+#define	SYMINFO_NUM		2
+
+/* Values for ch_type (compressed section headers). */
+#define	ELFCOMPRESS_ZLIB	1	/* ZLIB/DEFLATE */
+#define	ELFCOMPRESS_ZSTD	2	/* Zstandard */
+#define	ELFCOMPRESS_LOOS	0x60000000	/* OS-specific */
+#define	ELFCOMPRESS_HIOS	0x6fffffff
+#define	ELFCOMPRESS_LOPROC	0x70000000	/* Processor-specific */
+#define	ELFCOMPRESS_HIPROC	0x7fffffff
+
+/*
+ * Relocation types.
+ *
+ * All machine architectures are defined here to allow tools on one to
+ * handle others.
+ */
+
+#define	R_386_NONE		0	/* No relocation. */
+#define	R_386_32		1	/* Add symbol value. */
+#define	R_386_PC32		2	/* Add PC-relative symbol value. */
+#define	R_386_GOT32		3	/* Add PC-relative GOT offset. */
+#define	R_386_PLT32		4	/* Add PC-relative PLT offset. */
+#define	R_386_COPY		5	/* Copy data from shared object. */
+#define	R_386_GLOB_DAT		6	/* Set GOT entry to data address. */
+#define	R_386_JMP_SLOT		7	/* Set GOT entry to code address. */
+#define	R_386_RELATIVE		8	/* Add load address of shared object. */
+#define	R_386_GOTOFF		9	/* Add GOT-relative symbol address. */
+#define	R_386_GOTPC		10	/* Add PC-relative GOT table address. */
+#define	R_386_32PLT		11
+#define	R_386_TLS_TPOFF		14	/* Negative offset in static TLS block */
+#define	R_386_TLS_IE		15	/* Absolute address of GOT for -ve static TLS */
+#define	R_386_TLS_GOTIE		16	/* GOT entry for negative static TLS block */
+#define	R_386_TLS_LE		17	/* Negative offset relative to static TLS */
+#define	R_386_TLS_GD		18	/* 32 bit offset to GOT (index,off) pair */
+#define	R_386_TLS_LDM		19	/* 32 bit offset to GOT (index,zero) pair */
+#define	R_386_16		20
+#define	R_386_PC16		21
+#define	R_386_8			22
+#define	R_386_PC8		23
+#define	R_386_TLS_GD_32		24	/* 32 bit offset to GOT (index,off) pair */
+#define	R_386_TLS_GD_PUSH	25	/* pushl instruction for Sun ABI GD sequence */
+#define	R_386_TLS_GD_CALL	26	/* call instruction for Sun ABI GD sequence */
+#define	R_386_TLS_GD_POP	27	/* popl instruction for Sun ABI GD sequence */
+#define	R_386_TLS_LDM_32	28	/* 32 bit offset to GOT (index,zero) pair */
+#define	R_386_TLS_LDM_PUSH	29	/* pushl instruction for Sun ABI LD sequence */
+#define	R_386_TLS_LDM_CALL	30	/* call instruction for Sun ABI LD sequence */
+#define	R_386_TLS_LDM_POP	31	/* popl instruction for Sun ABI LD sequence */
+#define	R_386_TLS_LDO_32	32	/* 32 bit offset from start of TLS block */
+#define	R_386_TLS_IE_32		33	/* 32 bit offset to GOT static TLS offset entry */
+#define	R_386_TLS_LE_32		34	/* 32 bit offset within static TLS block */
+#define	R_386_TLS_DTPMOD32	35	/* GOT entry containing TLS index */
+#define	R_386_TLS_DTPOFF32	36	/* GOT entry containing TLS offset */
+#define	R_386_TLS_TPOFF32	37	/* GOT entry of -ve static TLS offset */
+#define	R_386_SIZE32		38
+#define	R_386_TLS_GOTDESC	39
+#define	R_386_TLS_DESC_CALL	40
+#define	R_386_TLS_DESC		41
+#define	R_386_IRELATIVE		42	/* PLT entry resolved indirectly at runtime */
+#define	R_386_GOT32X		43
+
+#define	R_AARCH64_NONE		0	/* No relocation */
+#define	R_AARCH64_ABS64		257	/* Absolute offset */
+#define	R_AARCH64_ABS32		258	/* Absolute, 32-bit overflow check */
+#define	R_AARCH64_ABS16		259	/* Absolute, 16-bit overflow check */
+#define	R_AARCH64_PREL64	260	/* PC relative */
+#define	R_AARCH64_PREL32	261	/* PC relative, 32-bit overflow check */
+#define	R_AARCH64_PREL16	262	/* PC relative, 16-bit overflow check */
+#define	R_AARCH64_TSTBR14	279	/* TBZ/TBNZ immediate */
+#define	R_AARCH64_CONDBR19	280	/* Conditional branch immediate */
+#define	R_AARCH64_JUMP26	282	/* Branch immediate */
+#define	R_AARCH64_CALL26	283	/* Call immediate */
+#define	R_AARCH64_COPY		1024	/* Copy data from shared object */
+#define	R_AARCH64_GLOB_DAT	1025	/* Set GOT entry to data address */
+#define	R_AARCH64_JUMP_SLOT	1026	/* Set GOT entry to code address */
+#define	R_AARCH64_RELATIVE 	1027	/* Add load address of shared object */
+#define	R_AARCH64_TLS_DTPREL64	1028
+#define	R_AARCH64_TLS_DTPMOD64	1029
+#define	R_AARCH64_TLS_TPREL64 	1030
+#define	R_AARCH64_TLSDESC 	1031	/* Identify the TLS descriptor */
+#define	R_AARCH64_IRELATIVE	1032
+
+#define	R_ARM_NONE		0	/* No relocation. */
+#define	R_ARM_PC24		1
+#define	R_ARM_ABS32		2
+#define	R_ARM_REL32		3
+#define	R_ARM_PC13		4
+#define	R_ARM_ABS16		5
+#define	R_ARM_ABS12		6
+#define	R_ARM_THM_ABS5		7
+#define	R_ARM_ABS8		8
+#define	R_ARM_SBREL32		9
+#define	R_ARM_THM_PC22		10
+#define	R_ARM_THM_PC8		11
+#define	R_ARM_AMP_VCALL9	12
+#define	R_ARM_SWI24		13
+#define	R_ARM_THM_SWI8		14
+#define	R_ARM_XPC25		15
+#define	R_ARM_THM_XPC22		16
+/* TLS relocations */
+#define	R_ARM_TLS_DTPMOD32	17	/* ID of module containing symbol */
+#define	R_ARM_TLS_DTPOFF32	18	/* Offset in TLS block */
+#define	R_ARM_TLS_TPOFF32	19	/* Offset in static TLS block */
+#define	R_ARM_COPY		20	/* Copy data from shared object. */
+#define	R_ARM_GLOB_DAT		21	/* Set GOT entry to data address. */
+#define	R_ARM_JUMP_SLOT		22	/* Set GOT entry to code address. */
+#define	R_ARM_RELATIVE		23	/* Add load address of shared object. */
+#define	R_ARM_GOTOFF		24	/* Add GOT-relative symbol address. */
+#define	R_ARM_GOTPC		25	/* Add PC-relative GOT table address. */
+#define	R_ARM_GOT32		26	/* Add PC-relative GOT offset. */
+#define	R_ARM_PLT32		27	/* Add PC-relative PLT offset. */
+#define	R_ARM_GNU_VTENTRY	100
+#define	R_ARM_GNU_VTINHERIT	101
+#define	R_ARM_RSBREL32		250
+#define	R_ARM_THM_RPC22		251
+#define	R_ARM_RREL32		252
+#define	R_ARM_RABS32		253
+#define	R_ARM_RPC24		254
+#define	R_ARM_RBASE		255
+
+/*	Name			Value	   Field	Calculation */
+#define	R_IA_64_NONE		0	/* None */
+#define	R_IA_64_IMM14		0x21	/* immediate14	S + A */
+#define	R_IA_64_IMM22		0x22	/* immediate22	S + A */
+#define	R_IA_64_IMM64		0x23	/* immediate64	S + A */
+#define	R_IA_64_DIR32MSB	0x24	/* word32 MSB	S + A */
+#define	R_IA_64_DIR32LSB	0x25	/* word32 LSB	S + A */
+#define	R_IA_64_DIR64MSB	0x26	/* word64 MSB	S + A */
+#define	R_IA_64_DIR64LSB	0x27	/* word64 LSB	S + A */
+#define	R_IA_64_GPREL22		0x2a	/* immediate22	@gprel(S + A) */
+#define	R_IA_64_GPREL64I	0x2b	/* immediate64	@gprel(S + A) */
+#define	R_IA_64_GPREL32MSB	0x2c	/* word32 MSB	@gprel(S + A) */
+#define	R_IA_64_GPREL32LSB	0x2d	/* word32 LSB	@gprel(S + A) */
+#define	R_IA_64_GPREL64MSB	0x2e	/* word64 MSB	@gprel(S + A) */
+#define	R_IA_64_GPREL64LSB	0x2f	/* word64 LSB	@gprel(S + A) */
+#define	R_IA_64_LTOFF22		0x32	/* immediate22	@ltoff(S + A) */
+#define	R_IA_64_LTOFF64I	0x33	/* immediate64	@ltoff(S + A) */
+#define	R_IA_64_PLTOFF22	0x3a	/* immediate22	@pltoff(S + A) */
+#define	R_IA_64_PLTOFF64I	0x3b	/* immediate64	@pltoff(S + A) */
+#define	R_IA_64_PLTOFF64MSB	0x3e	/* word64 MSB	@pltoff(S + A) */
+#define	R_IA_64_PLTOFF64LSB	0x3f	/* word64 LSB	@pltoff(S + A) */
+#define	R_IA_64_FPTR64I		0x43	/* immediate64	@fptr(S + A) */
+#define	R_IA_64_FPTR32MSB	0x44	/* word32 MSB	@fptr(S + A) */
+#define	R_IA_64_FPTR32LSB	0x45	/* word32 LSB	@fptr(S + A) */
+#define	R_IA_64_FPTR64MSB	0x46	/* word64 MSB	@fptr(S + A) */
+#define	R_IA_64_FPTR64LSB	0x47	/* word64 LSB	@fptr(S + A) */
+#define	R_IA_64_PCREL60B	0x48	/* immediate60 form1 S + A - P */
+#define	R_IA_64_PCREL21B	0x49	/* immediate21 form1 S + A - P */
+#define	R_IA_64_PCREL21M	0x4a	/* immediate21 form2 S + A - P */
+#define	R_IA_64_PCREL21F	0x4b	/* immediate21 form3 S + A - P */
+#define	R_IA_64_PCREL32MSB	0x4c	/* word32 MSB	S + A - P */
+#define	R_IA_64_PCREL32LSB	0x4d	/* word32 LSB	S + A - P */
+#define	R_IA_64_PCREL64MSB	0x4e	/* word64 MSB	S + A - P */
+#define	R_IA_64_PCREL64LSB	0x4f	/* word64 LSB	S + A - P */
+#define	R_IA_64_LTOFF_FPTR22	0x52	/* immediate22	@ltoff(@fptr(S + A)) */
+#define	R_IA_64_LTOFF_FPTR64I	0x53	/* immediate64	@ltoff(@fptr(S + A)) */
+#define	R_IA_64_LTOFF_FPTR32MSB	0x54	/* word32 MSB	@ltoff(@fptr(S + A)) */
+#define	R_IA_64_LTOFF_FPTR32LSB	0x55	/* word32 LSB	@ltoff(@fptr(S + A)) */
+#define	R_IA_64_LTOFF_FPTR64MSB	0x56	/* word64 MSB	@ltoff(@fptr(S + A)) */
+#define	R_IA_64_LTOFF_FPTR64LSB	0x57	/* word64 LSB	@ltoff(@fptr(S + A)) */
+#define	R_IA_64_SEGREL32MSB	0x5c	/* word32 MSB	@segrel(S + A) */
+#define	R_IA_64_SEGREL32LSB	0x5d	/* word32 LSB	@segrel(S + A) */
+#define	R_IA_64_SEGREL64MSB	0x5e	/* word64 MSB	@segrel(S + A) */
+#define	R_IA_64_SEGREL64LSB	0x5f	/* word64 LSB	@segrel(S + A) */
+#define	R_IA_64_SECREL32MSB	0x64	/* word32 MSB	@secrel(S + A) */
+#define	R_IA_64_SECREL32LSB	0x65	/* word32 LSB	@secrel(S + A) */
+#define	R_IA_64_SECREL64MSB	0x66	/* word64 MSB	@secrel(S + A) */
+#define	R_IA_64_SECREL64LSB	0x67	/* word64 LSB	@secrel(S + A) */
+#define	R_IA_64_REL32MSB	0x6c	/* word32 MSB	BD + A */
+#define	R_IA_64_REL32LSB	0x6d	/* word32 LSB	BD + A */
+#define	R_IA_64_REL64MSB	0x6e	/* word64 MSB	BD + A */
+#define	R_IA_64_REL64LSB	0x6f	/* word64 LSB	BD + A */
+#define	R_IA_64_LTV32MSB	0x74	/* word32 MSB	S + A */
+#define	R_IA_64_LTV32LSB	0x75	/* word32 LSB	S + A */
+#define	R_IA_64_LTV64MSB	0x76	/* word64 MSB	S + A */
+#define	R_IA_64_LTV64LSB	0x77	/* word64 LSB	S + A */
+#define	R_IA_64_PCREL21BI	0x79	/* immediate21 form1 S + A - P */
+#define	R_IA_64_PCREL22		0x7a	/* immediate22	S + A - P */
+#define	R_IA_64_PCREL64I	0x7b	/* immediate64	S + A - P */
+#define	R_IA_64_IPLTMSB		0x80	/* function descriptor MSB special */
+#define	R_IA_64_IPLTLSB		0x81	/* function descriptor LSB speciaal */
+#define	R_IA_64_SUB		0x85	/* immediate64	A - S */
+#define	R_IA_64_LTOFF22X	0x86	/* immediate22	special */
+#define	R_IA_64_LDXMOV		0x87	/* immediate22	special */
+#define	R_IA_64_TPREL14		0x91	/* imm14	@tprel(S + A) */
+#define	R_IA_64_TPREL22		0x92	/* imm22	@tprel(S + A) */
+#define	R_IA_64_TPREL64I	0x93	/* imm64	@tprel(S + A) */
+#define	R_IA_64_TPREL64MSB	0x96	/* word64 MSB	@tprel(S + A) */
+#define	R_IA_64_TPREL64LSB	0x97	/* word64 LSB	@tprel(S + A) */
+#define	R_IA_64_LTOFF_TPREL22	0x9a	/* imm22	@ltoff(@tprel(S+A)) */
+#define	R_IA_64_DTPMOD64MSB	0xa6	/* word64 MSB	@dtpmod(S + A) */
+#define	R_IA_64_DTPMOD64LSB	0xa7	/* word64 LSB	@dtpmod(S + A) */
+#define	R_IA_64_LTOFF_DTPMOD22	0xaa	/* imm22	@ltoff(@dtpmod(S+A)) */
+#define	R_IA_64_DTPREL14	0xb1	/* imm14	@dtprel(S + A) */
+#define	R_IA_64_DTPREL22	0xb2	/* imm22	@dtprel(S + A) */
+#define	R_IA_64_DTPREL64I	0xb3	/* imm64	@dtprel(S + A) */
+#define	R_IA_64_DTPREL32MSB	0xb4	/* word32 MSB	@dtprel(S + A) */
+#define	R_IA_64_DTPREL32LSB	0xb5	/* word32 LSB	@dtprel(S + A) */
+#define	R_IA_64_DTPREL64MSB	0xb6	/* word64 MSB	@dtprel(S + A) */
+#define	R_IA_64_DTPREL64LSB	0xb7	/* word64 LSB	@dtprel(S + A) */
+#define	R_IA_64_LTOFF_DTPREL22	0xba	/* imm22	@ltoff(@dtprel(S+A)) */
+
+#define	R_MIPS_NONE	0	/* No reloc */
+#define	R_MIPS_16	1	/* Direct 16 bit */
+#define	R_MIPS_32	2	/* Direct 32 bit */
+#define	R_MIPS_REL32	3	/* PC relative 32 bit */
+#define	R_MIPS_26	4	/* Direct 26 bit shifted */
+#define	R_MIPS_HI16	5	/* High 16 bit */
+#define	R_MIPS_LO16	6	/* Low 16 bit */
+#define	R_MIPS_GPREL16	7	/* GP relative 16 bit */
+#define	R_MIPS_LITERAL	8	/* 16 bit literal entry */
+#define	R_MIPS_GOT16	9	/* 16 bit GOT entry */
+#define	R_MIPS_PC16	10	/* PC relative 16 bit */
+#define	R_MIPS_CALL16	11	/* 16 bit GOT entry for function */
+#define	R_MIPS_GPREL32	12	/* GP relative 32 bit */
+#define	R_MIPS_64	18	/* Direct 64 bit */
+#define	R_MIPS_GOT_DISP	19
+#define	R_MIPS_GOT_PAGE	20
+#define	R_MIPS_GOT_OFST	21
+#define	R_MIPS_GOT_HI16	22	/* GOT HI 16 bit */
+#define	R_MIPS_GOT_LO16	23	/* GOT LO 16 bit */
+#define	R_MIPS_SUB	24
+#define	R_MIPS_CALLHI16 30	/* upper 16 bit GOT entry for function */
+#define	R_MIPS_CALLLO16 31	/* lower 16 bit GOT entry for function */
+#define	R_MIPS_JALR	37
+#define	R_MIPS_TLS_GD	42
+#define	R_MIPS_COPY	126
+#define	R_MIPS_JUMP_SLOT	127
+
+#define	R_PPC_NONE		0	/* No relocation. */
+#define	R_PPC_ADDR32		1
+#define	R_PPC_ADDR24		2
+#define	R_PPC_ADDR16		3
+#define	R_PPC_ADDR16_LO		4
+#define	R_PPC_ADDR16_HI		5
+#define	R_PPC_ADDR16_HA		6
+#define	R_PPC_ADDR14		7
+#define	R_PPC_ADDR14_BRTAKEN	8
+#define	R_PPC_ADDR14_BRNTAKEN	9
+#define	R_PPC_REL24		10
+#define	R_PPC_REL14		11
+#define	R_PPC_REL14_BRTAKEN	12
+#define	R_PPC_REL14_BRNTAKEN	13
+#define	R_PPC_GOT16		14
+#define	R_PPC_GOT16_LO		15
+#define	R_PPC_GOT16_HI		16
+#define	R_PPC_GOT16_HA		17
+#define	R_PPC_PLTREL24		18
+#define	R_PPC_COPY		19
+#define	R_PPC_GLOB_DAT		20
+#define	R_PPC_JMP_SLOT		21
+#define	R_PPC_RELATIVE		22
+#define	R_PPC_LOCAL24PC		23
+#define	R_PPC_UADDR32		24
+#define	R_PPC_UADDR16		25
+#define	R_PPC_REL32		26
+#define	R_PPC_PLT32		27
+#define	R_PPC_PLTREL32		28
+#define	R_PPC_PLT16_LO		29
+#define	R_PPC_PLT16_HI		30
+#define	R_PPC_PLT16_HA		31
+#define	R_PPC_SDAREL16		32
+#define	R_PPC_SECTOFF		33
+#define	R_PPC_SECTOFF_LO	34
+#define	R_PPC_SECTOFF_HI	35
+#define	R_PPC_SECTOFF_HA	36
+#define	R_PPC_IRELATIVE		248
+
+/*
+ * 64-bit relocations
+ */
+#define	R_PPC64_ADDR64		38
+#define	R_PPC64_ADDR16_HIGHER	39
+#define	R_PPC64_ADDR16_HIGHERA	40
+#define	R_PPC64_ADDR16_HIGHEST	41
+#define	R_PPC64_ADDR16_HIGHESTA	42
+#define	R_PPC64_UADDR64		43
+#define	R_PPC64_REL64		44
+#define	R_PPC64_PLT64		45
+#define	R_PPC64_PLTREL64	46
+#define	R_PPC64_TOC16		47
+#define	R_PPC64_TOC16_LO	48
+#define	R_PPC64_TOC16_HI	49
+#define	R_PPC64_TOC16_HA	50
+#define	R_PPC64_TOC		51
+#define	R_PPC64_DTPMOD64	68
+#define	R_PPC64_TPREL64		73
+#define	R_PPC64_DTPREL64	78
+
+/*
+ * TLS relocations
+ */
+#define	R_PPC_TLS		67
+#define	R_PPC_DTPMOD32		68
+#define	R_PPC_TPREL16		69
+#define	R_PPC_TPREL16_LO	70
+#define	R_PPC_TPREL16_HI	71
+#define	R_PPC_TPREL16_HA	72
+#define	R_PPC_TPREL32		73
+#define	R_PPC_DTPREL16		74
+#define	R_PPC_DTPREL16_LO	75
+#define	R_PPC_DTPREL16_HI	76
+#define	R_PPC_DTPREL16_HA	77
+#define	R_PPC_DTPREL32		78
+#define	R_PPC_GOT_TLSGD16	79
+#define	R_PPC_GOT_TLSGD16_LO	80
+#define	R_PPC_GOT_TLSGD16_HI	81
+#define	R_PPC_GOT_TLSGD16_HA	82
+#define	R_PPC_GOT_TLSLD16	83
+#define	R_PPC_GOT_TLSLD16_LO	84
+#define	R_PPC_GOT_TLSLD16_HI	85
+#define	R_PPC_GOT_TLSLD16_HA	86
+#define	R_PPC_GOT_TPREL16	87
+#define	R_PPC_GOT_TPREL16_LO	88
+#define	R_PPC_GOT_TPREL16_HI	89
+#define	R_PPC_GOT_TPREL16_HA	90
+
+/*
+ * The remaining relocs are from the Embedded ELF ABI, and are not in the
+ *  SVR4 ELF ABI.
+ */
+
+#define	R_PPC_EMB_NADDR32	101
+#define	R_PPC_EMB_NADDR16	102
+#define	R_PPC_EMB_NADDR16_LO	103
+#define	R_PPC_EMB_NADDR16_HI	104
+#define	R_PPC_EMB_NADDR16_HA	105
+#define	R_PPC_EMB_SDAI16	106
+#define	R_PPC_EMB_SDA2I16	107
+#define	R_PPC_EMB_SDA2REL	108
+#define	R_PPC_EMB_SDA21		109
+#define	R_PPC_EMB_MRKREF	110
+#define	R_PPC_EMB_RELSEC16	111
+#define	R_PPC_EMB_RELST_LO	112
+#define	R_PPC_EMB_RELST_HI	113
+#define	R_PPC_EMB_RELST_HA	114
+#define	R_PPC_EMB_BIT_FLD	115
+#define	R_PPC_EMB_RELSDA	116
+
+/*
+ * RISC-V relocation types.
+ */
+
+/* Relocation types used by the dynamic linker. */
+#define	R_RISCV_NONE		0
+#define	R_RISCV_32		1
+#define	R_RISCV_64		2
+#define	R_RISCV_RELATIVE	3
+#define	R_RISCV_COPY		4
+#define	R_RISCV_JUMP_SLOT	5
+#define	R_RISCV_TLS_DTPMOD32	6
+#define	R_RISCV_TLS_DTPMOD64	7
+#define	R_RISCV_TLS_DTPREL32	8
+#define	R_RISCV_TLS_DTPREL64	9
+#define	R_RISCV_TLS_TPREL32	10
+#define	R_RISCV_TLS_TPREL64	11
+
+/* Relocation types not used by the dynamic linker. */
+#define	R_RISCV_BRANCH		16
+#define	R_RISCV_JAL		17
+#define	R_RISCV_CALL		18
+#define	R_RISCV_CALL_PLT	19
+#define	R_RISCV_GOT_HI20	20
+#define	R_RISCV_TLS_GOT_HI20	21
+#define	R_RISCV_TLS_GD_HI20	22
+#define	R_RISCV_PCREL_HI20	23
+#define	R_RISCV_PCREL_LO12_I	24
+#define	R_RISCV_PCREL_LO12_S	25
+#define	R_RISCV_HI20		26
+#define	R_RISCV_LO12_I		27
+#define	R_RISCV_LO12_S		28
+#define	R_RISCV_TPREL_HI20	29
+#define	R_RISCV_TPREL_LO12_I	30
+#define	R_RISCV_TPREL_LO12_S	31
+#define	R_RISCV_TPREL_ADD	32
+#define	R_RISCV_ADD8		33
+#define	R_RISCV_ADD16		34
+#define	R_RISCV_ADD32		35
+#define	R_RISCV_ADD64		36
+#define	R_RISCV_SUB8		37
+#define	R_RISCV_SUB16		38
+#define	R_RISCV_SUB32		39
+#define	R_RISCV_SUB64		40
+#define	R_RISCV_GNU_VTINHERIT	41
+#define	R_RISCV_GNU_VTENTRY	42
+#define	R_RISCV_ALIGN		43
+#define	R_RISCV_RVC_BRANCH	44
+#define	R_RISCV_RVC_JUMP	45
+#define	R_RISCV_RVC_LUI		46
+#define	R_RISCV_RELAX		51
+#define	R_RISCV_SUB6		52
+#define	R_RISCV_SET6		53
+#define	R_RISCV_SET8		54
+#define	R_RISCV_SET16		55
+#define	R_RISCV_SET32		56
+#define	R_RISCV_32_PCREL	57
+#define	R_RISCV_IRELATIVE	58
+
+#define	R_SPARC_NONE		0
+#define	R_SPARC_8		1
+#define	R_SPARC_16		2
+#define	R_SPARC_32		3
+#define	R_SPARC_DISP8		4
+#define	R_SPARC_DISP16		5
+#define	R_SPARC_DISP32		6
+#define	R_SPARC_WDISP30		7
+#define	R_SPARC_WDISP22		8
+#define	R_SPARC_HI22		9
+#define	R_SPARC_22		10
+#define	R_SPARC_13		11
+#define	R_SPARC_LO10		12
+#define	R_SPARC_GOT10		13
+#define	R_SPARC_GOT13		14
+#define	R_SPARC_GOT22		15
+#define	R_SPARC_PC10		16
+#define	R_SPARC_PC22		17
+#define	R_SPARC_WPLT30		18
+#define	R_SPARC_COPY		19
+#define	R_SPARC_GLOB_DAT	20
+#define	R_SPARC_JMP_SLOT	21
+#define	R_SPARC_RELATIVE	22
+#define	R_SPARC_UA32		23
+#define	R_SPARC_PLT32		24
+#define	R_SPARC_HIPLT22		25
+#define	R_SPARC_LOPLT10		26
+#define	R_SPARC_PCPLT32		27
+#define	R_SPARC_PCPLT22		28
+#define	R_SPARC_PCPLT10		29
+#define	R_SPARC_10		30
+#define	R_SPARC_11		31
+#define	R_SPARC_64		32
+#define	R_SPARC_OLO10		33
+#define	R_SPARC_HH22		34
+#define	R_SPARC_HM10		35
+#define	R_SPARC_LM22		36
+#define	R_SPARC_PC_HH22		37
+#define	R_SPARC_PC_HM10		38
+#define	R_SPARC_PC_LM22		39
+#define	R_SPARC_WDISP16		40
+#define	R_SPARC_WDISP19		41
+#define	R_SPARC_GLOB_JMP	42
+#define	R_SPARC_7		43
+#define	R_SPARC_5		44
+#define	R_SPARC_6		45
+#define	R_SPARC_DISP64		46
+#define	R_SPARC_PLT64		47
+#define	R_SPARC_HIX22		48
+#define	R_SPARC_LOX10		49
+#define	R_SPARC_H44		50
+#define	R_SPARC_M44		51
+#define	R_SPARC_L44		52
+#define	R_SPARC_REGISTER	53
+#define	R_SPARC_UA64		54
+#define	R_SPARC_UA16		55
+#define	R_SPARC_TLS_GD_HI22	56
+#define	R_SPARC_TLS_GD_LO10	57
+#define	R_SPARC_TLS_GD_ADD	58
+#define	R_SPARC_TLS_GD_CALL	59
+#define	R_SPARC_TLS_LDM_HI22	60
+#define	R_SPARC_TLS_LDM_LO10	61
+#define	R_SPARC_TLS_LDM_ADD	62
+#define	R_SPARC_TLS_LDM_CALL	63
+#define	R_SPARC_TLS_LDO_HIX22	64
+#define	R_SPARC_TLS_LDO_LOX10	65
+#define	R_SPARC_TLS_LDO_ADD	66
+#define	R_SPARC_TLS_IE_HI22	67
+#define	R_SPARC_TLS_IE_LO10	68
+#define	R_SPARC_TLS_IE_LD	69
+#define	R_SPARC_TLS_IE_LDX	70
+#define	R_SPARC_TLS_IE_ADD	71
+#define	R_SPARC_TLS_LE_HIX22	72
+#define	R_SPARC_TLS_LE_LOX10	73
+#define	R_SPARC_TLS_DTPMOD32	74
+#define	R_SPARC_TLS_DTPMOD64	75
+#define	R_SPARC_TLS_DTPOFF32	76
+#define	R_SPARC_TLS_DTPOFF64	77
+#define	R_SPARC_TLS_TPOFF32	78
+#define	R_SPARC_TLS_TPOFF64	79
+
+#define	R_X86_64_NONE		0	/* No relocation. */
+#define	R_X86_64_64		1	/* Add 64 bit symbol value. */
+#define	R_X86_64_PC32		2	/* PC-relative 32 bit signed sym value. */
+#define	R_X86_64_GOT32		3	/* PC-relative 32 bit GOT offset. */
+#define	R_X86_64_PLT32		4	/* PC-relative 32 bit PLT offset. */
+#define	R_X86_64_COPY		5	/* Copy data from shared object. */
+#define	R_X86_64_GLOB_DAT	6	/* Set GOT entry to data address. */
+#define	R_X86_64_JMP_SLOT	7	/* Set GOT entry to code address. */
+#define	R_X86_64_RELATIVE	8	/* Add load address of shared object. */
+#define	R_X86_64_GOTPCREL	9	/* Add 32 bit signed pcrel offset to GOT. */
+#define	R_X86_64_32		10	/* Add 32 bit zero extended symbol value */
+#define	R_X86_64_32S		11	/* Add 32 bit sign extended symbol value */
+#define	R_X86_64_16		12	/* Add 16 bit zero extended symbol value */
+#define	R_X86_64_PC16		13	/* Add 16 bit signed extended pc relative symbol value */
+#define	R_X86_64_8		14	/* Add 8 bit zero extended symbol value */
+#define	R_X86_64_PC8		15	/* Add 8 bit signed extended pc relative symbol value */
+#define	R_X86_64_DTPMOD64	16	/* ID of module containing symbol */
+#define	R_X86_64_DTPOFF64	17	/* Offset in TLS block */
+#define	R_X86_64_TPOFF64	18	/* Offset in static TLS block */
+#define	R_X86_64_TLSGD		19	/* PC relative offset to GD GOT entry */
+#define	R_X86_64_TLSLD		20	/* PC relative offset to LD GOT entry */
+#define	R_X86_64_DTPOFF32	21	/* Offset in TLS block */
+#define	R_X86_64_GOTTPOFF	22	/* PC relative offset to IE GOT entry */
+#define	R_X86_64_TPOFF32	23	/* Offset in static TLS block */
+#define	R_X86_64_PC64		24	/* PC-relative 64 bit signed sym value. */
+#define	R_X86_64_GOTOFF64	25
+#define	R_X86_64_GOTPC32	26
+#define	R_X86_64_GOT64		27
+#define	R_X86_64_GOTPCREL64	28
+#define	R_X86_64_GOTPC64	29
+#define	R_X86_64_GOTPLT64	30
+#define	R_X86_64_PLTOFF64	31
+#define	R_X86_64_SIZE32		32
+#define	R_X86_64_SIZE64		33
+#define	R_X86_64_GOTPC32_TLSDESC 34
+#define	R_X86_64_TLSDESC_CALL	35
+#define	R_X86_64_TLSDESC	36
+#define	R_X86_64_IRELATIVE	37
+#define	R_X86_64_RELATIVE64	38
+/* 39 and 40 were BND-related, already decomissioned */
+#define	R_X86_64_GOTPCRELX	41
+#define	R_X86_64_REX_GOTPCRELX	42
+
+#define	ELF_BSDF_SIGFASTBLK	0x0001	/* Kernel supports fast sigblock */
+#define	ELF_BSDF_VMNOOVERCOMMIT	0x0002
+
+#endif /* !_SYS_ELF_COMMON_H_ */
diff --git a/mainline/runtime/sdk/android/arm64/include/bionic/libc/include/bits/elf_x86.h b/mainline/runtime/sdk/android/arm64/include/bionic/libc/include/bits/elf_x86.h
deleted file mode 100644
index dfbaba0..0000000
--- a/mainline/runtime/sdk/android/arm64/include/bionic/libc/include/bits/elf_x86.h
+++ /dev/null
@@ -1,60 +0,0 @@
-/*	$NetBSD: elf_machdep.h,v 1.12 2016/02/02 20:16:59 christos Exp $	*/
-
-#ifndef _X86_ELF_MACHDEP_H_
-#define _X86_ELF_MACHDEP_H_
-
-/* i386 relocations */
-#define	R_386_NONE	0
-#define	R_386_32	1
-#define	R_386_PC32	2
-#define	R_386_GOT32	3
-#define	R_386_PLT32	4
-#define	R_386_COPY	5
-#define	R_386_GLOB_DAT	6
-#define	R_386_JMP_SLOT	7
-#define	R_386_RELATIVE	8
-#define	R_386_GOTOFF	9
-#define	R_386_GOTPC	10
-#define	R_386_32PLT	11
-
-/* TLS relocations */
-#define	R_386_TLS_TPOFF	14
-#define	R_386_TLS_IE	15
-#define	R_386_TLS_GOTIE	16
-#define	R_386_TLS_LE	17
-#define	R_386_TLS_GD	18
-#define	R_386_TLS_LDM	19
-
-/* The following relocations are GNU extensions. */
-#define	R_386_16	20
-#define	R_386_PC16	21
-#define	R_386_8		22
-#define	R_386_PC8	23
-
-/* More TLS relocations */
-#define	R_386_TLS_GD_32		24
-#define	R_386_TLS_GD_PUSH	25
-#define	R_386_TLS_GD_CALL	26
-#define	R_386_TLS_GD_POP	27
-#define	R_386_TLS_LDM_32	28
-#define	R_386_TLS_LDM_PUSH	29
-#define	R_386_TLS_LDM_CALL	30
-#define	R_386_TLS_LDM_POP	31
-#define	R_386_TLS_LDO_32	32
-#define	R_386_TLS_IE_32		33
-#define	R_386_TLS_LE_32		34
-#define	R_386_TLS_DTPMOD32	35
-#define	R_386_TLS_DTPOFF32	36
-#define	R_386_TLS_TPOFF32	37
-
-#define R_386_SIZE32		38
-
-/* More TLS relocations */
-#define	R_386_TLS_GOTDESC	39
-#define	R_386_TLS_DESC_CALL	40
-#define	R_386_TLS_DESC		41
-
-#define R_386_IRELATIVE		42
-#define R_386_GOT32X		43
-
-#endif
diff --git a/mainline/runtime/sdk/android/arm64/include/bionic/libc/include/bits/elf_x86_64.h b/mainline/runtime/sdk/android/arm64/include/bionic/libc/include/bits/elf_x86_64.h
deleted file mode 100644
index 30062af..0000000
--- a/mainline/runtime/sdk/android/arm64/include/bionic/libc/include/bits/elf_x86_64.h
+++ /dev/null
@@ -1,55 +0,0 @@
-/*	$NetBSD: elf_machdep.h,v 1.5 2016/02/02 20:13:59 christos Exp $	*/
-
-#ifndef _X86_64_ELF_MACHDEP_H_
-#define _X86_64_ELF_MACHDEP_H_
-
-/* x86-64 relocations */
-
-#define R_X86_64_NONE		0
-#define R_X86_64_64		1
-#define R_X86_64_PC32		2
-#define R_X86_64_GOT32		3
-#define R_X86_64_PLT32		4
-#define R_X86_64_COPY		5
-#define R_X86_64_GLOB_DAT	6
-#define R_X86_64_JUMP_SLOT	7
-#define R_X86_64_RELATIVE	8
-#define R_X86_64_GOTPCREL	9
-#define R_X86_64_32		10
-#define R_X86_64_32S		11
-#define R_X86_64_16		12
-#define R_X86_64_PC16		13
-#define R_X86_64_8		14
-#define R_X86_64_PC8		15
-
-/* TLS relocations */
-#define R_X86_64_DTPMOD64	16
-#define R_X86_64_DTPOFF64	17
-#define R_X86_64_TPOFF64	18
-#define R_X86_64_TLSGD		19
-#define R_X86_64_TLSLD		20
-#define R_X86_64_DTPOFF32	21
-#define R_X86_64_GOTTPOFF	22
-#define R_X86_64_TPOFF32	23
-
-#define R_X86_64_PC64		24
-#define R_X86_64_GOTOFF64	25
-#define R_X86_64_GOTPC32	26
-#define R_X86_64_GOT64		27
-#define R_X86_64_GOTPCREL64	28
-#define R_X86_64_GOTPC64	29
-#define R_X86_64_GOTPLT64	30
-#define R_X86_64_PLTOFF64	31
-#define R_X86_64_SIZE32		32
-#define R_X86_64_SIZE64		33
-#define R_X86_64_GOTPC32_TLSDESC 34
-#define R_X86_64_TLSDESC_CALL	35
-#define R_X86_64_TLSDESC	36
-#define R_X86_64_IRELATIVE	37
-#define R_X86_64_RELATIVE64	38
-#define R_X86_64_PC32_BND	39
-#define R_X86_64_PLT32_BND	40
-#define R_X86_64_GOTPCRELX	41
-#define R_X86_64_REX_GOTPCRELX	42
-
-#endif
diff --git a/mainline/runtime/sdk/android/arm64/include/bionic/libc/include/bits/fenv_riscv64.h b/mainline/runtime/sdk/android/arm64/include/bionic/libc/include/bits/fenv_riscv64.h
new file mode 100644
index 0000000..e1e43b6
--- /dev/null
+++ b/mainline/runtime/sdk/android/arm64/include/bionic/libc/include/bits/fenv_riscv64.h
@@ -0,0 +1,52 @@
+/*
+ * Copyright (C) 2022 The Android Open Source Project
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *  * Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ *  * Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in
+ *    the documentation and/or other materials provided with the
+ *    distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+ * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+ * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
+ * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
+ * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+ * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
+ * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ */
+
+#pragma once
+
+#include <sys/types.h>
+
+__BEGIN_DECLS
+
+typedef __uint32_t fenv_t;
+typedef __uint32_t fexcept_t;
+
+/* Exception flags. No FE_DENORMAL for riscv64. */
+#define FE_INEXACT    0x01
+#define FE_UNDERFLOW  0x02
+#define FE_OVERFLOW   0x04
+#define FE_DIVBYZERO  0x08
+#define FE_INVALID    0x10
+#define FE_ALL_EXCEPT (FE_DIVBYZERO | FE_INEXACT | FE_INVALID | FE_OVERFLOW | FE_UNDERFLOW)
+
+/* Rounding modes. */
+#define FE_TONEAREST  0x0
+#define FE_TOWARDZERO 0x1
+#define FE_DOWNWARD   0x2
+#define FE_UPWARD     0x3
+
+__END_DECLS
diff --git a/mainline/runtime/sdk/android/arm64/include/bionic/libc/include/bits/fortify/fcntl.h b/mainline/runtime/sdk/android/arm64/include/bionic/libc/include/bits/fortify/fcntl.h
index 7063541..7fe60f4 100644
--- a/mainline/runtime/sdk/android/arm64/include/bionic/libc/include/bits/fortify/fcntl.h
+++ b/mainline/runtime/sdk/android/arm64/include/bionic/libc/include/bits/fortify/fcntl.h
@@ -41,7 +41,7 @@
 #if defined(__BIONIC_FORTIFY)
 #define __open_too_many_args_error "too many arguments"
 #define __open_too_few_args_error "called with O_CREAT or O_TMPFILE, but missing mode"
-#define __open_useless_modes_warning "has superfluous mode bits; missing O_CREAT?"
+#define __open_useless_modes_warning "has superfluous mode bits; missing O_CREAT or O_TMPFILE?"
 /* O_TMPFILE shares bits with O_DIRECTORY. */
 #define __open_modes_useful(flags) (((flags) & O_CREAT) || ((flags) & O_TMPFILE) == O_TMPFILE)
 
diff --git a/mainline/runtime/sdk/android/arm64/include/bionic/libc/include/elf.h b/mainline/runtime/sdk/android/arm64/include/bionic/libc/include/elf.h
index 4739bbd..1dfc008 100644
--- a/mainline/runtime/sdk/android/arm64/include/bionic/libc/include/elf.h
+++ b/mainline/runtime/sdk/android/arm64/include/bionic/libc/include/elf.h
@@ -30,13 +30,12 @@
 
 #include <sys/cdefs.h>
 
-#include <bits/auxvec.h>
-#include <bits/elf_arm.h>
-#include <bits/elf_arm64.h>
-#include <bits/elf_x86.h>
-#include <bits/elf_x86_64.h>
 #include <linux/elf.h>
 #include <linux/elf-em.h>
+#undef EI_PAD
+
+#include <bits/auxvec.h>
+#include <bits/elf_common.h>
 
 /* http://www.sco.com/developers/gabi/latest/ch4.intro.html */
 typedef __u64 Elf32_Xword;
@@ -83,14 +82,6 @@
   Elf64_Word l_version;
   Elf64_Word l_flags;
 } Elf64_Lib;
-/* ElfW(Lib)::l_flags values. */
-#define LL_NONE 0x0
-#define LL_EXACT_MATCH 0x1
-#define LL_IGNORE_INT_VER 0x2
-#define LL_REQUIRE_MINOR 0x4
-#define LL_EXPORTS 0x8
-#define LL_DELAY_LOAD 0x10
-#define LL_DELTA 0x20
 
 typedef struct {
   Elf32_Xword m_value;
@@ -118,14 +109,6 @@
   Elf64_Half si_boundto;
   Elf64_Half si_flags;
 } Elf64_Syminfo;
-/* ElfW(Syminfo)::si_boundto values. */
-#define SYMINFO_BT_SELF 0xffff
-#define SYMINFO_BT_PARENT 0xfffe
-/* ElfW(Syminfo)::si_flags values. */
-#define SYMINFO_FLG_DIRECT 0x1
-#define SYMINFO_FLG_PASSTHRU 0x2
-#define SYMINFO_FLG_COPY 0x4
-#define SYMINFO_FLG_LAZYLOAD 0x8
 
 typedef Elf32_Half Elf32_Versym;
 typedef Elf64_Half Elf64_Versym;
@@ -197,24 +180,12 @@
 typedef Elf64_Xword Elf64_Relr;
 
 /* http://www.sco.com/developers/gabi/latest/ch5.dynamic.html */
-#define DF_ORIGIN     0x00000001
-#define DF_SYMBOLIC   0x00000002
-#define DF_TEXTREL    0x00000004
-#define DF_BIND_NOW   0x00000008
-#define DF_STATIC_TLS 0x00000010
 
 #define DF_1_NOW        0x00000001 /* Perform complete relocation processing. */
-#define DF_1_GLOBAL     0x00000002 /* implies RTLD_GLOBAL */
 #define DF_1_GROUP      0x00000004
-#define DF_1_NODELETE   0x00000008 /* implies RTLD_NODELETE */
-#define DF_1_LOADFLTR   0x00000010
 #define DF_1_INITFIRST  0x00000020
-#define DF_1_NOOPEN     0x00000040 /* Object can not be used with dlopen(3) */
-#define DF_1_ORIGIN     0x00000080
 #define DF_1_DIRECT     0x00000100
 #define DF_1_TRANS      0x00000200
-#define DF_1_INTERPOSE  0x00000400
-#define DF_1_NODEFLIB   0x00000800
 #define DF_1_NODUMP     0x00001000 /* Object cannot be dumped with dldump(3) */
 #define DF_1_CONFALT    0x00002000
 #define DF_1_ENDFILTEE  0x00004000
@@ -230,58 +201,10 @@
 #define DF_1_GLOBAUDIT  0x01000000
 #define DF_1_SINGLETON  0x02000000
 #define DF_1_STUB       0x04000000
-#define DF_1_PIE        0x08000000
-
-/* http://www.sco.com/developers/gabi/latest/ch5.dynamic.html */
-#define DT_BIND_NOW 24
-#define DT_INIT_ARRAY 25
-#define DT_FINI_ARRAY 26
-#define DT_INIT_ARRAYSZ 27
-#define DT_FINI_ARRAYSZ 28
-#define DT_RUNPATH 29
-#define DT_FLAGS 30
-/* glibc and BSD disagree for DT_ENCODING; glibc looks wrong. */
-#define DT_PREINIT_ARRAY 32
-#define DT_PREINIT_ARRAYSZ 33
-#define DT_RELRSZ 35
-#define DT_RELR 36
-#define DT_RELRENT 37
-
-#define DT_GNU_HASH 0x6ffffef5
-#define DT_TLSDESC_PLT 0x6ffffef6
-#define DT_TLSDESC_GOT 0x6ffffef7
-
-/* http://www.sco.com/developers/gabi/latest/ch4.eheader.html */
-#define EI_ABIVERSION 8
-#undef EI_PAD
-#define EI_PAD 9
-
-/* http://www.sco.com/developers/gabi/latest/ch4.sheader.html */
-#define ELFCOMPRESS_ZLIB 1
-#define ELFCOMPRESS_LOOS 0x60000000
-#define ELFCOMPRESS_HIOS 0x6fffffff
-#define ELFCOMPRESS_LOPROC 0x70000000
-#define ELFCOMPRESS_HIPROC 0x7fffffff
 
 /* http://www.sco.com/developers/gabi/latest/ch4.eheader.html */
 #define ELFOSABI_SYSV 0 /* Synonym for ELFOSABI_NONE used by valgrind. */
-#define ELFOSABI_HPUX 1
-#define ELFOSABI_NETBSD 2
 #define ELFOSABI_GNU 3 /* Synonym for ELFOSABI_LINUX. */
-#define ELFOSABI_SOLARIS 6
-#define ELFOSABI_AIX 7
-#define ELFOSABI_IRIX 8
-#define ELFOSABI_FREEBSD 9
-#define ELFOSABI_TRU64 10
-#define ELFOSABI_MODESTO 11
-#define ELFOSABI_OPENBSD 12
-#define ELFOSABI_OPENVMS 13
-#define ELFOSABI_NSK 14
-#define ELFOSABI_AROS 15
-#define ELFOSABI_FENIXOS 16
-#define ELFOSABI_CLOUDABI 17
-#define ELFOSABI_OPENVOS 18
-#define ELFOSABI_ARM_AEABI 64
 
 /* http://www.sco.com/developers/gabi/latest/ch4.reloc.html */
 #define ELF32_R_INFO(sym, type) ((((Elf32_Word)sym) << 8) | ((type) & 0xff))
@@ -294,236 +217,17 @@
 #define ELF32_ST_INFO(b,t) ELF_ST_INFO(b,t)
 #define ELF64_ST_INFO(b,t) ELF_ST_INFO(b,t)
 
-/* http://www.sco.com/developers/gabi/latest/ch4.eheader.html */
-#define EM_S370 9
-#define EM_VPP500 17
-#define EM_960 19
-#define EM_V800 36
-#define EM_FR20 37
-#define EM_RH32 38
-#define EM_RCE 39
-#define EM_FAKE_ALPHA 41
-#define EM_TRICORE 44
-#define EM_ARC 45
-#define EM_H8_300H 47
-#define EM_H8S 48
-#define EM_H8_500 49
-#define EM_MIPS_X 51
-#define EM_COLDFIRE 52
-#define EM_68HC12 53
-#define EM_MMA 54
-#define EM_PCP 55
-#define EM_NCPU 56
-#define EM_NDR1 57
-#define EM_STARCORE 58
-#define EM_ME16 59
-#define EM_ST100 60
-#define EM_TINYJ 61
-#define EM_PDSP 63
-#define EM_PDP10 64
-#define EM_PDP11 65
-#define EM_FX66 66
-#define EM_ST9PLUS 67
-#define EM_ST7 68
-#define EM_68HC16 69
-#define EM_68HC11 70
-#define EM_68HC08 71
-#define EM_68HC05 72
-#define EM_SVX 73
-#define EM_ST19 74
-#define EM_VAX 75
-#define EM_JAVELIN 77
-#define EM_FIREPATH 78
-#define EM_ZSP 79
-#define EM_MMIX 80
-#define EM_HUANY 81
-#define EM_PRISM 82
-#define EM_AVR 83
-#define EM_FR30 84
-#define EM_D10V 85
-#define EM_D30V 86
-#define EM_V850 87
-#define EM_MN10200 90
-#define EM_PJ 91
-#define EM_ARC_COMPACT 93
-#define EM_XTENSA 94
-#define EM_VIDEOCORE 95
-#define EM_TMM_GPP 96
-#define EM_NS32K 97
-#define EM_TPC 98
-#define EM_SNP1K 99
-#define EM_ST200 100
-#define EM_IP2K 101
-#define EM_MAX 102
-#define EM_CR 103
-#define EM_F2MC16 104
-#define EM_MSP430 105
-#define EM_SE_C33 107
-#define EM_SEP 108
-#define EM_ARCA 109
-#define EM_UNICORE 110
-#define EM_EXCESS 111
-#define EM_DXP 112
-#define EM_CRX 114
-#define EM_XGATE 115
-#define EM_C166 116
-#define EM_M16C 117
-#define EM_DSPIC30F 118
-#define EM_CE 119
-#define EM_M32C 120
-#define EM_TSK3000 131
-#define EM_RS08 132
-#define EM_SHARC 133
-#define EM_ECOG2 134
-#define EM_SCORE7 135
-#define EM_DSP24 136
-#define EM_VIDEOCORE3 137
-#define EM_LATTICEMICO32 138
-#define EM_SE_C17 139
-#define EM_TI_C2000 141
-#define EM_TI_C5500 142
-#define EM_MMDSP_PLUS 160
-#define EM_CYPRESS_M8C 161
-#define EM_R32C 162
-#define EM_TRIMEDIA 163
-#define EM_QDSP6 164
-#define EM_8051 165
-#define EM_STXP7X 166
-#define EM_NDS32 167
-#define EM_ECOG1 168
-#define EM_ECOG1X 168
-#define EM_MAXQ30 169
-#define EM_XIMO16 170
-#define EM_MANIK 171
-#define EM_CRAYNV2 172
-#define EM_RX 173
-#define EM_METAG 174
-#define EM_MCST_ELBRUS 175
-#define EM_ECOG16 176
-#define EM_CR16 177
-#define EM_ETPU 178
-#define EM_SLE9X 179
-#define EM_L10M 180
-#define EM_K10M 181
-#define EM_AVR32 185
-#define EM_STM8 186
-#define EM_TILE64 187
-#define EM_CUDA 190
-#define EM_CLOUDSHIELD 192
-#define EM_COREA_1ST 193
-#define EM_COREA_2ND 194
-#define EM_ARC_COMPACT2 195
-#define EM_OPEN8 196
-#define EM_RL78 197
-#define EM_VIDEOCORE5 198
-#define EM_78KOR 199
-#define EM_56800EX 200
-#define EM_BA1 201
-#define EM_BA2 202
-#define EM_XCORE 203
-#define EM_MCHP_PIC 204
-#define EM_INTEL205 205
-#define EM_INTEL206 206
-#define EM_INTEL207 207
-#define EM_INTEL208 208
-#define EM_INTEL209 209
-#define EM_KM32 210
-#define EM_KMX32 211
-#define EM_KMX16 212
-#define EM_KMX8 213
-#define EM_KVARC 214
-#define EM_CDP 215
-#define EM_COGE 216
-#define EM_COOL 217
-#define EM_NORC 218
-#define EM_CSR_KALIMBA 219
-#define EM_Z80 220
-#define EM_VISIUM 221
-#define EM_FT32 222
-#define EM_MOXIE 223
-#define EM_AMDGPU 224
-#define EM_RISCV 243
-
-/* http://www.sco.com/developers/gabi/latest/ch4.eheader.html */
-#define ET_LOOS 0xfe00
-#define ET_HIOS 0xfeff
-
 /* http://www.sco.com/developers/gabi/latest/ch4.sheader.html */
-#define GRP_COMDAT 0x1
 #define GRP_MASKOS   0x0ff00000
 #define GRP_MASKPROC 0xf0000000
 
-/* http://www.sco.com/developers/gabi/latest/ch5.pheader.html */
-#define PF_X 0x1
-#define PF_W 0x2
-#define PF_R 0x4
-#define PF_MASKOS   0x0ff00000
-#define PF_MASKPROC 0xf0000000
-
-#define PT_GNU_RELRO 0x6474e552
-
-#define STB_LOOS 10
-#define STB_HIOS 12
-#define STB_LOPROC 13
-#define STB_HIPROC 15
-
 /* http://www.sco.com/developers/gabi/latest/ch4.sheader.html */
-#define SHF_MERGE 0x10
-#define SHF_STRINGS 0x20
-#define SHF_INFO_LINK 0x40
-#define SHF_LINK_ORDER 0x80
-#define SHF_OS_NONCONFORMING 0x100
-#define SHF_GROUP 0x200
-#define SHF_TLS 0x400
-#define SHF_COMPRESSED 0x800
-#define SHF_MASKOS 0x0ff00000
-#define SHF_MASKPROC 0xf0000000
-
-/* http://www.sco.com/developers/gabi/latest/ch4.sheader.html */
-#define SHN_LOOS 0xff20
-#define SHN_HIOS 0xff3f
-#define SHN_XINDEX 0xffff
-
-/* http://www.sco.com/developers/gabi/latest/ch4.sheader.html */
-#define SHT_INIT_ARRAY 14
-#define SHT_FINI_ARRAY 15
-#define SHT_PREINIT_ARRAY 16
-#define SHT_GROUP 17
-#define SHT_SYMTAB_SHNDX 18
+/*
+ * Standard replacement for SHT_ANDROID_RELR.
+ */
 #define SHT_RELR 19
 #undef SHT_NUM
 #define SHT_NUM 20
-#define SHT_LOOS 0x60000000
-#define SHT_HIOS 0x6fffffff
-
-/* http://www.sco.com/developers/gabi/latest/ch4.symtab.html */
-#define STN_UNDEF 0
-
-/* http://www.sco.com/developers/gabi/latest/ch4.symtab.html */
-#define STT_GNU_IFUNC 10
-#define STT_LOOS 10
-#define STT_HIOS 12
-#define STT_LOPROC 13
-#define STT_HIPROC 15
-
-/* http://www.sco.com/developers/gabi/latest/ch4.symtab.html */
-#define STV_DEFAULT 0
-#define STV_INTERNAL 1
-#define STV_HIDDEN 2
-#define STV_PROTECTED 3
-
-/* The kernel uses NT_PRFPREG but glibc also offers NT_FPREGSET */
-#define NT_FPREGSET NT_PRFPREG
-
-#define ELF_NOTE_GNU "GNU"
-
-#define NT_GNU_BUILD_ID 3
-
-#define VER_FLG_BASE 0x1
-#define VER_FLG_WEAK 0x2
-
-#define VER_NDX_LOCAL 0
-#define VER_NDX_GLOBAL 1
 
 /*
  * Experimental support for SHT_RELR sections. For details, see proposal
@@ -553,3 +257,13 @@
 #define DT_ANDROID_RELSZ 0x60000010 // DT_LOOS + 3
 #define DT_ANDROID_RELA 0x60000011 // DT_LOOS + 4
 #define DT_ANDROID_RELASZ 0x60000012 // DT_LOOS + 5
+
+/* Linux traditionally doesn't have the trailing 64 that BSD has on these. */
+#define R_AARCH64_TLS_DTPREL R_AARCH64_TLS_DTPREL64
+#define R_AARCH64_TLS_DTPMOD R_AARCH64_TLS_DTPMOD64
+#define R_AARCH64_TLS_TPREL R_AARCH64_TLS_TPREL64
+
+/* TODO: upstream these to FreeBSD? */
+#define R_ARM_TLS_DESC 13
+#define R_ARM_IRELATIVE 160
+#define R_X86_64_JUMP_SLOT 7
diff --git a/mainline/runtime/sdk/android/arm64/include/bionic/libc/include/fenv.h b/mainline/runtime/sdk/android/arm64/include/bionic/libc/include/fenv.h
index 7b775b6..3fd9852 100644
--- a/mainline/runtime/sdk/android/arm64/include/bionic/libc/include/fenv.h
+++ b/mainline/runtime/sdk/android/arm64/include/bionic/libc/include/fenv.h
@@ -35,6 +35,8 @@
 #include <bits/fenv_arm.h>
 #elif defined(__i386__)
 #include <bits/fenv_x86.h>
+#elif defined(__riscv)
+#include <bits/fenv_riscv64.h>
 #elif defined(__x86_64__)
 #include <bits/fenv_x86_64.h>
 #endif
diff --git a/mainline/runtime/sdk/android/arm64/include/bionic/libc/include/langinfo.h b/mainline/runtime/sdk/android/arm64/include/bionic/libc/include/langinfo.h
index d9d8c15..2b43892 100644
--- a/mainline/runtime/sdk/android/arm64/include/bionic/libc/include/langinfo.h
+++ b/mainline/runtime/sdk/android/arm64/include/bionic/libc/include/langinfo.h
@@ -92,8 +92,8 @@
 #define NOEXPR 54
 #define CRNCYSTR 55
 
-char* nl_langinfo(nl_item __item) __INTRODUCED_IN(26);
-char* nl_langinfo_l(nl_item __item, locale_t __l) __INTRODUCED_IN(26);
+char* _Nonnull nl_langinfo(nl_item __item) __INTRODUCED_IN(26);
+char* _Nonnull nl_langinfo_l(nl_item __item, locale_t _Nonnull __l) __INTRODUCED_IN(26);
 
 __END_DECLS
 
diff --git a/mainline/runtime/sdk/android/arm64/include/bionic/libc/include/libgen.h b/mainline/runtime/sdk/android/arm64/include/bionic/libc/include/libgen.h
index b910790..474f066 100644
--- a/mainline/runtime/sdk/android/arm64/include/bionic/libc/include/libgen.h
+++ b/mainline/runtime/sdk/android/arm64/include/bionic/libc/include/libgen.h
@@ -50,7 +50,7 @@
  * Note that Android's cv-qualifiers differ from POSIX; Android's implementation doesn't
  * modify its input and uses thread-local storage for the result if necessary.
  */
-char* __posix_basename(const char* __path) __RENAME(basename);
+char* _Nullable __posix_basename(const char* _Nullable __path) __RENAME(basename);
 
 /**
  * This macro ensures that callers get the POSIX basename() if they include this header,
@@ -65,13 +65,13 @@
  * Note that Android's cv-qualifiers differ from POSIX; Android's implementation doesn't
  * modify its input and uses thread-local storage for the result if necessary.
  */
-char* dirname(const char* __path);
+char* _Nullable dirname(const char* _Nullable __path);
 
 #if !defined(__LP64__)
 /** Deprecated. Use dirname() instead. */
-int dirname_r(const char* __path, char* __buf, size_t __n);
+int dirname_r(const char* _Nullable __path, char* _Nullable __buf, size_t __n);
 /** Deprecated. Use basename() instead. */
-int basename_r(const char* __path, char* __buf, size_t __n);
+int basename_r(const char* _Nullable __path, char* _Nullable __buf, size_t __n);
 #endif
 
 __END_DECLS
diff --git a/mainline/runtime/sdk/android/arm64/include/bionic/libc/include/malloc.h b/mainline/runtime/sdk/android/arm64/include/bionic/libc/include/malloc.h
index 40786fa..02bda60 100644
--- a/mainline/runtime/sdk/android/arm64/include/bionic/libc/include/malloc.h
+++ b/mainline/runtime/sdk/android/arm64/include/bionic/libc/include/malloc.h
@@ -40,7 +40,7 @@
  * Returns a pointer to the allocated memory on success and returns a null
  * pointer and sets `errno` on failure.
  */
-void* malloc(size_t __byte_count) __mallocfunc __BIONIC_ALLOC_SIZE(1) __wur;
+void* _Nullable malloc(size_t __byte_count) __mallocfunc __BIONIC_ALLOC_SIZE(1) __wur;
 
 /**
  * [calloc(3)](http://man7.org/linux/man-pages/man3/calloc.3.html) allocates
@@ -49,7 +49,7 @@
  * Returns a pointer to the allocated memory on success and returns a null
  * pointer and sets `errno` on failure.
  */
-void* calloc(size_t __item_count, size_t __item_size) __mallocfunc __BIONIC_ALLOC_SIZE(1,2) __wur;
+void* _Nullable calloc(size_t __item_count, size_t __item_size) __mallocfunc __BIONIC_ALLOC_SIZE(1,2) __wur;
 
 /**
  * [realloc(3)](http://man7.org/linux/man-pages/man3/realloc.3.html) resizes
@@ -58,7 +58,7 @@
  * Returns a pointer (which may be different from `__ptr`) to the resized
  * memory on success and returns a null pointer and sets `errno` on failure.
  */
-void* realloc(void* __ptr, size_t __byte_count) __BIONIC_ALLOC_SIZE(2) __wur;
+void* _Nullable realloc(void* _Nullable __ptr, size_t __byte_count) __BIONIC_ALLOC_SIZE(2) __wur;
 
 /**
  * [reallocarray(3)](http://man7.org/linux/man-pages/man3/realloc.3.html) resizes
@@ -70,13 +70,13 @@
  * Returns a pointer (which may be different from `__ptr`) to the resized
  * memory on success and returns a null pointer and sets `errno` on failure.
  */
-void* reallocarray(void* __ptr, size_t __item_count, size_t __item_size) __BIONIC_ALLOC_SIZE(2, 3) __wur __INTRODUCED_IN(29);
+void* _Nullable reallocarray(void* _Nullable __ptr, size_t __item_count, size_t __item_size) __BIONIC_ALLOC_SIZE(2, 3) __wur __INTRODUCED_IN(29);
 
 /**
  * [free(3)](http://man7.org/linux/man-pages/man3/free.3.html) deallocates
  * memory on the heap.
  */
-void free(void* __ptr);
+void free(void* _Nullable __ptr);
 
 /**
  * [memalign(3)](http://man7.org/linux/man-pages/man3/memalign.3.html) allocates
@@ -87,7 +87,7 @@
  *
  * See also posix_memalign().
  */
-void* memalign(size_t __alignment, size_t __byte_count) __mallocfunc __BIONIC_ALLOC_SIZE(2) __wur;
+void* _Nullable memalign(size_t __alignment, size_t __byte_count) __mallocfunc __BIONIC_ALLOC_SIZE(2) __wur;
 
 /**
  * [malloc_usable_size(3)](http://man7.org/linux/man-pages/man3/malloc_usable_size.3.html)
@@ -95,7 +95,7 @@
  *
  * Available since API level 17.
  */
-size_t malloc_usable_size(const void* __ptr) __INTRODUCED_IN(17);
+size_t malloc_usable_size(const void* _Nullable __ptr) __INTRODUCED_IN(17);
 
 #define __MALLINFO_BODY \
   /** Total number of non-mmapped bytes currently allocated from OS. */ \
@@ -168,7 +168,7 @@
  *
  * Available since API level 23.
  */
-int malloc_info(int __must_be_zero, FILE* __fp) __INTRODUCED_IN(23);
+int malloc_info(int __must_be_zero, FILE* _Nonnull __fp) __INTRODUCED_IN(23);
 
 /**
  * mallopt() option to set the decay time. Valid values are 0 and 1.
@@ -329,7 +329,7 @@
  *
  * See also: [extra documentation](https://android.googlesource.com/platform/bionic/+/master/libc/malloc_hooks/README.md)
  */
-extern void* (*volatile __malloc_hook)(size_t __byte_count, const void* __caller) __INTRODUCED_IN(28);
+extern void* _Nonnull (*volatile _Nonnull __malloc_hook)(size_t __byte_count, const void* _Nonnull __caller) __INTRODUCED_IN(28);
 
 /**
  * [__realloc_hook(3)](http://man7.org/linux/man-pages/man3/__realloc_hook.3.html)
@@ -340,7 +340,7 @@
  *
  * See also: [extra documentation](https://android.googlesource.com/platform/bionic/+/master/libc/malloc_hooks/README.md)
  */
-extern void* (*volatile __realloc_hook)(void* __ptr, size_t __byte_count, const void* __caller) __INTRODUCED_IN(28);
+extern void* _Nonnull (*volatile _Nonnull __realloc_hook)(void* _Nullable __ptr, size_t __byte_count, const void* _Nonnull __caller) __INTRODUCED_IN(28);
 
 /**
  * [__free_hook(3)](http://man7.org/linux/man-pages/man3/__free_hook.3.html)
@@ -351,7 +351,7 @@
  *
  * See also: [extra documentation](https://android.googlesource.com/platform/bionic/+/master/libc/malloc_hooks/README.md)
  */
-extern void (*volatile __free_hook)(void* __ptr, const void* __caller) __INTRODUCED_IN(28);
+extern void (*volatile _Nonnull __free_hook)(void* _Nullable __ptr, const void* _Nonnull __caller) __INTRODUCED_IN(28);
 
 /**
  * [__memalign_hook(3)](http://man7.org/linux/man-pages/man3/__memalign_hook.3.html)
@@ -362,6 +362,6 @@
  *
  * See also: [extra documentation](https://android.googlesource.com/platform/bionic/+/master/libc/malloc_hooks/README.md)
  */
-extern void* (*volatile __memalign_hook)(size_t __alignment, size_t __byte_count, const void* __caller) __INTRODUCED_IN(28);
+extern void* _Nonnull (*volatile _Nonnull __memalign_hook)(size_t __alignment, size_t __byte_count, const void* _Nonnull __caller) __INTRODUCED_IN(28);
 
 __END_DECLS
diff --git a/mainline/runtime/sdk/android/arm64/include/bionic/libc/include/regex.h b/mainline/runtime/sdk/android/arm64/include/bionic/libc/include/regex.h
index c4cc39c..be1418e 100644
--- a/mainline/runtime/sdk/android/arm64/include/bionic/libc/include/regex.h
+++ b/mainline/runtime/sdk/android/arm64/include/bionic/libc/include/regex.h
@@ -49,8 +49,8 @@
 typedef struct {
 	int re_magic;
 	size_t re_nsub;		/* number of parenthesized subexpressions */
-	const char *re_endp;	/* end pointer for REG_PEND */
-	struct re_guts *re_g;	/* none of your business :-) */
+	const char * _Null_unspecified re_endp;	/* end pointer for REG_PEND */
+	struct re_guts * _Null_unspecified re_g;	/* none of your business :-) */
 } regex_t;
 
 typedef struct {
@@ -67,6 +67,7 @@
 #define	REG_NOSPEC	0020
 #define	REG_PEND	0040
 #define	REG_DUMP	0200
+#define	REG_GNU		0400
 
 /* regerror() flags */
 #define	REG_NOMATCH	 1
@@ -85,6 +86,7 @@
 #define	REG_EMPTY	14
 #define	REG_ASSERT	15
 #define	REG_INVARG	16
+#define	REG_ILLSEQ	17
 #define	REG_ATOI	255	/* convert name to number (!) */
 #define	REG_ITOA	0400	/* convert number to name (!) */
 
@@ -97,10 +99,10 @@
 #define	REG_BACKR	02000	/* force use of backref code */
 
 __BEGIN_DECLS
-int regcomp(regex_t* __re, const char* __regex, int __flags);
-size_t regerror(int __error_code, const regex_t* __re, char* __buf, size_t __n);
-int regexec(const regex_t* __re, const char* __s, size_t __match_count, regmatch_t __matches[], int __flags);
-void regfree(regex_t* __re);
+int regcomp(regex_t* _Nonnull __re, const char* _Nonnull __regex, int __flags);
+size_t regerror(int __error_code, const regex_t* _Nullable __re, char* _Nullable __buf, size_t __n);
+int regexec(const regex_t* _Nonnull __re, const char* _Nonnull __s, size_t __match_count, regmatch_t __matches[_Nullable], int __flags);
+void regfree(regex_t* _Nonnull __re);
 __END_DECLS
 
 #endif
diff --git a/mainline/runtime/sdk/android/arm64/include/bionic/libc/include/setjmp.h b/mainline/runtime/sdk/android/arm64/include/bionic/libc/include/setjmp.h
index 3a64b33..a3de9c7 100644
--- a/mainline/runtime/sdk/android/arm64/include/bionic/libc/include/setjmp.h
+++ b/mainline/runtime/sdk/android/arm64/include/bionic/libc/include/setjmp.h
@@ -37,8 +37,12 @@
  *	@(#)setjmp.h	8.2 (Berkeley) 1/21/94
  */
 
-#ifndef _SETJMP_H_
-#define _SETJMP_H_
+#pragma once
+
+/**
+ * @file setjmp.h
+ * @brief Non-local jumps.
+ */
 
 #include <sys/cdefs.h>
 
@@ -48,28 +52,60 @@
 #define _JBLEN 64
 #elif defined(__i386__)
 #define _JBLEN 10
+#elif defined(__riscv)
+#define _JBLEN 29
 #elif defined(__x86_64__)
 #define _JBLEN 11
 #endif
 
+/** The type of the buffer used by sigsetjmp()/siglongjmp(). */
 typedef long sigjmp_buf[_JBLEN + 1];
+
+/** The type of the buffer used by setjmp()/longjmp(). */
 typedef long jmp_buf[_JBLEN];
 
 #undef _JBLEN
 
 __BEGIN_DECLS
 
+/**
+ * Equivalent to sigsetjmp() with the second argument 0, so that the signal
+ * mask is not saved.
+ */
 int _setjmp(jmp_buf __env) __returns_twice;
+
+/** Equivalent to siglongjmp(). */
 __noreturn void _longjmp(jmp_buf __env, int __value);
 
+/**
+ * Equivalent to sigsetjmp() with the second argument 1, so that the signal
+ * mask is saved.
+ */
 int setjmp(jmp_buf __env) __returns_twice;
-__noreturn void longjmp(jmp_buf __env, int __value);
 
+/** C11 says setjmp() must be a macro, but Android already had a function. */
 #define setjmp(__env) setjmp(__env)
 
-int sigsetjmp(sigjmp_buf __env, int __save_signal_mask);
+/** Equivalent to siglongjmp(). */
+__noreturn void longjmp(jmp_buf __env, int __value);
+
+/**
+ * [sigsetjmp(3)](http://man7.org/linux/man-pages/man3/sigsetjmp.3.html)
+ * sets the target of a future siglongjmp() call, saving or not saving the
+ * current signal mask based on the second argument.
+ *
+ * Returns 0 when first called, and returns the value passed to siglongjmp()
+ * when returning here as a result of a siglongjmp() call.
+ */
+int sigsetjmp(sigjmp_buf __env, int __save_signal_mask) __returns_twice;
+
+/**
+ * [siglongjmp(3)](http://man7.org/linux/man-pages/man3/siglongjmp.3.html)
+ * transfers control back to the site of the sigsetjmp() call that initialized
+ * the given jump buffer, returning the given value.
+ *
+ * Does not return.
+ */
 __noreturn void siglongjmp(sigjmp_buf __env, int __value);
 
 __END_DECLS
-
-#endif
diff --git a/mainline/runtime/sdk/android/arm64/include/bionic/libc/include/spawn.h b/mainline/runtime/sdk/android/arm64/include/bionic/libc/include/spawn.h
index 2e239bf..e445453 100644
--- a/mainline/runtime/sdk/android/arm64/include/bionic/libc/include/spawn.h
+++ b/mainline/runtime/sdk/android/arm64/include/bionic/libc/include/spawn.h
@@ -46,6 +46,8 @@
 #define POSIX_SPAWN_USEVFORK 64
 #define POSIX_SPAWN_SETSID 128
 #endif
+// mark all fds (except stdin/out/err) as close-on-exec prior to executing registered file actions
+#define POSIX_SPAWN_CLOEXEC_DEFAULT 256
 
 typedef struct __posix_spawnattr* posix_spawnattr_t;
 typedef struct __posix_spawn_file_actions* posix_spawn_file_actions_t;
diff --git a/mainline/runtime/sdk/android/arm64/include/bionic/libc/include/stdio_ext.h b/mainline/runtime/sdk/android/arm64/include/bionic/libc/include/stdio_ext.h
index 3aa183d..eda5919 100644
--- a/mainline/runtime/sdk/android/arm64/include/bionic/libc/include/stdio_ext.h
+++ b/mainline/runtime/sdk/android/arm64/include/bionic/libc/include/stdio_ext.h
@@ -96,13 +96,21 @@
 
 /**
  * [__fpending(3)](http://man7.org/linux/man-pages/man3/__fpending.3.html) returns the number of
- * bytes in the output buffer.
+ * bytes in the output buffer. See __freadahead() for the input buffer.
  *
  * Available since API level 23.
  */
 size_t __fpending(FILE* __fp) __INTRODUCED_IN(23);
 
 /**
+ * __freadahead(3) returns the number of bytes in the input buffer.
+ * See __fpending() for the output buffer.
+ *
+ * Available since API level 34.
+ */
+size_t __freadahead(FILE* __fp) __INTRODUCED_IN(34);
+
+/**
  * [_flushlbf(3)](http://man7.org/linux/man-pages/man3/_flushlbf.3.html) flushes all
  * line-buffered streams.
  *
diff --git a/mainline/runtime/sdk/android/arm64/include/bionic/libc/include/stdlib.h b/mainline/runtime/sdk/android/arm64/include/bionic/libc/include/stdlib.h
index 4aa27f9..06ed3f4 100644
--- a/mainline/runtime/sdk/android/arm64/include/bionic/libc/include/stdlib.h
+++ b/mainline/runtime/sdk/android/arm64/include/bionic/libc/include/stdlib.h
@@ -49,82 +49,82 @@
 __noreturn void _Exit(int) __RENAME(_exit);
 #endif
 
-int atexit(void (*__fn)(void));
+int atexit(void (* _Nonnull __fn)(void));
 
-int at_quick_exit(void (*__fn)(void)) __INTRODUCED_IN(21);
+int at_quick_exit(void (* _Nonnull __fn)(void)) __INTRODUCED_IN(21);
 void quick_exit(int __status) __noreturn __INTRODUCED_IN(21);
 
-char* getenv(const char* __name);
-int putenv(char* __assignment);
-int setenv(const char* __name, const char* __value, int __overwrite);
-int unsetenv(const char* __name);
+char* _Nullable getenv(const char* _Nonnull __name);
+int putenv(char* _Nonnull __assignment);
+int setenv(const char* _Nonnull __name, const char* _Nonnull __value, int __overwrite);
+int unsetenv(const char* _Nonnull __name);
 int clearenv(void);
 
-char* mkdtemp(char* __template);
-char* mktemp(char* __template) __attribute__((deprecated("mktemp is unsafe, use mkstemp or tmpfile instead")));
+char* _Nullable mkdtemp(char* _Nonnull __template);
+char* _Nullable mktemp(char* _Nonnull __template) __attribute__((deprecated("mktemp is unsafe, use mkstemp or tmpfile instead")));
 
-int mkostemp64(char* __template, int __flags) __INTRODUCED_IN(23);
-int mkostemp(char* __template, int __flags) __INTRODUCED_IN(23);
-int mkostemps64(char* __template, int __suffix_length, int __flags) __INTRODUCED_IN(23);
-int mkostemps(char* __template, int __suffix_length, int __flags) __INTRODUCED_IN(23);
-int mkstemp64(char* __template) __INTRODUCED_IN(21);
-int mkstemp(char* __template);
-int mkstemps64(char* __template, int __flags) __INTRODUCED_IN(23);
-int mkstemps(char* __template, int __flags);
+int mkostemp64(char* _Nonnull __template, int __flags) __INTRODUCED_IN(23);
+int mkostemp(char* _Nonnull __template, int __flags) __INTRODUCED_IN(23);
+int mkostemps64(char* _Nonnull __template, int __suffix_length, int __flags) __INTRODUCED_IN(23);
+int mkostemps(char* _Nonnull __template, int __suffix_length, int __flags) __INTRODUCED_IN(23);
+int mkstemp64(char* _Nonnull __template) __INTRODUCED_IN(21);
+int mkstemp(char* _Nonnull __template);
+int mkstemps64(char* _Nonnull __template, int __flags) __INTRODUCED_IN(23);
+int mkstemps(char* _Nonnull __template, int __flags);
 
-long strtol(const char* __s, char** __end_ptr, int __base);
-long long strtoll(const char* __s, char** __end_ptr, int __base);
-unsigned long strtoul(const char* __s, char** __end_ptr, int __base);
-unsigned long long strtoull(const char* __s, char** __end_ptr, int __base);
+long strtol(const char* _Nonnull __s, char* _Nullable * _Nullable __end_ptr, int __base);
+long long strtoll(const char* _Nonnull __s, char* _Nullable * _Nullable __end_ptr, int __base);
+unsigned long strtoul(const char* _Nonnull __s, char* _Nullable * _Nullable __end_ptr, int __base);
+unsigned long long strtoull(const char* _Nonnull __s, char* _Nullable * _Nullable __end_ptr, int __base);
 
-int posix_memalign(void** __memptr, size_t __alignment, size_t __size) __INTRODUCED_IN(17);
+int posix_memalign(void* _Nullable * _Nullable __memptr, size_t __alignment, size_t __size) __INTRODUCED_IN(17);
 
-void* aligned_alloc(size_t __alignment, size_t __size) __INTRODUCED_IN(28);
+void* _Nullable aligned_alloc(size_t __alignment, size_t __size) __INTRODUCED_IN(28);
 
-double strtod(const char* __s, char** __end_ptr);
-long double strtold(const char* __s, char** __end_ptr) __RENAME_LDBL(strtod, 3, 21);
+double strtod(const char* _Nonnull __s, char* _Nullable * _Nullable __end_ptr);
+long double strtold(const char* _Nonnull __s, char* _Nullable * _Nullable __end_ptr) __RENAME_LDBL(strtod, 3, 21);
 
-unsigned long strtoul_l(const char* __s, char** __end_ptr, int __base, locale_t __l) __INTRODUCED_IN(26);
+unsigned long strtoul_l(const char* _Nonnull __s, char* _Nullable * _Nullable __end_ptr, int __base, locale_t _Nonnull __l) __INTRODUCED_IN(26);
 
-int atoi(const char* __s) __attribute_pure__;
-long atol(const char* __s) __attribute_pure__;
-long long atoll(const char* __s) __attribute_pure__;
+int atoi(const char* _Nonnull __s) __attribute_pure__;
+long atol(const char* _Nonnull __s) __attribute_pure__;
+long long atoll(const char* _Nonnull __s) __attribute_pure__;
 
-__wur char* realpath(const char* __path, char* __resolved);
-int system(const char* __command);
+__wur char* _Nullable realpath(const char* _Nonnull __path, char* _Nullable __resolved);
+int system(const char* _Nonnull __command);
 
-void* bsearch(const void* __key, const void* __base, size_t __nmemb, size_t __size, int (*__comparator)(const void* __lhs, const void* __rhs));
+void* _Nullable bsearch(const void* _Nonnull __key, const void* _Nullable __base, size_t __nmemb, size_t __size, int (* _Nonnull __comparator)(const void* _Nonnull __lhs, const void* _Nonnull __rhs));
 
-void qsort(void* __base, size_t __nmemb, size_t __size, int (*__comparator)(const void* __lhs, const void* __rhs));
+void qsort(void* _Nullable __base, size_t __nmemb, size_t __size, int (* _Nonnull __comparator)(const void* _Nonnull __lhs, const void* _Nonnull __rhs));
 
 uint32_t arc4random(void);
 uint32_t arc4random_uniform(uint32_t __upper_bound);
-void arc4random_buf(void* __buf, size_t __n);
+void arc4random_buf(void* _Nonnull __buf, size_t __n);
 
 #define RAND_MAX 0x7fffffff
 
-int rand_r(unsigned int* __seed_ptr) __INTRODUCED_IN(21);
+int rand_r(unsigned int* _Nonnull __seed_ptr) __INTRODUCED_IN(21);
 
 double drand48(void);
-double erand48(unsigned short __xsubi[3]);
-long jrand48(unsigned short __xsubi[3]);
-void lcong48(unsigned short __param[7]) __INTRODUCED_IN(23);
+double erand48(unsigned short __xsubi[_Nonnull 3]);
+long jrand48(unsigned short __xsubi[_Nonnull 3]);
+void lcong48(unsigned short __param[_Nonnull 7]) __INTRODUCED_IN(23);
 long lrand48(void);
 long mrand48(void);
-long nrand48(unsigned short __xsubi[3]);
-unsigned short* seed48(unsigned short __seed16v[3]);
+long nrand48(unsigned short __xsubi[_Nonnull 3]);
+unsigned short* _Nonnull seed48(unsigned short __seed16v[_Nonnull 3]);
 void srand48(long __seed);
 
-char* initstate(unsigned int __seed, char* __state, size_t __n) __INTRODUCED_IN(21);
-char* setstate(char* __state) __INTRODUCED_IN(21);
+char* _Nullable initstate(unsigned int __seed, char* _Nonnull __state, size_t __n) __INTRODUCED_IN(21);
+char* _Nullable setstate(char* _Nonnull __state) __INTRODUCED_IN(21);
 
 int getpt(void);
 int posix_openpt(int __flags) __INTRODUCED_IN(21);
-char* ptsname(int __fd);
-int ptsname_r(int __fd, char* __buf, size_t __n);
+char* _Nullable ptsname(int __fd);
+int ptsname_r(int __fd, char* _Nonnull __buf, size_t __n);
 int unlockpt(int __fd);
 
-int getsubopt(char** __option, char* const* __tokens, char** __value_ptr) __INTRODUCED_IN(26);
+int getsubopt(char* _Nonnull * _Nonnull __option, char* _Nonnull const* _Nonnull __tokens, char* _Nullable * _Nonnull __value_ptr) __INTRODUCED_IN(26);
 
 typedef struct {
   int quot;
@@ -154,18 +154,18 @@
  *
  * Returns the number of samples written to `__averages` (at most 3), and returns -1 on failure.
  */
-int getloadavg(double __averages[], int __n) __INTRODUCED_IN(29);
+int getloadavg(double __averages[_Nonnull], int __n) __INTRODUCED_IN(29);
 
 /* BSD compatibility. */
-const char* getprogname(void) __INTRODUCED_IN(21);
-void setprogname(const char* __name) __INTRODUCED_IN(21);
+const char* _Nullable getprogname(void) __INTRODUCED_IN(21);
+void setprogname(const char* _Nonnull __name) __INTRODUCED_IN(21);
 
-int mblen(const char* __s, size_t __n) __INTRODUCED_IN_NO_GUARD_FOR_NDK(26);
-size_t mbstowcs(wchar_t* __dst, const char* __src, size_t __n) __INTRODUCED_IN_NO_GUARD_FOR_NDK(21);
-int mbtowc(wchar_t* __wc_ptr, const char* __s, size_t __n) __INTRODUCED_IN_NO_GUARD_FOR_NDK(21);
-int wctomb(char* __dst, wchar_t __wc) __INTRODUCED_IN_NO_GUARD_FOR_NDK(21);
+int mblen(const char* _Nullable __s, size_t __n) __INTRODUCED_IN_NO_GUARD_FOR_NDK(26);
+size_t mbstowcs(wchar_t* _Nullable __dst, const char* _Nullable __src, size_t __n) __INTRODUCED_IN_NO_GUARD_FOR_NDK(21);
+int mbtowc(wchar_t* _Nullable __wc_ptr, const char*  _Nullable __s, size_t __n) __INTRODUCED_IN_NO_GUARD_FOR_NDK(21);
+int wctomb(char* _Nullable __dst, wchar_t __wc) __INTRODUCED_IN_NO_GUARD_FOR_NDK(21);
 
-size_t wcstombs(char* __dst, const wchar_t* __src, size_t __n) __INTRODUCED_IN_NO_GUARD_FOR_NDK(21);
+size_t wcstombs(char* _Nullable __dst, const wchar_t* _Nullable __src, size_t __n) __INTRODUCED_IN_NO_GUARD_FOR_NDK(21);
 
 #if __ANDROID_API__ >= 21
 size_t __ctype_get_mb_cur_max(void) __INTRODUCED_IN(21);
@@ -192,25 +192,25 @@
 #endif
 
 #if __ANDROID_API__ >= 21
-float strtof(const char* __s, char** __end_ptr) __INTRODUCED_IN(21);
-double atof(const char* __s) __attribute_pure__ __INTRODUCED_IN(21);
+float strtof(const char* _Nonnull __s, char* _Nullable * _Nullable __end_ptr) __INTRODUCED_IN(21);
+double atof(const char* _Nonnull __s) __attribute_pure__ __INTRODUCED_IN(21);
 int rand(void) __INTRODUCED_IN(21);
 void srand(unsigned int __seed) __INTRODUCED_IN(21);
 long random(void) __INTRODUCED_IN(21);
 void srandom(unsigned int __seed) __INTRODUCED_IN(21);
 int grantpt(int __fd) __INTRODUCED_IN(21);
 
-long long strtoll_l(const char* __s, char** __end_ptr, int __base, locale_t __l) __INTRODUCED_IN(21);
-unsigned long long strtoull_l(const char* __s, char** __end_ptr, int __base, locale_t __l) __INTRODUCED_IN(21);
-long double strtold_l(const char* __s, char** __end_ptr, locale_t __l) __INTRODUCED_IN(21);
+long long strtoll_l(const char* _Nonnull __s, char* _Nullable * _Nullable __end_ptr, int __base, locale_t _Nonnull __l) __INTRODUCED_IN(21);
+unsigned long long strtoull_l(const char* _Nonnull __s, char* _Nullable * _Nullable __end_ptr, int __base, locale_t _Nonnull __l) __INTRODUCED_IN(21);
+long double strtold_l(const char* _Nonnull __s, char* _Nullable * _Nullable __end_ptr, locale_t _Nonnull __l) __INTRODUCED_IN(21);
 #else
 // Implemented as static inlines before 21.
 #endif
 
 #if __ANDROID_API__ >= 26
-double strtod_l(const char* __s, char** __end_ptr, locale_t __l) __INTRODUCED_IN(26);
-float strtof_l(const char* __s, char** __end_ptr, locale_t __l) __INTRODUCED_IN(26);
-long strtol_l(const char* __s, char** __end_ptr, int, locale_t __l) __INTRODUCED_IN(26);
+double strtod_l(const char* _Nonnull __s, char* _Nullable * _Nullable __end_ptr, locale_t _Nonnull __l) __INTRODUCED_IN(26);
+float strtof_l(const char* _Nonnull __s, char* _Nullable * _Nullable __end_ptr, locale_t _Nonnull __l) __INTRODUCED_IN(26);
+long strtol_l(const char* _Nonnull __s, char* _Nullable * _Nullable __end_ptr, int, locale_t _Nonnull __l) __INTRODUCED_IN(26);
 #else
 // Implemented as static inlines before 26.
 #endif
diff --git a/mainline/runtime/sdk/android/arm64/include/bionic/libc/include/string.h b/mainline/runtime/sdk/android/arm64/include/bionic/libc/include/string.h
index 0cc5611..59c4687 100644
--- a/mainline/runtime/sdk/android/arm64/include/bionic/libc/include/string.h
+++ b/mainline/runtime/sdk/android/arm64/include/bionic/libc/include/string.h
@@ -55,7 +55,24 @@
 void* mempcpy(void* __dst, const void* __src, size_t __n) __INTRODUCED_IN(23);
 #endif
 void* memmove(void* __dst, const void* __src, size_t __n);
+
+/**
+ * [memset(3)](http://man7.org/linux/man-pages/man3/memset.3.html) writes the
+ * bottom 8 bits of the given int to the next `n` bytes of `dst`.
+ *
+ * Returns `dst`.
+ */
 void* memset(void* __dst, int __ch, size_t __n);
+
+/**
+ * [memset_explicit(3)](http://man7.org/linux/man-pages/man3/memset_explicit.3.html)
+ * writes the bottom 8 bits of the given int to the next `n` bytes of `dst`,
+ * but won't be optimized out by the compiler.
+ *
+ * Returns `dst`.
+ */
+void* memset_explicit(void* __dst, int __ch, size_t __n) __INTRODUCED_IN(34);
+
 void* memmem(const void* __haystack, size_t __haystack_size, const void* __needle, size_t __needle_size) __attribute_pure__;
 
 char* strchr(const char* __s, int __ch) __attribute_pure__;
diff --git a/mainline/runtime/sdk/android/arm64/include/bionic/libc/include/sys/mman.h b/mainline/runtime/sdk/android/arm64/include/bionic/libc/include/sys/mman.h
index 6ef0c12..fea9332 100644
--- a/mainline/runtime/sdk/android/arm64/include/bionic/libc/include/sys/mman.h
+++ b/mainline/runtime/sdk/android/arm64/include/bionic/libc/include/sys/mman.h
@@ -110,6 +110,8 @@
  * [mlockall(2)](http://man7.org/linux/man-pages/man2/mlockall.2.html)
  * locks pages (preventing swapping).
  *
+ * Available since API level 17.
+ *
  * Returns 0 on success, and returns -1 and sets `errno` on failure.
  */
 int mlockall(int __flags) __INTRODUCED_IN(17);
@@ -118,6 +120,8 @@
  * [munlockall(2)](http://man7.org/linux/man-pages/man2/munlockall.2.html)
  * unlocks pages (allowing swapping).
  *
+ * Available since API level 17.
+ *
  * Returns 0 on success, and returns -1 and sets `errno` on failure.
  */
 int munlockall(void) __INTRODUCED_IN(17);
@@ -134,6 +138,8 @@
  * [mlock2(2)](http://man7.org/linux/man-pages/man2/mlock.2.html)
  * locks pages (preventing swapping), with optional flags.
  *
+ * Available since API level 30.
+ *
  * Returns 0 on success, and returns -1 and sets `errno` on failure.
  */
 int mlock2(const void* __addr, size_t __size, int __flags) __INTRODUCED_IN(30);
@@ -167,9 +173,14 @@
  * works just like madvise(2) but applies to the process specified by the given
  * PID file descriptor.
  *
+ * Available since API level 31. Its sibling process_mrelease() does not have a
+ * libc wrapper and should be called using syscall() instead. Given the lack of
+ * widespread applicability of this system call and the absence of wrappers in
+ * other libcs, it was probably a mistake to have added this wrapper to bionic.
+ *
  * Returns the number of bytes advised on success, and returns -1 and sets `errno` on failure.
  */
-ssize_t process_madvise(int __pid_fd, const struct iovec* __iov, size_t __count, int __advice, unsigned __flags);
+ssize_t process_madvise(int __pid_fd, const struct iovec* __iov, size_t __count, int __advice, unsigned __flags) __INTRODUCED_IN(31);
 
 #if defined(__USE_GNU)
 
@@ -177,6 +188,8 @@
  * [memfd_create(2)](http://man7.org/linux/man-pages/man2/memfd_create.2.html)
  * creates an anonymous file.
  *
+ * Available since API level 30.
+ *
  * Returns an fd on success, and returns -1 and sets `errno` on failure.
  */
 int memfd_create(const char* __name, unsigned __flags) __INTRODUCED_IN(30);
@@ -211,9 +224,10 @@
  * [posix_madvise(3)](http://man7.org/linux/man-pages/man3/posix_madvise.3.html)
  * gives the kernel advice about future usage patterns.
  *
- * Returns 0 on success, and returns a positive error number on failure.
+ * Available since API level 23.
+ * See also madvise() which is available at all API levels.
  *
- * See also madvise() which has been available much longer.
+ * Returns 0 on success, and returns a positive error number on failure.
  */
 int posix_madvise(void* __addr, size_t __size, int __advice) __INTRODUCED_IN(23);
 
diff --git a/mainline/runtime/sdk/android/arm64/include/bionic/libc/include/sys/resource.h b/mainline/runtime/sdk/android/arm64/include/bionic/libc/include/sys/resource.h
index 9181125..ccb267d 100644
--- a/mainline/runtime/sdk/android/arm64/include/bionic/libc/include/sys/resource.h
+++ b/mainline/runtime/sdk/android/arm64/include/bionic/libc/include/sys/resource.h
@@ -41,6 +41,7 @@
 #define RLIM_SAVED_MAX RLIM_INFINITY
 
 typedef unsigned long rlim_t;
+typedef unsigned long long rlim64_t;
 
 int getrlimit(int __resource, struct rlimit* __limit);
 int setrlimit(int __resource, const struct rlimit* __limit);
diff --git a/mainline/runtime/sdk/android/arm64/include/bionic/libc/include/sys/stat.h b/mainline/runtime/sdk/android/arm64/include/bionic/libc/include/sys/stat.h
index 4184f6c..623631e 100644
--- a/mainline/runtime/sdk/android/arm64/include/bionic/libc/include/sys/stat.h
+++ b/mainline/runtime/sdk/android/arm64/include/bionic/libc/include/sys/stat.h
@@ -40,7 +40,7 @@
 
 __BEGIN_DECLS
 
-#if defined(__aarch64__)
+#if defined(__aarch64__) || defined(__riscv)
 #define __STAT64_BODY \
   dev_t st_dev; \
   ino_t st_ino; \
diff --git a/mainline/runtime/sdk/android/arm64/include/bionic/libc/include/sys/ucontext.h b/mainline/runtime/sdk/android/arm64/include/bionic/libc/include/sys/ucontext.h
index 9c5801f..8e5873d 100644
--- a/mainline/runtime/sdk/android/arm64/include/bionic/libc/include/sys/ucontext.h
+++ b/mainline/runtime/sdk/android/arm64/include/bionic/libc/include/sys/ucontext.h
@@ -26,8 +26,7 @@
  * SUCH DAMAGE.
  */
 
-#ifndef _SYS_UCONTEXT_H_
-#define _SYS_UCONTEXT_H_
+#pragma once
 
 #include <sys/cdefs.h>
 
@@ -313,8 +312,69 @@
   struct _libc_fpstate __fpregs_mem;
 } ucontext_t;
 
+#elif defined(__riscv)
+
+#define NGREG 32
+
+#define REG_PC 0
+#define REG_RA 1
+#define REG_SP 2
+#define REG_TP 4
+#define REG_S0 8
+#define REG_A0 10
+
+typedef unsigned long __riscv_mc_gp_state[NGREG];
+
+typedef unsigned long greg_t;
+typedef unsigned long gregset_t[NGREG];
+typedef union __riscv_mc_fp_state fpregset_t;
+
+/* These match the kernel <asm/ptrace.h> types but with different names. */
+
+struct __riscv_mc_f_ext_state {
+  uint32_t __f[32];
+  uint32_t __fcsr;
+};
+
+struct __riscv_mc_d_ext_state {
+  uint64_t __f[32];
+  uint32_t __fcsr;
+};
+
+struct __riscv_mc_q_ext_state {
+  uint64_t __f[64] __attribute__((__aligned__(16)));
+  uint32_t __fcsr;
+  uint32_t __reserved[3];
+};
+
+union __riscv_mc_fp_state {
+  struct __riscv_mc_f_ext_state __f;
+  struct __riscv_mc_d_ext_state __d;
+  struct __riscv_mc_q_ext_state __q;
+};
+
+/* This matches the kernel <asm/sigcontext.h> but with different names. */
+
+typedef struct mcontext_t {
+  __riscv_mc_gp_state __gregs;
+  union __riscv_mc_fp_state __fpregs;
+} mcontext_t;
+
+/* This matches the kernel <asm/ucontext.h> but using mcontext_t. */
+
+typedef struct ucontext_t {
+  unsigned long uc_flags;
+  struct ucontext_t* uc_link;
+  stack_t uc_stack;
+  union {
+    sigset_t uc_sigmask;
+    sigset64_t uc_sigmask64;
+  };
+  /* The kernel adds extra padding here to allow sigset_t to grow. */
+  char __padding[128 - sizeof(sigset_t)];
+  mcontext_t uc_mcontext;
+} ucontext_t;
+
 #endif
 
 __END_DECLS
-
-#endif /* _SYS_UCONTEXT_H_ */
diff --git a/mainline/runtime/sdk/android/arm64/include/bionic/libc/include/sys/user.h b/mainline/runtime/sdk/android/arm64/include/bionic/libc/include/sys/user.h
index 2392edd..432c7cb 100644
--- a/mainline/runtime/sdk/android/arm64/include/bionic/libc/include/sys/user.h
+++ b/mainline/runtime/sdk/android/arm64/include/bionic/libc/include/sys/user.h
@@ -26,8 +26,7 @@
  * SUCH DAMAGE.
  */
 
-#ifndef _SYS_USER_H_
-#define _SYS_USER_H_
+#pragma once
 
 #include <sys/cdefs.h>
 #include <stddef.h> /* For size_t. */
@@ -233,6 +232,11 @@
   uint32_t fpcr;
 };
 
+#elif defined(__riscv)
+
+// This space deliberately left blank for now.
+// No other libcs have any riscv64-specific structs.
+
 #else
 
 #error "Unsupported architecture."
@@ -240,5 +244,3 @@
 #endif
 
 __END_DECLS
-
-#endif  /* _SYS_USER_H_ */
diff --git a/mainline/runtime/sdk/android/arm64/include/bionic/libc/include/syslog.h b/mainline/runtime/sdk/android/arm64/include/bionic/libc/include/syslog.h
index 45de253..d89d769 100644
--- a/mainline/runtime/sdk/android/arm64/include/bionic/libc/include/syslog.h
+++ b/mainline/runtime/sdk/android/arm64/include/bionic/libc/include/syslog.h
@@ -133,9 +133,10 @@
 
 /**
  * [openlog(3)](http://man7.org/linux/man-pages/man3/openlog.3.html) sets
- * the log tag to `__prefix`. On Android, the other two arguments are ignored.
+ * the log tag to `__prefix`, which can be NULL to return to the default of
+ * getprogname(). On Android, the other two arguments are ignored.
  */
-void openlog(const char* __prefix, int __option, int __facility);
+void openlog(const char* _Nullable __prefix, int __option, int __facility);
 
 /**
  * [setlogmask(3)](http://man7.org/linux/man-pages/man3/setlogmask.3.html)
@@ -149,13 +150,13 @@
  * the printf()-like message and logs it with the given priority, unless
  * suppressed by setlogmask(). On Android, the output goes to logcat.
  */
-void syslog(int __priority, const char* __fmt, ...) __printflike(2, 3);
+void syslog(int __priority, const char* _Nonnull __fmt, ...) __printflike(2, 3);
 
 /**
  * [vsyslog(3)](http://man7.org/linux/man-pages/man3/vsyslog.3.html) formats
  * the vprintf()-like message and logs it with the given priority, unless
  * suppressed by setlogmask(). On Android, the output goes to logcat.
  */
-void vsyslog(int __priority, const char* __fmt, va_list __args) __printflike(2, 0);
+void vsyslog(int __priority, const char* _Nonnull __fmt, va_list __args) __printflike(2, 0);
 
 __END_DECLS
diff --git a/mainline/runtime/sdk/android/arm64/include/bionic/libc/include/time.h b/mainline/runtime/sdk/android/arm64/include/bionic/libc/include/time.h
index 0db14ff..4b005c6 100644
--- a/mainline/runtime/sdk/android/arm64/include/bionic/libc/include/time.h
+++ b/mainline/runtime/sdk/android/arm64/include/bionic/libc/include/time.h
@@ -37,7 +37,7 @@
 
 #define CLOCKS_PER_SEC 1000000
 
-extern char* tzname[];
+extern char* _Nonnull tzname[];
 extern int daylight;
 extern long int timezone;
 
@@ -54,62 +54,64 @@
   int tm_yday;
   int tm_isdst;
   long int tm_gmtoff;
-  const char* tm_zone;
+  const char* _Nullable tm_zone;
 };
 
 #define TM_ZONE tm_zone
 
-time_t time(time_t* __t);
-int nanosleep(const struct timespec* __request, struct timespec* __remainder);
+time_t time(time_t* _Nullable __t);
+int nanosleep(const struct timespec* _Nonnull __request, struct timespec* _Nullable __remainder);
 
-char* asctime(const struct tm* __tm);
-char* asctime_r(const struct tm* __tm, char* __buf);
+char* _Nullable asctime(const struct tm* _Nonnull __tm);
+char* _Nullable asctime_r(const struct tm* _Nonnull __tm, char* _Nonnull __buf);
 
 double difftime(time_t __lhs, time_t __rhs);
-time_t mktime(struct tm* __tm);
+time_t mktime(struct tm* _Nonnull __tm);
 
-struct tm* localtime(const time_t* __t);
-struct tm* localtime_r(const time_t* __t, struct tm* __tm);
+struct tm* _Nullable localtime(const time_t* _Nonnull __t);
+struct tm* _Nullable localtime_r(const time_t* _Nonnull __t, struct tm* _Nonnull __tm);
 
-struct tm* gmtime(const time_t* __t);
-struct tm* gmtime_r(const time_t* __t, struct tm* __tm);
+struct tm* _Nullable gmtime(const time_t* _Nonnull __t);
+struct tm* _Nullable gmtime_r(const time_t* _Nonnull __t, struct tm* _Nonnull __tm);
 
-char* strptime(const char* __s, const char* __fmt, struct tm* __tm) __strftimelike(2);
-char* strptime_l(const char* __s, const char* __fmt, struct tm* __tm, locale_t __l) __strftimelike(2) __INTRODUCED_IN(28);
+char* _Nullable strptime(const char* _Nonnull __s, const char* _Nonnull __fmt, struct tm* _Nonnull __tm) __strftimelike(2);
+char* _Nullable strptime_l(const char* _Nonnull __s, const char* _Nonnull __fmt, struct tm* _Nonnull __tm, locale_t _Nonnull __l) __strftimelike(2) __INTRODUCED_IN(28);
 
-size_t strftime(char* __buf, size_t __n, const char* __fmt, const struct tm* __tm) __strftimelike(3);
+size_t strftime(char* _Nonnull __buf, size_t __n, const char* _Nonnull __fmt, const struct tm* _Nullable __tm) __strftimelike(3);
 #if __ANDROID_API__ >= 21
-size_t strftime_l(char* __buf, size_t __n, const char* __fmt, const struct tm* __tm, locale_t __l) __strftimelike(3) __INTRODUCED_IN(21);
+size_t strftime_l(char* _Nonnull __buf, size_t __n, const char* _Nonnull __fmt, const struct tm* _Nullable __tm, locale_t _Nonnull __l) __strftimelike(3) __INTRODUCED_IN(21);
 #else
 // Implemented as static inline before 21.
 #endif
 
-char* ctime(const time_t* __t);
-char* ctime_r(const time_t* __t, char* __buf);
+
+char* _Nullable ctime(const time_t* _Nonnull __t);
+char* _Nullable ctime_r(const time_t* _Nonnull __t, char* _Nonnull __buf);
 
 void tzset(void);
 
 clock_t clock(void);
 
-int clock_getcpuclockid(pid_t __pid, clockid_t* __clock) __INTRODUCED_IN(23);
+int clock_getcpuclockid(pid_t __pid, clockid_t* _Nonnull __clock) __INTRODUCED_IN(23);
 
-int clock_getres(clockid_t __clock, struct timespec* __resolution);
-int clock_gettime(clockid_t __clock, struct timespec* __ts);
-int clock_nanosleep(clockid_t __clock, int __flags, const struct timespec* __request, struct timespec* __remainder);
-int clock_settime(clockid_t __clock, const struct timespec* __ts);
 
-int timer_create(clockid_t __clock, struct sigevent* __event, timer_t* __timer_ptr);
-int timer_delete(timer_t __timer);
-int timer_settime(timer_t __timer, int __flags, const struct itimerspec* __new_value, struct itimerspec* __old_value);
-int timer_gettime(timer_t __timer, struct itimerspec* __ts);
-int timer_getoverrun(timer_t __timer);
+int clock_getres(clockid_t __clock, struct timespec* _Nullable __resolution);
+int clock_gettime(clockid_t __clock, struct timespec* _Nonnull __ts);
+int clock_nanosleep(clockid_t __clock, int __flags, const struct timespec* _Nonnull __request, struct timespec* _Nullable __remainder);
+int clock_settime(clockid_t __clock, const struct timespec* _Nonnull __ts);
+
+int timer_create(clockid_t __clock, struct sigevent* _Nullable __event, timer_t _Nonnull * _Nonnull __timer_ptr);
+int timer_delete(timer_t _Nonnull __timer);
+int timer_settime(timer_t _Nonnull __timer, int __flags, const struct itimerspec* _Nonnull __new_value, struct itimerspec* _Nullable __old_value);
+int timer_gettime(timer_t _Nonnull _timer, struct itimerspec* _Nonnull __ts);
+int timer_getoverrun(timer_t _Nonnull __timer);
 
 /* Non-standard extensions that are in the BSDs and glibc. */
-time_t timelocal(struct tm* __tm);
-time_t timegm(struct tm* __tm);
+time_t timelocal(struct tm* _Nonnull __tm);
+time_t timegm(struct tm* _Nonnull __tm);
 
 #define TIME_UTC 1
-int timespec_get(struct timespec* __ts, int __base) __INTRODUCED_IN(29);
+int timespec_get(struct timespec* _Nonnull __ts, int __base) __INTRODUCED_IN(29);
 
 __END_DECLS
 
diff --git a/mainline/runtime/sdk/android/arm64/include/bionic/libc/include/time64.h b/mainline/runtime/sdk/android/arm64/include/bionic/libc/include/time64.h
index 905669d..7d70030 100644
--- a/mainline/runtime/sdk/android/arm64/include/bionic/libc/include/time64.h
+++ b/mainline/runtime/sdk/android/arm64/include/bionic/libc/include/time64.h
@@ -47,17 +47,17 @@
 
 typedef int64_t time64_t;
 
-char* asctime64(const struct tm*);
-char* asctime64_r(const struct tm*, char*);
-char* ctime64(const time64_t*);
-char* ctime64_r(const time64_t*, char*);
-struct tm* gmtime64(const time64_t*);
-struct tm* gmtime64_r(const time64_t*, struct tm*);
-struct tm* localtime64(const time64_t*);
-struct tm* localtime64_r(const time64_t*, struct tm*);
-time64_t mktime64(const struct tm*);
-time64_t timegm64(const struct tm*);
-time64_t timelocal64(const struct tm*);
+char* _Nullable asctime64(const struct tm* _Nonnull);
+char* _Nullable asctime64_r(const struct tm* _Nonnull, char* _Nonnull);
+char* _Nullable ctime64(const time64_t* _Nonnull);
+char* _Nullable ctime64_r(const time64_t* _Nonnull, char* _Nonnull);
+struct tm* _Nullable gmtime64(const time64_t* _Nonnull);
+struct tm* _Nullable gmtime64_r(const time64_t* _Nonnull, struct tm* _Nonnull);
+struct tm* _Nullable localtime64(const time64_t* _Nonnull);
+struct tm* _Nullable localtime64_r(const time64_t* _Nonnull, struct tm* _Nonnull);
+time64_t mktime64(const struct tm* _Nonnull);
+time64_t timegm64(const struct tm* _Nonnull);
+time64_t timelocal64(const struct tm* _Nonnull);
 
 __END_DECLS
 
diff --git a/mainline/runtime/sdk/android/arm64/include/bionic/libc/include/unistd.h b/mainline/runtime/sdk/android/arm64/include/bionic/libc/include/unistd.h
index e360421..3efc9a2 100644
--- a/mainline/runtime/sdk/android/arm64/include/bionic/libc/include/unistd.h
+++ b/mainline/runtime/sdk/android/arm64/include/bionic/libc/include/unistd.h
@@ -313,10 +313,37 @@
 int getdomainname(char* __buf, size_t __buf_size) __INTRODUCED_IN(26);
 int setdomainname(const char* __name, size_t __n) __INTRODUCED_IN(26);
 
+/**
+ * [copy_file_range(2)](https://man7.org/linux/man-pages/man2/copy_file_range.2.html) copies
+ * a range of data from one file descriptor to another.
+ *
+ * Available since API level 34.
+ *
+ * Returns the number of bytes copied on success, and returns -1 and sets
+ * `errno` on failure.
+ */
+ssize_t copy_file_range(int __fd_in, off64_t* __off_in, int __fd_out, off64_t* __off_out, size_t __length, unsigned int __flags) __INTRODUCED_IN(34);
+
 #if __ANDROID_API__ >= 28
 void swab(const void* __src, void* __dst, ssize_t __byte_count) __INTRODUCED_IN(28);
 #endif
 
+/**
+ * [close_range(2)](https://man7.org/linux/man-pages/man2/close_range.2.html)
+ * performs an action (which depends on value of flags) on an inclusive range
+ * of file descriptors.
+ *
+ * Available since API level 34.
+ *
+ * Note: there is no emulation on too old kernels, hence this will fail with
+ * -1/ENOSYS on pre-5.9 kernels, -1/EINVAL for unsupported flags.  In particular
+ * CLOSE_RANGE_CLOEXEC requires 5.11, though support was backported to Android
+ * Common Kernel 5.10-T.
+ *
+ * Returns 0 on success, and returns -1 and sets `errno` on failure.
+ */
+int close_range(unsigned int __min_fd, unsigned int __max_fd, int __flags) __INTRODUCED_IN(34);
+
 #if defined(__BIONIC_INCLUDE_FORTIFY_HEADERS)
 #define _UNISTD_H_
 #include <bits/fortify/unistd.h>
diff --git a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/android/scsi/scsi/scsi_proto.h b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/android/scsi/scsi/scsi_proto.h
index eea87a0..13ac4c8 100644
--- a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/android/scsi/scsi/scsi_proto.h
+++ b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/android/scsi/scsi/scsi_proto.h
@@ -183,6 +183,8 @@
   ZBC_ZONE_TYPE_CONV = 0x1,
   ZBC_ZONE_TYPE_SEQWRITE_REQ = 0x2,
   ZBC_ZONE_TYPE_SEQWRITE_PREF = 0x3,
+  ZBC_ZONE_TYPE_SEQ_OR_BEFORE_REQ = 0x4,
+  ZBC_ZONE_TYPE_GAP = 0x5,
 };
 enum zbc_zone_cond {
   ZBC_ZONE_COND_NO_WP = 0x0,
@@ -194,6 +196,10 @@
   ZBC_ZONE_COND_FULL = 0xe,
   ZBC_ZONE_COND_OFFLINE = 0xf,
 };
+enum zbc_zone_alignment_method {
+  ZBC_CONSTANT_ZONE_LENGTH = 0x1,
+  ZBC_CONSTANT_ZONE_START_OFFSET = 0x8,
+};
 enum scsi_version_descriptor {
   SCSI_VERSION_DESCRIPTOR_FCP4 = 0x0a40,
   SCSI_VERSION_DESCRIPTOR_ISCSI = 0x0960,
diff --git a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/asm-arm/asm/signal.h b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/asm-arm/asm/signal.h
index 5f7e0c5..0424380 100644
--- a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/asm-arm/asm/signal.h
+++ b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/asm-arm/asm/signal.h
@@ -78,6 +78,6 @@
 typedef struct sigaltstack {
   void __user * ss_sp;
   int ss_flags;
-  size_t ss_size;
+  __kernel_size_t ss_size;
 } stack_t;
 #endif
diff --git a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/asm-arm64/asm/hwcap.h b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/asm-arm64/asm/hwcap.h
index 4316724..af32056 100644
--- a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/asm-arm64/asm/hwcap.h
+++ b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/asm-arm64/asm/hwcap.h
@@ -72,4 +72,16 @@
 #define HWCAP2_ECV (1 << 19)
 #define HWCAP2_AFP (1 << 20)
 #define HWCAP2_RPRES (1 << 21)
+#define HWCAP2_MTE3 (1 << 22)
+#define HWCAP2_SME (1 << 23)
+#define HWCAP2_SME_I16I64 (1 << 24)
+#define HWCAP2_SME_F64F64 (1 << 25)
+#define HWCAP2_SME_I8I32 (1 << 26)
+#define HWCAP2_SME_F16F32 (1 << 27)
+#define HWCAP2_SME_B16F32 (1 << 28)
+#define HWCAP2_SME_F32F32 (1 << 29)
+#define HWCAP2_SME_FA64 (1 << 30)
+#define HWCAP2_WFXT (1UL << 31)
+#define HWCAP2_EBF16 (1UL << 32)
+#define HWCAP2_SVE_EBF16 (1UL << 33)
 #endif
diff --git a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/asm-arm64/asm/kvm.h b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/asm-arm64/asm/kvm.h
index c53ee87..4f9b347 100644
--- a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/asm-arm64/asm/kvm.h
+++ b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/asm-arm64/asm/kvm.h
@@ -51,9 +51,9 @@
 #define KVM_ARM_TARGET_GENERIC_V8 5
 #define KVM_ARM_NUM_TARGETS 6
 #define KVM_ARM_DEVICE_TYPE_SHIFT 0
-#define KVM_ARM_DEVICE_TYPE_MASK (0xffff << KVM_ARM_DEVICE_TYPE_SHIFT)
+#define KVM_ARM_DEVICE_TYPE_MASK GENMASK(KVM_ARM_DEVICE_TYPE_SHIFT + 15, KVM_ARM_DEVICE_TYPE_SHIFT)
 #define KVM_ARM_DEVICE_ID_SHIFT 16
-#define KVM_ARM_DEVICE_ID_MASK (0xffff << KVM_ARM_DEVICE_ID_SHIFT)
+#define KVM_ARM_DEVICE_ID_MASK GENMASK(KVM_ARM_DEVICE_ID_SHIFT + 15, KVM_ARM_DEVICE_ID_SHIFT)
 #define KVM_ARM_DEVICE_VGIC_V2 0
 #define KVM_VGIC_V2_ADDR_TYPE_DIST 0
 #define KVM_VGIC_V2_ADDR_TYPE_CPU 1
@@ -88,8 +88,10 @@
   __u64 dbg_wcr[KVM_ARM_MAX_DBG_REGS];
   __u64 dbg_wvr[KVM_ARM_MAX_DBG_REGS];
 };
+#define KVM_DEBUG_ARCH_HSR_HIGH_VALID (1 << 0)
 struct kvm_debug_exit_arch {
   __u32 hsr;
+  __u32 hsr_high;
   __u64 far;
 };
 #define KVM_GUESTDBG_USE_SW_BP (1 << 16)
@@ -185,6 +187,21 @@
 #define KVM_ARM64_SVE_VQ_MAX __SVE_VQ_MAX
 #define KVM_REG_ARM64_SVE_VLS (KVM_REG_ARM64 | KVM_REG_ARM64_SVE | KVM_REG_SIZE_U512 | 0xffff)
 #define KVM_ARM64_SVE_VLS_WORDS ((KVM_ARM64_SVE_VQ_MAX - KVM_ARM64_SVE_VQ_MIN) / 64 + 1)
+#define KVM_REG_ARM_FW_FEAT_BMAP (0x0016 << KVM_REG_ARM_COPROC_SHIFT)
+#define KVM_REG_ARM_FW_FEAT_BMAP_REG(r) (KVM_REG_ARM64 | KVM_REG_SIZE_U64 | KVM_REG_ARM_FW_FEAT_BMAP | ((r) & 0xffff))
+#define KVM_REG_ARM_STD_BMAP KVM_REG_ARM_FW_FEAT_BMAP_REG(0)
+enum {
+  KVM_REG_ARM_STD_BIT_TRNG_V1_0 = 0,
+};
+#define KVM_REG_ARM_STD_HYP_BMAP KVM_REG_ARM_FW_FEAT_BMAP_REG(1)
+enum {
+  KVM_REG_ARM_STD_HYP_BIT_PV_TIME = 0,
+};
+#define KVM_REG_ARM_VENDOR_HYP_BMAP KVM_REG_ARM_FW_FEAT_BMAP_REG(2)
+enum {
+  KVM_REG_ARM_VENDOR_HYP_BIT_FUNC_FEAT = 0,
+  KVM_REG_ARM_VENDOR_HYP_BIT_PTP = 1,
+};
 #define KVM_DEV_ARM_VGIC_GRP_ADDR 0
 #define KVM_DEV_ARM_VGIC_GRP_DIST_REGS 1
 #define KVM_DEV_ARM_VGIC_GRP_CPU_REGS 2
@@ -214,6 +231,7 @@
 #define KVM_ARM_VCPU_PMU_V3_IRQ 0
 #define KVM_ARM_VCPU_PMU_V3_INIT 1
 #define KVM_ARM_VCPU_PMU_V3_FILTER 2
+#define KVM_ARM_VCPU_PMU_V3_SET_PMU 3
 #define KVM_ARM_VCPU_TIMER_CTRL 1
 #define KVM_ARM_VCPU_TIMER_IRQ_VTIMER 0
 #define KVM_ARM_VCPU_TIMER_IRQ_PTIMER 1
@@ -244,5 +262,7 @@
 #define KVM_PSCI_RET_NI PSCI_RET_NOT_SUPPORTED
 #define KVM_PSCI_RET_INVAL PSCI_RET_INVALID_PARAMS
 #define KVM_PSCI_RET_DENIED PSCI_RET_DENIED
+#define KVM_SYSTEM_EVENT_RESET_FLAG_PSCI_RESET2 (1ULL << 0)
+#define KVM_EXIT_FAIL_ENTRY_CPU_UNSUPPORTED (1ULL << 0)
 #endif
 #endif
diff --git a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/asm-arm64/asm/perf_regs.h b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/asm-arm64/asm/perf_regs.h
index 71d496f..e18fd05 100644
--- a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/asm-arm64/asm/perf_regs.h
+++ b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/asm-arm64/asm/perf_regs.h
@@ -53,5 +53,8 @@
   PERF_REG_ARM64_SP,
   PERF_REG_ARM64_PC,
   PERF_REG_ARM64_MAX,
+  PERF_REG_ARM64_VG = 46,
+  PERF_REG_ARM64_EXTENDED_MAX
 };
+#define PERF_REG_EXTENDED_MASK (1ULL << PERF_REG_ARM64_VG)
 #endif
diff --git a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/asm-arm64/asm/ptrace.h b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/asm-arm64/asm/ptrace.h
index 480efcf..9540c3e 100644
--- a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/asm-arm64/asm/ptrace.h
+++ b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/asm-arm64/asm/ptrace.h
@@ -111,7 +111,7 @@
 #define SVE_PT_SVE_FPSR_OFFSET(vq) ((SVE_PT_SVE_FFR_OFFSET(vq) + SVE_PT_SVE_FFR_SIZE(vq) + (__SVE_VQ_BYTES - 1)) / __SVE_VQ_BYTES * __SVE_VQ_BYTES)
 #define SVE_PT_SVE_FPCR_OFFSET(vq) (SVE_PT_SVE_FPSR_OFFSET(vq) + SVE_PT_SVE_FPSR_SIZE)
 #define SVE_PT_SVE_SIZE(vq,flags) ((SVE_PT_SVE_FPCR_OFFSET(vq) + SVE_PT_SVE_FPCR_SIZE - SVE_PT_SVE_OFFSET + (__SVE_VQ_BYTES - 1)) / __SVE_VQ_BYTES * __SVE_VQ_BYTES)
-#define SVE_PT_SIZE(vq,flags) (((flags) & SVE_PT_REGS_MASK) == SVE_PT_REGS_SVE ? SVE_PT_SVE_OFFSET + SVE_PT_SVE_SIZE(vq, flags) : SVE_PT_FPSIMD_OFFSET + SVE_PT_FPSIMD_SIZE(vq, flags))
+#define SVE_PT_SIZE(vq,flags) (((flags) & SVE_PT_REGS_MASK) == SVE_PT_REGS_SVE ? SVE_PT_SVE_OFFSET + SVE_PT_SVE_SIZE(vq, flags) : ((((flags) & SVE_PT_REGS_MASK) == SVE_PT_REGS_FPSIMD ? SVE_PT_FPSIMD_OFFSET + SVE_PT_FPSIMD_SIZE(vq, flags) : SVE_PT_REGS_OFFSET)))
 struct user_pac_mask {
   __u64 data_mask;
   __u64 insn_mask;
@@ -125,5 +125,19 @@
 struct user_pac_generic_keys {
   __uint128_t apgakey;
 };
+struct user_za_header {
+  __u32 size;
+  __u32 max_size;
+  __u16 vl;
+  __u16 max_vl;
+  __u16 flags;
+  __u16 __reserved;
+};
+#define ZA_PT_VL_INHERIT ((1 << 17) >> 16)
+#define ZA_PT_VL_ONEXEC ((1 << 18) >> 16)
+#define ZA_PT_ZA_OFFSET ((sizeof(struct user_za_header) + (__SVE_VQ_BYTES - 1)) / __SVE_VQ_BYTES * __SVE_VQ_BYTES)
+#define ZA_PT_ZAV_OFFSET(vq,n) (ZA_PT_ZA_OFFSET + ((vq * __SVE_VQ_BYTES) * n))
+#define ZA_PT_ZA_SIZE(vq) ((vq * __SVE_VQ_BYTES) * (vq * __SVE_VQ_BYTES))
+#define ZA_PT_SIZE(vq) (ZA_PT_ZA_OFFSET + ZA_PT_ZA_SIZE(vq))
 #endif
 #endif
diff --git a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/asm-arm64/asm/sigcontext.h b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/asm-arm64/asm/sigcontext.h
index 518079d..04aa593 100644
--- a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/asm-arm64/asm/sigcontext.h
+++ b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/asm-arm64/asm/sigcontext.h
@@ -55,6 +55,14 @@
 struct sve_context {
   struct _aarch64_ctx head;
   __u16 vl;
+  __u16 flags;
+  __u16 __reserved[2];
+};
+#define SVE_SIG_FLAG_SM 0x1
+#define ZA_MAGIC 0x54366345
+struct za_context {
+  struct _aarch64_ctx head;
+  __u16 vl;
   __u16 __reserved[3];
 };
 #endif
@@ -82,4 +90,8 @@
 #define SVE_SIG_FFR_OFFSET(vq) (SVE_SIG_REGS_OFFSET + __SVE_FFR_OFFSET(vq))
 #define SVE_SIG_REGS_SIZE(vq) (__SVE_FFR_OFFSET(vq) + __SVE_FFR_SIZE(vq))
 #define SVE_SIG_CONTEXT_SIZE(vq) (SVE_SIG_REGS_OFFSET + SVE_SIG_REGS_SIZE(vq))
+#define ZA_SIG_REGS_OFFSET ((sizeof(struct za_context) + (__SVE_VQ_BYTES - 1)) / __SVE_VQ_BYTES * __SVE_VQ_BYTES)
+#define ZA_SIG_REGS_SIZE(vq) ((vq * __SVE_VQ_BYTES) * (vq * __SVE_VQ_BYTES))
+#define ZA_SIG_ZAV_OFFSET(vq,n) (ZA_SIG_REGS_OFFSET + (SVE_SIG_ZREG_SIZE(vq) * n))
+#define ZA_SIG_CONTEXT_SIZE(vq) (ZA_SIG_REGS_OFFSET + ZA_SIG_REGS_SIZE(vq))
 #endif
diff --git a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/asm-generic/fcntl.h b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/asm-generic/fcntl.h
index a2cb5f4..ea8c108 100644
--- a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/asm-generic/fcntl.h
+++ b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/asm-generic/fcntl.h
@@ -100,7 +100,7 @@
 #define F_SETSIG 10
 #define F_GETSIG 11
 #endif
-#ifndef __LP64__
+#if __BITS_PER_LONG == 32
 #ifndef F_GETLK64
 #define F_GETLK64 12
 #define F_SETLK64 13
@@ -144,13 +144,5 @@
 #define LOCK_RW 192
 #define F_LINUX_SPECIFIC_BASE 1024
 #ifndef HAVE_ARCH_STRUCT_FLOCK
-#ifndef __ARCH_FLOCK_PAD
-#define __ARCH_FLOCK_PAD
-#endif
-#endif
-#ifndef HAVE_ARCH_STRUCT_FLOCK64
-#ifndef __ARCH_FLOCK64_PAD
-#define __ARCH_FLOCK64_PAD
-#endif
 #endif
 #endif
diff --git a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/asm-generic/hugetlb_encode.h b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/asm-generic/hugetlb_encode.h
index 73d8180..059991c 100644
--- a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/asm-generic/hugetlb_encode.h
+++ b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/asm-generic/hugetlb_encode.h
@@ -20,17 +20,17 @@
 #define _ASM_GENERIC_HUGETLB_ENCODE_H_
 #define HUGETLB_FLAG_ENCODE_SHIFT 26
 #define HUGETLB_FLAG_ENCODE_MASK 0x3f
-#define HUGETLB_FLAG_ENCODE_16KB (14 << HUGETLB_FLAG_ENCODE_SHIFT)
-#define HUGETLB_FLAG_ENCODE_64KB (16 << HUGETLB_FLAG_ENCODE_SHIFT)
-#define HUGETLB_FLAG_ENCODE_512KB (19 << HUGETLB_FLAG_ENCODE_SHIFT)
-#define HUGETLB_FLAG_ENCODE_1MB (20 << HUGETLB_FLAG_ENCODE_SHIFT)
-#define HUGETLB_FLAG_ENCODE_2MB (21 << HUGETLB_FLAG_ENCODE_SHIFT)
-#define HUGETLB_FLAG_ENCODE_8MB (23 << HUGETLB_FLAG_ENCODE_SHIFT)
-#define HUGETLB_FLAG_ENCODE_16MB (24 << HUGETLB_FLAG_ENCODE_SHIFT)
-#define HUGETLB_FLAG_ENCODE_32MB (25 << HUGETLB_FLAG_ENCODE_SHIFT)
-#define HUGETLB_FLAG_ENCODE_256MB (28 << HUGETLB_FLAG_ENCODE_SHIFT)
-#define HUGETLB_FLAG_ENCODE_512MB (29 << HUGETLB_FLAG_ENCODE_SHIFT)
-#define HUGETLB_FLAG_ENCODE_1GB (30 << HUGETLB_FLAG_ENCODE_SHIFT)
-#define HUGETLB_FLAG_ENCODE_2GB (31 << HUGETLB_FLAG_ENCODE_SHIFT)
-#define HUGETLB_FLAG_ENCODE_16GB (34 << HUGETLB_FLAG_ENCODE_SHIFT)
+#define HUGETLB_FLAG_ENCODE_16KB (14U << HUGETLB_FLAG_ENCODE_SHIFT)
+#define HUGETLB_FLAG_ENCODE_64KB (16U << HUGETLB_FLAG_ENCODE_SHIFT)
+#define HUGETLB_FLAG_ENCODE_512KB (19U << HUGETLB_FLAG_ENCODE_SHIFT)
+#define HUGETLB_FLAG_ENCODE_1MB (20U << HUGETLB_FLAG_ENCODE_SHIFT)
+#define HUGETLB_FLAG_ENCODE_2MB (21U << HUGETLB_FLAG_ENCODE_SHIFT)
+#define HUGETLB_FLAG_ENCODE_8MB (23U << HUGETLB_FLAG_ENCODE_SHIFT)
+#define HUGETLB_FLAG_ENCODE_16MB (24U << HUGETLB_FLAG_ENCODE_SHIFT)
+#define HUGETLB_FLAG_ENCODE_32MB (25U << HUGETLB_FLAG_ENCODE_SHIFT)
+#define HUGETLB_FLAG_ENCODE_256MB (28U << HUGETLB_FLAG_ENCODE_SHIFT)
+#define HUGETLB_FLAG_ENCODE_512MB (29U << HUGETLB_FLAG_ENCODE_SHIFT)
+#define HUGETLB_FLAG_ENCODE_1GB (30U << HUGETLB_FLAG_ENCODE_SHIFT)
+#define HUGETLB_FLAG_ENCODE_2GB (31U << HUGETLB_FLAG_ENCODE_SHIFT)
+#define HUGETLB_FLAG_ENCODE_16GB (34U << HUGETLB_FLAG_ENCODE_SHIFT)
 #endif
diff --git a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/asm-generic/mman-common.h b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/asm-generic/mman-common.h
index 9440576..966d05b 100644
--- a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/asm-generic/mman-common.h
+++ b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/asm-generic/mman-common.h
@@ -62,6 +62,8 @@
 #define MADV_PAGEOUT 21
 #define MADV_POPULATE_READ 22
 #define MADV_POPULATE_WRITE 23
+#define MADV_DONTNEED_LOCKED 24
+#define MADV_COLLAPSE 25
 #define MAP_FILE 0
 #define PKEY_DISABLE_ACCESS 0x1
 #define PKEY_DISABLE_WRITE 0x2
diff --git a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/asm-generic/shmbuf.h b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/asm-generic/shmbuf.h
index 067ffbc..11487f4 100644
--- a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/asm-generic/shmbuf.h
+++ b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/asm-generic/shmbuf.h
@@ -19,9 +19,11 @@
 #ifndef __ASM_GENERIC_SHMBUF_H
 #define __ASM_GENERIC_SHMBUF_H
 #include <asm/bitsperlong.h>
+#include <asm/ipcbuf.h>
+#include <asm/posix_types.h>
 struct shmid64_ds {
   struct ipc64_perm shm_perm;
-  size_t shm_segsz;
+  __kernel_size_t shm_segsz;
 #if __BITS_PER_LONG == 64
   long shm_atime;
   long shm_dtime;
diff --git a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/asm-generic/siginfo.h b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/asm-generic/siginfo.h
index f9199e5..c5e4178 100644
--- a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/asm-generic/siginfo.h
+++ b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/asm-generic/siginfo.h
@@ -80,6 +80,7 @@
       struct {
         unsigned long _data;
         __u32 _type;
+        __u32 _flags;
       } _perf;
     };
   } _sigfault;
@@ -125,6 +126,7 @@
 #define si_pkey _sifields._sigfault._addr_pkey._pkey
 #define si_perf_data _sifields._sigfault._perf._data
 #define si_perf_type _sifields._sigfault._perf._type
+#define si_perf_flags _sifields._sigfault._perf._flags
 #define si_band _sifields._sigpoll._band
 #define si_fd _sifields._sigpoll._fd
 #define si_call_addr _sifields._sigsys._call_addr
@@ -197,6 +199,7 @@
 #define TRAP_UNK 5
 #define TRAP_PERF 6
 #define NSIGTRAP 6
+#define TRAP_PERF_FLAG_ASYNC (1u << 0)
 #define CLD_EXITED 1
 #define CLD_KILLED 2
 #define CLD_DUMPED 3
diff --git a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/asm-generic/signal.h b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/asm-generic/signal.h
index 874fece..5cb1dce 100644
--- a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/asm-generic/signal.h
+++ b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/asm-generic/signal.h
@@ -84,7 +84,7 @@
 typedef struct sigaltstack {
   void __user * ss_sp;
   int ss_flags;
-  size_t ss_size;
+  __kernel_size_t ss_size;
 } stack_t;
 #endif
 #endif
diff --git a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/asm-generic/socket.h b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/asm-generic/socket.h
index 6767993..1a321bf 100644
--- a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/asm-generic/socket.h
+++ b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/asm-generic/socket.h
@@ -100,6 +100,8 @@
 #define SO_NETNS_COOKIE 71
 #define SO_BUF_LOCK 72
 #define SO_RESERVE_MEM 73
+#define SO_TXREHASH 74
+#define SO_RCVMARK 75
 #if __BITS_PER_LONG == 64 || defined(__x86_64__) && defined(__ILP32__)
 #define SO_TIMESTAMP SO_TIMESTAMP_OLD
 #define SO_TIMESTAMPNS SO_TIMESTAMPNS_OLD
diff --git a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/asm-generic/termbits-common.h b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/asm-generic/termbits-common.h
new file mode 100644
index 0000000..281eee8
--- /dev/null
+++ b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/asm-generic/termbits-common.h
@@ -0,0 +1,68 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef __ASM_GENERIC_TERMBITS_COMMON_H
+#define __ASM_GENERIC_TERMBITS_COMMON_H
+typedef unsigned char cc_t;
+typedef unsigned int speed_t;
+#define IGNBRK 0x001
+#define BRKINT 0x002
+#define IGNPAR 0x004
+#define PARMRK 0x008
+#define INPCK 0x010
+#define ISTRIP 0x020
+#define INLCR 0x040
+#define IGNCR 0x080
+#define ICRNL 0x100
+#define IXANY 0x800
+#define OPOST 0x01
+#define OCRNL 0x08
+#define ONOCR 0x10
+#define ONLRET 0x20
+#define OFILL 0x40
+#define OFDEL 0x80
+#define B0 0x00000000
+#define B50 0x00000001
+#define B75 0x00000002
+#define B110 0x00000003
+#define B134 0x00000004
+#define B150 0x00000005
+#define B200 0x00000006
+#define B300 0x00000007
+#define B600 0x00000008
+#define B1200 0x00000009
+#define B1800 0x0000000a
+#define B2400 0x0000000b
+#define B4800 0x0000000c
+#define B9600 0x0000000d
+#define B19200 0x0000000e
+#define B38400 0x0000000f
+#define EXTA B19200
+#define EXTB B38400
+#define ADDRB 0x20000000
+#define CMSPAR 0x40000000
+#define CRTSCTS 0x80000000
+#define IBSHIFT 16
+#define TCOOFF 0
+#define TCOON 1
+#define TCIOFF 2
+#define TCION 3
+#define TCIFLUSH 0
+#define TCOFLUSH 1
+#define TCIOFLUSH 2
+#endif
diff --git a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/asm-generic/termbits.h b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/asm-generic/termbits.h
index b592964..87d6c82 100644
--- a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/asm-generic/termbits.h
+++ b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/asm-generic/termbits.h
@@ -18,9 +18,7 @@
  ****************************************************************************/
 #ifndef __ASM_GENERIC_TERMBITS_H
 #define __ASM_GENERIC_TERMBITS_H
-#include <linux/posix_types.h>
-typedef unsigned char cc_t;
-typedef unsigned int speed_t;
+#include <asm-generic/termbits-common.h>
 typedef unsigned int tcflag_t;
 #define NCCS 19
 struct termios {
@@ -68,126 +66,82 @@
 #define VWERASE 14
 #define VLNEXT 15
 #define VEOL2 16
-#define IGNBRK 0000001
-#define BRKINT 0000002
-#define IGNPAR 0000004
-#define PARMRK 0000010
-#define INPCK 0000020
-#define ISTRIP 0000040
-#define INLCR 0000100
-#define IGNCR 0000200
-#define ICRNL 0000400
-#define IUCLC 0001000
-#define IXON 0002000
-#define IXANY 0004000
-#define IXOFF 0010000
-#define IMAXBEL 0020000
-#define IUTF8 0040000
-#define OPOST 0000001
-#define OLCUC 0000002
-#define ONLCR 0000004
-#define OCRNL 0000010
-#define ONOCR 0000020
-#define ONLRET 0000040
-#define OFILL 0000100
-#define OFDEL 0000200
-#define NLDLY 0000400
-#define NL0 0000000
-#define NL1 0000400
-#define CRDLY 0003000
-#define CR0 0000000
-#define CR1 0001000
-#define CR2 0002000
-#define CR3 0003000
-#define TABDLY 0014000
-#define TAB0 0000000
-#define TAB1 0004000
-#define TAB2 0010000
-#define TAB3 0014000
-#define XTABS 0014000
-#define BSDLY 0020000
-#define BS0 0000000
-#define BS1 0020000
-#define VTDLY 0040000
-#define VT0 0000000
-#define VT1 0040000
-#define FFDLY 0100000
-#define FF0 0000000
-#define FF1 0100000
-#define CBAUD 0010017
-#define B0 0000000
-#define B50 0000001
-#define B75 0000002
-#define B110 0000003
-#define B134 0000004
-#define B150 0000005
-#define B200 0000006
-#define B300 0000007
-#define B600 0000010
-#define B1200 0000011
-#define B1800 0000012
-#define B2400 0000013
-#define B4800 0000014
-#define B9600 0000015
-#define B19200 0000016
-#define B38400 0000017
-#define EXTA B19200
-#define EXTB B38400
-#define CSIZE 0000060
-#define CS5 0000000
-#define CS6 0000020
-#define CS7 0000040
-#define CS8 0000060
-#define CSTOPB 0000100
-#define CREAD 0000200
-#define PARENB 0000400
-#define PARODD 0001000
-#define HUPCL 0002000
-#define CLOCAL 0004000
-#define CBAUDEX 0010000
-#define BOTHER 0010000
-#define B57600 0010001
-#define B115200 0010002
-#define B230400 0010003
-#define B460800 0010004
-#define B500000 0010005
-#define B576000 0010006
-#define B921600 0010007
-#define B1000000 0010010
-#define B1152000 0010011
-#define B1500000 0010012
-#define B2000000 0010013
-#define B2500000 0010014
-#define B3000000 0010015
-#define B3500000 0010016
-#define B4000000 0010017
-#define CIBAUD 002003600000
-#define CMSPAR 010000000000
-#define CRTSCTS 020000000000
-#define IBSHIFT 16
-#define ISIG 0000001
-#define ICANON 0000002
-#define XCASE 0000004
-#define ECHO 0000010
-#define ECHOE 0000020
-#define ECHOK 0000040
-#define ECHONL 0000100
-#define NOFLSH 0000200
-#define TOSTOP 0000400
-#define ECHOCTL 0001000
-#define ECHOPRT 0002000
-#define ECHOKE 0004000
-#define FLUSHO 0010000
-#define PENDIN 0040000
-#define IEXTEN 0100000
-#define EXTPROC 0200000
-#define TCOOFF 0
-#define TCOON 1
-#define TCIOFF 2
-#define TCION 3
-#define TCIFLUSH 0
-#define TCOFLUSH 1
-#define TCIOFLUSH 2
+#define IUCLC 0x0200
+#define IXON 0x0400
+#define IXOFF 0x1000
+#define IMAXBEL 0x2000
+#define IUTF8 0x4000
+#define OLCUC 0x00002
+#define ONLCR 0x00004
+#define NLDLY 0x00100
+#define NL0 0x00000
+#define NL1 0x00100
+#define CRDLY 0x00600
+#define CR0 0x00000
+#define CR1 0x00200
+#define CR2 0x00400
+#define CR3 0x00600
+#define TABDLY 0x01800
+#define TAB0 0x00000
+#define TAB1 0x00800
+#define TAB2 0x01000
+#define TAB3 0x01800
+#define XTABS 0x01800
+#define BSDLY 0x02000
+#define BS0 0x00000
+#define BS1 0x02000
+#define VTDLY 0x04000
+#define VT0 0x00000
+#define VT1 0x04000
+#define FFDLY 0x08000
+#define FF0 0x00000
+#define FF1 0x08000
+#define CBAUD 0x0000100f
+#define CSIZE 0x00000030
+#define CS5 0x00000000
+#define CS6 0x00000010
+#define CS7 0x00000020
+#define CS8 0x00000030
+#define CSTOPB 0x00000040
+#define CREAD 0x00000080
+#define PARENB 0x00000100
+#define PARODD 0x00000200
+#define HUPCL 0x00000400
+#define CLOCAL 0x00000800
+#define CBAUDEX 0x00001000
+#define BOTHER 0x00001000
+#define B57600 0x00001001
+#define B115200 0x00001002
+#define B230400 0x00001003
+#define B460800 0x00001004
+#define B500000 0x00001005
+#define B576000 0x00001006
+#define B921600 0x00001007
+#define B1000000 0x00001008
+#define B1152000 0x00001009
+#define B1500000 0x0000100a
+#define B2000000 0x0000100b
+#define B2500000 0x0000100c
+#define B3000000 0x0000100d
+#define B3500000 0x0000100e
+#define B4000000 0x0000100f
+#define CIBAUD 0x100f0000
+#define ISIG 0x00001
+#define ICANON 0x00002
+#define XCASE 0x00004
+#define ECHO 0x00008
+#define ECHOE 0x00010
+#define ECHOK 0x00020
+#define ECHONL 0x00040
+#define NOFLSH 0x00080
+#define TOSTOP 0x00100
+#define ECHOCTL 0x00200
+#define ECHOPRT 0x00400
+#define ECHOKE 0x00800
+#define FLUSHO 0x01000
+#define PENDIN 0x04000
+#define IEXTEN 0x08000
+#define EXTPROC 0x10000
 #define TCSANOW 0
 #define TCSADRAIN 1
 #define TCSAFLUSH 2
diff --git a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/asm-generic/unistd.h b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/asm-generic/unistd.h
index 4b9f174..d23958b 100644
--- a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/asm-generic/unistd.h
+++ b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/asm-generic/unistd.h
@@ -360,7 +360,7 @@
 #endif
 #define __NR_rseq 293
 #define __NR_kexec_file_load 294
-#if __BITS_PER_LONG == 32
+#if defined(__SYSCALL_COMPAT) || __BITS_PER_LONG == 32
 #define __NR_clock_gettime64 403
 #define __NR_clock_settime64 404
 #define __NR_clock_adjtime64 405
diff --git a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/asm-riscv/asm/auxvec.h b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/asm-riscv/asm/auxvec.h
new file mode 100644
index 0000000..c70be17
--- /dev/null
+++ b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/asm-riscv/asm/auxvec.h
@@ -0,0 +1,31 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPI_ASM_RISCV_AUXVEC_H
+#define _UAPI_ASM_RISCV_AUXVEC_H
+#define AT_SYSINFO_EHDR 33
+#define AT_L1I_CACHESIZE 40
+#define AT_L1I_CACHEGEOMETRY 41
+#define AT_L1D_CACHESIZE 42
+#define AT_L1D_CACHEGEOMETRY 43
+#define AT_L2_CACHESIZE 44
+#define AT_L2_CACHEGEOMETRY 45
+#define AT_L3_CACHESIZE 46
+#define AT_L3_CACHEGEOMETRY 47
+#define AT_VECTOR_SIZE_ARCH 9
+#endif
diff --git a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/asm-riscv/asm/bitsperlong.h b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/asm-riscv/asm/bitsperlong.h
new file mode 100644
index 0000000..098b610
--- /dev/null
+++ b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/asm-riscv/asm/bitsperlong.h
@@ -0,0 +1,23 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPI_ASM_RISCV_BITSPERLONG_H
+#define _UAPI_ASM_RISCV_BITSPERLONG_H
+#define __BITS_PER_LONG (__SIZEOF_POINTER__ * 8)
+#include <asm-generic/bitsperlong.h>
+#endif
diff --git a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/asm-riscv/asm/bpf_perf_event.h b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/asm-riscv/asm/bpf_perf_event.h
new file mode 100644
index 0000000..47c09fd
--- /dev/null
+++ b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/asm-riscv/asm/bpf_perf_event.h
@@ -0,0 +1,23 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPI__ASM_BPF_PERF_EVENT_H__
+#define _UAPI__ASM_BPF_PERF_EVENT_H__
+#include <asm/ptrace.h>
+typedef struct user_regs_struct bpf_user_pt_regs_t;
+#endif
diff --git a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/asm-riscv/asm/byteorder.h b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/asm-riscv/asm/byteorder.h
new file mode 100644
index 0000000..42afc14
--- /dev/null
+++ b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/asm-riscv/asm/byteorder.h
@@ -0,0 +1,22 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPI_ASM_RISCV_BYTEORDER_H
+#define _UAPI_ASM_RISCV_BYTEORDER_H
+#include <linux/byteorder/little_endian.h>
+#endif
diff --git a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/asm-riscv/asm/elf.h b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/asm-riscv/asm/elf.h
new file mode 100644
index 0000000..07593d9
--- /dev/null
+++ b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/asm-riscv/asm/elf.h
@@ -0,0 +1,89 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPI_ASM_RISCV_ELF_H
+#define _UAPI_ASM_RISCV_ELF_H
+#include <asm/ptrace.h>
+typedef unsigned long elf_greg_t;
+typedef struct user_regs_struct elf_gregset_t;
+#define ELF_NGREG (sizeof(elf_gregset_t) / sizeof(elf_greg_t))
+typedef __u64 elf_fpreg_t;
+typedef union __riscv_fp_state elf_fpregset_t;
+#define ELF_NFPREG (sizeof(struct __riscv_d_ext_state) / sizeof(elf_fpreg_t))
+#if __riscv_xlen == 64
+#define ELF_RISCV_R_SYM(r_info) ELF64_R_SYM(r_info)
+#define ELF_RISCV_R_TYPE(r_info) ELF64_R_TYPE(r_info)
+#else
+#define ELF_RISCV_R_SYM(r_info) ELF32_R_SYM(r_info)
+#define ELF_RISCV_R_TYPE(r_info) ELF32_R_TYPE(r_info)
+#endif
+#define R_RISCV_NONE 0
+#define R_RISCV_32 1
+#define R_RISCV_64 2
+#define R_RISCV_RELATIVE 3
+#define R_RISCV_COPY 4
+#define R_RISCV_JUMP_SLOT 5
+#define R_RISCV_TLS_DTPMOD32 6
+#define R_RISCV_TLS_DTPMOD64 7
+#define R_RISCV_TLS_DTPREL32 8
+#define R_RISCV_TLS_DTPREL64 9
+#define R_RISCV_TLS_TPREL32 10
+#define R_RISCV_TLS_TPREL64 11
+#define R_RISCV_BRANCH 16
+#define R_RISCV_JAL 17
+#define R_RISCV_CALL 18
+#define R_RISCV_CALL_PLT 19
+#define R_RISCV_GOT_HI20 20
+#define R_RISCV_TLS_GOT_HI20 21
+#define R_RISCV_TLS_GD_HI20 22
+#define R_RISCV_PCREL_HI20 23
+#define R_RISCV_PCREL_LO12_I 24
+#define R_RISCV_PCREL_LO12_S 25
+#define R_RISCV_HI20 26
+#define R_RISCV_LO12_I 27
+#define R_RISCV_LO12_S 28
+#define R_RISCV_TPREL_HI20 29
+#define R_RISCV_TPREL_LO12_I 30
+#define R_RISCV_TPREL_LO12_S 31
+#define R_RISCV_TPREL_ADD 32
+#define R_RISCV_ADD8 33
+#define R_RISCV_ADD16 34
+#define R_RISCV_ADD32 35
+#define R_RISCV_ADD64 36
+#define R_RISCV_SUB8 37
+#define R_RISCV_SUB16 38
+#define R_RISCV_SUB32 39
+#define R_RISCV_SUB64 40
+#define R_RISCV_GNU_VTINHERIT 41
+#define R_RISCV_GNU_VTENTRY 42
+#define R_RISCV_ALIGN 43
+#define R_RISCV_RVC_BRANCH 44
+#define R_RISCV_RVC_JUMP 45
+#define R_RISCV_LUI 46
+#define R_RISCV_GPREL_I 47
+#define R_RISCV_GPREL_S 48
+#define R_RISCV_TPREL_I 49
+#define R_RISCV_TPREL_S 50
+#define R_RISCV_RELAX 51
+#define R_RISCV_SUB6 52
+#define R_RISCV_SET6 53
+#define R_RISCV_SET8 54
+#define R_RISCV_SET16 55
+#define R_RISCV_SET32 56
+#define R_RISCV_32_PCREL 57
+#endif
diff --git a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/asm-riscv/asm/errno.h b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/asm-riscv/asm/errno.h
new file mode 100644
index 0000000..392cd94
--- /dev/null
+++ b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/asm-riscv/asm/errno.h
@@ -0,0 +1,19 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#include <asm-generic/errno.h>
diff --git a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/asm-riscv/asm/fcntl.h b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/asm-riscv/asm/fcntl.h
new file mode 100644
index 0000000..518d3a7
--- /dev/null
+++ b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/asm-riscv/asm/fcntl.h
@@ -0,0 +1,19 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#include <asm-generic/fcntl.h>
diff --git a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/asm-riscv/asm/hwcap.h b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/asm-riscv/asm/hwcap.h
new file mode 100644
index 0000000..d130cf7
--- /dev/null
+++ b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/asm-riscv/asm/hwcap.h
@@ -0,0 +1,27 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPI_ASM_RISCV_HWCAP_H
+#define _UAPI_ASM_RISCV_HWCAP_H
+#define COMPAT_HWCAP_ISA_I (1 << ('I' - 'A'))
+#define COMPAT_HWCAP_ISA_M (1 << ('M' - 'A'))
+#define COMPAT_HWCAP_ISA_A (1 << ('A' - 'A'))
+#define COMPAT_HWCAP_ISA_F (1 << ('F' - 'A'))
+#define COMPAT_HWCAP_ISA_D (1 << ('D' - 'A'))
+#define COMPAT_HWCAP_ISA_C (1 << ('C' - 'A'))
+#endif
diff --git a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/asm-riscv/asm/ioctl.h b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/asm-riscv/asm/ioctl.h
new file mode 100644
index 0000000..7b7bd37
--- /dev/null
+++ b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/asm-riscv/asm/ioctl.h
@@ -0,0 +1,19 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#include <asm-generic/ioctl.h>
diff --git a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/asm-riscv/asm/ioctls.h b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/asm-riscv/asm/ioctls.h
new file mode 100644
index 0000000..0c66935
--- /dev/null
+++ b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/asm-riscv/asm/ioctls.h
@@ -0,0 +1,19 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#include <asm-generic/ioctls.h>
diff --git a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/asm-riscv/asm/ipcbuf.h b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/asm-riscv/asm/ipcbuf.h
new file mode 100644
index 0000000..0021f14
--- /dev/null
+++ b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/asm-riscv/asm/ipcbuf.h
@@ -0,0 +1,19 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#include <asm-generic/ipcbuf.h>
diff --git a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/asm-riscv/asm/kvm.h b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/asm-riscv/asm/kvm.h
new file mode 100644
index 0000000..5dc165b
--- /dev/null
+++ b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/asm-riscv/asm/kvm.h
@@ -0,0 +1,102 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef __LINUX_KVM_RISCV_H
+#define __LINUX_KVM_RISCV_H
+#ifndef __ASSEMBLY__
+#include <linux/types.h>
+#include <asm/ptrace.h>
+#define __KVM_HAVE_READONLY_MEM
+#define KVM_COALESCED_MMIO_PAGE_OFFSET 1
+#define KVM_INTERRUPT_SET - 1U
+#define KVM_INTERRUPT_UNSET - 2U
+struct kvm_regs {
+};
+struct kvm_fpu {
+};
+struct kvm_debug_exit_arch {
+};
+struct kvm_guest_debug_arch {
+};
+struct kvm_sync_regs {
+};
+struct kvm_sregs {
+};
+struct kvm_riscv_config {
+  unsigned long isa;
+  unsigned long zicbom_block_size;
+};
+struct kvm_riscv_core {
+  struct user_regs_struct regs;
+  unsigned long mode;
+};
+#define KVM_RISCV_MODE_S 1
+#define KVM_RISCV_MODE_U 0
+struct kvm_riscv_csr {
+  unsigned long sstatus;
+  unsigned long sie;
+  unsigned long stvec;
+  unsigned long sscratch;
+  unsigned long sepc;
+  unsigned long scause;
+  unsigned long stval;
+  unsigned long sip;
+  unsigned long satp;
+  unsigned long scounteren;
+};
+struct kvm_riscv_timer {
+  __u64 frequency;
+  __u64 time;
+  __u64 compare;
+  __u64 state;
+};
+enum KVM_RISCV_ISA_EXT_ID {
+  KVM_RISCV_ISA_EXT_A = 0,
+  KVM_RISCV_ISA_EXT_C,
+  KVM_RISCV_ISA_EXT_D,
+  KVM_RISCV_ISA_EXT_F,
+  KVM_RISCV_ISA_EXT_H,
+  KVM_RISCV_ISA_EXT_I,
+  KVM_RISCV_ISA_EXT_M,
+  KVM_RISCV_ISA_EXT_SVPBMT,
+  KVM_RISCV_ISA_EXT_SSTC,
+  KVM_RISCV_ISA_EXT_SVINVAL,
+  KVM_RISCV_ISA_EXT_ZIHINTPAUSE,
+  KVM_RISCV_ISA_EXT_ZICBOM,
+  KVM_RISCV_ISA_EXT_MAX,
+};
+#define KVM_RISCV_TIMER_STATE_OFF 0
+#define KVM_RISCV_TIMER_STATE_ON 1
+#define KVM_REG_SIZE(id) (1U << (((id) & KVM_REG_SIZE_MASK) >> KVM_REG_SIZE_SHIFT))
+#define KVM_REG_RISCV_TYPE_MASK 0x00000000FF000000
+#define KVM_REG_RISCV_TYPE_SHIFT 24
+#define KVM_REG_RISCV_CONFIG (0x01 << KVM_REG_RISCV_TYPE_SHIFT)
+#define KVM_REG_RISCV_CONFIG_REG(name) (offsetof(struct kvm_riscv_config, name) / sizeof(unsigned long))
+#define KVM_REG_RISCV_CORE (0x02 << KVM_REG_RISCV_TYPE_SHIFT)
+#define KVM_REG_RISCV_CORE_REG(name) (offsetof(struct kvm_riscv_core, name) / sizeof(unsigned long))
+#define KVM_REG_RISCV_CSR (0x03 << KVM_REG_RISCV_TYPE_SHIFT)
+#define KVM_REG_RISCV_CSR_REG(name) (offsetof(struct kvm_riscv_csr, name) / sizeof(unsigned long))
+#define KVM_REG_RISCV_TIMER (0x04 << KVM_REG_RISCV_TYPE_SHIFT)
+#define KVM_REG_RISCV_TIMER_REG(name) (offsetof(struct kvm_riscv_timer, name) / sizeof(__u64))
+#define KVM_REG_RISCV_FP_F (0x05 << KVM_REG_RISCV_TYPE_SHIFT)
+#define KVM_REG_RISCV_FP_F_REG(name) (offsetof(struct __riscv_f_ext_state, name) / sizeof(__u32))
+#define KVM_REG_RISCV_FP_D (0x06 << KVM_REG_RISCV_TYPE_SHIFT)
+#define KVM_REG_RISCV_FP_D_REG(name) (offsetof(struct __riscv_d_ext_state, name) / sizeof(__u64))
+#define KVM_REG_RISCV_ISA_EXT (0x07 << KVM_REG_RISCV_TYPE_SHIFT)
+#endif
+#endif
diff --git a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/asm-riscv/asm/mman.h b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/asm-riscv/asm/mman.h
new file mode 100644
index 0000000..6c23fb6
--- /dev/null
+++ b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/asm-riscv/asm/mman.h
@@ -0,0 +1,19 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#include <asm-generic/mman.h>
diff --git a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/asm-riscv/asm/msgbuf.h b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/asm-riscv/asm/msgbuf.h
new file mode 100644
index 0000000..7809e3c
--- /dev/null
+++ b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/asm-riscv/asm/msgbuf.h
@@ -0,0 +1,19 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#include <asm-generic/msgbuf.h>
diff --git a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/asm-riscv/asm/param.h b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/asm-riscv/asm/param.h
new file mode 100644
index 0000000..5ccf935
--- /dev/null
+++ b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/asm-riscv/asm/param.h
@@ -0,0 +1,19 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#include <asm-generic/param.h>
diff --git a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/asm-riscv/asm/perf_regs.h b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/asm-riscv/asm/perf_regs.h
new file mode 100644
index 0000000..ceb0bbe
--- /dev/null
+++ b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/asm-riscv/asm/perf_regs.h
@@ -0,0 +1,56 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _ASM_RISCV_PERF_REGS_H
+#define _ASM_RISCV_PERF_REGS_H
+enum perf_event_riscv_regs {
+  PERF_REG_RISCV_PC,
+  PERF_REG_RISCV_RA,
+  PERF_REG_RISCV_SP,
+  PERF_REG_RISCV_GP,
+  PERF_REG_RISCV_TP,
+  PERF_REG_RISCV_T0,
+  PERF_REG_RISCV_T1,
+  PERF_REG_RISCV_T2,
+  PERF_REG_RISCV_S0,
+  PERF_REG_RISCV_S1,
+  PERF_REG_RISCV_A0,
+  PERF_REG_RISCV_A1,
+  PERF_REG_RISCV_A2,
+  PERF_REG_RISCV_A3,
+  PERF_REG_RISCV_A4,
+  PERF_REG_RISCV_A5,
+  PERF_REG_RISCV_A6,
+  PERF_REG_RISCV_A7,
+  PERF_REG_RISCV_S2,
+  PERF_REG_RISCV_S3,
+  PERF_REG_RISCV_S4,
+  PERF_REG_RISCV_S5,
+  PERF_REG_RISCV_S6,
+  PERF_REG_RISCV_S7,
+  PERF_REG_RISCV_S8,
+  PERF_REG_RISCV_S9,
+  PERF_REG_RISCV_S10,
+  PERF_REG_RISCV_S11,
+  PERF_REG_RISCV_T3,
+  PERF_REG_RISCV_T4,
+  PERF_REG_RISCV_T5,
+  PERF_REG_RISCV_T6,
+  PERF_REG_RISCV_MAX,
+};
+#endif
diff --git a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/asm-riscv/asm/poll.h b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/asm-riscv/asm/poll.h
new file mode 100644
index 0000000..d7e8adc
--- /dev/null
+++ b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/asm-riscv/asm/poll.h
@@ -0,0 +1,19 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#include <asm-generic/poll.h>
diff --git a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/asm-riscv/asm/posix_types.h b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/asm-riscv/asm/posix_types.h
new file mode 100644
index 0000000..1b89253
--- /dev/null
+++ b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/asm-riscv/asm/posix_types.h
@@ -0,0 +1,19 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#include <asm-generic/posix_types.h>
diff --git a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/asm-riscv/asm/ptrace.h b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/asm-riscv/asm/ptrace.h
new file mode 100644
index 0000000..94e4ac9
--- /dev/null
+++ b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/asm-riscv/asm/ptrace.h
@@ -0,0 +1,76 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPI_ASM_RISCV_PTRACE_H
+#define _UAPI_ASM_RISCV_PTRACE_H
+#ifndef __ASSEMBLY__
+#include <linux/types.h>
+struct user_regs_struct {
+  unsigned long pc;
+  unsigned long ra;
+  unsigned long sp;
+  unsigned long gp;
+  unsigned long tp;
+  unsigned long t0;
+  unsigned long t1;
+  unsigned long t2;
+  unsigned long s0;
+  unsigned long s1;
+  unsigned long a0;
+  unsigned long a1;
+  unsigned long a2;
+  unsigned long a3;
+  unsigned long a4;
+  unsigned long a5;
+  unsigned long a6;
+  unsigned long a7;
+  unsigned long s2;
+  unsigned long s3;
+  unsigned long s4;
+  unsigned long s5;
+  unsigned long s6;
+  unsigned long s7;
+  unsigned long s8;
+  unsigned long s9;
+  unsigned long s10;
+  unsigned long s11;
+  unsigned long t3;
+  unsigned long t4;
+  unsigned long t5;
+  unsigned long t6;
+};
+struct __riscv_f_ext_state {
+  __u32 f[32];
+  __u32 fcsr;
+};
+struct __riscv_d_ext_state {
+  __u64 f[32];
+  __u32 fcsr;
+};
+struct __riscv_q_ext_state {
+  __u64 f[64] __attribute__((aligned(16)));
+  __u32 fcsr;
+  __u32 reserved[3];
+};
+union __riscv_fp_state {
+  struct __riscv_f_ext_state f;
+  struct __riscv_d_ext_state d;
+  struct __riscv_q_ext_state q;
+};
+#endif
+#endif
diff --git a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/asm-riscv/asm/resource.h b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/asm-riscv/asm/resource.h
new file mode 100644
index 0000000..371adb5
--- /dev/null
+++ b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/asm-riscv/asm/resource.h
@@ -0,0 +1,19 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#include <asm-generic/resource.h>
diff --git a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/asm-riscv/asm/sembuf.h b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/asm-riscv/asm/sembuf.h
new file mode 100644
index 0000000..6ce6549
--- /dev/null
+++ b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/asm-riscv/asm/sembuf.h
@@ -0,0 +1,19 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#include <asm-generic/sembuf.h>
diff --git a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/asm-riscv/asm/setup.h b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/asm-riscv/asm/setup.h
new file mode 100644
index 0000000..940c4db
--- /dev/null
+++ b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/asm-riscv/asm/setup.h
@@ -0,0 +1,19 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#include <asm-generic/setup.h>
diff --git a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/asm-riscv/asm/shmbuf.h b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/asm-riscv/asm/shmbuf.h
new file mode 100644
index 0000000..fe8b1be
--- /dev/null
+++ b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/asm-riscv/asm/shmbuf.h
@@ -0,0 +1,19 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#include <asm-generic/shmbuf.h>
diff --git a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/asm-riscv/asm/sigcontext.h b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/asm-riscv/asm/sigcontext.h
new file mode 100644
index 0000000..0553b94
--- /dev/null
+++ b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/asm-riscv/asm/sigcontext.h
@@ -0,0 +1,26 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPI_ASM_RISCV_SIGCONTEXT_H
+#define _UAPI_ASM_RISCV_SIGCONTEXT_H
+#include <asm/ptrace.h>
+struct sigcontext {
+  struct user_regs_struct sc_regs;
+  union __riscv_fp_state sc_fpregs;
+};
+#endif
diff --git a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/asm-riscv/asm/siginfo.h b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/asm-riscv/asm/siginfo.h
new file mode 100644
index 0000000..a31ebb2
--- /dev/null
+++ b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/asm-riscv/asm/siginfo.h
@@ -0,0 +1,19 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#include <asm-generic/siginfo.h>
diff --git a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/asm-riscv/asm/signal.h b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/asm-riscv/asm/signal.h
new file mode 100644
index 0000000..64373fe
--- /dev/null
+++ b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/asm-riscv/asm/signal.h
@@ -0,0 +1,19 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#include <asm-generic/signal.h>
diff --git a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/asm-riscv/asm/socket.h b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/asm-riscv/asm/socket.h
new file mode 100644
index 0000000..50a9874
--- /dev/null
+++ b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/asm-riscv/asm/socket.h
@@ -0,0 +1,19 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#include <asm-generic/socket.h>
diff --git a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/asm-riscv/asm/sockios.h b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/asm-riscv/asm/sockios.h
new file mode 100644
index 0000000..710db92
--- /dev/null
+++ b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/asm-riscv/asm/sockios.h
@@ -0,0 +1,19 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#include <asm-generic/sockios.h>
diff --git a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/asm-riscv/asm/stat.h b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/asm-riscv/asm/stat.h
new file mode 100644
index 0000000..af7ebfc
--- /dev/null
+++ b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/asm-riscv/asm/stat.h
@@ -0,0 +1,19 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#include <asm-generic/stat.h>
diff --git a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/asm-riscv/asm/statfs.h b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/asm-riscv/asm/statfs.h
new file mode 100644
index 0000000..93de275
--- /dev/null
+++ b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/asm-riscv/asm/statfs.h
@@ -0,0 +1,19 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#include <asm-generic/statfs.h>
diff --git a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/asm-riscv/asm/swab.h b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/asm-riscv/asm/swab.h
new file mode 100644
index 0000000..0049f53
--- /dev/null
+++ b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/asm-riscv/asm/swab.h
@@ -0,0 +1,19 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#include <asm-generic/swab.h>
diff --git a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/asm-riscv/asm/termbits.h b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/asm-riscv/asm/termbits.h
new file mode 100644
index 0000000..42af6fe
--- /dev/null
+++ b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/asm-riscv/asm/termbits.h
@@ -0,0 +1,19 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#include <asm-generic/termbits.h>
diff --git a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/asm-riscv/asm/termios.h b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/asm-riscv/asm/termios.h
new file mode 100644
index 0000000..feca4c6
--- /dev/null
+++ b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/asm-riscv/asm/termios.h
@@ -0,0 +1,19 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#include <asm-generic/termios.h>
diff --git a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/asm-riscv/asm/types.h b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/asm-riscv/asm/types.h
new file mode 100644
index 0000000..8250f43
--- /dev/null
+++ b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/asm-riscv/asm/types.h
@@ -0,0 +1,19 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#include <asm-generic/types.h>
diff --git a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/asm-riscv/asm/ucontext.h b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/asm-riscv/asm/ucontext.h
new file mode 100644
index 0000000..8b72cc1
--- /dev/null
+++ b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/asm-riscv/asm/ucontext.h
@@ -0,0 +1,30 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPI_ASM_RISCV_UCONTEXT_H
+#define _UAPI_ASM_RISCV_UCONTEXT_H
+#include <linux/types.h>
+struct ucontext {
+  unsigned long uc_flags;
+  struct ucontext * uc_link;
+  stack_t uc_stack;
+  sigset_t uc_sigmask;
+  __u8 __linux_unused[1024 / 8 - sizeof(sigset_t)];
+  struct sigcontext uc_mcontext;
+};
+#endif
diff --git a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/asm-riscv/asm/unistd.h b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/asm-riscv/asm/unistd.h
new file mode 100644
index 0000000..665b820
--- /dev/null
+++ b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/asm-riscv/asm/unistd.h
@@ -0,0 +1,29 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#if defined(__LP64__) && !defined(__SYSCALL_COMPAT)
+#define __ARCH_WANT_NEW_STAT
+#define __ARCH_WANT_SET_GET_RLIMIT
+#endif
+#define __ARCH_WANT_SYS_CLONE3
+#define __ARCH_WANT_MEMFD_SECRET
+#include <asm-generic/unistd.h>
+#ifndef __NR_riscv_flush_icache
+#define __NR_riscv_flush_icache (__NR_arch_specific_syscall + 15)
+#endif
+__SYSCALL(__NR_riscv_flush_icache, sys_riscv_flush_icache)
diff --git a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/asm-x86/asm/amd_hsmp.h b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/asm-x86/asm/amd_hsmp.h
new file mode 100644
index 0000000..c026aac
--- /dev/null
+++ b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/asm-x86/asm/amd_hsmp.h
@@ -0,0 +1,189 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPI_ASM_X86_AMD_HSMP_H_
+#define _UAPI_ASM_X86_AMD_HSMP_H_
+#include <linux/types.h>
+#pragma pack(4)
+#define HSMP_MAX_MSG_LEN 8
+enum hsmp_message_ids {
+  HSMP_TEST = 1,
+  HSMP_GET_SMU_VER,
+  HSMP_GET_PROTO_VER,
+  HSMP_GET_SOCKET_POWER,
+  HSMP_SET_SOCKET_POWER_LIMIT,
+  HSMP_GET_SOCKET_POWER_LIMIT,
+  HSMP_GET_SOCKET_POWER_LIMIT_MAX,
+  HSMP_SET_BOOST_LIMIT,
+  HSMP_SET_BOOST_LIMIT_SOCKET,
+  HSMP_GET_BOOST_LIMIT,
+  HSMP_GET_PROC_HOT,
+  HSMP_SET_XGMI_LINK_WIDTH,
+  HSMP_SET_DF_PSTATE,
+  HSMP_SET_AUTO_DF_PSTATE,
+  HSMP_GET_FCLK_MCLK,
+  HSMP_GET_CCLK_THROTTLE_LIMIT,
+  HSMP_GET_C0_PERCENT,
+  HSMP_SET_NBIO_DPM_LEVEL,
+  HSMP_GET_NBIO_DPM_LEVEL,
+  HSMP_GET_DDR_BANDWIDTH,
+  HSMP_GET_TEMP_MONITOR,
+  HSMP_GET_DIMM_TEMP_RANGE,
+  HSMP_GET_DIMM_POWER,
+  HSMP_GET_DIMM_THERMAL,
+  HSMP_GET_SOCKET_FREQ_LIMIT,
+  HSMP_GET_CCLK_CORE_LIMIT,
+  HSMP_GET_RAILS_SVI,
+  HSMP_GET_SOCKET_FMAX_FMIN,
+  HSMP_GET_IOLINK_BANDWITH,
+  HSMP_GET_XGMI_BANDWITH,
+  HSMP_SET_GMI3_WIDTH,
+  HSMP_SET_PCI_RATE,
+  HSMP_SET_POWER_MODE,
+  HSMP_SET_PSTATE_MAX_MIN,
+  HSMP_MSG_ID_MAX,
+};
+struct hsmp_message {
+  __u32 msg_id;
+  __u16 num_args;
+  __u16 response_sz;
+  __u32 args[HSMP_MAX_MSG_LEN];
+  __u16 sock_ind;
+};
+enum hsmp_msg_type {
+  HSMP_RSVD = - 1,
+  HSMP_SET = 0,
+  HSMP_GET = 1,
+};
+struct hsmp_msg_desc {
+  int num_args;
+  int response_sz;
+  enum hsmp_msg_type type;
+};
+static const struct hsmp_msg_desc hsmp_msg_desc_table[] = {
+ {
+    0, 0, HSMP_RSVD
+  }
+ , {
+    1, 1, HSMP_GET
+  }
+ , {
+    0, 1, HSMP_GET
+  }
+ , {
+    0, 1, HSMP_GET
+  }
+ , {
+    0, 1, HSMP_GET
+  }
+ , {
+    1, 0, HSMP_SET
+  }
+ , {
+    0, 1, HSMP_GET
+  }
+ , {
+    0, 1, HSMP_GET
+  }
+ , {
+    1, 0, HSMP_SET
+  }
+ , {
+    1, 0, HSMP_SET
+  }
+ , {
+    1, 1, HSMP_GET
+  }
+ , {
+    0, 1, HSMP_GET
+  }
+ , {
+    1, 0, HSMP_SET
+  }
+ , {
+    1, 0, HSMP_SET
+  }
+ , {
+    0, 0, HSMP_SET
+  }
+ , {
+    0, 2, HSMP_GET
+  }
+ , {
+    0, 1, HSMP_GET
+  }
+ , {
+    0, 1, HSMP_GET
+  }
+ , {
+    1, 0, HSMP_SET
+  }
+ , {
+    1, 1, HSMP_GET
+  }
+ , {
+    0, 1, HSMP_GET
+  }
+ , {
+    0, 1, HSMP_GET
+  }
+ , {
+    1, 1, HSMP_GET
+  }
+ , {
+    1, 1, HSMP_GET
+  }
+ , {
+    1, 1, HSMP_GET
+  }
+ , {
+    0, 1, HSMP_GET
+  }
+ , {
+    1, 1, HSMP_GET
+  }
+ , {
+    0, 1, HSMP_GET
+  }
+ , {
+    0, 1, HSMP_GET
+  }
+ , {
+    1, 1, HSMP_GET
+  }
+ , {
+    1, 1, HSMP_GET
+  }
+ , {
+    1, 0, HSMP_SET
+  }
+ , {
+    1, 1, HSMP_SET
+  }
+ , {
+    1, 0, HSMP_SET
+  }
+ , {
+    1, 0, HSMP_SET
+  }
+ ,
+};
+#pragma pack()
+#define HSMP_BASE_IOCTL_NR 0xF8
+#define HSMP_IOCTL_CMD _IOWR(HSMP_BASE_IOCTL_NR, 0, struct hsmp_message)
+#endif
diff --git a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/asm-x86/asm/bootparam.h b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/asm-x86/asm/bootparam.h
index 7401135..ab9d7f3 100644
--- a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/asm-x86/asm/bootparam.h
+++ b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/asm-x86/asm/bootparam.h
@@ -25,8 +25,12 @@
 #define SETUP_EFI 4
 #define SETUP_APPLE_PROPERTIES 5
 #define SETUP_JAILHOUSE 6
+#define SETUP_CC_BLOB 7
+#define SETUP_IMA 8
+#define SETUP_RNG_SEED 9
+#define SETUP_ENUM_MAX SETUP_RNG_SEED
 #define SETUP_INDIRECT (1 << 31)
-#define SETUP_TYPE_MAX (SETUP_INDIRECT | SETUP_JAILHOUSE)
+#define SETUP_TYPE_MAX (SETUP_ENUM_MAX | SETUP_INDIRECT)
 #define RAMDISK_IMAGE_START_MASK 0x07FF
 #define RAMDISK_PROMPT_FLAG 0x8000
 #define RAMDISK_LOAD_FLAG 0x4000
@@ -53,7 +57,7 @@
   __u64 next;
   __u32 type;
   __u32 len;
-  __u8 data[0];
+  __u8 data[];
 };
 struct setup_indirect {
   __u32 type;
@@ -147,6 +151,10 @@
     __u32 flags;
   } __attribute__((packed)) v2;
 } __attribute__((packed));
+struct ima_setup_data {
+  __u64 addr;
+  __u64 size;
+} __attribute__((packed));
 struct boot_params {
   struct screen_info screen_info;
   struct apm_bios_info apm_bios_info;
@@ -162,7 +170,8 @@
   __u32 ext_ramdisk_image;
   __u32 ext_ramdisk_size;
   __u32 ext_cmd_line_ptr;
-  __u8 _pad4[116];
+  __u8 _pad4[112];
+  __u32 cc_blob_address;
   struct edid_info edid_info;
   struct efi_info efi_info;
   __u32 alt_mem_k;
diff --git a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/asm-x86/asm/kvm.h b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/asm-x86/asm/kvm.h
index caf8fc0..f07b00e 100644
--- a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/asm-x86/asm/kvm.h
+++ b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/asm-x86/asm/kvm.h
@@ -178,11 +178,11 @@
 struct kvm_msrs {
   __u32 nmsrs;
   __u32 pad;
-  struct kvm_msr_entry entries[0];
+  struct kvm_msr_entry entries[];
 };
 struct kvm_msr_list {
   __u32 nmsrs;
-  __u32 indices[0];
+  __u32 indices[];
 };
 #define KVM_MSR_FILTER_MAX_BITMAP_SIZE 0x600
 struct kvm_msr_filter_range {
@@ -211,7 +211,7 @@
 struct kvm_cpuid {
   __u32 nent;
   __u32 padding;
-  struct kvm_cpuid_entry entries[0];
+  struct kvm_cpuid_entry entries[];
 };
 struct kvm_cpuid_entry2 {
   __u32 function;
@@ -229,7 +229,7 @@
 struct kvm_cpuid2 {
   __u32 nent;
   __u32 padding;
-  struct kvm_cpuid_entry2 entries[0];
+  struct kvm_cpuid_entry2 entries[];
 };
 struct kvm_pit_channel_state {
   __u32 count;
@@ -265,6 +265,7 @@
   struct kvm_pit_channel_state channels[3];
 };
 #define KVM_PIT_FLAGS_HPET_LEGACY 0x00000001
+#define KVM_PIT_FLAGS_SPEAKER_DATA_ON 0x00000002
 struct kvm_pit_state2 {
   struct kvm_pit_channel_state channels[3];
   __u32 flags;
@@ -279,6 +280,7 @@
 #define KVM_VCPUEVENT_VALID_SHADOW 0x00000004
 #define KVM_VCPUEVENT_VALID_SMM 0x00000008
 #define KVM_VCPUEVENT_VALID_PAYLOAD 0x00000010
+#define KVM_VCPUEVENT_VALID_TRIPLE_FAULT 0x00000020
 #define KVM_X86_SHADOW_INT_MOV_SS 0x01
 #define KVM_X86_SHADOW_INT_STI 0x02
 struct kvm_vcpu_events {
@@ -309,7 +311,10 @@
     __u8 smm_inside_nmi;
     __u8 latched_init;
   } smi;
-  __u8 reserved[27];
+  struct {
+    __u8 pending;
+  } triple_fault;
+  __u8 reserved[26];
   __u8 exception_has_payload;
   __u64 exception_payload;
 };
@@ -322,7 +327,7 @@
 };
 struct kvm_xsave {
   __u32 region[1024];
-  __u32 extra[0];
+  __u32 extra[];
 };
 #define KVM_MAX_XCRS 16
 struct kvm_xcr {
@@ -350,6 +355,8 @@
 #define KVM_X86_QUIRK_LAPIC_MMIO_HOLE (1 << 2)
 #define KVM_X86_QUIRK_OUT_7E_INC_RIP (1 << 3)
 #define KVM_X86_QUIRK_MISC_ENABLE_NO_MWAIT (1 << 4)
+#define KVM_X86_QUIRK_FIX_HYPERCALL_INSN (1 << 5)
+#define KVM_X86_QUIRK_MWAIT_NEVER_UD_FAULTS (1 << 6)
 #define KVM_STATE_NESTED_FORMAT_VMX 0
 #define KVM_STATE_NESTED_FORMAT_SVM 1
 #define KVM_STATE_NESTED_GUEST_MODE 0x00000001
@@ -403,7 +410,7 @@
   __u32 fixed_counter_bitmap;
   __u32 flags;
   __u32 pad[4];
-  __u64 events[0];
+  __u64 events[];
 };
 #define KVM_PMU_EVENT_ALLOW 0
 #define KVM_PMU_EVENT_DENY 1
diff --git a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/asm-x86/asm/processor-flags.h b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/asm-x86/asm/processor-flags.h
index 85f9d7e..0a95afd 100644
--- a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/asm-x86/asm/processor-flags.h
+++ b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/asm-x86/asm/processor-flags.h
@@ -127,6 +127,8 @@
 #define X86_CR4_SMAP _BITUL(X86_CR4_SMAP_BIT)
 #define X86_CR4_PKE_BIT 22
 #define X86_CR4_PKE _BITUL(X86_CR4_PKE_BIT)
+#define X86_CR4_CET_BIT 23
+#define X86_CR4_CET _BITUL(X86_CR4_CET_BIT)
 #define X86_CR8_TPR _AC(0x0000000f, UL)
 #define CX86_PCR0 0x20
 #define CX86_GCR 0xb8
diff --git a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/asm-x86/asm/sgx.h b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/asm-x86/asm/sgx.h
index 1874b78..fdc2700 100644
--- a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/asm-x86/asm/sgx.h
+++ b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/asm-x86/asm/sgx.h
@@ -29,6 +29,9 @@
 #define SGX_IOC_ENCLAVE_INIT _IOW(SGX_MAGIC, 0x02, struct sgx_enclave_init)
 #define SGX_IOC_ENCLAVE_PROVISION _IOW(SGX_MAGIC, 0x03, struct sgx_enclave_provision)
 #define SGX_IOC_VEPC_REMOVE_ALL _IO(SGX_MAGIC, 0x04)
+#define SGX_IOC_ENCLAVE_RESTRICT_PERMISSIONS _IOWR(SGX_MAGIC, 0x05, struct sgx_enclave_restrict_permissions)
+#define SGX_IOC_ENCLAVE_MODIFY_TYPES _IOWR(SGX_MAGIC, 0x06, struct sgx_enclave_modify_types)
+#define SGX_IOC_ENCLAVE_REMOVE_PAGES _IOWR(SGX_MAGIC, 0x07, struct sgx_enclave_remove_pages)
 struct sgx_enclave_create {
   __u64 src;
 };
@@ -46,6 +49,25 @@
 struct sgx_enclave_provision {
   __u64 fd;
 };
+struct sgx_enclave_restrict_permissions {
+  __u64 offset;
+  __u64 length;
+  __u64 permissions;
+  __u64 result;
+  __u64 count;
+};
+struct sgx_enclave_modify_types {
+  __u64 offset;
+  __u64 length;
+  __u64 page_type;
+  __u64 result;
+  __u64 count;
+};
+struct sgx_enclave_remove_pages {
+  __u64 offset;
+  __u64 length;
+  __u64 count;
+};
 struct sgx_enclave_run;
 typedef int(* sgx_enclave_user_handler_t) (long rdi, long rsi, long rdx, long rsp, long r8, long r9, struct sgx_enclave_run * run);
 struct sgx_enclave_run {
diff --git a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/asm-x86/asm/shmbuf.h b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/asm-x86/asm/shmbuf.h
index 03e195e..2a0dcb5 100644
--- a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/asm-x86/asm/shmbuf.h
+++ b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/asm-x86/asm/shmbuf.h
@@ -21,9 +21,11 @@
 #if !defined(__x86_64__) || !defined(__ILP32__)
 #include <asm-generic/shmbuf.h>
 #else
+#include <asm/ipcbuf.h>
+#include <asm/posix_types.h>
 struct shmid64_ds {
   struct ipc64_perm shm_perm;
-  size_t shm_segsz;
+  __kernel_size_t shm_segsz;
   __kernel_long_t shm_atime;
   __kernel_long_t shm_dtime;
   __kernel_long_t shm_ctime;
diff --git a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/asm-x86/asm/signal.h b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/asm-x86/asm/signal.h
index 8226da8..cbeeac4 100644
--- a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/asm-x86/asm/signal.h
+++ b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/asm-x86/asm/signal.h
@@ -90,7 +90,7 @@
 typedef struct sigaltstack {
   void __user * ss_sp;
   int ss_flags;
-  size_t ss_size;
+  __kernel_size_t ss_size;
 } stack_t;
 #endif
 #endif
diff --git a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/asm-x86/asm/svm.h b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/asm-x86/asm/svm.h
index d051481..8bda2d5 100644
--- a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/asm-x86/asm/svm.h
+++ b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/asm-x86/asm/svm.h
@@ -122,8 +122,16 @@
 #define SVM_VMGEXIT_AP_JUMP_TABLE 0x80000005
 #define SVM_VMGEXIT_SET_AP_JUMP_TABLE 0
 #define SVM_VMGEXIT_GET_AP_JUMP_TABLE 1
+#define SVM_VMGEXIT_PSC 0x80000010
+#define SVM_VMGEXIT_GUEST_REQUEST 0x80000011
+#define SVM_VMGEXIT_EXT_GUEST_REQUEST 0x80000012
+#define SVM_VMGEXIT_AP_CREATION 0x80000013
+#define SVM_VMGEXIT_AP_CREATE_ON_INIT 0
+#define SVM_VMGEXIT_AP_CREATE 1
+#define SVM_VMGEXIT_AP_DESTROY 2
+#define SVM_VMGEXIT_HV_FEATURES 0x8000fffd
 #define SVM_VMGEXIT_UNSUPPORTED_EVENT 0x8000ffff
 #define SVM_EXIT_SW 0xf0000000
 #define SVM_EXIT_ERR - 1
-#define SVM_EXIT_REASONS { SVM_EXIT_READ_CR0, "read_cr0" }, { SVM_EXIT_READ_CR2, "read_cr2" }, { SVM_EXIT_READ_CR3, "read_cr3" }, { SVM_EXIT_READ_CR4, "read_cr4" }, { SVM_EXIT_READ_CR8, "read_cr8" }, { SVM_EXIT_WRITE_CR0, "write_cr0" }, { SVM_EXIT_WRITE_CR2, "write_cr2" }, { SVM_EXIT_WRITE_CR3, "write_cr3" }, { SVM_EXIT_WRITE_CR4, "write_cr4" }, { SVM_EXIT_WRITE_CR8, "write_cr8" }, { SVM_EXIT_READ_DR0, "read_dr0" }, { SVM_EXIT_READ_DR1, "read_dr1" }, { SVM_EXIT_READ_DR2, "read_dr2" }, { SVM_EXIT_READ_DR3, "read_dr3" }, { SVM_EXIT_READ_DR4, "read_dr4" }, { SVM_EXIT_READ_DR5, "read_dr5" }, { SVM_EXIT_READ_DR6, "read_dr6" }, { SVM_EXIT_READ_DR7, "read_dr7" }, { SVM_EXIT_WRITE_DR0, "write_dr0" }, { SVM_EXIT_WRITE_DR1, "write_dr1" }, { SVM_EXIT_WRITE_DR2, "write_dr2" }, { SVM_EXIT_WRITE_DR3, "write_dr3" }, { SVM_EXIT_WRITE_DR4, "write_dr4" }, { SVM_EXIT_WRITE_DR5, "write_dr5" }, { SVM_EXIT_WRITE_DR6, "write_dr6" }, { SVM_EXIT_WRITE_DR7, "write_dr7" }, { SVM_EXIT_EXCP_BASE + DE_VECTOR, "DE excp" }, { SVM_EXIT_EXCP_BASE + DB_VECTOR, "DB excp" }, { SVM_EXIT_EXCP_BASE + BP_VECTOR, "BP excp" }, { SVM_EXIT_EXCP_BASE + OF_VECTOR, "OF excp" }, { SVM_EXIT_EXCP_BASE + BR_VECTOR, "BR excp" }, { SVM_EXIT_EXCP_BASE + UD_VECTOR, "UD excp" }, { SVM_EXIT_EXCP_BASE + NM_VECTOR, "NM excp" }, { SVM_EXIT_EXCP_BASE + DF_VECTOR, "DF excp" }, { SVM_EXIT_EXCP_BASE + TS_VECTOR, "TS excp" }, { SVM_EXIT_EXCP_BASE + NP_VECTOR, "NP excp" }, { SVM_EXIT_EXCP_BASE + SS_VECTOR, "SS excp" }, { SVM_EXIT_EXCP_BASE + GP_VECTOR, "GP excp" }, { SVM_EXIT_EXCP_BASE + PF_VECTOR, "PF excp" }, { SVM_EXIT_EXCP_BASE + MF_VECTOR, "MF excp" }, { SVM_EXIT_EXCP_BASE + AC_VECTOR, "AC excp" }, { SVM_EXIT_EXCP_BASE + MC_VECTOR, "MC excp" }, { SVM_EXIT_EXCP_BASE + XM_VECTOR, "XF excp" }, { SVM_EXIT_INTR, "interrupt" }, { SVM_EXIT_NMI, "nmi" }, { SVM_EXIT_SMI, "smi" }, { SVM_EXIT_INIT, "init" }, { SVM_EXIT_VINTR, "vintr" }, { SVM_EXIT_CR0_SEL_WRITE, "cr0_sel_write" }, { SVM_EXIT_IDTR_READ, "read_idtr" }, { SVM_EXIT_GDTR_READ, "read_gdtr" }, { SVM_EXIT_LDTR_READ, "read_ldtr" }, { SVM_EXIT_TR_READ, "read_rt" }, { SVM_EXIT_IDTR_WRITE, "write_idtr" }, { SVM_EXIT_GDTR_WRITE, "write_gdtr" }, { SVM_EXIT_LDTR_WRITE, "write_ldtr" }, { SVM_EXIT_TR_WRITE, "write_rt" }, { SVM_EXIT_RDTSC, "rdtsc" }, { SVM_EXIT_RDPMC, "rdpmc" }, { SVM_EXIT_PUSHF, "pushf" }, { SVM_EXIT_POPF, "popf" }, { SVM_EXIT_CPUID, "cpuid" }, { SVM_EXIT_RSM, "rsm" }, { SVM_EXIT_IRET, "iret" }, { SVM_EXIT_SWINT, "swint" }, { SVM_EXIT_INVD, "invd" }, { SVM_EXIT_PAUSE, "pause" }, { SVM_EXIT_HLT, "hlt" }, { SVM_EXIT_INVLPG, "invlpg" }, { SVM_EXIT_INVLPGA, "invlpga" }, { SVM_EXIT_IOIO, "io" }, { SVM_EXIT_MSR, "msr" }, { SVM_EXIT_TASK_SWITCH, "task_switch" }, { SVM_EXIT_FERR_FREEZE, "ferr_freeze" }, { SVM_EXIT_SHUTDOWN, "shutdown" }, { SVM_EXIT_VMRUN, "vmrun" }, { SVM_EXIT_VMMCALL, "hypercall" }, { SVM_EXIT_VMLOAD, "vmload" }, { SVM_EXIT_VMSAVE, "vmsave" }, { SVM_EXIT_STGI, "stgi" }, { SVM_EXIT_CLGI, "clgi" }, { SVM_EXIT_SKINIT, "skinit" }, { SVM_EXIT_RDTSCP, "rdtscp" }, { SVM_EXIT_ICEBP, "icebp" }, { SVM_EXIT_WBINVD, "wbinvd" }, { SVM_EXIT_MONITOR, "monitor" }, { SVM_EXIT_MWAIT, "mwait" }, { SVM_EXIT_XSETBV, "xsetbv" }, { SVM_EXIT_EFER_WRITE_TRAP, "write_efer_trap" }, { SVM_EXIT_CR0_WRITE_TRAP, "write_cr0_trap" }, { SVM_EXIT_CR4_WRITE_TRAP, "write_cr4_trap" }, { SVM_EXIT_CR8_WRITE_TRAP, "write_cr8_trap" }, { SVM_EXIT_INVPCID, "invpcid" }, { SVM_EXIT_NPF, "npf" }, { SVM_EXIT_AVIC_INCOMPLETE_IPI, "avic_incomplete_ipi" }, { SVM_EXIT_AVIC_UNACCELERATED_ACCESS, "avic_unaccelerated_access" }, { SVM_EXIT_VMGEXIT, "vmgexit" }, { SVM_VMGEXIT_MMIO_READ, "vmgexit_mmio_read" }, { SVM_VMGEXIT_MMIO_WRITE, "vmgexit_mmio_write" }, { SVM_VMGEXIT_NMI_COMPLETE, "vmgexit_nmi_complete" }, { SVM_VMGEXIT_AP_HLT_LOOP, "vmgexit_ap_hlt_loop" }, { SVM_VMGEXIT_AP_JUMP_TABLE, "vmgexit_ap_jump_table" }, { SVM_EXIT_ERR, "invalid_guest_state" }
+#define SVM_EXIT_REASONS { SVM_EXIT_READ_CR0, "read_cr0" }, { SVM_EXIT_READ_CR2, "read_cr2" }, { SVM_EXIT_READ_CR3, "read_cr3" }, { SVM_EXIT_READ_CR4, "read_cr4" }, { SVM_EXIT_READ_CR8, "read_cr8" }, { SVM_EXIT_WRITE_CR0, "write_cr0" }, { SVM_EXIT_WRITE_CR2, "write_cr2" }, { SVM_EXIT_WRITE_CR3, "write_cr3" }, { SVM_EXIT_WRITE_CR4, "write_cr4" }, { SVM_EXIT_WRITE_CR8, "write_cr8" }, { SVM_EXIT_READ_DR0, "read_dr0" }, { SVM_EXIT_READ_DR1, "read_dr1" }, { SVM_EXIT_READ_DR2, "read_dr2" }, { SVM_EXIT_READ_DR3, "read_dr3" }, { SVM_EXIT_READ_DR4, "read_dr4" }, { SVM_EXIT_READ_DR5, "read_dr5" }, { SVM_EXIT_READ_DR6, "read_dr6" }, { SVM_EXIT_READ_DR7, "read_dr7" }, { SVM_EXIT_WRITE_DR0, "write_dr0" }, { SVM_EXIT_WRITE_DR1, "write_dr1" }, { SVM_EXIT_WRITE_DR2, "write_dr2" }, { SVM_EXIT_WRITE_DR3, "write_dr3" }, { SVM_EXIT_WRITE_DR4, "write_dr4" }, { SVM_EXIT_WRITE_DR5, "write_dr5" }, { SVM_EXIT_WRITE_DR6, "write_dr6" }, { SVM_EXIT_WRITE_DR7, "write_dr7" }, { SVM_EXIT_EXCP_BASE + DE_VECTOR, "DE excp" }, { SVM_EXIT_EXCP_BASE + DB_VECTOR, "DB excp" }, { SVM_EXIT_EXCP_BASE + BP_VECTOR, "BP excp" }, { SVM_EXIT_EXCP_BASE + OF_VECTOR, "OF excp" }, { SVM_EXIT_EXCP_BASE + BR_VECTOR, "BR excp" }, { SVM_EXIT_EXCP_BASE + UD_VECTOR, "UD excp" }, { SVM_EXIT_EXCP_BASE + NM_VECTOR, "NM excp" }, { SVM_EXIT_EXCP_BASE + DF_VECTOR, "DF excp" }, { SVM_EXIT_EXCP_BASE + TS_VECTOR, "TS excp" }, { SVM_EXIT_EXCP_BASE + NP_VECTOR, "NP excp" }, { SVM_EXIT_EXCP_BASE + SS_VECTOR, "SS excp" }, { SVM_EXIT_EXCP_BASE + GP_VECTOR, "GP excp" }, { SVM_EXIT_EXCP_BASE + PF_VECTOR, "PF excp" }, { SVM_EXIT_EXCP_BASE + MF_VECTOR, "MF excp" }, { SVM_EXIT_EXCP_BASE + AC_VECTOR, "AC excp" }, { SVM_EXIT_EXCP_BASE + MC_VECTOR, "MC excp" }, { SVM_EXIT_EXCP_BASE + XM_VECTOR, "XF excp" }, { SVM_EXIT_INTR, "interrupt" }, { SVM_EXIT_NMI, "nmi" }, { SVM_EXIT_SMI, "smi" }, { SVM_EXIT_INIT, "init" }, { SVM_EXIT_VINTR, "vintr" }, { SVM_EXIT_CR0_SEL_WRITE, "cr0_sel_write" }, { SVM_EXIT_IDTR_READ, "read_idtr" }, { SVM_EXIT_GDTR_READ, "read_gdtr" }, { SVM_EXIT_LDTR_READ, "read_ldtr" }, { SVM_EXIT_TR_READ, "read_rt" }, { SVM_EXIT_IDTR_WRITE, "write_idtr" }, { SVM_EXIT_GDTR_WRITE, "write_gdtr" }, { SVM_EXIT_LDTR_WRITE, "write_ldtr" }, { SVM_EXIT_TR_WRITE, "write_rt" }, { SVM_EXIT_RDTSC, "rdtsc" }, { SVM_EXIT_RDPMC, "rdpmc" }, { SVM_EXIT_PUSHF, "pushf" }, { SVM_EXIT_POPF, "popf" }, { SVM_EXIT_CPUID, "cpuid" }, { SVM_EXIT_RSM, "rsm" }, { SVM_EXIT_IRET, "iret" }, { SVM_EXIT_SWINT, "swint" }, { SVM_EXIT_INVD, "invd" }, { SVM_EXIT_PAUSE, "pause" }, { SVM_EXIT_HLT, "hlt" }, { SVM_EXIT_INVLPG, "invlpg" }, { SVM_EXIT_INVLPGA, "invlpga" }, { SVM_EXIT_IOIO, "io" }, { SVM_EXIT_MSR, "msr" }, { SVM_EXIT_TASK_SWITCH, "task_switch" }, { SVM_EXIT_FERR_FREEZE, "ferr_freeze" }, { SVM_EXIT_SHUTDOWN, "shutdown" }, { SVM_EXIT_VMRUN, "vmrun" }, { SVM_EXIT_VMMCALL, "hypercall" }, { SVM_EXIT_VMLOAD, "vmload" }, { SVM_EXIT_VMSAVE, "vmsave" }, { SVM_EXIT_STGI, "stgi" }, { SVM_EXIT_CLGI, "clgi" }, { SVM_EXIT_SKINIT, "skinit" }, { SVM_EXIT_RDTSCP, "rdtscp" }, { SVM_EXIT_ICEBP, "icebp" }, { SVM_EXIT_WBINVD, "wbinvd" }, { SVM_EXIT_MONITOR, "monitor" }, { SVM_EXIT_MWAIT, "mwait" }, { SVM_EXIT_XSETBV, "xsetbv" }, { SVM_EXIT_EFER_WRITE_TRAP, "write_efer_trap" }, { SVM_EXIT_CR0_WRITE_TRAP, "write_cr0_trap" }, { SVM_EXIT_CR4_WRITE_TRAP, "write_cr4_trap" }, { SVM_EXIT_CR8_WRITE_TRAP, "write_cr8_trap" }, { SVM_EXIT_INVPCID, "invpcid" }, { SVM_EXIT_NPF, "npf" }, { SVM_EXIT_AVIC_INCOMPLETE_IPI, "avic_incomplete_ipi" }, { SVM_EXIT_AVIC_UNACCELERATED_ACCESS, "avic_unaccelerated_access" }, { SVM_EXIT_VMGEXIT, "vmgexit" }, { SVM_VMGEXIT_MMIO_READ, "vmgexit_mmio_read" }, { SVM_VMGEXIT_MMIO_WRITE, "vmgexit_mmio_write" }, { SVM_VMGEXIT_NMI_COMPLETE, "vmgexit_nmi_complete" }, { SVM_VMGEXIT_AP_HLT_LOOP, "vmgexit_ap_hlt_loop" }, { SVM_VMGEXIT_AP_JUMP_TABLE, "vmgexit_ap_jump_table" }, { SVM_VMGEXIT_PSC, "vmgexit_page_state_change" }, { SVM_VMGEXIT_GUEST_REQUEST, "vmgexit_guest_request" }, { SVM_VMGEXIT_EXT_GUEST_REQUEST, "vmgexit_ext_guest_request" }, { SVM_VMGEXIT_AP_CREATION, "vmgexit_ap_creation" }, { SVM_VMGEXIT_HV_FEATURES, "vmgexit_hypervisor_feature" }, { SVM_EXIT_ERR, "invalid_guest_state" }
 #endif
diff --git a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/asm-x86/asm/vmx.h b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/asm-x86/asm/vmx.h
index 6c07d4c..fdea539 100644
--- a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/asm-x86/asm/vmx.h
+++ b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/asm-x86/asm/vmx.h
@@ -81,7 +81,8 @@
 #define EXIT_REASON_UMWAIT 67
 #define EXIT_REASON_TPAUSE 68
 #define EXIT_REASON_BUS_LOCK 74
-#define VMX_EXIT_REASONS { EXIT_REASON_EXCEPTION_NMI, "EXCEPTION_NMI" }, { EXIT_REASON_EXTERNAL_INTERRUPT, "EXTERNAL_INTERRUPT" }, { EXIT_REASON_TRIPLE_FAULT, "TRIPLE_FAULT" }, { EXIT_REASON_INIT_SIGNAL, "INIT_SIGNAL" }, { EXIT_REASON_SIPI_SIGNAL, "SIPI_SIGNAL" }, { EXIT_REASON_INTERRUPT_WINDOW, "INTERRUPT_WINDOW" }, { EXIT_REASON_NMI_WINDOW, "NMI_WINDOW" }, { EXIT_REASON_TASK_SWITCH, "TASK_SWITCH" }, { EXIT_REASON_CPUID, "CPUID" }, { EXIT_REASON_HLT, "HLT" }, { EXIT_REASON_INVD, "INVD" }, { EXIT_REASON_INVLPG, "INVLPG" }, { EXIT_REASON_RDPMC, "RDPMC" }, { EXIT_REASON_RDTSC, "RDTSC" }, { EXIT_REASON_VMCALL, "VMCALL" }, { EXIT_REASON_VMCLEAR, "VMCLEAR" }, { EXIT_REASON_VMLAUNCH, "VMLAUNCH" }, { EXIT_REASON_VMPTRLD, "VMPTRLD" }, { EXIT_REASON_VMPTRST, "VMPTRST" }, { EXIT_REASON_VMREAD, "VMREAD" }, { EXIT_REASON_VMRESUME, "VMRESUME" }, { EXIT_REASON_VMWRITE, "VMWRITE" }, { EXIT_REASON_VMOFF, "VMOFF" }, { EXIT_REASON_VMON, "VMON" }, { EXIT_REASON_CR_ACCESS, "CR_ACCESS" }, { EXIT_REASON_DR_ACCESS, "DR_ACCESS" }, { EXIT_REASON_IO_INSTRUCTION, "IO_INSTRUCTION" }, { EXIT_REASON_MSR_READ, "MSR_READ" }, { EXIT_REASON_MSR_WRITE, "MSR_WRITE" }, { EXIT_REASON_INVALID_STATE, "INVALID_STATE" }, { EXIT_REASON_MSR_LOAD_FAIL, "MSR_LOAD_FAIL" }, { EXIT_REASON_MWAIT_INSTRUCTION, "MWAIT_INSTRUCTION" }, { EXIT_REASON_MONITOR_TRAP_FLAG, "MONITOR_TRAP_FLAG" }, { EXIT_REASON_MONITOR_INSTRUCTION, "MONITOR_INSTRUCTION" }, { EXIT_REASON_PAUSE_INSTRUCTION, "PAUSE_INSTRUCTION" }, { EXIT_REASON_MCE_DURING_VMENTRY, "MCE_DURING_VMENTRY" }, { EXIT_REASON_TPR_BELOW_THRESHOLD, "TPR_BELOW_THRESHOLD" }, { EXIT_REASON_APIC_ACCESS, "APIC_ACCESS" }, { EXIT_REASON_EOI_INDUCED, "EOI_INDUCED" }, { EXIT_REASON_GDTR_IDTR, "GDTR_IDTR" }, { EXIT_REASON_LDTR_TR, "LDTR_TR" }, { EXIT_REASON_EPT_VIOLATION, "EPT_VIOLATION" }, { EXIT_REASON_EPT_MISCONFIG, "EPT_MISCONFIG" }, { EXIT_REASON_INVEPT, "INVEPT" }, { EXIT_REASON_RDTSCP, "RDTSCP" }, { EXIT_REASON_PREEMPTION_TIMER, "PREEMPTION_TIMER" }, { EXIT_REASON_INVVPID, "INVVPID" }, { EXIT_REASON_WBINVD, "WBINVD" }, { EXIT_REASON_XSETBV, "XSETBV" }, { EXIT_REASON_APIC_WRITE, "APIC_WRITE" }, { EXIT_REASON_RDRAND, "RDRAND" }, { EXIT_REASON_INVPCID, "INVPCID" }, { EXIT_REASON_VMFUNC, "VMFUNC" }, { EXIT_REASON_ENCLS, "ENCLS" }, { EXIT_REASON_RDSEED, "RDSEED" }, { EXIT_REASON_PML_FULL, "PML_FULL" }, { EXIT_REASON_XSAVES, "XSAVES" }, { EXIT_REASON_XRSTORS, "XRSTORS" }, { EXIT_REASON_UMWAIT, "UMWAIT" }, { EXIT_REASON_TPAUSE, "TPAUSE" }, { EXIT_REASON_BUS_LOCK, "BUS_LOCK" }
+#define EXIT_REASON_NOTIFY 75
+#define VMX_EXIT_REASONS { EXIT_REASON_EXCEPTION_NMI, "EXCEPTION_NMI" }, { EXIT_REASON_EXTERNAL_INTERRUPT, "EXTERNAL_INTERRUPT" }, { EXIT_REASON_TRIPLE_FAULT, "TRIPLE_FAULT" }, { EXIT_REASON_INIT_SIGNAL, "INIT_SIGNAL" }, { EXIT_REASON_SIPI_SIGNAL, "SIPI_SIGNAL" }, { EXIT_REASON_INTERRUPT_WINDOW, "INTERRUPT_WINDOW" }, { EXIT_REASON_NMI_WINDOW, "NMI_WINDOW" }, { EXIT_REASON_TASK_SWITCH, "TASK_SWITCH" }, { EXIT_REASON_CPUID, "CPUID" }, { EXIT_REASON_HLT, "HLT" }, { EXIT_REASON_INVD, "INVD" }, { EXIT_REASON_INVLPG, "INVLPG" }, { EXIT_REASON_RDPMC, "RDPMC" }, { EXIT_REASON_RDTSC, "RDTSC" }, { EXIT_REASON_VMCALL, "VMCALL" }, { EXIT_REASON_VMCLEAR, "VMCLEAR" }, { EXIT_REASON_VMLAUNCH, "VMLAUNCH" }, { EXIT_REASON_VMPTRLD, "VMPTRLD" }, { EXIT_REASON_VMPTRST, "VMPTRST" }, { EXIT_REASON_VMREAD, "VMREAD" }, { EXIT_REASON_VMRESUME, "VMRESUME" }, { EXIT_REASON_VMWRITE, "VMWRITE" }, { EXIT_REASON_VMOFF, "VMOFF" }, { EXIT_REASON_VMON, "VMON" }, { EXIT_REASON_CR_ACCESS, "CR_ACCESS" }, { EXIT_REASON_DR_ACCESS, "DR_ACCESS" }, { EXIT_REASON_IO_INSTRUCTION, "IO_INSTRUCTION" }, { EXIT_REASON_MSR_READ, "MSR_READ" }, { EXIT_REASON_MSR_WRITE, "MSR_WRITE" }, { EXIT_REASON_INVALID_STATE, "INVALID_STATE" }, { EXIT_REASON_MSR_LOAD_FAIL, "MSR_LOAD_FAIL" }, { EXIT_REASON_MWAIT_INSTRUCTION, "MWAIT_INSTRUCTION" }, { EXIT_REASON_MONITOR_TRAP_FLAG, "MONITOR_TRAP_FLAG" }, { EXIT_REASON_MONITOR_INSTRUCTION, "MONITOR_INSTRUCTION" }, { EXIT_REASON_PAUSE_INSTRUCTION, "PAUSE_INSTRUCTION" }, { EXIT_REASON_MCE_DURING_VMENTRY, "MCE_DURING_VMENTRY" }, { EXIT_REASON_TPR_BELOW_THRESHOLD, "TPR_BELOW_THRESHOLD" }, { EXIT_REASON_APIC_ACCESS, "APIC_ACCESS" }, { EXIT_REASON_EOI_INDUCED, "EOI_INDUCED" }, { EXIT_REASON_GDTR_IDTR, "GDTR_IDTR" }, { EXIT_REASON_LDTR_TR, "LDTR_TR" }, { EXIT_REASON_EPT_VIOLATION, "EPT_VIOLATION" }, { EXIT_REASON_EPT_MISCONFIG, "EPT_MISCONFIG" }, { EXIT_REASON_INVEPT, "INVEPT" }, { EXIT_REASON_RDTSCP, "RDTSCP" }, { EXIT_REASON_PREEMPTION_TIMER, "PREEMPTION_TIMER" }, { EXIT_REASON_INVVPID, "INVVPID" }, { EXIT_REASON_WBINVD, "WBINVD" }, { EXIT_REASON_XSETBV, "XSETBV" }, { EXIT_REASON_APIC_WRITE, "APIC_WRITE" }, { EXIT_REASON_RDRAND, "RDRAND" }, { EXIT_REASON_INVPCID, "INVPCID" }, { EXIT_REASON_VMFUNC, "VMFUNC" }, { EXIT_REASON_ENCLS, "ENCLS" }, { EXIT_REASON_RDSEED, "RDSEED" }, { EXIT_REASON_PML_FULL, "PML_FULL" }, { EXIT_REASON_XSAVES, "XSAVES" }, { EXIT_REASON_XRSTORS, "XRSTORS" }, { EXIT_REASON_UMWAIT, "UMWAIT" }, { EXIT_REASON_TPAUSE, "TPAUSE" }, { EXIT_REASON_BUS_LOCK, "BUS_LOCK" }, { EXIT_REASON_NOTIFY, "NOTIFY" }
 #define VMX_EXIT_REASON_FLAGS { VMX_EXIT_REASONS_FAILED_VMENTRY, "FAILED_VMENTRY" }
 #define VMX_ABORT_SAVE_GUEST_MSR_FAIL 1
 #define VMX_ABORT_LOAD_HOST_PDPTE_FAIL 2
diff --git a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/drm/amdgpu_drm.h b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/drm/amdgpu_drm.h
index 3764d51..658eb31 100644
--- a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/drm/amdgpu_drm.h
+++ b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/drm/amdgpu_drm.h
@@ -72,6 +72,7 @@
 #define AMDGPU_GEM_CREATE_VRAM_WIPE_ON_RELEASE (1 << 9)
 #define AMDGPU_GEM_CREATE_ENCRYPTED (1 << 10)
 #define AMDGPU_GEM_CREATE_PREEMPTIBLE (1 << 11)
+#define AMDGPU_GEM_CREATE_DISCARDABLE (1 << 12)
 struct drm_amdgpu_gem_create_in {
   __u64 bo_size;
   __u64 alignment;
@@ -112,6 +113,8 @@
 #define AMDGPU_CTX_OP_FREE_CTX 2
 #define AMDGPU_CTX_OP_QUERY_STATE 3
 #define AMDGPU_CTX_OP_QUERY_STATE2 4
+#define AMDGPU_CTX_OP_GET_STABLE_PSTATE 5
+#define AMDGPU_CTX_OP_SET_STABLE_PSTATE 6
 #define AMDGPU_CTX_NO_RESET 0
 #define AMDGPU_CTX_GUILTY_RESET 1
 #define AMDGPU_CTX_INNOCENT_RESET 2
@@ -127,6 +130,12 @@
 #define AMDGPU_CTX_PRIORITY_NORMAL 0
 #define AMDGPU_CTX_PRIORITY_HIGH 512
 #define AMDGPU_CTX_PRIORITY_VERY_HIGH 1023
+#define AMDGPU_CTX_STABLE_PSTATE_FLAGS_MASK 0xf
+#define AMDGPU_CTX_STABLE_PSTATE_NONE 0
+#define AMDGPU_CTX_STABLE_PSTATE_STANDARD 1
+#define AMDGPU_CTX_STABLE_PSTATE_MIN_SCLK 2
+#define AMDGPU_CTX_STABLE_PSTATE_MIN_MCLK 3
+#define AMDGPU_CTX_STABLE_PSTATE_PEAK 4
 struct drm_amdgpu_ctx_in {
   __u32 op;
   __u32 flags;
@@ -143,6 +152,10 @@
     __u32 hangs;
     __u32 reset_status;
   } state;
+  struct {
+    __u32 flags;
+    __u32 _pad;
+  } pstate;
 };
 union drm_amdgpu_ctx {
   struct drm_amdgpu_ctx_in in;
@@ -307,6 +320,7 @@
 #define AMDGPU_VM_MTYPE_CC (3 << 5)
 #define AMDGPU_VM_MTYPE_UC (4 << 5)
 #define AMDGPU_VM_MTYPE_RW (5 << 5)
+#define AMDGPU_VM_PAGE_NOALLOC (1 << 9)
 struct drm_amdgpu_gem_va {
   __u32 handle;
   __u32 _pad;
@@ -438,6 +452,12 @@
 #define AMDGPU_INFO_FW_TA 0x13
 #define AMDGPU_INFO_FW_DMCUB 0x14
 #define AMDGPU_INFO_FW_TOC 0x15
+#define AMDGPU_INFO_FW_CAP 0x16
+#define AMDGPU_INFO_FW_GFX_RLCP 0x17
+#define AMDGPU_INFO_FW_GFX_RLCV 0x18
+#define AMDGPU_INFO_FW_MES_KIQ 0x19
+#define AMDGPU_INFO_FW_MES 0x1a
+#define AMDGPU_INFO_FW_IMU 0x1b
 #define AMDGPU_INFO_NUM_BYTES_MOVED 0x0f
 #define AMDGPU_INFO_VRAM_USAGE 0x10
 #define AMDGPU_INFO_GTT_USAGE 0x11
@@ -575,6 +595,8 @@
 #define AMDGPU_VRAM_TYPE_DDR4 8
 #define AMDGPU_VRAM_TYPE_GDDR6 9
 #define AMDGPU_VRAM_TYPE_DDR5 10
+#define AMDGPU_VRAM_TYPE_LPDDR4 11
+#define AMDGPU_VRAM_TYPE_LPDDR5 12
 struct drm_amdgpu_info_device {
   __u32 device_id;
   __u32 chip_rev;
@@ -633,7 +655,7 @@
   __u32 ib_start_alignment;
   __u32 ib_size_alignment;
   __u32 available_rings;
-  __u32 _pad;
+  __u32 ip_discovery_version;
 };
 struct drm_amdgpu_info_num_handles {
   __u32 uvd_max_handles;
@@ -681,7 +703,11 @@
 #define AMDGPU_FAMILY_RV 142
 #define AMDGPU_FAMILY_NV 143
 #define AMDGPU_FAMILY_VGH 144
+#define AMDGPU_FAMILY_GC_11_0_0 145
 #define AMDGPU_FAMILY_YC 146
+#define AMDGPU_FAMILY_GC_11_0_1 148
+#define AMDGPU_FAMILY_GC_10_3_6 149
+#define AMDGPU_FAMILY_GC_10_3_7 151
 #ifdef __cplusplus
 }
 #endif
diff --git a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/drm/drm_fourcc.h b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/drm/drm_fourcc.h
index e845c8c..8188b8f 100644
--- a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/drm/drm_fourcc.h
+++ b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/drm/drm_fourcc.h
@@ -25,7 +25,17 @@
 #define fourcc_code(a,b,c,d) ((__u32) (a) | ((__u32) (b) << 8) | ((__u32) (c) << 16) | ((__u32) (d) << 24))
 #define DRM_FORMAT_BIG_ENDIAN (1U << 31)
 #define DRM_FORMAT_INVALID 0
+#define DRM_FORMAT_C1 fourcc_code('C', '1', ' ', ' ')
+#define DRM_FORMAT_C2 fourcc_code('C', '2', ' ', ' ')
+#define DRM_FORMAT_C4 fourcc_code('C', '4', ' ', ' ')
 #define DRM_FORMAT_C8 fourcc_code('C', '8', ' ', ' ')
+#define DRM_FORMAT_D1 fourcc_code('D', '1', ' ', ' ')
+#define DRM_FORMAT_D2 fourcc_code('D', '2', ' ', ' ')
+#define DRM_FORMAT_D4 fourcc_code('D', '4', ' ', ' ')
+#define DRM_FORMAT_D8 fourcc_code('D', '8', ' ', ' ')
+#define DRM_FORMAT_R1 fourcc_code('R', '1', ' ', ' ')
+#define DRM_FORMAT_R2 fourcc_code('R', '2', ' ', ' ')
+#define DRM_FORMAT_R4 fourcc_code('R', '4', ' ', ' ')
 #define DRM_FORMAT_R8 fourcc_code('R', '8', ' ', ' ')
 #define DRM_FORMAT_R10 fourcc_code('R', '1', '0', ' ')
 #define DRM_FORMAT_R12 fourcc_code('R', '1', '2', ' ')
@@ -86,7 +96,9 @@
 #define DRM_FORMAT_UYVY fourcc_code('U', 'Y', 'V', 'Y')
 #define DRM_FORMAT_VYUY fourcc_code('V', 'Y', 'U', 'Y')
 #define DRM_FORMAT_AYUV fourcc_code('A', 'Y', 'U', 'V')
+#define DRM_FORMAT_AVUY8888 fourcc_code('A', 'V', 'U', 'Y')
 #define DRM_FORMAT_XYUV8888 fourcc_code('X', 'Y', 'U', 'V')
+#define DRM_FORMAT_XVUY8888 fourcc_code('X', 'V', 'U', 'Y')
 #define DRM_FORMAT_VUY888 fourcc_code('V', 'U', '2', '4')
 #define DRM_FORMAT_VUY101010 fourcc_code('V', 'U', '3', '0')
 #define DRM_FORMAT_Y210 fourcc_code('Y', '2', '1', '0')
@@ -163,9 +175,15 @@
 #define I915_FORMAT_MOD_Y_TILED_GEN12_RC_CCS fourcc_mod_code(INTEL, 6)
 #define I915_FORMAT_MOD_Y_TILED_GEN12_MC_CCS fourcc_mod_code(INTEL, 7)
 #define I915_FORMAT_MOD_Y_TILED_GEN12_RC_CCS_CC fourcc_mod_code(INTEL, 8)
+#define I915_FORMAT_MOD_4_TILED fourcc_mod_code(INTEL, 9)
+#define I915_FORMAT_MOD_4_TILED_DG2_RC_CCS fourcc_mod_code(INTEL, 10)
+#define I915_FORMAT_MOD_4_TILED_DG2_MC_CCS fourcc_mod_code(INTEL, 11)
+#define I915_FORMAT_MOD_4_TILED_DG2_RC_CCS_CC fourcc_mod_code(INTEL, 12)
 #define DRM_FORMAT_MOD_SAMSUNG_64_32_TILE fourcc_mod_code(SAMSUNG, 1)
 #define DRM_FORMAT_MOD_SAMSUNG_16_16_TILE fourcc_mod_code(SAMSUNG, 2)
 #define DRM_FORMAT_MOD_QCOM_COMPRESSED fourcc_mod_code(QCOM, 1)
+#define DRM_FORMAT_MOD_QCOM_TILED3 fourcc_mod_code(QCOM, 3)
+#define DRM_FORMAT_MOD_QCOM_TILED2 fourcc_mod_code(QCOM, 2)
 #define DRM_FORMAT_MOD_VIVANTE_TILED fourcc_mod_code(VIVANTE, 1)
 #define DRM_FORMAT_MOD_VIVANTE_SUPER_TILED fourcc_mod_code(VIVANTE, 2)
 #define DRM_FORMAT_MOD_VIVANTE_SPLIT_TILED fourcc_mod_code(VIVANTE, 3)
@@ -235,11 +253,13 @@
 #define AMD_FMT_MOD_TILE_VER_GFX9 1
 #define AMD_FMT_MOD_TILE_VER_GFX10 2
 #define AMD_FMT_MOD_TILE_VER_GFX10_RBPLUS 3
+#define AMD_FMT_MOD_TILE_VER_GFX11 4
 #define AMD_FMT_MOD_TILE_GFX9_64K_S 9
 #define AMD_FMT_MOD_TILE_GFX9_64K_D 10
 #define AMD_FMT_MOD_TILE_GFX9_64K_S_X 25
 #define AMD_FMT_MOD_TILE_GFX9_64K_D_X 26
 #define AMD_FMT_MOD_TILE_GFX9_64K_R_X 27
+#define AMD_FMT_MOD_TILE_GFX11_256K_R_X 31
 #define AMD_FMT_MOD_DCC_BLOCK_64B 0
 #define AMD_FMT_MOD_DCC_BLOCK_128B 1
 #define AMD_FMT_MOD_DCC_BLOCK_256B 2
@@ -271,9 +291,9 @@
 #define AMD_FMT_MOD_RB_MASK 0x7
 #define AMD_FMT_MOD_PIPE_SHIFT 33
 #define AMD_FMT_MOD_PIPE_MASK 0x7
-#define AMD_FMT_MOD_SET(field,value) ((uint64_t) (value) << AMD_FMT_MOD_ ##field ##_SHIFT)
+#define AMD_FMT_MOD_SET(field,value) ((__u64) (value) << AMD_FMT_MOD_ ##field ##_SHIFT)
 #define AMD_FMT_MOD_GET(field,value) (((value) >> AMD_FMT_MOD_ ##field ##_SHIFT) & AMD_FMT_MOD_ ##field ##_MASK)
-#define AMD_FMT_MOD_CLEAR(field) (~((uint64_t) AMD_FMT_MOD_ ##field ##_MASK << AMD_FMT_MOD_ ##field ##_SHIFT))
+#define AMD_FMT_MOD_CLEAR(field) (~((__u64) AMD_FMT_MOD_ ##field ##_MASK << AMD_FMT_MOD_ ##field ##_SHIFT))
 #ifdef __cplusplus
 }
 #endif
diff --git a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/drm/i915_drm.h b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/drm/i915_drm.h
index 52bfad2..198b969 100644
--- a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/drm/i915_drm.h
+++ b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/drm/i915_drm.h
@@ -41,13 +41,14 @@
   I915_ENGINE_CLASS_COPY = 1,
   I915_ENGINE_CLASS_VIDEO = 2,
   I915_ENGINE_CLASS_VIDEO_ENHANCE = 3,
+  I915_ENGINE_CLASS_COMPUTE = 4,
   I915_ENGINE_CLASS_INVALID = - 1
 };
 struct i915_engine_class_instance {
   __u16 engine_class;
-  __u16 engine_instance;
 #define I915_ENGINE_CLASS_INVALID_NONE - 1
 #define I915_ENGINE_CLASS_INVALID_VIRTUAL - 2
+  __u16 engine_instance;
 };
 enum drm_i915_pmu_engine_sample {
   I915_SAMPLE_BUSY = 0,
@@ -367,10 +368,11 @@
 #define I915_PARAM_PERF_REVISION 54
 #define I915_PARAM_HAS_EXEC_TIMELINE_FENCES 55
 #define I915_PARAM_HAS_USERPTR_PROBE 56
-typedef struct drm_i915_getparam {
+struct drm_i915_getparam {
   __s32 param;
   int __user * value;
-} drm_i915_getparam_t;
+};
+typedef struct drm_i915_getparam drm_i915_getparam_t;
 #define I915_SETPARAM_USE_MI_BATCHBUFFER_START 1
 #define I915_SETPARAM_TEX_LRU_LOG_GRANULARITY 2
 #define I915_SETPARAM_ALLOW_BATCHBUFFER 3
@@ -525,13 +527,13 @@
 };
 struct drm_i915_gem_exec_fence {
   __u32 handle;
+  __u32 flags;
 #define I915_EXEC_FENCE_WAIT (1 << 0)
 #define I915_EXEC_FENCE_SIGNAL (1 << 1)
 #define __I915_EXEC_FENCE_UNKNOWN_FLAGS (- (I915_EXEC_FENCE_SIGNAL << 1))
-  __u32 flags;
 };
-#define DRM_I915_GEM_EXECBUFFER_EXT_TIMELINE_FENCES 0
 struct drm_i915_gem_execbuffer_ext_timeline_fences {
+#define DRM_I915_GEM_EXECBUFFER_EXT_TIMELINE_FENCES 0
   struct i915_user_extension base;
   __u64 fence_count;
   __u64 handles_ptr;
@@ -546,6 +548,7 @@
   __u32 DR4;
   __u32 num_cliprects;
   __u64 cliprects_ptr;
+  __u64 flags;
 #define I915_EXEC_RING_MASK (0x3f)
 #define I915_EXEC_DEFAULT (0 << 0)
 #define I915_EXEC_RENDER (1 << 0)
@@ -556,10 +559,6 @@
 #define I915_EXEC_CONSTANTS_REL_GENERAL (0 << 6)
 #define I915_EXEC_CONSTANTS_ABSOLUTE (1 << 6)
 #define I915_EXEC_CONSTANTS_REL_SURFACE (2 << 6)
-  __u64 flags;
-  __u64 rsvd1;
-  __u64 rsvd2;
-};
 #define I915_EXEC_GEN7_SOL_RESET (1 << 8)
 #define I915_EXEC_SECURE (1 << 9)
 #define I915_EXEC_IS_PINNED (1 << 10)
@@ -578,6 +577,9 @@
 #define I915_EXEC_FENCE_SUBMIT (1 << 20)
 #define I915_EXEC_USE_EXTENSIONS (1 << 21)
 #define __I915_EXEC_UNKNOWN_FLAGS (- (I915_EXEC_USE_EXTENSIONS << 1))
+  __u64 rsvd1;
+  __u64 rsvd2;
+};
 #define I915_EXEC_CONTEXT_ID_MASK (0xffffffff)
 #define i915_execbuffer2_set_context_id(eb2,context) (eb2).rsvd1 = context & I915_EXEC_CONTEXT_ID_MASK
 #define i915_execbuffer2_get_context_id(eb2) ((eb2).rsvd1 & I915_EXEC_CONTEXT_ID_MASK)
@@ -721,6 +723,8 @@
 #define I915_CONTEXT_CREATE_FLAGS_SINGLE_TIMELINE (1u << 1)
 #define I915_CONTEXT_CREATE_FLAGS_UNKNOWN (- (I915_CONTEXT_CREATE_FLAGS_SINGLE_TIMELINE << 1))
   __u64 extensions;
+#define I915_CONTEXT_CREATE_EXT_SETPARAM 0
+#define I915_CONTEXT_CREATE_EXT_CLONE 1
 };
 struct drm_i915_gem_context_param {
   __u32 ctx_id;
@@ -760,7 +764,7 @@
   __u16 num_siblings;
   __u32 flags;
   __u64 mbz64;
-  struct i915_engine_class_instance engines[0];
+  struct i915_engine_class_instance engines[];
 } __attribute__((packed));
 #define I915_DEFINE_CONTEXT_ENGINES_LOAD_BALANCE(name__,N__) struct { struct i915_user_extension base; __u16 engine_index; __u16 num_siblings; __u32 flags; __u64 mbz64; struct i915_engine_class_instance engines[N__]; \
 } __attribute__((packed)) name__
@@ -771,7 +775,7 @@
   __u16 num_bonds;
   __u64 flags;
   __u64 mbz64[4];
-  struct i915_engine_class_instance engines[0];
+  struct i915_engine_class_instance engines[];
 } __attribute__((packed));
 #define I915_DEFINE_CONTEXT_ENGINES_BOND(name__,N__) struct { struct i915_user_extension base; struct i915_engine_class_instance master; __u16 virtual_index; __u16 num_bonds; __u64 flags; __u64 mbz64[4]; struct i915_engine_class_instance engines[N__]; \
 } __attribute__((packed)) name__
@@ -783,8 +787,8 @@
   __u16 mbz16;
   __u64 flags;
   __u64 mbz64[3];
-  struct i915_engine_class_instance engines[0];
-} __packed;
+  struct i915_engine_class_instance engines[];
+} __attribute__((__packed__));
 #define I915_DEFINE_CONTEXT_ENGINES_PARALLEL_SUBMIT(name__,N__) struct { struct i915_user_extension base; __u16 engine_index; __u16 width; __u16 num_siblings; __u16 mbz16; __u64 flags; __u64 mbz64[3]; struct i915_engine_class_instance engines[N__]; \
 } __attribute__((packed)) name__
 struct i915_context_param_engines {
@@ -797,11 +801,9 @@
 #define I915_DEFINE_CONTEXT_PARAM_ENGINES(name__,N__) struct { __u64 extensions; struct i915_engine_class_instance engines[N__]; \
 } __attribute__((packed)) name__
 struct drm_i915_gem_context_create_ext_setparam {
-#define I915_CONTEXT_CREATE_EXT_SETPARAM 0
   struct i915_user_extension base;
   struct drm_i915_gem_context_param param;
 };
-#define I915_CONTEXT_CREATE_EXT_CLONE 1
 struct drm_i915_gem_context_destroy {
   __u32 ctx_id;
   __u32 pad;
@@ -894,6 +896,8 @@
 #define DRM_I915_QUERY_ENGINE_INFO 2
 #define DRM_I915_QUERY_PERF_CONFIG 3
 #define DRM_I915_QUERY_MEMORY_REGIONS 4
+#define DRM_I915_QUERY_HWCONFIG_BLOB 5
+#define DRM_I915_QUERY_GEOMETRY_SUBSLICES 6
   __s32 length;
   __u32 flags;
 #define DRM_I915_QUERY_PERF_CONFIG_LIST 1
@@ -956,7 +960,13 @@
   __u32 rsvd0;
   __u64 probed_size;
   __u64 unallocated_size;
-  __u64 rsvd1[8];
+  union {
+    __u64 rsvd1[8];
+    struct {
+      __u64 probed_cpu_visible_size;
+      __u64 unallocated_cpu_visible_size;
+    };
+  };
 };
 struct drm_i915_query_memory_regions {
   __u32 num_regions;
@@ -966,6 +976,7 @@
 struct drm_i915_gem_create_ext {
   __u64 size;
   __u32 handle;
+#define I915_GEM_CREATE_EXT_FLAG_NEEDS_CPU_ACCESS (1 << 0)
   __u32 flags;
 #define I915_GEM_CREATE_EXT_MEMORY_REGIONS 0
 #define I915_GEM_CREATE_EXT_PROTECTED_CONTENT 1
diff --git a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/drm/msm_drm.h b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/drm/msm_drm.h
index b4ba1d0..c2edefd 100644
--- a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/drm/msm_drm.h
+++ b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/drm/msm_drm.h
@@ -43,11 +43,18 @@
 #define MSM_PARAM_PP_PGTABLE 0x08
 #define MSM_PARAM_FAULTS 0x09
 #define MSM_PARAM_SUSPENDS 0x0a
+#define MSM_PARAM_SYSPROF 0x0b
+#define MSM_PARAM_COMM 0x0c
+#define MSM_PARAM_CMDLINE 0x0d
+#define MSM_PARAM_VA_START 0x0e
+#define MSM_PARAM_VA_SIZE 0x0f
 #define MSM_PARAM_NR_RINGS MSM_PARAM_PRIORITIES
 struct drm_msm_param {
   __u32 pipe;
   __u32 param;
   __u64 value;
+  __u32 len;
+  __u32 pad;
 };
 #define MSM_BO_SCANOUT 0x00000001
 #define MSM_BO_GPU_READONLY 0x00000002
@@ -66,6 +73,7 @@
 #define MSM_INFO_GET_IOVA 0x01
 #define MSM_INFO_SET_NAME 0x02
 #define MSM_INFO_GET_NAME 0x03
+#define MSM_INFO_SET_IOVA 0x04
 struct drm_msm_gem_info {
   __u32 handle;
   __u32 info;
@@ -119,7 +127,8 @@
 #define MSM_SUBMIT_SUDO 0x10000000
 #define MSM_SUBMIT_SYNCOBJ_IN 0x08000000
 #define MSM_SUBMIT_SYNCOBJ_OUT 0x04000000
-#define MSM_SUBMIT_FLAGS (MSM_SUBMIT_NO_IMPLICIT | MSM_SUBMIT_FENCE_FD_IN | MSM_SUBMIT_FENCE_FD_OUT | MSM_SUBMIT_SUDO | MSM_SUBMIT_SYNCOBJ_IN | MSM_SUBMIT_SYNCOBJ_OUT | 0)
+#define MSM_SUBMIT_FENCE_SN_IN 0x02000000
+#define MSM_SUBMIT_FLAGS (MSM_SUBMIT_NO_IMPLICIT | MSM_SUBMIT_FENCE_FD_IN | MSM_SUBMIT_FENCE_FD_OUT | MSM_SUBMIT_SUDO | MSM_SUBMIT_SYNCOBJ_IN | MSM_SUBMIT_SYNCOBJ_OUT | MSM_SUBMIT_FENCE_SN_IN | 0)
 #define MSM_SUBMIT_SYNCOBJ_RESET 0x00000001
 #define MSM_SUBMIT_SYNCOBJ_FLAGS (MSM_SUBMIT_SYNCOBJ_RESET | 0)
 struct drm_msm_gem_submit_syncobj {
@@ -172,6 +181,7 @@
   __u32 pad;
 };
 #define DRM_MSM_GET_PARAM 0x00
+#define DRM_MSM_SET_PARAM 0x01
 #define DRM_MSM_GEM_NEW 0x02
 #define DRM_MSM_GEM_INFO 0x03
 #define DRM_MSM_GEM_CPU_PREP 0x04
@@ -183,6 +193,7 @@
 #define DRM_MSM_SUBMITQUEUE_CLOSE 0x0B
 #define DRM_MSM_SUBMITQUEUE_QUERY 0x0C
 #define DRM_IOCTL_MSM_GET_PARAM DRM_IOWR(DRM_COMMAND_BASE + DRM_MSM_GET_PARAM, struct drm_msm_param)
+#define DRM_IOCTL_MSM_SET_PARAM DRM_IOW(DRM_COMMAND_BASE + DRM_MSM_SET_PARAM, struct drm_msm_param)
 #define DRM_IOCTL_MSM_GEM_NEW DRM_IOWR(DRM_COMMAND_BASE + DRM_MSM_GEM_NEW, struct drm_msm_gem_new)
 #define DRM_IOCTL_MSM_GEM_INFO DRM_IOWR(DRM_COMMAND_BASE + DRM_MSM_GEM_INFO, struct drm_msm_gem_info)
 #define DRM_IOCTL_MSM_GEM_CPU_PREP DRM_IOW(DRM_COMMAND_BASE + DRM_MSM_GEM_CPU_PREP, struct drm_msm_gem_cpu_prep)
diff --git a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/drm/panfrost_drm.h b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/drm/panfrost_drm.h
index 1f4473d..04a85df 100644
--- a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/drm/panfrost_drm.h
+++ b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/drm/panfrost_drm.h
@@ -136,6 +136,38 @@
   __u32 madv;
   __u32 retained;
 };
+#define PANFROSTDUMP_MAJOR 1
+#define PANFROSTDUMP_MINOR 0
+#define PANFROSTDUMP_MAGIC 0x464E4150
+#define PANFROSTDUMP_BUF_REG 0
+#define PANFROSTDUMP_BUF_BOMAP (PANFROSTDUMP_BUF_REG + 1)
+#define PANFROSTDUMP_BUF_BO (PANFROSTDUMP_BUF_BOMAP + 1)
+#define PANFROSTDUMP_BUF_TRAILER (PANFROSTDUMP_BUF_BO + 1)
+struct panfrost_dump_object_header {
+  __u32 magic;
+  __u32 type;
+  __u32 file_size;
+  __u32 file_offset;
+  union {
+    struct {
+      __u64 jc;
+      __u32 gpu_id;
+      __u32 major;
+      __u32 minor;
+      __u64 nbos;
+    } reghdr;
+    struct {
+      __u32 valid;
+      __u64 iova;
+      __u32 data[2];
+    } bomap;
+    __u32 sizer[496];
+  };
+};
+struct panfrost_dump_registers {
+  __u32 reg;
+  __u32 value;
+};
 #ifdef __cplusplus
 }
 #endif
diff --git a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/drm/vmwgfx_drm.h b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/drm/vmwgfx_drm.h
index 395743b..2f75589 100644
--- a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/drm/vmwgfx_drm.h
+++ b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/drm/vmwgfx_drm.h
@@ -76,6 +76,7 @@
 #define DRM_VMW_PARAM_SM4_1 14
 #define DRM_VMW_PARAM_SM5 15
 #define DRM_VMW_PARAM_GL43 16
+#define DRM_VMW_PARAM_DEVICE_ID 17
 enum drm_vmw_handle_type {
   DRM_VMW_HANDLE_LEGACY = 0,
   DRM_VMW_HANDLE_PRIME = 1
diff --git a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/acct.h b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/acct.h
index aecc9f6..ba9d25f 100644
--- a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/acct.h
+++ b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/acct.h
@@ -74,6 +74,7 @@
 #define ACOMPAT 0x04
 #define ACORE 0x08
 #define AXSIG 0x10
+#define AGROUP 0x20
 #if defined(__BYTE_ORDER) ? __BYTE_ORDER == __BIG_ENDIAN : defined(__BIG_ENDIAN)
 #define ACCT_BYTEORDER 0x80
 #elif defined(__BYTE_ORDER)?__BYTE_ORDER==__LITTLE_ENDIAN:defined(__LITTLE_ENDIAN)
diff --git a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/agpgart.h b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/agpgart.h
index 3b126f1..9dda7bf 100644
--- a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/agpgart.h
+++ b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/agpgart.h
@@ -38,7 +38,6 @@
 #define FALSE 0
 #endif
 #include <linux/types.h>
-#include <stdlib.h>
 struct agp_version {
   __u16 major;
   __u16 minor;
@@ -48,10 +47,10 @@
   __u32 bridge_id;
   __u32 agp_mode;
   unsigned long aper_base;
-  size_t aper_size;
-  size_t pg_total;
-  size_t pg_system;
-  size_t pg_used;
+  __kernel_size_t aper_size;
+  __kernel_size_t pg_total;
+  __kernel_size_t pg_system;
+  __kernel_size_t pg_used;
 } agp_info;
 typedef struct _agp_setup {
   __u32 agp_mode;
diff --git a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/android/binder.h b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/android/binder.h
index ded1756..52f4c6b 100644
--- a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/android/binder.h
+++ b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/android/binder.h
@@ -127,6 +127,11 @@
   __u32 sync_recv;
   __u32 async_recv;
 };
+struct binder_extended_error {
+  __u32 id;
+  __u32 command;
+  __s32 param;
+};
 #define BINDER_WRITE_READ _IOWR('b', 1, struct binder_write_read)
 #define BINDER_SET_IDLE_TIMEOUT _IOW('b', 3, __s64)
 #define BINDER_SET_MAX_THREADS _IOW('b', 5, __u32)
@@ -140,12 +145,14 @@
 #define BINDER_FREEZE _IOW('b', 14, struct binder_freeze_info)
 #define BINDER_GET_FROZEN_INFO _IOWR('b', 15, struct binder_frozen_status_info)
 #define BINDER_ENABLE_ONEWAY_SPAM_DETECTION _IOW('b', 16, __u32)
+#define BINDER_GET_EXTENDED_ERROR _IOWR('b', 17, struct binder_extended_error)
 enum transaction_flags {
   TF_ONE_WAY = 0x01,
   TF_ROOT_OBJECT = 0x04,
   TF_STATUS_CODE = 0x08,
   TF_ACCEPT_FDS = 0x10,
   TF_CLEAR_BUF = 0x20,
+  TF_UPDATE_TXN = 0x40,
 };
 struct binder_transaction_data {
   union {
@@ -155,8 +162,8 @@
   binder_uintptr_t cookie;
   __u32 code;
   __u32 flags;
-  pid_t sender_pid;
-  uid_t sender_euid;
+  __kernel_pid_t sender_pid;
+  __kernel_uid32_t sender_euid;
   binder_size_t data_size;
   binder_size_t offsets_size;
   union {
@@ -182,7 +189,7 @@
 struct binder_handle_cookie {
   __u32 handle;
   binder_uintptr_t cookie;
-} __packed;
+} __attribute__((__packed__));
 struct binder_pri_desc {
   __s32 priority;
   __u32 desc;
diff --git a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/ashmem.h b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/ashmem.h
index 174667f..88f0e81 100644
--- a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/ashmem.h
+++ b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/ashmem.h
@@ -41,4 +41,5 @@
 #define ASHMEM_UNPIN _IOW(__ASHMEMIOC, 8, struct ashmem_pin)
 #define ASHMEM_GET_PIN_STATUS _IO(__ASHMEMIOC, 9)
 #define ASHMEM_PURGE_ALL_CACHES _IO(__ASHMEMIOC, 10)
+#define ASHMEM_GET_FILE_ID _IOR(__ASHMEMIOC, 11, unsigned long)
 #endif
diff --git a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/audit.h b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/audit.h
index 30a94af..f7c969b 100644
--- a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/audit.h
+++ b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/audit.h
@@ -140,7 +140,7 @@
 #define AUDIT_MAX_KEY_LEN 256
 #define AUDIT_BITMASK_SIZE 64
 #define AUDIT_WORD(nr) ((__u32) ((nr) / 32))
-#define AUDIT_BIT(nr) (1 << ((nr) - AUDIT_WORD(nr) * 32))
+#define AUDIT_BIT(nr) (1U << ((nr) - AUDIT_WORD(nr) * 32))
 #define AUDIT_SYSCALL_CLASSES 16
 #define AUDIT_CLASS_DIR_WRITE 0
 #define AUDIT_CLASS_DIR_WRITE_32 1
@@ -323,6 +323,8 @@
 #define AUDIT_ARCH_UNICORE (EM_UNICORE | __AUDIT_ARCH_LE)
 #define AUDIT_ARCH_X86_64 (EM_X86_64 | __AUDIT_ARCH_64BIT | __AUDIT_ARCH_LE)
 #define AUDIT_ARCH_XTENSA (EM_XTENSA)
+#define AUDIT_ARCH_LOONGARCH32 (EM_LOONGARCH | __AUDIT_ARCH_LE)
+#define AUDIT_ARCH_LOONGARCH64 (EM_LOONGARCH | __AUDIT_ARCH_64BIT | __AUDIT_ARCH_LE)
 #define AUDIT_PERM_EXEC 1
 #define AUDIT_PERM_WRITE 2
 #define AUDIT_PERM_READ 4
diff --git a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/blkzoned.h b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/blkzoned.h
index b551e8b..e41ac9f 100644
--- a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/blkzoned.h
+++ b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/blkzoned.h
@@ -54,7 +54,7 @@
   __u64 sector;
   __u32 nr_zones;
   __u32 flags;
-  struct blk_zone zones[0];
+  struct blk_zone zones[];
 };
 struct blk_zone_range {
   __u64 sector;
diff --git a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/bpf.h b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/bpf.h
index d363e81..807884a 100644
--- a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/bpf.h
+++ b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/bpf.h
@@ -74,10 +74,27 @@
   __u64 cgroup_inode_id;
   __u32 attach_type;
 };
+enum bpf_cgroup_iter_order {
+  BPF_CGROUP_ITER_ORDER_UNSPEC = 0,
+  BPF_CGROUP_ITER_SELF_ONLY,
+  BPF_CGROUP_ITER_DESCENDANTS_PRE,
+  BPF_CGROUP_ITER_DESCENDANTS_POST,
+  BPF_CGROUP_ITER_ANCESTORS_UP,
+};
 union bpf_iter_link_info {
   struct {
     __u32 map_fd;
   } map;
+  struct {
+    enum bpf_cgroup_iter_order order;
+    __u32 cgroup_fd;
+    __u64 cgroup_id;
+  } cgroup;
+  struct {
+    __u32 tid;
+    __u32 pid;
+    __u32 pid_fd;
+  } task;
 };
 enum bpf_cmd {
   BPF_MAP_CREATE,
@@ -150,6 +167,7 @@
   BPF_MAP_TYPE_INODE_STORAGE,
   BPF_MAP_TYPE_TASK_STORAGE,
   BPF_MAP_TYPE_BLOOM_FILTER,
+  BPF_MAP_TYPE_USER_RINGBUF,
 };
 enum bpf_prog_type {
   BPF_PROG_TYPE_UNSPEC,
@@ -228,6 +246,8 @@
   BPF_SK_REUSEPORT_SELECT,
   BPF_SK_REUSEPORT_SELECT_OR_MIGRATE,
   BPF_PERF_EVENT,
+  BPF_TRACE_KPROBE_MULTI,
+  BPF_LSM_CGROUP,
   __MAX_BPF_ATTACH_TYPE
 };
 #define MAX_BPF_ATTACH_TYPE __MAX_BPF_ATTACH_TYPE
@@ -240,6 +260,8 @@
   BPF_LINK_TYPE_NETNS = 5,
   BPF_LINK_TYPE_XDP = 6,
   BPF_LINK_TYPE_PERF_EVENT = 7,
+  BPF_LINK_TYPE_KPROBE_MULTI = 8,
+  BPF_LINK_TYPE_STRUCT_OPS = 9,
   MAX_BPF_LINK_TYPE,
 };
 #define BPF_F_ALLOW_OVERRIDE (1U << 0)
@@ -250,6 +272,8 @@
 #define BPF_F_TEST_RND_HI32 (1U << 2)
 #define BPF_F_TEST_STATE_FREQ (1U << 3)
 #define BPF_F_SLEEPABLE (1U << 4)
+#define BPF_F_XDP_HAS_FRAGS (1U << 5)
+#define BPF_F_KPROBE_MULTI_RETURN (1U << 0)
 #define BPF_PSEUDO_MAP_FD 1
 #define BPF_PSEUDO_MAP_IDX 5
 #define BPF_PSEUDO_MAP_VALUE 2
@@ -281,6 +305,7 @@
 };
 #define BPF_F_QUERY_EFFECTIVE (1U << 0)
 #define BPF_F_TEST_RUN_ON_CPU (1U << 0)
+#define BPF_F_TEST_XDP_LIVE_FRAMES (1U << 1)
 enum bpf_stats_type {
   BPF_STATS_RUN_TIME = 0,
 };
@@ -392,6 +417,7 @@
     __aligned_u64 ctx_out;
     __u32 flags;
     __u32 cpu;
+    __u32 batch_size;
   } test;
   struct {
     union {
@@ -416,6 +442,7 @@
     __u32 attach_flags;
     __aligned_u64 prog_ids;
     __u32 prog_cnt;
+    __aligned_u64 prog_attach_flags;
   } query;
   struct {
     __u64 name;
@@ -456,6 +483,17 @@
       struct {
         __u64 bpf_cookie;
       } perf_event;
+      struct {
+        __u32 flags;
+        __u32 cnt;
+        __aligned_u64 syms;
+        __aligned_u64 addrs;
+        __aligned_u64 cookies;
+      } kprobe_multi;
+      struct {
+        __u32 target_btf_id;
+        __u64 cookie;
+      } tracing;
     };
   } link_create;
   struct {
@@ -480,7 +518,7 @@
     __u32 flags;
   } prog_bind_map;
 } __attribute__((aligned(8)));
-#define __BPF_FUNC_MAPPER(FN) FN(unspec), FN(map_lookup_elem), FN(map_update_elem), FN(map_delete_elem), FN(probe_read), FN(ktime_get_ns), FN(trace_printk), FN(get_prandom_u32), FN(get_smp_processor_id), FN(skb_store_bytes), FN(l3_csum_replace), FN(l4_csum_replace), FN(tail_call), FN(clone_redirect), FN(get_current_pid_tgid), FN(get_current_uid_gid), FN(get_current_comm), FN(get_cgroup_classid), FN(skb_vlan_push), FN(skb_vlan_pop), FN(skb_get_tunnel_key), FN(skb_set_tunnel_key), FN(perf_event_read), FN(redirect), FN(get_route_realm), FN(perf_event_output), FN(skb_load_bytes), FN(get_stackid), FN(csum_diff), FN(skb_get_tunnel_opt), FN(skb_set_tunnel_opt), FN(skb_change_proto), FN(skb_change_type), FN(skb_under_cgroup), FN(get_hash_recalc), FN(get_current_task), FN(probe_write_user), FN(current_task_under_cgroup), FN(skb_change_tail), FN(skb_pull_data), FN(csum_update), FN(set_hash_invalid), FN(get_numa_node_id), FN(skb_change_head), FN(xdp_adjust_head), FN(probe_read_str), FN(get_socket_cookie), FN(get_socket_uid), FN(set_hash), FN(setsockopt), FN(skb_adjust_room), FN(redirect_map), FN(sk_redirect_map), FN(sock_map_update), FN(xdp_adjust_meta), FN(perf_event_read_value), FN(perf_prog_read_value), FN(getsockopt), FN(override_return), FN(sock_ops_cb_flags_set), FN(msg_redirect_map), FN(msg_apply_bytes), FN(msg_cork_bytes), FN(msg_pull_data), FN(bind), FN(xdp_adjust_tail), FN(skb_get_xfrm_state), FN(get_stack), FN(skb_load_bytes_relative), FN(fib_lookup), FN(sock_hash_update), FN(msg_redirect_hash), FN(sk_redirect_hash), FN(lwt_push_encap), FN(lwt_seg6_store_bytes), FN(lwt_seg6_adjust_srh), FN(lwt_seg6_action), FN(rc_repeat), FN(rc_keydown), FN(skb_cgroup_id), FN(get_current_cgroup_id), FN(get_local_storage), FN(sk_select_reuseport), FN(skb_ancestor_cgroup_id), FN(sk_lookup_tcp), FN(sk_lookup_udp), FN(sk_release), FN(map_push_elem), FN(map_pop_elem), FN(map_peek_elem), FN(msg_push_data), FN(msg_pop_data), FN(rc_pointer_rel), FN(spin_lock), FN(spin_unlock), FN(sk_fullsock), FN(tcp_sock), FN(skb_ecn_set_ce), FN(get_listener_sock), FN(skc_lookup_tcp), FN(tcp_check_syncookie), FN(sysctl_get_name), FN(sysctl_get_current_value), FN(sysctl_get_new_value), FN(sysctl_set_new_value), FN(strtol), FN(strtoul), FN(sk_storage_get), FN(sk_storage_delete), FN(send_signal), FN(tcp_gen_syncookie), FN(skb_output), FN(probe_read_user), FN(probe_read_kernel), FN(probe_read_user_str), FN(probe_read_kernel_str), FN(tcp_send_ack), FN(send_signal_thread), FN(jiffies64), FN(read_branch_records), FN(get_ns_current_pid_tgid), FN(xdp_output), FN(get_netns_cookie), FN(get_current_ancestor_cgroup_id), FN(sk_assign), FN(ktime_get_boot_ns), FN(seq_printf), FN(seq_write), FN(sk_cgroup_id), FN(sk_ancestor_cgroup_id), FN(ringbuf_output), FN(ringbuf_reserve), FN(ringbuf_submit), FN(ringbuf_discard), FN(ringbuf_query), FN(csum_level), FN(skc_to_tcp6_sock), FN(skc_to_tcp_sock), FN(skc_to_tcp_timewait_sock), FN(skc_to_tcp_request_sock), FN(skc_to_udp6_sock), FN(get_task_stack), FN(load_hdr_opt), FN(store_hdr_opt), FN(reserve_hdr_opt), FN(inode_storage_get), FN(inode_storage_delete), FN(d_path), FN(copy_from_user), FN(snprintf_btf), FN(seq_printf_btf), FN(skb_cgroup_classid), FN(redirect_neigh), FN(per_cpu_ptr), FN(this_cpu_ptr), FN(redirect_peer), FN(task_storage_get), FN(task_storage_delete), FN(get_current_task_btf), FN(bprm_opts_set), FN(ktime_get_coarse_ns), FN(ima_inode_hash), FN(sock_from_file), FN(check_mtu), FN(for_each_map_elem), FN(snprintf), FN(sys_bpf), FN(btf_find_by_name_kind), FN(sys_close), FN(timer_init), FN(timer_set_callback), FN(timer_start), FN(timer_cancel), FN(get_func_ip), FN(get_attach_cookie), FN(task_pt_regs), FN(get_branch_snapshot), FN(trace_vprintk), FN(skc_to_unix_sock), FN(kallsyms_lookup_name), FN(find_vma), FN(loop), FN(strncmp), FN(get_func_arg), FN(get_func_ret), FN(get_func_arg_cnt),
+#define __BPF_FUNC_MAPPER(FN) FN(unspec), FN(map_lookup_elem), FN(map_update_elem), FN(map_delete_elem), FN(probe_read), FN(ktime_get_ns), FN(trace_printk), FN(get_prandom_u32), FN(get_smp_processor_id), FN(skb_store_bytes), FN(l3_csum_replace), FN(l4_csum_replace), FN(tail_call), FN(clone_redirect), FN(get_current_pid_tgid), FN(get_current_uid_gid), FN(get_current_comm), FN(get_cgroup_classid), FN(skb_vlan_push), FN(skb_vlan_pop), FN(skb_get_tunnel_key), FN(skb_set_tunnel_key), FN(perf_event_read), FN(redirect), FN(get_route_realm), FN(perf_event_output), FN(skb_load_bytes), FN(get_stackid), FN(csum_diff), FN(skb_get_tunnel_opt), FN(skb_set_tunnel_opt), FN(skb_change_proto), FN(skb_change_type), FN(skb_under_cgroup), FN(get_hash_recalc), FN(get_current_task), FN(probe_write_user), FN(current_task_under_cgroup), FN(skb_change_tail), FN(skb_pull_data), FN(csum_update), FN(set_hash_invalid), FN(get_numa_node_id), FN(skb_change_head), FN(xdp_adjust_head), FN(probe_read_str), FN(get_socket_cookie), FN(get_socket_uid), FN(set_hash), FN(setsockopt), FN(skb_adjust_room), FN(redirect_map), FN(sk_redirect_map), FN(sock_map_update), FN(xdp_adjust_meta), FN(perf_event_read_value), FN(perf_prog_read_value), FN(getsockopt), FN(override_return), FN(sock_ops_cb_flags_set), FN(msg_redirect_map), FN(msg_apply_bytes), FN(msg_cork_bytes), FN(msg_pull_data), FN(bind), FN(xdp_adjust_tail), FN(skb_get_xfrm_state), FN(get_stack), FN(skb_load_bytes_relative), FN(fib_lookup), FN(sock_hash_update), FN(msg_redirect_hash), FN(sk_redirect_hash), FN(lwt_push_encap), FN(lwt_seg6_store_bytes), FN(lwt_seg6_adjust_srh), FN(lwt_seg6_action), FN(rc_repeat), FN(rc_keydown), FN(skb_cgroup_id), FN(get_current_cgroup_id), FN(get_local_storage), FN(sk_select_reuseport), FN(skb_ancestor_cgroup_id), FN(sk_lookup_tcp), FN(sk_lookup_udp), FN(sk_release), FN(map_push_elem), FN(map_pop_elem), FN(map_peek_elem), FN(msg_push_data), FN(msg_pop_data), FN(rc_pointer_rel), FN(spin_lock), FN(spin_unlock), FN(sk_fullsock), FN(tcp_sock), FN(skb_ecn_set_ce), FN(get_listener_sock), FN(skc_lookup_tcp), FN(tcp_check_syncookie), FN(sysctl_get_name), FN(sysctl_get_current_value), FN(sysctl_get_new_value), FN(sysctl_set_new_value), FN(strtol), FN(strtoul), FN(sk_storage_get), FN(sk_storage_delete), FN(send_signal), FN(tcp_gen_syncookie), FN(skb_output), FN(probe_read_user), FN(probe_read_kernel), FN(probe_read_user_str), FN(probe_read_kernel_str), FN(tcp_send_ack), FN(send_signal_thread), FN(jiffies64), FN(read_branch_records), FN(get_ns_current_pid_tgid), FN(xdp_output), FN(get_netns_cookie), FN(get_current_ancestor_cgroup_id), FN(sk_assign), FN(ktime_get_boot_ns), FN(seq_printf), FN(seq_write), FN(sk_cgroup_id), FN(sk_ancestor_cgroup_id), FN(ringbuf_output), FN(ringbuf_reserve), FN(ringbuf_submit), FN(ringbuf_discard), FN(ringbuf_query), FN(csum_level), FN(skc_to_tcp6_sock), FN(skc_to_tcp_sock), FN(skc_to_tcp_timewait_sock), FN(skc_to_tcp_request_sock), FN(skc_to_udp6_sock), FN(get_task_stack), FN(load_hdr_opt), FN(store_hdr_opt), FN(reserve_hdr_opt), FN(inode_storage_get), FN(inode_storage_delete), FN(d_path), FN(copy_from_user), FN(snprintf_btf), FN(seq_printf_btf), FN(skb_cgroup_classid), FN(redirect_neigh), FN(per_cpu_ptr), FN(this_cpu_ptr), FN(redirect_peer), FN(task_storage_get), FN(task_storage_delete), FN(get_current_task_btf), FN(bprm_opts_set), FN(ktime_get_coarse_ns), FN(ima_inode_hash), FN(sock_from_file), FN(check_mtu), FN(for_each_map_elem), FN(snprintf), FN(sys_bpf), FN(btf_find_by_name_kind), FN(sys_close), FN(timer_init), FN(timer_set_callback), FN(timer_start), FN(timer_cancel), FN(get_func_ip), FN(get_attach_cookie), FN(task_pt_regs), FN(get_branch_snapshot), FN(trace_vprintk), FN(skc_to_unix_sock), FN(kallsyms_lookup_name), FN(find_vma), FN(loop), FN(strncmp), FN(get_func_arg), FN(get_func_ret), FN(get_func_arg_cnt), FN(get_retval), FN(set_retval), FN(xdp_get_buff_len), FN(xdp_load_bytes), FN(xdp_store_bytes), FN(copy_from_user_task), FN(skb_set_tstamp), FN(ima_file_hash), FN(kptr_xchg), FN(map_lookup_percpu_elem), FN(skc_to_mptcp_sock), FN(dynptr_from_mem), FN(ringbuf_reserve_dynptr), FN(ringbuf_submit_dynptr), FN(ringbuf_discard_dynptr), FN(dynptr_read), FN(dynptr_write), FN(dynptr_data), FN(tcp_raw_gen_syncookie_ipv4), FN(tcp_raw_gen_syncookie_ipv6), FN(tcp_raw_check_syncookie_ipv4), FN(tcp_raw_check_syncookie_ipv6), FN(ktime_get_tai_ns), FN(user_ringbuf_drain),
 #define __BPF_ENUM_FN(x) BPF_FUNC_ ##x
 enum bpf_func_id {
   __BPF_FUNC_MAPPER(__BPF_ENUM_FN) __BPF_FUNC_MAX_ID,
@@ -517,6 +555,9 @@
   BPF_F_SEQ_NUMBER = (1ULL << 3),
 };
 enum {
+  BPF_F_TUNINFO_FLAGS = (1ULL << 4),
+};
+enum {
   BPF_F_INDEX_MASK = 0xffffffffULL,
   BPF_F_CURRENT_CPU = BPF_F_INDEX_MASK,
   BPF_F_CTXLEN_MASK = (0xfffffULL << 32),
@@ -595,6 +636,10 @@
 };
 #define __bpf_md_ptr(type,name) union { type name; __u64 : 64; \
 } __attribute__((aligned(8)))
+enum {
+  BPF_SKB_TSTAMP_UNSPEC,
+  BPF_SKB_TSTAMP_DELIVERY_MONO,
+};
 struct __sk_buff {
   __u32 len;
   __u32 pkt_type;
@@ -628,7 +673,8 @@
   __u32 gso_segs;
   __bpf_md_ptr(struct bpf_sock *, sk);
   __u32 gso_size;
-  __u32 : 32;
+  __u8 tstamp_type;
+  __u32 : 24;
   __u64 hwtstamp;
 };
 struct bpf_tunnel_key {
@@ -639,8 +685,15 @@
   };
   __u8 tunnel_tos;
   __u8 tunnel_ttl;
-  __u16 tunnel_ext;
+  union {
+    __u16 tunnel_ext;
+    __be16 tunnel_flags;
+  };
   __u32 tunnel_label;
+  union {
+    __u32 local_ipv4;
+    __u32 local_ipv6[4];
+  };
 };
 struct bpf_xfrm_state {
   __u32 reqid;
@@ -657,6 +710,7 @@
   BPF_DROP = 2,
   BPF_REDIRECT = 7,
   BPF_LWT_REROUTE = 128,
+  BPF_FLOW_DISSECTOR_CONTINUE = 129,
 };
 struct bpf_sock {
   __u32 bound_dev_if;
@@ -668,7 +722,8 @@
   __u32 src_ip4;
   __u32 src_ip6[4];
   __u32 src_port;
-  __u32 dst_port;
+  __be16 dst_port;
+  __u16 : 16;
   __u32 dst_ip4;
   __u32 dst_ip6[4];
   __u32 state;
@@ -818,6 +873,8 @@
   __u64 run_cnt;
   __u64 recursion_misses;
   __u32 verified_insns;
+  __u32 attach_btf_obj_id;
+  __u32 attach_btf_id;
 } __attribute__((aligned(8)));
 struct bpf_map_info {
   __u32 type;
@@ -871,6 +928,16 @@
           __u32 map_id;
         } map;
       };
+      union {
+        struct {
+          __u64 cgroup_id;
+          __u32 order;
+        } cgroup;
+        struct {
+          __u32 tid;
+          __u32 pid;
+        } task;
+      };
     } iter;
     struct {
       __u32 netns_ino;
@@ -1134,6 +1201,10 @@
   __u64 : 64;
   __u64 : 64;
 } __attribute__((aligned(8)));
+struct bpf_dynptr {
+  __u64 : 64;
+  __u64 : 64;
+} __attribute__((aligned(8)));
 struct bpf_sysctl {
   __u32 write;
   __u32 file_pos;
@@ -1160,7 +1231,8 @@
   __u32 protocol;
   __u32 remote_ip4;
   __u32 remote_ip6[4];
-  __u32 remote_port;
+  __be16 remote_port;
+  __u16 : 16;
   __u32 local_ip4;
   __u32 local_ip6[4];
   __u32 local_port;
@@ -1190,6 +1262,7 @@
   BPF_CORE_TYPE_SIZE = 9,
   BPF_CORE_ENUMVAL_EXISTS = 10,
   BPF_CORE_ENUMVAL_VALUE = 11,
+  BPF_CORE_TYPE_MATCHES = 12,
 };
 struct bpf_core_relo {
   __u32 insn_off;
diff --git a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/btf.h b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/btf.h
index fc57d3c..a1f68bf 100644
--- a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/btf.h
+++ b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/btf.h
@@ -65,6 +65,7 @@
   BTF_KIND_FLOAT = 16,
   BTF_KIND_DECL_TAG = 17,
   BTF_KIND_TYPE_TAG = 18,
+  BTF_KIND_ENUM64 = 19,
   NR_BTF_KINDS,
   BTF_KIND_MAX = NR_BTF_KINDS - 1,
 };
@@ -115,4 +116,9 @@
 struct btf_decl_tag {
   __s32 component_idx;
 };
+struct btf_enum64 {
+  __u32 name_off;
+  __u32 val_lo32;
+  __u32 val_hi32;
+};
 #endif
diff --git a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/btrfs.h b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/btrfs.h
index 08b96a3..506238f 100644
--- a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/btrfs.h
+++ b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/btrfs.h
@@ -59,7 +59,7 @@
   __u64 num_ref_copies;
   __u64 num_excl_copies;
   struct btrfs_qgroup_limit lim;
-  __u64 qgroups[0];
+  __u64 qgroups[];
 };
 struct btrfs_ioctl_qgroup_limit_args {
   __u64 qgroupid;
@@ -176,6 +176,7 @@
 #define BTRFS_FEATURE_COMPAT_RO_FREE_SPACE_TREE (1ULL << 0)
 #define BTRFS_FEATURE_COMPAT_RO_FREE_SPACE_TREE_VALID (1ULL << 1)
 #define BTRFS_FEATURE_COMPAT_RO_VERITY (1ULL << 2)
+#define BTRFS_FEATURE_COMPAT_RO_BLOCK_GROUP_TREE (1ULL << 3)
 #define BTRFS_FEATURE_INCOMPAT_MIXED_BACKREF (1ULL << 0)
 #define BTRFS_FEATURE_INCOMPAT_DEFAULT_SUBVOL (1ULL << 1)
 #define BTRFS_FEATURE_INCOMPAT_MIXED_GROUPS (1ULL << 2)
@@ -189,6 +190,7 @@
 #define BTRFS_FEATURE_INCOMPAT_METADATA_UUID (1ULL << 10)
 #define BTRFS_FEATURE_INCOMPAT_RAID1C34 (1ULL << 11)
 #define BTRFS_FEATURE_INCOMPAT_ZONED (1ULL << 12)
+#define BTRFS_FEATURE_INCOMPAT_EXTENT_TREE_V2 (1ULL << 13)
 struct btrfs_ioctl_feature_flags {
   __u64 compat_flags;
   __u64 compat_ro_flags;
@@ -303,7 +305,7 @@
 struct btrfs_ioctl_search_args_v2 {
   struct btrfs_ioctl_search_key key;
   __u64 buf_size;
-  __u64 buf[0];
+  __u64 buf[];
 };
 struct btrfs_ioctl_clone_range_args {
   __s64 src_fd;
@@ -334,7 +336,7 @@
   __u16 dest_count;
   __u16 reserved1;
   __u32 reserved2;
-  struct btrfs_ioctl_same_extent_info info[0];
+  struct btrfs_ioctl_same_extent_info info[];
 };
 struct btrfs_ioctl_space_info {
   __u64 flags;
@@ -344,14 +346,14 @@
 struct btrfs_ioctl_space_args {
   __u64 space_slots;
   __u64 total_spaces;
-  struct btrfs_ioctl_space_info spaces[0];
+  struct btrfs_ioctl_space_info spaces[];
 };
 struct btrfs_data_container {
   __u32 bytes_left;
   __u32 bytes_missing;
   __u32 elem_cnt;
   __u32 elem_missed;
-  __u64 val[0];
+  __u64 val[];
 };
 struct btrfs_ioctl_ino_path_args {
   __u64 inum;
@@ -421,7 +423,8 @@
 #define BTRFS_SEND_FLAG_OMIT_STREAM_HEADER 0x2
 #define BTRFS_SEND_FLAG_OMIT_END_CMD 0x4
 #define BTRFS_SEND_FLAG_VERSION 0x8
-#define BTRFS_SEND_FLAG_MASK (BTRFS_SEND_FLAG_NO_FILE_DATA | BTRFS_SEND_FLAG_OMIT_STREAM_HEADER | BTRFS_SEND_FLAG_OMIT_END_CMD | BTRFS_SEND_FLAG_VERSION)
+#define BTRFS_SEND_FLAG_COMPRESSED 0x10
+#define BTRFS_SEND_FLAG_MASK (BTRFS_SEND_FLAG_NO_FILE_DATA | BTRFS_SEND_FLAG_OMIT_STREAM_HEADER | BTRFS_SEND_FLAG_OMIT_END_CMD | BTRFS_SEND_FLAG_VERSION | BTRFS_SEND_FLAG_COMPRESSED)
 struct btrfs_ioctl_send_args {
   __s64 send_fd;
   __u64 clone_sources_count;
@@ -461,6 +464,29 @@
   __u8 num_items;
   __u8 align[7];
 };
+struct btrfs_ioctl_encoded_io_args {
+  const struct iovec __user * iov;
+  unsigned long iovcnt;
+  __s64 offset;
+  __u64 flags;
+  __u64 len;
+  __u64 unencoded_len;
+  __u64 unencoded_offset;
+  __u32 compression;
+  __u32 encryption;
+  __u8 reserved[64];
+};
+#define BTRFS_ENCODED_IO_COMPRESSION_NONE 0
+#define BTRFS_ENCODED_IO_COMPRESSION_ZLIB 1
+#define BTRFS_ENCODED_IO_COMPRESSION_ZSTD 2
+#define BTRFS_ENCODED_IO_COMPRESSION_LZO_4K 3
+#define BTRFS_ENCODED_IO_COMPRESSION_LZO_8K 4
+#define BTRFS_ENCODED_IO_COMPRESSION_LZO_16K 5
+#define BTRFS_ENCODED_IO_COMPRESSION_LZO_32K 6
+#define BTRFS_ENCODED_IO_COMPRESSION_LZO_64K 7
+#define BTRFS_ENCODED_IO_COMPRESSION_TYPES 8
+#define BTRFS_ENCODED_IO_ENCRYPTION_NONE 0
+#define BTRFS_ENCODED_IO_ENCRYPTION_TYPES 1
 enum btrfs_err_code {
   BTRFS_ERROR_DEV_RAID1_MIN_NOT_MET = 1,
   BTRFS_ERROR_DEV_RAID10_MIN_NOT_MET,
@@ -534,4 +560,6 @@
 #define BTRFS_IOC_GET_SUBVOL_ROOTREF _IOWR(BTRFS_IOCTL_MAGIC, 61, struct btrfs_ioctl_get_subvol_rootref_args)
 #define BTRFS_IOC_INO_LOOKUP_USER _IOWR(BTRFS_IOCTL_MAGIC, 62, struct btrfs_ioctl_ino_lookup_user_args)
 #define BTRFS_IOC_SNAP_DESTROY_V2 _IOW(BTRFS_IOCTL_MAGIC, 63, struct btrfs_ioctl_vol_args_v2)
+#define BTRFS_IOC_ENCODED_READ _IOR(BTRFS_IOCTL_MAGIC, 64, struct btrfs_ioctl_encoded_io_args)
+#define BTRFS_IOC_ENCODED_WRITE _IOW(BTRFS_IOCTL_MAGIC, 64, struct btrfs_ioctl_encoded_io_args)
 #endif
diff --git a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/btrfs_tree.h b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/btrfs_tree.h
index 0476733..6cd46dd 100644
--- a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/btrfs_tree.h
+++ b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/btrfs_tree.h
@@ -31,6 +31,7 @@
 #define BTRFS_QUOTA_TREE_OBJECTID 8ULL
 #define BTRFS_UUID_TREE_OBJECTID 9ULL
 #define BTRFS_FREE_SPACE_TREE_OBJECTID 10ULL
+#define BTRFS_BLOCK_GROUP_TREE_OBJECTID 11ULL
 #define BTRFS_DEV_STATS_OBJECTID 0ULL
 #define BTRFS_BALANCE_OBJECTID - 4ULL
 #define BTRFS_ORPHAN_OBJECTID - 5ULL
@@ -220,7 +221,7 @@
   __le64 parent_objectid;
   __le64 index;
   __le16 name_len;
-  __u8 name[0];
+  __u8 name[];
 } __attribute__((__packed__));
 struct btrfs_timespec {
   __le64 sec;
@@ -372,18 +373,6 @@
 #define BTRFS_BLOCK_GROUP_RAID1C3 (1ULL << 9)
 #define BTRFS_BLOCK_GROUP_RAID1C4 (1ULL << 10)
 #define BTRFS_BLOCK_GROUP_RESERVED (BTRFS_AVAIL_ALLOC_BIT_SINGLE | BTRFS_SPACE_INFO_GLOBAL_RSV)
-enum btrfs_raid_types {
-  BTRFS_RAID_RAID10,
-  BTRFS_RAID_RAID1,
-  BTRFS_RAID_DUP,
-  BTRFS_RAID_RAID0,
-  BTRFS_RAID_SINGLE,
-  BTRFS_RAID_RAID5,
-  BTRFS_RAID_RAID6,
-  BTRFS_RAID_RAID1C3,
-  BTRFS_RAID_RAID1C4,
-  BTRFS_NR_RAID_TYPES
-};
 #define BTRFS_BLOCK_GROUP_TYPE_MASK (BTRFS_BLOCK_GROUP_DATA | BTRFS_BLOCK_GROUP_SYSTEM | BTRFS_BLOCK_GROUP_METADATA)
 #define BTRFS_BLOCK_GROUP_PROFILE_MASK (BTRFS_BLOCK_GROUP_RAID0 | BTRFS_BLOCK_GROUP_RAID1 | BTRFS_BLOCK_GROUP_RAID1C3 | BTRFS_BLOCK_GROUP_RAID1C4 | BTRFS_BLOCK_GROUP_RAID5 | BTRFS_BLOCK_GROUP_RAID6 | BTRFS_BLOCK_GROUP_DUP | BTRFS_BLOCK_GROUP_RAID10)
 #define BTRFS_BLOCK_GROUP_RAID56_MASK (BTRFS_BLOCK_GROUP_RAID5 | BTRFS_BLOCK_GROUP_RAID6)
@@ -405,6 +394,7 @@
 #define BTRFS_QGROUP_STATUS_FLAG_ON (1ULL << 0)
 #define BTRFS_QGROUP_STATUS_FLAG_RESCAN (1ULL << 1)
 #define BTRFS_QGROUP_STATUS_FLAG_INCONSISTENT (1ULL << 2)
+#define BTRFS_QGROUP_STATUS_FLAGS_MASK (BTRFS_QGROUP_STATUS_FLAG_ON | BTRFS_QGROUP_STATUS_FLAG_RESCAN | BTRFS_QGROUP_STATUS_FLAG_INCONSISTENT)
 #define BTRFS_QGROUP_STATUS_VERSION 1
 struct btrfs_qgroup_status_item {
   __le64 version;
diff --git a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/cachefiles.h b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/cachefiles.h
new file mode 100644
index 0000000..f5a58a5
--- /dev/null
+++ b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/cachefiles.h
@@ -0,0 +1,48 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _LINUX_CACHEFILES_H
+#define _LINUX_CACHEFILES_H
+#include <linux/types.h>
+#include <linux/ioctl.h>
+#define CACHEFILES_MSG_MAX_SIZE 1024
+enum cachefiles_opcode {
+  CACHEFILES_OP_OPEN,
+  CACHEFILES_OP_CLOSE,
+  CACHEFILES_OP_READ,
+};
+struct cachefiles_msg {
+  __u32 msg_id;
+  __u32 opcode;
+  __u32 len;
+  __u32 object_id;
+  __u8 data[];
+};
+struct cachefiles_open {
+  __u32 volume_key_size;
+  __u32 cookie_key_size;
+  __u32 fd;
+  __u32 flags;
+  __u8 data[];
+};
+struct cachefiles_read {
+  __u64 off;
+  __u64 len;
+};
+#define CACHEFILES_IOC_READ_COMPLETE _IOW(0x98, 1, int)
+#endif
diff --git a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/can.h b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/can.h
index 30eeca2..1365dba 100644
--- a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/can.h
+++ b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/can.h
@@ -20,21 +20,29 @@
 #define _UAPI_CAN_H
 #include <linux/types.h>
 #include <linux/socket.h>
+#include <linux/stddef.h>
 #define CAN_EFF_FLAG 0x80000000U
 #define CAN_RTR_FLAG 0x40000000U
 #define CAN_ERR_FLAG 0x20000000U
 #define CAN_SFF_MASK 0x000007FFU
 #define CAN_EFF_MASK 0x1FFFFFFFU
 #define CAN_ERR_MASK 0x1FFFFFFFU
+#define CANXL_PRIO_MASK CAN_SFF_MASK
 typedef __u32 canid_t;
 #define CAN_SFF_ID_BITS 11
 #define CAN_EFF_ID_BITS 29
+#define CANXL_PRIO_BITS CAN_SFF_ID_BITS
 typedef __u32 can_err_mask_t;
 #define CAN_MAX_DLC 8
 #define CAN_MAX_RAW_DLC 15
 #define CAN_MAX_DLEN 8
 #define CANFD_MAX_DLC 15
 #define CANFD_MAX_DLEN 64
+#define CANXL_MIN_DLC 0
+#define CANXL_MAX_DLC 2047
+#define CANXL_MAX_DLC_MASK 0x07FF
+#define CANXL_MIN_DLEN 1
+#define CANXL_MAX_DLEN 2048
 struct can_frame {
   canid_t can_id;
   union {
@@ -57,8 +65,22 @@
   __u8 __res1;
   __u8 data[CANFD_MAX_DLEN] __attribute__((aligned(8)));
 };
+#define CANXL_XLF 0x80
+#define CANXL_SEC 0x01
+struct canxl_frame {
+  canid_t prio;
+  __u8 flags;
+  __u8 sdt;
+  __u16 len;
+  __u32 af;
+  __u8 data[CANXL_MAX_DLEN];
+};
 #define CAN_MTU (sizeof(struct can_frame))
 #define CANFD_MTU (sizeof(struct canfd_frame))
+#define CANXL_MTU (sizeof(struct canxl_frame))
+#define CANXL_HDR_SIZE (offsetof(struct canxl_frame, data))
+#define CANXL_MIN_MTU (CANXL_HDR_SIZE + 64)
+#define CANXL_MAX_MTU CANXL_MTU
 #define CAN_RAW 1
 #define CAN_BCM 2
 #define CAN_TP16 3
diff --git a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/can/bcm.h b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/can/bcm.h
index 42e0782..f5ab2c2 100644
--- a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/can/bcm.h
+++ b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/can/bcm.h
@@ -31,7 +31,7 @@
   struct bcm_timeval ival1, ival2;
   canid_t can_id;
   __u32 nframes;
-  struct can_frame frames[0];
+  struct can_frame frames[];
 };
 enum {
   TX_SETUP = 1,
diff --git a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/can/error.h b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/can/error.h
index 645373b..f585d2c 100644
--- a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/can/error.h
+++ b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/can/error.h
@@ -28,6 +28,7 @@
 #define CAN_ERR_BUSOFF 0x00000040U
 #define CAN_ERR_BUSERROR 0x00000080U
 #define CAN_ERR_RESTARTED 0x00000100U
+#define CAN_ERR_CNT 0x00000200U
 #define CAN_ERR_LOSTARB_UNSPEC 0x00
 #define CAN_ERR_CRTL_UNSPEC 0x00
 #define CAN_ERR_CRTL_RX_OVERFLOW 0x01
@@ -76,4 +77,7 @@
 #define CAN_ERR_TRX_CANL_SHORT_TO_VCC 0x60
 #define CAN_ERR_TRX_CANL_SHORT_TO_GND 0x70
 #define CAN_ERR_TRX_CANL_SHORT_TO_CANH 0x80
+#define CAN_ERROR_WARNING_THRESHOLD 96
+#define CAN_ERROR_PASSIVE_THRESHOLD 128
+#define CAN_BUS_OFF_THRESHOLD 256
 #endif
diff --git a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/can/isotp.h b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/can/isotp.h
index dd5e4f5..f51aa59 100644
--- a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/can/isotp.h
+++ b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/can/isotp.h
@@ -44,26 +44,28 @@
   __u8 tx_dl;
   __u8 tx_flags;
 };
-#define CAN_ISOTP_LISTEN_MODE 0x001
-#define CAN_ISOTP_EXTEND_ADDR 0x002
-#define CAN_ISOTP_TX_PADDING 0x004
-#define CAN_ISOTP_RX_PADDING 0x008
-#define CAN_ISOTP_CHK_PAD_LEN 0x010
-#define CAN_ISOTP_CHK_PAD_DATA 0x020
-#define CAN_ISOTP_HALF_DUPLEX 0x040
-#define CAN_ISOTP_FORCE_TXSTMIN 0x080
-#define CAN_ISOTP_FORCE_RXSTMIN 0x100
-#define CAN_ISOTP_RX_EXT_ADDR 0x200
-#define CAN_ISOTP_WAIT_TX_DONE 0x400
-#define CAN_ISOTP_SF_BROADCAST 0x800
+#define CAN_ISOTP_LISTEN_MODE 0x0001
+#define CAN_ISOTP_EXTEND_ADDR 0x0002
+#define CAN_ISOTP_TX_PADDING 0x0004
+#define CAN_ISOTP_RX_PADDING 0x0008
+#define CAN_ISOTP_CHK_PAD_LEN 0x0010
+#define CAN_ISOTP_CHK_PAD_DATA 0x0020
+#define CAN_ISOTP_HALF_DUPLEX 0x0040
+#define CAN_ISOTP_FORCE_TXSTMIN 0x0080
+#define CAN_ISOTP_FORCE_RXSTMIN 0x0100
+#define CAN_ISOTP_RX_EXT_ADDR 0x0200
+#define CAN_ISOTP_WAIT_TX_DONE 0x0400
+#define CAN_ISOTP_SF_BROADCAST 0x0800
+#define CAN_ISOTP_CF_BROADCAST 0x1000
 #define CAN_ISOTP_DEFAULT_FLAGS 0
 #define CAN_ISOTP_DEFAULT_EXT_ADDRESS 0x00
 #define CAN_ISOTP_DEFAULT_PAD_CONTENT 0xCC
-#define CAN_ISOTP_DEFAULT_FRAME_TXTIME 0
+#define CAN_ISOTP_DEFAULT_FRAME_TXTIME 50000
 #define CAN_ISOTP_DEFAULT_RECV_BS 0
 #define CAN_ISOTP_DEFAULT_RECV_STMIN 0x00
 #define CAN_ISOTP_DEFAULT_RECV_WFTMAX 0
 #define CAN_ISOTP_DEFAULT_LL_MTU CAN_MTU
 #define CAN_ISOTP_DEFAULT_LL_TX_DL CAN_MAX_DLEN
 #define CAN_ISOTP_DEFAULT_LL_TX_FLAGS 0
+#define CAN_ISOTP_FRAME_TXTIME_ZERO 0xFFFFFFFF
 #endif
diff --git a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/can/raw.h b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/can/raw.h
index a3bddb7..f8de179 100644
--- a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/can/raw.h
+++ b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/can/raw.h
@@ -30,5 +30,6 @@
   CAN_RAW_RECV_OWN_MSGS,
   CAN_RAW_FD_FRAMES,
   CAN_RAW_JOIN_FILTERS,
+  CAN_RAW_XL_FRAMES,
 };
 #endif
diff --git a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/capability.h b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/capability.h
index 958e6ab..c1b5dbf 100644
--- a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/capability.h
+++ b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/capability.h
@@ -111,5 +111,5 @@
 #define CAP_LAST_CAP CAP_CHECKPOINT_RESTORE
 #define cap_valid(x) ((x) >= 0 && (x) <= CAP_LAST_CAP)
 #define CAP_TO_INDEX(x) ((x) >> 5)
-#define CAP_TO_MASK(x) (1 << ((x) & 31))
+#define CAP_TO_MASK(x) (1U << ((x) & 31))
 #endif
diff --git a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/cec.h b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/cec.h
index b90dc49..3953fe3 100644
--- a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/cec.h
+++ b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/cec.h
@@ -340,6 +340,7 @@
 #define CEC_OP_FEAT_DEV_HAS_SET_AUDIO_RATE 0x08
 #define CEC_OP_FEAT_DEV_SINK_HAS_ARC_TX 0x04
 #define CEC_OP_FEAT_DEV_SOURCE_HAS_ARC_RX 0x02
+#define CEC_OP_FEAT_DEV_HAS_SET_AUDIO_VOLUME_LEVEL 0x01
 #define CEC_MSG_GIVE_FEATURES 0xa5
 #define CEC_MSG_DECK_CONTROL 0x42
 #define CEC_OP_DECK_CTL_MODE_SKIP_FWD 1
@@ -554,6 +555,7 @@
 #define CEC_MSG_SYSTEM_AUDIO_MODE_STATUS 0x7e
 #define CEC_OP_AUD_FMT_ID_CEA861 0
 #define CEC_OP_AUD_FMT_ID_CEA861_CXT 1
+#define CEC_MSG_SET_AUDIO_VOLUME_LEVEL 0x73
 #define CEC_MSG_SET_AUDIO_RATE 0x9a
 #define CEC_OP_AUD_RATE_OFF 0
 #define CEC_OP_AUD_RATE_WIDE_STD 1
diff --git a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/connector.h b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/connector.h
index adf3a7f..e3891e3 100644
--- a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/connector.h
+++ b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/connector.h
@@ -50,6 +50,6 @@
   __u32 ack;
   __u16 len;
   __u16 flags;
-  __u8 data[0];
+  __u8 data[];
 };
 #endif
diff --git a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/counter.h b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/counter.h
index 091e33d..f986365 100644
--- a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/counter.h
+++ b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/counter.h
@@ -45,6 +45,8 @@
   COUNTER_EVENT_OVERFLOW_UNDERFLOW,
   COUNTER_EVENT_THRESHOLD,
   COUNTER_EVENT_INDEX,
+  COUNTER_EVENT_CHANGE_OF_STATE,
+  COUNTER_EVENT_CAPTURE,
 };
 struct counter_watch {
   struct counter_component component;
@@ -90,4 +92,8 @@
   COUNTER_SYNAPSE_ACTION_FALLING_EDGE,
   COUNTER_SYNAPSE_ACTION_BOTH_EDGES,
 };
+enum counter_signal_polarity {
+  COUNTER_SIGNAL_POLARITY_POSITIVE,
+  COUNTER_SIGNAL_POLARITY_NEGATIVE,
+};
 #endif
diff --git a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/cxl_mem.h b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/cxl_mem.h
index 15e9e29..578cefd 100644
--- a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/cxl_mem.h
+++ b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/cxl_mem.h
@@ -38,8 +38,8 @@
   __u32 id;
   __u32 flags;
 #define CXL_MEM_COMMAND_FLAG_MASK GENMASK(0, 0)
-  __s32 size_in;
-  __s32 size_out;
+  __u32 size_in;
+  __u32 size_out;
 };
 struct cxl_mem_query_commands {
   __u32 n_commands;
@@ -58,12 +58,12 @@
   };
   __u32 retval;
   struct {
-    __s32 size;
+    __u32 size;
     __u32 rsvd;
     __u64 payload;
   } in;
   struct {
-    __s32 size;
+    __u32 size;
     __u32 rsvd;
     __u64 payload;
   } out;
diff --git a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/cycx_cfm.h b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/cycx_cfm.h
index 052de53..230b58d 100644
--- a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/cycx_cfm.h
+++ b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/cycx_cfm.h
@@ -53,7 +53,7 @@
   unsigned short reserved[6];
   char descr[CFM_DESCR_LEN];
   struct cycx_fw_info info;
-  unsigned char image[0];
+  unsigned char image[];
 };
 struct cycx_fw_header {
   unsigned long reset_size;
diff --git a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/devlink.h b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/devlink.h
index a809306..b2cdafa 100644
--- a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/devlink.h
+++ b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/devlink.h
@@ -103,6 +103,12 @@
   DEVLINK_CMD_RATE_SET,
   DEVLINK_CMD_RATE_NEW,
   DEVLINK_CMD_RATE_DEL,
+  DEVLINK_CMD_LINECARD_GET,
+  DEVLINK_CMD_LINECARD_SET,
+  DEVLINK_CMD_LINECARD_NEW,
+  DEVLINK_CMD_LINECARD_DEL,
+  DEVLINK_CMD_SELFTESTS_GET,
+  DEVLINK_CMD_SELFTESTS_RUN,
   __DEVLINK_CMD_MAX,
   DEVLINK_CMD_MAX = __DEVLINK_CMD_MAX - 1
 };
@@ -184,6 +190,25 @@
 #define DEVLINK_FLASH_OVERWRITE_SETTINGS _BITUL(DEVLINK_FLASH_OVERWRITE_SETTINGS_BIT)
 #define DEVLINK_FLASH_OVERWRITE_IDENTIFIERS _BITUL(DEVLINK_FLASH_OVERWRITE_IDENTIFIERS_BIT)
 #define DEVLINK_SUPPORTED_FLASH_OVERWRITE_SECTIONS (_BITUL(__DEVLINK_FLASH_OVERWRITE_MAX_BIT) - 1)
+enum devlink_attr_selftest_id {
+  DEVLINK_ATTR_SELFTEST_ID_UNSPEC,
+  DEVLINK_ATTR_SELFTEST_ID_FLASH,
+  __DEVLINK_ATTR_SELFTEST_ID_MAX,
+  DEVLINK_ATTR_SELFTEST_ID_MAX = __DEVLINK_ATTR_SELFTEST_ID_MAX - 1
+};
+enum devlink_selftest_status {
+  DEVLINK_SELFTEST_STATUS_SKIP,
+  DEVLINK_SELFTEST_STATUS_PASS,
+  DEVLINK_SELFTEST_STATUS_FAIL
+};
+enum devlink_attr_selftest_result {
+  DEVLINK_ATTR_SELFTEST_RESULT_UNSPEC,
+  DEVLINK_ATTR_SELFTEST_RESULT,
+  DEVLINK_ATTR_SELFTEST_RESULT_ID,
+  DEVLINK_ATTR_SELFTEST_RESULT_STATUS,
+  __DEVLINK_ATTR_SELFTEST_RESULT_MAX,
+  DEVLINK_ATTR_SELFTEST_RESULT_MAX = __DEVLINK_ATTR_SELFTEST_RESULT_MAX - 1
+};
 enum devlink_trap_action {
   DEVLINK_TRAP_ACTION_DROP,
   DEVLINK_TRAP_ACTION_TRAP,
@@ -212,6 +237,17 @@
   DEVLINK_RELOAD_LIMIT_MAX = __DEVLINK_RELOAD_LIMIT_MAX - 1
 };
 #define DEVLINK_RELOAD_LIMITS_VALID_MASK (_BITUL(__DEVLINK_RELOAD_LIMIT_MAX) - 1)
+enum devlink_linecard_state {
+  DEVLINK_LINECARD_STATE_UNSPEC,
+  DEVLINK_LINECARD_STATE_UNPROVISIONED,
+  DEVLINK_LINECARD_STATE_UNPROVISIONING,
+  DEVLINK_LINECARD_STATE_PROVISIONING,
+  DEVLINK_LINECARD_STATE_PROVISIONING_FAILED,
+  DEVLINK_LINECARD_STATE_PROVISIONED,
+  DEVLINK_LINECARD_STATE_ACTIVE,
+  __DEVLINK_LINECARD_STATE_MAX,
+  DEVLINK_LINECARD_STATE_MAX = __DEVLINK_LINECARD_STATE_MAX - 1
+};
 enum devlink_attr {
   DEVLINK_ATTR_UNSPEC,
   DEVLINK_ATTR_BUS_NAME,
@@ -384,6 +420,12 @@
   DEVLINK_ATTR_RATE_NODE_NAME,
   DEVLINK_ATTR_RATE_PARENT_NODE_NAME,
   DEVLINK_ATTR_REGION_MAX_SNAPSHOTS,
+  DEVLINK_ATTR_LINECARD_INDEX,
+  DEVLINK_ATTR_LINECARD_STATE,
+  DEVLINK_ATTR_LINECARD_TYPE,
+  DEVLINK_ATTR_LINECARD_SUPPORTED_TYPES,
+  DEVLINK_ATTR_NESTED_DEVLINK,
+  DEVLINK_ATTR_SELFTESTS,
   __DEVLINK_ATTR_MAX,
   DEVLINK_ATTR_MAX = __DEVLINK_ATTR_MAX - 1
 };
diff --git a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/dlm.h b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/dlm.h
index c75918f..499baad 100644
--- a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/dlm.h
+++ b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/dlm.h
@@ -31,6 +31,5 @@
   char * sb_lvbptr;
 };
 #define DLM_LSFL_TIMEWARN 0x00000002
-#define DLM_LSFL_FS 0x00000004
 #define DLM_LSFL_NEWEXCL 0x00000008
 #endif
diff --git a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/dm-ioctl.h b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/dm-ioctl.h
index 09f8a98..f0ff78c 100644
--- a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/dm-ioctl.h
+++ b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/dm-ioctl.h
@@ -48,23 +48,23 @@
 struct dm_target_deps {
   __u32 count;
   __u32 padding;
-  __u64 dev[0];
+  __u64 dev[];
 };
 struct dm_name_list {
   __u64 dev;
   __u32 next;
-  char name[0];
+  char name[];
 };
 #define DM_NAME_LIST_FLAG_HAS_UUID 1
 #define DM_NAME_LIST_FLAG_DOESNT_HAVE_UUID 2
 struct dm_target_versions {
   __u32 next;
   __u32 version[3];
-  char name[0];
+  char name[];
 };
 struct dm_target_msg {
   __u64 sector;
-  char message[0];
+  char message[];
 };
 enum {
   DM_VERSION_CMD = 0,
@@ -106,9 +106,9 @@
 #define DM_TARGET_MSG _IOWR(DM_IOCTL, DM_TARGET_MSG_CMD, struct dm_ioctl)
 #define DM_DEV_SET_GEOMETRY _IOWR(DM_IOCTL, DM_DEV_SET_GEOMETRY_CMD, struct dm_ioctl)
 #define DM_VERSION_MAJOR 4
-#define DM_VERSION_MINOR 45
+#define DM_VERSION_MINOR 47
 #define DM_VERSION_PATCHLEVEL 0
-#define DM_VERSION_EXTRA "-ioctl(2021-03-22)"
+#define DM_VERSION_EXTRA "-ioctl(2022-07-28)"
 #define DM_READONLY_FLAG (1 << 0)
 #define DM_SUSPEND_FLAG (1 << 1)
 #define DM_PERSISTENT_DEV_FLAG (1 << 3)
diff --git a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/dm-log-userspace.h b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/dm-log-userspace.h
index 4f0671b..37feee6 100644
--- a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/dm-log-userspace.h
+++ b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/dm-log-userspace.h
@@ -49,6 +49,6 @@
   __u32 seq;
   __u32 request_type;
   __u32 data_size;
-  char data[0];
+  char data[];
 };
 #endif
diff --git a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/dma-buf.h b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/dma-buf.h
index 221c20f..7462c15 100644
--- a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/dma-buf.h
+++ b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/dma-buf.h
@@ -29,9 +29,19 @@
 #define DMA_BUF_SYNC_END (1 << 2)
 #define DMA_BUF_SYNC_VALID_FLAGS_MASK (DMA_BUF_SYNC_RW | DMA_BUF_SYNC_END)
 #define DMA_BUF_NAME_LEN 32
+struct dma_buf_export_sync_file {
+  __u32 flags;
+  __s32 fd;
+};
+struct dma_buf_import_sync_file {
+  __u32 flags;
+  __s32 fd;
+};
 #define DMA_BUF_BASE 'b'
 #define DMA_BUF_IOCTL_SYNC _IOW(DMA_BUF_BASE, 0, struct dma_buf_sync)
 #define DMA_BUF_SET_NAME _IOW(DMA_BUF_BASE, 1, const char *)
-#define DMA_BUF_SET_NAME_A _IOW(DMA_BUF_BASE, 1, u32)
-#define DMA_BUF_SET_NAME_B _IOW(DMA_BUF_BASE, 1, u64)
+#define DMA_BUF_SET_NAME_A _IOW(DMA_BUF_BASE, 1, __u32)
+#define DMA_BUF_SET_NAME_B _IOW(DMA_BUF_BASE, 1, __u64)
+#define DMA_BUF_IOCTL_EXPORT_SYNC_FILE _IOWR(DMA_BUF_BASE, 2, struct dma_buf_export_sync_file)
+#define DMA_BUF_IOCTL_IMPORT_SYNC_FILE _IOW(DMA_BUF_BASE, 3, struct dma_buf_import_sync_file)
 #endif
diff --git a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/dn.h b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/dn.h
deleted file mode 100644
index 621f60f..0000000
--- a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/dn.h
+++ /dev/null
@@ -1,114 +0,0 @@
-/****************************************************************************
- ****************************************************************************
- ***
- ***   This header was automatically generated from a Linux kernel header
- ***   of the same name, to make information necessary for userspace to
- ***   call into the kernel available to libc.  It contains only constants,
- ***   structures, and macros generated from the original header, and thus,
- ***   contains no copyrightable information.
- ***
- ***   To edit the content of this header, modify the corresponding
- ***   source file (e.g. under external/kernel-headers/original/) then
- ***   run bionic/libc/kernel/tools/update_all.py
- ***
- ***   Any manual change here will be lost the next time this script will
- ***   be run. You've been warned!
- ***
- ****************************************************************************
- ****************************************************************************/
-#ifndef _LINUX_DN_H
-#define _LINUX_DN_H
-#include <linux/ioctl.h>
-#include <linux/types.h>
-#include <linux/if_ether.h>
-#define DNPROTO_NSP 2
-#define DNPROTO_ROU 3
-#define DNPROTO_NML 4
-#define DNPROTO_EVL 5
-#define DNPROTO_EVR 6
-#define DNPROTO_NSPT 7
-#define DN_ADDL 2
-#define DN_MAXADDL 2
-#define DN_MAXOPTL 16
-#define DN_MAXOBJL 16
-#define DN_MAXACCL 40
-#define DN_MAXALIASL 128
-#define DN_MAXNODEL 256
-#define DNBUFSIZE 65023
-#define SO_CONDATA 1
-#define SO_CONACCESS 2
-#define SO_PROXYUSR 3
-#define SO_LINKINFO 7
-#define DSO_CONDATA 1
-#define DSO_DISDATA 10
-#define DSO_CONACCESS 2
-#define DSO_ACCEPTMODE 4
-#define DSO_CONACCEPT 5
-#define DSO_CONREJECT 6
-#define DSO_LINKINFO 7
-#define DSO_STREAM 8
-#define DSO_SEQPACKET 9
-#define DSO_MAXWINDOW 11
-#define DSO_NODELAY 12
-#define DSO_CORK 13
-#define DSO_SERVICES 14
-#define DSO_INFO 15
-#define DSO_MAX 15
-#define LL_INACTIVE 0
-#define LL_CONNECTING 1
-#define LL_RUNNING 2
-#define LL_DISCONNECTING 3
-#define ACC_IMMED 0
-#define ACC_DEFER 1
-#define SDF_WILD 1
-#define SDF_PROXY 2
-#define SDF_UICPROXY 4
-struct dn_naddr {
-  __le16 a_len;
-  __u8 a_addr[DN_MAXADDL];
-};
-struct sockaddr_dn {
-  __u16 sdn_family;
-  __u8 sdn_flags;
-  __u8 sdn_objnum;
-  __le16 sdn_objnamel;
-  __u8 sdn_objname[DN_MAXOBJL];
-  struct dn_naddr sdn_add;
-};
-#define sdn_nodeaddrl sdn_add.a_len
-#define sdn_nodeaddr sdn_add.a_addr
-struct optdata_dn {
-  __le16 opt_status;
-#define opt_sts opt_status
-  __le16 opt_optl;
-  __u8 opt_data[16];
-};
-struct accessdata_dn {
-  __u8 acc_accl;
-  __u8 acc_acc[DN_MAXACCL];
-  __u8 acc_passl;
-  __u8 acc_pass[DN_MAXACCL];
-  __u8 acc_userl;
-  __u8 acc_user[DN_MAXACCL];
-};
-struct linkinfo_dn {
-  __u16 idn_segsize;
-  __u8 idn_linkstate;
-};
-union etheraddress {
-  __u8 dne_addr[ETH_ALEN];
-  struct {
-    __u8 dne_hiord[4];
-    __u8 dne_nodeaddr[2];
-  } dne_remote;
-};
-struct dn_addr {
-  __le16 dna_family;
-  union etheraddress dna_netaddr;
-};
-#define DECNET_IOCTL_BASE 0x89
-#define SIOCSNETADDR _IOW(DECNET_IOCTL_BASE, 0xe0, struct dn_naddr)
-#define SIOCGNETADDR _IOR(DECNET_IOCTL_BASE, 0xe1, struct dn_naddr)
-#define OSIOCSNETADDR _IOW(DECNET_IOCTL_BASE, 0xe0, int)
-#define OSIOCGNETADDR _IOR(DECNET_IOCTL_BASE, 0xe1, int)
-#endif
diff --git a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/dns_resolver.h b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/dns_resolver.h
index 21cb5c0..e7113d0 100644
--- a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/dns_resolver.h
+++ b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/dns_resolver.h
@@ -55,13 +55,13 @@
   __u8 zero;
   __u8 content;
   __u8 version;
-} __packed;
+} __attribute__((__packed__));
 struct dns_server_list_v1_header {
   struct dns_payload_header hdr;
   __u8 source;
   __u8 status;
   __u8 nr_servers;
-} __packed;
+} __attribute__((__packed__));
 struct dns_server_list_v1_server {
   __u16 name_len;
   __u16 priority;
@@ -71,8 +71,8 @@
   __u8 status;
   __u8 protocol;
   __u8 nr_addrs;
-} __packed;
+} __attribute__((__packed__));
 struct dns_server_list_v1_address {
   __u8 address_type;
-} __packed;
+} __attribute__((__packed__));
 #endif
diff --git a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/dw100.h b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/dw100.h
new file mode 100644
index 0000000..13d8487
--- /dev/null
+++ b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/dw100.h
@@ -0,0 +1,23 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef __UAPI_DW100_H__
+#define __UAPI_DW100_H__
+#include <linux/v4l2-controls.h>
+#define V4L2_CID_DW100_DEWARPING_16x16_VERTEX_MAP (V4L2_CID_USER_DW100_BASE + 1)
+#endif
diff --git a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/elf-em.h b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/elf-em.h
index d1ed1f6..92da93d 100644
--- a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/elf-em.h
+++ b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/elf-em.h
@@ -61,6 +61,7 @@
 #define EM_RISCV 243
 #define EM_BPF 247
 #define EM_CSKY 252
+#define EM_LOONGARCH 258
 #define EM_FRV 0x5441
 #define EM_ALPHA 0x9026
 #define EM_CYGNUS_M32R 0x9041
diff --git a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/elf.h b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/elf.h
index 7655f12..28c8426 100644
--- a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/elf.h
+++ b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/elf.h
@@ -45,9 +45,11 @@
 #define PT_HIOS 0x6fffffff
 #define PT_LOPROC 0x70000000
 #define PT_HIPROC 0x7fffffff
-#define PT_GNU_EH_FRAME 0x6474e550
-#define PT_GNU_PROPERTY 0x6474e553
+#define PT_GNU_EH_FRAME (PT_LOOS + 0x474e550)
 #define PT_GNU_STACK (PT_LOOS + 0x474e551)
+#define PT_GNU_RELRO (PT_LOOS + 0x474e552)
+#define PT_GNU_PROPERTY (PT_LOOS + 0x474e553)
+#define PT_AARCH64_MEMTAG_MTE (PT_LOPROC + 0x2)
 #define PN_XNUM 0xffff
 #define ET_NONE 0
 #define ET_REL 1
@@ -110,7 +112,7 @@
 #define STT_COMMON 5
 #define STT_TLS 6
 #define ELF_ST_BIND(x) ((x) >> 4)
-#define ELF_ST_TYPE(x) (((unsigned int) x) & 0xf)
+#define ELF_ST_TYPE(x) ((x) & 0xf)
 #define ELF32_ST_BIND(x) ELF_ST_BIND(x)
 #define ELF32_ST_TYPE(x) ELF_ST_TYPE(x)
 #define ELF64_ST_BIND(x) ELF_ST_BIND(x)
@@ -350,6 +352,7 @@
 #define NT_S390_GS_CB 0x30b
 #define NT_S390_GS_BC 0x30c
 #define NT_S390_RI_CB 0x30d
+#define NT_S390_PV_CPU_DATA 0x30e
 #define NT_ARM_VFP 0x400
 #define NT_ARM_TLS 0x401
 #define NT_ARM_HW_BREAK 0x402
@@ -361,11 +364,18 @@
 #define NT_ARM_PACG_KEYS 0x408
 #define NT_ARM_TAGGED_ADDR_CTRL 0x409
 #define NT_ARM_PAC_ENABLED_KEYS 0x40a
+#define NT_ARM_SSVE 0x40b
+#define NT_ARM_ZA 0x40c
 #define NT_ARC_V2 0x600
 #define NT_VMCOREDD 0x700
 #define NT_MIPS_DSP 0x800
 #define NT_MIPS_FP_MODE 0x801
 #define NT_MIPS_MSA 0x802
+#define NT_LOONGARCH_CPUCFG 0xa00
+#define NT_LOONGARCH_CSR 0xa01
+#define NT_LOONGARCH_LSX 0xa02
+#define NT_LOONGARCH_LASX 0xa03
+#define NT_LOONGARCH_LBT 0xa04
 #define NT_GNU_PROPERTY_TYPE_0 5
 typedef struct elf32_note {
   Elf32_Word n_namesz;
diff --git a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/ethtool.h b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/ethtool.h
index 741ea2a..8bdd622 100644
--- a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/ethtool.h
+++ b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/ethtool.h
@@ -98,7 +98,7 @@
   __u32 id;
   __u32 type_id;
   __u32 len;
-  void * data[0];
+  void * data[];
 };
 #define DOWNSHIFT_DEV_DEFAULT_COUNT 0xff
 #define DOWNSHIFT_DEV_DISABLE 0
@@ -118,14 +118,14 @@
   __u32 cmd;
   __u32 version;
   __u32 len;
-  __u8 data[0];
+  __u8 data[];
 };
 struct ethtool_eeprom {
   __u32 cmd;
   __u32 magic;
   __u32 offset;
   __u32 len;
-  __u8 data[0];
+  __u8 data[];
 };
 struct ethtool_eee {
   __u32 cmd;
@@ -277,17 +277,31 @@
   ETHTOOL_MODULE_POWER_MODE_LOW = 1,
   ETHTOOL_MODULE_POWER_MODE_HIGH,
 };
+enum ethtool_podl_pse_admin_state {
+  ETHTOOL_PODL_PSE_ADMIN_STATE_UNKNOWN = 1,
+  ETHTOOL_PODL_PSE_ADMIN_STATE_DISABLED,
+  ETHTOOL_PODL_PSE_ADMIN_STATE_ENABLED,
+};
+enum ethtool_podl_pse_pw_d_status {
+  ETHTOOL_PODL_PSE_PW_D_STATUS_UNKNOWN = 1,
+  ETHTOOL_PODL_PSE_PW_D_STATUS_DISABLED,
+  ETHTOOL_PODL_PSE_PW_D_STATUS_SEARCHING,
+  ETHTOOL_PODL_PSE_PW_D_STATUS_DELIVERING,
+  ETHTOOL_PODL_PSE_PW_D_STATUS_SLEEP,
+  ETHTOOL_PODL_PSE_PW_D_STATUS_IDLE,
+  ETHTOOL_PODL_PSE_PW_D_STATUS_ERROR,
+};
 struct ethtool_gstrings {
   __u32 cmd;
   __u32 string_set;
   __u32 len;
-  __u8 data[0];
+  __u8 data[];
 };
 struct ethtool_sset_info {
   __u32 cmd;
   __u32 reserved;
   __u64 sset_mask;
-  __u32 data[0];
+  __u32 data[];
 };
 enum ethtool_test_flags {
   ETH_TEST_FL_OFFLINE = (1 << 0),
@@ -300,17 +314,17 @@
   __u32 flags;
   __u32 reserved;
   __u32 len;
-  __u64 data[0];
+  __u64 data[];
 };
 struct ethtool_stats {
   __u32 cmd;
   __u32 n_stats;
-  __u64 data[0];
+  __u64 data[];
 };
 struct ethtool_perm_addr {
   __u32 cmd;
   __u32 size;
-  __u8 data[0];
+  __u8 data[];
 };
 enum ethtool_flags {
   ETH_FLAG_TXVLAN = (1 << 7),
@@ -410,7 +424,7 @@
 struct ethtool_rxfh_indir {
   __u32 cmd;
   __u32 size;
-  __u32 ring_index[0];
+  __u32 ring_index[];
 };
 struct ethtool_rxfh {
   __u32 cmd;
@@ -420,7 +434,7 @@
   __u8 hfunc;
   __u8 rsvd8[3];
   __u32 rsvd32;
-  __u32 rss_config[0];
+  __u32 rss_config[];
 };
 #define ETH_RXFH_CONTEXT_ALLOC 0xffffffff
 #define ETH_RXFH_INDIR_NO_CHANGE 0xffffffff
@@ -462,7 +476,7 @@
   __u32 version;
   __u32 flag;
   __u32 len;
-  __u8 data[0];
+  __u8 data[];
 };
 #define ETH_FW_DUMP_DISABLE 0
 struct ethtool_get_features_block {
@@ -474,7 +488,7 @@
 struct ethtool_gfeatures {
   __u32 cmd;
   __u32 size;
-  struct ethtool_get_features_block features[0];
+  struct ethtool_get_features_block features[];
 };
 struct ethtool_set_features_block {
   __u32 valid;
@@ -483,7 +497,7 @@
 struct ethtool_sfeatures {
   __u32 cmd;
   __u32 size;
-  struct ethtool_set_features_block features[0];
+  struct ethtool_set_features_block features[];
 };
 struct ethtool_ts_info {
   __u32 cmd;
@@ -704,6 +718,7 @@
   ETHTOOL_LINK_MODE_400000baseCR4_Full_BIT = 89,
   ETHTOOL_LINK_MODE_100baseFX_Half_BIT = 90,
   ETHTOOL_LINK_MODE_100baseFX_Full_BIT = 91,
+  ETHTOOL_LINK_MODE_10baseT1L_Full_BIT = 92,
   __ETHTOOL_LINK_MODE_MASK_NBITS
 };
 #define __ETHTOOL_LINK_MODE_LEGACY_MASK(base_name) (1UL << (ETHTOOL_LINK_MODE_ ##base_name ##_BIT))
@@ -799,6 +814,10 @@
 #define MASTER_SLAVE_STATE_MASTER 2
 #define MASTER_SLAVE_STATE_SLAVE 3
 #define MASTER_SLAVE_STATE_ERR 4
+#define RATE_MATCH_NONE 0
+#define RATE_MATCH_PAUSE 1
+#define RATE_MATCH_CRS 2
+#define RATE_MATCH_OPEN_LOOP 3
 #define PORT_TP 0x00
 #define PORT_AUI 0x01
 #define PORT_MII 0x02
@@ -900,8 +919,8 @@
   __u8 transceiver;
   __u8 master_slave_cfg;
   __u8 master_slave_state;
-  __u8 reserved1[1];
+  __u8 rate_matching;
   __u32 reserved[7];
-  __u32 link_mode_masks[0];
+  __u32 link_mode_masks[];
 };
 #endif
diff --git a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/ethtool_netlink.h b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/ethtool_netlink.h
index 7dcae22..08c6936 100644
--- a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/ethtool_netlink.h
+++ b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/ethtool_netlink.h
@@ -56,6 +56,8 @@
   ETHTOOL_MSG_PHC_VCLOCKS_GET,
   ETHTOOL_MSG_MODULE_GET,
   ETHTOOL_MSG_MODULE_SET,
+  ETHTOOL_MSG_PSE_GET,
+  ETHTOOL_MSG_PSE_SET,
   __ETHTOOL_MSG_USER_CNT,
   ETHTOOL_MSG_USER_MAX = __ETHTOOL_MSG_USER_CNT - 1
 };
@@ -97,6 +99,7 @@
   ETHTOOL_MSG_PHC_VCLOCKS_GET_REPLY,
   ETHTOOL_MSG_MODULE_GET_REPLY,
   ETHTOOL_MSG_MODULE_NTF,
+  ETHTOOL_MSG_PSE_GET_REPLY,
   __ETHTOOL_MSG_KERNEL_CNT,
   ETHTOOL_MSG_KERNEL_MAX = __ETHTOOL_MSG_KERNEL_CNT - 1
 };
@@ -193,6 +196,7 @@
   ETHTOOL_A_LINKMODES_MASTER_SLAVE_CFG,
   ETHTOOL_A_LINKMODES_MASTER_SLAVE_STATE,
   ETHTOOL_A_LINKMODES_LANES,
+  ETHTOOL_A_LINKMODES_RATE_MATCHING,
   __ETHTOOL_A_LINKMODES_CNT,
   ETHTOOL_A_LINKMODES_MAX = __ETHTOOL_A_LINKMODES_CNT - 1
 };
@@ -240,6 +244,11 @@
   ETHTOOL_A_PRIVFLAGS_MAX = __ETHTOOL_A_PRIVFLAGS_CNT - 1
 };
 enum {
+  ETHTOOL_TCP_DATA_SPLIT_UNKNOWN = 0,
+  ETHTOOL_TCP_DATA_SPLIT_DISABLED,
+  ETHTOOL_TCP_DATA_SPLIT_ENABLED,
+};
+enum {
   ETHTOOL_A_RINGS_UNSPEC,
   ETHTOOL_A_RINGS_HEADER,
   ETHTOOL_A_RINGS_RX_MAX,
@@ -251,6 +260,9 @@
   ETHTOOL_A_RINGS_RX_JUMBO,
   ETHTOOL_A_RINGS_TX,
   ETHTOOL_A_RINGS_RX_BUF_LEN,
+  ETHTOOL_A_RINGS_TCP_DATA_SPLIT,
+  ETHTOOL_A_RINGS_CQE_SIZE,
+  ETHTOOL_A_RINGS_TX_PUSH,
   __ETHTOOL_A_RINGS_CNT,
   ETHTOOL_A_RINGS_MAX = (__ETHTOOL_A_RINGS_CNT - 1)
 };
@@ -601,6 +613,15 @@
   __ETHTOOL_A_MODULE_CNT,
   ETHTOOL_A_MODULE_MAX = (__ETHTOOL_A_MODULE_CNT - 1)
 };
+enum {
+  ETHTOOL_A_PSE_UNSPEC,
+  ETHTOOL_A_PSE_HEADER,
+  ETHTOOL_A_PODL_PSE_ADMIN_STATE,
+  ETHTOOL_A_PODL_PSE_ADMIN_CONTROL,
+  ETHTOOL_A_PODL_PSE_PW_D_STATUS,
+  __ETHTOOL_A_PSE_CNT,
+  ETHTOOL_A_PSE_MAX = (__ETHTOOL_A_PSE_CNT - 1)
+};
 #define ETHTOOL_GENL_NAME "ethtool"
 #define ETHTOOL_GENL_VERSION 1
 #define ETHTOOL_MCGRP_MONITOR_NAME "monitor"
diff --git a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/f2fs.h b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/f2fs.h
index 76da8f6..3fcd444 100644
--- a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/f2fs.h
+++ b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/f2fs.h
@@ -25,7 +25,7 @@
 #define F2FS_IOC_COMMIT_ATOMIC_WRITE _IO(F2FS_IOCTL_MAGIC, 2)
 #define F2FS_IOC_START_VOLATILE_WRITE _IO(F2FS_IOCTL_MAGIC, 3)
 #define F2FS_IOC_RELEASE_VOLATILE_WRITE _IO(F2FS_IOCTL_MAGIC, 4)
-#define F2FS_IOC_ABORT_VOLATILE_WRITE _IO(F2FS_IOCTL_MAGIC, 5)
+#define F2FS_IOC_ABORT_ATOMIC_WRITE _IO(F2FS_IOCTL_MAGIC, 5)
 #define F2FS_IOC_GARBAGE_COLLECT _IOW(F2FS_IOCTL_MAGIC, 6, __u32)
 #define F2FS_IOC_WRITE_CHECKPOINT _IO(F2FS_IOCTL_MAGIC, 7)
 #define F2FS_IOC_DEFRAGMENT _IOWR(F2FS_IOCTL_MAGIC, 8, struct f2fs_defragment)
diff --git a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/fanotify.h b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/fanotify.h
index 6249292..9815a64 100644
--- a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/fanotify.h
+++ b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/fanotify.h
@@ -67,9 +67,12 @@
 #define FAN_MARK_IGNORED_MASK 0x00000020
 #define FAN_MARK_IGNORED_SURV_MODIFY 0x00000040
 #define FAN_MARK_FLUSH 0x00000080
+#define FAN_MARK_EVICTABLE 0x00000200
+#define FAN_MARK_IGNORE 0x00000400
 #define FAN_MARK_INODE 0x00000000
 #define FAN_MARK_MOUNT 0x00000010
 #define FAN_MARK_FILESYSTEM 0x00000100
+#define FAN_MARK_IGNORE_SURV (FAN_MARK_IGNORE | FAN_MARK_IGNORED_SURV_MODIFY)
 #define FAN_ALL_MARK_FLAGS (FAN_MARK_ADD | FAN_MARK_REMOVE | FAN_MARK_DONT_FOLLOW | FAN_MARK_ONLYDIR | FAN_MARK_MOUNT | FAN_MARK_IGNORED_MASK | FAN_MARK_IGNORED_SURV_MODIFY | FAN_MARK_FLUSH)
 #define FAN_ALL_EVENTS (FAN_ACCESS | FAN_MODIFY | FAN_CLOSE | FAN_OPEN)
 #define FAN_ALL_PERM_EVENTS (FAN_OPEN_PERM | FAN_ACCESS_PERM)
@@ -99,7 +102,7 @@
 struct fanotify_event_info_fid {
   struct fanotify_event_info_header hdr;
   __kernel_fsid_t fsid;
-  unsigned char handle[0];
+  unsigned char handle[];
 };
 struct fanotify_event_info_pidfd {
   struct fanotify_event_info_header hdr;
diff --git a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/fiemap.h b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/fiemap.h
index 4310786..a67a5fe 100644
--- a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/fiemap.h
+++ b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/fiemap.h
@@ -34,7 +34,7 @@
   __u32 fm_mapped_extents;
   __u32 fm_extent_count;
   __u32 fm_reserved;
-  struct fiemap_extent fm_extents[0];
+  struct fiemap_extent fm_extents[];
 };
 #define FIEMAP_MAX_OFFSET (~0ULL)
 #define FIEMAP_FLAG_SYNC 0x00000001
diff --git a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/firewire-cdev.h b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/firewire-cdev.h
index 92957bc..a54191c 100644
--- a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/firewire-cdev.h
+++ b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/firewire-cdev.h
@@ -50,7 +50,7 @@
   __u32 type;
   __u32 rcode;
   __u32 length;
-  __u32 data[0];
+  __u32 data[];
 };
 struct fw_cdev_event_request {
   __u64 closure;
@@ -59,7 +59,7 @@
   __u64 offset;
   __u32 handle;
   __u32 length;
-  __u32 data[0];
+  __u32 data[];
 };
 struct fw_cdev_event_request2 {
   __u64 closure;
@@ -72,14 +72,14 @@
   __u32 generation;
   __u32 handle;
   __u32 length;
-  __u32 data[0];
+  __u32 data[];
 };
 struct fw_cdev_event_iso_interrupt {
   __u64 closure;
   __u32 type;
   __u32 cycle;
   __u32 header_length;
-  __u32 header[0];
+  __u32 header[];
 };
 struct fw_cdev_event_iso_interrupt_mc {
   __u64 closure;
@@ -98,7 +98,7 @@
   __u32 type;
   __u32 rcode;
   __u32 length;
-  __u32 data[0];
+  __u32 data[];
 };
 union fw_cdev_event {
   struct fw_cdev_event_common common;
@@ -207,7 +207,7 @@
 #define FW_CDEV_ISO_HEADER_LENGTH(v) ((v) << 24)
 struct fw_cdev_iso_packet {
   __u32 control;
-  __u32 header[0];
+  __u32 header[];
 };
 struct fw_cdev_queue_iso {
   __u64 packets;
diff --git a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/fs.h b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/fs.h
index 3bb4183..96f9181 100644
--- a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/fs.h
+++ b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/fs.h
@@ -63,7 +63,7 @@
   __u16 dest_count;
   __u16 reserved1;
   __u32 reserved2;
-  struct file_dedupe_range_info info[0];
+  struct file_dedupe_range_info info[];
 };
 struct files_stat_struct {
   unsigned long nr_files;
diff --git a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/fscrypt.h b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/fscrypt.h
index ca42eb3..e6b5358 100644
--- a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/fscrypt.h
+++ b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/fscrypt.h
@@ -33,6 +33,7 @@
 #define FSCRYPT_MODE_AES_128_CBC 5
 #define FSCRYPT_MODE_AES_128_CTS 6
 #define FSCRYPT_MODE_ADIANTUM 9
+#define FSCRYPT_MODE_AES_256_HCTR2 10
 #define FSCRYPT_POLICY_V1 0
 #define FSCRYPT_KEY_DESCRIPTOR_SIZE 8
 struct fscrypt_policy_v1 {
diff --git a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/fsi.h b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/fsi.h
index fc88464..b080c21 100644
--- a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/fsi.h
+++ b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/fsi.h
@@ -48,4 +48,5 @@
 #define FSI_SCOM_READ _IOWR('s', 0x01, struct scom_access)
 #define FSI_SCOM_WRITE _IOWR('s', 0x02, struct scom_access)
 #define FSI_SCOM_RESET _IOW('s', 0x03, __u32)
+#define FSI_SBEFIFO_READ_TIMEOUT_SECONDS _IOW('s', 0x00, __u32)
 #endif
diff --git a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/fuse.h b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/fuse.h
index 144e960..ae667eb 100644
--- a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/fuse.h
+++ b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/fuse.h
@@ -20,7 +20,7 @@
 #define _LINUX_FUSE_H
 #include <stdint.h>
 #define FUSE_KERNEL_VERSION 7
-#define FUSE_KERNEL_MINOR_VERSION 36
+#define FUSE_KERNEL_MINOR_VERSION 37
 #define FUSE_ROOT_ID 1
 struct fuse_attr {
   uint64_t ino;
@@ -187,6 +187,7 @@
   FUSE_SETUPMAPPING = 48,
   FUSE_REMOVEMAPPING = 49,
   FUSE_SYNCFS = 50,
+  FUSE_TMPFILE = 51,
   FUSE_CANONICAL_PATH = 2016,
   CUSE_INIT = 4096,
   CUSE_INIT_BSWAP_RESERVED = 1048576,
diff --git a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/genetlink.h b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/genetlink.h
index 2e2137d..0f86331 100644
--- a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/genetlink.h
+++ b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/genetlink.h
@@ -81,6 +81,7 @@
   CTRL_ATTR_MCAST_GRP_ID,
   __CTRL_ATTR_MCAST_GRP_MAX,
 };
+#define CTRL_ATTR_MCAST_GRP_MAX (__CTRL_ATTR_MCAST_GRP_MAX - 1)
 enum {
   CTRL_ATTR_POLICY_UNSPEC,
   CTRL_ATTR_POLICY_DO,
@@ -88,5 +89,5 @@
   __CTRL_ATTR_POLICY_DUMP_MAX,
   CTRL_ATTR_POLICY_DUMP_MAX = __CTRL_ATTR_POLICY_DUMP_MAX - 1
 };
-#define CTRL_ATTR_MCAST_GRP_MAX (__CTRL_ATTR_MCAST_GRP_MAX - 1)
+#define CTRL_ATTR_POLICY_MAX (__CTRL_ATTR_POLICY_DUMP_MAX - 1)
 #endif
diff --git a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/gpio.h b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/gpio.h
index 7e010d9..e760321 100644
--- a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/gpio.h
+++ b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/gpio.h
@@ -42,6 +42,7 @@
   GPIO_V2_LINE_FLAG_BIAS_PULL_DOWN = _BITULL(9),
   GPIO_V2_LINE_FLAG_BIAS_DISABLED = _BITULL(10),
   GPIO_V2_LINE_FLAG_EVENT_CLOCK_REALTIME = _BITULL(11),
+  GPIO_V2_LINE_FLAG_EVENT_CLOCK_HTE = _BITULL(12),
 };
 struct gpio_v2_line_values {
   __aligned_u64 bits;
diff --git a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/gtp.h b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/gtp.h
index 3b9416e..20bc3d6 100644
--- a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/gtp.h
+++ b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/gtp.h
@@ -23,6 +23,7 @@
   GTP_CMD_NEWPDP,
   GTP_CMD_DELPDP,
   GTP_CMD_GETPDP,
+  GTP_CMD_ECHOREQ,
   GTP_CMD_MAX,
 };
 enum gtp_version {
diff --git a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/hid.h b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/hid.h
index ce93cd7..37ab462 100644
--- a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/hid.h
+++ b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/hid.h
@@ -22,12 +22,20 @@
 #define USB_INTERFACE_SUBCLASS_BOOT 1
 #define USB_INTERFACE_PROTOCOL_KEYBOARD 1
 #define USB_INTERFACE_PROTOCOL_MOUSE 2
-#define HID_REQ_GET_REPORT 0x01
-#define HID_REQ_GET_IDLE 0x02
-#define HID_REQ_GET_PROTOCOL 0x03
-#define HID_REQ_SET_REPORT 0x09
-#define HID_REQ_SET_IDLE 0x0A
-#define HID_REQ_SET_PROTOCOL 0x0B
+enum hid_report_type {
+  HID_INPUT_REPORT = 0,
+  HID_OUTPUT_REPORT = 1,
+  HID_FEATURE_REPORT = 2,
+  HID_REPORT_TYPES,
+};
+enum hid_class_request {
+  HID_REQ_GET_REPORT = 0x01,
+  HID_REQ_GET_IDLE = 0x02,
+  HID_REQ_GET_PROTOCOL = 0x03,
+  HID_REQ_SET_REPORT = 0x09,
+  HID_REQ_SET_IDLE = 0x0A,
+  HID_REQ_SET_PROTOCOL = 0x0B,
+};
 #define HID_DT_HID (USB_TYPE_CLASS | 0x01)
 #define HID_DT_REPORT (USB_TYPE_CLASS | 0x02)
 #define HID_DT_PHYSICAL (USB_TYPE_CLASS | 0x03)
diff --git a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/icmp.h b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/icmp.h
index 8847a48..77cb328 100644
--- a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/icmp.h
+++ b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/icmp.h
@@ -84,7 +84,11 @@
     } echo;
     __be32 gateway;
     struct {
+#ifdef __BIONIC__
       __be16 __linux_unused;
+#else
+      __be16 __linux_unused;
+#endif
       __be16 mtu;
     } frag;
     __u8 reserved[4];
diff --git a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/idxd.h b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/idxd.h
index ad9ed48..a456352 100644
--- a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/idxd.h
+++ b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/idxd.h
@@ -38,6 +38,7 @@
   IDXD_SCMD_WQ_NO_SIZE = 0x800e0000,
   IDXD_SCMD_WQ_NO_PRIV = 0x800f0000,
   IDXD_SCMD_WQ_IRQ_ERR = 0x80100000,
+  IDXD_SCMD_WQ_USER_NO_IOMMU = 0x80110000,
 };
 #define IDXD_SCMD_SOFTERR_MASK 0x80000000
 #define IDXD_SCMD_SOFTERR_SHIFT 16
@@ -57,6 +58,11 @@
 #define IDXD_OP_FLAG_DRDBK 0x4000
 #define IDXD_OP_FLAG_DSTS 0x8000
 #define IDXD_OP_FLAG_RD_SRC2_AECS 0x010000
+#define IDXD_OP_FLAG_RD_SRC2_2ND 0x020000
+#define IDXD_OP_FLAG_WR_SRC2_AECS_COMP 0x040000
+#define IDXD_OP_FLAG_WR_SRC2_AECS_OVFL 0x080000
+#define IDXD_OP_FLAG_SRC2_STS 0x100000
+#define IDXD_OP_FLAG_CRC_RFC3720 0x200000
 enum dsa_opcode {
   DSA_OPCODE_NOOP = 0,
   DSA_OPCODE_BATCH,
@@ -82,6 +88,18 @@
   IAX_OPCODE_MEMMOVE,
   IAX_OPCODE_DECOMPRESS = 0x42,
   IAX_OPCODE_COMPRESS,
+  IAX_OPCODE_CRC64,
+  IAX_OPCODE_ZERO_DECOMP_32 = 0x48,
+  IAX_OPCODE_ZERO_DECOMP_16,
+  IAX_OPCODE_ZERO_COMP_32 = 0x4c,
+  IAX_OPCODE_ZERO_COMP_16,
+  IAX_OPCODE_SCAN = 0x50,
+  IAX_OPCODE_SET_MEMBER,
+  IAX_OPCODE_EXTRACT,
+  IAX_OPCODE_SELECT,
+  IAX_OPCODE_RLE_BURST,
+  IAX_OPCODE_FIND_UNIQUE,
+  IAX_OPCODE_EXPAND,
 };
 enum dsa_completion_status {
   DSA_COMP_NONE = 0,
@@ -118,6 +136,7 @@
   IAX_COMP_NONE = 0,
   IAX_COMP_SUCCESS,
   IAX_COMP_PAGE_FAULT_IR = 0x04,
+  IAX_COMP_ANALYTICS_ERROR = 0x0a,
   IAX_COMP_OUTBUF_OVERFLOW,
   IAX_COMP_BAD_OPCODE = 0x10,
   IAX_COMP_INVALID_FLAGS,
@@ -138,7 +157,10 @@
   IAX_COMP_WATCHDOG,
   IAX_COMP_INVALID_COMP_FLAG = 0x30,
   IAX_COMP_INVALID_FILTER_FLAG,
-  IAX_COMP_INVALID_NUM_ELEMS = 0x33,
+  IAX_COMP_INVALID_INPUT_SIZE,
+  IAX_COMP_INVALID_NUM_ELEMS,
+  IAX_COMP_INVALID_SRC1_WIDTH,
+  IAX_COMP_INVALID_INVERT_OUT,
 };
 #define DSA_COMP_STATUS_MASK 0x7f
 #define DSA_COMP_STATUS_WRITE 0x80
@@ -291,8 +313,12 @@
   uint32_t output_size;
   uint8_t output_bits;
   uint8_t rsvd3;
-  uint16_t rsvd4;
-  uint64_t rsvd5[4];
+  uint16_t xor_csum;
+  uint32_t crc;
+  uint32_t min;
+  uint32_t max;
+  uint32_t sum;
+  uint64_t rsvd4[2];
 } __attribute__((packed));
 struct iax_raw_completion_record {
   uint64_t field[8];
diff --git a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/if_addr.h b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/if_addr.h
index 6a6b640..a225e69 100644
--- a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/if_addr.h
+++ b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/if_addr.h
@@ -39,6 +39,7 @@
   IFA_FLAGS,
   IFA_RT_PRIORITY,
   IFA_TARGET_NETNSID,
+  IFA_PROTO,
   __IFA_MAX,
 };
 #define IFA_MAX (__IFA_MAX - 1)
@@ -63,4 +64,8 @@
 };
 #define IFA_RTA(r) ((struct rtattr *) (((char *) (r)) + NLMSG_ALIGN(sizeof(struct ifaddrmsg))))
 #define IFA_PAYLOAD(n) NLMSG_PAYLOAD(n, sizeof(struct ifaddrmsg))
+#define IFAPROT_UNSPEC 0
+#define IFAPROT_KERNEL_LO 1
+#define IFAPROT_KERNEL_RA 2
+#define IFAPROT_KERNEL_LL 3
 #endif
diff --git a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/if_alg.h b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/if_alg.h
index 6530a16..237fe6e 100644
--- a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/if_alg.h
+++ b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/if_alg.h
@@ -35,7 +35,7 @@
 };
 struct af_alg_iv {
   __u32 ivlen;
-  __u8 iv[0];
+  __u8 iv[];
 };
 #define ALG_SET_KEY 1
 #define ALG_SET_IV 2
diff --git a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/if_arcnet.h b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/if_arcnet.h
index 6aece37..65b07e1 100644
--- a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/if_arcnet.h
+++ b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/if_arcnet.h
@@ -40,18 +40,18 @@
   __u8 proto;
   __u8 split_flag;
   __be16 sequence;
-  __u8 payload[0];
+  __u8 payload[];
 };
 #define RFC1201_HDR_SIZE 4
 struct arc_rfc1051 {
   __u8 proto;
-  __u8 payload[0];
+  __u8 payload[];
 };
 #define RFC1051_HDR_SIZE 1
 struct arc_eth_encap {
   __u8 proto;
   struct ethhdr eth;
-  __u8 payload[0];
+  __u8 payload[];
 };
 #define ETH_ENCAP_HDR_SIZE 14
 struct arc_cap {
diff --git a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/if_bridge.h b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/if_bridge.h
index 2054fb3..0f08866 100644
--- a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/if_bridge.h
+++ b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/if_bridge.h
@@ -108,6 +108,7 @@
   IFLA_BRIDGE_VLAN_TUNNEL_INFO,
   IFLA_BRIDGE_MRP,
   IFLA_BRIDGE_CFM,
+  IFLA_BRIDGE_MST,
   __IFLA_BRIDGE_MAX,
 };
 #define IFLA_BRIDGE_MAX (__IFLA_BRIDGE_MAX - 1)
@@ -384,6 +385,19 @@
   __IFLA_BRIDGE_CFM_CC_PEER_STATUS_MAX,
 };
 #define IFLA_BRIDGE_CFM_CC_PEER_STATUS_MAX (__IFLA_BRIDGE_CFM_CC_PEER_STATUS_MAX - 1)
+enum {
+  IFLA_BRIDGE_MST_UNSPEC,
+  IFLA_BRIDGE_MST_ENTRY,
+  __IFLA_BRIDGE_MST_MAX,
+};
+#define IFLA_BRIDGE_MST_MAX (__IFLA_BRIDGE_MST_MAX - 1)
+enum {
+  IFLA_BRIDGE_MST_ENTRY_UNSPEC,
+  IFLA_BRIDGE_MST_ENTRY_MSTI,
+  IFLA_BRIDGE_MST_ENTRY_STATE,
+  __IFLA_BRIDGE_MST_ENTRY_MAX,
+};
+#define IFLA_BRIDGE_MST_ENTRY_MAX (__IFLA_BRIDGE_MST_ENTRY_MAX - 1)
 struct bridge_stp_xstats {
   __u64 transition_blk;
   __u64 transition_fwd;
@@ -460,6 +474,7 @@
   BRIDGE_VLANDB_GOPTS_MCAST_QUERIER,
   BRIDGE_VLANDB_GOPTS_MCAST_ROUTER_PORTS,
   BRIDGE_VLANDB_GOPTS_MCAST_QUERIER_STATE,
+  BRIDGE_VLANDB_GOPTS_MSTI,
   __BRIDGE_VLANDB_GOPTS_MAX
 };
 #define BRIDGE_VLANDB_GOPTS_MAX (__BRIDGE_VLANDB_GOPTS_MAX - 1)
@@ -599,6 +614,7 @@
 enum br_boolopt_id {
   BR_BOOLOPT_NO_LL_LEARN,
   BR_BOOLOPT_MCAST_VLAN_SNOOPING,
+  BR_BOOLOPT_MST_ENABLE,
   BR_BOOLOPT_MAX
 };
 struct br_boolopt_multi {
diff --git a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/if_ether.h b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/if_ether.h
index 1f7f8f2..6043921 100644
--- a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/if_ether.h
+++ b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/if_ether.h
@@ -67,8 +67,10 @@
 #define ETH_P_LINK_CTL 0x886c
 #define ETH_P_ATMFATE 0x8884
 #define ETH_P_PAE 0x888E
+#define ETH_P_PROFINET 0x8892
 #define ETH_P_REALTEK 0x8899
 #define ETH_P_AOE 0x88A2
+#define ETH_P_ETHERCAT 0x88A4
 #define ETH_P_8021AD 0x88A8
 #define ETH_P_802_EX1 0x88B5
 #define ETH_P_PREAUTH 0x88C7
@@ -95,6 +97,7 @@
 #define ETH_P_QINQ3 0x9300
 #define ETH_P_EDSA 0xDADA
 #define ETH_P_DSA_8021Q 0xDADB
+#define ETH_P_DSA_A5PSW 0xE001
 #define ETH_P_IFE 0xED3E
 #define ETH_P_AF_IUCV 0xFBFB
 #define ETH_P_802_3_MIN 0x0600
@@ -109,6 +112,7 @@
 #define ETH_P_LOCALTALK 0x0009
 #define ETH_P_CAN 0x000C
 #define ETH_P_CANFD 0x000D
+#define ETH_P_CANXL 0x000E
 #define ETH_P_PPPTALK 0x0010
 #define ETH_P_TR_802_2 0x0011
 #define ETH_P_MOBITEX 0x0015
diff --git a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/if_link.h b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/if_link.h
index 7e413ae..ebf403a 100644
--- a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/if_link.h
+++ b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/if_link.h
@@ -71,6 +71,18 @@
   __u64 rx_compressed;
   __u64 tx_compressed;
   __u64 rx_nohandler;
+  __u64 rx_otherhost_dropped;
+};
+struct rtnl_hw_stats64 {
+  __u64 rx_packets;
+  __u64 tx_packets;
+  __u64 rx_bytes;
+  __u64 tx_bytes;
+  __u64 rx_errors;
+  __u64 tx_errors;
+  __u64 rx_dropped;
+  __u64 tx_dropped;
+  __u64 multicast;
 };
 struct rtnl_link_ifmap {
   __u64 mem_start;
@@ -151,6 +163,9 @@
   IFLA_PARENT_DEV_NAME,
   IFLA_PARENT_DEV_BUS_NAME,
   IFLA_GRO_MAX_SIZE,
+  IFLA_TSO_MAX_SIZE,
+  IFLA_TSO_MAX_SEGS,
+  IFLA_ALLMULTI,
   __IFLA_MAX
 };
 #define IFLA_MAX (__IFLA_MAX - 1)
@@ -289,6 +304,7 @@
   IFLA_BRPORT_MRP_IN_OPEN,
   IFLA_BRPORT_MCAST_EHT_HOSTS_LIMIT,
   IFLA_BRPORT_MCAST_EHT_HOSTS_CNT,
+  IFLA_BRPORT_LOCKED,
   __IFLA_BRPORT_MAX
 };
 #define IFLA_BRPORT_MAX (__IFLA_BRPORT_MAX - 1)
@@ -396,6 +412,7 @@
   IFLA_XFRM_UNSPEC,
   IFLA_XFRM_LINK,
   IFLA_XFRM_IF_ID,
+  IFLA_XFRM_COLLECT_METADATA,
   __IFLA_XFRM_MAX
 };
 #define IFLA_XFRM_MAX (__IFLA_XFRM_MAX - 1)
@@ -428,6 +445,44 @@
 };
 #define IPVLAN_F_PRIVATE 0x01
 #define IPVLAN_F_VEPA 0x02
+struct tunnel_msg {
+  __u8 family;
+  __u8 flags;
+  __u16 reserved2;
+  __u32 ifindex;
+};
+#define TUNNEL_MSG_FLAG_STATS 0x01
+#define TUNNEL_MSG_VALID_USER_FLAGS TUNNEL_MSG_FLAG_STATS
+enum {
+  VNIFILTER_ENTRY_STATS_UNSPEC,
+  VNIFILTER_ENTRY_STATS_RX_BYTES,
+  VNIFILTER_ENTRY_STATS_RX_PKTS,
+  VNIFILTER_ENTRY_STATS_RX_DROPS,
+  VNIFILTER_ENTRY_STATS_RX_ERRORS,
+  VNIFILTER_ENTRY_STATS_TX_BYTES,
+  VNIFILTER_ENTRY_STATS_TX_PKTS,
+  VNIFILTER_ENTRY_STATS_TX_DROPS,
+  VNIFILTER_ENTRY_STATS_TX_ERRORS,
+  VNIFILTER_ENTRY_STATS_PAD,
+  __VNIFILTER_ENTRY_STATS_MAX
+};
+#define VNIFILTER_ENTRY_STATS_MAX (__VNIFILTER_ENTRY_STATS_MAX - 1)
+enum {
+  VXLAN_VNIFILTER_ENTRY_UNSPEC,
+  VXLAN_VNIFILTER_ENTRY_START,
+  VXLAN_VNIFILTER_ENTRY_END,
+  VXLAN_VNIFILTER_ENTRY_GROUP,
+  VXLAN_VNIFILTER_ENTRY_GROUP6,
+  VXLAN_VNIFILTER_ENTRY_STATS,
+  __VXLAN_VNIFILTER_ENTRY_MAX
+};
+#define VXLAN_VNIFILTER_ENTRY_MAX (__VXLAN_VNIFILTER_ENTRY_MAX - 1)
+enum {
+  VXLAN_VNIFILTER_UNSPEC,
+  VXLAN_VNIFILTER_ENTRY,
+  __VXLAN_VNIFILTER_MAX
+};
+#define VXLAN_VNIFILTER_MAX (__VXLAN_VNIFILTER_MAX - 1)
 enum {
   IFLA_VXLAN_UNSPEC,
   IFLA_VXLAN_ID,
@@ -459,6 +514,7 @@
   IFLA_VXLAN_GPE,
   IFLA_VXLAN_TTL_INHERIT,
   IFLA_VXLAN_DF,
+  IFLA_VXLAN_VNIFILTER,
   __IFLA_VXLAN_MAX
 };
 #define IFLA_VXLAN_MAX (__IFLA_VXLAN_MAX - 1)
@@ -488,6 +544,7 @@
   IFLA_GENEVE_LABEL,
   IFLA_GENEVE_TTL_INHERIT,
   IFLA_GENEVE_DF,
+  IFLA_GENEVE_INNER_PROTO_INHERIT,
   __IFLA_GENEVE_MAX
 };
 #define IFLA_GENEVE_MAX (__IFLA_GENEVE_MAX - 1)
@@ -523,6 +580,8 @@
   IFLA_GTP_FD1,
   IFLA_GTP_PDP_HASHSIZE,
   IFLA_GTP_ROLE,
+  IFLA_GTP_CREATE_SOCKETS,
+  IFLA_GTP_RESTART_COUNT,
   __IFLA_GTP_MAX,
 };
 #define IFLA_GTP_MAX (__IFLA_GTP_MAX - 1)
@@ -558,6 +617,7 @@
   IFLA_BOND_PEER_NOTIF_DELAY,
   IFLA_BOND_AD_LACP_ACTIVE,
   IFLA_BOND_MISSED_MAX,
+  IFLA_BOND_NS_IP6_TARGET,
   __IFLA_BOND_MAX,
 };
 #define IFLA_BOND_MAX (__IFLA_BOND_MAX - 1)
@@ -581,6 +641,7 @@
   IFLA_BOND_SLAVE_AD_AGGREGATOR_ID,
   IFLA_BOND_SLAVE_AD_ACTOR_OPER_PORT_STATE,
   IFLA_BOND_SLAVE_AD_PARTNER_OPER_PORT_STATE,
+  IFLA_BOND_SLAVE_PRIO,
   __IFLA_BOND_SLAVE_MAX,
 };
 #define IFLA_BOND_SLAVE_MAX (__IFLA_BOND_SLAVE_MAX - 1)
@@ -777,6 +838,13 @@
 #define IFLA_STATS_MAX (__IFLA_STATS_MAX - 1)
 #define IFLA_STATS_FILTER_BIT(ATTR) (1 << (ATTR - 1))
 enum {
+  IFLA_STATS_GETSET_UNSPEC,
+  IFLA_STATS_GET_FILTERS,
+  IFLA_STATS_SET_OFFLOAD_XSTATS_L3_STATS,
+  __IFLA_STATS_GETSET_MAX,
+};
+#define IFLA_STATS_GETSET_MAX (__IFLA_STATS_GETSET_MAX - 1)
+enum {
   LINK_XSTATS_TYPE_UNSPEC,
   LINK_XSTATS_TYPE_BRIDGE,
   LINK_XSTATS_TYPE_BOND,
@@ -786,9 +854,18 @@
 enum {
   IFLA_OFFLOAD_XSTATS_UNSPEC,
   IFLA_OFFLOAD_XSTATS_CPU_HIT,
+  IFLA_OFFLOAD_XSTATS_HW_S_INFO,
+  IFLA_OFFLOAD_XSTATS_L3_STATS,
   __IFLA_OFFLOAD_XSTATS_MAX
 };
 #define IFLA_OFFLOAD_XSTATS_MAX (__IFLA_OFFLOAD_XSTATS_MAX - 1)
+enum {
+  IFLA_OFFLOAD_XSTATS_HW_S_INFO_UNSPEC,
+  IFLA_OFFLOAD_XSTATS_HW_S_INFO_REQUEST,
+  IFLA_OFFLOAD_XSTATS_HW_S_INFO_USED,
+  __IFLA_OFFLOAD_XSTATS_HW_S_INFO_MAX,
+};
+#define IFLA_OFFLOAD_XSTATS_HW_S_INFO_MAX (__IFLA_OFFLOAD_XSTATS_HW_S_INFO_MAX - 1)
 #define XDP_FLAGS_UPDATE_IF_NOEXIST (1U << 0)
 #define XDP_FLAGS_SKB_MODE (1U << 1)
 #define XDP_FLAGS_DRV_MODE (1U << 2)
@@ -862,4 +939,10 @@
   __IFLA_MCTP_MAX,
 };
 #define IFLA_MCTP_MAX (__IFLA_MCTP_MAX - 1)
+enum {
+  IFLA_DSA_UNSPEC,
+  IFLA_DSA_MASTER,
+  __IFLA_DSA_MAX,
+};
+#define IFLA_DSA_MAX (__IFLA_DSA_MAX - 1)
 #endif
diff --git a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/if_macsec.h b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/if_macsec.h
index e60d767..7b51f80 100644
--- a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/if_macsec.h
+++ b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/if_macsec.h
@@ -23,6 +23,7 @@
 #define MACSEC_GENL_VERSION 1
 #define MACSEC_MAX_KEY_LEN 128
 #define MACSEC_KEYID_LEN 16
+#define MACSEC_SALT_LEN 12
 #define MACSEC_CIPHER_ID_GCM_AES_128 0x0080C20001000001ULL
 #define MACSEC_CIPHER_ID_GCM_AES_256 0x0080C20001000002ULL
 #define MACSEC_CIPHER_ID_GCM_AES_XPN_128 0x0080C20001000003ULL
diff --git a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/if_pppox.h b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/if_pppox.h
index 40d25e8..2acafdf 100644
--- a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/if_pppox.h
+++ b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/if_pppox.h
@@ -51,27 +51,27 @@
     struct pppoe_addr pppoe;
     struct pptp_addr pptp;
   } sa_addr;
-} __packed;
+} __attribute__((__packed__));
 struct sockaddr_pppol2tp {
   __kernel_sa_family_t sa_family;
   unsigned int sa_protocol;
   struct pppol2tp_addr pppol2tp;
-} __packed;
+} __attribute__((__packed__));
 struct sockaddr_pppol2tpin6 {
   __kernel_sa_family_t sa_family;
   unsigned int sa_protocol;
   struct pppol2tpin6_addr pppol2tp;
-} __packed;
+} __attribute__((__packed__));
 struct sockaddr_pppol2tpv3 {
   __kernel_sa_family_t sa_family;
   unsigned int sa_protocol;
   struct pppol2tpv3_addr pppol2tp;
-} __packed;
+} __attribute__((__packed__));
 struct sockaddr_pppol2tpv3in6 {
   __kernel_sa_family_t sa_family;
   unsigned int sa_protocol;
   struct pppol2tpv3in6_addr pppol2tp;
-} __packed;
+} __attribute__((__packed__));
 #define PPPOEIOCSFWD _IOW(0xB1, 0, size_t)
 #define PPPOEIOCDFWD _IO(0xB1, 1)
 #define PADI_CODE 0x09
@@ -82,7 +82,7 @@
 struct pppoe_tag {
   __be16 tag_type;
   __be16 tag_len;
-  char tag_data[0];
+  char tag_data[];
 } __attribute__((packed));
 #define PTT_EOL __cpu_to_be16(0x0000)
 #define PTT_SRV_NAME __cpu_to_be16(0x0101)
@@ -107,7 +107,7 @@
   __u8 code;
   __be16 sid;
   __be16 length;
-  struct pppoe_tag tag[0];
-} __packed;
+  struct pppoe_tag tag[];
+} __attribute__((__packed__));
 #define PPPOE_SES_HLEN 8
 #endif
diff --git a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/if_tun.h b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/if_tun.h
index d1a8f9e..dda0830 100644
--- a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/if_tun.h
+++ b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/if_tun.h
@@ -57,6 +57,7 @@
 #define IFF_TAP 0x0002
 #define IFF_NAPI 0x0010
 #define IFF_NAPI_FRAGS 0x0020
+#define IFF_NO_CARRIER 0x0040
 #define IFF_NO_PI 0x1000
 #define IFF_ONE_QUEUE 0x2000
 #define IFF_VNET_HDR 0x4000
@@ -81,6 +82,6 @@
 struct tun_filter {
   __u16 flags;
   __u16 count;
-  __u8 addr[0][ETH_ALEN];
+  __u8 addr[][ETH_ALEN];
 };
 #endif
diff --git a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/if_tunnel.h b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/if_tunnel.h
index 8e1847f..01c2dc9 100644
--- a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/if_tunnel.h
+++ b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/if_tunnel.h
@@ -169,5 +169,6 @@
 #define TUNNEL_VXLAN_OPT __cpu_to_be16(0x1000)
 #define TUNNEL_NOCACHE __cpu_to_be16(0x2000)
 #define TUNNEL_ERSPAN_OPT __cpu_to_be16(0x4000)
-#define TUNNEL_OPTIONS_PRESENT (TUNNEL_GENEVE_OPT | TUNNEL_VXLAN_OPT | TUNNEL_ERSPAN_OPT)
+#define TUNNEL_GTP_OPT __cpu_to_be16(0x8000)
+#define TUNNEL_OPTIONS_PRESENT (TUNNEL_GENEVE_OPT | TUNNEL_VXLAN_OPT | TUNNEL_ERSPAN_OPT | TUNNEL_GTP_OPT)
 #endif
diff --git a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/igmp.h b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/igmp.h
index 885b0f8..71c2c8d 100644
--- a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/igmp.h
+++ b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/igmp.h
@@ -37,7 +37,7 @@
   __u8 grec_auxwords;
   __be16 grec_nsrcs;
   __be32 grec_mca;
-  __be32 grec_src[0];
+  __be32 grec_src[];
 };
 struct igmpv3_report {
   __u8 type;
@@ -45,7 +45,7 @@
   __sum16 csum;
   __be16 resv2;
   __be16 ngrec;
-  struct igmpv3_grec grec[0];
+  struct igmpv3_grec grec[];
 };
 struct igmpv3_query {
   __u8 type;
@@ -61,7 +61,7 @@
 #endif
   __u8 qqic;
   __be16 nsrcs;
-  __be32 srcs[0];
+  __be32 srcs[];
 };
 #define IGMP_HOST_MEMBERSHIP_QUERY 0x11
 #define IGMP_HOST_MEMBERSHIP_REPORT 0x12
diff --git a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/iio/types.h b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/iio/types.h
index 22409a7..af7bdda 100644
--- a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/iio/types.h
+++ b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/iio/types.h
@@ -101,6 +101,12 @@
   IIO_MOD_ETHANOL,
   IIO_MOD_H2,
   IIO_MOD_O2,
+  IIO_MOD_LINEAR_X,
+  IIO_MOD_LINEAR_Y,
+  IIO_MOD_LINEAR_Z,
+  IIO_MOD_PITCH,
+  IIO_MOD_YAW,
+  IIO_MOD_ROLL,
 };
 enum iio_event_type {
   IIO_EV_TYPE_THRESH,
@@ -109,11 +115,15 @@
   IIO_EV_TYPE_THRESH_ADAPTIVE,
   IIO_EV_TYPE_MAG_ADAPTIVE,
   IIO_EV_TYPE_CHANGE,
+  IIO_EV_TYPE_MAG_REFERENCED,
+  IIO_EV_TYPE_GESTURE,
 };
 enum iio_event_direction {
   IIO_EV_DIR_EITHER,
   IIO_EV_DIR_RISING,
   IIO_EV_DIR_FALLING,
   IIO_EV_DIR_NONE,
+  IIO_EV_DIR_SINGLETAP,
+  IIO_EV_DIR_DOUBLETAP,
 };
 #endif
diff --git a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/in.h b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/in.h
index d4060e7..53d3074 100644
--- a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/in.h
+++ b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/in.h
@@ -22,6 +22,7 @@
 #include <bits/ip_mreq_source.h>
 #include <bits/in_addr.h>
 #include <linux/types.h>
+#include <linux/stddef.h>
 #include <linux/libc-compat.h>
 #include <linux/socket.h>
 #if __UAPI_DEF_IN_IPPROTO
@@ -68,6 +69,8 @@
 #define IPPROTO_PIM IPPROTO_PIM
   IPPROTO_COMP = 108,
 #define IPPROTO_COMP IPPROTO_COMP
+  IPPROTO_L2TP = 115,
+#define IPPROTO_L2TP IPPROTO_L2TP
   IPPROTO_SCTP = 132,
 #define IPPROTO_SCTP IPPROTO_SCTP
   IPPROTO_UDPLITE = 136,
diff --git a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/inet_diag.h b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/inet_diag.h
index 8656dd4..27f390b 100644
--- a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/inet_diag.h
+++ b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/inet_diag.h
@@ -89,7 +89,7 @@
   __u8 family;
   __u8 prefix_len;
   int port;
-  __be32 addr[0];
+  __be32 addr[];
 };
 struct inet_diag_markcond {
   __u32 mark;
diff --git a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/inotify.h b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/inotify.h
index eb9ac3c..3b4b577 100644
--- a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/inotify.h
+++ b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/inotify.h
@@ -25,7 +25,7 @@
   __u32 mask;
   __u32 cookie;
   __u32 len;
-  char name[0];
+  char name[];
 };
 #define IN_ACCESS 0x00000001
 #define IN_MODIFY 0x00000002
diff --git a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/input-event-codes.h b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/input-event-codes.h
index 34cd23c..40827b5 100644
--- a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/input-event-codes.h
+++ b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/input-event-codes.h
@@ -580,6 +580,21 @@
 #define KEY_ONSCREEN_KEYBOARD 0x278
 #define KEY_PRIVACY_SCREEN_TOGGLE 0x279
 #define KEY_SELECTIVE_SCREENSHOT 0x27a
+#define KEY_NEXT_ELEMENT 0x27b
+#define KEY_PREVIOUS_ELEMENT 0x27c
+#define KEY_AUTOPILOT_ENGAGE_TOGGLE 0x27d
+#define KEY_MARK_WAYPOINT 0x27e
+#define KEY_SOS 0x27f
+#define KEY_NAV_CHART 0x280
+#define KEY_FISHING_CHART 0x281
+#define KEY_SINGLE_RANGE_RADAR 0x282
+#define KEY_DUAL_RANGE_RADAR 0x283
+#define KEY_RADAR_OVERLAY 0x284
+#define KEY_TRADITIONAL_SONAR 0x285
+#define KEY_CLEARVU_SONAR 0x286
+#define KEY_SIDEVU_SONAR 0x287
+#define KEY_NAV_INFO 0x288
+#define KEY_BRIGHTNESS_MENU 0x289
 #define KEY_MACRO1 0x290
 #define KEY_MACRO2 0x291
 #define KEY_MACRO3 0x292
@@ -705,6 +720,7 @@
 #define ABS_TILT_Y 0x1b
 #define ABS_TOOL_WIDTH 0x1c
 #define ABS_VOLUME 0x20
+#define ABS_PROFILE 0x21
 #define ABS_MISC 0x28
 #define ABS_RESERVED 0x2e
 #define ABS_MT_SLOT 0x2f
diff --git a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/input.h b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/input.h
index fe17226..4858c81 100644
--- a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/input.h
+++ b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/input.h
@@ -125,6 +125,7 @@
 #define BUS_RMI 0x1D
 #define BUS_CEC 0x1E
 #define BUS_INTEL_ISHTP 0x1F
+#define BUS_AMD_SFH 0x20
 #define MT_TOOL_FINGER 0x00
 #define MT_TOOL_PEN 0x01
 #define MT_TOOL_PALM 0x02
diff --git a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/io_uring.h b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/io_uring.h
index 96944f8..82dee97 100644
--- a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/io_uring.h
+++ b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/io_uring.h
@@ -20,6 +20,10 @@
 #define LINUX_IO_URING_H
 #include <linux/fs.h>
 #include <linux/types.h>
+#include <linux/time_types.h>
+#ifdef __cplusplus
+extern "C" {
+#endif
 struct io_uring_sqe {
   __u8 opcode;
   __u8 flags;
@@ -28,6 +32,10 @@
   union {
     __u64 off;
     __u64 addr2;
+    struct {
+      __u32 cmd_op;
+      __u32 __pad1;
+    };
   };
   union {
     __u64 addr;
@@ -51,6 +59,9 @@
     __u32 rename_flags;
     __u32 unlink_flags;
     __u32 hardlink_flags;
+    __u32 xattr_flags;
+    __u32 msg_ring_flags;
+    __u32 uring_cmd_flags;
   };
   __u64 user_data;
   union {
@@ -61,9 +72,20 @@
   union {
     __s32 splice_fd_in;
     __u32 file_index;
+    struct {
+      __u16 addr_len;
+      __u16 __pad3[1];
+    };
   };
-  __u64 __pad2[2];
+  union {
+    struct {
+      __u64 addr3;
+      __u64 __pad2[1];
+    };
+    __u8 cmd[0];
+  };
 };
+#define IORING_FILE_INDEX_ALLOC (~0U)
 enum {
   IOSQE_FIXED_FILE_BIT,
   IOSQE_IO_DRAIN_BIT,
@@ -87,7 +109,14 @@
 #define IORING_SETUP_CLAMP (1U << 4)
 #define IORING_SETUP_ATTACH_WQ (1U << 5)
 #define IORING_SETUP_R_DISABLED (1U << 6)
-enum {
+#define IORING_SETUP_SUBMIT_ALL (1U << 7)
+#define IORING_SETUP_COOP_TASKRUN (1U << 8)
+#define IORING_SETUP_TASKRUN_FLAG (1U << 9)
+#define IORING_SETUP_SQE128 (1U << 10)
+#define IORING_SETUP_CQE32 (1U << 11)
+#define IORING_SETUP_SINGLE_ISSUER (1U << 12)
+#define IORING_SETUP_DEFER_TASKRUN (1U << 13)
+enum io_uring_op {
   IORING_OP_NOP,
   IORING_OP_READV,
   IORING_OP_WRITEV,
@@ -128,8 +157,18 @@
   IORING_OP_MKDIRAT,
   IORING_OP_SYMLINKAT,
   IORING_OP_LINKAT,
+  IORING_OP_MSG_RING,
+  IORING_OP_FSETXATTR,
+  IORING_OP_SETXATTR,
+  IORING_OP_FGETXATTR,
+  IORING_OP_GETXATTR,
+  IORING_OP_SOCKET,
+  IORING_OP_URING_CMD,
+  IORING_OP_SEND_ZC,
+  IORING_OP_SENDMSG_ZC,
   IORING_OP_LAST,
 };
+#define IORING_URING_CMD_FIXED (1U << 0)
 #define IORING_FSYNC_DATASYNC (1U << 0)
 #define IORING_TIMEOUT_ABS (1U << 0)
 #define IORING_TIMEOUT_UPDATE (1U << 1)
@@ -143,13 +182,30 @@
 #define IORING_POLL_ADD_MULTI (1U << 0)
 #define IORING_POLL_UPDATE_EVENTS (1U << 1)
 #define IORING_POLL_UPDATE_USER_DATA (1U << 2)
+#define IORING_POLL_ADD_LEVEL (1U << 3)
+#define IORING_ASYNC_CANCEL_ALL (1U << 0)
+#define IORING_ASYNC_CANCEL_FD (1U << 1)
+#define IORING_ASYNC_CANCEL_ANY (1U << 2)
+#define IORING_ASYNC_CANCEL_FD_FIXED (1U << 3)
+#define IORING_RECVSEND_POLL_FIRST (1U << 0)
+#define IORING_RECV_MULTISHOT (1U << 1)
+#define IORING_RECVSEND_FIXED_BUF (1U << 2)
+#define IORING_ACCEPT_MULTISHOT (1U << 0)
+enum {
+  IORING_MSG_DATA,
+  IORING_MSG_SEND_FD,
+};
+#define IORING_MSG_RING_CQE_SKIP (1U << 0)
 struct io_uring_cqe {
   __u64 user_data;
   __s32 res;
   __u32 flags;
+  __u64 big_cqe[];
 };
 #define IORING_CQE_F_BUFFER (1U << 0)
 #define IORING_CQE_F_MORE (1U << 1)
+#define IORING_CQE_F_SOCK_NONEMPTY (1U << 2)
+#define IORING_CQE_F_NOTIF (1U << 3)
 enum {
   IORING_CQE_BUFFER_SHIFT = 16,
 };
@@ -169,6 +225,7 @@
 };
 #define IORING_SQ_NEED_WAKEUP (1U << 0)
 #define IORING_SQ_CQ_OVERFLOW (1U << 1)
+#define IORING_SQ_TASKRUN (1U << 2)
 struct io_cqring_offsets {
   __u32 head;
   __u32 tail;
@@ -185,6 +242,7 @@
 #define IORING_ENTER_SQ_WAKEUP (1U << 1)
 #define IORING_ENTER_SQ_WAIT (1U << 2)
 #define IORING_ENTER_EXT_ARG (1U << 3)
+#define IORING_ENTER_REGISTERED_RING (1U << 4)
 struct io_uring_params {
   __u32 sq_entries;
   __u32 cq_entries;
@@ -209,6 +267,7 @@
 #define IORING_FEAT_NATIVE_WORKERS (1U << 9)
 #define IORING_FEAT_RSRC_TAGS (1U << 10)
 #define IORING_FEAT_CQE_SKIP (1U << 11)
+#define IORING_FEAT_LINKED_FILE (1U << 12)
 enum {
   IORING_REGISTER_BUFFERS = 0,
   IORING_UNREGISTER_BUFFERS = 1,
@@ -230,6 +289,12 @@
   IORING_REGISTER_IOWQ_AFF = 17,
   IORING_UNREGISTER_IOWQ_AFF = 18,
   IORING_REGISTER_IOWQ_MAX_WORKERS = 19,
+  IORING_REGISTER_RING_FDS = 20,
+  IORING_UNREGISTER_RING_FDS = 21,
+  IORING_REGISTER_PBUF_RING = 22,
+  IORING_UNREGISTER_PBUF_RING = 23,
+  IORING_REGISTER_SYNC_CANCEL = 24,
+  IORING_REGISTER_FILE_ALLOC_RANGE = 25,
   IORING_REGISTER_LAST
 };
 enum {
@@ -241,9 +306,10 @@
   __u32 resv;
   __aligned_u64 fds;
 };
+#define IORING_RSRC_REGISTER_SPARSE (1U << 0)
 struct io_uring_rsrc_register {
   __u32 nr;
-  __u32 resv;
+  __u32 flags;
   __u64 resv2;
   __aligned_u64 data;
   __aligned_u64 tags;
@@ -261,6 +327,17 @@
   __u32 nr;
   __u32 resv2;
 };
+struct io_uring_notification_slot {
+  __u64 tag;
+  __u64 resv[3];
+};
+struct io_uring_notification_register {
+  __u32 nr_slots;
+  __u32 resv;
+  __u64 resv2;
+  __u64 data;
+  __u64 resv3;
+};
 #define IORING_REGISTER_FILES_SKIP (- 2)
 #define IO_URING_OP_SUPPORTED (1U << 0)
 struct io_uring_probe_op {
@@ -274,7 +351,7 @@
   __u8 ops_len;
   __u16 resv;
   __u32 resv2[3];
-  struct io_uring_probe_op ops[0];
+  struct io_uring_probe_op ops[];
 };
 struct io_uring_restriction {
   __u16 opcode;
@@ -286,6 +363,30 @@
   __u8 resv;
   __u32 resv2[3];
 };
+struct io_uring_buf {
+  __u64 addr;
+  __u32 len;
+  __u16 bid;
+  __u16 resv;
+};
+struct io_uring_buf_ring {
+  union {
+    struct {
+      __u64 resv1;
+      __u32 resv2;
+      __u16 resv3;
+      __u16 tail;
+    };
+    struct io_uring_buf bufs[0];
+  };
+};
+struct io_uring_buf_reg {
+  __u64 ring_addr;
+  __u32 ring_entries;
+  __u16 bgid;
+  __u16 pad;
+  __u64 resv[3];
+};
 enum {
   IORING_RESTRICTION_REGISTER_OP = 0,
   IORING_RESTRICTION_SQE_OP = 1,
@@ -299,4 +400,25 @@
   __u32 pad;
   __u64 ts;
 };
+struct io_uring_sync_cancel_reg {
+  __u64 addr;
+  __s32 fd;
+  __u32 flags;
+  struct __kernel_timespec timeout;
+  __u64 pad[4];
+};
+struct io_uring_file_index_range {
+  __u32 off;
+  __u32 len;
+  __u64 resv;
+};
+struct io_uring_recvmsg_out {
+  __u32 namelen;
+  __u32 controllen;
+  __u32 payloadlen;
+  __u32 flags;
+};
+#ifdef __cplusplus
+}
+#endif
 #endif
diff --git a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/ioam6_iptunnel.h b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/ioam6_iptunnel.h
index 7426225..ec1a6a8 100644
--- a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/ioam6_iptunnel.h
+++ b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/ioam6_iptunnel.h
@@ -32,6 +32,10 @@
   IOAM6_IPTUNNEL_MODE,
   IOAM6_IPTUNNEL_DST,
   IOAM6_IPTUNNEL_TRACE,
+#define IOAM6_IPTUNNEL_FREQ_MIN 1
+#define IOAM6_IPTUNNEL_FREQ_MAX 1000000
+  IOAM6_IPTUNNEL_FREQ_K,
+  IOAM6_IPTUNNEL_FREQ_N,
   __IOAM6_IPTUNNEL_MAX,
 };
 #define IOAM6_IPTUNNEL_MAX (__IOAM6_IPTUNNEL_MAX - 1)
diff --git a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/iommu.h b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/iommu.h
index 0a0af92..0304a32 100644
--- a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/iommu.h
+++ b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/iommu.h
@@ -85,76 +85,4 @@
   __u32 grpid;
   __u32 code;
 };
-enum iommu_inv_granularity {
-  IOMMU_INV_GRANU_DOMAIN,
-  IOMMU_INV_GRANU_PASID,
-  IOMMU_INV_GRANU_ADDR,
-  IOMMU_INV_GRANU_NR,
-};
-struct iommu_inv_addr_info {
-#define IOMMU_INV_ADDR_FLAGS_PASID (1 << 0)
-#define IOMMU_INV_ADDR_FLAGS_ARCHID (1 << 1)
-#define IOMMU_INV_ADDR_FLAGS_LEAF (1 << 2)
-  __u32 flags;
-  __u32 archid;
-  __u64 pasid;
-  __u64 addr;
-  __u64 granule_size;
-  __u64 nb_granules;
-};
-struct iommu_inv_pasid_info {
-#define IOMMU_INV_PASID_FLAGS_PASID (1 << 0)
-#define IOMMU_INV_PASID_FLAGS_ARCHID (1 << 1)
-  __u32 flags;
-  __u32 archid;
-  __u64 pasid;
-};
-struct iommu_cache_invalidate_info {
-  __u32 argsz;
-#define IOMMU_CACHE_INVALIDATE_INFO_VERSION_1 1
-  __u32 version;
-#define IOMMU_CACHE_INV_TYPE_IOTLB (1 << 0)
-#define IOMMU_CACHE_INV_TYPE_DEV_IOTLB (1 << 1)
-#define IOMMU_CACHE_INV_TYPE_PASID (1 << 2)
-#define IOMMU_CACHE_INV_TYPE_NR (3)
-  __u8 cache;
-  __u8 granularity;
-  __u8 padding[6];
-  union {
-    struct iommu_inv_pasid_info pasid_info;
-    struct iommu_inv_addr_info addr_info;
-  } granu;
-};
-struct iommu_gpasid_bind_data_vtd {
-#define IOMMU_SVA_VTD_GPASID_SRE (1 << 0)
-#define IOMMU_SVA_VTD_GPASID_EAFE (1 << 1)
-#define IOMMU_SVA_VTD_GPASID_PCD (1 << 2)
-#define IOMMU_SVA_VTD_GPASID_PWT (1 << 3)
-#define IOMMU_SVA_VTD_GPASID_EMTE (1 << 4)
-#define IOMMU_SVA_VTD_GPASID_CD (1 << 5)
-#define IOMMU_SVA_VTD_GPASID_WPE (1 << 6)
-#define IOMMU_SVA_VTD_GPASID_LAST (1 << 7)
-  __u64 flags;
-  __u32 pat;
-  __u32 emt;
-};
-#define IOMMU_SVA_VTD_GPASID_MTS_MASK (IOMMU_SVA_VTD_GPASID_CD | IOMMU_SVA_VTD_GPASID_EMTE | IOMMU_SVA_VTD_GPASID_PCD | IOMMU_SVA_VTD_GPASID_PWT)
-struct iommu_gpasid_bind_data {
-  __u32 argsz;
-#define IOMMU_GPASID_BIND_VERSION_1 1
-  __u32 version;
-#define IOMMU_PASID_FORMAT_INTEL_VTD 1
-#define IOMMU_PASID_FORMAT_LAST 2
-  __u32 format;
-  __u32 addr_width;
-#define IOMMU_SVA_GPASID_VAL (1 << 0)
-  __u64 flags;
-  __u64 gpgd;
-  __u64 hpasid;
-  __u64 gpasid;
-  __u8 padding[8];
-  union {
-    struct iommu_gpasid_bind_data_vtd vtd;
-  } vendor;
-};
 #endif
diff --git a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/ip.h b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/ip.h
index 9571cac..766a808 100644
--- a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/ip.h
+++ b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/ip.h
@@ -86,8 +86,9 @@
   __u8 ttl;
   __u8 protocol;
   __sum16 check;
-  __be32 saddr;
+  __struct_group(, addrs,, __be32 saddr;
   __be32 daddr;
+ );
 };
 struct ip_auth_hdr {
   __u8 nexthdr;
@@ -95,12 +96,12 @@
   __be16 reserved;
   __be32 spi;
   __be32 seq_no;
-  __u8 auth_data[0];
+  __u8 auth_data[];
 };
 struct ip_esp_hdr {
   __be32 spi;
   __be32 seq_no;
-  __u8 enc_data[0];
+  __u8 enc_data[];
 };
 struct ip_comp_hdr {
   __u8 nexthdr;
diff --git a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/ip_vs.h b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/ip_vs.h
index 6e3defe..916fcf0 100644
--- a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/ip_vs.h
+++ b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/ip_vs.h
@@ -159,11 +159,11 @@
   __be16 port;
   __u32 fwmark;
   unsigned int num_dests;
-  struct ip_vs_dest_entry entrytable[0];
+  struct ip_vs_dest_entry entrytable[];
 };
 struct ip_vs_get_services {
   unsigned int num_services;
-  struct ip_vs_service_entry entrytable[0];
+  struct ip_vs_service_entry entrytable[];
 };
 struct ip_vs_timeout_user {
   int tcp_timeout;
diff --git a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/ipv6.h b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/ipv6.h
index b3db9ce..2e57ed1 100644
--- a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/ipv6.h
+++ b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/ipv6.h
@@ -87,8 +87,9 @@
   __be16 payload_len;
   __u8 nexthdr;
   __u8 hop_limit;
-  struct in6_addr saddr;
+  __struct_group(, addrs,, struct in6_addr saddr;
   struct in6_addr daddr;
+ );
 };
 enum {
   DEVCONF_FORWARDING = 0,
@@ -148,6 +149,7 @@
   DEVCONF_IOAM6_ID,
   DEVCONF_IOAM6_ID_WIDE,
   DEVCONF_NDISC_EVICT_NOCARRIER,
+  DEVCONF_ACCEPT_UNTRACKED_NA,
   DEVCONF_MAX
 };
 #endif
diff --git a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/iso_fs.h b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/iso_fs.h
index 8227031..f9c4f48 100644
--- a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/iso_fs.h
+++ b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/iso_fs.h
@@ -132,7 +132,7 @@
   __u8 name_len[2];
   __u8 extent[4];
   __u8 parent[2];
-  char name[0];
+  char name[];
 } __attribute__((packed));
 struct iso_directory_record {
   __u8 length[ISODCL(1, 1)];
@@ -145,7 +145,7 @@
   __u8 interleave[ISODCL(28, 28)];
   __u8 volume_sequence_number[ISODCL(29, 32)];
   __u8 name_len[ISODCL(33, 33)];
-  char name[0];
+  char name[];
 } __attribute__((packed));
 #define ISOFS_BLOCK_BITS 11
 #define ISOFS_BLOCK_SIZE 2048
diff --git a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/jffs2.h b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/jffs2.h
index 698f953..643aa2e 100644
--- a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/jffs2.h
+++ b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/jffs2.h
@@ -86,7 +86,7 @@
   __u8 unused[2];
   jint32_t node_crc;
   jint32_t name_crc;
-  __u8 name[0];
+  __u8 name[];
 };
 struct jffs2_raw_inode {
   jint16_t magic;
@@ -110,7 +110,7 @@
   jint16_t flags;
   jint32_t data_crc;
   jint32_t node_crc;
-  __u8 data[0];
+  __u8 data[];
 };
 struct jffs2_raw_xattr {
   jint16_t magic;
@@ -124,7 +124,7 @@
   jint16_t value_len;
   jint32_t data_crc;
   jint32_t node_crc;
-  __u8 data[0];
+  __u8 data[];
 } __attribute__((packed));
 struct jffs2_raw_xref {
   jint16_t magic;
@@ -146,7 +146,7 @@
   jint32_t padded;
   jint32_t sum_crc;
   jint32_t node_crc;
-  jint32_t sum[0];
+  jint32_t sum[];
 };
 union jffs2_node_union {
   struct jffs2_raw_inode i;
diff --git a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/kcov.h b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/kcov.h
index cf2660b..5b6f6b1 100644
--- a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/kcov.h
+++ b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/kcov.h
@@ -24,7 +24,7 @@
   __u32 area_size;
   __u32 num_handles;
   __aligned_u64 common_handle;
-  __aligned_u64 handles[0];
+  __aligned_u64 handles[];
 };
 #define KCOV_REMOTE_MAX_HANDLES 0x100
 #define KCOV_INIT_TRACE _IOR('c', 1, unsigned long)
diff --git a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/kexec.h b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/kexec.h
index 2e3bd0c..438c07b 100644
--- a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/kexec.h
+++ b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/kexec.h
@@ -40,11 +40,12 @@
 #define KEXEC_ARCH_MIPS (8 << 16)
 #define KEXEC_ARCH_AARCH64 (183 << 16)
 #define KEXEC_ARCH_RISCV (243 << 16)
+#define KEXEC_ARCH_LOONGARCH (258 << 16)
 #define KEXEC_SEGMENT_MAX 16
 struct kexec_segment {
   const void * buf;
-  size_t bufsz;
+  __kernel_size_t bufsz;
   const void * mem;
-  size_t memsz;
+  __kernel_size_t memsz;
 };
 #endif
diff --git a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/kfd_ioctl.h b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/kfd_ioctl.h
index c52ac64..d21e0fc 100644
--- a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/kfd_ioctl.h
+++ b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/kfd_ioctl.h
@@ -21,7 +21,7 @@
 #include <drm/drm.h>
 #include <linux/ioctl.h>
 #define KFD_IOCTL_MAJOR_VERSION 1
-#define KFD_IOCTL_MINOR_VERSION 6
+#define KFD_IOCTL_MINOR_VERSION 11
 struct kfd_ioctl_get_version_args {
   __u32 major_version;
   __u32 minor_version;
@@ -72,6 +72,11 @@
   __u32 queue_id;
   __u32 pad;
 };
+struct kfd_ioctl_get_available_memory_args {
+  __u64 available;
+  __u32 gpu_id;
+  __u32 pad;
+};
 #define KFD_IOC_CACHE_POLICY_COHERENT 0
 #define KFD_IOC_CACHE_POLICY_NONCOHERENT 1
 struct kfd_ioctl_set_memory_policy_args {
@@ -132,6 +137,7 @@
   __u32 gpu_id;
   __u32 buf_size_in_bytes;
 };
+#define KFD_INVALID_FD 0xffffffff
 #define KFD_IOC_EVENT_SIGNAL 0
 #define KFD_IOC_EVENT_NODECHANGE 1
 #define KFD_IOC_EVENT_DEVICESTATECHANGE 2
@@ -294,12 +300,74 @@
   KFD_SMI_EVENT_THERMAL_THROTTLE = 2,
   KFD_SMI_EVENT_GPU_PRE_RESET = 3,
   KFD_SMI_EVENT_GPU_POST_RESET = 4,
+  KFD_SMI_EVENT_MIGRATE_START = 5,
+  KFD_SMI_EVENT_MIGRATE_END = 6,
+  KFD_SMI_EVENT_PAGE_FAULT_START = 7,
+  KFD_SMI_EVENT_PAGE_FAULT_END = 8,
+  KFD_SMI_EVENT_QUEUE_EVICTION = 9,
+  KFD_SMI_EVENT_QUEUE_RESTORE = 10,
+  KFD_SMI_EVENT_UNMAP_FROM_GPU = 11,
+  KFD_SMI_EVENT_ALL_PROCESS = 64
+};
+enum KFD_MIGRATE_TRIGGERS {
+  KFD_MIGRATE_TRIGGER_PREFETCH,
+  KFD_MIGRATE_TRIGGER_PAGEFAULT_GPU,
+  KFD_MIGRATE_TRIGGER_PAGEFAULT_CPU,
+  KFD_MIGRATE_TRIGGER_TTM_EVICTION
+};
+enum KFD_QUEUE_EVICTION_TRIGGERS {
+  KFD_QUEUE_EVICTION_TRIGGER_SVM,
+  KFD_QUEUE_EVICTION_TRIGGER_USERPTR,
+  KFD_QUEUE_EVICTION_TRIGGER_TTM,
+  KFD_QUEUE_EVICTION_TRIGGER_SUSPEND,
+  KFD_QUEUE_EVICTION_CRIU_CHECKPOINT,
+  KFD_QUEUE_EVICTION_CRIU_RESTORE
+};
+enum KFD_SVM_UNMAP_TRIGGERS {
+  KFD_SVM_UNMAP_TRIGGER_MMU_NOTIFY,
+  KFD_SVM_UNMAP_TRIGGER_MMU_NOTIFY_MIGRATE,
+  KFD_SVM_UNMAP_TRIGGER_UNMAP_FROM_CPU
 };
 #define KFD_SMI_EVENT_MASK_FROM_INDEX(i) (1ULL << ((i) - 1))
+#define KFD_SMI_EVENT_MSG_SIZE 96
 struct kfd_ioctl_smi_events_args {
   __u32 gpuid;
   __u32 anon_fd;
 };
+enum kfd_criu_op {
+  KFD_CRIU_OP_PROCESS_INFO,
+  KFD_CRIU_OP_CHECKPOINT,
+  KFD_CRIU_OP_UNPAUSE,
+  KFD_CRIU_OP_RESTORE,
+  KFD_CRIU_OP_RESUME,
+};
+struct kfd_ioctl_criu_args {
+  __u64 devices;
+  __u64 bos;
+  __u64 priv_data;
+  __u64 priv_data_size;
+  __u32 num_devices;
+  __u32 num_bos;
+  __u32 num_objects;
+  __u32 pid;
+  __u32 op;
+};
+struct kfd_criu_device_bucket {
+  __u32 user_gpu_id;
+  __u32 actual_gpu_id;
+  __u32 drm_fd;
+  __u32 pad;
+};
+struct kfd_criu_bo_bucket {
+  __u64 addr;
+  __u64 size;
+  __u64 offset;
+  __u64 restored_offset;
+  __u32 gpu_id;
+  __u32 alloc_flags;
+  __u32 dmabuf_fd;
+  __u32 pad;
+};
 enum kfd_mmio_remap {
   KFD_MMIO_REMAP_HDP_MEM_FLUSH_CNTL = 0,
   KFD_MMIO_REMAP_HDP_REG_FLUSH_CNTL = 4,
@@ -310,6 +378,7 @@
 #define KFD_IOCTL_SVM_FLAG_GPU_RO 0x00000008
 #define KFD_IOCTL_SVM_FLAG_GPU_EXEC 0x00000010
 #define KFD_IOCTL_SVM_FLAG_GPU_READ_MOSTLY 0x00000020
+#define KFD_IOCTL_SVM_FLAG_GPU_ALWAYS_MAPPED 0x00000040
 enum kfd_ioctl_svm_op {
   KFD_IOCTL_SVM_OP_SET_ATTR,
   KFD_IOCTL_SVM_OP_GET_ATTR
@@ -337,7 +406,7 @@
   __u64 size;
   __u32 op;
   __u32 nattr;
-  struct kfd_ioctl_svm_attribute attrs[0];
+  struct kfd_ioctl_svm_attribute attrs[];
 };
 struct kfd_ioctl_set_xnack_mode_args {
   __s32 xnack_enabled;
@@ -359,10 +428,10 @@
 #define AMDKFD_IOC_SET_EVENT AMDKFD_IOW(0x0A, struct kfd_ioctl_set_event_args)
 #define AMDKFD_IOC_RESET_EVENT AMDKFD_IOW(0x0B, struct kfd_ioctl_reset_event_args)
 #define AMDKFD_IOC_WAIT_EVENTS AMDKFD_IOWR(0x0C, struct kfd_ioctl_wait_events_args)
-#define AMDKFD_IOC_DBG_REGISTER AMDKFD_IOW(0x0D, struct kfd_ioctl_dbg_register_args)
-#define AMDKFD_IOC_DBG_UNREGISTER AMDKFD_IOW(0x0E, struct kfd_ioctl_dbg_unregister_args)
-#define AMDKFD_IOC_DBG_ADDRESS_WATCH AMDKFD_IOW(0x0F, struct kfd_ioctl_dbg_address_watch_args)
-#define AMDKFD_IOC_DBG_WAVE_CONTROL AMDKFD_IOW(0x10, struct kfd_ioctl_dbg_wave_control_args)
+#define AMDKFD_IOC_DBG_REGISTER_DEPRECATED AMDKFD_IOW(0x0D, struct kfd_ioctl_dbg_register_args)
+#define AMDKFD_IOC_DBG_UNREGISTER_DEPRECATED AMDKFD_IOW(0x0E, struct kfd_ioctl_dbg_unregister_args)
+#define AMDKFD_IOC_DBG_ADDRESS_WATCH_DEPRECATED AMDKFD_IOW(0x0F, struct kfd_ioctl_dbg_address_watch_args)
+#define AMDKFD_IOC_DBG_WAVE_CONTROL_DEPRECATED AMDKFD_IOW(0x10, struct kfd_ioctl_dbg_wave_control_args)
 #define AMDKFD_IOC_SET_SCRATCH_BACKING_VA AMDKFD_IOWR(0x11, struct kfd_ioctl_set_scratch_backing_va_args)
 #define AMDKFD_IOC_GET_TILE_CONFIG AMDKFD_IOWR(0x12, struct kfd_ioctl_get_tile_config_args)
 #define AMDKFD_IOC_SET_TRAP_HANDLER AMDKFD_IOW(0x13, struct kfd_ioctl_set_trap_handler_args)
@@ -380,6 +449,8 @@
 #define AMDKFD_IOC_SMI_EVENTS AMDKFD_IOWR(0x1F, struct kfd_ioctl_smi_events_args)
 #define AMDKFD_IOC_SVM AMDKFD_IOWR(0x20, struct kfd_ioctl_svm_args)
 #define AMDKFD_IOC_SET_XNACK_MODE AMDKFD_IOWR(0x21, struct kfd_ioctl_set_xnack_mode_args)
+#define AMDKFD_IOC_CRIU_OP AMDKFD_IOWR(0x22, struct kfd_ioctl_criu_args)
+#define AMDKFD_IOC_AVAILABLE_MEMORY AMDKFD_IOWR(0x23, struct kfd_ioctl_get_available_memory_args)
 #define AMDKFD_COMMAND_START 0x01
-#define AMDKFD_COMMAND_END 0x22
+#define AMDKFD_COMMAND_END 0x24
 #endif
diff --git a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/kvm.h b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/kvm.h
index 1cf7182..768f57e 100644
--- a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/kvm.h
+++ b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/kvm.h
@@ -216,6 +216,8 @@
 #define KVM_EXIT_X86_BUS_LOCK 33
 #define KVM_EXIT_XEN 34
 #define KVM_EXIT_RISCV_SBI 35
+#define KVM_EXIT_RISCV_CSR 36
+#define KVM_EXIT_NOTIFY 37
 #define KVM_INTERNAL_ERROR_EMULATION 1
 #define KVM_INTERNAL_ERROR_SIMUL_EX 2
 #define KVM_INTERNAL_ERROR_DELIVERY_EV 3
@@ -336,8 +338,15 @@
 #define KVM_SYSTEM_EVENT_SHUTDOWN 1
 #define KVM_SYSTEM_EVENT_RESET 2
 #define KVM_SYSTEM_EVENT_CRASH 3
+#define KVM_SYSTEM_EVENT_WAKEUP 4
+#define KVM_SYSTEM_EVENT_SUSPEND 5
+#define KVM_SYSTEM_EVENT_SEV_TERM 6
       __u32 type;
-      __u64 flags;
+      __u32 ndata;
+      union {
+        __u64 flags;
+        __u64 data[16];
+      };
     } system_event;
     struct {
       __u64 addr;
@@ -372,6 +381,16 @@
       unsigned long args[6];
       unsigned long ret[2];
     } riscv_sbi;
+    struct {
+      unsigned long csr_num;
+      unsigned long new_value;
+      unsigned long write_mask;
+      unsigned long ret_value;
+    } riscv_csr;
+    struct {
+#define KVM_NOTIFY_CONTEXT_INVALID (1 << 0)
+      __u32 flags;
+    } notify;
     char padding[256];
   };
 #define SYNC_REGS_SIZE_BYTES 2048
@@ -401,7 +420,7 @@
 };
 struct kvm_coalesced_mmio_ring {
   __u32 first, last;
-  struct kvm_coalesced_mmio coalesced_mmio[0];
+  struct kvm_coalesced_mmio coalesced_mmio[];
 };
 #define KVM_COALESCED_MMIO_MAX ((PAGE_SIZE - sizeof(struct kvm_coalesced_mmio_ring)) / sizeof(struct kvm_coalesced_mmio))
 struct kvm_translation {
@@ -419,7 +438,10 @@
   __u32 op;
   __u64 buf;
   union {
-    __u8 ar;
+    struct {
+      __u8 ar;
+      __u8 key;
+    };
     __u32 sida_offset;
     __u8 reserved[32];
   };
@@ -428,8 +450,11 @@
 #define KVM_S390_MEMOP_LOGICAL_WRITE 1
 #define KVM_S390_MEMOP_SIDA_READ 2
 #define KVM_S390_MEMOP_SIDA_WRITE 3
+#define KVM_S390_MEMOP_ABSOLUTE_READ 4
+#define KVM_S390_MEMOP_ABSOLUTE_WRITE 5
 #define KVM_S390_MEMOP_F_CHECK_ONLY (1ULL << 0)
 #define KVM_S390_MEMOP_F_INJECT_EXCEPTION (1ULL << 1)
+#define KVM_S390_MEMOP_F_SKEY_PROTECTION (1ULL << 2)
 struct kvm_interrupt {
   __u32 irq;
 };
@@ -452,7 +477,7 @@
 };
 struct kvm_signal_mask {
   __u32 len;
-  __u8 sigset[0];
+  __u8 sigset[];
 };
 struct kvm_tpr_access_ctl {
   __u32 enabled;
@@ -472,6 +497,7 @@
 #define KVM_MP_STATE_OPERATING 7
 #define KVM_MP_STATE_LOAD 8
 #define KVM_MP_STATE_AP_RESET_HOLD 9
+#define KVM_MP_STATE_SUSPENDED 10
 struct kvm_mp_state {
   __u32 mp_state;
 };
@@ -890,6 +916,19 @@
 #define KVM_CAP_XSAVE2 208
 #define KVM_CAP_SYS_ATTRIBUTES 209
 #define KVM_CAP_PPC_AIL_MODE_3 210
+#define KVM_CAP_S390_MEM_OP_EXTENSION 211
+#define KVM_CAP_PMU_CAPABILITY 212
+#define KVM_CAP_DISABLE_QUIRKS2 213
+#define KVM_CAP_VM_TSC_CONTROL 214
+#define KVM_CAP_SYSTEM_EVENT_DATA 215
+#define KVM_CAP_ARM_SYSTEM_SUSPEND 216
+#define KVM_CAP_S390_PROTECTED_DUMP 217
+#define KVM_CAP_X86_TRIPLE_FAULT_EVENT 218
+#define KVM_CAP_X86_NOTIFY_VMEXIT 219
+#define KVM_CAP_VM_DISABLE_NX_HUGE_PAGES 220
+#define KVM_CAP_S390_ZPCI_OP 221
+#define KVM_CAP_S390_CPU_TOPOLOGY 222
+#define KVM_CAP_DIRTY_LOG_RING_ACQ_REL 223
 #ifdef KVM_CAP_IRQ_ROUTING
 struct kvm_irq_routing_irqchip {
   __u32 irqchip;
@@ -943,7 +982,7 @@
 struct kvm_irq_routing {
   __u32 nr;
   __u32 flags;
-  struct kvm_irq_routing_entry entries[0];
+  struct kvm_irq_routing_entry entries[];
 };
 #endif
 #ifdef KVM_CAP_MCE
@@ -963,6 +1002,7 @@
 #define KVM_XEN_HVM_CONFIG_SHARED_INFO (1 << 2)
 #define KVM_XEN_HVM_CONFIG_RUNSTATE (1 << 3)
 #define KVM_XEN_HVM_CONFIG_EVTCHN_2LEVEL (1 << 4)
+#define KVM_XEN_HVM_CONFIG_EVTCHN_SEND (1 << 5)
 struct kvm_xen_hvm_config {
   __u32 flags;
   __u32 msr;
@@ -1028,7 +1068,7 @@
 #define KVM_REG_SIZE_U2048 0x0080000000000000ULL
 struct kvm_reg_list {
   __u64 n;
-  __u64 reg[0];
+  __u64 reg[];
 };
 struct kvm_one_reg {
   __u64 id;
@@ -1242,6 +1282,48 @@
   __u64 size;
   __u64 tweak;
 };
+enum pv_cmd_dmp_id {
+  KVM_PV_DUMP_INIT,
+  KVM_PV_DUMP_CONFIG_STOR_STATE,
+  KVM_PV_DUMP_COMPLETE,
+  KVM_PV_DUMP_CPU,
+};
+struct kvm_s390_pv_dmp {
+  __u64 subcmd;
+  __u64 buff_addr;
+  __u64 buff_len;
+  __u64 gaddr;
+  __u64 reserved[4];
+};
+enum pv_cmd_info_id {
+  KVM_PV_INFO_VM,
+  KVM_PV_INFO_DUMP,
+};
+struct kvm_s390_pv_info_dump {
+  __u64 dump_cpu_buffer_len;
+  __u64 dump_config_mem_buffer_per_1m;
+  __u64 dump_config_finalize_len;
+};
+struct kvm_s390_pv_info_vm {
+  __u64 inst_calls_list[4];
+  __u64 max_cpus;
+  __u64 max_guests;
+  __u64 max_guest_addr;
+  __u64 feature_indication;
+};
+struct kvm_s390_pv_info_header {
+  __u32 id;
+  __u32 len_max;
+  __u32 len_written;
+  __u32 reserved;
+};
+struct kvm_s390_pv_info {
+  struct kvm_s390_pv_info_header header;
+  union {
+    struct kvm_s390_pv_info_dump dump;
+    struct kvm_s390_pv_info_vm vm;
+  };
+};
 enum pv_cmd_id {
   KVM_PV_ENABLE,
   KVM_PV_DISABLE,
@@ -1250,6 +1332,8 @@
   KVM_PV_VERIFY,
   KVM_PV_PREP_RESET,
   KVM_PV_UNSHARE_ALL,
+  KVM_PV_INFO,
+  KVM_PV_DUMP,
 };
 struct kvm_pv_cmd {
   __u32 cmd;
@@ -1273,14 +1357,38 @@
     struct {
       __u64 gfn;
     } shared_info;
+    struct {
+      __u32 send_port;
+      __u32 type;
+      __u32 flags;
+#define KVM_XEN_EVTCHN_DEASSIGN (1 << 0)
+#define KVM_XEN_EVTCHN_UPDATE (1 << 1)
+#define KVM_XEN_EVTCHN_RESET (1 << 2)
+      union {
+        struct {
+          __u32 port;
+          __u32 vcpu;
+          __u32 priority;
+        } port;
+        struct {
+          __u32 port;
+          __s32 fd;
+        } eventfd;
+        __u32 padding[4];
+      } deliver;
+    } evtchn;
+    __u32 xen_version;
     __u64 pad[8];
   } u;
 };
 #define KVM_XEN_ATTR_TYPE_LONG_MODE 0x0
 #define KVM_XEN_ATTR_TYPE_SHARED_INFO 0x1
 #define KVM_XEN_ATTR_TYPE_UPCALL_VECTOR 0x2
+#define KVM_XEN_ATTR_TYPE_EVTCHN 0x3
+#define KVM_XEN_ATTR_TYPE_XEN_VERSION 0x4
 #define KVM_XEN_VCPU_GET_ATTR _IOWR(KVMIO, 0xca, struct kvm_xen_vcpu_attr)
 #define KVM_XEN_VCPU_SET_ATTR _IOW(KVMIO, 0xcb, struct kvm_xen_vcpu_attr)
+#define KVM_XEN_HVM_EVTCHN_SEND _IOW(KVMIO, 0xd0, struct kvm_irq_routing_xen_evtchn)
 #define KVM_GET_SREGS2 _IOR(KVMIO, 0xcc, struct kvm_sregs2)
 #define KVM_SET_SREGS2 _IOW(KVMIO, 0xcd, struct kvm_sregs2)
 struct kvm_xen_vcpu_attr {
@@ -1297,6 +1405,13 @@
       __u64 time_blocked;
       __u64 time_offline;
     } runstate;
+    __u32 vcpu_id;
+    struct {
+      __u32 port;
+      __u32 priority;
+      __u64 expires_ns;
+    } timer;
+    __u8 vector;
   } u;
 };
 #define KVM_XEN_VCPU_ATTR_TYPE_VCPU_INFO 0x0
@@ -1305,6 +1420,9 @@
 #define KVM_XEN_VCPU_ATTR_TYPE_RUNSTATE_CURRENT 0x3
 #define KVM_XEN_VCPU_ATTR_TYPE_RUNSTATE_DATA 0x4
 #define KVM_XEN_VCPU_ATTR_TYPE_RUNSTATE_ADJUST 0x5
+#define KVM_XEN_VCPU_ATTR_TYPE_VCPU_ID 0x6
+#define KVM_XEN_VCPU_ATTR_TYPE_TIMER 0x7
+#define KVM_XEN_VCPU_ATTR_TYPE_UPCALL_VECTOR 0x8
 enum sev_cmd_id {
   KVM_SEV_INIT = 0,
   KVM_SEV_ES_INIT,
@@ -1480,6 +1598,7 @@
 };
 #define KVM_BUS_LOCK_DETECTION_OFF (1 << 0)
 #define KVM_BUS_LOCK_DETECTION_EXIT (1 << 1)
+#define KVM_PMU_CAP_DISABLE (1 << 0)
 struct kvm_stats_header {
   __u32 flags;
   __u32 name_size;
@@ -1502,7 +1621,8 @@
 #define KVM_STATS_UNIT_BYTES (0x1 << KVM_STATS_UNIT_SHIFT)
 #define KVM_STATS_UNIT_SECONDS (0x2 << KVM_STATS_UNIT_SHIFT)
 #define KVM_STATS_UNIT_CYCLES (0x3 << KVM_STATS_UNIT_SHIFT)
-#define KVM_STATS_UNIT_MAX KVM_STATS_UNIT_CYCLES
+#define KVM_STATS_UNIT_BOOLEAN (0x4 << KVM_STATS_UNIT_SHIFT)
+#define KVM_STATS_UNIT_MAX KVM_STATS_UNIT_BOOLEAN
 #define KVM_STATS_BASE_SHIFT 8
 #define KVM_STATS_BASE_MASK (0xF << KVM_STATS_BASE_SHIFT)
 #define KVM_STATS_BASE_POW10 (0x0 << KVM_STATS_BASE_SHIFT)
@@ -1518,4 +1638,28 @@
 };
 #define KVM_GET_STATS_FD _IO(KVMIO, 0xce)
 #define KVM_GET_XSAVE2 _IOR(KVMIO, 0xcf, struct kvm_xsave)
+#define KVM_S390_PV_CPU_COMMAND _IOWR(KVMIO, 0xd0, struct kvm_pv_cmd)
+#define KVM_X86_NOTIFY_VMEXIT_ENABLED (1ULL << 0)
+#define KVM_X86_NOTIFY_VMEXIT_USER (1ULL << 1)
+#define KVM_S390_ZPCI_OP _IOW(KVMIO, 0xd1, struct kvm_s390_zpci_op)
+struct kvm_s390_zpci_op {
+  __u32 fh;
+  __u8 op;
+  __u8 pad[3];
+  union {
+    struct {
+      __u64 ibv;
+      __u64 sb;
+      __u32 flags;
+      __u32 noi;
+      __u8 isc;
+      __u8 sbo;
+      __u16 pad;
+    } reg_aen;
+    __u64 reserved[8];
+  } u;
+};
+#define KVM_S390_ZPCIOP_REG_AEN 0
+#define KVM_S390_ZPCIOP_DEREG_AEN 1
+#define KVM_S390_ZPCIOP_REGAEN_HOST (1 << 0)
 #endif
diff --git a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/l2tp.h b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/l2tp.h
index a054819..dee634e 100644
--- a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/l2tp.h
+++ b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/l2tp.h
@@ -22,7 +22,6 @@
 #include <linux/socket.h>
 #include <linux/in.h>
 #include <linux/in6.h>
-#define IPPROTO_L2TP 115
 #define __SOCK_SIZE__ 16
 struct sockaddr_l2tpip {
   __kernel_sa_family_t l2tp_family;
diff --git a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/landlock.h b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/landlock.h
index 50d79d8..ea2fd74 100644
--- a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/landlock.h
+++ b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/landlock.h
@@ -43,4 +43,5 @@
 #define LANDLOCK_ACCESS_FS_MAKE_FIFO (1ULL << 10)
 #define LANDLOCK_ACCESS_FS_MAKE_BLOCK (1ULL << 11)
 #define LANDLOCK_ACCESS_FS_MAKE_SYM (1ULL << 12)
+#define LANDLOCK_ACCESS_FS_REFER (1ULL << 13)
 #endif
diff --git a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/lirc.h b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/lirc.h
index a0ac24a..dff0b63 100644
--- a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/lirc.h
+++ b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/lirc.h
@@ -26,18 +26,21 @@
 #define LIRC_MODE2_PULSE 0x01000000
 #define LIRC_MODE2_FREQUENCY 0x02000000
 #define LIRC_MODE2_TIMEOUT 0x03000000
+#define LIRC_MODE2_OVERFLOW 0x04000000
 #define LIRC_VALUE_MASK 0x00FFFFFF
 #define LIRC_MODE2_MASK 0xFF000000
 #define LIRC_SPACE(val) (((val) & LIRC_VALUE_MASK) | LIRC_MODE2_SPACE)
 #define LIRC_PULSE(val) (((val) & LIRC_VALUE_MASK) | LIRC_MODE2_PULSE)
 #define LIRC_FREQUENCY(val) (((val) & LIRC_VALUE_MASK) | LIRC_MODE2_FREQUENCY)
 #define LIRC_TIMEOUT(val) (((val) & LIRC_VALUE_MASK) | LIRC_MODE2_TIMEOUT)
+#define LIRC_OVERFLOW(val) (((val) & LIRC_VALUE_MASK) | LIRC_MODE2_OVERFLOW)
 #define LIRC_VALUE(val) ((val) & LIRC_VALUE_MASK)
 #define LIRC_MODE2(val) ((val) & LIRC_MODE2_MASK)
 #define LIRC_IS_SPACE(val) (LIRC_MODE2(val) == LIRC_MODE2_SPACE)
 #define LIRC_IS_PULSE(val) (LIRC_MODE2(val) == LIRC_MODE2_PULSE)
 #define LIRC_IS_FREQUENCY(val) (LIRC_MODE2(val) == LIRC_MODE2_FREQUENCY)
 #define LIRC_IS_TIMEOUT(val) (LIRC_MODE2(val) == LIRC_MODE2_TIMEOUT)
+#define LIRC_IS_OVERFLOW(val) (LIRC_MODE2(val) == LIRC_MODE2_OVERFLOW)
 #define lirc_t int
 #define LIRC_MODE2SEND(x) (x)
 #define LIRC_SEND2MODE(x) (x)
@@ -63,17 +66,15 @@
 #define LIRC_CAN_REC_LIRCCODE LIRC_MODE2REC(LIRC_MODE_LIRCCODE)
 #define LIRC_CAN_REC_MASK LIRC_MODE2REC(LIRC_CAN_SEND_MASK)
 #define LIRC_CAN_SET_REC_CARRIER (LIRC_CAN_SET_SEND_CARRIER << 16)
-#define LIRC_CAN_SET_REC_DUTY_CYCLE (LIRC_CAN_SET_SEND_DUTY_CYCLE << 16)
-#define LIRC_CAN_SET_REC_DUTY_CYCLE_RANGE 0x40000000
 #define LIRC_CAN_SET_REC_CARRIER_RANGE 0x80000000
 #define LIRC_CAN_GET_REC_RESOLUTION 0x20000000
 #define LIRC_CAN_SET_REC_TIMEOUT 0x10000000
-#define LIRC_CAN_SET_REC_FILTER 0x08000000
 #define LIRC_CAN_MEASURE_CARRIER 0x02000000
 #define LIRC_CAN_USE_WIDEBAND_RECEIVER 0x04000000
 #define LIRC_CAN_SEND(x) ((x) & LIRC_CAN_SEND_MASK)
 #define LIRC_CAN_REC(x) ((x) & LIRC_CAN_REC_MASK)
-#define LIRC_CAN_NOTIFY_DECODE 0x01000000
+#define LIRC_CAN_SET_REC_FILTER 0
+#define LIRC_CAN_NOTIFY_DECODE 0
 #define LIRC_GET_FEATURES _IOR('i', 0x00000000, __u32)
 #define LIRC_GET_SEND_MODE _IOR('i', 0x00000001, __u32)
 #define LIRC_GET_REC_MODE _IOR('i', 0x00000002, __u32)
diff --git a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/loadpin.h b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/loadpin.h
new file mode 100644
index 0000000..2641939
--- /dev/null
+++ b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/loadpin.h
@@ -0,0 +1,23 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPI_LINUX_LOOP_LOADPIN_H
+#define _UAPI_LINUX_LOOP_LOADPIN_H
+#define LOADPIN_IOC_MAGIC 'L'
+#define LOADPIN_IOC_SET_TRUSTED_VERITY_DIGESTS _IOW(LOADPIN_IOC_MAGIC, 0x00, unsigned int)
+#endif
diff --git a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/lwtunnel.h b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/lwtunnel.h
index e6fb536..94011dd 100644
--- a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/lwtunnel.h
+++ b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/lwtunnel.h
@@ -30,6 +30,7 @@
   LWTUNNEL_ENCAP_SEG6_LOCAL,
   LWTUNNEL_ENCAP_RPL,
   LWTUNNEL_ENCAP_IOAM6,
+  LWTUNNEL_ENCAP_XFRM,
   __LWTUNNEL_ENCAP_MAX,
 };
 #define LWTUNNEL_ENCAP_MAX (__LWTUNNEL_ENCAP_MAX - 1)
@@ -107,4 +108,11 @@
 };
 #define LWT_BPF_MAX (__LWT_BPF_MAX - 1)
 #define LWT_BPF_MAX_HEADROOM 256
+enum {
+  LWT_XFRM_UNSPEC,
+  LWT_XFRM_IF_ID,
+  LWT_XFRM_LINK,
+  __LWT_XFRM_MAX,
+};
+#define LWT_XFRM_MAX (__LWT_XFRM_MAX - 1)
 #endif
diff --git a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/magic.h b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/magic.h
index 6563411..ac2a0f3 100644
--- a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/magic.h
+++ b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/magic.h
@@ -99,11 +99,7 @@
 #define AAFS_MAGIC 0x5a3c69f0
 #define ZONEFS_MAGIC 0x5a4f4653
 #define UDF_SUPER_MAGIC 0x15013346
-#define BALLOON_KVM_MAGIC 0x13661366
-#define ZSMALLOC_MAGIC 0x58295829
 #define DMA_BUF_MAGIC 0x444d4142
 #define DEVMEM_MAGIC 0x454d444d
-#define Z3FOLD_MAGIC 0x33
-#define PPC_CMM_MAGIC 0xc7571590
 #define SECRETMEM_MAGIC 0x5345434d
 #endif
diff --git a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/mctp.h b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/mctp.h
index 21a9a14..f02c12f 100644
--- a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/mctp.h
+++ b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/mctp.h
@@ -46,5 +46,13 @@
 #define MCTP_ADDR_ANY 0xff
 #define MCTP_TAG_MASK 0x07
 #define MCTP_TAG_OWNER 0x08
+#define MCTP_TAG_PREALLOC 0x10
 #define MCTP_OPT_ADDR_EXT 1
+#define SIOCMCTPALLOCTAG (SIOCPROTOPRIVATE + 0)
+#define SIOCMCTPDROPTAG (SIOCPROTOPRIVATE + 1)
+struct mctp_ioc_tag_ctl {
+  mctp_eid_t peer_addr;
+  __u8 tag;
+  __u16 flags;
+};
 #endif
diff --git a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/mdio.h b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/mdio.h
index d5c9da8..7a2c9af 100644
--- a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/mdio.h
+++ b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/mdio.h
@@ -66,6 +66,19 @@
 #define MDIO_PCS_10GBRT_STAT2 33
 #define MDIO_AN_10GBT_CTRL 32
 #define MDIO_AN_10GBT_STAT 33
+#define MDIO_B10L_PMA_CTRL 2294
+#define MDIO_PMA_10T1L_STAT 2295
+#define MDIO_PCS_10T1L_CTRL 2278
+#define MDIO_PMA_PMD_BT1 18
+#define MDIO_AN_T1_CTRL 512
+#define MDIO_AN_T1_STAT 513
+#define MDIO_AN_T1_ADV_L 514
+#define MDIO_AN_T1_ADV_M 515
+#define MDIO_AN_T1_ADV_H 516
+#define MDIO_AN_T1_LP_L 517
+#define MDIO_AN_T1_LP_M 518
+#define MDIO_AN_T1_LP_H 519
+#define MDIO_PMA_PMD_BT1_CTRL 2100
 #define MDIO_PMA_LASI_RXCTRL 0x9000
 #define MDIO_PMA_LASI_TXCTRL 0x9001
 #define MDIO_PMA_LASI_CTRL 0x9002
@@ -139,6 +152,7 @@
 #define MDIO_PMA_CTRL2_10BT 0x000f
 #define MDIO_PMA_CTRL2_2_5GBT 0x0030
 #define MDIO_PMA_CTRL2_5GBT 0x0031
+#define MDIO_PMA_CTRL2_BASET1 0x003D
 #define MDIO_PCS_CTRL2_TYPE 0x0003
 #define MDIO_PCS_CTRL2_10GBR 0x0000
 #define MDIO_PCS_CTRL2_10GBX 0x0001
@@ -184,6 +198,7 @@
 #define MDIO_PMA_EXTABLE_1000BKX 0x0040
 #define MDIO_PMA_EXTABLE_100BTX 0x0080
 #define MDIO_PMA_EXTABLE_10BT 0x0100
+#define MDIO_PMA_EXTABLE_BT1 0x0800
 #define MDIO_PMA_EXTABLE_NBT 0x4000
 #define MDIO_PHYXS_LNSTAT_SYNC0 0x0001
 #define MDIO_PHYXS_LNSTAT_SYNC1 0x0002
@@ -218,6 +233,44 @@
 #define MDIO_AN_10GBT_STAT_LOCOK 0x2000
 #define MDIO_AN_10GBT_STAT_MS 0x4000
 #define MDIO_AN_10GBT_STAT_MSFLT 0x8000
+#define MDIO_PMA_10T1L_CTRL_LB_EN 0x0001
+#define MDIO_PMA_10T1L_CTRL_EEE_EN 0x0400
+#define MDIO_PMA_10T1L_CTRL_LOW_POWER 0x0800
+#define MDIO_PMA_10T1L_CTRL_2V4_EN 0x1000
+#define MDIO_PMA_10T1L_CTRL_TX_DIS 0x4000
+#define MDIO_PMA_10T1L_CTRL_PMA_RST 0x8000
+#define MDIO_PMA_10T1L_STAT_LINK 0x0001
+#define MDIO_PMA_10T1L_STAT_FAULT 0x0002
+#define MDIO_PMA_10T1L_STAT_POLARITY 0x0004
+#define MDIO_PMA_10T1L_STAT_RECV_FAULT 0x0200
+#define MDIO_PMA_10T1L_STAT_EEE 0x0400
+#define MDIO_PMA_10T1L_STAT_LOW_POWER 0x0800
+#define MDIO_PMA_10T1L_STAT_2V4_ABLE 0x1000
+#define MDIO_PMA_10T1L_STAT_LB_ABLE 0x2000
+#define MDIO_PCS_10T1L_CTRL_LB 0x4000
+#define MDIO_PCS_10T1L_CTRL_RESET 0x8000
+#define MDIO_PMA_PMD_BT1_B10L_ABLE 0x0004
+#define MDIO_AN_T1_ADV_L_PAUSE_CAP ADVERTISE_PAUSE_CAP
+#define MDIO_AN_T1_ADV_L_PAUSE_ASYM ADVERTISE_PAUSE_ASYM
+#define MDIO_AN_T1_ADV_L_FORCE_MS 0x1000
+#define MDIO_AN_T1_ADV_L_REMOTE_FAULT ADVERTISE_RFAULT
+#define MDIO_AN_T1_ADV_L_ACK ADVERTISE_LPACK
+#define MDIO_AN_T1_ADV_L_NEXT_PAGE_REQ ADVERTISE_NPAGE
+#define MDIO_AN_T1_ADV_M_B10L 0x4000
+#define MDIO_AN_T1_ADV_M_MST 0x0010
+#define MDIO_AN_T1_ADV_H_10L_TX_HI_REQ 0x1000
+#define MDIO_AN_T1_ADV_H_10L_TX_HI 0x2000
+#define MDIO_AN_T1_LP_L_PAUSE_CAP LPA_PAUSE_CAP
+#define MDIO_AN_T1_LP_L_PAUSE_ASYM LPA_PAUSE_ASYM
+#define MDIO_AN_T1_LP_L_FORCE_MS 0x1000
+#define MDIO_AN_T1_LP_L_REMOTE_FAULT LPA_RFAULT
+#define MDIO_AN_T1_LP_L_ACK LPA_LPACK
+#define MDIO_AN_T1_LP_L_NEXT_PAGE_REQ LPA_NPAGE
+#define MDIO_AN_T1_LP_M_MST 0x0010
+#define MDIO_AN_T1_LP_M_B10L 0x4000
+#define MDIO_AN_T1_LP_H_10L_TX_HI_REQ 0x1000
+#define MDIO_AN_T1_LP_H_10L_TX_HI 0x2000
+#define MDIO_PMA_PMD_BT1_CTRL_CFG_MST 0x4000
 #define MDIO_AN_EEE_ADV_100TX 0x0002
 #define MDIO_AN_EEE_ADV_1000T 0x0004
 #define MDIO_EEE_100TX MDIO_AN_EEE_ADV_100TX
diff --git a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/media-bus-format.h b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/media-bus-format.h
index 2542a32..4555de1 100644
--- a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/media-bus-format.h
+++ b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/media-bus-format.h
@@ -43,9 +43,13 @@
 #define MEDIA_BUS_FMT_RGB888_3X8_DELTA 0x101d
 #define MEDIA_BUS_FMT_RGB888_1X7X4_SPWG 0x1011
 #define MEDIA_BUS_FMT_RGB888_1X7X4_JEIDA 0x1012
+#define MEDIA_BUS_FMT_RGB666_1X30_CPADLO 0x101e
+#define MEDIA_BUS_FMT_RGB888_1X30_CPADLO 0x101f
 #define MEDIA_BUS_FMT_ARGB8888_1X32 0x100d
 #define MEDIA_BUS_FMT_RGB888_1X32_PADHI 0x100f
 #define MEDIA_BUS_FMT_RGB101010_1X30 0x1018
+#define MEDIA_BUS_FMT_RGB666_1X36_CPADLO 0x1020
+#define MEDIA_BUS_FMT_RGB888_1X36_CPADLO 0x1021
 #define MEDIA_BUS_FMT_RGB121212_1X36 0x1019
 #define MEDIA_BUS_FMT_RGB161616_1X48 0x101a
 #define MEDIA_BUS_FMT_Y8_1X8 0x2001
diff --git a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/media.h b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/media.h
index 5c8efcd..869d47b 100644
--- a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/media.h
+++ b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/media.h
@@ -18,7 +18,6 @@
  ****************************************************************************/
 #ifndef __LINUX_MEDIA_H
 #define __LINUX_MEDIA_H
-#include <stdint.h>
 #include <linux/ioctl.h>
 #include <linux/types.h>
 struct media_device_info {
@@ -117,6 +116,7 @@
 #define MEDIA_LNK_FL_LINK_TYPE (0xf << 28)
 #define MEDIA_LNK_FL_DATA_LINK (0 << 28)
 #define MEDIA_LNK_FL_INTERFACE_LINK (1 << 28)
+#define MEDIA_LNK_FL_ANCILLARY_LINK (2 << 28)
 struct media_link_desc {
   struct media_pad_desc source;
   struct media_pad_desc sink;
diff --git a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/minix_fs.h b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/minix_fs.h
index b6f1c69..0878efe 100644
--- a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/minix_fs.h
+++ b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/minix_fs.h
@@ -77,10 +77,10 @@
 };
 struct minix_dir_entry {
   __u16 inode;
-  char name[0];
+  char name[];
 };
 struct minix3_dir_entry {
   __u32 inode;
-  char name[0];
+  char name[];
 };
 #endif
diff --git a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/mmc/ioctl.h b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/mmc/ioctl.h
index afea6a5..451134b 100644
--- a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/mmc/ioctl.h
+++ b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/mmc/ioctl.h
@@ -39,7 +39,7 @@
 #define mmc_ioc_cmd_set_data(ic,ptr) ic.data_ptr = (__u64) (unsigned long) ptr
 struct mmc_ioc_multi_cmd {
   __u64 num_of_cmds;
-  struct mmc_ioc_cmd cmds[0];
+  struct mmc_ioc_cmd cmds[];
 };
 #define MMC_IOC_CMD _IOWR(MMC_BLOCK_MAJOR, 0, struct mmc_ioc_cmd)
 #define MMC_IOC_MULTI_CMD _IOWR(MMC_BLOCK_MAJOR, 1, struct mmc_ioc_multi_cmd)
diff --git a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/mptcp.h b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/mptcp.h
index 67b0ce3..da1b5af 100644
--- a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/mptcp.h
+++ b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/mptcp.h
@@ -18,12 +18,13 @@
  ****************************************************************************/
 #ifndef _UAPI_MPTCP_H
 #define _UAPI_MPTCP_H
+#include <netinet/in.h>
+#include <sys/socket.h>
 #include <linux/const.h>
 #include <linux/types.h>
 #include <linux/in.h>
 #include <linux/in6.h>
 #include <linux/socket.h>
-#include <sys/socket.h>
 #define MPTCP_SUBFLOW_FLAG_MCAP_REM _BITUL(0)
 #define MPTCP_SUBFLOW_FLAG_MCAP_LOC _BITUL(1)
 #define MPTCP_SUBFLOW_FLAG_JOIN_REM _BITUL(2)
@@ -58,6 +59,9 @@
   MPTCP_PM_ATTR_ADDR,
   MPTCP_PM_ATTR_RCV_ADD_ADDRS,
   MPTCP_PM_ATTR_SUBFLOWS,
+  MPTCP_PM_ATTR_TOKEN,
+  MPTCP_PM_ATTR_LOC_ID,
+  MPTCP_PM_ATTR_ADDR_REMOTE,
   __MPTCP_PM_ATTR_MAX
 };
 #define MPTCP_PM_ATTR_MAX (__MPTCP_PM_ATTR_MAX - 1)
@@ -77,6 +81,7 @@
 #define MPTCP_PM_ADDR_FLAG_SUBFLOW (1 << 1)
 #define MPTCP_PM_ADDR_FLAG_BACKUP (1 << 2)
 #define MPTCP_PM_ADDR_FLAG_FULLMESH (1 << 3)
+#define MPTCP_PM_ADDR_FLAG_IMPLICIT (1 << 4)
 enum {
   MPTCP_PM_CMD_UNSPEC,
   MPTCP_PM_CMD_ADD_ADDR,
@@ -86,6 +91,10 @@
   MPTCP_PM_CMD_SET_LIMITS,
   MPTCP_PM_CMD_GET_LIMITS,
   MPTCP_PM_CMD_SET_FLAGS,
+  MPTCP_PM_CMD_ANNOUNCE,
+  MPTCP_PM_CMD_REMOVE,
+  MPTCP_PM_CMD_SUBFLOW_CREATE,
+  MPTCP_PM_CMD_SUBFLOW_DESTROY,
   __MPTCP_PM_CMD_AFTER_LAST
 };
 #define MPTCP_INFO_FLAG_FALLBACK _BITUL(0)
@@ -136,6 +145,7 @@
   MPTCP_ATTR_IF_IDX,
   MPTCP_ATTR_RESET_REASON,
   MPTCP_ATTR_RESET_FLAGS,
+  MPTCP_ATTR_SERVER_SIDE,
   __MPTCP_ATTR_AFTER_LAST
 };
 #define MPTCP_ATTR_MAX (__MPTCP_ATTR_AFTER_LAST - 1)
diff --git a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/mroute6.h b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/mroute6.h
index c73765c..68480de 100644
--- a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/mroute6.h
+++ b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/mroute6.h
@@ -93,6 +93,7 @@
 #define MRT6MSG_NOCACHE 1
 #define MRT6MSG_WRONGMIF 2
 #define MRT6MSG_WHOLEPKT 3
+#define MRT6MSG_WRMIFWHOLE 4
   __u8 im6_mbz;
   __u8 im6_msgtype;
   __u16 im6_mif;
diff --git a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/ndctl.h b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/ndctl.h
index 53f8ba4..7e0d560 100644
--- a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/ndctl.h
+++ b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/ndctl.h
@@ -22,33 +22,33 @@
 struct nd_cmd_dimm_flags {
   __u32 status;
   __u32 flags;
-} __packed;
+} __attribute__((__packed__));
 struct nd_cmd_get_config_size {
   __u32 status;
   __u32 config_size;
   __u32 max_xfer;
-} __packed;
+} __attribute__((__packed__));
 struct nd_cmd_get_config_data_hdr {
   __u32 in_offset;
   __u32 in_length;
   __u32 status;
-  __u8 out_buf[0];
-} __packed;
+  __u8 out_buf[];
+} __attribute__((__packed__));
 struct nd_cmd_set_config_hdr {
   __u32 in_offset;
   __u32 in_length;
-  __u8 in_buf[0];
-} __packed;
+  __u8 in_buf[];
+} __attribute__((__packed__));
 struct nd_cmd_vendor_hdr {
   __u32 opcode;
   __u32 in_length;
-  __u8 in_buf[0];
-} __packed;
+  __u8 in_buf[];
+} __attribute__((__packed__));
 struct nd_cmd_vendor_tail {
   __u32 status;
   __u32 out_length;
-  __u8 out_buf[0];
-} __packed;
+  __u8 out_buf[];
+} __attribute__((__packed__));
 struct nd_cmd_ars_cap {
   __u64 address;
   __u64 length;
@@ -57,7 +57,7 @@
   __u32 clear_err_unit;
   __u16 flags;
   __u16 reserved;
-} __packed;
+} __attribute__((__packed__));
 struct nd_cmd_ars_start {
   __u64 address;
   __u64 length;
@@ -66,7 +66,7 @@
   __u8 reserved[5];
   __u32 status;
   __u32 scrub_time;
-} __packed;
+} __attribute__((__packed__));
 struct nd_cmd_ars_status {
   __u32 status;
   __u32 out_length;
@@ -82,15 +82,15 @@
     __u32 reserved;
     __u64 err_address;
     __u64 length;
-  } __packed records[0];
-} __packed;
+  } __attribute__((__packed__)) records[];
+} __attribute__((__packed__));
 struct nd_cmd_clear_error {
   __u64 address;
   __u64 length;
   __u32 status;
   __u8 reserved[4];
   __u64 cleared;
-} __packed;
+} __attribute__((__packed__));
 enum {
   ND_CMD_IMPLEMENTED = 0,
   ND_CMD_ARS_CAP = 1,
@@ -129,7 +129,6 @@
 #define ND_DEVICE_REGION_BLK 3
 #define ND_DEVICE_NAMESPACE_IO 4
 #define ND_DEVICE_NAMESPACE_PMEM 5
-#define ND_DEVICE_NAMESPACE_BLK 6
 #define ND_DEVICE_DAX_PMEM 7
 enum nd_driver_flags {
   ND_DRIVER_DIMM = 1 << ND_DEVICE_DIMM,
@@ -137,7 +136,6 @@
   ND_DRIVER_REGION_BLK = 1 << ND_DEVICE_REGION_BLK,
   ND_DRIVER_NAMESPACE_IO = 1 << ND_DEVICE_NAMESPACE_IO,
   ND_DRIVER_NAMESPACE_PMEM = 1 << ND_DEVICE_NAMESPACE_PMEM,
-  ND_DRIVER_NAMESPACE_BLK = 1 << ND_DEVICE_NAMESPACE_BLK,
   ND_DRIVER_DAX_PMEM = 1 << ND_DEVICE_DAX_PMEM,
 };
 enum ars_masks {
diff --git a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/neighbour.h b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/neighbour.h
index 278f7d1..b86d2ae 100644
--- a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/neighbour.h
+++ b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/neighbour.h
@@ -46,6 +46,8 @@
   NDA_NH_ID,
   NDA_FDB_EXT_ATTRS,
   NDA_FLAGS_EXT,
+  NDA_NDM_STATE_MASK,
+  NDA_NDM_FLAGS_MASK,
   __NDA_MAX
 };
 #define NDA_MAX (__NDA_MAX - 1)
@@ -106,6 +108,7 @@
   NDTPA_QUEUE_LENBYTES,
   NDTPA_MCAST_REPROBES,
   NDTPA_PAD,
+  NDTPA_INTERVAL_PROBE_TIME_MS,
   __NDTPA_MAX
 };
 #define NDTPA_MAX (__NDTPA_MAX - 1)
diff --git a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/net_dropmon.h b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/net_dropmon.h
index 01b76cb..4d2c336 100644
--- a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/net_dropmon.h
+++ b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/net_dropmon.h
@@ -36,11 +36,11 @@
 };
 struct net_dm_config_msg {
   __u32 entries;
-  struct net_dm_config_entry options[0];
+  struct net_dm_config_entry options[];
 };
 struct net_dm_alert_msg {
   __u32 entries;
-  struct net_dm_drop_point points[0];
+  struct net_dm_drop_point points[];
 };
 struct net_dm_user_msg {
   union {
@@ -87,6 +87,7 @@
   NET_DM_ATTR_SW_DROPS,
   NET_DM_ATTR_HW_DROPS,
   NET_DM_ATTR_FLOW_ACTION_COOKIE,
+  NET_DM_ATTR_REASON,
   __NET_DM_ATTR_MAX,
   NET_DM_ATTR_MAX = __NET_DM_ATTR_MAX - 1
 };
diff --git a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/netfilter/nfnetlink_queue.h b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/netfilter/nfnetlink_queue.h
index 75fa359..d100dec 100644
--- a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/netfilter/nfnetlink_queue.h
+++ b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/netfilter/nfnetlink_queue.h
@@ -70,6 +70,7 @@
   NFQA_SECCTX,
   NFQA_VLAN,
   NFQA_L2HDR,
+  NFQA_PRIORITY,
   __NFQA_MAX
 };
 #define NFQA_MAX (__NFQA_MAX - 1)
diff --git a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/netfilter/x_tables.h b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/netfilter/x_tables.h
index 46bde57..0993265 100644
--- a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/netfilter/x_tables.h
+++ b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/netfilter/x_tables.h
@@ -36,7 +36,7 @@
     } kernel;
     __u16 match_size;
   } u;
-  unsigned char data[0];
+  unsigned char data[];
 };
 struct xt_entry_target {
   union {
@@ -87,7 +87,7 @@
 struct xt_counters_info {
   char name[XT_TABLE_MAXNAMELEN];
   unsigned int num_counters;
-  struct xt_counters counters[0];
+  struct xt_counters counters[];
 };
 #define XT_INV_PROTO 0x40
 #define XT_MATCH_ITERATE(type,e,fn,args...) \
diff --git a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/netfilter_arp/arp_tables.h b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/netfilter_arp/arp_tables.h
index 340625f..862f514 100644
--- a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/netfilter_arp/arp_tables.h
+++ b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/netfilter_arp/arp_tables.h
@@ -72,7 +72,7 @@
   __u16 next_offset;
   unsigned int comefrom;
   struct xt_counters counters;
-  unsigned char elems[0];
+  unsigned char elems[];
 };
 #define ARPT_BASE_CTL 96
 #define ARPT_SO_SET_REPLACE (ARPT_BASE_CTL)
@@ -99,11 +99,11 @@
   unsigned int underflow[NF_ARP_NUMHOOKS];
   unsigned int num_counters;
   struct xt_counters __user * counters;
-  struct arpt_entry entries[0];
+  struct arpt_entry entries[];
 };
 struct arpt_get_entries {
   char name[XT_TABLE_MAXNAMELEN];
   unsigned int size;
-  struct arpt_entry entrytable[0];
+  struct arpt_entry entrytable[];
 };
 #endif
diff --git a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/netfilter_bridge/ebt_among.h b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/netfilter_bridge/ebt_among.h
index 74cd550..aa39c5b 100644
--- a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/netfilter_bridge/ebt_among.h
+++ b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/netfilter_bridge/ebt_among.h
@@ -28,7 +28,7 @@
 struct ebt_mac_wormhash {
   int table[257];
   int poolsize;
-  struct ebt_mac_wormhash_tuple pool[0];
+  struct ebt_mac_wormhash_tuple pool[];
 };
 #define ebt_mac_wormhash_size(x) ((x) ? sizeof(struct ebt_mac_wormhash) + (x)->poolsize * sizeof(struct ebt_mac_wormhash_tuple) : 0)
 struct ebt_among_info {
diff --git a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/netfilter_decnet.h b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/netfilter_decnet.h
deleted file mode 100644
index c9c16ca..0000000
--- a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/netfilter_decnet.h
+++ /dev/null
@@ -1,57 +0,0 @@
-/****************************************************************************
- ****************************************************************************
- ***
- ***   This header was automatically generated from a Linux kernel header
- ***   of the same name, to make information necessary for userspace to
- ***   call into the kernel available to libc.  It contains only constants,
- ***   structures, and macros generated from the original header, and thus,
- ***   contains no copyrightable information.
- ***
- ***   To edit the content of this header, modify the corresponding
- ***   source file (e.g. under external/kernel-headers/original/) then
- ***   run bionic/libc/kernel/tools/update_all.py
- ***
- ***   Any manual change here will be lost the next time this script will
- ***   be run. You've been warned!
- ***
- ****************************************************************************
- ****************************************************************************/
-#ifndef __LINUX_DECNET_NETFILTER_H
-#define __LINUX_DECNET_NETFILTER_H
-#include <linux/netfilter.h>
-#include <limits.h>
-#define NF_DN_NUMHOOKS 7
-#define NF_DN_PRE_ROUTING 0
-#define NF_DN_LOCAL_IN 1
-#define NF_DN_FORWARD 2
-#define NF_DN_LOCAL_OUT 3
-#define NF_DN_POST_ROUTING 4
-#define NF_DN_HELLO 5
-#define NF_DN_ROUTE 6
-enum nf_dn_hook_priorities {
-  NF_DN_PRI_FIRST = INT_MIN,
-  NF_DN_PRI_CONNTRACK = - 200,
-  NF_DN_PRI_MANGLE = - 150,
-  NF_DN_PRI_NAT_DST = - 100,
-  NF_DN_PRI_FILTER = 0,
-  NF_DN_PRI_NAT_SRC = 100,
-  NF_DN_PRI_DNRTMSG = 200,
-  NF_DN_PRI_LAST = INT_MAX,
-};
-struct nf_dn_rtmsg {
-  int nfdn_ifindex;
-};
-#define NFDN_RTMSG(r) ((unsigned char *) (r) + NLMSG_ALIGN(sizeof(struct nf_dn_rtmsg)))
-#define DNRMG_L1_GROUP 0x01
-#define DNRMG_L2_GROUP 0x02
-enum {
-  DNRNG_NLGRP_NONE,
-#define DNRNG_NLGRP_NONE DNRNG_NLGRP_NONE
-  DNRNG_NLGRP_L1,
-#define DNRNG_NLGRP_L1 DNRNG_NLGRP_L1
-  DNRNG_NLGRP_L2,
-#define DNRNG_NLGRP_L2 DNRNG_NLGRP_L2
-  __DNRNG_NLGRP_MAX
-};
-#define DNRNG_NLGRP_MAX (__DNRNG_NLGRP_MAX - 1)
-#endif
diff --git a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/netfilter_ipv4/ip_tables.h b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/netfilter_ipv4/ip_tables.h
index 033c519..14a65ad 100644
--- a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/netfilter_ipv4/ip_tables.h
+++ b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/netfilter_ipv4/ip_tables.h
@@ -79,7 +79,7 @@
   __u16 next_offset;
   unsigned int comefrom;
   struct xt_counters counters;
-  unsigned char elems[0];
+  unsigned char elems[];
 };
 #define IPT_BASE_CTL 64
 #define IPT_SO_SET_REPLACE (IPT_BASE_CTL)
@@ -113,12 +113,12 @@
   unsigned int underflow[NF_INET_NUMHOOKS];
   unsigned int num_counters;
   struct xt_counters __user * counters;
-  struct ipt_entry entries[0];
+  struct ipt_entry entries[];
 };
 struct ipt_get_entries {
   char name[XT_TABLE_MAXNAMELEN];
   unsigned int size;
-  struct ipt_entry entrytable[0];
+  struct ipt_entry entrytable[];
 };
 static __inline__ struct xt_entry_target * ipt_get_target(struct ipt_entry * e) {
   return(struct xt_entry_target *) ((char *) e + e->target_offset);
diff --git a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/netfilter_ipv6/ip6_tables.h b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/netfilter_ipv6/ip6_tables.h
index b3f426d..22071db 100644
--- a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/netfilter_ipv6/ip6_tables.h
+++ b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/netfilter_ipv6/ip6_tables.h
@@ -133,12 +133,12 @@
   unsigned int underflow[NF_INET_NUMHOOKS];
   unsigned int num_counters;
   struct xt_counters __user * counters;
-  struct ip6t_entry entries[0];
+  struct ip6t_entry entries[];
 };
 struct ip6t_get_entries {
   char name[XT_TABLE_MAXNAMELEN];
   unsigned int size;
-  struct ip6t_entry entrytable[0];
+  struct ip6t_entry entrytable[];
 };
 static __inline__ struct xt_entry_target * ip6t_get_target(struct ip6t_entry * e) {
   return(struct xt_entry_target *) ((char *) e + e->target_offset);
diff --git a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/netlink.h b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/netlink.h
index 77825cc..17d5291 100644
--- a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/netlink.h
+++ b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/netlink.h
@@ -73,6 +73,7 @@
 #define NLM_F_CREATE 0x400
 #define NLM_F_APPEND 0x800
 #define NLM_F_NONREC 0x100
+#define NLM_F_BULK 0x200
 #define NLM_F_CAPPED 0x100
 #define NLM_F_ACK_TLVS 0x200
 #define NLMSG_ALIGNTO 4U
@@ -99,6 +100,8 @@
   NLMSGERR_ATTR_OFFS,
   NLMSGERR_ATTR_COOKIE,
   NLMSGERR_ATTR_POLICY,
+  NLMSGERR_ATTR_MISS_TYPE,
+  NLMSGERR_ATTR_MISS_NEST,
   __NLMSGERR_ATTR_MAX,
   NLMSGERR_ATTR_MAX = __NLMSGERR_ATTR_MAX - 1
 };
diff --git a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/nfs4.h b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/nfs4.h
index 9d614ce..ef860e2 100644
--- a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/nfs4.h
+++ b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/nfs4.h
@@ -45,6 +45,7 @@
 #define NFS4_FH_VOL_RENAME 0x0008
 #define NFS4_OPEN_RESULT_CONFIRM 0x0002
 #define NFS4_OPEN_RESULT_LOCKTYPE_POSIX 0x0004
+#define NFS4_OPEN_RESULT_PRESERVE_UNLINKED 0x0008
 #define NFS4_OPEN_RESULT_MAY_NOTIFY_LOCK 0x0020
 #define NFS4_SHARE_ACCESS_MASK 0x000F
 #define NFS4_SHARE_ACCESS_READ 0x0001
diff --git a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/nl80211.h b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/nl80211.h
index e902178..faff80a 100644
--- a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/nl80211.h
+++ b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/nl80211.h
@@ -185,6 +185,11 @@
   NL80211_CMD_COLOR_CHANGE_COMPLETED,
   NL80211_CMD_SET_FILS_AAD,
   NL80211_CMD_ASSOC_COMEBACK,
+  NL80211_CMD_ADD_LINK,
+  NL80211_CMD_REMOVE_LINK,
+  NL80211_CMD_ADD_LINK_STA,
+  NL80211_CMD_MODIFY_LINK_STA,
+  NL80211_CMD_REMOVE_LINK_STA,
   __NL80211_CMD_AFTER_LAST,
   NL80211_CMD_MAX = __NL80211_CMD_AFTER_LAST - 1
 };
@@ -511,6 +516,17 @@
   NL80211_ATTR_MBSSID_ELEMS,
   NL80211_ATTR_RADAR_BACKGROUND,
   NL80211_ATTR_AP_SETTINGS_FLAGS,
+  NL80211_ATTR_EHT_CAPABILITY,
+  NL80211_ATTR_DISABLE_EHT,
+  NL80211_ATTR_MLO_LINKS,
+  NL80211_ATTR_MLO_LINK_ID,
+  NL80211_ATTR_MLD_ADDR,
+  NL80211_ATTR_MLO_SUPPORT,
+  NL80211_ATTR_MAX_NUM_AKM_SUITES,
+  NL80211_ATTR_EML_CAPABILITY,
+  NL80211_ATTR_MLD_CAPA_AND_OPS,
+  NL80211_ATTR_TX_HW_TIMESTAMP,
+  NL80211_ATTR_RX_HW_TIMESTAMP,
   __NL80211_ATTR_AFTER_LAST,
   NUM_NL80211_ATTR = __NL80211_ATTR_AFTER_LAST,
   NL80211_ATTR_MAX = __NL80211_ATTR_AFTER_LAST - 1
@@ -555,6 +571,8 @@
 #define NL80211_HE_MAX_CAPABILITY_LEN 54
 #define NL80211_MAX_NR_CIPHER_SUITES 5
 #define NL80211_MAX_NR_AKM_SUITES 2
+#define NL80211_EHT_MIN_CAPABILITY_LEN 13
+#define NL80211_EHT_MAX_CAPABILITY_LEN 51
 #define NL80211_MIN_REMAIN_ON_CHANNEL_TIME 10
 #define NL80211_SCAN_RSSI_THOLD_OFF - 300
 #define NL80211_CQM_TXE_MAX_INTVL 1800
@@ -616,6 +634,29 @@
   NL80211_RATE_INFO_HE_RU_ALLOC_996,
   NL80211_RATE_INFO_HE_RU_ALLOC_2x996,
 };
+enum nl80211_eht_gi {
+  NL80211_RATE_INFO_EHT_GI_0_8,
+  NL80211_RATE_INFO_EHT_GI_1_6,
+  NL80211_RATE_INFO_EHT_GI_3_2,
+};
+enum nl80211_eht_ru_alloc {
+  NL80211_RATE_INFO_EHT_RU_ALLOC_26,
+  NL80211_RATE_INFO_EHT_RU_ALLOC_52,
+  NL80211_RATE_INFO_EHT_RU_ALLOC_52P26,
+  NL80211_RATE_INFO_EHT_RU_ALLOC_106,
+  NL80211_RATE_INFO_EHT_RU_ALLOC_106P26,
+  NL80211_RATE_INFO_EHT_RU_ALLOC_242,
+  NL80211_RATE_INFO_EHT_RU_ALLOC_484,
+  NL80211_RATE_INFO_EHT_RU_ALLOC_484P242,
+  NL80211_RATE_INFO_EHT_RU_ALLOC_996,
+  NL80211_RATE_INFO_EHT_RU_ALLOC_996P484,
+  NL80211_RATE_INFO_EHT_RU_ALLOC_996P484P242,
+  NL80211_RATE_INFO_EHT_RU_ALLOC_2x996,
+  NL80211_RATE_INFO_EHT_RU_ALLOC_2x996P484,
+  NL80211_RATE_INFO_EHT_RU_ALLOC_3x996,
+  NL80211_RATE_INFO_EHT_RU_ALLOC_3x996P484,
+  NL80211_RATE_INFO_EHT_RU_ALLOC_4x996,
+};
 enum nl80211_rate_info {
   __NL80211_RATE_INFO_INVALID,
   NL80211_RATE_INFO_BITRATE,
@@ -635,6 +676,11 @@
   NL80211_RATE_INFO_HE_GI,
   NL80211_RATE_INFO_HE_DCM,
   NL80211_RATE_INFO_HE_RU_ALLOC,
+  NL80211_RATE_INFO_320_MHZ_WIDTH,
+  NL80211_RATE_INFO_EHT_MCS,
+  NL80211_RATE_INFO_EHT_NSS,
+  NL80211_RATE_INFO_EHT_GI,
+  NL80211_RATE_INFO_EHT_RU_ALLOC,
   __NL80211_RATE_INFO_AFTER_LAST,
   NL80211_RATE_INFO_MAX = __NL80211_RATE_INFO_AFTER_LAST - 1
 };
@@ -754,6 +800,10 @@
   NL80211_BAND_IFTYPE_ATTR_HE_CAP_PPE,
   NL80211_BAND_IFTYPE_ATTR_HE_6GHZ_CAPA,
   NL80211_BAND_IFTYPE_ATTR_VENDOR_ELEMS,
+  NL80211_BAND_IFTYPE_ATTR_EHT_CAP_MAC,
+  NL80211_BAND_IFTYPE_ATTR_EHT_CAP_PHY,
+  NL80211_BAND_IFTYPE_ATTR_EHT_CAP_MCS_SET,
+  NL80211_BAND_IFTYPE_ATTR_EHT_CAP_PPE,
   __NL80211_BAND_IFTYPE_ATTR_AFTER_LAST,
   NL80211_BAND_IFTYPE_ATTR_MAX = __NL80211_BAND_IFTYPE_ATTR_AFTER_LAST - 1
 };
@@ -810,6 +860,8 @@
   NL80211_FREQUENCY_ATTR_4MHZ,
   NL80211_FREQUENCY_ATTR_8MHZ,
   NL80211_FREQUENCY_ATTR_16MHZ,
+  NL80211_FREQUENCY_ATTR_NO_320MHZ,
+  NL80211_FREQUENCY_ATTR_NO_EHT,
   __NL80211_FREQUENCY_ATTR_AFTER_LAST,
   NL80211_FREQUENCY_ATTR_MAX = __NL80211_FREQUENCY_ATTR_AFTER_LAST - 1
 };
@@ -878,6 +930,7 @@
   NL80211_RRF_NO_80MHZ = 1 << 15,
   NL80211_RRF_NO_160MHZ = 1 << 16,
   NL80211_RRF_NO_HE = 1 << 17,
+  NL80211_RRF_NO_320MHZ = 1 << 18,
 };
 #define NL80211_RRF_PASSIVE_SCAN NL80211_RRF_NO_IR
 #define NL80211_RRF_NO_IBSS NL80211_RRF_NO_IR
@@ -1033,6 +1086,7 @@
   NL80211_CHAN_WIDTH_4,
   NL80211_CHAN_WIDTH_8,
   NL80211_CHAN_WIDTH_16,
+  NL80211_CHAN_WIDTH_320,
 };
 enum nl80211_bss_scan_width {
   NL80211_BSS_CHAN_WIDTH_20,
@@ -1063,6 +1117,8 @@
   NL80211_BSS_PARENT_BSSID,
   NL80211_BSS_CHAIN_SIGNAL,
   NL80211_BSS_FREQUENCY_OFFSET,
+  NL80211_BSS_MLO_LINK_ID,
+  NL80211_BSS_MLD_ADDR,
   __NL80211_BSS_AFTER_LAST,
   NL80211_BSS_MAX = __NL80211_BSS_AFTER_LAST - 1
 };
@@ -1475,6 +1531,7 @@
   NL80211_EXT_FEATURE_BSS_COLOR,
   NL80211_EXT_FEATURE_FILS_CRYPTO_OFFLOAD,
   NL80211_EXT_FEATURE_RADAR_BACKGROUND,
+  NL80211_EXT_FEATURE_POWERED_ADDR_CHANGE,
   NUM_NL80211_EXT_FEATURES,
   MAX_NL80211_EXT_FEATURES = NUM_NL80211_EXT_FEATURES - 1
 };
diff --git a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/nvme_ioctl.h b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/nvme_ioctl.h
index f2a328e..388e83f 100644
--- a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/nvme_ioctl.h
+++ b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/nvme_ioctl.h
@@ -63,7 +63,10 @@
   __u64 metadata;
   __u64 addr;
   __u32 metadata_len;
-  __u32 data_len;
+  union {
+    __u32 data_len;
+    __u32 vec_cnt;
+  };
   __u32 cdw10;
   __u32 cdw11;
   __u32 cdw12;
@@ -74,6 +77,26 @@
   __u32 rsvd2;
   __u64 result;
 };
+struct nvme_uring_cmd {
+  __u8 opcode;
+  __u8 flags;
+  __u16 rsvd1;
+  __u32 nsid;
+  __u32 cdw2;
+  __u32 cdw3;
+  __u64 metadata;
+  __u64 addr;
+  __u32 metadata_len;
+  __u32 data_len;
+  __u32 cdw10;
+  __u32 cdw11;
+  __u32 cdw12;
+  __u32 cdw13;
+  __u32 cdw14;
+  __u32 cdw15;
+  __u32 timeout_ms;
+  __u32 rsvd2;
+};
 #define nvme_admin_cmd nvme_passthru_cmd
 #define NVME_IOCTL_ID _IO('N', 0x40)
 #define NVME_IOCTL_ADMIN_CMD _IOWR('N', 0x41, struct nvme_admin_cmd)
@@ -84,4 +107,9 @@
 #define NVME_IOCTL_RESCAN _IO('N', 0x46)
 #define NVME_IOCTL_ADMIN64_CMD _IOWR('N', 0x47, struct nvme_passthru_cmd64)
 #define NVME_IOCTL_IO64_CMD _IOWR('N', 0x48, struct nvme_passthru_cmd64)
+#define NVME_IOCTL_IO64_CMD_VEC _IOWR('N', 0x49, struct nvme_passthru_cmd64)
+#define NVME_URING_CMD_IO _IOWR('N', 0x80, struct nvme_uring_cmd)
+#define NVME_URING_CMD_IO_VEC _IOWR('N', 0x81, struct nvme_uring_cmd)
+#define NVME_URING_CMD_ADMIN _IOWR('N', 0x82, struct nvme_uring_cmd)
+#define NVME_URING_CMD_ADMIN_VEC _IOWR('N', 0x83, struct nvme_uring_cmd)
 #endif
diff --git a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/omap3isp.h b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/omap3isp.h
index d2eceb7..53345e3 100644
--- a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/omap3isp.h
+++ b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/omap3isp.h
@@ -89,10 +89,11 @@
 struct omap3isp_stat_data {
   struct timeval ts;
   void __user * buf;
-  __u32 buf_size;
+  __struct_group(, frame,, __u32 buf_size;
   __u16 frame_number;
   __u16 cur_frame;
   __u16 config_counter;
+ );
 };
 #define OMAP3ISP_HIST_BINS_32 0
 #define OMAP3ISP_HIST_BINS_64 1
diff --git a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/openvswitch.h b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/openvswitch.h
index 1f8ae17..c44e950 100644
--- a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/openvswitch.h
+++ b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/openvswitch.h
@@ -44,6 +44,7 @@
   OVS_DP_ATTR_PAD,
   OVS_DP_ATTR_MASKS_CACHE_SIZE,
   OVS_DP_ATTR_PER_CPU_PIDS,
+  OVS_DP_ATTR_IFINDEX,
   __OVS_DP_ATTR_MAX
 };
 #define OVS_DP_ATTR_MAX (__OVS_DP_ATTR_MAX - 1)
@@ -190,6 +191,10 @@
   OVS_KEY_ATTR_CT_ORIG_TUPLE_IPV4,
   OVS_KEY_ATTR_CT_ORIG_TUPLE_IPV6,
   OVS_KEY_ATTR_NSH,
+  OVS_KEY_ATTR_PACKET_TYPE,
+  OVS_KEY_ATTR_ND_EXTENSIONS,
+  OVS_KEY_ATTR_TUNNEL_INFO,
+  OVS_KEY_ATTR_IPV6_EXTHDRS,
   __OVS_KEY_ATTR_MAX
 };
 #define OVS_KEY_ATTR_MAX (__OVS_KEY_ATTR_MAX - 1)
@@ -245,6 +250,9 @@
   __u8 ipv6_hlimit;
   __u8 ipv6_frag;
 };
+struct ovs_key_ipv6_exthdrs {
+  __u16 hdrs;
+};
 struct ovs_key_tcp {
   __be16 tcp_src;
   __be16 tcp_dst;
diff --git a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/pci_regs.h b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/pci_regs.h
index 46612da..87549aa 100644
--- a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/pci_regs.h
+++ b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/pci_regs.h
@@ -525,6 +525,7 @@
 #define PCI_EXP_SLTCTL_PWR_OFF 0x0400
 #define PCI_EXP_SLTCTL_EIC 0x0800
 #define PCI_EXP_SLTCTL_DLLSCE 0x1000
+#define PCI_EXP_SLTCTL_ASPL_DISABLE 0x2000
 #define PCI_EXP_SLTCTL_IBPD_DISABLE 0x4000
 #define PCI_EXP_SLTSTA 0x1a
 #define PCI_EXP_SLTSTA_ABP 0x0001
@@ -634,7 +635,8 @@
 #define PCI_EXT_CAP_ID_DVSEC 0x23
 #define PCI_EXT_CAP_ID_DLF 0x25
 #define PCI_EXT_CAP_ID_PL_16GT 0x26
-#define PCI_EXT_CAP_ID_MAX PCI_EXT_CAP_ID_PL_16GT
+#define PCI_EXT_CAP_ID_DOE 0x2E
+#define PCI_EXT_CAP_ID_MAX PCI_EXT_CAP_ID_DOE
 #define PCI_EXT_CAP_DSN_SIZEOF 12
 #define PCI_EXT_CAP_MCAST_ENDPOINT_SIZEOF 40
 #define PCI_ERR_UNCOR_STATUS 0x04
@@ -937,4 +939,25 @@
 #define PCI_PL_16GT_LE_CTRL_DSP_TX_PRESET_MASK 0x0000000F
 #define PCI_PL_16GT_LE_CTRL_USP_TX_PRESET_MASK 0x000000F0
 #define PCI_PL_16GT_LE_CTRL_USP_TX_PRESET_SHIFT 4
+#define PCI_DOE_CAP 0x04
+#define PCI_DOE_CAP_INT_SUP 0x00000001
+#define PCI_DOE_CAP_INT_MSG_NUM 0x00000ffe
+#define PCI_DOE_CTRL 0x08
+#define PCI_DOE_CTRL_ABORT 0x00000001
+#define PCI_DOE_CTRL_INT_EN 0x00000002
+#define PCI_DOE_CTRL_GO 0x80000000
+#define PCI_DOE_STATUS 0x0c
+#define PCI_DOE_STATUS_BUSY 0x00000001
+#define PCI_DOE_STATUS_INT_STATUS 0x00000002
+#define PCI_DOE_STATUS_ERROR 0x00000004
+#define PCI_DOE_STATUS_DATA_OBJECT_READY 0x80000000
+#define PCI_DOE_WRITE 0x10
+#define PCI_DOE_READ 0x14
+#define PCI_DOE_DATA_OBJECT_HEADER_1_VID 0x0000ffff
+#define PCI_DOE_DATA_OBJECT_HEADER_1_TYPE 0x00ff0000
+#define PCI_DOE_DATA_OBJECT_HEADER_2_LENGTH 0x0003ffff
+#define PCI_DOE_DATA_OBJECT_DISC_REQ_3_INDEX 0x000000ff
+#define PCI_DOE_DATA_OBJECT_DISC_RSP_3_VID 0x0000ffff
+#define PCI_DOE_DATA_OBJECT_DISC_RSP_3_PROTOCOL 0x00ff0000
+#define PCI_DOE_DATA_OBJECT_DISC_RSP_3_NEXT_INDEX 0xff000000
 #endif
diff --git a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/perf_event.h b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/perf_event.h
index b022586..8f081ed 100644
--- a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/perf_event.h
+++ b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/perf_event.h
@@ -108,7 +108,6 @@
   PERF_SAMPLE_CODE_PAGE_SIZE = 1U << 23,
   PERF_SAMPLE_WEIGHT_STRUCT = 1U << 24,
   PERF_SAMPLE_MAX = 1U << 25,
-  __PERF_SAMPLE_CALLCHAIN_EARLY = 1ULL << 63,
 };
 #define PERF_SAMPLE_WEIGHT_TYPE (PERF_SAMPLE_WEIGHT | PERF_SAMPLE_WEIGHT_STRUCT)
 enum perf_branch_sample_type_shift {
@@ -130,6 +129,7 @@
   PERF_SAMPLE_BRANCH_NO_CYCLES_SHIFT = 15,
   PERF_SAMPLE_BRANCH_TYPE_SAVE_SHIFT = 16,
   PERF_SAMPLE_BRANCH_HW_INDEX_SHIFT = 17,
+  PERF_SAMPLE_BRANCH_PRIV_SAVE_SHIFT = 18,
   PERF_SAMPLE_BRANCH_MAX_SHIFT
 };
 enum perf_branch_sample_type {
@@ -151,6 +151,7 @@
   PERF_SAMPLE_BRANCH_NO_CYCLES = 1U << PERF_SAMPLE_BRANCH_NO_CYCLES_SHIFT,
   PERF_SAMPLE_BRANCH_TYPE_SAVE = 1U << PERF_SAMPLE_BRANCH_TYPE_SAVE_SHIFT,
   PERF_SAMPLE_BRANCH_HW_INDEX = 1U << PERF_SAMPLE_BRANCH_HW_INDEX_SHIFT,
+  PERF_SAMPLE_BRANCH_PRIV_SAVE = 1U << PERF_SAMPLE_BRANCH_PRIV_SAVE_SHIFT,
   PERF_SAMPLE_BRANCH_MAX = 1U << PERF_SAMPLE_BRANCH_MAX_SHIFT,
 };
 enum {
@@ -165,8 +166,42 @@
   PERF_BR_SYSRET = 8,
   PERF_BR_COND_CALL = 9,
   PERF_BR_COND_RET = 10,
+  PERF_BR_ERET = 11,
+  PERF_BR_IRQ = 12,
+  PERF_BR_SERROR = 13,
+  PERF_BR_NO_TX = 14,
+  PERF_BR_EXTEND_ABI = 15,
   PERF_BR_MAX,
 };
+enum {
+  PERF_BR_SPEC_NA = 0,
+  PERF_BR_SPEC_WRONG_PATH = 1,
+  PERF_BR_NON_SPEC_CORRECT_PATH = 2,
+  PERF_BR_SPEC_CORRECT_PATH = 3,
+  PERF_BR_SPEC_MAX,
+};
+enum {
+  PERF_BR_NEW_FAULT_ALGN = 0,
+  PERF_BR_NEW_FAULT_DATA = 1,
+  PERF_BR_NEW_FAULT_INST = 2,
+  PERF_BR_NEW_ARCH_1 = 3,
+  PERF_BR_NEW_ARCH_2 = 4,
+  PERF_BR_NEW_ARCH_3 = 5,
+  PERF_BR_NEW_ARCH_4 = 6,
+  PERF_BR_NEW_ARCH_5 = 7,
+  PERF_BR_NEW_MAX,
+};
+enum {
+  PERF_BR_PRIV_UNKNOWN = 0,
+  PERF_BR_PRIV_USER = 1,
+  PERF_BR_PRIV_KERNEL = 2,
+  PERF_BR_PRIV_HV = 3,
+};
+#define PERF_BR_ARM64_FIQ PERF_BR_NEW_ARCH_1
+#define PERF_BR_ARM64_DEBUG_HALT PERF_BR_NEW_ARCH_2
+#define PERF_BR_ARM64_DEBUG_EXIT PERF_BR_NEW_ARCH_3
+#define PERF_BR_ARM64_DEBUG_INST PERF_BR_NEW_ARCH_4
+#define PERF_BR_ARM64_DEBUG_DATA PERF_BR_NEW_ARCH_5
 #define PERF_SAMPLE_BRANCH_PLM_ALL (PERF_SAMPLE_BRANCH_USER | PERF_SAMPLE_BRANCH_KERNEL | PERF_SAMPLE_BRANCH_HV)
 enum perf_sample_regs_abi {
   PERF_SAMPLE_REGS_ABI_NONE = 0,
@@ -191,7 +226,8 @@
   PERF_FORMAT_TOTAL_TIME_RUNNING = 1U << 1,
   PERF_FORMAT_ID = 1U << 2,
   PERF_FORMAT_GROUP = 1U << 3,
-  PERF_FORMAT_MAX = 1U << 4,
+  PERF_FORMAT_LOST = 1U << 4,
+  PERF_FORMAT_MAX = 1U << 5,
 };
 #define PERF_ATTR_SIZE_VER0 64
 #define PERF_ATTR_SIZE_VER1 72
@@ -244,7 +280,7 @@
 struct perf_event_query_bpf {
   __u32 ids_len;
   __u32 prog_cnt;
-  __u32 ids[0];
+  __u32 ids[];
 };
 #define PERF_EVENT_IOC_ENABLE _IO('$', 0)
 #define PERF_EVENT_IOC_DISABLE _IO('$', 1)
@@ -432,6 +468,8 @@
 #define PERF_MEM_LVLNUM_L2 0x02
 #define PERF_MEM_LVLNUM_L3 0x03
 #define PERF_MEM_LVLNUM_L4 0x04
+#define PERF_MEM_LVLNUM_CXL 0x09
+#define PERF_MEM_LVLNUM_IO 0x0a
 #define PERF_MEM_LVLNUM_ANY_CACHE 0x0b
 #define PERF_MEM_LVLNUM_LFB 0x0c
 #define PERF_MEM_LVLNUM_RAM 0x0d
@@ -445,6 +483,7 @@
 #define PERF_MEM_SNOOP_HITM 0x10
 #define PERF_MEM_SNOOP_SHIFT 19
 #define PERF_MEM_SNOOPX_FWD 0x01
+#define PERF_MEM_SNOOPX_PEER 0x02
 #define PERF_MEM_SNOOPX_SHIFT 38
 #define PERF_MEM_LOCK_NA 0x01
 #define PERF_MEM_LOCK_LOCKED 0x02
@@ -470,7 +509,7 @@
 struct perf_branch_entry {
   __u64 from;
   __u64 to;
-  __u64 mispred : 1, predicted : 1, in_tx : 1, abort : 1, cycles : 16, type : 4, reserved : 40;
+  __u64 mispred : 1, predicted : 1, in_tx : 1, abort : 1, cycles : 16, type : 4, spec : 2, new_type : 4, priv : 3, reserved : 31;
 };
 union perf_sample_weight {
   __u64 full;
diff --git a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/pkt_cls.h b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/pkt_cls.h
index 9fd89e0..876cb73 100644
--- a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/pkt_cls.h
+++ b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/pkt_cls.h
@@ -199,7 +199,7 @@
   short offoff;
   short hoff;
   __be32 hmask;
-  struct tc_u32_key keys[0];
+  struct tc_u32_key keys[];
 };
 struct tc_u32_mark {
   __u32 val;
@@ -209,7 +209,7 @@
 struct tc_u32_pcnt {
   __u64 rcnt;
   __u64 rhit;
-  __u64 kcnts[0];
+  __u64 kcnts[];
 };
 #define TC_U32_TERMINAL 1
 #define TC_U32_OFFSET 2
@@ -459,6 +459,10 @@
   TCA_FLOWER_KEY_MPLS_OPTS,
   TCA_FLOWER_KEY_HASH,
   TCA_FLOWER_KEY_HASH_MASK,
+  TCA_FLOWER_KEY_NUM_OF_VLANS,
+  TCA_FLOWER_KEY_PPPOE_SID,
+  TCA_FLOWER_KEY_PPP_PROTO,
+  TCA_FLOWER_KEY_L2TPV3_SID,
   __TCA_FLOWER_MAX,
 };
 #define TCA_FLOWER_MAX (__TCA_FLOWER_MAX - 1)
@@ -476,6 +480,7 @@
   TCA_FLOWER_KEY_ENC_OPTS_GENEVE,
   TCA_FLOWER_KEY_ENC_OPTS_VXLAN,
   TCA_FLOWER_KEY_ENC_OPTS_ERSPAN,
+  TCA_FLOWER_KEY_ENC_OPTS_GTP,
   __TCA_FLOWER_KEY_ENC_OPTS_MAX,
 };
 #define TCA_FLOWER_KEY_ENC_OPTS_MAX (__TCA_FLOWER_KEY_ENC_OPTS_MAX - 1)
@@ -503,6 +508,13 @@
 };
 #define TCA_FLOWER_KEY_ENC_OPT_ERSPAN_MAX (__TCA_FLOWER_KEY_ENC_OPT_ERSPAN_MAX - 1)
 enum {
+  TCA_FLOWER_KEY_ENC_OPT_GTP_UNSPEC,
+  TCA_FLOWER_KEY_ENC_OPT_GTP_PDU_TYPE,
+  TCA_FLOWER_KEY_ENC_OPT_GTP_QFI,
+  __TCA_FLOWER_KEY_ENC_OPT_GTP_MAX,
+};
+#define TCA_FLOWER_KEY_ENC_OPT_GTP_MAX (__TCA_FLOWER_KEY_ENC_OPT_GTP_MAX - 1)
+enum {
   TCA_FLOWER_KEY_MPLS_OPTS_UNSPEC,
   TCA_FLOWER_KEY_MPLS_OPTS_LSE,
   __TCA_FLOWER_KEY_MPLS_OPTS_MAX,
diff --git a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/pkt_sched.h b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/pkt_sched.h
index e298b74..c31b8bb 100644
--- a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/pkt_sched.h
+++ b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/pkt_sched.h
@@ -924,6 +924,13 @@
 #define TCA_TAPRIO_ATTR_FLAG_TXTIME_ASSIST _BITUL(0)
 #define TCA_TAPRIO_ATTR_FLAG_FULL_OFFLOAD _BITUL(1)
 enum {
+  TCA_TAPRIO_TC_ENTRY_UNSPEC,
+  TCA_TAPRIO_TC_ENTRY_INDEX,
+  TCA_TAPRIO_TC_ENTRY_MAX_SDU,
+  __TCA_TAPRIO_TC_ENTRY_CNT,
+  TCA_TAPRIO_TC_ENTRY_MAX = (__TCA_TAPRIO_TC_ENTRY_CNT - 1)
+};
+enum {
   TCA_TAPRIO_ATTR_UNSPEC,
   TCA_TAPRIO_ATTR_PRIOMAP,
   TCA_TAPRIO_ATTR_SCHED_ENTRY_LIST,
@@ -936,6 +943,7 @@
   TCA_TAPRIO_ATTR_SCHED_CYCLE_TIME_EXTENSION,
   TCA_TAPRIO_ATTR_FLAGS,
   TCA_TAPRIO_ATTR_TXTIME_DELAY,
+  TCA_TAPRIO_ATTR_TC_ENTRY,
   __TCA_TAPRIO_ATTR_MAX,
 };
 #define TCA_TAPRIO_ATTR_MAX (__TCA_TAPRIO_ATTR_MAX - 1)
diff --git a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/prctl.h b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/prctl.h
index 9b4c695..1dac726 100644
--- a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/prctl.h
+++ b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/prctl.h
@@ -179,6 +179,11 @@
 #define PR_SCHED_CORE_SCOPE_THREAD 0
 #define PR_SCHED_CORE_SCOPE_THREAD_GROUP 1
 #define PR_SCHED_CORE_SCOPE_PROCESS_GROUP 2
+#define PR_SME_SET_VL 63
+#define PR_SME_SET_VL_ONEXEC (1 << 18)
+#define PR_SME_GET_VL 64
+#define PR_SME_VL_LEN_MASK 0xffff
+#define PR_SME_VL_INHERIT (1 << 17)
 #define PR_SET_VMA 0x53564d41
 #define PR_SET_VMA_ANON_NAME 0
 #endif
diff --git a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/psci.h b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/psci.h
index bc522e7..4dead17 100644
--- a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/psci.h
+++ b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/psci.h
@@ -39,11 +39,23 @@
 #define PSCI_0_2_FN64_MIGRATE PSCI_0_2_FN64(5)
 #define PSCI_0_2_FN64_MIGRATE_INFO_UP_CPU PSCI_0_2_FN64(7)
 #define PSCI_1_0_FN_PSCI_FEATURES PSCI_0_2_FN(10)
+#define PSCI_1_0_FN_CPU_FREEZE PSCI_0_2_FN(11)
+#define PSCI_1_0_FN_CPU_DEFAULT_SUSPEND PSCI_0_2_FN(12)
+#define PSCI_1_0_FN_NODE_HW_STATE PSCI_0_2_FN(13)
 #define PSCI_1_0_FN_SYSTEM_SUSPEND PSCI_0_2_FN(14)
 #define PSCI_1_0_FN_SET_SUSPEND_MODE PSCI_0_2_FN(15)
+#define PSCI_1_0_FN_STAT_RESIDENCY PSCI_0_2_FN(16)
+#define PSCI_1_0_FN_STAT_COUNT PSCI_0_2_FN(17)
 #define PSCI_1_1_FN_SYSTEM_RESET2 PSCI_0_2_FN(18)
+#define PSCI_1_1_FN_MEM_PROTECT PSCI_0_2_FN(19)
+#define PSCI_1_1_FN_MEM_PROTECT_CHECK_RANGE PSCI_0_2_FN(19)
+#define PSCI_1_0_FN64_CPU_DEFAULT_SUSPEND PSCI_0_2_FN64(12)
+#define PSCI_1_0_FN64_NODE_HW_STATE PSCI_0_2_FN64(13)
 #define PSCI_1_0_FN64_SYSTEM_SUSPEND PSCI_0_2_FN64(14)
+#define PSCI_1_0_FN64_STAT_RESIDENCY PSCI_0_2_FN64(16)
+#define PSCI_1_0_FN64_STAT_COUNT PSCI_0_2_FN64(17)
 #define PSCI_1_1_FN64_SYSTEM_RESET2 PSCI_0_2_FN64(18)
+#define PSCI_1_1_FN64_MEM_PROTECT_CHECK_RANGE PSCI_0_2_FN64(19)
 #define PSCI_0_2_POWER_STATE_ID_MASK 0xffff
 #define PSCI_0_2_POWER_STATE_ID_SHIFT 0
 #define PSCI_0_2_POWER_STATE_TYPE_SHIFT 16
@@ -60,6 +72,8 @@
 #define PSCI_0_2_TOS_UP_MIGRATE 0
 #define PSCI_0_2_TOS_UP_NO_MIGRATE 1
 #define PSCI_0_2_TOS_MP 2
+#define PSCI_1_1_RESET_TYPE_SYSTEM_WARM_RESET 0
+#define PSCI_1_1_RESET_TYPE_VENDOR_START 0x80000000U
 #define PSCI_VERSION_MAJOR_SHIFT 16
 #define PSCI_VERSION_MINOR_MASK ((1U << PSCI_VERSION_MAJOR_SHIFT) - 1)
 #define PSCI_VERSION_MAJOR_MASK ~PSCI_VERSION_MINOR_MASK
diff --git a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/psp-sev.h b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/psp-sev.h
index 6c4f73d..8c9ec80 100644
--- a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/psp-sev.h
+++ b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/psp-sev.h
@@ -66,37 +66,37 @@
   __u32 flags;
   __u8 build;
   __u32 guest_count;
-} __packed;
+} __attribute__((__packed__));
 #define SEV_STATUS_FLAGS_CONFIG_ES 0x0100
 struct sev_user_data_pek_csr {
   __u64 address;
   __u32 length;
-} __packed;
+} __attribute__((__packed__));
 struct sev_user_data_pek_cert_import {
   __u64 pek_cert_address;
   __u32 pek_cert_len;
   __u64 oca_cert_address;
   __u32 oca_cert_len;
-} __packed;
+} __attribute__((__packed__));
 struct sev_user_data_pdh_cert_export {
   __u64 pdh_cert_address;
   __u32 pdh_cert_len;
   __u64 cert_chain_address;
   __u32 cert_chain_len;
-} __packed;
+} __attribute__((__packed__));
 struct sev_user_data_get_id {
   __u8 socket1[64];
   __u8 socket2[64];
-} __packed;
+} __attribute__((__packed__));
 struct sev_user_data_get_id2 {
   __u64 address;
   __u32 length;
-} __packed;
+} __attribute__((__packed__));
 struct sev_issue_cmd {
   __u32 cmd;
   __u64 data;
   __u32 error;
-} __packed;
+} __attribute__((__packed__));
 #define SEV_IOC_TYPE 'S'
 #define SEV_ISSUE_CMD _IOWR(SEV_IOC_TYPE, 0x0, struct sev_issue_cmd)
 #endif
diff --git a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/qrtr.h b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/qrtr.h
index c0a4c72..ee56aca 100644
--- a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/qrtr.h
+++ b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/qrtr.h
@@ -54,5 +54,5 @@
       __le32 port;
     } client;
   };
-} __packed;
+} __attribute__((__packed__));
 #endif
diff --git a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/raid/md_p.h b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/raid/md_p.h
index 4ad444a..dc3084a 100644
--- a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/raid/md_p.h
+++ b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/raid/md_p.h
@@ -168,7 +168,7 @@
   __le32 sb_csum;
   __le32 max_dev;
   __u8 pad3[64 - 32];
-  __le16 dev_roles[0];
+  __le16 dev_roles[];
 };
 #define MD_FEATURE_BITMAP_OFFSET 1
 #define MD_FEATURE_RECOVERY_OFFSET 2
diff --git a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/random.h b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/random.h
index 2d3cfef..8df411b 100644
--- a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/random.h
+++ b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/random.h
@@ -31,7 +31,7 @@
 struct rand_pool_info {
   int entropy_count;
   int buf_size;
-  __u32 buf[0];
+  __u32 buf[];
 };
 #define GRND_NONBLOCK 0x0001
 #define GRND_RANDOM 0x0002
diff --git a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/reiserfs_xattr.h b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/reiserfs_xattr.h
index 36d31f6..16a7a08 100644
--- a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/reiserfs_xattr.h
+++ b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/reiserfs_xattr.h
@@ -27,6 +27,6 @@
 struct reiserfs_security_handle {
   const char * name;
   void * value;
-  size_t length;
+  __kernel_size_t length;
 };
 #endif
diff --git a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/rfkill.h b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/rfkill.h
index 6020baf..b90e67c 100644
--- a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/rfkill.h
+++ b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/rfkill.h
@@ -63,4 +63,6 @@
 #define RFKILL_IOC_MAGIC 'R'
 #define RFKILL_IOC_NOINPUT 1
 #define RFKILL_IOCTL_NOINPUT _IO(RFKILL_IOC_MAGIC, RFKILL_IOC_NOINPUT)
+#define RFKILL_IOC_MAX_SIZE 2
+#define RFKILL_IOCTL_MAX_SIZE _IOW(RFKILL_IOC_MAGIC, RFKILL_IOC_MAX_SIZE, __u32)
 #endif
diff --git a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/rkisp1-config.h b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/rkisp1-config.h
index cea14cd..7175c23 100644
--- a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/rkisp1-config.h
+++ b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/rkisp1-config.h
@@ -67,6 +67,37 @@
 #define RKISP1_CIF_ISP_HISTOGRAM_WEIGHT_GRIDS_SIZE_V12 81
 #define RKISP1_CIF_ISP_HISTOGRAM_WEIGHT_GRIDS_SIZE RKISP1_CIF_ISP_HISTOGRAM_WEIGHT_GRIDS_SIZE_V12
 #define RKISP1_CIF_ISP_DPCC_METHODS_MAX 3
+#define RKISP1_CIF_ISP_DPCC_MODE_STAGE1_ENABLE (1U << 2)
+#define RKISP1_CIF_ISP_DPCC_OUTPUT_MODE_STAGE1_INCL_G_CENTER (1U << 0)
+#define RKISP1_CIF_ISP_DPCC_OUTPUT_MODE_STAGE1_INCL_RB_CENTER (1U << 1)
+#define RKISP1_CIF_ISP_DPCC_OUTPUT_MODE_STAGE1_G_3X3 (1U << 2)
+#define RKISP1_CIF_ISP_DPCC_OUTPUT_MODE_STAGE1_RB_3X3 (1U << 3)
+#define RKISP1_CIF_ISP_DPCC_SET_USE_STAGE1_USE_SET(n) ((n) << 0)
+#define RKISP1_CIF_ISP_DPCC_SET_USE_STAGE1_USE_FIX_SET (1U << 3)
+#define RKISP1_CIF_ISP_DPCC_METHODS_SET_PG_GREEN_ENABLE (1U << 0)
+#define RKISP1_CIF_ISP_DPCC_METHODS_SET_LC_GREEN_ENABLE (1U << 1)
+#define RKISP1_CIF_ISP_DPCC_METHODS_SET_RO_GREEN_ENABLE (1U << 2)
+#define RKISP1_CIF_ISP_DPCC_METHODS_SET_RND_GREEN_ENABLE (1U << 3)
+#define RKISP1_CIF_ISP_DPCC_METHODS_SET_RG_GREEN_ENABLE (1U << 4)
+#define RKISP1_CIF_ISP_DPCC_METHODS_SET_PG_RED_BLUE_ENABLE (1U << 8)
+#define RKISP1_CIF_ISP_DPCC_METHODS_SET_LC_RED_BLUE_ENABLE (1U << 9)
+#define RKISP1_CIF_ISP_DPCC_METHODS_SET_RO_RED_BLUE_ENABLE (1U << 10)
+#define RKISP1_CIF_ISP_DPCC_METHODS_SET_RND_RED_BLUE_ENABLE (1U << 11)
+#define RKISP1_CIF_ISP_DPCC_METHODS_SET_RG_RED_BLUE_ENABLE (1U << 12)
+#define RKISP1_CIF_ISP_DPCC_LINE_THRESH_G(v) ((v) << 0)
+#define RKISP1_CIF_ISP_DPCC_LINE_THRESH_RB(v) ((v) << 8)
+#define RKISP1_CIF_ISP_DPCC_LINE_MAD_FAC_G(v) ((v) << 0)
+#define RKISP1_CIF_ISP_DPCC_LINE_MAD_FAC_RB(v) ((v) << 8)
+#define RKISP1_CIF_ISP_DPCC_PG_FAC_G(v) ((v) << 0)
+#define RKISP1_CIF_ISP_DPCC_PG_FAC_RB(v) ((v) << 8)
+#define RKISP1_CIF_ISP_DPCC_RND_THRESH_G(v) ((v) << 0)
+#define RKISP1_CIF_ISP_DPCC_RND_THRESH_RB(v) ((v) << 8)
+#define RKISP1_CIF_ISP_DPCC_RG_FAC_G(v) ((v) << 0)
+#define RKISP1_CIF_ISP_DPCC_RG_FAC_RB(v) ((v) << 8)
+#define RKISP1_CIF_ISP_DPCC_RO_LIMITS_n_G(n,v) ((v) << ((n) * 4))
+#define RKISP1_CIF_ISP_DPCC_RO_LIMITS_n_RB(n,v) ((v) << ((n) * 4 + 2))
+#define RKISP1_CIF_ISP_DPCC_RND_OFFS_n_G(n,v) ((v) << ((n) * 4))
+#define RKISP1_CIF_ISP_DPCC_RND_OFFS_n_RB(n,v) ((v) << ((n) * 4 + 2))
 #define RKISP1_CIF_ISP_DPF_MAX_NLF_COEFFS 17
 #define RKISP1_CIF_ISP_DPF_MAX_SPATIAL_COEFFS 6
 #define RKISP1_CIF_ISP_STAT_AWB (1U << 0)
diff --git a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/romfs_fs.h b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/romfs_fs.h
index 8e98714..bffbaf9 100644
--- a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/romfs_fs.h
+++ b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/romfs_fs.h
@@ -35,14 +35,14 @@
   __be32 word1;
   __be32 size;
   __be32 checksum;
-  char name[0];
+  char name[];
 };
 struct romfs_inode {
   __be32 next;
   __be32 spec;
   __be32 size;
   __be32 checksum;
-  char name[0];
+  char name[];
 };
 #define ROMFH_TYPE 7
 #define ROMFH_HRD 0
diff --git a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/rpmsg.h b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/rpmsg.h
index c5b5a76..9ceccdd 100644
--- a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/rpmsg.h
+++ b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/rpmsg.h
@@ -28,4 +28,6 @@
 };
 #define RPMSG_CREATE_EPT_IOCTL _IOW(0xb5, 0x1, struct rpmsg_endpoint_info)
 #define RPMSG_DESTROY_EPT_IOCTL _IO(0xb5, 0x2)
+#define RPMSG_CREATE_DEV_IOCTL _IOW(0xb5, 0x3, struct rpmsg_endpoint_info)
+#define RPMSG_RELEASE_DEV_IOCTL _IOW(0xb5, 0x4, struct rpmsg_endpoint_info)
 #endif
diff --git a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/rseq.h b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/rseq.h
index ba0ceb1..29a9457 100644
--- a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/rseq.h
+++ b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/rseq.h
@@ -47,22 +47,7 @@
 struct rseq {
   __u32 cpu_id_start;
   __u32 cpu_id;
-  union {
-    __u64 ptr64;
-#ifdef __LP64__
-    __u64 ptr;
-#else
-    struct {
-#if defined(__BYTE_ORDER) && __BYTE_ORDER == __BIG_ENDIAN || defined(__BIG_ENDIAN)
-      __u32 padding;
-      __u32 ptr32;
-#else
-      __u32 ptr32;
-      __u32 padding;
-#endif
-    } ptr;
-#endif
-  } rseq_cs;
+  __u64 rseq_cs;
   __u32 flags;
 } __attribute__((aligned(4 * sizeof(__u64))));
 #endif
diff --git a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/rtc.h b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/rtc.h
index cf5f22a..d75bc45 100644
--- a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/rtc.h
+++ b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/rtc.h
@@ -96,7 +96,8 @@
 #define RTC_FEATURE_UPDATE_INTERRUPT 4
 #define RTC_FEATURE_CORRECTION 5
 #define RTC_FEATURE_BACKUP_SWITCH_MODE 6
-#define RTC_FEATURE_CNT 7
+#define RTC_FEATURE_ALARM_WAKEUP_ONLY 7
+#define RTC_FEATURE_CNT 8
 #define RTC_PARAM_FEATURES 0
 #define RTC_PARAM_CORRECTION 1
 #define RTC_PARAM_BACKUP_SWITCH_MODE 2
diff --git a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/rtnetlink.h b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/rtnetlink.h
index 91c3ee4..7201827 100644
--- a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/rtnetlink.h
+++ b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/rtnetlink.h
@@ -131,6 +131,8 @@
 #define RTM_NEWSTATS RTM_NEWSTATS
   RTM_GETSTATS = 94,
 #define RTM_GETSTATS RTM_GETSTATS
+  RTM_SETSTATS,
+#define RTM_SETSTATS RTM_SETSTATS
   RTM_NEWCACHEREPORT = 96,
 #define RTM_NEWCACHEREPORT RTM_NEWCACHEREPORT
   RTM_NEWCHAIN = 100,
@@ -163,6 +165,12 @@
 #define RTM_DELNEXTHOPBUCKET RTM_DELNEXTHOPBUCKET
   RTM_GETNEXTHOPBUCKET,
 #define RTM_GETNEXTHOPBUCKET RTM_GETNEXTHOPBUCKET
+  RTM_NEWTUNNEL = 120,
+#define RTM_NEWTUNNEL RTM_NEWTUNNEL
+  RTM_DELTUNNEL,
+#define RTM_DELTUNNEL RTM_DELTUNNEL
+  RTM_GETTUNNEL,
+#define RTM_GETTUNNEL RTM_GETTUNNEL
   __RTM_MAX,
 #define RTM_MAX (((__RTM_MAX + 3) & ~3) - 1)
 };
@@ -315,7 +323,7 @@
 #define RTNH_DATA(rtnh) ((struct rtattr *) (((char *) (rtnh)) + RTNH_LENGTH(0)))
 struct rtvia {
   __kernel_sa_family_t rtvia_family;
-  __u8 rtvia_addr[0];
+  __u8 rtvia_addr[];
 };
 struct rta_cacheinfo {
   __u32 rta_clntref;
@@ -561,6 +569,10 @@
 #define RTNLGRP_BRVLAN RTNLGRP_BRVLAN
   RTNLGRP_MCTP_IFADDR,
 #define RTNLGRP_MCTP_IFADDR RTNLGRP_MCTP_IFADDR
+  RTNLGRP_TUNNEL,
+#define RTNLGRP_TUNNEL RTNLGRP_TUNNEL
+  RTNLGRP_STATS,
+#define RTNLGRP_STATS RTNLGRP_STATS
   __RTNLGRP_MAX
 };
 #define RTNLGRP_MAX (__RTNLGRP_MAX - 1)
@@ -592,4 +604,5 @@
 #define RTEXT_FILTER_MRP (1 << 4)
 #define RTEXT_FILTER_CFM_CONFIG (1 << 5)
 #define RTEXT_FILTER_CFM_STATUS (1 << 6)
+#define RTEXT_FILTER_MST (1 << 7)
 #endif
diff --git a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/sctp.h b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/sctp.h
index 765d6c9..4bf2412 100644
--- a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/sctp.h
+++ b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/sctp.h
@@ -210,7 +210,7 @@
   __u16 sac_outbound_streams;
   __u16 sac_inbound_streams;
   sctp_assoc_t sac_assoc_id;
-  __u8 sac_info[0];
+  __u8 sac_info[];
 };
 enum sctp_sac_state {
   SCTP_COMM_UP,
@@ -244,7 +244,7 @@
   __u32 sre_length;
   __be16 sre_error;
   sctp_assoc_t sre_assoc_id;
-  __u8 sre_data[0];
+  __u8 sre_data[];
 };
 struct sctp_send_failed {
   __u16 ssf_type;
@@ -253,7 +253,7 @@
   __u32 ssf_error;
   struct sctp_sndrcvinfo ssf_info;
   sctp_assoc_t ssf_assoc_id;
-  __u8 ssf_data[0];
+  __u8 ssf_data[];
 };
 struct sctp_send_failed_event {
   __u16 ssf_type;
@@ -262,7 +262,7 @@
   __u32 ssf_error;
   struct sctp_sndinfo ssfe_info;
   sctp_assoc_t ssf_assoc_id;
-  __u8 ssf_data[0];
+  __u8 ssf_data[];
 };
 enum sctp_ssf_flags {
   SCTP_DATA_UNSENT,
@@ -570,7 +570,7 @@
 struct sctp_getaddrs {
   sctp_assoc_t assoc_id;
   __u32 addr_num;
-  __u8 addrs[0];
+  __u8 addrs[];
 };
 struct sctp_assoc_stats {
   sctp_assoc_t sas_assoc_id;
diff --git a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/seccomp.h b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/seccomp.h
index e58b421..cc506ae 100644
--- a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/seccomp.h
+++ b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/seccomp.h
@@ -32,6 +32,7 @@
 #define SECCOMP_FILTER_FLAG_SPEC_ALLOW (1UL << 2)
 #define SECCOMP_FILTER_FLAG_NEW_LISTENER (1UL << 3)
 #define SECCOMP_FILTER_FLAG_TSYNC_ESRCH (1UL << 4)
+#define SECCOMP_FILTER_FLAG_WAIT_KILLABLE_RECV (1UL << 5)
 #define SECCOMP_RET_KILL_PROCESS 0x80000000U
 #define SECCOMP_RET_KILL_THREAD 0x00000000U
 #define SECCOMP_RET_KILL SECCOMP_RET_KILL_THREAD
diff --git a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/sed-opal.h b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/sed-opal.h
index a20197a..f7ac9bd 100644
--- a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/sed-opal.h
+++ b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/sed-opal.h
@@ -112,6 +112,16 @@
   __u64 flags;
   __u64 priv;
 };
+#define OPAL_FL_SUPPORTED 0x00000001
+#define OPAL_FL_LOCKING_SUPPORTED 0x00000002
+#define OPAL_FL_LOCKING_ENABLED 0x00000004
+#define OPAL_FL_LOCKED 0x00000008
+#define OPAL_FL_MBR_ENABLED 0x00000010
+#define OPAL_FL_MBR_DONE 0x00000020
+struct opal_status {
+  __u32 flags;
+  __u32 reserved;
+};
 #define IOC_OPAL_SAVE _IOW('p', 220, struct opal_lock_unlock)
 #define IOC_OPAL_LOCK_UNLOCK _IOW('p', 221, struct opal_lock_unlock)
 #define IOC_OPAL_TAKE_OWNERSHIP _IOW('p', 222, struct opal_key)
@@ -128,4 +138,5 @@
 #define IOC_OPAL_MBR_DONE _IOW('p', 233, struct opal_mbr_done)
 #define IOC_OPAL_WRITE_SHADOW_MBR _IOW('p', 234, struct opal_shadow_mbr)
 #define IOC_OPAL_GENERIC_TABLE_RW _IOW('p', 235, struct opal_read_write_table)
+#define IOC_OPAL_GET_STATUS _IOR('p', 236, struct opal_status)
 #endif
diff --git a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/seg6.h b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/seg6.h
index f180485..b8206cc 100644
--- a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/seg6.h
+++ b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/seg6.h
@@ -28,7 +28,7 @@
   __u8 first_segment;
   __u8 flags;
   __u16 tag;
-  struct in6_addr segments[0];
+  struct in6_addr segments[];
 };
 #define SR6_FLAG1_PROTECTED (1 << 6)
 #define SR6_FLAG1_OAM (1 << 5)
diff --git a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/seg6_iptunnel.h b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/seg6_iptunnel.h
index 1c1ad83..19d8ba4 100644
--- a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/seg6_iptunnel.h
+++ b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/seg6_iptunnel.h
@@ -27,12 +27,14 @@
 #define SEG6_IPTUNNEL_MAX (__SEG6_IPTUNNEL_MAX - 1)
 struct seg6_iptunnel_encap {
   int mode;
-  struct ipv6_sr_hdr srh[0];
+  struct ipv6_sr_hdr srh[];
 };
 #define SEG6_IPTUN_ENCAP_SIZE(x) ((sizeof(* x)) + (((x)->srh->hdrlen + 1) << 3))
 enum {
   SEG6_IPTUN_MODE_INLINE,
   SEG6_IPTUN_MODE_ENCAP,
   SEG6_IPTUN_MODE_L2ENCAP,
+  SEG6_IPTUN_MODE_ENCAP_RED,
+  SEG6_IPTUN_MODE_L2ENCAP_RED,
 };
 #endif
diff --git a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/seg6_local.h b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/seg6_local.h
index 61a8d97..4d062e8 100644
--- a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/seg6_local.h
+++ b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/seg6_local.h
@@ -31,6 +31,7 @@
   SEG6_LOCAL_BPF,
   SEG6_LOCAL_VRFTABLE,
   SEG6_LOCAL_COUNTERS,
+  SEG6_LOCAL_FLAVORS,
   __SEG6_LOCAL_MAX,
 };
 #define SEG6_LOCAL_MAX (__SEG6_LOCAL_MAX - 1)
@@ -71,4 +72,21 @@
   __SEG6_LOCAL_CNT_MAX,
 };
 #define SEG6_LOCAL_CNT_MAX (__SEG6_LOCAL_CNT_MAX - 1)
+enum {
+  SEG6_LOCAL_FLV_UNSPEC,
+  SEG6_LOCAL_FLV_OPERATION,
+  SEG6_LOCAL_FLV_LCBLOCK_BITS,
+  SEG6_LOCAL_FLV_LCNODE_FN_BITS,
+  __SEG6_LOCAL_FLV_MAX,
+};
+#define SEG6_LOCAL_FLV_MAX (__SEG6_LOCAL_FLV_MAX - 1)
+enum {
+  SEG6_LOCAL_FLV_OP_UNSPEC,
+  SEG6_LOCAL_FLV_OP_PSP,
+  SEG6_LOCAL_FLV_OP_USP,
+  SEG6_LOCAL_FLV_OP_USD,
+  SEG6_LOCAL_FLV_OP_NEXT_CSID,
+  __SEG6_LOCAL_FLV_OP_MAX
+};
+#define SEG6_LOCAL_FLV_OP_MAX (__SEG6_LOCAL_FLV_OP_MAX - 1)
 #endif
diff --git a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/serial.h b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/serial.h
index e4e903d..5a83c62 100644
--- a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/serial.h
+++ b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/serial.h
@@ -96,9 +96,20 @@
 #define SER_RS485_RTS_AFTER_SEND (1 << 2)
 #define SER_RS485_RX_DURING_TX (1 << 4)
 #define SER_RS485_TERMINATE_BUS (1 << 5)
+#define SER_RS485_ADDRB (1 << 6)
+#define SER_RS485_ADDR_RECV (1 << 7)
+#define SER_RS485_ADDR_DEST (1 << 8)
   __u32 delay_rts_before_send;
   __u32 delay_rts_after_send;
-  __u32 padding[5];
+  union {
+    __u32 padding[5];
+    struct {
+      __u8 addr_recv;
+      __u8 addr_dest;
+      __u8 padding0[2];
+      __u32 padding1[4];
+    };
+  };
 };
 struct serial_iso7816 {
   __u32 flags;
diff --git a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/serial_core.h b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/serial_core.h
index 0caf698..1e04429 100644
--- a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/serial_core.h
+++ b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/serial_core.h
@@ -47,6 +47,7 @@
 #define PORT_SUNSAB 39
 #define PORT_NPCM 40
 #define PORT_TEGRA_TCU 41
+#define PORT_ASPEED_VUART 42
 #define PORT_PCH_8LINE 44
 #define PORT_PCH_2LINE 45
 #define PORT_DZ 46
@@ -68,8 +69,6 @@
 #define PORT_IMX 62
 #define PORT_MPSC 63
 #define PORT_TXX9 64
-#define PORT_VR41XX_SIU 65
-#define PORT_VR41XX_DSIU 66
 #define PORT_S3C2400 67
 #define PORT_M32R_SIO 68
 #define PORT_JSM 69
@@ -122,4 +121,5 @@
 #define PORT_SIFIVE_V0 120
 #define PORT_SUNIX 121
 #define PORT_LINFLEXUART 122
+#define PORT_SUNPLUS 123
 #endif
diff --git a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/serial_reg.h b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/serial_reg.h
index b6648f8..e41e649 100644
--- a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/serial_reg.h
+++ b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/serial_reg.h
@@ -99,7 +99,7 @@
 #define UART_LSR_PE 0x04
 #define UART_LSR_OE 0x02
 #define UART_LSR_DR 0x01
-#define UART_LSR_BRK_ERROR_BITS 0x1E
+#define UART_LSR_BRK_ERROR_BITS (UART_LSR_BI | UART_LSR_FE | UART_LSR_PE | UART_LSR_OE)
 #define UART_MSR 6
 #define UART_MSR_DCD 0x80
 #define UART_MSR_RI 0x40
@@ -109,7 +109,7 @@
 #define UART_MSR_TERI 0x04
 #define UART_MSR_DDSR 0x02
 #define UART_MSR_DCTS 0x01
-#define UART_MSR_ANY_DELTA 0x0F
+#define UART_MSR_ANY_DELTA (UART_MSR_DDCD | UART_MSR_TERI | UART_MSR_DDSR | UART_MSR_DCTS)
 #define UART_SCR 7
 #define UART_DLL 0
 #define UART_DLM 1
diff --git a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/sev-guest.h b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/sev-guest.h
new file mode 100644
index 0000000..796479a
--- /dev/null
+++ b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/sev-guest.h
@@ -0,0 +1,56 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef __UAPI_LINUX_SEV_GUEST_H_
+#define __UAPI_LINUX_SEV_GUEST_H_
+#include <linux/types.h>
+struct snp_report_req {
+  __u8 user_data[64];
+  __u32 vmpl;
+  __u8 rsvd[28];
+};
+struct snp_report_resp {
+  __u8 data[4000];
+};
+struct snp_derived_key_req {
+  __u32 root_key_select;
+  __u32 rsvd;
+  __u64 guest_field_select;
+  __u32 vmpl;
+  __u32 guest_svn;
+  __u64 tcb_version;
+};
+struct snp_derived_key_resp {
+  __u8 data[64];
+};
+struct snp_guest_request_ioctl {
+  __u8 msg_version;
+  __u64 req_data;
+  __u64 resp_data;
+  __u64 fw_err;
+};
+struct snp_ext_report_req {
+  struct snp_report_req data;
+  __u64 certs_address;
+  __u32 certs_len;
+};
+#define SNP_GUEST_REQ_IOC_TYPE 'S'
+#define SNP_GET_REPORT _IOWR(SNP_GUEST_REQ_IOC_TYPE, 0x0, struct snp_guest_request_ioctl)
+#define SNP_GET_DERIVED_KEY _IOWR(SNP_GUEST_REQ_IOC_TYPE, 0x1, struct snp_guest_request_ioctl)
+#define SNP_GET_EXT_REPORT _IOWR(SNP_GUEST_REQ_IOC_TYPE, 0x2, struct snp_guest_request_ioctl)
+#endif
diff --git a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/smc.h b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/smc.h
index 01494da..200c9b6 100644
--- a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/smc.h
+++ b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/smc.h
@@ -57,6 +57,9 @@
   SMC_NETLINK_DUMP_SEID,
   SMC_NETLINK_ENABLE_SEID,
   SMC_NETLINK_DISABLE_SEID,
+  SMC_NETLINK_DUMP_HS_LIMITATION,
+  SMC_NETLINK_ENABLE_HS_LIMITATION,
+  SMC_NETLINK_DISABLE_HS_LIMITATION,
 };
 enum {
   SMC_GEN_UNSPEC,
@@ -109,6 +112,7 @@
   SMC_NLA_LGR_R_V2,
   SMC_NLA_LGR_R_NET_COOKIE,
   SMC_NLA_LGR_R_PAD,
+  SMC_NLA_LGR_R_BUF_TYPE,
   __SMC_NLA_LGR_R_MAX,
   SMC_NLA_LGR_R_MAX = __SMC_NLA_LGR_R_MAX - 1
 };
@@ -249,4 +253,11 @@
   __SMC_NLA_SEID_TABLE_MAX,
   SMC_NLA_SEID_TABLE_MAX = __SMC_NLA_SEID_TABLE_MAX - 1
 };
+enum {
+  SMC_NLA_HS_LIMITATION_UNSPEC,
+  SMC_NLA_HS_LIMITATION_ENABLED,
+  __SMC_NLA_HS_LIMITATION_MAX,
+  SMC_NLA_HS_LIMITATION_MAX = __SMC_NLA_HS_LIMITATION_MAX - 1
+};
+#define SMC_LIMIT_HS 1
 #endif
diff --git a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/snmp.h b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/snmp.h
index a503a7e..d98f39e 100644
--- a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/snmp.h
+++ b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/snmp.h
@@ -305,6 +305,8 @@
   LINUX_MIB_TLSRXDEVICE,
   LINUX_MIB_TLSDECRYPTERROR,
   LINUX_MIB_TLSRXDEVICERESYNC,
+  LINUX_MIB_TLSDECRYPTRETRY,
+  LINUX_MIB_TLSRXNOPADVIOL,
   __LINUX_MIB_TLSMAX
 };
 #endif
diff --git a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/socket.h b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/socket.h
index be16548..4a530a8 100644
--- a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/socket.h
+++ b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/socket.h
@@ -32,4 +32,7 @@
 #define SOCK_SNDBUF_LOCK 1
 #define SOCK_RCVBUF_LOCK 2
 #define SOCK_BUF_LOCK_MASK (SOCK_SNDBUF_LOCK | SOCK_RCVBUF_LOCK)
+#define SOCK_TXREHASH_DEFAULT 255
+#define SOCK_TXREHASH_DISABLED 0
+#define SOCK_TXREHASH_ENABLED 1
 #endif
diff --git a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/spi/spi.h b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/spi/spi.h
index 39267a2..693e752 100644
--- a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/spi/spi.h
+++ b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/spi/spi.h
@@ -40,5 +40,6 @@
 #define SPI_TX_OCTAL _BITUL(13)
 #define SPI_RX_OCTAL _BITUL(14)
 #define SPI_3WIRE_HIZ _BITUL(15)
-#define SPI_MODE_USER_MASK (_BITUL(16) - 1)
+#define SPI_RX_CPHA_FLIP _BITUL(16)
+#define SPI_MODE_USER_MASK (_BITUL(17) - 1)
 #endif
diff --git a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/stat.h b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/stat.h
index a15b9b5..89304ce 100644
--- a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/stat.h
+++ b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/stat.h
@@ -78,7 +78,8 @@
   __u32 stx_dev_major;
   __u32 stx_dev_minor;
   __u64 stx_mnt_id;
-  __u64 __spare2;
+  __u32 stx_dio_mem_align;
+  __u32 stx_dio_offset_align;
   __u64 __spare3[12];
 };
 #define STATX_TYPE 0x00000001U
@@ -95,6 +96,7 @@
 #define STATX_BASIC_STATS 0x000007ffU
 #define STATX_BTIME 0x00000800U
 #define STATX_MNT_ID 0x00001000U
+#define STATX_DIOALIGN 0x00002000U
 #define STATX__RESERVED 0x80000000U
 #define STATX_ALL 0x00000fffU
 #define STATX_ATTR_COMPRESSED 0x00000004
diff --git a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/stddef.h b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/stddef.h
index d5cdf80..6bc6925 100644
--- a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/stddef.h
+++ b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/stddef.h
@@ -16,9 +16,12 @@
  ***
  ****************************************************************************
  ****************************************************************************/
+#ifndef _UAPI_LINUX_STDDEF_H
+#define _UAPI_LINUX_STDDEF_H
 #include <linux/compiler_types.h>
 #ifndef __always_inline
 #define __always_inline inline
 #endif
 #define __struct_group(TAG,NAME,ATTRS,MEMBERS...) union { struct { MEMBERS } ATTRS; struct TAG { MEMBERS } ATTRS NAME; }
 #define __DECLARE_FLEX_ARRAY(TYPE,NAME) struct { struct { } __empty_ ##NAME; TYPE NAME[]; }
+#endif
diff --git a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/stm.h b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/stm.h
index 1c7f7f3..b1453f7 100644
--- a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/stm.h
+++ b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/stm.h
@@ -28,7 +28,7 @@
   __u16 width;
   __u16 __reserved_0;
   __u32 __reserved_1;
-  char id[0];
+  char id[];
 };
 #define STP_POLICY_ID_SET _IOWR('%', 0, struct stp_policy_id)
 #define STP_POLICY_ID_GET _IOR('%', 1, struct stp_policy_id)
diff --git a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/sysctl.h b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/sysctl.h
index ae9c2ba..ff17f7c 100644
--- a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/sysctl.h
+++ b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/sysctl.h
@@ -516,6 +516,7 @@
   NET_NEIGH_GC_THRESH3 = 16,
   NET_NEIGH_RETRANS_TIME_MS = 17,
   NET_NEIGH_REACHABLE_TIME_MS = 18,
+  NET_NEIGH_INTERVAL_PROBE_TIME_MS = 19,
 };
 enum {
   NET_DCCP_DEFAULT = 1,
diff --git a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/target_core_user.h b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/target_core_user.h
index dcba00e..83e155e 100644
--- a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/target_core_user.h
+++ b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/target_core_user.h
@@ -34,7 +34,7 @@
   __u32 cmdr_size;
   __u32 cmd_head;
   __u32 cmd_tail __attribute__((__aligned__(ALIGN_SIZE)));
-} __packed;
+} __attribute__((__packed__));
 enum tcmu_opcode {
   TCMU_OP_PAD = 0,
   TCMU_OP_CMD,
@@ -48,7 +48,7 @@
 #define TCMU_UFLAG_READ_LEN 0x2
 #define TCMU_UFLAG_KEEP_BUF 0x4
   __u8 uflags;
-} __packed;
+} __attribute__((__packed__));
 #define TCMU_OP_MASK 0x7
 #define TCMU_SENSE_BUFFERSIZE 96
 struct tcmu_cmd_entry {
@@ -71,7 +71,7 @@
       char sense_buffer[TCMU_SENSE_BUFFERSIZE];
     } rsp;
   };
-} __packed;
+} __attribute__((__packed__));
 struct tcmu_tmr_entry {
   struct tcmu_cmd_entry_hdr hdr;
 #define TCMU_TMR_UNKNOWN 0
@@ -89,8 +89,8 @@
   __u32 cmd_cnt;
   __u64 __pad3;
   __u64 __pad4;
-  __u16 cmd_ids[0];
-} __packed;
+  __u16 cmd_ids[];
+} __attribute__((__packed__));
 #define TCMU_OP_ALIGN_SIZE sizeof(__u64)
 enum tcmu_genl_cmd {
   TCMU_CMD_UNSPEC,
diff --git a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/taskstats.h b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/taskstats.h
index efa5b4a..c1cda52 100644
--- a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/taskstats.h
+++ b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/taskstats.h
@@ -19,7 +19,7 @@
 #ifndef _LINUX_TASKSTATS_H
 #define _LINUX_TASKSTATS_H
 #include <linux/types.h>
-#define TASKSTATS_VERSION 11
+#define TASKSTATS_VERSION 13
 #define TS_COMM_LEN 32
 struct taskstats {
   __u16 version;
@@ -71,6 +71,12 @@
   __u64 ac_btime64;
   __u64 compact_count;
   __u64 compact_delay_total;
+  __u32 ac_tgid;
+  __u64 ac_tgetime __attribute__((aligned(8)));
+  __u64 ac_exe_dev;
+  __u64 ac_exe_inode;
+  __u64 wpcopy_count;
+  __u64 wpcopy_delay_total;
 };
 enum {
   TASKSTATS_CMD_UNSPEC = 0,
diff --git a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/tc_act/tc_skbedit.h b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/tc_act/tc_skbedit.h
index 5706d4d..b041a6a 100644
--- a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/tc_act/tc_skbedit.h
+++ b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/tc_act/tc_skbedit.h
@@ -25,6 +25,7 @@
 #define SKBEDIT_F_PTYPE 0x8
 #define SKBEDIT_F_MASK 0x10
 #define SKBEDIT_F_INHERITDSFIELD 0x20
+#define SKBEDIT_F_TXQ_SKBHASH 0x40
 struct tc_skbedit {
   tc_gen;
 };
@@ -39,6 +40,7 @@
   TCA_SKBEDIT_PTYPE,
   TCA_SKBEDIT_MASK,
   TCA_SKBEDIT_FLAGS,
+  TCA_SKBEDIT_QUEUE_MAPPING_MAX,
   __TCA_SKBEDIT_MAX
 };
 #define TCA_SKBEDIT_MAX (__TCA_SKBEDIT_MAX - 1)
diff --git a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/tee.h b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/tee.h
index 5cfe713..404b7b2 100644
--- a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/tee.h
+++ b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/tee.h
@@ -22,8 +22,6 @@
 #include <linux/types.h>
 #define TEE_IOC_MAGIC 0xa4
 #define TEE_IOC_BASE 0
-#define TEE_IOCTL_SHM_MAPPED 0x1
-#define TEE_IOCTL_SHM_DMA_BUF 0x2
 #define TEE_MAX_ARG_SIZE 1024
 #define TEE_GEN_CAP_GP (1 << 0)
 #define TEE_GEN_CAP_PRIVILEGED (1 << 1)
diff --git a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/thermal.h b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/thermal.h
index 72ea378..2f9dccb 100644
--- a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/thermal.h
+++ b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/thermal.h
@@ -54,6 +54,10 @@
   THERMAL_GENL_ATTR_CDEV_MAX_STATE,
   THERMAL_GENL_ATTR_CDEV_NAME,
   THERMAL_GENL_ATTR_GOV_NAME,
+  THERMAL_GENL_ATTR_CPU_CAPABILITY,
+  THERMAL_GENL_ATTR_CPU_CAPABILITY_ID,
+  THERMAL_GENL_ATTR_CPU_CAPABILITY_PERFORMANCE,
+  THERMAL_GENL_ATTR_CPU_CAPABILITY_EFFICIENCY,
   __THERMAL_GENL_ATTR_MAX,
 };
 #define THERMAL_GENL_ATTR_MAX (__THERMAL_GENL_ATTR_MAX - 1)
@@ -77,6 +81,7 @@
   THERMAL_GENL_EVENT_CDEV_DELETE,
   THERMAL_GENL_EVENT_CDEV_STATE_UPDATE,
   THERMAL_GENL_EVENT_TZ_GOV_CHANGE,
+  THERMAL_GENL_EVENT_CPU_CAPABILITY_CHANGE,
   __THERMAL_GENL_EVENT_MAX,
 };
 #define THERMAL_GENL_EVENT_MAX (__THERMAL_GENL_EVENT_MAX - 1)
diff --git a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/tipc_config.h b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/tipc_config.h
index a371e37..c6ee1d1 100644
--- a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/tipc_config.h
+++ b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/tipc_config.h
@@ -22,7 +22,6 @@
 #include <linux/string.h>
 #include <linux/tipc.h>
 #include <asm/byteorder.h>
-#include <arpa/inet.h>
 #define TIPC_CMD_NOOP 0x0000
 #define TIPC_CMD_GET_NODES 0x0001
 #define TIPC_CMD_GET_MEDIA_NAMES 0x0002
diff --git a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/tls.h b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/tls.h
index c98ea0b..fcab74b 100644
--- a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/tls.h
+++ b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/tls.h
@@ -21,6 +21,8 @@
 #include <linux/types.h>
 #define TLS_TX 1
 #define TLS_RX 2
+#define TLS_TX_ZEROCOPY_RO 3
+#define TLS_RX_EXPECT_NO_PAD 4
 #define TLS_VERSION_MINOR(ver) ((ver) & 0xFF)
 #define TLS_VERSION_MAJOR(ver) (((ver) >> 8) & 0xFF)
 #define TLS_VERSION_NUMBER(id) ((((id ##_VERSION_MAJOR) & 0xFF) << 8) | ((id ##_VERSION_MINOR) & 0xFF))
@@ -66,6 +68,18 @@
 #define TLS_CIPHER_SM4_CCM_SALT_SIZE 4
 #define TLS_CIPHER_SM4_CCM_TAG_SIZE 16
 #define TLS_CIPHER_SM4_CCM_REC_SEQ_SIZE 8
+#define TLS_CIPHER_ARIA_GCM_128 57
+#define TLS_CIPHER_ARIA_GCM_128_IV_SIZE 8
+#define TLS_CIPHER_ARIA_GCM_128_KEY_SIZE 16
+#define TLS_CIPHER_ARIA_GCM_128_SALT_SIZE 4
+#define TLS_CIPHER_ARIA_GCM_128_TAG_SIZE 16
+#define TLS_CIPHER_ARIA_GCM_128_REC_SEQ_SIZE 8
+#define TLS_CIPHER_ARIA_GCM_256 58
+#define TLS_CIPHER_ARIA_GCM_256_IV_SIZE 8
+#define TLS_CIPHER_ARIA_GCM_256_KEY_SIZE 32
+#define TLS_CIPHER_ARIA_GCM_256_SALT_SIZE 4
+#define TLS_CIPHER_ARIA_GCM_256_TAG_SIZE 16
+#define TLS_CIPHER_ARIA_GCM_256_REC_SEQ_SIZE 8
 #define TLS_SET_RECORD_TYPE 1
 #define TLS_GET_RECORD_TYPE 2
 struct tls_crypto_info {
@@ -114,12 +128,28 @@
   unsigned char salt[TLS_CIPHER_SM4_CCM_SALT_SIZE];
   unsigned char rec_seq[TLS_CIPHER_SM4_CCM_REC_SEQ_SIZE];
 };
+struct tls12_crypto_info_aria_gcm_128 {
+  struct tls_crypto_info info;
+  unsigned char iv[TLS_CIPHER_ARIA_GCM_128_IV_SIZE];
+  unsigned char key[TLS_CIPHER_ARIA_GCM_128_KEY_SIZE];
+  unsigned char salt[TLS_CIPHER_ARIA_GCM_128_SALT_SIZE];
+  unsigned char rec_seq[TLS_CIPHER_ARIA_GCM_128_REC_SEQ_SIZE];
+};
+struct tls12_crypto_info_aria_gcm_256 {
+  struct tls_crypto_info info;
+  unsigned char iv[TLS_CIPHER_ARIA_GCM_256_IV_SIZE];
+  unsigned char key[TLS_CIPHER_ARIA_GCM_256_KEY_SIZE];
+  unsigned char salt[TLS_CIPHER_ARIA_GCM_256_SALT_SIZE];
+  unsigned char rec_seq[TLS_CIPHER_ARIA_GCM_256_REC_SEQ_SIZE];
+};
 enum {
   TLS_INFO_UNSPEC,
   TLS_INFO_VERSION,
   TLS_INFO_CIPHER,
   TLS_INFO_TXCONF,
   TLS_INFO_RXCONF,
+  TLS_INFO_ZC_RO_TX,
+  TLS_INFO_RX_NO_PAD,
   __TLS_INFO_MAX,
 };
 #define TLS_INFO_MAX (__TLS_INFO_MAX - 1)
diff --git a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/tty.h b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/tty.h
index dcce572..a94e6e6 100644
--- a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/tty.h
+++ b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/tty.h
@@ -18,7 +18,6 @@
  ****************************************************************************/
 #ifndef _UAPI_LINUX_TTY_H
 #define _UAPI_LINUX_TTY_H
-#define NR_LDISCS 30
 #define N_TTY 0
 #define N_SLIP 1
 #define N_MOUSE 2
@@ -48,4 +47,7 @@
 #define N_SPEAKUP 26
 #define N_NULL 27
 #define N_MCTP 28
+#define N_DEVELOPMENT 29
+#define N_CAN327 30
+#define NR_LDISCS 31
 #endif
diff --git a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/types.h b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/types.h
index 9145e66..f41d676 100644
--- a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/types.h
+++ b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/types.h
@@ -21,8 +21,8 @@
 #include <asm/types.h>
 #ifndef __ASSEMBLY__
 #include <linux/posix_types.h>
-#define __bitwise__
-#define __bitwise __bitwise__
+#define __bitwise
+#define __bitwise__ __bitwise
 typedef __u16 __bitwise __le16;
 typedef __u16 __bitwise __be16;
 typedef __u32 __bitwise __le32;
diff --git a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/ublk_cmd.h b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/ublk_cmd.h
new file mode 100644
index 0000000..8c9cbeb
--- /dev/null
+++ b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/ublk_cmd.h
@@ -0,0 +1,127 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef USER_BLK_DRV_CMD_INC_H
+#define USER_BLK_DRV_CMD_INC_H
+#include <linux/types.h>
+#define UBLK_CMD_GET_QUEUE_AFFINITY 0x01
+#define UBLK_CMD_GET_DEV_INFO 0x02
+#define UBLK_CMD_ADD_DEV 0x04
+#define UBLK_CMD_DEL_DEV 0x05
+#define UBLK_CMD_START_DEV 0x06
+#define UBLK_CMD_STOP_DEV 0x07
+#define UBLK_CMD_SET_PARAMS 0x08
+#define UBLK_CMD_GET_PARAMS 0x09
+#define UBLK_CMD_START_USER_RECOVERY 0x10
+#define UBLK_CMD_END_USER_RECOVERY 0x11
+#define UBLK_IO_FETCH_REQ 0x20
+#define UBLK_IO_COMMIT_AND_FETCH_REQ 0x21
+#define UBLK_IO_NEED_GET_DATA 0x22
+#define UBLK_IO_RES_OK 0
+#define UBLK_IO_RES_NEED_GET_DATA 1
+#define UBLK_IO_RES_ABORT (- ENODEV)
+#define UBLKSRV_CMD_BUF_OFFSET 0
+#define UBLKSRV_IO_BUF_OFFSET 0x80000000
+#define UBLK_MAX_QUEUE_DEPTH 4096
+#define UBLK_F_SUPPORT_ZERO_COPY (1ULL << 0)
+#define UBLK_F_URING_CMD_COMP_IN_TASK (1ULL << 1)
+#define UBLK_F_NEED_GET_DATA (1UL << 2)
+#define UBLK_F_USER_RECOVERY (1UL << 3)
+#define UBLK_F_USER_RECOVERY_REISSUE (1UL << 4)
+#define UBLK_S_DEV_DEAD 0
+#define UBLK_S_DEV_LIVE 1
+#define UBLK_S_DEV_QUIESCED 2
+struct ublksrv_ctrl_cmd {
+  __u32 dev_id;
+  __u16 queue_id;
+  __u16 len;
+  __u64 addr;
+  __u64 data[2];
+};
+struct ublksrv_ctrl_dev_info {
+  __u16 nr_hw_queues;
+  __u16 queue_depth;
+  __u16 state;
+  __u16 pad0;
+  __u32 max_io_buf_bytes;
+  __u32 dev_id;
+  __s32 ublksrv_pid;
+  __u32 pad1;
+  __u64 flags;
+  __u64 ublksrv_flags;
+  __u64 reserved0;
+  __u64 reserved1;
+  __u64 reserved2;
+};
+#define UBLK_IO_OP_READ 0
+#define UBLK_IO_OP_WRITE 1
+#define UBLK_IO_OP_FLUSH 2
+#define UBLK_IO_OP_DISCARD 3
+#define UBLK_IO_OP_WRITE_SAME 4
+#define UBLK_IO_OP_WRITE_ZEROES 5
+#define UBLK_IO_F_FAILFAST_DEV (1U << 8)
+#define UBLK_IO_F_FAILFAST_TRANSPORT (1U << 9)
+#define UBLK_IO_F_FAILFAST_DRIVER (1U << 10)
+#define UBLK_IO_F_META (1U << 11)
+#define UBLK_IO_F_FUA (1U << 13)
+#define UBLK_IO_F_NOUNMAP (1U << 15)
+#define UBLK_IO_F_SWAP (1U << 16)
+struct ublksrv_io_desc {
+  __u32 op_flags;
+  __u32 nr_sectors;
+  __u64 start_sector;
+  __u64 addr;
+};
+struct ublksrv_io_cmd {
+  __u16 q_id;
+  __u16 tag;
+  __s32 result;
+  __u64 addr;
+};
+struct ublk_param_basic {
+#define UBLK_ATTR_READ_ONLY (1 << 0)
+#define UBLK_ATTR_ROTATIONAL (1 << 1)
+#define UBLK_ATTR_VOLATILE_CACHE (1 << 2)
+#define UBLK_ATTR_FUA (1 << 3)
+  __u32 attrs;
+  __u8 logical_bs_shift;
+  __u8 physical_bs_shift;
+  __u8 io_opt_shift;
+  __u8 io_min_shift;
+  __u32 max_sectors;
+  __u32 chunk_sectors;
+  __u64 dev_sectors;
+  __u64 virt_boundary_mask;
+};
+struct ublk_param_discard {
+  __u32 discard_alignment;
+  __u32 discard_granularity;
+  __u32 max_discard_sectors;
+  __u32 max_write_zeroes_sectors;
+  __u16 max_discard_segments;
+  __u16 reserved0;
+};
+struct ublk_params {
+  __u32 len;
+#define UBLK_PARAM_TYPE_BASIC (1 << 0)
+#define UBLK_PARAM_TYPE_DISCARD (1 << 1)
+  __u32 types;
+  struct ublk_param_basic basic;
+  struct ublk_param_discard discard;
+};
+#endif
diff --git a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/usb/audio.h b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/usb/audio.h
index 7d36157..bfda540 100644
--- a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/usb/audio.h
+++ b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/usb/audio.h
@@ -186,7 +186,7 @@
   __u8 bUnitID;
   __u8 bSourceID;
   __u8 bControlSize;
-  __u8 bmaControls[0];
+  __u8 bmaControls[];
 } __attribute__((packed));
 struct uac_processing_unit_descriptor {
   __u8 bLength;
diff --git a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/usb/cdc.h b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/usb/cdc.h
index 59c9488..bbfc4db 100644
--- a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/usb/cdc.h
+++ b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/usb/cdc.h
@@ -131,7 +131,7 @@
   __u8 bDescriptorType;
   __u8 bDescriptorSubType;
   __u8 bGuidDescriptorType;
-  __u8 bDetailData[0];
+  __u8 bDetailData[];
 } __attribute__((packed));
 struct usb_cdc_obex_desc {
   __u8 bLength;
@@ -201,6 +201,8 @@
 #define USB_CDC_SPACE_PARITY 4
   __u8 bDataBits;
 } __attribute__((packed));
+#define USB_CDC_CTRL_DTR (1 << 0)
+#define USB_CDC_CTRL_RTS (1 << 1)
 #define USB_CDC_PACKET_TYPE_PROMISCUOUS (1 << 0)
 #define USB_CDC_PACKET_TYPE_ALL_MULTICAST (1 << 1)
 #define USB_CDC_PACKET_TYPE_DIRECTED (1 << 2)
@@ -217,6 +219,13 @@
   __le16 wIndex;
   __le16 wLength;
 } __attribute__((packed));
+#define USB_CDC_SERIAL_STATE_DCD (1 << 0)
+#define USB_CDC_SERIAL_STATE_DSR (1 << 1)
+#define USB_CDC_SERIAL_STATE_BREAK (1 << 2)
+#define USB_CDC_SERIAL_STATE_RING_SIGNAL (1 << 3)
+#define USB_CDC_SERIAL_STATE_FRAMING (1 << 4)
+#define USB_CDC_SERIAL_STATE_PARITY (1 << 5)
+#define USB_CDC_SERIAL_STATE_OVERRUN (1 << 6)
 struct usb_cdc_speed_change {
   __le32 DLBitRRate;
   __le32 ULBitRate;
@@ -267,7 +276,7 @@
   __le32 dwSignature;
   __le16 wLength;
   __le16 wNextNdpIndex;
-  struct usb_cdc_ncm_dpe16 dpe16[0];
+  struct usb_cdc_ncm_dpe16 dpe16[];
 } __attribute__((packed));
 struct usb_cdc_ncm_dpe32 {
   __le32 dwDatagramIndex;
@@ -279,7 +288,7 @@
   __le16 wReserved6;
   __le32 dwNextNdpIndex;
   __le32 dwReserved12;
-  struct usb_cdc_ncm_dpe32 dpe32[0];
+  struct usb_cdc_ncm_dpe32 dpe32[];
 } __attribute__((packed));
 #define USB_CDC_NCM_NDP16_INDEX_MIN 0x000C
 #define USB_CDC_NCM_NDP32_INDEX_MIN 0x0010
diff --git a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/usb/ch9.h b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/usb/ch9.h
index f1dade9..49eb5fa 100644
--- a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/usb/ch9.h
+++ b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/usb/ch9.h
@@ -324,7 +324,7 @@
   __u8 bDescriptorType;
   __u8 tTKID[3];
   __u8 bReserved;
-  __u8 bKeyData[0];
+  __u8 bKeyData[];
 } __attribute__((packed));
 struct usb_encryption_descriptor {
   __u8 bLength;
diff --git a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/usb/raw_gadget.h b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/usb/raw_gadget.h
index 70d5a26..8b60c8d 100644
--- a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/usb/raw_gadget.h
+++ b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/usb/raw_gadget.h
@@ -35,7 +35,7 @@
 struct usb_raw_event {
   __u32 type;
   __u32 length;
-  __u8 data[0];
+  __u8 data[];
 };
 #define USB_RAW_IO_FLAGS_ZERO 0x0001
 #define USB_RAW_IO_FLAGS_MASK 0x0001
@@ -43,7 +43,7 @@
   __u16 ep;
   __u16 flags;
   __u32 length;
-  __u8 data[0];
+  __u8 data[];
 };
 #define USB_RAW_EPS_NUM_MAX 30
 #define USB_RAW_EP_NAME_MAX 16
diff --git a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/usbdevice_fs.h b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/usbdevice_fs.h
index 7936ad9..5fef522 100644
--- a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/usbdevice_fs.h
+++ b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/usbdevice_fs.h
@@ -91,7 +91,7 @@
   int error_count;
   unsigned int signr;
   void __user * usercontext;
-  struct usbdevfs_iso_packet_desc iso_frame_desc[0];
+  struct usbdevfs_iso_packet_desc iso_frame_desc[];
 };
 struct usbdevfs_ioctl {
   int ifno;
@@ -121,7 +121,7 @@
 struct usbdevfs_streams {
   unsigned int num_streams;
   unsigned int num_eps;
-  unsigned char eps[0];
+  unsigned char eps[];
 };
 #define USBDEVFS_CONTROL _IOWR('U', 0, struct usbdevfs_ctrltransfer)
 #define USBDEVFS_CONTROL32 _IOWR('U', 0, struct usbdevfs_ctrltransfer32)
diff --git a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/usbip.h b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/usbip.h
index ae18347..b0c1067 100644
--- a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/usbip.h
+++ b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/usbip.h
@@ -27,4 +27,21 @@
   VDEV_ST_USED,
   VDEV_ST_ERROR
 };
+#define USBIP_URB_SHORT_NOT_OK 0x0001
+#define USBIP_URB_ISO_ASAP 0x0002
+#define USBIP_URB_NO_TRANSFER_DMA_MAP 0x0004
+#define USBIP_URB_ZERO_PACKET 0x0040
+#define USBIP_URB_NO_INTERRUPT 0x0080
+#define USBIP_URB_FREE_BUFFER 0x0100
+#define USBIP_URB_DIR_IN 0x0200
+#define USBIP_URB_DIR_OUT 0
+#define USBIP_URB_DIR_MASK USBIP_URB_DIR_IN
+#define USBIP_URB_DMA_MAP_SINGLE 0x00010000
+#define USBIP_URB_DMA_MAP_PAGE 0x00020000
+#define USBIP_URB_DMA_MAP_SG 0x00040000
+#define USBIP_URB_MAP_LOCAL 0x00080000
+#define USBIP_URB_SETUP_MAP_SINGLE 0x00100000
+#define USBIP_URB_SETUP_MAP_LOCAL 0x00200000
+#define USBIP_URB_DMA_SG_COMBINED 0x00400000
+#define USBIP_URB_ALIGNED_TEMP_BUFFER 0x00800000
 #endif
diff --git a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/userfaultfd.h b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/userfaultfd.h
index ca7b7a5..09e0d80 100644
--- a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/userfaultfd.h
+++ b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/userfaultfd.h
@@ -19,12 +19,14 @@
 #ifndef _LINUX_USERFAULTFD_H
 #define _LINUX_USERFAULTFD_H
 #include <linux/types.h>
+#define USERFAULTFD_IOC 0xAA
+#define USERFAULTFD_IOC_NEW _IO(USERFAULTFD_IOC, 0x00)
 #define UFFD_API ((__u64) 0xAA)
 #define UFFD_API_REGISTER_MODES (UFFDIO_REGISTER_MODE_MISSING | UFFDIO_REGISTER_MODE_WP | UFFDIO_REGISTER_MODE_MINOR)
-#define UFFD_API_FEATURES (UFFD_FEATURE_PAGEFAULT_FLAG_WP | UFFD_FEATURE_EVENT_FORK | UFFD_FEATURE_EVENT_REMAP | UFFD_FEATURE_EVENT_REMOVE | UFFD_FEATURE_EVENT_UNMAP | UFFD_FEATURE_MISSING_HUGETLBFS | UFFD_FEATURE_MISSING_SHMEM | UFFD_FEATURE_SIGBUS | UFFD_FEATURE_THREAD_ID | UFFD_FEATURE_MINOR_HUGETLBFS | UFFD_FEATURE_MINOR_SHMEM)
+#define UFFD_API_FEATURES (UFFD_FEATURE_PAGEFAULT_FLAG_WP | UFFD_FEATURE_EVENT_FORK | UFFD_FEATURE_EVENT_REMAP | UFFD_FEATURE_EVENT_REMOVE | UFFD_FEATURE_EVENT_UNMAP | UFFD_FEATURE_MISSING_HUGETLBFS | UFFD_FEATURE_MISSING_SHMEM | UFFD_FEATURE_SIGBUS | UFFD_FEATURE_THREAD_ID | UFFD_FEATURE_MINOR_HUGETLBFS | UFFD_FEATURE_MINOR_SHMEM | UFFD_FEATURE_EXACT_ADDRESS | UFFD_FEATURE_WP_HUGETLBFS_SHMEM)
 #define UFFD_API_IOCTLS ((__u64) 1 << _UFFDIO_REGISTER | (__u64) 1 << _UFFDIO_UNREGISTER | (__u64) 1 << _UFFDIO_API)
 #define UFFD_API_RANGE_IOCTLS ((__u64) 1 << _UFFDIO_WAKE | (__u64) 1 << _UFFDIO_COPY | (__u64) 1 << _UFFDIO_ZEROPAGE | (__u64) 1 << _UFFDIO_WRITEPROTECT | (__u64) 1 << _UFFDIO_CONTINUE)
-#define UFFD_API_RANGE_IOCTLS_BASIC ((__u64) 1 << _UFFDIO_WAKE | (__u64) 1 << _UFFDIO_COPY | (__u64) 1 << _UFFDIO_CONTINUE)
+#define UFFD_API_RANGE_IOCTLS_BASIC ((__u64) 1 << _UFFDIO_WAKE | (__u64) 1 << _UFFDIO_COPY | (__u64) 1 << _UFFDIO_CONTINUE | (__u64) 1 << _UFFDIO_WRITEPROTECT)
 #define _UFFDIO_REGISTER (0x00)
 #define _UFFDIO_UNREGISTER (0x01)
 #define _UFFDIO_WAKE (0x02)
@@ -73,7 +75,7 @@
       __u64 reserved3;
     } reserved;
   } arg;
-} __packed;
+} __attribute__((__packed__));
 #define UFFD_EVENT_PAGEFAULT 0x12
 #define UFFD_EVENT_FORK 0x13
 #define UFFD_EVENT_REMAP 0x14
@@ -95,6 +97,8 @@
 #define UFFD_FEATURE_THREAD_ID (1 << 8)
 #define UFFD_FEATURE_MINOR_HUGETLBFS (1 << 9)
 #define UFFD_FEATURE_MINOR_SHMEM (1 << 10)
+#define UFFD_FEATURE_EXACT_ADDRESS (1 << 11)
+#define UFFD_FEATURE_WP_HUGETLBFS_SHMEM (1 << 12)
   __u64 features;
   __u64 ioctls;
 };
diff --git a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/uvcvideo.h b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/uvcvideo.h
index 719147a..46528a9 100644
--- a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/uvcvideo.h
+++ b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/uvcvideo.h
@@ -68,5 +68,5 @@
   __u8 length;
   __u8 flags;
   __u8 buf[];
-} __packed;
+} __attribute__((__packed__));
 #endif
diff --git a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/v4l2-controls.h b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/v4l2-controls.h
index 1a11355..276ecaa 100644
--- a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/v4l2-controls.h
+++ b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/v4l2-controls.h
@@ -119,6 +119,8 @@
 #define V4L2_CID_USER_CODA_BASE (V4L2_CID_USER_BASE + 0x10e0)
 #define V4L2_CID_USER_CCS_BASE (V4L2_CID_USER_BASE + 0x10f0)
 #define V4L2_CID_USER_ALLEGRO_BASE (V4L2_CID_USER_BASE + 0x1170)
+#define V4L2_CID_USER_ISL7998X_BASE (V4L2_CID_USER_BASE + 0x1180)
+#define V4L2_CID_USER_DW100_BASE (V4L2_CID_USER_BASE + 0x1190)
 #define V4L2_CID_CODEC_BASE (V4L2_CTRL_CLASS_CODEC | 0x900)
 #define V4L2_CID_CODEC_CLASS (V4L2_CTRL_CLASS_CODEC | 1)
 #define V4L2_CID_MPEG_STREAM_TYPE (V4L2_CID_CODEC_BASE + 0)
@@ -329,6 +331,11 @@
 #define V4L2_CID_MPEG_VIDEO_USE_LTR_FRAMES (V4L2_CID_CODEC_BASE + 234)
 #define V4L2_CID_MPEG_VIDEO_DEC_CONCEAL_COLOR (V4L2_CID_CODEC_BASE + 235)
 #define V4L2_CID_MPEG_VIDEO_INTRA_REFRESH_PERIOD (V4L2_CID_CODEC_BASE + 236)
+#define V4L2_CID_MPEG_VIDEO_INTRA_REFRESH_PERIOD_TYPE (V4L2_CID_CODEC_BASE + 237)
+enum v4l2_mpeg_video_intra_refresh_period_type {
+  V4L2_CID_MPEG_VIDEO_INTRA_REFRESH_PERIOD_TYPE_RANDOM = 0,
+  V4L2_CID_MPEG_VIDEO_INTRA_REFRESH_PERIOD_TYPE_CYCLIC = 1,
+};
 #define V4L2_CID_MPEG_VIDEO_MPEG2_LEVEL (V4L2_CID_CODEC_BASE + 270)
 enum v4l2_mpeg_video_mpeg2_level {
   V4L2_MPEG_VIDEO_MPEG2_LEVEL_LOW = 0,
@@ -1153,6 +1160,8 @@
 #define V4L2_H264_DECODE_PARAM_FLAG_IDR_PIC 0x01
 #define V4L2_H264_DECODE_PARAM_FLAG_FIELD_PIC 0x02
 #define V4L2_H264_DECODE_PARAM_FLAG_BOTTOM_FIELD 0x04
+#define V4L2_H264_DECODE_PARAM_FLAG_PFRAME 0x08
+#define V4L2_H264_DECODE_PARAM_FLAG_BFRAME 0x10
 #define V4L2_CID_STATELESS_H264_DECODE_PARAMS (V4L2_CID_CODEC_STATELESS_BASE + 7)
 struct v4l2_ctrl_h264_decode_params {
   struct v4l2_h264_dpb_entry dpb[V4L2_H264_NUM_DPB_ENTRIES];
@@ -1323,6 +1332,204 @@
   __u8 chroma_intra_quantiser_matrix[64];
   __u8 chroma_non_intra_quantiser_matrix[64];
 };
+#define V4L2_CID_STATELESS_HEVC_SPS (V4L2_CID_CODEC_STATELESS_BASE + 400)
+#define V4L2_CID_STATELESS_HEVC_PPS (V4L2_CID_CODEC_STATELESS_BASE + 401)
+#define V4L2_CID_STATELESS_HEVC_SLICE_PARAMS (V4L2_CID_CODEC_STATELESS_BASE + 402)
+#define V4L2_CID_STATELESS_HEVC_SCALING_MATRIX (V4L2_CID_CODEC_STATELESS_BASE + 403)
+#define V4L2_CID_STATELESS_HEVC_DECODE_PARAMS (V4L2_CID_CODEC_STATELESS_BASE + 404)
+#define V4L2_CID_STATELESS_HEVC_DECODE_MODE (V4L2_CID_CODEC_STATELESS_BASE + 405)
+#define V4L2_CID_STATELESS_HEVC_START_CODE (V4L2_CID_CODEC_STATELESS_BASE + 406)
+#define V4L2_CID_STATELESS_HEVC_ENTRY_POINT_OFFSETS (V4L2_CID_CODEC_STATELESS_BASE + 407)
+enum v4l2_stateless_hevc_decode_mode {
+  V4L2_STATELESS_HEVC_DECODE_MODE_SLICE_BASED,
+  V4L2_STATELESS_HEVC_DECODE_MODE_FRAME_BASED,
+};
+enum v4l2_stateless_hevc_start_code {
+  V4L2_STATELESS_HEVC_START_CODE_NONE,
+  V4L2_STATELESS_HEVC_START_CODE_ANNEX_B,
+};
+#define V4L2_HEVC_SLICE_TYPE_B 0
+#define V4L2_HEVC_SLICE_TYPE_P 1
+#define V4L2_HEVC_SLICE_TYPE_I 2
+#define V4L2_HEVC_SPS_FLAG_SEPARATE_COLOUR_PLANE (1ULL << 0)
+#define V4L2_HEVC_SPS_FLAG_SCALING_LIST_ENABLED (1ULL << 1)
+#define V4L2_HEVC_SPS_FLAG_AMP_ENABLED (1ULL << 2)
+#define V4L2_HEVC_SPS_FLAG_SAMPLE_ADAPTIVE_OFFSET (1ULL << 3)
+#define V4L2_HEVC_SPS_FLAG_PCM_ENABLED (1ULL << 4)
+#define V4L2_HEVC_SPS_FLAG_PCM_LOOP_FILTER_DISABLED (1ULL << 5)
+#define V4L2_HEVC_SPS_FLAG_LONG_TERM_REF_PICS_PRESENT (1ULL << 6)
+#define V4L2_HEVC_SPS_FLAG_SPS_TEMPORAL_MVP_ENABLED (1ULL << 7)
+#define V4L2_HEVC_SPS_FLAG_STRONG_INTRA_SMOOTHING_ENABLED (1ULL << 8)
+struct v4l2_ctrl_hevc_sps {
+  __u8 video_parameter_set_id;
+  __u8 seq_parameter_set_id;
+  __u16 pic_width_in_luma_samples;
+  __u16 pic_height_in_luma_samples;
+  __u8 bit_depth_luma_minus8;
+  __u8 bit_depth_chroma_minus8;
+  __u8 log2_max_pic_order_cnt_lsb_minus4;
+  __u8 sps_max_dec_pic_buffering_minus1;
+  __u8 sps_max_num_reorder_pics;
+  __u8 sps_max_latency_increase_plus1;
+  __u8 log2_min_luma_coding_block_size_minus3;
+  __u8 log2_diff_max_min_luma_coding_block_size;
+  __u8 log2_min_luma_transform_block_size_minus2;
+  __u8 log2_diff_max_min_luma_transform_block_size;
+  __u8 max_transform_hierarchy_depth_inter;
+  __u8 max_transform_hierarchy_depth_intra;
+  __u8 pcm_sample_bit_depth_luma_minus1;
+  __u8 pcm_sample_bit_depth_chroma_minus1;
+  __u8 log2_min_pcm_luma_coding_block_size_minus3;
+  __u8 log2_diff_max_min_pcm_luma_coding_block_size;
+  __u8 num_short_term_ref_pic_sets;
+  __u8 num_long_term_ref_pics_sps;
+  __u8 chroma_format_idc;
+  __u8 sps_max_sub_layers_minus1;
+  __u8 reserved[6];
+  __u64 flags;
+};
+#define V4L2_HEVC_PPS_FLAG_DEPENDENT_SLICE_SEGMENT_ENABLED (1ULL << 0)
+#define V4L2_HEVC_PPS_FLAG_OUTPUT_FLAG_PRESENT (1ULL << 1)
+#define V4L2_HEVC_PPS_FLAG_SIGN_DATA_HIDING_ENABLED (1ULL << 2)
+#define V4L2_HEVC_PPS_FLAG_CABAC_INIT_PRESENT (1ULL << 3)
+#define V4L2_HEVC_PPS_FLAG_CONSTRAINED_INTRA_PRED (1ULL << 4)
+#define V4L2_HEVC_PPS_FLAG_TRANSFORM_SKIP_ENABLED (1ULL << 5)
+#define V4L2_HEVC_PPS_FLAG_CU_QP_DELTA_ENABLED (1ULL << 6)
+#define V4L2_HEVC_PPS_FLAG_PPS_SLICE_CHROMA_QP_OFFSETS_PRESENT (1ULL << 7)
+#define V4L2_HEVC_PPS_FLAG_WEIGHTED_PRED (1ULL << 8)
+#define V4L2_HEVC_PPS_FLAG_WEIGHTED_BIPRED (1ULL << 9)
+#define V4L2_HEVC_PPS_FLAG_TRANSQUANT_BYPASS_ENABLED (1ULL << 10)
+#define V4L2_HEVC_PPS_FLAG_TILES_ENABLED (1ULL << 11)
+#define V4L2_HEVC_PPS_FLAG_ENTROPY_CODING_SYNC_ENABLED (1ULL << 12)
+#define V4L2_HEVC_PPS_FLAG_LOOP_FILTER_ACROSS_TILES_ENABLED (1ULL << 13)
+#define V4L2_HEVC_PPS_FLAG_PPS_LOOP_FILTER_ACROSS_SLICES_ENABLED (1ULL << 14)
+#define V4L2_HEVC_PPS_FLAG_DEBLOCKING_FILTER_OVERRIDE_ENABLED (1ULL << 15)
+#define V4L2_HEVC_PPS_FLAG_PPS_DISABLE_DEBLOCKING_FILTER (1ULL << 16)
+#define V4L2_HEVC_PPS_FLAG_LISTS_MODIFICATION_PRESENT (1ULL << 17)
+#define V4L2_HEVC_PPS_FLAG_SLICE_SEGMENT_HEADER_EXTENSION_PRESENT (1ULL << 18)
+#define V4L2_HEVC_PPS_FLAG_DEBLOCKING_FILTER_CONTROL_PRESENT (1ULL << 19)
+#define V4L2_HEVC_PPS_FLAG_UNIFORM_SPACING (1ULL << 20)
+struct v4l2_ctrl_hevc_pps {
+  __u8 pic_parameter_set_id;
+  __u8 num_extra_slice_header_bits;
+  __u8 num_ref_idx_l0_default_active_minus1;
+  __u8 num_ref_idx_l1_default_active_minus1;
+  __s8 init_qp_minus26;
+  __u8 diff_cu_qp_delta_depth;
+  __s8 pps_cb_qp_offset;
+  __s8 pps_cr_qp_offset;
+  __u8 num_tile_columns_minus1;
+  __u8 num_tile_rows_minus1;
+  __u8 column_width_minus1[20];
+  __u8 row_height_minus1[22];
+  __s8 pps_beta_offset_div2;
+  __s8 pps_tc_offset_div2;
+  __u8 log2_parallel_merge_level_minus2;
+  __u8 reserved;
+  __u64 flags;
+};
+#define V4L2_HEVC_DPB_ENTRY_LONG_TERM_REFERENCE 0x01
+#define V4L2_HEVC_SEI_PIC_STRUCT_FRAME 0
+#define V4L2_HEVC_SEI_PIC_STRUCT_TOP_FIELD 1
+#define V4L2_HEVC_SEI_PIC_STRUCT_BOTTOM_FIELD 2
+#define V4L2_HEVC_SEI_PIC_STRUCT_TOP_BOTTOM 3
+#define V4L2_HEVC_SEI_PIC_STRUCT_BOTTOM_TOP 4
+#define V4L2_HEVC_SEI_PIC_STRUCT_TOP_BOTTOM_TOP 5
+#define V4L2_HEVC_SEI_PIC_STRUCT_BOTTOM_TOP_BOTTOM 6
+#define V4L2_HEVC_SEI_PIC_STRUCT_FRAME_DOUBLING 7
+#define V4L2_HEVC_SEI_PIC_STRUCT_FRAME_TRIPLING 8
+#define V4L2_HEVC_SEI_PIC_STRUCT_TOP_PAIRED_PREVIOUS_BOTTOM 9
+#define V4L2_HEVC_SEI_PIC_STRUCT_BOTTOM_PAIRED_PREVIOUS_TOP 10
+#define V4L2_HEVC_SEI_PIC_STRUCT_TOP_PAIRED_NEXT_BOTTOM 11
+#define V4L2_HEVC_SEI_PIC_STRUCT_BOTTOM_PAIRED_NEXT_TOP 12
+#define V4L2_HEVC_DPB_ENTRIES_NUM_MAX 16
+struct v4l2_hevc_dpb_entry {
+  __u64 timestamp;
+  __u8 flags;
+  __u8 field_pic;
+  __u16 reserved;
+  __s32 pic_order_cnt_val;
+};
+struct v4l2_hevc_pred_weight_table {
+  __s8 delta_luma_weight_l0[V4L2_HEVC_DPB_ENTRIES_NUM_MAX];
+  __s8 luma_offset_l0[V4L2_HEVC_DPB_ENTRIES_NUM_MAX];
+  __s8 delta_chroma_weight_l0[V4L2_HEVC_DPB_ENTRIES_NUM_MAX][2];
+  __s8 chroma_offset_l0[V4L2_HEVC_DPB_ENTRIES_NUM_MAX][2];
+  __s8 delta_luma_weight_l1[V4L2_HEVC_DPB_ENTRIES_NUM_MAX];
+  __s8 luma_offset_l1[V4L2_HEVC_DPB_ENTRIES_NUM_MAX];
+  __s8 delta_chroma_weight_l1[V4L2_HEVC_DPB_ENTRIES_NUM_MAX][2];
+  __s8 chroma_offset_l1[V4L2_HEVC_DPB_ENTRIES_NUM_MAX][2];
+  __u8 luma_log2_weight_denom;
+  __s8 delta_chroma_log2_weight_denom;
+};
+#define V4L2_HEVC_SLICE_PARAMS_FLAG_SLICE_SAO_LUMA (1ULL << 0)
+#define V4L2_HEVC_SLICE_PARAMS_FLAG_SLICE_SAO_CHROMA (1ULL << 1)
+#define V4L2_HEVC_SLICE_PARAMS_FLAG_SLICE_TEMPORAL_MVP_ENABLED (1ULL << 2)
+#define V4L2_HEVC_SLICE_PARAMS_FLAG_MVD_L1_ZERO (1ULL << 3)
+#define V4L2_HEVC_SLICE_PARAMS_FLAG_CABAC_INIT (1ULL << 4)
+#define V4L2_HEVC_SLICE_PARAMS_FLAG_COLLOCATED_FROM_L0 (1ULL << 5)
+#define V4L2_HEVC_SLICE_PARAMS_FLAG_USE_INTEGER_MV (1ULL << 6)
+#define V4L2_HEVC_SLICE_PARAMS_FLAG_SLICE_DEBLOCKING_FILTER_DISABLED (1ULL << 7)
+#define V4L2_HEVC_SLICE_PARAMS_FLAG_SLICE_LOOP_FILTER_ACROSS_SLICES_ENABLED (1ULL << 8)
+#define V4L2_HEVC_SLICE_PARAMS_FLAG_DEPENDENT_SLICE_SEGMENT (1ULL << 9)
+struct v4l2_ctrl_hevc_slice_params {
+  __u32 bit_size;
+  __u32 data_byte_offset;
+  __u32 num_entry_point_offsets;
+  __u8 nal_unit_type;
+  __u8 nuh_temporal_id_plus1;
+  __u8 slice_type;
+  __u8 colour_plane_id;
+  __s32 slice_pic_order_cnt;
+  __u8 num_ref_idx_l0_active_minus1;
+  __u8 num_ref_idx_l1_active_minus1;
+  __u8 collocated_ref_idx;
+  __u8 five_minus_max_num_merge_cand;
+  __s8 slice_qp_delta;
+  __s8 slice_cb_qp_offset;
+  __s8 slice_cr_qp_offset;
+  __s8 slice_act_y_qp_offset;
+  __s8 slice_act_cb_qp_offset;
+  __s8 slice_act_cr_qp_offset;
+  __s8 slice_beta_offset_div2;
+  __s8 slice_tc_offset_div2;
+  __u8 pic_struct;
+  __u8 reserved0[3];
+  __u32 slice_segment_addr;
+  __u8 ref_idx_l0[V4L2_HEVC_DPB_ENTRIES_NUM_MAX];
+  __u8 ref_idx_l1[V4L2_HEVC_DPB_ENTRIES_NUM_MAX];
+  __u16 short_term_ref_pic_set_size;
+  __u16 long_term_ref_pic_set_size;
+  struct v4l2_hevc_pred_weight_table pred_weight_table;
+  __u8 reserved1[2];
+  __u64 flags;
+};
+#define V4L2_HEVC_DECODE_PARAM_FLAG_IRAP_PIC 0x1
+#define V4L2_HEVC_DECODE_PARAM_FLAG_IDR_PIC 0x2
+#define V4L2_HEVC_DECODE_PARAM_FLAG_NO_OUTPUT_OF_PRIOR 0x4
+struct v4l2_ctrl_hevc_decode_params {
+  __s32 pic_order_cnt_val;
+  __u16 short_term_ref_pic_set_size;
+  __u16 long_term_ref_pic_set_size;
+  __u8 num_active_dpb_entries;
+  __u8 num_poc_st_curr_before;
+  __u8 num_poc_st_curr_after;
+  __u8 num_poc_lt_curr;
+  __u8 poc_st_curr_before[V4L2_HEVC_DPB_ENTRIES_NUM_MAX];
+  __u8 poc_st_curr_after[V4L2_HEVC_DPB_ENTRIES_NUM_MAX];
+  __u8 poc_lt_curr[V4L2_HEVC_DPB_ENTRIES_NUM_MAX];
+  __u8 reserved[4];
+  struct v4l2_hevc_dpb_entry dpb[V4L2_HEVC_DPB_ENTRIES_NUM_MAX];
+  __u64 flags;
+};
+struct v4l2_ctrl_hevc_scaling_matrix {
+  __u8 scaling_list_4x4[6][16];
+  __u8 scaling_list_8x8[6][64];
+  __u8 scaling_list_16x16[6][64];
+  __u8 scaling_list_32x32[2][64];
+  __u8 scaling_list_dc_coef_16x16[6];
+  __u8 scaling_list_dc_coef_32x32[2];
+};
 #define V4L2_CID_COLORIMETRY_CLASS_BASE (V4L2_CTRL_CLASS_COLORIMETRY | 0x900)
 #define V4L2_CID_COLORIMETRY_CLASS (V4L2_CTRL_CLASS_COLORIMETRY | 1)
 #define V4L2_CID_COLORIMETRY_HDR10_CLL_INFO (V4L2_CID_COLORIMETRY_CLASS_BASE + 0)
diff --git a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/vbox_vmmdev_types.h b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/vbox_vmmdev_types.h
index 009f9a6..777a2bb 100644
--- a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/vbox_vmmdev_types.h
+++ b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/vbox_vmmdev_types.h
@@ -157,7 +157,7 @@
       __u32 offset;
     } page_list;
   } u;
-} __packed;
+} __attribute__((__packed__));
 struct vmmdev_hgcm_function_parameter64 {
   enum vmmdev_hgcm_function_parameter_type type;
   union {
@@ -169,13 +169,13 @@
         __u64 phys_addr;
         __u64 linear_addr;
       } u;
-    } __packed pointer;
+    } __attribute__((__packed__)) pointer;
     struct {
       __u32 size;
       __u32 offset;
     } page_list;
-  } __packed u;
-} __packed;
+  } __attribute__((__packed__)) u;
+} __attribute__((__packed__));
 #if __BITS_PER_LONG == 64
 #define vmmdev_hgcm_function_parameter vmmdev_hgcm_function_parameter64
 #else
diff --git a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/vdpa.h b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/vdpa.h
index b3e5d39..ed61cdd 100644
--- a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/vdpa.h
+++ b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/vdpa.h
@@ -28,6 +28,7 @@
   VDPA_CMD_DEV_DEL,
   VDPA_CMD_DEV_GET,
   VDPA_CMD_DEV_CONFIG_GET,
+  VDPA_CMD_DEV_VSTATS_GET,
 };
 enum vdpa_attr {
   VDPA_ATTR_UNSPEC,
@@ -48,6 +49,11 @@
   VDPA_ATTR_DEV_NEGOTIATED_FEATURES,
   VDPA_ATTR_DEV_MGMTDEV_MAX_VQS,
   VDPA_ATTR_DEV_SUPPORTED_FEATURES,
+  VDPA_ATTR_DEV_QUEUE_INDEX,
+  VDPA_ATTR_DEV_VENDOR_ATTR_NAME,
+  VDPA_ATTR_DEV_VENDOR_ATTR_VALUE,
+  VDPA_ATTR_DEV_FEATURES,
+  VDPA_ATTR_VDPA_DEV_SUPPORTED_FEATURES,
   VDPA_ATTR_MAX,
 };
 #endif
diff --git a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/vduse.h b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/vduse.h
index 2dc8c82..f0b6d6b 100644
--- a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/vduse.h
+++ b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/vduse.h
@@ -90,6 +90,22 @@
 };
 #define VDUSE_VQ_SETUP_KICKFD _IOW(VDUSE_BASE, 0x16, struct vduse_vq_eventfd)
 #define VDUSE_VQ_INJECT_IRQ _IOW(VDUSE_BASE, 0x17, __u32)
+struct vduse_iova_umem {
+  __u64 uaddr;
+  __u64 iova;
+  __u64 size;
+  __u64 reserved[3];
+};
+#define VDUSE_IOTLB_REG_UMEM _IOW(VDUSE_BASE, 0x18, struct vduse_iova_umem)
+#define VDUSE_IOTLB_DEREG_UMEM _IOW(VDUSE_BASE, 0x19, struct vduse_iova_umem)
+struct vduse_iova_info {
+  __u64 start;
+  __u64 last;
+#define VDUSE_IOVA_CAP_UMEM (1 << 0)
+  __u64 capability;
+  __u64 reserved[3];
+};
+#define VDUSE_IOTLB_GET_INFO _IOWR(VDUSE_BASE, 0x1a, struct vduse_iova_info)
 enum vduse_req_type {
   VDUSE_GET_VQ_STATE,
   VDUSE_SET_STATUS,
diff --git a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/version.h b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/version.h
index 2dfd696..ab95caf 100644
--- a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/version.h
+++ b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/version.h
@@ -16,8 +16,8 @@
  ***
  ****************************************************************************
  ****************************************************************************/
-#define LINUX_VERSION_CODE 332032
+#define LINUX_VERSION_CODE 393472
 #define KERNEL_VERSION(a,b,c) (((a) << 16) + ((b) << 8) + ((c) > 255 ? 255 : (c)))
-#define LINUX_VERSION_MAJOR 5
-#define LINUX_VERSION_PATCHLEVEL 17
+#define LINUX_VERSION_MAJOR 6
+#define LINUX_VERSION_PATCHLEVEL 1
 #define LINUX_VERSION_SUBLEVEL 0
diff --git a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/vfio.h b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/vfio.h
index e0f322b..dffa136 100644
--- a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/vfio.h
+++ b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/vfio.h
@@ -110,7 +110,7 @@
 #define VFIO_REGION_TYPE_PCI_VENDOR_MASK (0xffff)
 #define VFIO_REGION_TYPE_GFX (1)
 #define VFIO_REGION_TYPE_CCW (2)
-#define VFIO_REGION_TYPE_MIGRATION (3)
+#define VFIO_REGION_TYPE_MIGRATION_DEPRECATED (3)
 #define VFIO_REGION_SUBTYPE_INTEL_IGD_OPREGION (1)
 #define VFIO_REGION_SUBTYPE_INTEL_IGD_HOST_CFG (2)
 #define VFIO_REGION_SUBTYPE_INTEL_IGD_LPC_CFG (3)
@@ -130,17 +130,17 @@
 #define VFIO_REGION_SUBTYPE_CCW_ASYNC_CMD (1)
 #define VFIO_REGION_SUBTYPE_CCW_SCHIB (2)
 #define VFIO_REGION_SUBTYPE_CCW_CRW (3)
-#define VFIO_REGION_SUBTYPE_MIGRATION (1)
+#define VFIO_REGION_SUBTYPE_MIGRATION_DEPRECATED (1)
 struct vfio_device_migration_info {
   __u32 device_state;
-#define VFIO_DEVICE_STATE_STOP (0)
-#define VFIO_DEVICE_STATE_RUNNING (1 << 0)
-#define VFIO_DEVICE_STATE_SAVING (1 << 1)
-#define VFIO_DEVICE_STATE_RESUMING (1 << 2)
-#define VFIO_DEVICE_STATE_MASK (VFIO_DEVICE_STATE_RUNNING | VFIO_DEVICE_STATE_SAVING | VFIO_DEVICE_STATE_RESUMING)
-#define VFIO_DEVICE_STATE_VALID(state) (state & VFIO_DEVICE_STATE_RESUMING ? (state & VFIO_DEVICE_STATE_MASK) == VFIO_DEVICE_STATE_RESUMING : 1)
-#define VFIO_DEVICE_STATE_IS_ERROR(state) ((state & VFIO_DEVICE_STATE_MASK) == (VFIO_DEVICE_STATE_SAVING | VFIO_DEVICE_STATE_RESUMING))
-#define VFIO_DEVICE_STATE_SET_ERROR(state) ((state & ~VFIO_DEVICE_STATE_MASK) | VFIO_DEVICE_SATE_SAVING | VFIO_DEVICE_STATE_RESUMING)
+#define VFIO_DEVICE_STATE_V1_STOP (0)
+#define VFIO_DEVICE_STATE_V1_RUNNING (1 << 0)
+#define VFIO_DEVICE_STATE_V1_SAVING (1 << 1)
+#define VFIO_DEVICE_STATE_V1_RESUMING (1 << 2)
+#define VFIO_DEVICE_STATE_MASK (VFIO_DEVICE_STATE_V1_RUNNING | VFIO_DEVICE_STATE_V1_SAVING | VFIO_DEVICE_STATE_V1_RESUMING)
+#define VFIO_DEVICE_STATE_VALID(state) (state & VFIO_DEVICE_STATE_V1_RESUMING ? (state & VFIO_DEVICE_STATE_MASK) == VFIO_DEVICE_STATE_V1_RESUMING : 1)
+#define VFIO_DEVICE_STATE_IS_ERROR(state) ((state & VFIO_DEVICE_STATE_MASK) == (VFIO_DEVICE_STATE_V1_SAVING | VFIO_DEVICE_STATE_V1_RESUMING))
+#define VFIO_DEVICE_STATE_SET_ERROR(state) ((state & ~VFIO_DEVICE_STATE_MASK) | VFIO_DEVICE_STATE_V1_SAVING | VFIO_DEVICE_STATE_V1_RESUMING)
   __u32 reserved;
   __u64 pending_bytes;
   __u64 data_offset;
@@ -285,6 +285,51 @@
 };
 #define VFIO_DEVICE_FEATURE _IO(VFIO_TYPE, VFIO_BASE + 17)
 #define VFIO_DEVICE_FEATURE_PCI_VF_TOKEN (0)
+struct vfio_device_feature_migration {
+  __aligned_u64 flags;
+#define VFIO_MIGRATION_STOP_COPY (1 << 0)
+#define VFIO_MIGRATION_P2P (1 << 1)
+};
+#define VFIO_DEVICE_FEATURE_MIGRATION 1
+struct vfio_device_feature_mig_state {
+  __u32 device_state;
+  __s32 data_fd;
+};
+#define VFIO_DEVICE_FEATURE_MIG_DEVICE_STATE 2
+enum vfio_device_mig_state {
+  VFIO_DEVICE_STATE_ERROR = 0,
+  VFIO_DEVICE_STATE_STOP = 1,
+  VFIO_DEVICE_STATE_RUNNING = 2,
+  VFIO_DEVICE_STATE_STOP_COPY = 3,
+  VFIO_DEVICE_STATE_RESUMING = 4,
+  VFIO_DEVICE_STATE_RUNNING_P2P = 5,
+};
+#define VFIO_DEVICE_FEATURE_LOW_POWER_ENTRY 3
+struct vfio_device_low_power_entry_with_wakeup {
+  __s32 wakeup_eventfd;
+  __u32 reserved;
+};
+#define VFIO_DEVICE_FEATURE_LOW_POWER_ENTRY_WITH_WAKEUP 4
+#define VFIO_DEVICE_FEATURE_LOW_POWER_EXIT 5
+struct vfio_device_feature_dma_logging_control {
+  __aligned_u64 page_size;
+  __u32 num_ranges;
+  __u32 __reserved;
+  __aligned_u64 ranges;
+};
+struct vfio_device_feature_dma_logging_range {
+  __aligned_u64 iova;
+  __aligned_u64 length;
+};
+#define VFIO_DEVICE_FEATURE_DMA_LOGGING_START 6
+#define VFIO_DEVICE_FEATURE_DMA_LOGGING_STOP 7
+struct vfio_device_feature_dma_logging_report {
+  __aligned_u64 iova;
+  __aligned_u64 length;
+  __aligned_u64 page_size;
+  __aligned_u64 bitmap;
+};
+#define VFIO_DEVICE_FEATURE_DMA_LOGGING_REPORT 8
 struct vfio_iommu_type1_info {
   __u32 argsz;
   __u32 flags;
diff --git a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/vfio_ccw.h b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/vfio_ccw.h
index a6defc5..7bf08f5 100644
--- a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/vfio_ccw.h
+++ b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/vfio_ccw.h
@@ -27,19 +27,19 @@
 #define IRB_AREA_SIZE 96
   __u8 irb_area[IRB_AREA_SIZE];
   __u32 ret_code;
-} __packed;
+} __attribute__((__packed__));
 #define VFIO_CCW_ASYNC_CMD_HSCH (1 << 0)
 #define VFIO_CCW_ASYNC_CMD_CSCH (1 << 1)
 struct ccw_cmd_region {
   __u32 command;
   __u32 ret_code;
-} __packed;
+} __attribute__((__packed__));
 struct ccw_schib_region {
 #define SCHIB_AREA_SIZE 52
   __u8 schib_area[SCHIB_AREA_SIZE];
-} __packed;
+} __attribute__((__packed__));
 struct ccw_crw_region {
   __u32 crw;
   __u32 pad;
-} __packed;
+} __attribute__((__packed__));
 #endif
diff --git a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/vfio_zdev.h b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/vfio_zdev.h
index c678e9a..1c3a943 100644
--- a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/vfio_zdev.h
+++ b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/vfio_zdev.h
@@ -29,6 +29,7 @@
   __u16 fmb_length;
   __u8 pft;
   __u8 gid;
+  __u32 fh;
 };
 struct vfio_device_info_cap_zpci_group {
   struct vfio_info_cap_header header;
@@ -40,6 +41,8 @@
   __u16 noi;
   __u16 maxstbl;
   __u8 version;
+  __u8 reserved;
+  __u16 imaxstbl;
 };
 struct vfio_device_info_cap_zpci_util {
   struct vfio_info_cap_header header;
diff --git a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/vhost.h b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/vhost.h
index 53b01c4..e5b1327 100644
--- a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/vhost.h
+++ b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/vhost.h
@@ -43,8 +43,6 @@
 #define VHOST_SET_VRING_ERR _IOW(VHOST_VIRTIO, 0x22, struct vhost_vring_file)
 #define VHOST_SET_VRING_BUSYLOOP_TIMEOUT _IOW(VHOST_VIRTIO, 0x23, struct vhost_vring_state)
 #define VHOST_GET_VRING_BUSYLOOP_TIMEOUT _IOW(VHOST_VIRTIO, 0x24, struct vhost_vring_state)
-#define VHOST_BACKEND_F_IOTLB_MSG_V2 0x1
-#define VHOST_BACKEND_F_IOTLB_BATCH 0x2
 #define VHOST_SET_BACKEND_FEATURES _IOW(VHOST_VIRTIO, 0x25, __u64)
 #define VHOST_GET_BACKEND_FEATURES _IOR(VHOST_VIRTIO, 0x26, __u64)
 #define VHOST_NET_SET_BACKEND _IOW(VHOST_VIRTIO, 0x30, struct vhost_vring_file)
@@ -64,4 +62,11 @@
 #define VHOST_VDPA_GET_VRING_NUM _IOR(VHOST_VIRTIO, 0x76, __u16)
 #define VHOST_VDPA_SET_CONFIG_CALL _IOW(VHOST_VIRTIO, 0x77, int)
 #define VHOST_VDPA_GET_IOVA_RANGE _IOR(VHOST_VIRTIO, 0x78, struct vhost_vdpa_iova_range)
+#define VHOST_VDPA_GET_CONFIG_SIZE _IOR(VHOST_VIRTIO, 0x79, __u32)
+#define VHOST_VDPA_GET_VQS_COUNT _IOR(VHOST_VIRTIO, 0x80, __u32)
+#define VHOST_VDPA_GET_GROUP_NUM _IOR(VHOST_VIRTIO, 0x81, __u32)
+#define VHOST_VDPA_GET_AS_NUM _IOR(VHOST_VIRTIO, 0x7A, unsigned int)
+#define VHOST_VDPA_GET_VRING_GROUP _IOWR(VHOST_VIRTIO, 0x7B, struct vhost_vring_state)
+#define VHOST_VDPA_SET_GROUP_ASID _IOW(VHOST_VIRTIO, 0x7C, struct vhost_vring_state)
+#define VHOST_VDPA_SUSPEND _IO(VHOST_VIRTIO, 0x7D)
 #endif
diff --git a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/vhost_types.h b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/vhost_types.h
index 6b4cc77..32efa85 100644
--- a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/vhost_types.h
+++ b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/vhost_types.h
@@ -66,7 +66,7 @@
 };
 struct vhost_msg_v2 {
   __u32 type;
-  __u32 reserved;
+  __u32 asid;
   union {
     struct vhost_iotlb_msg iotlb;
     __u8 padding[64];
@@ -82,7 +82,7 @@
 struct vhost_memory {
   __u32 nregions;
   __u32 padding;
-  struct vhost_memory_region regions[0];
+  struct vhost_memory_region regions[];
 };
 #define VHOST_SCSI_ABI_VERSION 1
 struct vhost_scsi_target {
@@ -94,7 +94,7 @@
 struct vhost_vdpa_config {
   __u32 off;
   __u32 len;
-  __u8 buf[0];
+  __u8 buf[];
 };
 struct vhost_vdpa_iova_range {
   __u64 first;
@@ -102,4 +102,8 @@
 };
 #define VHOST_F_LOG_ALL 26
 #define VHOST_NET_F_VIRTIO_NET_HDR 27
+#define VHOST_BACKEND_F_IOTLB_MSG_V2 0x1
+#define VHOST_BACKEND_F_IOTLB_BATCH 0x2
+#define VHOST_BACKEND_F_IOTLB_ASID 0x3
+#define VHOST_BACKEND_F_SUSPEND 0x4
 #endif
diff --git a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/videodev2.h b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/videodev2.h
index 1cae711..3d8dd72 100644
--- a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/videodev2.h
+++ b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/videodev2.h
@@ -24,7 +24,7 @@
 #include <linux/types.h>
 #include <linux/v4l2-common.h>
 #include <linux/v4l2-controls.h>
-#define VIDEO_MAX_FRAME 32
+#define VIDEO_MAX_FRAME 64
 #define VIDEO_MAX_PLANES 8
 #define v4l2_fourcc(a,b,c,d) ((__u32) (a) | ((__u32) (b) << 8) | ((__u32) (c) << 16) | ((__u32) (d) << 24))
 #define v4l2_fourcc_be(a,b,c,d) (v4l2_fourcc(a, b, c, d) | (1U << 31))
@@ -185,7 +185,6 @@
 #define V4L2_CAP_SDR_OUTPUT 0x00400000
 #define V4L2_CAP_META_CAPTURE 0x00800000
 #define V4L2_CAP_READWRITE 0x01000000
-#define V4L2_CAP_ASYNCIO 0x02000000
 #define V4L2_CAP_STREAMING 0x04000000
 #define V4L2_CAP_META_OUTPUT 0x08000000
 #define V4L2_CAP_TOUCH 0x10000000
@@ -255,6 +254,7 @@
 #define V4L2_PIX_FMT_Y16_BE v4l2_fourcc_be('Y', '1', '6', ' ')
 #define V4L2_PIX_FMT_Y10BPACK v4l2_fourcc('Y', '1', '0', 'B')
 #define V4L2_PIX_FMT_Y10P v4l2_fourcc('Y', '1', '0', 'P')
+#define V4L2_PIX_FMT_IPU3_Y10 v4l2_fourcc('i', 'p', '3', 'y')
 #define V4L2_PIX_FMT_PAL8 v4l2_fourcc('P', 'A', 'L', '8')
 #define V4L2_PIX_FMT_UV8 v4l2_fourcc('U', 'V', '8', ' ')
 #define V4L2_PIX_FMT_YUYV v4l2_fourcc('Y', 'U', 'Y', 'V')
@@ -272,6 +272,8 @@
 #define V4L2_PIX_FMT_XYUV32 v4l2_fourcc('X', 'Y', 'U', 'V')
 #define V4L2_PIX_FMT_VUYA32 v4l2_fourcc('V', 'U', 'Y', 'A')
 #define V4L2_PIX_FMT_VUYX32 v4l2_fourcc('V', 'U', 'Y', 'X')
+#define V4L2_PIX_FMT_YUVA32 v4l2_fourcc('Y', 'U', 'V', 'A')
+#define V4L2_PIX_FMT_YUVX32 v4l2_fourcc('Y', 'U', 'V', 'X')
 #define V4L2_PIX_FMT_M420 v4l2_fourcc('M', '4', '2', '0')
 #define V4L2_PIX_FMT_NV12 v4l2_fourcc('N', 'V', '1', '2')
 #define V4L2_PIX_FMT_NV21 v4l2_fourcc('N', 'V', '2', '1')
@@ -279,6 +281,7 @@
 #define V4L2_PIX_FMT_NV61 v4l2_fourcc('N', 'V', '6', '1')
 #define V4L2_PIX_FMT_NV24 v4l2_fourcc('N', 'V', '2', '4')
 #define V4L2_PIX_FMT_NV42 v4l2_fourcc('N', 'V', '4', '2')
+#define V4L2_PIX_FMT_P010 v4l2_fourcc('P', '0', '1', '0')
 #define V4L2_PIX_FMT_NV12M v4l2_fourcc('N', 'M', '1', '2')
 #define V4L2_PIX_FMT_NV21M v4l2_fourcc('N', 'M', '2', '1')
 #define V4L2_PIX_FMT_NV16M v4l2_fourcc('N', 'M', '1', '6')
@@ -298,8 +301,11 @@
 #define V4L2_PIX_FMT_NV12_4L4 v4l2_fourcc('V', 'T', '1', '2')
 #define V4L2_PIX_FMT_NV12_16L16 v4l2_fourcc('H', 'M', '1', '2')
 #define V4L2_PIX_FMT_NV12_32L32 v4l2_fourcc('S', 'T', '1', '2')
+#define V4L2_PIX_FMT_P010_4L4 v4l2_fourcc('T', '0', '1', '0')
 #define V4L2_PIX_FMT_NV12MT v4l2_fourcc('T', 'M', '1', '2')
 #define V4L2_PIX_FMT_NV12MT_16X16 v4l2_fourcc('V', 'M', '1', '2')
+#define V4L2_PIX_FMT_NV12M_8L128 v4l2_fourcc('N', 'A', '1', '2')
+#define V4L2_PIX_FMT_NV12M_10BE_8L128 v4l2_fourcc_be('N', 'T', '1', '2')
 #define V4L2_PIX_FMT_SBGGR8 v4l2_fourcc('B', 'A', '8', '1')
 #define V4L2_PIX_FMT_SGBRG8 v4l2_fourcc('G', 'B', 'R', 'G')
 #define V4L2_PIX_FMT_SGRBG8 v4l2_fourcc('G', 'R', 'B', 'G')
@@ -365,6 +371,7 @@
 #define V4L2_PIX_FMT_FWHT v4l2_fourcc('F', 'W', 'H', 'T')
 #define V4L2_PIX_FMT_FWHT_STATELESS v4l2_fourcc('S', 'F', 'W', 'H')
 #define V4L2_PIX_FMT_H264_SLICE v4l2_fourcc('S', '2', '6', '4')
+#define V4L2_PIX_FMT_HEVC_SLICE v4l2_fourcc('S', '2', '6', '5')
 #define V4L2_PIX_FMT_CPIA1 v4l2_fourcc('C', 'P', 'I', 'A')
 #define V4L2_PIX_FMT_WNVA v4l2_fourcc('W', 'N', 'V', 'A')
 #define V4L2_PIX_FMT_SN9C10X v4l2_fourcc('S', '9', '1', '0')
@@ -399,6 +406,8 @@
 #define V4L2_PIX_FMT_INZI v4l2_fourcc('I', 'N', 'Z', 'I')
 #define V4L2_PIX_FMT_CNF4 v4l2_fourcc('C', 'N', 'F', '4')
 #define V4L2_PIX_FMT_HI240 v4l2_fourcc('H', 'I', '2', '4')
+#define V4L2_PIX_FMT_QC08C v4l2_fourcc('Q', '0', '8', 'C')
+#define V4L2_PIX_FMT_QC10C v4l2_fourcc('Q', '1', '0', 'C')
 #define V4L2_PIX_FMT_IPU3_SBGGR10 v4l2_fourcc('i', 'p', '3', 'b')
 #define V4L2_PIX_FMT_IPU3_SGBRG10 v4l2_fourcc('i', 'p', '3', 'g')
 #define V4L2_PIX_FMT_IPU3_SGRBG10 v4l2_fourcc('i', 'p', '3', 'G')
@@ -782,7 +791,7 @@
 #define V4L2_DV_FL_CAN_DETECT_REDUCED_FPS (1 << 9)
 #define V4L2_DV_BT_BLANKING_WIDTH(bt) ((bt)->hfrontporch + (bt)->hsync + (bt)->hbackporch)
 #define V4L2_DV_BT_FRAME_WIDTH(bt) ((bt)->width + V4L2_DV_BT_BLANKING_WIDTH(bt))
-#define V4L2_DV_BT_BLANKING_HEIGHT(bt) ((bt)->vfrontporch + (bt)->vsync + (bt)->vbackporch + (bt)->il_vfrontporch + (bt)->il_vsync + (bt)->il_vbackporch)
+#define V4L2_DV_BT_BLANKING_HEIGHT(bt) ((bt)->vfrontporch + (bt)->vsync + (bt)->vbackporch + ((bt)->interlaced ? ((bt)->il_vfrontporch + (bt)->il_vsync + (bt)->il_vbackporch) : 0))
 #define V4L2_DV_BT_FRAME_HEIGHT(bt) ((bt)->height + V4L2_DV_BT_BLANKING_HEIGHT(bt))
 struct v4l2_dv_timings {
   __u32 type;
@@ -901,6 +910,11 @@
     struct v4l2_ctrl_mpeg2_quantisation __user * p_mpeg2_quantisation;
     struct v4l2_ctrl_vp9_compressed_hdr __user * p_vp9_compressed_hdr_probs;
     struct v4l2_ctrl_vp9_frame __user * p_vp9_frame;
+    struct v4l2_ctrl_hevc_sps __user * p_hevc_sps;
+    struct v4l2_ctrl_hevc_pps __user * p_hevc_pps;
+    struct v4l2_ctrl_hevc_slice_params __user * p_hevc_slice_params;
+    struct v4l2_ctrl_hevc_scaling_matrix __user * p_hevc_scaling_matrix;
+    struct v4l2_ctrl_hevc_decode_params __user * p_hevc_decode_params;
     void __user * ptr;
   };
 } __attribute__((packed));
@@ -953,6 +967,11 @@
   V4L2_CTRL_TYPE_MPEG2_PICTURE = 0x0252,
   V4L2_CTRL_TYPE_VP9_COMPRESSED_HDR = 0x0260,
   V4L2_CTRL_TYPE_VP9_FRAME = 0x0261,
+  V4L2_CTRL_TYPE_HEVC_SPS = 0x0270,
+  V4L2_CTRL_TYPE_HEVC_PPS = 0x0271,
+  V4L2_CTRL_TYPE_HEVC_SLICE_PARAMS = 0x0272,
+  V4L2_CTRL_TYPE_HEVC_SCALING_MATRIX = 0x0273,
+  V4L2_CTRL_TYPE_HEVC_DECODE_PARAMS = 0x0274,
 };
 struct v4l2_queryctrl {
   __u32 id;
@@ -1000,6 +1019,7 @@
 #define V4L2_CTRL_FLAG_HAS_PAYLOAD 0x0100
 #define V4L2_CTRL_FLAG_EXECUTE_ON_WRITE 0x0200
 #define V4L2_CTRL_FLAG_MODIFY_LAYOUT 0x0400
+#define V4L2_CTRL_FLAG_DYNAMIC_ARRAY 0x0800
 #define V4L2_CTRL_FLAG_NEXT_CTRL 0x80000000
 #define V4L2_CTRL_FLAG_NEXT_COMPOUND 0x40000000
 #define V4L2_CID_MAX_CTRLS 1024
@@ -1303,6 +1323,7 @@
 #define V4L2_EVENT_CTRL_CH_VALUE (1 << 0)
 #define V4L2_EVENT_CTRL_CH_FLAGS (1 << 1)
 #define V4L2_EVENT_CTRL_CH_RANGE (1 << 2)
+#define V4L2_EVENT_CTRL_CH_DIMENSIONS (1 << 3)
 struct v4l2_event_ctrl {
   __u32 changes;
   __u32 type;
@@ -1474,4 +1495,5 @@
 #define BASE_VIDIOC_PRIVATE 192
 #define V4L2_PIX_FMT_HM12 V4L2_PIX_FMT_NV12_16L16
 #define V4L2_PIX_FMT_SUNXI_TILED_NV12 V4L2_PIX_FMT_NV12_32L32
+#define V4L2_CAP_ASYNCIO 0x02000000
 #endif
diff --git a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/virtio_9p.h b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/virtio_9p.h
index 1d9dfb1..2e05786 100644
--- a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/virtio_9p.h
+++ b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/virtio_9p.h
@@ -24,6 +24,6 @@
 #define VIRTIO_9P_MOUNT_TAG 0
 struct virtio_9p_config {
   __virtio16 tag_len;
-  __u8 tag[0];
+  __u8 tag[];
 } __attribute__((packed));
 #endif
diff --git a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/virtio_blk.h b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/virtio_blk.h
index f2f0381..0dd08c5 100644
--- a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/virtio_blk.h
+++ b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/virtio_blk.h
@@ -31,6 +31,7 @@
 #define VIRTIO_BLK_F_MQ 12
 #define VIRTIO_BLK_F_DISCARD 13
 #define VIRTIO_BLK_F_WRITE_ZEROES 14
+#define VIRTIO_BLK_F_SECURE_ERASE 16
 #ifndef VIRTIO_BLK_NO_LEGACY
 #define VIRTIO_BLK_F_BARRIER 0
 #define VIRTIO_BLK_F_SCSI 7
@@ -63,6 +64,9 @@
   __virtio32 max_write_zeroes_seg;
   __u8 write_zeroes_may_unmap;
   __u8 unused1[3];
+  __virtio32 max_secure_erase_sectors;
+  __virtio32 max_secure_erase_seg;
+  __virtio32 secure_erase_sector_alignment;
 } __attribute__((packed));
 #define VIRTIO_BLK_T_IN 0
 #define VIRTIO_BLK_T_OUT 1
@@ -73,6 +77,7 @@
 #define VIRTIO_BLK_T_GET_ID 8
 #define VIRTIO_BLK_T_DISCARD 11
 #define VIRTIO_BLK_T_WRITE_ZEROES 13
+#define VIRTIO_BLK_T_SECURE_ERASE 14
 #ifndef VIRTIO_BLK_NO_LEGACY
 #define VIRTIO_BLK_T_BARRIER 0x80000000
 #endif
diff --git a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/virtio_config.h b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/virtio_config.h
index 6198fd1..bdd2e73 100644
--- a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/virtio_config.h
+++ b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/virtio_config.h
@@ -26,7 +26,7 @@
 #define VIRTIO_CONFIG_S_NEEDS_RESET 0x40
 #define VIRTIO_CONFIG_S_FAILED 0x80
 #define VIRTIO_TRANSPORT_F_START 28
-#define VIRTIO_TRANSPORT_F_END 38
+#define VIRTIO_TRANSPORT_F_END 41
 #ifndef VIRTIO_CONFIG_NO_LEGACY
 #define VIRTIO_F_NOTIFY_ON_EMPTY 24
 #define VIRTIO_F_ANY_LAYOUT 27
@@ -35,6 +35,8 @@
 #define VIRTIO_F_ACCESS_PLATFORM 33
 #define VIRTIO_F_IOMMU_PLATFORM VIRTIO_F_ACCESS_PLATFORM
 #define VIRTIO_F_RING_PACKED 34
+#define VIRTIO_F_IN_ORDER 35
 #define VIRTIO_F_ORDER_PLATFORM 36
 #define VIRTIO_F_SR_IOV 37
+#define VIRTIO_F_RING_RESET 40
 #endif
diff --git a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/virtio_crypto.h b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/virtio_crypto.h
index 2ce760f..7d7561d 100644
--- a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/virtio_crypto.h
+++ b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/virtio_crypto.h
@@ -26,6 +26,7 @@
 #define VIRTIO_CRYPTO_SERVICE_HASH 1
 #define VIRTIO_CRYPTO_SERVICE_MAC 2
 #define VIRTIO_CRYPTO_SERVICE_AEAD 3
+#define VIRTIO_CRYPTO_SERVICE_AKCIPHER 4
 #define VIRTIO_CRYPTO_OPCODE(service,op) (((service) << 8) | (op))
 struct virtio_crypto_ctrl_header {
 #define VIRTIO_CRYPTO_CIPHER_CREATE_SESSION VIRTIO_CRYPTO_OPCODE(VIRTIO_CRYPTO_SERVICE_CIPHER, 0x02)
@@ -36,6 +37,8 @@
 #define VIRTIO_CRYPTO_MAC_DESTROY_SESSION VIRTIO_CRYPTO_OPCODE(VIRTIO_CRYPTO_SERVICE_MAC, 0x03)
 #define VIRTIO_CRYPTO_AEAD_CREATE_SESSION VIRTIO_CRYPTO_OPCODE(VIRTIO_CRYPTO_SERVICE_AEAD, 0x02)
 #define VIRTIO_CRYPTO_AEAD_DESTROY_SESSION VIRTIO_CRYPTO_OPCODE(VIRTIO_CRYPTO_SERVICE_AEAD, 0x03)
+#define VIRTIO_CRYPTO_AKCIPHER_CREATE_SESSION VIRTIO_CRYPTO_OPCODE(VIRTIO_CRYPTO_SERVICE_AKCIPHER, 0x04)
+#define VIRTIO_CRYPTO_AKCIPHER_DESTROY_SESSION VIRTIO_CRYPTO_OPCODE(VIRTIO_CRYPTO_SERVICE_AKCIPHER, 0x05)
   __le32 opcode;
   __le32 algo;
   __le32 flag;
@@ -137,6 +140,51 @@
   struct virtio_crypto_aead_session_para para;
   __u8 padding[32];
 };
+struct virtio_crypto_rsa_session_para {
+#define VIRTIO_CRYPTO_RSA_RAW_PADDING 0
+#define VIRTIO_CRYPTO_RSA_PKCS1_PADDING 1
+  __le32 padding_algo;
+#define VIRTIO_CRYPTO_RSA_NO_HASH 0
+#define VIRTIO_CRYPTO_RSA_MD2 1
+#define VIRTIO_CRYPTO_RSA_MD3 2
+#define VIRTIO_CRYPTO_RSA_MD4 3
+#define VIRTIO_CRYPTO_RSA_MD5 4
+#define VIRTIO_CRYPTO_RSA_SHA1 5
+#define VIRTIO_CRYPTO_RSA_SHA256 6
+#define VIRTIO_CRYPTO_RSA_SHA384 7
+#define VIRTIO_CRYPTO_RSA_SHA512 8
+#define VIRTIO_CRYPTO_RSA_SHA224 9
+  __le32 hash_algo;
+};
+struct virtio_crypto_ecdsa_session_para {
+#define VIRTIO_CRYPTO_CURVE_UNKNOWN 0
+#define VIRTIO_CRYPTO_CURVE_NIST_P192 1
+#define VIRTIO_CRYPTO_CURVE_NIST_P224 2
+#define VIRTIO_CRYPTO_CURVE_NIST_P256 3
+#define VIRTIO_CRYPTO_CURVE_NIST_P384 4
+#define VIRTIO_CRYPTO_CURVE_NIST_P521 5
+  __le32 curve_id;
+  __le32 padding;
+};
+struct virtio_crypto_akcipher_session_para {
+#define VIRTIO_CRYPTO_NO_AKCIPHER 0
+#define VIRTIO_CRYPTO_AKCIPHER_RSA 1
+#define VIRTIO_CRYPTO_AKCIPHER_DSA 2
+#define VIRTIO_CRYPTO_AKCIPHER_ECDSA 3
+  __le32 algo;
+#define VIRTIO_CRYPTO_AKCIPHER_KEY_TYPE_PUBLIC 1
+#define VIRTIO_CRYPTO_AKCIPHER_KEY_TYPE_PRIVATE 2
+  __le32 keytype;
+  __le32 keylen;
+  union {
+    struct virtio_crypto_rsa_session_para rsa;
+    struct virtio_crypto_ecdsa_session_para ecdsa;
+  } u;
+};
+struct virtio_crypto_akcipher_create_session_req {
+  struct virtio_crypto_akcipher_session_para para;
+  __u8 padding[36];
+};
 struct virtio_crypto_alg_chain_session_para {
 #define VIRTIO_CRYPTO_SYM_ALG_CHAIN_ORDER_HASH_THEN_CIPHER 1
 #define VIRTIO_CRYPTO_SYM_ALG_CHAIN_ORDER_CIPHER_THEN_HASH 2
@@ -180,6 +228,7 @@
     struct virtio_crypto_hash_create_session_req hash_create_session;
     struct virtio_crypto_mac_create_session_req mac_create_session;
     struct virtio_crypto_aead_create_session_req aead_create_session;
+    struct virtio_crypto_akcipher_create_session_req akcipher_create_session;
     struct virtio_crypto_destroy_session_req destroy_session;
     __u8 padding[56];
   } u;
@@ -191,6 +240,10 @@
 #define VIRTIO_CRYPTO_MAC VIRTIO_CRYPTO_OPCODE(VIRTIO_CRYPTO_SERVICE_MAC, 0x00)
 #define VIRTIO_CRYPTO_AEAD_ENCRYPT VIRTIO_CRYPTO_OPCODE(VIRTIO_CRYPTO_SERVICE_AEAD, 0x00)
 #define VIRTIO_CRYPTO_AEAD_DECRYPT VIRTIO_CRYPTO_OPCODE(VIRTIO_CRYPTO_SERVICE_AEAD, 0x01)
+#define VIRTIO_CRYPTO_AKCIPHER_ENCRYPT VIRTIO_CRYPTO_OPCODE(VIRTIO_CRYPTO_SERVICE_AKCIPHER, 0x00)
+#define VIRTIO_CRYPTO_AKCIPHER_DECRYPT VIRTIO_CRYPTO_OPCODE(VIRTIO_CRYPTO_SERVICE_AKCIPHER, 0x01)
+#define VIRTIO_CRYPTO_AKCIPHER_SIGN VIRTIO_CRYPTO_OPCODE(VIRTIO_CRYPTO_SERVICE_AKCIPHER, 0x02)
+#define VIRTIO_CRYPTO_AKCIPHER_VERIFY VIRTIO_CRYPTO_OPCODE(VIRTIO_CRYPTO_SERVICE_AKCIPHER, 0x03)
   __le32 opcode;
   __le32 algo;
   __le64 session_id;
@@ -256,6 +309,14 @@
   struct virtio_crypto_aead_para para;
   __u8 padding[32];
 };
+struct virtio_crypto_akcipher_para {
+  __le32 src_data_len;
+  __le32 dst_data_len;
+};
+struct virtio_crypto_akcipher_data_req {
+  struct virtio_crypto_akcipher_para para;
+  __u8 padding[40];
+};
 struct virtio_crypto_op_data_req {
   struct virtio_crypto_op_header header;
   union {
@@ -263,6 +324,7 @@
     struct virtio_crypto_hash_data_req hash_req;
     struct virtio_crypto_mac_data_req mac_req;
     struct virtio_crypto_aead_data_req aead_req;
+    struct virtio_crypto_akcipher_data_req akcipher_req;
     __u8 padding[48];
   } u;
 };
@@ -271,6 +333,8 @@
 #define VIRTIO_CRYPTO_BADMSG 2
 #define VIRTIO_CRYPTO_NOTSUPP 3
 #define VIRTIO_CRYPTO_INVSESS 4
+#define VIRTIO_CRYPTO_NOSPC 5
+#define VIRTIO_CRYPTO_KEY_REJECTED 6
 #define VIRTIO_CRYPTO_S_HW_READY (1 << 0)
 struct virtio_crypto_config {
   __le32 status;
@@ -284,7 +348,7 @@
   __le32 aead_algo;
   __le32 max_cipher_key_len;
   __le32 max_auth_key_len;
-  __le32 reserve;
+  __le32 akcipher_algo;
   __le64 max_size;
 };
 struct virtio_crypto_inhdr {
diff --git a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/virtio_ids.h b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/virtio_ids.h
index 2894700..b31ed93 100644
--- a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/virtio_ids.h
+++ b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/virtio_ids.h
@@ -57,11 +57,11 @@
 #define VIRTIO_ID_AUDIO_POLICY 39
 #define VIRTIO_ID_BT 40
 #define VIRTIO_ID_GPIO 41
-#define VIRTIO_TRANS_ID_NET 1000
-#define VIRTIO_TRANS_ID_BLOCK 1001
-#define VIRTIO_TRANS_ID_BALLOON 1002
-#define VIRTIO_TRANS_ID_CONSOLE 1003
-#define VIRTIO_TRANS_ID_SCSI 1004
-#define VIRTIO_TRANS_ID_RNG 1005
-#define VIRTIO_TRANS_ID_9P 1009
+#define VIRTIO_TRANS_ID_NET 0x1000
+#define VIRTIO_TRANS_ID_BLOCK 0x1001
+#define VIRTIO_TRANS_ID_BALLOON 0x1002
+#define VIRTIO_TRANS_ID_CONSOLE 0x1003
+#define VIRTIO_TRANS_ID_SCSI 0x1004
+#define VIRTIO_TRANS_ID_RNG 0x1005
+#define VIRTIO_TRANS_ID_9P 0x1009
 #endif
diff --git a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/virtio_net.h b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/virtio_net.h
index 2d92904..6fe90aa 100644
--- a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/virtio_net.h
+++ b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/virtio_net.h
@@ -45,6 +45,7 @@
 #define VIRTIO_NET_F_GUEST_ANNOUNCE 21
 #define VIRTIO_NET_F_MQ 22
 #define VIRTIO_NET_F_CTRL_MAC_ADDR 23
+#define VIRTIO_NET_F_NOTF_COAL 53
 #define VIRTIO_NET_F_HASH_REPORT 57
 #define VIRTIO_NET_F_RSS 60
 #define VIRTIO_NET_F_RSC_EXT 61
@@ -186,4 +187,15 @@
 #define VIRTIO_NET_CTRL_MQ_HASH_CONFIG 2
 #define VIRTIO_NET_CTRL_GUEST_OFFLOADS 5
 #define VIRTIO_NET_CTRL_GUEST_OFFLOADS_SET 0
+#define VIRTIO_NET_CTRL_NOTF_COAL 6
+struct virtio_net_ctrl_coal_tx {
+  __le32 tx_max_packets;
+  __le32 tx_usecs;
+};
+#define VIRTIO_NET_CTRL_NOTF_COAL_TX_SET 0
+struct virtio_net_ctrl_coal_rx {
+  __le32 rx_max_packets;
+  __le32 rx_usecs;
+};
+#define VIRTIO_NET_CTRL_NOTF_COAL_RX_SET 1
 #endif
diff --git a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/virtio_pci.h b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/virtio_pci.h
index e6d2731..94ca0a2 100644
--- a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/virtio_pci.h
+++ b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/virtio_pci.h
@@ -117,5 +117,7 @@
 #define VIRTIO_PCI_COMMON_Q_AVAILHI 44
 #define VIRTIO_PCI_COMMON_Q_USEDLO 48
 #define VIRTIO_PCI_COMMON_Q_USEDHI 52
+#define VIRTIO_PCI_COMMON_Q_NDATA 56
+#define VIRTIO_PCI_COMMON_Q_RESET 58
 #endif
 #endif
diff --git a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/wmi.h b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/wmi.h
index 26f54d9..7b72056 100644
--- a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/wmi.h
+++ b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/wmi.h
@@ -30,17 +30,17 @@
   __u16 cmd_select;
   volatile __u32 input[4];
   volatile __u32 output[4];
-} __packed;
+} __attribute__((__packed__));
 struct dell_wmi_extensions {
   __u32 argattrib;
   __u32 blength;
   __u8 data[];
-} __packed;
+} __attribute__((__packed__));
 struct dell_wmi_smbios_buffer {
   __u64 length;
   struct calling_interface_buffer std;
   struct dell_wmi_extensions ext;
-} __packed;
+} __attribute__((__packed__));
 #define CLASS_TOKEN_READ 0
 #define CLASS_TOKEN_WRITE 1
 #define SELECT_TOKEN_STD 0
diff --git a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/xfrm.h b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/xfrm.h
index f4df95f..77ded42 100644
--- a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/xfrm.h
+++ b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/xfrm.h
@@ -35,7 +35,7 @@
   __u8 ctx_alg;
   __u16 ctx_len;
   __u32 ctx_sid;
-  char ctx_str[0];
+  char ctx_str[];
 };
 #define XFRM_SC_DOI_RESERVED 0
 #define XFRM_SC_DOI_LSM 1
@@ -85,24 +85,24 @@
   __u32 oseq_hi;
   __u32 seq_hi;
   __u32 replay_window;
-  __u32 bmp[0];
+  __u32 bmp[];
 };
 struct xfrm_algo {
   char alg_name[64];
   unsigned int alg_key_len;
-  char alg_key[0];
+  char alg_key[];
 };
 struct xfrm_algo_auth {
   char alg_name[64];
   unsigned int alg_key_len;
   unsigned int alg_trunc_len;
-  char alg_key[0];
+  char alg_key[];
 };
 struct xfrm_algo_aead {
   char alg_name[64];
   unsigned int alg_key_len;
   unsigned int alg_icv_len;
-  char alg_key[0];
+  char alg_key[];
 };
 struct xfrm_stats {
   __u32 replay_window;
diff --git a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/zorro.h b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/zorro.h
index f8e47a1..86320aa 100644
--- a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/zorro.h
+++ b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/linux/zorro.h
@@ -42,7 +42,7 @@
   __u8 ln_Type;
   __s8 ln_Pri;
   __be32 ln_Name;
-} __packed;
+} __attribute__((__packed__));
 struct ExpansionRom {
   __u8 er_Type;
   __u8 er_Product;
@@ -55,7 +55,7 @@
   __u8 er_Reserved0d;
   __u8 er_Reserved0e;
   __u8 er_Reserved0f;
-} __packed;
+} __attribute__((__packed__));
 #define ERT_TYPEMASK 0xc0
 #define ERT_ZORROII 0xc0
 #define ERT_ZORROIII 0x80
@@ -73,6 +73,6 @@
   __be32 cd_Driver;
   __be32 cd_NextCD;
   __be32 cd_Unused[4];
-} __packed;
+} __attribute__((__packed__));
 #define ZORRO_NUM_AUTO 16
 #endif
diff --git a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/misc/fastrpc.h b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/misc/fastrpc.h
index 62955ec..e82b961 100644
--- a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/misc/fastrpc.h
+++ b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/misc/fastrpc.h
@@ -27,11 +27,32 @@
 #define FASTRPC_IOCTL_MMAP _IOWR('R', 6, struct fastrpc_req_mmap)
 #define FASTRPC_IOCTL_MUNMAP _IOWR('R', 7, struct fastrpc_req_munmap)
 #define FASTRPC_IOCTL_INIT_ATTACH_SNS _IO('R', 8)
+#define FASTRPC_IOCTL_MEM_MAP _IOWR('R', 10, struct fastrpc_mem_map)
+#define FASTRPC_IOCTL_MEM_UNMAP _IOWR('R', 11, struct fastrpc_mem_unmap)
+#define FASTRPC_IOCTL_GET_DSP_INFO _IOWR('R', 13, struct fastrpc_ioctl_capability)
+enum fastrpc_map_flags {
+  FASTRPC_MAP_STATIC = 0,
+  FASTRPC_MAP_RESERVED,
+  FASTRPC_MAP_FD = 2,
+  FASTRPC_MAP_FD_DELAYED,
+  FASTRPC_MAP_FD_NOMAP = 16,
+  FASTRPC_MAP_MAX,
+};
+enum fastrpc_proc_attr {
+  FASTRPC_MODE_DEBUG = (1 << 0),
+  FASTRPC_MODE_PTRACE = (1 << 1),
+  FASTRPC_MODE_CRC = (1 << 2),
+  FASTRPC_MODE_UNSIGNED_MODULE = (1 << 3),
+  FASTRPC_MODE_ADAPTIVE_QOS = (1 << 4),
+  FASTRPC_MODE_SYSTEM_PROCESS = (1 << 5),
+  FASTRPC_MODE_PRIVILEGED = (1 << 6),
+};
+#define FASTRPC_ATTR_SECUREMAP (1)
 struct fastrpc_invoke_args {
   __u64 ptr;
   __u64 length;
   __s32 fd;
-  __u32 reserved;
+  __u32 attr;
 };
 struct fastrpc_invoke {
   __u32 handle;
@@ -57,8 +78,32 @@
   __u64 size;
   __u64 vaddrout;
 };
+struct fastrpc_mem_map {
+  __s32 version;
+  __s32 fd;
+  __s32 offset;
+  __u32 flags;
+  __u64 vaddrin;
+  __u64 length;
+  __u64 vaddrout;
+  __s32 attrs;
+  __s32 reserved[4];
+};
 struct fastrpc_req_munmap {
   __u64 vaddrout;
   __u64 size;
 };
+struct fastrpc_mem_unmap {
+  __s32 vesion;
+  __s32 fd;
+  __u64 vaddr;
+  __u64 length;
+  __s32 reserved[5];
+};
+struct fastrpc_ioctl_capability {
+  __u32 domain;
+  __u32 attribute_id;
+  __u32 capability;
+  __u32 reserved[4];
+};
 #endif
diff --git a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/misc/habanalabs.h b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/misc/habanalabs.h
index 6e3439a..b6140bc 100644
--- a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/misc/habanalabs.h
+++ b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/misc/habanalabs.h
@@ -24,6 +24,7 @@
 #define GAUDI_DRIVER_SRAM_RESERVED_SIZE_FROM_START 0x80
 #define GAUDI_FIRST_AVAILABLE_W_S_SYNC_OBJECT 144
 #define GAUDI_FIRST_AVAILABLE_W_S_MONITOR 72
+#define TS_MAX_ELEMENTS_NUM (1 << 20)
 enum goya_queue_id {
   GOYA_QUEUE_ID_DMA_0 = 0,
   GOYA_QUEUE_ID_DMA_1 = 1,
@@ -158,6 +159,270 @@
   GAUDI_QUEUE_ID_NIC_9_3 = 112,
   GAUDI_QUEUE_ID_SIZE
 };
+enum gaudi2_queue_id {
+  GAUDI2_QUEUE_ID_PDMA_0_0 = 0,
+  GAUDI2_QUEUE_ID_PDMA_0_1 = 1,
+  GAUDI2_QUEUE_ID_PDMA_0_2 = 2,
+  GAUDI2_QUEUE_ID_PDMA_0_3 = 3,
+  GAUDI2_QUEUE_ID_PDMA_1_0 = 4,
+  GAUDI2_QUEUE_ID_PDMA_1_1 = 5,
+  GAUDI2_QUEUE_ID_PDMA_1_2 = 6,
+  GAUDI2_QUEUE_ID_PDMA_1_3 = 7,
+  GAUDI2_QUEUE_ID_DCORE0_EDMA_0_0 = 8,
+  GAUDI2_QUEUE_ID_DCORE0_EDMA_0_1 = 9,
+  GAUDI2_QUEUE_ID_DCORE0_EDMA_0_2 = 10,
+  GAUDI2_QUEUE_ID_DCORE0_EDMA_0_3 = 11,
+  GAUDI2_QUEUE_ID_DCORE0_EDMA_1_0 = 12,
+  GAUDI2_QUEUE_ID_DCORE0_EDMA_1_1 = 13,
+  GAUDI2_QUEUE_ID_DCORE0_EDMA_1_2 = 14,
+  GAUDI2_QUEUE_ID_DCORE0_EDMA_1_3 = 15,
+  GAUDI2_QUEUE_ID_DCORE0_MME_0_0 = 16,
+  GAUDI2_QUEUE_ID_DCORE0_MME_0_1 = 17,
+  GAUDI2_QUEUE_ID_DCORE0_MME_0_2 = 18,
+  GAUDI2_QUEUE_ID_DCORE0_MME_0_3 = 19,
+  GAUDI2_QUEUE_ID_DCORE0_TPC_0_0 = 20,
+  GAUDI2_QUEUE_ID_DCORE0_TPC_0_1 = 21,
+  GAUDI2_QUEUE_ID_DCORE0_TPC_0_2 = 22,
+  GAUDI2_QUEUE_ID_DCORE0_TPC_0_3 = 23,
+  GAUDI2_QUEUE_ID_DCORE0_TPC_1_0 = 24,
+  GAUDI2_QUEUE_ID_DCORE0_TPC_1_1 = 25,
+  GAUDI2_QUEUE_ID_DCORE0_TPC_1_2 = 26,
+  GAUDI2_QUEUE_ID_DCORE0_TPC_1_3 = 27,
+  GAUDI2_QUEUE_ID_DCORE0_TPC_2_0 = 28,
+  GAUDI2_QUEUE_ID_DCORE0_TPC_2_1 = 29,
+  GAUDI2_QUEUE_ID_DCORE0_TPC_2_2 = 30,
+  GAUDI2_QUEUE_ID_DCORE0_TPC_2_3 = 31,
+  GAUDI2_QUEUE_ID_DCORE0_TPC_3_0 = 32,
+  GAUDI2_QUEUE_ID_DCORE0_TPC_3_1 = 33,
+  GAUDI2_QUEUE_ID_DCORE0_TPC_3_2 = 34,
+  GAUDI2_QUEUE_ID_DCORE0_TPC_3_3 = 35,
+  GAUDI2_QUEUE_ID_DCORE0_TPC_4_0 = 36,
+  GAUDI2_QUEUE_ID_DCORE0_TPC_4_1 = 37,
+  GAUDI2_QUEUE_ID_DCORE0_TPC_4_2 = 38,
+  GAUDI2_QUEUE_ID_DCORE0_TPC_4_3 = 39,
+  GAUDI2_QUEUE_ID_DCORE0_TPC_5_0 = 40,
+  GAUDI2_QUEUE_ID_DCORE0_TPC_5_1 = 41,
+  GAUDI2_QUEUE_ID_DCORE0_TPC_5_2 = 42,
+  GAUDI2_QUEUE_ID_DCORE0_TPC_5_3 = 43,
+  GAUDI2_QUEUE_ID_DCORE0_TPC_6_0 = 44,
+  GAUDI2_QUEUE_ID_DCORE0_TPC_6_1 = 45,
+  GAUDI2_QUEUE_ID_DCORE0_TPC_6_2 = 46,
+  GAUDI2_QUEUE_ID_DCORE0_TPC_6_3 = 47,
+  GAUDI2_QUEUE_ID_DCORE1_EDMA_0_0 = 48,
+  GAUDI2_QUEUE_ID_DCORE1_EDMA_0_1 = 49,
+  GAUDI2_QUEUE_ID_DCORE1_EDMA_0_2 = 50,
+  GAUDI2_QUEUE_ID_DCORE1_EDMA_0_3 = 51,
+  GAUDI2_QUEUE_ID_DCORE1_EDMA_1_0 = 52,
+  GAUDI2_QUEUE_ID_DCORE1_EDMA_1_1 = 53,
+  GAUDI2_QUEUE_ID_DCORE1_EDMA_1_2 = 54,
+  GAUDI2_QUEUE_ID_DCORE1_EDMA_1_3 = 55,
+  GAUDI2_QUEUE_ID_DCORE1_MME_0_0 = 56,
+  GAUDI2_QUEUE_ID_DCORE1_MME_0_1 = 57,
+  GAUDI2_QUEUE_ID_DCORE1_MME_0_2 = 58,
+  GAUDI2_QUEUE_ID_DCORE1_MME_0_3 = 59,
+  GAUDI2_QUEUE_ID_DCORE1_TPC_0_0 = 60,
+  GAUDI2_QUEUE_ID_DCORE1_TPC_0_1 = 61,
+  GAUDI2_QUEUE_ID_DCORE1_TPC_0_2 = 62,
+  GAUDI2_QUEUE_ID_DCORE1_TPC_0_3 = 63,
+  GAUDI2_QUEUE_ID_DCORE1_TPC_1_0 = 64,
+  GAUDI2_QUEUE_ID_DCORE1_TPC_1_1 = 65,
+  GAUDI2_QUEUE_ID_DCORE1_TPC_1_2 = 66,
+  GAUDI2_QUEUE_ID_DCORE1_TPC_1_3 = 67,
+  GAUDI2_QUEUE_ID_DCORE1_TPC_2_0 = 68,
+  GAUDI2_QUEUE_ID_DCORE1_TPC_2_1 = 69,
+  GAUDI2_QUEUE_ID_DCORE1_TPC_2_2 = 70,
+  GAUDI2_QUEUE_ID_DCORE1_TPC_2_3 = 71,
+  GAUDI2_QUEUE_ID_DCORE1_TPC_3_0 = 72,
+  GAUDI2_QUEUE_ID_DCORE1_TPC_3_1 = 73,
+  GAUDI2_QUEUE_ID_DCORE1_TPC_3_2 = 74,
+  GAUDI2_QUEUE_ID_DCORE1_TPC_3_3 = 75,
+  GAUDI2_QUEUE_ID_DCORE1_TPC_4_0 = 76,
+  GAUDI2_QUEUE_ID_DCORE1_TPC_4_1 = 77,
+  GAUDI2_QUEUE_ID_DCORE1_TPC_4_2 = 78,
+  GAUDI2_QUEUE_ID_DCORE1_TPC_4_3 = 79,
+  GAUDI2_QUEUE_ID_DCORE1_TPC_5_0 = 80,
+  GAUDI2_QUEUE_ID_DCORE1_TPC_5_1 = 81,
+  GAUDI2_QUEUE_ID_DCORE1_TPC_5_2 = 82,
+  GAUDI2_QUEUE_ID_DCORE1_TPC_5_3 = 83,
+  GAUDI2_QUEUE_ID_DCORE2_EDMA_0_0 = 84,
+  GAUDI2_QUEUE_ID_DCORE2_EDMA_0_1 = 85,
+  GAUDI2_QUEUE_ID_DCORE2_EDMA_0_2 = 86,
+  GAUDI2_QUEUE_ID_DCORE2_EDMA_0_3 = 87,
+  GAUDI2_QUEUE_ID_DCORE2_EDMA_1_0 = 88,
+  GAUDI2_QUEUE_ID_DCORE2_EDMA_1_1 = 89,
+  GAUDI2_QUEUE_ID_DCORE2_EDMA_1_2 = 90,
+  GAUDI2_QUEUE_ID_DCORE2_EDMA_1_3 = 91,
+  GAUDI2_QUEUE_ID_DCORE2_MME_0_0 = 92,
+  GAUDI2_QUEUE_ID_DCORE2_MME_0_1 = 93,
+  GAUDI2_QUEUE_ID_DCORE2_MME_0_2 = 94,
+  GAUDI2_QUEUE_ID_DCORE2_MME_0_3 = 95,
+  GAUDI2_QUEUE_ID_DCORE2_TPC_0_0 = 96,
+  GAUDI2_QUEUE_ID_DCORE2_TPC_0_1 = 97,
+  GAUDI2_QUEUE_ID_DCORE2_TPC_0_2 = 98,
+  GAUDI2_QUEUE_ID_DCORE2_TPC_0_3 = 99,
+  GAUDI2_QUEUE_ID_DCORE2_TPC_1_0 = 100,
+  GAUDI2_QUEUE_ID_DCORE2_TPC_1_1 = 101,
+  GAUDI2_QUEUE_ID_DCORE2_TPC_1_2 = 102,
+  GAUDI2_QUEUE_ID_DCORE2_TPC_1_3 = 103,
+  GAUDI2_QUEUE_ID_DCORE2_TPC_2_0 = 104,
+  GAUDI2_QUEUE_ID_DCORE2_TPC_2_1 = 105,
+  GAUDI2_QUEUE_ID_DCORE2_TPC_2_2 = 106,
+  GAUDI2_QUEUE_ID_DCORE2_TPC_2_3 = 107,
+  GAUDI2_QUEUE_ID_DCORE2_TPC_3_0 = 108,
+  GAUDI2_QUEUE_ID_DCORE2_TPC_3_1 = 109,
+  GAUDI2_QUEUE_ID_DCORE2_TPC_3_2 = 110,
+  GAUDI2_QUEUE_ID_DCORE2_TPC_3_3 = 111,
+  GAUDI2_QUEUE_ID_DCORE2_TPC_4_0 = 112,
+  GAUDI2_QUEUE_ID_DCORE2_TPC_4_1 = 113,
+  GAUDI2_QUEUE_ID_DCORE2_TPC_4_2 = 114,
+  GAUDI2_QUEUE_ID_DCORE2_TPC_4_3 = 115,
+  GAUDI2_QUEUE_ID_DCORE2_TPC_5_0 = 116,
+  GAUDI2_QUEUE_ID_DCORE2_TPC_5_1 = 117,
+  GAUDI2_QUEUE_ID_DCORE2_TPC_5_2 = 118,
+  GAUDI2_QUEUE_ID_DCORE2_TPC_5_3 = 119,
+  GAUDI2_QUEUE_ID_DCORE3_EDMA_0_0 = 120,
+  GAUDI2_QUEUE_ID_DCORE3_EDMA_0_1 = 121,
+  GAUDI2_QUEUE_ID_DCORE3_EDMA_0_2 = 122,
+  GAUDI2_QUEUE_ID_DCORE3_EDMA_0_3 = 123,
+  GAUDI2_QUEUE_ID_DCORE3_EDMA_1_0 = 124,
+  GAUDI2_QUEUE_ID_DCORE3_EDMA_1_1 = 125,
+  GAUDI2_QUEUE_ID_DCORE3_EDMA_1_2 = 126,
+  GAUDI2_QUEUE_ID_DCORE3_EDMA_1_3 = 127,
+  GAUDI2_QUEUE_ID_DCORE3_MME_0_0 = 128,
+  GAUDI2_QUEUE_ID_DCORE3_MME_0_1 = 129,
+  GAUDI2_QUEUE_ID_DCORE3_MME_0_2 = 130,
+  GAUDI2_QUEUE_ID_DCORE3_MME_0_3 = 131,
+  GAUDI2_QUEUE_ID_DCORE3_TPC_0_0 = 132,
+  GAUDI2_QUEUE_ID_DCORE3_TPC_0_1 = 133,
+  GAUDI2_QUEUE_ID_DCORE3_TPC_0_2 = 134,
+  GAUDI2_QUEUE_ID_DCORE3_TPC_0_3 = 135,
+  GAUDI2_QUEUE_ID_DCORE3_TPC_1_0 = 136,
+  GAUDI2_QUEUE_ID_DCORE3_TPC_1_1 = 137,
+  GAUDI2_QUEUE_ID_DCORE3_TPC_1_2 = 138,
+  GAUDI2_QUEUE_ID_DCORE3_TPC_1_3 = 139,
+  GAUDI2_QUEUE_ID_DCORE3_TPC_2_0 = 140,
+  GAUDI2_QUEUE_ID_DCORE3_TPC_2_1 = 141,
+  GAUDI2_QUEUE_ID_DCORE3_TPC_2_2 = 142,
+  GAUDI2_QUEUE_ID_DCORE3_TPC_2_3 = 143,
+  GAUDI2_QUEUE_ID_DCORE3_TPC_3_0 = 144,
+  GAUDI2_QUEUE_ID_DCORE3_TPC_3_1 = 145,
+  GAUDI2_QUEUE_ID_DCORE3_TPC_3_2 = 146,
+  GAUDI2_QUEUE_ID_DCORE3_TPC_3_3 = 147,
+  GAUDI2_QUEUE_ID_DCORE3_TPC_4_0 = 148,
+  GAUDI2_QUEUE_ID_DCORE3_TPC_4_1 = 149,
+  GAUDI2_QUEUE_ID_DCORE3_TPC_4_2 = 150,
+  GAUDI2_QUEUE_ID_DCORE3_TPC_4_3 = 151,
+  GAUDI2_QUEUE_ID_DCORE3_TPC_5_0 = 152,
+  GAUDI2_QUEUE_ID_DCORE3_TPC_5_1 = 153,
+  GAUDI2_QUEUE_ID_DCORE3_TPC_5_2 = 154,
+  GAUDI2_QUEUE_ID_DCORE3_TPC_5_3 = 155,
+  GAUDI2_QUEUE_ID_NIC_0_0 = 156,
+  GAUDI2_QUEUE_ID_NIC_0_1 = 157,
+  GAUDI2_QUEUE_ID_NIC_0_2 = 158,
+  GAUDI2_QUEUE_ID_NIC_0_3 = 159,
+  GAUDI2_QUEUE_ID_NIC_1_0 = 160,
+  GAUDI2_QUEUE_ID_NIC_1_1 = 161,
+  GAUDI2_QUEUE_ID_NIC_1_2 = 162,
+  GAUDI2_QUEUE_ID_NIC_1_3 = 163,
+  GAUDI2_QUEUE_ID_NIC_2_0 = 164,
+  GAUDI2_QUEUE_ID_NIC_2_1 = 165,
+  GAUDI2_QUEUE_ID_NIC_2_2 = 166,
+  GAUDI2_QUEUE_ID_NIC_2_3 = 167,
+  GAUDI2_QUEUE_ID_NIC_3_0 = 168,
+  GAUDI2_QUEUE_ID_NIC_3_1 = 169,
+  GAUDI2_QUEUE_ID_NIC_3_2 = 170,
+  GAUDI2_QUEUE_ID_NIC_3_3 = 171,
+  GAUDI2_QUEUE_ID_NIC_4_0 = 172,
+  GAUDI2_QUEUE_ID_NIC_4_1 = 173,
+  GAUDI2_QUEUE_ID_NIC_4_2 = 174,
+  GAUDI2_QUEUE_ID_NIC_4_3 = 175,
+  GAUDI2_QUEUE_ID_NIC_5_0 = 176,
+  GAUDI2_QUEUE_ID_NIC_5_1 = 177,
+  GAUDI2_QUEUE_ID_NIC_5_2 = 178,
+  GAUDI2_QUEUE_ID_NIC_5_3 = 179,
+  GAUDI2_QUEUE_ID_NIC_6_0 = 180,
+  GAUDI2_QUEUE_ID_NIC_6_1 = 181,
+  GAUDI2_QUEUE_ID_NIC_6_2 = 182,
+  GAUDI2_QUEUE_ID_NIC_6_3 = 183,
+  GAUDI2_QUEUE_ID_NIC_7_0 = 184,
+  GAUDI2_QUEUE_ID_NIC_7_1 = 185,
+  GAUDI2_QUEUE_ID_NIC_7_2 = 186,
+  GAUDI2_QUEUE_ID_NIC_7_3 = 187,
+  GAUDI2_QUEUE_ID_NIC_8_0 = 188,
+  GAUDI2_QUEUE_ID_NIC_8_1 = 189,
+  GAUDI2_QUEUE_ID_NIC_8_2 = 190,
+  GAUDI2_QUEUE_ID_NIC_8_3 = 191,
+  GAUDI2_QUEUE_ID_NIC_9_0 = 192,
+  GAUDI2_QUEUE_ID_NIC_9_1 = 193,
+  GAUDI2_QUEUE_ID_NIC_9_2 = 194,
+  GAUDI2_QUEUE_ID_NIC_9_3 = 195,
+  GAUDI2_QUEUE_ID_NIC_10_0 = 196,
+  GAUDI2_QUEUE_ID_NIC_10_1 = 197,
+  GAUDI2_QUEUE_ID_NIC_10_2 = 198,
+  GAUDI2_QUEUE_ID_NIC_10_3 = 199,
+  GAUDI2_QUEUE_ID_NIC_11_0 = 200,
+  GAUDI2_QUEUE_ID_NIC_11_1 = 201,
+  GAUDI2_QUEUE_ID_NIC_11_2 = 202,
+  GAUDI2_QUEUE_ID_NIC_11_3 = 203,
+  GAUDI2_QUEUE_ID_NIC_12_0 = 204,
+  GAUDI2_QUEUE_ID_NIC_12_1 = 205,
+  GAUDI2_QUEUE_ID_NIC_12_2 = 206,
+  GAUDI2_QUEUE_ID_NIC_12_3 = 207,
+  GAUDI2_QUEUE_ID_NIC_13_0 = 208,
+  GAUDI2_QUEUE_ID_NIC_13_1 = 209,
+  GAUDI2_QUEUE_ID_NIC_13_2 = 210,
+  GAUDI2_QUEUE_ID_NIC_13_3 = 211,
+  GAUDI2_QUEUE_ID_NIC_14_0 = 212,
+  GAUDI2_QUEUE_ID_NIC_14_1 = 213,
+  GAUDI2_QUEUE_ID_NIC_14_2 = 214,
+  GAUDI2_QUEUE_ID_NIC_14_3 = 215,
+  GAUDI2_QUEUE_ID_NIC_15_0 = 216,
+  GAUDI2_QUEUE_ID_NIC_15_1 = 217,
+  GAUDI2_QUEUE_ID_NIC_15_2 = 218,
+  GAUDI2_QUEUE_ID_NIC_15_3 = 219,
+  GAUDI2_QUEUE_ID_NIC_16_0 = 220,
+  GAUDI2_QUEUE_ID_NIC_16_1 = 221,
+  GAUDI2_QUEUE_ID_NIC_16_2 = 222,
+  GAUDI2_QUEUE_ID_NIC_16_3 = 223,
+  GAUDI2_QUEUE_ID_NIC_17_0 = 224,
+  GAUDI2_QUEUE_ID_NIC_17_1 = 225,
+  GAUDI2_QUEUE_ID_NIC_17_2 = 226,
+  GAUDI2_QUEUE_ID_NIC_17_3 = 227,
+  GAUDI2_QUEUE_ID_NIC_18_0 = 228,
+  GAUDI2_QUEUE_ID_NIC_18_1 = 229,
+  GAUDI2_QUEUE_ID_NIC_18_2 = 230,
+  GAUDI2_QUEUE_ID_NIC_18_3 = 231,
+  GAUDI2_QUEUE_ID_NIC_19_0 = 232,
+  GAUDI2_QUEUE_ID_NIC_19_1 = 233,
+  GAUDI2_QUEUE_ID_NIC_19_2 = 234,
+  GAUDI2_QUEUE_ID_NIC_19_3 = 235,
+  GAUDI2_QUEUE_ID_NIC_20_0 = 236,
+  GAUDI2_QUEUE_ID_NIC_20_1 = 237,
+  GAUDI2_QUEUE_ID_NIC_20_2 = 238,
+  GAUDI2_QUEUE_ID_NIC_20_3 = 239,
+  GAUDI2_QUEUE_ID_NIC_21_0 = 240,
+  GAUDI2_QUEUE_ID_NIC_21_1 = 241,
+  GAUDI2_QUEUE_ID_NIC_21_2 = 242,
+  GAUDI2_QUEUE_ID_NIC_21_3 = 243,
+  GAUDI2_QUEUE_ID_NIC_22_0 = 244,
+  GAUDI2_QUEUE_ID_NIC_22_1 = 245,
+  GAUDI2_QUEUE_ID_NIC_22_2 = 246,
+  GAUDI2_QUEUE_ID_NIC_22_3 = 247,
+  GAUDI2_QUEUE_ID_NIC_23_0 = 248,
+  GAUDI2_QUEUE_ID_NIC_23_1 = 249,
+  GAUDI2_QUEUE_ID_NIC_23_2 = 250,
+  GAUDI2_QUEUE_ID_NIC_23_3 = 251,
+  GAUDI2_QUEUE_ID_ROT_0_0 = 252,
+  GAUDI2_QUEUE_ID_ROT_0_1 = 253,
+  GAUDI2_QUEUE_ID_ROT_0_2 = 254,
+  GAUDI2_QUEUE_ID_ROT_0_3 = 255,
+  GAUDI2_QUEUE_ID_ROT_1_0 = 256,
+  GAUDI2_QUEUE_ID_ROT_1_1 = 257,
+  GAUDI2_QUEUE_ID_ROT_1_2 = 258,
+  GAUDI2_QUEUE_ID_ROT_1_3 = 259,
+  GAUDI2_QUEUE_ID_CPU_PQ = 260,
+  GAUDI2_QUEUE_ID_SIZE
+};
 enum goya_engine_id {
   GOYA_ENGINE_ID_DMA_0 = 0,
   GOYA_ENGINE_ID_DMA_1,
@@ -208,6 +473,84 @@
   GAUDI_ENGINE_ID_NIC_9,
   GAUDI_ENGINE_ID_SIZE
 };
+enum gaudi2_engine_id {
+  GAUDI2_DCORE0_ENGINE_ID_EDMA_0 = 0,
+  GAUDI2_DCORE0_ENGINE_ID_EDMA_1,
+  GAUDI2_DCORE0_ENGINE_ID_MME,
+  GAUDI2_DCORE0_ENGINE_ID_TPC_0,
+  GAUDI2_DCORE0_ENGINE_ID_TPC_1,
+  GAUDI2_DCORE0_ENGINE_ID_TPC_2,
+  GAUDI2_DCORE0_ENGINE_ID_TPC_3,
+  GAUDI2_DCORE0_ENGINE_ID_TPC_4,
+  GAUDI2_DCORE0_ENGINE_ID_TPC_5,
+  GAUDI2_DCORE0_ENGINE_ID_DEC_0,
+  GAUDI2_DCORE0_ENGINE_ID_DEC_1,
+  GAUDI2_DCORE1_ENGINE_ID_EDMA_0,
+  GAUDI2_DCORE1_ENGINE_ID_EDMA_1,
+  GAUDI2_DCORE1_ENGINE_ID_MME,
+  GAUDI2_DCORE1_ENGINE_ID_TPC_0,
+  GAUDI2_DCORE1_ENGINE_ID_TPC_1,
+  GAUDI2_DCORE1_ENGINE_ID_TPC_2,
+  GAUDI2_DCORE1_ENGINE_ID_TPC_3,
+  GAUDI2_DCORE1_ENGINE_ID_TPC_4,
+  GAUDI2_DCORE1_ENGINE_ID_TPC_5,
+  GAUDI2_DCORE1_ENGINE_ID_DEC_0,
+  GAUDI2_DCORE1_ENGINE_ID_DEC_1,
+  GAUDI2_DCORE2_ENGINE_ID_EDMA_0,
+  GAUDI2_DCORE2_ENGINE_ID_EDMA_1,
+  GAUDI2_DCORE2_ENGINE_ID_MME,
+  GAUDI2_DCORE2_ENGINE_ID_TPC_0,
+  GAUDI2_DCORE2_ENGINE_ID_TPC_1,
+  GAUDI2_DCORE2_ENGINE_ID_TPC_2,
+  GAUDI2_DCORE2_ENGINE_ID_TPC_3,
+  GAUDI2_DCORE2_ENGINE_ID_TPC_4,
+  GAUDI2_DCORE2_ENGINE_ID_TPC_5,
+  GAUDI2_DCORE2_ENGINE_ID_DEC_0,
+  GAUDI2_DCORE2_ENGINE_ID_DEC_1,
+  GAUDI2_DCORE3_ENGINE_ID_EDMA_0,
+  GAUDI2_DCORE3_ENGINE_ID_EDMA_1,
+  GAUDI2_DCORE3_ENGINE_ID_MME,
+  GAUDI2_DCORE3_ENGINE_ID_TPC_0,
+  GAUDI2_DCORE3_ENGINE_ID_TPC_1,
+  GAUDI2_DCORE3_ENGINE_ID_TPC_2,
+  GAUDI2_DCORE3_ENGINE_ID_TPC_3,
+  GAUDI2_DCORE3_ENGINE_ID_TPC_4,
+  GAUDI2_DCORE3_ENGINE_ID_TPC_5,
+  GAUDI2_DCORE3_ENGINE_ID_DEC_0,
+  GAUDI2_DCORE3_ENGINE_ID_DEC_1,
+  GAUDI2_DCORE0_ENGINE_ID_TPC_6,
+  GAUDI2_ENGINE_ID_PDMA_0,
+  GAUDI2_ENGINE_ID_PDMA_1,
+  GAUDI2_ENGINE_ID_ROT_0,
+  GAUDI2_ENGINE_ID_ROT_1,
+  GAUDI2_PCIE_ENGINE_ID_DEC_0,
+  GAUDI2_PCIE_ENGINE_ID_DEC_1,
+  GAUDI2_ENGINE_ID_NIC0_0,
+  GAUDI2_ENGINE_ID_NIC0_1,
+  GAUDI2_ENGINE_ID_NIC1_0,
+  GAUDI2_ENGINE_ID_NIC1_1,
+  GAUDI2_ENGINE_ID_NIC2_0,
+  GAUDI2_ENGINE_ID_NIC2_1,
+  GAUDI2_ENGINE_ID_NIC3_0,
+  GAUDI2_ENGINE_ID_NIC3_1,
+  GAUDI2_ENGINE_ID_NIC4_0,
+  GAUDI2_ENGINE_ID_NIC4_1,
+  GAUDI2_ENGINE_ID_NIC5_0,
+  GAUDI2_ENGINE_ID_NIC5_1,
+  GAUDI2_ENGINE_ID_NIC6_0,
+  GAUDI2_ENGINE_ID_NIC6_1,
+  GAUDI2_ENGINE_ID_NIC7_0,
+  GAUDI2_ENGINE_ID_NIC7_1,
+  GAUDI2_ENGINE_ID_NIC8_0,
+  GAUDI2_ENGINE_ID_NIC8_1,
+  GAUDI2_ENGINE_ID_NIC9_0,
+  GAUDI2_ENGINE_ID_NIC9_1,
+  GAUDI2_ENGINE_ID_NIC10_0,
+  GAUDI2_ENGINE_ID_NIC10_1,
+  GAUDI2_ENGINE_ID_NIC11_0,
+  GAUDI2_ENGINE_ID_NIC11_1,
+  GAUDI2_ENGINE_ID_SIZE
+};
 enum hl_goya_pll_index {
   HL_GOYA_CPU_PLL = 0,
   HL_GOYA_IC_PLL,
@@ -231,21 +574,56 @@
   HL_GAUDI_IF_PLL,
   HL_GAUDI_PLL_MAX
 };
+enum hl_gaudi2_pll_index {
+  HL_GAUDI2_CPU_PLL = 0,
+  HL_GAUDI2_PCI_PLL,
+  HL_GAUDI2_SRAM_PLL,
+  HL_GAUDI2_HBM_PLL,
+  HL_GAUDI2_NIC_PLL,
+  HL_GAUDI2_DMA_PLL,
+  HL_GAUDI2_MESH_PLL,
+  HL_GAUDI2_MME_PLL,
+  HL_GAUDI2_TPC_PLL,
+  HL_GAUDI2_IF_PLL,
+  HL_GAUDI2_VID_PLL,
+  HL_GAUDI2_MSS_PLL,
+  HL_GAUDI2_PLL_MAX
+};
+enum hl_goya_dma_direction {
+  HL_DMA_HOST_TO_DRAM,
+  HL_DMA_HOST_TO_SRAM,
+  HL_DMA_DRAM_TO_SRAM,
+  HL_DMA_SRAM_TO_DRAM,
+  HL_DMA_SRAM_TO_HOST,
+  HL_DMA_DRAM_TO_HOST,
+  HL_DMA_DRAM_TO_DRAM,
+  HL_DMA_SRAM_TO_SRAM,
+  HL_DMA_ENUM_MAX
+};
 enum hl_device_status {
   HL_DEVICE_STATUS_OPERATIONAL,
   HL_DEVICE_STATUS_IN_RESET,
   HL_DEVICE_STATUS_MALFUNCTION,
   HL_DEVICE_STATUS_NEEDS_RESET,
   HL_DEVICE_STATUS_IN_DEVICE_CREATION,
-  HL_DEVICE_STATUS_LAST = HL_DEVICE_STATUS_IN_DEVICE_CREATION
+  HL_DEVICE_STATUS_IN_RESET_AFTER_DEVICE_RELEASE,
+  HL_DEVICE_STATUS_LAST = HL_DEVICE_STATUS_IN_RESET_AFTER_DEVICE_RELEASE
 };
 enum hl_server_type {
   HL_SERVER_TYPE_UNKNOWN = 0,
   HL_SERVER_GAUDI_HLS1 = 1,
   HL_SERVER_GAUDI_HLS1H = 2,
   HL_SERVER_GAUDI_TYPE1 = 3,
-  HL_SERVER_GAUDI_TYPE2 = 4
+  HL_SERVER_GAUDI_TYPE2 = 4,
+  HL_SERVER_GAUDI2_HLS2 = 5
 };
+#define HL_NOTIFIER_EVENT_TPC_ASSERT (1ULL << 0)
+#define HL_NOTIFIER_EVENT_UNDEFINED_OPCODE (1ULL << 1)
+#define HL_NOTIFIER_EVENT_DEVICE_RESET (1ULL << 2)
+#define HL_NOTIFIER_EVENT_CS_TIMEOUT (1ULL << 3)
+#define HL_NOTIFIER_EVENT_DEVICE_UNAVAILABLE (1ULL << 4)
+#define HL_NOTIFIER_EVENT_USER_ENGINE_ERR (1ULL << 5)
+#define HL_NOTIFIER_EVENT_GENERAL_HW_ERR (1ULL << 6)
 #define HL_INFO_HW_IP_INFO 0
 #define HL_INFO_HW_EVENTS 1
 #define HL_INFO_DRAM_USAGE 2
@@ -269,8 +647,16 @@
 #define HL_INFO_LAST_ERR_OPEN_DEV_TIME 23
 #define HL_INFO_CS_TIMEOUT_EVENT 24
 #define HL_INFO_RAZWI_EVENT 25
+#define HL_INFO_DEV_MEM_ALLOC_PAGE_SIZES 26
+#define HL_INFO_SECURED_ATTESTATION 27
+#define HL_INFO_REGISTER_EVENTFD 28
+#define HL_INFO_UNREGISTER_EVENTFD 29
+#define HL_INFO_GET_EVENTS 30
+#define HL_INFO_UNDEFINED_OPCODE_EVENT 31
+#define HL_INFO_ENGINE_STATUS 32
 #define HL_INFO_VERSION_MAX_LEN 128
 #define HL_INFO_CARD_NAME_MAX_LEN 16
+#define HL_ENGINES_DATA_MAX_SIZE SZ_1M
 struct hl_info_hw_ip_info {
   __u64 sram_base_address;
   __u64 dram_base_address;
@@ -279,7 +665,7 @@
   __u32 num_of_events;
   __u32 device_id;
   __u32 module_id;
-  __u32 reserved;
+  __u32 decoder_enabled_mask;
   __u16 first_available_interrupt_id;
   __u16 server_type;
   __u32 cpld_version;
@@ -289,11 +675,17 @@
   __u32 psoc_pci_pll_div_factor;
   __u8 tpc_enabled_mask;
   __u8 dram_enabled;
-  __u8 pad[2];
+  __u8 security_enabled;
+  __u8 mme_master_slave_mode;
   __u8 cpucp_version[HL_INFO_VERSION_MAX_LEN];
   __u8 card_name[HL_INFO_CARD_NAME_MAX_LEN];
-  __u64 reserved2;
+  __u64 tpc_enabled_mask_ext;
   __u64 dram_page_size;
+  __u32 edma_enabled_mask;
+  __u16 number_of_user_interrupts;
+  __u16 pad2;
+  __u64 reserved4;
+  __u64 device_mem_alloc_default_page_size;
 };
 struct hl_info_dram_usage {
   __u64 dram_free_mem;
@@ -353,6 +745,9 @@
 struct hl_open_stats_info {
   __u64 open_counter;
   __u64 last_open_period_ms;
+  __u8 is_compute_ctx_active;
+  __u8 compute_ctx_in_release;
+  __u8 pad[6];
 };
 struct hl_power_info {
   __u64 power;
@@ -395,6 +790,40 @@
   __u8 error_type;
   __u8 pad[2];
 };
+#define MAX_QMAN_STREAMS_INFO 4
+#define OPCODE_INFO_MAX_ADDR_SIZE 8
+struct hl_info_undefined_opcode_event {
+  __s64 timestamp;
+  __u64 cb_addr_streams[MAX_QMAN_STREAMS_INFO][OPCODE_INFO_MAX_ADDR_SIZE];
+  __u64 cq_addr;
+  __u32 cq_size;
+  __u32 cb_addr_streams_len;
+  __u32 engine_id;
+  __u32 stream_id;
+};
+struct hl_info_dev_memalloc_page_sizes {
+  __u64 page_order_bitmask;
+};
+#define SEC_PCR_DATA_BUF_SZ 256
+#define SEC_PCR_QUOTE_BUF_SZ 510
+#define SEC_SIGNATURE_BUF_SZ 255
+#define SEC_PUB_DATA_BUF_SZ 510
+#define SEC_CERTIFICATE_BUF_SZ 2046
+struct hl_info_sec_attest {
+  __u32 nonce;
+  __u16 pcr_quote_len;
+  __u16 pub_data_len;
+  __u16 certificate_len;
+  __u8 pcr_num_reg;
+  __u8 pcr_reg_len;
+  __u8 quote_sig_len;
+  __u8 pcr_data[SEC_PCR_DATA_BUF_SZ];
+  __u8 pcr_quote[SEC_PCR_QUOTE_BUF_SZ];
+  __u8 quote_sig[SEC_SIGNATURE_BUF_SZ];
+  __u8 public_data[SEC_PUB_DATA_BUF_SZ];
+  __u8 certificate[SEC_CERTIFICATE_BUF_SZ];
+  __u8 pad0[2];
+};
 enum gaudi_dcores {
   HL_GAUDI_WS_DCORE,
   HL_GAUDI_WN_DCORE,
@@ -410,6 +839,9 @@
     __u32 ctx_id;
     __u32 period_ms;
     __u32 pll_index;
+    __u32 eventfd;
+    __u32 user_buffer_actual_size;
+    __u32 sec_attest_nonce;
   };
   __u32 pad;
 };
@@ -472,11 +904,23 @@
 #define HL_CS_FLAGS_ENCAP_SIGNALS 0x800
 #define HL_CS_FLAGS_RESERVE_SIGNALS_ONLY 0x1000
 #define HL_CS_FLAGS_UNRESERVE_SIGNALS_ONLY 0x2000
+#define HL_CS_FLAGS_ENGINE_CORE_COMMAND 0x4000
 #define HL_CS_STATUS_SUCCESS 0
 #define HL_MAX_JOBS_PER_CS 512
+#define HL_ENGINE_CORE_HALT (1 << 0)
+#define HL_ENGINE_CORE_RUN (1 << 1)
 struct hl_cs_in {
-  __u64 chunks_restore;
-  __u64 chunks_execute;
+  union {
+    struct {
+      __u64 chunks_restore;
+      __u64 chunks_execute;
+    };
+    struct {
+      __u64 engine_cores;
+      __u32 num_engine_cores;
+      __u32 core_command;
+    };
+  };
   union {
     __u64 seq;
     __u32 encaps_sig_handle_id;
@@ -490,6 +934,7 @@
   __u32 timeout;
   __u32 cs_flags;
   __u32 ctx_id;
+  __u8 pad[4];
 };
 struct hl_cs_out {
   union {
@@ -510,8 +955,11 @@
 };
 #define HL_WAIT_CS_FLAGS_INTERRUPT 0x2
 #define HL_WAIT_CS_FLAGS_INTERRUPT_MASK 0xFFF00000
+#define HL_WAIT_CS_FLAGS_ANY_CQ_INTERRUPT 0xFFF00000
+#define HL_WAIT_CS_FLAGS_ANY_DEC_INTERRUPT 0xFFE00000
 #define HL_WAIT_CS_FLAGS_MULTI_CS 0x4
 #define HL_WAIT_CS_FLAGS_INTERRUPT_KERNEL_CQ 0x10
+#define HL_WAIT_CS_FLAGS_REGISTER_INTERRUPT 0x20
 #define HL_WAIT_MULTI_CS_LIST_MAX_LEN 32
 struct hl_wait_cs_in {
   union {
@@ -537,6 +985,8 @@
     __u64 interrupt_timeout_us;
   };
   __u64 cq_counters_offset;
+  __u64 timestamp_handle;
+  __u64 timestamp_offset;
 };
 #define HL_WAIT_CS_STATUS_COMPLETED 0
 #define HL_WAIT_CS_STATUS_BUSY 1
@@ -561,14 +1011,17 @@
 #define HL_MEM_OP_UNMAP 3
 #define HL_MEM_OP_MAP_BLOCK 4
 #define HL_MEM_OP_EXPORT_DMABUF_FD 5
+#define HL_MEM_OP_TS_ALLOC 6
 #define HL_MEM_CONTIGUOUS 0x1
 #define HL_MEM_SHARED 0x2
 #define HL_MEM_USERPTR 0x4
 #define HL_MEM_FORCE_HINT 0x8
+#define HL_MEM_PREFETCH 0x40
 struct hl_mem_in {
   union {
     struct {
       __u64 mem_size;
+      __u64 page_size;
     } alloc;
     struct {
       __u64 handle;
@@ -596,7 +1049,7 @@
   __u32 op;
   __u32 flags;
   __u32 ctx_id;
-  __u32 pad;
+  __u32 num_of_elements;
 };
 struct hl_mem_out {
   union {
@@ -641,12 +1094,18 @@
   __u32 bw_win;
   __u32 win_capture;
   __u32 id;
-  __u32 pad;
+  __u32 control;
+  __u64 start_addr2;
+  __u64 end_addr2;
+  __u64 start_addr3;
+  __u64 end_addr3;
 };
 struct hl_debug_params_spmu {
   __u64 event_types[HL_DEBUG_MAX_AUX_VALUES];
   __u32 event_types_num;
-  __u32 pad;
+  __u32 pmtrc_val;
+  __u32 trc_ctrl_host_val;
+  __u32 trc_en_host_val;
 };
 #define HL_DEBUG_OP_ETR 0
 #define HL_DEBUG_OP_ETF 1
diff --git a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/misc/uacce/hisi_qm.h b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/misc/uacce/hisi_qm.h
index 87757a9..d2509d0 100644
--- a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/misc/uacce/hisi_qm.h
+++ b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/misc/uacce/hisi_qm.h
@@ -23,8 +23,15 @@
   __u16 id;
   __u16 qc_type;
 };
+struct hisi_qp_info {
+  __u32 sqe_size;
+  __u16 sq_depth;
+  __u16 cq_depth;
+  __u64 reserved;
+};
 #define HISI_QM_API_VER_BASE "hisi_qm_v1"
 #define HISI_QM_API_VER2_BASE "hisi_qm_v2"
 #define HISI_QM_API_VER3_BASE "hisi_qm_v3"
 #define UACCE_CMD_QM_SET_QP_CTX _IOWR('H', 10, struct hisi_qp_ctx)
+#define UACCE_CMD_QM_SET_QP_INFO _IOWR('H', 11, struct hisi_qp_info)
 #endif
diff --git a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/mtd/mtd-abi.h b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/mtd/mtd-abi.h
index 50ae565..6e26cae 100644
--- a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/mtd/mtd-abi.h
+++ b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/mtd/mtd-abi.h
@@ -52,6 +52,21 @@
   __u8 mode;
   __u8 padding[7];
 };
+struct mtd_read_req_ecc_stats {
+  __u32 uncorrectable_errors;
+  __u32 corrected_bitflips;
+  __u32 max_bitflips;
+};
+struct mtd_read_req {
+  __u64 start;
+  __u64 len;
+  __u64 ooblen;
+  __u64 usr_data;
+  __u64 usr_oob;
+  __u8 mode;
+  __u8 padding[7];
+  struct mtd_read_req_ecc_stats ecc_stats;
+};
 #define MTD_ABSENT 0
 #define MTD_RAM 1
 #define MTD_ROM 2
@@ -122,6 +137,7 @@
 #define MEMISLOCKED _IOR('M', 23, struct erase_info_user)
 #define MEMWRITE _IOWR('M', 24, struct mtd_write_req)
 #define OTPERASE _IOW('M', 25, struct otp_info)
+#define MEMREAD _IOWR('M', 26, struct mtd_read_req)
 struct nand_oobinfo {
   __u32 useecc;
   __u32 eccbytes;
diff --git a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/mtd/ubi-user.h b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/mtd/ubi-user.h
index 866fbd2..db203d5 100644
--- a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/mtd/ubi-user.h
+++ b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/mtd/ubi-user.h
@@ -56,7 +56,8 @@
   __s32 mtd_num;
   __s32 vid_hdr_offset;
   __s16 max_beb_per1024;
-  __s8 padding[10];
+  __s8 disable_fm;
+  __s8 padding[9];
 };
 enum {
   UBI_VOL_SKIP_CRC_CHECK_FLG = 0x1,
@@ -71,11 +72,11 @@
   __s16 name_len;
   __s8 padding2[4];
   char name[UBI_MAX_VOLUME_NAME + 1];
-} __packed;
+} __attribute__((__packed__));
 struct ubi_rsvol_req {
   __s64 bytes;
   __s32 vol_id;
-} __packed;
+} __attribute__((__packed__));
 struct ubi_rnvol_req {
   __s32 count;
   __s8 padding1[12];
@@ -85,24 +86,24 @@
     __s8 padding2[2];
     char name[UBI_MAX_VOLUME_NAME + 1];
   } ents[UBI_MAX_RNVOL];
-} __packed;
+} __attribute__((__packed__));
 struct ubi_leb_change_req {
   __s32 lnum;
   __s32 bytes;
   __s8 dtype;
   __s8 padding[7];
-} __packed;
+} __attribute__((__packed__));
 struct ubi_map_req {
   __s32 lnum;
   __s8 dtype;
   __s8 padding[3];
-} __packed;
+} __attribute__((__packed__));
 struct ubi_set_vol_prop_req {
   __u8 property;
   __u8 padding[7];
   __u64 value;
-} __packed;
+} __attribute__((__packed__));
 struct ubi_blkcreate_req {
   __s8 padding[128];
-} __packed;
+} __attribute__((__packed__));
 #endif
diff --git a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/rdma/efa-abi.h b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/rdma/efa-abi.h
index 4b6842b..bfb3f18 100644
--- a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/rdma/efa-abi.h
+++ b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/rdma/efa-abi.h
@@ -49,6 +49,7 @@
 };
 enum {
   EFA_CREATE_CQ_WITH_COMPLETION_CHANNEL = 1 << 0,
+  EFA_CREATE_CQ_WITH_SGID = 1 << 1,
 };
 struct efa_ibv_create_cq {
   __u32 comp_mask;
@@ -102,6 +103,7 @@
   EFA_QUERY_DEVICE_CAPS_RDMA_READ = 1 << 0,
   EFA_QUERY_DEVICE_CAPS_RNR_RETRY = 1 << 1,
   EFA_QUERY_DEVICE_CAPS_CQ_NOTIFICATIONS = 1 << 2,
+  EFA_QUERY_DEVICE_CAPS_CQ_WITH_SGID = 1 << 3,
 };
 struct efa_ibv_ex_query_device_resp {
   __u32 comp_mask;
diff --git a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/rdma/erdma-abi.h b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/rdma/erdma-abi.h
new file mode 100644
index 0000000..4df1757
--- /dev/null
+++ b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/rdma/erdma-abi.h
@@ -0,0 +1,54 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef __ERDMA_USER_H__
+#define __ERDMA_USER_H__
+#include <linux/types.h>
+#define ERDMA_ABI_VERSION 1
+struct erdma_ureq_create_cq {
+  __aligned_u64 db_record_va;
+  __aligned_u64 qbuf_va;
+  __u32 qbuf_len;
+  __u32 rsvd0;
+};
+struct erdma_uresp_create_cq {
+  __u32 cq_id;
+  __u32 num_cqe;
+};
+struct erdma_ureq_create_qp {
+  __aligned_u64 db_record_va;
+  __aligned_u64 qbuf_va;
+  __u32 qbuf_len;
+  __u32 rsvd0;
+};
+struct erdma_uresp_create_qp {
+  __u32 qp_id;
+  __u32 num_sqe;
+  __u32 num_rqe;
+  __u32 rq_offset;
+};
+struct erdma_uresp_alloc_ctx {
+  __u32 dev_id;
+  __u32 pad;
+  __u32 sdb_type;
+  __u32 sdb_offset;
+  __aligned_u64 sdb;
+  __aligned_u64 rdb;
+  __aligned_u64 cdb;
+};
+#endif
diff --git a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/rdma/hfi/hfi1_user.h b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/rdma/hfi/hfi1_user.h
index 3352907..6d58600 100644
--- a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/rdma/hfi/hfi1_user.h
+++ b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/rdma/hfi/hfi1_user.h
@@ -80,7 +80,7 @@
 struct hfi1_status {
   __aligned_u64 dev;
   __aligned_u64 port;
-  char freezemsg[0];
+  char freezemsg[];
 };
 enum sdma_req_opcode {
   EXPECTED = 0,
diff --git a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/rdma/ib_user_ioctl_verbs.h b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/rdma/ib_user_ioctl_verbs.h
index 3b94907..766d5be 100644
--- a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/rdma/ib_user_ioctl_verbs.h
+++ b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/rdma/ib_user_ioctl_verbs.h
@@ -191,6 +191,7 @@
   RDMA_DRIVER_QIB,
   RDMA_DRIVER_EFA,
   RDMA_DRIVER_SIW,
+  RDMA_DRIVER_ERDMA,
 };
 enum ib_uverbs_gid_type {
   IB_UVERBS_GID_TYPE_IB,
diff --git a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/rdma/ib_user_verbs.h b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/rdma/ib_user_verbs.h
index d9ac9e0..552c80a 100644
--- a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/rdma/ib_user_verbs.h
+++ b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/rdma/ib_user_verbs.h
@@ -106,16 +106,16 @@
 };
 struct ib_uverbs_get_context {
   __aligned_u64 response;
-  __aligned_u64 driver_data[0];
+  __aligned_u64 driver_data[];
 };
 struct ib_uverbs_get_context_resp {
   __u32 async_fd;
   __u32 num_comp_vectors;
-  __aligned_u64 driver_data[0];
+  __aligned_u64 driver_data[];
 };
 struct ib_uverbs_query_device {
   __aligned_u64 response;
-  __aligned_u64 driver_data[0];
+  __aligned_u64 driver_data[];
 };
 struct ib_uverbs_query_device_resp {
   __aligned_u64 fw_ver;
@@ -208,7 +208,7 @@
   __aligned_u64 response;
   __u8 port_num;
   __u8 reserved[7];
-  __aligned_u64 driver_data[0];
+  __aligned_u64 driver_data[];
 };
 struct ib_uverbs_query_port_resp {
   __u32 port_cap_flags;
@@ -236,11 +236,11 @@
 };
 struct ib_uverbs_alloc_pd {
   __aligned_u64 response;
-  __aligned_u64 driver_data[0];
+  __aligned_u64 driver_data[];
 };
 struct ib_uverbs_alloc_pd_resp {
   __u32 pd_handle;
-  __u32 driver_data[0];
+  __u32 driver_data[];
 };
 struct ib_uverbs_dealloc_pd {
   __u32 pd_handle;
@@ -249,11 +249,11 @@
   __aligned_u64 response;
   __u32 fd;
   __u32 oflags;
-  __aligned_u64 driver_data[0];
+  __aligned_u64 driver_data[];
 };
 struct ib_uverbs_open_xrcd_resp {
   __u32 xrcd_handle;
-  __u32 driver_data[0];
+  __u32 driver_data[];
 };
 struct ib_uverbs_close_xrcd {
   __u32 xrcd_handle;
@@ -265,13 +265,13 @@
   __aligned_u64 hca_va;
   __u32 pd_handle;
   __u32 access_flags;
-  __aligned_u64 driver_data[0];
+  __aligned_u64 driver_data[];
 };
 struct ib_uverbs_reg_mr_resp {
   __u32 mr_handle;
   __u32 lkey;
   __u32 rkey;
-  __u32 driver_data[0];
+  __u32 driver_data[];
 };
 struct ib_uverbs_rereg_mr {
   __aligned_u64 response;
@@ -282,12 +282,12 @@
   __aligned_u64 hca_va;
   __u32 pd_handle;
   __u32 access_flags;
-  __aligned_u64 driver_data[0];
+  __aligned_u64 driver_data[];
 };
 struct ib_uverbs_rereg_mr_resp {
   __u32 lkey;
   __u32 rkey;
-  __aligned_u64 driver_data[0];
+  __aligned_u64 driver_data[];
 };
 struct ib_uverbs_dereg_mr {
   __u32 mr_handle;
@@ -297,12 +297,12 @@
   __u32 pd_handle;
   __u8 mw_type;
   __u8 reserved[3];
-  __aligned_u64 driver_data[0];
+  __aligned_u64 driver_data[];
 };
 struct ib_uverbs_alloc_mw_resp {
   __u32 mw_handle;
   __u32 rkey;
-  __aligned_u64 driver_data[0];
+  __aligned_u64 driver_data[];
 };
 struct ib_uverbs_dealloc_mw {
   __u32 mw_handle;
@@ -320,7 +320,7 @@
   __u32 comp_vector;
   __s32 comp_channel;
   __u32 reserved;
-  __aligned_u64 driver_data[0];
+  __aligned_u64 driver_data[];
 };
 enum ib_uverbs_ex_create_cq_flags {
   IB_UVERBS_CQ_FLAGS_TIMESTAMP_COMPLETION = 1 << 0,
@@ -349,12 +349,12 @@
   __aligned_u64 response;
   __u32 cq_handle;
   __u32 cqe;
-  __aligned_u64 driver_data[0];
+  __aligned_u64 driver_data[];
 };
 struct ib_uverbs_resize_cq_resp {
   __u32 cqe;
   __u32 reserved;
-  __aligned_u64 driver_data[0];
+  __aligned_u64 driver_data[];
 };
 struct ib_uverbs_poll_cq {
   __aligned_u64 response;
@@ -394,7 +394,7 @@
 struct ib_uverbs_poll_cq_resp {
   __u32 count;
   __u32 reserved;
-  struct ib_uverbs_wc wc[0];
+  struct ib_uverbs_wc wc[];
 };
 struct ib_uverbs_req_notify_cq {
   __u32 cq_handle;
@@ -476,7 +476,7 @@
   __u8 qp_type;
   __u8 is_srq;
   __u8 reserved;
-  __aligned_u64 driver_data[0];
+  __aligned_u64 driver_data[];
 };
 enum ib_uverbs_create_qp_mask {
   IB_UVERBS_CREATE_QP_MASK_IND_TABLE = 1UL << 0,
@@ -511,7 +511,7 @@
   __u32 qpn;
   __u8 qp_type;
   __u8 reserved[7];
-  __aligned_u64 driver_data[0];
+  __aligned_u64 driver_data[];
 };
 struct ib_uverbs_create_qp_resp {
   __u32 qp_handle;
@@ -547,7 +547,7 @@
   __aligned_u64 response;
   __u32 qp_handle;
   __u32 attr_mask;
-  __aligned_u64 driver_data[0];
+  __aligned_u64 driver_data[];
 };
 struct ib_uverbs_query_qp_resp {
   struct ib_uverbs_qp_dest dest;
@@ -580,7 +580,7 @@
   __u8 alt_timeout;
   __u8 sq_sig_all;
   __u8 reserved[5];
-  __aligned_u64 driver_data[0];
+  __aligned_u64 driver_data[];
 };
 struct ib_uverbs_modify_qp {
   struct ib_uverbs_qp_dest dest;
@@ -685,7 +685,7 @@
   __u32 wr_count;
   __u32 sge_count;
   __u32 wqe_size;
-  struct ib_uverbs_send_wr send_wr[0];
+  struct ib_uverbs_send_wr send_wr[];
 };
 struct ib_uverbs_post_send_resp {
   __u32 bad_wr;
@@ -701,7 +701,7 @@
   __u32 wr_count;
   __u32 sge_count;
   __u32 wqe_size;
-  struct ib_uverbs_recv_wr recv_wr[0];
+  struct ib_uverbs_recv_wr recv_wr[];
 };
 struct ib_uverbs_post_recv_resp {
   __u32 bad_wr;
@@ -712,7 +712,7 @@
   __u32 wr_count;
   __u32 sge_count;
   __u32 wqe_size;
-  struct ib_uverbs_recv_wr recv[0];
+  struct ib_uverbs_recv_wr recv[];
 };
 struct ib_uverbs_post_srq_recv_resp {
   __u32 bad_wr;
@@ -723,11 +723,11 @@
   __u32 pd_handle;
   __u32 reserved;
   struct ib_uverbs_ah_attr attr;
-  __aligned_u64 driver_data[0];
+  __aligned_u64 driver_data[];
 };
 struct ib_uverbs_create_ah_resp {
   __u32 ah_handle;
-  __u32 driver_data[0];
+  __u32 driver_data[];
 };
 struct ib_uverbs_destroy_ah {
   __u32 ah_handle;
@@ -737,14 +737,14 @@
   __u32 qp_handle;
   __u16 mlid;
   __u16 reserved;
-  __aligned_u64 driver_data[0];
+  __aligned_u64 driver_data[];
 };
 struct ib_uverbs_detach_mcast {
   __u8 gid[16];
   __u32 qp_handle;
   __u16 mlid;
   __u16 reserved;
-  __aligned_u64 driver_data[0];
+  __aligned_u64 driver_data[];
 };
 struct ib_uverbs_flow_spec_hdr {
   __u32 type;
@@ -944,7 +944,7 @@
   __u8 reserved[2];
   __u8 port;
   __u32 flags;
-  struct ib_uverbs_flow_spec_hdr flow_specs[0];
+  struct ib_uverbs_flow_spec_hdr flow_specs[];
 };
 struct ib_uverbs_create_flow {
   __u32 comp_mask;
@@ -966,7 +966,7 @@
   __u32 max_wr;
   __u32 max_sge;
   __u32 srq_limit;
-  __aligned_u64 driver_data[0];
+  __aligned_u64 driver_data[];
 };
 struct ib_uverbs_create_xsrq {
   __aligned_u64 response;
@@ -979,27 +979,27 @@
   __u32 max_num_tags;
   __u32 xrcd_handle;
   __u32 cq_handle;
-  __aligned_u64 driver_data[0];
+  __aligned_u64 driver_data[];
 };
 struct ib_uverbs_create_srq_resp {
   __u32 srq_handle;
   __u32 max_wr;
   __u32 max_sge;
   __u32 srqn;
-  __u32 driver_data[0];
+  __u32 driver_data[];
 };
 struct ib_uverbs_modify_srq {
   __u32 srq_handle;
   __u32 attr_mask;
   __u32 max_wr;
   __u32 srq_limit;
-  __aligned_u64 driver_data[0];
+  __aligned_u64 driver_data[];
 };
 struct ib_uverbs_query_srq {
   __aligned_u64 response;
   __u32 srq_handle;
   __u32 reserved;
-  __aligned_u64 driver_data[0];
+  __aligned_u64 driver_data[];
 };
 struct ib_uverbs_query_srq_resp {
   __u32 max_wr;
@@ -1056,7 +1056,7 @@
 struct ib_uverbs_ex_create_rwq_ind_table {
   __u32 comp_mask;
   __u32 log_ind_tbl_size;
-  __u32 wq_handles[0];
+  __u32 wq_handles[];
 };
 struct ib_uverbs_ex_create_rwq_ind_table_resp {
   __u32 comp_mask;
@@ -1079,4 +1079,37 @@
   __u32 reserved;
 };
 #define IB_DEVICE_NAME_MAX 64
+enum ib_uverbs_device_cap_flags {
+  IB_UVERBS_DEVICE_RESIZE_MAX_WR = 1 << 0,
+  IB_UVERBS_DEVICE_BAD_PKEY_CNTR = 1 << 1,
+  IB_UVERBS_DEVICE_BAD_QKEY_CNTR = 1 << 2,
+  IB_UVERBS_DEVICE_RAW_MULTI = 1 << 3,
+  IB_UVERBS_DEVICE_AUTO_PATH_MIG = 1 << 4,
+  IB_UVERBS_DEVICE_CHANGE_PHY_PORT = 1 << 5,
+  IB_UVERBS_DEVICE_UD_AV_PORT_ENFORCE = 1 << 6,
+  IB_UVERBS_DEVICE_CURR_QP_STATE_MOD = 1 << 7,
+  IB_UVERBS_DEVICE_SHUTDOWN_PORT = 1 << 8,
+  IB_UVERBS_DEVICE_PORT_ACTIVE_EVENT = 1 << 10,
+  IB_UVERBS_DEVICE_SYS_IMAGE_GUID = 1 << 11,
+  IB_UVERBS_DEVICE_RC_RNR_NAK_GEN = 1 << 12,
+  IB_UVERBS_DEVICE_SRQ_RESIZE = 1 << 13,
+  IB_UVERBS_DEVICE_N_NOTIFY_CQ = 1 << 14,
+  IB_UVERBS_DEVICE_MEM_WINDOW = 1 << 17,
+  IB_UVERBS_DEVICE_UD_IP_CSUM = 1 << 18,
+  IB_UVERBS_DEVICE_XRC = 1 << 20,
+  IB_UVERBS_DEVICE_MEM_MGT_EXTENSIONS = 1 << 21,
+  IB_UVERBS_DEVICE_MEM_WINDOW_TYPE_2A = 1 << 23,
+  IB_UVERBS_DEVICE_MEM_WINDOW_TYPE_2B = 1 << 24,
+  IB_UVERBS_DEVICE_RC_IP_CSUM = 1 << 25,
+  IB_UVERBS_DEVICE_RAW_IP_CSUM = 1 << 26,
+  IB_UVERBS_DEVICE_MANAGED_FLOW_STEERING = 1 << 29,
+  IB_UVERBS_DEVICE_RAW_SCATTER_FCS = 1ULL << 34,
+  IB_UVERBS_DEVICE_PCI_WRITE_END_PADDING = 1ULL << 36,
+};
+enum ib_uverbs_raw_packet_caps {
+  IB_UVERBS_RAW_PACKET_CAP_CVLAN_STRIPPING = 1 << 0,
+  IB_UVERBS_RAW_PACKET_CAP_SCATTER_FCS = 1 << 1,
+  IB_UVERBS_RAW_PACKET_CAP_IP_CSUM = 1 << 2,
+  IB_UVERBS_RAW_PACKET_CAP_DELAY_DROP = 1 << 3,
+};
 #endif
diff --git a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/rdma/mlx5-abi.h b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/rdma/mlx5-abi.h
index aadb20e..f41c887 100644
--- a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/rdma/mlx5-abi.h
+++ b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/rdma/mlx5-abi.h
@@ -70,6 +70,7 @@
   MLX5_IB_ALLOC_UCONTEXT_RESP_MASK_ECE = 1UL << 2,
   MLX5_IB_ALLOC_UCONTEXT_RESP_MASK_SQD2RTS = 1UL << 3,
   MLX5_IB_ALLOC_UCONTEXT_RESP_MASK_REAL_TIME_TS = 1UL << 4,
+  MLX5_IB_ALLOC_UCONTEXT_RESP_MASK_MKEY_UPDATE_TAG = 1UL << 5,
 };
 enum mlx5_user_cmds_supp_uhw {
   MLX5_USER_CMDS_SUPP_UHW_QUERY_DEVICE = 1 << 0,
diff --git a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/rdma/mlx5_user_ioctl_cmds.h b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/rdma/mlx5_user_ioctl_cmds.h
index 862abcb..c060482 100644
--- a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/rdma/mlx5_user_ioctl_cmds.h
+++ b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/rdma/mlx5_user_ioctl_cmds.h
@@ -135,6 +135,7 @@
   MLX5_IB_ATTR_DEVX_UMEM_REG_ACCESS,
   MLX5_IB_ATTR_DEVX_UMEM_REG_OUT_ID,
   MLX5_IB_ATTR_DEVX_UMEM_REG_PGSZ_BITMAP,
+  MLX5_IB_ATTR_DEVX_UMEM_REG_DMABUF_FD,
 };
 enum mlx5_ib_devx_umem_dereg_attrs {
   MLX5_IB_ATTR_DEVX_UMEM_DEREG_HANDLE = (1U << UVERBS_ID_NS_SHIFT),
@@ -179,6 +180,7 @@
   MLX5_IB_OBJECT_VAR,
   MLX5_IB_OBJECT_PP,
   MLX5_IB_OBJECT_UAR,
+  MLX5_IB_OBJECT_STEERING_ANCHOR,
 };
 enum mlx5_ib_flow_matcher_create_attrs {
   MLX5_IB_ATTR_FLOW_MATCHER_CREATE_HANDLE = (1U << UVERBS_ID_NS_SHIFT),
@@ -195,6 +197,19 @@
   MLX5_IB_METHOD_FLOW_MATCHER_CREATE = (1U << UVERBS_ID_NS_SHIFT),
   MLX5_IB_METHOD_FLOW_MATCHER_DESTROY,
 };
+enum mlx5_ib_flow_steering_anchor_create_attrs {
+  MLX5_IB_ATTR_STEERING_ANCHOR_CREATE_HANDLE = (1U << UVERBS_ID_NS_SHIFT),
+  MLX5_IB_ATTR_STEERING_ANCHOR_FT_TYPE,
+  MLX5_IB_ATTR_STEERING_ANCHOR_PRIORITY,
+  MLX5_IB_ATTR_STEERING_ANCHOR_FT_ID,
+};
+enum mlx5_ib_flow_steering_anchor_destroy_attrs {
+  MLX5_IB_ATTR_STEERING_ANCHOR_DESTROY_HANDLE = (1U << UVERBS_ID_NS_SHIFT),
+};
+enum mlx5_ib_steering_anchor_methods {
+  MLX5_IB_METHOD_STEERING_ANCHOR_CREATE = (1U << UVERBS_ID_NS_SHIFT),
+  MLX5_IB_METHOD_STEERING_ANCHOR_DESTROY,
+};
 enum mlx5_ib_device_query_context_attrs {
   MLX5_IB_ATTR_QUERY_CONTEXT_RESP_UCTX = (1U << UVERBS_ID_NS_SHIFT),
 };
diff --git a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/rdma/mlx5_user_ioctl_verbs.h b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/rdma/mlx5_user_ioctl_verbs.h
index c3c3f89..f68c0b3 100644
--- a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/rdma/mlx5_user_ioctl_verbs.h
+++ b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/rdma/mlx5_user_ioctl_verbs.h
@@ -43,6 +43,7 @@
   MLX5_IB_UAPI_DM_TYPE_MEMIC,
   MLX5_IB_UAPI_DM_TYPE_STEERING_SW_ICM,
   MLX5_IB_UAPI_DM_TYPE_HEADER_MODIFY_SW_ICM,
+  MLX5_IB_UAPI_DM_TYPE_HEADER_MODIFY_PATTERN_SW_ICM,
 };
 enum mlx5_ib_uapi_devx_create_event_channel_flags {
   MLX5_IB_UAPI_DEVX_CR_EV_CH_FLAGS_OMIT_DATA = 1 << 0,
diff --git a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/rdma/rdma_user_cm.h b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/rdma/rdma_user_cm.h
index 7b1f7ee..37927f8 100644
--- a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/rdma/rdma_user_cm.h
+++ b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/rdma/rdma_user_cm.h
@@ -145,7 +145,7 @@
 struct rdma_ucm_query_path_resp {
   __u32 num_paths;
   __u32 reserved;
-  struct ib_path_rec_data path_data[0];
+  struct ib_path_rec_data path_data[];
 };
 struct rdma_ucm_conn_param {
   __u32 qp_num;
diff --git a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/rdma/rdma_user_ioctl_cmds.h b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/rdma/rdma_user_ioctl_cmds.h
index 22adfaa..dbaf9ed 100644
--- a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/rdma/rdma_user_ioctl_cmds.h
+++ b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/rdma/rdma_user_ioctl_cmds.h
@@ -50,6 +50,6 @@
   __aligned_u64 reserved1;
   __u32 driver_id;
   __u32 reserved2;
-  struct ib_uverbs_attr attrs[0];
+  struct ib_uverbs_attr attrs[];
 };
 #endif
diff --git a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/rdma/rdma_user_rxe.h b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/rdma/rdma_user_rxe.h
index cdb00c7..2476699 100644
--- a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/rdma/rdma_user_rxe.h
+++ b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/rdma/rdma_user_rxe.h
@@ -52,7 +52,7 @@
 };
 struct rxe_send_wr {
   __aligned_u64 wr_id;
-  __u32 num_sge;
+  __u32 reserved;
   __u32 opcode;
   __u32 send_flags;
   union {
@@ -128,7 +128,7 @@
 };
 struct rxe_recv_wqe {
   __aligned_u64 wr_id;
-  __u32 num_sge;
+  __u32 reserved;
   __u32 padding;
   struct rxe_dma_info dma;
 };
diff --git a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/scsi/fc/fc_els.h b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/scsi/fc/fc_els.h
index 04ae5b8..d29287d 100644
--- a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/scsi/fc/fc_els.h
+++ b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/scsi/fc/fc_els.h
@@ -142,7 +142,7 @@
 struct fc_tlv_desc {
   __be32 desc_tag;
   __be32 desc_len;
-  __u8 desc_value[0];
+  __u8 desc_value[];
 };
 #define FC_TLV_DESC_HDR_SZ sizeof(struct fc_tlv_desc)
 #define FC_TLV_DESC_LENGTH_FROM_SZ(desc) (sizeof(desc) - FC_TLV_DESC_HDR_SZ)
@@ -618,7 +618,7 @@
   __be32 event_threshold;
   __be32 event_count;
   __be32 pname_count;
-  __be64 pname_list[0];
+  __be64 pname_list[];
 };
 struct fc_fn_deli_desc {
   __be32 desc_tag;
@@ -636,7 +636,7 @@
   __be16 event_modifier;
   __be32 event_period;
   __be32 pname_count;
-  __be64 pname_list[0];
+  __be64 pname_list[];
 };
 struct fc_fn_congn_desc {
   __be32 desc_tag;
@@ -651,25 +651,25 @@
   __u8 fpin_cmd;
   __u8 fpin_zero[3];
   __be32 desc_len;
-  struct fc_tlv_desc fpin_desc[0];
+  struct fc_tlv_desc fpin_desc[];
 };
 struct fc_df_desc_fpin_reg {
   __be32 desc_tag;
   __be32 desc_len;
   __be32 count;
-  __be32 desc_tags[0];
+  __be32 desc_tags[];
 };
 struct fc_els_rdf {
   __u8 fpin_cmd;
   __u8 fpin_zero[3];
   __be32 desc_len;
-  struct fc_tlv_desc desc[0];
+  struct fc_tlv_desc desc[];
 };
 struct fc_els_rdf_resp {
   struct fc_els_ls_acc acc_hdr;
   __be32 desc_list_len;
   struct fc_els_lsri_desc lsri;
-  struct fc_tlv_desc desc[0];
+  struct fc_tlv_desc desc[];
 };
 struct fc_diag_lnkflt_desc {
   __be32 desc_tag;
@@ -707,12 +707,12 @@
   __u8 edc_cmd;
   __u8 edc_zero[3];
   __be32 desc_len;
-  struct fc_tlv_desc desc[0];
+  struct fc_tlv_desc desc[];
 };
 struct fc_els_edc_resp {
   struct fc_els_ls_acc acc_hdr;
   __be32 desc_list_len;
   struct fc_els_lsri_desc lsri;
-  struct fc_tlv_desc desc[0];
+  struct fc_tlv_desc desc[];
 };
 #endif
diff --git a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/scsi/scsi_bsg_fc.h b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/scsi/scsi_bsg_fc.h
index 8966f61..2647249 100644
--- a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/scsi/scsi_bsg_fc.h
+++ b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/scsi/scsi_bsg_fc.h
@@ -66,7 +66,7 @@
 };
 struct fc_bsg_host_vendor {
   __u64 vendor_id;
-  __u32 vendor_cmd[0];
+  __u32 vendor_cmd[];
 };
 struct fc_bsg_host_vendor_reply {
   __u32 vendor_rsp[0];
diff --git a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/scsi/scsi_bsg_mpi3mr.h b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/scsi/scsi_bsg_mpi3mr.h
new file mode 100644
index 0000000..fcba8cd
--- /dev/null
+++ b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/scsi/scsi_bsg_mpi3mr.h
@@ -0,0 +1,333 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef SCSI_BSG_MPI3MR_H_INCLUDED
+#define SCSI_BSG_MPI3MR_H_INCLUDED
+#include <linux/types.h>
+#define MPI3MR_IOCTL_VERSION 0x06
+#define MPI3MR_APP_DEFAULT_TIMEOUT (60)
+#define MPI3MR_BSG_ADPTYPE_UNKNOWN 0
+#define MPI3MR_BSG_ADPTYPE_AVGFAMILY 1
+#define MPI3MR_BSG_ADPSTATE_UNKNOWN 0
+#define MPI3MR_BSG_ADPSTATE_OPERATIONAL 1
+#define MPI3MR_BSG_ADPSTATE_FAULT 2
+#define MPI3MR_BSG_ADPSTATE_IN_RESET 3
+#define MPI3MR_BSG_ADPSTATE_UNRECOVERABLE 4
+#define MPI3MR_BSG_ADPRESET_UNKNOWN 0
+#define MPI3MR_BSG_ADPRESET_SOFT 1
+#define MPI3MR_BSG_ADPRESET_DIAG_FAULT 2
+#define MPI3MR_BSG_LOGDATA_MAX_ENTRIES 400
+#define MPI3MR_BSG_LOGDATA_ENTRY_HEADER_SZ 4
+#define MPI3MR_DRVBSG_OPCODE_UNKNOWN 0
+#define MPI3MR_DRVBSG_OPCODE_ADPINFO 1
+#define MPI3MR_DRVBSG_OPCODE_ADPRESET 2
+#define MPI3MR_DRVBSG_OPCODE_ALLTGTDEVINFO 4
+#define MPI3MR_DRVBSG_OPCODE_GETCHGCNT 5
+#define MPI3MR_DRVBSG_OPCODE_LOGDATAENABLE 6
+#define MPI3MR_DRVBSG_OPCODE_PELENABLE 7
+#define MPI3MR_DRVBSG_OPCODE_GETLOGDATA 8
+#define MPI3MR_DRVBSG_OPCODE_QUERY_HDB 9
+#define MPI3MR_DRVBSG_OPCODE_REPOST_HDB 10
+#define MPI3MR_DRVBSG_OPCODE_UPLOAD_HDB 11
+#define MPI3MR_DRVBSG_OPCODE_REFRESH_HDB_TRIGGERS 12
+#define MPI3MR_BSG_BUFTYPE_UNKNOWN 0
+#define MPI3MR_BSG_BUFTYPE_RAIDMGMT_CMD 1
+#define MPI3MR_BSG_BUFTYPE_RAIDMGMT_RESP 2
+#define MPI3MR_BSG_BUFTYPE_DATA_IN 3
+#define MPI3MR_BSG_BUFTYPE_DATA_OUT 4
+#define MPI3MR_BSG_BUFTYPE_MPI_REPLY 5
+#define MPI3MR_BSG_BUFTYPE_ERR_RESPONSE 6
+#define MPI3MR_BSG_BUFTYPE_MPI_REQUEST 0xFE
+#define MPI3MR_BSG_MPI_REPLY_BUFTYPE_UNKNOWN 0
+#define MPI3MR_BSG_MPI_REPLY_BUFTYPE_STATUS 1
+#define MPI3MR_BSG_MPI_REPLY_BUFTYPE_ADDRESS 2
+#define MPI3MR_HDB_BUFTYPE_UNKNOWN 0
+#define MPI3MR_HDB_BUFTYPE_TRACE 1
+#define MPI3MR_HDB_BUFTYPE_FIRMWARE 2
+#define MPI3MR_HDB_BUFTYPE_RESERVED 3
+#define MPI3MR_HDB_BUFSTATUS_UNKNOWN 0
+#define MPI3MR_HDB_BUFSTATUS_NOT_ALLOCATED 1
+#define MPI3MR_HDB_BUFSTATUS_POSTED_UNPAUSED 2
+#define MPI3MR_HDB_BUFSTATUS_POSTED_PAUSED 3
+#define MPI3MR_HDB_BUFSTATUS_RELEASED 4
+#define MPI3MR_HDB_TRIGGER_TYPE_UNKNOWN 0
+#define MPI3MR_HDB_TRIGGER_TYPE_DIAGFAULT 1
+#define MPI3MR_HDB_TRIGGER_TYPE_ELEMENT 2
+#define MPI3MR_HDB_TRIGGER_TYPE_MASTER 3
+enum command {
+  MPI3MR_DRV_CMD = 1,
+  MPI3MR_MPT_CMD = 2,
+};
+struct mpi3_driver_info_layout {
+  __le32 information_length;
+  __u8 driver_signature[12];
+  __u8 os_name[16];
+  __u8 os_version[12];
+  __u8 driver_name[20];
+  __u8 driver_version[32];
+  __u8 driver_release_date[20];
+  __le32 driver_capabilities;
+};
+struct mpi3mr_bsg_in_adpinfo {
+  __u32 adp_type;
+  __u32 rsvd1;
+  __u32 pci_dev_id;
+  __u32 pci_dev_hw_rev;
+  __u32 pci_subsys_dev_id;
+  __u32 pci_subsys_ven_id;
+  __u32 pci_dev : 5;
+  __u32 pci_func : 3;
+  __u32 pci_bus : 8;
+  __u16 rsvd2;
+  __u32 pci_seg_id;
+  __u32 app_intfc_ver;
+  __u8 adp_state;
+  __u8 rsvd3;
+  __u16 rsvd4;
+  __u32 rsvd5[2];
+  struct mpi3_driver_info_layout driver_info;
+};
+struct mpi3mr_bsg_adp_reset {
+  __u8 reset_type;
+  __u8 rsvd1;
+  __u16 rsvd2;
+};
+struct mpi3mr_change_count {
+  __u16 change_count;
+  __u16 rsvd;
+};
+struct mpi3mr_device_map_info {
+  __u16 handle;
+  __u16 perst_id;
+  __u32 target_id;
+  __u8 bus_id;
+  __u8 rsvd1;
+  __u16 rsvd2;
+};
+struct mpi3mr_all_tgt_info {
+  __u16 num_devices;
+  __u16 rsvd1;
+  __u32 rsvd2;
+  struct mpi3mr_device_map_info dmi[1];
+};
+struct mpi3mr_logdata_enable {
+  __u16 max_entries;
+  __u16 rsvd;
+};
+struct mpi3mr_bsg_out_pel_enable {
+  __u16 pel_locale;
+  __u8 pel_class;
+  __u8 rsvd;
+};
+struct mpi3mr_logdata_entry {
+  __u8 valid_entry;
+  __u8 rsvd1;
+  __u16 rsvd2;
+  __u8 data[1];
+};
+struct mpi3mr_bsg_in_log_data {
+  struct mpi3mr_logdata_entry entry[1];
+};
+struct mpi3mr_hdb_entry {
+  __u8 buf_type;
+  __u8 status;
+  __u8 trigger_type;
+  __u8 rsvd1;
+  __u16 size;
+  __u16 rsvd2;
+  __u64 trigger_data;
+  __u32 rsvd3;
+  __u32 rsvd4;
+};
+struct mpi3mr_bsg_in_hdb_status {
+  __u8 num_hdb_types;
+  __u8 rsvd1;
+  __u16 rsvd2;
+  __u32 rsvd3;
+  struct mpi3mr_hdb_entry entry[1];
+};
+struct mpi3mr_bsg_out_repost_hdb {
+  __u8 buf_type;
+  __u8 rsvd1;
+  __u16 rsvd2;
+};
+struct mpi3mr_bsg_out_upload_hdb {
+  __u8 buf_type;
+  __u8 rsvd1;
+  __u16 rsvd2;
+  __u32 start_offset;
+  __u32 length;
+};
+struct mpi3mr_bsg_out_refresh_hdb_triggers {
+  __u8 page_type;
+  __u8 rsvd1;
+  __u16 rsvd2;
+};
+struct mpi3mr_bsg_drv_cmd {
+  __u8 mrioc_id;
+  __u8 opcode;
+  __u16 rsvd1;
+  __u32 rsvd2[4];
+};
+struct mpi3mr_bsg_in_reply_buf {
+  __u8 mpi_reply_type;
+  __u8 rsvd1;
+  __u16 rsvd2;
+  __u8 reply_buf[1];
+};
+struct mpi3mr_buf_entry {
+  __u8 buf_type;
+  __u8 rsvd1;
+  __u16 rsvd2;
+  __u32 buf_len;
+};
+struct mpi3mr_buf_entry_list {
+  __u8 num_of_entries;
+  __u8 rsvd1;
+  __u16 rsvd2;
+  __u32 rsvd3;
+  struct mpi3mr_buf_entry buf_entry[1];
+};
+struct mpi3mr_bsg_mptcmd {
+  __u8 mrioc_id;
+  __u8 rsvd1;
+  __u16 timeout;
+  __u32 rsvd2;
+  struct mpi3mr_buf_entry_list buf_entry_list;
+};
+struct mpi3mr_bsg_packet {
+  __u8 cmd_type;
+  __u8 rsvd1;
+  __u16 rsvd2;
+  __u32 rsvd3;
+  union {
+    struct mpi3mr_bsg_drv_cmd drvrcmd;
+    struct mpi3mr_bsg_mptcmd mptcmd;
+  } cmd;
+};
+#ifndef MPI3_NVME_ENCAP_CMD_MAX
+#define MPI3_NVME_ENCAP_CMD_MAX (1)
+#endif
+struct mpi3_nvme_encapsulated_request {
+  __le16 host_tag;
+  __u8 ioc_use_only02;
+  __u8 function;
+  __le16 ioc_use_only04;
+  __u8 ioc_use_only06;
+  __u8 msg_flags;
+  __le16 change_count;
+  __le16 dev_handle;
+  __le16 encapsulated_command_length;
+  __le16 flags;
+  __le32 data_length;
+  __le32 reserved14[3];
+  __le32 command[MPI3_NVME_ENCAP_CMD_MAX];
+};
+struct mpi3_nvme_encapsulated_error_reply {
+  __le16 host_tag;
+  __u8 ioc_use_only02;
+  __u8 function;
+  __le16 ioc_use_only04;
+  __u8 ioc_use_only06;
+  __u8 msg_flags;
+  __le16 ioc_use_only08;
+  __le16 ioc_status;
+  __le32 ioc_log_info;
+  __le32 nvme_completion_entry[4];
+};
+#define MPI3MR_NVME_PRP_SIZE 8
+#define MPI3MR_NVME_CMD_PRP1_OFFSET 24
+#define MPI3MR_NVME_CMD_PRP2_OFFSET 32
+#define MPI3MR_NVME_CMD_SGL_OFFSET 24
+#define MPI3MR_NVME_DATA_FORMAT_PRP 0
+#define MPI3MR_NVME_DATA_FORMAT_SGL1 1
+#define MPI3MR_NVME_DATA_FORMAT_SGL2 2
+struct mpi3_scsi_task_mgmt_request {
+  __le16 host_tag;
+  __u8 ioc_use_only02;
+  __u8 function;
+  __le16 ioc_use_only04;
+  __u8 ioc_use_only06;
+  __u8 msg_flags;
+  __le16 change_count;
+  __le16 dev_handle;
+  __le16 task_host_tag;
+  __u8 task_type;
+  __u8 reserved0f;
+  __le16 task_request_queue_id;
+  __le16 reserved12;
+  __le32 reserved14;
+  __u8 lun[8];
+};
+#define MPI3_SCSITASKMGMT_MSGFLAGS_DO_NOT_SEND_TASK_IU (0x08)
+#define MPI3_SCSITASKMGMT_TASKTYPE_ABORT_TASK (0x01)
+#define MPI3_SCSITASKMGMT_TASKTYPE_ABORT_TASK_SET (0x02)
+#define MPI3_SCSITASKMGMT_TASKTYPE_TARGET_RESET (0x03)
+#define MPI3_SCSITASKMGMT_TASKTYPE_LOGICAL_UNIT_RESET (0x05)
+#define MPI3_SCSITASKMGMT_TASKTYPE_CLEAR_TASK_SET (0x06)
+#define MPI3_SCSITASKMGMT_TASKTYPE_QUERY_TASK (0x07)
+#define MPI3_SCSITASKMGMT_TASKTYPE_CLEAR_ACA (0x08)
+#define MPI3_SCSITASKMGMT_TASKTYPE_QUERY_TASK_SET (0x09)
+#define MPI3_SCSITASKMGMT_TASKTYPE_QUERY_ASYNC_EVENT (0x0a)
+#define MPI3_SCSITASKMGMT_TASKTYPE_I_T_NEXUS_RESET (0x0b)
+struct mpi3_scsi_task_mgmt_reply {
+  __le16 host_tag;
+  __u8 ioc_use_only02;
+  __u8 function;
+  __le16 ioc_use_only04;
+  __u8 ioc_use_only06;
+  __u8 msg_flags;
+  __le16 ioc_use_only08;
+  __le16 ioc_status;
+  __le32 ioc_log_info;
+  __le32 termination_count;
+  __le32 response_data;
+  __le32 reserved18;
+};
+#define MPI3_SCSITASKMGMT_RSPCODE_TM_COMPLETE (0x00)
+#define MPI3_SCSITASKMGMT_RSPCODE_INVALID_FRAME (0x02)
+#define MPI3_SCSITASKMGMT_RSPCODE_TM_FUNCTION_NOT_SUPPORTED (0x04)
+#define MPI3_SCSITASKMGMT_RSPCODE_TM_FAILED (0x05)
+#define MPI3_SCSITASKMGMT_RSPCODE_TM_SUCCEEDED (0x08)
+#define MPI3_SCSITASKMGMT_RSPCODE_TM_INVALID_LUN (0x09)
+#define MPI3_SCSITASKMGMT_RSPCODE_TM_OVERLAPPED_TAG (0x0a)
+#define MPI3_SCSITASKMGMT_RSPCODE_IO_QUEUED_ON_IOC (0x80)
+#define MPI3_SCSITASKMGMT_RSPCODE_TM_NVME_DENIED (0x81)
+#define MPI3_PEL_LOCALE_FLAGS_NON_BLOCKING_BOOT_EVENT (0x0200)
+#define MPI3_PEL_LOCALE_FLAGS_BLOCKING_BOOT_EVENT (0x0100)
+#define MPI3_PEL_LOCALE_FLAGS_PCIE (0x0080)
+#define MPI3_PEL_LOCALE_FLAGS_CONFIGURATION (0x0040)
+#define MPI3_PEL_LOCALE_FLAGS_CONTROLER (0x0020)
+#define MPI3_PEL_LOCALE_FLAGS_SAS (0x0010)
+#define MPI3_PEL_LOCALE_FLAGS_EPACK (0x0008)
+#define MPI3_PEL_LOCALE_FLAGS_ENCLOSURE (0x0004)
+#define MPI3_PEL_LOCALE_FLAGS_PD (0x0002)
+#define MPI3_PEL_LOCALE_FLAGS_VD (0x0001)
+#define MPI3_PEL_CLASS_DEBUG (0x00)
+#define MPI3_PEL_CLASS_PROGRESS (0x01)
+#define MPI3_PEL_CLASS_INFORMATIONAL (0x02)
+#define MPI3_PEL_CLASS_WARNING (0x03)
+#define MPI3_PEL_CLASS_CRITICAL (0x04)
+#define MPI3_PEL_CLASS_FATAL (0x05)
+#define MPI3_PEL_CLASS_FAULT (0x06)
+#define MPI3_BSG_FUNCTION_MGMT_PASSTHROUGH (0x0a)
+#define MPI3_BSG_FUNCTION_SCSI_IO (0x20)
+#define MPI3_BSG_FUNCTION_SCSI_TASK_MGMT (0x21)
+#define MPI3_BSG_FUNCTION_SMP_PASSTHROUGH (0x22)
+#define MPI3_BSG_FUNCTION_NVME_ENCAPSULATED (0x24)
+#endif
diff --git a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/scsi/scsi_netlink_fc.h b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/scsi/scsi_netlink_fc.h
index ff92877..6eeb866 100644
--- a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/scsi/scsi_netlink_fc.h
+++ b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/scsi/scsi_netlink_fc.h
@@ -30,6 +30,9 @@
   __u16 event_datalen;
   __u32 event_num;
   __u32 event_code;
-  __u32 event_data;
+  union {
+    __u32 event_data;
+    __DECLARE_FLEX_ARRAY(__u8, event_data_flex);
+  };
 } __attribute__((aligned(sizeof(__u64))));
 #endif
diff --git a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/sound/asoc.h b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/sound/asoc.h
index eeb12b0..1940e5d 100644
--- a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/sound/asoc.h
+++ b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/sound/asoc.h
@@ -356,7 +356,7 @@
   __le32 pcm_elems;
   __le32 dai_link_elems;
   struct snd_soc_tplg_private priv;
-} __packed;
+} __attribute__((__packed__));
 struct snd_soc_tplg_stream_caps_v4 {
   __le32 size;
   char name[SNDRV_CTL_ELEM_ID_NAME_MAXLEN];
@@ -372,7 +372,7 @@
   __le32 period_size_max;
   __le32 buffer_size_min;
   __le32 buffer_size_max;
-} __packed;
+} __attribute__((__packed__));
 struct snd_soc_tplg_pcm_v4 {
   __le32 size;
   char pcm_name[SNDRV_CTL_ELEM_ID_NAME_MAXLEN];
@@ -385,11 +385,11 @@
   struct snd_soc_tplg_stream stream[SND_SOC_TPLG_STREAM_CONFIG_MAX];
   __le32 num_streams;
   struct snd_soc_tplg_stream_caps_v4 caps[2];
-} __packed;
+} __attribute__((__packed__));
 struct snd_soc_tplg_link_config_v4 {
   __le32 size;
   __le32 id;
   struct snd_soc_tplg_stream stream[SND_SOC_TPLG_STREAM_CONFIG_MAX];
   __le32 num_streams;
-} __packed;
+} __attribute__((__packed__));
 #endif
diff --git a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/sound/asound.h b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/sound/asound.h
index b0e47c1..6e325e9 100644
--- a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/sound/asound.h
+++ b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/sound/asound.h
@@ -605,7 +605,7 @@
   __u32 tv_nsec;
   __u64 tv_sec;
   __u8 data[SNDRV_RAWMIDI_FRAMING_DATA_LENGTH];
-} __packed;
+} __attribute__((__packed__));
 struct snd_rawmidi_params {
   int stream;
   size_t buffer_size;
@@ -884,7 +884,7 @@
 struct snd_ctl_tlv {
   unsigned int numid;
   unsigned int length;
-  unsigned int tlv[0];
+  unsigned int tlv[];
 };
 #define SNDRV_CTL_IOCTL_PVERSION _IOR('U', 0x00, int)
 #define SNDRV_CTL_IOCTL_CARD_INFO _IOR('U', 0x01, struct snd_ctl_card_info)
diff --git a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/sound/firewire.h b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/sound/firewire.h
index 198a8f4..d26d722 100644
--- a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/sound/firewire.h
+++ b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/sound/firewire.h
@@ -46,11 +46,11 @@
   __be32 category;
   __be32 command;
   __be32 status;
-  __be32 params[0];
+  __be32 params[];
 };
 struct snd_firewire_event_efw_response {
   unsigned int type;
-  __be32 response[0];
+  __be32 response[];
 };
 struct snd_firewire_event_digi00x_message {
   unsigned int type;
@@ -67,7 +67,7 @@
 };
 struct snd_firewire_event_tascam_control {
   unsigned int type;
-  struct snd_firewire_tascam_change changes[0];
+  struct snd_firewire_tascam_change changes[];
 };
 struct snd_firewire_event_motu_register_dsp_change {
   unsigned int type;
diff --git a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/sound/intel/avs/tokens.h b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/sound/intel/avs/tokens.h
new file mode 100644
index 0000000..b6b3002
--- /dev/null
+++ b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/sound/intel/avs/tokens.h
@@ -0,0 +1,111 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef __UAPI_SOUND_INTEL_AVS_TOKENS_H
+#define __UAPI_SOUND_INTEL_AVS_TOKENS_H
+enum avs_tplg_token {
+  AVS_TKN_MANIFEST_NAME_STRING = 1,
+  AVS_TKN_MANIFEST_VERSION_U32 = 2,
+  AVS_TKN_MANIFEST_NUM_LIBRARIES_U32 = 3,
+  AVS_TKN_MANIFEST_NUM_AFMTS_U32 = 4,
+  AVS_TKN_MANIFEST_NUM_MODCFGS_BASE_U32 = 5,
+  AVS_TKN_MANIFEST_NUM_MODCFGS_EXT_U32 = 6,
+  AVS_TKN_MANIFEST_NUM_PPLCFGS_U32 = 7,
+  AVS_TKN_MANIFEST_NUM_BINDINGS_U32 = 8,
+  AVS_TKN_LIBRARY_ID_U32 = 101,
+  AVS_TKN_LIBRARY_NAME_STRING = 102,
+  AVS_TKN_AFMT_ID_U32 = 201,
+  AVS_TKN_AFMT_SAMPLE_RATE_U32 = 202,
+  AVS_TKN_AFMT_BIT_DEPTH_U32 = 203,
+  AVS_TKN_AFMT_CHANNEL_MAP_U32 = 204,
+  AVS_TKN_AFMT_CHANNEL_CFG_U32 = 205,
+  AVS_TKN_AFMT_INTERLEAVING_U32 = 206,
+  AVS_TKN_AFMT_NUM_CHANNELS_U32 = 207,
+  AVS_TKN_AFMT_VALID_BIT_DEPTH_U32 = 208,
+  AVS_TKN_AFMT_SAMPLE_TYPE_U32 = 209,
+  AVS_TKN_MODCFG_BASE_ID_U32 = 301,
+  AVS_TKN_MODCFG_BASE_CPC_U32 = 302,
+  AVS_TKN_MODCFG_BASE_IBS_U32 = 303,
+  AVS_TKN_MODCFG_BASE_OBS_U32 = 304,
+  AVS_TKN_MODCFG_BASE_PAGES_U32 = 305,
+  AVS_TKN_MODCFG_EXT_ID_U32 = 401,
+  AVS_TKN_MODCFG_EXT_TYPE_UUID = 402,
+  AVS_TKN_MODCFG_CPR_OUT_AFMT_ID_U32 = 403,
+  AVS_TKN_MODCFG_CPR_FEATURE_MASK_U32 = 404,
+  AVS_TKN_MODCFG_CPR_DMA_TYPE_U32 = 405,
+  AVS_TKN_MODCFG_CPR_DMABUFF_SIZE_U32 = 406,
+  AVS_TKN_MODCFG_CPR_VINDEX_U8 = 407,
+  AVS_TKN_MODCFG_CPR_BLOB_FMT_ID_U32 = 408,
+  AVS_TKN_MODCFG_MICSEL_OUT_AFMT_ID_U32 = 409,
+  AVS_TKN_MODCFG_INTELWOV_CPC_LP_MODE_U32 = 410,
+  AVS_TKN_MODCFG_SRC_OUT_FREQ_U32 = 411,
+  AVS_TKN_MODCFG_MUX_REF_AFMT_ID_U32 = 412,
+  AVS_TKN_MODCFG_MUX_OUT_AFMT_ID_U32 = 413,
+  AVS_TKN_MODCFG_AEC_REF_AFMT_ID_U32 = 414,
+  AVS_TKN_MODCFG_AEC_OUT_AFMT_ID_U32 = 415,
+  AVS_TKN_MODCFG_AEC_CPC_LP_MODE_U32 = 416,
+  AVS_TKN_MODCFG_ASRC_OUT_FREQ_U32 = 417,
+  AVS_TKN_MODCFG_ASRC_MODE_U8 = 418,
+  AVS_TKN_MODCFG_ASRC_DISABLE_JITTER_U8 = 419,
+  AVS_TKN_MODCFG_UPDOWN_MIX_OUT_CHAN_CFG_U32 = 420,
+  AVS_TKN_MODCFG_UPDOWN_MIX_COEFF_SELECT_U32 = 421,
+  AVS_TKN_MODCFG_UPDOWN_MIX_COEFF_0_S32 = 422,
+  AVS_TKN_MODCFG_UPDOWN_MIX_COEFF_1_S32 = 423,
+  AVS_TKN_MODCFG_UPDOWN_MIX_COEFF_2_S32 = 424,
+  AVS_TKN_MODCFG_UPDOWN_MIX_COEFF_3_S32 = 425,
+  AVS_TKN_MODCFG_UPDOWN_MIX_COEFF_4_S32 = 426,
+  AVS_TKN_MODCFG_UPDOWN_MIX_COEFF_5_S32 = 427,
+  AVS_TKN_MODCFG_UPDOWN_MIX_COEFF_6_S32 = 428,
+  AVS_TKN_MODCFG_UPDOWN_MIX_COEFF_7_S32 = 429,
+  AVS_TKN_MODCFG_UPDOWN_MIX_CHAN_MAP_U32 = 430,
+  AVS_TKN_MODCFG_EXT_NUM_INPUT_PINS_U16 = 431,
+  AVS_TKN_MODCFG_EXT_NUM_OUTPUT_PINS_U16 = 432,
+  AVS_TKN_PPLCFG_ID_U32 = 1401,
+  AVS_TKN_PPLCFG_REQ_SIZE_U16 = 1402,
+  AVS_TKN_PPLCFG_PRIORITY_U8 = 1403,
+  AVS_TKN_PPLCFG_LOW_POWER_BOOL = 1404,
+  AVS_TKN_PPLCFG_ATTRIBUTES_U16 = 1405,
+  AVS_TKN_PPLCFG_TRIGGER_U32 = 1406,
+  AVS_TKN_BINDING_ID_U32 = 1501,
+  AVS_TKN_BINDING_TARGET_TPLG_NAME_STRING = 1502,
+  AVS_TKN_BINDING_TARGET_PATH_TMPL_ID_U32 = 1503,
+  AVS_TKN_BINDING_TARGET_PPL_ID_U32 = 1504,
+  AVS_TKN_BINDING_TARGET_MOD_ID_U32 = 1505,
+  AVS_TKN_BINDING_TARGET_MOD_PIN_U8 = 1506,
+  AVS_TKN_BINDING_MOD_ID_U32 = 1507,
+  AVS_TKN_BINDING_MOD_PIN_U8 = 1508,
+  AVS_TKN_BINDING_IS_SINK_U8 = 1509,
+  AVS_TKN_PPL_ID_U32 = 1601,
+  AVS_TKN_PPL_PPLCFG_ID_U32 = 1602,
+  AVS_TKN_PPL_NUM_BINDING_IDS_U32 = 1603,
+  AVS_TKN_PPL_BINDING_ID_U32 = 1604,
+  AVS_TKN_MOD_ID_U32 = 1701,
+  AVS_TKN_MOD_MODCFG_BASE_ID_U32 = 1702,
+  AVS_TKN_MOD_IN_AFMT_ID_U32 = 1703,
+  AVS_TKN_MOD_CORE_ID_U8 = 1704,
+  AVS_TKN_MOD_PROC_DOMAIN_U8 = 1705,
+  AVS_TKN_MOD_MODCFG_EXT_ID_U32 = 1706,
+  AVS_TKN_PATH_TMPL_ID_U32 = 1801,
+  AVS_TKN_PATH_ID_U32 = 1901,
+  AVS_TKN_PATH_FE_FMT_ID_U32 = 1902,
+  AVS_TKN_PATH_BE_FMT_ID_U32 = 1903,
+  AVS_TKN_PIN_FMT_INDEX_U32 = 2201,
+  AVS_TKN_PIN_FMT_IOBS_U32 = 2202,
+  AVS_TKN_PIN_FMT_AFMT_ID_U32 = 2203,
+};
+#endif
diff --git a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/sound/skl-tplg-interface.h b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/sound/skl-tplg-interface.h
index b516a08..6dd9655 100644
--- a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/sound/skl-tplg-interface.h
+++ b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/sound/skl-tplg-interface.h
@@ -110,8 +110,8 @@
   __u32 rsvd : 30;
   __u32 param_id;
   __u32 max;
-  char params[0];
-} __packed;
+  char params[];
+} __attribute__((__packed__));
 enum skl_tkn_dir {
   SKL_DIR_IN,
   SKL_DIR_OUT
@@ -123,7 +123,7 @@
 struct skl_dfw_v4_module_pin {
   __u16 module_id;
   __u16 instance_id;
-} __packed;
+} __attribute__((__packed__));
 struct skl_dfw_v4_module_fmt {
   __u32 channels;
   __u32 freq;
@@ -133,21 +133,21 @@
   __u32 interleaving_style;
   __u32 sample_type;
   __u32 ch_map;
-} __packed;
+} __attribute__((__packed__));
 struct skl_dfw_v4_module_caps {
   __u32 set_params : 2;
   __u32 rsvd : 30;
   __u32 param_id;
   __u32 caps_size;
   __u32 caps[HDA_SST_CFG_MAX];
-} __packed;
+} __attribute__((__packed__));
 struct skl_dfw_v4_pipe {
   __u8 pipe_id;
   __u8 pipe_priority;
   __u16 conn_type : 4;
   __u16 rsvd : 4;
   __u16 memory_pages : 8;
-} __packed;
+} __attribute__((__packed__));
 struct skl_dfw_v4_module {
   char uuid[SKL_UUID_STR_SZ];
   __u16 module_id;
@@ -181,5 +181,5 @@
   struct skl_dfw_v4_module_pin in_pin[MAX_IN_QUEUE];
   struct skl_dfw_v4_module_pin out_pin[MAX_OUT_QUEUE];
   struct skl_dfw_v4_module_caps caps;
-} __packed;
+} __attribute__((__packed__));
 #endif
diff --git a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/sound/sof/abi.h b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/sound/sof/abi.h
index 3af3c9d..dc4e525 100644
--- a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/sound/sof/abi.h
+++ b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/sound/sof/abi.h
@@ -18,8 +18,9 @@
  ****************************************************************************/
 #ifndef __INCLUDE_UAPI_SOUND_SOF_ABI_H__
 #define __INCLUDE_UAPI_SOUND_SOF_ABI_H__
+#include <linux/types.h>
 #define SOF_ABI_MAJOR 3
-#define SOF_ABI_MINOR 18
+#define SOF_ABI_MINOR 23
 #define SOF_ABI_PATCH 0
 #define SOF_ABI_MAJOR_SHIFT 24
 #define SOF_ABI_MAJOR_MASK 0xff
diff --git a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/sound/sof/fw.h b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/sound/sof/fw.h
index c36c2b9..97b7de3 100644
--- a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/sound/sof/fw.h
+++ b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/sound/sof/fw.h
@@ -46,7 +46,7 @@
   enum snd_sof_fw_blk_type type;
   __u32 size;
   __u32 offset;
-} __packed;
+} __attribute__((__packed__));
 enum snd_sof_fw_mod_type {
   SOF_FW_BASE = 0,
   SOF_FW_MODULE = 1,
@@ -55,11 +55,11 @@
   enum snd_sof_fw_mod_type type;
   __u32 size;
   __u32 num_blocks;
-} __packed;
+} __attribute__((__packed__));
 struct snd_sof_fw_header {
   unsigned char sig[SND_SOF_FW_SIG_SIZE];
   __u32 file_size;
   __u32 num_modules;
   __u32 abi;
-} __packed;
+} __attribute__((__packed__));
 #endif
diff --git a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/sound/sof/header.h b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/sound/sof/header.h
index 3fbd4a4..7514550 100644
--- a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/sound/sof/header.h
+++ b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/sound/sof/header.h
@@ -25,6 +25,19 @@
   __u32 size;
   __u32 abi;
   __u32 reserved[4];
-  __u32 data[0];
-} __packed;
+  __u32 data[];
+} __attribute__((__packed__));
+#define SOF_MANIFEST_DATA_TYPE_NHLT 1
+struct sof_manifest_tlv {
+  __le32 type;
+  __le32 size;
+  __u8 data[];
+};
+struct sof_manifest {
+  __le16 abi_major;
+  __le16 abi_minor;
+  __le16 abi_patch;
+  __le16 count;
+  struct sof_manifest_tlv items[];
+};
 #endif
diff --git a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/sound/sof/tokens.h b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/sound/sof/tokens.h
index 856281a..b07ed42 100644
--- a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/sound/sof/tokens.h
+++ b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/sound/sof/tokens.h
@@ -37,8 +37,13 @@
 #define SOF_TKN_SCHED_FRAMES 204
 #define SOF_TKN_SCHED_TIME_DOMAIN 205
 #define SOF_TKN_SCHED_DYNAMIC_PIPELINE 206
+#define SOF_TKN_SCHED_LP_MODE 207
+#define SOF_TKN_SCHED_MEM_USAGE 208
 #define SOF_TKN_VOLUME_RAMP_STEP_TYPE 250
 #define SOF_TKN_VOLUME_RAMP_STEP_MS 251
+#define SOF_TKN_GAIN_RAMP_TYPE 260
+#define SOF_TKN_GAIN_RAMP_DURATION 261
+#define SOF_TKN_GAIN_VAL 262
 #define SOF_TKN_SRC_RATE_IN 300
 #define SOF_TKN_SRC_RATE_OUT 301
 #define SOF_TKN_ASRC_RATE_IN 320
@@ -51,6 +56,9 @@
 #define SOF_TKN_COMP_FORMAT 402
 #define SOF_TKN_COMP_CORE_ID 404
 #define SOF_TKN_COMP_UUID 405
+#define SOF_TKN_COMP_CPC 406
+#define SOF_TKN_COMP_IS_PAGES 409
+#define SOF_TKN_COMP_NUM_AUDIO_FORMATS 410
 #define SOF_TKN_INTEL_SSP_CLKS_CONTROL 500
 #define SOF_TKN_INTEL_SSP_MCLK_ID 501
 #define SOF_TKN_INTEL_SSP_SAMPLE_BITS 502
@@ -90,4 +98,29 @@
 #define SOF_TKN_MEDIATEK_AFE_RATE 1600
 #define SOF_TKN_MEDIATEK_AFE_CH 1601
 #define SOF_TKN_MEDIATEK_AFE_FORMAT 1602
+#define SOF_TKN_MIXER_TYPE 1700
+#define SOF_TKN_AMD_ACPDMIC_RATE 1800
+#define SOF_TKN_AMD_ACPDMIC_CH 1801
+#define SOF_TKN_CAVS_AUDIO_FORMAT_IN_RATE 1900
+#define SOF_TKN_CAVS_AUDIO_FORMAT_IN_BIT_DEPTH 1901
+#define SOF_TKN_CAVS_AUDIO_FORMAT_IN_VALID_BIT 1902
+#define SOF_TKN_CAVS_AUDIO_FORMAT_IN_CHANNELS 1903
+#define SOF_TKN_CAVS_AUDIO_FORMAT_IN_CH_MAP 1904
+#define SOF_TKN_CAVS_AUDIO_FORMAT_IN_CH_CFG 1905
+#define SOF_TKN_CAVS_AUDIO_FORMAT_IN_INTERLEAVING_STYLE 1906
+#define SOF_TKN_CAVS_AUDIO_FORMAT_IN_FMT_CFG 1907
+#define SOF_TKN_CAVS_AUDIO_FORMAT_IN_SAMPLE_TYPE 1908
+#define SOF_TKN_CAVS_AUDIO_FORMAT_OUT_RATE 1930
+#define SOF_TKN_CAVS_AUDIO_FORMAT_OUT_BIT_DEPTH 1931
+#define SOF_TKN_CAVS_AUDIO_FORMAT_OUT_VALID_BIT 1932
+#define SOF_TKN_CAVS_AUDIO_FORMAT_OUT_CHANNELS 1933
+#define SOF_TKN_CAVS_AUDIO_FORMAT_OUT_CH_MAP 1934
+#define SOF_TKN_CAVS_AUDIO_FORMAT_OUT_CH_CFG 1935
+#define SOF_TKN_CAVS_AUDIO_FORMAT_OUT_INTERLEAVING_STYLE 1936
+#define SOF_TKN_CAVS_AUDIO_FORMAT_OUT_FMT_CFG 1937
+#define SOF_TKN_CAVS_AUDIO_FORMAT_OUT_SAMPLE_TYPE 1938
+#define SOF_TKN_CAVS_AUDIO_FORMAT_IBS 1970
+#define SOF_TKN_CAVS_AUDIO_FORMAT_OBS 1971
+#define SOF_TKN_CAVS_AUDIO_FORMAT_DMA_BUFFER_SIZE 1972
+#define SOF_TKN_INTEL_COPIER_NODE_TYPE 1980
 #endif
diff --git a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/sound/usb_stream.h b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/sound/usb_stream.h
index bb7fe80..ac87c31 100644
--- a/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/sound/usb_stream.h
+++ b/mainline/runtime/sdk/android/arm64/include/bionic/libc/kernel/uapi/sound/usb_stream.h
@@ -49,7 +49,7 @@
   unsigned inpacket_split_at;
   unsigned next_inpacket_split;
   unsigned next_inpacket_split_at;
-  struct usb_stream_packet inpacket[0];
+  struct usb_stream_packet inpacket[];
 };
 enum usb_stream_state {
   usb_stream_invalid,
diff --git a/mainline/runtime/sdk/android/arm64/lib/crtbegin_dynamic.o b/mainline/runtime/sdk/android/arm64/lib/crtbegin_dynamic.o
index 258d0d4..be5d1f2 100644
--- a/mainline/runtime/sdk/android/arm64/lib/crtbegin_dynamic.o
+++ b/mainline/runtime/sdk/android/arm64/lib/crtbegin_dynamic.o
Binary files differ
diff --git a/mainline/runtime/sdk/android/arm64/lib/crtbegin_so.o b/mainline/runtime/sdk/android/arm64/lib/crtbegin_so.o
index 02905a6..87a1b4d 100644
--- a/mainline/runtime/sdk/android/arm64/lib/crtbegin_so.o
+++ b/mainline/runtime/sdk/android/arm64/lib/crtbegin_so.o
Binary files differ
diff --git a/mainline/runtime/sdk/android/arm64/lib/crtend.o b/mainline/runtime/sdk/android/arm64/lib/crtend.o
deleted file mode 100644
index e682831..0000000
--- a/mainline/runtime/sdk/android/arm64/lib/crtend.o
+++ /dev/null
Binary files differ
diff --git a/mainline/runtime/sdk/android/arm64/lib/crtend_android.o b/mainline/runtime/sdk/android/arm64/lib/crtend_android.o
new file mode 100644
index 0000000..468c784
--- /dev/null
+++ b/mainline/runtime/sdk/android/arm64/lib/crtend_android.o
Binary files differ
diff --git a/mainline/runtime/sdk/android/arm64/lib/crtend_so.o b/mainline/runtime/sdk/android/arm64/lib/crtend_so.o
index bee60d9..fd44d4c 100644
--- a/mainline/runtime/sdk/android/arm64/lib/crtend_so.o
+++ b/mainline/runtime/sdk/android/arm64/lib/crtend_so.o
Binary files differ
diff --git a/mainline/runtime/sdk/android/arm64/lib/libasync_safe.a b/mainline/runtime/sdk/android/arm64/lib/libasync_safe.a
index 89c3386..d307846 100644
--- a/mainline/runtime/sdk/android/arm64/lib/libasync_safe.a
+++ b/mainline/runtime/sdk/android/arm64/lib/libasync_safe.a
Binary files differ
diff --git a/mainline/runtime/sdk/android/arm64/lib/libc.so b/mainline/runtime/sdk/android/arm64/lib/libc.so
index 3998a8e..2ea4dc0 100755
--- a/mainline/runtime/sdk/android/arm64/lib/libc.so
+++ b/mainline/runtime/sdk/android/arm64/lib/libc.so
Binary files differ
diff --git a/mainline/runtime/sdk/android/arm64/lib/libdl.so b/mainline/runtime/sdk/android/arm64/lib/libdl.so
index 4021572..537b863 100755
--- a/mainline/runtime/sdk/android/arm64/lib/libdl.so
+++ b/mainline/runtime/sdk/android/arm64/lib/libdl.so
Binary files differ
diff --git a/mainline/runtime/sdk/android/arm64/lib/libdl_android.so b/mainline/runtime/sdk/android/arm64/lib/libdl_android.so
index 112c53c..7f64377 100755
--- a/mainline/runtime/sdk/android/arm64/lib/libdl_android.so
+++ b/mainline/runtime/sdk/android/arm64/lib/libdl_android.so
Binary files differ
diff --git a/mainline/runtime/sdk/android/arm64/lib/libm.so b/mainline/runtime/sdk/android/arm64/lib/libm.so
index 309ad58..ed8da25 100755
--- a/mainline/runtime/sdk/android/arm64/lib/libm.so
+++ b/mainline/runtime/sdk/android/arm64/lib/libm.so
Binary files differ
diff --git a/mainline/runtime/sdk/android/arm64/lib/note_memtag_heap_async.a b/mainline/runtime/sdk/android/arm64/lib/note_memtag_heap_async.a
index 587a9b4..fb391b3 100644
--- a/mainline/runtime/sdk/android/arm64/lib/note_memtag_heap_async.a
+++ b/mainline/runtime/sdk/android/arm64/lib/note_memtag_heap_async.a
Binary files differ
diff --git a/mainline/runtime/sdk/android/arm64/lib/note_memtag_heap_sync.a b/mainline/runtime/sdk/android/arm64/lib/note_memtag_heap_sync.a
index e3d409e..bfc6d07 100644
--- a/mainline/runtime/sdk/android/arm64/lib/note_memtag_heap_sync.a
+++ b/mainline/runtime/sdk/android/arm64/lib/note_memtag_heap_sync.a
Binary files differ
diff --git a/mainline/runtime/sdk/android/x86/include/bionic/libc/include/android/api-level.h b/mainline/runtime/sdk/android/x86/include/bionic/libc/include/android/api-level.h
index ecf318d..79085d1 100644
--- a/mainline/runtime/sdk/android/x86/include/bionic/libc/include/android/api-level.h
+++ b/mainline/runtime/sdk/android/x86/include/bionic/libc/include/android/api-level.h
@@ -139,21 +139,32 @@
 #define __ANDROID_API_P__ 28
 
 /**
- * Names the "Q" API level (29), for comparison against `__ANDROID_API__`.
- * This release was called Android 10 publicly, not to be (but sure to be)
- * confused with API level 10.
+ * Names the Android 10 (aka "Q" or "Quince Tart") API level (29), for
+ * comparison against `__ANDROID_API__`.
  */
 #define __ANDROID_API_Q__ 29
 
-/** Names the "R" API level (30), for comparison against `__ANDROID_API__`. */
+/**
+ * Names the Android 11 (aka "R" or "Red Velvet Cake") API level (30), for
+ * comparison against `__ANDROID_API__`.
+ */
 #define __ANDROID_API_R__ 30
 
-/** Names the "S" API level (31), for comparison against `__ANDROID_API__`. */
+/**
+ * Names the Android 12 (aka "S" or "Snowcone") API level (31), for
+ * comparison against `__ANDROID_API__`.
+ */
 #define __ANDROID_API_S__ 31
 
-/** Names the "T" API level (33), for comparison against `__ANDROID_API__`. */
+/**
+ * Names the Android 13 (aka "T" or "Tiramisu") API level (33), for
+ * comparison against `__ANDROID_API__`.
+ */
 #define __ANDROID_API_T__ 33
 
+/** Names the "U" API level (34), for comparison against `__ANDROID_API__`. */
+#define __ANDROID_API_U__ 34
+
 /* This file is included in <features.h>, and might be used from .S files. */
 #if !defined(__ASSEMBLY__)
 
diff --git a/mainline/runtime/sdk/android/x86/include/bionic/libc/include/android/fdsan.h b/mainline/runtime/sdk/android/x86/include/bionic/libc/include/android/fdsan.h
index e23de85..59ce133 100644
--- a/mainline/runtime/sdk/android/x86/include/bionic/libc/include/android/fdsan.h
+++ b/mainline/runtime/sdk/android/x86/include/bionic/libc/include/android/fdsan.h
@@ -123,6 +123,9 @@
 
   /* libziparchive's ZipArchive */
   ANDROID_FDSAN_OWNER_TYPE_ZIPARCHIVE = 12,
+
+  /* native_handle_t */
+  ANDROID_FDSAN_OWNER_TYPE_NATIVE_HANDLE = 13,
 };
 
 /*
diff --git a/mainline/runtime/sdk/android/x86/include/bionic/libc/include/android/legacy_stdlib_inlines.h b/mainline/runtime/sdk/android/x86/include/bionic/libc/include/android/legacy_stdlib_inlines.h
index aeb1575..6903536 100644
--- a/mainline/runtime/sdk/android/x86/include/bionic/libc/include/android/legacy_stdlib_inlines.h
+++ b/mainline/runtime/sdk/android/x86/include/bionic/libc/include/android/legacy_stdlib_inlines.h
@@ -57,13 +57,11 @@
 __BEGIN_DECLS
 
 static __inline float strtof(const char* nptr, char** endptr) {
+  // N.B. Double-rounding makes this function incorrect for some inputs.
   double d = strtod(nptr, endptr);
-  if (d > FLT_MAX) {
+  if (__builtin_isfinite(d) && __builtin_fabs(d) > FLT_MAX) {
     errno = ERANGE;
-    return __builtin_huge_valf();
-  } else if (d < -FLT_MAX) {
-    errno = ERANGE;
-    return -__builtin_huge_valf();
+    return __builtin_copysign(__builtin_huge_valf(), d);
   }
   return __BIONIC_CAST(static_cast, float, d);
 }
diff --git a/mainline/runtime/sdk/android/x86/include/bionic/libc/include/bits/elf_arm.h b/mainline/runtime/sdk/android/x86/include/bionic/libc/include/bits/elf_arm.h
deleted file mode 100644
index 08fe1d5..0000000
--- a/mainline/runtime/sdk/android/x86/include/bionic/libc/include/bits/elf_arm.h
+++ /dev/null
@@ -1,131 +0,0 @@
-/*	$NetBSD: elf_machdep.h,v 1.17 2014/02/25 19:20:09 matt Exp $	*/
-
-#ifndef _ARM_ELF_MACHDEP_H_
-#define _ARM_ELF_MACHDEP_H_
-
-/* Android-added. */
-#define R_ARM_IRELATIVE		160
-
-/* Processor specific flags for the ELF header e_flags field.  */
-#define EF_ARM_RELEXEC		0x00000001
-#define EF_ARM_HASENTRY		0x00000002
-#define EF_ARM_INTERWORK	0x00000004 /* GNU binutils 000413 */
-#define EF_ARM_SYMSARESORTED	0x00000004 /* ARM ELF A08 */
-#define EF_ARM_APCS_26		0x00000008 /* GNU binutils 000413 */
-#define EF_ARM_DYNSYMSUSESEGIDX	0x00000008 /* ARM ELF B01 */
-#define EF_ARM_APCS_FLOAT	0x00000010 /* GNU binutils 000413 */
-#define EF_ARM_MAPSYMSFIRST	0x00000010 /* ARM ELF B01 */
-#define EF_ARM_PIC		0x00000020
-#define EF_ARM_ALIGN8		0x00000040 /* 8-bit structure alignment.  */
-#define EF_ARM_NEW_ABI		0x00000080
-#define EF_ARM_OLD_ABI		0x00000100
-#define EF_ARM_SOFT_FLOAT	0x00000200
-#define EF_ARM_BE8		0x00800000
-#define EF_ARM_EABIMASK		0xff000000
-#define	EF_ARM_EABI_VER1	0x01000000
-#define	EF_ARM_EABI_VER2	0x02000000
-#define	EF_ARM_EABI_VER3	0x03000000
-#define	EF_ARM_EABI_VER4	0x04000000
-#define	EF_ARM_EABI_VER5	0x05000000
-
-/* Processor specific relocation types */
-
-#define R_ARM_NONE		0
-#define R_ARM_PC24		1
-#define R_ARM_ABS32		2
-#define R_ARM_REL32		3
-#define R_ARM_PC13		4
-#define R_ARM_ABS16		5
-#define R_ARM_ABS12		6
-#define R_ARM_THM_ABS5		7
-#define R_ARM_ABS8		8
-#define R_ARM_SBREL32		9
-#define R_ARM_THM_PC22		10
-#define R_ARM_THM_PC8		11
-#define R_ARM_AMP_VCALL9	12
-#define R_ARM_SWI24		13	/* obsolete static relocation */
-#define R_ARM_TLS_DESC		13	/* dynamic relocation */
-#define R_ARM_THM_SWI8		14
-#define R_ARM_XPC25		15
-#define R_ARM_THM_XPC22		16
-
-/* TLS relocations */
-#define R_ARM_TLS_DTPMOD32	17	/* ID of module containing symbol */
-#define R_ARM_TLS_DTPOFF32	18	/* Offset in TLS block */
-#define R_ARM_TLS_TPOFF32	19	/* Offset in static TLS block */
-
-/* 20-31 are reserved for ARM Linux. */
-#define R_ARM_COPY		20
-#define R_ARM_GLOB_DAT		21
-#define	R_ARM_JUMP_SLOT		22
-#define R_ARM_RELATIVE		23
-#define	R_ARM_GOTOFF		24
-#define R_ARM_GOTPC		25
-#define R_ARM_GOT32		26
-#define R_ARM_PLT32		27
-#define R_ARM_CALL		28
-#define R_ARM_JUMP24		29
-#define R_ARM_THM_JUMP24	30
-#define R_ARM_BASE_ABS		31
-#define R_ARM_ALU_PCREL_7_0	32
-#define R_ARM_ALU_PCREL_15_8	33
-#define R_ARM_ALU_PCREL_23_15	34
-#define R_ARM_ALU_SBREL_11_0	35
-#define R_ARM_ALU_SBREL_19_12	36
-#define R_ARM_ALU_SBREL_27_20	37	// depcreated
-#define R_ARM_TARGET1		38
-#define R_ARM_SBREL31		39	// deprecated
-#define R_ARM_V4BX		40
-#define R_ARM_TARGET2		41
-#define R_ARM_PREL31		42
-#define R_ARM_MOVW_ABS_NC	43
-#define R_ARM_MOVT_ABS		44
-#define R_ARM_MOVW_PREL_NC	45
-#define R_ARM_MOVT_PREL		46
-#define R_ARM_THM_MOVW_ABS_NC	47
-#define R_ARM_THM_MOVT_ABS	48
-#define R_ARM_THM_MOVW_PREL_NC	49
-#define R_ARM_THM_MOVT_PREL	50
-
-/* 96-111 are reserved to G++. */
-#define R_ARM_GNU_VTENTRY	100
-#define R_ARM_GNU_VTINHERIT	101
-#define R_ARM_THM_PC11		102
-#define R_ARM_THM_PC9		103
-
-/* More TLS relocations */
-#define R_ARM_TLS_GD32		104	/* PC-rel 32 bit for global dynamic */
-#define R_ARM_TLS_LDM32		105	/* PC-rel 32 bit for local dynamic */
-#define R_ARM_TLS_LDO32		106	/* 32 bit offset relative to TLS */
-#define R_ARM_TLS_IE32		107	/* PC-rel 32 bit for GOT entry of */
-#define R_ARM_TLS_LE32		108
-#define R_ARM_TLS_LDO12		109
-#define R_ARM_TLS_LE12		110
-#define R_ARM_TLS_IE12GP	111
-
-/* 112-127 are reserved for private experiments. */
-
-#define R_ARM_RXPC25		249
-#define R_ARM_RSBREL32		250
-#define R_ARM_THM_RPC22		251
-#define R_ARM_RREL32		252
-#define R_ARM_RABS32		253
-#define R_ARM_RPC24		254
-#define R_ARM_RBASE		255
-
-/* Processor specific program header flags */
-#define PF_ARM_SB		0x10000000
-#define PF_ARM_PI		0x20000000
-#define PF_ARM_ENTRY		0x80000000
-
-/* Processor specific program header types */
-#define PT_ARM_EXIDX		(PT_LOPROC + 1)
-
-/* Processor specific section header flags */
-#define SHF_ENTRYSECT		0x10000000
-#define SHF_COMDEF		0x80000000
-
-/* Processor specific symbol types */
-#define STT_ARM_TFUNC		STT_LOPROC
-
-#endif /* _ARM_ELF_MACHDEP_H_ */
diff --git a/mainline/runtime/sdk/android/x86/include/bionic/libc/include/bits/elf_arm64.h b/mainline/runtime/sdk/android/x86/include/bionic/libc/include/bits/elf_arm64.h
deleted file mode 100644
index 9330d7b..0000000
--- a/mainline/runtime/sdk/android/x86/include/bionic/libc/include/bits/elf_arm64.h
+++ /dev/null
@@ -1,97 +0,0 @@
-/*
- * Copyright (C) 2013 The Android Open Source Project
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *  * Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- *  * Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
- * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
- * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
- * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
- * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- */
-
-#ifndef _AARCH64_ELF_MACHDEP_H_
-#define _AARCH64_ELF_MACHDEP_H_
-
-/* Null relocations */
-#define R_ARM_NONE                      0
-#define R_AARCH64_NONE                  256
-
-/* Static Data relocations */
-#define R_AARCH64_ABS64                 257
-#define R_AARCH64_ABS32                 258
-#define R_AARCH64_ABS16                 259
-#define R_AARCH64_PREL64                260
-#define R_AARCH64_PREL32                261
-#define R_AARCH64_PREL16                262
-
-#define R_AARCH64_MOVW_UABS_G0          263
-#define R_AARCH64_MOVW_UABS_G0_NC       264
-#define R_AARCH64_MOVW_UABS_G1          265
-#define R_AARCH64_MOVW_UABS_G1_NC       266
-#define R_AARCH64_MOVW_UABS_G2          267
-#define R_AARCH64_MOVW_UABS_G2_NC       268
-#define R_AARCH64_MOVW_UABS_G3          269
-#define R_AARCH64_MOVW_SABS_G0          270
-#define R_AARCH64_MOVW_SABS_G1          271
-#define R_AARCH64_MOVW_SABS_G2          272
-
-/* PC-relative addresses */
-#define R_AARCH64_LD_PREL_LO19          273
-#define R_AARCH64_ADR_PREL_LO21         274
-#define R_AARCH64_ADR_PREL_PG_HI21      275
-#define R_AARCH64_ADR_PREL_PG_HI21_NC   276
-#define R_AARCH64_ADD_ABS_LO12_NC       277
-#define R_AARCH64_LDST8_ABS_LO12_NC     278
-
-/* Control-flow relocations */
-#define R_AARCH64_TSTBR14               279
-#define R_AARCH64_CONDBR19              280
-#define R_AARCH64_JUMP26                282
-#define R_AARCH64_CALL26                283
-#define R_AARCH64_LDST16_ABS_LO12_NC    284
-#define R_AARCH64_LDST32_ABS_LO12_NC    285
-#define R_AARCH64_LDST64_ABS_LO12_NC    286
-#define R_AARCH64_LDST128_ABS_LO12_NC   299
-
-#define R_AARCH64_MOVW_PREL_G0          287
-#define R_AARCH64_MOVW_PREL_G0_NC       288
-#define R_AARCH64_MOVW_PREL_G1          289
-#define R_AARCH64_MOVW_PREL_G1_NC       290
-#define R_AARCH64_MOVW_PREL_G2          291
-#define R_AARCH64_MOVW_PREL_G2_NC       292
-#define R_AARCH64_MOVW_PREL_G3          293
-
-/* Dynamic relocations */
-#define R_AARCH64_COPY                  1024
-#define R_AARCH64_GLOB_DAT              1025    /* Create GOT entry.  */
-#define R_AARCH64_JUMP_SLOT             1026    /* Create PLT entry.  */
-#define R_AARCH64_RELATIVE              1027    /* Adjust by program base.  */
-#define R_AARCH64_TLS_DTPMOD            1028    /* Module index. */
-#define R_AARCH64_TLS_DTPREL            1029    /* Module-relative offset. */
-#define R_AARCH64_TLS_TPREL             1030    /* TP-relative offset. */
-#define R_AARCH64_TLSDESC               1031    /* 16-byte descriptor: resolver func + arg. */
-#define R_AARCH64_IRELATIVE             1032
-
-/* Dynamic array tags */
-#define DT_AARCH64_BTI_PLT              0x70000001
-#define DT_AARCH64_PAC_PLT              0x70000003
-#define DT_AARCH64_VARIANT_PCS          0x70000005
-
-#endif /* _AARCH64_ELF_MACHDEP_H_ */
diff --git a/mainline/runtime/sdk/android/x86/include/bionic/libc/include/bits/elf_common.h b/mainline/runtime/sdk/android/x86/include/bionic/libc/include/bits/elf_common.h
new file mode 100644
index 0000000..ea833f4
--- /dev/null
+++ b/mainline/runtime/sdk/android/x86/include/bionic/libc/include/bits/elf_common.h
@@ -0,0 +1,1430 @@
+/*-
+ * SPDX-License-Identifier: BSD-2-Clause-FreeBSD
+ *
+ * Copyright (c) 2017, 2018 Dell EMC
+ * Copyright (c) 2000, 2001, 2008, 2011, David E. O'Brien
+ * Copyright (c) 1998 John D. Polstra.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ *
+ * $FreeBSD$
+ */
+
+#ifndef _SYS_ELF_COMMON_H_
+#define	_SYS_ELF_COMMON_H_ 1
+
+/*
+ * ELF definitions that are independent of architecture or word size.
+ */
+
+/*
+ * Option kinds.
+ */
+#define	ODK_NULL	0	/* undefined */
+#define	ODK_REGINFO	1	/* register usage info */
+#define	ODK_EXCEPTIONS	2	/* exception processing info */
+#define	ODK_PAD		3	/* section padding */
+#define	ODK_HWPATCH	4	/* hardware patch applied */
+#define	ODK_FILL	5	/* fill value used by the linker */
+#define	ODK_TAGS	6	/* reserved space for tools */
+#define	ODK_HWAND	7	/* hardware AND patch applied */
+#define	ODK_HWOR	8	/* hardware OR patch applied */
+#define	ODK_GP_GROUP	9	/* GP group for text/data sections */
+#define	ODK_IDENT	10	/* ID information */
+#define	ODK_PAGESIZE	11	/* page size information */
+
+/*
+ * ODK_EXCEPTIONS info field masks.
+ */
+#define	OEX_FPU_MIN	0x0000001f	/* min FPU exception required */
+#define	OEX_FPU_MAX	0x00001f00	/* max FPU exception allowed */
+#define	OEX_PAGE0	0x00010000	/* page zero must be mapped */
+#define	OEX_SMM		0x00020000	/* run in sequential memory mode */
+#define	OEX_PRECISEFP	0x00040000	/* run in precise FP exception mode */
+#define	OEX_DISMISS	0x00080000	/* dismiss invalid address traps */
+
+/*
+ * ODK_PAD info field masks.
+ */
+#define	OPAD_PREFIX	0x0001
+#define	OPAD_POSTFIX	0x0002
+#define	OPAD_SYMBOL	0x0004
+
+/*
+ * ODK_HWPATCH info field masks.
+ */
+#define	OHW_R4KEOP	0x00000001	/* patch for R4000 branch at end-of-page bug */
+#define	OHW_R8KPFETCH	0x00000002	/* R8000 prefetch bug may occur */
+#define	OHW_R5KEOP	0x00000004	/* patch for R5000 branch at end-of-page bug */
+#define	OHW_R5KCVTL	0x00000008	/* R5000 cvt.[ds].l bug: clean == 1 */
+#define	OHW_R10KLDL	0x00000010UL	/* need patch for R10000 misaligned load */
+
+/*
+ * ODK_HWAND/ODK_HWOR info field and hwp_flags[12] masks.
+ */
+#define	OHWA0_R4KEOP_CHECKED	0x00000001	/* object checked for R4000 end-of-page bug */
+#define	OHWA0_R4KEOP_CLEAN	0x00000002	/* object verified clean for R4000 end-of-page bug */
+#define	OHWO0_FIXADE		0x00000001	/* object requires call to fixade */
+
+/*
+ * ODK_IDENT/ODK_GP_GROUP info field masks.
+ */
+#define	OGP_GROUP	0x0000ffff	/* GP group number */
+#define	OGP_SELF	0x00010000	/* GP group is self-contained */
+
+/* Indexes into the e_ident array.  Keep synced with
+   http://www.sco.com/developers/gabi/latest/ch4.eheader.html */
+#define	EI_MAG0		0	/* Magic number, byte 0. */
+#define	EI_MAG1		1	/* Magic number, byte 1. */
+#define	EI_MAG2		2	/* Magic number, byte 2. */
+#define	EI_MAG3		3	/* Magic number, byte 3. */
+#define	EI_CLASS	4	/* Class of machine. */
+#define	EI_DATA		5	/* Data format. */
+#define	EI_VERSION	6	/* ELF format version. */
+#define	EI_OSABI	7	/* Operating system / ABI identification */
+#define	EI_ABIVERSION	8	/* ABI version */
+#define	OLD_EI_BRAND	8	/* Start of architecture identification. */
+#define	EI_PAD		9	/* Start of padding (per SVR4 ABI). */
+#define	EI_NIDENT	16	/* Size of e_ident array. */
+
+/* Values for the magic number bytes. */
+#define	ELFMAG0		0x7f
+#define	ELFMAG1		'E'
+#define	ELFMAG2		'L'
+#define	ELFMAG3		'F'
+#define	ELFMAG		"\177ELF"	/* magic string */
+#define	SELFMAG		4		/* magic string size */
+
+/* Values for e_ident[EI_VERSION] and e_version. */
+#define	EV_NONE		0
+#define	EV_CURRENT	1
+
+/* Values for e_ident[EI_CLASS]. */
+#define	ELFCLASSNONE	0	/* Unknown class. */
+#define	ELFCLASS32	1	/* 32-bit architecture. */
+#define	ELFCLASS64	2	/* 64-bit architecture. */
+
+/* Values for e_ident[EI_DATA]. */
+#define	ELFDATANONE	0	/* Unknown data format. */
+#define	ELFDATA2LSB	1	/* 2's complement little-endian. */
+#define	ELFDATA2MSB	2	/* 2's complement big-endian. */
+
+/* Values for e_ident[EI_OSABI]. */
+#define	ELFOSABI_NONE		0	/* UNIX System V ABI */
+#define	ELFOSABI_HPUX		1	/* HP-UX operating system */
+#define	ELFOSABI_NETBSD		2	/* NetBSD */
+#define	ELFOSABI_LINUX		3	/* GNU/Linux */
+#define	ELFOSABI_HURD		4	/* GNU/Hurd */
+#define	ELFOSABI_86OPEN		5	/* 86Open common IA32 ABI */
+#define	ELFOSABI_SOLARIS	6	/* Solaris */
+#define	ELFOSABI_AIX		7	/* AIX */
+#define	ELFOSABI_IRIX		8	/* IRIX */
+#define	ELFOSABI_FREEBSD	9	/* FreeBSD */
+#define	ELFOSABI_TRU64		10	/* TRU64 UNIX */
+#define	ELFOSABI_MODESTO	11	/* Novell Modesto */
+#define	ELFOSABI_OPENBSD	12	/* OpenBSD */
+#define	ELFOSABI_OPENVMS	13	/* Open VMS */
+#define	ELFOSABI_NSK		14	/* HP Non-Stop Kernel */
+#define	ELFOSABI_AROS		15	/* Amiga Research OS */
+#define	ELFOSABI_FENIXOS	16	/* FenixOS */
+#define	ELFOSABI_CLOUDABI	17	/* Nuxi CloudABI */
+#define	ELFOSABI_OPENVOS	18	/* Stratus Technologies OpenVOS */
+#define	ELFOSABI_ARM_AEABI	64	/* ARM EABI */
+#define	ELFOSABI_ARM		97	/* ARM */
+#define	ELFOSABI_STANDALONE	255	/* Standalone (embedded) application */
+
+#define	ELFOSABI_MONTEREY	ELFOSABI_AIX	/* Monterey */
+
+/* e_ident */
+#define	IS_ELF(ehdr)	((ehdr).e_ident[EI_MAG0] == ELFMAG0 && \
+			 (ehdr).e_ident[EI_MAG1] == ELFMAG1 && \
+			 (ehdr).e_ident[EI_MAG2] == ELFMAG2 && \
+			 (ehdr).e_ident[EI_MAG3] == ELFMAG3)
+
+/* Values for e_type. */
+#define	ET_NONE		0	/* Unknown type. */
+#define	ET_REL		1	/* Relocatable. */
+#define	ET_EXEC		2	/* Executable. */
+#define	ET_DYN		3	/* Shared object. */
+#define	ET_CORE		4	/* Core file. */
+#define	ET_LOOS		0xfe00	/* First operating system specific. */
+#define	ET_HIOS		0xfeff	/* Last operating system-specific. */
+#define	ET_LOPROC	0xff00	/* First processor-specific. */
+#define	ET_HIPROC	0xffff	/* Last processor-specific. */
+
+/* Values for e_machine. */
+#define	EM_NONE		0	/* Unknown machine. */
+#define	EM_M32		1	/* AT&T WE32100. */
+#define	EM_SPARC	2	/* Sun SPARC. */
+#define	EM_386		3	/* Intel i386. */
+#define	EM_68K		4	/* Motorola 68000. */
+#define	EM_88K		5	/* Motorola 88000. */
+#define	EM_IAMCU	6	/* Intel MCU. */
+#define	EM_860		7	/* Intel i860. */
+#define	EM_MIPS		8	/* MIPS R3000 Big-Endian only. */
+#define	EM_S370		9	/* IBM System/370. */
+#define	EM_MIPS_RS3_LE	10	/* MIPS R3000 Little-Endian. */
+#define	EM_PARISC	15	/* HP PA-RISC. */
+#define	EM_VPP500	17	/* Fujitsu VPP500. */
+#define	EM_SPARC32PLUS	18	/* SPARC v8plus. */
+#define	EM_960		19	/* Intel 80960. */
+#define	EM_PPC		20	/* PowerPC 32-bit. */
+#define	EM_PPC64	21	/* PowerPC 64-bit. */
+#define	EM_S390		22	/* IBM System/390. */
+#define	EM_V800		36	/* NEC V800. */
+#define	EM_FR20		37	/* Fujitsu FR20. */
+#define	EM_RH32		38	/* TRW RH-32. */
+#define	EM_RCE		39	/* Motorola RCE. */
+#define	EM_ARM		40	/* ARM. */
+#define	EM_SH		42	/* Hitachi SH. */
+#define	EM_SPARCV9	43	/* SPARC v9 64-bit. */
+#define	EM_TRICORE	44	/* Siemens TriCore embedded processor. */
+#define	EM_ARC		45	/* Argonaut RISC Core. */
+#define	EM_H8_300	46	/* Hitachi H8/300. */
+#define	EM_H8_300H	47	/* Hitachi H8/300H. */
+#define	EM_H8S		48	/* Hitachi H8S. */
+#define	EM_H8_500	49	/* Hitachi H8/500. */
+#define	EM_IA_64	50	/* Intel IA-64 Processor. */
+#define	EM_MIPS_X	51	/* Stanford MIPS-X. */
+#define	EM_COLDFIRE	52	/* Motorola ColdFire. */
+#define	EM_68HC12	53	/* Motorola M68HC12. */
+#define	EM_MMA		54	/* Fujitsu MMA. */
+#define	EM_PCP		55	/* Siemens PCP. */
+#define	EM_NCPU		56	/* Sony nCPU. */
+#define	EM_NDR1		57	/* Denso NDR1 microprocessor. */
+#define	EM_STARCORE	58	/* Motorola Star*Core processor. */
+#define	EM_ME16		59	/* Toyota ME16 processor. */
+#define	EM_ST100	60	/* STMicroelectronics ST100 processor. */
+#define	EM_TINYJ	61	/* Advanced Logic Corp. TinyJ processor. */
+#define	EM_X86_64	62	/* Advanced Micro Devices x86-64 */
+#define	EM_AMD64	EM_X86_64	/* Advanced Micro Devices x86-64 (compat) */
+#define	EM_PDSP		63	/* Sony DSP Processor. */
+#define	EM_FX66		66	/* Siemens FX66 microcontroller. */
+#define	EM_ST9PLUS	67	/* STMicroelectronics ST9+ 8/16
+				   microcontroller. */
+#define	EM_ST7		68	/* STmicroelectronics ST7 8-bit
+				   microcontroller. */
+#define	EM_68HC16	69	/* Motorola MC68HC16 microcontroller. */
+#define	EM_68HC11	70	/* Motorola MC68HC11 microcontroller. */
+#define	EM_68HC08	71	/* Motorola MC68HC08 microcontroller. */
+#define	EM_68HC05	72	/* Motorola MC68HC05 microcontroller. */
+#define	EM_SVX		73	/* Silicon Graphics SVx. */
+#define	EM_ST19		74	/* STMicroelectronics ST19 8-bit mc. */
+#define	EM_VAX		75	/* Digital VAX. */
+#define	EM_CRIS		76	/* Axis Communications 32-bit embedded
+				   processor. */
+#define	EM_JAVELIN	77	/* Infineon Technologies 32-bit embedded
+				   processor. */
+#define	EM_FIREPATH	78	/* Element 14 64-bit DSP Processor. */
+#define	EM_ZSP		79	/* LSI Logic 16-bit DSP Processor. */
+#define	EM_MMIX		80	/* Donald Knuth's educational 64-bit proc. */
+#define	EM_HUANY	81	/* Harvard University machine-independent
+				   object files. */
+#define	EM_PRISM	82	/* SiTera Prism. */
+#define	EM_AVR		83	/* Atmel AVR 8-bit microcontroller. */
+#define	EM_FR30		84	/* Fujitsu FR30. */
+#define	EM_D10V		85	/* Mitsubishi D10V. */
+#define	EM_D30V		86	/* Mitsubishi D30V. */
+#define	EM_V850		87	/* NEC v850. */
+#define	EM_M32R		88	/* Mitsubishi M32R. */
+#define	EM_MN10300	89	/* Matsushita MN10300. */
+#define	EM_MN10200	90	/* Matsushita MN10200. */
+#define	EM_PJ		91	/* picoJava. */
+#define	EM_OPENRISC	92	/* OpenRISC 32-bit embedded processor. */
+#define	EM_ARC_A5	93	/* ARC Cores Tangent-A5. */
+#define	EM_XTENSA	94	/* Tensilica Xtensa Architecture. */
+#define	EM_VIDEOCORE	95	/* Alphamosaic VideoCore processor. */
+#define	EM_TMM_GPP	96	/* Thompson Multimedia General Purpose
+				   Processor. */
+#define	EM_NS32K	97	/* National Semiconductor 32000 series. */
+#define	EM_TPC		98	/* Tenor Network TPC processor. */
+#define	EM_SNP1K	99	/* Trebia SNP 1000 processor. */
+#define	EM_ST200	100	/* STMicroelectronics ST200 microcontroller. */
+#define	EM_IP2K		101	/* Ubicom IP2xxx microcontroller family. */
+#define	EM_MAX		102	/* MAX Processor. */
+#define	EM_CR		103	/* National Semiconductor CompactRISC
+				   microprocessor. */
+#define	EM_F2MC16	104	/* Fujitsu F2MC16. */
+#define	EM_MSP430	105	/* Texas Instruments embedded microcontroller
+				   msp430. */
+#define	EM_BLACKFIN	106	/* Analog Devices Blackfin (DSP) processor. */
+#define	EM_SE_C33	107	/* S1C33 Family of Seiko Epson processors. */
+#define	EM_SEP		108	/* Sharp embedded microprocessor. */
+#define	EM_ARCA		109	/* Arca RISC Microprocessor. */
+#define	EM_UNICORE	110	/* Microprocessor series from PKU-Unity Ltd.
+				   and MPRC of Peking University */
+#define	EM_AARCH64	183	/* AArch64 (64-bit ARM) */
+#define	EM_RISCV	243	/* RISC-V */
+
+/* Non-standard or deprecated. */
+#define	EM_486		6	/* Intel i486. */
+#define	EM_MIPS_RS4_BE	10	/* MIPS R4000 Big-Endian */
+#define	EM_ALPHA_STD	41	/* Digital Alpha (standard value). */
+#define	EM_ALPHA	0x9026	/* Alpha (written in the absence of an ABI) */
+
+/**
+ * e_flags
+ */
+#define	EF_ARM_RELEXEC	0x1
+#define	EF_ARM_HASENTRY	0x2
+#define	EF_ARM_SYMSARESORTED	0x4
+#define	EF_ARM_DYNSYMSUSESEGIDX	0x8
+#define	EF_ARM_MAPSYMSFIRST	0x10
+#define	EF_ARM_LE8		0x00400000
+#define	EF_ARM_BE8		0x00800000
+#define	EF_ARM_EABIMASK		0xFF000000
+#define	EF_ARM_EABI_UNKNOWN	0x00000000
+#define	EF_ARM_EABI_VER1	0x01000000
+#define	EF_ARM_EABI_VER2	0x02000000
+#define	EF_ARM_EABI_VER3	0x03000000
+#define	EF_ARM_EABI_VER4	0x04000000
+#define	EF_ARM_EABI_VER5	0x05000000
+#define	EF_ARM_INTERWORK	0x00000004
+#define	EF_ARM_APCS_26		0x00000008
+#define	EF_ARM_APCS_FLOAT	0x00000010
+#define	EF_ARM_PIC		0x00000020
+#define	EF_ARM_ALIGN8		0x00000040
+#define	EF_ARM_NEW_ABI		0x00000080
+#define	EF_ARM_OLD_ABI		0x00000100
+#define	EF_ARM_ABI_FLOAT_SOFT	0x00000200
+#define	EF_ARM_SOFT_FLOAT	EF_ARM_ABI_FLOAT_SOFT /* Pre-V5 ABI name */
+#define	EF_ARM_ABI_FLOAT_HARD	0x00000400
+#define	EF_ARM_VFP_FLOAT	EF_ARM_ABI_FLOAT_HARD /* Pre-V5 ABI name */
+#define	EF_ARM_MAVERICK_FLOAT	0x00000800
+
+#define	EF_MIPS_NOREORDER	0x00000001
+#define	EF_MIPS_PIC		0x00000002	/* Contains PIC code */
+#define	EF_MIPS_CPIC		0x00000004	/* STD PIC calling sequence */
+#define	EF_MIPS_UCODE		0x00000010
+#define	EF_MIPS_ABI2		0x00000020	/* N32 */
+#define	EF_MIPS_OPTIONS_FIRST	0x00000080
+#define	EF_MIPS_ABI		0x0000F000
+#define	EF_MIPS_ABI_O32		0x00001000
+#define	EF_MIPS_ABI_O64		0x00002000
+#define	EF_MIPS_ABI_EABI32	0x00003000
+#define	EF_MIPS_ABI_EABI64	0x00004000
+#define	EF_MIPS_ARCH_ASE	0x0F000000	/* Architectural extensions */
+#define	EF_MIPS_ARCH_ASE_MDMX	0x08000000	/* MDMX multimedia extension */
+#define	EF_MIPS_ARCH_ASE_M16	0x04000000	/* MIPS-16 ISA extensions */
+#define	EF_MIPS_ARCH		0xF0000000	/* Architecture field */
+#define	EF_MIPS_ARCH_1		0x00000000	/* -mips1 code */
+#define	EF_MIPS_ARCH_2		0x10000000	/* -mips2 code */
+#define	EF_MIPS_ARCH_3		0x20000000	/* -mips3 code */
+#define	EF_MIPS_ARCH_4		0x30000000	/* -mips4 code */
+#define	EF_MIPS_ARCH_5		0x40000000	/* -mips5 code */
+#define	EF_MIPS_ARCH_32		0x50000000	/* -mips32 code */
+#define	EF_MIPS_ARCH_64		0x60000000	/* -mips64 code */
+#define	EF_MIPS_ARCH_32R2	0x70000000	/* -mips32r2 code */
+#define	EF_MIPS_ARCH_64R2	0x80000000	/* -mips64r2 code */
+
+#define	EF_PPC_EMB		0x80000000
+#define	EF_PPC_RELOCATABLE	0x00010000
+#define	EF_PPC_RELOCATABLE_LIB	0x00008000
+
+#define	EF_RISCV_RVC		0x00000001
+#define	EF_RISCV_FLOAT_ABI_MASK	0x00000006
+#define	EF_RISCV_FLOAT_ABI_SOFT	0x00000000
+#define	EF_RISCV_FLOAT_ABI_SINGLE 0x000002
+#define	EF_RISCV_FLOAT_ABI_DOUBLE 0x000004
+#define	EF_RISCV_FLOAT_ABI_QUAD	0x00000006
+#define	EF_RISCV_RVE		0x00000008
+#define	EF_RISCV_TSO		0x00000010
+
+#define	EF_SPARC_EXT_MASK	0x00ffff00
+#define	EF_SPARC_32PLUS		0x00000100
+#define	EF_SPARC_SUN_US1	0x00000200
+#define	EF_SPARC_HAL_R1		0x00000200
+#define	EF_SPARC_SUN_US3	0x00000800
+
+#define	EF_SPARCV9_MM		0x00000003
+#define	EF_SPARCV9_TSO		0x00000000
+#define	EF_SPARCV9_PSO		0x00000001
+#define	EF_SPARCV9_RMO		0x00000002
+
+/* Special section indexes. */
+#define	SHN_UNDEF	     0		/* Undefined, missing, irrelevant. */
+#define	SHN_LORESERVE	0xff00		/* First of reserved range. */
+#define	SHN_LOPROC	0xff00		/* First processor-specific. */
+#define	SHN_HIPROC	0xff1f		/* Last processor-specific. */
+#define	SHN_LOOS	0xff20		/* First operating system-specific. */
+#define	SHN_FBSD_CACHED	SHN_LOOS	/* Transient, for sys/kern/link_elf_obj
+					   linker only: Cached global in local
+					   symtab. */
+#define	SHN_HIOS	0xff3f		/* Last operating system-specific. */
+#define	SHN_ABS		0xfff1		/* Absolute values. */
+#define	SHN_COMMON	0xfff2		/* Common data. */
+#define	SHN_XINDEX	0xffff		/* Escape -- index stored elsewhere. */
+#define	SHN_HIRESERVE	0xffff		/* Last of reserved range. */
+
+/* sh_type */
+#define	SHT_NULL		0	/* inactive */
+#define	SHT_PROGBITS		1	/* program defined information */
+#define	SHT_SYMTAB		2	/* symbol table section */
+#define	SHT_STRTAB		3	/* string table section */
+#define	SHT_RELA		4	/* relocation section with addends */
+#define	SHT_HASH		5	/* symbol hash table section */
+#define	SHT_DYNAMIC		6	/* dynamic section */
+#define	SHT_NOTE		7	/* note section */
+#define	SHT_NOBITS		8	/* no space section */
+#define	SHT_REL			9	/* relocation section - no addends */
+#define	SHT_SHLIB		10	/* reserved - purpose unknown */
+#define	SHT_DYNSYM		11	/* dynamic symbol table section */
+#define	SHT_INIT_ARRAY		14	/* Initialization function pointers. */
+#define	SHT_FINI_ARRAY		15	/* Termination function pointers. */
+#define	SHT_PREINIT_ARRAY	16	/* Pre-initialization function ptrs. */
+#define	SHT_GROUP		17	/* Section group. */
+#define	SHT_SYMTAB_SHNDX	18	/* Section indexes (see SHN_XINDEX). */
+#define	SHT_LOOS		0x60000000	/* First of OS specific semantics */
+#define	SHT_LOSUNW		0x6ffffff4
+#define	SHT_SUNW_dof		0x6ffffff4
+#define	SHT_SUNW_cap		0x6ffffff5
+#define	SHT_GNU_ATTRIBUTES	0x6ffffff5
+#define	SHT_SUNW_SIGNATURE	0x6ffffff6
+#define	SHT_GNU_HASH		0x6ffffff6
+#define	SHT_GNU_LIBLIST		0x6ffffff7
+#define	SHT_SUNW_ANNOTATE	0x6ffffff7
+#define	SHT_SUNW_DEBUGSTR	0x6ffffff8
+#define	SHT_SUNW_DEBUG		0x6ffffff9
+#define	SHT_SUNW_move		0x6ffffffa
+#define	SHT_SUNW_COMDAT		0x6ffffffb
+#define	SHT_SUNW_syminfo	0x6ffffffc
+#define	SHT_SUNW_verdef		0x6ffffffd
+#define	SHT_GNU_verdef		0x6ffffffd	/* Symbol versions provided */
+#define	SHT_SUNW_verneed	0x6ffffffe
+#define	SHT_GNU_verneed		0x6ffffffe	/* Symbol versions required */
+#define	SHT_SUNW_versym		0x6fffffff
+#define	SHT_GNU_versym		0x6fffffff	/* Symbol version table */
+#define	SHT_HISUNW		0x6fffffff
+#define	SHT_HIOS		0x6fffffff	/* Last of OS specific semantics */
+#define	SHT_LOPROC		0x70000000	/* reserved range for processor */
+#define	SHT_X86_64_UNWIND	0x70000001	/* unwind information */
+#define	SHT_AMD64_UNWIND	SHT_X86_64_UNWIND 
+
+#define	SHT_ARM_EXIDX		0x70000001	/* Exception index table. */
+#define	SHT_ARM_PREEMPTMAP	0x70000002	/* BPABI DLL dynamic linking 
+						   pre-emption map. */
+#define	SHT_ARM_ATTRIBUTES	0x70000003	/* Object file compatibility 
+						   attributes. */
+#define	SHT_ARM_DEBUGOVERLAY	0x70000004	/* See DBGOVL for details. */
+#define	SHT_ARM_OVERLAYSECTION	0x70000005	/* See DBGOVL for details. */
+#define	SHT_MIPS_LIBLIST	0x70000000
+#define	SHT_MIPS_MSYM		0x70000001
+#define	SHT_MIPS_CONFLICT	0x70000002
+#define	SHT_MIPS_GPTAB		0x70000003
+#define	SHT_MIPS_UCODE		0x70000004
+#define	SHT_MIPS_DEBUG		0x70000005
+#define	SHT_MIPS_REGINFO	0x70000006
+#define	SHT_MIPS_PACKAGE	0x70000007
+#define	SHT_MIPS_PACKSYM	0x70000008
+#define	SHT_MIPS_RELD		0x70000009
+#define	SHT_MIPS_IFACE		0x7000000b
+#define	SHT_MIPS_CONTENT	0x7000000c
+#define	SHT_MIPS_OPTIONS	0x7000000d
+#define	SHT_MIPS_DELTASYM	0x7000001b
+#define	SHT_MIPS_DELTAINST	0x7000001c
+#define	SHT_MIPS_DELTACLASS	0x7000001d
+#define	SHT_MIPS_DWARF		0x7000001e	/* MIPS gcc uses MIPS_DWARF */
+#define	SHT_MIPS_DELTADECL	0x7000001f
+#define	SHT_MIPS_SYMBOL_LIB	0x70000020
+#define	SHT_MIPS_EVENTS		0x70000021
+#define	SHT_MIPS_TRANSLATE	0x70000022
+#define	SHT_MIPS_PIXIE		0x70000023
+#define	SHT_MIPS_XLATE		0x70000024
+#define	SHT_MIPS_XLATE_DEBUG	0x70000025
+#define	SHT_MIPS_WHIRL		0x70000026
+#define	SHT_MIPS_EH_REGION	0x70000027
+#define	SHT_MIPS_XLATE_OLD	0x70000028
+#define	SHT_MIPS_PDR_EXCEPTION	0x70000029
+#define	SHT_MIPS_ABIFLAGS	0x7000002a
+
+#define	SHT_SPARC_GOTDATA	0x70000000
+
+#define	SHTORDERED
+#define	SHT_HIPROC		0x7fffffff	/* specific section header types */
+#define	SHT_LOUSER		0x80000000	/* reserved range for application */
+#define	SHT_HIUSER		0xffffffff	/* specific indexes */
+
+/* Flags for sh_flags. */
+#define	SHF_WRITE		0x1	/* Section contains writable data. */
+#define	SHF_ALLOC		0x2	/* Section occupies memory. */
+#define	SHF_EXECINSTR		0x4	/* Section contains instructions. */
+#define	SHF_MERGE		0x10	/* Section may be merged. */
+#define	SHF_STRINGS		0x20	/* Section contains strings. */
+#define	SHF_INFO_LINK		0x40	/* sh_info holds section index. */
+#define	SHF_LINK_ORDER		0x80	/* Special ordering requirements. */
+#define	SHF_OS_NONCONFORMING	0x100	/* OS-specific processing required. */
+#define	SHF_GROUP		0x200	/* Member of section group. */
+#define	SHF_TLS			0x400	/* Section contains TLS data. */
+#define	SHF_COMPRESSED		0x800	/* Section contains compressed data. */
+#define	SHF_MASKOS	0x0ff00000	/* OS-specific semantics. */
+#define	SHF_MASKPROC	0xf0000000	/* Processor-specific semantics. */
+
+/* Flags for section groups. */
+#define	GRP_COMDAT	0x1	/* COMDAT semantics. */
+
+/*
+ * Flags / mask for .gnu.versym sections.
+ */
+#define	VERSYM_VERSION	0x7fff
+#define	VERSYM_HIDDEN	0x8000
+
+/* Values for p_type. */
+#define	PT_NULL		0	/* Unused entry. */
+#define	PT_LOAD		1	/* Loadable segment. */
+#define	PT_DYNAMIC	2	/* Dynamic linking information segment. */
+#define	PT_INTERP	3	/* Pathname of interpreter. */
+#define	PT_NOTE		4	/* Auxiliary information. */
+#define	PT_SHLIB	5	/* Reserved (not used). */
+#define	PT_PHDR		6	/* Location of program header itself. */
+#define	PT_TLS		7	/* Thread local storage segment */
+#define	PT_LOOS		0x60000000	/* First OS-specific. */
+#define	PT_SUNW_UNWIND	0x6464e550	/* amd64 UNWIND program header */
+#define	PT_DUMP_DELTA	0x6fb5d000	/* va->pa map for kernel dumps
+					   (currently arm). */
+#define	PT_LOSUNW	0x6ffffffa
+#define	PT_SUNWBSS	0x6ffffffa	/* Sun Specific segment */
+#define	PT_SUNWSTACK	0x6ffffffb	/* describes the stack segment */
+#define	PT_SUNWDTRACE	0x6ffffffc	/* private */
+#define	PT_SUNWCAP	0x6ffffffd	/* hard/soft capabilities segment */
+#define	PT_HISUNW	0x6fffffff
+#define	PT_HIOS		0x6fffffff	/* Last OS-specific. */
+#define	PT_LOPROC	0x70000000	/* First processor-specific type. */
+#define	PT_ARM_ARCHEXT	0x70000000	/* ARM arch compat information. */
+#define	PT_ARM_EXIDX	0x70000001	/* ARM exception unwind tables. */
+#define	PT_MIPS_REGINFO		0x70000000	/* MIPS register usage info */
+#define	PT_MIPS_RTPROC		0x70000001	/* MIPS runtime procedure tbl */
+#define	PT_MIPS_OPTIONS		0x70000002	/* MIPS e_flags value*/
+#define	PT_MIPS_ABIFLAGS	0x70000003	/* MIPS fp mode */
+#define	PT_HIPROC	0x7fffffff	/* Last processor-specific type. */
+
+#define	PT_OPENBSD_RANDOMIZE	0x65A3DBE6	/* OpenBSD random data segment */
+#define	PT_OPENBSD_WXNEEDED	0x65A3DBE7	/* OpenBSD EXEC/WRITE pages needed */
+#define	PT_OPENBSD_BOOTDATA	0x65A41BE6	/* OpenBSD section for boot args */
+
+/* Values for p_flags. */
+#define	PF_X		0x1		/* Executable. */
+#define	PF_W		0x2		/* Writable. */
+#define	PF_R		0x4		/* Readable. */
+#define	PF_MASKOS	0x0ff00000	/* Operating system-specific. */
+#define	PF_MASKPROC	0xf0000000	/* Processor-specific. */
+
+/* Extended program header index. */
+#define	PN_XNUM		0xffff
+
+/* Values for d_tag. */
+#define	DT_NULL		0	/* Terminating entry. */
+#define	DT_NEEDED	1	/* String table offset of a needed shared
+				   library. */
+#define	DT_PLTRELSZ	2	/* Total size in bytes of PLT relocations. */
+#define	DT_PLTGOT	3	/* Processor-dependent address. */
+#define	DT_HASH		4	/* Address of symbol hash table. */
+#define	DT_STRTAB	5	/* Address of string table. */
+#define	DT_SYMTAB	6	/* Address of symbol table. */
+#define	DT_RELA		7	/* Address of ElfNN_Rela relocations. */
+#define	DT_RELASZ	8	/* Total size of ElfNN_Rela relocations. */
+#define	DT_RELAENT	9	/* Size of each ElfNN_Rela relocation entry. */
+#define	DT_STRSZ	10	/* Size of string table. */
+#define	DT_SYMENT	11	/* Size of each symbol table entry. */
+#define	DT_INIT		12	/* Address of initialization function. */
+#define	DT_FINI		13	/* Address of finalization function. */
+#define	DT_SONAME	14	/* String table offset of shared object
+				   name. */
+#define	DT_RPATH	15	/* String table offset of library path. [sup] */
+#define	DT_SYMBOLIC	16	/* Indicates "symbolic" linking. [sup] */
+#define	DT_REL		17	/* Address of ElfNN_Rel relocations. */
+#define	DT_RELSZ	18	/* Total size of ElfNN_Rel relocations. */
+#define	DT_RELENT	19	/* Size of each ElfNN_Rel relocation. */
+#define	DT_PLTREL	20	/* Type of relocation used for PLT. */
+#define	DT_DEBUG	21	/* Reserved (not used). */
+#define	DT_TEXTREL	22	/* Indicates there may be relocations in
+				   non-writable segments. [sup] */
+#define	DT_JMPREL	23	/* Address of PLT relocations. */
+#define	DT_BIND_NOW	24	/* [sup] */
+#define	DT_INIT_ARRAY	25	/* Address of the array of pointers to
+				   initialization functions */
+#define	DT_FINI_ARRAY	26	/* Address of the array of pointers to
+				   termination functions */
+#define	DT_INIT_ARRAYSZ	27	/* Size in bytes of the array of
+				   initialization functions. */
+#define	DT_FINI_ARRAYSZ	28	/* Size in bytes of the array of
+				   termination functions. */
+#define	DT_RUNPATH	29	/* String table offset of a null-terminated
+				   library search path string. */
+#define	DT_FLAGS	30	/* Object specific flag values. */
+#define	DT_ENCODING	32	/* Values greater than or equal to DT_ENCODING
+				   and less than DT_LOOS follow the rules for
+				   the interpretation of the d_un union
+				   as follows: even == 'd_ptr', odd == 'd_val'
+				   or none */
+#define	DT_PREINIT_ARRAY 32	/* Address of the array of pointers to
+				   pre-initialization functions. */
+#define	DT_PREINIT_ARRAYSZ 33	/* Size in bytes of the array of
+				   pre-initialization functions. */
+#define	DT_MAXPOSTAGS	34	/* number of positive tags */
+#define	DT_RELRSZ	35	/* Total size of ElfNN_Relr relocations. */
+#define	DT_RELR		36	/* Address of ElfNN_Relr relocations. */
+#define	DT_RELRENT	37	/* Size of each ElfNN_Relr relocation. */
+#define	DT_LOOS		0x6000000d	/* First OS-specific */
+#define	DT_SUNW_AUXILIARY	0x6000000d	/* symbol auxiliary name */
+#define	DT_SUNW_RTLDINF		0x6000000e	/* ld.so.1 info (private) */
+#define	DT_SUNW_FILTER		0x6000000f	/* symbol filter name */
+#define	DT_SUNW_CAP		0x60000010	/* hardware/software */
+#define	DT_SUNW_ASLR		0x60000023	/* ASLR control */
+#define	DT_HIOS		0x6ffff000	/* Last OS-specific */
+
+/*
+ * DT_* entries which fall between DT_VALRNGHI & DT_VALRNGLO use the
+ * Dyn.d_un.d_val field of the Elf*_Dyn structure.
+ */
+#define	DT_VALRNGLO	0x6ffffd00
+#define	DT_GNU_PRELINKED	0x6ffffdf5 /* prelinking timestamp */
+#define	DT_GNU_CONFLICTSZ	0x6ffffdf6 /* size of conflict section */
+#define	DT_GNU_LIBLISTSZ	0x6ffffdf7 /* size of library list */
+#define	DT_CHECKSUM	0x6ffffdf8	/* elf checksum */
+#define	DT_PLTPADSZ	0x6ffffdf9	/* pltpadding size */
+#define	DT_MOVEENT	0x6ffffdfa	/* move table entry size */
+#define	DT_MOVESZ	0x6ffffdfb	/* move table size */
+#define	DT_FEATURE	0x6ffffdfc	/* feature holder */
+#define	DT_FEATURE_1	DT_FEATURE
+#define	DT_POSFLAG_1	0x6ffffdfd	/* flags for DT_* entries, effecting */
+					/*	the following DT_* entry. */
+					/*	See DF_P1_* definitions */
+#define	DT_SYMINSZ	0x6ffffdfe	/* syminfo table size (in bytes) */
+#define	DT_SYMINENT	0x6ffffdff	/* syminfo entry size (in bytes) */
+#define	DT_VALRNGHI	0x6ffffdff
+
+/*
+ * DT_* entries which fall between DT_ADDRRNGHI & DT_ADDRRNGLO use the
+ * Dyn.d_un.d_ptr field of the Elf*_Dyn structure.
+ *
+ * If any adjustment is made to the ELF object after it has been
+ * built, these entries will need to be adjusted.
+ */
+#define	DT_ADDRRNGLO	0x6ffffe00
+#define	DT_GNU_HASH	0x6ffffef5	/* GNU-style hash table */
+#define	DT_TLSDESC_PLT	0x6ffffef6	/* loc. of PLT for tlsdesc resolver */
+#define	DT_TLSDESC_GOT	0x6ffffef7	/* loc. of GOT for tlsdesc resolver */
+#define	DT_GNU_CONFLICT	0x6ffffef8	/* address of conflict section */
+#define	DT_GNU_LIBLIST	0x6ffffef9	/* address of library list */
+#define	DT_CONFIG	0x6ffffefa	/* configuration information */
+#define	DT_DEPAUDIT	0x6ffffefb	/* dependency auditing */
+#define	DT_AUDIT	0x6ffffefc	/* object auditing */
+#define	DT_PLTPAD	0x6ffffefd	/* pltpadding (sparcv9) */
+#define	DT_MOVETAB	0x6ffffefe	/* move table */
+#define	DT_SYMINFO	0x6ffffeff	/* syminfo table */
+#define	DT_ADDRRNGHI	0x6ffffeff
+
+#define	DT_VERSYM	0x6ffffff0	/* Address of versym section. */
+#define	DT_RELACOUNT	0x6ffffff9	/* number of RELATIVE relocations */
+#define	DT_RELCOUNT	0x6ffffffa	/* number of RELATIVE relocations */
+#define	DT_FLAGS_1	0x6ffffffb	/* state flags - see DF_1_* defs */
+#define	DT_VERDEF	0x6ffffffc	/* Address of verdef section. */
+#define	DT_VERDEFNUM	0x6ffffffd	/* Number of elems in verdef section */
+#define	DT_VERNEED	0x6ffffffe	/* Address of verneed section. */
+#define	DT_VERNEEDNUM	0x6fffffff	/* Number of elems in verneed section */
+
+#define	DT_LOPROC	0x70000000	/* First processor-specific type. */
+
+#define	DT_AARCH64_BTI_PLT		0x70000001
+#define	DT_AARCH64_PAC_PLT		0x70000003
+#define	DT_AARCH64_VARIANT_PCS		0x70000005
+
+#define	DT_ARM_SYMTABSZ			0x70000001
+#define	DT_ARM_PREEMPTMAP		0x70000002
+
+#define	DT_SPARC_REGISTER		0x70000001
+#define	DT_DEPRECATED_SPARC_REGISTER	0x7000001
+
+#define	DT_MIPS_RLD_VERSION		0x70000001
+#define	DT_MIPS_TIME_STAMP		0x70000002
+#define	DT_MIPS_ICHECKSUM		0x70000003
+#define	DT_MIPS_IVERSION		0x70000004
+#define	DT_MIPS_FLAGS			0x70000005
+#define	DT_MIPS_BASE_ADDRESS		0x70000006
+#define	DT_MIPS_CONFLICT		0x70000008
+#define	DT_MIPS_LIBLIST			0x70000009
+#define	DT_MIPS_LOCAL_GOTNO		0x7000000a
+#define	DT_MIPS_CONFLICTNO		0x7000000b
+#define	DT_MIPS_LIBLISTNO		0x70000010
+#define	DT_MIPS_SYMTABNO		0x70000011
+#define	DT_MIPS_UNREFEXTNO		0x70000012
+#define	DT_MIPS_GOTSYM			0x70000013
+#define	DT_MIPS_HIPAGENO		0x70000014
+#define	DT_MIPS_RLD_MAP			0x70000016
+#define	DT_MIPS_DELTA_CLASS		0x70000017
+#define	DT_MIPS_DELTA_CLASS_NO		0x70000018
+#define	DT_MIPS_DELTA_INSTANCE		0x70000019
+#define	DT_MIPS_DELTA_INSTANCE_NO	0x7000001A
+#define	DT_MIPS_DELTA_RELOC		0x7000001B
+#define	DT_MIPS_DELTA_RELOC_NO		0x7000001C
+#define	DT_MIPS_DELTA_SYM		0x7000001D
+#define	DT_MIPS_DELTA_SYM_NO		0x7000001E
+#define	DT_MIPS_DELTA_CLASSSYM		0x70000020
+#define	DT_MIPS_DELTA_CLASSSYM_NO	0x70000021
+#define	DT_MIPS_CXX_FLAGS		0x70000022
+#define	DT_MIPS_PIXIE_INIT		0x70000023
+#define	DT_MIPS_SYMBOL_LIB		0x70000024
+#define	DT_MIPS_LOCALPAGE_GOTIDX	0x70000025
+#define	DT_MIPS_LOCAL_GOTIDX		0x70000026
+#define	DT_MIPS_HIDDEN_GOTIDX		0x70000027
+#define	DT_MIPS_PROTECTED_GOTIDX	0x70000028
+#define	DT_MIPS_OPTIONS			0x70000029
+#define	DT_MIPS_INTERFACE		0x7000002A
+#define	DT_MIPS_DYNSTR_ALIGN		0x7000002B
+#define	DT_MIPS_INTERFACE_SIZE		0x7000002C
+#define	DT_MIPS_RLD_TEXT_RESOLVE_ADDR	0x7000002D
+#define	DT_MIPS_PERF_SUFFIX		0x7000002E
+#define	DT_MIPS_COMPACT_SIZE		0x7000002F
+#define	DT_MIPS_GP_VALUE		0x70000030
+#define	DT_MIPS_AUX_DYNAMIC		0x70000031
+#define	DT_MIPS_PLTGOT			0x70000032
+#define	DT_MIPS_RLD_OBJ_UPDATE		0x70000033
+#define	DT_MIPS_RWPLT			0x70000034
+#define	DT_MIPS_RLD_MAP_REL		0x70000035
+
+#define	DT_PPC_GOT			0x70000000
+#define	DT_PPC_TLSOPT			0x70000001
+
+#define	DT_PPC64_GLINK			0x70000000
+#define	DT_PPC64_OPD			0x70000001
+#define	DT_PPC64_OPDSZ			0x70000002
+#define	DT_PPC64_TLSOPT			0x70000003
+
+#define	DT_AUXILIARY	0x7ffffffd	/* shared library auxiliary name */
+#define	DT_USED		0x7ffffffe	/* ignored - same as needed */
+#define	DT_FILTER	0x7fffffff	/* shared library filter name */
+#define	DT_HIPROC	0x7fffffff	/* Last processor-specific type. */
+
+/* Values for DT_FLAGS */
+#define	DF_ORIGIN	0x0001	/* Indicates that the object being loaded may
+				   make reference to the $ORIGIN substitution
+				   string */
+#define	DF_SYMBOLIC	0x0002	/* Indicates "symbolic" linking. */
+#define	DF_TEXTREL	0x0004	/* Indicates there may be relocations in
+				   non-writable segments. */
+#define	DF_BIND_NOW	0x0008	/* Indicates that the dynamic linker should
+				   process all relocations for the object
+				   containing this entry before transferring
+				   control to the program. */
+#define	DF_STATIC_TLS	0x0010	/* Indicates that the shared object or
+				   executable contains code using a static
+				   thread-local storage scheme. */
+
+/* Values for DT_FLAGS_1 */
+#define	DF_1_BIND_NOW	0x00000001	/* Same as DF_BIND_NOW */
+#define	DF_1_GLOBAL	0x00000002	/* Set the RTLD_GLOBAL for object */
+#define	DF_1_NODELETE	0x00000008	/* Set the RTLD_NODELETE for object */
+#define	DF_1_LOADFLTR	0x00000010	/* Immediate loading of filtees */
+#define	DF_1_NOOPEN     0x00000040	/* Do not allow loading on dlopen() */
+#define	DF_1_ORIGIN	0x00000080	/* Process $ORIGIN */
+#define	DF_1_INTERPOSE	0x00000400	/* Interpose all objects but main */
+#define	DF_1_NODEFLIB	0x00000800	/* Do not search default paths */
+#define	DF_1_PIE	0x08000000	/* Is position-independent executable */
+
+/* Values for l_flags. */
+#define	LL_NONE			0x0	/* no flags */
+#define	LL_EXACT_MATCH		0x1	/* require an exact match */
+#define	LL_IGNORE_INT_VER	0x2	/* ignore version incompatibilities */
+#define	LL_REQUIRE_MINOR	0x4
+#define	LL_EXPORTS		0x8
+#define	LL_DELAY_LOAD		0x10
+#define	LL_DELTA		0x20
+
+/* Note section names */
+#define	ELF_NOTE_FREEBSD	"FreeBSD"
+#define	ELF_NOTE_NETBSD		"NetBSD"
+#define	ELF_NOTE_SOLARIS	"SUNW Solaris"
+#define	ELF_NOTE_GNU		"GNU"
+
+/* Values for n_type used in executables. */
+#define	NT_FREEBSD_ABI_TAG	1
+#define	NT_FREEBSD_NOINIT_TAG	2
+#define	NT_FREEBSD_ARCH_TAG	3
+#define	NT_FREEBSD_FEATURE_CTL	4
+
+/* NT_FREEBSD_FEATURE_CTL desc[0] bits */
+#define	NT_FREEBSD_FCTL_ASLR_DISABLE	0x00000001
+#define	NT_FREEBSD_FCTL_PROTMAX_DISABLE	0x00000002
+#define	NT_FREEBSD_FCTL_STKGAP_DISABLE	0x00000004
+#define	NT_FREEBSD_FCTL_WXNEEDED	0x00000008
+#define	NT_FREEBSD_FCTL_LA48		0x00000010
+/* was ASG_DISABLE, do not reuse	0x00000020 */
+
+/* Values for n_type.  Used in core files. */
+#define	NT_PRSTATUS	1	/* Process status. */
+#define	NT_FPREGSET	2	/* Floating point registers. */
+#define	NT_PRPSINFO	3	/* Process state info. */
+#define	NT_THRMISC	7	/* Thread miscellaneous info. */
+#define	NT_PROCSTAT_PROC	8	/* Procstat proc data. */
+#define	NT_PROCSTAT_FILES	9	/* Procstat files data. */
+#define	NT_PROCSTAT_VMMAP	10	/* Procstat vmmap data. */
+#define	NT_PROCSTAT_GROUPS	11	/* Procstat groups data. */
+#define	NT_PROCSTAT_UMASK	12	/* Procstat umask data. */
+#define	NT_PROCSTAT_RLIMIT	13	/* Procstat rlimit data. */
+#define	NT_PROCSTAT_OSREL	14	/* Procstat osreldate data. */
+#define	NT_PROCSTAT_PSSTRINGS	15	/* Procstat ps_strings data. */
+#define	NT_PROCSTAT_AUXV	16	/* Procstat auxv data. */
+#define	NT_PTLWPINFO		17	/* Thread ptrace miscellaneous info. */
+#define	NT_PPC_VMX	0x100	/* PowerPC Altivec/VMX registers */
+#define	NT_PPC_VSX	0x102	/* PowerPC VSX registers */
+#define	NT_X86_SEGBASES	0x200	/* x86 FS/GS base addresses. */
+#define	NT_X86_XSTATE	0x202	/* x86 XSAVE extended state. */
+#define	NT_ARM_VFP	0x400	/* ARM VFP registers */
+#define	NT_ARM_TLS	0x401	/* ARM TLS register */
+#define	NT_ARM_ADDR_MASK	0x406	/* arm64 address mask (e.g. for TBI) */
+
+/* GNU note types. */
+#define	NT_GNU_ABI_TAG		1
+#define	NT_GNU_HWCAP		2
+#define	NT_GNU_BUILD_ID		3
+#define	NT_GNU_GOLD_VERSION	4
+#define	NT_GNU_PROPERTY_TYPE_0	5
+
+#define	GNU_PROPERTY_LOPROC			0xc0000000
+#define	GNU_PROPERTY_HIPROC			0xdfffffff
+
+#define	GNU_PROPERTY_AARCH64_FEATURE_1_AND	0xc0000000
+
+#define	GNU_PROPERTY_AARCH64_FEATURE_1_PAC	0x00000002
+
+#define	GNU_PROPERTY_X86_FEATURE_1_AND		0xc0000002
+
+#define	GNU_PROPERTY_X86_FEATURE_1_IBT		0x00000001
+#define	GNU_PROPERTY_X86_FEATURE_1_SHSTK	0x00000002
+
+/* Symbol Binding - ELFNN_ST_BIND - st_info */
+#define	STB_LOCAL	0	/* Local symbol */
+#define	STB_GLOBAL	1	/* Global symbol */
+#define	STB_WEAK	2	/* like global - lower precedence */
+#define	STB_LOOS	10	/* Start of operating system reserved range. */
+#define	STB_GNU_UNIQUE	10	/* Unique symbol (GNU) */
+#define	STB_HIOS	12	/* End of operating system reserved range. */
+#define	STB_LOPROC	13	/* reserved range for processor */
+#define	STB_HIPROC	15	/*   specific semantics. */
+
+/* Symbol type - ELFNN_ST_TYPE - st_info */
+#define	STT_NOTYPE	0	/* Unspecified type. */
+#define	STT_OBJECT	1	/* Data object. */
+#define	STT_FUNC	2	/* Function. */
+#define	STT_SECTION	3	/* Section. */
+#define	STT_FILE	4	/* Source file. */
+#define	STT_COMMON	5	/* Uninitialized common block. */
+#define	STT_TLS		6	/* TLS object. */
+#define	STT_NUM		7
+#define	STT_LOOS	10	/* Reserved range for operating system */
+#define	STT_GNU_IFUNC	10
+#define	STT_HIOS	12	/*   specific semantics. */
+#define	STT_LOPROC	13	/* Start of processor reserved range. */
+#define	STT_SPARC_REGISTER 13	/* SPARC register information. */
+#define	STT_HIPROC	15	/* End of processor reserved range. */
+
+/* Symbol visibility - ELFNN_ST_VISIBILITY - st_other */
+#define	STV_DEFAULT	0x0	/* Default visibility (see binding). */
+#define	STV_INTERNAL	0x1	/* Special meaning in relocatable objects. */
+#define	STV_HIDDEN	0x2	/* Not visible. */
+#define	STV_PROTECTED	0x3	/* Visible but not preemptible. */
+#define	STV_EXPORTED	0x4
+#define	STV_SINGLETON	0x5
+#define	STV_ELIMINATE	0x6
+
+/* Special symbol table indexes. */
+#define	STN_UNDEF	0	/* Undefined symbol index. */
+
+/* Symbol versioning flags. */
+#define	VER_DEF_CURRENT	1
+#define	VER_DEF_IDX(x)	VER_NDX(x)
+
+#define	VER_FLG_BASE	0x01
+#define	VER_FLG_WEAK	0x02
+
+#define	VER_NEED_CURRENT	1
+#define	VER_NEED_WEAK	(1u << 15)
+#define	VER_NEED_HIDDEN	VER_NDX_HIDDEN
+#define	VER_NEED_IDX(x)	VER_NDX(x)
+
+#define	VER_NDX_LOCAL	0
+#define	VER_NDX_GLOBAL	1
+#define	VER_NDX_GIVEN	2
+
+#define	VER_NDX_HIDDEN	(1u << 15)
+#define	VER_NDX(x)	((x) & ~(1u << 15))
+
+#define	CA_SUNW_NULL	0
+#define	CA_SUNW_HW_1	1		/* first hardware capabilities entry */
+#define	CA_SUNW_SF_1	2		/* first software capabilities entry */
+
+/*
+ * Syminfo flag values
+ */
+#define	SYMINFO_FLG_DIRECT	0x0001	/* symbol ref has direct association */
+					/*	to object containing defn. */
+#define	SYMINFO_FLG_PASSTHRU	0x0002	/* ignored - see SYMINFO_FLG_FILTER */
+#define	SYMINFO_FLG_COPY	0x0004	/* symbol is a copy-reloc */
+#define	SYMINFO_FLG_LAZYLOAD	0x0008	/* object containing defn should be */
+					/*	lazily-loaded */
+#define	SYMINFO_FLG_DIRECTBIND	0x0010	/* ref should be bound directly to */
+					/*	object containing defn. */
+#define	SYMINFO_FLG_NOEXTDIRECT	0x0020	/* don't let an external reference */
+					/*	directly bind to this symbol */
+#define	SYMINFO_FLG_FILTER	0x0002	/* symbol ref is associated to a */
+#define	SYMINFO_FLG_AUXILIARY	0x0040	/* 	standard or auxiliary filter */
+
+/*
+ * Syminfo.si_boundto values.
+ */
+#define	SYMINFO_BT_SELF		0xffff	/* symbol bound to self */
+#define	SYMINFO_BT_PARENT	0xfffe	/* symbol bound to parent */
+#define	SYMINFO_BT_NONE		0xfffd	/* no special symbol binding */
+#define	SYMINFO_BT_EXTERN	0xfffc	/* symbol defined as external */
+#define	SYMINFO_BT_LOWRESERVE	0xff00	/* beginning of reserved entries */
+
+/*
+ * Syminfo version values.
+ */
+#define	SYMINFO_NONE		0	/* Syminfo version */
+#define	SYMINFO_CURRENT		1
+#define	SYMINFO_NUM		2
+
+/* Values for ch_type (compressed section headers). */
+#define	ELFCOMPRESS_ZLIB	1	/* ZLIB/DEFLATE */
+#define	ELFCOMPRESS_ZSTD	2	/* Zstandard */
+#define	ELFCOMPRESS_LOOS	0x60000000	/* OS-specific */
+#define	ELFCOMPRESS_HIOS	0x6fffffff
+#define	ELFCOMPRESS_LOPROC	0x70000000	/* Processor-specific */
+#define	ELFCOMPRESS_HIPROC	0x7fffffff
+
+/*
+ * Relocation types.
+ *
+ * All machine architectures are defined here to allow tools on one to
+ * handle others.
+ */
+
+#define	R_386_NONE		0	/* No relocation. */
+#define	R_386_32		1	/* Add symbol value. */
+#define	R_386_PC32		2	/* Add PC-relative symbol value. */
+#define	R_386_GOT32		3	/* Add PC-relative GOT offset. */
+#define	R_386_PLT32		4	/* Add PC-relative PLT offset. */
+#define	R_386_COPY		5	/* Copy data from shared object. */
+#define	R_386_GLOB_DAT		6	/* Set GOT entry to data address. */
+#define	R_386_JMP_SLOT		7	/* Set GOT entry to code address. */
+#define	R_386_RELATIVE		8	/* Add load address of shared object. */
+#define	R_386_GOTOFF		9	/* Add GOT-relative symbol address. */
+#define	R_386_GOTPC		10	/* Add PC-relative GOT table address. */
+#define	R_386_32PLT		11
+#define	R_386_TLS_TPOFF		14	/* Negative offset in static TLS block */
+#define	R_386_TLS_IE		15	/* Absolute address of GOT for -ve static TLS */
+#define	R_386_TLS_GOTIE		16	/* GOT entry for negative static TLS block */
+#define	R_386_TLS_LE		17	/* Negative offset relative to static TLS */
+#define	R_386_TLS_GD		18	/* 32 bit offset to GOT (index,off) pair */
+#define	R_386_TLS_LDM		19	/* 32 bit offset to GOT (index,zero) pair */
+#define	R_386_16		20
+#define	R_386_PC16		21
+#define	R_386_8			22
+#define	R_386_PC8		23
+#define	R_386_TLS_GD_32		24	/* 32 bit offset to GOT (index,off) pair */
+#define	R_386_TLS_GD_PUSH	25	/* pushl instruction for Sun ABI GD sequence */
+#define	R_386_TLS_GD_CALL	26	/* call instruction for Sun ABI GD sequence */
+#define	R_386_TLS_GD_POP	27	/* popl instruction for Sun ABI GD sequence */
+#define	R_386_TLS_LDM_32	28	/* 32 bit offset to GOT (index,zero) pair */
+#define	R_386_TLS_LDM_PUSH	29	/* pushl instruction for Sun ABI LD sequence */
+#define	R_386_TLS_LDM_CALL	30	/* call instruction for Sun ABI LD sequence */
+#define	R_386_TLS_LDM_POP	31	/* popl instruction for Sun ABI LD sequence */
+#define	R_386_TLS_LDO_32	32	/* 32 bit offset from start of TLS block */
+#define	R_386_TLS_IE_32		33	/* 32 bit offset to GOT static TLS offset entry */
+#define	R_386_TLS_LE_32		34	/* 32 bit offset within static TLS block */
+#define	R_386_TLS_DTPMOD32	35	/* GOT entry containing TLS index */
+#define	R_386_TLS_DTPOFF32	36	/* GOT entry containing TLS offset */
+#define	R_386_TLS_TPOFF32	37	/* GOT entry of -ve static TLS offset */
+#define	R_386_SIZE32		38
+#define	R_386_TLS_GOTDESC	39
+#define	R_386_TLS_DESC_CALL	40
+#define	R_386_TLS_DESC		41
+#define	R_386_IRELATIVE		42	/* PLT entry resolved indirectly at runtime */
+#define	R_386_GOT32X		43
+
+#define	R_AARCH64_NONE		0	/* No relocation */
+#define	R_AARCH64_ABS64		257	/* Absolute offset */
+#define	R_AARCH64_ABS32		258	/* Absolute, 32-bit overflow check */
+#define	R_AARCH64_ABS16		259	/* Absolute, 16-bit overflow check */
+#define	R_AARCH64_PREL64	260	/* PC relative */
+#define	R_AARCH64_PREL32	261	/* PC relative, 32-bit overflow check */
+#define	R_AARCH64_PREL16	262	/* PC relative, 16-bit overflow check */
+#define	R_AARCH64_TSTBR14	279	/* TBZ/TBNZ immediate */
+#define	R_AARCH64_CONDBR19	280	/* Conditional branch immediate */
+#define	R_AARCH64_JUMP26	282	/* Branch immediate */
+#define	R_AARCH64_CALL26	283	/* Call immediate */
+#define	R_AARCH64_COPY		1024	/* Copy data from shared object */
+#define	R_AARCH64_GLOB_DAT	1025	/* Set GOT entry to data address */
+#define	R_AARCH64_JUMP_SLOT	1026	/* Set GOT entry to code address */
+#define	R_AARCH64_RELATIVE 	1027	/* Add load address of shared object */
+#define	R_AARCH64_TLS_DTPREL64	1028
+#define	R_AARCH64_TLS_DTPMOD64	1029
+#define	R_AARCH64_TLS_TPREL64 	1030
+#define	R_AARCH64_TLSDESC 	1031	/* Identify the TLS descriptor */
+#define	R_AARCH64_IRELATIVE	1032
+
+#define	R_ARM_NONE		0	/* No relocation. */
+#define	R_ARM_PC24		1
+#define	R_ARM_ABS32		2
+#define	R_ARM_REL32		3
+#define	R_ARM_PC13		4
+#define	R_ARM_ABS16		5
+#define	R_ARM_ABS12		6
+#define	R_ARM_THM_ABS5		7
+#define	R_ARM_ABS8		8
+#define	R_ARM_SBREL32		9
+#define	R_ARM_THM_PC22		10
+#define	R_ARM_THM_PC8		11
+#define	R_ARM_AMP_VCALL9	12
+#define	R_ARM_SWI24		13
+#define	R_ARM_THM_SWI8		14
+#define	R_ARM_XPC25		15
+#define	R_ARM_THM_XPC22		16
+/* TLS relocations */
+#define	R_ARM_TLS_DTPMOD32	17	/* ID of module containing symbol */
+#define	R_ARM_TLS_DTPOFF32	18	/* Offset in TLS block */
+#define	R_ARM_TLS_TPOFF32	19	/* Offset in static TLS block */
+#define	R_ARM_COPY		20	/* Copy data from shared object. */
+#define	R_ARM_GLOB_DAT		21	/* Set GOT entry to data address. */
+#define	R_ARM_JUMP_SLOT		22	/* Set GOT entry to code address. */
+#define	R_ARM_RELATIVE		23	/* Add load address of shared object. */
+#define	R_ARM_GOTOFF		24	/* Add GOT-relative symbol address. */
+#define	R_ARM_GOTPC		25	/* Add PC-relative GOT table address. */
+#define	R_ARM_GOT32		26	/* Add PC-relative GOT offset. */
+#define	R_ARM_PLT32		27	/* Add PC-relative PLT offset. */
+#define	R_ARM_GNU_VTENTRY	100
+#define	R_ARM_GNU_VTINHERIT	101
+#define	R_ARM_RSBREL32		250
+#define	R_ARM_THM_RPC22		251
+#define	R_ARM_RREL32		252
+#define	R_ARM_RABS32		253
+#define	R_ARM_RPC24		254
+#define	R_ARM_RBASE		255
+
+/*	Name			Value	   Field	Calculation */
+#define	R_IA_64_NONE		0	/* None */
+#define	R_IA_64_IMM14		0x21	/* immediate14	S + A */
+#define	R_IA_64_IMM22		0x22	/* immediate22	S + A */
+#define	R_IA_64_IMM64		0x23	/* immediate64	S + A */
+#define	R_IA_64_DIR32MSB	0x24	/* word32 MSB	S + A */
+#define	R_IA_64_DIR32LSB	0x25	/* word32 LSB	S + A */
+#define	R_IA_64_DIR64MSB	0x26	/* word64 MSB	S + A */
+#define	R_IA_64_DIR64LSB	0x27	/* word64 LSB	S + A */
+#define	R_IA_64_GPREL22		0x2a	/* immediate22	@gprel(S + A) */
+#define	R_IA_64_GPREL64I	0x2b	/* immediate64	@gprel(S + A) */
+#define	R_IA_64_GPREL32MSB	0x2c	/* word32 MSB	@gprel(S + A) */
+#define	R_IA_64_GPREL32LSB	0x2d	/* word32 LSB	@gprel(S + A) */
+#define	R_IA_64_GPREL64MSB	0x2e	/* word64 MSB	@gprel(S + A) */
+#define	R_IA_64_GPREL64LSB	0x2f	/* word64 LSB	@gprel(S + A) */
+#define	R_IA_64_LTOFF22		0x32	/* immediate22	@ltoff(S + A) */
+#define	R_IA_64_LTOFF64I	0x33	/* immediate64	@ltoff(S + A) */
+#define	R_IA_64_PLTOFF22	0x3a	/* immediate22	@pltoff(S + A) */
+#define	R_IA_64_PLTOFF64I	0x3b	/* immediate64	@pltoff(S + A) */
+#define	R_IA_64_PLTOFF64MSB	0x3e	/* word64 MSB	@pltoff(S + A) */
+#define	R_IA_64_PLTOFF64LSB	0x3f	/* word64 LSB	@pltoff(S + A) */
+#define	R_IA_64_FPTR64I		0x43	/* immediate64	@fptr(S + A) */
+#define	R_IA_64_FPTR32MSB	0x44	/* word32 MSB	@fptr(S + A) */
+#define	R_IA_64_FPTR32LSB	0x45	/* word32 LSB	@fptr(S + A) */
+#define	R_IA_64_FPTR64MSB	0x46	/* word64 MSB	@fptr(S + A) */
+#define	R_IA_64_FPTR64LSB	0x47	/* word64 LSB	@fptr(S + A) */
+#define	R_IA_64_PCREL60B	0x48	/* immediate60 form1 S + A - P */
+#define	R_IA_64_PCREL21B	0x49	/* immediate21 form1 S + A - P */
+#define	R_IA_64_PCREL21M	0x4a	/* immediate21 form2 S + A - P */
+#define	R_IA_64_PCREL21F	0x4b	/* immediate21 form3 S + A - P */
+#define	R_IA_64_PCREL32MSB	0x4c	/* word32 MSB	S + A - P */
+#define	R_IA_64_PCREL32LSB	0x4d	/* word32 LSB	S + A - P */
+#define	R_IA_64_PCREL64MSB	0x4e	/* word64 MSB	S + A - P */
+#define	R_IA_64_PCREL64LSB	0x4f	/* word64 LSB	S + A - P */
+#define	R_IA_64_LTOFF_FPTR22	0x52	/* immediate22	@ltoff(@fptr(S + A)) */
+#define	R_IA_64_LTOFF_FPTR64I	0x53	/* immediate64	@ltoff(@fptr(S + A)) */
+#define	R_IA_64_LTOFF_FPTR32MSB	0x54	/* word32 MSB	@ltoff(@fptr(S + A)) */
+#define	R_IA_64_LTOFF_FPTR32LSB	0x55	/* word32 LSB	@ltoff(@fptr(S + A)) */
+#define	R_IA_64_LTOFF_FPTR64MSB	0x56	/* word64 MSB	@ltoff(@fptr(S + A)) */
+#define	R_IA_64_LTOFF_FPTR64LSB	0x57	/* word64 LSB	@ltoff(@fptr(S + A)) */
+#define	R_IA_64_SEGREL32MSB	0x5c	/* word32 MSB	@segrel(S + A) */
+#define	R_IA_64_SEGREL32LSB	0x5d	/* word32 LSB	@segrel(S + A) */
+#define	R_IA_64_SEGREL64MSB	0x5e	/* word64 MSB	@segrel(S + A) */
+#define	R_IA_64_SEGREL64LSB	0x5f	/* word64 LSB	@segrel(S + A) */
+#define	R_IA_64_SECREL32MSB	0x64	/* word32 MSB	@secrel(S + A) */
+#define	R_IA_64_SECREL32LSB	0x65	/* word32 LSB	@secrel(S + A) */
+#define	R_IA_64_SECREL64MSB	0x66	/* word64 MSB	@secrel(S + A) */
+#define	R_IA_64_SECREL64LSB	0x67	/* word64 LSB	@secrel(S + A) */
+#define	R_IA_64_REL32MSB	0x6c	/* word32 MSB	BD + A */
+#define	R_IA_64_REL32LSB	0x6d	/* word32 LSB	BD + A */
+#define	R_IA_64_REL64MSB	0x6e	/* word64 MSB	BD + A */
+#define	R_IA_64_REL64LSB	0x6f	/* word64 LSB	BD + A */
+#define	R_IA_64_LTV32MSB	0x74	/* word32 MSB	S + A */
+#define	R_IA_64_LTV32LSB	0x75	/* word32 LSB	S + A */
+#define	R_IA_64_LTV64MSB	0x76	/* word64 MSB	S + A */
+#define	R_IA_64_LTV64LSB	0x77	/* word64 LSB	S + A */
+#define	R_IA_64_PCREL21BI	0x79	/* immediate21 form1 S + A - P */
+#define	R_IA_64_PCREL22		0x7a	/* immediate22	S + A - P */
+#define	R_IA_64_PCREL64I	0x7b	/* immediate64	S + A - P */
+#define	R_IA_64_IPLTMSB		0x80	/* function descriptor MSB special */
+#define	R_IA_64_IPLTLSB		0x81	/* function descriptor LSB speciaal */
+#define	R_IA_64_SUB		0x85	/* immediate64	A - S */
+#define	R_IA_64_LTOFF22X	0x86	/* immediate22	special */
+#define	R_IA_64_LDXMOV		0x87	/* immediate22	special */
+#define	R_IA_64_TPREL14		0x91	/* imm14	@tprel(S + A) */
+#define	R_IA_64_TPREL22		0x92	/* imm22	@tprel(S + A) */
+#define	R_IA_64_TPREL64I	0x93	/* imm64	@tprel(S + A) */
+#define	R_IA_64_TPREL64MSB	0x96	/* word64 MSB	@tprel(S + A) */
+#define	R_IA_64_TPREL64LSB	0x97	/* word64 LSB	@tprel(S + A) */
+#define	R_IA_64_LTOFF_TPREL22	0x9a	/* imm22	@ltoff(@tprel(S+A)) */
+#define	R_IA_64_DTPMOD64MSB	0xa6	/* word64 MSB	@dtpmod(S + A) */
+#define	R_IA_64_DTPMOD64LSB	0xa7	/* word64 LSB	@dtpmod(S + A) */
+#define	R_IA_64_LTOFF_DTPMOD22	0xaa	/* imm22	@ltoff(@dtpmod(S+A)) */
+#define	R_IA_64_DTPREL14	0xb1	/* imm14	@dtprel(S + A) */
+#define	R_IA_64_DTPREL22	0xb2	/* imm22	@dtprel(S + A) */
+#define	R_IA_64_DTPREL64I	0xb3	/* imm64	@dtprel(S + A) */
+#define	R_IA_64_DTPREL32MSB	0xb4	/* word32 MSB	@dtprel(S + A) */
+#define	R_IA_64_DTPREL32LSB	0xb5	/* word32 LSB	@dtprel(S + A) */
+#define	R_IA_64_DTPREL64MSB	0xb6	/* word64 MSB	@dtprel(S + A) */
+#define	R_IA_64_DTPREL64LSB	0xb7	/* word64 LSB	@dtprel(S + A) */
+#define	R_IA_64_LTOFF_DTPREL22	0xba	/* imm22	@ltoff(@dtprel(S+A)) */
+
+#define	R_MIPS_NONE	0	/* No reloc */
+#define	R_MIPS_16	1	/* Direct 16 bit */
+#define	R_MIPS_32	2	/* Direct 32 bit */
+#define	R_MIPS_REL32	3	/* PC relative 32 bit */
+#define	R_MIPS_26	4	/* Direct 26 bit shifted */
+#define	R_MIPS_HI16	5	/* High 16 bit */
+#define	R_MIPS_LO16	6	/* Low 16 bit */
+#define	R_MIPS_GPREL16	7	/* GP relative 16 bit */
+#define	R_MIPS_LITERAL	8	/* 16 bit literal entry */
+#define	R_MIPS_GOT16	9	/* 16 bit GOT entry */
+#define	R_MIPS_PC16	10	/* PC relative 16 bit */
+#define	R_MIPS_CALL16	11	/* 16 bit GOT entry for function */
+#define	R_MIPS_GPREL32	12	/* GP relative 32 bit */
+#define	R_MIPS_64	18	/* Direct 64 bit */
+#define	R_MIPS_GOT_DISP	19
+#define	R_MIPS_GOT_PAGE	20
+#define	R_MIPS_GOT_OFST	21
+#define	R_MIPS_GOT_HI16	22	/* GOT HI 16 bit */
+#define	R_MIPS_GOT_LO16	23	/* GOT LO 16 bit */
+#define	R_MIPS_SUB	24
+#define	R_MIPS_CALLHI16 30	/* upper 16 bit GOT entry for function */
+#define	R_MIPS_CALLLO16 31	/* lower 16 bit GOT entry for function */
+#define	R_MIPS_JALR	37
+#define	R_MIPS_TLS_GD	42
+#define	R_MIPS_COPY	126
+#define	R_MIPS_JUMP_SLOT	127
+
+#define	R_PPC_NONE		0	/* No relocation. */
+#define	R_PPC_ADDR32		1
+#define	R_PPC_ADDR24		2
+#define	R_PPC_ADDR16		3
+#define	R_PPC_ADDR16_LO		4
+#define	R_PPC_ADDR16_HI		5
+#define	R_PPC_ADDR16_HA		6
+#define	R_PPC_ADDR14		7
+#define	R_PPC_ADDR14_BRTAKEN	8
+#define	R_PPC_ADDR14_BRNTAKEN	9
+#define	R_PPC_REL24		10
+#define	R_PPC_REL14		11
+#define	R_PPC_REL14_BRTAKEN	12
+#define	R_PPC_REL14_BRNTAKEN	13
+#define	R_PPC_GOT16		14
+#define	R_PPC_GOT16_LO		15
+#define	R_PPC_GOT16_HI		16
+#define	R_PPC_GOT16_HA		17
+#define	R_PPC_PLTREL24		18
+#define	R_PPC_COPY		19
+#define	R_PPC_GLOB_DAT		20
+#define	R_PPC_JMP_SLOT		21
+#define	R_PPC_RELATIVE		22
+#define	R_PPC_LOCAL24PC		23
+#define	R_PPC_UADDR32		24
+#define	R_PPC_UADDR16		25
+#define	R_PPC_REL32		26
+#define	R_PPC_PLT32		27
+#define	R_PPC_PLTREL32		28
+#define	R_PPC_PLT16_LO		29
+#define	R_PPC_PLT16_HI		30
+#define	R_PPC_PLT16_HA		31
+#define	R_PPC_SDAREL16		32
+#define	R_PPC_SECTOFF		33
+#define	R_PPC_SECTOFF_LO	34
+#define	R_PPC_SECTOFF_HI	35
+#define	R_PPC_SECTOFF_HA	36
+#define	R_PPC_IRELATIVE		248
+
+/*
+ * 64-bit relocations
+ */
+#define	R_PPC64_ADDR64		38
+#define	R_PPC64_ADDR16_HIGHER	39
+#define	R_PPC64_ADDR16_HIGHERA	40
+#define	R_PPC64_ADDR16_HIGHEST	41
+#define	R_PPC64_ADDR16_HIGHESTA	42
+#define	R_PPC64_UADDR64		43
+#define	R_PPC64_REL64		44
+#define	R_PPC64_PLT64		45
+#define	R_PPC64_PLTREL64	46
+#define	R_PPC64_TOC16		47
+#define	R_PPC64_TOC16_LO	48
+#define	R_PPC64_TOC16_HI	49
+#define	R_PPC64_TOC16_HA	50
+#define	R_PPC64_TOC		51
+#define	R_PPC64_DTPMOD64	68
+#define	R_PPC64_TPREL64		73
+#define	R_PPC64_DTPREL64	78
+
+/*
+ * TLS relocations
+ */
+#define	R_PPC_TLS		67
+#define	R_PPC_DTPMOD32		68
+#define	R_PPC_TPREL16		69
+#define	R_PPC_TPREL16_LO	70
+#define	R_PPC_TPREL16_HI	71
+#define	R_PPC_TPREL16_HA	72
+#define	R_PPC_TPREL32		73
+#define	R_PPC_DTPREL16		74
+#define	R_PPC_DTPREL16_LO	75
+#define	R_PPC_DTPREL16_HI	76
+#define	R_PPC_DTPREL16_HA	77
+#define	R_PPC_DTPREL32		78
+#define	R_PPC_GOT_TLSGD16	79
+#define	R_PPC_GOT_TLSGD16_LO	80
+#define	R_PPC_GOT_TLSGD16_HI	81
+#define	R_PPC_GOT_TLSGD16_HA	82
+#define	R_PPC_GOT_TLSLD16	83
+#define	R_PPC_GOT_TLSLD16_LO	84
+#define	R_PPC_GOT_TLSLD16_HI	85
+#define	R_PPC_GOT_TLSLD16_HA	86
+#define	R_PPC_GOT_TPREL16	87
+#define	R_PPC_GOT_TPREL16_LO	88
+#define	R_PPC_GOT_TPREL16_HI	89
+#define	R_PPC_GOT_TPREL16_HA	90
+
+/*
+ * The remaining relocs are from the Embedded ELF ABI, and are not in the
+ *  SVR4 ELF ABI.
+ */
+
+#define	R_PPC_EMB_NADDR32	101
+#define	R_PPC_EMB_NADDR16	102
+#define	R_PPC_EMB_NADDR16_LO	103
+#define	R_PPC_EMB_NADDR16_HI	104
+#define	R_PPC_EMB_NADDR16_HA	105
+#define	R_PPC_EMB_SDAI16	106
+#define	R_PPC_EMB_SDA2I16	107
+#define	R_PPC_EMB_SDA2REL	108
+#define	R_PPC_EMB_SDA21		109
+#define	R_PPC_EMB_MRKREF	110
+#define	R_PPC_EMB_RELSEC16	111
+#define	R_PPC_EMB_RELST_LO	112
+#define	R_PPC_EMB_RELST_HI	113
+#define	R_PPC_EMB_RELST_HA	114
+#define	R_PPC_EMB_BIT_FLD	115
+#define	R_PPC_EMB_RELSDA	116
+
+/*
+ * RISC-V relocation types.
+ */
+
+/* Relocation types used by the dynamic linker. */
+#define	R_RISCV_NONE		0
+#define	R_RISCV_32		1
+#define	R_RISCV_64		2
+#define	R_RISCV_RELATIVE	3
+#define	R_RISCV_COPY		4
+#define	R_RISCV_JUMP_SLOT	5
+#define	R_RISCV_TLS_DTPMOD32	6
+#define	R_RISCV_TLS_DTPMOD64	7
+#define	R_RISCV_TLS_DTPREL32	8
+#define	R_RISCV_TLS_DTPREL64	9
+#define	R_RISCV_TLS_TPREL32	10
+#define	R_RISCV_TLS_TPREL64	11
+
+/* Relocation types not used by the dynamic linker. */
+#define	R_RISCV_BRANCH		16
+#define	R_RISCV_JAL		17
+#define	R_RISCV_CALL		18
+#define	R_RISCV_CALL_PLT	19
+#define	R_RISCV_GOT_HI20	20
+#define	R_RISCV_TLS_GOT_HI20	21
+#define	R_RISCV_TLS_GD_HI20	22
+#define	R_RISCV_PCREL_HI20	23
+#define	R_RISCV_PCREL_LO12_I	24
+#define	R_RISCV_PCREL_LO12_S	25
+#define	R_RISCV_HI20		26
+#define	R_RISCV_LO12_I		27
+#define	R_RISCV_LO12_S		28
+#define	R_RISCV_TPREL_HI20	29
+#define	R_RISCV_TPREL_LO12_I	30
+#define	R_RISCV_TPREL_LO12_S	31
+#define	R_RISCV_TPREL_ADD	32
+#define	R_RISCV_ADD8		33
+#define	R_RISCV_ADD16		34
+#define	R_RISCV_ADD32		35
+#define	R_RISCV_ADD64		36
+#define	R_RISCV_SUB8		37
+#define	R_RISCV_SUB16		38
+#define	R_RISCV_SUB32		39
+#define	R_RISCV_SUB64		40
+#define	R_RISCV_GNU_VTINHERIT	41
+#define	R_RISCV_GNU_VTENTRY	42
+#define	R_RISCV_ALIGN		43
+#define	R_RISCV_RVC_BRANCH	44
+#define	R_RISCV_RVC_JUMP	45
+#define	R_RISCV_RVC_LUI		46
+#define	R_RISCV_RELAX		51
+#define	R_RISCV_SUB6		52
+#define	R_RISCV_SET6		53
+#define	R_RISCV_SET8		54
+#define	R_RISCV_SET16		55
+#define	R_RISCV_SET32		56
+#define	R_RISCV_32_PCREL	57
+#define	R_RISCV_IRELATIVE	58
+
+#define	R_SPARC_NONE		0
+#define	R_SPARC_8		1
+#define	R_SPARC_16		2
+#define	R_SPARC_32		3
+#define	R_SPARC_DISP8		4
+#define	R_SPARC_DISP16		5
+#define	R_SPARC_DISP32		6
+#define	R_SPARC_WDISP30		7
+#define	R_SPARC_WDISP22		8
+#define	R_SPARC_HI22		9
+#define	R_SPARC_22		10
+#define	R_SPARC_13		11
+#define	R_SPARC_LO10		12
+#define	R_SPARC_GOT10		13
+#define	R_SPARC_GOT13		14
+#define	R_SPARC_GOT22		15
+#define	R_SPARC_PC10		16
+#define	R_SPARC_PC22		17
+#define	R_SPARC_WPLT30		18
+#define	R_SPARC_COPY		19
+#define	R_SPARC_GLOB_DAT	20
+#define	R_SPARC_JMP_SLOT	21
+#define	R_SPARC_RELATIVE	22
+#define	R_SPARC_UA32		23
+#define	R_SPARC_PLT32		24
+#define	R_SPARC_HIPLT22		25
+#define	R_SPARC_LOPLT10		26
+#define	R_SPARC_PCPLT32		27
+#define	R_SPARC_PCPLT22		28
+#define	R_SPARC_PCPLT10		29
+#define	R_SPARC_10		30
+#define	R_SPARC_11		31
+#define	R_SPARC_64		32
+#define	R_SPARC_OLO10		33
+#define	R_SPARC_HH22		34
+#define	R_SPARC_HM10		35
+#define	R_SPARC_LM22		36
+#define	R_SPARC_PC_HH22		37
+#define	R_SPARC_PC_HM10		38
+#define	R_SPARC_PC_LM22		39
+#define	R_SPARC_WDISP16		40
+#define	R_SPARC_WDISP19		41
+#define	R_SPARC_GLOB_JMP	42
+#define	R_SPARC_7		43
+#define	R_SPARC_5		44
+#define	R_SPARC_6		45
+#define	R_SPARC_DISP64		46
+#define	R_SPARC_PLT64		47
+#define	R_SPARC_HIX22		48
+#define	R_SPARC_LOX10		49
+#define	R_SPARC_H44		50
+#define	R_SPARC_M44		51
+#define	R_SPARC_L44		52
+#define	R_SPARC_REGISTER	53
+#define	R_SPARC_UA64		54
+#define	R_SPARC_UA16		55
+#define	R_SPARC_TLS_GD_HI22	56
+#define	R_SPARC_TLS_GD_LO10	57
+#define	R_SPARC_TLS_GD_ADD	58
+#define	R_SPARC_TLS_GD_CALL	59
+#define	R_SPARC_TLS_LDM_HI22	60
+#define	R_SPARC_TLS_LDM_LO10	61
+#define	R_SPARC_TLS_LDM_ADD	62
+#define	R_SPARC_TLS_LDM_CALL	63
+#define	R_SPARC_TLS_LDO_HIX22	64
+#define	R_SPARC_TLS_LDO_LOX10	65
+#define	R_SPARC_TLS_LDO_ADD	66
+#define	R_SPARC_TLS_IE_HI22	67
+#define	R_SPARC_TLS_IE_LO10	68
+#define	R_SPARC_TLS_IE_LD	69
+#define	R_SPARC_TLS_IE_LDX	70
+#define	R_SPARC_TLS_IE_ADD	71
+#define	R_SPARC_TLS_LE_HIX22	72
+#define	R_SPARC_TLS_LE_LOX10	73
+#define	R_SPARC_TLS_DTPMOD32	74
+#define	R_SPARC_TLS_DTPMOD64	75
+#define	R_SPARC_TLS_DTPOFF32	76
+#define	R_SPARC_TLS_DTPOFF64	77
+#define	R_SPARC_TLS_TPOFF32	78
+#define	R_SPARC_TLS_TPOFF64	79
+
+#define	R_X86_64_NONE		0	/* No relocation. */
+#define	R_X86_64_64		1	/* Add 64 bit symbol value. */
+#define	R_X86_64_PC32		2	/* PC-relative 32 bit signed sym value. */
+#define	R_X86_64_GOT32		3	/* PC-relative 32 bit GOT offset. */
+#define	R_X86_64_PLT32		4	/* PC-relative 32 bit PLT offset. */
+#define	R_X86_64_COPY		5	/* Copy data from shared object. */
+#define	R_X86_64_GLOB_DAT	6	/* Set GOT entry to data address. */
+#define	R_X86_64_JMP_SLOT	7	/* Set GOT entry to code address. */
+#define	R_X86_64_RELATIVE	8	/* Add load address of shared object. */
+#define	R_X86_64_GOTPCREL	9	/* Add 32 bit signed pcrel offset to GOT. */
+#define	R_X86_64_32		10	/* Add 32 bit zero extended symbol value */
+#define	R_X86_64_32S		11	/* Add 32 bit sign extended symbol value */
+#define	R_X86_64_16		12	/* Add 16 bit zero extended symbol value */
+#define	R_X86_64_PC16		13	/* Add 16 bit signed extended pc relative symbol value */
+#define	R_X86_64_8		14	/* Add 8 bit zero extended symbol value */
+#define	R_X86_64_PC8		15	/* Add 8 bit signed extended pc relative symbol value */
+#define	R_X86_64_DTPMOD64	16	/* ID of module containing symbol */
+#define	R_X86_64_DTPOFF64	17	/* Offset in TLS block */
+#define	R_X86_64_TPOFF64	18	/* Offset in static TLS block */
+#define	R_X86_64_TLSGD		19	/* PC relative offset to GD GOT entry */
+#define	R_X86_64_TLSLD		20	/* PC relative offset to LD GOT entry */
+#define	R_X86_64_DTPOFF32	21	/* Offset in TLS block */
+#define	R_X86_64_GOTTPOFF	22	/* PC relative offset to IE GOT entry */
+#define	R_X86_64_TPOFF32	23	/* Offset in static TLS block */
+#define	R_X86_64_PC64		24	/* PC-relative 64 bit signed sym value. */
+#define	R_X86_64_GOTOFF64	25
+#define	R_X86_64_GOTPC32	26
+#define	R_X86_64_GOT64		27
+#define	R_X86_64_GOTPCREL64	28
+#define	R_X86_64_GOTPC64	29
+#define	R_X86_64_GOTPLT64	30
+#define	R_X86_64_PLTOFF64	31
+#define	R_X86_64_SIZE32		32
+#define	R_X86_64_SIZE64		33
+#define	R_X86_64_GOTPC32_TLSDESC 34
+#define	R_X86_64_TLSDESC_CALL	35
+#define	R_X86_64_TLSDESC	36
+#define	R_X86_64_IRELATIVE	37
+#define	R_X86_64_RELATIVE64	38
+/* 39 and 40 were BND-related, already decomissioned */
+#define	R_X86_64_GOTPCRELX	41
+#define	R_X86_64_REX_GOTPCRELX	42
+
+#define	ELF_BSDF_SIGFASTBLK	0x0001	/* Kernel supports fast sigblock */
+#define	ELF_BSDF_VMNOOVERCOMMIT	0x0002
+
+#endif /* !_SYS_ELF_COMMON_H_ */
diff --git a/mainline/runtime/sdk/android/x86/include/bionic/libc/include/bits/elf_x86.h b/mainline/runtime/sdk/android/x86/include/bionic/libc/include/bits/elf_x86.h
deleted file mode 100644
index dfbaba0..0000000
--- a/mainline/runtime/sdk/android/x86/include/bionic/libc/include/bits/elf_x86.h
+++ /dev/null
@@ -1,60 +0,0 @@
-/*	$NetBSD: elf_machdep.h,v 1.12 2016/02/02 20:16:59 christos Exp $	*/
-
-#ifndef _X86_ELF_MACHDEP_H_
-#define _X86_ELF_MACHDEP_H_
-
-/* i386 relocations */
-#define	R_386_NONE	0
-#define	R_386_32	1
-#define	R_386_PC32	2
-#define	R_386_GOT32	3
-#define	R_386_PLT32	4
-#define	R_386_COPY	5
-#define	R_386_GLOB_DAT	6
-#define	R_386_JMP_SLOT	7
-#define	R_386_RELATIVE	8
-#define	R_386_GOTOFF	9
-#define	R_386_GOTPC	10
-#define	R_386_32PLT	11
-
-/* TLS relocations */
-#define	R_386_TLS_TPOFF	14
-#define	R_386_TLS_IE	15
-#define	R_386_TLS_GOTIE	16
-#define	R_386_TLS_LE	17
-#define	R_386_TLS_GD	18
-#define	R_386_TLS_LDM	19
-
-/* The following relocations are GNU extensions. */
-#define	R_386_16	20
-#define	R_386_PC16	21
-#define	R_386_8		22
-#define	R_386_PC8	23
-
-/* More TLS relocations */
-#define	R_386_TLS_GD_32		24
-#define	R_386_TLS_GD_PUSH	25
-#define	R_386_TLS_GD_CALL	26
-#define	R_386_TLS_GD_POP	27
-#define	R_386_TLS_LDM_32	28
-#define	R_386_TLS_LDM_PUSH	29
-#define	R_386_TLS_LDM_CALL	30
-#define	R_386_TLS_LDM_POP	31
-#define	R_386_TLS_LDO_32	32
-#define	R_386_TLS_IE_32		33
-#define	R_386_TLS_LE_32		34
-#define	R_386_TLS_DTPMOD32	35
-#define	R_386_TLS_DTPOFF32	36
-#define	R_386_TLS_TPOFF32	37
-
-#define R_386_SIZE32		38
-
-/* More TLS relocations */
-#define	R_386_TLS_GOTDESC	39
-#define	R_386_TLS_DESC_CALL	40
-#define	R_386_TLS_DESC		41
-
-#define R_386_IRELATIVE		42
-#define R_386_GOT32X		43
-
-#endif
diff --git a/mainline/runtime/sdk/android/x86/include/bionic/libc/include/bits/elf_x86_64.h b/mainline/runtime/sdk/android/x86/include/bionic/libc/include/bits/elf_x86_64.h
deleted file mode 100644
index 30062af..0000000
--- a/mainline/runtime/sdk/android/x86/include/bionic/libc/include/bits/elf_x86_64.h
+++ /dev/null
@@ -1,55 +0,0 @@
-/*	$NetBSD: elf_machdep.h,v 1.5 2016/02/02 20:13:59 christos Exp $	*/
-
-#ifndef _X86_64_ELF_MACHDEP_H_
-#define _X86_64_ELF_MACHDEP_H_
-
-/* x86-64 relocations */
-
-#define R_X86_64_NONE		0
-#define R_X86_64_64		1
-#define R_X86_64_PC32		2
-#define R_X86_64_GOT32		3
-#define R_X86_64_PLT32		4
-#define R_X86_64_COPY		5
-#define R_X86_64_GLOB_DAT	6
-#define R_X86_64_JUMP_SLOT	7
-#define R_X86_64_RELATIVE	8
-#define R_X86_64_GOTPCREL	9
-#define R_X86_64_32		10
-#define R_X86_64_32S		11
-#define R_X86_64_16		12
-#define R_X86_64_PC16		13
-#define R_X86_64_8		14
-#define R_X86_64_PC8		15
-
-/* TLS relocations */
-#define R_X86_64_DTPMOD64	16
-#define R_X86_64_DTPOFF64	17
-#define R_X86_64_TPOFF64	18
-#define R_X86_64_TLSGD		19
-#define R_X86_64_TLSLD		20
-#define R_X86_64_DTPOFF32	21
-#define R_X86_64_GOTTPOFF	22
-#define R_X86_64_TPOFF32	23
-
-#define R_X86_64_PC64		24
-#define R_X86_64_GOTOFF64	25
-#define R_X86_64_GOTPC32	26
-#define R_X86_64_GOT64		27
-#define R_X86_64_GOTPCREL64	28
-#define R_X86_64_GOTPC64	29
-#define R_X86_64_GOTPLT64	30
-#define R_X86_64_PLTOFF64	31
-#define R_X86_64_SIZE32		32
-#define R_X86_64_SIZE64		33
-#define R_X86_64_GOTPC32_TLSDESC 34
-#define R_X86_64_TLSDESC_CALL	35
-#define R_X86_64_TLSDESC	36
-#define R_X86_64_IRELATIVE	37
-#define R_X86_64_RELATIVE64	38
-#define R_X86_64_PC32_BND	39
-#define R_X86_64_PLT32_BND	40
-#define R_X86_64_GOTPCRELX	41
-#define R_X86_64_REX_GOTPCRELX	42
-
-#endif
diff --git a/mainline/runtime/sdk/android/x86/include/bionic/libc/include/bits/fenv_riscv64.h b/mainline/runtime/sdk/android/x86/include/bionic/libc/include/bits/fenv_riscv64.h
new file mode 100644
index 0000000..e1e43b6
--- /dev/null
+++ b/mainline/runtime/sdk/android/x86/include/bionic/libc/include/bits/fenv_riscv64.h
@@ -0,0 +1,52 @@
+/*
+ * Copyright (C) 2022 The Android Open Source Project
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *  * Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ *  * Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in
+ *    the documentation and/or other materials provided with the
+ *    distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+ * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+ * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
+ * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
+ * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+ * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
+ * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ */
+
+#pragma once
+
+#include <sys/types.h>
+
+__BEGIN_DECLS
+
+typedef __uint32_t fenv_t;
+typedef __uint32_t fexcept_t;
+
+/* Exception flags. No FE_DENORMAL for riscv64. */
+#define FE_INEXACT    0x01
+#define FE_UNDERFLOW  0x02
+#define FE_OVERFLOW   0x04
+#define FE_DIVBYZERO  0x08
+#define FE_INVALID    0x10
+#define FE_ALL_EXCEPT (FE_DIVBYZERO | FE_INEXACT | FE_INVALID | FE_OVERFLOW | FE_UNDERFLOW)
+
+/* Rounding modes. */
+#define FE_TONEAREST  0x0
+#define FE_TOWARDZERO 0x1
+#define FE_DOWNWARD   0x2
+#define FE_UPWARD     0x3
+
+__END_DECLS
diff --git a/mainline/runtime/sdk/android/x86/include/bionic/libc/include/bits/fortify/fcntl.h b/mainline/runtime/sdk/android/x86/include/bionic/libc/include/bits/fortify/fcntl.h
index 7063541..7fe60f4 100644
--- a/mainline/runtime/sdk/android/x86/include/bionic/libc/include/bits/fortify/fcntl.h
+++ b/mainline/runtime/sdk/android/x86/include/bionic/libc/include/bits/fortify/fcntl.h
@@ -41,7 +41,7 @@
 #if defined(__BIONIC_FORTIFY)
 #define __open_too_many_args_error "too many arguments"
 #define __open_too_few_args_error "called with O_CREAT or O_TMPFILE, but missing mode"
-#define __open_useless_modes_warning "has superfluous mode bits; missing O_CREAT?"
+#define __open_useless_modes_warning "has superfluous mode bits; missing O_CREAT or O_TMPFILE?"
 /* O_TMPFILE shares bits with O_DIRECTORY. */
 #define __open_modes_useful(flags) (((flags) & O_CREAT) || ((flags) & O_TMPFILE) == O_TMPFILE)
 
diff --git a/mainline/runtime/sdk/android/x86/include/bionic/libc/include/elf.h b/mainline/runtime/sdk/android/x86/include/bionic/libc/include/elf.h
index 4739bbd..1dfc008 100644
--- a/mainline/runtime/sdk/android/x86/include/bionic/libc/include/elf.h
+++ b/mainline/runtime/sdk/android/x86/include/bionic/libc/include/elf.h
@@ -30,13 +30,12 @@
 
 #include <sys/cdefs.h>
 
-#include <bits/auxvec.h>
-#include <bits/elf_arm.h>
-#include <bits/elf_arm64.h>
-#include <bits/elf_x86.h>
-#include <bits/elf_x86_64.h>
 #include <linux/elf.h>
 #include <linux/elf-em.h>
+#undef EI_PAD
+
+#include <bits/auxvec.h>
+#include <bits/elf_common.h>
 
 /* http://www.sco.com/developers/gabi/latest/ch4.intro.html */
 typedef __u64 Elf32_Xword;
@@ -83,14 +82,6 @@
   Elf64_Word l_version;
   Elf64_Word l_flags;
 } Elf64_Lib;
-/* ElfW(Lib)::l_flags values. */
-#define LL_NONE 0x0
-#define LL_EXACT_MATCH 0x1
-#define LL_IGNORE_INT_VER 0x2
-#define LL_REQUIRE_MINOR 0x4
-#define LL_EXPORTS 0x8
-#define LL_DELAY_LOAD 0x10
-#define LL_DELTA 0x20
 
 typedef struct {
   Elf32_Xword m_value;
@@ -118,14 +109,6 @@
   Elf64_Half si_boundto;
   Elf64_Half si_flags;
 } Elf64_Syminfo;
-/* ElfW(Syminfo)::si_boundto values. */
-#define SYMINFO_BT_SELF 0xffff
-#define SYMINFO_BT_PARENT 0xfffe
-/* ElfW(Syminfo)::si_flags values. */
-#define SYMINFO_FLG_DIRECT 0x1
-#define SYMINFO_FLG_PASSTHRU 0x2
-#define SYMINFO_FLG_COPY 0x4
-#define SYMINFO_FLG_LAZYLOAD 0x8
 
 typedef Elf32_Half Elf32_Versym;
 typedef Elf64_Half Elf64_Versym;
@@ -197,24 +180,12 @@
 typedef Elf64_Xword Elf64_Relr;
 
 /* http://www.sco.com/developers/gabi/latest/ch5.dynamic.html */
-#define DF_ORIGIN     0x00000001
-#define DF_SYMBOLIC   0x00000002
-#define DF_TEXTREL    0x00000004
-#define DF_BIND_NOW   0x00000008
-#define DF_STATIC_TLS 0x00000010
 
 #define DF_1_NOW        0x00000001 /* Perform complete relocation processing. */
-#define DF_1_GLOBAL     0x00000002 /* implies RTLD_GLOBAL */
 #define DF_1_GROUP      0x00000004
-#define DF_1_NODELETE   0x00000008 /* implies RTLD_NODELETE */
-#define DF_1_LOADFLTR   0x00000010
 #define DF_1_INITFIRST  0x00000020
-#define DF_1_NOOPEN     0x00000040 /* Object can not be used with dlopen(3) */
-#define DF_1_ORIGIN     0x00000080
 #define DF_1_DIRECT     0x00000100
 #define DF_1_TRANS      0x00000200
-#define DF_1_INTERPOSE  0x00000400
-#define DF_1_NODEFLIB   0x00000800
 #define DF_1_NODUMP     0x00001000 /* Object cannot be dumped with dldump(3) */
 #define DF_1_CONFALT    0x00002000
 #define DF_1_ENDFILTEE  0x00004000
@@ -230,58 +201,10 @@
 #define DF_1_GLOBAUDIT  0x01000000
 #define DF_1_SINGLETON  0x02000000
 #define DF_1_STUB       0x04000000
-#define DF_1_PIE        0x08000000
-
-/* http://www.sco.com/developers/gabi/latest/ch5.dynamic.html */
-#define DT_BIND_NOW 24
-#define DT_INIT_ARRAY 25
-#define DT_FINI_ARRAY 26
-#define DT_INIT_ARRAYSZ 27
-#define DT_FINI_ARRAYSZ 28
-#define DT_RUNPATH 29
-#define DT_FLAGS 30
-/* glibc and BSD disagree for DT_ENCODING; glibc looks wrong. */
-#define DT_PREINIT_ARRAY 32
-#define DT_PREINIT_ARRAYSZ 33
-#define DT_RELRSZ 35
-#define DT_RELR 36
-#define DT_RELRENT 37
-
-#define DT_GNU_HASH 0x6ffffef5
-#define DT_TLSDESC_PLT 0x6ffffef6
-#define DT_TLSDESC_GOT 0x6ffffef7
-
-/* http://www.sco.com/developers/gabi/latest/ch4.eheader.html */
-#define EI_ABIVERSION 8
-#undef EI_PAD
-#define EI_PAD 9
-
-/* http://www.sco.com/developers/gabi/latest/ch4.sheader.html */
-#define ELFCOMPRESS_ZLIB 1
-#define ELFCOMPRESS_LOOS 0x60000000
-#define ELFCOMPRESS_HIOS 0x6fffffff
-#define ELFCOMPRESS_LOPROC 0x70000000
-#define ELFCOMPRESS_HIPROC 0x7fffffff
 
 /* http://www.sco.com/developers/gabi/latest/ch4.eheader.html */
 #define ELFOSABI_SYSV 0 /* Synonym for ELFOSABI_NONE used by valgrind. */
-#define ELFOSABI_HPUX 1
-#define ELFOSABI_NETBSD 2
 #define ELFOSABI_GNU 3 /* Synonym for ELFOSABI_LINUX. */
-#define ELFOSABI_SOLARIS 6
-#define ELFOSABI_AIX 7
-#define ELFOSABI_IRIX 8
-#define ELFOSABI_FREEBSD 9
-#define ELFOSABI_TRU64 10
-#define ELFOSABI_MODESTO 11
-#define ELFOSABI_OPENBSD 12
-#define ELFOSABI_OPENVMS 13
-#define ELFOSABI_NSK 14
-#define ELFOSABI_AROS 15
-#define ELFOSABI_FENIXOS 16
-#define ELFOSABI_CLOUDABI 17
-#define ELFOSABI_OPENVOS 18
-#define ELFOSABI_ARM_AEABI 64
 
 /* http://www.sco.com/developers/gabi/latest/ch4.reloc.html */
 #define ELF32_R_INFO(sym, type) ((((Elf32_Word)sym) << 8) | ((type) & 0xff))
@@ -294,236 +217,17 @@
 #define ELF32_ST_INFO(b,t) ELF_ST_INFO(b,t)
 #define ELF64_ST_INFO(b,t) ELF_ST_INFO(b,t)
 
-/* http://www.sco.com/developers/gabi/latest/ch4.eheader.html */
-#define EM_S370 9
-#define EM_VPP500 17
-#define EM_960 19
-#define EM_V800 36
-#define EM_FR20 37
-#define EM_RH32 38
-#define EM_RCE 39
-#define EM_FAKE_ALPHA 41
-#define EM_TRICORE 44
-#define EM_ARC 45
-#define EM_H8_300H 47
-#define EM_H8S 48
-#define EM_H8_500 49
-#define EM_MIPS_X 51
-#define EM_COLDFIRE 52
-#define EM_68HC12 53
-#define EM_MMA 54
-#define EM_PCP 55
-#define EM_NCPU 56
-#define EM_NDR1 57
-#define EM_STARCORE 58
-#define EM_ME16 59
-#define EM_ST100 60
-#define EM_TINYJ 61
-#define EM_PDSP 63
-#define EM_PDP10 64
-#define EM_PDP11 65
-#define EM_FX66 66
-#define EM_ST9PLUS 67
-#define EM_ST7 68
-#define EM_68HC16 69
-#define EM_68HC11 70
-#define EM_68HC08 71
-#define EM_68HC05 72
-#define EM_SVX 73
-#define EM_ST19 74
-#define EM_VAX 75
-#define EM_JAVELIN 77
-#define EM_FIREPATH 78
-#define EM_ZSP 79
-#define EM_MMIX 80
-#define EM_HUANY 81
-#define EM_PRISM 82
-#define EM_AVR 83
-#define EM_FR30 84
-#define EM_D10V 85
-#define EM_D30V 86
-#define EM_V850 87
-#define EM_MN10200 90
-#define EM_PJ 91
-#define EM_ARC_COMPACT 93
-#define EM_XTENSA 94
-#define EM_VIDEOCORE 95
-#define EM_TMM_GPP 96
-#define EM_NS32K 97
-#define EM_TPC 98
-#define EM_SNP1K 99
-#define EM_ST200 100
-#define EM_IP2K 101
-#define EM_MAX 102
-#define EM_CR 103
-#define EM_F2MC16 104
-#define EM_MSP430 105
-#define EM_SE_C33 107
-#define EM_SEP 108
-#define EM_ARCA 109
-#define EM_UNICORE 110
-#define EM_EXCESS 111
-#define EM_DXP 112
-#define EM_CRX 114
-#define EM_XGATE 115
-#define EM_C166 116
-#define EM_M16C 117
-#define EM_DSPIC30F 118
-#define EM_CE 119
-#define EM_M32C 120
-#define EM_TSK3000 131
-#define EM_RS08 132
-#define EM_SHARC 133
-#define EM_ECOG2 134
-#define EM_SCORE7 135
-#define EM_DSP24 136
-#define EM_VIDEOCORE3 137
-#define EM_LATTICEMICO32 138
-#define EM_SE_C17 139
-#define EM_TI_C2000 141
-#define EM_TI_C5500 142
-#define EM_MMDSP_PLUS 160
-#define EM_CYPRESS_M8C 161
-#define EM_R32C 162
-#define EM_TRIMEDIA 163
-#define EM_QDSP6 164
-#define EM_8051 165
-#define EM_STXP7X 166
-#define EM_NDS32 167
-#define EM_ECOG1 168
-#define EM_ECOG1X 168
-#define EM_MAXQ30 169
-#define EM_XIMO16 170
-#define EM_MANIK 171
-#define EM_CRAYNV2 172
-#define EM_RX 173
-#define EM_METAG 174
-#define EM_MCST_ELBRUS 175
-#define EM_ECOG16 176
-#define EM_CR16 177
-#define EM_ETPU 178
-#define EM_SLE9X 179
-#define EM_L10M 180
-#define EM_K10M 181
-#define EM_AVR32 185
-#define EM_STM8 186
-#define EM_TILE64 187
-#define EM_CUDA 190
-#define EM_CLOUDSHIELD 192
-#define EM_COREA_1ST 193
-#define EM_COREA_2ND 194
-#define EM_ARC_COMPACT2 195
-#define EM_OPEN8 196
-#define EM_RL78 197
-#define EM_VIDEOCORE5 198
-#define EM_78KOR 199
-#define EM_56800EX 200
-#define EM_BA1 201
-#define EM_BA2 202
-#define EM_XCORE 203
-#define EM_MCHP_PIC 204
-#define EM_INTEL205 205
-#define EM_INTEL206 206
-#define EM_INTEL207 207
-#define EM_INTEL208 208
-#define EM_INTEL209 209
-#define EM_KM32 210
-#define EM_KMX32 211
-#define EM_KMX16 212
-#define EM_KMX8 213
-#define EM_KVARC 214
-#define EM_CDP 215
-#define EM_COGE 216
-#define EM_COOL 217
-#define EM_NORC 218
-#define EM_CSR_KALIMBA 219
-#define EM_Z80 220
-#define EM_VISIUM 221
-#define EM_FT32 222
-#define EM_MOXIE 223
-#define EM_AMDGPU 224
-#define EM_RISCV 243
-
-/* http://www.sco.com/developers/gabi/latest/ch4.eheader.html */
-#define ET_LOOS 0xfe00
-#define ET_HIOS 0xfeff
-
 /* http://www.sco.com/developers/gabi/latest/ch4.sheader.html */
-#define GRP_COMDAT 0x1
 #define GRP_MASKOS   0x0ff00000
 #define GRP_MASKPROC 0xf0000000
 
-/* http://www.sco.com/developers/gabi/latest/ch5.pheader.html */
-#define PF_X 0x1
-#define PF_W 0x2
-#define PF_R 0x4
-#define PF_MASKOS   0x0ff00000
-#define PF_MASKPROC 0xf0000000
-
-#define PT_GNU_RELRO 0x6474e552
-
-#define STB_LOOS 10
-#define STB_HIOS 12
-#define STB_LOPROC 13
-#define STB_HIPROC 15
-
 /* http://www.sco.com/developers/gabi/latest/ch4.sheader.html */
-#define SHF_MERGE 0x10
-#define SHF_STRINGS 0x20
-#define SHF_INFO_LINK 0x40
-#define SHF_LINK_ORDER 0x80
-#define SHF_OS_NONCONFORMING 0x100
-#define SHF_GROUP 0x200
-#define SHF_TLS 0x400
-#define SHF_COMPRESSED 0x800
-#define SHF_MASKOS 0x0ff00000
-#define SHF_MASKPROC 0xf0000000
-
-/* http://www.sco.com/developers/gabi/latest/ch4.sheader.html */
-#define SHN_LOOS 0xff20
-#define SHN_HIOS 0xff3f
-#define SHN_XINDEX 0xffff
-
-/* http://www.sco.com/developers/gabi/latest/ch4.sheader.html */
-#define SHT_INIT_ARRAY 14
-#define SHT_FINI_ARRAY 15
-#define SHT_PREINIT_ARRAY 16
-#define SHT_GROUP 17
-#define SHT_SYMTAB_SHNDX 18
+/*
+ * Standard replacement for SHT_ANDROID_RELR.
+ */
 #define SHT_RELR 19
 #undef SHT_NUM
 #define SHT_NUM 20
-#define SHT_LOOS 0x60000000
-#define SHT_HIOS 0x6fffffff
-
-/* http://www.sco.com/developers/gabi/latest/ch4.symtab.html */
-#define STN_UNDEF 0
-
-/* http://www.sco.com/developers/gabi/latest/ch4.symtab.html */
-#define STT_GNU_IFUNC 10
-#define STT_LOOS 10
-#define STT_HIOS 12
-#define STT_LOPROC 13
-#define STT_HIPROC 15
-
-/* http://www.sco.com/developers/gabi/latest/ch4.symtab.html */
-#define STV_DEFAULT 0
-#define STV_INTERNAL 1
-#define STV_HIDDEN 2
-#define STV_PROTECTED 3
-
-/* The kernel uses NT_PRFPREG but glibc also offers NT_FPREGSET */
-#define NT_FPREGSET NT_PRFPREG
-
-#define ELF_NOTE_GNU "GNU"
-
-#define NT_GNU_BUILD_ID 3
-
-#define VER_FLG_BASE 0x1
-#define VER_FLG_WEAK 0x2
-
-#define VER_NDX_LOCAL 0
-#define VER_NDX_GLOBAL 1
 
 /*
  * Experimental support for SHT_RELR sections. For details, see proposal
@@ -553,3 +257,13 @@
 #define DT_ANDROID_RELSZ 0x60000010 // DT_LOOS + 3
 #define DT_ANDROID_RELA 0x60000011 // DT_LOOS + 4
 #define DT_ANDROID_RELASZ 0x60000012 // DT_LOOS + 5
+
+/* Linux traditionally doesn't have the trailing 64 that BSD has on these. */
+#define R_AARCH64_TLS_DTPREL R_AARCH64_TLS_DTPREL64
+#define R_AARCH64_TLS_DTPMOD R_AARCH64_TLS_DTPMOD64
+#define R_AARCH64_TLS_TPREL R_AARCH64_TLS_TPREL64
+
+/* TODO: upstream these to FreeBSD? */
+#define R_ARM_TLS_DESC 13
+#define R_ARM_IRELATIVE 160
+#define R_X86_64_JUMP_SLOT 7
diff --git a/mainline/runtime/sdk/android/x86/include/bionic/libc/include/fenv.h b/mainline/runtime/sdk/android/x86/include/bionic/libc/include/fenv.h
index 7b775b6..3fd9852 100644
--- a/mainline/runtime/sdk/android/x86/include/bionic/libc/include/fenv.h
+++ b/mainline/runtime/sdk/android/x86/include/bionic/libc/include/fenv.h
@@ -35,6 +35,8 @@
 #include <bits/fenv_arm.h>
 #elif defined(__i386__)
 #include <bits/fenv_x86.h>
+#elif defined(__riscv)
+#include <bits/fenv_riscv64.h>
 #elif defined(__x86_64__)
 #include <bits/fenv_x86_64.h>
 #endif
diff --git a/mainline/runtime/sdk/android/x86/include/bionic/libc/include/langinfo.h b/mainline/runtime/sdk/android/x86/include/bionic/libc/include/langinfo.h
index d9d8c15..2b43892 100644
--- a/mainline/runtime/sdk/android/x86/include/bionic/libc/include/langinfo.h
+++ b/mainline/runtime/sdk/android/x86/include/bionic/libc/include/langinfo.h
@@ -92,8 +92,8 @@
 #define NOEXPR 54
 #define CRNCYSTR 55
 
-char* nl_langinfo(nl_item __item) __INTRODUCED_IN(26);
-char* nl_langinfo_l(nl_item __item, locale_t __l) __INTRODUCED_IN(26);
+char* _Nonnull nl_langinfo(nl_item __item) __INTRODUCED_IN(26);
+char* _Nonnull nl_langinfo_l(nl_item __item, locale_t _Nonnull __l) __INTRODUCED_IN(26);
 
 __END_DECLS
 
diff --git a/mainline/runtime/sdk/android/x86/include/bionic/libc/include/libgen.h b/mainline/runtime/sdk/android/x86/include/bionic/libc/include/libgen.h
index b910790..474f066 100644
--- a/mainline/runtime/sdk/android/x86/include/bionic/libc/include/libgen.h
+++ b/mainline/runtime/sdk/android/x86/include/bionic/libc/include/libgen.h
@@ -50,7 +50,7 @@
  * Note that Android's cv-qualifiers differ from POSIX; Android's implementation doesn't
  * modify its input and uses thread-local storage for the result if necessary.
  */
-char* __posix_basename(const char* __path) __RENAME(basename);
+char* _Nullable __posix_basename(const char* _Nullable __path) __RENAME(basename);
 
 /**
  * This macro ensures that callers get the POSIX basename() if they include this header,
@@ -65,13 +65,13 @@
  * Note that Android's cv-qualifiers differ from POSIX; Android's implementation doesn't
  * modify its input and uses thread-local storage for the result if necessary.
  */
-char* dirname(const char* __path);
+char* _Nullable dirname(const char* _Nullable __path);
 
 #if !defined(__LP64__)
 /** Deprecated. Use dirname() instead. */
-int dirname_r(const char* __path, char* __buf, size_t __n);
+int dirname_r(const char* _Nullable __path, char* _Nullable __buf, size_t __n);
 /** Deprecated. Use basename() instead. */
-int basename_r(const char* __path, char* __buf, size_t __n);
+int basename_r(const char* _Nullable __path, char* _Nullable __buf, size_t __n);
 #endif
 
 __END_DECLS
diff --git a/mainline/runtime/sdk/android/x86/include/bionic/libc/include/malloc.h b/mainline/runtime/sdk/android/x86/include/bionic/libc/include/malloc.h
index 40786fa..02bda60 100644
--- a/mainline/runtime/sdk/android/x86/include/bionic/libc/include/malloc.h
+++ b/mainline/runtime/sdk/android/x86/include/bionic/libc/include/malloc.h
@@ -40,7 +40,7 @@
  * Returns a pointer to the allocated memory on success and returns a null
  * pointer and sets `errno` on failure.
  */
-void* malloc(size_t __byte_count) __mallocfunc __BIONIC_ALLOC_SIZE(1) __wur;
+void* _Nullable malloc(size_t __byte_count) __mallocfunc __BIONIC_ALLOC_SIZE(1) __wur;
 
 /**
  * [calloc(3)](http://man7.org/linux/man-pages/man3/calloc.3.html) allocates
@@ -49,7 +49,7 @@
  * Returns a pointer to the allocated memory on success and returns a null
  * pointer and sets `errno` on failure.
  */
-void* calloc(size_t __item_count, size_t __item_size) __mallocfunc __BIONIC_ALLOC_SIZE(1,2) __wur;
+void* _Nullable calloc(size_t __item_count, size_t __item_size) __mallocfunc __BIONIC_ALLOC_SIZE(1,2) __wur;
 
 /**
  * [realloc(3)](http://man7.org/linux/man-pages/man3/realloc.3.html) resizes
@@ -58,7 +58,7 @@
  * Returns a pointer (which may be different from `__ptr`) to the resized
  * memory on success and returns a null pointer and sets `errno` on failure.
  */
-void* realloc(void* __ptr, size_t __byte_count) __BIONIC_ALLOC_SIZE(2) __wur;
+void* _Nullable realloc(void* _Nullable __ptr, size_t __byte_count) __BIONIC_ALLOC_SIZE(2) __wur;
 
 /**
  * [reallocarray(3)](http://man7.org/linux/man-pages/man3/realloc.3.html) resizes
@@ -70,13 +70,13 @@
  * Returns a pointer (which may be different from `__ptr`) to the resized
  * memory on success and returns a null pointer and sets `errno` on failure.
  */
-void* reallocarray(void* __ptr, size_t __item_count, size_t __item_size) __BIONIC_ALLOC_SIZE(2, 3) __wur __INTRODUCED_IN(29);
+void* _Nullable reallocarray(void* _Nullable __ptr, size_t __item_count, size_t __item_size) __BIONIC_ALLOC_SIZE(2, 3) __wur __INTRODUCED_IN(29);
 
 /**
  * [free(3)](http://man7.org/linux/man-pages/man3/free.3.html) deallocates
  * memory on the heap.
  */
-void free(void* __ptr);
+void free(void* _Nullable __ptr);
 
 /**
  * [memalign(3)](http://man7.org/linux/man-pages/man3/memalign.3.html) allocates
@@ -87,7 +87,7 @@
  *
  * See also posix_memalign().
  */
-void* memalign(size_t __alignment, size_t __byte_count) __mallocfunc __BIONIC_ALLOC_SIZE(2) __wur;
+void* _Nullable memalign(size_t __alignment, size_t __byte_count) __mallocfunc __BIONIC_ALLOC_SIZE(2) __wur;
 
 /**
  * [malloc_usable_size(3)](http://man7.org/linux/man-pages/man3/malloc_usable_size.3.html)
@@ -95,7 +95,7 @@
  *
  * Available since API level 17.
  */
-size_t malloc_usable_size(const void* __ptr) __INTRODUCED_IN(17);
+size_t malloc_usable_size(const void* _Nullable __ptr) __INTRODUCED_IN(17);
 
 #define __MALLINFO_BODY \
   /** Total number of non-mmapped bytes currently allocated from OS. */ \
@@ -168,7 +168,7 @@
  *
  * Available since API level 23.
  */
-int malloc_info(int __must_be_zero, FILE* __fp) __INTRODUCED_IN(23);
+int malloc_info(int __must_be_zero, FILE* _Nonnull __fp) __INTRODUCED_IN(23);
 
 /**
  * mallopt() option to set the decay time. Valid values are 0 and 1.
@@ -329,7 +329,7 @@
  *
  * See also: [extra documentation](https://android.googlesource.com/platform/bionic/+/master/libc/malloc_hooks/README.md)
  */
-extern void* (*volatile __malloc_hook)(size_t __byte_count, const void* __caller) __INTRODUCED_IN(28);
+extern void* _Nonnull (*volatile _Nonnull __malloc_hook)(size_t __byte_count, const void* _Nonnull __caller) __INTRODUCED_IN(28);
 
 /**
  * [__realloc_hook(3)](http://man7.org/linux/man-pages/man3/__realloc_hook.3.html)
@@ -340,7 +340,7 @@
  *
  * See also: [extra documentation](https://android.googlesource.com/platform/bionic/+/master/libc/malloc_hooks/README.md)
  */
-extern void* (*volatile __realloc_hook)(void* __ptr, size_t __byte_count, const void* __caller) __INTRODUCED_IN(28);
+extern void* _Nonnull (*volatile _Nonnull __realloc_hook)(void* _Nullable __ptr, size_t __byte_count, const void* _Nonnull __caller) __INTRODUCED_IN(28);
 
 /**
  * [__free_hook(3)](http://man7.org/linux/man-pages/man3/__free_hook.3.html)
@@ -351,7 +351,7 @@
  *
  * See also: [extra documentation](https://android.googlesource.com/platform/bionic/+/master/libc/malloc_hooks/README.md)
  */
-extern void (*volatile __free_hook)(void* __ptr, const void* __caller) __INTRODUCED_IN(28);
+extern void (*volatile _Nonnull __free_hook)(void* _Nullable __ptr, const void* _Nonnull __caller) __INTRODUCED_IN(28);
 
 /**
  * [__memalign_hook(3)](http://man7.org/linux/man-pages/man3/__memalign_hook.3.html)
@@ -362,6 +362,6 @@
  *
  * See also: [extra documentation](https://android.googlesource.com/platform/bionic/+/master/libc/malloc_hooks/README.md)
  */
-extern void* (*volatile __memalign_hook)(size_t __alignment, size_t __byte_count, const void* __caller) __INTRODUCED_IN(28);
+extern void* _Nonnull (*volatile _Nonnull __memalign_hook)(size_t __alignment, size_t __byte_count, const void* _Nonnull __caller) __INTRODUCED_IN(28);
 
 __END_DECLS
diff --git a/mainline/runtime/sdk/android/x86/include/bionic/libc/include/regex.h b/mainline/runtime/sdk/android/x86/include/bionic/libc/include/regex.h
index c4cc39c..be1418e 100644
--- a/mainline/runtime/sdk/android/x86/include/bionic/libc/include/regex.h
+++ b/mainline/runtime/sdk/android/x86/include/bionic/libc/include/regex.h
@@ -49,8 +49,8 @@
 typedef struct {
 	int re_magic;
 	size_t re_nsub;		/* number of parenthesized subexpressions */
-	const char *re_endp;	/* end pointer for REG_PEND */
-	struct re_guts *re_g;	/* none of your business :-) */
+	const char * _Null_unspecified re_endp;	/* end pointer for REG_PEND */
+	struct re_guts * _Null_unspecified re_g;	/* none of your business :-) */
 } regex_t;
 
 typedef struct {
@@ -67,6 +67,7 @@
 #define	REG_NOSPEC	0020
 #define	REG_PEND	0040
 #define	REG_DUMP	0200
+#define	REG_GNU		0400
 
 /* regerror() flags */
 #define	REG_NOMATCH	 1
@@ -85,6 +86,7 @@
 #define	REG_EMPTY	14
 #define	REG_ASSERT	15
 #define	REG_INVARG	16
+#define	REG_ILLSEQ	17
 #define	REG_ATOI	255	/* convert name to number (!) */
 #define	REG_ITOA	0400	/* convert number to name (!) */
 
@@ -97,10 +99,10 @@
 #define	REG_BACKR	02000	/* force use of backref code */
 
 __BEGIN_DECLS
-int regcomp(regex_t* __re, const char* __regex, int __flags);
-size_t regerror(int __error_code, const regex_t* __re, char* __buf, size_t __n);
-int regexec(const regex_t* __re, const char* __s, size_t __match_count, regmatch_t __matches[], int __flags);
-void regfree(regex_t* __re);
+int regcomp(regex_t* _Nonnull __re, const char* _Nonnull __regex, int __flags);
+size_t regerror(int __error_code, const regex_t* _Nullable __re, char* _Nullable __buf, size_t __n);
+int regexec(const regex_t* _Nonnull __re, const char* _Nonnull __s, size_t __match_count, regmatch_t __matches[_Nullable], int __flags);
+void regfree(regex_t* _Nonnull __re);
 __END_DECLS
 
 #endif
diff --git a/mainline/runtime/sdk/android/x86/include/bionic/libc/include/setjmp.h b/mainline/runtime/sdk/android/x86/include/bionic/libc/include/setjmp.h
index 3a64b33..a3de9c7 100644
--- a/mainline/runtime/sdk/android/x86/include/bionic/libc/include/setjmp.h
+++ b/mainline/runtime/sdk/android/x86/include/bionic/libc/include/setjmp.h
@@ -37,8 +37,12 @@
  *	@(#)setjmp.h	8.2 (Berkeley) 1/21/94
  */
 
-#ifndef _SETJMP_H_
-#define _SETJMP_H_
+#pragma once
+
+/**
+ * @file setjmp.h
+ * @brief Non-local jumps.
+ */
 
 #include <sys/cdefs.h>
 
@@ -48,28 +52,60 @@
 #define _JBLEN 64
 #elif defined(__i386__)
 #define _JBLEN 10
+#elif defined(__riscv)
+#define _JBLEN 29
 #elif defined(__x86_64__)
 #define _JBLEN 11
 #endif
 
+/** The type of the buffer used by sigsetjmp()/siglongjmp(). */
 typedef long sigjmp_buf[_JBLEN + 1];
+
+/** The type of the buffer used by setjmp()/longjmp(). */
 typedef long jmp_buf[_JBLEN];
 
 #undef _JBLEN
 
 __BEGIN_DECLS
 
+/**
+ * Equivalent to sigsetjmp() with the second argument 0, so that the signal
+ * mask is not saved.
+ */
 int _setjmp(jmp_buf __env) __returns_twice;
+
+/** Equivalent to siglongjmp(). */
 __noreturn void _longjmp(jmp_buf __env, int __value);
 
+/**
+ * Equivalent to sigsetjmp() with the second argument 1, so that the signal
+ * mask is saved.
+ */
 int setjmp(jmp_buf __env) __returns_twice;
-__noreturn void longjmp(jmp_buf __env, int __value);
 
+/** C11 says setjmp() must be a macro, but Android already had a function. */
 #define setjmp(__env) setjmp(__env)
 
-int sigsetjmp(sigjmp_buf __env, int __save_signal_mask);
+/** Equivalent to siglongjmp(). */
+__noreturn void longjmp(jmp_buf __env, int __value);
+
+/**
+ * [sigsetjmp(3)](http://man7.org/linux/man-pages/man3/sigsetjmp.3.html)
+ * sets the target of a future siglongjmp() call, saving or not saving the
+ * current signal mask based on the second argument.
+ *
+ * Returns 0 when first called, and returns the value passed to siglongjmp()
+ * when returning here as a result of a siglongjmp() call.
+ */
+int sigsetjmp(sigjmp_buf __env, int __save_signal_mask) __returns_twice;
+
+/**
+ * [siglongjmp(3)](http://man7.org/linux/man-pages/man3/siglongjmp.3.html)
+ * transfers control back to the site of the sigsetjmp() call that initialized
+ * the given jump buffer, returning the given value.
+ *
+ * Does not return.
+ */
 __noreturn void siglongjmp(sigjmp_buf __env, int __value);
 
 __END_DECLS
-
-#endif
diff --git a/mainline/runtime/sdk/android/x86/include/bionic/libc/include/spawn.h b/mainline/runtime/sdk/android/x86/include/bionic/libc/include/spawn.h
index 2e239bf..e445453 100644
--- a/mainline/runtime/sdk/android/x86/include/bionic/libc/include/spawn.h
+++ b/mainline/runtime/sdk/android/x86/include/bionic/libc/include/spawn.h
@@ -46,6 +46,8 @@
 #define POSIX_SPAWN_USEVFORK 64
 #define POSIX_SPAWN_SETSID 128
 #endif
+// mark all fds (except stdin/out/err) as close-on-exec prior to executing registered file actions
+#define POSIX_SPAWN_CLOEXEC_DEFAULT 256
 
 typedef struct __posix_spawnattr* posix_spawnattr_t;
 typedef struct __posix_spawn_file_actions* posix_spawn_file_actions_t;
diff --git a/mainline/runtime/sdk/android/x86/include/bionic/libc/include/stdio_ext.h b/mainline/runtime/sdk/android/x86/include/bionic/libc/include/stdio_ext.h
index 3aa183d..eda5919 100644
--- a/mainline/runtime/sdk/android/x86/include/bionic/libc/include/stdio_ext.h
+++ b/mainline/runtime/sdk/android/x86/include/bionic/libc/include/stdio_ext.h
@@ -96,13 +96,21 @@
 
 /**
  * [__fpending(3)](http://man7.org/linux/man-pages/man3/__fpending.3.html) returns the number of
- * bytes in the output buffer.
+ * bytes in the output buffer. See __freadahead() for the input buffer.
  *
  * Available since API level 23.
  */
 size_t __fpending(FILE* __fp) __INTRODUCED_IN(23);
 
 /**
+ * __freadahead(3) returns the number of bytes in the input buffer.
+ * See __fpending() for the output buffer.
+ *
+ * Available since API level 34.
+ */
+size_t __freadahead(FILE* __fp) __INTRODUCED_IN(34);
+
+/**
  * [_flushlbf(3)](http://man7.org/linux/man-pages/man3/_flushlbf.3.html) flushes all
  * line-buffered streams.
  *
diff --git a/mainline/runtime/sdk/android/x86/include/bionic/libc/include/stdlib.h b/mainline/runtime/sdk/android/x86/include/bionic/libc/include/stdlib.h
index 4aa27f9..06ed3f4 100644
--- a/mainline/runtime/sdk/android/x86/include/bionic/libc/include/stdlib.h
+++ b/mainline/runtime/sdk/android/x86/include/bionic/libc/include/stdlib.h
@@ -49,82 +49,82 @@
 __noreturn void _Exit(int) __RENAME(_exit);
 #endif
 
-int atexit(void (*__fn)(void));
+int atexit(void (* _Nonnull __fn)(void));
 
-int at_quick_exit(void (*__fn)(void)) __INTRODUCED_IN(21);
+int at_quick_exit(void (* _Nonnull __fn)(void)) __INTRODUCED_IN(21);
 void quick_exit(int __status) __noreturn __INTRODUCED_IN(21);
 
-char* getenv(const char* __name);
-int putenv(char* __assignment);
-int setenv(const char* __name, const char* __value, int __overwrite);
-int unsetenv(const char* __name);
+char* _Nullable getenv(const char* _Nonnull __name);
+int putenv(char* _Nonnull __assignment);
+int setenv(const char* _Nonnull __name, const char* _Nonnull __value, int __overwrite);
+int unsetenv(const char* _Nonnull __name);
 int clearenv(void);
 
-char* mkdtemp(char* __template);
-char* mktemp(char* __template) __attribute__((deprecated("mktemp is unsafe, use mkstemp or tmpfile instead")));
+char* _Nullable mkdtemp(char* _Nonnull __template);
+char* _Nullable mktemp(char* _Nonnull __template) __attribute__((deprecated("mktemp is unsafe, use mkstemp or tmpfile instead")));
 
-int mkostemp64(char* __template, int __flags) __INTRODUCED_IN(23);
-int mkostemp(char* __template, int __flags) __INTRODUCED_IN(23);
-int mkostemps64(char* __template, int __suffix_length, int __flags) __INTRODUCED_IN(23);
-int mkostemps(char* __template, int __suffix_length, int __flags) __INTRODUCED_IN(23);
-int mkstemp64(char* __template) __INTRODUCED_IN(21);
-int mkstemp(char* __template);
-int mkstemps64(char* __template, int __flags) __INTRODUCED_IN(23);
-int mkstemps(char* __template, int __flags);
+int mkostemp64(char* _Nonnull __template, int __flags) __INTRODUCED_IN(23);
+int mkostemp(char* _Nonnull __template, int __flags) __INTRODUCED_IN(23);
+int mkostemps64(char* _Nonnull __template, int __suffix_length, int __flags) __INTRODUCED_IN(23);
+int mkostemps(char* _Nonnull __template, int __suffix_length, int __flags) __INTRODUCED_IN(23);
+int mkstemp64(char* _Nonnull __template) __INTRODUCED_IN(21);
+int mkstemp(char* _Nonnull __template);
+int mkstemps64(char* _Nonnull __template, int __flags) __INTRODUCED_IN(23);
+int mkstemps(char* _Nonnull __template, int __flags);
 
-long strtol(const char* __s, char** __end_ptr, int __base);
-long long strtoll(const char* __s, char** __end_ptr, int __base);
-unsigned long strtoul(const char* __s, char** __end_ptr, int __base);
-unsigned long long strtoull(const char* __s, char** __end_ptr, int __base);
+long strtol(const char* _Nonnull __s, char* _Nullable * _Nullable __end_ptr, int __base);
+long long strtoll(const char* _Nonnull __s, char* _Nullable * _Nullable __end_ptr, int __base);
+unsigned long strtoul(const char* _Nonnull __s, char* _Nullable * _Nullable __end_ptr, int __base);
+unsigned long long strtoull(const char* _Nonnull __s, char* _Nullable * _Nullable __end_ptr, int __base);
 
-int posix_memalign(void** __memptr, size_t __alignment, size_t __size) __INTRODUCED_IN(17);
+int posix_memalign(void* _Nullable * _Nullable __memptr, size_t __alignment, size_t __size) __INTRODUCED_IN(17);
 
-void* aligned_alloc(size_t __alignment, size_t __size) __INTRODUCED_IN(28);
+void* _Nullable aligned_alloc(size_t __alignment, size_t __size) __INTRODUCED_IN(28);
 
-double strtod(const char* __s, char** __end_ptr);
-long double strtold(const char* __s, char** __end_ptr) __RENAME_LDBL(strtod, 3, 21);
+double strtod(const char* _Nonnull __s, char* _Nullable * _Nullable __end_ptr);
+long double strtold(const char* _Nonnull __s, char* _Nullable * _Nullable __end_ptr) __RENAME_LDBL(strtod, 3, 21);
 
-unsigned long strtoul_l(const char* __s, char** __end_ptr, int __base, locale_t __l) __INTRODUCED_IN(26);
+unsigned long strtoul_l(const char* _Nonnull __s, char* _Nullable * _Nullable __end_ptr, int __base, locale_t _Nonnull __l) __INTRODUCED_IN(26);
 
-int atoi(const char* __s) __attribute_pure__;
-long atol(const char* __s) __attribute_pure__;
-long long atoll(const char* __s) __attribute_pure__;
+int atoi(const char* _Nonnull __s) __attribute_pure__;
+long atol(const char* _Nonnull __s) __attribute_pure__;
+long long atoll(const char* _Nonnull __s) __attribute_pure__;
 
-__wur char* realpath(const char* __path, char* __resolved);
-int system(const char* __command);
+__wur char* _Nullable realpath(const char* _Nonnull __path, char* _Nullable __resolved);
+int system(const char* _Nonnull __command);
 
-void* bsearch(const void* __key, const void* __base, size_t __nmemb, size_t __size, int (*__comparator)(const void* __lhs, const void* __rhs));
+void* _Nullable bsearch(const void* _Nonnull __key, const void* _Nullable __base, size_t __nmemb, size_t __size, int (* _Nonnull __comparator)(const void* _Nonnull __lhs, const void* _Nonnull __rhs));
 
-void qsort(void* __base, size_t __nmemb, size_t __size, int (*__comparator)(const void* __lhs, const void* __rhs));
+void qsort(void* _Nullable __base, size_t __nmemb, size_t __size, int (* _Nonnull __comparator)(const void* _Nonnull __lhs, const void* _Nonnull __rhs));
 
 uint32_t arc4random(void);
 uint32_t arc4random_uniform(uint32_t __upper_bound);
-void arc4random_buf(void* __buf, size_t __n);
+void arc4random_buf(void* _Nonnull __buf, size_t __n);
 
 #define RAND_MAX 0x7fffffff
 
-int rand_r(unsigned int* __seed_ptr) __INTRODUCED_IN(21);
+int rand_r(unsigned int* _Nonnull __seed_ptr) __INTRODUCED_IN(21);
 
 double drand48(void);
-double erand48(unsigned short __xsubi[3]);
-long jrand48(unsigned short __xsubi[3]);
-void lcong48(unsigned short __param[7]) __INTRODUCED_IN(23);
+double erand48(unsigned short __xsubi[_Nonnull 3]);
+long jrand48(unsigned short __xsubi[_Nonnull 3]);
+void lcong48(unsigned short __param[_Nonnull 7]) __INTRODUCED_IN(23);
 long lrand48(void);
 long mrand48(void);
-long nrand48(unsigned short __xsubi[3]);
-unsigned short* seed48(unsigned short __seed16v[3]);
+long nrand48(unsigned short __xsubi[_Nonnull 3]);
+unsigned short* _Nonnull seed48(unsigned short __seed16v[_Nonnull 3]);
 void srand48(long __seed);
 
-char* initstate(unsigned int __seed, char* __state, size_t __n) __INTRODUCED_IN(21);
-char* setstate(char* __state) __INTRODUCED_IN(21);
+char* _Nullable initstate(unsigned int __seed, char* _Nonnull __state, size_t __n) __INTRODUCED_IN(21);
+char* _Nullable setstate(char* _Nonnull __state) __INTRODUCED_IN(21);
 
 int getpt(void);
 int posix_openpt(int __flags) __INTRODUCED_IN(21);
-char* ptsname(int __fd);
-int ptsname_r(int __fd, char* __buf, size_t __n);
+char* _Nullable ptsname(int __fd);
+int ptsname_r(int __fd, char* _Nonnull __buf, size_t __n);
 int unlockpt(int __fd);
 
-int getsubopt(char** __option, char* const* __tokens, char** __value_ptr) __INTRODUCED_IN(26);
+int getsubopt(char* _Nonnull * _Nonnull __option, char* _Nonnull const* _Nonnull __tokens, char* _Nullable * _Nonnull __value_ptr) __INTRODUCED_IN(26);
 
 typedef struct {
   int quot;
@@ -154,18 +154,18 @@
  *
  * Returns the number of samples written to `__averages` (at most 3), and returns -1 on failure.
  */
-int getloadavg(double __averages[], int __n) __INTRODUCED_IN(29);
+int getloadavg(double __averages[_Nonnull], int __n) __INTRODUCED_IN(29);
 
 /* BSD compatibility. */
-const char* getprogname(void) __INTRODUCED_IN(21);
-void setprogname(const char* __name) __INTRODUCED_IN(21);
+const char* _Nullable getprogname(void) __INTRODUCED_IN(21);
+void setprogname(const char* _Nonnull __name) __INTRODUCED_IN(21);
 
-int mblen(const char* __s, size_t __n) __INTRODUCED_IN_NO_GUARD_FOR_NDK(26);
-size_t mbstowcs(wchar_t* __dst, const char* __src, size_t __n) __INTRODUCED_IN_NO_GUARD_FOR_NDK(21);
-int mbtowc(wchar_t* __wc_ptr, const char* __s, size_t __n) __INTRODUCED_IN_NO_GUARD_FOR_NDK(21);
-int wctomb(char* __dst, wchar_t __wc) __INTRODUCED_IN_NO_GUARD_FOR_NDK(21);
+int mblen(const char* _Nullable __s, size_t __n) __INTRODUCED_IN_NO_GUARD_FOR_NDK(26);
+size_t mbstowcs(wchar_t* _Nullable __dst, const char* _Nullable __src, size_t __n) __INTRODUCED_IN_NO_GUARD_FOR_NDK(21);
+int mbtowc(wchar_t* _Nullable __wc_ptr, const char*  _Nullable __s, size_t __n) __INTRODUCED_IN_NO_GUARD_FOR_NDK(21);
+int wctomb(char* _Nullable __dst, wchar_t __wc) __INTRODUCED_IN_NO_GUARD_FOR_NDK(21);
 
-size_t wcstombs(char* __dst, const wchar_t* __src, size_t __n) __INTRODUCED_IN_NO_GUARD_FOR_NDK(21);
+size_t wcstombs(char* _Nullable __dst, const wchar_t* _Nullable __src, size_t __n) __INTRODUCED_IN_NO_GUARD_FOR_NDK(21);
 
 #if __ANDROID_API__ >= 21
 size_t __ctype_get_mb_cur_max(void) __INTRODUCED_IN(21);
@@ -192,25 +192,25 @@
 #endif
 
 #if __ANDROID_API__ >= 21
-float strtof(const char* __s, char** __end_ptr) __INTRODUCED_IN(21);
-double atof(const char* __s) __attribute_pure__ __INTRODUCED_IN(21);
+float strtof(const char* _Nonnull __s, char* _Nullable * _Nullable __end_ptr) __INTRODUCED_IN(21);
+double atof(const char* _Nonnull __s) __attribute_pure__ __INTRODUCED_IN(21);
 int rand(void) __INTRODUCED_IN(21);
 void srand(unsigned int __seed) __INTRODUCED_IN(21);
 long random(void) __INTRODUCED_IN(21);
 void srandom(unsigned int __seed) __INTRODUCED_IN(21);
 int grantpt(int __fd) __INTRODUCED_IN(21);
 
-long long strtoll_l(const char* __s, char** __end_ptr, int __base, locale_t __l) __INTRODUCED_IN(21);
-unsigned long long strtoull_l(const char* __s, char** __end_ptr, int __base, locale_t __l) __INTRODUCED_IN(21);
-long double strtold_l(const char* __s, char** __end_ptr, locale_t __l) __INTRODUCED_IN(21);
+long long strtoll_l(const char* _Nonnull __s, char* _Nullable * _Nullable __end_ptr, int __base, locale_t _Nonnull __l) __INTRODUCED_IN(21);
+unsigned long long strtoull_l(const char* _Nonnull __s, char* _Nullable * _Nullable __end_ptr, int __base, locale_t _Nonnull __l) __INTRODUCED_IN(21);
+long double strtold_l(const char* _Nonnull __s, char* _Nullable * _Nullable __end_ptr, locale_t _Nonnull __l) __INTRODUCED_IN(21);
 #else
 // Implemented as static inlines before 21.
 #endif
 
 #if __ANDROID_API__ >= 26
-double strtod_l(const char* __s, char** __end_ptr, locale_t __l) __INTRODUCED_IN(26);
-float strtof_l(const char* __s, char** __end_ptr, locale_t __l) __INTRODUCED_IN(26);
-long strtol_l(const char* __s, char** __end_ptr, int, locale_t __l) __INTRODUCED_IN(26);
+double strtod_l(const char* _Nonnull __s, char* _Nullable * _Nullable __end_ptr, locale_t _Nonnull __l) __INTRODUCED_IN(26);
+float strtof_l(const char* _Nonnull __s, char* _Nullable * _Nullable __end_ptr, locale_t _Nonnull __l) __INTRODUCED_IN(26);
+long strtol_l(const char* _Nonnull __s, char* _Nullable * _Nullable __end_ptr, int, locale_t _Nonnull __l) __INTRODUCED_IN(26);
 #else
 // Implemented as static inlines before 26.
 #endif
diff --git a/mainline/runtime/sdk/android/x86/include/bionic/libc/include/string.h b/mainline/runtime/sdk/android/x86/include/bionic/libc/include/string.h
index 0cc5611..59c4687 100644
--- a/mainline/runtime/sdk/android/x86/include/bionic/libc/include/string.h
+++ b/mainline/runtime/sdk/android/x86/include/bionic/libc/include/string.h
@@ -55,7 +55,24 @@
 void* mempcpy(void* __dst, const void* __src, size_t __n) __INTRODUCED_IN(23);
 #endif
 void* memmove(void* __dst, const void* __src, size_t __n);
+
+/**
+ * [memset(3)](http://man7.org/linux/man-pages/man3/memset.3.html) writes the
+ * bottom 8 bits of the given int to the next `n` bytes of `dst`.
+ *
+ * Returns `dst`.
+ */
 void* memset(void* __dst, int __ch, size_t __n);
+
+/**
+ * [memset_explicit(3)](http://man7.org/linux/man-pages/man3/memset_explicit.3.html)
+ * writes the bottom 8 bits of the given int to the next `n` bytes of `dst`,
+ * but won't be optimized out by the compiler.
+ *
+ * Returns `dst`.
+ */
+void* memset_explicit(void* __dst, int __ch, size_t __n) __INTRODUCED_IN(34);
+
 void* memmem(const void* __haystack, size_t __haystack_size, const void* __needle, size_t __needle_size) __attribute_pure__;
 
 char* strchr(const char* __s, int __ch) __attribute_pure__;
diff --git a/mainline/runtime/sdk/android/x86/include/bionic/libc/include/sys/mman.h b/mainline/runtime/sdk/android/x86/include/bionic/libc/include/sys/mman.h
index 6ef0c12..fea9332 100644
--- a/mainline/runtime/sdk/android/x86/include/bionic/libc/include/sys/mman.h
+++ b/mainline/runtime/sdk/android/x86/include/bionic/libc/include/sys/mman.h
@@ -110,6 +110,8 @@
  * [mlockall(2)](http://man7.org/linux/man-pages/man2/mlockall.2.html)
  * locks pages (preventing swapping).
  *
+ * Available since API level 17.
+ *
  * Returns 0 on success, and returns -1 and sets `errno` on failure.
  */
 int mlockall(int __flags) __INTRODUCED_IN(17);
@@ -118,6 +120,8 @@
  * [munlockall(2)](http://man7.org/linux/man-pages/man2/munlockall.2.html)
  * unlocks pages (allowing swapping).
  *
+ * Available since API level 17.
+ *
  * Returns 0 on success, and returns -1 and sets `errno` on failure.
  */
 int munlockall(void) __INTRODUCED_IN(17);
@@ -134,6 +138,8 @@
  * [mlock2(2)](http://man7.org/linux/man-pages/man2/mlock.2.html)
  * locks pages (preventing swapping), with optional flags.
  *
+ * Available since API level 30.
+ *
  * Returns 0 on success, and returns -1 and sets `errno` on failure.
  */
 int mlock2(const void* __addr, size_t __size, int __flags) __INTRODUCED_IN(30);
@@ -167,9 +173,14 @@
  * works just like madvise(2) but applies to the process specified by the given
  * PID file descriptor.
  *
+ * Available since API level 31. Its sibling process_mrelease() does not have a
+ * libc wrapper and should be called using syscall() instead. Given the lack of
+ * widespread applicability of this system call and the absence of wrappers in
+ * other libcs, it was probably a mistake to have added this wrapper to bionic.
+ *
  * Returns the number of bytes advised on success, and returns -1 and sets `errno` on failure.
  */
-ssize_t process_madvise(int __pid_fd, const struct iovec* __iov, size_t __count, int __advice, unsigned __flags);
+ssize_t process_madvise(int __pid_fd, const struct iovec* __iov, size_t __count, int __advice, unsigned __flags) __INTRODUCED_IN(31);
 
 #if defined(__USE_GNU)
 
@@ -177,6 +188,8 @@
  * [memfd_create(2)](http://man7.org/linux/man-pages/man2/memfd_create.2.html)
  * creates an anonymous file.
  *
+ * Available since API level 30.
+ *
  * Returns an fd on success, and returns -1 and sets `errno` on failure.
  */
 int memfd_create(const char* __name, unsigned __flags) __INTRODUCED_IN(30);
@@ -211,9 +224,10 @@
  * [posix_madvise(3)](http://man7.org/linux/man-pages/man3/posix_madvise.3.html)
  * gives the kernel advice about future usage patterns.
  *
- * Returns 0 on success, and returns a positive error number on failure.
+ * Available since API level 23.
+ * See also madvise() which is available at all API levels.
  *
- * See also madvise() which has been available much longer.
+ * Returns 0 on success, and returns a positive error number on failure.
  */
 int posix_madvise(void* __addr, size_t __size, int __advice) __INTRODUCED_IN(23);
 
diff --git a/mainline/runtime/sdk/android/x86/include/bionic/libc/include/sys/resource.h b/mainline/runtime/sdk/android/x86/include/bionic/libc/include/sys/resource.h
index 9181125..ccb267d 100644
--- a/mainline/runtime/sdk/android/x86/include/bionic/libc/include/sys/resource.h
+++ b/mainline/runtime/sdk/android/x86/include/bionic/libc/include/sys/resource.h
@@ -41,6 +41,7 @@
 #define RLIM_SAVED_MAX RLIM_INFINITY
 
 typedef unsigned long rlim_t;
+typedef unsigned long long rlim64_t;
 
 int getrlimit(int __resource, struct rlimit* __limit);
 int setrlimit(int __resource, const struct rlimit* __limit);
diff --git a/mainline/runtime/sdk/android/x86/include/bionic/libc/include/sys/stat.h b/mainline/runtime/sdk/android/x86/include/bionic/libc/include/sys/stat.h
index 4184f6c..623631e 100644
--- a/mainline/runtime/sdk/android/x86/include/bionic/libc/include/sys/stat.h
+++ b/mainline/runtime/sdk/android/x86/include/bionic/libc/include/sys/stat.h
@@ -40,7 +40,7 @@
 
 __BEGIN_DECLS
 
-#if defined(__aarch64__)
+#if defined(__aarch64__) || defined(__riscv)
 #define __STAT64_BODY \
   dev_t st_dev; \
   ino_t st_ino; \
diff --git a/mainline/runtime/sdk/android/x86/include/bionic/libc/include/sys/ucontext.h b/mainline/runtime/sdk/android/x86/include/bionic/libc/include/sys/ucontext.h
index 9c5801f..8e5873d 100644
--- a/mainline/runtime/sdk/android/x86/include/bionic/libc/include/sys/ucontext.h
+++ b/mainline/runtime/sdk/android/x86/include/bionic/libc/include/sys/ucontext.h
@@ -26,8 +26,7 @@
  * SUCH DAMAGE.
  */
 
-#ifndef _SYS_UCONTEXT_H_
-#define _SYS_UCONTEXT_H_
+#pragma once
 
 #include <sys/cdefs.h>
 
@@ -313,8 +312,69 @@
   struct _libc_fpstate __fpregs_mem;
 } ucontext_t;
 
+#elif defined(__riscv)
+
+#define NGREG 32
+
+#define REG_PC 0
+#define REG_RA 1
+#define REG_SP 2
+#define REG_TP 4
+#define REG_S0 8
+#define REG_A0 10
+
+typedef unsigned long __riscv_mc_gp_state[NGREG];
+
+typedef unsigned long greg_t;
+typedef unsigned long gregset_t[NGREG];
+typedef union __riscv_mc_fp_state fpregset_t;
+
+/* These match the kernel <asm/ptrace.h> types but with different names. */
+
+struct __riscv_mc_f_ext_state {
+  uint32_t __f[32];
+  uint32_t __fcsr;
+};
+
+struct __riscv_mc_d_ext_state {
+  uint64_t __f[32];
+  uint32_t __fcsr;
+};
+
+struct __riscv_mc_q_ext_state {
+  uint64_t __f[64] __attribute__((__aligned__(16)));
+  uint32_t __fcsr;
+  uint32_t __reserved[3];
+};
+
+union __riscv_mc_fp_state {
+  struct __riscv_mc_f_ext_state __f;
+  struct __riscv_mc_d_ext_state __d;
+  struct __riscv_mc_q_ext_state __q;
+};
+
+/* This matches the kernel <asm/sigcontext.h> but with different names. */
+
+typedef struct mcontext_t {
+  __riscv_mc_gp_state __gregs;
+  union __riscv_mc_fp_state __fpregs;
+} mcontext_t;
+
+/* This matches the kernel <asm/ucontext.h> but using mcontext_t. */
+
+typedef struct ucontext_t {
+  unsigned long uc_flags;
+  struct ucontext_t* uc_link;
+  stack_t uc_stack;
+  union {
+    sigset_t uc_sigmask;
+    sigset64_t uc_sigmask64;
+  };
+  /* The kernel adds extra padding here to allow sigset_t to grow. */
+  char __padding[128 - sizeof(sigset_t)];
+  mcontext_t uc_mcontext;
+} ucontext_t;
+
 #endif
 
 __END_DECLS
-
-#endif /* _SYS_UCONTEXT_H_ */
diff --git a/mainline/runtime/sdk/android/x86/include/bionic/libc/include/sys/user.h b/mainline/runtime/sdk/android/x86/include/bionic/libc/include/sys/user.h
index 2392edd..432c7cb 100644
--- a/mainline/runtime/sdk/android/x86/include/bionic/libc/include/sys/user.h
+++ b/mainline/runtime/sdk/android/x86/include/bionic/libc/include/sys/user.h
@@ -26,8 +26,7 @@
  * SUCH DAMAGE.
  */
 
-#ifndef _SYS_USER_H_
-#define _SYS_USER_H_
+#pragma once
 
 #include <sys/cdefs.h>
 #include <stddef.h> /* For size_t. */
@@ -233,6 +232,11 @@
   uint32_t fpcr;
 };
 
+#elif defined(__riscv)
+
+// This space deliberately left blank for now.
+// No other libcs have any riscv64-specific structs.
+
 #else
 
 #error "Unsupported architecture."
@@ -240,5 +244,3 @@
 #endif
 
 __END_DECLS
-
-#endif  /* _SYS_USER_H_ */
diff --git a/mainline/runtime/sdk/android/x86/include/bionic/libc/include/syslog.h b/mainline/runtime/sdk/android/x86/include/bionic/libc/include/syslog.h
index 45de253..d89d769 100644
--- a/mainline/runtime/sdk/android/x86/include/bionic/libc/include/syslog.h
+++ b/mainline/runtime/sdk/android/x86/include/bionic/libc/include/syslog.h
@@ -133,9 +133,10 @@
 
 /**
  * [openlog(3)](http://man7.org/linux/man-pages/man3/openlog.3.html) sets
- * the log tag to `__prefix`. On Android, the other two arguments are ignored.
+ * the log tag to `__prefix`, which can be NULL to return to the default of
+ * getprogname(). On Android, the other two arguments are ignored.
  */
-void openlog(const char* __prefix, int __option, int __facility);
+void openlog(const char* _Nullable __prefix, int __option, int __facility);
 
 /**
  * [setlogmask(3)](http://man7.org/linux/man-pages/man3/setlogmask.3.html)
@@ -149,13 +150,13 @@
  * the printf()-like message and logs it with the given priority, unless
  * suppressed by setlogmask(). On Android, the output goes to logcat.
  */
-void syslog(int __priority, const char* __fmt, ...) __printflike(2, 3);
+void syslog(int __priority, const char* _Nonnull __fmt, ...) __printflike(2, 3);
 
 /**
  * [vsyslog(3)](http://man7.org/linux/man-pages/man3/vsyslog.3.html) formats
  * the vprintf()-like message and logs it with the given priority, unless
  * suppressed by setlogmask(). On Android, the output goes to logcat.
  */
-void vsyslog(int __priority, const char* __fmt, va_list __args) __printflike(2, 0);
+void vsyslog(int __priority, const char* _Nonnull __fmt, va_list __args) __printflike(2, 0);
 
 __END_DECLS
diff --git a/mainline/runtime/sdk/android/x86/include/bionic/libc/include/time.h b/mainline/runtime/sdk/android/x86/include/bionic/libc/include/time.h
index 0db14ff..4b005c6 100644
--- a/mainline/runtime/sdk/android/x86/include/bionic/libc/include/time.h
+++ b/mainline/runtime/sdk/android/x86/include/bionic/libc/include/time.h
@@ -37,7 +37,7 @@
 
 #define CLOCKS_PER_SEC 1000000
 
-extern char* tzname[];
+extern char* _Nonnull tzname[];
 extern int daylight;
 extern long int timezone;
 
@@ -54,62 +54,64 @@
   int tm_yday;
   int tm_isdst;
   long int tm_gmtoff;
-  const char* tm_zone;
+  const char* _Nullable tm_zone;
 };
 
 #define TM_ZONE tm_zone
 
-time_t time(time_t* __t);
-int nanosleep(const struct timespec* __request, struct timespec* __remainder);
+time_t time(time_t* _Nullable __t);
+int nanosleep(const struct timespec* _Nonnull __request, struct timespec* _Nullable __remainder);
 
-char* asctime(const struct tm* __tm);
-char* asctime_r(const struct tm* __tm, char* __buf);
+char* _Nullable asctime(const struct tm* _Nonnull __tm);
+char* _Nullable asctime_r(const struct tm* _Nonnull __tm, char* _Nonnull __buf);
 
 double difftime(time_t __lhs, time_t __rhs);
-time_t mktime(struct tm* __tm);
+time_t mktime(struct tm* _Nonnull __tm);
 
-struct tm* localtime(const time_t* __t);
-struct tm* localtime_r(const time_t* __t, struct tm* __tm);
+struct tm* _Nullable localtime(const time_t* _Nonnull __t);
+struct tm* _Nullable localtime_r(const time_t* _Nonnull __t, struct tm* _Nonnull __tm);
 
-struct tm* gmtime(const time_t* __t);
-struct tm* gmtime_r(const time_t* __t, struct tm* __tm);
+struct tm* _Nullable gmtime(const time_t* _Nonnull __t);
+struct tm* _Nullable gmtime_r(const time_t* _Nonnull __t, struct tm* _Nonnull __tm);
 
-char* strptime(const char* __s, const char* __fmt, struct tm* __tm) __strftimelike(2);
-char* strptime_l(const char* __s, const char* __fmt, struct tm* __tm, locale_t __l) __strftimelike(2) __INTRODUCED_IN(28);
+char* _Nullable strptime(const char* _Nonnull __s, const char* _Nonnull __fmt, struct tm* _Nonnull __tm) __strftimelike(2);
+char* _Nullable strptime_l(const char* _Nonnull __s, const char* _Nonnull __fmt, struct tm* _Nonnull __tm, locale_t _Nonnull __l) __strftimelike(2) __INTRODUCED_IN(28);
 
-size_t strftime(char* __buf, size_t __n, const char* __fmt, const struct tm* __tm) __strftimelike(3);
+size_t strftime(char* _Nonnull __buf, size_t __n, const char* _Nonnull __fmt, const struct tm* _Nullable __tm) __strftimelike(3);
 #if __ANDROID_API__ >= 21
-size_t strftime_l(char* __buf, size_t __n, const char* __fmt, const struct tm* __tm, locale_t __l) __strftimelike(3) __INTRODUCED_IN(21);
+size_t strftime_l(char* _Nonnull __buf, size_t __n, const char* _Nonnull __fmt, const struct tm* _Nullable __tm, locale_t _Nonnull __l) __strftimelike(3) __INTRODUCED_IN(21);
 #else
 // Implemented as static inline before 21.
 #endif
 
-char* ctime(const time_t* __t);
-char* ctime_r(const time_t* __t, char* __buf);
+
+char* _Nullable ctime(const time_t* _Nonnull __t);
+char* _Nullable ctime_r(const time_t* _Nonnull __t, char* _Nonnull __buf);
 
 void tzset(void);
 
 clock_t clock(void);
 
-int clock_getcpuclockid(pid_t __pid, clockid_t* __clock) __INTRODUCED_IN(23);
+int clock_getcpuclockid(pid_t __pid, clockid_t* _Nonnull __clock) __INTRODUCED_IN(23);
 
-int clock_getres(clockid_t __clock, struct timespec* __resolution);
-int clock_gettime(clockid_t __clock, struct timespec* __ts);
-int clock_nanosleep(clockid_t __clock, int __flags, const struct timespec* __request, struct timespec* __remainder);
-int clock_settime(clockid_t __clock, const struct timespec* __ts);
 
-int timer_create(clockid_t __clock, struct sigevent* __event, timer_t* __timer_ptr);
-int timer_delete(timer_t __timer);
-int timer_settime(timer_t __timer, int __flags, const struct itimerspec* __new_value, struct itimerspec* __old_value);
-int timer_gettime(timer_t __timer, struct itimerspec* __ts);
-int timer_getoverrun(timer_t __timer);
+int clock_getres(clockid_t __clock, struct timespec* _Nullable __resolution);
+int clock_gettime(clockid_t __clock, struct timespec* _Nonnull __ts);
+int clock_nanosleep(clockid_t __clock, int __flags, const struct timespec* _Nonnull __request, struct timespec* _Nullable __remainder);
+int clock_settime(clockid_t __clock, const struct timespec* _Nonnull __ts);
+
+int timer_create(clockid_t __clock, struct sigevent* _Nullable __event, timer_t _Nonnull * _Nonnull __timer_ptr);
+int timer_delete(timer_t _Nonnull __timer);
+int timer_settime(timer_t _Nonnull __timer, int __flags, const struct itimerspec* _Nonnull __new_value, struct itimerspec* _Nullable __old_value);
+int timer_gettime(timer_t _Nonnull _timer, struct itimerspec* _Nonnull __ts);
+int timer_getoverrun(timer_t _Nonnull __timer);
 
 /* Non-standard extensions that are in the BSDs and glibc. */
-time_t timelocal(struct tm* __tm);
-time_t timegm(struct tm* __tm);
+time_t timelocal(struct tm* _Nonnull __tm);
+time_t timegm(struct tm* _Nonnull __tm);
 
 #define TIME_UTC 1
-int timespec_get(struct timespec* __ts, int __base) __INTRODUCED_IN(29);
+int timespec_get(struct timespec* _Nonnull __ts, int __base) __INTRODUCED_IN(29);
 
 __END_DECLS
 
diff --git a/mainline/runtime/sdk/android/x86/include/bionic/libc/include/time64.h b/mainline/runtime/sdk/android/x86/include/bionic/libc/include/time64.h
index 905669d..7d70030 100644
--- a/mainline/runtime/sdk/android/x86/include/bionic/libc/include/time64.h
+++ b/mainline/runtime/sdk/android/x86/include/bionic/libc/include/time64.h
@@ -47,17 +47,17 @@
 
 typedef int64_t time64_t;
 
-char* asctime64(const struct tm*);
-char* asctime64_r(const struct tm*, char*);
-char* ctime64(const time64_t*);
-char* ctime64_r(const time64_t*, char*);
-struct tm* gmtime64(const time64_t*);
-struct tm* gmtime64_r(const time64_t*, struct tm*);
-struct tm* localtime64(const time64_t*);
-struct tm* localtime64_r(const time64_t*, struct tm*);
-time64_t mktime64(const struct tm*);
-time64_t timegm64(const struct tm*);
-time64_t timelocal64(const struct tm*);
+char* _Nullable asctime64(const struct tm* _Nonnull);
+char* _Nullable asctime64_r(const struct tm* _Nonnull, char* _Nonnull);
+char* _Nullable ctime64(const time64_t* _Nonnull);
+char* _Nullable ctime64_r(const time64_t* _Nonnull, char* _Nonnull);
+struct tm* _Nullable gmtime64(const time64_t* _Nonnull);
+struct tm* _Nullable gmtime64_r(const time64_t* _Nonnull, struct tm* _Nonnull);
+struct tm* _Nullable localtime64(const time64_t* _Nonnull);
+struct tm* _Nullable localtime64_r(const time64_t* _Nonnull, struct tm* _Nonnull);
+time64_t mktime64(const struct tm* _Nonnull);
+time64_t timegm64(const struct tm* _Nonnull);
+time64_t timelocal64(const struct tm* _Nonnull);
 
 __END_DECLS
 
diff --git a/mainline/runtime/sdk/android/x86/include/bionic/libc/include/unistd.h b/mainline/runtime/sdk/android/x86/include/bionic/libc/include/unistd.h
index e360421..3efc9a2 100644
--- a/mainline/runtime/sdk/android/x86/include/bionic/libc/include/unistd.h
+++ b/mainline/runtime/sdk/android/x86/include/bionic/libc/include/unistd.h
@@ -313,10 +313,37 @@
 int getdomainname(char* __buf, size_t __buf_size) __INTRODUCED_IN(26);
 int setdomainname(const char* __name, size_t __n) __INTRODUCED_IN(26);
 
+/**
+ * [copy_file_range(2)](https://man7.org/linux/man-pages/man2/copy_file_range.2.html) copies
+ * a range of data from one file descriptor to another.
+ *
+ * Available since API level 34.
+ *
+ * Returns the number of bytes copied on success, and returns -1 and sets
+ * `errno` on failure.
+ */
+ssize_t copy_file_range(int __fd_in, off64_t* __off_in, int __fd_out, off64_t* __off_out, size_t __length, unsigned int __flags) __INTRODUCED_IN(34);
+
 #if __ANDROID_API__ >= 28
 void swab(const void* __src, void* __dst, ssize_t __byte_count) __INTRODUCED_IN(28);
 #endif
 
+/**
+ * [close_range(2)](https://man7.org/linux/man-pages/man2/close_range.2.html)
+ * performs an action (which depends on value of flags) on an inclusive range
+ * of file descriptors.
+ *
+ * Available since API level 34.
+ *
+ * Note: there is no emulation on too old kernels, hence this will fail with
+ * -1/ENOSYS on pre-5.9 kernels, -1/EINVAL for unsupported flags.  In particular
+ * CLOSE_RANGE_CLOEXEC requires 5.11, though support was backported to Android
+ * Common Kernel 5.10-T.
+ *
+ * Returns 0 on success, and returns -1 and sets `errno` on failure.
+ */
+int close_range(unsigned int __min_fd, unsigned int __max_fd, int __flags) __INTRODUCED_IN(34);
+
 #if defined(__BIONIC_INCLUDE_FORTIFY_HEADERS)
 #define _UNISTD_H_
 #include <bits/fortify/unistd.h>
diff --git a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/android/scsi/scsi/scsi_proto.h b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/android/scsi/scsi/scsi_proto.h
index eea87a0..13ac4c8 100644
--- a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/android/scsi/scsi/scsi_proto.h
+++ b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/android/scsi/scsi/scsi_proto.h
@@ -183,6 +183,8 @@
   ZBC_ZONE_TYPE_CONV = 0x1,
   ZBC_ZONE_TYPE_SEQWRITE_REQ = 0x2,
   ZBC_ZONE_TYPE_SEQWRITE_PREF = 0x3,
+  ZBC_ZONE_TYPE_SEQ_OR_BEFORE_REQ = 0x4,
+  ZBC_ZONE_TYPE_GAP = 0x5,
 };
 enum zbc_zone_cond {
   ZBC_ZONE_COND_NO_WP = 0x0,
@@ -194,6 +196,10 @@
   ZBC_ZONE_COND_FULL = 0xe,
   ZBC_ZONE_COND_OFFLINE = 0xf,
 };
+enum zbc_zone_alignment_method {
+  ZBC_CONSTANT_ZONE_LENGTH = 0x1,
+  ZBC_CONSTANT_ZONE_START_OFFSET = 0x8,
+};
 enum scsi_version_descriptor {
   SCSI_VERSION_DESCRIPTOR_FCP4 = 0x0a40,
   SCSI_VERSION_DESCRIPTOR_ISCSI = 0x0960,
diff --git a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/asm-arm/asm/signal.h b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/asm-arm/asm/signal.h
index 5f7e0c5..0424380 100644
--- a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/asm-arm/asm/signal.h
+++ b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/asm-arm/asm/signal.h
@@ -78,6 +78,6 @@
 typedef struct sigaltstack {
   void __user * ss_sp;
   int ss_flags;
-  size_t ss_size;
+  __kernel_size_t ss_size;
 } stack_t;
 #endif
diff --git a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/asm-arm64/asm/hwcap.h b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/asm-arm64/asm/hwcap.h
index 4316724..af32056 100644
--- a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/asm-arm64/asm/hwcap.h
+++ b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/asm-arm64/asm/hwcap.h
@@ -72,4 +72,16 @@
 #define HWCAP2_ECV (1 << 19)
 #define HWCAP2_AFP (1 << 20)
 #define HWCAP2_RPRES (1 << 21)
+#define HWCAP2_MTE3 (1 << 22)
+#define HWCAP2_SME (1 << 23)
+#define HWCAP2_SME_I16I64 (1 << 24)
+#define HWCAP2_SME_F64F64 (1 << 25)
+#define HWCAP2_SME_I8I32 (1 << 26)
+#define HWCAP2_SME_F16F32 (1 << 27)
+#define HWCAP2_SME_B16F32 (1 << 28)
+#define HWCAP2_SME_F32F32 (1 << 29)
+#define HWCAP2_SME_FA64 (1 << 30)
+#define HWCAP2_WFXT (1UL << 31)
+#define HWCAP2_EBF16 (1UL << 32)
+#define HWCAP2_SVE_EBF16 (1UL << 33)
 #endif
diff --git a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/asm-arm64/asm/kvm.h b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/asm-arm64/asm/kvm.h
index c53ee87..4f9b347 100644
--- a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/asm-arm64/asm/kvm.h
+++ b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/asm-arm64/asm/kvm.h
@@ -51,9 +51,9 @@
 #define KVM_ARM_TARGET_GENERIC_V8 5
 #define KVM_ARM_NUM_TARGETS 6
 #define KVM_ARM_DEVICE_TYPE_SHIFT 0
-#define KVM_ARM_DEVICE_TYPE_MASK (0xffff << KVM_ARM_DEVICE_TYPE_SHIFT)
+#define KVM_ARM_DEVICE_TYPE_MASK GENMASK(KVM_ARM_DEVICE_TYPE_SHIFT + 15, KVM_ARM_DEVICE_TYPE_SHIFT)
 #define KVM_ARM_DEVICE_ID_SHIFT 16
-#define KVM_ARM_DEVICE_ID_MASK (0xffff << KVM_ARM_DEVICE_ID_SHIFT)
+#define KVM_ARM_DEVICE_ID_MASK GENMASK(KVM_ARM_DEVICE_ID_SHIFT + 15, KVM_ARM_DEVICE_ID_SHIFT)
 #define KVM_ARM_DEVICE_VGIC_V2 0
 #define KVM_VGIC_V2_ADDR_TYPE_DIST 0
 #define KVM_VGIC_V2_ADDR_TYPE_CPU 1
@@ -88,8 +88,10 @@
   __u64 dbg_wcr[KVM_ARM_MAX_DBG_REGS];
   __u64 dbg_wvr[KVM_ARM_MAX_DBG_REGS];
 };
+#define KVM_DEBUG_ARCH_HSR_HIGH_VALID (1 << 0)
 struct kvm_debug_exit_arch {
   __u32 hsr;
+  __u32 hsr_high;
   __u64 far;
 };
 #define KVM_GUESTDBG_USE_SW_BP (1 << 16)
@@ -185,6 +187,21 @@
 #define KVM_ARM64_SVE_VQ_MAX __SVE_VQ_MAX
 #define KVM_REG_ARM64_SVE_VLS (KVM_REG_ARM64 | KVM_REG_ARM64_SVE | KVM_REG_SIZE_U512 | 0xffff)
 #define KVM_ARM64_SVE_VLS_WORDS ((KVM_ARM64_SVE_VQ_MAX - KVM_ARM64_SVE_VQ_MIN) / 64 + 1)
+#define KVM_REG_ARM_FW_FEAT_BMAP (0x0016 << KVM_REG_ARM_COPROC_SHIFT)
+#define KVM_REG_ARM_FW_FEAT_BMAP_REG(r) (KVM_REG_ARM64 | KVM_REG_SIZE_U64 | KVM_REG_ARM_FW_FEAT_BMAP | ((r) & 0xffff))
+#define KVM_REG_ARM_STD_BMAP KVM_REG_ARM_FW_FEAT_BMAP_REG(0)
+enum {
+  KVM_REG_ARM_STD_BIT_TRNG_V1_0 = 0,
+};
+#define KVM_REG_ARM_STD_HYP_BMAP KVM_REG_ARM_FW_FEAT_BMAP_REG(1)
+enum {
+  KVM_REG_ARM_STD_HYP_BIT_PV_TIME = 0,
+};
+#define KVM_REG_ARM_VENDOR_HYP_BMAP KVM_REG_ARM_FW_FEAT_BMAP_REG(2)
+enum {
+  KVM_REG_ARM_VENDOR_HYP_BIT_FUNC_FEAT = 0,
+  KVM_REG_ARM_VENDOR_HYP_BIT_PTP = 1,
+};
 #define KVM_DEV_ARM_VGIC_GRP_ADDR 0
 #define KVM_DEV_ARM_VGIC_GRP_DIST_REGS 1
 #define KVM_DEV_ARM_VGIC_GRP_CPU_REGS 2
@@ -214,6 +231,7 @@
 #define KVM_ARM_VCPU_PMU_V3_IRQ 0
 #define KVM_ARM_VCPU_PMU_V3_INIT 1
 #define KVM_ARM_VCPU_PMU_V3_FILTER 2
+#define KVM_ARM_VCPU_PMU_V3_SET_PMU 3
 #define KVM_ARM_VCPU_TIMER_CTRL 1
 #define KVM_ARM_VCPU_TIMER_IRQ_VTIMER 0
 #define KVM_ARM_VCPU_TIMER_IRQ_PTIMER 1
@@ -244,5 +262,7 @@
 #define KVM_PSCI_RET_NI PSCI_RET_NOT_SUPPORTED
 #define KVM_PSCI_RET_INVAL PSCI_RET_INVALID_PARAMS
 #define KVM_PSCI_RET_DENIED PSCI_RET_DENIED
+#define KVM_SYSTEM_EVENT_RESET_FLAG_PSCI_RESET2 (1ULL << 0)
+#define KVM_EXIT_FAIL_ENTRY_CPU_UNSUPPORTED (1ULL << 0)
 #endif
 #endif
diff --git a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/asm-arm64/asm/perf_regs.h b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/asm-arm64/asm/perf_regs.h
index 71d496f..e18fd05 100644
--- a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/asm-arm64/asm/perf_regs.h
+++ b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/asm-arm64/asm/perf_regs.h
@@ -53,5 +53,8 @@
   PERF_REG_ARM64_SP,
   PERF_REG_ARM64_PC,
   PERF_REG_ARM64_MAX,
+  PERF_REG_ARM64_VG = 46,
+  PERF_REG_ARM64_EXTENDED_MAX
 };
+#define PERF_REG_EXTENDED_MASK (1ULL << PERF_REG_ARM64_VG)
 #endif
diff --git a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/asm-arm64/asm/ptrace.h b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/asm-arm64/asm/ptrace.h
index 480efcf..9540c3e 100644
--- a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/asm-arm64/asm/ptrace.h
+++ b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/asm-arm64/asm/ptrace.h
@@ -111,7 +111,7 @@
 #define SVE_PT_SVE_FPSR_OFFSET(vq) ((SVE_PT_SVE_FFR_OFFSET(vq) + SVE_PT_SVE_FFR_SIZE(vq) + (__SVE_VQ_BYTES - 1)) / __SVE_VQ_BYTES * __SVE_VQ_BYTES)
 #define SVE_PT_SVE_FPCR_OFFSET(vq) (SVE_PT_SVE_FPSR_OFFSET(vq) + SVE_PT_SVE_FPSR_SIZE)
 #define SVE_PT_SVE_SIZE(vq,flags) ((SVE_PT_SVE_FPCR_OFFSET(vq) + SVE_PT_SVE_FPCR_SIZE - SVE_PT_SVE_OFFSET + (__SVE_VQ_BYTES - 1)) / __SVE_VQ_BYTES * __SVE_VQ_BYTES)
-#define SVE_PT_SIZE(vq,flags) (((flags) & SVE_PT_REGS_MASK) == SVE_PT_REGS_SVE ? SVE_PT_SVE_OFFSET + SVE_PT_SVE_SIZE(vq, flags) : SVE_PT_FPSIMD_OFFSET + SVE_PT_FPSIMD_SIZE(vq, flags))
+#define SVE_PT_SIZE(vq,flags) (((flags) & SVE_PT_REGS_MASK) == SVE_PT_REGS_SVE ? SVE_PT_SVE_OFFSET + SVE_PT_SVE_SIZE(vq, flags) : ((((flags) & SVE_PT_REGS_MASK) == SVE_PT_REGS_FPSIMD ? SVE_PT_FPSIMD_OFFSET + SVE_PT_FPSIMD_SIZE(vq, flags) : SVE_PT_REGS_OFFSET)))
 struct user_pac_mask {
   __u64 data_mask;
   __u64 insn_mask;
@@ -125,5 +125,19 @@
 struct user_pac_generic_keys {
   __uint128_t apgakey;
 };
+struct user_za_header {
+  __u32 size;
+  __u32 max_size;
+  __u16 vl;
+  __u16 max_vl;
+  __u16 flags;
+  __u16 __reserved;
+};
+#define ZA_PT_VL_INHERIT ((1 << 17) >> 16)
+#define ZA_PT_VL_ONEXEC ((1 << 18) >> 16)
+#define ZA_PT_ZA_OFFSET ((sizeof(struct user_za_header) + (__SVE_VQ_BYTES - 1)) / __SVE_VQ_BYTES * __SVE_VQ_BYTES)
+#define ZA_PT_ZAV_OFFSET(vq,n) (ZA_PT_ZA_OFFSET + ((vq * __SVE_VQ_BYTES) * n))
+#define ZA_PT_ZA_SIZE(vq) ((vq * __SVE_VQ_BYTES) * (vq * __SVE_VQ_BYTES))
+#define ZA_PT_SIZE(vq) (ZA_PT_ZA_OFFSET + ZA_PT_ZA_SIZE(vq))
 #endif
 #endif
diff --git a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/asm-arm64/asm/sigcontext.h b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/asm-arm64/asm/sigcontext.h
index 518079d..04aa593 100644
--- a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/asm-arm64/asm/sigcontext.h
+++ b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/asm-arm64/asm/sigcontext.h
@@ -55,6 +55,14 @@
 struct sve_context {
   struct _aarch64_ctx head;
   __u16 vl;
+  __u16 flags;
+  __u16 __reserved[2];
+};
+#define SVE_SIG_FLAG_SM 0x1
+#define ZA_MAGIC 0x54366345
+struct za_context {
+  struct _aarch64_ctx head;
+  __u16 vl;
   __u16 __reserved[3];
 };
 #endif
@@ -82,4 +90,8 @@
 #define SVE_SIG_FFR_OFFSET(vq) (SVE_SIG_REGS_OFFSET + __SVE_FFR_OFFSET(vq))
 #define SVE_SIG_REGS_SIZE(vq) (__SVE_FFR_OFFSET(vq) + __SVE_FFR_SIZE(vq))
 #define SVE_SIG_CONTEXT_SIZE(vq) (SVE_SIG_REGS_OFFSET + SVE_SIG_REGS_SIZE(vq))
+#define ZA_SIG_REGS_OFFSET ((sizeof(struct za_context) + (__SVE_VQ_BYTES - 1)) / __SVE_VQ_BYTES * __SVE_VQ_BYTES)
+#define ZA_SIG_REGS_SIZE(vq) ((vq * __SVE_VQ_BYTES) * (vq * __SVE_VQ_BYTES))
+#define ZA_SIG_ZAV_OFFSET(vq,n) (ZA_SIG_REGS_OFFSET + (SVE_SIG_ZREG_SIZE(vq) * n))
+#define ZA_SIG_CONTEXT_SIZE(vq) (ZA_SIG_REGS_OFFSET + ZA_SIG_REGS_SIZE(vq))
 #endif
diff --git a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/asm-generic/fcntl.h b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/asm-generic/fcntl.h
index a2cb5f4..ea8c108 100644
--- a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/asm-generic/fcntl.h
+++ b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/asm-generic/fcntl.h
@@ -100,7 +100,7 @@
 #define F_SETSIG 10
 #define F_GETSIG 11
 #endif
-#ifndef __LP64__
+#if __BITS_PER_LONG == 32
 #ifndef F_GETLK64
 #define F_GETLK64 12
 #define F_SETLK64 13
@@ -144,13 +144,5 @@
 #define LOCK_RW 192
 #define F_LINUX_SPECIFIC_BASE 1024
 #ifndef HAVE_ARCH_STRUCT_FLOCK
-#ifndef __ARCH_FLOCK_PAD
-#define __ARCH_FLOCK_PAD
-#endif
-#endif
-#ifndef HAVE_ARCH_STRUCT_FLOCK64
-#ifndef __ARCH_FLOCK64_PAD
-#define __ARCH_FLOCK64_PAD
-#endif
 #endif
 #endif
diff --git a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/asm-generic/hugetlb_encode.h b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/asm-generic/hugetlb_encode.h
index 73d8180..059991c 100644
--- a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/asm-generic/hugetlb_encode.h
+++ b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/asm-generic/hugetlb_encode.h
@@ -20,17 +20,17 @@
 #define _ASM_GENERIC_HUGETLB_ENCODE_H_
 #define HUGETLB_FLAG_ENCODE_SHIFT 26
 #define HUGETLB_FLAG_ENCODE_MASK 0x3f
-#define HUGETLB_FLAG_ENCODE_16KB (14 << HUGETLB_FLAG_ENCODE_SHIFT)
-#define HUGETLB_FLAG_ENCODE_64KB (16 << HUGETLB_FLAG_ENCODE_SHIFT)
-#define HUGETLB_FLAG_ENCODE_512KB (19 << HUGETLB_FLAG_ENCODE_SHIFT)
-#define HUGETLB_FLAG_ENCODE_1MB (20 << HUGETLB_FLAG_ENCODE_SHIFT)
-#define HUGETLB_FLAG_ENCODE_2MB (21 << HUGETLB_FLAG_ENCODE_SHIFT)
-#define HUGETLB_FLAG_ENCODE_8MB (23 << HUGETLB_FLAG_ENCODE_SHIFT)
-#define HUGETLB_FLAG_ENCODE_16MB (24 << HUGETLB_FLAG_ENCODE_SHIFT)
-#define HUGETLB_FLAG_ENCODE_32MB (25 << HUGETLB_FLAG_ENCODE_SHIFT)
-#define HUGETLB_FLAG_ENCODE_256MB (28 << HUGETLB_FLAG_ENCODE_SHIFT)
-#define HUGETLB_FLAG_ENCODE_512MB (29 << HUGETLB_FLAG_ENCODE_SHIFT)
-#define HUGETLB_FLAG_ENCODE_1GB (30 << HUGETLB_FLAG_ENCODE_SHIFT)
-#define HUGETLB_FLAG_ENCODE_2GB (31 << HUGETLB_FLAG_ENCODE_SHIFT)
-#define HUGETLB_FLAG_ENCODE_16GB (34 << HUGETLB_FLAG_ENCODE_SHIFT)
+#define HUGETLB_FLAG_ENCODE_16KB (14U << HUGETLB_FLAG_ENCODE_SHIFT)
+#define HUGETLB_FLAG_ENCODE_64KB (16U << HUGETLB_FLAG_ENCODE_SHIFT)
+#define HUGETLB_FLAG_ENCODE_512KB (19U << HUGETLB_FLAG_ENCODE_SHIFT)
+#define HUGETLB_FLAG_ENCODE_1MB (20U << HUGETLB_FLAG_ENCODE_SHIFT)
+#define HUGETLB_FLAG_ENCODE_2MB (21U << HUGETLB_FLAG_ENCODE_SHIFT)
+#define HUGETLB_FLAG_ENCODE_8MB (23U << HUGETLB_FLAG_ENCODE_SHIFT)
+#define HUGETLB_FLAG_ENCODE_16MB (24U << HUGETLB_FLAG_ENCODE_SHIFT)
+#define HUGETLB_FLAG_ENCODE_32MB (25U << HUGETLB_FLAG_ENCODE_SHIFT)
+#define HUGETLB_FLAG_ENCODE_256MB (28U << HUGETLB_FLAG_ENCODE_SHIFT)
+#define HUGETLB_FLAG_ENCODE_512MB (29U << HUGETLB_FLAG_ENCODE_SHIFT)
+#define HUGETLB_FLAG_ENCODE_1GB (30U << HUGETLB_FLAG_ENCODE_SHIFT)
+#define HUGETLB_FLAG_ENCODE_2GB (31U << HUGETLB_FLAG_ENCODE_SHIFT)
+#define HUGETLB_FLAG_ENCODE_16GB (34U << HUGETLB_FLAG_ENCODE_SHIFT)
 #endif
diff --git a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/asm-generic/mman-common.h b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/asm-generic/mman-common.h
index 9440576..966d05b 100644
--- a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/asm-generic/mman-common.h
+++ b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/asm-generic/mman-common.h
@@ -62,6 +62,8 @@
 #define MADV_PAGEOUT 21
 #define MADV_POPULATE_READ 22
 #define MADV_POPULATE_WRITE 23
+#define MADV_DONTNEED_LOCKED 24
+#define MADV_COLLAPSE 25
 #define MAP_FILE 0
 #define PKEY_DISABLE_ACCESS 0x1
 #define PKEY_DISABLE_WRITE 0x2
diff --git a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/asm-generic/shmbuf.h b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/asm-generic/shmbuf.h
index 067ffbc..11487f4 100644
--- a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/asm-generic/shmbuf.h
+++ b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/asm-generic/shmbuf.h
@@ -19,9 +19,11 @@
 #ifndef __ASM_GENERIC_SHMBUF_H
 #define __ASM_GENERIC_SHMBUF_H
 #include <asm/bitsperlong.h>
+#include <asm/ipcbuf.h>
+#include <asm/posix_types.h>
 struct shmid64_ds {
   struct ipc64_perm shm_perm;
-  size_t shm_segsz;
+  __kernel_size_t shm_segsz;
 #if __BITS_PER_LONG == 64
   long shm_atime;
   long shm_dtime;
diff --git a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/asm-generic/siginfo.h b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/asm-generic/siginfo.h
index f9199e5..c5e4178 100644
--- a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/asm-generic/siginfo.h
+++ b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/asm-generic/siginfo.h
@@ -80,6 +80,7 @@
       struct {
         unsigned long _data;
         __u32 _type;
+        __u32 _flags;
       } _perf;
     };
   } _sigfault;
@@ -125,6 +126,7 @@
 #define si_pkey _sifields._sigfault._addr_pkey._pkey
 #define si_perf_data _sifields._sigfault._perf._data
 #define si_perf_type _sifields._sigfault._perf._type
+#define si_perf_flags _sifields._sigfault._perf._flags
 #define si_band _sifields._sigpoll._band
 #define si_fd _sifields._sigpoll._fd
 #define si_call_addr _sifields._sigsys._call_addr
@@ -197,6 +199,7 @@
 #define TRAP_UNK 5
 #define TRAP_PERF 6
 #define NSIGTRAP 6
+#define TRAP_PERF_FLAG_ASYNC (1u << 0)
 #define CLD_EXITED 1
 #define CLD_KILLED 2
 #define CLD_DUMPED 3
diff --git a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/asm-generic/signal.h b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/asm-generic/signal.h
index 874fece..5cb1dce 100644
--- a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/asm-generic/signal.h
+++ b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/asm-generic/signal.h
@@ -84,7 +84,7 @@
 typedef struct sigaltstack {
   void __user * ss_sp;
   int ss_flags;
-  size_t ss_size;
+  __kernel_size_t ss_size;
 } stack_t;
 #endif
 #endif
diff --git a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/asm-generic/socket.h b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/asm-generic/socket.h
index 6767993..1a321bf 100644
--- a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/asm-generic/socket.h
+++ b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/asm-generic/socket.h
@@ -100,6 +100,8 @@
 #define SO_NETNS_COOKIE 71
 #define SO_BUF_LOCK 72
 #define SO_RESERVE_MEM 73
+#define SO_TXREHASH 74
+#define SO_RCVMARK 75
 #if __BITS_PER_LONG == 64 || defined(__x86_64__) && defined(__ILP32__)
 #define SO_TIMESTAMP SO_TIMESTAMP_OLD
 #define SO_TIMESTAMPNS SO_TIMESTAMPNS_OLD
diff --git a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/asm-generic/termbits-common.h b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/asm-generic/termbits-common.h
new file mode 100644
index 0000000..281eee8
--- /dev/null
+++ b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/asm-generic/termbits-common.h
@@ -0,0 +1,68 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef __ASM_GENERIC_TERMBITS_COMMON_H
+#define __ASM_GENERIC_TERMBITS_COMMON_H
+typedef unsigned char cc_t;
+typedef unsigned int speed_t;
+#define IGNBRK 0x001
+#define BRKINT 0x002
+#define IGNPAR 0x004
+#define PARMRK 0x008
+#define INPCK 0x010
+#define ISTRIP 0x020
+#define INLCR 0x040
+#define IGNCR 0x080
+#define ICRNL 0x100
+#define IXANY 0x800
+#define OPOST 0x01
+#define OCRNL 0x08
+#define ONOCR 0x10
+#define ONLRET 0x20
+#define OFILL 0x40
+#define OFDEL 0x80
+#define B0 0x00000000
+#define B50 0x00000001
+#define B75 0x00000002
+#define B110 0x00000003
+#define B134 0x00000004
+#define B150 0x00000005
+#define B200 0x00000006
+#define B300 0x00000007
+#define B600 0x00000008
+#define B1200 0x00000009
+#define B1800 0x0000000a
+#define B2400 0x0000000b
+#define B4800 0x0000000c
+#define B9600 0x0000000d
+#define B19200 0x0000000e
+#define B38400 0x0000000f
+#define EXTA B19200
+#define EXTB B38400
+#define ADDRB 0x20000000
+#define CMSPAR 0x40000000
+#define CRTSCTS 0x80000000
+#define IBSHIFT 16
+#define TCOOFF 0
+#define TCOON 1
+#define TCIOFF 2
+#define TCION 3
+#define TCIFLUSH 0
+#define TCOFLUSH 1
+#define TCIOFLUSH 2
+#endif
diff --git a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/asm-generic/termbits.h b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/asm-generic/termbits.h
index b592964..87d6c82 100644
--- a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/asm-generic/termbits.h
+++ b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/asm-generic/termbits.h
@@ -18,9 +18,7 @@
  ****************************************************************************/
 #ifndef __ASM_GENERIC_TERMBITS_H
 #define __ASM_GENERIC_TERMBITS_H
-#include <linux/posix_types.h>
-typedef unsigned char cc_t;
-typedef unsigned int speed_t;
+#include <asm-generic/termbits-common.h>
 typedef unsigned int tcflag_t;
 #define NCCS 19
 struct termios {
@@ -68,126 +66,82 @@
 #define VWERASE 14
 #define VLNEXT 15
 #define VEOL2 16
-#define IGNBRK 0000001
-#define BRKINT 0000002
-#define IGNPAR 0000004
-#define PARMRK 0000010
-#define INPCK 0000020
-#define ISTRIP 0000040
-#define INLCR 0000100
-#define IGNCR 0000200
-#define ICRNL 0000400
-#define IUCLC 0001000
-#define IXON 0002000
-#define IXANY 0004000
-#define IXOFF 0010000
-#define IMAXBEL 0020000
-#define IUTF8 0040000
-#define OPOST 0000001
-#define OLCUC 0000002
-#define ONLCR 0000004
-#define OCRNL 0000010
-#define ONOCR 0000020
-#define ONLRET 0000040
-#define OFILL 0000100
-#define OFDEL 0000200
-#define NLDLY 0000400
-#define NL0 0000000
-#define NL1 0000400
-#define CRDLY 0003000
-#define CR0 0000000
-#define CR1 0001000
-#define CR2 0002000
-#define CR3 0003000
-#define TABDLY 0014000
-#define TAB0 0000000
-#define TAB1 0004000
-#define TAB2 0010000
-#define TAB3 0014000
-#define XTABS 0014000
-#define BSDLY 0020000
-#define BS0 0000000
-#define BS1 0020000
-#define VTDLY 0040000
-#define VT0 0000000
-#define VT1 0040000
-#define FFDLY 0100000
-#define FF0 0000000
-#define FF1 0100000
-#define CBAUD 0010017
-#define B0 0000000
-#define B50 0000001
-#define B75 0000002
-#define B110 0000003
-#define B134 0000004
-#define B150 0000005
-#define B200 0000006
-#define B300 0000007
-#define B600 0000010
-#define B1200 0000011
-#define B1800 0000012
-#define B2400 0000013
-#define B4800 0000014
-#define B9600 0000015
-#define B19200 0000016
-#define B38400 0000017
-#define EXTA B19200
-#define EXTB B38400
-#define CSIZE 0000060
-#define CS5 0000000
-#define CS6 0000020
-#define CS7 0000040
-#define CS8 0000060
-#define CSTOPB 0000100
-#define CREAD 0000200
-#define PARENB 0000400
-#define PARODD 0001000
-#define HUPCL 0002000
-#define CLOCAL 0004000
-#define CBAUDEX 0010000
-#define BOTHER 0010000
-#define B57600 0010001
-#define B115200 0010002
-#define B230400 0010003
-#define B460800 0010004
-#define B500000 0010005
-#define B576000 0010006
-#define B921600 0010007
-#define B1000000 0010010
-#define B1152000 0010011
-#define B1500000 0010012
-#define B2000000 0010013
-#define B2500000 0010014
-#define B3000000 0010015
-#define B3500000 0010016
-#define B4000000 0010017
-#define CIBAUD 002003600000
-#define CMSPAR 010000000000
-#define CRTSCTS 020000000000
-#define IBSHIFT 16
-#define ISIG 0000001
-#define ICANON 0000002
-#define XCASE 0000004
-#define ECHO 0000010
-#define ECHOE 0000020
-#define ECHOK 0000040
-#define ECHONL 0000100
-#define NOFLSH 0000200
-#define TOSTOP 0000400
-#define ECHOCTL 0001000
-#define ECHOPRT 0002000
-#define ECHOKE 0004000
-#define FLUSHO 0010000
-#define PENDIN 0040000
-#define IEXTEN 0100000
-#define EXTPROC 0200000
-#define TCOOFF 0
-#define TCOON 1
-#define TCIOFF 2
-#define TCION 3
-#define TCIFLUSH 0
-#define TCOFLUSH 1
-#define TCIOFLUSH 2
+#define IUCLC 0x0200
+#define IXON 0x0400
+#define IXOFF 0x1000
+#define IMAXBEL 0x2000
+#define IUTF8 0x4000
+#define OLCUC 0x00002
+#define ONLCR 0x00004
+#define NLDLY 0x00100
+#define NL0 0x00000
+#define NL1 0x00100
+#define CRDLY 0x00600
+#define CR0 0x00000
+#define CR1 0x00200
+#define CR2 0x00400
+#define CR3 0x00600
+#define TABDLY 0x01800
+#define TAB0 0x00000
+#define TAB1 0x00800
+#define TAB2 0x01000
+#define TAB3 0x01800
+#define XTABS 0x01800
+#define BSDLY 0x02000
+#define BS0 0x00000
+#define BS1 0x02000
+#define VTDLY 0x04000
+#define VT0 0x00000
+#define VT1 0x04000
+#define FFDLY 0x08000
+#define FF0 0x00000
+#define FF1 0x08000
+#define CBAUD 0x0000100f
+#define CSIZE 0x00000030
+#define CS5 0x00000000
+#define CS6 0x00000010
+#define CS7 0x00000020
+#define CS8 0x00000030
+#define CSTOPB 0x00000040
+#define CREAD 0x00000080
+#define PARENB 0x00000100
+#define PARODD 0x00000200
+#define HUPCL 0x00000400
+#define CLOCAL 0x00000800
+#define CBAUDEX 0x00001000
+#define BOTHER 0x00001000
+#define B57600 0x00001001
+#define B115200 0x00001002
+#define B230400 0x00001003
+#define B460800 0x00001004
+#define B500000 0x00001005
+#define B576000 0x00001006
+#define B921600 0x00001007
+#define B1000000 0x00001008
+#define B1152000 0x00001009
+#define B1500000 0x0000100a
+#define B2000000 0x0000100b
+#define B2500000 0x0000100c
+#define B3000000 0x0000100d
+#define B3500000 0x0000100e
+#define B4000000 0x0000100f
+#define CIBAUD 0x100f0000
+#define ISIG 0x00001
+#define ICANON 0x00002
+#define XCASE 0x00004
+#define ECHO 0x00008
+#define ECHOE 0x00010
+#define ECHOK 0x00020
+#define ECHONL 0x00040
+#define NOFLSH 0x00080
+#define TOSTOP 0x00100
+#define ECHOCTL 0x00200
+#define ECHOPRT 0x00400
+#define ECHOKE 0x00800
+#define FLUSHO 0x01000
+#define PENDIN 0x04000
+#define IEXTEN 0x08000
+#define EXTPROC 0x10000
 #define TCSANOW 0
 #define TCSADRAIN 1
 #define TCSAFLUSH 2
diff --git a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/asm-generic/unistd.h b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/asm-generic/unistd.h
index 4b9f174..d23958b 100644
--- a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/asm-generic/unistd.h
+++ b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/asm-generic/unistd.h
@@ -360,7 +360,7 @@
 #endif
 #define __NR_rseq 293
 #define __NR_kexec_file_load 294
-#if __BITS_PER_LONG == 32
+#if defined(__SYSCALL_COMPAT) || __BITS_PER_LONG == 32
 #define __NR_clock_gettime64 403
 #define __NR_clock_settime64 404
 #define __NR_clock_adjtime64 405
diff --git a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/asm-riscv/asm/auxvec.h b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/asm-riscv/asm/auxvec.h
new file mode 100644
index 0000000..c70be17
--- /dev/null
+++ b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/asm-riscv/asm/auxvec.h
@@ -0,0 +1,31 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPI_ASM_RISCV_AUXVEC_H
+#define _UAPI_ASM_RISCV_AUXVEC_H
+#define AT_SYSINFO_EHDR 33
+#define AT_L1I_CACHESIZE 40
+#define AT_L1I_CACHEGEOMETRY 41
+#define AT_L1D_CACHESIZE 42
+#define AT_L1D_CACHEGEOMETRY 43
+#define AT_L2_CACHESIZE 44
+#define AT_L2_CACHEGEOMETRY 45
+#define AT_L3_CACHESIZE 46
+#define AT_L3_CACHEGEOMETRY 47
+#define AT_VECTOR_SIZE_ARCH 9
+#endif
diff --git a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/asm-riscv/asm/bitsperlong.h b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/asm-riscv/asm/bitsperlong.h
new file mode 100644
index 0000000..098b610
--- /dev/null
+++ b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/asm-riscv/asm/bitsperlong.h
@@ -0,0 +1,23 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPI_ASM_RISCV_BITSPERLONG_H
+#define _UAPI_ASM_RISCV_BITSPERLONG_H
+#define __BITS_PER_LONG (__SIZEOF_POINTER__ * 8)
+#include <asm-generic/bitsperlong.h>
+#endif
diff --git a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/asm-riscv/asm/bpf_perf_event.h b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/asm-riscv/asm/bpf_perf_event.h
new file mode 100644
index 0000000..47c09fd
--- /dev/null
+++ b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/asm-riscv/asm/bpf_perf_event.h
@@ -0,0 +1,23 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPI__ASM_BPF_PERF_EVENT_H__
+#define _UAPI__ASM_BPF_PERF_EVENT_H__
+#include <asm/ptrace.h>
+typedef struct user_regs_struct bpf_user_pt_regs_t;
+#endif
diff --git a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/asm-riscv/asm/byteorder.h b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/asm-riscv/asm/byteorder.h
new file mode 100644
index 0000000..42afc14
--- /dev/null
+++ b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/asm-riscv/asm/byteorder.h
@@ -0,0 +1,22 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPI_ASM_RISCV_BYTEORDER_H
+#define _UAPI_ASM_RISCV_BYTEORDER_H
+#include <linux/byteorder/little_endian.h>
+#endif
diff --git a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/asm-riscv/asm/elf.h b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/asm-riscv/asm/elf.h
new file mode 100644
index 0000000..07593d9
--- /dev/null
+++ b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/asm-riscv/asm/elf.h
@@ -0,0 +1,89 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPI_ASM_RISCV_ELF_H
+#define _UAPI_ASM_RISCV_ELF_H
+#include <asm/ptrace.h>
+typedef unsigned long elf_greg_t;
+typedef struct user_regs_struct elf_gregset_t;
+#define ELF_NGREG (sizeof(elf_gregset_t) / sizeof(elf_greg_t))
+typedef __u64 elf_fpreg_t;
+typedef union __riscv_fp_state elf_fpregset_t;
+#define ELF_NFPREG (sizeof(struct __riscv_d_ext_state) / sizeof(elf_fpreg_t))
+#if __riscv_xlen == 64
+#define ELF_RISCV_R_SYM(r_info) ELF64_R_SYM(r_info)
+#define ELF_RISCV_R_TYPE(r_info) ELF64_R_TYPE(r_info)
+#else
+#define ELF_RISCV_R_SYM(r_info) ELF32_R_SYM(r_info)
+#define ELF_RISCV_R_TYPE(r_info) ELF32_R_TYPE(r_info)
+#endif
+#define R_RISCV_NONE 0
+#define R_RISCV_32 1
+#define R_RISCV_64 2
+#define R_RISCV_RELATIVE 3
+#define R_RISCV_COPY 4
+#define R_RISCV_JUMP_SLOT 5
+#define R_RISCV_TLS_DTPMOD32 6
+#define R_RISCV_TLS_DTPMOD64 7
+#define R_RISCV_TLS_DTPREL32 8
+#define R_RISCV_TLS_DTPREL64 9
+#define R_RISCV_TLS_TPREL32 10
+#define R_RISCV_TLS_TPREL64 11
+#define R_RISCV_BRANCH 16
+#define R_RISCV_JAL 17
+#define R_RISCV_CALL 18
+#define R_RISCV_CALL_PLT 19
+#define R_RISCV_GOT_HI20 20
+#define R_RISCV_TLS_GOT_HI20 21
+#define R_RISCV_TLS_GD_HI20 22
+#define R_RISCV_PCREL_HI20 23
+#define R_RISCV_PCREL_LO12_I 24
+#define R_RISCV_PCREL_LO12_S 25
+#define R_RISCV_HI20 26
+#define R_RISCV_LO12_I 27
+#define R_RISCV_LO12_S 28
+#define R_RISCV_TPREL_HI20 29
+#define R_RISCV_TPREL_LO12_I 30
+#define R_RISCV_TPREL_LO12_S 31
+#define R_RISCV_TPREL_ADD 32
+#define R_RISCV_ADD8 33
+#define R_RISCV_ADD16 34
+#define R_RISCV_ADD32 35
+#define R_RISCV_ADD64 36
+#define R_RISCV_SUB8 37
+#define R_RISCV_SUB16 38
+#define R_RISCV_SUB32 39
+#define R_RISCV_SUB64 40
+#define R_RISCV_GNU_VTINHERIT 41
+#define R_RISCV_GNU_VTENTRY 42
+#define R_RISCV_ALIGN 43
+#define R_RISCV_RVC_BRANCH 44
+#define R_RISCV_RVC_JUMP 45
+#define R_RISCV_LUI 46
+#define R_RISCV_GPREL_I 47
+#define R_RISCV_GPREL_S 48
+#define R_RISCV_TPREL_I 49
+#define R_RISCV_TPREL_S 50
+#define R_RISCV_RELAX 51
+#define R_RISCV_SUB6 52
+#define R_RISCV_SET6 53
+#define R_RISCV_SET8 54
+#define R_RISCV_SET16 55
+#define R_RISCV_SET32 56
+#define R_RISCV_32_PCREL 57
+#endif
diff --git a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/asm-riscv/asm/errno.h b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/asm-riscv/asm/errno.h
new file mode 100644
index 0000000..392cd94
--- /dev/null
+++ b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/asm-riscv/asm/errno.h
@@ -0,0 +1,19 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#include <asm-generic/errno.h>
diff --git a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/asm-riscv/asm/fcntl.h b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/asm-riscv/asm/fcntl.h
new file mode 100644
index 0000000..518d3a7
--- /dev/null
+++ b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/asm-riscv/asm/fcntl.h
@@ -0,0 +1,19 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#include <asm-generic/fcntl.h>
diff --git a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/asm-riscv/asm/hwcap.h b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/asm-riscv/asm/hwcap.h
new file mode 100644
index 0000000..d130cf7
--- /dev/null
+++ b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/asm-riscv/asm/hwcap.h
@@ -0,0 +1,27 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPI_ASM_RISCV_HWCAP_H
+#define _UAPI_ASM_RISCV_HWCAP_H
+#define COMPAT_HWCAP_ISA_I (1 << ('I' - 'A'))
+#define COMPAT_HWCAP_ISA_M (1 << ('M' - 'A'))
+#define COMPAT_HWCAP_ISA_A (1 << ('A' - 'A'))
+#define COMPAT_HWCAP_ISA_F (1 << ('F' - 'A'))
+#define COMPAT_HWCAP_ISA_D (1 << ('D' - 'A'))
+#define COMPAT_HWCAP_ISA_C (1 << ('C' - 'A'))
+#endif
diff --git a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/asm-riscv/asm/ioctl.h b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/asm-riscv/asm/ioctl.h
new file mode 100644
index 0000000..7b7bd37
--- /dev/null
+++ b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/asm-riscv/asm/ioctl.h
@@ -0,0 +1,19 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#include <asm-generic/ioctl.h>
diff --git a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/asm-riscv/asm/ioctls.h b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/asm-riscv/asm/ioctls.h
new file mode 100644
index 0000000..0c66935
--- /dev/null
+++ b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/asm-riscv/asm/ioctls.h
@@ -0,0 +1,19 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#include <asm-generic/ioctls.h>
diff --git a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/asm-riscv/asm/ipcbuf.h b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/asm-riscv/asm/ipcbuf.h
new file mode 100644
index 0000000..0021f14
--- /dev/null
+++ b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/asm-riscv/asm/ipcbuf.h
@@ -0,0 +1,19 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#include <asm-generic/ipcbuf.h>
diff --git a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/asm-riscv/asm/kvm.h b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/asm-riscv/asm/kvm.h
new file mode 100644
index 0000000..5dc165b
--- /dev/null
+++ b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/asm-riscv/asm/kvm.h
@@ -0,0 +1,102 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef __LINUX_KVM_RISCV_H
+#define __LINUX_KVM_RISCV_H
+#ifndef __ASSEMBLY__
+#include <linux/types.h>
+#include <asm/ptrace.h>
+#define __KVM_HAVE_READONLY_MEM
+#define KVM_COALESCED_MMIO_PAGE_OFFSET 1
+#define KVM_INTERRUPT_SET - 1U
+#define KVM_INTERRUPT_UNSET - 2U
+struct kvm_regs {
+};
+struct kvm_fpu {
+};
+struct kvm_debug_exit_arch {
+};
+struct kvm_guest_debug_arch {
+};
+struct kvm_sync_regs {
+};
+struct kvm_sregs {
+};
+struct kvm_riscv_config {
+  unsigned long isa;
+  unsigned long zicbom_block_size;
+};
+struct kvm_riscv_core {
+  struct user_regs_struct regs;
+  unsigned long mode;
+};
+#define KVM_RISCV_MODE_S 1
+#define KVM_RISCV_MODE_U 0
+struct kvm_riscv_csr {
+  unsigned long sstatus;
+  unsigned long sie;
+  unsigned long stvec;
+  unsigned long sscratch;
+  unsigned long sepc;
+  unsigned long scause;
+  unsigned long stval;
+  unsigned long sip;
+  unsigned long satp;
+  unsigned long scounteren;
+};
+struct kvm_riscv_timer {
+  __u64 frequency;
+  __u64 time;
+  __u64 compare;
+  __u64 state;
+};
+enum KVM_RISCV_ISA_EXT_ID {
+  KVM_RISCV_ISA_EXT_A = 0,
+  KVM_RISCV_ISA_EXT_C,
+  KVM_RISCV_ISA_EXT_D,
+  KVM_RISCV_ISA_EXT_F,
+  KVM_RISCV_ISA_EXT_H,
+  KVM_RISCV_ISA_EXT_I,
+  KVM_RISCV_ISA_EXT_M,
+  KVM_RISCV_ISA_EXT_SVPBMT,
+  KVM_RISCV_ISA_EXT_SSTC,
+  KVM_RISCV_ISA_EXT_SVINVAL,
+  KVM_RISCV_ISA_EXT_ZIHINTPAUSE,
+  KVM_RISCV_ISA_EXT_ZICBOM,
+  KVM_RISCV_ISA_EXT_MAX,
+};
+#define KVM_RISCV_TIMER_STATE_OFF 0
+#define KVM_RISCV_TIMER_STATE_ON 1
+#define KVM_REG_SIZE(id) (1U << (((id) & KVM_REG_SIZE_MASK) >> KVM_REG_SIZE_SHIFT))
+#define KVM_REG_RISCV_TYPE_MASK 0x00000000FF000000
+#define KVM_REG_RISCV_TYPE_SHIFT 24
+#define KVM_REG_RISCV_CONFIG (0x01 << KVM_REG_RISCV_TYPE_SHIFT)
+#define KVM_REG_RISCV_CONFIG_REG(name) (offsetof(struct kvm_riscv_config, name) / sizeof(unsigned long))
+#define KVM_REG_RISCV_CORE (0x02 << KVM_REG_RISCV_TYPE_SHIFT)
+#define KVM_REG_RISCV_CORE_REG(name) (offsetof(struct kvm_riscv_core, name) / sizeof(unsigned long))
+#define KVM_REG_RISCV_CSR (0x03 << KVM_REG_RISCV_TYPE_SHIFT)
+#define KVM_REG_RISCV_CSR_REG(name) (offsetof(struct kvm_riscv_csr, name) / sizeof(unsigned long))
+#define KVM_REG_RISCV_TIMER (0x04 << KVM_REG_RISCV_TYPE_SHIFT)
+#define KVM_REG_RISCV_TIMER_REG(name) (offsetof(struct kvm_riscv_timer, name) / sizeof(__u64))
+#define KVM_REG_RISCV_FP_F (0x05 << KVM_REG_RISCV_TYPE_SHIFT)
+#define KVM_REG_RISCV_FP_F_REG(name) (offsetof(struct __riscv_f_ext_state, name) / sizeof(__u32))
+#define KVM_REG_RISCV_FP_D (0x06 << KVM_REG_RISCV_TYPE_SHIFT)
+#define KVM_REG_RISCV_FP_D_REG(name) (offsetof(struct __riscv_d_ext_state, name) / sizeof(__u64))
+#define KVM_REG_RISCV_ISA_EXT (0x07 << KVM_REG_RISCV_TYPE_SHIFT)
+#endif
+#endif
diff --git a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/asm-riscv/asm/mman.h b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/asm-riscv/asm/mman.h
new file mode 100644
index 0000000..6c23fb6
--- /dev/null
+++ b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/asm-riscv/asm/mman.h
@@ -0,0 +1,19 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#include <asm-generic/mman.h>
diff --git a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/asm-riscv/asm/msgbuf.h b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/asm-riscv/asm/msgbuf.h
new file mode 100644
index 0000000..7809e3c
--- /dev/null
+++ b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/asm-riscv/asm/msgbuf.h
@@ -0,0 +1,19 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#include <asm-generic/msgbuf.h>
diff --git a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/asm-riscv/asm/param.h b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/asm-riscv/asm/param.h
new file mode 100644
index 0000000..5ccf935
--- /dev/null
+++ b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/asm-riscv/asm/param.h
@@ -0,0 +1,19 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#include <asm-generic/param.h>
diff --git a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/asm-riscv/asm/perf_regs.h b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/asm-riscv/asm/perf_regs.h
new file mode 100644
index 0000000..ceb0bbe
--- /dev/null
+++ b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/asm-riscv/asm/perf_regs.h
@@ -0,0 +1,56 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _ASM_RISCV_PERF_REGS_H
+#define _ASM_RISCV_PERF_REGS_H
+enum perf_event_riscv_regs {
+  PERF_REG_RISCV_PC,
+  PERF_REG_RISCV_RA,
+  PERF_REG_RISCV_SP,
+  PERF_REG_RISCV_GP,
+  PERF_REG_RISCV_TP,
+  PERF_REG_RISCV_T0,
+  PERF_REG_RISCV_T1,
+  PERF_REG_RISCV_T2,
+  PERF_REG_RISCV_S0,
+  PERF_REG_RISCV_S1,
+  PERF_REG_RISCV_A0,
+  PERF_REG_RISCV_A1,
+  PERF_REG_RISCV_A2,
+  PERF_REG_RISCV_A3,
+  PERF_REG_RISCV_A4,
+  PERF_REG_RISCV_A5,
+  PERF_REG_RISCV_A6,
+  PERF_REG_RISCV_A7,
+  PERF_REG_RISCV_S2,
+  PERF_REG_RISCV_S3,
+  PERF_REG_RISCV_S4,
+  PERF_REG_RISCV_S5,
+  PERF_REG_RISCV_S6,
+  PERF_REG_RISCV_S7,
+  PERF_REG_RISCV_S8,
+  PERF_REG_RISCV_S9,
+  PERF_REG_RISCV_S10,
+  PERF_REG_RISCV_S11,
+  PERF_REG_RISCV_T3,
+  PERF_REG_RISCV_T4,
+  PERF_REG_RISCV_T5,
+  PERF_REG_RISCV_T6,
+  PERF_REG_RISCV_MAX,
+};
+#endif
diff --git a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/asm-riscv/asm/poll.h b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/asm-riscv/asm/poll.h
new file mode 100644
index 0000000..d7e8adc
--- /dev/null
+++ b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/asm-riscv/asm/poll.h
@@ -0,0 +1,19 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#include <asm-generic/poll.h>
diff --git a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/asm-riscv/asm/posix_types.h b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/asm-riscv/asm/posix_types.h
new file mode 100644
index 0000000..1b89253
--- /dev/null
+++ b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/asm-riscv/asm/posix_types.h
@@ -0,0 +1,19 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#include <asm-generic/posix_types.h>
diff --git a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/asm-riscv/asm/ptrace.h b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/asm-riscv/asm/ptrace.h
new file mode 100644
index 0000000..94e4ac9
--- /dev/null
+++ b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/asm-riscv/asm/ptrace.h
@@ -0,0 +1,76 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPI_ASM_RISCV_PTRACE_H
+#define _UAPI_ASM_RISCV_PTRACE_H
+#ifndef __ASSEMBLY__
+#include <linux/types.h>
+struct user_regs_struct {
+  unsigned long pc;
+  unsigned long ra;
+  unsigned long sp;
+  unsigned long gp;
+  unsigned long tp;
+  unsigned long t0;
+  unsigned long t1;
+  unsigned long t2;
+  unsigned long s0;
+  unsigned long s1;
+  unsigned long a0;
+  unsigned long a1;
+  unsigned long a2;
+  unsigned long a3;
+  unsigned long a4;
+  unsigned long a5;
+  unsigned long a6;
+  unsigned long a7;
+  unsigned long s2;
+  unsigned long s3;
+  unsigned long s4;
+  unsigned long s5;
+  unsigned long s6;
+  unsigned long s7;
+  unsigned long s8;
+  unsigned long s9;
+  unsigned long s10;
+  unsigned long s11;
+  unsigned long t3;
+  unsigned long t4;
+  unsigned long t5;
+  unsigned long t6;
+};
+struct __riscv_f_ext_state {
+  __u32 f[32];
+  __u32 fcsr;
+};
+struct __riscv_d_ext_state {
+  __u64 f[32];
+  __u32 fcsr;
+};
+struct __riscv_q_ext_state {
+  __u64 f[64] __attribute__((aligned(16)));
+  __u32 fcsr;
+  __u32 reserved[3];
+};
+union __riscv_fp_state {
+  struct __riscv_f_ext_state f;
+  struct __riscv_d_ext_state d;
+  struct __riscv_q_ext_state q;
+};
+#endif
+#endif
diff --git a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/asm-riscv/asm/resource.h b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/asm-riscv/asm/resource.h
new file mode 100644
index 0000000..371adb5
--- /dev/null
+++ b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/asm-riscv/asm/resource.h
@@ -0,0 +1,19 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#include <asm-generic/resource.h>
diff --git a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/asm-riscv/asm/sembuf.h b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/asm-riscv/asm/sembuf.h
new file mode 100644
index 0000000..6ce6549
--- /dev/null
+++ b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/asm-riscv/asm/sembuf.h
@@ -0,0 +1,19 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#include <asm-generic/sembuf.h>
diff --git a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/asm-riscv/asm/setup.h b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/asm-riscv/asm/setup.h
new file mode 100644
index 0000000..940c4db
--- /dev/null
+++ b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/asm-riscv/asm/setup.h
@@ -0,0 +1,19 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#include <asm-generic/setup.h>
diff --git a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/asm-riscv/asm/shmbuf.h b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/asm-riscv/asm/shmbuf.h
new file mode 100644
index 0000000..fe8b1be
--- /dev/null
+++ b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/asm-riscv/asm/shmbuf.h
@@ -0,0 +1,19 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#include <asm-generic/shmbuf.h>
diff --git a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/asm-riscv/asm/sigcontext.h b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/asm-riscv/asm/sigcontext.h
new file mode 100644
index 0000000..0553b94
--- /dev/null
+++ b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/asm-riscv/asm/sigcontext.h
@@ -0,0 +1,26 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPI_ASM_RISCV_SIGCONTEXT_H
+#define _UAPI_ASM_RISCV_SIGCONTEXT_H
+#include <asm/ptrace.h>
+struct sigcontext {
+  struct user_regs_struct sc_regs;
+  union __riscv_fp_state sc_fpregs;
+};
+#endif
diff --git a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/asm-riscv/asm/siginfo.h b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/asm-riscv/asm/siginfo.h
new file mode 100644
index 0000000..a31ebb2
--- /dev/null
+++ b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/asm-riscv/asm/siginfo.h
@@ -0,0 +1,19 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#include <asm-generic/siginfo.h>
diff --git a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/asm-riscv/asm/signal.h b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/asm-riscv/asm/signal.h
new file mode 100644
index 0000000..64373fe
--- /dev/null
+++ b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/asm-riscv/asm/signal.h
@@ -0,0 +1,19 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#include <asm-generic/signal.h>
diff --git a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/asm-riscv/asm/socket.h b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/asm-riscv/asm/socket.h
new file mode 100644
index 0000000..50a9874
--- /dev/null
+++ b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/asm-riscv/asm/socket.h
@@ -0,0 +1,19 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#include <asm-generic/socket.h>
diff --git a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/asm-riscv/asm/sockios.h b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/asm-riscv/asm/sockios.h
new file mode 100644
index 0000000..710db92
--- /dev/null
+++ b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/asm-riscv/asm/sockios.h
@@ -0,0 +1,19 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#include <asm-generic/sockios.h>
diff --git a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/asm-riscv/asm/stat.h b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/asm-riscv/asm/stat.h
new file mode 100644
index 0000000..af7ebfc
--- /dev/null
+++ b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/asm-riscv/asm/stat.h
@@ -0,0 +1,19 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#include <asm-generic/stat.h>
diff --git a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/asm-riscv/asm/statfs.h b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/asm-riscv/asm/statfs.h
new file mode 100644
index 0000000..93de275
--- /dev/null
+++ b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/asm-riscv/asm/statfs.h
@@ -0,0 +1,19 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#include <asm-generic/statfs.h>
diff --git a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/asm-riscv/asm/swab.h b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/asm-riscv/asm/swab.h
new file mode 100644
index 0000000..0049f53
--- /dev/null
+++ b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/asm-riscv/asm/swab.h
@@ -0,0 +1,19 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#include <asm-generic/swab.h>
diff --git a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/asm-riscv/asm/termbits.h b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/asm-riscv/asm/termbits.h
new file mode 100644
index 0000000..42af6fe
--- /dev/null
+++ b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/asm-riscv/asm/termbits.h
@@ -0,0 +1,19 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#include <asm-generic/termbits.h>
diff --git a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/asm-riscv/asm/termios.h b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/asm-riscv/asm/termios.h
new file mode 100644
index 0000000..feca4c6
--- /dev/null
+++ b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/asm-riscv/asm/termios.h
@@ -0,0 +1,19 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#include <asm-generic/termios.h>
diff --git a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/asm-riscv/asm/types.h b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/asm-riscv/asm/types.h
new file mode 100644
index 0000000..8250f43
--- /dev/null
+++ b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/asm-riscv/asm/types.h
@@ -0,0 +1,19 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#include <asm-generic/types.h>
diff --git a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/asm-riscv/asm/ucontext.h b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/asm-riscv/asm/ucontext.h
new file mode 100644
index 0000000..8b72cc1
--- /dev/null
+++ b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/asm-riscv/asm/ucontext.h
@@ -0,0 +1,30 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPI_ASM_RISCV_UCONTEXT_H
+#define _UAPI_ASM_RISCV_UCONTEXT_H
+#include <linux/types.h>
+struct ucontext {
+  unsigned long uc_flags;
+  struct ucontext * uc_link;
+  stack_t uc_stack;
+  sigset_t uc_sigmask;
+  __u8 __linux_unused[1024 / 8 - sizeof(sigset_t)];
+  struct sigcontext uc_mcontext;
+};
+#endif
diff --git a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/asm-riscv/asm/unistd.h b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/asm-riscv/asm/unistd.h
new file mode 100644
index 0000000..665b820
--- /dev/null
+++ b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/asm-riscv/asm/unistd.h
@@ -0,0 +1,29 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#if defined(__LP64__) && !defined(__SYSCALL_COMPAT)
+#define __ARCH_WANT_NEW_STAT
+#define __ARCH_WANT_SET_GET_RLIMIT
+#endif
+#define __ARCH_WANT_SYS_CLONE3
+#define __ARCH_WANT_MEMFD_SECRET
+#include <asm-generic/unistd.h>
+#ifndef __NR_riscv_flush_icache
+#define __NR_riscv_flush_icache (__NR_arch_specific_syscall + 15)
+#endif
+__SYSCALL(__NR_riscv_flush_icache, sys_riscv_flush_icache)
diff --git a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/asm-x86/asm/amd_hsmp.h b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/asm-x86/asm/amd_hsmp.h
new file mode 100644
index 0000000..c026aac
--- /dev/null
+++ b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/asm-x86/asm/amd_hsmp.h
@@ -0,0 +1,189 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPI_ASM_X86_AMD_HSMP_H_
+#define _UAPI_ASM_X86_AMD_HSMP_H_
+#include <linux/types.h>
+#pragma pack(4)
+#define HSMP_MAX_MSG_LEN 8
+enum hsmp_message_ids {
+  HSMP_TEST = 1,
+  HSMP_GET_SMU_VER,
+  HSMP_GET_PROTO_VER,
+  HSMP_GET_SOCKET_POWER,
+  HSMP_SET_SOCKET_POWER_LIMIT,
+  HSMP_GET_SOCKET_POWER_LIMIT,
+  HSMP_GET_SOCKET_POWER_LIMIT_MAX,
+  HSMP_SET_BOOST_LIMIT,
+  HSMP_SET_BOOST_LIMIT_SOCKET,
+  HSMP_GET_BOOST_LIMIT,
+  HSMP_GET_PROC_HOT,
+  HSMP_SET_XGMI_LINK_WIDTH,
+  HSMP_SET_DF_PSTATE,
+  HSMP_SET_AUTO_DF_PSTATE,
+  HSMP_GET_FCLK_MCLK,
+  HSMP_GET_CCLK_THROTTLE_LIMIT,
+  HSMP_GET_C0_PERCENT,
+  HSMP_SET_NBIO_DPM_LEVEL,
+  HSMP_GET_NBIO_DPM_LEVEL,
+  HSMP_GET_DDR_BANDWIDTH,
+  HSMP_GET_TEMP_MONITOR,
+  HSMP_GET_DIMM_TEMP_RANGE,
+  HSMP_GET_DIMM_POWER,
+  HSMP_GET_DIMM_THERMAL,
+  HSMP_GET_SOCKET_FREQ_LIMIT,
+  HSMP_GET_CCLK_CORE_LIMIT,
+  HSMP_GET_RAILS_SVI,
+  HSMP_GET_SOCKET_FMAX_FMIN,
+  HSMP_GET_IOLINK_BANDWITH,
+  HSMP_GET_XGMI_BANDWITH,
+  HSMP_SET_GMI3_WIDTH,
+  HSMP_SET_PCI_RATE,
+  HSMP_SET_POWER_MODE,
+  HSMP_SET_PSTATE_MAX_MIN,
+  HSMP_MSG_ID_MAX,
+};
+struct hsmp_message {
+  __u32 msg_id;
+  __u16 num_args;
+  __u16 response_sz;
+  __u32 args[HSMP_MAX_MSG_LEN];
+  __u16 sock_ind;
+};
+enum hsmp_msg_type {
+  HSMP_RSVD = - 1,
+  HSMP_SET = 0,
+  HSMP_GET = 1,
+};
+struct hsmp_msg_desc {
+  int num_args;
+  int response_sz;
+  enum hsmp_msg_type type;
+};
+static const struct hsmp_msg_desc hsmp_msg_desc_table[] = {
+ {
+    0, 0, HSMP_RSVD
+  }
+ , {
+    1, 1, HSMP_GET
+  }
+ , {
+    0, 1, HSMP_GET
+  }
+ , {
+    0, 1, HSMP_GET
+  }
+ , {
+    0, 1, HSMP_GET
+  }
+ , {
+    1, 0, HSMP_SET
+  }
+ , {
+    0, 1, HSMP_GET
+  }
+ , {
+    0, 1, HSMP_GET
+  }
+ , {
+    1, 0, HSMP_SET
+  }
+ , {
+    1, 0, HSMP_SET
+  }
+ , {
+    1, 1, HSMP_GET
+  }
+ , {
+    0, 1, HSMP_GET
+  }
+ , {
+    1, 0, HSMP_SET
+  }
+ , {
+    1, 0, HSMP_SET
+  }
+ , {
+    0, 0, HSMP_SET
+  }
+ , {
+    0, 2, HSMP_GET
+  }
+ , {
+    0, 1, HSMP_GET
+  }
+ , {
+    0, 1, HSMP_GET
+  }
+ , {
+    1, 0, HSMP_SET
+  }
+ , {
+    1, 1, HSMP_GET
+  }
+ , {
+    0, 1, HSMP_GET
+  }
+ , {
+    0, 1, HSMP_GET
+  }
+ , {
+    1, 1, HSMP_GET
+  }
+ , {
+    1, 1, HSMP_GET
+  }
+ , {
+    1, 1, HSMP_GET
+  }
+ , {
+    0, 1, HSMP_GET
+  }
+ , {
+    1, 1, HSMP_GET
+  }
+ , {
+    0, 1, HSMP_GET
+  }
+ , {
+    0, 1, HSMP_GET
+  }
+ , {
+    1, 1, HSMP_GET
+  }
+ , {
+    1, 1, HSMP_GET
+  }
+ , {
+    1, 0, HSMP_SET
+  }
+ , {
+    1, 1, HSMP_SET
+  }
+ , {
+    1, 0, HSMP_SET
+  }
+ , {
+    1, 0, HSMP_SET
+  }
+ ,
+};
+#pragma pack()
+#define HSMP_BASE_IOCTL_NR 0xF8
+#define HSMP_IOCTL_CMD _IOWR(HSMP_BASE_IOCTL_NR, 0, struct hsmp_message)
+#endif
diff --git a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/asm-x86/asm/bootparam.h b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/asm-x86/asm/bootparam.h
index 7401135..ab9d7f3 100644
--- a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/asm-x86/asm/bootparam.h
+++ b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/asm-x86/asm/bootparam.h
@@ -25,8 +25,12 @@
 #define SETUP_EFI 4
 #define SETUP_APPLE_PROPERTIES 5
 #define SETUP_JAILHOUSE 6
+#define SETUP_CC_BLOB 7
+#define SETUP_IMA 8
+#define SETUP_RNG_SEED 9
+#define SETUP_ENUM_MAX SETUP_RNG_SEED
 #define SETUP_INDIRECT (1 << 31)
-#define SETUP_TYPE_MAX (SETUP_INDIRECT | SETUP_JAILHOUSE)
+#define SETUP_TYPE_MAX (SETUP_ENUM_MAX | SETUP_INDIRECT)
 #define RAMDISK_IMAGE_START_MASK 0x07FF
 #define RAMDISK_PROMPT_FLAG 0x8000
 #define RAMDISK_LOAD_FLAG 0x4000
@@ -53,7 +57,7 @@
   __u64 next;
   __u32 type;
   __u32 len;
-  __u8 data[0];
+  __u8 data[];
 };
 struct setup_indirect {
   __u32 type;
@@ -147,6 +151,10 @@
     __u32 flags;
   } __attribute__((packed)) v2;
 } __attribute__((packed));
+struct ima_setup_data {
+  __u64 addr;
+  __u64 size;
+} __attribute__((packed));
 struct boot_params {
   struct screen_info screen_info;
   struct apm_bios_info apm_bios_info;
@@ -162,7 +170,8 @@
   __u32 ext_ramdisk_image;
   __u32 ext_ramdisk_size;
   __u32 ext_cmd_line_ptr;
-  __u8 _pad4[116];
+  __u8 _pad4[112];
+  __u32 cc_blob_address;
   struct edid_info edid_info;
   struct efi_info efi_info;
   __u32 alt_mem_k;
diff --git a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/asm-x86/asm/kvm.h b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/asm-x86/asm/kvm.h
index caf8fc0..f07b00e 100644
--- a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/asm-x86/asm/kvm.h
+++ b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/asm-x86/asm/kvm.h
@@ -178,11 +178,11 @@
 struct kvm_msrs {
   __u32 nmsrs;
   __u32 pad;
-  struct kvm_msr_entry entries[0];
+  struct kvm_msr_entry entries[];
 };
 struct kvm_msr_list {
   __u32 nmsrs;
-  __u32 indices[0];
+  __u32 indices[];
 };
 #define KVM_MSR_FILTER_MAX_BITMAP_SIZE 0x600
 struct kvm_msr_filter_range {
@@ -211,7 +211,7 @@
 struct kvm_cpuid {
   __u32 nent;
   __u32 padding;
-  struct kvm_cpuid_entry entries[0];
+  struct kvm_cpuid_entry entries[];
 };
 struct kvm_cpuid_entry2 {
   __u32 function;
@@ -229,7 +229,7 @@
 struct kvm_cpuid2 {
   __u32 nent;
   __u32 padding;
-  struct kvm_cpuid_entry2 entries[0];
+  struct kvm_cpuid_entry2 entries[];
 };
 struct kvm_pit_channel_state {
   __u32 count;
@@ -265,6 +265,7 @@
   struct kvm_pit_channel_state channels[3];
 };
 #define KVM_PIT_FLAGS_HPET_LEGACY 0x00000001
+#define KVM_PIT_FLAGS_SPEAKER_DATA_ON 0x00000002
 struct kvm_pit_state2 {
   struct kvm_pit_channel_state channels[3];
   __u32 flags;
@@ -279,6 +280,7 @@
 #define KVM_VCPUEVENT_VALID_SHADOW 0x00000004
 #define KVM_VCPUEVENT_VALID_SMM 0x00000008
 #define KVM_VCPUEVENT_VALID_PAYLOAD 0x00000010
+#define KVM_VCPUEVENT_VALID_TRIPLE_FAULT 0x00000020
 #define KVM_X86_SHADOW_INT_MOV_SS 0x01
 #define KVM_X86_SHADOW_INT_STI 0x02
 struct kvm_vcpu_events {
@@ -309,7 +311,10 @@
     __u8 smm_inside_nmi;
     __u8 latched_init;
   } smi;
-  __u8 reserved[27];
+  struct {
+    __u8 pending;
+  } triple_fault;
+  __u8 reserved[26];
   __u8 exception_has_payload;
   __u64 exception_payload;
 };
@@ -322,7 +327,7 @@
 };
 struct kvm_xsave {
   __u32 region[1024];
-  __u32 extra[0];
+  __u32 extra[];
 };
 #define KVM_MAX_XCRS 16
 struct kvm_xcr {
@@ -350,6 +355,8 @@
 #define KVM_X86_QUIRK_LAPIC_MMIO_HOLE (1 << 2)
 #define KVM_X86_QUIRK_OUT_7E_INC_RIP (1 << 3)
 #define KVM_X86_QUIRK_MISC_ENABLE_NO_MWAIT (1 << 4)
+#define KVM_X86_QUIRK_FIX_HYPERCALL_INSN (1 << 5)
+#define KVM_X86_QUIRK_MWAIT_NEVER_UD_FAULTS (1 << 6)
 #define KVM_STATE_NESTED_FORMAT_VMX 0
 #define KVM_STATE_NESTED_FORMAT_SVM 1
 #define KVM_STATE_NESTED_GUEST_MODE 0x00000001
@@ -403,7 +410,7 @@
   __u32 fixed_counter_bitmap;
   __u32 flags;
   __u32 pad[4];
-  __u64 events[0];
+  __u64 events[];
 };
 #define KVM_PMU_EVENT_ALLOW 0
 #define KVM_PMU_EVENT_DENY 1
diff --git a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/asm-x86/asm/processor-flags.h b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/asm-x86/asm/processor-flags.h
index 85f9d7e..0a95afd 100644
--- a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/asm-x86/asm/processor-flags.h
+++ b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/asm-x86/asm/processor-flags.h
@@ -127,6 +127,8 @@
 #define X86_CR4_SMAP _BITUL(X86_CR4_SMAP_BIT)
 #define X86_CR4_PKE_BIT 22
 #define X86_CR4_PKE _BITUL(X86_CR4_PKE_BIT)
+#define X86_CR4_CET_BIT 23
+#define X86_CR4_CET _BITUL(X86_CR4_CET_BIT)
 #define X86_CR8_TPR _AC(0x0000000f, UL)
 #define CX86_PCR0 0x20
 #define CX86_GCR 0xb8
diff --git a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/asm-x86/asm/sgx.h b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/asm-x86/asm/sgx.h
index 1874b78..fdc2700 100644
--- a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/asm-x86/asm/sgx.h
+++ b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/asm-x86/asm/sgx.h
@@ -29,6 +29,9 @@
 #define SGX_IOC_ENCLAVE_INIT _IOW(SGX_MAGIC, 0x02, struct sgx_enclave_init)
 #define SGX_IOC_ENCLAVE_PROVISION _IOW(SGX_MAGIC, 0x03, struct sgx_enclave_provision)
 #define SGX_IOC_VEPC_REMOVE_ALL _IO(SGX_MAGIC, 0x04)
+#define SGX_IOC_ENCLAVE_RESTRICT_PERMISSIONS _IOWR(SGX_MAGIC, 0x05, struct sgx_enclave_restrict_permissions)
+#define SGX_IOC_ENCLAVE_MODIFY_TYPES _IOWR(SGX_MAGIC, 0x06, struct sgx_enclave_modify_types)
+#define SGX_IOC_ENCLAVE_REMOVE_PAGES _IOWR(SGX_MAGIC, 0x07, struct sgx_enclave_remove_pages)
 struct sgx_enclave_create {
   __u64 src;
 };
@@ -46,6 +49,25 @@
 struct sgx_enclave_provision {
   __u64 fd;
 };
+struct sgx_enclave_restrict_permissions {
+  __u64 offset;
+  __u64 length;
+  __u64 permissions;
+  __u64 result;
+  __u64 count;
+};
+struct sgx_enclave_modify_types {
+  __u64 offset;
+  __u64 length;
+  __u64 page_type;
+  __u64 result;
+  __u64 count;
+};
+struct sgx_enclave_remove_pages {
+  __u64 offset;
+  __u64 length;
+  __u64 count;
+};
 struct sgx_enclave_run;
 typedef int(* sgx_enclave_user_handler_t) (long rdi, long rsi, long rdx, long rsp, long r8, long r9, struct sgx_enclave_run * run);
 struct sgx_enclave_run {
diff --git a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/asm-x86/asm/shmbuf.h b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/asm-x86/asm/shmbuf.h
index 03e195e..2a0dcb5 100644
--- a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/asm-x86/asm/shmbuf.h
+++ b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/asm-x86/asm/shmbuf.h
@@ -21,9 +21,11 @@
 #if !defined(__x86_64__) || !defined(__ILP32__)
 #include <asm-generic/shmbuf.h>
 #else
+#include <asm/ipcbuf.h>
+#include <asm/posix_types.h>
 struct shmid64_ds {
   struct ipc64_perm shm_perm;
-  size_t shm_segsz;
+  __kernel_size_t shm_segsz;
   __kernel_long_t shm_atime;
   __kernel_long_t shm_dtime;
   __kernel_long_t shm_ctime;
diff --git a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/asm-x86/asm/signal.h b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/asm-x86/asm/signal.h
index 8226da8..cbeeac4 100644
--- a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/asm-x86/asm/signal.h
+++ b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/asm-x86/asm/signal.h
@@ -90,7 +90,7 @@
 typedef struct sigaltstack {
   void __user * ss_sp;
   int ss_flags;
-  size_t ss_size;
+  __kernel_size_t ss_size;
 } stack_t;
 #endif
 #endif
diff --git a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/asm-x86/asm/svm.h b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/asm-x86/asm/svm.h
index d051481..8bda2d5 100644
--- a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/asm-x86/asm/svm.h
+++ b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/asm-x86/asm/svm.h
@@ -122,8 +122,16 @@
 #define SVM_VMGEXIT_AP_JUMP_TABLE 0x80000005
 #define SVM_VMGEXIT_SET_AP_JUMP_TABLE 0
 #define SVM_VMGEXIT_GET_AP_JUMP_TABLE 1
+#define SVM_VMGEXIT_PSC 0x80000010
+#define SVM_VMGEXIT_GUEST_REQUEST 0x80000011
+#define SVM_VMGEXIT_EXT_GUEST_REQUEST 0x80000012
+#define SVM_VMGEXIT_AP_CREATION 0x80000013
+#define SVM_VMGEXIT_AP_CREATE_ON_INIT 0
+#define SVM_VMGEXIT_AP_CREATE 1
+#define SVM_VMGEXIT_AP_DESTROY 2
+#define SVM_VMGEXIT_HV_FEATURES 0x8000fffd
 #define SVM_VMGEXIT_UNSUPPORTED_EVENT 0x8000ffff
 #define SVM_EXIT_SW 0xf0000000
 #define SVM_EXIT_ERR - 1
-#define SVM_EXIT_REASONS { SVM_EXIT_READ_CR0, "read_cr0" }, { SVM_EXIT_READ_CR2, "read_cr2" }, { SVM_EXIT_READ_CR3, "read_cr3" }, { SVM_EXIT_READ_CR4, "read_cr4" }, { SVM_EXIT_READ_CR8, "read_cr8" }, { SVM_EXIT_WRITE_CR0, "write_cr0" }, { SVM_EXIT_WRITE_CR2, "write_cr2" }, { SVM_EXIT_WRITE_CR3, "write_cr3" }, { SVM_EXIT_WRITE_CR4, "write_cr4" }, { SVM_EXIT_WRITE_CR8, "write_cr8" }, { SVM_EXIT_READ_DR0, "read_dr0" }, { SVM_EXIT_READ_DR1, "read_dr1" }, { SVM_EXIT_READ_DR2, "read_dr2" }, { SVM_EXIT_READ_DR3, "read_dr3" }, { SVM_EXIT_READ_DR4, "read_dr4" }, { SVM_EXIT_READ_DR5, "read_dr5" }, { SVM_EXIT_READ_DR6, "read_dr6" }, { SVM_EXIT_READ_DR7, "read_dr7" }, { SVM_EXIT_WRITE_DR0, "write_dr0" }, { SVM_EXIT_WRITE_DR1, "write_dr1" }, { SVM_EXIT_WRITE_DR2, "write_dr2" }, { SVM_EXIT_WRITE_DR3, "write_dr3" }, { SVM_EXIT_WRITE_DR4, "write_dr4" }, { SVM_EXIT_WRITE_DR5, "write_dr5" }, { SVM_EXIT_WRITE_DR6, "write_dr6" }, { SVM_EXIT_WRITE_DR7, "write_dr7" }, { SVM_EXIT_EXCP_BASE + DE_VECTOR, "DE excp" }, { SVM_EXIT_EXCP_BASE + DB_VECTOR, "DB excp" }, { SVM_EXIT_EXCP_BASE + BP_VECTOR, "BP excp" }, { SVM_EXIT_EXCP_BASE + OF_VECTOR, "OF excp" }, { SVM_EXIT_EXCP_BASE + BR_VECTOR, "BR excp" }, { SVM_EXIT_EXCP_BASE + UD_VECTOR, "UD excp" }, { SVM_EXIT_EXCP_BASE + NM_VECTOR, "NM excp" }, { SVM_EXIT_EXCP_BASE + DF_VECTOR, "DF excp" }, { SVM_EXIT_EXCP_BASE + TS_VECTOR, "TS excp" }, { SVM_EXIT_EXCP_BASE + NP_VECTOR, "NP excp" }, { SVM_EXIT_EXCP_BASE + SS_VECTOR, "SS excp" }, { SVM_EXIT_EXCP_BASE + GP_VECTOR, "GP excp" }, { SVM_EXIT_EXCP_BASE + PF_VECTOR, "PF excp" }, { SVM_EXIT_EXCP_BASE + MF_VECTOR, "MF excp" }, { SVM_EXIT_EXCP_BASE + AC_VECTOR, "AC excp" }, { SVM_EXIT_EXCP_BASE + MC_VECTOR, "MC excp" }, { SVM_EXIT_EXCP_BASE + XM_VECTOR, "XF excp" }, { SVM_EXIT_INTR, "interrupt" }, { SVM_EXIT_NMI, "nmi" }, { SVM_EXIT_SMI, "smi" }, { SVM_EXIT_INIT, "init" }, { SVM_EXIT_VINTR, "vintr" }, { SVM_EXIT_CR0_SEL_WRITE, "cr0_sel_write" }, { SVM_EXIT_IDTR_READ, "read_idtr" }, { SVM_EXIT_GDTR_READ, "read_gdtr" }, { SVM_EXIT_LDTR_READ, "read_ldtr" }, { SVM_EXIT_TR_READ, "read_rt" }, { SVM_EXIT_IDTR_WRITE, "write_idtr" }, { SVM_EXIT_GDTR_WRITE, "write_gdtr" }, { SVM_EXIT_LDTR_WRITE, "write_ldtr" }, { SVM_EXIT_TR_WRITE, "write_rt" }, { SVM_EXIT_RDTSC, "rdtsc" }, { SVM_EXIT_RDPMC, "rdpmc" }, { SVM_EXIT_PUSHF, "pushf" }, { SVM_EXIT_POPF, "popf" }, { SVM_EXIT_CPUID, "cpuid" }, { SVM_EXIT_RSM, "rsm" }, { SVM_EXIT_IRET, "iret" }, { SVM_EXIT_SWINT, "swint" }, { SVM_EXIT_INVD, "invd" }, { SVM_EXIT_PAUSE, "pause" }, { SVM_EXIT_HLT, "hlt" }, { SVM_EXIT_INVLPG, "invlpg" }, { SVM_EXIT_INVLPGA, "invlpga" }, { SVM_EXIT_IOIO, "io" }, { SVM_EXIT_MSR, "msr" }, { SVM_EXIT_TASK_SWITCH, "task_switch" }, { SVM_EXIT_FERR_FREEZE, "ferr_freeze" }, { SVM_EXIT_SHUTDOWN, "shutdown" }, { SVM_EXIT_VMRUN, "vmrun" }, { SVM_EXIT_VMMCALL, "hypercall" }, { SVM_EXIT_VMLOAD, "vmload" }, { SVM_EXIT_VMSAVE, "vmsave" }, { SVM_EXIT_STGI, "stgi" }, { SVM_EXIT_CLGI, "clgi" }, { SVM_EXIT_SKINIT, "skinit" }, { SVM_EXIT_RDTSCP, "rdtscp" }, { SVM_EXIT_ICEBP, "icebp" }, { SVM_EXIT_WBINVD, "wbinvd" }, { SVM_EXIT_MONITOR, "monitor" }, { SVM_EXIT_MWAIT, "mwait" }, { SVM_EXIT_XSETBV, "xsetbv" }, { SVM_EXIT_EFER_WRITE_TRAP, "write_efer_trap" }, { SVM_EXIT_CR0_WRITE_TRAP, "write_cr0_trap" }, { SVM_EXIT_CR4_WRITE_TRAP, "write_cr4_trap" }, { SVM_EXIT_CR8_WRITE_TRAP, "write_cr8_trap" }, { SVM_EXIT_INVPCID, "invpcid" }, { SVM_EXIT_NPF, "npf" }, { SVM_EXIT_AVIC_INCOMPLETE_IPI, "avic_incomplete_ipi" }, { SVM_EXIT_AVIC_UNACCELERATED_ACCESS, "avic_unaccelerated_access" }, { SVM_EXIT_VMGEXIT, "vmgexit" }, { SVM_VMGEXIT_MMIO_READ, "vmgexit_mmio_read" }, { SVM_VMGEXIT_MMIO_WRITE, "vmgexit_mmio_write" }, { SVM_VMGEXIT_NMI_COMPLETE, "vmgexit_nmi_complete" }, { SVM_VMGEXIT_AP_HLT_LOOP, "vmgexit_ap_hlt_loop" }, { SVM_VMGEXIT_AP_JUMP_TABLE, "vmgexit_ap_jump_table" }, { SVM_EXIT_ERR, "invalid_guest_state" }
+#define SVM_EXIT_REASONS { SVM_EXIT_READ_CR0, "read_cr0" }, { SVM_EXIT_READ_CR2, "read_cr2" }, { SVM_EXIT_READ_CR3, "read_cr3" }, { SVM_EXIT_READ_CR4, "read_cr4" }, { SVM_EXIT_READ_CR8, "read_cr8" }, { SVM_EXIT_WRITE_CR0, "write_cr0" }, { SVM_EXIT_WRITE_CR2, "write_cr2" }, { SVM_EXIT_WRITE_CR3, "write_cr3" }, { SVM_EXIT_WRITE_CR4, "write_cr4" }, { SVM_EXIT_WRITE_CR8, "write_cr8" }, { SVM_EXIT_READ_DR0, "read_dr0" }, { SVM_EXIT_READ_DR1, "read_dr1" }, { SVM_EXIT_READ_DR2, "read_dr2" }, { SVM_EXIT_READ_DR3, "read_dr3" }, { SVM_EXIT_READ_DR4, "read_dr4" }, { SVM_EXIT_READ_DR5, "read_dr5" }, { SVM_EXIT_READ_DR6, "read_dr6" }, { SVM_EXIT_READ_DR7, "read_dr7" }, { SVM_EXIT_WRITE_DR0, "write_dr0" }, { SVM_EXIT_WRITE_DR1, "write_dr1" }, { SVM_EXIT_WRITE_DR2, "write_dr2" }, { SVM_EXIT_WRITE_DR3, "write_dr3" }, { SVM_EXIT_WRITE_DR4, "write_dr4" }, { SVM_EXIT_WRITE_DR5, "write_dr5" }, { SVM_EXIT_WRITE_DR6, "write_dr6" }, { SVM_EXIT_WRITE_DR7, "write_dr7" }, { SVM_EXIT_EXCP_BASE + DE_VECTOR, "DE excp" }, { SVM_EXIT_EXCP_BASE + DB_VECTOR, "DB excp" }, { SVM_EXIT_EXCP_BASE + BP_VECTOR, "BP excp" }, { SVM_EXIT_EXCP_BASE + OF_VECTOR, "OF excp" }, { SVM_EXIT_EXCP_BASE + BR_VECTOR, "BR excp" }, { SVM_EXIT_EXCP_BASE + UD_VECTOR, "UD excp" }, { SVM_EXIT_EXCP_BASE + NM_VECTOR, "NM excp" }, { SVM_EXIT_EXCP_BASE + DF_VECTOR, "DF excp" }, { SVM_EXIT_EXCP_BASE + TS_VECTOR, "TS excp" }, { SVM_EXIT_EXCP_BASE + NP_VECTOR, "NP excp" }, { SVM_EXIT_EXCP_BASE + SS_VECTOR, "SS excp" }, { SVM_EXIT_EXCP_BASE + GP_VECTOR, "GP excp" }, { SVM_EXIT_EXCP_BASE + PF_VECTOR, "PF excp" }, { SVM_EXIT_EXCP_BASE + MF_VECTOR, "MF excp" }, { SVM_EXIT_EXCP_BASE + AC_VECTOR, "AC excp" }, { SVM_EXIT_EXCP_BASE + MC_VECTOR, "MC excp" }, { SVM_EXIT_EXCP_BASE + XM_VECTOR, "XF excp" }, { SVM_EXIT_INTR, "interrupt" }, { SVM_EXIT_NMI, "nmi" }, { SVM_EXIT_SMI, "smi" }, { SVM_EXIT_INIT, "init" }, { SVM_EXIT_VINTR, "vintr" }, { SVM_EXIT_CR0_SEL_WRITE, "cr0_sel_write" }, { SVM_EXIT_IDTR_READ, "read_idtr" }, { SVM_EXIT_GDTR_READ, "read_gdtr" }, { SVM_EXIT_LDTR_READ, "read_ldtr" }, { SVM_EXIT_TR_READ, "read_rt" }, { SVM_EXIT_IDTR_WRITE, "write_idtr" }, { SVM_EXIT_GDTR_WRITE, "write_gdtr" }, { SVM_EXIT_LDTR_WRITE, "write_ldtr" }, { SVM_EXIT_TR_WRITE, "write_rt" }, { SVM_EXIT_RDTSC, "rdtsc" }, { SVM_EXIT_RDPMC, "rdpmc" }, { SVM_EXIT_PUSHF, "pushf" }, { SVM_EXIT_POPF, "popf" }, { SVM_EXIT_CPUID, "cpuid" }, { SVM_EXIT_RSM, "rsm" }, { SVM_EXIT_IRET, "iret" }, { SVM_EXIT_SWINT, "swint" }, { SVM_EXIT_INVD, "invd" }, { SVM_EXIT_PAUSE, "pause" }, { SVM_EXIT_HLT, "hlt" }, { SVM_EXIT_INVLPG, "invlpg" }, { SVM_EXIT_INVLPGA, "invlpga" }, { SVM_EXIT_IOIO, "io" }, { SVM_EXIT_MSR, "msr" }, { SVM_EXIT_TASK_SWITCH, "task_switch" }, { SVM_EXIT_FERR_FREEZE, "ferr_freeze" }, { SVM_EXIT_SHUTDOWN, "shutdown" }, { SVM_EXIT_VMRUN, "vmrun" }, { SVM_EXIT_VMMCALL, "hypercall" }, { SVM_EXIT_VMLOAD, "vmload" }, { SVM_EXIT_VMSAVE, "vmsave" }, { SVM_EXIT_STGI, "stgi" }, { SVM_EXIT_CLGI, "clgi" }, { SVM_EXIT_SKINIT, "skinit" }, { SVM_EXIT_RDTSCP, "rdtscp" }, { SVM_EXIT_ICEBP, "icebp" }, { SVM_EXIT_WBINVD, "wbinvd" }, { SVM_EXIT_MONITOR, "monitor" }, { SVM_EXIT_MWAIT, "mwait" }, { SVM_EXIT_XSETBV, "xsetbv" }, { SVM_EXIT_EFER_WRITE_TRAP, "write_efer_trap" }, { SVM_EXIT_CR0_WRITE_TRAP, "write_cr0_trap" }, { SVM_EXIT_CR4_WRITE_TRAP, "write_cr4_trap" }, { SVM_EXIT_CR8_WRITE_TRAP, "write_cr8_trap" }, { SVM_EXIT_INVPCID, "invpcid" }, { SVM_EXIT_NPF, "npf" }, { SVM_EXIT_AVIC_INCOMPLETE_IPI, "avic_incomplete_ipi" }, { SVM_EXIT_AVIC_UNACCELERATED_ACCESS, "avic_unaccelerated_access" }, { SVM_EXIT_VMGEXIT, "vmgexit" }, { SVM_VMGEXIT_MMIO_READ, "vmgexit_mmio_read" }, { SVM_VMGEXIT_MMIO_WRITE, "vmgexit_mmio_write" }, { SVM_VMGEXIT_NMI_COMPLETE, "vmgexit_nmi_complete" }, { SVM_VMGEXIT_AP_HLT_LOOP, "vmgexit_ap_hlt_loop" }, { SVM_VMGEXIT_AP_JUMP_TABLE, "vmgexit_ap_jump_table" }, { SVM_VMGEXIT_PSC, "vmgexit_page_state_change" }, { SVM_VMGEXIT_GUEST_REQUEST, "vmgexit_guest_request" }, { SVM_VMGEXIT_EXT_GUEST_REQUEST, "vmgexit_ext_guest_request" }, { SVM_VMGEXIT_AP_CREATION, "vmgexit_ap_creation" }, { SVM_VMGEXIT_HV_FEATURES, "vmgexit_hypervisor_feature" }, { SVM_EXIT_ERR, "invalid_guest_state" }
 #endif
diff --git a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/asm-x86/asm/vmx.h b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/asm-x86/asm/vmx.h
index 6c07d4c..fdea539 100644
--- a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/asm-x86/asm/vmx.h
+++ b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/asm-x86/asm/vmx.h
@@ -81,7 +81,8 @@
 #define EXIT_REASON_UMWAIT 67
 #define EXIT_REASON_TPAUSE 68
 #define EXIT_REASON_BUS_LOCK 74
-#define VMX_EXIT_REASONS { EXIT_REASON_EXCEPTION_NMI, "EXCEPTION_NMI" }, { EXIT_REASON_EXTERNAL_INTERRUPT, "EXTERNAL_INTERRUPT" }, { EXIT_REASON_TRIPLE_FAULT, "TRIPLE_FAULT" }, { EXIT_REASON_INIT_SIGNAL, "INIT_SIGNAL" }, { EXIT_REASON_SIPI_SIGNAL, "SIPI_SIGNAL" }, { EXIT_REASON_INTERRUPT_WINDOW, "INTERRUPT_WINDOW" }, { EXIT_REASON_NMI_WINDOW, "NMI_WINDOW" }, { EXIT_REASON_TASK_SWITCH, "TASK_SWITCH" }, { EXIT_REASON_CPUID, "CPUID" }, { EXIT_REASON_HLT, "HLT" }, { EXIT_REASON_INVD, "INVD" }, { EXIT_REASON_INVLPG, "INVLPG" }, { EXIT_REASON_RDPMC, "RDPMC" }, { EXIT_REASON_RDTSC, "RDTSC" }, { EXIT_REASON_VMCALL, "VMCALL" }, { EXIT_REASON_VMCLEAR, "VMCLEAR" }, { EXIT_REASON_VMLAUNCH, "VMLAUNCH" }, { EXIT_REASON_VMPTRLD, "VMPTRLD" }, { EXIT_REASON_VMPTRST, "VMPTRST" }, { EXIT_REASON_VMREAD, "VMREAD" }, { EXIT_REASON_VMRESUME, "VMRESUME" }, { EXIT_REASON_VMWRITE, "VMWRITE" }, { EXIT_REASON_VMOFF, "VMOFF" }, { EXIT_REASON_VMON, "VMON" }, { EXIT_REASON_CR_ACCESS, "CR_ACCESS" }, { EXIT_REASON_DR_ACCESS, "DR_ACCESS" }, { EXIT_REASON_IO_INSTRUCTION, "IO_INSTRUCTION" }, { EXIT_REASON_MSR_READ, "MSR_READ" }, { EXIT_REASON_MSR_WRITE, "MSR_WRITE" }, { EXIT_REASON_INVALID_STATE, "INVALID_STATE" }, { EXIT_REASON_MSR_LOAD_FAIL, "MSR_LOAD_FAIL" }, { EXIT_REASON_MWAIT_INSTRUCTION, "MWAIT_INSTRUCTION" }, { EXIT_REASON_MONITOR_TRAP_FLAG, "MONITOR_TRAP_FLAG" }, { EXIT_REASON_MONITOR_INSTRUCTION, "MONITOR_INSTRUCTION" }, { EXIT_REASON_PAUSE_INSTRUCTION, "PAUSE_INSTRUCTION" }, { EXIT_REASON_MCE_DURING_VMENTRY, "MCE_DURING_VMENTRY" }, { EXIT_REASON_TPR_BELOW_THRESHOLD, "TPR_BELOW_THRESHOLD" }, { EXIT_REASON_APIC_ACCESS, "APIC_ACCESS" }, { EXIT_REASON_EOI_INDUCED, "EOI_INDUCED" }, { EXIT_REASON_GDTR_IDTR, "GDTR_IDTR" }, { EXIT_REASON_LDTR_TR, "LDTR_TR" }, { EXIT_REASON_EPT_VIOLATION, "EPT_VIOLATION" }, { EXIT_REASON_EPT_MISCONFIG, "EPT_MISCONFIG" }, { EXIT_REASON_INVEPT, "INVEPT" }, { EXIT_REASON_RDTSCP, "RDTSCP" }, { EXIT_REASON_PREEMPTION_TIMER, "PREEMPTION_TIMER" }, { EXIT_REASON_INVVPID, "INVVPID" }, { EXIT_REASON_WBINVD, "WBINVD" }, { EXIT_REASON_XSETBV, "XSETBV" }, { EXIT_REASON_APIC_WRITE, "APIC_WRITE" }, { EXIT_REASON_RDRAND, "RDRAND" }, { EXIT_REASON_INVPCID, "INVPCID" }, { EXIT_REASON_VMFUNC, "VMFUNC" }, { EXIT_REASON_ENCLS, "ENCLS" }, { EXIT_REASON_RDSEED, "RDSEED" }, { EXIT_REASON_PML_FULL, "PML_FULL" }, { EXIT_REASON_XSAVES, "XSAVES" }, { EXIT_REASON_XRSTORS, "XRSTORS" }, { EXIT_REASON_UMWAIT, "UMWAIT" }, { EXIT_REASON_TPAUSE, "TPAUSE" }, { EXIT_REASON_BUS_LOCK, "BUS_LOCK" }
+#define EXIT_REASON_NOTIFY 75
+#define VMX_EXIT_REASONS { EXIT_REASON_EXCEPTION_NMI, "EXCEPTION_NMI" }, { EXIT_REASON_EXTERNAL_INTERRUPT, "EXTERNAL_INTERRUPT" }, { EXIT_REASON_TRIPLE_FAULT, "TRIPLE_FAULT" }, { EXIT_REASON_INIT_SIGNAL, "INIT_SIGNAL" }, { EXIT_REASON_SIPI_SIGNAL, "SIPI_SIGNAL" }, { EXIT_REASON_INTERRUPT_WINDOW, "INTERRUPT_WINDOW" }, { EXIT_REASON_NMI_WINDOW, "NMI_WINDOW" }, { EXIT_REASON_TASK_SWITCH, "TASK_SWITCH" }, { EXIT_REASON_CPUID, "CPUID" }, { EXIT_REASON_HLT, "HLT" }, { EXIT_REASON_INVD, "INVD" }, { EXIT_REASON_INVLPG, "INVLPG" }, { EXIT_REASON_RDPMC, "RDPMC" }, { EXIT_REASON_RDTSC, "RDTSC" }, { EXIT_REASON_VMCALL, "VMCALL" }, { EXIT_REASON_VMCLEAR, "VMCLEAR" }, { EXIT_REASON_VMLAUNCH, "VMLAUNCH" }, { EXIT_REASON_VMPTRLD, "VMPTRLD" }, { EXIT_REASON_VMPTRST, "VMPTRST" }, { EXIT_REASON_VMREAD, "VMREAD" }, { EXIT_REASON_VMRESUME, "VMRESUME" }, { EXIT_REASON_VMWRITE, "VMWRITE" }, { EXIT_REASON_VMOFF, "VMOFF" }, { EXIT_REASON_VMON, "VMON" }, { EXIT_REASON_CR_ACCESS, "CR_ACCESS" }, { EXIT_REASON_DR_ACCESS, "DR_ACCESS" }, { EXIT_REASON_IO_INSTRUCTION, "IO_INSTRUCTION" }, { EXIT_REASON_MSR_READ, "MSR_READ" }, { EXIT_REASON_MSR_WRITE, "MSR_WRITE" }, { EXIT_REASON_INVALID_STATE, "INVALID_STATE" }, { EXIT_REASON_MSR_LOAD_FAIL, "MSR_LOAD_FAIL" }, { EXIT_REASON_MWAIT_INSTRUCTION, "MWAIT_INSTRUCTION" }, { EXIT_REASON_MONITOR_TRAP_FLAG, "MONITOR_TRAP_FLAG" }, { EXIT_REASON_MONITOR_INSTRUCTION, "MONITOR_INSTRUCTION" }, { EXIT_REASON_PAUSE_INSTRUCTION, "PAUSE_INSTRUCTION" }, { EXIT_REASON_MCE_DURING_VMENTRY, "MCE_DURING_VMENTRY" }, { EXIT_REASON_TPR_BELOW_THRESHOLD, "TPR_BELOW_THRESHOLD" }, { EXIT_REASON_APIC_ACCESS, "APIC_ACCESS" }, { EXIT_REASON_EOI_INDUCED, "EOI_INDUCED" }, { EXIT_REASON_GDTR_IDTR, "GDTR_IDTR" }, { EXIT_REASON_LDTR_TR, "LDTR_TR" }, { EXIT_REASON_EPT_VIOLATION, "EPT_VIOLATION" }, { EXIT_REASON_EPT_MISCONFIG, "EPT_MISCONFIG" }, { EXIT_REASON_INVEPT, "INVEPT" }, { EXIT_REASON_RDTSCP, "RDTSCP" }, { EXIT_REASON_PREEMPTION_TIMER, "PREEMPTION_TIMER" }, { EXIT_REASON_INVVPID, "INVVPID" }, { EXIT_REASON_WBINVD, "WBINVD" }, { EXIT_REASON_XSETBV, "XSETBV" }, { EXIT_REASON_APIC_WRITE, "APIC_WRITE" }, { EXIT_REASON_RDRAND, "RDRAND" }, { EXIT_REASON_INVPCID, "INVPCID" }, { EXIT_REASON_VMFUNC, "VMFUNC" }, { EXIT_REASON_ENCLS, "ENCLS" }, { EXIT_REASON_RDSEED, "RDSEED" }, { EXIT_REASON_PML_FULL, "PML_FULL" }, { EXIT_REASON_XSAVES, "XSAVES" }, { EXIT_REASON_XRSTORS, "XRSTORS" }, { EXIT_REASON_UMWAIT, "UMWAIT" }, { EXIT_REASON_TPAUSE, "TPAUSE" }, { EXIT_REASON_BUS_LOCK, "BUS_LOCK" }, { EXIT_REASON_NOTIFY, "NOTIFY" }
 #define VMX_EXIT_REASON_FLAGS { VMX_EXIT_REASONS_FAILED_VMENTRY, "FAILED_VMENTRY" }
 #define VMX_ABORT_SAVE_GUEST_MSR_FAIL 1
 #define VMX_ABORT_LOAD_HOST_PDPTE_FAIL 2
diff --git a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/drm/amdgpu_drm.h b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/drm/amdgpu_drm.h
index 3764d51..658eb31 100644
--- a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/drm/amdgpu_drm.h
+++ b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/drm/amdgpu_drm.h
@@ -72,6 +72,7 @@
 #define AMDGPU_GEM_CREATE_VRAM_WIPE_ON_RELEASE (1 << 9)
 #define AMDGPU_GEM_CREATE_ENCRYPTED (1 << 10)
 #define AMDGPU_GEM_CREATE_PREEMPTIBLE (1 << 11)
+#define AMDGPU_GEM_CREATE_DISCARDABLE (1 << 12)
 struct drm_amdgpu_gem_create_in {
   __u64 bo_size;
   __u64 alignment;
@@ -112,6 +113,8 @@
 #define AMDGPU_CTX_OP_FREE_CTX 2
 #define AMDGPU_CTX_OP_QUERY_STATE 3
 #define AMDGPU_CTX_OP_QUERY_STATE2 4
+#define AMDGPU_CTX_OP_GET_STABLE_PSTATE 5
+#define AMDGPU_CTX_OP_SET_STABLE_PSTATE 6
 #define AMDGPU_CTX_NO_RESET 0
 #define AMDGPU_CTX_GUILTY_RESET 1
 #define AMDGPU_CTX_INNOCENT_RESET 2
@@ -127,6 +130,12 @@
 #define AMDGPU_CTX_PRIORITY_NORMAL 0
 #define AMDGPU_CTX_PRIORITY_HIGH 512
 #define AMDGPU_CTX_PRIORITY_VERY_HIGH 1023
+#define AMDGPU_CTX_STABLE_PSTATE_FLAGS_MASK 0xf
+#define AMDGPU_CTX_STABLE_PSTATE_NONE 0
+#define AMDGPU_CTX_STABLE_PSTATE_STANDARD 1
+#define AMDGPU_CTX_STABLE_PSTATE_MIN_SCLK 2
+#define AMDGPU_CTX_STABLE_PSTATE_MIN_MCLK 3
+#define AMDGPU_CTX_STABLE_PSTATE_PEAK 4
 struct drm_amdgpu_ctx_in {
   __u32 op;
   __u32 flags;
@@ -143,6 +152,10 @@
     __u32 hangs;
     __u32 reset_status;
   } state;
+  struct {
+    __u32 flags;
+    __u32 _pad;
+  } pstate;
 };
 union drm_amdgpu_ctx {
   struct drm_amdgpu_ctx_in in;
@@ -307,6 +320,7 @@
 #define AMDGPU_VM_MTYPE_CC (3 << 5)
 #define AMDGPU_VM_MTYPE_UC (4 << 5)
 #define AMDGPU_VM_MTYPE_RW (5 << 5)
+#define AMDGPU_VM_PAGE_NOALLOC (1 << 9)
 struct drm_amdgpu_gem_va {
   __u32 handle;
   __u32 _pad;
@@ -438,6 +452,12 @@
 #define AMDGPU_INFO_FW_TA 0x13
 #define AMDGPU_INFO_FW_DMCUB 0x14
 #define AMDGPU_INFO_FW_TOC 0x15
+#define AMDGPU_INFO_FW_CAP 0x16
+#define AMDGPU_INFO_FW_GFX_RLCP 0x17
+#define AMDGPU_INFO_FW_GFX_RLCV 0x18
+#define AMDGPU_INFO_FW_MES_KIQ 0x19
+#define AMDGPU_INFO_FW_MES 0x1a
+#define AMDGPU_INFO_FW_IMU 0x1b
 #define AMDGPU_INFO_NUM_BYTES_MOVED 0x0f
 #define AMDGPU_INFO_VRAM_USAGE 0x10
 #define AMDGPU_INFO_GTT_USAGE 0x11
@@ -575,6 +595,8 @@
 #define AMDGPU_VRAM_TYPE_DDR4 8
 #define AMDGPU_VRAM_TYPE_GDDR6 9
 #define AMDGPU_VRAM_TYPE_DDR5 10
+#define AMDGPU_VRAM_TYPE_LPDDR4 11
+#define AMDGPU_VRAM_TYPE_LPDDR5 12
 struct drm_amdgpu_info_device {
   __u32 device_id;
   __u32 chip_rev;
@@ -633,7 +655,7 @@
   __u32 ib_start_alignment;
   __u32 ib_size_alignment;
   __u32 available_rings;
-  __u32 _pad;
+  __u32 ip_discovery_version;
 };
 struct drm_amdgpu_info_num_handles {
   __u32 uvd_max_handles;
@@ -681,7 +703,11 @@
 #define AMDGPU_FAMILY_RV 142
 #define AMDGPU_FAMILY_NV 143
 #define AMDGPU_FAMILY_VGH 144
+#define AMDGPU_FAMILY_GC_11_0_0 145
 #define AMDGPU_FAMILY_YC 146
+#define AMDGPU_FAMILY_GC_11_0_1 148
+#define AMDGPU_FAMILY_GC_10_3_6 149
+#define AMDGPU_FAMILY_GC_10_3_7 151
 #ifdef __cplusplus
 }
 #endif
diff --git a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/drm/drm_fourcc.h b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/drm/drm_fourcc.h
index e845c8c..8188b8f 100644
--- a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/drm/drm_fourcc.h
+++ b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/drm/drm_fourcc.h
@@ -25,7 +25,17 @@
 #define fourcc_code(a,b,c,d) ((__u32) (a) | ((__u32) (b) << 8) | ((__u32) (c) << 16) | ((__u32) (d) << 24))
 #define DRM_FORMAT_BIG_ENDIAN (1U << 31)
 #define DRM_FORMAT_INVALID 0
+#define DRM_FORMAT_C1 fourcc_code('C', '1', ' ', ' ')
+#define DRM_FORMAT_C2 fourcc_code('C', '2', ' ', ' ')
+#define DRM_FORMAT_C4 fourcc_code('C', '4', ' ', ' ')
 #define DRM_FORMAT_C8 fourcc_code('C', '8', ' ', ' ')
+#define DRM_FORMAT_D1 fourcc_code('D', '1', ' ', ' ')
+#define DRM_FORMAT_D2 fourcc_code('D', '2', ' ', ' ')
+#define DRM_FORMAT_D4 fourcc_code('D', '4', ' ', ' ')
+#define DRM_FORMAT_D8 fourcc_code('D', '8', ' ', ' ')
+#define DRM_FORMAT_R1 fourcc_code('R', '1', ' ', ' ')
+#define DRM_FORMAT_R2 fourcc_code('R', '2', ' ', ' ')
+#define DRM_FORMAT_R4 fourcc_code('R', '4', ' ', ' ')
 #define DRM_FORMAT_R8 fourcc_code('R', '8', ' ', ' ')
 #define DRM_FORMAT_R10 fourcc_code('R', '1', '0', ' ')
 #define DRM_FORMAT_R12 fourcc_code('R', '1', '2', ' ')
@@ -86,7 +96,9 @@
 #define DRM_FORMAT_UYVY fourcc_code('U', 'Y', 'V', 'Y')
 #define DRM_FORMAT_VYUY fourcc_code('V', 'Y', 'U', 'Y')
 #define DRM_FORMAT_AYUV fourcc_code('A', 'Y', 'U', 'V')
+#define DRM_FORMAT_AVUY8888 fourcc_code('A', 'V', 'U', 'Y')
 #define DRM_FORMAT_XYUV8888 fourcc_code('X', 'Y', 'U', 'V')
+#define DRM_FORMAT_XVUY8888 fourcc_code('X', 'V', 'U', 'Y')
 #define DRM_FORMAT_VUY888 fourcc_code('V', 'U', '2', '4')
 #define DRM_FORMAT_VUY101010 fourcc_code('V', 'U', '3', '0')
 #define DRM_FORMAT_Y210 fourcc_code('Y', '2', '1', '0')
@@ -163,9 +175,15 @@
 #define I915_FORMAT_MOD_Y_TILED_GEN12_RC_CCS fourcc_mod_code(INTEL, 6)
 #define I915_FORMAT_MOD_Y_TILED_GEN12_MC_CCS fourcc_mod_code(INTEL, 7)
 #define I915_FORMAT_MOD_Y_TILED_GEN12_RC_CCS_CC fourcc_mod_code(INTEL, 8)
+#define I915_FORMAT_MOD_4_TILED fourcc_mod_code(INTEL, 9)
+#define I915_FORMAT_MOD_4_TILED_DG2_RC_CCS fourcc_mod_code(INTEL, 10)
+#define I915_FORMAT_MOD_4_TILED_DG2_MC_CCS fourcc_mod_code(INTEL, 11)
+#define I915_FORMAT_MOD_4_TILED_DG2_RC_CCS_CC fourcc_mod_code(INTEL, 12)
 #define DRM_FORMAT_MOD_SAMSUNG_64_32_TILE fourcc_mod_code(SAMSUNG, 1)
 #define DRM_FORMAT_MOD_SAMSUNG_16_16_TILE fourcc_mod_code(SAMSUNG, 2)
 #define DRM_FORMAT_MOD_QCOM_COMPRESSED fourcc_mod_code(QCOM, 1)
+#define DRM_FORMAT_MOD_QCOM_TILED3 fourcc_mod_code(QCOM, 3)
+#define DRM_FORMAT_MOD_QCOM_TILED2 fourcc_mod_code(QCOM, 2)
 #define DRM_FORMAT_MOD_VIVANTE_TILED fourcc_mod_code(VIVANTE, 1)
 #define DRM_FORMAT_MOD_VIVANTE_SUPER_TILED fourcc_mod_code(VIVANTE, 2)
 #define DRM_FORMAT_MOD_VIVANTE_SPLIT_TILED fourcc_mod_code(VIVANTE, 3)
@@ -235,11 +253,13 @@
 #define AMD_FMT_MOD_TILE_VER_GFX9 1
 #define AMD_FMT_MOD_TILE_VER_GFX10 2
 #define AMD_FMT_MOD_TILE_VER_GFX10_RBPLUS 3
+#define AMD_FMT_MOD_TILE_VER_GFX11 4
 #define AMD_FMT_MOD_TILE_GFX9_64K_S 9
 #define AMD_FMT_MOD_TILE_GFX9_64K_D 10
 #define AMD_FMT_MOD_TILE_GFX9_64K_S_X 25
 #define AMD_FMT_MOD_TILE_GFX9_64K_D_X 26
 #define AMD_FMT_MOD_TILE_GFX9_64K_R_X 27
+#define AMD_FMT_MOD_TILE_GFX11_256K_R_X 31
 #define AMD_FMT_MOD_DCC_BLOCK_64B 0
 #define AMD_FMT_MOD_DCC_BLOCK_128B 1
 #define AMD_FMT_MOD_DCC_BLOCK_256B 2
@@ -271,9 +291,9 @@
 #define AMD_FMT_MOD_RB_MASK 0x7
 #define AMD_FMT_MOD_PIPE_SHIFT 33
 #define AMD_FMT_MOD_PIPE_MASK 0x7
-#define AMD_FMT_MOD_SET(field,value) ((uint64_t) (value) << AMD_FMT_MOD_ ##field ##_SHIFT)
+#define AMD_FMT_MOD_SET(field,value) ((__u64) (value) << AMD_FMT_MOD_ ##field ##_SHIFT)
 #define AMD_FMT_MOD_GET(field,value) (((value) >> AMD_FMT_MOD_ ##field ##_SHIFT) & AMD_FMT_MOD_ ##field ##_MASK)
-#define AMD_FMT_MOD_CLEAR(field) (~((uint64_t) AMD_FMT_MOD_ ##field ##_MASK << AMD_FMT_MOD_ ##field ##_SHIFT))
+#define AMD_FMT_MOD_CLEAR(field) (~((__u64) AMD_FMT_MOD_ ##field ##_MASK << AMD_FMT_MOD_ ##field ##_SHIFT))
 #ifdef __cplusplus
 }
 #endif
diff --git a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/drm/i915_drm.h b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/drm/i915_drm.h
index 52bfad2..198b969 100644
--- a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/drm/i915_drm.h
+++ b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/drm/i915_drm.h
@@ -41,13 +41,14 @@
   I915_ENGINE_CLASS_COPY = 1,
   I915_ENGINE_CLASS_VIDEO = 2,
   I915_ENGINE_CLASS_VIDEO_ENHANCE = 3,
+  I915_ENGINE_CLASS_COMPUTE = 4,
   I915_ENGINE_CLASS_INVALID = - 1
 };
 struct i915_engine_class_instance {
   __u16 engine_class;
-  __u16 engine_instance;
 #define I915_ENGINE_CLASS_INVALID_NONE - 1
 #define I915_ENGINE_CLASS_INVALID_VIRTUAL - 2
+  __u16 engine_instance;
 };
 enum drm_i915_pmu_engine_sample {
   I915_SAMPLE_BUSY = 0,
@@ -367,10 +368,11 @@
 #define I915_PARAM_PERF_REVISION 54
 #define I915_PARAM_HAS_EXEC_TIMELINE_FENCES 55
 #define I915_PARAM_HAS_USERPTR_PROBE 56
-typedef struct drm_i915_getparam {
+struct drm_i915_getparam {
   __s32 param;
   int __user * value;
-} drm_i915_getparam_t;
+};
+typedef struct drm_i915_getparam drm_i915_getparam_t;
 #define I915_SETPARAM_USE_MI_BATCHBUFFER_START 1
 #define I915_SETPARAM_TEX_LRU_LOG_GRANULARITY 2
 #define I915_SETPARAM_ALLOW_BATCHBUFFER 3
@@ -525,13 +527,13 @@
 };
 struct drm_i915_gem_exec_fence {
   __u32 handle;
+  __u32 flags;
 #define I915_EXEC_FENCE_WAIT (1 << 0)
 #define I915_EXEC_FENCE_SIGNAL (1 << 1)
 #define __I915_EXEC_FENCE_UNKNOWN_FLAGS (- (I915_EXEC_FENCE_SIGNAL << 1))
-  __u32 flags;
 };
-#define DRM_I915_GEM_EXECBUFFER_EXT_TIMELINE_FENCES 0
 struct drm_i915_gem_execbuffer_ext_timeline_fences {
+#define DRM_I915_GEM_EXECBUFFER_EXT_TIMELINE_FENCES 0
   struct i915_user_extension base;
   __u64 fence_count;
   __u64 handles_ptr;
@@ -546,6 +548,7 @@
   __u32 DR4;
   __u32 num_cliprects;
   __u64 cliprects_ptr;
+  __u64 flags;
 #define I915_EXEC_RING_MASK (0x3f)
 #define I915_EXEC_DEFAULT (0 << 0)
 #define I915_EXEC_RENDER (1 << 0)
@@ -556,10 +559,6 @@
 #define I915_EXEC_CONSTANTS_REL_GENERAL (0 << 6)
 #define I915_EXEC_CONSTANTS_ABSOLUTE (1 << 6)
 #define I915_EXEC_CONSTANTS_REL_SURFACE (2 << 6)
-  __u64 flags;
-  __u64 rsvd1;
-  __u64 rsvd2;
-};
 #define I915_EXEC_GEN7_SOL_RESET (1 << 8)
 #define I915_EXEC_SECURE (1 << 9)
 #define I915_EXEC_IS_PINNED (1 << 10)
@@ -578,6 +577,9 @@
 #define I915_EXEC_FENCE_SUBMIT (1 << 20)
 #define I915_EXEC_USE_EXTENSIONS (1 << 21)
 #define __I915_EXEC_UNKNOWN_FLAGS (- (I915_EXEC_USE_EXTENSIONS << 1))
+  __u64 rsvd1;
+  __u64 rsvd2;
+};
 #define I915_EXEC_CONTEXT_ID_MASK (0xffffffff)
 #define i915_execbuffer2_set_context_id(eb2,context) (eb2).rsvd1 = context & I915_EXEC_CONTEXT_ID_MASK
 #define i915_execbuffer2_get_context_id(eb2) ((eb2).rsvd1 & I915_EXEC_CONTEXT_ID_MASK)
@@ -721,6 +723,8 @@
 #define I915_CONTEXT_CREATE_FLAGS_SINGLE_TIMELINE (1u << 1)
 #define I915_CONTEXT_CREATE_FLAGS_UNKNOWN (- (I915_CONTEXT_CREATE_FLAGS_SINGLE_TIMELINE << 1))
   __u64 extensions;
+#define I915_CONTEXT_CREATE_EXT_SETPARAM 0
+#define I915_CONTEXT_CREATE_EXT_CLONE 1
 };
 struct drm_i915_gem_context_param {
   __u32 ctx_id;
@@ -760,7 +764,7 @@
   __u16 num_siblings;
   __u32 flags;
   __u64 mbz64;
-  struct i915_engine_class_instance engines[0];
+  struct i915_engine_class_instance engines[];
 } __attribute__((packed));
 #define I915_DEFINE_CONTEXT_ENGINES_LOAD_BALANCE(name__,N__) struct { struct i915_user_extension base; __u16 engine_index; __u16 num_siblings; __u32 flags; __u64 mbz64; struct i915_engine_class_instance engines[N__]; \
 } __attribute__((packed)) name__
@@ -771,7 +775,7 @@
   __u16 num_bonds;
   __u64 flags;
   __u64 mbz64[4];
-  struct i915_engine_class_instance engines[0];
+  struct i915_engine_class_instance engines[];
 } __attribute__((packed));
 #define I915_DEFINE_CONTEXT_ENGINES_BOND(name__,N__) struct { struct i915_user_extension base; struct i915_engine_class_instance master; __u16 virtual_index; __u16 num_bonds; __u64 flags; __u64 mbz64[4]; struct i915_engine_class_instance engines[N__]; \
 } __attribute__((packed)) name__
@@ -783,8 +787,8 @@
   __u16 mbz16;
   __u64 flags;
   __u64 mbz64[3];
-  struct i915_engine_class_instance engines[0];
-} __packed;
+  struct i915_engine_class_instance engines[];
+} __attribute__((__packed__));
 #define I915_DEFINE_CONTEXT_ENGINES_PARALLEL_SUBMIT(name__,N__) struct { struct i915_user_extension base; __u16 engine_index; __u16 width; __u16 num_siblings; __u16 mbz16; __u64 flags; __u64 mbz64[3]; struct i915_engine_class_instance engines[N__]; \
 } __attribute__((packed)) name__
 struct i915_context_param_engines {
@@ -797,11 +801,9 @@
 #define I915_DEFINE_CONTEXT_PARAM_ENGINES(name__,N__) struct { __u64 extensions; struct i915_engine_class_instance engines[N__]; \
 } __attribute__((packed)) name__
 struct drm_i915_gem_context_create_ext_setparam {
-#define I915_CONTEXT_CREATE_EXT_SETPARAM 0
   struct i915_user_extension base;
   struct drm_i915_gem_context_param param;
 };
-#define I915_CONTEXT_CREATE_EXT_CLONE 1
 struct drm_i915_gem_context_destroy {
   __u32 ctx_id;
   __u32 pad;
@@ -894,6 +896,8 @@
 #define DRM_I915_QUERY_ENGINE_INFO 2
 #define DRM_I915_QUERY_PERF_CONFIG 3
 #define DRM_I915_QUERY_MEMORY_REGIONS 4
+#define DRM_I915_QUERY_HWCONFIG_BLOB 5
+#define DRM_I915_QUERY_GEOMETRY_SUBSLICES 6
   __s32 length;
   __u32 flags;
 #define DRM_I915_QUERY_PERF_CONFIG_LIST 1
@@ -956,7 +960,13 @@
   __u32 rsvd0;
   __u64 probed_size;
   __u64 unallocated_size;
-  __u64 rsvd1[8];
+  union {
+    __u64 rsvd1[8];
+    struct {
+      __u64 probed_cpu_visible_size;
+      __u64 unallocated_cpu_visible_size;
+    };
+  };
 };
 struct drm_i915_query_memory_regions {
   __u32 num_regions;
@@ -966,6 +976,7 @@
 struct drm_i915_gem_create_ext {
   __u64 size;
   __u32 handle;
+#define I915_GEM_CREATE_EXT_FLAG_NEEDS_CPU_ACCESS (1 << 0)
   __u32 flags;
 #define I915_GEM_CREATE_EXT_MEMORY_REGIONS 0
 #define I915_GEM_CREATE_EXT_PROTECTED_CONTENT 1
diff --git a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/drm/msm_drm.h b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/drm/msm_drm.h
index b4ba1d0..c2edefd 100644
--- a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/drm/msm_drm.h
+++ b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/drm/msm_drm.h
@@ -43,11 +43,18 @@
 #define MSM_PARAM_PP_PGTABLE 0x08
 #define MSM_PARAM_FAULTS 0x09
 #define MSM_PARAM_SUSPENDS 0x0a
+#define MSM_PARAM_SYSPROF 0x0b
+#define MSM_PARAM_COMM 0x0c
+#define MSM_PARAM_CMDLINE 0x0d
+#define MSM_PARAM_VA_START 0x0e
+#define MSM_PARAM_VA_SIZE 0x0f
 #define MSM_PARAM_NR_RINGS MSM_PARAM_PRIORITIES
 struct drm_msm_param {
   __u32 pipe;
   __u32 param;
   __u64 value;
+  __u32 len;
+  __u32 pad;
 };
 #define MSM_BO_SCANOUT 0x00000001
 #define MSM_BO_GPU_READONLY 0x00000002
@@ -66,6 +73,7 @@
 #define MSM_INFO_GET_IOVA 0x01
 #define MSM_INFO_SET_NAME 0x02
 #define MSM_INFO_GET_NAME 0x03
+#define MSM_INFO_SET_IOVA 0x04
 struct drm_msm_gem_info {
   __u32 handle;
   __u32 info;
@@ -119,7 +127,8 @@
 #define MSM_SUBMIT_SUDO 0x10000000
 #define MSM_SUBMIT_SYNCOBJ_IN 0x08000000
 #define MSM_SUBMIT_SYNCOBJ_OUT 0x04000000
-#define MSM_SUBMIT_FLAGS (MSM_SUBMIT_NO_IMPLICIT | MSM_SUBMIT_FENCE_FD_IN | MSM_SUBMIT_FENCE_FD_OUT | MSM_SUBMIT_SUDO | MSM_SUBMIT_SYNCOBJ_IN | MSM_SUBMIT_SYNCOBJ_OUT | 0)
+#define MSM_SUBMIT_FENCE_SN_IN 0x02000000
+#define MSM_SUBMIT_FLAGS (MSM_SUBMIT_NO_IMPLICIT | MSM_SUBMIT_FENCE_FD_IN | MSM_SUBMIT_FENCE_FD_OUT | MSM_SUBMIT_SUDO | MSM_SUBMIT_SYNCOBJ_IN | MSM_SUBMIT_SYNCOBJ_OUT | MSM_SUBMIT_FENCE_SN_IN | 0)
 #define MSM_SUBMIT_SYNCOBJ_RESET 0x00000001
 #define MSM_SUBMIT_SYNCOBJ_FLAGS (MSM_SUBMIT_SYNCOBJ_RESET | 0)
 struct drm_msm_gem_submit_syncobj {
@@ -172,6 +181,7 @@
   __u32 pad;
 };
 #define DRM_MSM_GET_PARAM 0x00
+#define DRM_MSM_SET_PARAM 0x01
 #define DRM_MSM_GEM_NEW 0x02
 #define DRM_MSM_GEM_INFO 0x03
 #define DRM_MSM_GEM_CPU_PREP 0x04
@@ -183,6 +193,7 @@
 #define DRM_MSM_SUBMITQUEUE_CLOSE 0x0B
 #define DRM_MSM_SUBMITQUEUE_QUERY 0x0C
 #define DRM_IOCTL_MSM_GET_PARAM DRM_IOWR(DRM_COMMAND_BASE + DRM_MSM_GET_PARAM, struct drm_msm_param)
+#define DRM_IOCTL_MSM_SET_PARAM DRM_IOW(DRM_COMMAND_BASE + DRM_MSM_SET_PARAM, struct drm_msm_param)
 #define DRM_IOCTL_MSM_GEM_NEW DRM_IOWR(DRM_COMMAND_BASE + DRM_MSM_GEM_NEW, struct drm_msm_gem_new)
 #define DRM_IOCTL_MSM_GEM_INFO DRM_IOWR(DRM_COMMAND_BASE + DRM_MSM_GEM_INFO, struct drm_msm_gem_info)
 #define DRM_IOCTL_MSM_GEM_CPU_PREP DRM_IOW(DRM_COMMAND_BASE + DRM_MSM_GEM_CPU_PREP, struct drm_msm_gem_cpu_prep)
diff --git a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/drm/panfrost_drm.h b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/drm/panfrost_drm.h
index 1f4473d..04a85df 100644
--- a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/drm/panfrost_drm.h
+++ b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/drm/panfrost_drm.h
@@ -136,6 +136,38 @@
   __u32 madv;
   __u32 retained;
 };
+#define PANFROSTDUMP_MAJOR 1
+#define PANFROSTDUMP_MINOR 0
+#define PANFROSTDUMP_MAGIC 0x464E4150
+#define PANFROSTDUMP_BUF_REG 0
+#define PANFROSTDUMP_BUF_BOMAP (PANFROSTDUMP_BUF_REG + 1)
+#define PANFROSTDUMP_BUF_BO (PANFROSTDUMP_BUF_BOMAP + 1)
+#define PANFROSTDUMP_BUF_TRAILER (PANFROSTDUMP_BUF_BO + 1)
+struct panfrost_dump_object_header {
+  __u32 magic;
+  __u32 type;
+  __u32 file_size;
+  __u32 file_offset;
+  union {
+    struct {
+      __u64 jc;
+      __u32 gpu_id;
+      __u32 major;
+      __u32 minor;
+      __u64 nbos;
+    } reghdr;
+    struct {
+      __u32 valid;
+      __u64 iova;
+      __u32 data[2];
+    } bomap;
+    __u32 sizer[496];
+  };
+};
+struct panfrost_dump_registers {
+  __u32 reg;
+  __u32 value;
+};
 #ifdef __cplusplus
 }
 #endif
diff --git a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/drm/vmwgfx_drm.h b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/drm/vmwgfx_drm.h
index 395743b..2f75589 100644
--- a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/drm/vmwgfx_drm.h
+++ b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/drm/vmwgfx_drm.h
@@ -76,6 +76,7 @@
 #define DRM_VMW_PARAM_SM4_1 14
 #define DRM_VMW_PARAM_SM5 15
 #define DRM_VMW_PARAM_GL43 16
+#define DRM_VMW_PARAM_DEVICE_ID 17
 enum drm_vmw_handle_type {
   DRM_VMW_HANDLE_LEGACY = 0,
   DRM_VMW_HANDLE_PRIME = 1
diff --git a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/acct.h b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/acct.h
index aecc9f6..ba9d25f 100644
--- a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/acct.h
+++ b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/acct.h
@@ -74,6 +74,7 @@
 #define ACOMPAT 0x04
 #define ACORE 0x08
 #define AXSIG 0x10
+#define AGROUP 0x20
 #if defined(__BYTE_ORDER) ? __BYTE_ORDER == __BIG_ENDIAN : defined(__BIG_ENDIAN)
 #define ACCT_BYTEORDER 0x80
 #elif defined(__BYTE_ORDER)?__BYTE_ORDER==__LITTLE_ENDIAN:defined(__LITTLE_ENDIAN)
diff --git a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/agpgart.h b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/agpgart.h
index 3b126f1..9dda7bf 100644
--- a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/agpgart.h
+++ b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/agpgart.h
@@ -38,7 +38,6 @@
 #define FALSE 0
 #endif
 #include <linux/types.h>
-#include <stdlib.h>
 struct agp_version {
   __u16 major;
   __u16 minor;
@@ -48,10 +47,10 @@
   __u32 bridge_id;
   __u32 agp_mode;
   unsigned long aper_base;
-  size_t aper_size;
-  size_t pg_total;
-  size_t pg_system;
-  size_t pg_used;
+  __kernel_size_t aper_size;
+  __kernel_size_t pg_total;
+  __kernel_size_t pg_system;
+  __kernel_size_t pg_used;
 } agp_info;
 typedef struct _agp_setup {
   __u32 agp_mode;
diff --git a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/android/binder.h b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/android/binder.h
index ded1756..52f4c6b 100644
--- a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/android/binder.h
+++ b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/android/binder.h
@@ -127,6 +127,11 @@
   __u32 sync_recv;
   __u32 async_recv;
 };
+struct binder_extended_error {
+  __u32 id;
+  __u32 command;
+  __s32 param;
+};
 #define BINDER_WRITE_READ _IOWR('b', 1, struct binder_write_read)
 #define BINDER_SET_IDLE_TIMEOUT _IOW('b', 3, __s64)
 #define BINDER_SET_MAX_THREADS _IOW('b', 5, __u32)
@@ -140,12 +145,14 @@
 #define BINDER_FREEZE _IOW('b', 14, struct binder_freeze_info)
 #define BINDER_GET_FROZEN_INFO _IOWR('b', 15, struct binder_frozen_status_info)
 #define BINDER_ENABLE_ONEWAY_SPAM_DETECTION _IOW('b', 16, __u32)
+#define BINDER_GET_EXTENDED_ERROR _IOWR('b', 17, struct binder_extended_error)
 enum transaction_flags {
   TF_ONE_WAY = 0x01,
   TF_ROOT_OBJECT = 0x04,
   TF_STATUS_CODE = 0x08,
   TF_ACCEPT_FDS = 0x10,
   TF_CLEAR_BUF = 0x20,
+  TF_UPDATE_TXN = 0x40,
 };
 struct binder_transaction_data {
   union {
@@ -155,8 +162,8 @@
   binder_uintptr_t cookie;
   __u32 code;
   __u32 flags;
-  pid_t sender_pid;
-  uid_t sender_euid;
+  __kernel_pid_t sender_pid;
+  __kernel_uid32_t sender_euid;
   binder_size_t data_size;
   binder_size_t offsets_size;
   union {
@@ -182,7 +189,7 @@
 struct binder_handle_cookie {
   __u32 handle;
   binder_uintptr_t cookie;
-} __packed;
+} __attribute__((__packed__));
 struct binder_pri_desc {
   __s32 priority;
   __u32 desc;
diff --git a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/ashmem.h b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/ashmem.h
index 174667f..88f0e81 100644
--- a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/ashmem.h
+++ b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/ashmem.h
@@ -41,4 +41,5 @@
 #define ASHMEM_UNPIN _IOW(__ASHMEMIOC, 8, struct ashmem_pin)
 #define ASHMEM_GET_PIN_STATUS _IO(__ASHMEMIOC, 9)
 #define ASHMEM_PURGE_ALL_CACHES _IO(__ASHMEMIOC, 10)
+#define ASHMEM_GET_FILE_ID _IOR(__ASHMEMIOC, 11, unsigned long)
 #endif
diff --git a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/audit.h b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/audit.h
index 30a94af..f7c969b 100644
--- a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/audit.h
+++ b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/audit.h
@@ -140,7 +140,7 @@
 #define AUDIT_MAX_KEY_LEN 256
 #define AUDIT_BITMASK_SIZE 64
 #define AUDIT_WORD(nr) ((__u32) ((nr) / 32))
-#define AUDIT_BIT(nr) (1 << ((nr) - AUDIT_WORD(nr) * 32))
+#define AUDIT_BIT(nr) (1U << ((nr) - AUDIT_WORD(nr) * 32))
 #define AUDIT_SYSCALL_CLASSES 16
 #define AUDIT_CLASS_DIR_WRITE 0
 #define AUDIT_CLASS_DIR_WRITE_32 1
@@ -323,6 +323,8 @@
 #define AUDIT_ARCH_UNICORE (EM_UNICORE | __AUDIT_ARCH_LE)
 #define AUDIT_ARCH_X86_64 (EM_X86_64 | __AUDIT_ARCH_64BIT | __AUDIT_ARCH_LE)
 #define AUDIT_ARCH_XTENSA (EM_XTENSA)
+#define AUDIT_ARCH_LOONGARCH32 (EM_LOONGARCH | __AUDIT_ARCH_LE)
+#define AUDIT_ARCH_LOONGARCH64 (EM_LOONGARCH | __AUDIT_ARCH_64BIT | __AUDIT_ARCH_LE)
 #define AUDIT_PERM_EXEC 1
 #define AUDIT_PERM_WRITE 2
 #define AUDIT_PERM_READ 4
diff --git a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/blkzoned.h b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/blkzoned.h
index b551e8b..e41ac9f 100644
--- a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/blkzoned.h
+++ b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/blkzoned.h
@@ -54,7 +54,7 @@
   __u64 sector;
   __u32 nr_zones;
   __u32 flags;
-  struct blk_zone zones[0];
+  struct blk_zone zones[];
 };
 struct blk_zone_range {
   __u64 sector;
diff --git a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/bpf.h b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/bpf.h
index d363e81..807884a 100644
--- a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/bpf.h
+++ b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/bpf.h
@@ -74,10 +74,27 @@
   __u64 cgroup_inode_id;
   __u32 attach_type;
 };
+enum bpf_cgroup_iter_order {
+  BPF_CGROUP_ITER_ORDER_UNSPEC = 0,
+  BPF_CGROUP_ITER_SELF_ONLY,
+  BPF_CGROUP_ITER_DESCENDANTS_PRE,
+  BPF_CGROUP_ITER_DESCENDANTS_POST,
+  BPF_CGROUP_ITER_ANCESTORS_UP,
+};
 union bpf_iter_link_info {
   struct {
     __u32 map_fd;
   } map;
+  struct {
+    enum bpf_cgroup_iter_order order;
+    __u32 cgroup_fd;
+    __u64 cgroup_id;
+  } cgroup;
+  struct {
+    __u32 tid;
+    __u32 pid;
+    __u32 pid_fd;
+  } task;
 };
 enum bpf_cmd {
   BPF_MAP_CREATE,
@@ -150,6 +167,7 @@
   BPF_MAP_TYPE_INODE_STORAGE,
   BPF_MAP_TYPE_TASK_STORAGE,
   BPF_MAP_TYPE_BLOOM_FILTER,
+  BPF_MAP_TYPE_USER_RINGBUF,
 };
 enum bpf_prog_type {
   BPF_PROG_TYPE_UNSPEC,
@@ -228,6 +246,8 @@
   BPF_SK_REUSEPORT_SELECT,
   BPF_SK_REUSEPORT_SELECT_OR_MIGRATE,
   BPF_PERF_EVENT,
+  BPF_TRACE_KPROBE_MULTI,
+  BPF_LSM_CGROUP,
   __MAX_BPF_ATTACH_TYPE
 };
 #define MAX_BPF_ATTACH_TYPE __MAX_BPF_ATTACH_TYPE
@@ -240,6 +260,8 @@
   BPF_LINK_TYPE_NETNS = 5,
   BPF_LINK_TYPE_XDP = 6,
   BPF_LINK_TYPE_PERF_EVENT = 7,
+  BPF_LINK_TYPE_KPROBE_MULTI = 8,
+  BPF_LINK_TYPE_STRUCT_OPS = 9,
   MAX_BPF_LINK_TYPE,
 };
 #define BPF_F_ALLOW_OVERRIDE (1U << 0)
@@ -250,6 +272,8 @@
 #define BPF_F_TEST_RND_HI32 (1U << 2)
 #define BPF_F_TEST_STATE_FREQ (1U << 3)
 #define BPF_F_SLEEPABLE (1U << 4)
+#define BPF_F_XDP_HAS_FRAGS (1U << 5)
+#define BPF_F_KPROBE_MULTI_RETURN (1U << 0)
 #define BPF_PSEUDO_MAP_FD 1
 #define BPF_PSEUDO_MAP_IDX 5
 #define BPF_PSEUDO_MAP_VALUE 2
@@ -281,6 +305,7 @@
 };
 #define BPF_F_QUERY_EFFECTIVE (1U << 0)
 #define BPF_F_TEST_RUN_ON_CPU (1U << 0)
+#define BPF_F_TEST_XDP_LIVE_FRAMES (1U << 1)
 enum bpf_stats_type {
   BPF_STATS_RUN_TIME = 0,
 };
@@ -392,6 +417,7 @@
     __aligned_u64 ctx_out;
     __u32 flags;
     __u32 cpu;
+    __u32 batch_size;
   } test;
   struct {
     union {
@@ -416,6 +442,7 @@
     __u32 attach_flags;
     __aligned_u64 prog_ids;
     __u32 prog_cnt;
+    __aligned_u64 prog_attach_flags;
   } query;
   struct {
     __u64 name;
@@ -456,6 +483,17 @@
       struct {
         __u64 bpf_cookie;
       } perf_event;
+      struct {
+        __u32 flags;
+        __u32 cnt;
+        __aligned_u64 syms;
+        __aligned_u64 addrs;
+        __aligned_u64 cookies;
+      } kprobe_multi;
+      struct {
+        __u32 target_btf_id;
+        __u64 cookie;
+      } tracing;
     };
   } link_create;
   struct {
@@ -480,7 +518,7 @@
     __u32 flags;
   } prog_bind_map;
 } __attribute__((aligned(8)));
-#define __BPF_FUNC_MAPPER(FN) FN(unspec), FN(map_lookup_elem), FN(map_update_elem), FN(map_delete_elem), FN(probe_read), FN(ktime_get_ns), FN(trace_printk), FN(get_prandom_u32), FN(get_smp_processor_id), FN(skb_store_bytes), FN(l3_csum_replace), FN(l4_csum_replace), FN(tail_call), FN(clone_redirect), FN(get_current_pid_tgid), FN(get_current_uid_gid), FN(get_current_comm), FN(get_cgroup_classid), FN(skb_vlan_push), FN(skb_vlan_pop), FN(skb_get_tunnel_key), FN(skb_set_tunnel_key), FN(perf_event_read), FN(redirect), FN(get_route_realm), FN(perf_event_output), FN(skb_load_bytes), FN(get_stackid), FN(csum_diff), FN(skb_get_tunnel_opt), FN(skb_set_tunnel_opt), FN(skb_change_proto), FN(skb_change_type), FN(skb_under_cgroup), FN(get_hash_recalc), FN(get_current_task), FN(probe_write_user), FN(current_task_under_cgroup), FN(skb_change_tail), FN(skb_pull_data), FN(csum_update), FN(set_hash_invalid), FN(get_numa_node_id), FN(skb_change_head), FN(xdp_adjust_head), FN(probe_read_str), FN(get_socket_cookie), FN(get_socket_uid), FN(set_hash), FN(setsockopt), FN(skb_adjust_room), FN(redirect_map), FN(sk_redirect_map), FN(sock_map_update), FN(xdp_adjust_meta), FN(perf_event_read_value), FN(perf_prog_read_value), FN(getsockopt), FN(override_return), FN(sock_ops_cb_flags_set), FN(msg_redirect_map), FN(msg_apply_bytes), FN(msg_cork_bytes), FN(msg_pull_data), FN(bind), FN(xdp_adjust_tail), FN(skb_get_xfrm_state), FN(get_stack), FN(skb_load_bytes_relative), FN(fib_lookup), FN(sock_hash_update), FN(msg_redirect_hash), FN(sk_redirect_hash), FN(lwt_push_encap), FN(lwt_seg6_store_bytes), FN(lwt_seg6_adjust_srh), FN(lwt_seg6_action), FN(rc_repeat), FN(rc_keydown), FN(skb_cgroup_id), FN(get_current_cgroup_id), FN(get_local_storage), FN(sk_select_reuseport), FN(skb_ancestor_cgroup_id), FN(sk_lookup_tcp), FN(sk_lookup_udp), FN(sk_release), FN(map_push_elem), FN(map_pop_elem), FN(map_peek_elem), FN(msg_push_data), FN(msg_pop_data), FN(rc_pointer_rel), FN(spin_lock), FN(spin_unlock), FN(sk_fullsock), FN(tcp_sock), FN(skb_ecn_set_ce), FN(get_listener_sock), FN(skc_lookup_tcp), FN(tcp_check_syncookie), FN(sysctl_get_name), FN(sysctl_get_current_value), FN(sysctl_get_new_value), FN(sysctl_set_new_value), FN(strtol), FN(strtoul), FN(sk_storage_get), FN(sk_storage_delete), FN(send_signal), FN(tcp_gen_syncookie), FN(skb_output), FN(probe_read_user), FN(probe_read_kernel), FN(probe_read_user_str), FN(probe_read_kernel_str), FN(tcp_send_ack), FN(send_signal_thread), FN(jiffies64), FN(read_branch_records), FN(get_ns_current_pid_tgid), FN(xdp_output), FN(get_netns_cookie), FN(get_current_ancestor_cgroup_id), FN(sk_assign), FN(ktime_get_boot_ns), FN(seq_printf), FN(seq_write), FN(sk_cgroup_id), FN(sk_ancestor_cgroup_id), FN(ringbuf_output), FN(ringbuf_reserve), FN(ringbuf_submit), FN(ringbuf_discard), FN(ringbuf_query), FN(csum_level), FN(skc_to_tcp6_sock), FN(skc_to_tcp_sock), FN(skc_to_tcp_timewait_sock), FN(skc_to_tcp_request_sock), FN(skc_to_udp6_sock), FN(get_task_stack), FN(load_hdr_opt), FN(store_hdr_opt), FN(reserve_hdr_opt), FN(inode_storage_get), FN(inode_storage_delete), FN(d_path), FN(copy_from_user), FN(snprintf_btf), FN(seq_printf_btf), FN(skb_cgroup_classid), FN(redirect_neigh), FN(per_cpu_ptr), FN(this_cpu_ptr), FN(redirect_peer), FN(task_storage_get), FN(task_storage_delete), FN(get_current_task_btf), FN(bprm_opts_set), FN(ktime_get_coarse_ns), FN(ima_inode_hash), FN(sock_from_file), FN(check_mtu), FN(for_each_map_elem), FN(snprintf), FN(sys_bpf), FN(btf_find_by_name_kind), FN(sys_close), FN(timer_init), FN(timer_set_callback), FN(timer_start), FN(timer_cancel), FN(get_func_ip), FN(get_attach_cookie), FN(task_pt_regs), FN(get_branch_snapshot), FN(trace_vprintk), FN(skc_to_unix_sock), FN(kallsyms_lookup_name), FN(find_vma), FN(loop), FN(strncmp), FN(get_func_arg), FN(get_func_ret), FN(get_func_arg_cnt),
+#define __BPF_FUNC_MAPPER(FN) FN(unspec), FN(map_lookup_elem), FN(map_update_elem), FN(map_delete_elem), FN(probe_read), FN(ktime_get_ns), FN(trace_printk), FN(get_prandom_u32), FN(get_smp_processor_id), FN(skb_store_bytes), FN(l3_csum_replace), FN(l4_csum_replace), FN(tail_call), FN(clone_redirect), FN(get_current_pid_tgid), FN(get_current_uid_gid), FN(get_current_comm), FN(get_cgroup_classid), FN(skb_vlan_push), FN(skb_vlan_pop), FN(skb_get_tunnel_key), FN(skb_set_tunnel_key), FN(perf_event_read), FN(redirect), FN(get_route_realm), FN(perf_event_output), FN(skb_load_bytes), FN(get_stackid), FN(csum_diff), FN(skb_get_tunnel_opt), FN(skb_set_tunnel_opt), FN(skb_change_proto), FN(skb_change_type), FN(skb_under_cgroup), FN(get_hash_recalc), FN(get_current_task), FN(probe_write_user), FN(current_task_under_cgroup), FN(skb_change_tail), FN(skb_pull_data), FN(csum_update), FN(set_hash_invalid), FN(get_numa_node_id), FN(skb_change_head), FN(xdp_adjust_head), FN(probe_read_str), FN(get_socket_cookie), FN(get_socket_uid), FN(set_hash), FN(setsockopt), FN(skb_adjust_room), FN(redirect_map), FN(sk_redirect_map), FN(sock_map_update), FN(xdp_adjust_meta), FN(perf_event_read_value), FN(perf_prog_read_value), FN(getsockopt), FN(override_return), FN(sock_ops_cb_flags_set), FN(msg_redirect_map), FN(msg_apply_bytes), FN(msg_cork_bytes), FN(msg_pull_data), FN(bind), FN(xdp_adjust_tail), FN(skb_get_xfrm_state), FN(get_stack), FN(skb_load_bytes_relative), FN(fib_lookup), FN(sock_hash_update), FN(msg_redirect_hash), FN(sk_redirect_hash), FN(lwt_push_encap), FN(lwt_seg6_store_bytes), FN(lwt_seg6_adjust_srh), FN(lwt_seg6_action), FN(rc_repeat), FN(rc_keydown), FN(skb_cgroup_id), FN(get_current_cgroup_id), FN(get_local_storage), FN(sk_select_reuseport), FN(skb_ancestor_cgroup_id), FN(sk_lookup_tcp), FN(sk_lookup_udp), FN(sk_release), FN(map_push_elem), FN(map_pop_elem), FN(map_peek_elem), FN(msg_push_data), FN(msg_pop_data), FN(rc_pointer_rel), FN(spin_lock), FN(spin_unlock), FN(sk_fullsock), FN(tcp_sock), FN(skb_ecn_set_ce), FN(get_listener_sock), FN(skc_lookup_tcp), FN(tcp_check_syncookie), FN(sysctl_get_name), FN(sysctl_get_current_value), FN(sysctl_get_new_value), FN(sysctl_set_new_value), FN(strtol), FN(strtoul), FN(sk_storage_get), FN(sk_storage_delete), FN(send_signal), FN(tcp_gen_syncookie), FN(skb_output), FN(probe_read_user), FN(probe_read_kernel), FN(probe_read_user_str), FN(probe_read_kernel_str), FN(tcp_send_ack), FN(send_signal_thread), FN(jiffies64), FN(read_branch_records), FN(get_ns_current_pid_tgid), FN(xdp_output), FN(get_netns_cookie), FN(get_current_ancestor_cgroup_id), FN(sk_assign), FN(ktime_get_boot_ns), FN(seq_printf), FN(seq_write), FN(sk_cgroup_id), FN(sk_ancestor_cgroup_id), FN(ringbuf_output), FN(ringbuf_reserve), FN(ringbuf_submit), FN(ringbuf_discard), FN(ringbuf_query), FN(csum_level), FN(skc_to_tcp6_sock), FN(skc_to_tcp_sock), FN(skc_to_tcp_timewait_sock), FN(skc_to_tcp_request_sock), FN(skc_to_udp6_sock), FN(get_task_stack), FN(load_hdr_opt), FN(store_hdr_opt), FN(reserve_hdr_opt), FN(inode_storage_get), FN(inode_storage_delete), FN(d_path), FN(copy_from_user), FN(snprintf_btf), FN(seq_printf_btf), FN(skb_cgroup_classid), FN(redirect_neigh), FN(per_cpu_ptr), FN(this_cpu_ptr), FN(redirect_peer), FN(task_storage_get), FN(task_storage_delete), FN(get_current_task_btf), FN(bprm_opts_set), FN(ktime_get_coarse_ns), FN(ima_inode_hash), FN(sock_from_file), FN(check_mtu), FN(for_each_map_elem), FN(snprintf), FN(sys_bpf), FN(btf_find_by_name_kind), FN(sys_close), FN(timer_init), FN(timer_set_callback), FN(timer_start), FN(timer_cancel), FN(get_func_ip), FN(get_attach_cookie), FN(task_pt_regs), FN(get_branch_snapshot), FN(trace_vprintk), FN(skc_to_unix_sock), FN(kallsyms_lookup_name), FN(find_vma), FN(loop), FN(strncmp), FN(get_func_arg), FN(get_func_ret), FN(get_func_arg_cnt), FN(get_retval), FN(set_retval), FN(xdp_get_buff_len), FN(xdp_load_bytes), FN(xdp_store_bytes), FN(copy_from_user_task), FN(skb_set_tstamp), FN(ima_file_hash), FN(kptr_xchg), FN(map_lookup_percpu_elem), FN(skc_to_mptcp_sock), FN(dynptr_from_mem), FN(ringbuf_reserve_dynptr), FN(ringbuf_submit_dynptr), FN(ringbuf_discard_dynptr), FN(dynptr_read), FN(dynptr_write), FN(dynptr_data), FN(tcp_raw_gen_syncookie_ipv4), FN(tcp_raw_gen_syncookie_ipv6), FN(tcp_raw_check_syncookie_ipv4), FN(tcp_raw_check_syncookie_ipv6), FN(ktime_get_tai_ns), FN(user_ringbuf_drain),
 #define __BPF_ENUM_FN(x) BPF_FUNC_ ##x
 enum bpf_func_id {
   __BPF_FUNC_MAPPER(__BPF_ENUM_FN) __BPF_FUNC_MAX_ID,
@@ -517,6 +555,9 @@
   BPF_F_SEQ_NUMBER = (1ULL << 3),
 };
 enum {
+  BPF_F_TUNINFO_FLAGS = (1ULL << 4),
+};
+enum {
   BPF_F_INDEX_MASK = 0xffffffffULL,
   BPF_F_CURRENT_CPU = BPF_F_INDEX_MASK,
   BPF_F_CTXLEN_MASK = (0xfffffULL << 32),
@@ -595,6 +636,10 @@
 };
 #define __bpf_md_ptr(type,name) union { type name; __u64 : 64; \
 } __attribute__((aligned(8)))
+enum {
+  BPF_SKB_TSTAMP_UNSPEC,
+  BPF_SKB_TSTAMP_DELIVERY_MONO,
+};
 struct __sk_buff {
   __u32 len;
   __u32 pkt_type;
@@ -628,7 +673,8 @@
   __u32 gso_segs;
   __bpf_md_ptr(struct bpf_sock *, sk);
   __u32 gso_size;
-  __u32 : 32;
+  __u8 tstamp_type;
+  __u32 : 24;
   __u64 hwtstamp;
 };
 struct bpf_tunnel_key {
@@ -639,8 +685,15 @@
   };
   __u8 tunnel_tos;
   __u8 tunnel_ttl;
-  __u16 tunnel_ext;
+  union {
+    __u16 tunnel_ext;
+    __be16 tunnel_flags;
+  };
   __u32 tunnel_label;
+  union {
+    __u32 local_ipv4;
+    __u32 local_ipv6[4];
+  };
 };
 struct bpf_xfrm_state {
   __u32 reqid;
@@ -657,6 +710,7 @@
   BPF_DROP = 2,
   BPF_REDIRECT = 7,
   BPF_LWT_REROUTE = 128,
+  BPF_FLOW_DISSECTOR_CONTINUE = 129,
 };
 struct bpf_sock {
   __u32 bound_dev_if;
@@ -668,7 +722,8 @@
   __u32 src_ip4;
   __u32 src_ip6[4];
   __u32 src_port;
-  __u32 dst_port;
+  __be16 dst_port;
+  __u16 : 16;
   __u32 dst_ip4;
   __u32 dst_ip6[4];
   __u32 state;
@@ -818,6 +873,8 @@
   __u64 run_cnt;
   __u64 recursion_misses;
   __u32 verified_insns;
+  __u32 attach_btf_obj_id;
+  __u32 attach_btf_id;
 } __attribute__((aligned(8)));
 struct bpf_map_info {
   __u32 type;
@@ -871,6 +928,16 @@
           __u32 map_id;
         } map;
       };
+      union {
+        struct {
+          __u64 cgroup_id;
+          __u32 order;
+        } cgroup;
+        struct {
+          __u32 tid;
+          __u32 pid;
+        } task;
+      };
     } iter;
     struct {
       __u32 netns_ino;
@@ -1134,6 +1201,10 @@
   __u64 : 64;
   __u64 : 64;
 } __attribute__((aligned(8)));
+struct bpf_dynptr {
+  __u64 : 64;
+  __u64 : 64;
+} __attribute__((aligned(8)));
 struct bpf_sysctl {
   __u32 write;
   __u32 file_pos;
@@ -1160,7 +1231,8 @@
   __u32 protocol;
   __u32 remote_ip4;
   __u32 remote_ip6[4];
-  __u32 remote_port;
+  __be16 remote_port;
+  __u16 : 16;
   __u32 local_ip4;
   __u32 local_ip6[4];
   __u32 local_port;
@@ -1190,6 +1262,7 @@
   BPF_CORE_TYPE_SIZE = 9,
   BPF_CORE_ENUMVAL_EXISTS = 10,
   BPF_CORE_ENUMVAL_VALUE = 11,
+  BPF_CORE_TYPE_MATCHES = 12,
 };
 struct bpf_core_relo {
   __u32 insn_off;
diff --git a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/btf.h b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/btf.h
index fc57d3c..a1f68bf 100644
--- a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/btf.h
+++ b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/btf.h
@@ -65,6 +65,7 @@
   BTF_KIND_FLOAT = 16,
   BTF_KIND_DECL_TAG = 17,
   BTF_KIND_TYPE_TAG = 18,
+  BTF_KIND_ENUM64 = 19,
   NR_BTF_KINDS,
   BTF_KIND_MAX = NR_BTF_KINDS - 1,
 };
@@ -115,4 +116,9 @@
 struct btf_decl_tag {
   __s32 component_idx;
 };
+struct btf_enum64 {
+  __u32 name_off;
+  __u32 val_lo32;
+  __u32 val_hi32;
+};
 #endif
diff --git a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/btrfs.h b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/btrfs.h
index 08b96a3..506238f 100644
--- a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/btrfs.h
+++ b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/btrfs.h
@@ -59,7 +59,7 @@
   __u64 num_ref_copies;
   __u64 num_excl_copies;
   struct btrfs_qgroup_limit lim;
-  __u64 qgroups[0];
+  __u64 qgroups[];
 };
 struct btrfs_ioctl_qgroup_limit_args {
   __u64 qgroupid;
@@ -176,6 +176,7 @@
 #define BTRFS_FEATURE_COMPAT_RO_FREE_SPACE_TREE (1ULL << 0)
 #define BTRFS_FEATURE_COMPAT_RO_FREE_SPACE_TREE_VALID (1ULL << 1)
 #define BTRFS_FEATURE_COMPAT_RO_VERITY (1ULL << 2)
+#define BTRFS_FEATURE_COMPAT_RO_BLOCK_GROUP_TREE (1ULL << 3)
 #define BTRFS_FEATURE_INCOMPAT_MIXED_BACKREF (1ULL << 0)
 #define BTRFS_FEATURE_INCOMPAT_DEFAULT_SUBVOL (1ULL << 1)
 #define BTRFS_FEATURE_INCOMPAT_MIXED_GROUPS (1ULL << 2)
@@ -189,6 +190,7 @@
 #define BTRFS_FEATURE_INCOMPAT_METADATA_UUID (1ULL << 10)
 #define BTRFS_FEATURE_INCOMPAT_RAID1C34 (1ULL << 11)
 #define BTRFS_FEATURE_INCOMPAT_ZONED (1ULL << 12)
+#define BTRFS_FEATURE_INCOMPAT_EXTENT_TREE_V2 (1ULL << 13)
 struct btrfs_ioctl_feature_flags {
   __u64 compat_flags;
   __u64 compat_ro_flags;
@@ -303,7 +305,7 @@
 struct btrfs_ioctl_search_args_v2 {
   struct btrfs_ioctl_search_key key;
   __u64 buf_size;
-  __u64 buf[0];
+  __u64 buf[];
 };
 struct btrfs_ioctl_clone_range_args {
   __s64 src_fd;
@@ -334,7 +336,7 @@
   __u16 dest_count;
   __u16 reserved1;
   __u32 reserved2;
-  struct btrfs_ioctl_same_extent_info info[0];
+  struct btrfs_ioctl_same_extent_info info[];
 };
 struct btrfs_ioctl_space_info {
   __u64 flags;
@@ -344,14 +346,14 @@
 struct btrfs_ioctl_space_args {
   __u64 space_slots;
   __u64 total_spaces;
-  struct btrfs_ioctl_space_info spaces[0];
+  struct btrfs_ioctl_space_info spaces[];
 };
 struct btrfs_data_container {
   __u32 bytes_left;
   __u32 bytes_missing;
   __u32 elem_cnt;
   __u32 elem_missed;
-  __u64 val[0];
+  __u64 val[];
 };
 struct btrfs_ioctl_ino_path_args {
   __u64 inum;
@@ -421,7 +423,8 @@
 #define BTRFS_SEND_FLAG_OMIT_STREAM_HEADER 0x2
 #define BTRFS_SEND_FLAG_OMIT_END_CMD 0x4
 #define BTRFS_SEND_FLAG_VERSION 0x8
-#define BTRFS_SEND_FLAG_MASK (BTRFS_SEND_FLAG_NO_FILE_DATA | BTRFS_SEND_FLAG_OMIT_STREAM_HEADER | BTRFS_SEND_FLAG_OMIT_END_CMD | BTRFS_SEND_FLAG_VERSION)
+#define BTRFS_SEND_FLAG_COMPRESSED 0x10
+#define BTRFS_SEND_FLAG_MASK (BTRFS_SEND_FLAG_NO_FILE_DATA | BTRFS_SEND_FLAG_OMIT_STREAM_HEADER | BTRFS_SEND_FLAG_OMIT_END_CMD | BTRFS_SEND_FLAG_VERSION | BTRFS_SEND_FLAG_COMPRESSED)
 struct btrfs_ioctl_send_args {
   __s64 send_fd;
   __u64 clone_sources_count;
@@ -461,6 +464,29 @@
   __u8 num_items;
   __u8 align[7];
 };
+struct btrfs_ioctl_encoded_io_args {
+  const struct iovec __user * iov;
+  unsigned long iovcnt;
+  __s64 offset;
+  __u64 flags;
+  __u64 len;
+  __u64 unencoded_len;
+  __u64 unencoded_offset;
+  __u32 compression;
+  __u32 encryption;
+  __u8 reserved[64];
+};
+#define BTRFS_ENCODED_IO_COMPRESSION_NONE 0
+#define BTRFS_ENCODED_IO_COMPRESSION_ZLIB 1
+#define BTRFS_ENCODED_IO_COMPRESSION_ZSTD 2
+#define BTRFS_ENCODED_IO_COMPRESSION_LZO_4K 3
+#define BTRFS_ENCODED_IO_COMPRESSION_LZO_8K 4
+#define BTRFS_ENCODED_IO_COMPRESSION_LZO_16K 5
+#define BTRFS_ENCODED_IO_COMPRESSION_LZO_32K 6
+#define BTRFS_ENCODED_IO_COMPRESSION_LZO_64K 7
+#define BTRFS_ENCODED_IO_COMPRESSION_TYPES 8
+#define BTRFS_ENCODED_IO_ENCRYPTION_NONE 0
+#define BTRFS_ENCODED_IO_ENCRYPTION_TYPES 1
 enum btrfs_err_code {
   BTRFS_ERROR_DEV_RAID1_MIN_NOT_MET = 1,
   BTRFS_ERROR_DEV_RAID10_MIN_NOT_MET,
@@ -534,4 +560,6 @@
 #define BTRFS_IOC_GET_SUBVOL_ROOTREF _IOWR(BTRFS_IOCTL_MAGIC, 61, struct btrfs_ioctl_get_subvol_rootref_args)
 #define BTRFS_IOC_INO_LOOKUP_USER _IOWR(BTRFS_IOCTL_MAGIC, 62, struct btrfs_ioctl_ino_lookup_user_args)
 #define BTRFS_IOC_SNAP_DESTROY_V2 _IOW(BTRFS_IOCTL_MAGIC, 63, struct btrfs_ioctl_vol_args_v2)
+#define BTRFS_IOC_ENCODED_READ _IOR(BTRFS_IOCTL_MAGIC, 64, struct btrfs_ioctl_encoded_io_args)
+#define BTRFS_IOC_ENCODED_WRITE _IOW(BTRFS_IOCTL_MAGIC, 64, struct btrfs_ioctl_encoded_io_args)
 #endif
diff --git a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/btrfs_tree.h b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/btrfs_tree.h
index 0476733..6cd46dd 100644
--- a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/btrfs_tree.h
+++ b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/btrfs_tree.h
@@ -31,6 +31,7 @@
 #define BTRFS_QUOTA_TREE_OBJECTID 8ULL
 #define BTRFS_UUID_TREE_OBJECTID 9ULL
 #define BTRFS_FREE_SPACE_TREE_OBJECTID 10ULL
+#define BTRFS_BLOCK_GROUP_TREE_OBJECTID 11ULL
 #define BTRFS_DEV_STATS_OBJECTID 0ULL
 #define BTRFS_BALANCE_OBJECTID - 4ULL
 #define BTRFS_ORPHAN_OBJECTID - 5ULL
@@ -220,7 +221,7 @@
   __le64 parent_objectid;
   __le64 index;
   __le16 name_len;
-  __u8 name[0];
+  __u8 name[];
 } __attribute__((__packed__));
 struct btrfs_timespec {
   __le64 sec;
@@ -372,18 +373,6 @@
 #define BTRFS_BLOCK_GROUP_RAID1C3 (1ULL << 9)
 #define BTRFS_BLOCK_GROUP_RAID1C4 (1ULL << 10)
 #define BTRFS_BLOCK_GROUP_RESERVED (BTRFS_AVAIL_ALLOC_BIT_SINGLE | BTRFS_SPACE_INFO_GLOBAL_RSV)
-enum btrfs_raid_types {
-  BTRFS_RAID_RAID10,
-  BTRFS_RAID_RAID1,
-  BTRFS_RAID_DUP,
-  BTRFS_RAID_RAID0,
-  BTRFS_RAID_SINGLE,
-  BTRFS_RAID_RAID5,
-  BTRFS_RAID_RAID6,
-  BTRFS_RAID_RAID1C3,
-  BTRFS_RAID_RAID1C4,
-  BTRFS_NR_RAID_TYPES
-};
 #define BTRFS_BLOCK_GROUP_TYPE_MASK (BTRFS_BLOCK_GROUP_DATA | BTRFS_BLOCK_GROUP_SYSTEM | BTRFS_BLOCK_GROUP_METADATA)
 #define BTRFS_BLOCK_GROUP_PROFILE_MASK (BTRFS_BLOCK_GROUP_RAID0 | BTRFS_BLOCK_GROUP_RAID1 | BTRFS_BLOCK_GROUP_RAID1C3 | BTRFS_BLOCK_GROUP_RAID1C4 | BTRFS_BLOCK_GROUP_RAID5 | BTRFS_BLOCK_GROUP_RAID6 | BTRFS_BLOCK_GROUP_DUP | BTRFS_BLOCK_GROUP_RAID10)
 #define BTRFS_BLOCK_GROUP_RAID56_MASK (BTRFS_BLOCK_GROUP_RAID5 | BTRFS_BLOCK_GROUP_RAID6)
@@ -405,6 +394,7 @@
 #define BTRFS_QGROUP_STATUS_FLAG_ON (1ULL << 0)
 #define BTRFS_QGROUP_STATUS_FLAG_RESCAN (1ULL << 1)
 #define BTRFS_QGROUP_STATUS_FLAG_INCONSISTENT (1ULL << 2)
+#define BTRFS_QGROUP_STATUS_FLAGS_MASK (BTRFS_QGROUP_STATUS_FLAG_ON | BTRFS_QGROUP_STATUS_FLAG_RESCAN | BTRFS_QGROUP_STATUS_FLAG_INCONSISTENT)
 #define BTRFS_QGROUP_STATUS_VERSION 1
 struct btrfs_qgroup_status_item {
   __le64 version;
diff --git a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/cachefiles.h b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/cachefiles.h
new file mode 100644
index 0000000..f5a58a5
--- /dev/null
+++ b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/cachefiles.h
@@ -0,0 +1,48 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _LINUX_CACHEFILES_H
+#define _LINUX_CACHEFILES_H
+#include <linux/types.h>
+#include <linux/ioctl.h>
+#define CACHEFILES_MSG_MAX_SIZE 1024
+enum cachefiles_opcode {
+  CACHEFILES_OP_OPEN,
+  CACHEFILES_OP_CLOSE,
+  CACHEFILES_OP_READ,
+};
+struct cachefiles_msg {
+  __u32 msg_id;
+  __u32 opcode;
+  __u32 len;
+  __u32 object_id;
+  __u8 data[];
+};
+struct cachefiles_open {
+  __u32 volume_key_size;
+  __u32 cookie_key_size;
+  __u32 fd;
+  __u32 flags;
+  __u8 data[];
+};
+struct cachefiles_read {
+  __u64 off;
+  __u64 len;
+};
+#define CACHEFILES_IOC_READ_COMPLETE _IOW(0x98, 1, int)
+#endif
diff --git a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/can.h b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/can.h
index 30eeca2..1365dba 100644
--- a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/can.h
+++ b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/can.h
@@ -20,21 +20,29 @@
 #define _UAPI_CAN_H
 #include <linux/types.h>
 #include <linux/socket.h>
+#include <linux/stddef.h>
 #define CAN_EFF_FLAG 0x80000000U
 #define CAN_RTR_FLAG 0x40000000U
 #define CAN_ERR_FLAG 0x20000000U
 #define CAN_SFF_MASK 0x000007FFU
 #define CAN_EFF_MASK 0x1FFFFFFFU
 #define CAN_ERR_MASK 0x1FFFFFFFU
+#define CANXL_PRIO_MASK CAN_SFF_MASK
 typedef __u32 canid_t;
 #define CAN_SFF_ID_BITS 11
 #define CAN_EFF_ID_BITS 29
+#define CANXL_PRIO_BITS CAN_SFF_ID_BITS
 typedef __u32 can_err_mask_t;
 #define CAN_MAX_DLC 8
 #define CAN_MAX_RAW_DLC 15
 #define CAN_MAX_DLEN 8
 #define CANFD_MAX_DLC 15
 #define CANFD_MAX_DLEN 64
+#define CANXL_MIN_DLC 0
+#define CANXL_MAX_DLC 2047
+#define CANXL_MAX_DLC_MASK 0x07FF
+#define CANXL_MIN_DLEN 1
+#define CANXL_MAX_DLEN 2048
 struct can_frame {
   canid_t can_id;
   union {
@@ -57,8 +65,22 @@
   __u8 __res1;
   __u8 data[CANFD_MAX_DLEN] __attribute__((aligned(8)));
 };
+#define CANXL_XLF 0x80
+#define CANXL_SEC 0x01
+struct canxl_frame {
+  canid_t prio;
+  __u8 flags;
+  __u8 sdt;
+  __u16 len;
+  __u32 af;
+  __u8 data[CANXL_MAX_DLEN];
+};
 #define CAN_MTU (sizeof(struct can_frame))
 #define CANFD_MTU (sizeof(struct canfd_frame))
+#define CANXL_MTU (sizeof(struct canxl_frame))
+#define CANXL_HDR_SIZE (offsetof(struct canxl_frame, data))
+#define CANXL_MIN_MTU (CANXL_HDR_SIZE + 64)
+#define CANXL_MAX_MTU CANXL_MTU
 #define CAN_RAW 1
 #define CAN_BCM 2
 #define CAN_TP16 3
diff --git a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/can/bcm.h b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/can/bcm.h
index 42e0782..f5ab2c2 100644
--- a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/can/bcm.h
+++ b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/can/bcm.h
@@ -31,7 +31,7 @@
   struct bcm_timeval ival1, ival2;
   canid_t can_id;
   __u32 nframes;
-  struct can_frame frames[0];
+  struct can_frame frames[];
 };
 enum {
   TX_SETUP = 1,
diff --git a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/can/error.h b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/can/error.h
index 645373b..f585d2c 100644
--- a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/can/error.h
+++ b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/can/error.h
@@ -28,6 +28,7 @@
 #define CAN_ERR_BUSOFF 0x00000040U
 #define CAN_ERR_BUSERROR 0x00000080U
 #define CAN_ERR_RESTARTED 0x00000100U
+#define CAN_ERR_CNT 0x00000200U
 #define CAN_ERR_LOSTARB_UNSPEC 0x00
 #define CAN_ERR_CRTL_UNSPEC 0x00
 #define CAN_ERR_CRTL_RX_OVERFLOW 0x01
@@ -76,4 +77,7 @@
 #define CAN_ERR_TRX_CANL_SHORT_TO_VCC 0x60
 #define CAN_ERR_TRX_CANL_SHORT_TO_GND 0x70
 #define CAN_ERR_TRX_CANL_SHORT_TO_CANH 0x80
+#define CAN_ERROR_WARNING_THRESHOLD 96
+#define CAN_ERROR_PASSIVE_THRESHOLD 128
+#define CAN_BUS_OFF_THRESHOLD 256
 #endif
diff --git a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/can/isotp.h b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/can/isotp.h
index dd5e4f5..f51aa59 100644
--- a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/can/isotp.h
+++ b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/can/isotp.h
@@ -44,26 +44,28 @@
   __u8 tx_dl;
   __u8 tx_flags;
 };
-#define CAN_ISOTP_LISTEN_MODE 0x001
-#define CAN_ISOTP_EXTEND_ADDR 0x002
-#define CAN_ISOTP_TX_PADDING 0x004
-#define CAN_ISOTP_RX_PADDING 0x008
-#define CAN_ISOTP_CHK_PAD_LEN 0x010
-#define CAN_ISOTP_CHK_PAD_DATA 0x020
-#define CAN_ISOTP_HALF_DUPLEX 0x040
-#define CAN_ISOTP_FORCE_TXSTMIN 0x080
-#define CAN_ISOTP_FORCE_RXSTMIN 0x100
-#define CAN_ISOTP_RX_EXT_ADDR 0x200
-#define CAN_ISOTP_WAIT_TX_DONE 0x400
-#define CAN_ISOTP_SF_BROADCAST 0x800
+#define CAN_ISOTP_LISTEN_MODE 0x0001
+#define CAN_ISOTP_EXTEND_ADDR 0x0002
+#define CAN_ISOTP_TX_PADDING 0x0004
+#define CAN_ISOTP_RX_PADDING 0x0008
+#define CAN_ISOTP_CHK_PAD_LEN 0x0010
+#define CAN_ISOTP_CHK_PAD_DATA 0x0020
+#define CAN_ISOTP_HALF_DUPLEX 0x0040
+#define CAN_ISOTP_FORCE_TXSTMIN 0x0080
+#define CAN_ISOTP_FORCE_RXSTMIN 0x0100
+#define CAN_ISOTP_RX_EXT_ADDR 0x0200
+#define CAN_ISOTP_WAIT_TX_DONE 0x0400
+#define CAN_ISOTP_SF_BROADCAST 0x0800
+#define CAN_ISOTP_CF_BROADCAST 0x1000
 #define CAN_ISOTP_DEFAULT_FLAGS 0
 #define CAN_ISOTP_DEFAULT_EXT_ADDRESS 0x00
 #define CAN_ISOTP_DEFAULT_PAD_CONTENT 0xCC
-#define CAN_ISOTP_DEFAULT_FRAME_TXTIME 0
+#define CAN_ISOTP_DEFAULT_FRAME_TXTIME 50000
 #define CAN_ISOTP_DEFAULT_RECV_BS 0
 #define CAN_ISOTP_DEFAULT_RECV_STMIN 0x00
 #define CAN_ISOTP_DEFAULT_RECV_WFTMAX 0
 #define CAN_ISOTP_DEFAULT_LL_MTU CAN_MTU
 #define CAN_ISOTP_DEFAULT_LL_TX_DL CAN_MAX_DLEN
 #define CAN_ISOTP_DEFAULT_LL_TX_FLAGS 0
+#define CAN_ISOTP_FRAME_TXTIME_ZERO 0xFFFFFFFF
 #endif
diff --git a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/can/raw.h b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/can/raw.h
index a3bddb7..f8de179 100644
--- a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/can/raw.h
+++ b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/can/raw.h
@@ -30,5 +30,6 @@
   CAN_RAW_RECV_OWN_MSGS,
   CAN_RAW_FD_FRAMES,
   CAN_RAW_JOIN_FILTERS,
+  CAN_RAW_XL_FRAMES,
 };
 #endif
diff --git a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/capability.h b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/capability.h
index 958e6ab..c1b5dbf 100644
--- a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/capability.h
+++ b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/capability.h
@@ -111,5 +111,5 @@
 #define CAP_LAST_CAP CAP_CHECKPOINT_RESTORE
 #define cap_valid(x) ((x) >= 0 && (x) <= CAP_LAST_CAP)
 #define CAP_TO_INDEX(x) ((x) >> 5)
-#define CAP_TO_MASK(x) (1 << ((x) & 31))
+#define CAP_TO_MASK(x) (1U << ((x) & 31))
 #endif
diff --git a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/cec.h b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/cec.h
index b90dc49..3953fe3 100644
--- a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/cec.h
+++ b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/cec.h
@@ -340,6 +340,7 @@
 #define CEC_OP_FEAT_DEV_HAS_SET_AUDIO_RATE 0x08
 #define CEC_OP_FEAT_DEV_SINK_HAS_ARC_TX 0x04
 #define CEC_OP_FEAT_DEV_SOURCE_HAS_ARC_RX 0x02
+#define CEC_OP_FEAT_DEV_HAS_SET_AUDIO_VOLUME_LEVEL 0x01
 #define CEC_MSG_GIVE_FEATURES 0xa5
 #define CEC_MSG_DECK_CONTROL 0x42
 #define CEC_OP_DECK_CTL_MODE_SKIP_FWD 1
@@ -554,6 +555,7 @@
 #define CEC_MSG_SYSTEM_AUDIO_MODE_STATUS 0x7e
 #define CEC_OP_AUD_FMT_ID_CEA861 0
 #define CEC_OP_AUD_FMT_ID_CEA861_CXT 1
+#define CEC_MSG_SET_AUDIO_VOLUME_LEVEL 0x73
 #define CEC_MSG_SET_AUDIO_RATE 0x9a
 #define CEC_OP_AUD_RATE_OFF 0
 #define CEC_OP_AUD_RATE_WIDE_STD 1
diff --git a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/connector.h b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/connector.h
index adf3a7f..e3891e3 100644
--- a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/connector.h
+++ b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/connector.h
@@ -50,6 +50,6 @@
   __u32 ack;
   __u16 len;
   __u16 flags;
-  __u8 data[0];
+  __u8 data[];
 };
 #endif
diff --git a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/counter.h b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/counter.h
index 091e33d..f986365 100644
--- a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/counter.h
+++ b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/counter.h
@@ -45,6 +45,8 @@
   COUNTER_EVENT_OVERFLOW_UNDERFLOW,
   COUNTER_EVENT_THRESHOLD,
   COUNTER_EVENT_INDEX,
+  COUNTER_EVENT_CHANGE_OF_STATE,
+  COUNTER_EVENT_CAPTURE,
 };
 struct counter_watch {
   struct counter_component component;
@@ -90,4 +92,8 @@
   COUNTER_SYNAPSE_ACTION_FALLING_EDGE,
   COUNTER_SYNAPSE_ACTION_BOTH_EDGES,
 };
+enum counter_signal_polarity {
+  COUNTER_SIGNAL_POLARITY_POSITIVE,
+  COUNTER_SIGNAL_POLARITY_NEGATIVE,
+};
 #endif
diff --git a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/cxl_mem.h b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/cxl_mem.h
index 15e9e29..578cefd 100644
--- a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/cxl_mem.h
+++ b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/cxl_mem.h
@@ -38,8 +38,8 @@
   __u32 id;
   __u32 flags;
 #define CXL_MEM_COMMAND_FLAG_MASK GENMASK(0, 0)
-  __s32 size_in;
-  __s32 size_out;
+  __u32 size_in;
+  __u32 size_out;
 };
 struct cxl_mem_query_commands {
   __u32 n_commands;
@@ -58,12 +58,12 @@
   };
   __u32 retval;
   struct {
-    __s32 size;
+    __u32 size;
     __u32 rsvd;
     __u64 payload;
   } in;
   struct {
-    __s32 size;
+    __u32 size;
     __u32 rsvd;
     __u64 payload;
   } out;
diff --git a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/cycx_cfm.h b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/cycx_cfm.h
index 052de53..230b58d 100644
--- a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/cycx_cfm.h
+++ b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/cycx_cfm.h
@@ -53,7 +53,7 @@
   unsigned short reserved[6];
   char descr[CFM_DESCR_LEN];
   struct cycx_fw_info info;
-  unsigned char image[0];
+  unsigned char image[];
 };
 struct cycx_fw_header {
   unsigned long reset_size;
diff --git a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/devlink.h b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/devlink.h
index a809306..b2cdafa 100644
--- a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/devlink.h
+++ b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/devlink.h
@@ -103,6 +103,12 @@
   DEVLINK_CMD_RATE_SET,
   DEVLINK_CMD_RATE_NEW,
   DEVLINK_CMD_RATE_DEL,
+  DEVLINK_CMD_LINECARD_GET,
+  DEVLINK_CMD_LINECARD_SET,
+  DEVLINK_CMD_LINECARD_NEW,
+  DEVLINK_CMD_LINECARD_DEL,
+  DEVLINK_CMD_SELFTESTS_GET,
+  DEVLINK_CMD_SELFTESTS_RUN,
   __DEVLINK_CMD_MAX,
   DEVLINK_CMD_MAX = __DEVLINK_CMD_MAX - 1
 };
@@ -184,6 +190,25 @@
 #define DEVLINK_FLASH_OVERWRITE_SETTINGS _BITUL(DEVLINK_FLASH_OVERWRITE_SETTINGS_BIT)
 #define DEVLINK_FLASH_OVERWRITE_IDENTIFIERS _BITUL(DEVLINK_FLASH_OVERWRITE_IDENTIFIERS_BIT)
 #define DEVLINK_SUPPORTED_FLASH_OVERWRITE_SECTIONS (_BITUL(__DEVLINK_FLASH_OVERWRITE_MAX_BIT) - 1)
+enum devlink_attr_selftest_id {
+  DEVLINK_ATTR_SELFTEST_ID_UNSPEC,
+  DEVLINK_ATTR_SELFTEST_ID_FLASH,
+  __DEVLINK_ATTR_SELFTEST_ID_MAX,
+  DEVLINK_ATTR_SELFTEST_ID_MAX = __DEVLINK_ATTR_SELFTEST_ID_MAX - 1
+};
+enum devlink_selftest_status {
+  DEVLINK_SELFTEST_STATUS_SKIP,
+  DEVLINK_SELFTEST_STATUS_PASS,
+  DEVLINK_SELFTEST_STATUS_FAIL
+};
+enum devlink_attr_selftest_result {
+  DEVLINK_ATTR_SELFTEST_RESULT_UNSPEC,
+  DEVLINK_ATTR_SELFTEST_RESULT,
+  DEVLINK_ATTR_SELFTEST_RESULT_ID,
+  DEVLINK_ATTR_SELFTEST_RESULT_STATUS,
+  __DEVLINK_ATTR_SELFTEST_RESULT_MAX,
+  DEVLINK_ATTR_SELFTEST_RESULT_MAX = __DEVLINK_ATTR_SELFTEST_RESULT_MAX - 1
+};
 enum devlink_trap_action {
   DEVLINK_TRAP_ACTION_DROP,
   DEVLINK_TRAP_ACTION_TRAP,
@@ -212,6 +237,17 @@
   DEVLINK_RELOAD_LIMIT_MAX = __DEVLINK_RELOAD_LIMIT_MAX - 1
 };
 #define DEVLINK_RELOAD_LIMITS_VALID_MASK (_BITUL(__DEVLINK_RELOAD_LIMIT_MAX) - 1)
+enum devlink_linecard_state {
+  DEVLINK_LINECARD_STATE_UNSPEC,
+  DEVLINK_LINECARD_STATE_UNPROVISIONED,
+  DEVLINK_LINECARD_STATE_UNPROVISIONING,
+  DEVLINK_LINECARD_STATE_PROVISIONING,
+  DEVLINK_LINECARD_STATE_PROVISIONING_FAILED,
+  DEVLINK_LINECARD_STATE_PROVISIONED,
+  DEVLINK_LINECARD_STATE_ACTIVE,
+  __DEVLINK_LINECARD_STATE_MAX,
+  DEVLINK_LINECARD_STATE_MAX = __DEVLINK_LINECARD_STATE_MAX - 1
+};
 enum devlink_attr {
   DEVLINK_ATTR_UNSPEC,
   DEVLINK_ATTR_BUS_NAME,
@@ -384,6 +420,12 @@
   DEVLINK_ATTR_RATE_NODE_NAME,
   DEVLINK_ATTR_RATE_PARENT_NODE_NAME,
   DEVLINK_ATTR_REGION_MAX_SNAPSHOTS,
+  DEVLINK_ATTR_LINECARD_INDEX,
+  DEVLINK_ATTR_LINECARD_STATE,
+  DEVLINK_ATTR_LINECARD_TYPE,
+  DEVLINK_ATTR_LINECARD_SUPPORTED_TYPES,
+  DEVLINK_ATTR_NESTED_DEVLINK,
+  DEVLINK_ATTR_SELFTESTS,
   __DEVLINK_ATTR_MAX,
   DEVLINK_ATTR_MAX = __DEVLINK_ATTR_MAX - 1
 };
diff --git a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/dlm.h b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/dlm.h
index c75918f..499baad 100644
--- a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/dlm.h
+++ b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/dlm.h
@@ -31,6 +31,5 @@
   char * sb_lvbptr;
 };
 #define DLM_LSFL_TIMEWARN 0x00000002
-#define DLM_LSFL_FS 0x00000004
 #define DLM_LSFL_NEWEXCL 0x00000008
 #endif
diff --git a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/dm-ioctl.h b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/dm-ioctl.h
index 09f8a98..f0ff78c 100644
--- a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/dm-ioctl.h
+++ b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/dm-ioctl.h
@@ -48,23 +48,23 @@
 struct dm_target_deps {
   __u32 count;
   __u32 padding;
-  __u64 dev[0];
+  __u64 dev[];
 };
 struct dm_name_list {
   __u64 dev;
   __u32 next;
-  char name[0];
+  char name[];
 };
 #define DM_NAME_LIST_FLAG_HAS_UUID 1
 #define DM_NAME_LIST_FLAG_DOESNT_HAVE_UUID 2
 struct dm_target_versions {
   __u32 next;
   __u32 version[3];
-  char name[0];
+  char name[];
 };
 struct dm_target_msg {
   __u64 sector;
-  char message[0];
+  char message[];
 };
 enum {
   DM_VERSION_CMD = 0,
@@ -106,9 +106,9 @@
 #define DM_TARGET_MSG _IOWR(DM_IOCTL, DM_TARGET_MSG_CMD, struct dm_ioctl)
 #define DM_DEV_SET_GEOMETRY _IOWR(DM_IOCTL, DM_DEV_SET_GEOMETRY_CMD, struct dm_ioctl)
 #define DM_VERSION_MAJOR 4
-#define DM_VERSION_MINOR 45
+#define DM_VERSION_MINOR 47
 #define DM_VERSION_PATCHLEVEL 0
-#define DM_VERSION_EXTRA "-ioctl(2021-03-22)"
+#define DM_VERSION_EXTRA "-ioctl(2022-07-28)"
 #define DM_READONLY_FLAG (1 << 0)
 #define DM_SUSPEND_FLAG (1 << 1)
 #define DM_PERSISTENT_DEV_FLAG (1 << 3)
diff --git a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/dm-log-userspace.h b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/dm-log-userspace.h
index 4f0671b..37feee6 100644
--- a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/dm-log-userspace.h
+++ b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/dm-log-userspace.h
@@ -49,6 +49,6 @@
   __u32 seq;
   __u32 request_type;
   __u32 data_size;
-  char data[0];
+  char data[];
 };
 #endif
diff --git a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/dma-buf.h b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/dma-buf.h
index 221c20f..7462c15 100644
--- a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/dma-buf.h
+++ b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/dma-buf.h
@@ -29,9 +29,19 @@
 #define DMA_BUF_SYNC_END (1 << 2)
 #define DMA_BUF_SYNC_VALID_FLAGS_MASK (DMA_BUF_SYNC_RW | DMA_BUF_SYNC_END)
 #define DMA_BUF_NAME_LEN 32
+struct dma_buf_export_sync_file {
+  __u32 flags;
+  __s32 fd;
+};
+struct dma_buf_import_sync_file {
+  __u32 flags;
+  __s32 fd;
+};
 #define DMA_BUF_BASE 'b'
 #define DMA_BUF_IOCTL_SYNC _IOW(DMA_BUF_BASE, 0, struct dma_buf_sync)
 #define DMA_BUF_SET_NAME _IOW(DMA_BUF_BASE, 1, const char *)
-#define DMA_BUF_SET_NAME_A _IOW(DMA_BUF_BASE, 1, u32)
-#define DMA_BUF_SET_NAME_B _IOW(DMA_BUF_BASE, 1, u64)
+#define DMA_BUF_SET_NAME_A _IOW(DMA_BUF_BASE, 1, __u32)
+#define DMA_BUF_SET_NAME_B _IOW(DMA_BUF_BASE, 1, __u64)
+#define DMA_BUF_IOCTL_EXPORT_SYNC_FILE _IOWR(DMA_BUF_BASE, 2, struct dma_buf_export_sync_file)
+#define DMA_BUF_IOCTL_IMPORT_SYNC_FILE _IOW(DMA_BUF_BASE, 3, struct dma_buf_import_sync_file)
 #endif
diff --git a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/dn.h b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/dn.h
deleted file mode 100644
index 621f60f..0000000
--- a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/dn.h
+++ /dev/null
@@ -1,114 +0,0 @@
-/****************************************************************************
- ****************************************************************************
- ***
- ***   This header was automatically generated from a Linux kernel header
- ***   of the same name, to make information necessary for userspace to
- ***   call into the kernel available to libc.  It contains only constants,
- ***   structures, and macros generated from the original header, and thus,
- ***   contains no copyrightable information.
- ***
- ***   To edit the content of this header, modify the corresponding
- ***   source file (e.g. under external/kernel-headers/original/) then
- ***   run bionic/libc/kernel/tools/update_all.py
- ***
- ***   Any manual change here will be lost the next time this script will
- ***   be run. You've been warned!
- ***
- ****************************************************************************
- ****************************************************************************/
-#ifndef _LINUX_DN_H
-#define _LINUX_DN_H
-#include <linux/ioctl.h>
-#include <linux/types.h>
-#include <linux/if_ether.h>
-#define DNPROTO_NSP 2
-#define DNPROTO_ROU 3
-#define DNPROTO_NML 4
-#define DNPROTO_EVL 5
-#define DNPROTO_EVR 6
-#define DNPROTO_NSPT 7
-#define DN_ADDL 2
-#define DN_MAXADDL 2
-#define DN_MAXOPTL 16
-#define DN_MAXOBJL 16
-#define DN_MAXACCL 40
-#define DN_MAXALIASL 128
-#define DN_MAXNODEL 256
-#define DNBUFSIZE 65023
-#define SO_CONDATA 1
-#define SO_CONACCESS 2
-#define SO_PROXYUSR 3
-#define SO_LINKINFO 7
-#define DSO_CONDATA 1
-#define DSO_DISDATA 10
-#define DSO_CONACCESS 2
-#define DSO_ACCEPTMODE 4
-#define DSO_CONACCEPT 5
-#define DSO_CONREJECT 6
-#define DSO_LINKINFO 7
-#define DSO_STREAM 8
-#define DSO_SEQPACKET 9
-#define DSO_MAXWINDOW 11
-#define DSO_NODELAY 12
-#define DSO_CORK 13
-#define DSO_SERVICES 14
-#define DSO_INFO 15
-#define DSO_MAX 15
-#define LL_INACTIVE 0
-#define LL_CONNECTING 1
-#define LL_RUNNING 2
-#define LL_DISCONNECTING 3
-#define ACC_IMMED 0
-#define ACC_DEFER 1
-#define SDF_WILD 1
-#define SDF_PROXY 2
-#define SDF_UICPROXY 4
-struct dn_naddr {
-  __le16 a_len;
-  __u8 a_addr[DN_MAXADDL];
-};
-struct sockaddr_dn {
-  __u16 sdn_family;
-  __u8 sdn_flags;
-  __u8 sdn_objnum;
-  __le16 sdn_objnamel;
-  __u8 sdn_objname[DN_MAXOBJL];
-  struct dn_naddr sdn_add;
-};
-#define sdn_nodeaddrl sdn_add.a_len
-#define sdn_nodeaddr sdn_add.a_addr
-struct optdata_dn {
-  __le16 opt_status;
-#define opt_sts opt_status
-  __le16 opt_optl;
-  __u8 opt_data[16];
-};
-struct accessdata_dn {
-  __u8 acc_accl;
-  __u8 acc_acc[DN_MAXACCL];
-  __u8 acc_passl;
-  __u8 acc_pass[DN_MAXACCL];
-  __u8 acc_userl;
-  __u8 acc_user[DN_MAXACCL];
-};
-struct linkinfo_dn {
-  __u16 idn_segsize;
-  __u8 idn_linkstate;
-};
-union etheraddress {
-  __u8 dne_addr[ETH_ALEN];
-  struct {
-    __u8 dne_hiord[4];
-    __u8 dne_nodeaddr[2];
-  } dne_remote;
-};
-struct dn_addr {
-  __le16 dna_family;
-  union etheraddress dna_netaddr;
-};
-#define DECNET_IOCTL_BASE 0x89
-#define SIOCSNETADDR _IOW(DECNET_IOCTL_BASE, 0xe0, struct dn_naddr)
-#define SIOCGNETADDR _IOR(DECNET_IOCTL_BASE, 0xe1, struct dn_naddr)
-#define OSIOCSNETADDR _IOW(DECNET_IOCTL_BASE, 0xe0, int)
-#define OSIOCGNETADDR _IOR(DECNET_IOCTL_BASE, 0xe1, int)
-#endif
diff --git a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/dns_resolver.h b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/dns_resolver.h
index 21cb5c0..e7113d0 100644
--- a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/dns_resolver.h
+++ b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/dns_resolver.h
@@ -55,13 +55,13 @@
   __u8 zero;
   __u8 content;
   __u8 version;
-} __packed;
+} __attribute__((__packed__));
 struct dns_server_list_v1_header {
   struct dns_payload_header hdr;
   __u8 source;
   __u8 status;
   __u8 nr_servers;
-} __packed;
+} __attribute__((__packed__));
 struct dns_server_list_v1_server {
   __u16 name_len;
   __u16 priority;
@@ -71,8 +71,8 @@
   __u8 status;
   __u8 protocol;
   __u8 nr_addrs;
-} __packed;
+} __attribute__((__packed__));
 struct dns_server_list_v1_address {
   __u8 address_type;
-} __packed;
+} __attribute__((__packed__));
 #endif
diff --git a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/dw100.h b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/dw100.h
new file mode 100644
index 0000000..13d8487
--- /dev/null
+++ b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/dw100.h
@@ -0,0 +1,23 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef __UAPI_DW100_H__
+#define __UAPI_DW100_H__
+#include <linux/v4l2-controls.h>
+#define V4L2_CID_DW100_DEWARPING_16x16_VERTEX_MAP (V4L2_CID_USER_DW100_BASE + 1)
+#endif
diff --git a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/elf-em.h b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/elf-em.h
index d1ed1f6..92da93d 100644
--- a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/elf-em.h
+++ b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/elf-em.h
@@ -61,6 +61,7 @@
 #define EM_RISCV 243
 #define EM_BPF 247
 #define EM_CSKY 252
+#define EM_LOONGARCH 258
 #define EM_FRV 0x5441
 #define EM_ALPHA 0x9026
 #define EM_CYGNUS_M32R 0x9041
diff --git a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/elf.h b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/elf.h
index 7655f12..28c8426 100644
--- a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/elf.h
+++ b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/elf.h
@@ -45,9 +45,11 @@
 #define PT_HIOS 0x6fffffff
 #define PT_LOPROC 0x70000000
 #define PT_HIPROC 0x7fffffff
-#define PT_GNU_EH_FRAME 0x6474e550
-#define PT_GNU_PROPERTY 0x6474e553
+#define PT_GNU_EH_FRAME (PT_LOOS + 0x474e550)
 #define PT_GNU_STACK (PT_LOOS + 0x474e551)
+#define PT_GNU_RELRO (PT_LOOS + 0x474e552)
+#define PT_GNU_PROPERTY (PT_LOOS + 0x474e553)
+#define PT_AARCH64_MEMTAG_MTE (PT_LOPROC + 0x2)
 #define PN_XNUM 0xffff
 #define ET_NONE 0
 #define ET_REL 1
@@ -110,7 +112,7 @@
 #define STT_COMMON 5
 #define STT_TLS 6
 #define ELF_ST_BIND(x) ((x) >> 4)
-#define ELF_ST_TYPE(x) (((unsigned int) x) & 0xf)
+#define ELF_ST_TYPE(x) ((x) & 0xf)
 #define ELF32_ST_BIND(x) ELF_ST_BIND(x)
 #define ELF32_ST_TYPE(x) ELF_ST_TYPE(x)
 #define ELF64_ST_BIND(x) ELF_ST_BIND(x)
@@ -350,6 +352,7 @@
 #define NT_S390_GS_CB 0x30b
 #define NT_S390_GS_BC 0x30c
 #define NT_S390_RI_CB 0x30d
+#define NT_S390_PV_CPU_DATA 0x30e
 #define NT_ARM_VFP 0x400
 #define NT_ARM_TLS 0x401
 #define NT_ARM_HW_BREAK 0x402
@@ -361,11 +364,18 @@
 #define NT_ARM_PACG_KEYS 0x408
 #define NT_ARM_TAGGED_ADDR_CTRL 0x409
 #define NT_ARM_PAC_ENABLED_KEYS 0x40a
+#define NT_ARM_SSVE 0x40b
+#define NT_ARM_ZA 0x40c
 #define NT_ARC_V2 0x600
 #define NT_VMCOREDD 0x700
 #define NT_MIPS_DSP 0x800
 #define NT_MIPS_FP_MODE 0x801
 #define NT_MIPS_MSA 0x802
+#define NT_LOONGARCH_CPUCFG 0xa00
+#define NT_LOONGARCH_CSR 0xa01
+#define NT_LOONGARCH_LSX 0xa02
+#define NT_LOONGARCH_LASX 0xa03
+#define NT_LOONGARCH_LBT 0xa04
 #define NT_GNU_PROPERTY_TYPE_0 5
 typedef struct elf32_note {
   Elf32_Word n_namesz;
diff --git a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/ethtool.h b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/ethtool.h
index 741ea2a..8bdd622 100644
--- a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/ethtool.h
+++ b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/ethtool.h
@@ -98,7 +98,7 @@
   __u32 id;
   __u32 type_id;
   __u32 len;
-  void * data[0];
+  void * data[];
 };
 #define DOWNSHIFT_DEV_DEFAULT_COUNT 0xff
 #define DOWNSHIFT_DEV_DISABLE 0
@@ -118,14 +118,14 @@
   __u32 cmd;
   __u32 version;
   __u32 len;
-  __u8 data[0];
+  __u8 data[];
 };
 struct ethtool_eeprom {
   __u32 cmd;
   __u32 magic;
   __u32 offset;
   __u32 len;
-  __u8 data[0];
+  __u8 data[];
 };
 struct ethtool_eee {
   __u32 cmd;
@@ -277,17 +277,31 @@
   ETHTOOL_MODULE_POWER_MODE_LOW = 1,
   ETHTOOL_MODULE_POWER_MODE_HIGH,
 };
+enum ethtool_podl_pse_admin_state {
+  ETHTOOL_PODL_PSE_ADMIN_STATE_UNKNOWN = 1,
+  ETHTOOL_PODL_PSE_ADMIN_STATE_DISABLED,
+  ETHTOOL_PODL_PSE_ADMIN_STATE_ENABLED,
+};
+enum ethtool_podl_pse_pw_d_status {
+  ETHTOOL_PODL_PSE_PW_D_STATUS_UNKNOWN = 1,
+  ETHTOOL_PODL_PSE_PW_D_STATUS_DISABLED,
+  ETHTOOL_PODL_PSE_PW_D_STATUS_SEARCHING,
+  ETHTOOL_PODL_PSE_PW_D_STATUS_DELIVERING,
+  ETHTOOL_PODL_PSE_PW_D_STATUS_SLEEP,
+  ETHTOOL_PODL_PSE_PW_D_STATUS_IDLE,
+  ETHTOOL_PODL_PSE_PW_D_STATUS_ERROR,
+};
 struct ethtool_gstrings {
   __u32 cmd;
   __u32 string_set;
   __u32 len;
-  __u8 data[0];
+  __u8 data[];
 };
 struct ethtool_sset_info {
   __u32 cmd;
   __u32 reserved;
   __u64 sset_mask;
-  __u32 data[0];
+  __u32 data[];
 };
 enum ethtool_test_flags {
   ETH_TEST_FL_OFFLINE = (1 << 0),
@@ -300,17 +314,17 @@
   __u32 flags;
   __u32 reserved;
   __u32 len;
-  __u64 data[0];
+  __u64 data[];
 };
 struct ethtool_stats {
   __u32 cmd;
   __u32 n_stats;
-  __u64 data[0];
+  __u64 data[];
 };
 struct ethtool_perm_addr {
   __u32 cmd;
   __u32 size;
-  __u8 data[0];
+  __u8 data[];
 };
 enum ethtool_flags {
   ETH_FLAG_TXVLAN = (1 << 7),
@@ -410,7 +424,7 @@
 struct ethtool_rxfh_indir {
   __u32 cmd;
   __u32 size;
-  __u32 ring_index[0];
+  __u32 ring_index[];
 };
 struct ethtool_rxfh {
   __u32 cmd;
@@ -420,7 +434,7 @@
   __u8 hfunc;
   __u8 rsvd8[3];
   __u32 rsvd32;
-  __u32 rss_config[0];
+  __u32 rss_config[];
 };
 #define ETH_RXFH_CONTEXT_ALLOC 0xffffffff
 #define ETH_RXFH_INDIR_NO_CHANGE 0xffffffff
@@ -462,7 +476,7 @@
   __u32 version;
   __u32 flag;
   __u32 len;
-  __u8 data[0];
+  __u8 data[];
 };
 #define ETH_FW_DUMP_DISABLE 0
 struct ethtool_get_features_block {
@@ -474,7 +488,7 @@
 struct ethtool_gfeatures {
   __u32 cmd;
   __u32 size;
-  struct ethtool_get_features_block features[0];
+  struct ethtool_get_features_block features[];
 };
 struct ethtool_set_features_block {
   __u32 valid;
@@ -483,7 +497,7 @@
 struct ethtool_sfeatures {
   __u32 cmd;
   __u32 size;
-  struct ethtool_set_features_block features[0];
+  struct ethtool_set_features_block features[];
 };
 struct ethtool_ts_info {
   __u32 cmd;
@@ -704,6 +718,7 @@
   ETHTOOL_LINK_MODE_400000baseCR4_Full_BIT = 89,
   ETHTOOL_LINK_MODE_100baseFX_Half_BIT = 90,
   ETHTOOL_LINK_MODE_100baseFX_Full_BIT = 91,
+  ETHTOOL_LINK_MODE_10baseT1L_Full_BIT = 92,
   __ETHTOOL_LINK_MODE_MASK_NBITS
 };
 #define __ETHTOOL_LINK_MODE_LEGACY_MASK(base_name) (1UL << (ETHTOOL_LINK_MODE_ ##base_name ##_BIT))
@@ -799,6 +814,10 @@
 #define MASTER_SLAVE_STATE_MASTER 2
 #define MASTER_SLAVE_STATE_SLAVE 3
 #define MASTER_SLAVE_STATE_ERR 4
+#define RATE_MATCH_NONE 0
+#define RATE_MATCH_PAUSE 1
+#define RATE_MATCH_CRS 2
+#define RATE_MATCH_OPEN_LOOP 3
 #define PORT_TP 0x00
 #define PORT_AUI 0x01
 #define PORT_MII 0x02
@@ -900,8 +919,8 @@
   __u8 transceiver;
   __u8 master_slave_cfg;
   __u8 master_slave_state;
-  __u8 reserved1[1];
+  __u8 rate_matching;
   __u32 reserved[7];
-  __u32 link_mode_masks[0];
+  __u32 link_mode_masks[];
 };
 #endif
diff --git a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/ethtool_netlink.h b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/ethtool_netlink.h
index 7dcae22..08c6936 100644
--- a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/ethtool_netlink.h
+++ b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/ethtool_netlink.h
@@ -56,6 +56,8 @@
   ETHTOOL_MSG_PHC_VCLOCKS_GET,
   ETHTOOL_MSG_MODULE_GET,
   ETHTOOL_MSG_MODULE_SET,
+  ETHTOOL_MSG_PSE_GET,
+  ETHTOOL_MSG_PSE_SET,
   __ETHTOOL_MSG_USER_CNT,
   ETHTOOL_MSG_USER_MAX = __ETHTOOL_MSG_USER_CNT - 1
 };
@@ -97,6 +99,7 @@
   ETHTOOL_MSG_PHC_VCLOCKS_GET_REPLY,
   ETHTOOL_MSG_MODULE_GET_REPLY,
   ETHTOOL_MSG_MODULE_NTF,
+  ETHTOOL_MSG_PSE_GET_REPLY,
   __ETHTOOL_MSG_KERNEL_CNT,
   ETHTOOL_MSG_KERNEL_MAX = __ETHTOOL_MSG_KERNEL_CNT - 1
 };
@@ -193,6 +196,7 @@
   ETHTOOL_A_LINKMODES_MASTER_SLAVE_CFG,
   ETHTOOL_A_LINKMODES_MASTER_SLAVE_STATE,
   ETHTOOL_A_LINKMODES_LANES,
+  ETHTOOL_A_LINKMODES_RATE_MATCHING,
   __ETHTOOL_A_LINKMODES_CNT,
   ETHTOOL_A_LINKMODES_MAX = __ETHTOOL_A_LINKMODES_CNT - 1
 };
@@ -240,6 +244,11 @@
   ETHTOOL_A_PRIVFLAGS_MAX = __ETHTOOL_A_PRIVFLAGS_CNT - 1
 };
 enum {
+  ETHTOOL_TCP_DATA_SPLIT_UNKNOWN = 0,
+  ETHTOOL_TCP_DATA_SPLIT_DISABLED,
+  ETHTOOL_TCP_DATA_SPLIT_ENABLED,
+};
+enum {
   ETHTOOL_A_RINGS_UNSPEC,
   ETHTOOL_A_RINGS_HEADER,
   ETHTOOL_A_RINGS_RX_MAX,
@@ -251,6 +260,9 @@
   ETHTOOL_A_RINGS_RX_JUMBO,
   ETHTOOL_A_RINGS_TX,
   ETHTOOL_A_RINGS_RX_BUF_LEN,
+  ETHTOOL_A_RINGS_TCP_DATA_SPLIT,
+  ETHTOOL_A_RINGS_CQE_SIZE,
+  ETHTOOL_A_RINGS_TX_PUSH,
   __ETHTOOL_A_RINGS_CNT,
   ETHTOOL_A_RINGS_MAX = (__ETHTOOL_A_RINGS_CNT - 1)
 };
@@ -601,6 +613,15 @@
   __ETHTOOL_A_MODULE_CNT,
   ETHTOOL_A_MODULE_MAX = (__ETHTOOL_A_MODULE_CNT - 1)
 };
+enum {
+  ETHTOOL_A_PSE_UNSPEC,
+  ETHTOOL_A_PSE_HEADER,
+  ETHTOOL_A_PODL_PSE_ADMIN_STATE,
+  ETHTOOL_A_PODL_PSE_ADMIN_CONTROL,
+  ETHTOOL_A_PODL_PSE_PW_D_STATUS,
+  __ETHTOOL_A_PSE_CNT,
+  ETHTOOL_A_PSE_MAX = (__ETHTOOL_A_PSE_CNT - 1)
+};
 #define ETHTOOL_GENL_NAME "ethtool"
 #define ETHTOOL_GENL_VERSION 1
 #define ETHTOOL_MCGRP_MONITOR_NAME "monitor"
diff --git a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/f2fs.h b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/f2fs.h
index 76da8f6..3fcd444 100644
--- a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/f2fs.h
+++ b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/f2fs.h
@@ -25,7 +25,7 @@
 #define F2FS_IOC_COMMIT_ATOMIC_WRITE _IO(F2FS_IOCTL_MAGIC, 2)
 #define F2FS_IOC_START_VOLATILE_WRITE _IO(F2FS_IOCTL_MAGIC, 3)
 #define F2FS_IOC_RELEASE_VOLATILE_WRITE _IO(F2FS_IOCTL_MAGIC, 4)
-#define F2FS_IOC_ABORT_VOLATILE_WRITE _IO(F2FS_IOCTL_MAGIC, 5)
+#define F2FS_IOC_ABORT_ATOMIC_WRITE _IO(F2FS_IOCTL_MAGIC, 5)
 #define F2FS_IOC_GARBAGE_COLLECT _IOW(F2FS_IOCTL_MAGIC, 6, __u32)
 #define F2FS_IOC_WRITE_CHECKPOINT _IO(F2FS_IOCTL_MAGIC, 7)
 #define F2FS_IOC_DEFRAGMENT _IOWR(F2FS_IOCTL_MAGIC, 8, struct f2fs_defragment)
diff --git a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/fanotify.h b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/fanotify.h
index 6249292..9815a64 100644
--- a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/fanotify.h
+++ b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/fanotify.h
@@ -67,9 +67,12 @@
 #define FAN_MARK_IGNORED_MASK 0x00000020
 #define FAN_MARK_IGNORED_SURV_MODIFY 0x00000040
 #define FAN_MARK_FLUSH 0x00000080
+#define FAN_MARK_EVICTABLE 0x00000200
+#define FAN_MARK_IGNORE 0x00000400
 #define FAN_MARK_INODE 0x00000000
 #define FAN_MARK_MOUNT 0x00000010
 #define FAN_MARK_FILESYSTEM 0x00000100
+#define FAN_MARK_IGNORE_SURV (FAN_MARK_IGNORE | FAN_MARK_IGNORED_SURV_MODIFY)
 #define FAN_ALL_MARK_FLAGS (FAN_MARK_ADD | FAN_MARK_REMOVE | FAN_MARK_DONT_FOLLOW | FAN_MARK_ONLYDIR | FAN_MARK_MOUNT | FAN_MARK_IGNORED_MASK | FAN_MARK_IGNORED_SURV_MODIFY | FAN_MARK_FLUSH)
 #define FAN_ALL_EVENTS (FAN_ACCESS | FAN_MODIFY | FAN_CLOSE | FAN_OPEN)
 #define FAN_ALL_PERM_EVENTS (FAN_OPEN_PERM | FAN_ACCESS_PERM)
@@ -99,7 +102,7 @@
 struct fanotify_event_info_fid {
   struct fanotify_event_info_header hdr;
   __kernel_fsid_t fsid;
-  unsigned char handle[0];
+  unsigned char handle[];
 };
 struct fanotify_event_info_pidfd {
   struct fanotify_event_info_header hdr;
diff --git a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/fiemap.h b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/fiemap.h
index 4310786..a67a5fe 100644
--- a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/fiemap.h
+++ b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/fiemap.h
@@ -34,7 +34,7 @@
   __u32 fm_mapped_extents;
   __u32 fm_extent_count;
   __u32 fm_reserved;
-  struct fiemap_extent fm_extents[0];
+  struct fiemap_extent fm_extents[];
 };
 #define FIEMAP_MAX_OFFSET (~0ULL)
 #define FIEMAP_FLAG_SYNC 0x00000001
diff --git a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/firewire-cdev.h b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/firewire-cdev.h
index 92957bc..a54191c 100644
--- a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/firewire-cdev.h
+++ b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/firewire-cdev.h
@@ -50,7 +50,7 @@
   __u32 type;
   __u32 rcode;
   __u32 length;
-  __u32 data[0];
+  __u32 data[];
 };
 struct fw_cdev_event_request {
   __u64 closure;
@@ -59,7 +59,7 @@
   __u64 offset;
   __u32 handle;
   __u32 length;
-  __u32 data[0];
+  __u32 data[];
 };
 struct fw_cdev_event_request2 {
   __u64 closure;
@@ -72,14 +72,14 @@
   __u32 generation;
   __u32 handle;
   __u32 length;
-  __u32 data[0];
+  __u32 data[];
 };
 struct fw_cdev_event_iso_interrupt {
   __u64 closure;
   __u32 type;
   __u32 cycle;
   __u32 header_length;
-  __u32 header[0];
+  __u32 header[];
 };
 struct fw_cdev_event_iso_interrupt_mc {
   __u64 closure;
@@ -98,7 +98,7 @@
   __u32 type;
   __u32 rcode;
   __u32 length;
-  __u32 data[0];
+  __u32 data[];
 };
 union fw_cdev_event {
   struct fw_cdev_event_common common;
@@ -207,7 +207,7 @@
 #define FW_CDEV_ISO_HEADER_LENGTH(v) ((v) << 24)
 struct fw_cdev_iso_packet {
   __u32 control;
-  __u32 header[0];
+  __u32 header[];
 };
 struct fw_cdev_queue_iso {
   __u64 packets;
diff --git a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/fs.h b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/fs.h
index 3bb4183..96f9181 100644
--- a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/fs.h
+++ b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/fs.h
@@ -63,7 +63,7 @@
   __u16 dest_count;
   __u16 reserved1;
   __u32 reserved2;
-  struct file_dedupe_range_info info[0];
+  struct file_dedupe_range_info info[];
 };
 struct files_stat_struct {
   unsigned long nr_files;
diff --git a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/fscrypt.h b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/fscrypt.h
index ca42eb3..e6b5358 100644
--- a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/fscrypt.h
+++ b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/fscrypt.h
@@ -33,6 +33,7 @@
 #define FSCRYPT_MODE_AES_128_CBC 5
 #define FSCRYPT_MODE_AES_128_CTS 6
 #define FSCRYPT_MODE_ADIANTUM 9
+#define FSCRYPT_MODE_AES_256_HCTR2 10
 #define FSCRYPT_POLICY_V1 0
 #define FSCRYPT_KEY_DESCRIPTOR_SIZE 8
 struct fscrypt_policy_v1 {
diff --git a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/fsi.h b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/fsi.h
index fc88464..b080c21 100644
--- a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/fsi.h
+++ b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/fsi.h
@@ -48,4 +48,5 @@
 #define FSI_SCOM_READ _IOWR('s', 0x01, struct scom_access)
 #define FSI_SCOM_WRITE _IOWR('s', 0x02, struct scom_access)
 #define FSI_SCOM_RESET _IOW('s', 0x03, __u32)
+#define FSI_SBEFIFO_READ_TIMEOUT_SECONDS _IOW('s', 0x00, __u32)
 #endif
diff --git a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/fuse.h b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/fuse.h
index 144e960..ae667eb 100644
--- a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/fuse.h
+++ b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/fuse.h
@@ -20,7 +20,7 @@
 #define _LINUX_FUSE_H
 #include <stdint.h>
 #define FUSE_KERNEL_VERSION 7
-#define FUSE_KERNEL_MINOR_VERSION 36
+#define FUSE_KERNEL_MINOR_VERSION 37
 #define FUSE_ROOT_ID 1
 struct fuse_attr {
   uint64_t ino;
@@ -187,6 +187,7 @@
   FUSE_SETUPMAPPING = 48,
   FUSE_REMOVEMAPPING = 49,
   FUSE_SYNCFS = 50,
+  FUSE_TMPFILE = 51,
   FUSE_CANONICAL_PATH = 2016,
   CUSE_INIT = 4096,
   CUSE_INIT_BSWAP_RESERVED = 1048576,
diff --git a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/genetlink.h b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/genetlink.h
index 2e2137d..0f86331 100644
--- a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/genetlink.h
+++ b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/genetlink.h
@@ -81,6 +81,7 @@
   CTRL_ATTR_MCAST_GRP_ID,
   __CTRL_ATTR_MCAST_GRP_MAX,
 };
+#define CTRL_ATTR_MCAST_GRP_MAX (__CTRL_ATTR_MCAST_GRP_MAX - 1)
 enum {
   CTRL_ATTR_POLICY_UNSPEC,
   CTRL_ATTR_POLICY_DO,
@@ -88,5 +89,5 @@
   __CTRL_ATTR_POLICY_DUMP_MAX,
   CTRL_ATTR_POLICY_DUMP_MAX = __CTRL_ATTR_POLICY_DUMP_MAX - 1
 };
-#define CTRL_ATTR_MCAST_GRP_MAX (__CTRL_ATTR_MCAST_GRP_MAX - 1)
+#define CTRL_ATTR_POLICY_MAX (__CTRL_ATTR_POLICY_DUMP_MAX - 1)
 #endif
diff --git a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/gpio.h b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/gpio.h
index 7e010d9..e760321 100644
--- a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/gpio.h
+++ b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/gpio.h
@@ -42,6 +42,7 @@
   GPIO_V2_LINE_FLAG_BIAS_PULL_DOWN = _BITULL(9),
   GPIO_V2_LINE_FLAG_BIAS_DISABLED = _BITULL(10),
   GPIO_V2_LINE_FLAG_EVENT_CLOCK_REALTIME = _BITULL(11),
+  GPIO_V2_LINE_FLAG_EVENT_CLOCK_HTE = _BITULL(12),
 };
 struct gpio_v2_line_values {
   __aligned_u64 bits;
diff --git a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/gtp.h b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/gtp.h
index 3b9416e..20bc3d6 100644
--- a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/gtp.h
+++ b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/gtp.h
@@ -23,6 +23,7 @@
   GTP_CMD_NEWPDP,
   GTP_CMD_DELPDP,
   GTP_CMD_GETPDP,
+  GTP_CMD_ECHOREQ,
   GTP_CMD_MAX,
 };
 enum gtp_version {
diff --git a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/hid.h b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/hid.h
index ce93cd7..37ab462 100644
--- a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/hid.h
+++ b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/hid.h
@@ -22,12 +22,20 @@
 #define USB_INTERFACE_SUBCLASS_BOOT 1
 #define USB_INTERFACE_PROTOCOL_KEYBOARD 1
 #define USB_INTERFACE_PROTOCOL_MOUSE 2
-#define HID_REQ_GET_REPORT 0x01
-#define HID_REQ_GET_IDLE 0x02
-#define HID_REQ_GET_PROTOCOL 0x03
-#define HID_REQ_SET_REPORT 0x09
-#define HID_REQ_SET_IDLE 0x0A
-#define HID_REQ_SET_PROTOCOL 0x0B
+enum hid_report_type {
+  HID_INPUT_REPORT = 0,
+  HID_OUTPUT_REPORT = 1,
+  HID_FEATURE_REPORT = 2,
+  HID_REPORT_TYPES,
+};
+enum hid_class_request {
+  HID_REQ_GET_REPORT = 0x01,
+  HID_REQ_GET_IDLE = 0x02,
+  HID_REQ_GET_PROTOCOL = 0x03,
+  HID_REQ_SET_REPORT = 0x09,
+  HID_REQ_SET_IDLE = 0x0A,
+  HID_REQ_SET_PROTOCOL = 0x0B,
+};
 #define HID_DT_HID (USB_TYPE_CLASS | 0x01)
 #define HID_DT_REPORT (USB_TYPE_CLASS | 0x02)
 #define HID_DT_PHYSICAL (USB_TYPE_CLASS | 0x03)
diff --git a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/icmp.h b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/icmp.h
index 8847a48..77cb328 100644
--- a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/icmp.h
+++ b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/icmp.h
@@ -84,7 +84,11 @@
     } echo;
     __be32 gateway;
     struct {
+#ifdef __BIONIC__
       __be16 __linux_unused;
+#else
+      __be16 __linux_unused;
+#endif
       __be16 mtu;
     } frag;
     __u8 reserved[4];
diff --git a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/idxd.h b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/idxd.h
index ad9ed48..a456352 100644
--- a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/idxd.h
+++ b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/idxd.h
@@ -38,6 +38,7 @@
   IDXD_SCMD_WQ_NO_SIZE = 0x800e0000,
   IDXD_SCMD_WQ_NO_PRIV = 0x800f0000,
   IDXD_SCMD_WQ_IRQ_ERR = 0x80100000,
+  IDXD_SCMD_WQ_USER_NO_IOMMU = 0x80110000,
 };
 #define IDXD_SCMD_SOFTERR_MASK 0x80000000
 #define IDXD_SCMD_SOFTERR_SHIFT 16
@@ -57,6 +58,11 @@
 #define IDXD_OP_FLAG_DRDBK 0x4000
 #define IDXD_OP_FLAG_DSTS 0x8000
 #define IDXD_OP_FLAG_RD_SRC2_AECS 0x010000
+#define IDXD_OP_FLAG_RD_SRC2_2ND 0x020000
+#define IDXD_OP_FLAG_WR_SRC2_AECS_COMP 0x040000
+#define IDXD_OP_FLAG_WR_SRC2_AECS_OVFL 0x080000
+#define IDXD_OP_FLAG_SRC2_STS 0x100000
+#define IDXD_OP_FLAG_CRC_RFC3720 0x200000
 enum dsa_opcode {
   DSA_OPCODE_NOOP = 0,
   DSA_OPCODE_BATCH,
@@ -82,6 +88,18 @@
   IAX_OPCODE_MEMMOVE,
   IAX_OPCODE_DECOMPRESS = 0x42,
   IAX_OPCODE_COMPRESS,
+  IAX_OPCODE_CRC64,
+  IAX_OPCODE_ZERO_DECOMP_32 = 0x48,
+  IAX_OPCODE_ZERO_DECOMP_16,
+  IAX_OPCODE_ZERO_COMP_32 = 0x4c,
+  IAX_OPCODE_ZERO_COMP_16,
+  IAX_OPCODE_SCAN = 0x50,
+  IAX_OPCODE_SET_MEMBER,
+  IAX_OPCODE_EXTRACT,
+  IAX_OPCODE_SELECT,
+  IAX_OPCODE_RLE_BURST,
+  IAX_OPCODE_FIND_UNIQUE,
+  IAX_OPCODE_EXPAND,
 };
 enum dsa_completion_status {
   DSA_COMP_NONE = 0,
@@ -118,6 +136,7 @@
   IAX_COMP_NONE = 0,
   IAX_COMP_SUCCESS,
   IAX_COMP_PAGE_FAULT_IR = 0x04,
+  IAX_COMP_ANALYTICS_ERROR = 0x0a,
   IAX_COMP_OUTBUF_OVERFLOW,
   IAX_COMP_BAD_OPCODE = 0x10,
   IAX_COMP_INVALID_FLAGS,
@@ -138,7 +157,10 @@
   IAX_COMP_WATCHDOG,
   IAX_COMP_INVALID_COMP_FLAG = 0x30,
   IAX_COMP_INVALID_FILTER_FLAG,
-  IAX_COMP_INVALID_NUM_ELEMS = 0x33,
+  IAX_COMP_INVALID_INPUT_SIZE,
+  IAX_COMP_INVALID_NUM_ELEMS,
+  IAX_COMP_INVALID_SRC1_WIDTH,
+  IAX_COMP_INVALID_INVERT_OUT,
 };
 #define DSA_COMP_STATUS_MASK 0x7f
 #define DSA_COMP_STATUS_WRITE 0x80
@@ -291,8 +313,12 @@
   uint32_t output_size;
   uint8_t output_bits;
   uint8_t rsvd3;
-  uint16_t rsvd4;
-  uint64_t rsvd5[4];
+  uint16_t xor_csum;
+  uint32_t crc;
+  uint32_t min;
+  uint32_t max;
+  uint32_t sum;
+  uint64_t rsvd4[2];
 } __attribute__((packed));
 struct iax_raw_completion_record {
   uint64_t field[8];
diff --git a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/if_addr.h b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/if_addr.h
index 6a6b640..a225e69 100644
--- a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/if_addr.h
+++ b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/if_addr.h
@@ -39,6 +39,7 @@
   IFA_FLAGS,
   IFA_RT_PRIORITY,
   IFA_TARGET_NETNSID,
+  IFA_PROTO,
   __IFA_MAX,
 };
 #define IFA_MAX (__IFA_MAX - 1)
@@ -63,4 +64,8 @@
 };
 #define IFA_RTA(r) ((struct rtattr *) (((char *) (r)) + NLMSG_ALIGN(sizeof(struct ifaddrmsg))))
 #define IFA_PAYLOAD(n) NLMSG_PAYLOAD(n, sizeof(struct ifaddrmsg))
+#define IFAPROT_UNSPEC 0
+#define IFAPROT_KERNEL_LO 1
+#define IFAPROT_KERNEL_RA 2
+#define IFAPROT_KERNEL_LL 3
 #endif
diff --git a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/if_alg.h b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/if_alg.h
index 6530a16..237fe6e 100644
--- a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/if_alg.h
+++ b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/if_alg.h
@@ -35,7 +35,7 @@
 };
 struct af_alg_iv {
   __u32 ivlen;
-  __u8 iv[0];
+  __u8 iv[];
 };
 #define ALG_SET_KEY 1
 #define ALG_SET_IV 2
diff --git a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/if_arcnet.h b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/if_arcnet.h
index 6aece37..65b07e1 100644
--- a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/if_arcnet.h
+++ b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/if_arcnet.h
@@ -40,18 +40,18 @@
   __u8 proto;
   __u8 split_flag;
   __be16 sequence;
-  __u8 payload[0];
+  __u8 payload[];
 };
 #define RFC1201_HDR_SIZE 4
 struct arc_rfc1051 {
   __u8 proto;
-  __u8 payload[0];
+  __u8 payload[];
 };
 #define RFC1051_HDR_SIZE 1
 struct arc_eth_encap {
   __u8 proto;
   struct ethhdr eth;
-  __u8 payload[0];
+  __u8 payload[];
 };
 #define ETH_ENCAP_HDR_SIZE 14
 struct arc_cap {
diff --git a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/if_bridge.h b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/if_bridge.h
index 2054fb3..0f08866 100644
--- a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/if_bridge.h
+++ b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/if_bridge.h
@@ -108,6 +108,7 @@
   IFLA_BRIDGE_VLAN_TUNNEL_INFO,
   IFLA_BRIDGE_MRP,
   IFLA_BRIDGE_CFM,
+  IFLA_BRIDGE_MST,
   __IFLA_BRIDGE_MAX,
 };
 #define IFLA_BRIDGE_MAX (__IFLA_BRIDGE_MAX - 1)
@@ -384,6 +385,19 @@
   __IFLA_BRIDGE_CFM_CC_PEER_STATUS_MAX,
 };
 #define IFLA_BRIDGE_CFM_CC_PEER_STATUS_MAX (__IFLA_BRIDGE_CFM_CC_PEER_STATUS_MAX - 1)
+enum {
+  IFLA_BRIDGE_MST_UNSPEC,
+  IFLA_BRIDGE_MST_ENTRY,
+  __IFLA_BRIDGE_MST_MAX,
+};
+#define IFLA_BRIDGE_MST_MAX (__IFLA_BRIDGE_MST_MAX - 1)
+enum {
+  IFLA_BRIDGE_MST_ENTRY_UNSPEC,
+  IFLA_BRIDGE_MST_ENTRY_MSTI,
+  IFLA_BRIDGE_MST_ENTRY_STATE,
+  __IFLA_BRIDGE_MST_ENTRY_MAX,
+};
+#define IFLA_BRIDGE_MST_ENTRY_MAX (__IFLA_BRIDGE_MST_ENTRY_MAX - 1)
 struct bridge_stp_xstats {
   __u64 transition_blk;
   __u64 transition_fwd;
@@ -460,6 +474,7 @@
   BRIDGE_VLANDB_GOPTS_MCAST_QUERIER,
   BRIDGE_VLANDB_GOPTS_MCAST_ROUTER_PORTS,
   BRIDGE_VLANDB_GOPTS_MCAST_QUERIER_STATE,
+  BRIDGE_VLANDB_GOPTS_MSTI,
   __BRIDGE_VLANDB_GOPTS_MAX
 };
 #define BRIDGE_VLANDB_GOPTS_MAX (__BRIDGE_VLANDB_GOPTS_MAX - 1)
@@ -599,6 +614,7 @@
 enum br_boolopt_id {
   BR_BOOLOPT_NO_LL_LEARN,
   BR_BOOLOPT_MCAST_VLAN_SNOOPING,
+  BR_BOOLOPT_MST_ENABLE,
   BR_BOOLOPT_MAX
 };
 struct br_boolopt_multi {
diff --git a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/if_ether.h b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/if_ether.h
index 1f7f8f2..6043921 100644
--- a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/if_ether.h
+++ b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/if_ether.h
@@ -67,8 +67,10 @@
 #define ETH_P_LINK_CTL 0x886c
 #define ETH_P_ATMFATE 0x8884
 #define ETH_P_PAE 0x888E
+#define ETH_P_PROFINET 0x8892
 #define ETH_P_REALTEK 0x8899
 #define ETH_P_AOE 0x88A2
+#define ETH_P_ETHERCAT 0x88A4
 #define ETH_P_8021AD 0x88A8
 #define ETH_P_802_EX1 0x88B5
 #define ETH_P_PREAUTH 0x88C7
@@ -95,6 +97,7 @@
 #define ETH_P_QINQ3 0x9300
 #define ETH_P_EDSA 0xDADA
 #define ETH_P_DSA_8021Q 0xDADB
+#define ETH_P_DSA_A5PSW 0xE001
 #define ETH_P_IFE 0xED3E
 #define ETH_P_AF_IUCV 0xFBFB
 #define ETH_P_802_3_MIN 0x0600
@@ -109,6 +112,7 @@
 #define ETH_P_LOCALTALK 0x0009
 #define ETH_P_CAN 0x000C
 #define ETH_P_CANFD 0x000D
+#define ETH_P_CANXL 0x000E
 #define ETH_P_PPPTALK 0x0010
 #define ETH_P_TR_802_2 0x0011
 #define ETH_P_MOBITEX 0x0015
diff --git a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/if_link.h b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/if_link.h
index 7e413ae..ebf403a 100644
--- a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/if_link.h
+++ b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/if_link.h
@@ -71,6 +71,18 @@
   __u64 rx_compressed;
   __u64 tx_compressed;
   __u64 rx_nohandler;
+  __u64 rx_otherhost_dropped;
+};
+struct rtnl_hw_stats64 {
+  __u64 rx_packets;
+  __u64 tx_packets;
+  __u64 rx_bytes;
+  __u64 tx_bytes;
+  __u64 rx_errors;
+  __u64 tx_errors;
+  __u64 rx_dropped;
+  __u64 tx_dropped;
+  __u64 multicast;
 };
 struct rtnl_link_ifmap {
   __u64 mem_start;
@@ -151,6 +163,9 @@
   IFLA_PARENT_DEV_NAME,
   IFLA_PARENT_DEV_BUS_NAME,
   IFLA_GRO_MAX_SIZE,
+  IFLA_TSO_MAX_SIZE,
+  IFLA_TSO_MAX_SEGS,
+  IFLA_ALLMULTI,
   __IFLA_MAX
 };
 #define IFLA_MAX (__IFLA_MAX - 1)
@@ -289,6 +304,7 @@
   IFLA_BRPORT_MRP_IN_OPEN,
   IFLA_BRPORT_MCAST_EHT_HOSTS_LIMIT,
   IFLA_BRPORT_MCAST_EHT_HOSTS_CNT,
+  IFLA_BRPORT_LOCKED,
   __IFLA_BRPORT_MAX
 };
 #define IFLA_BRPORT_MAX (__IFLA_BRPORT_MAX - 1)
@@ -396,6 +412,7 @@
   IFLA_XFRM_UNSPEC,
   IFLA_XFRM_LINK,
   IFLA_XFRM_IF_ID,
+  IFLA_XFRM_COLLECT_METADATA,
   __IFLA_XFRM_MAX
 };
 #define IFLA_XFRM_MAX (__IFLA_XFRM_MAX - 1)
@@ -428,6 +445,44 @@
 };
 #define IPVLAN_F_PRIVATE 0x01
 #define IPVLAN_F_VEPA 0x02
+struct tunnel_msg {
+  __u8 family;
+  __u8 flags;
+  __u16 reserved2;
+  __u32 ifindex;
+};
+#define TUNNEL_MSG_FLAG_STATS 0x01
+#define TUNNEL_MSG_VALID_USER_FLAGS TUNNEL_MSG_FLAG_STATS
+enum {
+  VNIFILTER_ENTRY_STATS_UNSPEC,
+  VNIFILTER_ENTRY_STATS_RX_BYTES,
+  VNIFILTER_ENTRY_STATS_RX_PKTS,
+  VNIFILTER_ENTRY_STATS_RX_DROPS,
+  VNIFILTER_ENTRY_STATS_RX_ERRORS,
+  VNIFILTER_ENTRY_STATS_TX_BYTES,
+  VNIFILTER_ENTRY_STATS_TX_PKTS,
+  VNIFILTER_ENTRY_STATS_TX_DROPS,
+  VNIFILTER_ENTRY_STATS_TX_ERRORS,
+  VNIFILTER_ENTRY_STATS_PAD,
+  __VNIFILTER_ENTRY_STATS_MAX
+};
+#define VNIFILTER_ENTRY_STATS_MAX (__VNIFILTER_ENTRY_STATS_MAX - 1)
+enum {
+  VXLAN_VNIFILTER_ENTRY_UNSPEC,
+  VXLAN_VNIFILTER_ENTRY_START,
+  VXLAN_VNIFILTER_ENTRY_END,
+  VXLAN_VNIFILTER_ENTRY_GROUP,
+  VXLAN_VNIFILTER_ENTRY_GROUP6,
+  VXLAN_VNIFILTER_ENTRY_STATS,
+  __VXLAN_VNIFILTER_ENTRY_MAX
+};
+#define VXLAN_VNIFILTER_ENTRY_MAX (__VXLAN_VNIFILTER_ENTRY_MAX - 1)
+enum {
+  VXLAN_VNIFILTER_UNSPEC,
+  VXLAN_VNIFILTER_ENTRY,
+  __VXLAN_VNIFILTER_MAX
+};
+#define VXLAN_VNIFILTER_MAX (__VXLAN_VNIFILTER_MAX - 1)
 enum {
   IFLA_VXLAN_UNSPEC,
   IFLA_VXLAN_ID,
@@ -459,6 +514,7 @@
   IFLA_VXLAN_GPE,
   IFLA_VXLAN_TTL_INHERIT,
   IFLA_VXLAN_DF,
+  IFLA_VXLAN_VNIFILTER,
   __IFLA_VXLAN_MAX
 };
 #define IFLA_VXLAN_MAX (__IFLA_VXLAN_MAX - 1)
@@ -488,6 +544,7 @@
   IFLA_GENEVE_LABEL,
   IFLA_GENEVE_TTL_INHERIT,
   IFLA_GENEVE_DF,
+  IFLA_GENEVE_INNER_PROTO_INHERIT,
   __IFLA_GENEVE_MAX
 };
 #define IFLA_GENEVE_MAX (__IFLA_GENEVE_MAX - 1)
@@ -523,6 +580,8 @@
   IFLA_GTP_FD1,
   IFLA_GTP_PDP_HASHSIZE,
   IFLA_GTP_ROLE,
+  IFLA_GTP_CREATE_SOCKETS,
+  IFLA_GTP_RESTART_COUNT,
   __IFLA_GTP_MAX,
 };
 #define IFLA_GTP_MAX (__IFLA_GTP_MAX - 1)
@@ -558,6 +617,7 @@
   IFLA_BOND_PEER_NOTIF_DELAY,
   IFLA_BOND_AD_LACP_ACTIVE,
   IFLA_BOND_MISSED_MAX,
+  IFLA_BOND_NS_IP6_TARGET,
   __IFLA_BOND_MAX,
 };
 #define IFLA_BOND_MAX (__IFLA_BOND_MAX - 1)
@@ -581,6 +641,7 @@
   IFLA_BOND_SLAVE_AD_AGGREGATOR_ID,
   IFLA_BOND_SLAVE_AD_ACTOR_OPER_PORT_STATE,
   IFLA_BOND_SLAVE_AD_PARTNER_OPER_PORT_STATE,
+  IFLA_BOND_SLAVE_PRIO,
   __IFLA_BOND_SLAVE_MAX,
 };
 #define IFLA_BOND_SLAVE_MAX (__IFLA_BOND_SLAVE_MAX - 1)
@@ -777,6 +838,13 @@
 #define IFLA_STATS_MAX (__IFLA_STATS_MAX - 1)
 #define IFLA_STATS_FILTER_BIT(ATTR) (1 << (ATTR - 1))
 enum {
+  IFLA_STATS_GETSET_UNSPEC,
+  IFLA_STATS_GET_FILTERS,
+  IFLA_STATS_SET_OFFLOAD_XSTATS_L3_STATS,
+  __IFLA_STATS_GETSET_MAX,
+};
+#define IFLA_STATS_GETSET_MAX (__IFLA_STATS_GETSET_MAX - 1)
+enum {
   LINK_XSTATS_TYPE_UNSPEC,
   LINK_XSTATS_TYPE_BRIDGE,
   LINK_XSTATS_TYPE_BOND,
@@ -786,9 +854,18 @@
 enum {
   IFLA_OFFLOAD_XSTATS_UNSPEC,
   IFLA_OFFLOAD_XSTATS_CPU_HIT,
+  IFLA_OFFLOAD_XSTATS_HW_S_INFO,
+  IFLA_OFFLOAD_XSTATS_L3_STATS,
   __IFLA_OFFLOAD_XSTATS_MAX
 };
 #define IFLA_OFFLOAD_XSTATS_MAX (__IFLA_OFFLOAD_XSTATS_MAX - 1)
+enum {
+  IFLA_OFFLOAD_XSTATS_HW_S_INFO_UNSPEC,
+  IFLA_OFFLOAD_XSTATS_HW_S_INFO_REQUEST,
+  IFLA_OFFLOAD_XSTATS_HW_S_INFO_USED,
+  __IFLA_OFFLOAD_XSTATS_HW_S_INFO_MAX,
+};
+#define IFLA_OFFLOAD_XSTATS_HW_S_INFO_MAX (__IFLA_OFFLOAD_XSTATS_HW_S_INFO_MAX - 1)
 #define XDP_FLAGS_UPDATE_IF_NOEXIST (1U << 0)
 #define XDP_FLAGS_SKB_MODE (1U << 1)
 #define XDP_FLAGS_DRV_MODE (1U << 2)
@@ -862,4 +939,10 @@
   __IFLA_MCTP_MAX,
 };
 #define IFLA_MCTP_MAX (__IFLA_MCTP_MAX - 1)
+enum {
+  IFLA_DSA_UNSPEC,
+  IFLA_DSA_MASTER,
+  __IFLA_DSA_MAX,
+};
+#define IFLA_DSA_MAX (__IFLA_DSA_MAX - 1)
 #endif
diff --git a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/if_macsec.h b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/if_macsec.h
index e60d767..7b51f80 100644
--- a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/if_macsec.h
+++ b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/if_macsec.h
@@ -23,6 +23,7 @@
 #define MACSEC_GENL_VERSION 1
 #define MACSEC_MAX_KEY_LEN 128
 #define MACSEC_KEYID_LEN 16
+#define MACSEC_SALT_LEN 12
 #define MACSEC_CIPHER_ID_GCM_AES_128 0x0080C20001000001ULL
 #define MACSEC_CIPHER_ID_GCM_AES_256 0x0080C20001000002ULL
 #define MACSEC_CIPHER_ID_GCM_AES_XPN_128 0x0080C20001000003ULL
diff --git a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/if_pppox.h b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/if_pppox.h
index 40d25e8..2acafdf 100644
--- a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/if_pppox.h
+++ b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/if_pppox.h
@@ -51,27 +51,27 @@
     struct pppoe_addr pppoe;
     struct pptp_addr pptp;
   } sa_addr;
-} __packed;
+} __attribute__((__packed__));
 struct sockaddr_pppol2tp {
   __kernel_sa_family_t sa_family;
   unsigned int sa_protocol;
   struct pppol2tp_addr pppol2tp;
-} __packed;
+} __attribute__((__packed__));
 struct sockaddr_pppol2tpin6 {
   __kernel_sa_family_t sa_family;
   unsigned int sa_protocol;
   struct pppol2tpin6_addr pppol2tp;
-} __packed;
+} __attribute__((__packed__));
 struct sockaddr_pppol2tpv3 {
   __kernel_sa_family_t sa_family;
   unsigned int sa_protocol;
   struct pppol2tpv3_addr pppol2tp;
-} __packed;
+} __attribute__((__packed__));
 struct sockaddr_pppol2tpv3in6 {
   __kernel_sa_family_t sa_family;
   unsigned int sa_protocol;
   struct pppol2tpv3in6_addr pppol2tp;
-} __packed;
+} __attribute__((__packed__));
 #define PPPOEIOCSFWD _IOW(0xB1, 0, size_t)
 #define PPPOEIOCDFWD _IO(0xB1, 1)
 #define PADI_CODE 0x09
@@ -82,7 +82,7 @@
 struct pppoe_tag {
   __be16 tag_type;
   __be16 tag_len;
-  char tag_data[0];
+  char tag_data[];
 } __attribute__((packed));
 #define PTT_EOL __cpu_to_be16(0x0000)
 #define PTT_SRV_NAME __cpu_to_be16(0x0101)
@@ -107,7 +107,7 @@
   __u8 code;
   __be16 sid;
   __be16 length;
-  struct pppoe_tag tag[0];
-} __packed;
+  struct pppoe_tag tag[];
+} __attribute__((__packed__));
 #define PPPOE_SES_HLEN 8
 #endif
diff --git a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/if_tun.h b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/if_tun.h
index d1a8f9e..dda0830 100644
--- a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/if_tun.h
+++ b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/if_tun.h
@@ -57,6 +57,7 @@
 #define IFF_TAP 0x0002
 #define IFF_NAPI 0x0010
 #define IFF_NAPI_FRAGS 0x0020
+#define IFF_NO_CARRIER 0x0040
 #define IFF_NO_PI 0x1000
 #define IFF_ONE_QUEUE 0x2000
 #define IFF_VNET_HDR 0x4000
@@ -81,6 +82,6 @@
 struct tun_filter {
   __u16 flags;
   __u16 count;
-  __u8 addr[0][ETH_ALEN];
+  __u8 addr[][ETH_ALEN];
 };
 #endif
diff --git a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/if_tunnel.h b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/if_tunnel.h
index 8e1847f..01c2dc9 100644
--- a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/if_tunnel.h
+++ b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/if_tunnel.h
@@ -169,5 +169,6 @@
 #define TUNNEL_VXLAN_OPT __cpu_to_be16(0x1000)
 #define TUNNEL_NOCACHE __cpu_to_be16(0x2000)
 #define TUNNEL_ERSPAN_OPT __cpu_to_be16(0x4000)
-#define TUNNEL_OPTIONS_PRESENT (TUNNEL_GENEVE_OPT | TUNNEL_VXLAN_OPT | TUNNEL_ERSPAN_OPT)
+#define TUNNEL_GTP_OPT __cpu_to_be16(0x8000)
+#define TUNNEL_OPTIONS_PRESENT (TUNNEL_GENEVE_OPT | TUNNEL_VXLAN_OPT | TUNNEL_ERSPAN_OPT | TUNNEL_GTP_OPT)
 #endif
diff --git a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/igmp.h b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/igmp.h
index 885b0f8..71c2c8d 100644
--- a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/igmp.h
+++ b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/igmp.h
@@ -37,7 +37,7 @@
   __u8 grec_auxwords;
   __be16 grec_nsrcs;
   __be32 grec_mca;
-  __be32 grec_src[0];
+  __be32 grec_src[];
 };
 struct igmpv3_report {
   __u8 type;
@@ -45,7 +45,7 @@
   __sum16 csum;
   __be16 resv2;
   __be16 ngrec;
-  struct igmpv3_grec grec[0];
+  struct igmpv3_grec grec[];
 };
 struct igmpv3_query {
   __u8 type;
@@ -61,7 +61,7 @@
 #endif
   __u8 qqic;
   __be16 nsrcs;
-  __be32 srcs[0];
+  __be32 srcs[];
 };
 #define IGMP_HOST_MEMBERSHIP_QUERY 0x11
 #define IGMP_HOST_MEMBERSHIP_REPORT 0x12
diff --git a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/iio/types.h b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/iio/types.h
index 22409a7..af7bdda 100644
--- a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/iio/types.h
+++ b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/iio/types.h
@@ -101,6 +101,12 @@
   IIO_MOD_ETHANOL,
   IIO_MOD_H2,
   IIO_MOD_O2,
+  IIO_MOD_LINEAR_X,
+  IIO_MOD_LINEAR_Y,
+  IIO_MOD_LINEAR_Z,
+  IIO_MOD_PITCH,
+  IIO_MOD_YAW,
+  IIO_MOD_ROLL,
 };
 enum iio_event_type {
   IIO_EV_TYPE_THRESH,
@@ -109,11 +115,15 @@
   IIO_EV_TYPE_THRESH_ADAPTIVE,
   IIO_EV_TYPE_MAG_ADAPTIVE,
   IIO_EV_TYPE_CHANGE,
+  IIO_EV_TYPE_MAG_REFERENCED,
+  IIO_EV_TYPE_GESTURE,
 };
 enum iio_event_direction {
   IIO_EV_DIR_EITHER,
   IIO_EV_DIR_RISING,
   IIO_EV_DIR_FALLING,
   IIO_EV_DIR_NONE,
+  IIO_EV_DIR_SINGLETAP,
+  IIO_EV_DIR_DOUBLETAP,
 };
 #endif
diff --git a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/in.h b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/in.h
index d4060e7..53d3074 100644
--- a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/in.h
+++ b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/in.h
@@ -22,6 +22,7 @@
 #include <bits/ip_mreq_source.h>
 #include <bits/in_addr.h>
 #include <linux/types.h>
+#include <linux/stddef.h>
 #include <linux/libc-compat.h>
 #include <linux/socket.h>
 #if __UAPI_DEF_IN_IPPROTO
@@ -68,6 +69,8 @@
 #define IPPROTO_PIM IPPROTO_PIM
   IPPROTO_COMP = 108,
 #define IPPROTO_COMP IPPROTO_COMP
+  IPPROTO_L2TP = 115,
+#define IPPROTO_L2TP IPPROTO_L2TP
   IPPROTO_SCTP = 132,
 #define IPPROTO_SCTP IPPROTO_SCTP
   IPPROTO_UDPLITE = 136,
diff --git a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/inet_diag.h b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/inet_diag.h
index 8656dd4..27f390b 100644
--- a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/inet_diag.h
+++ b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/inet_diag.h
@@ -89,7 +89,7 @@
   __u8 family;
   __u8 prefix_len;
   int port;
-  __be32 addr[0];
+  __be32 addr[];
 };
 struct inet_diag_markcond {
   __u32 mark;
diff --git a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/inotify.h b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/inotify.h
index eb9ac3c..3b4b577 100644
--- a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/inotify.h
+++ b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/inotify.h
@@ -25,7 +25,7 @@
   __u32 mask;
   __u32 cookie;
   __u32 len;
-  char name[0];
+  char name[];
 };
 #define IN_ACCESS 0x00000001
 #define IN_MODIFY 0x00000002
diff --git a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/input-event-codes.h b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/input-event-codes.h
index 34cd23c..40827b5 100644
--- a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/input-event-codes.h
+++ b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/input-event-codes.h
@@ -580,6 +580,21 @@
 #define KEY_ONSCREEN_KEYBOARD 0x278
 #define KEY_PRIVACY_SCREEN_TOGGLE 0x279
 #define KEY_SELECTIVE_SCREENSHOT 0x27a
+#define KEY_NEXT_ELEMENT 0x27b
+#define KEY_PREVIOUS_ELEMENT 0x27c
+#define KEY_AUTOPILOT_ENGAGE_TOGGLE 0x27d
+#define KEY_MARK_WAYPOINT 0x27e
+#define KEY_SOS 0x27f
+#define KEY_NAV_CHART 0x280
+#define KEY_FISHING_CHART 0x281
+#define KEY_SINGLE_RANGE_RADAR 0x282
+#define KEY_DUAL_RANGE_RADAR 0x283
+#define KEY_RADAR_OVERLAY 0x284
+#define KEY_TRADITIONAL_SONAR 0x285
+#define KEY_CLEARVU_SONAR 0x286
+#define KEY_SIDEVU_SONAR 0x287
+#define KEY_NAV_INFO 0x288
+#define KEY_BRIGHTNESS_MENU 0x289
 #define KEY_MACRO1 0x290
 #define KEY_MACRO2 0x291
 #define KEY_MACRO3 0x292
@@ -705,6 +720,7 @@
 #define ABS_TILT_Y 0x1b
 #define ABS_TOOL_WIDTH 0x1c
 #define ABS_VOLUME 0x20
+#define ABS_PROFILE 0x21
 #define ABS_MISC 0x28
 #define ABS_RESERVED 0x2e
 #define ABS_MT_SLOT 0x2f
diff --git a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/input.h b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/input.h
index fe17226..4858c81 100644
--- a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/input.h
+++ b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/input.h
@@ -125,6 +125,7 @@
 #define BUS_RMI 0x1D
 #define BUS_CEC 0x1E
 #define BUS_INTEL_ISHTP 0x1F
+#define BUS_AMD_SFH 0x20
 #define MT_TOOL_FINGER 0x00
 #define MT_TOOL_PEN 0x01
 #define MT_TOOL_PALM 0x02
diff --git a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/io_uring.h b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/io_uring.h
index 96944f8..82dee97 100644
--- a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/io_uring.h
+++ b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/io_uring.h
@@ -20,6 +20,10 @@
 #define LINUX_IO_URING_H
 #include <linux/fs.h>
 #include <linux/types.h>
+#include <linux/time_types.h>
+#ifdef __cplusplus
+extern "C" {
+#endif
 struct io_uring_sqe {
   __u8 opcode;
   __u8 flags;
@@ -28,6 +32,10 @@
   union {
     __u64 off;
     __u64 addr2;
+    struct {
+      __u32 cmd_op;
+      __u32 __pad1;
+    };
   };
   union {
     __u64 addr;
@@ -51,6 +59,9 @@
     __u32 rename_flags;
     __u32 unlink_flags;
     __u32 hardlink_flags;
+    __u32 xattr_flags;
+    __u32 msg_ring_flags;
+    __u32 uring_cmd_flags;
   };
   __u64 user_data;
   union {
@@ -61,9 +72,20 @@
   union {
     __s32 splice_fd_in;
     __u32 file_index;
+    struct {
+      __u16 addr_len;
+      __u16 __pad3[1];
+    };
   };
-  __u64 __pad2[2];
+  union {
+    struct {
+      __u64 addr3;
+      __u64 __pad2[1];
+    };
+    __u8 cmd[0];
+  };
 };
+#define IORING_FILE_INDEX_ALLOC (~0U)
 enum {
   IOSQE_FIXED_FILE_BIT,
   IOSQE_IO_DRAIN_BIT,
@@ -87,7 +109,14 @@
 #define IORING_SETUP_CLAMP (1U << 4)
 #define IORING_SETUP_ATTACH_WQ (1U << 5)
 #define IORING_SETUP_R_DISABLED (1U << 6)
-enum {
+#define IORING_SETUP_SUBMIT_ALL (1U << 7)
+#define IORING_SETUP_COOP_TASKRUN (1U << 8)
+#define IORING_SETUP_TASKRUN_FLAG (1U << 9)
+#define IORING_SETUP_SQE128 (1U << 10)
+#define IORING_SETUP_CQE32 (1U << 11)
+#define IORING_SETUP_SINGLE_ISSUER (1U << 12)
+#define IORING_SETUP_DEFER_TASKRUN (1U << 13)
+enum io_uring_op {
   IORING_OP_NOP,
   IORING_OP_READV,
   IORING_OP_WRITEV,
@@ -128,8 +157,18 @@
   IORING_OP_MKDIRAT,
   IORING_OP_SYMLINKAT,
   IORING_OP_LINKAT,
+  IORING_OP_MSG_RING,
+  IORING_OP_FSETXATTR,
+  IORING_OP_SETXATTR,
+  IORING_OP_FGETXATTR,
+  IORING_OP_GETXATTR,
+  IORING_OP_SOCKET,
+  IORING_OP_URING_CMD,
+  IORING_OP_SEND_ZC,
+  IORING_OP_SENDMSG_ZC,
   IORING_OP_LAST,
 };
+#define IORING_URING_CMD_FIXED (1U << 0)
 #define IORING_FSYNC_DATASYNC (1U << 0)
 #define IORING_TIMEOUT_ABS (1U << 0)
 #define IORING_TIMEOUT_UPDATE (1U << 1)
@@ -143,13 +182,30 @@
 #define IORING_POLL_ADD_MULTI (1U << 0)
 #define IORING_POLL_UPDATE_EVENTS (1U << 1)
 #define IORING_POLL_UPDATE_USER_DATA (1U << 2)
+#define IORING_POLL_ADD_LEVEL (1U << 3)
+#define IORING_ASYNC_CANCEL_ALL (1U << 0)
+#define IORING_ASYNC_CANCEL_FD (1U << 1)
+#define IORING_ASYNC_CANCEL_ANY (1U << 2)
+#define IORING_ASYNC_CANCEL_FD_FIXED (1U << 3)
+#define IORING_RECVSEND_POLL_FIRST (1U << 0)
+#define IORING_RECV_MULTISHOT (1U << 1)
+#define IORING_RECVSEND_FIXED_BUF (1U << 2)
+#define IORING_ACCEPT_MULTISHOT (1U << 0)
+enum {
+  IORING_MSG_DATA,
+  IORING_MSG_SEND_FD,
+};
+#define IORING_MSG_RING_CQE_SKIP (1U << 0)
 struct io_uring_cqe {
   __u64 user_data;
   __s32 res;
   __u32 flags;
+  __u64 big_cqe[];
 };
 #define IORING_CQE_F_BUFFER (1U << 0)
 #define IORING_CQE_F_MORE (1U << 1)
+#define IORING_CQE_F_SOCK_NONEMPTY (1U << 2)
+#define IORING_CQE_F_NOTIF (1U << 3)
 enum {
   IORING_CQE_BUFFER_SHIFT = 16,
 };
@@ -169,6 +225,7 @@
 };
 #define IORING_SQ_NEED_WAKEUP (1U << 0)
 #define IORING_SQ_CQ_OVERFLOW (1U << 1)
+#define IORING_SQ_TASKRUN (1U << 2)
 struct io_cqring_offsets {
   __u32 head;
   __u32 tail;
@@ -185,6 +242,7 @@
 #define IORING_ENTER_SQ_WAKEUP (1U << 1)
 #define IORING_ENTER_SQ_WAIT (1U << 2)
 #define IORING_ENTER_EXT_ARG (1U << 3)
+#define IORING_ENTER_REGISTERED_RING (1U << 4)
 struct io_uring_params {
   __u32 sq_entries;
   __u32 cq_entries;
@@ -209,6 +267,7 @@
 #define IORING_FEAT_NATIVE_WORKERS (1U << 9)
 #define IORING_FEAT_RSRC_TAGS (1U << 10)
 #define IORING_FEAT_CQE_SKIP (1U << 11)
+#define IORING_FEAT_LINKED_FILE (1U << 12)
 enum {
   IORING_REGISTER_BUFFERS = 0,
   IORING_UNREGISTER_BUFFERS = 1,
@@ -230,6 +289,12 @@
   IORING_REGISTER_IOWQ_AFF = 17,
   IORING_UNREGISTER_IOWQ_AFF = 18,
   IORING_REGISTER_IOWQ_MAX_WORKERS = 19,
+  IORING_REGISTER_RING_FDS = 20,
+  IORING_UNREGISTER_RING_FDS = 21,
+  IORING_REGISTER_PBUF_RING = 22,
+  IORING_UNREGISTER_PBUF_RING = 23,
+  IORING_REGISTER_SYNC_CANCEL = 24,
+  IORING_REGISTER_FILE_ALLOC_RANGE = 25,
   IORING_REGISTER_LAST
 };
 enum {
@@ -241,9 +306,10 @@
   __u32 resv;
   __aligned_u64 fds;
 };
+#define IORING_RSRC_REGISTER_SPARSE (1U << 0)
 struct io_uring_rsrc_register {
   __u32 nr;
-  __u32 resv;
+  __u32 flags;
   __u64 resv2;
   __aligned_u64 data;
   __aligned_u64 tags;
@@ -261,6 +327,17 @@
   __u32 nr;
   __u32 resv2;
 };
+struct io_uring_notification_slot {
+  __u64 tag;
+  __u64 resv[3];
+};
+struct io_uring_notification_register {
+  __u32 nr_slots;
+  __u32 resv;
+  __u64 resv2;
+  __u64 data;
+  __u64 resv3;
+};
 #define IORING_REGISTER_FILES_SKIP (- 2)
 #define IO_URING_OP_SUPPORTED (1U << 0)
 struct io_uring_probe_op {
@@ -274,7 +351,7 @@
   __u8 ops_len;
   __u16 resv;
   __u32 resv2[3];
-  struct io_uring_probe_op ops[0];
+  struct io_uring_probe_op ops[];
 };
 struct io_uring_restriction {
   __u16 opcode;
@@ -286,6 +363,30 @@
   __u8 resv;
   __u32 resv2[3];
 };
+struct io_uring_buf {
+  __u64 addr;
+  __u32 len;
+  __u16 bid;
+  __u16 resv;
+};
+struct io_uring_buf_ring {
+  union {
+    struct {
+      __u64 resv1;
+      __u32 resv2;
+      __u16 resv3;
+      __u16 tail;
+    };
+    struct io_uring_buf bufs[0];
+  };
+};
+struct io_uring_buf_reg {
+  __u64 ring_addr;
+  __u32 ring_entries;
+  __u16 bgid;
+  __u16 pad;
+  __u64 resv[3];
+};
 enum {
   IORING_RESTRICTION_REGISTER_OP = 0,
   IORING_RESTRICTION_SQE_OP = 1,
@@ -299,4 +400,25 @@
   __u32 pad;
   __u64 ts;
 };
+struct io_uring_sync_cancel_reg {
+  __u64 addr;
+  __s32 fd;
+  __u32 flags;
+  struct __kernel_timespec timeout;
+  __u64 pad[4];
+};
+struct io_uring_file_index_range {
+  __u32 off;
+  __u32 len;
+  __u64 resv;
+};
+struct io_uring_recvmsg_out {
+  __u32 namelen;
+  __u32 controllen;
+  __u32 payloadlen;
+  __u32 flags;
+};
+#ifdef __cplusplus
+}
+#endif
 #endif
diff --git a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/ioam6_iptunnel.h b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/ioam6_iptunnel.h
index 7426225..ec1a6a8 100644
--- a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/ioam6_iptunnel.h
+++ b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/ioam6_iptunnel.h
@@ -32,6 +32,10 @@
   IOAM6_IPTUNNEL_MODE,
   IOAM6_IPTUNNEL_DST,
   IOAM6_IPTUNNEL_TRACE,
+#define IOAM6_IPTUNNEL_FREQ_MIN 1
+#define IOAM6_IPTUNNEL_FREQ_MAX 1000000
+  IOAM6_IPTUNNEL_FREQ_K,
+  IOAM6_IPTUNNEL_FREQ_N,
   __IOAM6_IPTUNNEL_MAX,
 };
 #define IOAM6_IPTUNNEL_MAX (__IOAM6_IPTUNNEL_MAX - 1)
diff --git a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/iommu.h b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/iommu.h
index 0a0af92..0304a32 100644
--- a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/iommu.h
+++ b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/iommu.h
@@ -85,76 +85,4 @@
   __u32 grpid;
   __u32 code;
 };
-enum iommu_inv_granularity {
-  IOMMU_INV_GRANU_DOMAIN,
-  IOMMU_INV_GRANU_PASID,
-  IOMMU_INV_GRANU_ADDR,
-  IOMMU_INV_GRANU_NR,
-};
-struct iommu_inv_addr_info {
-#define IOMMU_INV_ADDR_FLAGS_PASID (1 << 0)
-#define IOMMU_INV_ADDR_FLAGS_ARCHID (1 << 1)
-#define IOMMU_INV_ADDR_FLAGS_LEAF (1 << 2)
-  __u32 flags;
-  __u32 archid;
-  __u64 pasid;
-  __u64 addr;
-  __u64 granule_size;
-  __u64 nb_granules;
-};
-struct iommu_inv_pasid_info {
-#define IOMMU_INV_PASID_FLAGS_PASID (1 << 0)
-#define IOMMU_INV_PASID_FLAGS_ARCHID (1 << 1)
-  __u32 flags;
-  __u32 archid;
-  __u64 pasid;
-};
-struct iommu_cache_invalidate_info {
-  __u32 argsz;
-#define IOMMU_CACHE_INVALIDATE_INFO_VERSION_1 1
-  __u32 version;
-#define IOMMU_CACHE_INV_TYPE_IOTLB (1 << 0)
-#define IOMMU_CACHE_INV_TYPE_DEV_IOTLB (1 << 1)
-#define IOMMU_CACHE_INV_TYPE_PASID (1 << 2)
-#define IOMMU_CACHE_INV_TYPE_NR (3)
-  __u8 cache;
-  __u8 granularity;
-  __u8 padding[6];
-  union {
-    struct iommu_inv_pasid_info pasid_info;
-    struct iommu_inv_addr_info addr_info;
-  } granu;
-};
-struct iommu_gpasid_bind_data_vtd {
-#define IOMMU_SVA_VTD_GPASID_SRE (1 << 0)
-#define IOMMU_SVA_VTD_GPASID_EAFE (1 << 1)
-#define IOMMU_SVA_VTD_GPASID_PCD (1 << 2)
-#define IOMMU_SVA_VTD_GPASID_PWT (1 << 3)
-#define IOMMU_SVA_VTD_GPASID_EMTE (1 << 4)
-#define IOMMU_SVA_VTD_GPASID_CD (1 << 5)
-#define IOMMU_SVA_VTD_GPASID_WPE (1 << 6)
-#define IOMMU_SVA_VTD_GPASID_LAST (1 << 7)
-  __u64 flags;
-  __u32 pat;
-  __u32 emt;
-};
-#define IOMMU_SVA_VTD_GPASID_MTS_MASK (IOMMU_SVA_VTD_GPASID_CD | IOMMU_SVA_VTD_GPASID_EMTE | IOMMU_SVA_VTD_GPASID_PCD | IOMMU_SVA_VTD_GPASID_PWT)
-struct iommu_gpasid_bind_data {
-  __u32 argsz;
-#define IOMMU_GPASID_BIND_VERSION_1 1
-  __u32 version;
-#define IOMMU_PASID_FORMAT_INTEL_VTD 1
-#define IOMMU_PASID_FORMAT_LAST 2
-  __u32 format;
-  __u32 addr_width;
-#define IOMMU_SVA_GPASID_VAL (1 << 0)
-  __u64 flags;
-  __u64 gpgd;
-  __u64 hpasid;
-  __u64 gpasid;
-  __u8 padding[8];
-  union {
-    struct iommu_gpasid_bind_data_vtd vtd;
-  } vendor;
-};
 #endif
diff --git a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/ip.h b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/ip.h
index 9571cac..766a808 100644
--- a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/ip.h
+++ b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/ip.h
@@ -86,8 +86,9 @@
   __u8 ttl;
   __u8 protocol;
   __sum16 check;
-  __be32 saddr;
+  __struct_group(, addrs,, __be32 saddr;
   __be32 daddr;
+ );
 };
 struct ip_auth_hdr {
   __u8 nexthdr;
@@ -95,12 +96,12 @@
   __be16 reserved;
   __be32 spi;
   __be32 seq_no;
-  __u8 auth_data[0];
+  __u8 auth_data[];
 };
 struct ip_esp_hdr {
   __be32 spi;
   __be32 seq_no;
-  __u8 enc_data[0];
+  __u8 enc_data[];
 };
 struct ip_comp_hdr {
   __u8 nexthdr;
diff --git a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/ip_vs.h b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/ip_vs.h
index 6e3defe..916fcf0 100644
--- a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/ip_vs.h
+++ b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/ip_vs.h
@@ -159,11 +159,11 @@
   __be16 port;
   __u32 fwmark;
   unsigned int num_dests;
-  struct ip_vs_dest_entry entrytable[0];
+  struct ip_vs_dest_entry entrytable[];
 };
 struct ip_vs_get_services {
   unsigned int num_services;
-  struct ip_vs_service_entry entrytable[0];
+  struct ip_vs_service_entry entrytable[];
 };
 struct ip_vs_timeout_user {
   int tcp_timeout;
diff --git a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/ipv6.h b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/ipv6.h
index b3db9ce..2e57ed1 100644
--- a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/ipv6.h
+++ b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/ipv6.h
@@ -87,8 +87,9 @@
   __be16 payload_len;
   __u8 nexthdr;
   __u8 hop_limit;
-  struct in6_addr saddr;
+  __struct_group(, addrs,, struct in6_addr saddr;
   struct in6_addr daddr;
+ );
 };
 enum {
   DEVCONF_FORWARDING = 0,
@@ -148,6 +149,7 @@
   DEVCONF_IOAM6_ID,
   DEVCONF_IOAM6_ID_WIDE,
   DEVCONF_NDISC_EVICT_NOCARRIER,
+  DEVCONF_ACCEPT_UNTRACKED_NA,
   DEVCONF_MAX
 };
 #endif
diff --git a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/iso_fs.h b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/iso_fs.h
index 8227031..f9c4f48 100644
--- a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/iso_fs.h
+++ b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/iso_fs.h
@@ -132,7 +132,7 @@
   __u8 name_len[2];
   __u8 extent[4];
   __u8 parent[2];
-  char name[0];
+  char name[];
 } __attribute__((packed));
 struct iso_directory_record {
   __u8 length[ISODCL(1, 1)];
@@ -145,7 +145,7 @@
   __u8 interleave[ISODCL(28, 28)];
   __u8 volume_sequence_number[ISODCL(29, 32)];
   __u8 name_len[ISODCL(33, 33)];
-  char name[0];
+  char name[];
 } __attribute__((packed));
 #define ISOFS_BLOCK_BITS 11
 #define ISOFS_BLOCK_SIZE 2048
diff --git a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/jffs2.h b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/jffs2.h
index 698f953..643aa2e 100644
--- a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/jffs2.h
+++ b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/jffs2.h
@@ -86,7 +86,7 @@
   __u8 unused[2];
   jint32_t node_crc;
   jint32_t name_crc;
-  __u8 name[0];
+  __u8 name[];
 };
 struct jffs2_raw_inode {
   jint16_t magic;
@@ -110,7 +110,7 @@
   jint16_t flags;
   jint32_t data_crc;
   jint32_t node_crc;
-  __u8 data[0];
+  __u8 data[];
 };
 struct jffs2_raw_xattr {
   jint16_t magic;
@@ -124,7 +124,7 @@
   jint16_t value_len;
   jint32_t data_crc;
   jint32_t node_crc;
-  __u8 data[0];
+  __u8 data[];
 } __attribute__((packed));
 struct jffs2_raw_xref {
   jint16_t magic;
@@ -146,7 +146,7 @@
   jint32_t padded;
   jint32_t sum_crc;
   jint32_t node_crc;
-  jint32_t sum[0];
+  jint32_t sum[];
 };
 union jffs2_node_union {
   struct jffs2_raw_inode i;
diff --git a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/kcov.h b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/kcov.h
index cf2660b..5b6f6b1 100644
--- a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/kcov.h
+++ b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/kcov.h
@@ -24,7 +24,7 @@
   __u32 area_size;
   __u32 num_handles;
   __aligned_u64 common_handle;
-  __aligned_u64 handles[0];
+  __aligned_u64 handles[];
 };
 #define KCOV_REMOTE_MAX_HANDLES 0x100
 #define KCOV_INIT_TRACE _IOR('c', 1, unsigned long)
diff --git a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/kexec.h b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/kexec.h
index 2e3bd0c..438c07b 100644
--- a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/kexec.h
+++ b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/kexec.h
@@ -40,11 +40,12 @@
 #define KEXEC_ARCH_MIPS (8 << 16)
 #define KEXEC_ARCH_AARCH64 (183 << 16)
 #define KEXEC_ARCH_RISCV (243 << 16)
+#define KEXEC_ARCH_LOONGARCH (258 << 16)
 #define KEXEC_SEGMENT_MAX 16
 struct kexec_segment {
   const void * buf;
-  size_t bufsz;
+  __kernel_size_t bufsz;
   const void * mem;
-  size_t memsz;
+  __kernel_size_t memsz;
 };
 #endif
diff --git a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/kfd_ioctl.h b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/kfd_ioctl.h
index c52ac64..d21e0fc 100644
--- a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/kfd_ioctl.h
+++ b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/kfd_ioctl.h
@@ -21,7 +21,7 @@
 #include <drm/drm.h>
 #include <linux/ioctl.h>
 #define KFD_IOCTL_MAJOR_VERSION 1
-#define KFD_IOCTL_MINOR_VERSION 6
+#define KFD_IOCTL_MINOR_VERSION 11
 struct kfd_ioctl_get_version_args {
   __u32 major_version;
   __u32 minor_version;
@@ -72,6 +72,11 @@
   __u32 queue_id;
   __u32 pad;
 };
+struct kfd_ioctl_get_available_memory_args {
+  __u64 available;
+  __u32 gpu_id;
+  __u32 pad;
+};
 #define KFD_IOC_CACHE_POLICY_COHERENT 0
 #define KFD_IOC_CACHE_POLICY_NONCOHERENT 1
 struct kfd_ioctl_set_memory_policy_args {
@@ -132,6 +137,7 @@
   __u32 gpu_id;
   __u32 buf_size_in_bytes;
 };
+#define KFD_INVALID_FD 0xffffffff
 #define KFD_IOC_EVENT_SIGNAL 0
 #define KFD_IOC_EVENT_NODECHANGE 1
 #define KFD_IOC_EVENT_DEVICESTATECHANGE 2
@@ -294,12 +300,74 @@
   KFD_SMI_EVENT_THERMAL_THROTTLE = 2,
   KFD_SMI_EVENT_GPU_PRE_RESET = 3,
   KFD_SMI_EVENT_GPU_POST_RESET = 4,
+  KFD_SMI_EVENT_MIGRATE_START = 5,
+  KFD_SMI_EVENT_MIGRATE_END = 6,
+  KFD_SMI_EVENT_PAGE_FAULT_START = 7,
+  KFD_SMI_EVENT_PAGE_FAULT_END = 8,
+  KFD_SMI_EVENT_QUEUE_EVICTION = 9,
+  KFD_SMI_EVENT_QUEUE_RESTORE = 10,
+  KFD_SMI_EVENT_UNMAP_FROM_GPU = 11,
+  KFD_SMI_EVENT_ALL_PROCESS = 64
+};
+enum KFD_MIGRATE_TRIGGERS {
+  KFD_MIGRATE_TRIGGER_PREFETCH,
+  KFD_MIGRATE_TRIGGER_PAGEFAULT_GPU,
+  KFD_MIGRATE_TRIGGER_PAGEFAULT_CPU,
+  KFD_MIGRATE_TRIGGER_TTM_EVICTION
+};
+enum KFD_QUEUE_EVICTION_TRIGGERS {
+  KFD_QUEUE_EVICTION_TRIGGER_SVM,
+  KFD_QUEUE_EVICTION_TRIGGER_USERPTR,
+  KFD_QUEUE_EVICTION_TRIGGER_TTM,
+  KFD_QUEUE_EVICTION_TRIGGER_SUSPEND,
+  KFD_QUEUE_EVICTION_CRIU_CHECKPOINT,
+  KFD_QUEUE_EVICTION_CRIU_RESTORE
+};
+enum KFD_SVM_UNMAP_TRIGGERS {
+  KFD_SVM_UNMAP_TRIGGER_MMU_NOTIFY,
+  KFD_SVM_UNMAP_TRIGGER_MMU_NOTIFY_MIGRATE,
+  KFD_SVM_UNMAP_TRIGGER_UNMAP_FROM_CPU
 };
 #define KFD_SMI_EVENT_MASK_FROM_INDEX(i) (1ULL << ((i) - 1))
+#define KFD_SMI_EVENT_MSG_SIZE 96
 struct kfd_ioctl_smi_events_args {
   __u32 gpuid;
   __u32 anon_fd;
 };
+enum kfd_criu_op {
+  KFD_CRIU_OP_PROCESS_INFO,
+  KFD_CRIU_OP_CHECKPOINT,
+  KFD_CRIU_OP_UNPAUSE,
+  KFD_CRIU_OP_RESTORE,
+  KFD_CRIU_OP_RESUME,
+};
+struct kfd_ioctl_criu_args {
+  __u64 devices;
+  __u64 bos;
+  __u64 priv_data;
+  __u64 priv_data_size;
+  __u32 num_devices;
+  __u32 num_bos;
+  __u32 num_objects;
+  __u32 pid;
+  __u32 op;
+};
+struct kfd_criu_device_bucket {
+  __u32 user_gpu_id;
+  __u32 actual_gpu_id;
+  __u32 drm_fd;
+  __u32 pad;
+};
+struct kfd_criu_bo_bucket {
+  __u64 addr;
+  __u64 size;
+  __u64 offset;
+  __u64 restored_offset;
+  __u32 gpu_id;
+  __u32 alloc_flags;
+  __u32 dmabuf_fd;
+  __u32 pad;
+};
 enum kfd_mmio_remap {
   KFD_MMIO_REMAP_HDP_MEM_FLUSH_CNTL = 0,
   KFD_MMIO_REMAP_HDP_REG_FLUSH_CNTL = 4,
@@ -310,6 +378,7 @@
 #define KFD_IOCTL_SVM_FLAG_GPU_RO 0x00000008
 #define KFD_IOCTL_SVM_FLAG_GPU_EXEC 0x00000010
 #define KFD_IOCTL_SVM_FLAG_GPU_READ_MOSTLY 0x00000020
+#define KFD_IOCTL_SVM_FLAG_GPU_ALWAYS_MAPPED 0x00000040
 enum kfd_ioctl_svm_op {
   KFD_IOCTL_SVM_OP_SET_ATTR,
   KFD_IOCTL_SVM_OP_GET_ATTR
@@ -337,7 +406,7 @@
   __u64 size;
   __u32 op;
   __u32 nattr;
-  struct kfd_ioctl_svm_attribute attrs[0];
+  struct kfd_ioctl_svm_attribute attrs[];
 };
 struct kfd_ioctl_set_xnack_mode_args {
   __s32 xnack_enabled;
@@ -359,10 +428,10 @@
 #define AMDKFD_IOC_SET_EVENT AMDKFD_IOW(0x0A, struct kfd_ioctl_set_event_args)
 #define AMDKFD_IOC_RESET_EVENT AMDKFD_IOW(0x0B, struct kfd_ioctl_reset_event_args)
 #define AMDKFD_IOC_WAIT_EVENTS AMDKFD_IOWR(0x0C, struct kfd_ioctl_wait_events_args)
-#define AMDKFD_IOC_DBG_REGISTER AMDKFD_IOW(0x0D, struct kfd_ioctl_dbg_register_args)
-#define AMDKFD_IOC_DBG_UNREGISTER AMDKFD_IOW(0x0E, struct kfd_ioctl_dbg_unregister_args)
-#define AMDKFD_IOC_DBG_ADDRESS_WATCH AMDKFD_IOW(0x0F, struct kfd_ioctl_dbg_address_watch_args)
-#define AMDKFD_IOC_DBG_WAVE_CONTROL AMDKFD_IOW(0x10, struct kfd_ioctl_dbg_wave_control_args)
+#define AMDKFD_IOC_DBG_REGISTER_DEPRECATED AMDKFD_IOW(0x0D, struct kfd_ioctl_dbg_register_args)
+#define AMDKFD_IOC_DBG_UNREGISTER_DEPRECATED AMDKFD_IOW(0x0E, struct kfd_ioctl_dbg_unregister_args)
+#define AMDKFD_IOC_DBG_ADDRESS_WATCH_DEPRECATED AMDKFD_IOW(0x0F, struct kfd_ioctl_dbg_address_watch_args)
+#define AMDKFD_IOC_DBG_WAVE_CONTROL_DEPRECATED AMDKFD_IOW(0x10, struct kfd_ioctl_dbg_wave_control_args)
 #define AMDKFD_IOC_SET_SCRATCH_BACKING_VA AMDKFD_IOWR(0x11, struct kfd_ioctl_set_scratch_backing_va_args)
 #define AMDKFD_IOC_GET_TILE_CONFIG AMDKFD_IOWR(0x12, struct kfd_ioctl_get_tile_config_args)
 #define AMDKFD_IOC_SET_TRAP_HANDLER AMDKFD_IOW(0x13, struct kfd_ioctl_set_trap_handler_args)
@@ -380,6 +449,8 @@
 #define AMDKFD_IOC_SMI_EVENTS AMDKFD_IOWR(0x1F, struct kfd_ioctl_smi_events_args)
 #define AMDKFD_IOC_SVM AMDKFD_IOWR(0x20, struct kfd_ioctl_svm_args)
 #define AMDKFD_IOC_SET_XNACK_MODE AMDKFD_IOWR(0x21, struct kfd_ioctl_set_xnack_mode_args)
+#define AMDKFD_IOC_CRIU_OP AMDKFD_IOWR(0x22, struct kfd_ioctl_criu_args)
+#define AMDKFD_IOC_AVAILABLE_MEMORY AMDKFD_IOWR(0x23, struct kfd_ioctl_get_available_memory_args)
 #define AMDKFD_COMMAND_START 0x01
-#define AMDKFD_COMMAND_END 0x22
+#define AMDKFD_COMMAND_END 0x24
 #endif
diff --git a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/kvm.h b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/kvm.h
index 1cf7182..768f57e 100644
--- a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/kvm.h
+++ b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/kvm.h
@@ -216,6 +216,8 @@
 #define KVM_EXIT_X86_BUS_LOCK 33
 #define KVM_EXIT_XEN 34
 #define KVM_EXIT_RISCV_SBI 35
+#define KVM_EXIT_RISCV_CSR 36
+#define KVM_EXIT_NOTIFY 37
 #define KVM_INTERNAL_ERROR_EMULATION 1
 #define KVM_INTERNAL_ERROR_SIMUL_EX 2
 #define KVM_INTERNAL_ERROR_DELIVERY_EV 3
@@ -336,8 +338,15 @@
 #define KVM_SYSTEM_EVENT_SHUTDOWN 1
 #define KVM_SYSTEM_EVENT_RESET 2
 #define KVM_SYSTEM_EVENT_CRASH 3
+#define KVM_SYSTEM_EVENT_WAKEUP 4
+#define KVM_SYSTEM_EVENT_SUSPEND 5
+#define KVM_SYSTEM_EVENT_SEV_TERM 6
       __u32 type;
-      __u64 flags;
+      __u32 ndata;
+      union {
+        __u64 flags;
+        __u64 data[16];
+      };
     } system_event;
     struct {
       __u64 addr;
@@ -372,6 +381,16 @@
       unsigned long args[6];
       unsigned long ret[2];
     } riscv_sbi;
+    struct {
+      unsigned long csr_num;
+      unsigned long new_value;
+      unsigned long write_mask;
+      unsigned long ret_value;
+    } riscv_csr;
+    struct {
+#define KVM_NOTIFY_CONTEXT_INVALID (1 << 0)
+      __u32 flags;
+    } notify;
     char padding[256];
   };
 #define SYNC_REGS_SIZE_BYTES 2048
@@ -401,7 +420,7 @@
 };
 struct kvm_coalesced_mmio_ring {
   __u32 first, last;
-  struct kvm_coalesced_mmio coalesced_mmio[0];
+  struct kvm_coalesced_mmio coalesced_mmio[];
 };
 #define KVM_COALESCED_MMIO_MAX ((PAGE_SIZE - sizeof(struct kvm_coalesced_mmio_ring)) / sizeof(struct kvm_coalesced_mmio))
 struct kvm_translation {
@@ -419,7 +438,10 @@
   __u32 op;
   __u64 buf;
   union {
-    __u8 ar;
+    struct {
+      __u8 ar;
+      __u8 key;
+    };
     __u32 sida_offset;
     __u8 reserved[32];
   };
@@ -428,8 +450,11 @@
 #define KVM_S390_MEMOP_LOGICAL_WRITE 1
 #define KVM_S390_MEMOP_SIDA_READ 2
 #define KVM_S390_MEMOP_SIDA_WRITE 3
+#define KVM_S390_MEMOP_ABSOLUTE_READ 4
+#define KVM_S390_MEMOP_ABSOLUTE_WRITE 5
 #define KVM_S390_MEMOP_F_CHECK_ONLY (1ULL << 0)
 #define KVM_S390_MEMOP_F_INJECT_EXCEPTION (1ULL << 1)
+#define KVM_S390_MEMOP_F_SKEY_PROTECTION (1ULL << 2)
 struct kvm_interrupt {
   __u32 irq;
 };
@@ -452,7 +477,7 @@
 };
 struct kvm_signal_mask {
   __u32 len;
-  __u8 sigset[0];
+  __u8 sigset[];
 };
 struct kvm_tpr_access_ctl {
   __u32 enabled;
@@ -472,6 +497,7 @@
 #define KVM_MP_STATE_OPERATING 7
 #define KVM_MP_STATE_LOAD 8
 #define KVM_MP_STATE_AP_RESET_HOLD 9
+#define KVM_MP_STATE_SUSPENDED 10
 struct kvm_mp_state {
   __u32 mp_state;
 };
@@ -890,6 +916,19 @@
 #define KVM_CAP_XSAVE2 208
 #define KVM_CAP_SYS_ATTRIBUTES 209
 #define KVM_CAP_PPC_AIL_MODE_3 210
+#define KVM_CAP_S390_MEM_OP_EXTENSION 211
+#define KVM_CAP_PMU_CAPABILITY 212
+#define KVM_CAP_DISABLE_QUIRKS2 213
+#define KVM_CAP_VM_TSC_CONTROL 214
+#define KVM_CAP_SYSTEM_EVENT_DATA 215
+#define KVM_CAP_ARM_SYSTEM_SUSPEND 216
+#define KVM_CAP_S390_PROTECTED_DUMP 217
+#define KVM_CAP_X86_TRIPLE_FAULT_EVENT 218
+#define KVM_CAP_X86_NOTIFY_VMEXIT 219
+#define KVM_CAP_VM_DISABLE_NX_HUGE_PAGES 220
+#define KVM_CAP_S390_ZPCI_OP 221
+#define KVM_CAP_S390_CPU_TOPOLOGY 222
+#define KVM_CAP_DIRTY_LOG_RING_ACQ_REL 223
 #ifdef KVM_CAP_IRQ_ROUTING
 struct kvm_irq_routing_irqchip {
   __u32 irqchip;
@@ -943,7 +982,7 @@
 struct kvm_irq_routing {
   __u32 nr;
   __u32 flags;
-  struct kvm_irq_routing_entry entries[0];
+  struct kvm_irq_routing_entry entries[];
 };
 #endif
 #ifdef KVM_CAP_MCE
@@ -963,6 +1002,7 @@
 #define KVM_XEN_HVM_CONFIG_SHARED_INFO (1 << 2)
 #define KVM_XEN_HVM_CONFIG_RUNSTATE (1 << 3)
 #define KVM_XEN_HVM_CONFIG_EVTCHN_2LEVEL (1 << 4)
+#define KVM_XEN_HVM_CONFIG_EVTCHN_SEND (1 << 5)
 struct kvm_xen_hvm_config {
   __u32 flags;
   __u32 msr;
@@ -1028,7 +1068,7 @@
 #define KVM_REG_SIZE_U2048 0x0080000000000000ULL
 struct kvm_reg_list {
   __u64 n;
-  __u64 reg[0];
+  __u64 reg[];
 };
 struct kvm_one_reg {
   __u64 id;
@@ -1242,6 +1282,48 @@
   __u64 size;
   __u64 tweak;
 };
+enum pv_cmd_dmp_id {
+  KVM_PV_DUMP_INIT,
+  KVM_PV_DUMP_CONFIG_STOR_STATE,
+  KVM_PV_DUMP_COMPLETE,
+  KVM_PV_DUMP_CPU,
+};
+struct kvm_s390_pv_dmp {
+  __u64 subcmd;
+  __u64 buff_addr;
+  __u64 buff_len;
+  __u64 gaddr;
+  __u64 reserved[4];
+};
+enum pv_cmd_info_id {
+  KVM_PV_INFO_VM,
+  KVM_PV_INFO_DUMP,
+};
+struct kvm_s390_pv_info_dump {
+  __u64 dump_cpu_buffer_len;
+  __u64 dump_config_mem_buffer_per_1m;
+  __u64 dump_config_finalize_len;
+};
+struct kvm_s390_pv_info_vm {
+  __u64 inst_calls_list[4];
+  __u64 max_cpus;
+  __u64 max_guests;
+  __u64 max_guest_addr;
+  __u64 feature_indication;
+};
+struct kvm_s390_pv_info_header {
+  __u32 id;
+  __u32 len_max;
+  __u32 len_written;
+  __u32 reserved;
+};
+struct kvm_s390_pv_info {
+  struct kvm_s390_pv_info_header header;
+  union {
+    struct kvm_s390_pv_info_dump dump;
+    struct kvm_s390_pv_info_vm vm;
+  };
+};
 enum pv_cmd_id {
   KVM_PV_ENABLE,
   KVM_PV_DISABLE,
@@ -1250,6 +1332,8 @@
   KVM_PV_VERIFY,
   KVM_PV_PREP_RESET,
   KVM_PV_UNSHARE_ALL,
+  KVM_PV_INFO,
+  KVM_PV_DUMP,
 };
 struct kvm_pv_cmd {
   __u32 cmd;
@@ -1273,14 +1357,38 @@
     struct {
       __u64 gfn;
     } shared_info;
+    struct {
+      __u32 send_port;
+      __u32 type;
+      __u32 flags;
+#define KVM_XEN_EVTCHN_DEASSIGN (1 << 0)
+#define KVM_XEN_EVTCHN_UPDATE (1 << 1)
+#define KVM_XEN_EVTCHN_RESET (1 << 2)
+      union {
+        struct {
+          __u32 port;
+          __u32 vcpu;
+          __u32 priority;
+        } port;
+        struct {
+          __u32 port;
+          __s32 fd;
+        } eventfd;
+        __u32 padding[4];
+      } deliver;
+    } evtchn;
+    __u32 xen_version;
     __u64 pad[8];
   } u;
 };
 #define KVM_XEN_ATTR_TYPE_LONG_MODE 0x0
 #define KVM_XEN_ATTR_TYPE_SHARED_INFO 0x1
 #define KVM_XEN_ATTR_TYPE_UPCALL_VECTOR 0x2
+#define KVM_XEN_ATTR_TYPE_EVTCHN 0x3
+#define KVM_XEN_ATTR_TYPE_XEN_VERSION 0x4
 #define KVM_XEN_VCPU_GET_ATTR _IOWR(KVMIO, 0xca, struct kvm_xen_vcpu_attr)
 #define KVM_XEN_VCPU_SET_ATTR _IOW(KVMIO, 0xcb, struct kvm_xen_vcpu_attr)
+#define KVM_XEN_HVM_EVTCHN_SEND _IOW(KVMIO, 0xd0, struct kvm_irq_routing_xen_evtchn)
 #define KVM_GET_SREGS2 _IOR(KVMIO, 0xcc, struct kvm_sregs2)
 #define KVM_SET_SREGS2 _IOW(KVMIO, 0xcd, struct kvm_sregs2)
 struct kvm_xen_vcpu_attr {
@@ -1297,6 +1405,13 @@
       __u64 time_blocked;
       __u64 time_offline;
     } runstate;
+    __u32 vcpu_id;
+    struct {
+      __u32 port;
+      __u32 priority;
+      __u64 expires_ns;
+    } timer;
+    __u8 vector;
   } u;
 };
 #define KVM_XEN_VCPU_ATTR_TYPE_VCPU_INFO 0x0
@@ -1305,6 +1420,9 @@
 #define KVM_XEN_VCPU_ATTR_TYPE_RUNSTATE_CURRENT 0x3
 #define KVM_XEN_VCPU_ATTR_TYPE_RUNSTATE_DATA 0x4
 #define KVM_XEN_VCPU_ATTR_TYPE_RUNSTATE_ADJUST 0x5
+#define KVM_XEN_VCPU_ATTR_TYPE_VCPU_ID 0x6
+#define KVM_XEN_VCPU_ATTR_TYPE_TIMER 0x7
+#define KVM_XEN_VCPU_ATTR_TYPE_UPCALL_VECTOR 0x8
 enum sev_cmd_id {
   KVM_SEV_INIT = 0,
   KVM_SEV_ES_INIT,
@@ -1480,6 +1598,7 @@
 };
 #define KVM_BUS_LOCK_DETECTION_OFF (1 << 0)
 #define KVM_BUS_LOCK_DETECTION_EXIT (1 << 1)
+#define KVM_PMU_CAP_DISABLE (1 << 0)
 struct kvm_stats_header {
   __u32 flags;
   __u32 name_size;
@@ -1502,7 +1621,8 @@
 #define KVM_STATS_UNIT_BYTES (0x1 << KVM_STATS_UNIT_SHIFT)
 #define KVM_STATS_UNIT_SECONDS (0x2 << KVM_STATS_UNIT_SHIFT)
 #define KVM_STATS_UNIT_CYCLES (0x3 << KVM_STATS_UNIT_SHIFT)
-#define KVM_STATS_UNIT_MAX KVM_STATS_UNIT_CYCLES
+#define KVM_STATS_UNIT_BOOLEAN (0x4 << KVM_STATS_UNIT_SHIFT)
+#define KVM_STATS_UNIT_MAX KVM_STATS_UNIT_BOOLEAN
 #define KVM_STATS_BASE_SHIFT 8
 #define KVM_STATS_BASE_MASK (0xF << KVM_STATS_BASE_SHIFT)
 #define KVM_STATS_BASE_POW10 (0x0 << KVM_STATS_BASE_SHIFT)
@@ -1518,4 +1638,28 @@
 };
 #define KVM_GET_STATS_FD _IO(KVMIO, 0xce)
 #define KVM_GET_XSAVE2 _IOR(KVMIO, 0xcf, struct kvm_xsave)
+#define KVM_S390_PV_CPU_COMMAND _IOWR(KVMIO, 0xd0, struct kvm_pv_cmd)
+#define KVM_X86_NOTIFY_VMEXIT_ENABLED (1ULL << 0)
+#define KVM_X86_NOTIFY_VMEXIT_USER (1ULL << 1)
+#define KVM_S390_ZPCI_OP _IOW(KVMIO, 0xd1, struct kvm_s390_zpci_op)
+struct kvm_s390_zpci_op {
+  __u32 fh;
+  __u8 op;
+  __u8 pad[3];
+  union {
+    struct {
+      __u64 ibv;
+      __u64 sb;
+      __u32 flags;
+      __u32 noi;
+      __u8 isc;
+      __u8 sbo;
+      __u16 pad;
+    } reg_aen;
+    __u64 reserved[8];
+  } u;
+};
+#define KVM_S390_ZPCIOP_REG_AEN 0
+#define KVM_S390_ZPCIOP_DEREG_AEN 1
+#define KVM_S390_ZPCIOP_REGAEN_HOST (1 << 0)
 #endif
diff --git a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/l2tp.h b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/l2tp.h
index a054819..dee634e 100644
--- a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/l2tp.h
+++ b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/l2tp.h
@@ -22,7 +22,6 @@
 #include <linux/socket.h>
 #include <linux/in.h>
 #include <linux/in6.h>
-#define IPPROTO_L2TP 115
 #define __SOCK_SIZE__ 16
 struct sockaddr_l2tpip {
   __kernel_sa_family_t l2tp_family;
diff --git a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/landlock.h b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/landlock.h
index 50d79d8..ea2fd74 100644
--- a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/landlock.h
+++ b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/landlock.h
@@ -43,4 +43,5 @@
 #define LANDLOCK_ACCESS_FS_MAKE_FIFO (1ULL << 10)
 #define LANDLOCK_ACCESS_FS_MAKE_BLOCK (1ULL << 11)
 #define LANDLOCK_ACCESS_FS_MAKE_SYM (1ULL << 12)
+#define LANDLOCK_ACCESS_FS_REFER (1ULL << 13)
 #endif
diff --git a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/lirc.h b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/lirc.h
index a0ac24a..dff0b63 100644
--- a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/lirc.h
+++ b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/lirc.h
@@ -26,18 +26,21 @@
 #define LIRC_MODE2_PULSE 0x01000000
 #define LIRC_MODE2_FREQUENCY 0x02000000
 #define LIRC_MODE2_TIMEOUT 0x03000000
+#define LIRC_MODE2_OVERFLOW 0x04000000
 #define LIRC_VALUE_MASK 0x00FFFFFF
 #define LIRC_MODE2_MASK 0xFF000000
 #define LIRC_SPACE(val) (((val) & LIRC_VALUE_MASK) | LIRC_MODE2_SPACE)
 #define LIRC_PULSE(val) (((val) & LIRC_VALUE_MASK) | LIRC_MODE2_PULSE)
 #define LIRC_FREQUENCY(val) (((val) & LIRC_VALUE_MASK) | LIRC_MODE2_FREQUENCY)
 #define LIRC_TIMEOUT(val) (((val) & LIRC_VALUE_MASK) | LIRC_MODE2_TIMEOUT)
+#define LIRC_OVERFLOW(val) (((val) & LIRC_VALUE_MASK) | LIRC_MODE2_OVERFLOW)
 #define LIRC_VALUE(val) ((val) & LIRC_VALUE_MASK)
 #define LIRC_MODE2(val) ((val) & LIRC_MODE2_MASK)
 #define LIRC_IS_SPACE(val) (LIRC_MODE2(val) == LIRC_MODE2_SPACE)
 #define LIRC_IS_PULSE(val) (LIRC_MODE2(val) == LIRC_MODE2_PULSE)
 #define LIRC_IS_FREQUENCY(val) (LIRC_MODE2(val) == LIRC_MODE2_FREQUENCY)
 #define LIRC_IS_TIMEOUT(val) (LIRC_MODE2(val) == LIRC_MODE2_TIMEOUT)
+#define LIRC_IS_OVERFLOW(val) (LIRC_MODE2(val) == LIRC_MODE2_OVERFLOW)
 #define lirc_t int
 #define LIRC_MODE2SEND(x) (x)
 #define LIRC_SEND2MODE(x) (x)
@@ -63,17 +66,15 @@
 #define LIRC_CAN_REC_LIRCCODE LIRC_MODE2REC(LIRC_MODE_LIRCCODE)
 #define LIRC_CAN_REC_MASK LIRC_MODE2REC(LIRC_CAN_SEND_MASK)
 #define LIRC_CAN_SET_REC_CARRIER (LIRC_CAN_SET_SEND_CARRIER << 16)
-#define LIRC_CAN_SET_REC_DUTY_CYCLE (LIRC_CAN_SET_SEND_DUTY_CYCLE << 16)
-#define LIRC_CAN_SET_REC_DUTY_CYCLE_RANGE 0x40000000
 #define LIRC_CAN_SET_REC_CARRIER_RANGE 0x80000000
 #define LIRC_CAN_GET_REC_RESOLUTION 0x20000000
 #define LIRC_CAN_SET_REC_TIMEOUT 0x10000000
-#define LIRC_CAN_SET_REC_FILTER 0x08000000
 #define LIRC_CAN_MEASURE_CARRIER 0x02000000
 #define LIRC_CAN_USE_WIDEBAND_RECEIVER 0x04000000
 #define LIRC_CAN_SEND(x) ((x) & LIRC_CAN_SEND_MASK)
 #define LIRC_CAN_REC(x) ((x) & LIRC_CAN_REC_MASK)
-#define LIRC_CAN_NOTIFY_DECODE 0x01000000
+#define LIRC_CAN_SET_REC_FILTER 0
+#define LIRC_CAN_NOTIFY_DECODE 0
 #define LIRC_GET_FEATURES _IOR('i', 0x00000000, __u32)
 #define LIRC_GET_SEND_MODE _IOR('i', 0x00000001, __u32)
 #define LIRC_GET_REC_MODE _IOR('i', 0x00000002, __u32)
diff --git a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/loadpin.h b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/loadpin.h
new file mode 100644
index 0000000..2641939
--- /dev/null
+++ b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/loadpin.h
@@ -0,0 +1,23 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPI_LINUX_LOOP_LOADPIN_H
+#define _UAPI_LINUX_LOOP_LOADPIN_H
+#define LOADPIN_IOC_MAGIC 'L'
+#define LOADPIN_IOC_SET_TRUSTED_VERITY_DIGESTS _IOW(LOADPIN_IOC_MAGIC, 0x00, unsigned int)
+#endif
diff --git a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/lwtunnel.h b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/lwtunnel.h
index e6fb536..94011dd 100644
--- a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/lwtunnel.h
+++ b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/lwtunnel.h
@@ -30,6 +30,7 @@
   LWTUNNEL_ENCAP_SEG6_LOCAL,
   LWTUNNEL_ENCAP_RPL,
   LWTUNNEL_ENCAP_IOAM6,
+  LWTUNNEL_ENCAP_XFRM,
   __LWTUNNEL_ENCAP_MAX,
 };
 #define LWTUNNEL_ENCAP_MAX (__LWTUNNEL_ENCAP_MAX - 1)
@@ -107,4 +108,11 @@
 };
 #define LWT_BPF_MAX (__LWT_BPF_MAX - 1)
 #define LWT_BPF_MAX_HEADROOM 256
+enum {
+  LWT_XFRM_UNSPEC,
+  LWT_XFRM_IF_ID,
+  LWT_XFRM_LINK,
+  __LWT_XFRM_MAX,
+};
+#define LWT_XFRM_MAX (__LWT_XFRM_MAX - 1)
 #endif
diff --git a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/magic.h b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/magic.h
index 6563411..ac2a0f3 100644
--- a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/magic.h
+++ b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/magic.h
@@ -99,11 +99,7 @@
 #define AAFS_MAGIC 0x5a3c69f0
 #define ZONEFS_MAGIC 0x5a4f4653
 #define UDF_SUPER_MAGIC 0x15013346
-#define BALLOON_KVM_MAGIC 0x13661366
-#define ZSMALLOC_MAGIC 0x58295829
 #define DMA_BUF_MAGIC 0x444d4142
 #define DEVMEM_MAGIC 0x454d444d
-#define Z3FOLD_MAGIC 0x33
-#define PPC_CMM_MAGIC 0xc7571590
 #define SECRETMEM_MAGIC 0x5345434d
 #endif
diff --git a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/mctp.h b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/mctp.h
index 21a9a14..f02c12f 100644
--- a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/mctp.h
+++ b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/mctp.h
@@ -46,5 +46,13 @@
 #define MCTP_ADDR_ANY 0xff
 #define MCTP_TAG_MASK 0x07
 #define MCTP_TAG_OWNER 0x08
+#define MCTP_TAG_PREALLOC 0x10
 #define MCTP_OPT_ADDR_EXT 1
+#define SIOCMCTPALLOCTAG (SIOCPROTOPRIVATE + 0)
+#define SIOCMCTPDROPTAG (SIOCPROTOPRIVATE + 1)
+struct mctp_ioc_tag_ctl {
+  mctp_eid_t peer_addr;
+  __u8 tag;
+  __u16 flags;
+};
 #endif
diff --git a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/mdio.h b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/mdio.h
index d5c9da8..7a2c9af 100644
--- a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/mdio.h
+++ b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/mdio.h
@@ -66,6 +66,19 @@
 #define MDIO_PCS_10GBRT_STAT2 33
 #define MDIO_AN_10GBT_CTRL 32
 #define MDIO_AN_10GBT_STAT 33
+#define MDIO_B10L_PMA_CTRL 2294
+#define MDIO_PMA_10T1L_STAT 2295
+#define MDIO_PCS_10T1L_CTRL 2278
+#define MDIO_PMA_PMD_BT1 18
+#define MDIO_AN_T1_CTRL 512
+#define MDIO_AN_T1_STAT 513
+#define MDIO_AN_T1_ADV_L 514
+#define MDIO_AN_T1_ADV_M 515
+#define MDIO_AN_T1_ADV_H 516
+#define MDIO_AN_T1_LP_L 517
+#define MDIO_AN_T1_LP_M 518
+#define MDIO_AN_T1_LP_H 519
+#define MDIO_PMA_PMD_BT1_CTRL 2100
 #define MDIO_PMA_LASI_RXCTRL 0x9000
 #define MDIO_PMA_LASI_TXCTRL 0x9001
 #define MDIO_PMA_LASI_CTRL 0x9002
@@ -139,6 +152,7 @@
 #define MDIO_PMA_CTRL2_10BT 0x000f
 #define MDIO_PMA_CTRL2_2_5GBT 0x0030
 #define MDIO_PMA_CTRL2_5GBT 0x0031
+#define MDIO_PMA_CTRL2_BASET1 0x003D
 #define MDIO_PCS_CTRL2_TYPE 0x0003
 #define MDIO_PCS_CTRL2_10GBR 0x0000
 #define MDIO_PCS_CTRL2_10GBX 0x0001
@@ -184,6 +198,7 @@
 #define MDIO_PMA_EXTABLE_1000BKX 0x0040
 #define MDIO_PMA_EXTABLE_100BTX 0x0080
 #define MDIO_PMA_EXTABLE_10BT 0x0100
+#define MDIO_PMA_EXTABLE_BT1 0x0800
 #define MDIO_PMA_EXTABLE_NBT 0x4000
 #define MDIO_PHYXS_LNSTAT_SYNC0 0x0001
 #define MDIO_PHYXS_LNSTAT_SYNC1 0x0002
@@ -218,6 +233,44 @@
 #define MDIO_AN_10GBT_STAT_LOCOK 0x2000
 #define MDIO_AN_10GBT_STAT_MS 0x4000
 #define MDIO_AN_10GBT_STAT_MSFLT 0x8000
+#define MDIO_PMA_10T1L_CTRL_LB_EN 0x0001
+#define MDIO_PMA_10T1L_CTRL_EEE_EN 0x0400
+#define MDIO_PMA_10T1L_CTRL_LOW_POWER 0x0800
+#define MDIO_PMA_10T1L_CTRL_2V4_EN 0x1000
+#define MDIO_PMA_10T1L_CTRL_TX_DIS 0x4000
+#define MDIO_PMA_10T1L_CTRL_PMA_RST 0x8000
+#define MDIO_PMA_10T1L_STAT_LINK 0x0001
+#define MDIO_PMA_10T1L_STAT_FAULT 0x0002
+#define MDIO_PMA_10T1L_STAT_POLARITY 0x0004
+#define MDIO_PMA_10T1L_STAT_RECV_FAULT 0x0200
+#define MDIO_PMA_10T1L_STAT_EEE 0x0400
+#define MDIO_PMA_10T1L_STAT_LOW_POWER 0x0800
+#define MDIO_PMA_10T1L_STAT_2V4_ABLE 0x1000
+#define MDIO_PMA_10T1L_STAT_LB_ABLE 0x2000
+#define MDIO_PCS_10T1L_CTRL_LB 0x4000
+#define MDIO_PCS_10T1L_CTRL_RESET 0x8000
+#define MDIO_PMA_PMD_BT1_B10L_ABLE 0x0004
+#define MDIO_AN_T1_ADV_L_PAUSE_CAP ADVERTISE_PAUSE_CAP
+#define MDIO_AN_T1_ADV_L_PAUSE_ASYM ADVERTISE_PAUSE_ASYM
+#define MDIO_AN_T1_ADV_L_FORCE_MS 0x1000
+#define MDIO_AN_T1_ADV_L_REMOTE_FAULT ADVERTISE_RFAULT
+#define MDIO_AN_T1_ADV_L_ACK ADVERTISE_LPACK
+#define MDIO_AN_T1_ADV_L_NEXT_PAGE_REQ ADVERTISE_NPAGE
+#define MDIO_AN_T1_ADV_M_B10L 0x4000
+#define MDIO_AN_T1_ADV_M_MST 0x0010
+#define MDIO_AN_T1_ADV_H_10L_TX_HI_REQ 0x1000
+#define MDIO_AN_T1_ADV_H_10L_TX_HI 0x2000
+#define MDIO_AN_T1_LP_L_PAUSE_CAP LPA_PAUSE_CAP
+#define MDIO_AN_T1_LP_L_PAUSE_ASYM LPA_PAUSE_ASYM
+#define MDIO_AN_T1_LP_L_FORCE_MS 0x1000
+#define MDIO_AN_T1_LP_L_REMOTE_FAULT LPA_RFAULT
+#define MDIO_AN_T1_LP_L_ACK LPA_LPACK
+#define MDIO_AN_T1_LP_L_NEXT_PAGE_REQ LPA_NPAGE
+#define MDIO_AN_T1_LP_M_MST 0x0010
+#define MDIO_AN_T1_LP_M_B10L 0x4000
+#define MDIO_AN_T1_LP_H_10L_TX_HI_REQ 0x1000
+#define MDIO_AN_T1_LP_H_10L_TX_HI 0x2000
+#define MDIO_PMA_PMD_BT1_CTRL_CFG_MST 0x4000
 #define MDIO_AN_EEE_ADV_100TX 0x0002
 #define MDIO_AN_EEE_ADV_1000T 0x0004
 #define MDIO_EEE_100TX MDIO_AN_EEE_ADV_100TX
diff --git a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/media-bus-format.h b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/media-bus-format.h
index 2542a32..4555de1 100644
--- a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/media-bus-format.h
+++ b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/media-bus-format.h
@@ -43,9 +43,13 @@
 #define MEDIA_BUS_FMT_RGB888_3X8_DELTA 0x101d
 #define MEDIA_BUS_FMT_RGB888_1X7X4_SPWG 0x1011
 #define MEDIA_BUS_FMT_RGB888_1X7X4_JEIDA 0x1012
+#define MEDIA_BUS_FMT_RGB666_1X30_CPADLO 0x101e
+#define MEDIA_BUS_FMT_RGB888_1X30_CPADLO 0x101f
 #define MEDIA_BUS_FMT_ARGB8888_1X32 0x100d
 #define MEDIA_BUS_FMT_RGB888_1X32_PADHI 0x100f
 #define MEDIA_BUS_FMT_RGB101010_1X30 0x1018
+#define MEDIA_BUS_FMT_RGB666_1X36_CPADLO 0x1020
+#define MEDIA_BUS_FMT_RGB888_1X36_CPADLO 0x1021
 #define MEDIA_BUS_FMT_RGB121212_1X36 0x1019
 #define MEDIA_BUS_FMT_RGB161616_1X48 0x101a
 #define MEDIA_BUS_FMT_Y8_1X8 0x2001
diff --git a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/media.h b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/media.h
index 5c8efcd..869d47b 100644
--- a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/media.h
+++ b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/media.h
@@ -18,7 +18,6 @@
  ****************************************************************************/
 #ifndef __LINUX_MEDIA_H
 #define __LINUX_MEDIA_H
-#include <stdint.h>
 #include <linux/ioctl.h>
 #include <linux/types.h>
 struct media_device_info {
@@ -117,6 +116,7 @@
 #define MEDIA_LNK_FL_LINK_TYPE (0xf << 28)
 #define MEDIA_LNK_FL_DATA_LINK (0 << 28)
 #define MEDIA_LNK_FL_INTERFACE_LINK (1 << 28)
+#define MEDIA_LNK_FL_ANCILLARY_LINK (2 << 28)
 struct media_link_desc {
   struct media_pad_desc source;
   struct media_pad_desc sink;
diff --git a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/minix_fs.h b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/minix_fs.h
index b6f1c69..0878efe 100644
--- a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/minix_fs.h
+++ b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/minix_fs.h
@@ -77,10 +77,10 @@
 };
 struct minix_dir_entry {
   __u16 inode;
-  char name[0];
+  char name[];
 };
 struct minix3_dir_entry {
   __u32 inode;
-  char name[0];
+  char name[];
 };
 #endif
diff --git a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/mmc/ioctl.h b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/mmc/ioctl.h
index afea6a5..451134b 100644
--- a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/mmc/ioctl.h
+++ b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/mmc/ioctl.h
@@ -39,7 +39,7 @@
 #define mmc_ioc_cmd_set_data(ic,ptr) ic.data_ptr = (__u64) (unsigned long) ptr
 struct mmc_ioc_multi_cmd {
   __u64 num_of_cmds;
-  struct mmc_ioc_cmd cmds[0];
+  struct mmc_ioc_cmd cmds[];
 };
 #define MMC_IOC_CMD _IOWR(MMC_BLOCK_MAJOR, 0, struct mmc_ioc_cmd)
 #define MMC_IOC_MULTI_CMD _IOWR(MMC_BLOCK_MAJOR, 1, struct mmc_ioc_multi_cmd)
diff --git a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/mptcp.h b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/mptcp.h
index 67b0ce3..da1b5af 100644
--- a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/mptcp.h
+++ b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/mptcp.h
@@ -18,12 +18,13 @@
  ****************************************************************************/
 #ifndef _UAPI_MPTCP_H
 #define _UAPI_MPTCP_H
+#include <netinet/in.h>
+#include <sys/socket.h>
 #include <linux/const.h>
 #include <linux/types.h>
 #include <linux/in.h>
 #include <linux/in6.h>
 #include <linux/socket.h>
-#include <sys/socket.h>
 #define MPTCP_SUBFLOW_FLAG_MCAP_REM _BITUL(0)
 #define MPTCP_SUBFLOW_FLAG_MCAP_LOC _BITUL(1)
 #define MPTCP_SUBFLOW_FLAG_JOIN_REM _BITUL(2)
@@ -58,6 +59,9 @@
   MPTCP_PM_ATTR_ADDR,
   MPTCP_PM_ATTR_RCV_ADD_ADDRS,
   MPTCP_PM_ATTR_SUBFLOWS,
+  MPTCP_PM_ATTR_TOKEN,
+  MPTCP_PM_ATTR_LOC_ID,
+  MPTCP_PM_ATTR_ADDR_REMOTE,
   __MPTCP_PM_ATTR_MAX
 };
 #define MPTCP_PM_ATTR_MAX (__MPTCP_PM_ATTR_MAX - 1)
@@ -77,6 +81,7 @@
 #define MPTCP_PM_ADDR_FLAG_SUBFLOW (1 << 1)
 #define MPTCP_PM_ADDR_FLAG_BACKUP (1 << 2)
 #define MPTCP_PM_ADDR_FLAG_FULLMESH (1 << 3)
+#define MPTCP_PM_ADDR_FLAG_IMPLICIT (1 << 4)
 enum {
   MPTCP_PM_CMD_UNSPEC,
   MPTCP_PM_CMD_ADD_ADDR,
@@ -86,6 +91,10 @@
   MPTCP_PM_CMD_SET_LIMITS,
   MPTCP_PM_CMD_GET_LIMITS,
   MPTCP_PM_CMD_SET_FLAGS,
+  MPTCP_PM_CMD_ANNOUNCE,
+  MPTCP_PM_CMD_REMOVE,
+  MPTCP_PM_CMD_SUBFLOW_CREATE,
+  MPTCP_PM_CMD_SUBFLOW_DESTROY,
   __MPTCP_PM_CMD_AFTER_LAST
 };
 #define MPTCP_INFO_FLAG_FALLBACK _BITUL(0)
@@ -136,6 +145,7 @@
   MPTCP_ATTR_IF_IDX,
   MPTCP_ATTR_RESET_REASON,
   MPTCP_ATTR_RESET_FLAGS,
+  MPTCP_ATTR_SERVER_SIDE,
   __MPTCP_ATTR_AFTER_LAST
 };
 #define MPTCP_ATTR_MAX (__MPTCP_ATTR_AFTER_LAST - 1)
diff --git a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/mroute6.h b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/mroute6.h
index c73765c..68480de 100644
--- a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/mroute6.h
+++ b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/mroute6.h
@@ -93,6 +93,7 @@
 #define MRT6MSG_NOCACHE 1
 #define MRT6MSG_WRONGMIF 2
 #define MRT6MSG_WHOLEPKT 3
+#define MRT6MSG_WRMIFWHOLE 4
   __u8 im6_mbz;
   __u8 im6_msgtype;
   __u16 im6_mif;
diff --git a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/ndctl.h b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/ndctl.h
index 53f8ba4..7e0d560 100644
--- a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/ndctl.h
+++ b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/ndctl.h
@@ -22,33 +22,33 @@
 struct nd_cmd_dimm_flags {
   __u32 status;
   __u32 flags;
-} __packed;
+} __attribute__((__packed__));
 struct nd_cmd_get_config_size {
   __u32 status;
   __u32 config_size;
   __u32 max_xfer;
-} __packed;
+} __attribute__((__packed__));
 struct nd_cmd_get_config_data_hdr {
   __u32 in_offset;
   __u32 in_length;
   __u32 status;
-  __u8 out_buf[0];
-} __packed;
+  __u8 out_buf[];
+} __attribute__((__packed__));
 struct nd_cmd_set_config_hdr {
   __u32 in_offset;
   __u32 in_length;
-  __u8 in_buf[0];
-} __packed;
+  __u8 in_buf[];
+} __attribute__((__packed__));
 struct nd_cmd_vendor_hdr {
   __u32 opcode;
   __u32 in_length;
-  __u8 in_buf[0];
-} __packed;
+  __u8 in_buf[];
+} __attribute__((__packed__));
 struct nd_cmd_vendor_tail {
   __u32 status;
   __u32 out_length;
-  __u8 out_buf[0];
-} __packed;
+  __u8 out_buf[];
+} __attribute__((__packed__));
 struct nd_cmd_ars_cap {
   __u64 address;
   __u64 length;
@@ -57,7 +57,7 @@
   __u32 clear_err_unit;
   __u16 flags;
   __u16 reserved;
-} __packed;
+} __attribute__((__packed__));
 struct nd_cmd_ars_start {
   __u64 address;
   __u64 length;
@@ -66,7 +66,7 @@
   __u8 reserved[5];
   __u32 status;
   __u32 scrub_time;
-} __packed;
+} __attribute__((__packed__));
 struct nd_cmd_ars_status {
   __u32 status;
   __u32 out_length;
@@ -82,15 +82,15 @@
     __u32 reserved;
     __u64 err_address;
     __u64 length;
-  } __packed records[0];
-} __packed;
+  } __attribute__((__packed__)) records[];
+} __attribute__((__packed__));
 struct nd_cmd_clear_error {
   __u64 address;
   __u64 length;
   __u32 status;
   __u8 reserved[4];
   __u64 cleared;
-} __packed;
+} __attribute__((__packed__));
 enum {
   ND_CMD_IMPLEMENTED = 0,
   ND_CMD_ARS_CAP = 1,
@@ -129,7 +129,6 @@
 #define ND_DEVICE_REGION_BLK 3
 #define ND_DEVICE_NAMESPACE_IO 4
 #define ND_DEVICE_NAMESPACE_PMEM 5
-#define ND_DEVICE_NAMESPACE_BLK 6
 #define ND_DEVICE_DAX_PMEM 7
 enum nd_driver_flags {
   ND_DRIVER_DIMM = 1 << ND_DEVICE_DIMM,
@@ -137,7 +136,6 @@
   ND_DRIVER_REGION_BLK = 1 << ND_DEVICE_REGION_BLK,
   ND_DRIVER_NAMESPACE_IO = 1 << ND_DEVICE_NAMESPACE_IO,
   ND_DRIVER_NAMESPACE_PMEM = 1 << ND_DEVICE_NAMESPACE_PMEM,
-  ND_DRIVER_NAMESPACE_BLK = 1 << ND_DEVICE_NAMESPACE_BLK,
   ND_DRIVER_DAX_PMEM = 1 << ND_DEVICE_DAX_PMEM,
 };
 enum ars_masks {
diff --git a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/neighbour.h b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/neighbour.h
index 278f7d1..b86d2ae 100644
--- a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/neighbour.h
+++ b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/neighbour.h
@@ -46,6 +46,8 @@
   NDA_NH_ID,
   NDA_FDB_EXT_ATTRS,
   NDA_FLAGS_EXT,
+  NDA_NDM_STATE_MASK,
+  NDA_NDM_FLAGS_MASK,
   __NDA_MAX
 };
 #define NDA_MAX (__NDA_MAX - 1)
@@ -106,6 +108,7 @@
   NDTPA_QUEUE_LENBYTES,
   NDTPA_MCAST_REPROBES,
   NDTPA_PAD,
+  NDTPA_INTERVAL_PROBE_TIME_MS,
   __NDTPA_MAX
 };
 #define NDTPA_MAX (__NDTPA_MAX - 1)
diff --git a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/net_dropmon.h b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/net_dropmon.h
index 01b76cb..4d2c336 100644
--- a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/net_dropmon.h
+++ b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/net_dropmon.h
@@ -36,11 +36,11 @@
 };
 struct net_dm_config_msg {
   __u32 entries;
-  struct net_dm_config_entry options[0];
+  struct net_dm_config_entry options[];
 };
 struct net_dm_alert_msg {
   __u32 entries;
-  struct net_dm_drop_point points[0];
+  struct net_dm_drop_point points[];
 };
 struct net_dm_user_msg {
   union {
@@ -87,6 +87,7 @@
   NET_DM_ATTR_SW_DROPS,
   NET_DM_ATTR_HW_DROPS,
   NET_DM_ATTR_FLOW_ACTION_COOKIE,
+  NET_DM_ATTR_REASON,
   __NET_DM_ATTR_MAX,
   NET_DM_ATTR_MAX = __NET_DM_ATTR_MAX - 1
 };
diff --git a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/netfilter/nfnetlink_queue.h b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/netfilter/nfnetlink_queue.h
index 75fa359..d100dec 100644
--- a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/netfilter/nfnetlink_queue.h
+++ b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/netfilter/nfnetlink_queue.h
@@ -70,6 +70,7 @@
   NFQA_SECCTX,
   NFQA_VLAN,
   NFQA_L2HDR,
+  NFQA_PRIORITY,
   __NFQA_MAX
 };
 #define NFQA_MAX (__NFQA_MAX - 1)
diff --git a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/netfilter/x_tables.h b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/netfilter/x_tables.h
index 46bde57..0993265 100644
--- a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/netfilter/x_tables.h
+++ b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/netfilter/x_tables.h
@@ -36,7 +36,7 @@
     } kernel;
     __u16 match_size;
   } u;
-  unsigned char data[0];
+  unsigned char data[];
 };
 struct xt_entry_target {
   union {
@@ -87,7 +87,7 @@
 struct xt_counters_info {
   char name[XT_TABLE_MAXNAMELEN];
   unsigned int num_counters;
-  struct xt_counters counters[0];
+  struct xt_counters counters[];
 };
 #define XT_INV_PROTO 0x40
 #define XT_MATCH_ITERATE(type,e,fn,args...) \
diff --git a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/netfilter_arp/arp_tables.h b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/netfilter_arp/arp_tables.h
index 340625f..862f514 100644
--- a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/netfilter_arp/arp_tables.h
+++ b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/netfilter_arp/arp_tables.h
@@ -72,7 +72,7 @@
   __u16 next_offset;
   unsigned int comefrom;
   struct xt_counters counters;
-  unsigned char elems[0];
+  unsigned char elems[];
 };
 #define ARPT_BASE_CTL 96
 #define ARPT_SO_SET_REPLACE (ARPT_BASE_CTL)
@@ -99,11 +99,11 @@
   unsigned int underflow[NF_ARP_NUMHOOKS];
   unsigned int num_counters;
   struct xt_counters __user * counters;
-  struct arpt_entry entries[0];
+  struct arpt_entry entries[];
 };
 struct arpt_get_entries {
   char name[XT_TABLE_MAXNAMELEN];
   unsigned int size;
-  struct arpt_entry entrytable[0];
+  struct arpt_entry entrytable[];
 };
 #endif
diff --git a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/netfilter_bridge/ebt_among.h b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/netfilter_bridge/ebt_among.h
index 74cd550..aa39c5b 100644
--- a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/netfilter_bridge/ebt_among.h
+++ b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/netfilter_bridge/ebt_among.h
@@ -28,7 +28,7 @@
 struct ebt_mac_wormhash {
   int table[257];
   int poolsize;
-  struct ebt_mac_wormhash_tuple pool[0];
+  struct ebt_mac_wormhash_tuple pool[];
 };
 #define ebt_mac_wormhash_size(x) ((x) ? sizeof(struct ebt_mac_wormhash) + (x)->poolsize * sizeof(struct ebt_mac_wormhash_tuple) : 0)
 struct ebt_among_info {
diff --git a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/netfilter_decnet.h b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/netfilter_decnet.h
deleted file mode 100644
index c9c16ca..0000000
--- a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/netfilter_decnet.h
+++ /dev/null
@@ -1,57 +0,0 @@
-/****************************************************************************
- ****************************************************************************
- ***
- ***   This header was automatically generated from a Linux kernel header
- ***   of the same name, to make information necessary for userspace to
- ***   call into the kernel available to libc.  It contains only constants,
- ***   structures, and macros generated from the original header, and thus,
- ***   contains no copyrightable information.
- ***
- ***   To edit the content of this header, modify the corresponding
- ***   source file (e.g. under external/kernel-headers/original/) then
- ***   run bionic/libc/kernel/tools/update_all.py
- ***
- ***   Any manual change here will be lost the next time this script will
- ***   be run. You've been warned!
- ***
- ****************************************************************************
- ****************************************************************************/
-#ifndef __LINUX_DECNET_NETFILTER_H
-#define __LINUX_DECNET_NETFILTER_H
-#include <linux/netfilter.h>
-#include <limits.h>
-#define NF_DN_NUMHOOKS 7
-#define NF_DN_PRE_ROUTING 0
-#define NF_DN_LOCAL_IN 1
-#define NF_DN_FORWARD 2
-#define NF_DN_LOCAL_OUT 3
-#define NF_DN_POST_ROUTING 4
-#define NF_DN_HELLO 5
-#define NF_DN_ROUTE 6
-enum nf_dn_hook_priorities {
-  NF_DN_PRI_FIRST = INT_MIN,
-  NF_DN_PRI_CONNTRACK = - 200,
-  NF_DN_PRI_MANGLE = - 150,
-  NF_DN_PRI_NAT_DST = - 100,
-  NF_DN_PRI_FILTER = 0,
-  NF_DN_PRI_NAT_SRC = 100,
-  NF_DN_PRI_DNRTMSG = 200,
-  NF_DN_PRI_LAST = INT_MAX,
-};
-struct nf_dn_rtmsg {
-  int nfdn_ifindex;
-};
-#define NFDN_RTMSG(r) ((unsigned char *) (r) + NLMSG_ALIGN(sizeof(struct nf_dn_rtmsg)))
-#define DNRMG_L1_GROUP 0x01
-#define DNRMG_L2_GROUP 0x02
-enum {
-  DNRNG_NLGRP_NONE,
-#define DNRNG_NLGRP_NONE DNRNG_NLGRP_NONE
-  DNRNG_NLGRP_L1,
-#define DNRNG_NLGRP_L1 DNRNG_NLGRP_L1
-  DNRNG_NLGRP_L2,
-#define DNRNG_NLGRP_L2 DNRNG_NLGRP_L2
-  __DNRNG_NLGRP_MAX
-};
-#define DNRNG_NLGRP_MAX (__DNRNG_NLGRP_MAX - 1)
-#endif
diff --git a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/netfilter_ipv4/ip_tables.h b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/netfilter_ipv4/ip_tables.h
index 033c519..14a65ad 100644
--- a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/netfilter_ipv4/ip_tables.h
+++ b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/netfilter_ipv4/ip_tables.h
@@ -79,7 +79,7 @@
   __u16 next_offset;
   unsigned int comefrom;
   struct xt_counters counters;
-  unsigned char elems[0];
+  unsigned char elems[];
 };
 #define IPT_BASE_CTL 64
 #define IPT_SO_SET_REPLACE (IPT_BASE_CTL)
@@ -113,12 +113,12 @@
   unsigned int underflow[NF_INET_NUMHOOKS];
   unsigned int num_counters;
   struct xt_counters __user * counters;
-  struct ipt_entry entries[0];
+  struct ipt_entry entries[];
 };
 struct ipt_get_entries {
   char name[XT_TABLE_MAXNAMELEN];
   unsigned int size;
-  struct ipt_entry entrytable[0];
+  struct ipt_entry entrytable[];
 };
 static __inline__ struct xt_entry_target * ipt_get_target(struct ipt_entry * e) {
   return(struct xt_entry_target *) ((char *) e + e->target_offset);
diff --git a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/netfilter_ipv6/ip6_tables.h b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/netfilter_ipv6/ip6_tables.h
index b3f426d..22071db 100644
--- a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/netfilter_ipv6/ip6_tables.h
+++ b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/netfilter_ipv6/ip6_tables.h
@@ -133,12 +133,12 @@
   unsigned int underflow[NF_INET_NUMHOOKS];
   unsigned int num_counters;
   struct xt_counters __user * counters;
-  struct ip6t_entry entries[0];
+  struct ip6t_entry entries[];
 };
 struct ip6t_get_entries {
   char name[XT_TABLE_MAXNAMELEN];
   unsigned int size;
-  struct ip6t_entry entrytable[0];
+  struct ip6t_entry entrytable[];
 };
 static __inline__ struct xt_entry_target * ip6t_get_target(struct ip6t_entry * e) {
   return(struct xt_entry_target *) ((char *) e + e->target_offset);
diff --git a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/netlink.h b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/netlink.h
index 77825cc..17d5291 100644
--- a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/netlink.h
+++ b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/netlink.h
@@ -73,6 +73,7 @@
 #define NLM_F_CREATE 0x400
 #define NLM_F_APPEND 0x800
 #define NLM_F_NONREC 0x100
+#define NLM_F_BULK 0x200
 #define NLM_F_CAPPED 0x100
 #define NLM_F_ACK_TLVS 0x200
 #define NLMSG_ALIGNTO 4U
@@ -99,6 +100,8 @@
   NLMSGERR_ATTR_OFFS,
   NLMSGERR_ATTR_COOKIE,
   NLMSGERR_ATTR_POLICY,
+  NLMSGERR_ATTR_MISS_TYPE,
+  NLMSGERR_ATTR_MISS_NEST,
   __NLMSGERR_ATTR_MAX,
   NLMSGERR_ATTR_MAX = __NLMSGERR_ATTR_MAX - 1
 };
diff --git a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/nfs4.h b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/nfs4.h
index 9d614ce..ef860e2 100644
--- a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/nfs4.h
+++ b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/nfs4.h
@@ -45,6 +45,7 @@
 #define NFS4_FH_VOL_RENAME 0x0008
 #define NFS4_OPEN_RESULT_CONFIRM 0x0002
 #define NFS4_OPEN_RESULT_LOCKTYPE_POSIX 0x0004
+#define NFS4_OPEN_RESULT_PRESERVE_UNLINKED 0x0008
 #define NFS4_OPEN_RESULT_MAY_NOTIFY_LOCK 0x0020
 #define NFS4_SHARE_ACCESS_MASK 0x000F
 #define NFS4_SHARE_ACCESS_READ 0x0001
diff --git a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/nl80211.h b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/nl80211.h
index e902178..faff80a 100644
--- a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/nl80211.h
+++ b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/nl80211.h
@@ -185,6 +185,11 @@
   NL80211_CMD_COLOR_CHANGE_COMPLETED,
   NL80211_CMD_SET_FILS_AAD,
   NL80211_CMD_ASSOC_COMEBACK,
+  NL80211_CMD_ADD_LINK,
+  NL80211_CMD_REMOVE_LINK,
+  NL80211_CMD_ADD_LINK_STA,
+  NL80211_CMD_MODIFY_LINK_STA,
+  NL80211_CMD_REMOVE_LINK_STA,
   __NL80211_CMD_AFTER_LAST,
   NL80211_CMD_MAX = __NL80211_CMD_AFTER_LAST - 1
 };
@@ -511,6 +516,17 @@
   NL80211_ATTR_MBSSID_ELEMS,
   NL80211_ATTR_RADAR_BACKGROUND,
   NL80211_ATTR_AP_SETTINGS_FLAGS,
+  NL80211_ATTR_EHT_CAPABILITY,
+  NL80211_ATTR_DISABLE_EHT,
+  NL80211_ATTR_MLO_LINKS,
+  NL80211_ATTR_MLO_LINK_ID,
+  NL80211_ATTR_MLD_ADDR,
+  NL80211_ATTR_MLO_SUPPORT,
+  NL80211_ATTR_MAX_NUM_AKM_SUITES,
+  NL80211_ATTR_EML_CAPABILITY,
+  NL80211_ATTR_MLD_CAPA_AND_OPS,
+  NL80211_ATTR_TX_HW_TIMESTAMP,
+  NL80211_ATTR_RX_HW_TIMESTAMP,
   __NL80211_ATTR_AFTER_LAST,
   NUM_NL80211_ATTR = __NL80211_ATTR_AFTER_LAST,
   NL80211_ATTR_MAX = __NL80211_ATTR_AFTER_LAST - 1
@@ -555,6 +571,8 @@
 #define NL80211_HE_MAX_CAPABILITY_LEN 54
 #define NL80211_MAX_NR_CIPHER_SUITES 5
 #define NL80211_MAX_NR_AKM_SUITES 2
+#define NL80211_EHT_MIN_CAPABILITY_LEN 13
+#define NL80211_EHT_MAX_CAPABILITY_LEN 51
 #define NL80211_MIN_REMAIN_ON_CHANNEL_TIME 10
 #define NL80211_SCAN_RSSI_THOLD_OFF - 300
 #define NL80211_CQM_TXE_MAX_INTVL 1800
@@ -616,6 +634,29 @@
   NL80211_RATE_INFO_HE_RU_ALLOC_996,
   NL80211_RATE_INFO_HE_RU_ALLOC_2x996,
 };
+enum nl80211_eht_gi {
+  NL80211_RATE_INFO_EHT_GI_0_8,
+  NL80211_RATE_INFO_EHT_GI_1_6,
+  NL80211_RATE_INFO_EHT_GI_3_2,
+};
+enum nl80211_eht_ru_alloc {
+  NL80211_RATE_INFO_EHT_RU_ALLOC_26,
+  NL80211_RATE_INFO_EHT_RU_ALLOC_52,
+  NL80211_RATE_INFO_EHT_RU_ALLOC_52P26,
+  NL80211_RATE_INFO_EHT_RU_ALLOC_106,
+  NL80211_RATE_INFO_EHT_RU_ALLOC_106P26,
+  NL80211_RATE_INFO_EHT_RU_ALLOC_242,
+  NL80211_RATE_INFO_EHT_RU_ALLOC_484,
+  NL80211_RATE_INFO_EHT_RU_ALLOC_484P242,
+  NL80211_RATE_INFO_EHT_RU_ALLOC_996,
+  NL80211_RATE_INFO_EHT_RU_ALLOC_996P484,
+  NL80211_RATE_INFO_EHT_RU_ALLOC_996P484P242,
+  NL80211_RATE_INFO_EHT_RU_ALLOC_2x996,
+  NL80211_RATE_INFO_EHT_RU_ALLOC_2x996P484,
+  NL80211_RATE_INFO_EHT_RU_ALLOC_3x996,
+  NL80211_RATE_INFO_EHT_RU_ALLOC_3x996P484,
+  NL80211_RATE_INFO_EHT_RU_ALLOC_4x996,
+};
 enum nl80211_rate_info {
   __NL80211_RATE_INFO_INVALID,
   NL80211_RATE_INFO_BITRATE,
@@ -635,6 +676,11 @@
   NL80211_RATE_INFO_HE_GI,
   NL80211_RATE_INFO_HE_DCM,
   NL80211_RATE_INFO_HE_RU_ALLOC,
+  NL80211_RATE_INFO_320_MHZ_WIDTH,
+  NL80211_RATE_INFO_EHT_MCS,
+  NL80211_RATE_INFO_EHT_NSS,
+  NL80211_RATE_INFO_EHT_GI,
+  NL80211_RATE_INFO_EHT_RU_ALLOC,
   __NL80211_RATE_INFO_AFTER_LAST,
   NL80211_RATE_INFO_MAX = __NL80211_RATE_INFO_AFTER_LAST - 1
 };
@@ -754,6 +800,10 @@
   NL80211_BAND_IFTYPE_ATTR_HE_CAP_PPE,
   NL80211_BAND_IFTYPE_ATTR_HE_6GHZ_CAPA,
   NL80211_BAND_IFTYPE_ATTR_VENDOR_ELEMS,
+  NL80211_BAND_IFTYPE_ATTR_EHT_CAP_MAC,
+  NL80211_BAND_IFTYPE_ATTR_EHT_CAP_PHY,
+  NL80211_BAND_IFTYPE_ATTR_EHT_CAP_MCS_SET,
+  NL80211_BAND_IFTYPE_ATTR_EHT_CAP_PPE,
   __NL80211_BAND_IFTYPE_ATTR_AFTER_LAST,
   NL80211_BAND_IFTYPE_ATTR_MAX = __NL80211_BAND_IFTYPE_ATTR_AFTER_LAST - 1
 };
@@ -810,6 +860,8 @@
   NL80211_FREQUENCY_ATTR_4MHZ,
   NL80211_FREQUENCY_ATTR_8MHZ,
   NL80211_FREQUENCY_ATTR_16MHZ,
+  NL80211_FREQUENCY_ATTR_NO_320MHZ,
+  NL80211_FREQUENCY_ATTR_NO_EHT,
   __NL80211_FREQUENCY_ATTR_AFTER_LAST,
   NL80211_FREQUENCY_ATTR_MAX = __NL80211_FREQUENCY_ATTR_AFTER_LAST - 1
 };
@@ -878,6 +930,7 @@
   NL80211_RRF_NO_80MHZ = 1 << 15,
   NL80211_RRF_NO_160MHZ = 1 << 16,
   NL80211_RRF_NO_HE = 1 << 17,
+  NL80211_RRF_NO_320MHZ = 1 << 18,
 };
 #define NL80211_RRF_PASSIVE_SCAN NL80211_RRF_NO_IR
 #define NL80211_RRF_NO_IBSS NL80211_RRF_NO_IR
@@ -1033,6 +1086,7 @@
   NL80211_CHAN_WIDTH_4,
   NL80211_CHAN_WIDTH_8,
   NL80211_CHAN_WIDTH_16,
+  NL80211_CHAN_WIDTH_320,
 };
 enum nl80211_bss_scan_width {
   NL80211_BSS_CHAN_WIDTH_20,
@@ -1063,6 +1117,8 @@
   NL80211_BSS_PARENT_BSSID,
   NL80211_BSS_CHAIN_SIGNAL,
   NL80211_BSS_FREQUENCY_OFFSET,
+  NL80211_BSS_MLO_LINK_ID,
+  NL80211_BSS_MLD_ADDR,
   __NL80211_BSS_AFTER_LAST,
   NL80211_BSS_MAX = __NL80211_BSS_AFTER_LAST - 1
 };
@@ -1475,6 +1531,7 @@
   NL80211_EXT_FEATURE_BSS_COLOR,
   NL80211_EXT_FEATURE_FILS_CRYPTO_OFFLOAD,
   NL80211_EXT_FEATURE_RADAR_BACKGROUND,
+  NL80211_EXT_FEATURE_POWERED_ADDR_CHANGE,
   NUM_NL80211_EXT_FEATURES,
   MAX_NL80211_EXT_FEATURES = NUM_NL80211_EXT_FEATURES - 1
 };
diff --git a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/nvme_ioctl.h b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/nvme_ioctl.h
index f2a328e..388e83f 100644
--- a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/nvme_ioctl.h
+++ b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/nvme_ioctl.h
@@ -63,7 +63,10 @@
   __u64 metadata;
   __u64 addr;
   __u32 metadata_len;
-  __u32 data_len;
+  union {
+    __u32 data_len;
+    __u32 vec_cnt;
+  };
   __u32 cdw10;
   __u32 cdw11;
   __u32 cdw12;
@@ -74,6 +77,26 @@
   __u32 rsvd2;
   __u64 result;
 };
+struct nvme_uring_cmd {
+  __u8 opcode;
+  __u8 flags;
+  __u16 rsvd1;
+  __u32 nsid;
+  __u32 cdw2;
+  __u32 cdw3;
+  __u64 metadata;
+  __u64 addr;
+  __u32 metadata_len;
+  __u32 data_len;
+  __u32 cdw10;
+  __u32 cdw11;
+  __u32 cdw12;
+  __u32 cdw13;
+  __u32 cdw14;
+  __u32 cdw15;
+  __u32 timeout_ms;
+  __u32 rsvd2;
+};
 #define nvme_admin_cmd nvme_passthru_cmd
 #define NVME_IOCTL_ID _IO('N', 0x40)
 #define NVME_IOCTL_ADMIN_CMD _IOWR('N', 0x41, struct nvme_admin_cmd)
@@ -84,4 +107,9 @@
 #define NVME_IOCTL_RESCAN _IO('N', 0x46)
 #define NVME_IOCTL_ADMIN64_CMD _IOWR('N', 0x47, struct nvme_passthru_cmd64)
 #define NVME_IOCTL_IO64_CMD _IOWR('N', 0x48, struct nvme_passthru_cmd64)
+#define NVME_IOCTL_IO64_CMD_VEC _IOWR('N', 0x49, struct nvme_passthru_cmd64)
+#define NVME_URING_CMD_IO _IOWR('N', 0x80, struct nvme_uring_cmd)
+#define NVME_URING_CMD_IO_VEC _IOWR('N', 0x81, struct nvme_uring_cmd)
+#define NVME_URING_CMD_ADMIN _IOWR('N', 0x82, struct nvme_uring_cmd)
+#define NVME_URING_CMD_ADMIN_VEC _IOWR('N', 0x83, struct nvme_uring_cmd)
 #endif
diff --git a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/omap3isp.h b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/omap3isp.h
index d2eceb7..53345e3 100644
--- a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/omap3isp.h
+++ b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/omap3isp.h
@@ -89,10 +89,11 @@
 struct omap3isp_stat_data {
   struct timeval ts;
   void __user * buf;
-  __u32 buf_size;
+  __struct_group(, frame,, __u32 buf_size;
   __u16 frame_number;
   __u16 cur_frame;
   __u16 config_counter;
+ );
 };
 #define OMAP3ISP_HIST_BINS_32 0
 #define OMAP3ISP_HIST_BINS_64 1
diff --git a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/openvswitch.h b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/openvswitch.h
index 1f8ae17..c44e950 100644
--- a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/openvswitch.h
+++ b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/openvswitch.h
@@ -44,6 +44,7 @@
   OVS_DP_ATTR_PAD,
   OVS_DP_ATTR_MASKS_CACHE_SIZE,
   OVS_DP_ATTR_PER_CPU_PIDS,
+  OVS_DP_ATTR_IFINDEX,
   __OVS_DP_ATTR_MAX
 };
 #define OVS_DP_ATTR_MAX (__OVS_DP_ATTR_MAX - 1)
@@ -190,6 +191,10 @@
   OVS_KEY_ATTR_CT_ORIG_TUPLE_IPV4,
   OVS_KEY_ATTR_CT_ORIG_TUPLE_IPV6,
   OVS_KEY_ATTR_NSH,
+  OVS_KEY_ATTR_PACKET_TYPE,
+  OVS_KEY_ATTR_ND_EXTENSIONS,
+  OVS_KEY_ATTR_TUNNEL_INFO,
+  OVS_KEY_ATTR_IPV6_EXTHDRS,
   __OVS_KEY_ATTR_MAX
 };
 #define OVS_KEY_ATTR_MAX (__OVS_KEY_ATTR_MAX - 1)
@@ -245,6 +250,9 @@
   __u8 ipv6_hlimit;
   __u8 ipv6_frag;
 };
+struct ovs_key_ipv6_exthdrs {
+  __u16 hdrs;
+};
 struct ovs_key_tcp {
   __be16 tcp_src;
   __be16 tcp_dst;
diff --git a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/pci_regs.h b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/pci_regs.h
index 46612da..87549aa 100644
--- a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/pci_regs.h
+++ b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/pci_regs.h
@@ -525,6 +525,7 @@
 #define PCI_EXP_SLTCTL_PWR_OFF 0x0400
 #define PCI_EXP_SLTCTL_EIC 0x0800
 #define PCI_EXP_SLTCTL_DLLSCE 0x1000
+#define PCI_EXP_SLTCTL_ASPL_DISABLE 0x2000
 #define PCI_EXP_SLTCTL_IBPD_DISABLE 0x4000
 #define PCI_EXP_SLTSTA 0x1a
 #define PCI_EXP_SLTSTA_ABP 0x0001
@@ -634,7 +635,8 @@
 #define PCI_EXT_CAP_ID_DVSEC 0x23
 #define PCI_EXT_CAP_ID_DLF 0x25
 #define PCI_EXT_CAP_ID_PL_16GT 0x26
-#define PCI_EXT_CAP_ID_MAX PCI_EXT_CAP_ID_PL_16GT
+#define PCI_EXT_CAP_ID_DOE 0x2E
+#define PCI_EXT_CAP_ID_MAX PCI_EXT_CAP_ID_DOE
 #define PCI_EXT_CAP_DSN_SIZEOF 12
 #define PCI_EXT_CAP_MCAST_ENDPOINT_SIZEOF 40
 #define PCI_ERR_UNCOR_STATUS 0x04
@@ -937,4 +939,25 @@
 #define PCI_PL_16GT_LE_CTRL_DSP_TX_PRESET_MASK 0x0000000F
 #define PCI_PL_16GT_LE_CTRL_USP_TX_PRESET_MASK 0x000000F0
 #define PCI_PL_16GT_LE_CTRL_USP_TX_PRESET_SHIFT 4
+#define PCI_DOE_CAP 0x04
+#define PCI_DOE_CAP_INT_SUP 0x00000001
+#define PCI_DOE_CAP_INT_MSG_NUM 0x00000ffe
+#define PCI_DOE_CTRL 0x08
+#define PCI_DOE_CTRL_ABORT 0x00000001
+#define PCI_DOE_CTRL_INT_EN 0x00000002
+#define PCI_DOE_CTRL_GO 0x80000000
+#define PCI_DOE_STATUS 0x0c
+#define PCI_DOE_STATUS_BUSY 0x00000001
+#define PCI_DOE_STATUS_INT_STATUS 0x00000002
+#define PCI_DOE_STATUS_ERROR 0x00000004
+#define PCI_DOE_STATUS_DATA_OBJECT_READY 0x80000000
+#define PCI_DOE_WRITE 0x10
+#define PCI_DOE_READ 0x14
+#define PCI_DOE_DATA_OBJECT_HEADER_1_VID 0x0000ffff
+#define PCI_DOE_DATA_OBJECT_HEADER_1_TYPE 0x00ff0000
+#define PCI_DOE_DATA_OBJECT_HEADER_2_LENGTH 0x0003ffff
+#define PCI_DOE_DATA_OBJECT_DISC_REQ_3_INDEX 0x000000ff
+#define PCI_DOE_DATA_OBJECT_DISC_RSP_3_VID 0x0000ffff
+#define PCI_DOE_DATA_OBJECT_DISC_RSP_3_PROTOCOL 0x00ff0000
+#define PCI_DOE_DATA_OBJECT_DISC_RSP_3_NEXT_INDEX 0xff000000
 #endif
diff --git a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/perf_event.h b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/perf_event.h
index b022586..8f081ed 100644
--- a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/perf_event.h
+++ b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/perf_event.h
@@ -108,7 +108,6 @@
   PERF_SAMPLE_CODE_PAGE_SIZE = 1U << 23,
   PERF_SAMPLE_WEIGHT_STRUCT = 1U << 24,
   PERF_SAMPLE_MAX = 1U << 25,
-  __PERF_SAMPLE_CALLCHAIN_EARLY = 1ULL << 63,
 };
 #define PERF_SAMPLE_WEIGHT_TYPE (PERF_SAMPLE_WEIGHT | PERF_SAMPLE_WEIGHT_STRUCT)
 enum perf_branch_sample_type_shift {
@@ -130,6 +129,7 @@
   PERF_SAMPLE_BRANCH_NO_CYCLES_SHIFT = 15,
   PERF_SAMPLE_BRANCH_TYPE_SAVE_SHIFT = 16,
   PERF_SAMPLE_BRANCH_HW_INDEX_SHIFT = 17,
+  PERF_SAMPLE_BRANCH_PRIV_SAVE_SHIFT = 18,
   PERF_SAMPLE_BRANCH_MAX_SHIFT
 };
 enum perf_branch_sample_type {
@@ -151,6 +151,7 @@
   PERF_SAMPLE_BRANCH_NO_CYCLES = 1U << PERF_SAMPLE_BRANCH_NO_CYCLES_SHIFT,
   PERF_SAMPLE_BRANCH_TYPE_SAVE = 1U << PERF_SAMPLE_BRANCH_TYPE_SAVE_SHIFT,
   PERF_SAMPLE_BRANCH_HW_INDEX = 1U << PERF_SAMPLE_BRANCH_HW_INDEX_SHIFT,
+  PERF_SAMPLE_BRANCH_PRIV_SAVE = 1U << PERF_SAMPLE_BRANCH_PRIV_SAVE_SHIFT,
   PERF_SAMPLE_BRANCH_MAX = 1U << PERF_SAMPLE_BRANCH_MAX_SHIFT,
 };
 enum {
@@ -165,8 +166,42 @@
   PERF_BR_SYSRET = 8,
   PERF_BR_COND_CALL = 9,
   PERF_BR_COND_RET = 10,
+  PERF_BR_ERET = 11,
+  PERF_BR_IRQ = 12,
+  PERF_BR_SERROR = 13,
+  PERF_BR_NO_TX = 14,
+  PERF_BR_EXTEND_ABI = 15,
   PERF_BR_MAX,
 };
+enum {
+  PERF_BR_SPEC_NA = 0,
+  PERF_BR_SPEC_WRONG_PATH = 1,
+  PERF_BR_NON_SPEC_CORRECT_PATH = 2,
+  PERF_BR_SPEC_CORRECT_PATH = 3,
+  PERF_BR_SPEC_MAX,
+};
+enum {
+  PERF_BR_NEW_FAULT_ALGN = 0,
+  PERF_BR_NEW_FAULT_DATA = 1,
+  PERF_BR_NEW_FAULT_INST = 2,
+  PERF_BR_NEW_ARCH_1 = 3,
+  PERF_BR_NEW_ARCH_2 = 4,
+  PERF_BR_NEW_ARCH_3 = 5,
+  PERF_BR_NEW_ARCH_4 = 6,
+  PERF_BR_NEW_ARCH_5 = 7,
+  PERF_BR_NEW_MAX,
+};
+enum {
+  PERF_BR_PRIV_UNKNOWN = 0,
+  PERF_BR_PRIV_USER = 1,
+  PERF_BR_PRIV_KERNEL = 2,
+  PERF_BR_PRIV_HV = 3,
+};
+#define PERF_BR_ARM64_FIQ PERF_BR_NEW_ARCH_1
+#define PERF_BR_ARM64_DEBUG_HALT PERF_BR_NEW_ARCH_2
+#define PERF_BR_ARM64_DEBUG_EXIT PERF_BR_NEW_ARCH_3
+#define PERF_BR_ARM64_DEBUG_INST PERF_BR_NEW_ARCH_4
+#define PERF_BR_ARM64_DEBUG_DATA PERF_BR_NEW_ARCH_5
 #define PERF_SAMPLE_BRANCH_PLM_ALL (PERF_SAMPLE_BRANCH_USER | PERF_SAMPLE_BRANCH_KERNEL | PERF_SAMPLE_BRANCH_HV)
 enum perf_sample_regs_abi {
   PERF_SAMPLE_REGS_ABI_NONE = 0,
@@ -191,7 +226,8 @@
   PERF_FORMAT_TOTAL_TIME_RUNNING = 1U << 1,
   PERF_FORMAT_ID = 1U << 2,
   PERF_FORMAT_GROUP = 1U << 3,
-  PERF_FORMAT_MAX = 1U << 4,
+  PERF_FORMAT_LOST = 1U << 4,
+  PERF_FORMAT_MAX = 1U << 5,
 };
 #define PERF_ATTR_SIZE_VER0 64
 #define PERF_ATTR_SIZE_VER1 72
@@ -244,7 +280,7 @@
 struct perf_event_query_bpf {
   __u32 ids_len;
   __u32 prog_cnt;
-  __u32 ids[0];
+  __u32 ids[];
 };
 #define PERF_EVENT_IOC_ENABLE _IO('$', 0)
 #define PERF_EVENT_IOC_DISABLE _IO('$', 1)
@@ -432,6 +468,8 @@
 #define PERF_MEM_LVLNUM_L2 0x02
 #define PERF_MEM_LVLNUM_L3 0x03
 #define PERF_MEM_LVLNUM_L4 0x04
+#define PERF_MEM_LVLNUM_CXL 0x09
+#define PERF_MEM_LVLNUM_IO 0x0a
 #define PERF_MEM_LVLNUM_ANY_CACHE 0x0b
 #define PERF_MEM_LVLNUM_LFB 0x0c
 #define PERF_MEM_LVLNUM_RAM 0x0d
@@ -445,6 +483,7 @@
 #define PERF_MEM_SNOOP_HITM 0x10
 #define PERF_MEM_SNOOP_SHIFT 19
 #define PERF_MEM_SNOOPX_FWD 0x01
+#define PERF_MEM_SNOOPX_PEER 0x02
 #define PERF_MEM_SNOOPX_SHIFT 38
 #define PERF_MEM_LOCK_NA 0x01
 #define PERF_MEM_LOCK_LOCKED 0x02
@@ -470,7 +509,7 @@
 struct perf_branch_entry {
   __u64 from;
   __u64 to;
-  __u64 mispred : 1, predicted : 1, in_tx : 1, abort : 1, cycles : 16, type : 4, reserved : 40;
+  __u64 mispred : 1, predicted : 1, in_tx : 1, abort : 1, cycles : 16, type : 4, spec : 2, new_type : 4, priv : 3, reserved : 31;
 };
 union perf_sample_weight {
   __u64 full;
diff --git a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/pkt_cls.h b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/pkt_cls.h
index 9fd89e0..876cb73 100644
--- a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/pkt_cls.h
+++ b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/pkt_cls.h
@@ -199,7 +199,7 @@
   short offoff;
   short hoff;
   __be32 hmask;
-  struct tc_u32_key keys[0];
+  struct tc_u32_key keys[];
 };
 struct tc_u32_mark {
   __u32 val;
@@ -209,7 +209,7 @@
 struct tc_u32_pcnt {
   __u64 rcnt;
   __u64 rhit;
-  __u64 kcnts[0];
+  __u64 kcnts[];
 };
 #define TC_U32_TERMINAL 1
 #define TC_U32_OFFSET 2
@@ -459,6 +459,10 @@
   TCA_FLOWER_KEY_MPLS_OPTS,
   TCA_FLOWER_KEY_HASH,
   TCA_FLOWER_KEY_HASH_MASK,
+  TCA_FLOWER_KEY_NUM_OF_VLANS,
+  TCA_FLOWER_KEY_PPPOE_SID,
+  TCA_FLOWER_KEY_PPP_PROTO,
+  TCA_FLOWER_KEY_L2TPV3_SID,
   __TCA_FLOWER_MAX,
 };
 #define TCA_FLOWER_MAX (__TCA_FLOWER_MAX - 1)
@@ -476,6 +480,7 @@
   TCA_FLOWER_KEY_ENC_OPTS_GENEVE,
   TCA_FLOWER_KEY_ENC_OPTS_VXLAN,
   TCA_FLOWER_KEY_ENC_OPTS_ERSPAN,
+  TCA_FLOWER_KEY_ENC_OPTS_GTP,
   __TCA_FLOWER_KEY_ENC_OPTS_MAX,
 };
 #define TCA_FLOWER_KEY_ENC_OPTS_MAX (__TCA_FLOWER_KEY_ENC_OPTS_MAX - 1)
@@ -503,6 +508,13 @@
 };
 #define TCA_FLOWER_KEY_ENC_OPT_ERSPAN_MAX (__TCA_FLOWER_KEY_ENC_OPT_ERSPAN_MAX - 1)
 enum {
+  TCA_FLOWER_KEY_ENC_OPT_GTP_UNSPEC,
+  TCA_FLOWER_KEY_ENC_OPT_GTP_PDU_TYPE,
+  TCA_FLOWER_KEY_ENC_OPT_GTP_QFI,
+  __TCA_FLOWER_KEY_ENC_OPT_GTP_MAX,
+};
+#define TCA_FLOWER_KEY_ENC_OPT_GTP_MAX (__TCA_FLOWER_KEY_ENC_OPT_GTP_MAX - 1)
+enum {
   TCA_FLOWER_KEY_MPLS_OPTS_UNSPEC,
   TCA_FLOWER_KEY_MPLS_OPTS_LSE,
   __TCA_FLOWER_KEY_MPLS_OPTS_MAX,
diff --git a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/pkt_sched.h b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/pkt_sched.h
index e298b74..c31b8bb 100644
--- a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/pkt_sched.h
+++ b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/pkt_sched.h
@@ -924,6 +924,13 @@
 #define TCA_TAPRIO_ATTR_FLAG_TXTIME_ASSIST _BITUL(0)
 #define TCA_TAPRIO_ATTR_FLAG_FULL_OFFLOAD _BITUL(1)
 enum {
+  TCA_TAPRIO_TC_ENTRY_UNSPEC,
+  TCA_TAPRIO_TC_ENTRY_INDEX,
+  TCA_TAPRIO_TC_ENTRY_MAX_SDU,
+  __TCA_TAPRIO_TC_ENTRY_CNT,
+  TCA_TAPRIO_TC_ENTRY_MAX = (__TCA_TAPRIO_TC_ENTRY_CNT - 1)
+};
+enum {
   TCA_TAPRIO_ATTR_UNSPEC,
   TCA_TAPRIO_ATTR_PRIOMAP,
   TCA_TAPRIO_ATTR_SCHED_ENTRY_LIST,
@@ -936,6 +943,7 @@
   TCA_TAPRIO_ATTR_SCHED_CYCLE_TIME_EXTENSION,
   TCA_TAPRIO_ATTR_FLAGS,
   TCA_TAPRIO_ATTR_TXTIME_DELAY,
+  TCA_TAPRIO_ATTR_TC_ENTRY,
   __TCA_TAPRIO_ATTR_MAX,
 };
 #define TCA_TAPRIO_ATTR_MAX (__TCA_TAPRIO_ATTR_MAX - 1)
diff --git a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/prctl.h b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/prctl.h
index 9b4c695..1dac726 100644
--- a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/prctl.h
+++ b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/prctl.h
@@ -179,6 +179,11 @@
 #define PR_SCHED_CORE_SCOPE_THREAD 0
 #define PR_SCHED_CORE_SCOPE_THREAD_GROUP 1
 #define PR_SCHED_CORE_SCOPE_PROCESS_GROUP 2
+#define PR_SME_SET_VL 63
+#define PR_SME_SET_VL_ONEXEC (1 << 18)
+#define PR_SME_GET_VL 64
+#define PR_SME_VL_LEN_MASK 0xffff
+#define PR_SME_VL_INHERIT (1 << 17)
 #define PR_SET_VMA 0x53564d41
 #define PR_SET_VMA_ANON_NAME 0
 #endif
diff --git a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/psci.h b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/psci.h
index bc522e7..4dead17 100644
--- a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/psci.h
+++ b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/psci.h
@@ -39,11 +39,23 @@
 #define PSCI_0_2_FN64_MIGRATE PSCI_0_2_FN64(5)
 #define PSCI_0_2_FN64_MIGRATE_INFO_UP_CPU PSCI_0_2_FN64(7)
 #define PSCI_1_0_FN_PSCI_FEATURES PSCI_0_2_FN(10)
+#define PSCI_1_0_FN_CPU_FREEZE PSCI_0_2_FN(11)
+#define PSCI_1_0_FN_CPU_DEFAULT_SUSPEND PSCI_0_2_FN(12)
+#define PSCI_1_0_FN_NODE_HW_STATE PSCI_0_2_FN(13)
 #define PSCI_1_0_FN_SYSTEM_SUSPEND PSCI_0_2_FN(14)
 #define PSCI_1_0_FN_SET_SUSPEND_MODE PSCI_0_2_FN(15)
+#define PSCI_1_0_FN_STAT_RESIDENCY PSCI_0_2_FN(16)
+#define PSCI_1_0_FN_STAT_COUNT PSCI_0_2_FN(17)
 #define PSCI_1_1_FN_SYSTEM_RESET2 PSCI_0_2_FN(18)
+#define PSCI_1_1_FN_MEM_PROTECT PSCI_0_2_FN(19)
+#define PSCI_1_1_FN_MEM_PROTECT_CHECK_RANGE PSCI_0_2_FN(19)
+#define PSCI_1_0_FN64_CPU_DEFAULT_SUSPEND PSCI_0_2_FN64(12)
+#define PSCI_1_0_FN64_NODE_HW_STATE PSCI_0_2_FN64(13)
 #define PSCI_1_0_FN64_SYSTEM_SUSPEND PSCI_0_2_FN64(14)
+#define PSCI_1_0_FN64_STAT_RESIDENCY PSCI_0_2_FN64(16)
+#define PSCI_1_0_FN64_STAT_COUNT PSCI_0_2_FN64(17)
 #define PSCI_1_1_FN64_SYSTEM_RESET2 PSCI_0_2_FN64(18)
+#define PSCI_1_1_FN64_MEM_PROTECT_CHECK_RANGE PSCI_0_2_FN64(19)
 #define PSCI_0_2_POWER_STATE_ID_MASK 0xffff
 #define PSCI_0_2_POWER_STATE_ID_SHIFT 0
 #define PSCI_0_2_POWER_STATE_TYPE_SHIFT 16
@@ -60,6 +72,8 @@
 #define PSCI_0_2_TOS_UP_MIGRATE 0
 #define PSCI_0_2_TOS_UP_NO_MIGRATE 1
 #define PSCI_0_2_TOS_MP 2
+#define PSCI_1_1_RESET_TYPE_SYSTEM_WARM_RESET 0
+#define PSCI_1_1_RESET_TYPE_VENDOR_START 0x80000000U
 #define PSCI_VERSION_MAJOR_SHIFT 16
 #define PSCI_VERSION_MINOR_MASK ((1U << PSCI_VERSION_MAJOR_SHIFT) - 1)
 #define PSCI_VERSION_MAJOR_MASK ~PSCI_VERSION_MINOR_MASK
diff --git a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/psp-sev.h b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/psp-sev.h
index 6c4f73d..8c9ec80 100644
--- a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/psp-sev.h
+++ b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/psp-sev.h
@@ -66,37 +66,37 @@
   __u32 flags;
   __u8 build;
   __u32 guest_count;
-} __packed;
+} __attribute__((__packed__));
 #define SEV_STATUS_FLAGS_CONFIG_ES 0x0100
 struct sev_user_data_pek_csr {
   __u64 address;
   __u32 length;
-} __packed;
+} __attribute__((__packed__));
 struct sev_user_data_pek_cert_import {
   __u64 pek_cert_address;
   __u32 pek_cert_len;
   __u64 oca_cert_address;
   __u32 oca_cert_len;
-} __packed;
+} __attribute__((__packed__));
 struct sev_user_data_pdh_cert_export {
   __u64 pdh_cert_address;
   __u32 pdh_cert_len;
   __u64 cert_chain_address;
   __u32 cert_chain_len;
-} __packed;
+} __attribute__((__packed__));
 struct sev_user_data_get_id {
   __u8 socket1[64];
   __u8 socket2[64];
-} __packed;
+} __attribute__((__packed__));
 struct sev_user_data_get_id2 {
   __u64 address;
   __u32 length;
-} __packed;
+} __attribute__((__packed__));
 struct sev_issue_cmd {
   __u32 cmd;
   __u64 data;
   __u32 error;
-} __packed;
+} __attribute__((__packed__));
 #define SEV_IOC_TYPE 'S'
 #define SEV_ISSUE_CMD _IOWR(SEV_IOC_TYPE, 0x0, struct sev_issue_cmd)
 #endif
diff --git a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/qrtr.h b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/qrtr.h
index c0a4c72..ee56aca 100644
--- a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/qrtr.h
+++ b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/qrtr.h
@@ -54,5 +54,5 @@
       __le32 port;
     } client;
   };
-} __packed;
+} __attribute__((__packed__));
 #endif
diff --git a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/raid/md_p.h b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/raid/md_p.h
index 4ad444a..dc3084a 100644
--- a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/raid/md_p.h
+++ b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/raid/md_p.h
@@ -168,7 +168,7 @@
   __le32 sb_csum;
   __le32 max_dev;
   __u8 pad3[64 - 32];
-  __le16 dev_roles[0];
+  __le16 dev_roles[];
 };
 #define MD_FEATURE_BITMAP_OFFSET 1
 #define MD_FEATURE_RECOVERY_OFFSET 2
diff --git a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/random.h b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/random.h
index 2d3cfef..8df411b 100644
--- a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/random.h
+++ b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/random.h
@@ -31,7 +31,7 @@
 struct rand_pool_info {
   int entropy_count;
   int buf_size;
-  __u32 buf[0];
+  __u32 buf[];
 };
 #define GRND_NONBLOCK 0x0001
 #define GRND_RANDOM 0x0002
diff --git a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/reiserfs_xattr.h b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/reiserfs_xattr.h
index 36d31f6..16a7a08 100644
--- a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/reiserfs_xattr.h
+++ b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/reiserfs_xattr.h
@@ -27,6 +27,6 @@
 struct reiserfs_security_handle {
   const char * name;
   void * value;
-  size_t length;
+  __kernel_size_t length;
 };
 #endif
diff --git a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/rfkill.h b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/rfkill.h
index 6020baf..b90e67c 100644
--- a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/rfkill.h
+++ b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/rfkill.h
@@ -63,4 +63,6 @@
 #define RFKILL_IOC_MAGIC 'R'
 #define RFKILL_IOC_NOINPUT 1
 #define RFKILL_IOCTL_NOINPUT _IO(RFKILL_IOC_MAGIC, RFKILL_IOC_NOINPUT)
+#define RFKILL_IOC_MAX_SIZE 2
+#define RFKILL_IOCTL_MAX_SIZE _IOW(RFKILL_IOC_MAGIC, RFKILL_IOC_MAX_SIZE, __u32)
 #endif
diff --git a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/rkisp1-config.h b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/rkisp1-config.h
index cea14cd..7175c23 100644
--- a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/rkisp1-config.h
+++ b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/rkisp1-config.h
@@ -67,6 +67,37 @@
 #define RKISP1_CIF_ISP_HISTOGRAM_WEIGHT_GRIDS_SIZE_V12 81
 #define RKISP1_CIF_ISP_HISTOGRAM_WEIGHT_GRIDS_SIZE RKISP1_CIF_ISP_HISTOGRAM_WEIGHT_GRIDS_SIZE_V12
 #define RKISP1_CIF_ISP_DPCC_METHODS_MAX 3
+#define RKISP1_CIF_ISP_DPCC_MODE_STAGE1_ENABLE (1U << 2)
+#define RKISP1_CIF_ISP_DPCC_OUTPUT_MODE_STAGE1_INCL_G_CENTER (1U << 0)
+#define RKISP1_CIF_ISP_DPCC_OUTPUT_MODE_STAGE1_INCL_RB_CENTER (1U << 1)
+#define RKISP1_CIF_ISP_DPCC_OUTPUT_MODE_STAGE1_G_3X3 (1U << 2)
+#define RKISP1_CIF_ISP_DPCC_OUTPUT_MODE_STAGE1_RB_3X3 (1U << 3)
+#define RKISP1_CIF_ISP_DPCC_SET_USE_STAGE1_USE_SET(n) ((n) << 0)
+#define RKISP1_CIF_ISP_DPCC_SET_USE_STAGE1_USE_FIX_SET (1U << 3)
+#define RKISP1_CIF_ISP_DPCC_METHODS_SET_PG_GREEN_ENABLE (1U << 0)
+#define RKISP1_CIF_ISP_DPCC_METHODS_SET_LC_GREEN_ENABLE (1U << 1)
+#define RKISP1_CIF_ISP_DPCC_METHODS_SET_RO_GREEN_ENABLE (1U << 2)
+#define RKISP1_CIF_ISP_DPCC_METHODS_SET_RND_GREEN_ENABLE (1U << 3)
+#define RKISP1_CIF_ISP_DPCC_METHODS_SET_RG_GREEN_ENABLE (1U << 4)
+#define RKISP1_CIF_ISP_DPCC_METHODS_SET_PG_RED_BLUE_ENABLE (1U << 8)
+#define RKISP1_CIF_ISP_DPCC_METHODS_SET_LC_RED_BLUE_ENABLE (1U << 9)
+#define RKISP1_CIF_ISP_DPCC_METHODS_SET_RO_RED_BLUE_ENABLE (1U << 10)
+#define RKISP1_CIF_ISP_DPCC_METHODS_SET_RND_RED_BLUE_ENABLE (1U << 11)
+#define RKISP1_CIF_ISP_DPCC_METHODS_SET_RG_RED_BLUE_ENABLE (1U << 12)
+#define RKISP1_CIF_ISP_DPCC_LINE_THRESH_G(v) ((v) << 0)
+#define RKISP1_CIF_ISP_DPCC_LINE_THRESH_RB(v) ((v) << 8)
+#define RKISP1_CIF_ISP_DPCC_LINE_MAD_FAC_G(v) ((v) << 0)
+#define RKISP1_CIF_ISP_DPCC_LINE_MAD_FAC_RB(v) ((v) << 8)
+#define RKISP1_CIF_ISP_DPCC_PG_FAC_G(v) ((v) << 0)
+#define RKISP1_CIF_ISP_DPCC_PG_FAC_RB(v) ((v) << 8)
+#define RKISP1_CIF_ISP_DPCC_RND_THRESH_G(v) ((v) << 0)
+#define RKISP1_CIF_ISP_DPCC_RND_THRESH_RB(v) ((v) << 8)
+#define RKISP1_CIF_ISP_DPCC_RG_FAC_G(v) ((v) << 0)
+#define RKISP1_CIF_ISP_DPCC_RG_FAC_RB(v) ((v) << 8)
+#define RKISP1_CIF_ISP_DPCC_RO_LIMITS_n_G(n,v) ((v) << ((n) * 4))
+#define RKISP1_CIF_ISP_DPCC_RO_LIMITS_n_RB(n,v) ((v) << ((n) * 4 + 2))
+#define RKISP1_CIF_ISP_DPCC_RND_OFFS_n_G(n,v) ((v) << ((n) * 4))
+#define RKISP1_CIF_ISP_DPCC_RND_OFFS_n_RB(n,v) ((v) << ((n) * 4 + 2))
 #define RKISP1_CIF_ISP_DPF_MAX_NLF_COEFFS 17
 #define RKISP1_CIF_ISP_DPF_MAX_SPATIAL_COEFFS 6
 #define RKISP1_CIF_ISP_STAT_AWB (1U << 0)
diff --git a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/romfs_fs.h b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/romfs_fs.h
index 8e98714..bffbaf9 100644
--- a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/romfs_fs.h
+++ b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/romfs_fs.h
@@ -35,14 +35,14 @@
   __be32 word1;
   __be32 size;
   __be32 checksum;
-  char name[0];
+  char name[];
 };
 struct romfs_inode {
   __be32 next;
   __be32 spec;
   __be32 size;
   __be32 checksum;
-  char name[0];
+  char name[];
 };
 #define ROMFH_TYPE 7
 #define ROMFH_HRD 0
diff --git a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/rpmsg.h b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/rpmsg.h
index c5b5a76..9ceccdd 100644
--- a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/rpmsg.h
+++ b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/rpmsg.h
@@ -28,4 +28,6 @@
 };
 #define RPMSG_CREATE_EPT_IOCTL _IOW(0xb5, 0x1, struct rpmsg_endpoint_info)
 #define RPMSG_DESTROY_EPT_IOCTL _IO(0xb5, 0x2)
+#define RPMSG_CREATE_DEV_IOCTL _IOW(0xb5, 0x3, struct rpmsg_endpoint_info)
+#define RPMSG_RELEASE_DEV_IOCTL _IOW(0xb5, 0x4, struct rpmsg_endpoint_info)
 #endif
diff --git a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/rseq.h b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/rseq.h
index ba0ceb1..29a9457 100644
--- a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/rseq.h
+++ b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/rseq.h
@@ -47,22 +47,7 @@
 struct rseq {
   __u32 cpu_id_start;
   __u32 cpu_id;
-  union {
-    __u64 ptr64;
-#ifdef __LP64__
-    __u64 ptr;
-#else
-    struct {
-#if defined(__BYTE_ORDER) && __BYTE_ORDER == __BIG_ENDIAN || defined(__BIG_ENDIAN)
-      __u32 padding;
-      __u32 ptr32;
-#else
-      __u32 ptr32;
-      __u32 padding;
-#endif
-    } ptr;
-#endif
-  } rseq_cs;
+  __u64 rseq_cs;
   __u32 flags;
 } __attribute__((aligned(4 * sizeof(__u64))));
 #endif
diff --git a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/rtc.h b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/rtc.h
index cf5f22a..d75bc45 100644
--- a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/rtc.h
+++ b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/rtc.h
@@ -96,7 +96,8 @@
 #define RTC_FEATURE_UPDATE_INTERRUPT 4
 #define RTC_FEATURE_CORRECTION 5
 #define RTC_FEATURE_BACKUP_SWITCH_MODE 6
-#define RTC_FEATURE_CNT 7
+#define RTC_FEATURE_ALARM_WAKEUP_ONLY 7
+#define RTC_FEATURE_CNT 8
 #define RTC_PARAM_FEATURES 0
 #define RTC_PARAM_CORRECTION 1
 #define RTC_PARAM_BACKUP_SWITCH_MODE 2
diff --git a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/rtnetlink.h b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/rtnetlink.h
index 91c3ee4..7201827 100644
--- a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/rtnetlink.h
+++ b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/rtnetlink.h
@@ -131,6 +131,8 @@
 #define RTM_NEWSTATS RTM_NEWSTATS
   RTM_GETSTATS = 94,
 #define RTM_GETSTATS RTM_GETSTATS
+  RTM_SETSTATS,
+#define RTM_SETSTATS RTM_SETSTATS
   RTM_NEWCACHEREPORT = 96,
 #define RTM_NEWCACHEREPORT RTM_NEWCACHEREPORT
   RTM_NEWCHAIN = 100,
@@ -163,6 +165,12 @@
 #define RTM_DELNEXTHOPBUCKET RTM_DELNEXTHOPBUCKET
   RTM_GETNEXTHOPBUCKET,
 #define RTM_GETNEXTHOPBUCKET RTM_GETNEXTHOPBUCKET
+  RTM_NEWTUNNEL = 120,
+#define RTM_NEWTUNNEL RTM_NEWTUNNEL
+  RTM_DELTUNNEL,
+#define RTM_DELTUNNEL RTM_DELTUNNEL
+  RTM_GETTUNNEL,
+#define RTM_GETTUNNEL RTM_GETTUNNEL
   __RTM_MAX,
 #define RTM_MAX (((__RTM_MAX + 3) & ~3) - 1)
 };
@@ -315,7 +323,7 @@
 #define RTNH_DATA(rtnh) ((struct rtattr *) (((char *) (rtnh)) + RTNH_LENGTH(0)))
 struct rtvia {
   __kernel_sa_family_t rtvia_family;
-  __u8 rtvia_addr[0];
+  __u8 rtvia_addr[];
 };
 struct rta_cacheinfo {
   __u32 rta_clntref;
@@ -561,6 +569,10 @@
 #define RTNLGRP_BRVLAN RTNLGRP_BRVLAN
   RTNLGRP_MCTP_IFADDR,
 #define RTNLGRP_MCTP_IFADDR RTNLGRP_MCTP_IFADDR
+  RTNLGRP_TUNNEL,
+#define RTNLGRP_TUNNEL RTNLGRP_TUNNEL
+  RTNLGRP_STATS,
+#define RTNLGRP_STATS RTNLGRP_STATS
   __RTNLGRP_MAX
 };
 #define RTNLGRP_MAX (__RTNLGRP_MAX - 1)
@@ -592,4 +604,5 @@
 #define RTEXT_FILTER_MRP (1 << 4)
 #define RTEXT_FILTER_CFM_CONFIG (1 << 5)
 #define RTEXT_FILTER_CFM_STATUS (1 << 6)
+#define RTEXT_FILTER_MST (1 << 7)
 #endif
diff --git a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/sctp.h b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/sctp.h
index 765d6c9..4bf2412 100644
--- a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/sctp.h
+++ b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/sctp.h
@@ -210,7 +210,7 @@
   __u16 sac_outbound_streams;
   __u16 sac_inbound_streams;
   sctp_assoc_t sac_assoc_id;
-  __u8 sac_info[0];
+  __u8 sac_info[];
 };
 enum sctp_sac_state {
   SCTP_COMM_UP,
@@ -244,7 +244,7 @@
   __u32 sre_length;
   __be16 sre_error;
   sctp_assoc_t sre_assoc_id;
-  __u8 sre_data[0];
+  __u8 sre_data[];
 };
 struct sctp_send_failed {
   __u16 ssf_type;
@@ -253,7 +253,7 @@
   __u32 ssf_error;
   struct sctp_sndrcvinfo ssf_info;
   sctp_assoc_t ssf_assoc_id;
-  __u8 ssf_data[0];
+  __u8 ssf_data[];
 };
 struct sctp_send_failed_event {
   __u16 ssf_type;
@@ -262,7 +262,7 @@
   __u32 ssf_error;
   struct sctp_sndinfo ssfe_info;
   sctp_assoc_t ssf_assoc_id;
-  __u8 ssf_data[0];
+  __u8 ssf_data[];
 };
 enum sctp_ssf_flags {
   SCTP_DATA_UNSENT,
@@ -570,7 +570,7 @@
 struct sctp_getaddrs {
   sctp_assoc_t assoc_id;
   __u32 addr_num;
-  __u8 addrs[0];
+  __u8 addrs[];
 };
 struct sctp_assoc_stats {
   sctp_assoc_t sas_assoc_id;
diff --git a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/seccomp.h b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/seccomp.h
index e58b421..cc506ae 100644
--- a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/seccomp.h
+++ b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/seccomp.h
@@ -32,6 +32,7 @@
 #define SECCOMP_FILTER_FLAG_SPEC_ALLOW (1UL << 2)
 #define SECCOMP_FILTER_FLAG_NEW_LISTENER (1UL << 3)
 #define SECCOMP_FILTER_FLAG_TSYNC_ESRCH (1UL << 4)
+#define SECCOMP_FILTER_FLAG_WAIT_KILLABLE_RECV (1UL << 5)
 #define SECCOMP_RET_KILL_PROCESS 0x80000000U
 #define SECCOMP_RET_KILL_THREAD 0x00000000U
 #define SECCOMP_RET_KILL SECCOMP_RET_KILL_THREAD
diff --git a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/sed-opal.h b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/sed-opal.h
index a20197a..f7ac9bd 100644
--- a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/sed-opal.h
+++ b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/sed-opal.h
@@ -112,6 +112,16 @@
   __u64 flags;
   __u64 priv;
 };
+#define OPAL_FL_SUPPORTED 0x00000001
+#define OPAL_FL_LOCKING_SUPPORTED 0x00000002
+#define OPAL_FL_LOCKING_ENABLED 0x00000004
+#define OPAL_FL_LOCKED 0x00000008
+#define OPAL_FL_MBR_ENABLED 0x00000010
+#define OPAL_FL_MBR_DONE 0x00000020
+struct opal_status {
+  __u32 flags;
+  __u32 reserved;
+};
 #define IOC_OPAL_SAVE _IOW('p', 220, struct opal_lock_unlock)
 #define IOC_OPAL_LOCK_UNLOCK _IOW('p', 221, struct opal_lock_unlock)
 #define IOC_OPAL_TAKE_OWNERSHIP _IOW('p', 222, struct opal_key)
@@ -128,4 +138,5 @@
 #define IOC_OPAL_MBR_DONE _IOW('p', 233, struct opal_mbr_done)
 #define IOC_OPAL_WRITE_SHADOW_MBR _IOW('p', 234, struct opal_shadow_mbr)
 #define IOC_OPAL_GENERIC_TABLE_RW _IOW('p', 235, struct opal_read_write_table)
+#define IOC_OPAL_GET_STATUS _IOR('p', 236, struct opal_status)
 #endif
diff --git a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/seg6.h b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/seg6.h
index f180485..b8206cc 100644
--- a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/seg6.h
+++ b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/seg6.h
@@ -28,7 +28,7 @@
   __u8 first_segment;
   __u8 flags;
   __u16 tag;
-  struct in6_addr segments[0];
+  struct in6_addr segments[];
 };
 #define SR6_FLAG1_PROTECTED (1 << 6)
 #define SR6_FLAG1_OAM (1 << 5)
diff --git a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/seg6_iptunnel.h b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/seg6_iptunnel.h
index 1c1ad83..19d8ba4 100644
--- a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/seg6_iptunnel.h
+++ b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/seg6_iptunnel.h
@@ -27,12 +27,14 @@
 #define SEG6_IPTUNNEL_MAX (__SEG6_IPTUNNEL_MAX - 1)
 struct seg6_iptunnel_encap {
   int mode;
-  struct ipv6_sr_hdr srh[0];
+  struct ipv6_sr_hdr srh[];
 };
 #define SEG6_IPTUN_ENCAP_SIZE(x) ((sizeof(* x)) + (((x)->srh->hdrlen + 1) << 3))
 enum {
   SEG6_IPTUN_MODE_INLINE,
   SEG6_IPTUN_MODE_ENCAP,
   SEG6_IPTUN_MODE_L2ENCAP,
+  SEG6_IPTUN_MODE_ENCAP_RED,
+  SEG6_IPTUN_MODE_L2ENCAP_RED,
 };
 #endif
diff --git a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/seg6_local.h b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/seg6_local.h
index 61a8d97..4d062e8 100644
--- a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/seg6_local.h
+++ b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/seg6_local.h
@@ -31,6 +31,7 @@
   SEG6_LOCAL_BPF,
   SEG6_LOCAL_VRFTABLE,
   SEG6_LOCAL_COUNTERS,
+  SEG6_LOCAL_FLAVORS,
   __SEG6_LOCAL_MAX,
 };
 #define SEG6_LOCAL_MAX (__SEG6_LOCAL_MAX - 1)
@@ -71,4 +72,21 @@
   __SEG6_LOCAL_CNT_MAX,
 };
 #define SEG6_LOCAL_CNT_MAX (__SEG6_LOCAL_CNT_MAX - 1)
+enum {
+  SEG6_LOCAL_FLV_UNSPEC,
+  SEG6_LOCAL_FLV_OPERATION,
+  SEG6_LOCAL_FLV_LCBLOCK_BITS,
+  SEG6_LOCAL_FLV_LCNODE_FN_BITS,
+  __SEG6_LOCAL_FLV_MAX,
+};
+#define SEG6_LOCAL_FLV_MAX (__SEG6_LOCAL_FLV_MAX - 1)
+enum {
+  SEG6_LOCAL_FLV_OP_UNSPEC,
+  SEG6_LOCAL_FLV_OP_PSP,
+  SEG6_LOCAL_FLV_OP_USP,
+  SEG6_LOCAL_FLV_OP_USD,
+  SEG6_LOCAL_FLV_OP_NEXT_CSID,
+  __SEG6_LOCAL_FLV_OP_MAX
+};
+#define SEG6_LOCAL_FLV_OP_MAX (__SEG6_LOCAL_FLV_OP_MAX - 1)
 #endif
diff --git a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/serial.h b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/serial.h
index e4e903d..5a83c62 100644
--- a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/serial.h
+++ b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/serial.h
@@ -96,9 +96,20 @@
 #define SER_RS485_RTS_AFTER_SEND (1 << 2)
 #define SER_RS485_RX_DURING_TX (1 << 4)
 #define SER_RS485_TERMINATE_BUS (1 << 5)
+#define SER_RS485_ADDRB (1 << 6)
+#define SER_RS485_ADDR_RECV (1 << 7)
+#define SER_RS485_ADDR_DEST (1 << 8)
   __u32 delay_rts_before_send;
   __u32 delay_rts_after_send;
-  __u32 padding[5];
+  union {
+    __u32 padding[5];
+    struct {
+      __u8 addr_recv;
+      __u8 addr_dest;
+      __u8 padding0[2];
+      __u32 padding1[4];
+    };
+  };
 };
 struct serial_iso7816 {
   __u32 flags;
diff --git a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/serial_core.h b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/serial_core.h
index 0caf698..1e04429 100644
--- a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/serial_core.h
+++ b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/serial_core.h
@@ -47,6 +47,7 @@
 #define PORT_SUNSAB 39
 #define PORT_NPCM 40
 #define PORT_TEGRA_TCU 41
+#define PORT_ASPEED_VUART 42
 #define PORT_PCH_8LINE 44
 #define PORT_PCH_2LINE 45
 #define PORT_DZ 46
@@ -68,8 +69,6 @@
 #define PORT_IMX 62
 #define PORT_MPSC 63
 #define PORT_TXX9 64
-#define PORT_VR41XX_SIU 65
-#define PORT_VR41XX_DSIU 66
 #define PORT_S3C2400 67
 #define PORT_M32R_SIO 68
 #define PORT_JSM 69
@@ -122,4 +121,5 @@
 #define PORT_SIFIVE_V0 120
 #define PORT_SUNIX 121
 #define PORT_LINFLEXUART 122
+#define PORT_SUNPLUS 123
 #endif
diff --git a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/serial_reg.h b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/serial_reg.h
index b6648f8..e41e649 100644
--- a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/serial_reg.h
+++ b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/serial_reg.h
@@ -99,7 +99,7 @@
 #define UART_LSR_PE 0x04
 #define UART_LSR_OE 0x02
 #define UART_LSR_DR 0x01
-#define UART_LSR_BRK_ERROR_BITS 0x1E
+#define UART_LSR_BRK_ERROR_BITS (UART_LSR_BI | UART_LSR_FE | UART_LSR_PE | UART_LSR_OE)
 #define UART_MSR 6
 #define UART_MSR_DCD 0x80
 #define UART_MSR_RI 0x40
@@ -109,7 +109,7 @@
 #define UART_MSR_TERI 0x04
 #define UART_MSR_DDSR 0x02
 #define UART_MSR_DCTS 0x01
-#define UART_MSR_ANY_DELTA 0x0F
+#define UART_MSR_ANY_DELTA (UART_MSR_DDCD | UART_MSR_TERI | UART_MSR_DDSR | UART_MSR_DCTS)
 #define UART_SCR 7
 #define UART_DLL 0
 #define UART_DLM 1
diff --git a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/sev-guest.h b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/sev-guest.h
new file mode 100644
index 0000000..796479a
--- /dev/null
+++ b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/sev-guest.h
@@ -0,0 +1,56 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef __UAPI_LINUX_SEV_GUEST_H_
+#define __UAPI_LINUX_SEV_GUEST_H_
+#include <linux/types.h>
+struct snp_report_req {
+  __u8 user_data[64];
+  __u32 vmpl;
+  __u8 rsvd[28];
+};
+struct snp_report_resp {
+  __u8 data[4000];
+};
+struct snp_derived_key_req {
+  __u32 root_key_select;
+  __u32 rsvd;
+  __u64 guest_field_select;
+  __u32 vmpl;
+  __u32 guest_svn;
+  __u64 tcb_version;
+};
+struct snp_derived_key_resp {
+  __u8 data[64];
+};
+struct snp_guest_request_ioctl {
+  __u8 msg_version;
+  __u64 req_data;
+  __u64 resp_data;
+  __u64 fw_err;
+};
+struct snp_ext_report_req {
+  struct snp_report_req data;
+  __u64 certs_address;
+  __u32 certs_len;
+};
+#define SNP_GUEST_REQ_IOC_TYPE 'S'
+#define SNP_GET_REPORT _IOWR(SNP_GUEST_REQ_IOC_TYPE, 0x0, struct snp_guest_request_ioctl)
+#define SNP_GET_DERIVED_KEY _IOWR(SNP_GUEST_REQ_IOC_TYPE, 0x1, struct snp_guest_request_ioctl)
+#define SNP_GET_EXT_REPORT _IOWR(SNP_GUEST_REQ_IOC_TYPE, 0x2, struct snp_guest_request_ioctl)
+#endif
diff --git a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/smc.h b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/smc.h
index 01494da..200c9b6 100644
--- a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/smc.h
+++ b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/smc.h
@@ -57,6 +57,9 @@
   SMC_NETLINK_DUMP_SEID,
   SMC_NETLINK_ENABLE_SEID,
   SMC_NETLINK_DISABLE_SEID,
+  SMC_NETLINK_DUMP_HS_LIMITATION,
+  SMC_NETLINK_ENABLE_HS_LIMITATION,
+  SMC_NETLINK_DISABLE_HS_LIMITATION,
 };
 enum {
   SMC_GEN_UNSPEC,
@@ -109,6 +112,7 @@
   SMC_NLA_LGR_R_V2,
   SMC_NLA_LGR_R_NET_COOKIE,
   SMC_NLA_LGR_R_PAD,
+  SMC_NLA_LGR_R_BUF_TYPE,
   __SMC_NLA_LGR_R_MAX,
   SMC_NLA_LGR_R_MAX = __SMC_NLA_LGR_R_MAX - 1
 };
@@ -249,4 +253,11 @@
   __SMC_NLA_SEID_TABLE_MAX,
   SMC_NLA_SEID_TABLE_MAX = __SMC_NLA_SEID_TABLE_MAX - 1
 };
+enum {
+  SMC_NLA_HS_LIMITATION_UNSPEC,
+  SMC_NLA_HS_LIMITATION_ENABLED,
+  __SMC_NLA_HS_LIMITATION_MAX,
+  SMC_NLA_HS_LIMITATION_MAX = __SMC_NLA_HS_LIMITATION_MAX - 1
+};
+#define SMC_LIMIT_HS 1
 #endif
diff --git a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/snmp.h b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/snmp.h
index a503a7e..d98f39e 100644
--- a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/snmp.h
+++ b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/snmp.h
@@ -305,6 +305,8 @@
   LINUX_MIB_TLSRXDEVICE,
   LINUX_MIB_TLSDECRYPTERROR,
   LINUX_MIB_TLSRXDEVICERESYNC,
+  LINUX_MIB_TLSDECRYPTRETRY,
+  LINUX_MIB_TLSRXNOPADVIOL,
   __LINUX_MIB_TLSMAX
 };
 #endif
diff --git a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/socket.h b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/socket.h
index be16548..4a530a8 100644
--- a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/socket.h
+++ b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/socket.h
@@ -32,4 +32,7 @@
 #define SOCK_SNDBUF_LOCK 1
 #define SOCK_RCVBUF_LOCK 2
 #define SOCK_BUF_LOCK_MASK (SOCK_SNDBUF_LOCK | SOCK_RCVBUF_LOCK)
+#define SOCK_TXREHASH_DEFAULT 255
+#define SOCK_TXREHASH_DISABLED 0
+#define SOCK_TXREHASH_ENABLED 1
 #endif
diff --git a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/spi/spi.h b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/spi/spi.h
index 39267a2..693e752 100644
--- a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/spi/spi.h
+++ b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/spi/spi.h
@@ -40,5 +40,6 @@
 #define SPI_TX_OCTAL _BITUL(13)
 #define SPI_RX_OCTAL _BITUL(14)
 #define SPI_3WIRE_HIZ _BITUL(15)
-#define SPI_MODE_USER_MASK (_BITUL(16) - 1)
+#define SPI_RX_CPHA_FLIP _BITUL(16)
+#define SPI_MODE_USER_MASK (_BITUL(17) - 1)
 #endif
diff --git a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/stat.h b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/stat.h
index a15b9b5..89304ce 100644
--- a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/stat.h
+++ b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/stat.h
@@ -78,7 +78,8 @@
   __u32 stx_dev_major;
   __u32 stx_dev_minor;
   __u64 stx_mnt_id;
-  __u64 __spare2;
+  __u32 stx_dio_mem_align;
+  __u32 stx_dio_offset_align;
   __u64 __spare3[12];
 };
 #define STATX_TYPE 0x00000001U
@@ -95,6 +96,7 @@
 #define STATX_BASIC_STATS 0x000007ffU
 #define STATX_BTIME 0x00000800U
 #define STATX_MNT_ID 0x00001000U
+#define STATX_DIOALIGN 0x00002000U
 #define STATX__RESERVED 0x80000000U
 #define STATX_ALL 0x00000fffU
 #define STATX_ATTR_COMPRESSED 0x00000004
diff --git a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/stddef.h b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/stddef.h
index d5cdf80..6bc6925 100644
--- a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/stddef.h
+++ b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/stddef.h
@@ -16,9 +16,12 @@
  ***
  ****************************************************************************
  ****************************************************************************/
+#ifndef _UAPI_LINUX_STDDEF_H
+#define _UAPI_LINUX_STDDEF_H
 #include <linux/compiler_types.h>
 #ifndef __always_inline
 #define __always_inline inline
 #endif
 #define __struct_group(TAG,NAME,ATTRS,MEMBERS...) union { struct { MEMBERS } ATTRS; struct TAG { MEMBERS } ATTRS NAME; }
 #define __DECLARE_FLEX_ARRAY(TYPE,NAME) struct { struct { } __empty_ ##NAME; TYPE NAME[]; }
+#endif
diff --git a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/stm.h b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/stm.h
index 1c7f7f3..b1453f7 100644
--- a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/stm.h
+++ b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/stm.h
@@ -28,7 +28,7 @@
   __u16 width;
   __u16 __reserved_0;
   __u32 __reserved_1;
-  char id[0];
+  char id[];
 };
 #define STP_POLICY_ID_SET _IOWR('%', 0, struct stp_policy_id)
 #define STP_POLICY_ID_GET _IOR('%', 1, struct stp_policy_id)
diff --git a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/sysctl.h b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/sysctl.h
index ae9c2ba..ff17f7c 100644
--- a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/sysctl.h
+++ b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/sysctl.h
@@ -516,6 +516,7 @@
   NET_NEIGH_GC_THRESH3 = 16,
   NET_NEIGH_RETRANS_TIME_MS = 17,
   NET_NEIGH_REACHABLE_TIME_MS = 18,
+  NET_NEIGH_INTERVAL_PROBE_TIME_MS = 19,
 };
 enum {
   NET_DCCP_DEFAULT = 1,
diff --git a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/target_core_user.h b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/target_core_user.h
index dcba00e..83e155e 100644
--- a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/target_core_user.h
+++ b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/target_core_user.h
@@ -34,7 +34,7 @@
   __u32 cmdr_size;
   __u32 cmd_head;
   __u32 cmd_tail __attribute__((__aligned__(ALIGN_SIZE)));
-} __packed;
+} __attribute__((__packed__));
 enum tcmu_opcode {
   TCMU_OP_PAD = 0,
   TCMU_OP_CMD,
@@ -48,7 +48,7 @@
 #define TCMU_UFLAG_READ_LEN 0x2
 #define TCMU_UFLAG_KEEP_BUF 0x4
   __u8 uflags;
-} __packed;
+} __attribute__((__packed__));
 #define TCMU_OP_MASK 0x7
 #define TCMU_SENSE_BUFFERSIZE 96
 struct tcmu_cmd_entry {
@@ -71,7 +71,7 @@
       char sense_buffer[TCMU_SENSE_BUFFERSIZE];
     } rsp;
   };
-} __packed;
+} __attribute__((__packed__));
 struct tcmu_tmr_entry {
   struct tcmu_cmd_entry_hdr hdr;
 #define TCMU_TMR_UNKNOWN 0
@@ -89,8 +89,8 @@
   __u32 cmd_cnt;
   __u64 __pad3;
   __u64 __pad4;
-  __u16 cmd_ids[0];
-} __packed;
+  __u16 cmd_ids[];
+} __attribute__((__packed__));
 #define TCMU_OP_ALIGN_SIZE sizeof(__u64)
 enum tcmu_genl_cmd {
   TCMU_CMD_UNSPEC,
diff --git a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/taskstats.h b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/taskstats.h
index efa5b4a..c1cda52 100644
--- a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/taskstats.h
+++ b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/taskstats.h
@@ -19,7 +19,7 @@
 #ifndef _LINUX_TASKSTATS_H
 #define _LINUX_TASKSTATS_H
 #include <linux/types.h>
-#define TASKSTATS_VERSION 11
+#define TASKSTATS_VERSION 13
 #define TS_COMM_LEN 32
 struct taskstats {
   __u16 version;
@@ -71,6 +71,12 @@
   __u64 ac_btime64;
   __u64 compact_count;
   __u64 compact_delay_total;
+  __u32 ac_tgid;
+  __u64 ac_tgetime __attribute__((aligned(8)));
+  __u64 ac_exe_dev;
+  __u64 ac_exe_inode;
+  __u64 wpcopy_count;
+  __u64 wpcopy_delay_total;
 };
 enum {
   TASKSTATS_CMD_UNSPEC = 0,
diff --git a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/tc_act/tc_skbedit.h b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/tc_act/tc_skbedit.h
index 5706d4d..b041a6a 100644
--- a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/tc_act/tc_skbedit.h
+++ b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/tc_act/tc_skbedit.h
@@ -25,6 +25,7 @@
 #define SKBEDIT_F_PTYPE 0x8
 #define SKBEDIT_F_MASK 0x10
 #define SKBEDIT_F_INHERITDSFIELD 0x20
+#define SKBEDIT_F_TXQ_SKBHASH 0x40
 struct tc_skbedit {
   tc_gen;
 };
@@ -39,6 +40,7 @@
   TCA_SKBEDIT_PTYPE,
   TCA_SKBEDIT_MASK,
   TCA_SKBEDIT_FLAGS,
+  TCA_SKBEDIT_QUEUE_MAPPING_MAX,
   __TCA_SKBEDIT_MAX
 };
 #define TCA_SKBEDIT_MAX (__TCA_SKBEDIT_MAX - 1)
diff --git a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/tee.h b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/tee.h
index 5cfe713..404b7b2 100644
--- a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/tee.h
+++ b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/tee.h
@@ -22,8 +22,6 @@
 #include <linux/types.h>
 #define TEE_IOC_MAGIC 0xa4
 #define TEE_IOC_BASE 0
-#define TEE_IOCTL_SHM_MAPPED 0x1
-#define TEE_IOCTL_SHM_DMA_BUF 0x2
 #define TEE_MAX_ARG_SIZE 1024
 #define TEE_GEN_CAP_GP (1 << 0)
 #define TEE_GEN_CAP_PRIVILEGED (1 << 1)
diff --git a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/thermal.h b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/thermal.h
index 72ea378..2f9dccb 100644
--- a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/thermal.h
+++ b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/thermal.h
@@ -54,6 +54,10 @@
   THERMAL_GENL_ATTR_CDEV_MAX_STATE,
   THERMAL_GENL_ATTR_CDEV_NAME,
   THERMAL_GENL_ATTR_GOV_NAME,
+  THERMAL_GENL_ATTR_CPU_CAPABILITY,
+  THERMAL_GENL_ATTR_CPU_CAPABILITY_ID,
+  THERMAL_GENL_ATTR_CPU_CAPABILITY_PERFORMANCE,
+  THERMAL_GENL_ATTR_CPU_CAPABILITY_EFFICIENCY,
   __THERMAL_GENL_ATTR_MAX,
 };
 #define THERMAL_GENL_ATTR_MAX (__THERMAL_GENL_ATTR_MAX - 1)
@@ -77,6 +81,7 @@
   THERMAL_GENL_EVENT_CDEV_DELETE,
   THERMAL_GENL_EVENT_CDEV_STATE_UPDATE,
   THERMAL_GENL_EVENT_TZ_GOV_CHANGE,
+  THERMAL_GENL_EVENT_CPU_CAPABILITY_CHANGE,
   __THERMAL_GENL_EVENT_MAX,
 };
 #define THERMAL_GENL_EVENT_MAX (__THERMAL_GENL_EVENT_MAX - 1)
diff --git a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/tipc_config.h b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/tipc_config.h
index a371e37..c6ee1d1 100644
--- a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/tipc_config.h
+++ b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/tipc_config.h
@@ -22,7 +22,6 @@
 #include <linux/string.h>
 #include <linux/tipc.h>
 #include <asm/byteorder.h>
-#include <arpa/inet.h>
 #define TIPC_CMD_NOOP 0x0000
 #define TIPC_CMD_GET_NODES 0x0001
 #define TIPC_CMD_GET_MEDIA_NAMES 0x0002
diff --git a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/tls.h b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/tls.h
index c98ea0b..fcab74b 100644
--- a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/tls.h
+++ b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/tls.h
@@ -21,6 +21,8 @@
 #include <linux/types.h>
 #define TLS_TX 1
 #define TLS_RX 2
+#define TLS_TX_ZEROCOPY_RO 3
+#define TLS_RX_EXPECT_NO_PAD 4
 #define TLS_VERSION_MINOR(ver) ((ver) & 0xFF)
 #define TLS_VERSION_MAJOR(ver) (((ver) >> 8) & 0xFF)
 #define TLS_VERSION_NUMBER(id) ((((id ##_VERSION_MAJOR) & 0xFF) << 8) | ((id ##_VERSION_MINOR) & 0xFF))
@@ -66,6 +68,18 @@
 #define TLS_CIPHER_SM4_CCM_SALT_SIZE 4
 #define TLS_CIPHER_SM4_CCM_TAG_SIZE 16
 #define TLS_CIPHER_SM4_CCM_REC_SEQ_SIZE 8
+#define TLS_CIPHER_ARIA_GCM_128 57
+#define TLS_CIPHER_ARIA_GCM_128_IV_SIZE 8
+#define TLS_CIPHER_ARIA_GCM_128_KEY_SIZE 16
+#define TLS_CIPHER_ARIA_GCM_128_SALT_SIZE 4
+#define TLS_CIPHER_ARIA_GCM_128_TAG_SIZE 16
+#define TLS_CIPHER_ARIA_GCM_128_REC_SEQ_SIZE 8
+#define TLS_CIPHER_ARIA_GCM_256 58
+#define TLS_CIPHER_ARIA_GCM_256_IV_SIZE 8
+#define TLS_CIPHER_ARIA_GCM_256_KEY_SIZE 32
+#define TLS_CIPHER_ARIA_GCM_256_SALT_SIZE 4
+#define TLS_CIPHER_ARIA_GCM_256_TAG_SIZE 16
+#define TLS_CIPHER_ARIA_GCM_256_REC_SEQ_SIZE 8
 #define TLS_SET_RECORD_TYPE 1
 #define TLS_GET_RECORD_TYPE 2
 struct tls_crypto_info {
@@ -114,12 +128,28 @@
   unsigned char salt[TLS_CIPHER_SM4_CCM_SALT_SIZE];
   unsigned char rec_seq[TLS_CIPHER_SM4_CCM_REC_SEQ_SIZE];
 };
+struct tls12_crypto_info_aria_gcm_128 {
+  struct tls_crypto_info info;
+  unsigned char iv[TLS_CIPHER_ARIA_GCM_128_IV_SIZE];
+  unsigned char key[TLS_CIPHER_ARIA_GCM_128_KEY_SIZE];
+  unsigned char salt[TLS_CIPHER_ARIA_GCM_128_SALT_SIZE];
+  unsigned char rec_seq[TLS_CIPHER_ARIA_GCM_128_REC_SEQ_SIZE];
+};
+struct tls12_crypto_info_aria_gcm_256 {
+  struct tls_crypto_info info;
+  unsigned char iv[TLS_CIPHER_ARIA_GCM_256_IV_SIZE];
+  unsigned char key[TLS_CIPHER_ARIA_GCM_256_KEY_SIZE];
+  unsigned char salt[TLS_CIPHER_ARIA_GCM_256_SALT_SIZE];
+  unsigned char rec_seq[TLS_CIPHER_ARIA_GCM_256_REC_SEQ_SIZE];
+};
 enum {
   TLS_INFO_UNSPEC,
   TLS_INFO_VERSION,
   TLS_INFO_CIPHER,
   TLS_INFO_TXCONF,
   TLS_INFO_RXCONF,
+  TLS_INFO_ZC_RO_TX,
+  TLS_INFO_RX_NO_PAD,
   __TLS_INFO_MAX,
 };
 #define TLS_INFO_MAX (__TLS_INFO_MAX - 1)
diff --git a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/tty.h b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/tty.h
index dcce572..a94e6e6 100644
--- a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/tty.h
+++ b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/tty.h
@@ -18,7 +18,6 @@
  ****************************************************************************/
 #ifndef _UAPI_LINUX_TTY_H
 #define _UAPI_LINUX_TTY_H
-#define NR_LDISCS 30
 #define N_TTY 0
 #define N_SLIP 1
 #define N_MOUSE 2
@@ -48,4 +47,7 @@
 #define N_SPEAKUP 26
 #define N_NULL 27
 #define N_MCTP 28
+#define N_DEVELOPMENT 29
+#define N_CAN327 30
+#define NR_LDISCS 31
 #endif
diff --git a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/types.h b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/types.h
index 9145e66..f41d676 100644
--- a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/types.h
+++ b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/types.h
@@ -21,8 +21,8 @@
 #include <asm/types.h>
 #ifndef __ASSEMBLY__
 #include <linux/posix_types.h>
-#define __bitwise__
-#define __bitwise __bitwise__
+#define __bitwise
+#define __bitwise__ __bitwise
 typedef __u16 __bitwise __le16;
 typedef __u16 __bitwise __be16;
 typedef __u32 __bitwise __le32;
diff --git a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/ublk_cmd.h b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/ublk_cmd.h
new file mode 100644
index 0000000..8c9cbeb
--- /dev/null
+++ b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/ublk_cmd.h
@@ -0,0 +1,127 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef USER_BLK_DRV_CMD_INC_H
+#define USER_BLK_DRV_CMD_INC_H
+#include <linux/types.h>
+#define UBLK_CMD_GET_QUEUE_AFFINITY 0x01
+#define UBLK_CMD_GET_DEV_INFO 0x02
+#define UBLK_CMD_ADD_DEV 0x04
+#define UBLK_CMD_DEL_DEV 0x05
+#define UBLK_CMD_START_DEV 0x06
+#define UBLK_CMD_STOP_DEV 0x07
+#define UBLK_CMD_SET_PARAMS 0x08
+#define UBLK_CMD_GET_PARAMS 0x09
+#define UBLK_CMD_START_USER_RECOVERY 0x10
+#define UBLK_CMD_END_USER_RECOVERY 0x11
+#define UBLK_IO_FETCH_REQ 0x20
+#define UBLK_IO_COMMIT_AND_FETCH_REQ 0x21
+#define UBLK_IO_NEED_GET_DATA 0x22
+#define UBLK_IO_RES_OK 0
+#define UBLK_IO_RES_NEED_GET_DATA 1
+#define UBLK_IO_RES_ABORT (- ENODEV)
+#define UBLKSRV_CMD_BUF_OFFSET 0
+#define UBLKSRV_IO_BUF_OFFSET 0x80000000
+#define UBLK_MAX_QUEUE_DEPTH 4096
+#define UBLK_F_SUPPORT_ZERO_COPY (1ULL << 0)
+#define UBLK_F_URING_CMD_COMP_IN_TASK (1ULL << 1)
+#define UBLK_F_NEED_GET_DATA (1UL << 2)
+#define UBLK_F_USER_RECOVERY (1UL << 3)
+#define UBLK_F_USER_RECOVERY_REISSUE (1UL << 4)
+#define UBLK_S_DEV_DEAD 0
+#define UBLK_S_DEV_LIVE 1
+#define UBLK_S_DEV_QUIESCED 2
+struct ublksrv_ctrl_cmd {
+  __u32 dev_id;
+  __u16 queue_id;
+  __u16 len;
+  __u64 addr;
+  __u64 data[2];
+};
+struct ublksrv_ctrl_dev_info {
+  __u16 nr_hw_queues;
+  __u16 queue_depth;
+  __u16 state;
+  __u16 pad0;
+  __u32 max_io_buf_bytes;
+  __u32 dev_id;
+  __s32 ublksrv_pid;
+  __u32 pad1;
+  __u64 flags;
+  __u64 ublksrv_flags;
+  __u64 reserved0;
+  __u64 reserved1;
+  __u64 reserved2;
+};
+#define UBLK_IO_OP_READ 0
+#define UBLK_IO_OP_WRITE 1
+#define UBLK_IO_OP_FLUSH 2
+#define UBLK_IO_OP_DISCARD 3
+#define UBLK_IO_OP_WRITE_SAME 4
+#define UBLK_IO_OP_WRITE_ZEROES 5
+#define UBLK_IO_F_FAILFAST_DEV (1U << 8)
+#define UBLK_IO_F_FAILFAST_TRANSPORT (1U << 9)
+#define UBLK_IO_F_FAILFAST_DRIVER (1U << 10)
+#define UBLK_IO_F_META (1U << 11)
+#define UBLK_IO_F_FUA (1U << 13)
+#define UBLK_IO_F_NOUNMAP (1U << 15)
+#define UBLK_IO_F_SWAP (1U << 16)
+struct ublksrv_io_desc {
+  __u32 op_flags;
+  __u32 nr_sectors;
+  __u64 start_sector;
+  __u64 addr;
+};
+struct ublksrv_io_cmd {
+  __u16 q_id;
+  __u16 tag;
+  __s32 result;
+  __u64 addr;
+};
+struct ublk_param_basic {
+#define UBLK_ATTR_READ_ONLY (1 << 0)
+#define UBLK_ATTR_ROTATIONAL (1 << 1)
+#define UBLK_ATTR_VOLATILE_CACHE (1 << 2)
+#define UBLK_ATTR_FUA (1 << 3)
+  __u32 attrs;
+  __u8 logical_bs_shift;
+  __u8 physical_bs_shift;
+  __u8 io_opt_shift;
+  __u8 io_min_shift;
+  __u32 max_sectors;
+  __u32 chunk_sectors;
+  __u64 dev_sectors;
+  __u64 virt_boundary_mask;
+};
+struct ublk_param_discard {
+  __u32 discard_alignment;
+  __u32 discard_granularity;
+  __u32 max_discard_sectors;
+  __u32 max_write_zeroes_sectors;
+  __u16 max_discard_segments;
+  __u16 reserved0;
+};
+struct ublk_params {
+  __u32 len;
+#define UBLK_PARAM_TYPE_BASIC (1 << 0)
+#define UBLK_PARAM_TYPE_DISCARD (1 << 1)
+  __u32 types;
+  struct ublk_param_basic basic;
+  struct ublk_param_discard discard;
+};
+#endif
diff --git a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/usb/audio.h b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/usb/audio.h
index 7d36157..bfda540 100644
--- a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/usb/audio.h
+++ b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/usb/audio.h
@@ -186,7 +186,7 @@
   __u8 bUnitID;
   __u8 bSourceID;
   __u8 bControlSize;
-  __u8 bmaControls[0];
+  __u8 bmaControls[];
 } __attribute__((packed));
 struct uac_processing_unit_descriptor {
   __u8 bLength;
diff --git a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/usb/cdc.h b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/usb/cdc.h
index 59c9488..bbfc4db 100644
--- a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/usb/cdc.h
+++ b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/usb/cdc.h
@@ -131,7 +131,7 @@
   __u8 bDescriptorType;
   __u8 bDescriptorSubType;
   __u8 bGuidDescriptorType;
-  __u8 bDetailData[0];
+  __u8 bDetailData[];
 } __attribute__((packed));
 struct usb_cdc_obex_desc {
   __u8 bLength;
@@ -201,6 +201,8 @@
 #define USB_CDC_SPACE_PARITY 4
   __u8 bDataBits;
 } __attribute__((packed));
+#define USB_CDC_CTRL_DTR (1 << 0)
+#define USB_CDC_CTRL_RTS (1 << 1)
 #define USB_CDC_PACKET_TYPE_PROMISCUOUS (1 << 0)
 #define USB_CDC_PACKET_TYPE_ALL_MULTICAST (1 << 1)
 #define USB_CDC_PACKET_TYPE_DIRECTED (1 << 2)
@@ -217,6 +219,13 @@
   __le16 wIndex;
   __le16 wLength;
 } __attribute__((packed));
+#define USB_CDC_SERIAL_STATE_DCD (1 << 0)
+#define USB_CDC_SERIAL_STATE_DSR (1 << 1)
+#define USB_CDC_SERIAL_STATE_BREAK (1 << 2)
+#define USB_CDC_SERIAL_STATE_RING_SIGNAL (1 << 3)
+#define USB_CDC_SERIAL_STATE_FRAMING (1 << 4)
+#define USB_CDC_SERIAL_STATE_PARITY (1 << 5)
+#define USB_CDC_SERIAL_STATE_OVERRUN (1 << 6)
 struct usb_cdc_speed_change {
   __le32 DLBitRRate;
   __le32 ULBitRate;
@@ -267,7 +276,7 @@
   __le32 dwSignature;
   __le16 wLength;
   __le16 wNextNdpIndex;
-  struct usb_cdc_ncm_dpe16 dpe16[0];
+  struct usb_cdc_ncm_dpe16 dpe16[];
 } __attribute__((packed));
 struct usb_cdc_ncm_dpe32 {
   __le32 dwDatagramIndex;
@@ -279,7 +288,7 @@
   __le16 wReserved6;
   __le32 dwNextNdpIndex;
   __le32 dwReserved12;
-  struct usb_cdc_ncm_dpe32 dpe32[0];
+  struct usb_cdc_ncm_dpe32 dpe32[];
 } __attribute__((packed));
 #define USB_CDC_NCM_NDP16_INDEX_MIN 0x000C
 #define USB_CDC_NCM_NDP32_INDEX_MIN 0x0010
diff --git a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/usb/ch9.h b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/usb/ch9.h
index f1dade9..49eb5fa 100644
--- a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/usb/ch9.h
+++ b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/usb/ch9.h
@@ -324,7 +324,7 @@
   __u8 bDescriptorType;
   __u8 tTKID[3];
   __u8 bReserved;
-  __u8 bKeyData[0];
+  __u8 bKeyData[];
 } __attribute__((packed));
 struct usb_encryption_descriptor {
   __u8 bLength;
diff --git a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/usb/raw_gadget.h b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/usb/raw_gadget.h
index 70d5a26..8b60c8d 100644
--- a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/usb/raw_gadget.h
+++ b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/usb/raw_gadget.h
@@ -35,7 +35,7 @@
 struct usb_raw_event {
   __u32 type;
   __u32 length;
-  __u8 data[0];
+  __u8 data[];
 };
 #define USB_RAW_IO_FLAGS_ZERO 0x0001
 #define USB_RAW_IO_FLAGS_MASK 0x0001
@@ -43,7 +43,7 @@
   __u16 ep;
   __u16 flags;
   __u32 length;
-  __u8 data[0];
+  __u8 data[];
 };
 #define USB_RAW_EPS_NUM_MAX 30
 #define USB_RAW_EP_NAME_MAX 16
diff --git a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/usbdevice_fs.h b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/usbdevice_fs.h
index 7936ad9..5fef522 100644
--- a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/usbdevice_fs.h
+++ b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/usbdevice_fs.h
@@ -91,7 +91,7 @@
   int error_count;
   unsigned int signr;
   void __user * usercontext;
-  struct usbdevfs_iso_packet_desc iso_frame_desc[0];
+  struct usbdevfs_iso_packet_desc iso_frame_desc[];
 };
 struct usbdevfs_ioctl {
   int ifno;
@@ -121,7 +121,7 @@
 struct usbdevfs_streams {
   unsigned int num_streams;
   unsigned int num_eps;
-  unsigned char eps[0];
+  unsigned char eps[];
 };
 #define USBDEVFS_CONTROL _IOWR('U', 0, struct usbdevfs_ctrltransfer)
 #define USBDEVFS_CONTROL32 _IOWR('U', 0, struct usbdevfs_ctrltransfer32)
diff --git a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/usbip.h b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/usbip.h
index ae18347..b0c1067 100644
--- a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/usbip.h
+++ b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/usbip.h
@@ -27,4 +27,21 @@
   VDEV_ST_USED,
   VDEV_ST_ERROR
 };
+#define USBIP_URB_SHORT_NOT_OK 0x0001
+#define USBIP_URB_ISO_ASAP 0x0002
+#define USBIP_URB_NO_TRANSFER_DMA_MAP 0x0004
+#define USBIP_URB_ZERO_PACKET 0x0040
+#define USBIP_URB_NO_INTERRUPT 0x0080
+#define USBIP_URB_FREE_BUFFER 0x0100
+#define USBIP_URB_DIR_IN 0x0200
+#define USBIP_URB_DIR_OUT 0
+#define USBIP_URB_DIR_MASK USBIP_URB_DIR_IN
+#define USBIP_URB_DMA_MAP_SINGLE 0x00010000
+#define USBIP_URB_DMA_MAP_PAGE 0x00020000
+#define USBIP_URB_DMA_MAP_SG 0x00040000
+#define USBIP_URB_MAP_LOCAL 0x00080000
+#define USBIP_URB_SETUP_MAP_SINGLE 0x00100000
+#define USBIP_URB_SETUP_MAP_LOCAL 0x00200000
+#define USBIP_URB_DMA_SG_COMBINED 0x00400000
+#define USBIP_URB_ALIGNED_TEMP_BUFFER 0x00800000
 #endif
diff --git a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/userfaultfd.h b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/userfaultfd.h
index ca7b7a5..09e0d80 100644
--- a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/userfaultfd.h
+++ b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/userfaultfd.h
@@ -19,12 +19,14 @@
 #ifndef _LINUX_USERFAULTFD_H
 #define _LINUX_USERFAULTFD_H
 #include <linux/types.h>
+#define USERFAULTFD_IOC 0xAA
+#define USERFAULTFD_IOC_NEW _IO(USERFAULTFD_IOC, 0x00)
 #define UFFD_API ((__u64) 0xAA)
 #define UFFD_API_REGISTER_MODES (UFFDIO_REGISTER_MODE_MISSING | UFFDIO_REGISTER_MODE_WP | UFFDIO_REGISTER_MODE_MINOR)
-#define UFFD_API_FEATURES (UFFD_FEATURE_PAGEFAULT_FLAG_WP | UFFD_FEATURE_EVENT_FORK | UFFD_FEATURE_EVENT_REMAP | UFFD_FEATURE_EVENT_REMOVE | UFFD_FEATURE_EVENT_UNMAP | UFFD_FEATURE_MISSING_HUGETLBFS | UFFD_FEATURE_MISSING_SHMEM | UFFD_FEATURE_SIGBUS | UFFD_FEATURE_THREAD_ID | UFFD_FEATURE_MINOR_HUGETLBFS | UFFD_FEATURE_MINOR_SHMEM)
+#define UFFD_API_FEATURES (UFFD_FEATURE_PAGEFAULT_FLAG_WP | UFFD_FEATURE_EVENT_FORK | UFFD_FEATURE_EVENT_REMAP | UFFD_FEATURE_EVENT_REMOVE | UFFD_FEATURE_EVENT_UNMAP | UFFD_FEATURE_MISSING_HUGETLBFS | UFFD_FEATURE_MISSING_SHMEM | UFFD_FEATURE_SIGBUS | UFFD_FEATURE_THREAD_ID | UFFD_FEATURE_MINOR_HUGETLBFS | UFFD_FEATURE_MINOR_SHMEM | UFFD_FEATURE_EXACT_ADDRESS | UFFD_FEATURE_WP_HUGETLBFS_SHMEM)
 #define UFFD_API_IOCTLS ((__u64) 1 << _UFFDIO_REGISTER | (__u64) 1 << _UFFDIO_UNREGISTER | (__u64) 1 << _UFFDIO_API)
 #define UFFD_API_RANGE_IOCTLS ((__u64) 1 << _UFFDIO_WAKE | (__u64) 1 << _UFFDIO_COPY | (__u64) 1 << _UFFDIO_ZEROPAGE | (__u64) 1 << _UFFDIO_WRITEPROTECT | (__u64) 1 << _UFFDIO_CONTINUE)
-#define UFFD_API_RANGE_IOCTLS_BASIC ((__u64) 1 << _UFFDIO_WAKE | (__u64) 1 << _UFFDIO_COPY | (__u64) 1 << _UFFDIO_CONTINUE)
+#define UFFD_API_RANGE_IOCTLS_BASIC ((__u64) 1 << _UFFDIO_WAKE | (__u64) 1 << _UFFDIO_COPY | (__u64) 1 << _UFFDIO_CONTINUE | (__u64) 1 << _UFFDIO_WRITEPROTECT)
 #define _UFFDIO_REGISTER (0x00)
 #define _UFFDIO_UNREGISTER (0x01)
 #define _UFFDIO_WAKE (0x02)
@@ -73,7 +75,7 @@
       __u64 reserved3;
     } reserved;
   } arg;
-} __packed;
+} __attribute__((__packed__));
 #define UFFD_EVENT_PAGEFAULT 0x12
 #define UFFD_EVENT_FORK 0x13
 #define UFFD_EVENT_REMAP 0x14
@@ -95,6 +97,8 @@
 #define UFFD_FEATURE_THREAD_ID (1 << 8)
 #define UFFD_FEATURE_MINOR_HUGETLBFS (1 << 9)
 #define UFFD_FEATURE_MINOR_SHMEM (1 << 10)
+#define UFFD_FEATURE_EXACT_ADDRESS (1 << 11)
+#define UFFD_FEATURE_WP_HUGETLBFS_SHMEM (1 << 12)
   __u64 features;
   __u64 ioctls;
 };
diff --git a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/uvcvideo.h b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/uvcvideo.h
index 719147a..46528a9 100644
--- a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/uvcvideo.h
+++ b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/uvcvideo.h
@@ -68,5 +68,5 @@
   __u8 length;
   __u8 flags;
   __u8 buf[];
-} __packed;
+} __attribute__((__packed__));
 #endif
diff --git a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/v4l2-controls.h b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/v4l2-controls.h
index 1a11355..276ecaa 100644
--- a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/v4l2-controls.h
+++ b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/v4l2-controls.h
@@ -119,6 +119,8 @@
 #define V4L2_CID_USER_CODA_BASE (V4L2_CID_USER_BASE + 0x10e0)
 #define V4L2_CID_USER_CCS_BASE (V4L2_CID_USER_BASE + 0x10f0)
 #define V4L2_CID_USER_ALLEGRO_BASE (V4L2_CID_USER_BASE + 0x1170)
+#define V4L2_CID_USER_ISL7998X_BASE (V4L2_CID_USER_BASE + 0x1180)
+#define V4L2_CID_USER_DW100_BASE (V4L2_CID_USER_BASE + 0x1190)
 #define V4L2_CID_CODEC_BASE (V4L2_CTRL_CLASS_CODEC | 0x900)
 #define V4L2_CID_CODEC_CLASS (V4L2_CTRL_CLASS_CODEC | 1)
 #define V4L2_CID_MPEG_STREAM_TYPE (V4L2_CID_CODEC_BASE + 0)
@@ -329,6 +331,11 @@
 #define V4L2_CID_MPEG_VIDEO_USE_LTR_FRAMES (V4L2_CID_CODEC_BASE + 234)
 #define V4L2_CID_MPEG_VIDEO_DEC_CONCEAL_COLOR (V4L2_CID_CODEC_BASE + 235)
 #define V4L2_CID_MPEG_VIDEO_INTRA_REFRESH_PERIOD (V4L2_CID_CODEC_BASE + 236)
+#define V4L2_CID_MPEG_VIDEO_INTRA_REFRESH_PERIOD_TYPE (V4L2_CID_CODEC_BASE + 237)
+enum v4l2_mpeg_video_intra_refresh_period_type {
+  V4L2_CID_MPEG_VIDEO_INTRA_REFRESH_PERIOD_TYPE_RANDOM = 0,
+  V4L2_CID_MPEG_VIDEO_INTRA_REFRESH_PERIOD_TYPE_CYCLIC = 1,
+};
 #define V4L2_CID_MPEG_VIDEO_MPEG2_LEVEL (V4L2_CID_CODEC_BASE + 270)
 enum v4l2_mpeg_video_mpeg2_level {
   V4L2_MPEG_VIDEO_MPEG2_LEVEL_LOW = 0,
@@ -1153,6 +1160,8 @@
 #define V4L2_H264_DECODE_PARAM_FLAG_IDR_PIC 0x01
 #define V4L2_H264_DECODE_PARAM_FLAG_FIELD_PIC 0x02
 #define V4L2_H264_DECODE_PARAM_FLAG_BOTTOM_FIELD 0x04
+#define V4L2_H264_DECODE_PARAM_FLAG_PFRAME 0x08
+#define V4L2_H264_DECODE_PARAM_FLAG_BFRAME 0x10
 #define V4L2_CID_STATELESS_H264_DECODE_PARAMS (V4L2_CID_CODEC_STATELESS_BASE + 7)
 struct v4l2_ctrl_h264_decode_params {
   struct v4l2_h264_dpb_entry dpb[V4L2_H264_NUM_DPB_ENTRIES];
@@ -1323,6 +1332,204 @@
   __u8 chroma_intra_quantiser_matrix[64];
   __u8 chroma_non_intra_quantiser_matrix[64];
 };
+#define V4L2_CID_STATELESS_HEVC_SPS (V4L2_CID_CODEC_STATELESS_BASE + 400)
+#define V4L2_CID_STATELESS_HEVC_PPS (V4L2_CID_CODEC_STATELESS_BASE + 401)
+#define V4L2_CID_STATELESS_HEVC_SLICE_PARAMS (V4L2_CID_CODEC_STATELESS_BASE + 402)
+#define V4L2_CID_STATELESS_HEVC_SCALING_MATRIX (V4L2_CID_CODEC_STATELESS_BASE + 403)
+#define V4L2_CID_STATELESS_HEVC_DECODE_PARAMS (V4L2_CID_CODEC_STATELESS_BASE + 404)
+#define V4L2_CID_STATELESS_HEVC_DECODE_MODE (V4L2_CID_CODEC_STATELESS_BASE + 405)
+#define V4L2_CID_STATELESS_HEVC_START_CODE (V4L2_CID_CODEC_STATELESS_BASE + 406)
+#define V4L2_CID_STATELESS_HEVC_ENTRY_POINT_OFFSETS (V4L2_CID_CODEC_STATELESS_BASE + 407)
+enum v4l2_stateless_hevc_decode_mode {
+  V4L2_STATELESS_HEVC_DECODE_MODE_SLICE_BASED,
+  V4L2_STATELESS_HEVC_DECODE_MODE_FRAME_BASED,
+};
+enum v4l2_stateless_hevc_start_code {
+  V4L2_STATELESS_HEVC_START_CODE_NONE,
+  V4L2_STATELESS_HEVC_START_CODE_ANNEX_B,
+};
+#define V4L2_HEVC_SLICE_TYPE_B 0
+#define V4L2_HEVC_SLICE_TYPE_P 1
+#define V4L2_HEVC_SLICE_TYPE_I 2
+#define V4L2_HEVC_SPS_FLAG_SEPARATE_COLOUR_PLANE (1ULL << 0)
+#define V4L2_HEVC_SPS_FLAG_SCALING_LIST_ENABLED (1ULL << 1)
+#define V4L2_HEVC_SPS_FLAG_AMP_ENABLED (1ULL << 2)
+#define V4L2_HEVC_SPS_FLAG_SAMPLE_ADAPTIVE_OFFSET (1ULL << 3)
+#define V4L2_HEVC_SPS_FLAG_PCM_ENABLED (1ULL << 4)
+#define V4L2_HEVC_SPS_FLAG_PCM_LOOP_FILTER_DISABLED (1ULL << 5)
+#define V4L2_HEVC_SPS_FLAG_LONG_TERM_REF_PICS_PRESENT (1ULL << 6)
+#define V4L2_HEVC_SPS_FLAG_SPS_TEMPORAL_MVP_ENABLED (1ULL << 7)
+#define V4L2_HEVC_SPS_FLAG_STRONG_INTRA_SMOOTHING_ENABLED (1ULL << 8)
+struct v4l2_ctrl_hevc_sps {
+  __u8 video_parameter_set_id;
+  __u8 seq_parameter_set_id;
+  __u16 pic_width_in_luma_samples;
+  __u16 pic_height_in_luma_samples;
+  __u8 bit_depth_luma_minus8;
+  __u8 bit_depth_chroma_minus8;
+  __u8 log2_max_pic_order_cnt_lsb_minus4;
+  __u8 sps_max_dec_pic_buffering_minus1;
+  __u8 sps_max_num_reorder_pics;
+  __u8 sps_max_latency_increase_plus1;
+  __u8 log2_min_luma_coding_block_size_minus3;
+  __u8 log2_diff_max_min_luma_coding_block_size;
+  __u8 log2_min_luma_transform_block_size_minus2;
+  __u8 log2_diff_max_min_luma_transform_block_size;
+  __u8 max_transform_hierarchy_depth_inter;
+  __u8 max_transform_hierarchy_depth_intra;
+  __u8 pcm_sample_bit_depth_luma_minus1;
+  __u8 pcm_sample_bit_depth_chroma_minus1;
+  __u8 log2_min_pcm_luma_coding_block_size_minus3;
+  __u8 log2_diff_max_min_pcm_luma_coding_block_size;
+  __u8 num_short_term_ref_pic_sets;
+  __u8 num_long_term_ref_pics_sps;
+  __u8 chroma_format_idc;
+  __u8 sps_max_sub_layers_minus1;
+  __u8 reserved[6];
+  __u64 flags;
+};
+#define V4L2_HEVC_PPS_FLAG_DEPENDENT_SLICE_SEGMENT_ENABLED (1ULL << 0)
+#define V4L2_HEVC_PPS_FLAG_OUTPUT_FLAG_PRESENT (1ULL << 1)
+#define V4L2_HEVC_PPS_FLAG_SIGN_DATA_HIDING_ENABLED (1ULL << 2)
+#define V4L2_HEVC_PPS_FLAG_CABAC_INIT_PRESENT (1ULL << 3)
+#define V4L2_HEVC_PPS_FLAG_CONSTRAINED_INTRA_PRED (1ULL << 4)
+#define V4L2_HEVC_PPS_FLAG_TRANSFORM_SKIP_ENABLED (1ULL << 5)
+#define V4L2_HEVC_PPS_FLAG_CU_QP_DELTA_ENABLED (1ULL << 6)
+#define V4L2_HEVC_PPS_FLAG_PPS_SLICE_CHROMA_QP_OFFSETS_PRESENT (1ULL << 7)
+#define V4L2_HEVC_PPS_FLAG_WEIGHTED_PRED (1ULL << 8)
+#define V4L2_HEVC_PPS_FLAG_WEIGHTED_BIPRED (1ULL << 9)
+#define V4L2_HEVC_PPS_FLAG_TRANSQUANT_BYPASS_ENABLED (1ULL << 10)
+#define V4L2_HEVC_PPS_FLAG_TILES_ENABLED (1ULL << 11)
+#define V4L2_HEVC_PPS_FLAG_ENTROPY_CODING_SYNC_ENABLED (1ULL << 12)
+#define V4L2_HEVC_PPS_FLAG_LOOP_FILTER_ACROSS_TILES_ENABLED (1ULL << 13)
+#define V4L2_HEVC_PPS_FLAG_PPS_LOOP_FILTER_ACROSS_SLICES_ENABLED (1ULL << 14)
+#define V4L2_HEVC_PPS_FLAG_DEBLOCKING_FILTER_OVERRIDE_ENABLED (1ULL << 15)
+#define V4L2_HEVC_PPS_FLAG_PPS_DISABLE_DEBLOCKING_FILTER (1ULL << 16)
+#define V4L2_HEVC_PPS_FLAG_LISTS_MODIFICATION_PRESENT (1ULL << 17)
+#define V4L2_HEVC_PPS_FLAG_SLICE_SEGMENT_HEADER_EXTENSION_PRESENT (1ULL << 18)
+#define V4L2_HEVC_PPS_FLAG_DEBLOCKING_FILTER_CONTROL_PRESENT (1ULL << 19)
+#define V4L2_HEVC_PPS_FLAG_UNIFORM_SPACING (1ULL << 20)
+struct v4l2_ctrl_hevc_pps {
+  __u8 pic_parameter_set_id;
+  __u8 num_extra_slice_header_bits;
+  __u8 num_ref_idx_l0_default_active_minus1;
+  __u8 num_ref_idx_l1_default_active_minus1;
+  __s8 init_qp_minus26;
+  __u8 diff_cu_qp_delta_depth;
+  __s8 pps_cb_qp_offset;
+  __s8 pps_cr_qp_offset;
+  __u8 num_tile_columns_minus1;
+  __u8 num_tile_rows_minus1;
+  __u8 column_width_minus1[20];
+  __u8 row_height_minus1[22];
+  __s8 pps_beta_offset_div2;
+  __s8 pps_tc_offset_div2;
+  __u8 log2_parallel_merge_level_minus2;
+  __u8 reserved;
+  __u64 flags;
+};
+#define V4L2_HEVC_DPB_ENTRY_LONG_TERM_REFERENCE 0x01
+#define V4L2_HEVC_SEI_PIC_STRUCT_FRAME 0
+#define V4L2_HEVC_SEI_PIC_STRUCT_TOP_FIELD 1
+#define V4L2_HEVC_SEI_PIC_STRUCT_BOTTOM_FIELD 2
+#define V4L2_HEVC_SEI_PIC_STRUCT_TOP_BOTTOM 3
+#define V4L2_HEVC_SEI_PIC_STRUCT_BOTTOM_TOP 4
+#define V4L2_HEVC_SEI_PIC_STRUCT_TOP_BOTTOM_TOP 5
+#define V4L2_HEVC_SEI_PIC_STRUCT_BOTTOM_TOP_BOTTOM 6
+#define V4L2_HEVC_SEI_PIC_STRUCT_FRAME_DOUBLING 7
+#define V4L2_HEVC_SEI_PIC_STRUCT_FRAME_TRIPLING 8
+#define V4L2_HEVC_SEI_PIC_STRUCT_TOP_PAIRED_PREVIOUS_BOTTOM 9
+#define V4L2_HEVC_SEI_PIC_STRUCT_BOTTOM_PAIRED_PREVIOUS_TOP 10
+#define V4L2_HEVC_SEI_PIC_STRUCT_TOP_PAIRED_NEXT_BOTTOM 11
+#define V4L2_HEVC_SEI_PIC_STRUCT_BOTTOM_PAIRED_NEXT_TOP 12
+#define V4L2_HEVC_DPB_ENTRIES_NUM_MAX 16
+struct v4l2_hevc_dpb_entry {
+  __u64 timestamp;
+  __u8 flags;
+  __u8 field_pic;
+  __u16 reserved;
+  __s32 pic_order_cnt_val;
+};
+struct v4l2_hevc_pred_weight_table {
+  __s8 delta_luma_weight_l0[V4L2_HEVC_DPB_ENTRIES_NUM_MAX];
+  __s8 luma_offset_l0[V4L2_HEVC_DPB_ENTRIES_NUM_MAX];
+  __s8 delta_chroma_weight_l0[V4L2_HEVC_DPB_ENTRIES_NUM_MAX][2];
+  __s8 chroma_offset_l0[V4L2_HEVC_DPB_ENTRIES_NUM_MAX][2];
+  __s8 delta_luma_weight_l1[V4L2_HEVC_DPB_ENTRIES_NUM_MAX];
+  __s8 luma_offset_l1[V4L2_HEVC_DPB_ENTRIES_NUM_MAX];
+  __s8 delta_chroma_weight_l1[V4L2_HEVC_DPB_ENTRIES_NUM_MAX][2];
+  __s8 chroma_offset_l1[V4L2_HEVC_DPB_ENTRIES_NUM_MAX][2];
+  __u8 luma_log2_weight_denom;
+  __s8 delta_chroma_log2_weight_denom;
+};
+#define V4L2_HEVC_SLICE_PARAMS_FLAG_SLICE_SAO_LUMA (1ULL << 0)
+#define V4L2_HEVC_SLICE_PARAMS_FLAG_SLICE_SAO_CHROMA (1ULL << 1)
+#define V4L2_HEVC_SLICE_PARAMS_FLAG_SLICE_TEMPORAL_MVP_ENABLED (1ULL << 2)
+#define V4L2_HEVC_SLICE_PARAMS_FLAG_MVD_L1_ZERO (1ULL << 3)
+#define V4L2_HEVC_SLICE_PARAMS_FLAG_CABAC_INIT (1ULL << 4)
+#define V4L2_HEVC_SLICE_PARAMS_FLAG_COLLOCATED_FROM_L0 (1ULL << 5)
+#define V4L2_HEVC_SLICE_PARAMS_FLAG_USE_INTEGER_MV (1ULL << 6)
+#define V4L2_HEVC_SLICE_PARAMS_FLAG_SLICE_DEBLOCKING_FILTER_DISABLED (1ULL << 7)
+#define V4L2_HEVC_SLICE_PARAMS_FLAG_SLICE_LOOP_FILTER_ACROSS_SLICES_ENABLED (1ULL << 8)
+#define V4L2_HEVC_SLICE_PARAMS_FLAG_DEPENDENT_SLICE_SEGMENT (1ULL << 9)
+struct v4l2_ctrl_hevc_slice_params {
+  __u32 bit_size;
+  __u32 data_byte_offset;
+  __u32 num_entry_point_offsets;
+  __u8 nal_unit_type;
+  __u8 nuh_temporal_id_plus1;
+  __u8 slice_type;
+  __u8 colour_plane_id;
+  __s32 slice_pic_order_cnt;
+  __u8 num_ref_idx_l0_active_minus1;
+  __u8 num_ref_idx_l1_active_minus1;
+  __u8 collocated_ref_idx;
+  __u8 five_minus_max_num_merge_cand;
+  __s8 slice_qp_delta;
+  __s8 slice_cb_qp_offset;
+  __s8 slice_cr_qp_offset;
+  __s8 slice_act_y_qp_offset;
+  __s8 slice_act_cb_qp_offset;
+  __s8 slice_act_cr_qp_offset;
+  __s8 slice_beta_offset_div2;
+  __s8 slice_tc_offset_div2;
+  __u8 pic_struct;
+  __u8 reserved0[3];
+  __u32 slice_segment_addr;
+  __u8 ref_idx_l0[V4L2_HEVC_DPB_ENTRIES_NUM_MAX];
+  __u8 ref_idx_l1[V4L2_HEVC_DPB_ENTRIES_NUM_MAX];
+  __u16 short_term_ref_pic_set_size;
+  __u16 long_term_ref_pic_set_size;
+  struct v4l2_hevc_pred_weight_table pred_weight_table;
+  __u8 reserved1[2];
+  __u64 flags;
+};
+#define V4L2_HEVC_DECODE_PARAM_FLAG_IRAP_PIC 0x1
+#define V4L2_HEVC_DECODE_PARAM_FLAG_IDR_PIC 0x2
+#define V4L2_HEVC_DECODE_PARAM_FLAG_NO_OUTPUT_OF_PRIOR 0x4
+struct v4l2_ctrl_hevc_decode_params {
+  __s32 pic_order_cnt_val;
+  __u16 short_term_ref_pic_set_size;
+  __u16 long_term_ref_pic_set_size;
+  __u8 num_active_dpb_entries;
+  __u8 num_poc_st_curr_before;
+  __u8 num_poc_st_curr_after;
+  __u8 num_poc_lt_curr;
+  __u8 poc_st_curr_before[V4L2_HEVC_DPB_ENTRIES_NUM_MAX];
+  __u8 poc_st_curr_after[V4L2_HEVC_DPB_ENTRIES_NUM_MAX];
+  __u8 poc_lt_curr[V4L2_HEVC_DPB_ENTRIES_NUM_MAX];
+  __u8 reserved[4];
+  struct v4l2_hevc_dpb_entry dpb[V4L2_HEVC_DPB_ENTRIES_NUM_MAX];
+  __u64 flags;
+};
+struct v4l2_ctrl_hevc_scaling_matrix {
+  __u8 scaling_list_4x4[6][16];
+  __u8 scaling_list_8x8[6][64];
+  __u8 scaling_list_16x16[6][64];
+  __u8 scaling_list_32x32[2][64];
+  __u8 scaling_list_dc_coef_16x16[6];
+  __u8 scaling_list_dc_coef_32x32[2];
+};
 #define V4L2_CID_COLORIMETRY_CLASS_BASE (V4L2_CTRL_CLASS_COLORIMETRY | 0x900)
 #define V4L2_CID_COLORIMETRY_CLASS (V4L2_CTRL_CLASS_COLORIMETRY | 1)
 #define V4L2_CID_COLORIMETRY_HDR10_CLL_INFO (V4L2_CID_COLORIMETRY_CLASS_BASE + 0)
diff --git a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/vbox_vmmdev_types.h b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/vbox_vmmdev_types.h
index 009f9a6..777a2bb 100644
--- a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/vbox_vmmdev_types.h
+++ b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/vbox_vmmdev_types.h
@@ -157,7 +157,7 @@
       __u32 offset;
     } page_list;
   } u;
-} __packed;
+} __attribute__((__packed__));
 struct vmmdev_hgcm_function_parameter64 {
   enum vmmdev_hgcm_function_parameter_type type;
   union {
@@ -169,13 +169,13 @@
         __u64 phys_addr;
         __u64 linear_addr;
       } u;
-    } __packed pointer;
+    } __attribute__((__packed__)) pointer;
     struct {
       __u32 size;
       __u32 offset;
     } page_list;
-  } __packed u;
-} __packed;
+  } __attribute__((__packed__)) u;
+} __attribute__((__packed__));
 #if __BITS_PER_LONG == 64
 #define vmmdev_hgcm_function_parameter vmmdev_hgcm_function_parameter64
 #else
diff --git a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/vdpa.h b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/vdpa.h
index b3e5d39..ed61cdd 100644
--- a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/vdpa.h
+++ b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/vdpa.h
@@ -28,6 +28,7 @@
   VDPA_CMD_DEV_DEL,
   VDPA_CMD_DEV_GET,
   VDPA_CMD_DEV_CONFIG_GET,
+  VDPA_CMD_DEV_VSTATS_GET,
 };
 enum vdpa_attr {
   VDPA_ATTR_UNSPEC,
@@ -48,6 +49,11 @@
   VDPA_ATTR_DEV_NEGOTIATED_FEATURES,
   VDPA_ATTR_DEV_MGMTDEV_MAX_VQS,
   VDPA_ATTR_DEV_SUPPORTED_FEATURES,
+  VDPA_ATTR_DEV_QUEUE_INDEX,
+  VDPA_ATTR_DEV_VENDOR_ATTR_NAME,
+  VDPA_ATTR_DEV_VENDOR_ATTR_VALUE,
+  VDPA_ATTR_DEV_FEATURES,
+  VDPA_ATTR_VDPA_DEV_SUPPORTED_FEATURES,
   VDPA_ATTR_MAX,
 };
 #endif
diff --git a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/vduse.h b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/vduse.h
index 2dc8c82..f0b6d6b 100644
--- a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/vduse.h
+++ b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/vduse.h
@@ -90,6 +90,22 @@
 };
 #define VDUSE_VQ_SETUP_KICKFD _IOW(VDUSE_BASE, 0x16, struct vduse_vq_eventfd)
 #define VDUSE_VQ_INJECT_IRQ _IOW(VDUSE_BASE, 0x17, __u32)
+struct vduse_iova_umem {
+  __u64 uaddr;
+  __u64 iova;
+  __u64 size;
+  __u64 reserved[3];
+};
+#define VDUSE_IOTLB_REG_UMEM _IOW(VDUSE_BASE, 0x18, struct vduse_iova_umem)
+#define VDUSE_IOTLB_DEREG_UMEM _IOW(VDUSE_BASE, 0x19, struct vduse_iova_umem)
+struct vduse_iova_info {
+  __u64 start;
+  __u64 last;
+#define VDUSE_IOVA_CAP_UMEM (1 << 0)
+  __u64 capability;
+  __u64 reserved[3];
+};
+#define VDUSE_IOTLB_GET_INFO _IOWR(VDUSE_BASE, 0x1a, struct vduse_iova_info)
 enum vduse_req_type {
   VDUSE_GET_VQ_STATE,
   VDUSE_SET_STATUS,
diff --git a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/version.h b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/version.h
index 2dfd696..ab95caf 100644
--- a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/version.h
+++ b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/version.h
@@ -16,8 +16,8 @@
  ***
  ****************************************************************************
  ****************************************************************************/
-#define LINUX_VERSION_CODE 332032
+#define LINUX_VERSION_CODE 393472
 #define KERNEL_VERSION(a,b,c) (((a) << 16) + ((b) << 8) + ((c) > 255 ? 255 : (c)))
-#define LINUX_VERSION_MAJOR 5
-#define LINUX_VERSION_PATCHLEVEL 17
+#define LINUX_VERSION_MAJOR 6
+#define LINUX_VERSION_PATCHLEVEL 1
 #define LINUX_VERSION_SUBLEVEL 0
diff --git a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/vfio.h b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/vfio.h
index e0f322b..dffa136 100644
--- a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/vfio.h
+++ b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/vfio.h
@@ -110,7 +110,7 @@
 #define VFIO_REGION_TYPE_PCI_VENDOR_MASK (0xffff)
 #define VFIO_REGION_TYPE_GFX (1)
 #define VFIO_REGION_TYPE_CCW (2)
-#define VFIO_REGION_TYPE_MIGRATION (3)
+#define VFIO_REGION_TYPE_MIGRATION_DEPRECATED (3)
 #define VFIO_REGION_SUBTYPE_INTEL_IGD_OPREGION (1)
 #define VFIO_REGION_SUBTYPE_INTEL_IGD_HOST_CFG (2)
 #define VFIO_REGION_SUBTYPE_INTEL_IGD_LPC_CFG (3)
@@ -130,17 +130,17 @@
 #define VFIO_REGION_SUBTYPE_CCW_ASYNC_CMD (1)
 #define VFIO_REGION_SUBTYPE_CCW_SCHIB (2)
 #define VFIO_REGION_SUBTYPE_CCW_CRW (3)
-#define VFIO_REGION_SUBTYPE_MIGRATION (1)
+#define VFIO_REGION_SUBTYPE_MIGRATION_DEPRECATED (1)
 struct vfio_device_migration_info {
   __u32 device_state;
-#define VFIO_DEVICE_STATE_STOP (0)
-#define VFIO_DEVICE_STATE_RUNNING (1 << 0)
-#define VFIO_DEVICE_STATE_SAVING (1 << 1)
-#define VFIO_DEVICE_STATE_RESUMING (1 << 2)
-#define VFIO_DEVICE_STATE_MASK (VFIO_DEVICE_STATE_RUNNING | VFIO_DEVICE_STATE_SAVING | VFIO_DEVICE_STATE_RESUMING)
-#define VFIO_DEVICE_STATE_VALID(state) (state & VFIO_DEVICE_STATE_RESUMING ? (state & VFIO_DEVICE_STATE_MASK) == VFIO_DEVICE_STATE_RESUMING : 1)
-#define VFIO_DEVICE_STATE_IS_ERROR(state) ((state & VFIO_DEVICE_STATE_MASK) == (VFIO_DEVICE_STATE_SAVING | VFIO_DEVICE_STATE_RESUMING))
-#define VFIO_DEVICE_STATE_SET_ERROR(state) ((state & ~VFIO_DEVICE_STATE_MASK) | VFIO_DEVICE_SATE_SAVING | VFIO_DEVICE_STATE_RESUMING)
+#define VFIO_DEVICE_STATE_V1_STOP (0)
+#define VFIO_DEVICE_STATE_V1_RUNNING (1 << 0)
+#define VFIO_DEVICE_STATE_V1_SAVING (1 << 1)
+#define VFIO_DEVICE_STATE_V1_RESUMING (1 << 2)
+#define VFIO_DEVICE_STATE_MASK (VFIO_DEVICE_STATE_V1_RUNNING | VFIO_DEVICE_STATE_V1_SAVING | VFIO_DEVICE_STATE_V1_RESUMING)
+#define VFIO_DEVICE_STATE_VALID(state) (state & VFIO_DEVICE_STATE_V1_RESUMING ? (state & VFIO_DEVICE_STATE_MASK) == VFIO_DEVICE_STATE_V1_RESUMING : 1)
+#define VFIO_DEVICE_STATE_IS_ERROR(state) ((state & VFIO_DEVICE_STATE_MASK) == (VFIO_DEVICE_STATE_V1_SAVING | VFIO_DEVICE_STATE_V1_RESUMING))
+#define VFIO_DEVICE_STATE_SET_ERROR(state) ((state & ~VFIO_DEVICE_STATE_MASK) | VFIO_DEVICE_STATE_V1_SAVING | VFIO_DEVICE_STATE_V1_RESUMING)
   __u32 reserved;
   __u64 pending_bytes;
   __u64 data_offset;
@@ -285,6 +285,51 @@
 };
 #define VFIO_DEVICE_FEATURE _IO(VFIO_TYPE, VFIO_BASE + 17)
 #define VFIO_DEVICE_FEATURE_PCI_VF_TOKEN (0)
+struct vfio_device_feature_migration {
+  __aligned_u64 flags;
+#define VFIO_MIGRATION_STOP_COPY (1 << 0)
+#define VFIO_MIGRATION_P2P (1 << 1)
+};
+#define VFIO_DEVICE_FEATURE_MIGRATION 1
+struct vfio_device_feature_mig_state {
+  __u32 device_state;
+  __s32 data_fd;
+};
+#define VFIO_DEVICE_FEATURE_MIG_DEVICE_STATE 2
+enum vfio_device_mig_state {
+  VFIO_DEVICE_STATE_ERROR = 0,
+  VFIO_DEVICE_STATE_STOP = 1,
+  VFIO_DEVICE_STATE_RUNNING = 2,
+  VFIO_DEVICE_STATE_STOP_COPY = 3,
+  VFIO_DEVICE_STATE_RESUMING = 4,
+  VFIO_DEVICE_STATE_RUNNING_P2P = 5,
+};
+#define VFIO_DEVICE_FEATURE_LOW_POWER_ENTRY 3
+struct vfio_device_low_power_entry_with_wakeup {
+  __s32 wakeup_eventfd;
+  __u32 reserved;
+};
+#define VFIO_DEVICE_FEATURE_LOW_POWER_ENTRY_WITH_WAKEUP 4
+#define VFIO_DEVICE_FEATURE_LOW_POWER_EXIT 5
+struct vfio_device_feature_dma_logging_control {
+  __aligned_u64 page_size;
+  __u32 num_ranges;
+  __u32 __reserved;
+  __aligned_u64 ranges;
+};
+struct vfio_device_feature_dma_logging_range {
+  __aligned_u64 iova;
+  __aligned_u64 length;
+};
+#define VFIO_DEVICE_FEATURE_DMA_LOGGING_START 6
+#define VFIO_DEVICE_FEATURE_DMA_LOGGING_STOP 7
+struct vfio_device_feature_dma_logging_report {
+  __aligned_u64 iova;
+  __aligned_u64 length;
+  __aligned_u64 page_size;
+  __aligned_u64 bitmap;
+};
+#define VFIO_DEVICE_FEATURE_DMA_LOGGING_REPORT 8
 struct vfio_iommu_type1_info {
   __u32 argsz;
   __u32 flags;
diff --git a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/vfio_ccw.h b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/vfio_ccw.h
index a6defc5..7bf08f5 100644
--- a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/vfio_ccw.h
+++ b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/vfio_ccw.h
@@ -27,19 +27,19 @@
 #define IRB_AREA_SIZE 96
   __u8 irb_area[IRB_AREA_SIZE];
   __u32 ret_code;
-} __packed;
+} __attribute__((__packed__));
 #define VFIO_CCW_ASYNC_CMD_HSCH (1 << 0)
 #define VFIO_CCW_ASYNC_CMD_CSCH (1 << 1)
 struct ccw_cmd_region {
   __u32 command;
   __u32 ret_code;
-} __packed;
+} __attribute__((__packed__));
 struct ccw_schib_region {
 #define SCHIB_AREA_SIZE 52
   __u8 schib_area[SCHIB_AREA_SIZE];
-} __packed;
+} __attribute__((__packed__));
 struct ccw_crw_region {
   __u32 crw;
   __u32 pad;
-} __packed;
+} __attribute__((__packed__));
 #endif
diff --git a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/vfio_zdev.h b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/vfio_zdev.h
index c678e9a..1c3a943 100644
--- a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/vfio_zdev.h
+++ b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/vfio_zdev.h
@@ -29,6 +29,7 @@
   __u16 fmb_length;
   __u8 pft;
   __u8 gid;
+  __u32 fh;
 };
 struct vfio_device_info_cap_zpci_group {
   struct vfio_info_cap_header header;
@@ -40,6 +41,8 @@
   __u16 noi;
   __u16 maxstbl;
   __u8 version;
+  __u8 reserved;
+  __u16 imaxstbl;
 };
 struct vfio_device_info_cap_zpci_util {
   struct vfio_info_cap_header header;
diff --git a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/vhost.h b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/vhost.h
index 53b01c4..e5b1327 100644
--- a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/vhost.h
+++ b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/vhost.h
@@ -43,8 +43,6 @@
 #define VHOST_SET_VRING_ERR _IOW(VHOST_VIRTIO, 0x22, struct vhost_vring_file)
 #define VHOST_SET_VRING_BUSYLOOP_TIMEOUT _IOW(VHOST_VIRTIO, 0x23, struct vhost_vring_state)
 #define VHOST_GET_VRING_BUSYLOOP_TIMEOUT _IOW(VHOST_VIRTIO, 0x24, struct vhost_vring_state)
-#define VHOST_BACKEND_F_IOTLB_MSG_V2 0x1
-#define VHOST_BACKEND_F_IOTLB_BATCH 0x2
 #define VHOST_SET_BACKEND_FEATURES _IOW(VHOST_VIRTIO, 0x25, __u64)
 #define VHOST_GET_BACKEND_FEATURES _IOR(VHOST_VIRTIO, 0x26, __u64)
 #define VHOST_NET_SET_BACKEND _IOW(VHOST_VIRTIO, 0x30, struct vhost_vring_file)
@@ -64,4 +62,11 @@
 #define VHOST_VDPA_GET_VRING_NUM _IOR(VHOST_VIRTIO, 0x76, __u16)
 #define VHOST_VDPA_SET_CONFIG_CALL _IOW(VHOST_VIRTIO, 0x77, int)
 #define VHOST_VDPA_GET_IOVA_RANGE _IOR(VHOST_VIRTIO, 0x78, struct vhost_vdpa_iova_range)
+#define VHOST_VDPA_GET_CONFIG_SIZE _IOR(VHOST_VIRTIO, 0x79, __u32)
+#define VHOST_VDPA_GET_VQS_COUNT _IOR(VHOST_VIRTIO, 0x80, __u32)
+#define VHOST_VDPA_GET_GROUP_NUM _IOR(VHOST_VIRTIO, 0x81, __u32)
+#define VHOST_VDPA_GET_AS_NUM _IOR(VHOST_VIRTIO, 0x7A, unsigned int)
+#define VHOST_VDPA_GET_VRING_GROUP _IOWR(VHOST_VIRTIO, 0x7B, struct vhost_vring_state)
+#define VHOST_VDPA_SET_GROUP_ASID _IOW(VHOST_VIRTIO, 0x7C, struct vhost_vring_state)
+#define VHOST_VDPA_SUSPEND _IO(VHOST_VIRTIO, 0x7D)
 #endif
diff --git a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/vhost_types.h b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/vhost_types.h
index 6b4cc77..32efa85 100644
--- a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/vhost_types.h
+++ b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/vhost_types.h
@@ -66,7 +66,7 @@
 };
 struct vhost_msg_v2 {
   __u32 type;
-  __u32 reserved;
+  __u32 asid;
   union {
     struct vhost_iotlb_msg iotlb;
     __u8 padding[64];
@@ -82,7 +82,7 @@
 struct vhost_memory {
   __u32 nregions;
   __u32 padding;
-  struct vhost_memory_region regions[0];
+  struct vhost_memory_region regions[];
 };
 #define VHOST_SCSI_ABI_VERSION 1
 struct vhost_scsi_target {
@@ -94,7 +94,7 @@
 struct vhost_vdpa_config {
   __u32 off;
   __u32 len;
-  __u8 buf[0];
+  __u8 buf[];
 };
 struct vhost_vdpa_iova_range {
   __u64 first;
@@ -102,4 +102,8 @@
 };
 #define VHOST_F_LOG_ALL 26
 #define VHOST_NET_F_VIRTIO_NET_HDR 27
+#define VHOST_BACKEND_F_IOTLB_MSG_V2 0x1
+#define VHOST_BACKEND_F_IOTLB_BATCH 0x2
+#define VHOST_BACKEND_F_IOTLB_ASID 0x3
+#define VHOST_BACKEND_F_SUSPEND 0x4
 #endif
diff --git a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/videodev2.h b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/videodev2.h
index 1cae711..3d8dd72 100644
--- a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/videodev2.h
+++ b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/videodev2.h
@@ -24,7 +24,7 @@
 #include <linux/types.h>
 #include <linux/v4l2-common.h>
 #include <linux/v4l2-controls.h>
-#define VIDEO_MAX_FRAME 32
+#define VIDEO_MAX_FRAME 64
 #define VIDEO_MAX_PLANES 8
 #define v4l2_fourcc(a,b,c,d) ((__u32) (a) | ((__u32) (b) << 8) | ((__u32) (c) << 16) | ((__u32) (d) << 24))
 #define v4l2_fourcc_be(a,b,c,d) (v4l2_fourcc(a, b, c, d) | (1U << 31))
@@ -185,7 +185,6 @@
 #define V4L2_CAP_SDR_OUTPUT 0x00400000
 #define V4L2_CAP_META_CAPTURE 0x00800000
 #define V4L2_CAP_READWRITE 0x01000000
-#define V4L2_CAP_ASYNCIO 0x02000000
 #define V4L2_CAP_STREAMING 0x04000000
 #define V4L2_CAP_META_OUTPUT 0x08000000
 #define V4L2_CAP_TOUCH 0x10000000
@@ -255,6 +254,7 @@
 #define V4L2_PIX_FMT_Y16_BE v4l2_fourcc_be('Y', '1', '6', ' ')
 #define V4L2_PIX_FMT_Y10BPACK v4l2_fourcc('Y', '1', '0', 'B')
 #define V4L2_PIX_FMT_Y10P v4l2_fourcc('Y', '1', '0', 'P')
+#define V4L2_PIX_FMT_IPU3_Y10 v4l2_fourcc('i', 'p', '3', 'y')
 #define V4L2_PIX_FMT_PAL8 v4l2_fourcc('P', 'A', 'L', '8')
 #define V4L2_PIX_FMT_UV8 v4l2_fourcc('U', 'V', '8', ' ')
 #define V4L2_PIX_FMT_YUYV v4l2_fourcc('Y', 'U', 'Y', 'V')
@@ -272,6 +272,8 @@
 #define V4L2_PIX_FMT_XYUV32 v4l2_fourcc('X', 'Y', 'U', 'V')
 #define V4L2_PIX_FMT_VUYA32 v4l2_fourcc('V', 'U', 'Y', 'A')
 #define V4L2_PIX_FMT_VUYX32 v4l2_fourcc('V', 'U', 'Y', 'X')
+#define V4L2_PIX_FMT_YUVA32 v4l2_fourcc('Y', 'U', 'V', 'A')
+#define V4L2_PIX_FMT_YUVX32 v4l2_fourcc('Y', 'U', 'V', 'X')
 #define V4L2_PIX_FMT_M420 v4l2_fourcc('M', '4', '2', '0')
 #define V4L2_PIX_FMT_NV12 v4l2_fourcc('N', 'V', '1', '2')
 #define V4L2_PIX_FMT_NV21 v4l2_fourcc('N', 'V', '2', '1')
@@ -279,6 +281,7 @@
 #define V4L2_PIX_FMT_NV61 v4l2_fourcc('N', 'V', '6', '1')
 #define V4L2_PIX_FMT_NV24 v4l2_fourcc('N', 'V', '2', '4')
 #define V4L2_PIX_FMT_NV42 v4l2_fourcc('N', 'V', '4', '2')
+#define V4L2_PIX_FMT_P010 v4l2_fourcc('P', '0', '1', '0')
 #define V4L2_PIX_FMT_NV12M v4l2_fourcc('N', 'M', '1', '2')
 #define V4L2_PIX_FMT_NV21M v4l2_fourcc('N', 'M', '2', '1')
 #define V4L2_PIX_FMT_NV16M v4l2_fourcc('N', 'M', '1', '6')
@@ -298,8 +301,11 @@
 #define V4L2_PIX_FMT_NV12_4L4 v4l2_fourcc('V', 'T', '1', '2')
 #define V4L2_PIX_FMT_NV12_16L16 v4l2_fourcc('H', 'M', '1', '2')
 #define V4L2_PIX_FMT_NV12_32L32 v4l2_fourcc('S', 'T', '1', '2')
+#define V4L2_PIX_FMT_P010_4L4 v4l2_fourcc('T', '0', '1', '0')
 #define V4L2_PIX_FMT_NV12MT v4l2_fourcc('T', 'M', '1', '2')
 #define V4L2_PIX_FMT_NV12MT_16X16 v4l2_fourcc('V', 'M', '1', '2')
+#define V4L2_PIX_FMT_NV12M_8L128 v4l2_fourcc('N', 'A', '1', '2')
+#define V4L2_PIX_FMT_NV12M_10BE_8L128 v4l2_fourcc_be('N', 'T', '1', '2')
 #define V4L2_PIX_FMT_SBGGR8 v4l2_fourcc('B', 'A', '8', '1')
 #define V4L2_PIX_FMT_SGBRG8 v4l2_fourcc('G', 'B', 'R', 'G')
 #define V4L2_PIX_FMT_SGRBG8 v4l2_fourcc('G', 'R', 'B', 'G')
@@ -365,6 +371,7 @@
 #define V4L2_PIX_FMT_FWHT v4l2_fourcc('F', 'W', 'H', 'T')
 #define V4L2_PIX_FMT_FWHT_STATELESS v4l2_fourcc('S', 'F', 'W', 'H')
 #define V4L2_PIX_FMT_H264_SLICE v4l2_fourcc('S', '2', '6', '4')
+#define V4L2_PIX_FMT_HEVC_SLICE v4l2_fourcc('S', '2', '6', '5')
 #define V4L2_PIX_FMT_CPIA1 v4l2_fourcc('C', 'P', 'I', 'A')
 #define V4L2_PIX_FMT_WNVA v4l2_fourcc('W', 'N', 'V', 'A')
 #define V4L2_PIX_FMT_SN9C10X v4l2_fourcc('S', '9', '1', '0')
@@ -399,6 +406,8 @@
 #define V4L2_PIX_FMT_INZI v4l2_fourcc('I', 'N', 'Z', 'I')
 #define V4L2_PIX_FMT_CNF4 v4l2_fourcc('C', 'N', 'F', '4')
 #define V4L2_PIX_FMT_HI240 v4l2_fourcc('H', 'I', '2', '4')
+#define V4L2_PIX_FMT_QC08C v4l2_fourcc('Q', '0', '8', 'C')
+#define V4L2_PIX_FMT_QC10C v4l2_fourcc('Q', '1', '0', 'C')
 #define V4L2_PIX_FMT_IPU3_SBGGR10 v4l2_fourcc('i', 'p', '3', 'b')
 #define V4L2_PIX_FMT_IPU3_SGBRG10 v4l2_fourcc('i', 'p', '3', 'g')
 #define V4L2_PIX_FMT_IPU3_SGRBG10 v4l2_fourcc('i', 'p', '3', 'G')
@@ -782,7 +791,7 @@
 #define V4L2_DV_FL_CAN_DETECT_REDUCED_FPS (1 << 9)
 #define V4L2_DV_BT_BLANKING_WIDTH(bt) ((bt)->hfrontporch + (bt)->hsync + (bt)->hbackporch)
 #define V4L2_DV_BT_FRAME_WIDTH(bt) ((bt)->width + V4L2_DV_BT_BLANKING_WIDTH(bt))
-#define V4L2_DV_BT_BLANKING_HEIGHT(bt) ((bt)->vfrontporch + (bt)->vsync + (bt)->vbackporch + (bt)->il_vfrontporch + (bt)->il_vsync + (bt)->il_vbackporch)
+#define V4L2_DV_BT_BLANKING_HEIGHT(bt) ((bt)->vfrontporch + (bt)->vsync + (bt)->vbackporch + ((bt)->interlaced ? ((bt)->il_vfrontporch + (bt)->il_vsync + (bt)->il_vbackporch) : 0))
 #define V4L2_DV_BT_FRAME_HEIGHT(bt) ((bt)->height + V4L2_DV_BT_BLANKING_HEIGHT(bt))
 struct v4l2_dv_timings {
   __u32 type;
@@ -901,6 +910,11 @@
     struct v4l2_ctrl_mpeg2_quantisation __user * p_mpeg2_quantisation;
     struct v4l2_ctrl_vp9_compressed_hdr __user * p_vp9_compressed_hdr_probs;
     struct v4l2_ctrl_vp9_frame __user * p_vp9_frame;
+    struct v4l2_ctrl_hevc_sps __user * p_hevc_sps;
+    struct v4l2_ctrl_hevc_pps __user * p_hevc_pps;
+    struct v4l2_ctrl_hevc_slice_params __user * p_hevc_slice_params;
+    struct v4l2_ctrl_hevc_scaling_matrix __user * p_hevc_scaling_matrix;
+    struct v4l2_ctrl_hevc_decode_params __user * p_hevc_decode_params;
     void __user * ptr;
   };
 } __attribute__((packed));
@@ -953,6 +967,11 @@
   V4L2_CTRL_TYPE_MPEG2_PICTURE = 0x0252,
   V4L2_CTRL_TYPE_VP9_COMPRESSED_HDR = 0x0260,
   V4L2_CTRL_TYPE_VP9_FRAME = 0x0261,
+  V4L2_CTRL_TYPE_HEVC_SPS = 0x0270,
+  V4L2_CTRL_TYPE_HEVC_PPS = 0x0271,
+  V4L2_CTRL_TYPE_HEVC_SLICE_PARAMS = 0x0272,
+  V4L2_CTRL_TYPE_HEVC_SCALING_MATRIX = 0x0273,
+  V4L2_CTRL_TYPE_HEVC_DECODE_PARAMS = 0x0274,
 };
 struct v4l2_queryctrl {
   __u32 id;
@@ -1000,6 +1019,7 @@
 #define V4L2_CTRL_FLAG_HAS_PAYLOAD 0x0100
 #define V4L2_CTRL_FLAG_EXECUTE_ON_WRITE 0x0200
 #define V4L2_CTRL_FLAG_MODIFY_LAYOUT 0x0400
+#define V4L2_CTRL_FLAG_DYNAMIC_ARRAY 0x0800
 #define V4L2_CTRL_FLAG_NEXT_CTRL 0x80000000
 #define V4L2_CTRL_FLAG_NEXT_COMPOUND 0x40000000
 #define V4L2_CID_MAX_CTRLS 1024
@@ -1303,6 +1323,7 @@
 #define V4L2_EVENT_CTRL_CH_VALUE (1 << 0)
 #define V4L2_EVENT_CTRL_CH_FLAGS (1 << 1)
 #define V4L2_EVENT_CTRL_CH_RANGE (1 << 2)
+#define V4L2_EVENT_CTRL_CH_DIMENSIONS (1 << 3)
 struct v4l2_event_ctrl {
   __u32 changes;
   __u32 type;
@@ -1474,4 +1495,5 @@
 #define BASE_VIDIOC_PRIVATE 192
 #define V4L2_PIX_FMT_HM12 V4L2_PIX_FMT_NV12_16L16
 #define V4L2_PIX_FMT_SUNXI_TILED_NV12 V4L2_PIX_FMT_NV12_32L32
+#define V4L2_CAP_ASYNCIO 0x02000000
 #endif
diff --git a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/virtio_9p.h b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/virtio_9p.h
index 1d9dfb1..2e05786 100644
--- a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/virtio_9p.h
+++ b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/virtio_9p.h
@@ -24,6 +24,6 @@
 #define VIRTIO_9P_MOUNT_TAG 0
 struct virtio_9p_config {
   __virtio16 tag_len;
-  __u8 tag[0];
+  __u8 tag[];
 } __attribute__((packed));
 #endif
diff --git a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/virtio_blk.h b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/virtio_blk.h
index f2f0381..0dd08c5 100644
--- a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/virtio_blk.h
+++ b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/virtio_blk.h
@@ -31,6 +31,7 @@
 #define VIRTIO_BLK_F_MQ 12
 #define VIRTIO_BLK_F_DISCARD 13
 #define VIRTIO_BLK_F_WRITE_ZEROES 14
+#define VIRTIO_BLK_F_SECURE_ERASE 16
 #ifndef VIRTIO_BLK_NO_LEGACY
 #define VIRTIO_BLK_F_BARRIER 0
 #define VIRTIO_BLK_F_SCSI 7
@@ -63,6 +64,9 @@
   __virtio32 max_write_zeroes_seg;
   __u8 write_zeroes_may_unmap;
   __u8 unused1[3];
+  __virtio32 max_secure_erase_sectors;
+  __virtio32 max_secure_erase_seg;
+  __virtio32 secure_erase_sector_alignment;
 } __attribute__((packed));
 #define VIRTIO_BLK_T_IN 0
 #define VIRTIO_BLK_T_OUT 1
@@ -73,6 +77,7 @@
 #define VIRTIO_BLK_T_GET_ID 8
 #define VIRTIO_BLK_T_DISCARD 11
 #define VIRTIO_BLK_T_WRITE_ZEROES 13
+#define VIRTIO_BLK_T_SECURE_ERASE 14
 #ifndef VIRTIO_BLK_NO_LEGACY
 #define VIRTIO_BLK_T_BARRIER 0x80000000
 #endif
diff --git a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/virtio_config.h b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/virtio_config.h
index 6198fd1..bdd2e73 100644
--- a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/virtio_config.h
+++ b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/virtio_config.h
@@ -26,7 +26,7 @@
 #define VIRTIO_CONFIG_S_NEEDS_RESET 0x40
 #define VIRTIO_CONFIG_S_FAILED 0x80
 #define VIRTIO_TRANSPORT_F_START 28
-#define VIRTIO_TRANSPORT_F_END 38
+#define VIRTIO_TRANSPORT_F_END 41
 #ifndef VIRTIO_CONFIG_NO_LEGACY
 #define VIRTIO_F_NOTIFY_ON_EMPTY 24
 #define VIRTIO_F_ANY_LAYOUT 27
@@ -35,6 +35,8 @@
 #define VIRTIO_F_ACCESS_PLATFORM 33
 #define VIRTIO_F_IOMMU_PLATFORM VIRTIO_F_ACCESS_PLATFORM
 #define VIRTIO_F_RING_PACKED 34
+#define VIRTIO_F_IN_ORDER 35
 #define VIRTIO_F_ORDER_PLATFORM 36
 #define VIRTIO_F_SR_IOV 37
+#define VIRTIO_F_RING_RESET 40
 #endif
diff --git a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/virtio_crypto.h b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/virtio_crypto.h
index 2ce760f..7d7561d 100644
--- a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/virtio_crypto.h
+++ b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/virtio_crypto.h
@@ -26,6 +26,7 @@
 #define VIRTIO_CRYPTO_SERVICE_HASH 1
 #define VIRTIO_CRYPTO_SERVICE_MAC 2
 #define VIRTIO_CRYPTO_SERVICE_AEAD 3
+#define VIRTIO_CRYPTO_SERVICE_AKCIPHER 4
 #define VIRTIO_CRYPTO_OPCODE(service,op) (((service) << 8) | (op))
 struct virtio_crypto_ctrl_header {
 #define VIRTIO_CRYPTO_CIPHER_CREATE_SESSION VIRTIO_CRYPTO_OPCODE(VIRTIO_CRYPTO_SERVICE_CIPHER, 0x02)
@@ -36,6 +37,8 @@
 #define VIRTIO_CRYPTO_MAC_DESTROY_SESSION VIRTIO_CRYPTO_OPCODE(VIRTIO_CRYPTO_SERVICE_MAC, 0x03)
 #define VIRTIO_CRYPTO_AEAD_CREATE_SESSION VIRTIO_CRYPTO_OPCODE(VIRTIO_CRYPTO_SERVICE_AEAD, 0x02)
 #define VIRTIO_CRYPTO_AEAD_DESTROY_SESSION VIRTIO_CRYPTO_OPCODE(VIRTIO_CRYPTO_SERVICE_AEAD, 0x03)
+#define VIRTIO_CRYPTO_AKCIPHER_CREATE_SESSION VIRTIO_CRYPTO_OPCODE(VIRTIO_CRYPTO_SERVICE_AKCIPHER, 0x04)
+#define VIRTIO_CRYPTO_AKCIPHER_DESTROY_SESSION VIRTIO_CRYPTO_OPCODE(VIRTIO_CRYPTO_SERVICE_AKCIPHER, 0x05)
   __le32 opcode;
   __le32 algo;
   __le32 flag;
@@ -137,6 +140,51 @@
   struct virtio_crypto_aead_session_para para;
   __u8 padding[32];
 };
+struct virtio_crypto_rsa_session_para {
+#define VIRTIO_CRYPTO_RSA_RAW_PADDING 0
+#define VIRTIO_CRYPTO_RSA_PKCS1_PADDING 1
+  __le32 padding_algo;
+#define VIRTIO_CRYPTO_RSA_NO_HASH 0
+#define VIRTIO_CRYPTO_RSA_MD2 1
+#define VIRTIO_CRYPTO_RSA_MD3 2
+#define VIRTIO_CRYPTO_RSA_MD4 3
+#define VIRTIO_CRYPTO_RSA_MD5 4
+#define VIRTIO_CRYPTO_RSA_SHA1 5
+#define VIRTIO_CRYPTO_RSA_SHA256 6
+#define VIRTIO_CRYPTO_RSA_SHA384 7
+#define VIRTIO_CRYPTO_RSA_SHA512 8
+#define VIRTIO_CRYPTO_RSA_SHA224 9
+  __le32 hash_algo;
+};
+struct virtio_crypto_ecdsa_session_para {
+#define VIRTIO_CRYPTO_CURVE_UNKNOWN 0
+#define VIRTIO_CRYPTO_CURVE_NIST_P192 1
+#define VIRTIO_CRYPTO_CURVE_NIST_P224 2
+#define VIRTIO_CRYPTO_CURVE_NIST_P256 3
+#define VIRTIO_CRYPTO_CURVE_NIST_P384 4
+#define VIRTIO_CRYPTO_CURVE_NIST_P521 5
+  __le32 curve_id;
+  __le32 padding;
+};
+struct virtio_crypto_akcipher_session_para {
+#define VIRTIO_CRYPTO_NO_AKCIPHER 0
+#define VIRTIO_CRYPTO_AKCIPHER_RSA 1
+#define VIRTIO_CRYPTO_AKCIPHER_DSA 2
+#define VIRTIO_CRYPTO_AKCIPHER_ECDSA 3
+  __le32 algo;
+#define VIRTIO_CRYPTO_AKCIPHER_KEY_TYPE_PUBLIC 1
+#define VIRTIO_CRYPTO_AKCIPHER_KEY_TYPE_PRIVATE 2
+  __le32 keytype;
+  __le32 keylen;
+  union {
+    struct virtio_crypto_rsa_session_para rsa;
+    struct virtio_crypto_ecdsa_session_para ecdsa;
+  } u;
+};
+struct virtio_crypto_akcipher_create_session_req {
+  struct virtio_crypto_akcipher_session_para para;
+  __u8 padding[36];
+};
 struct virtio_crypto_alg_chain_session_para {
 #define VIRTIO_CRYPTO_SYM_ALG_CHAIN_ORDER_HASH_THEN_CIPHER 1
 #define VIRTIO_CRYPTO_SYM_ALG_CHAIN_ORDER_CIPHER_THEN_HASH 2
@@ -180,6 +228,7 @@
     struct virtio_crypto_hash_create_session_req hash_create_session;
     struct virtio_crypto_mac_create_session_req mac_create_session;
     struct virtio_crypto_aead_create_session_req aead_create_session;
+    struct virtio_crypto_akcipher_create_session_req akcipher_create_session;
     struct virtio_crypto_destroy_session_req destroy_session;
     __u8 padding[56];
   } u;
@@ -191,6 +240,10 @@
 #define VIRTIO_CRYPTO_MAC VIRTIO_CRYPTO_OPCODE(VIRTIO_CRYPTO_SERVICE_MAC, 0x00)
 #define VIRTIO_CRYPTO_AEAD_ENCRYPT VIRTIO_CRYPTO_OPCODE(VIRTIO_CRYPTO_SERVICE_AEAD, 0x00)
 #define VIRTIO_CRYPTO_AEAD_DECRYPT VIRTIO_CRYPTO_OPCODE(VIRTIO_CRYPTO_SERVICE_AEAD, 0x01)
+#define VIRTIO_CRYPTO_AKCIPHER_ENCRYPT VIRTIO_CRYPTO_OPCODE(VIRTIO_CRYPTO_SERVICE_AKCIPHER, 0x00)
+#define VIRTIO_CRYPTO_AKCIPHER_DECRYPT VIRTIO_CRYPTO_OPCODE(VIRTIO_CRYPTO_SERVICE_AKCIPHER, 0x01)
+#define VIRTIO_CRYPTO_AKCIPHER_SIGN VIRTIO_CRYPTO_OPCODE(VIRTIO_CRYPTO_SERVICE_AKCIPHER, 0x02)
+#define VIRTIO_CRYPTO_AKCIPHER_VERIFY VIRTIO_CRYPTO_OPCODE(VIRTIO_CRYPTO_SERVICE_AKCIPHER, 0x03)
   __le32 opcode;
   __le32 algo;
   __le64 session_id;
@@ -256,6 +309,14 @@
   struct virtio_crypto_aead_para para;
   __u8 padding[32];
 };
+struct virtio_crypto_akcipher_para {
+  __le32 src_data_len;
+  __le32 dst_data_len;
+};
+struct virtio_crypto_akcipher_data_req {
+  struct virtio_crypto_akcipher_para para;
+  __u8 padding[40];
+};
 struct virtio_crypto_op_data_req {
   struct virtio_crypto_op_header header;
   union {
@@ -263,6 +324,7 @@
     struct virtio_crypto_hash_data_req hash_req;
     struct virtio_crypto_mac_data_req mac_req;
     struct virtio_crypto_aead_data_req aead_req;
+    struct virtio_crypto_akcipher_data_req akcipher_req;
     __u8 padding[48];
   } u;
 };
@@ -271,6 +333,8 @@
 #define VIRTIO_CRYPTO_BADMSG 2
 #define VIRTIO_CRYPTO_NOTSUPP 3
 #define VIRTIO_CRYPTO_INVSESS 4
+#define VIRTIO_CRYPTO_NOSPC 5
+#define VIRTIO_CRYPTO_KEY_REJECTED 6
 #define VIRTIO_CRYPTO_S_HW_READY (1 << 0)
 struct virtio_crypto_config {
   __le32 status;
@@ -284,7 +348,7 @@
   __le32 aead_algo;
   __le32 max_cipher_key_len;
   __le32 max_auth_key_len;
-  __le32 reserve;
+  __le32 akcipher_algo;
   __le64 max_size;
 };
 struct virtio_crypto_inhdr {
diff --git a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/virtio_ids.h b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/virtio_ids.h
index 2894700..b31ed93 100644
--- a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/virtio_ids.h
+++ b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/virtio_ids.h
@@ -57,11 +57,11 @@
 #define VIRTIO_ID_AUDIO_POLICY 39
 #define VIRTIO_ID_BT 40
 #define VIRTIO_ID_GPIO 41
-#define VIRTIO_TRANS_ID_NET 1000
-#define VIRTIO_TRANS_ID_BLOCK 1001
-#define VIRTIO_TRANS_ID_BALLOON 1002
-#define VIRTIO_TRANS_ID_CONSOLE 1003
-#define VIRTIO_TRANS_ID_SCSI 1004
-#define VIRTIO_TRANS_ID_RNG 1005
-#define VIRTIO_TRANS_ID_9P 1009
+#define VIRTIO_TRANS_ID_NET 0x1000
+#define VIRTIO_TRANS_ID_BLOCK 0x1001
+#define VIRTIO_TRANS_ID_BALLOON 0x1002
+#define VIRTIO_TRANS_ID_CONSOLE 0x1003
+#define VIRTIO_TRANS_ID_SCSI 0x1004
+#define VIRTIO_TRANS_ID_RNG 0x1005
+#define VIRTIO_TRANS_ID_9P 0x1009
 #endif
diff --git a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/virtio_net.h b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/virtio_net.h
index 2d92904..6fe90aa 100644
--- a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/virtio_net.h
+++ b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/virtio_net.h
@@ -45,6 +45,7 @@
 #define VIRTIO_NET_F_GUEST_ANNOUNCE 21
 #define VIRTIO_NET_F_MQ 22
 #define VIRTIO_NET_F_CTRL_MAC_ADDR 23
+#define VIRTIO_NET_F_NOTF_COAL 53
 #define VIRTIO_NET_F_HASH_REPORT 57
 #define VIRTIO_NET_F_RSS 60
 #define VIRTIO_NET_F_RSC_EXT 61
@@ -186,4 +187,15 @@
 #define VIRTIO_NET_CTRL_MQ_HASH_CONFIG 2
 #define VIRTIO_NET_CTRL_GUEST_OFFLOADS 5
 #define VIRTIO_NET_CTRL_GUEST_OFFLOADS_SET 0
+#define VIRTIO_NET_CTRL_NOTF_COAL 6
+struct virtio_net_ctrl_coal_tx {
+  __le32 tx_max_packets;
+  __le32 tx_usecs;
+};
+#define VIRTIO_NET_CTRL_NOTF_COAL_TX_SET 0
+struct virtio_net_ctrl_coal_rx {
+  __le32 rx_max_packets;
+  __le32 rx_usecs;
+};
+#define VIRTIO_NET_CTRL_NOTF_COAL_RX_SET 1
 #endif
diff --git a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/virtio_pci.h b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/virtio_pci.h
index e6d2731..94ca0a2 100644
--- a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/virtio_pci.h
+++ b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/virtio_pci.h
@@ -117,5 +117,7 @@
 #define VIRTIO_PCI_COMMON_Q_AVAILHI 44
 #define VIRTIO_PCI_COMMON_Q_USEDLO 48
 #define VIRTIO_PCI_COMMON_Q_USEDHI 52
+#define VIRTIO_PCI_COMMON_Q_NDATA 56
+#define VIRTIO_PCI_COMMON_Q_RESET 58
 #endif
 #endif
diff --git a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/wmi.h b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/wmi.h
index 26f54d9..7b72056 100644
--- a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/wmi.h
+++ b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/wmi.h
@@ -30,17 +30,17 @@
   __u16 cmd_select;
   volatile __u32 input[4];
   volatile __u32 output[4];
-} __packed;
+} __attribute__((__packed__));
 struct dell_wmi_extensions {
   __u32 argattrib;
   __u32 blength;
   __u8 data[];
-} __packed;
+} __attribute__((__packed__));
 struct dell_wmi_smbios_buffer {
   __u64 length;
   struct calling_interface_buffer std;
   struct dell_wmi_extensions ext;
-} __packed;
+} __attribute__((__packed__));
 #define CLASS_TOKEN_READ 0
 #define CLASS_TOKEN_WRITE 1
 #define SELECT_TOKEN_STD 0
diff --git a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/xfrm.h b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/xfrm.h
index f4df95f..77ded42 100644
--- a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/xfrm.h
+++ b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/xfrm.h
@@ -35,7 +35,7 @@
   __u8 ctx_alg;
   __u16 ctx_len;
   __u32 ctx_sid;
-  char ctx_str[0];
+  char ctx_str[];
 };
 #define XFRM_SC_DOI_RESERVED 0
 #define XFRM_SC_DOI_LSM 1
@@ -85,24 +85,24 @@
   __u32 oseq_hi;
   __u32 seq_hi;
   __u32 replay_window;
-  __u32 bmp[0];
+  __u32 bmp[];
 };
 struct xfrm_algo {
   char alg_name[64];
   unsigned int alg_key_len;
-  char alg_key[0];
+  char alg_key[];
 };
 struct xfrm_algo_auth {
   char alg_name[64];
   unsigned int alg_key_len;
   unsigned int alg_trunc_len;
-  char alg_key[0];
+  char alg_key[];
 };
 struct xfrm_algo_aead {
   char alg_name[64];
   unsigned int alg_key_len;
   unsigned int alg_icv_len;
-  char alg_key[0];
+  char alg_key[];
 };
 struct xfrm_stats {
   __u32 replay_window;
diff --git a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/zorro.h b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/zorro.h
index f8e47a1..86320aa 100644
--- a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/zorro.h
+++ b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/linux/zorro.h
@@ -42,7 +42,7 @@
   __u8 ln_Type;
   __s8 ln_Pri;
   __be32 ln_Name;
-} __packed;
+} __attribute__((__packed__));
 struct ExpansionRom {
   __u8 er_Type;
   __u8 er_Product;
@@ -55,7 +55,7 @@
   __u8 er_Reserved0d;
   __u8 er_Reserved0e;
   __u8 er_Reserved0f;
-} __packed;
+} __attribute__((__packed__));
 #define ERT_TYPEMASK 0xc0
 #define ERT_ZORROII 0xc0
 #define ERT_ZORROIII 0x80
@@ -73,6 +73,6 @@
   __be32 cd_Driver;
   __be32 cd_NextCD;
   __be32 cd_Unused[4];
-} __packed;
+} __attribute__((__packed__));
 #define ZORRO_NUM_AUTO 16
 #endif
diff --git a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/misc/fastrpc.h b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/misc/fastrpc.h
index 62955ec..e82b961 100644
--- a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/misc/fastrpc.h
+++ b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/misc/fastrpc.h
@@ -27,11 +27,32 @@
 #define FASTRPC_IOCTL_MMAP _IOWR('R', 6, struct fastrpc_req_mmap)
 #define FASTRPC_IOCTL_MUNMAP _IOWR('R', 7, struct fastrpc_req_munmap)
 #define FASTRPC_IOCTL_INIT_ATTACH_SNS _IO('R', 8)
+#define FASTRPC_IOCTL_MEM_MAP _IOWR('R', 10, struct fastrpc_mem_map)
+#define FASTRPC_IOCTL_MEM_UNMAP _IOWR('R', 11, struct fastrpc_mem_unmap)
+#define FASTRPC_IOCTL_GET_DSP_INFO _IOWR('R', 13, struct fastrpc_ioctl_capability)
+enum fastrpc_map_flags {
+  FASTRPC_MAP_STATIC = 0,
+  FASTRPC_MAP_RESERVED,
+  FASTRPC_MAP_FD = 2,
+  FASTRPC_MAP_FD_DELAYED,
+  FASTRPC_MAP_FD_NOMAP = 16,
+  FASTRPC_MAP_MAX,
+};
+enum fastrpc_proc_attr {
+  FASTRPC_MODE_DEBUG = (1 << 0),
+  FASTRPC_MODE_PTRACE = (1 << 1),
+  FASTRPC_MODE_CRC = (1 << 2),
+  FASTRPC_MODE_UNSIGNED_MODULE = (1 << 3),
+  FASTRPC_MODE_ADAPTIVE_QOS = (1 << 4),
+  FASTRPC_MODE_SYSTEM_PROCESS = (1 << 5),
+  FASTRPC_MODE_PRIVILEGED = (1 << 6),
+};
+#define FASTRPC_ATTR_SECUREMAP (1)
 struct fastrpc_invoke_args {
   __u64 ptr;
   __u64 length;
   __s32 fd;
-  __u32 reserved;
+  __u32 attr;
 };
 struct fastrpc_invoke {
   __u32 handle;
@@ -57,8 +78,32 @@
   __u64 size;
   __u64 vaddrout;
 };
+struct fastrpc_mem_map {
+  __s32 version;
+  __s32 fd;
+  __s32 offset;
+  __u32 flags;
+  __u64 vaddrin;
+  __u64 length;
+  __u64 vaddrout;
+  __s32 attrs;
+  __s32 reserved[4];
+};
 struct fastrpc_req_munmap {
   __u64 vaddrout;
   __u64 size;
 };
+struct fastrpc_mem_unmap {
+  __s32 vesion;
+  __s32 fd;
+  __u64 vaddr;
+  __u64 length;
+  __s32 reserved[5];
+};
+struct fastrpc_ioctl_capability {
+  __u32 domain;
+  __u32 attribute_id;
+  __u32 capability;
+  __u32 reserved[4];
+};
 #endif
diff --git a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/misc/habanalabs.h b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/misc/habanalabs.h
index 6e3439a..b6140bc 100644
--- a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/misc/habanalabs.h
+++ b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/misc/habanalabs.h
@@ -24,6 +24,7 @@
 #define GAUDI_DRIVER_SRAM_RESERVED_SIZE_FROM_START 0x80
 #define GAUDI_FIRST_AVAILABLE_W_S_SYNC_OBJECT 144
 #define GAUDI_FIRST_AVAILABLE_W_S_MONITOR 72
+#define TS_MAX_ELEMENTS_NUM (1 << 20)
 enum goya_queue_id {
   GOYA_QUEUE_ID_DMA_0 = 0,
   GOYA_QUEUE_ID_DMA_1 = 1,
@@ -158,6 +159,270 @@
   GAUDI_QUEUE_ID_NIC_9_3 = 112,
   GAUDI_QUEUE_ID_SIZE
 };
+enum gaudi2_queue_id {
+  GAUDI2_QUEUE_ID_PDMA_0_0 = 0,
+  GAUDI2_QUEUE_ID_PDMA_0_1 = 1,
+  GAUDI2_QUEUE_ID_PDMA_0_2 = 2,
+  GAUDI2_QUEUE_ID_PDMA_0_3 = 3,
+  GAUDI2_QUEUE_ID_PDMA_1_0 = 4,
+  GAUDI2_QUEUE_ID_PDMA_1_1 = 5,
+  GAUDI2_QUEUE_ID_PDMA_1_2 = 6,
+  GAUDI2_QUEUE_ID_PDMA_1_3 = 7,
+  GAUDI2_QUEUE_ID_DCORE0_EDMA_0_0 = 8,
+  GAUDI2_QUEUE_ID_DCORE0_EDMA_0_1 = 9,
+  GAUDI2_QUEUE_ID_DCORE0_EDMA_0_2 = 10,
+  GAUDI2_QUEUE_ID_DCORE0_EDMA_0_3 = 11,
+  GAUDI2_QUEUE_ID_DCORE0_EDMA_1_0 = 12,
+  GAUDI2_QUEUE_ID_DCORE0_EDMA_1_1 = 13,
+  GAUDI2_QUEUE_ID_DCORE0_EDMA_1_2 = 14,
+  GAUDI2_QUEUE_ID_DCORE0_EDMA_1_3 = 15,
+  GAUDI2_QUEUE_ID_DCORE0_MME_0_0 = 16,
+  GAUDI2_QUEUE_ID_DCORE0_MME_0_1 = 17,
+  GAUDI2_QUEUE_ID_DCORE0_MME_0_2 = 18,
+  GAUDI2_QUEUE_ID_DCORE0_MME_0_3 = 19,
+  GAUDI2_QUEUE_ID_DCORE0_TPC_0_0 = 20,
+  GAUDI2_QUEUE_ID_DCORE0_TPC_0_1 = 21,
+  GAUDI2_QUEUE_ID_DCORE0_TPC_0_2 = 22,
+  GAUDI2_QUEUE_ID_DCORE0_TPC_0_3 = 23,
+  GAUDI2_QUEUE_ID_DCORE0_TPC_1_0 = 24,
+  GAUDI2_QUEUE_ID_DCORE0_TPC_1_1 = 25,
+  GAUDI2_QUEUE_ID_DCORE0_TPC_1_2 = 26,
+  GAUDI2_QUEUE_ID_DCORE0_TPC_1_3 = 27,
+  GAUDI2_QUEUE_ID_DCORE0_TPC_2_0 = 28,
+  GAUDI2_QUEUE_ID_DCORE0_TPC_2_1 = 29,
+  GAUDI2_QUEUE_ID_DCORE0_TPC_2_2 = 30,
+  GAUDI2_QUEUE_ID_DCORE0_TPC_2_3 = 31,
+  GAUDI2_QUEUE_ID_DCORE0_TPC_3_0 = 32,
+  GAUDI2_QUEUE_ID_DCORE0_TPC_3_1 = 33,
+  GAUDI2_QUEUE_ID_DCORE0_TPC_3_2 = 34,
+  GAUDI2_QUEUE_ID_DCORE0_TPC_3_3 = 35,
+  GAUDI2_QUEUE_ID_DCORE0_TPC_4_0 = 36,
+  GAUDI2_QUEUE_ID_DCORE0_TPC_4_1 = 37,
+  GAUDI2_QUEUE_ID_DCORE0_TPC_4_2 = 38,
+  GAUDI2_QUEUE_ID_DCORE0_TPC_4_3 = 39,
+  GAUDI2_QUEUE_ID_DCORE0_TPC_5_0 = 40,
+  GAUDI2_QUEUE_ID_DCORE0_TPC_5_1 = 41,
+  GAUDI2_QUEUE_ID_DCORE0_TPC_5_2 = 42,
+  GAUDI2_QUEUE_ID_DCORE0_TPC_5_3 = 43,
+  GAUDI2_QUEUE_ID_DCORE0_TPC_6_0 = 44,
+  GAUDI2_QUEUE_ID_DCORE0_TPC_6_1 = 45,
+  GAUDI2_QUEUE_ID_DCORE0_TPC_6_2 = 46,
+  GAUDI2_QUEUE_ID_DCORE0_TPC_6_3 = 47,
+  GAUDI2_QUEUE_ID_DCORE1_EDMA_0_0 = 48,
+  GAUDI2_QUEUE_ID_DCORE1_EDMA_0_1 = 49,
+  GAUDI2_QUEUE_ID_DCORE1_EDMA_0_2 = 50,
+  GAUDI2_QUEUE_ID_DCORE1_EDMA_0_3 = 51,
+  GAUDI2_QUEUE_ID_DCORE1_EDMA_1_0 = 52,
+  GAUDI2_QUEUE_ID_DCORE1_EDMA_1_1 = 53,
+  GAUDI2_QUEUE_ID_DCORE1_EDMA_1_2 = 54,
+  GAUDI2_QUEUE_ID_DCORE1_EDMA_1_3 = 55,
+  GAUDI2_QUEUE_ID_DCORE1_MME_0_0 = 56,
+  GAUDI2_QUEUE_ID_DCORE1_MME_0_1 = 57,
+  GAUDI2_QUEUE_ID_DCORE1_MME_0_2 = 58,
+  GAUDI2_QUEUE_ID_DCORE1_MME_0_3 = 59,
+  GAUDI2_QUEUE_ID_DCORE1_TPC_0_0 = 60,
+  GAUDI2_QUEUE_ID_DCORE1_TPC_0_1 = 61,
+  GAUDI2_QUEUE_ID_DCORE1_TPC_0_2 = 62,
+  GAUDI2_QUEUE_ID_DCORE1_TPC_0_3 = 63,
+  GAUDI2_QUEUE_ID_DCORE1_TPC_1_0 = 64,
+  GAUDI2_QUEUE_ID_DCORE1_TPC_1_1 = 65,
+  GAUDI2_QUEUE_ID_DCORE1_TPC_1_2 = 66,
+  GAUDI2_QUEUE_ID_DCORE1_TPC_1_3 = 67,
+  GAUDI2_QUEUE_ID_DCORE1_TPC_2_0 = 68,
+  GAUDI2_QUEUE_ID_DCORE1_TPC_2_1 = 69,
+  GAUDI2_QUEUE_ID_DCORE1_TPC_2_2 = 70,
+  GAUDI2_QUEUE_ID_DCORE1_TPC_2_3 = 71,
+  GAUDI2_QUEUE_ID_DCORE1_TPC_3_0 = 72,
+  GAUDI2_QUEUE_ID_DCORE1_TPC_3_1 = 73,
+  GAUDI2_QUEUE_ID_DCORE1_TPC_3_2 = 74,
+  GAUDI2_QUEUE_ID_DCORE1_TPC_3_3 = 75,
+  GAUDI2_QUEUE_ID_DCORE1_TPC_4_0 = 76,
+  GAUDI2_QUEUE_ID_DCORE1_TPC_4_1 = 77,
+  GAUDI2_QUEUE_ID_DCORE1_TPC_4_2 = 78,
+  GAUDI2_QUEUE_ID_DCORE1_TPC_4_3 = 79,
+  GAUDI2_QUEUE_ID_DCORE1_TPC_5_0 = 80,
+  GAUDI2_QUEUE_ID_DCORE1_TPC_5_1 = 81,
+  GAUDI2_QUEUE_ID_DCORE1_TPC_5_2 = 82,
+  GAUDI2_QUEUE_ID_DCORE1_TPC_5_3 = 83,
+  GAUDI2_QUEUE_ID_DCORE2_EDMA_0_0 = 84,
+  GAUDI2_QUEUE_ID_DCORE2_EDMA_0_1 = 85,
+  GAUDI2_QUEUE_ID_DCORE2_EDMA_0_2 = 86,
+  GAUDI2_QUEUE_ID_DCORE2_EDMA_0_3 = 87,
+  GAUDI2_QUEUE_ID_DCORE2_EDMA_1_0 = 88,
+  GAUDI2_QUEUE_ID_DCORE2_EDMA_1_1 = 89,
+  GAUDI2_QUEUE_ID_DCORE2_EDMA_1_2 = 90,
+  GAUDI2_QUEUE_ID_DCORE2_EDMA_1_3 = 91,
+  GAUDI2_QUEUE_ID_DCORE2_MME_0_0 = 92,
+  GAUDI2_QUEUE_ID_DCORE2_MME_0_1 = 93,
+  GAUDI2_QUEUE_ID_DCORE2_MME_0_2 = 94,
+  GAUDI2_QUEUE_ID_DCORE2_MME_0_3 = 95,
+  GAUDI2_QUEUE_ID_DCORE2_TPC_0_0 = 96,
+  GAUDI2_QUEUE_ID_DCORE2_TPC_0_1 = 97,
+  GAUDI2_QUEUE_ID_DCORE2_TPC_0_2 = 98,
+  GAUDI2_QUEUE_ID_DCORE2_TPC_0_3 = 99,
+  GAUDI2_QUEUE_ID_DCORE2_TPC_1_0 = 100,
+  GAUDI2_QUEUE_ID_DCORE2_TPC_1_1 = 101,
+  GAUDI2_QUEUE_ID_DCORE2_TPC_1_2 = 102,
+  GAUDI2_QUEUE_ID_DCORE2_TPC_1_3 = 103,
+  GAUDI2_QUEUE_ID_DCORE2_TPC_2_0 = 104,
+  GAUDI2_QUEUE_ID_DCORE2_TPC_2_1 = 105,
+  GAUDI2_QUEUE_ID_DCORE2_TPC_2_2 = 106,
+  GAUDI2_QUEUE_ID_DCORE2_TPC_2_3 = 107,
+  GAUDI2_QUEUE_ID_DCORE2_TPC_3_0 = 108,
+  GAUDI2_QUEUE_ID_DCORE2_TPC_3_1 = 109,
+  GAUDI2_QUEUE_ID_DCORE2_TPC_3_2 = 110,
+  GAUDI2_QUEUE_ID_DCORE2_TPC_3_3 = 111,
+  GAUDI2_QUEUE_ID_DCORE2_TPC_4_0 = 112,
+  GAUDI2_QUEUE_ID_DCORE2_TPC_4_1 = 113,
+  GAUDI2_QUEUE_ID_DCORE2_TPC_4_2 = 114,
+  GAUDI2_QUEUE_ID_DCORE2_TPC_4_3 = 115,
+  GAUDI2_QUEUE_ID_DCORE2_TPC_5_0 = 116,
+  GAUDI2_QUEUE_ID_DCORE2_TPC_5_1 = 117,
+  GAUDI2_QUEUE_ID_DCORE2_TPC_5_2 = 118,
+  GAUDI2_QUEUE_ID_DCORE2_TPC_5_3 = 119,
+  GAUDI2_QUEUE_ID_DCORE3_EDMA_0_0 = 120,
+  GAUDI2_QUEUE_ID_DCORE3_EDMA_0_1 = 121,
+  GAUDI2_QUEUE_ID_DCORE3_EDMA_0_2 = 122,
+  GAUDI2_QUEUE_ID_DCORE3_EDMA_0_3 = 123,
+  GAUDI2_QUEUE_ID_DCORE3_EDMA_1_0 = 124,
+  GAUDI2_QUEUE_ID_DCORE3_EDMA_1_1 = 125,
+  GAUDI2_QUEUE_ID_DCORE3_EDMA_1_2 = 126,
+  GAUDI2_QUEUE_ID_DCORE3_EDMA_1_3 = 127,
+  GAUDI2_QUEUE_ID_DCORE3_MME_0_0 = 128,
+  GAUDI2_QUEUE_ID_DCORE3_MME_0_1 = 129,
+  GAUDI2_QUEUE_ID_DCORE3_MME_0_2 = 130,
+  GAUDI2_QUEUE_ID_DCORE3_MME_0_3 = 131,
+  GAUDI2_QUEUE_ID_DCORE3_TPC_0_0 = 132,
+  GAUDI2_QUEUE_ID_DCORE3_TPC_0_1 = 133,
+  GAUDI2_QUEUE_ID_DCORE3_TPC_0_2 = 134,
+  GAUDI2_QUEUE_ID_DCORE3_TPC_0_3 = 135,
+  GAUDI2_QUEUE_ID_DCORE3_TPC_1_0 = 136,
+  GAUDI2_QUEUE_ID_DCORE3_TPC_1_1 = 137,
+  GAUDI2_QUEUE_ID_DCORE3_TPC_1_2 = 138,
+  GAUDI2_QUEUE_ID_DCORE3_TPC_1_3 = 139,
+  GAUDI2_QUEUE_ID_DCORE3_TPC_2_0 = 140,
+  GAUDI2_QUEUE_ID_DCORE3_TPC_2_1 = 141,
+  GAUDI2_QUEUE_ID_DCORE3_TPC_2_2 = 142,
+  GAUDI2_QUEUE_ID_DCORE3_TPC_2_3 = 143,
+  GAUDI2_QUEUE_ID_DCORE3_TPC_3_0 = 144,
+  GAUDI2_QUEUE_ID_DCORE3_TPC_3_1 = 145,
+  GAUDI2_QUEUE_ID_DCORE3_TPC_3_2 = 146,
+  GAUDI2_QUEUE_ID_DCORE3_TPC_3_3 = 147,
+  GAUDI2_QUEUE_ID_DCORE3_TPC_4_0 = 148,
+  GAUDI2_QUEUE_ID_DCORE3_TPC_4_1 = 149,
+  GAUDI2_QUEUE_ID_DCORE3_TPC_4_2 = 150,
+  GAUDI2_QUEUE_ID_DCORE3_TPC_4_3 = 151,
+  GAUDI2_QUEUE_ID_DCORE3_TPC_5_0 = 152,
+  GAUDI2_QUEUE_ID_DCORE3_TPC_5_1 = 153,
+  GAUDI2_QUEUE_ID_DCORE3_TPC_5_2 = 154,
+  GAUDI2_QUEUE_ID_DCORE3_TPC_5_3 = 155,
+  GAUDI2_QUEUE_ID_NIC_0_0 = 156,
+  GAUDI2_QUEUE_ID_NIC_0_1 = 157,
+  GAUDI2_QUEUE_ID_NIC_0_2 = 158,
+  GAUDI2_QUEUE_ID_NIC_0_3 = 159,
+  GAUDI2_QUEUE_ID_NIC_1_0 = 160,
+  GAUDI2_QUEUE_ID_NIC_1_1 = 161,
+  GAUDI2_QUEUE_ID_NIC_1_2 = 162,
+  GAUDI2_QUEUE_ID_NIC_1_3 = 163,
+  GAUDI2_QUEUE_ID_NIC_2_0 = 164,
+  GAUDI2_QUEUE_ID_NIC_2_1 = 165,
+  GAUDI2_QUEUE_ID_NIC_2_2 = 166,
+  GAUDI2_QUEUE_ID_NIC_2_3 = 167,
+  GAUDI2_QUEUE_ID_NIC_3_0 = 168,
+  GAUDI2_QUEUE_ID_NIC_3_1 = 169,
+  GAUDI2_QUEUE_ID_NIC_3_2 = 170,
+  GAUDI2_QUEUE_ID_NIC_3_3 = 171,
+  GAUDI2_QUEUE_ID_NIC_4_0 = 172,
+  GAUDI2_QUEUE_ID_NIC_4_1 = 173,
+  GAUDI2_QUEUE_ID_NIC_4_2 = 174,
+  GAUDI2_QUEUE_ID_NIC_4_3 = 175,
+  GAUDI2_QUEUE_ID_NIC_5_0 = 176,
+  GAUDI2_QUEUE_ID_NIC_5_1 = 177,
+  GAUDI2_QUEUE_ID_NIC_5_2 = 178,
+  GAUDI2_QUEUE_ID_NIC_5_3 = 179,
+  GAUDI2_QUEUE_ID_NIC_6_0 = 180,
+  GAUDI2_QUEUE_ID_NIC_6_1 = 181,
+  GAUDI2_QUEUE_ID_NIC_6_2 = 182,
+  GAUDI2_QUEUE_ID_NIC_6_3 = 183,
+  GAUDI2_QUEUE_ID_NIC_7_0 = 184,
+  GAUDI2_QUEUE_ID_NIC_7_1 = 185,
+  GAUDI2_QUEUE_ID_NIC_7_2 = 186,
+  GAUDI2_QUEUE_ID_NIC_7_3 = 187,
+  GAUDI2_QUEUE_ID_NIC_8_0 = 188,
+  GAUDI2_QUEUE_ID_NIC_8_1 = 189,
+  GAUDI2_QUEUE_ID_NIC_8_2 = 190,
+  GAUDI2_QUEUE_ID_NIC_8_3 = 191,
+  GAUDI2_QUEUE_ID_NIC_9_0 = 192,
+  GAUDI2_QUEUE_ID_NIC_9_1 = 193,
+  GAUDI2_QUEUE_ID_NIC_9_2 = 194,
+  GAUDI2_QUEUE_ID_NIC_9_3 = 195,
+  GAUDI2_QUEUE_ID_NIC_10_0 = 196,
+  GAUDI2_QUEUE_ID_NIC_10_1 = 197,
+  GAUDI2_QUEUE_ID_NIC_10_2 = 198,
+  GAUDI2_QUEUE_ID_NIC_10_3 = 199,
+  GAUDI2_QUEUE_ID_NIC_11_0 = 200,
+  GAUDI2_QUEUE_ID_NIC_11_1 = 201,
+  GAUDI2_QUEUE_ID_NIC_11_2 = 202,
+  GAUDI2_QUEUE_ID_NIC_11_3 = 203,
+  GAUDI2_QUEUE_ID_NIC_12_0 = 204,
+  GAUDI2_QUEUE_ID_NIC_12_1 = 205,
+  GAUDI2_QUEUE_ID_NIC_12_2 = 206,
+  GAUDI2_QUEUE_ID_NIC_12_3 = 207,
+  GAUDI2_QUEUE_ID_NIC_13_0 = 208,
+  GAUDI2_QUEUE_ID_NIC_13_1 = 209,
+  GAUDI2_QUEUE_ID_NIC_13_2 = 210,
+  GAUDI2_QUEUE_ID_NIC_13_3 = 211,
+  GAUDI2_QUEUE_ID_NIC_14_0 = 212,
+  GAUDI2_QUEUE_ID_NIC_14_1 = 213,
+  GAUDI2_QUEUE_ID_NIC_14_2 = 214,
+  GAUDI2_QUEUE_ID_NIC_14_3 = 215,
+  GAUDI2_QUEUE_ID_NIC_15_0 = 216,
+  GAUDI2_QUEUE_ID_NIC_15_1 = 217,
+  GAUDI2_QUEUE_ID_NIC_15_2 = 218,
+  GAUDI2_QUEUE_ID_NIC_15_3 = 219,
+  GAUDI2_QUEUE_ID_NIC_16_0 = 220,
+  GAUDI2_QUEUE_ID_NIC_16_1 = 221,
+  GAUDI2_QUEUE_ID_NIC_16_2 = 222,
+  GAUDI2_QUEUE_ID_NIC_16_3 = 223,
+  GAUDI2_QUEUE_ID_NIC_17_0 = 224,
+  GAUDI2_QUEUE_ID_NIC_17_1 = 225,
+  GAUDI2_QUEUE_ID_NIC_17_2 = 226,
+  GAUDI2_QUEUE_ID_NIC_17_3 = 227,
+  GAUDI2_QUEUE_ID_NIC_18_0 = 228,
+  GAUDI2_QUEUE_ID_NIC_18_1 = 229,
+  GAUDI2_QUEUE_ID_NIC_18_2 = 230,
+  GAUDI2_QUEUE_ID_NIC_18_3 = 231,
+  GAUDI2_QUEUE_ID_NIC_19_0 = 232,
+  GAUDI2_QUEUE_ID_NIC_19_1 = 233,
+  GAUDI2_QUEUE_ID_NIC_19_2 = 234,
+  GAUDI2_QUEUE_ID_NIC_19_3 = 235,
+  GAUDI2_QUEUE_ID_NIC_20_0 = 236,
+  GAUDI2_QUEUE_ID_NIC_20_1 = 237,
+  GAUDI2_QUEUE_ID_NIC_20_2 = 238,
+  GAUDI2_QUEUE_ID_NIC_20_3 = 239,
+  GAUDI2_QUEUE_ID_NIC_21_0 = 240,
+  GAUDI2_QUEUE_ID_NIC_21_1 = 241,
+  GAUDI2_QUEUE_ID_NIC_21_2 = 242,
+  GAUDI2_QUEUE_ID_NIC_21_3 = 243,
+  GAUDI2_QUEUE_ID_NIC_22_0 = 244,
+  GAUDI2_QUEUE_ID_NIC_22_1 = 245,
+  GAUDI2_QUEUE_ID_NIC_22_2 = 246,
+  GAUDI2_QUEUE_ID_NIC_22_3 = 247,
+  GAUDI2_QUEUE_ID_NIC_23_0 = 248,
+  GAUDI2_QUEUE_ID_NIC_23_1 = 249,
+  GAUDI2_QUEUE_ID_NIC_23_2 = 250,
+  GAUDI2_QUEUE_ID_NIC_23_3 = 251,
+  GAUDI2_QUEUE_ID_ROT_0_0 = 252,
+  GAUDI2_QUEUE_ID_ROT_0_1 = 253,
+  GAUDI2_QUEUE_ID_ROT_0_2 = 254,
+  GAUDI2_QUEUE_ID_ROT_0_3 = 255,
+  GAUDI2_QUEUE_ID_ROT_1_0 = 256,
+  GAUDI2_QUEUE_ID_ROT_1_1 = 257,
+  GAUDI2_QUEUE_ID_ROT_1_2 = 258,
+  GAUDI2_QUEUE_ID_ROT_1_3 = 259,
+  GAUDI2_QUEUE_ID_CPU_PQ = 260,
+  GAUDI2_QUEUE_ID_SIZE
+};
 enum goya_engine_id {
   GOYA_ENGINE_ID_DMA_0 = 0,
   GOYA_ENGINE_ID_DMA_1,
@@ -208,6 +473,84 @@
   GAUDI_ENGINE_ID_NIC_9,
   GAUDI_ENGINE_ID_SIZE
 };
+enum gaudi2_engine_id {
+  GAUDI2_DCORE0_ENGINE_ID_EDMA_0 = 0,
+  GAUDI2_DCORE0_ENGINE_ID_EDMA_1,
+  GAUDI2_DCORE0_ENGINE_ID_MME,
+  GAUDI2_DCORE0_ENGINE_ID_TPC_0,
+  GAUDI2_DCORE0_ENGINE_ID_TPC_1,
+  GAUDI2_DCORE0_ENGINE_ID_TPC_2,
+  GAUDI2_DCORE0_ENGINE_ID_TPC_3,
+  GAUDI2_DCORE0_ENGINE_ID_TPC_4,
+  GAUDI2_DCORE0_ENGINE_ID_TPC_5,
+  GAUDI2_DCORE0_ENGINE_ID_DEC_0,
+  GAUDI2_DCORE0_ENGINE_ID_DEC_1,
+  GAUDI2_DCORE1_ENGINE_ID_EDMA_0,
+  GAUDI2_DCORE1_ENGINE_ID_EDMA_1,
+  GAUDI2_DCORE1_ENGINE_ID_MME,
+  GAUDI2_DCORE1_ENGINE_ID_TPC_0,
+  GAUDI2_DCORE1_ENGINE_ID_TPC_1,
+  GAUDI2_DCORE1_ENGINE_ID_TPC_2,
+  GAUDI2_DCORE1_ENGINE_ID_TPC_3,
+  GAUDI2_DCORE1_ENGINE_ID_TPC_4,
+  GAUDI2_DCORE1_ENGINE_ID_TPC_5,
+  GAUDI2_DCORE1_ENGINE_ID_DEC_0,
+  GAUDI2_DCORE1_ENGINE_ID_DEC_1,
+  GAUDI2_DCORE2_ENGINE_ID_EDMA_0,
+  GAUDI2_DCORE2_ENGINE_ID_EDMA_1,
+  GAUDI2_DCORE2_ENGINE_ID_MME,
+  GAUDI2_DCORE2_ENGINE_ID_TPC_0,
+  GAUDI2_DCORE2_ENGINE_ID_TPC_1,
+  GAUDI2_DCORE2_ENGINE_ID_TPC_2,
+  GAUDI2_DCORE2_ENGINE_ID_TPC_3,
+  GAUDI2_DCORE2_ENGINE_ID_TPC_4,
+  GAUDI2_DCORE2_ENGINE_ID_TPC_5,
+  GAUDI2_DCORE2_ENGINE_ID_DEC_0,
+  GAUDI2_DCORE2_ENGINE_ID_DEC_1,
+  GAUDI2_DCORE3_ENGINE_ID_EDMA_0,
+  GAUDI2_DCORE3_ENGINE_ID_EDMA_1,
+  GAUDI2_DCORE3_ENGINE_ID_MME,
+  GAUDI2_DCORE3_ENGINE_ID_TPC_0,
+  GAUDI2_DCORE3_ENGINE_ID_TPC_1,
+  GAUDI2_DCORE3_ENGINE_ID_TPC_2,
+  GAUDI2_DCORE3_ENGINE_ID_TPC_3,
+  GAUDI2_DCORE3_ENGINE_ID_TPC_4,
+  GAUDI2_DCORE3_ENGINE_ID_TPC_5,
+  GAUDI2_DCORE3_ENGINE_ID_DEC_0,
+  GAUDI2_DCORE3_ENGINE_ID_DEC_1,
+  GAUDI2_DCORE0_ENGINE_ID_TPC_6,
+  GAUDI2_ENGINE_ID_PDMA_0,
+  GAUDI2_ENGINE_ID_PDMA_1,
+  GAUDI2_ENGINE_ID_ROT_0,
+  GAUDI2_ENGINE_ID_ROT_1,
+  GAUDI2_PCIE_ENGINE_ID_DEC_0,
+  GAUDI2_PCIE_ENGINE_ID_DEC_1,
+  GAUDI2_ENGINE_ID_NIC0_0,
+  GAUDI2_ENGINE_ID_NIC0_1,
+  GAUDI2_ENGINE_ID_NIC1_0,
+  GAUDI2_ENGINE_ID_NIC1_1,
+  GAUDI2_ENGINE_ID_NIC2_0,
+  GAUDI2_ENGINE_ID_NIC2_1,
+  GAUDI2_ENGINE_ID_NIC3_0,
+  GAUDI2_ENGINE_ID_NIC3_1,
+  GAUDI2_ENGINE_ID_NIC4_0,
+  GAUDI2_ENGINE_ID_NIC4_1,
+  GAUDI2_ENGINE_ID_NIC5_0,
+  GAUDI2_ENGINE_ID_NIC5_1,
+  GAUDI2_ENGINE_ID_NIC6_0,
+  GAUDI2_ENGINE_ID_NIC6_1,
+  GAUDI2_ENGINE_ID_NIC7_0,
+  GAUDI2_ENGINE_ID_NIC7_1,
+  GAUDI2_ENGINE_ID_NIC8_0,
+  GAUDI2_ENGINE_ID_NIC8_1,
+  GAUDI2_ENGINE_ID_NIC9_0,
+  GAUDI2_ENGINE_ID_NIC9_1,
+  GAUDI2_ENGINE_ID_NIC10_0,
+  GAUDI2_ENGINE_ID_NIC10_1,
+  GAUDI2_ENGINE_ID_NIC11_0,
+  GAUDI2_ENGINE_ID_NIC11_1,
+  GAUDI2_ENGINE_ID_SIZE
+};
 enum hl_goya_pll_index {
   HL_GOYA_CPU_PLL = 0,
   HL_GOYA_IC_PLL,
@@ -231,21 +574,56 @@
   HL_GAUDI_IF_PLL,
   HL_GAUDI_PLL_MAX
 };
+enum hl_gaudi2_pll_index {
+  HL_GAUDI2_CPU_PLL = 0,
+  HL_GAUDI2_PCI_PLL,
+  HL_GAUDI2_SRAM_PLL,
+  HL_GAUDI2_HBM_PLL,
+  HL_GAUDI2_NIC_PLL,
+  HL_GAUDI2_DMA_PLL,
+  HL_GAUDI2_MESH_PLL,
+  HL_GAUDI2_MME_PLL,
+  HL_GAUDI2_TPC_PLL,
+  HL_GAUDI2_IF_PLL,
+  HL_GAUDI2_VID_PLL,
+  HL_GAUDI2_MSS_PLL,
+  HL_GAUDI2_PLL_MAX
+};
+enum hl_goya_dma_direction {
+  HL_DMA_HOST_TO_DRAM,
+  HL_DMA_HOST_TO_SRAM,
+  HL_DMA_DRAM_TO_SRAM,
+  HL_DMA_SRAM_TO_DRAM,
+  HL_DMA_SRAM_TO_HOST,
+  HL_DMA_DRAM_TO_HOST,
+  HL_DMA_DRAM_TO_DRAM,
+  HL_DMA_SRAM_TO_SRAM,
+  HL_DMA_ENUM_MAX
+};
 enum hl_device_status {
   HL_DEVICE_STATUS_OPERATIONAL,
   HL_DEVICE_STATUS_IN_RESET,
   HL_DEVICE_STATUS_MALFUNCTION,
   HL_DEVICE_STATUS_NEEDS_RESET,
   HL_DEVICE_STATUS_IN_DEVICE_CREATION,
-  HL_DEVICE_STATUS_LAST = HL_DEVICE_STATUS_IN_DEVICE_CREATION
+  HL_DEVICE_STATUS_IN_RESET_AFTER_DEVICE_RELEASE,
+  HL_DEVICE_STATUS_LAST = HL_DEVICE_STATUS_IN_RESET_AFTER_DEVICE_RELEASE
 };
 enum hl_server_type {
   HL_SERVER_TYPE_UNKNOWN = 0,
   HL_SERVER_GAUDI_HLS1 = 1,
   HL_SERVER_GAUDI_HLS1H = 2,
   HL_SERVER_GAUDI_TYPE1 = 3,
-  HL_SERVER_GAUDI_TYPE2 = 4
+  HL_SERVER_GAUDI_TYPE2 = 4,
+  HL_SERVER_GAUDI2_HLS2 = 5
 };
+#define HL_NOTIFIER_EVENT_TPC_ASSERT (1ULL << 0)
+#define HL_NOTIFIER_EVENT_UNDEFINED_OPCODE (1ULL << 1)
+#define HL_NOTIFIER_EVENT_DEVICE_RESET (1ULL << 2)
+#define HL_NOTIFIER_EVENT_CS_TIMEOUT (1ULL << 3)
+#define HL_NOTIFIER_EVENT_DEVICE_UNAVAILABLE (1ULL << 4)
+#define HL_NOTIFIER_EVENT_USER_ENGINE_ERR (1ULL << 5)
+#define HL_NOTIFIER_EVENT_GENERAL_HW_ERR (1ULL << 6)
 #define HL_INFO_HW_IP_INFO 0
 #define HL_INFO_HW_EVENTS 1
 #define HL_INFO_DRAM_USAGE 2
@@ -269,8 +647,16 @@
 #define HL_INFO_LAST_ERR_OPEN_DEV_TIME 23
 #define HL_INFO_CS_TIMEOUT_EVENT 24
 #define HL_INFO_RAZWI_EVENT 25
+#define HL_INFO_DEV_MEM_ALLOC_PAGE_SIZES 26
+#define HL_INFO_SECURED_ATTESTATION 27
+#define HL_INFO_REGISTER_EVENTFD 28
+#define HL_INFO_UNREGISTER_EVENTFD 29
+#define HL_INFO_GET_EVENTS 30
+#define HL_INFO_UNDEFINED_OPCODE_EVENT 31
+#define HL_INFO_ENGINE_STATUS 32
 #define HL_INFO_VERSION_MAX_LEN 128
 #define HL_INFO_CARD_NAME_MAX_LEN 16
+#define HL_ENGINES_DATA_MAX_SIZE SZ_1M
 struct hl_info_hw_ip_info {
   __u64 sram_base_address;
   __u64 dram_base_address;
@@ -279,7 +665,7 @@
   __u32 num_of_events;
   __u32 device_id;
   __u32 module_id;
-  __u32 reserved;
+  __u32 decoder_enabled_mask;
   __u16 first_available_interrupt_id;
   __u16 server_type;
   __u32 cpld_version;
@@ -289,11 +675,17 @@
   __u32 psoc_pci_pll_div_factor;
   __u8 tpc_enabled_mask;
   __u8 dram_enabled;
-  __u8 pad[2];
+  __u8 security_enabled;
+  __u8 mme_master_slave_mode;
   __u8 cpucp_version[HL_INFO_VERSION_MAX_LEN];
   __u8 card_name[HL_INFO_CARD_NAME_MAX_LEN];
-  __u64 reserved2;
+  __u64 tpc_enabled_mask_ext;
   __u64 dram_page_size;
+  __u32 edma_enabled_mask;
+  __u16 number_of_user_interrupts;
+  __u16 pad2;
+  __u64 reserved4;
+  __u64 device_mem_alloc_default_page_size;
 };
 struct hl_info_dram_usage {
   __u64 dram_free_mem;
@@ -353,6 +745,9 @@
 struct hl_open_stats_info {
   __u64 open_counter;
   __u64 last_open_period_ms;
+  __u8 is_compute_ctx_active;
+  __u8 compute_ctx_in_release;
+  __u8 pad[6];
 };
 struct hl_power_info {
   __u64 power;
@@ -395,6 +790,40 @@
   __u8 error_type;
   __u8 pad[2];
 };
+#define MAX_QMAN_STREAMS_INFO 4
+#define OPCODE_INFO_MAX_ADDR_SIZE 8
+struct hl_info_undefined_opcode_event {
+  __s64 timestamp;
+  __u64 cb_addr_streams[MAX_QMAN_STREAMS_INFO][OPCODE_INFO_MAX_ADDR_SIZE];
+  __u64 cq_addr;
+  __u32 cq_size;
+  __u32 cb_addr_streams_len;
+  __u32 engine_id;
+  __u32 stream_id;
+};
+struct hl_info_dev_memalloc_page_sizes {
+  __u64 page_order_bitmask;
+};
+#define SEC_PCR_DATA_BUF_SZ 256
+#define SEC_PCR_QUOTE_BUF_SZ 510
+#define SEC_SIGNATURE_BUF_SZ 255
+#define SEC_PUB_DATA_BUF_SZ 510
+#define SEC_CERTIFICATE_BUF_SZ 2046
+struct hl_info_sec_attest {
+  __u32 nonce;
+  __u16 pcr_quote_len;
+  __u16 pub_data_len;
+  __u16 certificate_len;
+  __u8 pcr_num_reg;
+  __u8 pcr_reg_len;
+  __u8 quote_sig_len;
+  __u8 pcr_data[SEC_PCR_DATA_BUF_SZ];
+  __u8 pcr_quote[SEC_PCR_QUOTE_BUF_SZ];
+  __u8 quote_sig[SEC_SIGNATURE_BUF_SZ];
+  __u8 public_data[SEC_PUB_DATA_BUF_SZ];
+  __u8 certificate[SEC_CERTIFICATE_BUF_SZ];
+  __u8 pad0[2];
+};
 enum gaudi_dcores {
   HL_GAUDI_WS_DCORE,
   HL_GAUDI_WN_DCORE,
@@ -410,6 +839,9 @@
     __u32 ctx_id;
     __u32 period_ms;
     __u32 pll_index;
+    __u32 eventfd;
+    __u32 user_buffer_actual_size;
+    __u32 sec_attest_nonce;
   };
   __u32 pad;
 };
@@ -472,11 +904,23 @@
 #define HL_CS_FLAGS_ENCAP_SIGNALS 0x800
 #define HL_CS_FLAGS_RESERVE_SIGNALS_ONLY 0x1000
 #define HL_CS_FLAGS_UNRESERVE_SIGNALS_ONLY 0x2000
+#define HL_CS_FLAGS_ENGINE_CORE_COMMAND 0x4000
 #define HL_CS_STATUS_SUCCESS 0
 #define HL_MAX_JOBS_PER_CS 512
+#define HL_ENGINE_CORE_HALT (1 << 0)
+#define HL_ENGINE_CORE_RUN (1 << 1)
 struct hl_cs_in {
-  __u64 chunks_restore;
-  __u64 chunks_execute;
+  union {
+    struct {
+      __u64 chunks_restore;
+      __u64 chunks_execute;
+    };
+    struct {
+      __u64 engine_cores;
+      __u32 num_engine_cores;
+      __u32 core_command;
+    };
+  };
   union {
     __u64 seq;
     __u32 encaps_sig_handle_id;
@@ -490,6 +934,7 @@
   __u32 timeout;
   __u32 cs_flags;
   __u32 ctx_id;
+  __u8 pad[4];
 };
 struct hl_cs_out {
   union {
@@ -510,8 +955,11 @@
 };
 #define HL_WAIT_CS_FLAGS_INTERRUPT 0x2
 #define HL_WAIT_CS_FLAGS_INTERRUPT_MASK 0xFFF00000
+#define HL_WAIT_CS_FLAGS_ANY_CQ_INTERRUPT 0xFFF00000
+#define HL_WAIT_CS_FLAGS_ANY_DEC_INTERRUPT 0xFFE00000
 #define HL_WAIT_CS_FLAGS_MULTI_CS 0x4
 #define HL_WAIT_CS_FLAGS_INTERRUPT_KERNEL_CQ 0x10
+#define HL_WAIT_CS_FLAGS_REGISTER_INTERRUPT 0x20
 #define HL_WAIT_MULTI_CS_LIST_MAX_LEN 32
 struct hl_wait_cs_in {
   union {
@@ -537,6 +985,8 @@
     __u64 interrupt_timeout_us;
   };
   __u64 cq_counters_offset;
+  __u64 timestamp_handle;
+  __u64 timestamp_offset;
 };
 #define HL_WAIT_CS_STATUS_COMPLETED 0
 #define HL_WAIT_CS_STATUS_BUSY 1
@@ -561,14 +1011,17 @@
 #define HL_MEM_OP_UNMAP 3
 #define HL_MEM_OP_MAP_BLOCK 4
 #define HL_MEM_OP_EXPORT_DMABUF_FD 5
+#define HL_MEM_OP_TS_ALLOC 6
 #define HL_MEM_CONTIGUOUS 0x1
 #define HL_MEM_SHARED 0x2
 #define HL_MEM_USERPTR 0x4
 #define HL_MEM_FORCE_HINT 0x8
+#define HL_MEM_PREFETCH 0x40
 struct hl_mem_in {
   union {
     struct {
       __u64 mem_size;
+      __u64 page_size;
     } alloc;
     struct {
       __u64 handle;
@@ -596,7 +1049,7 @@
   __u32 op;
   __u32 flags;
   __u32 ctx_id;
-  __u32 pad;
+  __u32 num_of_elements;
 };
 struct hl_mem_out {
   union {
@@ -641,12 +1094,18 @@
   __u32 bw_win;
   __u32 win_capture;
   __u32 id;
-  __u32 pad;
+  __u32 control;
+  __u64 start_addr2;
+  __u64 end_addr2;
+  __u64 start_addr3;
+  __u64 end_addr3;
 };
 struct hl_debug_params_spmu {
   __u64 event_types[HL_DEBUG_MAX_AUX_VALUES];
   __u32 event_types_num;
-  __u32 pad;
+  __u32 pmtrc_val;
+  __u32 trc_ctrl_host_val;
+  __u32 trc_en_host_val;
 };
 #define HL_DEBUG_OP_ETR 0
 #define HL_DEBUG_OP_ETF 1
diff --git a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/misc/uacce/hisi_qm.h b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/misc/uacce/hisi_qm.h
index 87757a9..d2509d0 100644
--- a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/misc/uacce/hisi_qm.h
+++ b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/misc/uacce/hisi_qm.h
@@ -23,8 +23,15 @@
   __u16 id;
   __u16 qc_type;
 };
+struct hisi_qp_info {
+  __u32 sqe_size;
+  __u16 sq_depth;
+  __u16 cq_depth;
+  __u64 reserved;
+};
 #define HISI_QM_API_VER_BASE "hisi_qm_v1"
 #define HISI_QM_API_VER2_BASE "hisi_qm_v2"
 #define HISI_QM_API_VER3_BASE "hisi_qm_v3"
 #define UACCE_CMD_QM_SET_QP_CTX _IOWR('H', 10, struct hisi_qp_ctx)
+#define UACCE_CMD_QM_SET_QP_INFO _IOWR('H', 11, struct hisi_qp_info)
 #endif
diff --git a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/mtd/mtd-abi.h b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/mtd/mtd-abi.h
index 50ae565..6e26cae 100644
--- a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/mtd/mtd-abi.h
+++ b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/mtd/mtd-abi.h
@@ -52,6 +52,21 @@
   __u8 mode;
   __u8 padding[7];
 };
+struct mtd_read_req_ecc_stats {
+  __u32 uncorrectable_errors;
+  __u32 corrected_bitflips;
+  __u32 max_bitflips;
+};
+struct mtd_read_req {
+  __u64 start;
+  __u64 len;
+  __u64 ooblen;
+  __u64 usr_data;
+  __u64 usr_oob;
+  __u8 mode;
+  __u8 padding[7];
+  struct mtd_read_req_ecc_stats ecc_stats;
+};
 #define MTD_ABSENT 0
 #define MTD_RAM 1
 #define MTD_ROM 2
@@ -122,6 +137,7 @@
 #define MEMISLOCKED _IOR('M', 23, struct erase_info_user)
 #define MEMWRITE _IOWR('M', 24, struct mtd_write_req)
 #define OTPERASE _IOW('M', 25, struct otp_info)
+#define MEMREAD _IOWR('M', 26, struct mtd_read_req)
 struct nand_oobinfo {
   __u32 useecc;
   __u32 eccbytes;
diff --git a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/mtd/ubi-user.h b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/mtd/ubi-user.h
index 866fbd2..db203d5 100644
--- a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/mtd/ubi-user.h
+++ b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/mtd/ubi-user.h
@@ -56,7 +56,8 @@
   __s32 mtd_num;
   __s32 vid_hdr_offset;
   __s16 max_beb_per1024;
-  __s8 padding[10];
+  __s8 disable_fm;
+  __s8 padding[9];
 };
 enum {
   UBI_VOL_SKIP_CRC_CHECK_FLG = 0x1,
@@ -71,11 +72,11 @@
   __s16 name_len;
   __s8 padding2[4];
   char name[UBI_MAX_VOLUME_NAME + 1];
-} __packed;
+} __attribute__((__packed__));
 struct ubi_rsvol_req {
   __s64 bytes;
   __s32 vol_id;
-} __packed;
+} __attribute__((__packed__));
 struct ubi_rnvol_req {
   __s32 count;
   __s8 padding1[12];
@@ -85,24 +86,24 @@
     __s8 padding2[2];
     char name[UBI_MAX_VOLUME_NAME + 1];
   } ents[UBI_MAX_RNVOL];
-} __packed;
+} __attribute__((__packed__));
 struct ubi_leb_change_req {
   __s32 lnum;
   __s32 bytes;
   __s8 dtype;
   __s8 padding[7];
-} __packed;
+} __attribute__((__packed__));
 struct ubi_map_req {
   __s32 lnum;
   __s8 dtype;
   __s8 padding[3];
-} __packed;
+} __attribute__((__packed__));
 struct ubi_set_vol_prop_req {
   __u8 property;
   __u8 padding[7];
   __u64 value;
-} __packed;
+} __attribute__((__packed__));
 struct ubi_blkcreate_req {
   __s8 padding[128];
-} __packed;
+} __attribute__((__packed__));
 #endif
diff --git a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/rdma/efa-abi.h b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/rdma/efa-abi.h
index 4b6842b..bfb3f18 100644
--- a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/rdma/efa-abi.h
+++ b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/rdma/efa-abi.h
@@ -49,6 +49,7 @@
 };
 enum {
   EFA_CREATE_CQ_WITH_COMPLETION_CHANNEL = 1 << 0,
+  EFA_CREATE_CQ_WITH_SGID = 1 << 1,
 };
 struct efa_ibv_create_cq {
   __u32 comp_mask;
@@ -102,6 +103,7 @@
   EFA_QUERY_DEVICE_CAPS_RDMA_READ = 1 << 0,
   EFA_QUERY_DEVICE_CAPS_RNR_RETRY = 1 << 1,
   EFA_QUERY_DEVICE_CAPS_CQ_NOTIFICATIONS = 1 << 2,
+  EFA_QUERY_DEVICE_CAPS_CQ_WITH_SGID = 1 << 3,
 };
 struct efa_ibv_ex_query_device_resp {
   __u32 comp_mask;
diff --git a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/rdma/erdma-abi.h b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/rdma/erdma-abi.h
new file mode 100644
index 0000000..4df1757
--- /dev/null
+++ b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/rdma/erdma-abi.h
@@ -0,0 +1,54 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef __ERDMA_USER_H__
+#define __ERDMA_USER_H__
+#include <linux/types.h>
+#define ERDMA_ABI_VERSION 1
+struct erdma_ureq_create_cq {
+  __aligned_u64 db_record_va;
+  __aligned_u64 qbuf_va;
+  __u32 qbuf_len;
+  __u32 rsvd0;
+};
+struct erdma_uresp_create_cq {
+  __u32 cq_id;
+  __u32 num_cqe;
+};
+struct erdma_ureq_create_qp {
+  __aligned_u64 db_record_va;
+  __aligned_u64 qbuf_va;
+  __u32 qbuf_len;
+  __u32 rsvd0;
+};
+struct erdma_uresp_create_qp {
+  __u32 qp_id;
+  __u32 num_sqe;
+  __u32 num_rqe;
+  __u32 rq_offset;
+};
+struct erdma_uresp_alloc_ctx {
+  __u32 dev_id;
+  __u32 pad;
+  __u32 sdb_type;
+  __u32 sdb_offset;
+  __aligned_u64 sdb;
+  __aligned_u64 rdb;
+  __aligned_u64 cdb;
+};
+#endif
diff --git a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/rdma/hfi/hfi1_user.h b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/rdma/hfi/hfi1_user.h
index 3352907..6d58600 100644
--- a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/rdma/hfi/hfi1_user.h
+++ b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/rdma/hfi/hfi1_user.h
@@ -80,7 +80,7 @@
 struct hfi1_status {
   __aligned_u64 dev;
   __aligned_u64 port;
-  char freezemsg[0];
+  char freezemsg[];
 };
 enum sdma_req_opcode {
   EXPECTED = 0,
diff --git a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/rdma/ib_user_ioctl_verbs.h b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/rdma/ib_user_ioctl_verbs.h
index 3b94907..766d5be 100644
--- a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/rdma/ib_user_ioctl_verbs.h
+++ b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/rdma/ib_user_ioctl_verbs.h
@@ -191,6 +191,7 @@
   RDMA_DRIVER_QIB,
   RDMA_DRIVER_EFA,
   RDMA_DRIVER_SIW,
+  RDMA_DRIVER_ERDMA,
 };
 enum ib_uverbs_gid_type {
   IB_UVERBS_GID_TYPE_IB,
diff --git a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/rdma/ib_user_verbs.h b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/rdma/ib_user_verbs.h
index d9ac9e0..552c80a 100644
--- a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/rdma/ib_user_verbs.h
+++ b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/rdma/ib_user_verbs.h
@@ -106,16 +106,16 @@
 };
 struct ib_uverbs_get_context {
   __aligned_u64 response;
-  __aligned_u64 driver_data[0];
+  __aligned_u64 driver_data[];
 };
 struct ib_uverbs_get_context_resp {
   __u32 async_fd;
   __u32 num_comp_vectors;
-  __aligned_u64 driver_data[0];
+  __aligned_u64 driver_data[];
 };
 struct ib_uverbs_query_device {
   __aligned_u64 response;
-  __aligned_u64 driver_data[0];
+  __aligned_u64 driver_data[];
 };
 struct ib_uverbs_query_device_resp {
   __aligned_u64 fw_ver;
@@ -208,7 +208,7 @@
   __aligned_u64 response;
   __u8 port_num;
   __u8 reserved[7];
-  __aligned_u64 driver_data[0];
+  __aligned_u64 driver_data[];
 };
 struct ib_uverbs_query_port_resp {
   __u32 port_cap_flags;
@@ -236,11 +236,11 @@
 };
 struct ib_uverbs_alloc_pd {
   __aligned_u64 response;
-  __aligned_u64 driver_data[0];
+  __aligned_u64 driver_data[];
 };
 struct ib_uverbs_alloc_pd_resp {
   __u32 pd_handle;
-  __u32 driver_data[0];
+  __u32 driver_data[];
 };
 struct ib_uverbs_dealloc_pd {
   __u32 pd_handle;
@@ -249,11 +249,11 @@
   __aligned_u64 response;
   __u32 fd;
   __u32 oflags;
-  __aligned_u64 driver_data[0];
+  __aligned_u64 driver_data[];
 };
 struct ib_uverbs_open_xrcd_resp {
   __u32 xrcd_handle;
-  __u32 driver_data[0];
+  __u32 driver_data[];
 };
 struct ib_uverbs_close_xrcd {
   __u32 xrcd_handle;
@@ -265,13 +265,13 @@
   __aligned_u64 hca_va;
   __u32 pd_handle;
   __u32 access_flags;
-  __aligned_u64 driver_data[0];
+  __aligned_u64 driver_data[];
 };
 struct ib_uverbs_reg_mr_resp {
   __u32 mr_handle;
   __u32 lkey;
   __u32 rkey;
-  __u32 driver_data[0];
+  __u32 driver_data[];
 };
 struct ib_uverbs_rereg_mr {
   __aligned_u64 response;
@@ -282,12 +282,12 @@
   __aligned_u64 hca_va;
   __u32 pd_handle;
   __u32 access_flags;
-  __aligned_u64 driver_data[0];
+  __aligned_u64 driver_data[];
 };
 struct ib_uverbs_rereg_mr_resp {
   __u32 lkey;
   __u32 rkey;
-  __aligned_u64 driver_data[0];
+  __aligned_u64 driver_data[];
 };
 struct ib_uverbs_dereg_mr {
   __u32 mr_handle;
@@ -297,12 +297,12 @@
   __u32 pd_handle;
   __u8 mw_type;
   __u8 reserved[3];
-  __aligned_u64 driver_data[0];
+  __aligned_u64 driver_data[];
 };
 struct ib_uverbs_alloc_mw_resp {
   __u32 mw_handle;
   __u32 rkey;
-  __aligned_u64 driver_data[0];
+  __aligned_u64 driver_data[];
 };
 struct ib_uverbs_dealloc_mw {
   __u32 mw_handle;
@@ -320,7 +320,7 @@
   __u32 comp_vector;
   __s32 comp_channel;
   __u32 reserved;
-  __aligned_u64 driver_data[0];
+  __aligned_u64 driver_data[];
 };
 enum ib_uverbs_ex_create_cq_flags {
   IB_UVERBS_CQ_FLAGS_TIMESTAMP_COMPLETION = 1 << 0,
@@ -349,12 +349,12 @@
   __aligned_u64 response;
   __u32 cq_handle;
   __u32 cqe;
-  __aligned_u64 driver_data[0];
+  __aligned_u64 driver_data[];
 };
 struct ib_uverbs_resize_cq_resp {
   __u32 cqe;
   __u32 reserved;
-  __aligned_u64 driver_data[0];
+  __aligned_u64 driver_data[];
 };
 struct ib_uverbs_poll_cq {
   __aligned_u64 response;
@@ -394,7 +394,7 @@
 struct ib_uverbs_poll_cq_resp {
   __u32 count;
   __u32 reserved;
-  struct ib_uverbs_wc wc[0];
+  struct ib_uverbs_wc wc[];
 };
 struct ib_uverbs_req_notify_cq {
   __u32 cq_handle;
@@ -476,7 +476,7 @@
   __u8 qp_type;
   __u8 is_srq;
   __u8 reserved;
-  __aligned_u64 driver_data[0];
+  __aligned_u64 driver_data[];
 };
 enum ib_uverbs_create_qp_mask {
   IB_UVERBS_CREATE_QP_MASK_IND_TABLE = 1UL << 0,
@@ -511,7 +511,7 @@
   __u32 qpn;
   __u8 qp_type;
   __u8 reserved[7];
-  __aligned_u64 driver_data[0];
+  __aligned_u64 driver_data[];
 };
 struct ib_uverbs_create_qp_resp {
   __u32 qp_handle;
@@ -547,7 +547,7 @@
   __aligned_u64 response;
   __u32 qp_handle;
   __u32 attr_mask;
-  __aligned_u64 driver_data[0];
+  __aligned_u64 driver_data[];
 };
 struct ib_uverbs_query_qp_resp {
   struct ib_uverbs_qp_dest dest;
@@ -580,7 +580,7 @@
   __u8 alt_timeout;
   __u8 sq_sig_all;
   __u8 reserved[5];
-  __aligned_u64 driver_data[0];
+  __aligned_u64 driver_data[];
 };
 struct ib_uverbs_modify_qp {
   struct ib_uverbs_qp_dest dest;
@@ -685,7 +685,7 @@
   __u32 wr_count;
   __u32 sge_count;
   __u32 wqe_size;
-  struct ib_uverbs_send_wr send_wr[0];
+  struct ib_uverbs_send_wr send_wr[];
 };
 struct ib_uverbs_post_send_resp {
   __u32 bad_wr;
@@ -701,7 +701,7 @@
   __u32 wr_count;
   __u32 sge_count;
   __u32 wqe_size;
-  struct ib_uverbs_recv_wr recv_wr[0];
+  struct ib_uverbs_recv_wr recv_wr[];
 };
 struct ib_uverbs_post_recv_resp {
   __u32 bad_wr;
@@ -712,7 +712,7 @@
   __u32 wr_count;
   __u32 sge_count;
   __u32 wqe_size;
-  struct ib_uverbs_recv_wr recv[0];
+  struct ib_uverbs_recv_wr recv[];
 };
 struct ib_uverbs_post_srq_recv_resp {
   __u32 bad_wr;
@@ -723,11 +723,11 @@
   __u32 pd_handle;
   __u32 reserved;
   struct ib_uverbs_ah_attr attr;
-  __aligned_u64 driver_data[0];
+  __aligned_u64 driver_data[];
 };
 struct ib_uverbs_create_ah_resp {
   __u32 ah_handle;
-  __u32 driver_data[0];
+  __u32 driver_data[];
 };
 struct ib_uverbs_destroy_ah {
   __u32 ah_handle;
@@ -737,14 +737,14 @@
   __u32 qp_handle;
   __u16 mlid;
   __u16 reserved;
-  __aligned_u64 driver_data[0];
+  __aligned_u64 driver_data[];
 };
 struct ib_uverbs_detach_mcast {
   __u8 gid[16];
   __u32 qp_handle;
   __u16 mlid;
   __u16 reserved;
-  __aligned_u64 driver_data[0];
+  __aligned_u64 driver_data[];
 };
 struct ib_uverbs_flow_spec_hdr {
   __u32 type;
@@ -944,7 +944,7 @@
   __u8 reserved[2];
   __u8 port;
   __u32 flags;
-  struct ib_uverbs_flow_spec_hdr flow_specs[0];
+  struct ib_uverbs_flow_spec_hdr flow_specs[];
 };
 struct ib_uverbs_create_flow {
   __u32 comp_mask;
@@ -966,7 +966,7 @@
   __u32 max_wr;
   __u32 max_sge;
   __u32 srq_limit;
-  __aligned_u64 driver_data[0];
+  __aligned_u64 driver_data[];
 };
 struct ib_uverbs_create_xsrq {
   __aligned_u64 response;
@@ -979,27 +979,27 @@
   __u32 max_num_tags;
   __u32 xrcd_handle;
   __u32 cq_handle;
-  __aligned_u64 driver_data[0];
+  __aligned_u64 driver_data[];
 };
 struct ib_uverbs_create_srq_resp {
   __u32 srq_handle;
   __u32 max_wr;
   __u32 max_sge;
   __u32 srqn;
-  __u32 driver_data[0];
+  __u32 driver_data[];
 };
 struct ib_uverbs_modify_srq {
   __u32 srq_handle;
   __u32 attr_mask;
   __u32 max_wr;
   __u32 srq_limit;
-  __aligned_u64 driver_data[0];
+  __aligned_u64 driver_data[];
 };
 struct ib_uverbs_query_srq {
   __aligned_u64 response;
   __u32 srq_handle;
   __u32 reserved;
-  __aligned_u64 driver_data[0];
+  __aligned_u64 driver_data[];
 };
 struct ib_uverbs_query_srq_resp {
   __u32 max_wr;
@@ -1056,7 +1056,7 @@
 struct ib_uverbs_ex_create_rwq_ind_table {
   __u32 comp_mask;
   __u32 log_ind_tbl_size;
-  __u32 wq_handles[0];
+  __u32 wq_handles[];
 };
 struct ib_uverbs_ex_create_rwq_ind_table_resp {
   __u32 comp_mask;
@@ -1079,4 +1079,37 @@
   __u32 reserved;
 };
 #define IB_DEVICE_NAME_MAX 64
+enum ib_uverbs_device_cap_flags {
+  IB_UVERBS_DEVICE_RESIZE_MAX_WR = 1 << 0,
+  IB_UVERBS_DEVICE_BAD_PKEY_CNTR = 1 << 1,
+  IB_UVERBS_DEVICE_BAD_QKEY_CNTR = 1 << 2,
+  IB_UVERBS_DEVICE_RAW_MULTI = 1 << 3,
+  IB_UVERBS_DEVICE_AUTO_PATH_MIG = 1 << 4,
+  IB_UVERBS_DEVICE_CHANGE_PHY_PORT = 1 << 5,
+  IB_UVERBS_DEVICE_UD_AV_PORT_ENFORCE = 1 << 6,
+  IB_UVERBS_DEVICE_CURR_QP_STATE_MOD = 1 << 7,
+  IB_UVERBS_DEVICE_SHUTDOWN_PORT = 1 << 8,
+  IB_UVERBS_DEVICE_PORT_ACTIVE_EVENT = 1 << 10,
+  IB_UVERBS_DEVICE_SYS_IMAGE_GUID = 1 << 11,
+  IB_UVERBS_DEVICE_RC_RNR_NAK_GEN = 1 << 12,
+  IB_UVERBS_DEVICE_SRQ_RESIZE = 1 << 13,
+  IB_UVERBS_DEVICE_N_NOTIFY_CQ = 1 << 14,
+  IB_UVERBS_DEVICE_MEM_WINDOW = 1 << 17,
+  IB_UVERBS_DEVICE_UD_IP_CSUM = 1 << 18,
+  IB_UVERBS_DEVICE_XRC = 1 << 20,
+  IB_UVERBS_DEVICE_MEM_MGT_EXTENSIONS = 1 << 21,
+  IB_UVERBS_DEVICE_MEM_WINDOW_TYPE_2A = 1 << 23,
+  IB_UVERBS_DEVICE_MEM_WINDOW_TYPE_2B = 1 << 24,
+  IB_UVERBS_DEVICE_RC_IP_CSUM = 1 << 25,
+  IB_UVERBS_DEVICE_RAW_IP_CSUM = 1 << 26,
+  IB_UVERBS_DEVICE_MANAGED_FLOW_STEERING = 1 << 29,
+  IB_UVERBS_DEVICE_RAW_SCATTER_FCS = 1ULL << 34,
+  IB_UVERBS_DEVICE_PCI_WRITE_END_PADDING = 1ULL << 36,
+};
+enum ib_uverbs_raw_packet_caps {
+  IB_UVERBS_RAW_PACKET_CAP_CVLAN_STRIPPING = 1 << 0,
+  IB_UVERBS_RAW_PACKET_CAP_SCATTER_FCS = 1 << 1,
+  IB_UVERBS_RAW_PACKET_CAP_IP_CSUM = 1 << 2,
+  IB_UVERBS_RAW_PACKET_CAP_DELAY_DROP = 1 << 3,
+};
 #endif
diff --git a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/rdma/mlx5-abi.h b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/rdma/mlx5-abi.h
index aadb20e..f41c887 100644
--- a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/rdma/mlx5-abi.h
+++ b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/rdma/mlx5-abi.h
@@ -70,6 +70,7 @@
   MLX5_IB_ALLOC_UCONTEXT_RESP_MASK_ECE = 1UL << 2,
   MLX5_IB_ALLOC_UCONTEXT_RESP_MASK_SQD2RTS = 1UL << 3,
   MLX5_IB_ALLOC_UCONTEXT_RESP_MASK_REAL_TIME_TS = 1UL << 4,
+  MLX5_IB_ALLOC_UCONTEXT_RESP_MASK_MKEY_UPDATE_TAG = 1UL << 5,
 };
 enum mlx5_user_cmds_supp_uhw {
   MLX5_USER_CMDS_SUPP_UHW_QUERY_DEVICE = 1 << 0,
diff --git a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/rdma/mlx5_user_ioctl_cmds.h b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/rdma/mlx5_user_ioctl_cmds.h
index 862abcb..c060482 100644
--- a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/rdma/mlx5_user_ioctl_cmds.h
+++ b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/rdma/mlx5_user_ioctl_cmds.h
@@ -135,6 +135,7 @@
   MLX5_IB_ATTR_DEVX_UMEM_REG_ACCESS,
   MLX5_IB_ATTR_DEVX_UMEM_REG_OUT_ID,
   MLX5_IB_ATTR_DEVX_UMEM_REG_PGSZ_BITMAP,
+  MLX5_IB_ATTR_DEVX_UMEM_REG_DMABUF_FD,
 };
 enum mlx5_ib_devx_umem_dereg_attrs {
   MLX5_IB_ATTR_DEVX_UMEM_DEREG_HANDLE = (1U << UVERBS_ID_NS_SHIFT),
@@ -179,6 +180,7 @@
   MLX5_IB_OBJECT_VAR,
   MLX5_IB_OBJECT_PP,
   MLX5_IB_OBJECT_UAR,
+  MLX5_IB_OBJECT_STEERING_ANCHOR,
 };
 enum mlx5_ib_flow_matcher_create_attrs {
   MLX5_IB_ATTR_FLOW_MATCHER_CREATE_HANDLE = (1U << UVERBS_ID_NS_SHIFT),
@@ -195,6 +197,19 @@
   MLX5_IB_METHOD_FLOW_MATCHER_CREATE = (1U << UVERBS_ID_NS_SHIFT),
   MLX5_IB_METHOD_FLOW_MATCHER_DESTROY,
 };
+enum mlx5_ib_flow_steering_anchor_create_attrs {
+  MLX5_IB_ATTR_STEERING_ANCHOR_CREATE_HANDLE = (1U << UVERBS_ID_NS_SHIFT),
+  MLX5_IB_ATTR_STEERING_ANCHOR_FT_TYPE,
+  MLX5_IB_ATTR_STEERING_ANCHOR_PRIORITY,
+  MLX5_IB_ATTR_STEERING_ANCHOR_FT_ID,
+};
+enum mlx5_ib_flow_steering_anchor_destroy_attrs {
+  MLX5_IB_ATTR_STEERING_ANCHOR_DESTROY_HANDLE = (1U << UVERBS_ID_NS_SHIFT),
+};
+enum mlx5_ib_steering_anchor_methods {
+  MLX5_IB_METHOD_STEERING_ANCHOR_CREATE = (1U << UVERBS_ID_NS_SHIFT),
+  MLX5_IB_METHOD_STEERING_ANCHOR_DESTROY,
+};
 enum mlx5_ib_device_query_context_attrs {
   MLX5_IB_ATTR_QUERY_CONTEXT_RESP_UCTX = (1U << UVERBS_ID_NS_SHIFT),
 };
diff --git a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/rdma/mlx5_user_ioctl_verbs.h b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/rdma/mlx5_user_ioctl_verbs.h
index c3c3f89..f68c0b3 100644
--- a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/rdma/mlx5_user_ioctl_verbs.h
+++ b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/rdma/mlx5_user_ioctl_verbs.h
@@ -43,6 +43,7 @@
   MLX5_IB_UAPI_DM_TYPE_MEMIC,
   MLX5_IB_UAPI_DM_TYPE_STEERING_SW_ICM,
   MLX5_IB_UAPI_DM_TYPE_HEADER_MODIFY_SW_ICM,
+  MLX5_IB_UAPI_DM_TYPE_HEADER_MODIFY_PATTERN_SW_ICM,
 };
 enum mlx5_ib_uapi_devx_create_event_channel_flags {
   MLX5_IB_UAPI_DEVX_CR_EV_CH_FLAGS_OMIT_DATA = 1 << 0,
diff --git a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/rdma/rdma_user_cm.h b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/rdma/rdma_user_cm.h
index 7b1f7ee..37927f8 100644
--- a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/rdma/rdma_user_cm.h
+++ b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/rdma/rdma_user_cm.h
@@ -145,7 +145,7 @@
 struct rdma_ucm_query_path_resp {
   __u32 num_paths;
   __u32 reserved;
-  struct ib_path_rec_data path_data[0];
+  struct ib_path_rec_data path_data[];
 };
 struct rdma_ucm_conn_param {
   __u32 qp_num;
diff --git a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/rdma/rdma_user_ioctl_cmds.h b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/rdma/rdma_user_ioctl_cmds.h
index 22adfaa..dbaf9ed 100644
--- a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/rdma/rdma_user_ioctl_cmds.h
+++ b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/rdma/rdma_user_ioctl_cmds.h
@@ -50,6 +50,6 @@
   __aligned_u64 reserved1;
   __u32 driver_id;
   __u32 reserved2;
-  struct ib_uverbs_attr attrs[0];
+  struct ib_uverbs_attr attrs[];
 };
 #endif
diff --git a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/rdma/rdma_user_rxe.h b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/rdma/rdma_user_rxe.h
index cdb00c7..2476699 100644
--- a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/rdma/rdma_user_rxe.h
+++ b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/rdma/rdma_user_rxe.h
@@ -52,7 +52,7 @@
 };
 struct rxe_send_wr {
   __aligned_u64 wr_id;
-  __u32 num_sge;
+  __u32 reserved;
   __u32 opcode;
   __u32 send_flags;
   union {
@@ -128,7 +128,7 @@
 };
 struct rxe_recv_wqe {
   __aligned_u64 wr_id;
-  __u32 num_sge;
+  __u32 reserved;
   __u32 padding;
   struct rxe_dma_info dma;
 };
diff --git a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/scsi/fc/fc_els.h b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/scsi/fc/fc_els.h
index 04ae5b8..d29287d 100644
--- a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/scsi/fc/fc_els.h
+++ b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/scsi/fc/fc_els.h
@@ -142,7 +142,7 @@
 struct fc_tlv_desc {
   __be32 desc_tag;
   __be32 desc_len;
-  __u8 desc_value[0];
+  __u8 desc_value[];
 };
 #define FC_TLV_DESC_HDR_SZ sizeof(struct fc_tlv_desc)
 #define FC_TLV_DESC_LENGTH_FROM_SZ(desc) (sizeof(desc) - FC_TLV_DESC_HDR_SZ)
@@ -618,7 +618,7 @@
   __be32 event_threshold;
   __be32 event_count;
   __be32 pname_count;
-  __be64 pname_list[0];
+  __be64 pname_list[];
 };
 struct fc_fn_deli_desc {
   __be32 desc_tag;
@@ -636,7 +636,7 @@
   __be16 event_modifier;
   __be32 event_period;
   __be32 pname_count;
-  __be64 pname_list[0];
+  __be64 pname_list[];
 };
 struct fc_fn_congn_desc {
   __be32 desc_tag;
@@ -651,25 +651,25 @@
   __u8 fpin_cmd;
   __u8 fpin_zero[3];
   __be32 desc_len;
-  struct fc_tlv_desc fpin_desc[0];
+  struct fc_tlv_desc fpin_desc[];
 };
 struct fc_df_desc_fpin_reg {
   __be32 desc_tag;
   __be32 desc_len;
   __be32 count;
-  __be32 desc_tags[0];
+  __be32 desc_tags[];
 };
 struct fc_els_rdf {
   __u8 fpin_cmd;
   __u8 fpin_zero[3];
   __be32 desc_len;
-  struct fc_tlv_desc desc[0];
+  struct fc_tlv_desc desc[];
 };
 struct fc_els_rdf_resp {
   struct fc_els_ls_acc acc_hdr;
   __be32 desc_list_len;
   struct fc_els_lsri_desc lsri;
-  struct fc_tlv_desc desc[0];
+  struct fc_tlv_desc desc[];
 };
 struct fc_diag_lnkflt_desc {
   __be32 desc_tag;
@@ -707,12 +707,12 @@
   __u8 edc_cmd;
   __u8 edc_zero[3];
   __be32 desc_len;
-  struct fc_tlv_desc desc[0];
+  struct fc_tlv_desc desc[];
 };
 struct fc_els_edc_resp {
   struct fc_els_ls_acc acc_hdr;
   __be32 desc_list_len;
   struct fc_els_lsri_desc lsri;
-  struct fc_tlv_desc desc[0];
+  struct fc_tlv_desc desc[];
 };
 #endif
diff --git a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/scsi/scsi_bsg_fc.h b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/scsi/scsi_bsg_fc.h
index 8966f61..2647249 100644
--- a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/scsi/scsi_bsg_fc.h
+++ b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/scsi/scsi_bsg_fc.h
@@ -66,7 +66,7 @@
 };
 struct fc_bsg_host_vendor {
   __u64 vendor_id;
-  __u32 vendor_cmd[0];
+  __u32 vendor_cmd[];
 };
 struct fc_bsg_host_vendor_reply {
   __u32 vendor_rsp[0];
diff --git a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/scsi/scsi_bsg_mpi3mr.h b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/scsi/scsi_bsg_mpi3mr.h
new file mode 100644
index 0000000..fcba8cd
--- /dev/null
+++ b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/scsi/scsi_bsg_mpi3mr.h
@@ -0,0 +1,333 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef SCSI_BSG_MPI3MR_H_INCLUDED
+#define SCSI_BSG_MPI3MR_H_INCLUDED
+#include <linux/types.h>
+#define MPI3MR_IOCTL_VERSION 0x06
+#define MPI3MR_APP_DEFAULT_TIMEOUT (60)
+#define MPI3MR_BSG_ADPTYPE_UNKNOWN 0
+#define MPI3MR_BSG_ADPTYPE_AVGFAMILY 1
+#define MPI3MR_BSG_ADPSTATE_UNKNOWN 0
+#define MPI3MR_BSG_ADPSTATE_OPERATIONAL 1
+#define MPI3MR_BSG_ADPSTATE_FAULT 2
+#define MPI3MR_BSG_ADPSTATE_IN_RESET 3
+#define MPI3MR_BSG_ADPSTATE_UNRECOVERABLE 4
+#define MPI3MR_BSG_ADPRESET_UNKNOWN 0
+#define MPI3MR_BSG_ADPRESET_SOFT 1
+#define MPI3MR_BSG_ADPRESET_DIAG_FAULT 2
+#define MPI3MR_BSG_LOGDATA_MAX_ENTRIES 400
+#define MPI3MR_BSG_LOGDATA_ENTRY_HEADER_SZ 4
+#define MPI3MR_DRVBSG_OPCODE_UNKNOWN 0
+#define MPI3MR_DRVBSG_OPCODE_ADPINFO 1
+#define MPI3MR_DRVBSG_OPCODE_ADPRESET 2
+#define MPI3MR_DRVBSG_OPCODE_ALLTGTDEVINFO 4
+#define MPI3MR_DRVBSG_OPCODE_GETCHGCNT 5
+#define MPI3MR_DRVBSG_OPCODE_LOGDATAENABLE 6
+#define MPI3MR_DRVBSG_OPCODE_PELENABLE 7
+#define MPI3MR_DRVBSG_OPCODE_GETLOGDATA 8
+#define MPI3MR_DRVBSG_OPCODE_QUERY_HDB 9
+#define MPI3MR_DRVBSG_OPCODE_REPOST_HDB 10
+#define MPI3MR_DRVBSG_OPCODE_UPLOAD_HDB 11
+#define MPI3MR_DRVBSG_OPCODE_REFRESH_HDB_TRIGGERS 12
+#define MPI3MR_BSG_BUFTYPE_UNKNOWN 0
+#define MPI3MR_BSG_BUFTYPE_RAIDMGMT_CMD 1
+#define MPI3MR_BSG_BUFTYPE_RAIDMGMT_RESP 2
+#define MPI3MR_BSG_BUFTYPE_DATA_IN 3
+#define MPI3MR_BSG_BUFTYPE_DATA_OUT 4
+#define MPI3MR_BSG_BUFTYPE_MPI_REPLY 5
+#define MPI3MR_BSG_BUFTYPE_ERR_RESPONSE 6
+#define MPI3MR_BSG_BUFTYPE_MPI_REQUEST 0xFE
+#define MPI3MR_BSG_MPI_REPLY_BUFTYPE_UNKNOWN 0
+#define MPI3MR_BSG_MPI_REPLY_BUFTYPE_STATUS 1
+#define MPI3MR_BSG_MPI_REPLY_BUFTYPE_ADDRESS 2
+#define MPI3MR_HDB_BUFTYPE_UNKNOWN 0
+#define MPI3MR_HDB_BUFTYPE_TRACE 1
+#define MPI3MR_HDB_BUFTYPE_FIRMWARE 2
+#define MPI3MR_HDB_BUFTYPE_RESERVED 3
+#define MPI3MR_HDB_BUFSTATUS_UNKNOWN 0
+#define MPI3MR_HDB_BUFSTATUS_NOT_ALLOCATED 1
+#define MPI3MR_HDB_BUFSTATUS_POSTED_UNPAUSED 2
+#define MPI3MR_HDB_BUFSTATUS_POSTED_PAUSED 3
+#define MPI3MR_HDB_BUFSTATUS_RELEASED 4
+#define MPI3MR_HDB_TRIGGER_TYPE_UNKNOWN 0
+#define MPI3MR_HDB_TRIGGER_TYPE_DIAGFAULT 1
+#define MPI3MR_HDB_TRIGGER_TYPE_ELEMENT 2
+#define MPI3MR_HDB_TRIGGER_TYPE_MASTER 3
+enum command {
+  MPI3MR_DRV_CMD = 1,
+  MPI3MR_MPT_CMD = 2,
+};
+struct mpi3_driver_info_layout {
+  __le32 information_length;
+  __u8 driver_signature[12];
+  __u8 os_name[16];
+  __u8 os_version[12];
+  __u8 driver_name[20];
+  __u8 driver_version[32];
+  __u8 driver_release_date[20];
+  __le32 driver_capabilities;
+};
+struct mpi3mr_bsg_in_adpinfo {
+  __u32 adp_type;
+  __u32 rsvd1;
+  __u32 pci_dev_id;
+  __u32 pci_dev_hw_rev;
+  __u32 pci_subsys_dev_id;
+  __u32 pci_subsys_ven_id;
+  __u32 pci_dev : 5;
+  __u32 pci_func : 3;
+  __u32 pci_bus : 8;
+  __u16 rsvd2;
+  __u32 pci_seg_id;
+  __u32 app_intfc_ver;
+  __u8 adp_state;
+  __u8 rsvd3;
+  __u16 rsvd4;
+  __u32 rsvd5[2];
+  struct mpi3_driver_info_layout driver_info;
+};
+struct mpi3mr_bsg_adp_reset {
+  __u8 reset_type;
+  __u8 rsvd1;
+  __u16 rsvd2;
+};
+struct mpi3mr_change_count {
+  __u16 change_count;
+  __u16 rsvd;
+};
+struct mpi3mr_device_map_info {
+  __u16 handle;
+  __u16 perst_id;
+  __u32 target_id;
+  __u8 bus_id;
+  __u8 rsvd1;
+  __u16 rsvd2;
+};
+struct mpi3mr_all_tgt_info {
+  __u16 num_devices;
+  __u16 rsvd1;
+  __u32 rsvd2;
+  struct mpi3mr_device_map_info dmi[1];
+};
+struct mpi3mr_logdata_enable {
+  __u16 max_entries;
+  __u16 rsvd;
+};
+struct mpi3mr_bsg_out_pel_enable {
+  __u16 pel_locale;
+  __u8 pel_class;
+  __u8 rsvd;
+};
+struct mpi3mr_logdata_entry {
+  __u8 valid_entry;
+  __u8 rsvd1;
+  __u16 rsvd2;
+  __u8 data[1];
+};
+struct mpi3mr_bsg_in_log_data {
+  struct mpi3mr_logdata_entry entry[1];
+};
+struct mpi3mr_hdb_entry {
+  __u8 buf_type;
+  __u8 status;
+  __u8 trigger_type;
+  __u8 rsvd1;
+  __u16 size;
+  __u16 rsvd2;
+  __u64 trigger_data;
+  __u32 rsvd3;
+  __u32 rsvd4;
+};
+struct mpi3mr_bsg_in_hdb_status {
+  __u8 num_hdb_types;
+  __u8 rsvd1;
+  __u16 rsvd2;
+  __u32 rsvd3;
+  struct mpi3mr_hdb_entry entry[1];
+};
+struct mpi3mr_bsg_out_repost_hdb {
+  __u8 buf_type;
+  __u8 rsvd1;
+  __u16 rsvd2;
+};
+struct mpi3mr_bsg_out_upload_hdb {
+  __u8 buf_type;
+  __u8 rsvd1;
+  __u16 rsvd2;
+  __u32 start_offset;
+  __u32 length;
+};
+struct mpi3mr_bsg_out_refresh_hdb_triggers {
+  __u8 page_type;
+  __u8 rsvd1;
+  __u16 rsvd2;
+};
+struct mpi3mr_bsg_drv_cmd {
+  __u8 mrioc_id;
+  __u8 opcode;
+  __u16 rsvd1;
+  __u32 rsvd2[4];
+};
+struct mpi3mr_bsg_in_reply_buf {
+  __u8 mpi_reply_type;
+  __u8 rsvd1;
+  __u16 rsvd2;
+  __u8 reply_buf[1];
+};
+struct mpi3mr_buf_entry {
+  __u8 buf_type;
+  __u8 rsvd1;
+  __u16 rsvd2;
+  __u32 buf_len;
+};
+struct mpi3mr_buf_entry_list {
+  __u8 num_of_entries;
+  __u8 rsvd1;
+  __u16 rsvd2;
+  __u32 rsvd3;
+  struct mpi3mr_buf_entry buf_entry[1];
+};
+struct mpi3mr_bsg_mptcmd {
+  __u8 mrioc_id;
+  __u8 rsvd1;
+  __u16 timeout;
+  __u32 rsvd2;
+  struct mpi3mr_buf_entry_list buf_entry_list;
+};
+struct mpi3mr_bsg_packet {
+  __u8 cmd_type;
+  __u8 rsvd1;
+  __u16 rsvd2;
+  __u32 rsvd3;
+  union {
+    struct mpi3mr_bsg_drv_cmd drvrcmd;
+    struct mpi3mr_bsg_mptcmd mptcmd;
+  } cmd;
+};
+#ifndef MPI3_NVME_ENCAP_CMD_MAX
+#define MPI3_NVME_ENCAP_CMD_MAX (1)
+#endif
+struct mpi3_nvme_encapsulated_request {
+  __le16 host_tag;
+  __u8 ioc_use_only02;
+  __u8 function;
+  __le16 ioc_use_only04;
+  __u8 ioc_use_only06;
+  __u8 msg_flags;
+  __le16 change_count;
+  __le16 dev_handle;
+  __le16 encapsulated_command_length;
+  __le16 flags;
+  __le32 data_length;
+  __le32 reserved14[3];
+  __le32 command[MPI3_NVME_ENCAP_CMD_MAX];
+};
+struct mpi3_nvme_encapsulated_error_reply {
+  __le16 host_tag;
+  __u8 ioc_use_only02;
+  __u8 function;
+  __le16 ioc_use_only04;
+  __u8 ioc_use_only06;
+  __u8 msg_flags;
+  __le16 ioc_use_only08;
+  __le16 ioc_status;
+  __le32 ioc_log_info;
+  __le32 nvme_completion_entry[4];
+};
+#define MPI3MR_NVME_PRP_SIZE 8
+#define MPI3MR_NVME_CMD_PRP1_OFFSET 24
+#define MPI3MR_NVME_CMD_PRP2_OFFSET 32
+#define MPI3MR_NVME_CMD_SGL_OFFSET 24
+#define MPI3MR_NVME_DATA_FORMAT_PRP 0
+#define MPI3MR_NVME_DATA_FORMAT_SGL1 1
+#define MPI3MR_NVME_DATA_FORMAT_SGL2 2
+struct mpi3_scsi_task_mgmt_request {
+  __le16 host_tag;
+  __u8 ioc_use_only02;
+  __u8 function;
+  __le16 ioc_use_only04;
+  __u8 ioc_use_only06;
+  __u8 msg_flags;
+  __le16 change_count;
+  __le16 dev_handle;
+  __le16 task_host_tag;
+  __u8 task_type;
+  __u8 reserved0f;
+  __le16 task_request_queue_id;
+  __le16 reserved12;
+  __le32 reserved14;
+  __u8 lun[8];
+};
+#define MPI3_SCSITASKMGMT_MSGFLAGS_DO_NOT_SEND_TASK_IU (0x08)
+#define MPI3_SCSITASKMGMT_TASKTYPE_ABORT_TASK (0x01)
+#define MPI3_SCSITASKMGMT_TASKTYPE_ABORT_TASK_SET (0x02)
+#define MPI3_SCSITASKMGMT_TASKTYPE_TARGET_RESET (0x03)
+#define MPI3_SCSITASKMGMT_TASKTYPE_LOGICAL_UNIT_RESET (0x05)
+#define MPI3_SCSITASKMGMT_TASKTYPE_CLEAR_TASK_SET (0x06)
+#define MPI3_SCSITASKMGMT_TASKTYPE_QUERY_TASK (0x07)
+#define MPI3_SCSITASKMGMT_TASKTYPE_CLEAR_ACA (0x08)
+#define MPI3_SCSITASKMGMT_TASKTYPE_QUERY_TASK_SET (0x09)
+#define MPI3_SCSITASKMGMT_TASKTYPE_QUERY_ASYNC_EVENT (0x0a)
+#define MPI3_SCSITASKMGMT_TASKTYPE_I_T_NEXUS_RESET (0x0b)
+struct mpi3_scsi_task_mgmt_reply {
+  __le16 host_tag;
+  __u8 ioc_use_only02;
+  __u8 function;
+  __le16 ioc_use_only04;
+  __u8 ioc_use_only06;
+  __u8 msg_flags;
+  __le16 ioc_use_only08;
+  __le16 ioc_status;
+  __le32 ioc_log_info;
+  __le32 termination_count;
+  __le32 response_data;
+  __le32 reserved18;
+};
+#define MPI3_SCSITASKMGMT_RSPCODE_TM_COMPLETE (0x00)
+#define MPI3_SCSITASKMGMT_RSPCODE_INVALID_FRAME (0x02)
+#define MPI3_SCSITASKMGMT_RSPCODE_TM_FUNCTION_NOT_SUPPORTED (0x04)
+#define MPI3_SCSITASKMGMT_RSPCODE_TM_FAILED (0x05)
+#define MPI3_SCSITASKMGMT_RSPCODE_TM_SUCCEEDED (0x08)
+#define MPI3_SCSITASKMGMT_RSPCODE_TM_INVALID_LUN (0x09)
+#define MPI3_SCSITASKMGMT_RSPCODE_TM_OVERLAPPED_TAG (0x0a)
+#define MPI3_SCSITASKMGMT_RSPCODE_IO_QUEUED_ON_IOC (0x80)
+#define MPI3_SCSITASKMGMT_RSPCODE_TM_NVME_DENIED (0x81)
+#define MPI3_PEL_LOCALE_FLAGS_NON_BLOCKING_BOOT_EVENT (0x0200)
+#define MPI3_PEL_LOCALE_FLAGS_BLOCKING_BOOT_EVENT (0x0100)
+#define MPI3_PEL_LOCALE_FLAGS_PCIE (0x0080)
+#define MPI3_PEL_LOCALE_FLAGS_CONFIGURATION (0x0040)
+#define MPI3_PEL_LOCALE_FLAGS_CONTROLER (0x0020)
+#define MPI3_PEL_LOCALE_FLAGS_SAS (0x0010)
+#define MPI3_PEL_LOCALE_FLAGS_EPACK (0x0008)
+#define MPI3_PEL_LOCALE_FLAGS_ENCLOSURE (0x0004)
+#define MPI3_PEL_LOCALE_FLAGS_PD (0x0002)
+#define MPI3_PEL_LOCALE_FLAGS_VD (0x0001)
+#define MPI3_PEL_CLASS_DEBUG (0x00)
+#define MPI3_PEL_CLASS_PROGRESS (0x01)
+#define MPI3_PEL_CLASS_INFORMATIONAL (0x02)
+#define MPI3_PEL_CLASS_WARNING (0x03)
+#define MPI3_PEL_CLASS_CRITICAL (0x04)
+#define MPI3_PEL_CLASS_FATAL (0x05)
+#define MPI3_PEL_CLASS_FAULT (0x06)
+#define MPI3_BSG_FUNCTION_MGMT_PASSTHROUGH (0x0a)
+#define MPI3_BSG_FUNCTION_SCSI_IO (0x20)
+#define MPI3_BSG_FUNCTION_SCSI_TASK_MGMT (0x21)
+#define MPI3_BSG_FUNCTION_SMP_PASSTHROUGH (0x22)
+#define MPI3_BSG_FUNCTION_NVME_ENCAPSULATED (0x24)
+#endif
diff --git a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/scsi/scsi_netlink_fc.h b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/scsi/scsi_netlink_fc.h
index ff92877..6eeb866 100644
--- a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/scsi/scsi_netlink_fc.h
+++ b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/scsi/scsi_netlink_fc.h
@@ -30,6 +30,9 @@
   __u16 event_datalen;
   __u32 event_num;
   __u32 event_code;
-  __u32 event_data;
+  union {
+    __u32 event_data;
+    __DECLARE_FLEX_ARRAY(__u8, event_data_flex);
+  };
 } __attribute__((aligned(sizeof(__u64))));
 #endif
diff --git a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/sound/asoc.h b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/sound/asoc.h
index eeb12b0..1940e5d 100644
--- a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/sound/asoc.h
+++ b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/sound/asoc.h
@@ -356,7 +356,7 @@
   __le32 pcm_elems;
   __le32 dai_link_elems;
   struct snd_soc_tplg_private priv;
-} __packed;
+} __attribute__((__packed__));
 struct snd_soc_tplg_stream_caps_v4 {
   __le32 size;
   char name[SNDRV_CTL_ELEM_ID_NAME_MAXLEN];
@@ -372,7 +372,7 @@
   __le32 period_size_max;
   __le32 buffer_size_min;
   __le32 buffer_size_max;
-} __packed;
+} __attribute__((__packed__));
 struct snd_soc_tplg_pcm_v4 {
   __le32 size;
   char pcm_name[SNDRV_CTL_ELEM_ID_NAME_MAXLEN];
@@ -385,11 +385,11 @@
   struct snd_soc_tplg_stream stream[SND_SOC_TPLG_STREAM_CONFIG_MAX];
   __le32 num_streams;
   struct snd_soc_tplg_stream_caps_v4 caps[2];
-} __packed;
+} __attribute__((__packed__));
 struct snd_soc_tplg_link_config_v4 {
   __le32 size;
   __le32 id;
   struct snd_soc_tplg_stream stream[SND_SOC_TPLG_STREAM_CONFIG_MAX];
   __le32 num_streams;
-} __packed;
+} __attribute__((__packed__));
 #endif
diff --git a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/sound/asound.h b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/sound/asound.h
index b0e47c1..6e325e9 100644
--- a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/sound/asound.h
+++ b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/sound/asound.h
@@ -605,7 +605,7 @@
   __u32 tv_nsec;
   __u64 tv_sec;
   __u8 data[SNDRV_RAWMIDI_FRAMING_DATA_LENGTH];
-} __packed;
+} __attribute__((__packed__));
 struct snd_rawmidi_params {
   int stream;
   size_t buffer_size;
@@ -884,7 +884,7 @@
 struct snd_ctl_tlv {
   unsigned int numid;
   unsigned int length;
-  unsigned int tlv[0];
+  unsigned int tlv[];
 };
 #define SNDRV_CTL_IOCTL_PVERSION _IOR('U', 0x00, int)
 #define SNDRV_CTL_IOCTL_CARD_INFO _IOR('U', 0x01, struct snd_ctl_card_info)
diff --git a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/sound/firewire.h b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/sound/firewire.h
index 198a8f4..d26d722 100644
--- a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/sound/firewire.h
+++ b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/sound/firewire.h
@@ -46,11 +46,11 @@
   __be32 category;
   __be32 command;
   __be32 status;
-  __be32 params[0];
+  __be32 params[];
 };
 struct snd_firewire_event_efw_response {
   unsigned int type;
-  __be32 response[0];
+  __be32 response[];
 };
 struct snd_firewire_event_digi00x_message {
   unsigned int type;
@@ -67,7 +67,7 @@
 };
 struct snd_firewire_event_tascam_control {
   unsigned int type;
-  struct snd_firewire_tascam_change changes[0];
+  struct snd_firewire_tascam_change changes[];
 };
 struct snd_firewire_event_motu_register_dsp_change {
   unsigned int type;
diff --git a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/sound/intel/avs/tokens.h b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/sound/intel/avs/tokens.h
new file mode 100644
index 0000000..b6b3002
--- /dev/null
+++ b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/sound/intel/avs/tokens.h
@@ -0,0 +1,111 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef __UAPI_SOUND_INTEL_AVS_TOKENS_H
+#define __UAPI_SOUND_INTEL_AVS_TOKENS_H
+enum avs_tplg_token {
+  AVS_TKN_MANIFEST_NAME_STRING = 1,
+  AVS_TKN_MANIFEST_VERSION_U32 = 2,
+  AVS_TKN_MANIFEST_NUM_LIBRARIES_U32 = 3,
+  AVS_TKN_MANIFEST_NUM_AFMTS_U32 = 4,
+  AVS_TKN_MANIFEST_NUM_MODCFGS_BASE_U32 = 5,
+  AVS_TKN_MANIFEST_NUM_MODCFGS_EXT_U32 = 6,
+  AVS_TKN_MANIFEST_NUM_PPLCFGS_U32 = 7,
+  AVS_TKN_MANIFEST_NUM_BINDINGS_U32 = 8,
+  AVS_TKN_LIBRARY_ID_U32 = 101,
+  AVS_TKN_LIBRARY_NAME_STRING = 102,
+  AVS_TKN_AFMT_ID_U32 = 201,
+  AVS_TKN_AFMT_SAMPLE_RATE_U32 = 202,
+  AVS_TKN_AFMT_BIT_DEPTH_U32 = 203,
+  AVS_TKN_AFMT_CHANNEL_MAP_U32 = 204,
+  AVS_TKN_AFMT_CHANNEL_CFG_U32 = 205,
+  AVS_TKN_AFMT_INTERLEAVING_U32 = 206,
+  AVS_TKN_AFMT_NUM_CHANNELS_U32 = 207,
+  AVS_TKN_AFMT_VALID_BIT_DEPTH_U32 = 208,
+  AVS_TKN_AFMT_SAMPLE_TYPE_U32 = 209,
+  AVS_TKN_MODCFG_BASE_ID_U32 = 301,
+  AVS_TKN_MODCFG_BASE_CPC_U32 = 302,
+  AVS_TKN_MODCFG_BASE_IBS_U32 = 303,
+  AVS_TKN_MODCFG_BASE_OBS_U32 = 304,
+  AVS_TKN_MODCFG_BASE_PAGES_U32 = 305,
+  AVS_TKN_MODCFG_EXT_ID_U32 = 401,
+  AVS_TKN_MODCFG_EXT_TYPE_UUID = 402,
+  AVS_TKN_MODCFG_CPR_OUT_AFMT_ID_U32 = 403,
+  AVS_TKN_MODCFG_CPR_FEATURE_MASK_U32 = 404,
+  AVS_TKN_MODCFG_CPR_DMA_TYPE_U32 = 405,
+  AVS_TKN_MODCFG_CPR_DMABUFF_SIZE_U32 = 406,
+  AVS_TKN_MODCFG_CPR_VINDEX_U8 = 407,
+  AVS_TKN_MODCFG_CPR_BLOB_FMT_ID_U32 = 408,
+  AVS_TKN_MODCFG_MICSEL_OUT_AFMT_ID_U32 = 409,
+  AVS_TKN_MODCFG_INTELWOV_CPC_LP_MODE_U32 = 410,
+  AVS_TKN_MODCFG_SRC_OUT_FREQ_U32 = 411,
+  AVS_TKN_MODCFG_MUX_REF_AFMT_ID_U32 = 412,
+  AVS_TKN_MODCFG_MUX_OUT_AFMT_ID_U32 = 413,
+  AVS_TKN_MODCFG_AEC_REF_AFMT_ID_U32 = 414,
+  AVS_TKN_MODCFG_AEC_OUT_AFMT_ID_U32 = 415,
+  AVS_TKN_MODCFG_AEC_CPC_LP_MODE_U32 = 416,
+  AVS_TKN_MODCFG_ASRC_OUT_FREQ_U32 = 417,
+  AVS_TKN_MODCFG_ASRC_MODE_U8 = 418,
+  AVS_TKN_MODCFG_ASRC_DISABLE_JITTER_U8 = 419,
+  AVS_TKN_MODCFG_UPDOWN_MIX_OUT_CHAN_CFG_U32 = 420,
+  AVS_TKN_MODCFG_UPDOWN_MIX_COEFF_SELECT_U32 = 421,
+  AVS_TKN_MODCFG_UPDOWN_MIX_COEFF_0_S32 = 422,
+  AVS_TKN_MODCFG_UPDOWN_MIX_COEFF_1_S32 = 423,
+  AVS_TKN_MODCFG_UPDOWN_MIX_COEFF_2_S32 = 424,
+  AVS_TKN_MODCFG_UPDOWN_MIX_COEFF_3_S32 = 425,
+  AVS_TKN_MODCFG_UPDOWN_MIX_COEFF_4_S32 = 426,
+  AVS_TKN_MODCFG_UPDOWN_MIX_COEFF_5_S32 = 427,
+  AVS_TKN_MODCFG_UPDOWN_MIX_COEFF_6_S32 = 428,
+  AVS_TKN_MODCFG_UPDOWN_MIX_COEFF_7_S32 = 429,
+  AVS_TKN_MODCFG_UPDOWN_MIX_CHAN_MAP_U32 = 430,
+  AVS_TKN_MODCFG_EXT_NUM_INPUT_PINS_U16 = 431,
+  AVS_TKN_MODCFG_EXT_NUM_OUTPUT_PINS_U16 = 432,
+  AVS_TKN_PPLCFG_ID_U32 = 1401,
+  AVS_TKN_PPLCFG_REQ_SIZE_U16 = 1402,
+  AVS_TKN_PPLCFG_PRIORITY_U8 = 1403,
+  AVS_TKN_PPLCFG_LOW_POWER_BOOL = 1404,
+  AVS_TKN_PPLCFG_ATTRIBUTES_U16 = 1405,
+  AVS_TKN_PPLCFG_TRIGGER_U32 = 1406,
+  AVS_TKN_BINDING_ID_U32 = 1501,
+  AVS_TKN_BINDING_TARGET_TPLG_NAME_STRING = 1502,
+  AVS_TKN_BINDING_TARGET_PATH_TMPL_ID_U32 = 1503,
+  AVS_TKN_BINDING_TARGET_PPL_ID_U32 = 1504,
+  AVS_TKN_BINDING_TARGET_MOD_ID_U32 = 1505,
+  AVS_TKN_BINDING_TARGET_MOD_PIN_U8 = 1506,
+  AVS_TKN_BINDING_MOD_ID_U32 = 1507,
+  AVS_TKN_BINDING_MOD_PIN_U8 = 1508,
+  AVS_TKN_BINDING_IS_SINK_U8 = 1509,
+  AVS_TKN_PPL_ID_U32 = 1601,
+  AVS_TKN_PPL_PPLCFG_ID_U32 = 1602,
+  AVS_TKN_PPL_NUM_BINDING_IDS_U32 = 1603,
+  AVS_TKN_PPL_BINDING_ID_U32 = 1604,
+  AVS_TKN_MOD_ID_U32 = 1701,
+  AVS_TKN_MOD_MODCFG_BASE_ID_U32 = 1702,
+  AVS_TKN_MOD_IN_AFMT_ID_U32 = 1703,
+  AVS_TKN_MOD_CORE_ID_U8 = 1704,
+  AVS_TKN_MOD_PROC_DOMAIN_U8 = 1705,
+  AVS_TKN_MOD_MODCFG_EXT_ID_U32 = 1706,
+  AVS_TKN_PATH_TMPL_ID_U32 = 1801,
+  AVS_TKN_PATH_ID_U32 = 1901,
+  AVS_TKN_PATH_FE_FMT_ID_U32 = 1902,
+  AVS_TKN_PATH_BE_FMT_ID_U32 = 1903,
+  AVS_TKN_PIN_FMT_INDEX_U32 = 2201,
+  AVS_TKN_PIN_FMT_IOBS_U32 = 2202,
+  AVS_TKN_PIN_FMT_AFMT_ID_U32 = 2203,
+};
+#endif
diff --git a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/sound/skl-tplg-interface.h b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/sound/skl-tplg-interface.h
index b516a08..6dd9655 100644
--- a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/sound/skl-tplg-interface.h
+++ b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/sound/skl-tplg-interface.h
@@ -110,8 +110,8 @@
   __u32 rsvd : 30;
   __u32 param_id;
   __u32 max;
-  char params[0];
-} __packed;
+  char params[];
+} __attribute__((__packed__));
 enum skl_tkn_dir {
   SKL_DIR_IN,
   SKL_DIR_OUT
@@ -123,7 +123,7 @@
 struct skl_dfw_v4_module_pin {
   __u16 module_id;
   __u16 instance_id;
-} __packed;
+} __attribute__((__packed__));
 struct skl_dfw_v4_module_fmt {
   __u32 channels;
   __u32 freq;
@@ -133,21 +133,21 @@
   __u32 interleaving_style;
   __u32 sample_type;
   __u32 ch_map;
-} __packed;
+} __attribute__((__packed__));
 struct skl_dfw_v4_module_caps {
   __u32 set_params : 2;
   __u32 rsvd : 30;
   __u32 param_id;
   __u32 caps_size;
   __u32 caps[HDA_SST_CFG_MAX];
-} __packed;
+} __attribute__((__packed__));
 struct skl_dfw_v4_pipe {
   __u8 pipe_id;
   __u8 pipe_priority;
   __u16 conn_type : 4;
   __u16 rsvd : 4;
   __u16 memory_pages : 8;
-} __packed;
+} __attribute__((__packed__));
 struct skl_dfw_v4_module {
   char uuid[SKL_UUID_STR_SZ];
   __u16 module_id;
@@ -181,5 +181,5 @@
   struct skl_dfw_v4_module_pin in_pin[MAX_IN_QUEUE];
   struct skl_dfw_v4_module_pin out_pin[MAX_OUT_QUEUE];
   struct skl_dfw_v4_module_caps caps;
-} __packed;
+} __attribute__((__packed__));
 #endif
diff --git a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/sound/sof/abi.h b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/sound/sof/abi.h
index 3af3c9d..dc4e525 100644
--- a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/sound/sof/abi.h
+++ b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/sound/sof/abi.h
@@ -18,8 +18,9 @@
  ****************************************************************************/
 #ifndef __INCLUDE_UAPI_SOUND_SOF_ABI_H__
 #define __INCLUDE_UAPI_SOUND_SOF_ABI_H__
+#include <linux/types.h>
 #define SOF_ABI_MAJOR 3
-#define SOF_ABI_MINOR 18
+#define SOF_ABI_MINOR 23
 #define SOF_ABI_PATCH 0
 #define SOF_ABI_MAJOR_SHIFT 24
 #define SOF_ABI_MAJOR_MASK 0xff
diff --git a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/sound/sof/fw.h b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/sound/sof/fw.h
index c36c2b9..97b7de3 100644
--- a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/sound/sof/fw.h
+++ b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/sound/sof/fw.h
@@ -46,7 +46,7 @@
   enum snd_sof_fw_blk_type type;
   __u32 size;
   __u32 offset;
-} __packed;
+} __attribute__((__packed__));
 enum snd_sof_fw_mod_type {
   SOF_FW_BASE = 0,
   SOF_FW_MODULE = 1,
@@ -55,11 +55,11 @@
   enum snd_sof_fw_mod_type type;
   __u32 size;
   __u32 num_blocks;
-} __packed;
+} __attribute__((__packed__));
 struct snd_sof_fw_header {
   unsigned char sig[SND_SOF_FW_SIG_SIZE];
   __u32 file_size;
   __u32 num_modules;
   __u32 abi;
-} __packed;
+} __attribute__((__packed__));
 #endif
diff --git a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/sound/sof/header.h b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/sound/sof/header.h
index 3fbd4a4..7514550 100644
--- a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/sound/sof/header.h
+++ b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/sound/sof/header.h
@@ -25,6 +25,19 @@
   __u32 size;
   __u32 abi;
   __u32 reserved[4];
-  __u32 data[0];
-} __packed;
+  __u32 data[];
+} __attribute__((__packed__));
+#define SOF_MANIFEST_DATA_TYPE_NHLT 1
+struct sof_manifest_tlv {
+  __le32 type;
+  __le32 size;
+  __u8 data[];
+};
+struct sof_manifest {
+  __le16 abi_major;
+  __le16 abi_minor;
+  __le16 abi_patch;
+  __le16 count;
+  struct sof_manifest_tlv items[];
+};
 #endif
diff --git a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/sound/sof/tokens.h b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/sound/sof/tokens.h
index 856281a..b07ed42 100644
--- a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/sound/sof/tokens.h
+++ b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/sound/sof/tokens.h
@@ -37,8 +37,13 @@
 #define SOF_TKN_SCHED_FRAMES 204
 #define SOF_TKN_SCHED_TIME_DOMAIN 205
 #define SOF_TKN_SCHED_DYNAMIC_PIPELINE 206
+#define SOF_TKN_SCHED_LP_MODE 207
+#define SOF_TKN_SCHED_MEM_USAGE 208
 #define SOF_TKN_VOLUME_RAMP_STEP_TYPE 250
 #define SOF_TKN_VOLUME_RAMP_STEP_MS 251
+#define SOF_TKN_GAIN_RAMP_TYPE 260
+#define SOF_TKN_GAIN_RAMP_DURATION 261
+#define SOF_TKN_GAIN_VAL 262
 #define SOF_TKN_SRC_RATE_IN 300
 #define SOF_TKN_SRC_RATE_OUT 301
 #define SOF_TKN_ASRC_RATE_IN 320
@@ -51,6 +56,9 @@
 #define SOF_TKN_COMP_FORMAT 402
 #define SOF_TKN_COMP_CORE_ID 404
 #define SOF_TKN_COMP_UUID 405
+#define SOF_TKN_COMP_CPC 406
+#define SOF_TKN_COMP_IS_PAGES 409
+#define SOF_TKN_COMP_NUM_AUDIO_FORMATS 410
 #define SOF_TKN_INTEL_SSP_CLKS_CONTROL 500
 #define SOF_TKN_INTEL_SSP_MCLK_ID 501
 #define SOF_TKN_INTEL_SSP_SAMPLE_BITS 502
@@ -90,4 +98,29 @@
 #define SOF_TKN_MEDIATEK_AFE_RATE 1600
 #define SOF_TKN_MEDIATEK_AFE_CH 1601
 #define SOF_TKN_MEDIATEK_AFE_FORMAT 1602
+#define SOF_TKN_MIXER_TYPE 1700
+#define SOF_TKN_AMD_ACPDMIC_RATE 1800
+#define SOF_TKN_AMD_ACPDMIC_CH 1801
+#define SOF_TKN_CAVS_AUDIO_FORMAT_IN_RATE 1900
+#define SOF_TKN_CAVS_AUDIO_FORMAT_IN_BIT_DEPTH 1901
+#define SOF_TKN_CAVS_AUDIO_FORMAT_IN_VALID_BIT 1902
+#define SOF_TKN_CAVS_AUDIO_FORMAT_IN_CHANNELS 1903
+#define SOF_TKN_CAVS_AUDIO_FORMAT_IN_CH_MAP 1904
+#define SOF_TKN_CAVS_AUDIO_FORMAT_IN_CH_CFG 1905
+#define SOF_TKN_CAVS_AUDIO_FORMAT_IN_INTERLEAVING_STYLE 1906
+#define SOF_TKN_CAVS_AUDIO_FORMAT_IN_FMT_CFG 1907
+#define SOF_TKN_CAVS_AUDIO_FORMAT_IN_SAMPLE_TYPE 1908
+#define SOF_TKN_CAVS_AUDIO_FORMAT_OUT_RATE 1930
+#define SOF_TKN_CAVS_AUDIO_FORMAT_OUT_BIT_DEPTH 1931
+#define SOF_TKN_CAVS_AUDIO_FORMAT_OUT_VALID_BIT 1932
+#define SOF_TKN_CAVS_AUDIO_FORMAT_OUT_CHANNELS 1933
+#define SOF_TKN_CAVS_AUDIO_FORMAT_OUT_CH_MAP 1934
+#define SOF_TKN_CAVS_AUDIO_FORMAT_OUT_CH_CFG 1935
+#define SOF_TKN_CAVS_AUDIO_FORMAT_OUT_INTERLEAVING_STYLE 1936
+#define SOF_TKN_CAVS_AUDIO_FORMAT_OUT_FMT_CFG 1937
+#define SOF_TKN_CAVS_AUDIO_FORMAT_OUT_SAMPLE_TYPE 1938
+#define SOF_TKN_CAVS_AUDIO_FORMAT_IBS 1970
+#define SOF_TKN_CAVS_AUDIO_FORMAT_OBS 1971
+#define SOF_TKN_CAVS_AUDIO_FORMAT_DMA_BUFFER_SIZE 1972
+#define SOF_TKN_INTEL_COPIER_NODE_TYPE 1980
 #endif
diff --git a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/sound/usb_stream.h b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/sound/usb_stream.h
index bb7fe80..ac87c31 100644
--- a/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/sound/usb_stream.h
+++ b/mainline/runtime/sdk/android/x86/include/bionic/libc/kernel/uapi/sound/usb_stream.h
@@ -49,7 +49,7 @@
   unsigned inpacket_split_at;
   unsigned next_inpacket_split;
   unsigned next_inpacket_split_at;
-  struct usb_stream_packet inpacket[0];
+  struct usb_stream_packet inpacket[];
 };
 enum usb_stream_state {
   usb_stream_invalid,
diff --git a/mainline/runtime/sdk/android/x86/lib/crtbegin_dynamic.o b/mainline/runtime/sdk/android/x86/lib/crtbegin_dynamic.o
index 25d1a2b..5c95bde 100644
--- a/mainline/runtime/sdk/android/x86/lib/crtbegin_dynamic.o
+++ b/mainline/runtime/sdk/android/x86/lib/crtbegin_dynamic.o
Binary files differ
diff --git a/mainline/runtime/sdk/android/x86/lib/crtbegin_so.o b/mainline/runtime/sdk/android/x86/lib/crtbegin_so.o
index 827166b..fc424aa 100644
--- a/mainline/runtime/sdk/android/x86/lib/crtbegin_so.o
+++ b/mainline/runtime/sdk/android/x86/lib/crtbegin_so.o
Binary files differ
diff --git a/mainline/runtime/sdk/android/x86/lib/crtend.o b/mainline/runtime/sdk/android/x86/lib/crtend.o
deleted file mode 100644
index 09b19ca..0000000
--- a/mainline/runtime/sdk/android/x86/lib/crtend.o
+++ /dev/null
Binary files differ
diff --git a/mainline/runtime/sdk/android/x86/lib/crtend_android.o b/mainline/runtime/sdk/android/x86/lib/crtend_android.o
new file mode 100644
index 0000000..c492c2a
--- /dev/null
+++ b/mainline/runtime/sdk/android/x86/lib/crtend_android.o
Binary files differ
diff --git a/mainline/runtime/sdk/android/x86/lib/crtend_so.o b/mainline/runtime/sdk/android/x86/lib/crtend_so.o
index 3bbe1cf..e8e9797 100644
--- a/mainline/runtime/sdk/android/x86/lib/crtend_so.o
+++ b/mainline/runtime/sdk/android/x86/lib/crtend_so.o
Binary files differ
diff --git a/mainline/runtime/sdk/android/x86/lib/libasync_safe.a b/mainline/runtime/sdk/android/x86/lib/libasync_safe.a
index 6c16d58..413b93a 100644
--- a/mainline/runtime/sdk/android/x86/lib/libasync_safe.a
+++ b/mainline/runtime/sdk/android/x86/lib/libasync_safe.a
Binary files differ
diff --git a/mainline/runtime/sdk/android/x86/lib/libc.so b/mainline/runtime/sdk/android/x86/lib/libc.so
index 9d94b6e..1a399d3 100755
--- a/mainline/runtime/sdk/android/x86/lib/libc.so
+++ b/mainline/runtime/sdk/android/x86/lib/libc.so
Binary files differ
diff --git a/mainline/runtime/sdk/android/x86/lib/libdl.so b/mainline/runtime/sdk/android/x86/lib/libdl.so
index 69bbd4f..b8bf7c6 100755
--- a/mainline/runtime/sdk/android/x86/lib/libdl.so
+++ b/mainline/runtime/sdk/android/x86/lib/libdl.so
Binary files differ
diff --git a/mainline/runtime/sdk/android/x86/lib/libdl_android.so b/mainline/runtime/sdk/android/x86/lib/libdl_android.so
index 25d6e97..fa70c32 100755
--- a/mainline/runtime/sdk/android/x86/lib/libdl_android.so
+++ b/mainline/runtime/sdk/android/x86/lib/libdl_android.so
Binary files differ
diff --git a/mainline/runtime/sdk/android/x86/lib/libm.so b/mainline/runtime/sdk/android/x86/lib/libm.so
index 0f2a877..e465baf 100755
--- a/mainline/runtime/sdk/android/x86/lib/libm.so
+++ b/mainline/runtime/sdk/android/x86/lib/libm.so
Binary files differ
diff --git a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/include/android/api-level.h b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/include/android/api-level.h
index ecf318d..79085d1 100644
--- a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/include/android/api-level.h
+++ b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/include/android/api-level.h
@@ -139,21 +139,32 @@
 #define __ANDROID_API_P__ 28
 
 /**
- * Names the "Q" API level (29), for comparison against `__ANDROID_API__`.
- * This release was called Android 10 publicly, not to be (but sure to be)
- * confused with API level 10.
+ * Names the Android 10 (aka "Q" or "Quince Tart") API level (29), for
+ * comparison against `__ANDROID_API__`.
  */
 #define __ANDROID_API_Q__ 29
 
-/** Names the "R" API level (30), for comparison against `__ANDROID_API__`. */
+/**
+ * Names the Android 11 (aka "R" or "Red Velvet Cake") API level (30), for
+ * comparison against `__ANDROID_API__`.
+ */
 #define __ANDROID_API_R__ 30
 
-/** Names the "S" API level (31), for comparison against `__ANDROID_API__`. */
+/**
+ * Names the Android 12 (aka "S" or "Snowcone") API level (31), for
+ * comparison against `__ANDROID_API__`.
+ */
 #define __ANDROID_API_S__ 31
 
-/** Names the "T" API level (33), for comparison against `__ANDROID_API__`. */
+/**
+ * Names the Android 13 (aka "T" or "Tiramisu") API level (33), for
+ * comparison against `__ANDROID_API__`.
+ */
 #define __ANDROID_API_T__ 33
 
+/** Names the "U" API level (34), for comparison against `__ANDROID_API__`. */
+#define __ANDROID_API_U__ 34
+
 /* This file is included in <features.h>, and might be used from .S files. */
 #if !defined(__ASSEMBLY__)
 
diff --git a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/include/android/fdsan.h b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/include/android/fdsan.h
index e23de85..59ce133 100644
--- a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/include/android/fdsan.h
+++ b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/include/android/fdsan.h
@@ -123,6 +123,9 @@
 
   /* libziparchive's ZipArchive */
   ANDROID_FDSAN_OWNER_TYPE_ZIPARCHIVE = 12,
+
+  /* native_handle_t */
+  ANDROID_FDSAN_OWNER_TYPE_NATIVE_HANDLE = 13,
 };
 
 /*
diff --git a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/include/android/legacy_stdlib_inlines.h b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/include/android/legacy_stdlib_inlines.h
index aeb1575..6903536 100644
--- a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/include/android/legacy_stdlib_inlines.h
+++ b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/include/android/legacy_stdlib_inlines.h
@@ -57,13 +57,11 @@
 __BEGIN_DECLS
 
 static __inline float strtof(const char* nptr, char** endptr) {
+  // N.B. Double-rounding makes this function incorrect for some inputs.
   double d = strtod(nptr, endptr);
-  if (d > FLT_MAX) {
+  if (__builtin_isfinite(d) && __builtin_fabs(d) > FLT_MAX) {
     errno = ERANGE;
-    return __builtin_huge_valf();
-  } else if (d < -FLT_MAX) {
-    errno = ERANGE;
-    return -__builtin_huge_valf();
+    return __builtin_copysign(__builtin_huge_valf(), d);
   }
   return __BIONIC_CAST(static_cast, float, d);
 }
diff --git a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/include/bits/elf_arm.h b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/include/bits/elf_arm.h
deleted file mode 100644
index 08fe1d5..0000000
--- a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/include/bits/elf_arm.h
+++ /dev/null
@@ -1,131 +0,0 @@
-/*	$NetBSD: elf_machdep.h,v 1.17 2014/02/25 19:20:09 matt Exp $	*/
-
-#ifndef _ARM_ELF_MACHDEP_H_
-#define _ARM_ELF_MACHDEP_H_
-
-/* Android-added. */
-#define R_ARM_IRELATIVE		160
-
-/* Processor specific flags for the ELF header e_flags field.  */
-#define EF_ARM_RELEXEC		0x00000001
-#define EF_ARM_HASENTRY		0x00000002
-#define EF_ARM_INTERWORK	0x00000004 /* GNU binutils 000413 */
-#define EF_ARM_SYMSARESORTED	0x00000004 /* ARM ELF A08 */
-#define EF_ARM_APCS_26		0x00000008 /* GNU binutils 000413 */
-#define EF_ARM_DYNSYMSUSESEGIDX	0x00000008 /* ARM ELF B01 */
-#define EF_ARM_APCS_FLOAT	0x00000010 /* GNU binutils 000413 */
-#define EF_ARM_MAPSYMSFIRST	0x00000010 /* ARM ELF B01 */
-#define EF_ARM_PIC		0x00000020
-#define EF_ARM_ALIGN8		0x00000040 /* 8-bit structure alignment.  */
-#define EF_ARM_NEW_ABI		0x00000080
-#define EF_ARM_OLD_ABI		0x00000100
-#define EF_ARM_SOFT_FLOAT	0x00000200
-#define EF_ARM_BE8		0x00800000
-#define EF_ARM_EABIMASK		0xff000000
-#define	EF_ARM_EABI_VER1	0x01000000
-#define	EF_ARM_EABI_VER2	0x02000000
-#define	EF_ARM_EABI_VER3	0x03000000
-#define	EF_ARM_EABI_VER4	0x04000000
-#define	EF_ARM_EABI_VER5	0x05000000
-
-/* Processor specific relocation types */
-
-#define R_ARM_NONE		0
-#define R_ARM_PC24		1
-#define R_ARM_ABS32		2
-#define R_ARM_REL32		3
-#define R_ARM_PC13		4
-#define R_ARM_ABS16		5
-#define R_ARM_ABS12		6
-#define R_ARM_THM_ABS5		7
-#define R_ARM_ABS8		8
-#define R_ARM_SBREL32		9
-#define R_ARM_THM_PC22		10
-#define R_ARM_THM_PC8		11
-#define R_ARM_AMP_VCALL9	12
-#define R_ARM_SWI24		13	/* obsolete static relocation */
-#define R_ARM_TLS_DESC		13	/* dynamic relocation */
-#define R_ARM_THM_SWI8		14
-#define R_ARM_XPC25		15
-#define R_ARM_THM_XPC22		16
-
-/* TLS relocations */
-#define R_ARM_TLS_DTPMOD32	17	/* ID of module containing symbol */
-#define R_ARM_TLS_DTPOFF32	18	/* Offset in TLS block */
-#define R_ARM_TLS_TPOFF32	19	/* Offset in static TLS block */
-
-/* 20-31 are reserved for ARM Linux. */
-#define R_ARM_COPY		20
-#define R_ARM_GLOB_DAT		21
-#define	R_ARM_JUMP_SLOT		22
-#define R_ARM_RELATIVE		23
-#define	R_ARM_GOTOFF		24
-#define R_ARM_GOTPC		25
-#define R_ARM_GOT32		26
-#define R_ARM_PLT32		27
-#define R_ARM_CALL		28
-#define R_ARM_JUMP24		29
-#define R_ARM_THM_JUMP24	30
-#define R_ARM_BASE_ABS		31
-#define R_ARM_ALU_PCREL_7_0	32
-#define R_ARM_ALU_PCREL_15_8	33
-#define R_ARM_ALU_PCREL_23_15	34
-#define R_ARM_ALU_SBREL_11_0	35
-#define R_ARM_ALU_SBREL_19_12	36
-#define R_ARM_ALU_SBREL_27_20	37	// depcreated
-#define R_ARM_TARGET1		38
-#define R_ARM_SBREL31		39	// deprecated
-#define R_ARM_V4BX		40
-#define R_ARM_TARGET2		41
-#define R_ARM_PREL31		42
-#define R_ARM_MOVW_ABS_NC	43
-#define R_ARM_MOVT_ABS		44
-#define R_ARM_MOVW_PREL_NC	45
-#define R_ARM_MOVT_PREL		46
-#define R_ARM_THM_MOVW_ABS_NC	47
-#define R_ARM_THM_MOVT_ABS	48
-#define R_ARM_THM_MOVW_PREL_NC	49
-#define R_ARM_THM_MOVT_PREL	50
-
-/* 96-111 are reserved to G++. */
-#define R_ARM_GNU_VTENTRY	100
-#define R_ARM_GNU_VTINHERIT	101
-#define R_ARM_THM_PC11		102
-#define R_ARM_THM_PC9		103
-
-/* More TLS relocations */
-#define R_ARM_TLS_GD32		104	/* PC-rel 32 bit for global dynamic */
-#define R_ARM_TLS_LDM32		105	/* PC-rel 32 bit for local dynamic */
-#define R_ARM_TLS_LDO32		106	/* 32 bit offset relative to TLS */
-#define R_ARM_TLS_IE32		107	/* PC-rel 32 bit for GOT entry of */
-#define R_ARM_TLS_LE32		108
-#define R_ARM_TLS_LDO12		109
-#define R_ARM_TLS_LE12		110
-#define R_ARM_TLS_IE12GP	111
-
-/* 112-127 are reserved for private experiments. */
-
-#define R_ARM_RXPC25		249
-#define R_ARM_RSBREL32		250
-#define R_ARM_THM_RPC22		251
-#define R_ARM_RREL32		252
-#define R_ARM_RABS32		253
-#define R_ARM_RPC24		254
-#define R_ARM_RBASE		255
-
-/* Processor specific program header flags */
-#define PF_ARM_SB		0x10000000
-#define PF_ARM_PI		0x20000000
-#define PF_ARM_ENTRY		0x80000000
-
-/* Processor specific program header types */
-#define PT_ARM_EXIDX		(PT_LOPROC + 1)
-
-/* Processor specific section header flags */
-#define SHF_ENTRYSECT		0x10000000
-#define SHF_COMDEF		0x80000000
-
-/* Processor specific symbol types */
-#define STT_ARM_TFUNC		STT_LOPROC
-
-#endif /* _ARM_ELF_MACHDEP_H_ */
diff --git a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/include/bits/elf_arm64.h b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/include/bits/elf_arm64.h
deleted file mode 100644
index 9330d7b..0000000
--- a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/include/bits/elf_arm64.h
+++ /dev/null
@@ -1,97 +0,0 @@
-/*
- * Copyright (C) 2013 The Android Open Source Project
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *  * Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- *  * Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
- * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
- * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
- * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
- * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- */
-
-#ifndef _AARCH64_ELF_MACHDEP_H_
-#define _AARCH64_ELF_MACHDEP_H_
-
-/* Null relocations */
-#define R_ARM_NONE                      0
-#define R_AARCH64_NONE                  256
-
-/* Static Data relocations */
-#define R_AARCH64_ABS64                 257
-#define R_AARCH64_ABS32                 258
-#define R_AARCH64_ABS16                 259
-#define R_AARCH64_PREL64                260
-#define R_AARCH64_PREL32                261
-#define R_AARCH64_PREL16                262
-
-#define R_AARCH64_MOVW_UABS_G0          263
-#define R_AARCH64_MOVW_UABS_G0_NC       264
-#define R_AARCH64_MOVW_UABS_G1          265
-#define R_AARCH64_MOVW_UABS_G1_NC       266
-#define R_AARCH64_MOVW_UABS_G2          267
-#define R_AARCH64_MOVW_UABS_G2_NC       268
-#define R_AARCH64_MOVW_UABS_G3          269
-#define R_AARCH64_MOVW_SABS_G0          270
-#define R_AARCH64_MOVW_SABS_G1          271
-#define R_AARCH64_MOVW_SABS_G2          272
-
-/* PC-relative addresses */
-#define R_AARCH64_LD_PREL_LO19          273
-#define R_AARCH64_ADR_PREL_LO21         274
-#define R_AARCH64_ADR_PREL_PG_HI21      275
-#define R_AARCH64_ADR_PREL_PG_HI21_NC   276
-#define R_AARCH64_ADD_ABS_LO12_NC       277
-#define R_AARCH64_LDST8_ABS_LO12_NC     278
-
-/* Control-flow relocations */
-#define R_AARCH64_TSTBR14               279
-#define R_AARCH64_CONDBR19              280
-#define R_AARCH64_JUMP26                282
-#define R_AARCH64_CALL26                283
-#define R_AARCH64_LDST16_ABS_LO12_NC    284
-#define R_AARCH64_LDST32_ABS_LO12_NC    285
-#define R_AARCH64_LDST64_ABS_LO12_NC    286
-#define R_AARCH64_LDST128_ABS_LO12_NC   299
-
-#define R_AARCH64_MOVW_PREL_G0          287
-#define R_AARCH64_MOVW_PREL_G0_NC       288
-#define R_AARCH64_MOVW_PREL_G1          289
-#define R_AARCH64_MOVW_PREL_G1_NC       290
-#define R_AARCH64_MOVW_PREL_G2          291
-#define R_AARCH64_MOVW_PREL_G2_NC       292
-#define R_AARCH64_MOVW_PREL_G3          293
-
-/* Dynamic relocations */
-#define R_AARCH64_COPY                  1024
-#define R_AARCH64_GLOB_DAT              1025    /* Create GOT entry.  */
-#define R_AARCH64_JUMP_SLOT             1026    /* Create PLT entry.  */
-#define R_AARCH64_RELATIVE              1027    /* Adjust by program base.  */
-#define R_AARCH64_TLS_DTPMOD            1028    /* Module index. */
-#define R_AARCH64_TLS_DTPREL            1029    /* Module-relative offset. */
-#define R_AARCH64_TLS_TPREL             1030    /* TP-relative offset. */
-#define R_AARCH64_TLSDESC               1031    /* 16-byte descriptor: resolver func + arg. */
-#define R_AARCH64_IRELATIVE             1032
-
-/* Dynamic array tags */
-#define DT_AARCH64_BTI_PLT              0x70000001
-#define DT_AARCH64_PAC_PLT              0x70000003
-#define DT_AARCH64_VARIANT_PCS          0x70000005
-
-#endif /* _AARCH64_ELF_MACHDEP_H_ */
diff --git a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/include/bits/elf_common.h b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/include/bits/elf_common.h
new file mode 100644
index 0000000..ea833f4
--- /dev/null
+++ b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/include/bits/elf_common.h
@@ -0,0 +1,1430 @@
+/*-
+ * SPDX-License-Identifier: BSD-2-Clause-FreeBSD
+ *
+ * Copyright (c) 2017, 2018 Dell EMC
+ * Copyright (c) 2000, 2001, 2008, 2011, David E. O'Brien
+ * Copyright (c) 1998 John D. Polstra.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ *
+ * $FreeBSD$
+ */
+
+#ifndef _SYS_ELF_COMMON_H_
+#define	_SYS_ELF_COMMON_H_ 1
+
+/*
+ * ELF definitions that are independent of architecture or word size.
+ */
+
+/*
+ * Option kinds.
+ */
+#define	ODK_NULL	0	/* undefined */
+#define	ODK_REGINFO	1	/* register usage info */
+#define	ODK_EXCEPTIONS	2	/* exception processing info */
+#define	ODK_PAD		3	/* section padding */
+#define	ODK_HWPATCH	4	/* hardware patch applied */
+#define	ODK_FILL	5	/* fill value used by the linker */
+#define	ODK_TAGS	6	/* reserved space for tools */
+#define	ODK_HWAND	7	/* hardware AND patch applied */
+#define	ODK_HWOR	8	/* hardware OR patch applied */
+#define	ODK_GP_GROUP	9	/* GP group for text/data sections */
+#define	ODK_IDENT	10	/* ID information */
+#define	ODK_PAGESIZE	11	/* page size information */
+
+/*
+ * ODK_EXCEPTIONS info field masks.
+ */
+#define	OEX_FPU_MIN	0x0000001f	/* min FPU exception required */
+#define	OEX_FPU_MAX	0x00001f00	/* max FPU exception allowed */
+#define	OEX_PAGE0	0x00010000	/* page zero must be mapped */
+#define	OEX_SMM		0x00020000	/* run in sequential memory mode */
+#define	OEX_PRECISEFP	0x00040000	/* run in precise FP exception mode */
+#define	OEX_DISMISS	0x00080000	/* dismiss invalid address traps */
+
+/*
+ * ODK_PAD info field masks.
+ */
+#define	OPAD_PREFIX	0x0001
+#define	OPAD_POSTFIX	0x0002
+#define	OPAD_SYMBOL	0x0004
+
+/*
+ * ODK_HWPATCH info field masks.
+ */
+#define	OHW_R4KEOP	0x00000001	/* patch for R4000 branch at end-of-page bug */
+#define	OHW_R8KPFETCH	0x00000002	/* R8000 prefetch bug may occur */
+#define	OHW_R5KEOP	0x00000004	/* patch for R5000 branch at end-of-page bug */
+#define	OHW_R5KCVTL	0x00000008	/* R5000 cvt.[ds].l bug: clean == 1 */
+#define	OHW_R10KLDL	0x00000010UL	/* need patch for R10000 misaligned load */
+
+/*
+ * ODK_HWAND/ODK_HWOR info field and hwp_flags[12] masks.
+ */
+#define	OHWA0_R4KEOP_CHECKED	0x00000001	/* object checked for R4000 end-of-page bug */
+#define	OHWA0_R4KEOP_CLEAN	0x00000002	/* object verified clean for R4000 end-of-page bug */
+#define	OHWO0_FIXADE		0x00000001	/* object requires call to fixade */
+
+/*
+ * ODK_IDENT/ODK_GP_GROUP info field masks.
+ */
+#define	OGP_GROUP	0x0000ffff	/* GP group number */
+#define	OGP_SELF	0x00010000	/* GP group is self-contained */
+
+/* Indexes into the e_ident array.  Keep synced with
+   http://www.sco.com/developers/gabi/latest/ch4.eheader.html */
+#define	EI_MAG0		0	/* Magic number, byte 0. */
+#define	EI_MAG1		1	/* Magic number, byte 1. */
+#define	EI_MAG2		2	/* Magic number, byte 2. */
+#define	EI_MAG3		3	/* Magic number, byte 3. */
+#define	EI_CLASS	4	/* Class of machine. */
+#define	EI_DATA		5	/* Data format. */
+#define	EI_VERSION	6	/* ELF format version. */
+#define	EI_OSABI	7	/* Operating system / ABI identification */
+#define	EI_ABIVERSION	8	/* ABI version */
+#define	OLD_EI_BRAND	8	/* Start of architecture identification. */
+#define	EI_PAD		9	/* Start of padding (per SVR4 ABI). */
+#define	EI_NIDENT	16	/* Size of e_ident array. */
+
+/* Values for the magic number bytes. */
+#define	ELFMAG0		0x7f
+#define	ELFMAG1		'E'
+#define	ELFMAG2		'L'
+#define	ELFMAG3		'F'
+#define	ELFMAG		"\177ELF"	/* magic string */
+#define	SELFMAG		4		/* magic string size */
+
+/* Values for e_ident[EI_VERSION] and e_version. */
+#define	EV_NONE		0
+#define	EV_CURRENT	1
+
+/* Values for e_ident[EI_CLASS]. */
+#define	ELFCLASSNONE	0	/* Unknown class. */
+#define	ELFCLASS32	1	/* 32-bit architecture. */
+#define	ELFCLASS64	2	/* 64-bit architecture. */
+
+/* Values for e_ident[EI_DATA]. */
+#define	ELFDATANONE	0	/* Unknown data format. */
+#define	ELFDATA2LSB	1	/* 2's complement little-endian. */
+#define	ELFDATA2MSB	2	/* 2's complement big-endian. */
+
+/* Values for e_ident[EI_OSABI]. */
+#define	ELFOSABI_NONE		0	/* UNIX System V ABI */
+#define	ELFOSABI_HPUX		1	/* HP-UX operating system */
+#define	ELFOSABI_NETBSD		2	/* NetBSD */
+#define	ELFOSABI_LINUX		3	/* GNU/Linux */
+#define	ELFOSABI_HURD		4	/* GNU/Hurd */
+#define	ELFOSABI_86OPEN		5	/* 86Open common IA32 ABI */
+#define	ELFOSABI_SOLARIS	6	/* Solaris */
+#define	ELFOSABI_AIX		7	/* AIX */
+#define	ELFOSABI_IRIX		8	/* IRIX */
+#define	ELFOSABI_FREEBSD	9	/* FreeBSD */
+#define	ELFOSABI_TRU64		10	/* TRU64 UNIX */
+#define	ELFOSABI_MODESTO	11	/* Novell Modesto */
+#define	ELFOSABI_OPENBSD	12	/* OpenBSD */
+#define	ELFOSABI_OPENVMS	13	/* Open VMS */
+#define	ELFOSABI_NSK		14	/* HP Non-Stop Kernel */
+#define	ELFOSABI_AROS		15	/* Amiga Research OS */
+#define	ELFOSABI_FENIXOS	16	/* FenixOS */
+#define	ELFOSABI_CLOUDABI	17	/* Nuxi CloudABI */
+#define	ELFOSABI_OPENVOS	18	/* Stratus Technologies OpenVOS */
+#define	ELFOSABI_ARM_AEABI	64	/* ARM EABI */
+#define	ELFOSABI_ARM		97	/* ARM */
+#define	ELFOSABI_STANDALONE	255	/* Standalone (embedded) application */
+
+#define	ELFOSABI_MONTEREY	ELFOSABI_AIX	/* Monterey */
+
+/* e_ident */
+#define	IS_ELF(ehdr)	((ehdr).e_ident[EI_MAG0] == ELFMAG0 && \
+			 (ehdr).e_ident[EI_MAG1] == ELFMAG1 && \
+			 (ehdr).e_ident[EI_MAG2] == ELFMAG2 && \
+			 (ehdr).e_ident[EI_MAG3] == ELFMAG3)
+
+/* Values for e_type. */
+#define	ET_NONE		0	/* Unknown type. */
+#define	ET_REL		1	/* Relocatable. */
+#define	ET_EXEC		2	/* Executable. */
+#define	ET_DYN		3	/* Shared object. */
+#define	ET_CORE		4	/* Core file. */
+#define	ET_LOOS		0xfe00	/* First operating system specific. */
+#define	ET_HIOS		0xfeff	/* Last operating system-specific. */
+#define	ET_LOPROC	0xff00	/* First processor-specific. */
+#define	ET_HIPROC	0xffff	/* Last processor-specific. */
+
+/* Values for e_machine. */
+#define	EM_NONE		0	/* Unknown machine. */
+#define	EM_M32		1	/* AT&T WE32100. */
+#define	EM_SPARC	2	/* Sun SPARC. */
+#define	EM_386		3	/* Intel i386. */
+#define	EM_68K		4	/* Motorola 68000. */
+#define	EM_88K		5	/* Motorola 88000. */
+#define	EM_IAMCU	6	/* Intel MCU. */
+#define	EM_860		7	/* Intel i860. */
+#define	EM_MIPS		8	/* MIPS R3000 Big-Endian only. */
+#define	EM_S370		9	/* IBM System/370. */
+#define	EM_MIPS_RS3_LE	10	/* MIPS R3000 Little-Endian. */
+#define	EM_PARISC	15	/* HP PA-RISC. */
+#define	EM_VPP500	17	/* Fujitsu VPP500. */
+#define	EM_SPARC32PLUS	18	/* SPARC v8plus. */
+#define	EM_960		19	/* Intel 80960. */
+#define	EM_PPC		20	/* PowerPC 32-bit. */
+#define	EM_PPC64	21	/* PowerPC 64-bit. */
+#define	EM_S390		22	/* IBM System/390. */
+#define	EM_V800		36	/* NEC V800. */
+#define	EM_FR20		37	/* Fujitsu FR20. */
+#define	EM_RH32		38	/* TRW RH-32. */
+#define	EM_RCE		39	/* Motorola RCE. */
+#define	EM_ARM		40	/* ARM. */
+#define	EM_SH		42	/* Hitachi SH. */
+#define	EM_SPARCV9	43	/* SPARC v9 64-bit. */
+#define	EM_TRICORE	44	/* Siemens TriCore embedded processor. */
+#define	EM_ARC		45	/* Argonaut RISC Core. */
+#define	EM_H8_300	46	/* Hitachi H8/300. */
+#define	EM_H8_300H	47	/* Hitachi H8/300H. */
+#define	EM_H8S		48	/* Hitachi H8S. */
+#define	EM_H8_500	49	/* Hitachi H8/500. */
+#define	EM_IA_64	50	/* Intel IA-64 Processor. */
+#define	EM_MIPS_X	51	/* Stanford MIPS-X. */
+#define	EM_COLDFIRE	52	/* Motorola ColdFire. */
+#define	EM_68HC12	53	/* Motorola M68HC12. */
+#define	EM_MMA		54	/* Fujitsu MMA. */
+#define	EM_PCP		55	/* Siemens PCP. */
+#define	EM_NCPU		56	/* Sony nCPU. */
+#define	EM_NDR1		57	/* Denso NDR1 microprocessor. */
+#define	EM_STARCORE	58	/* Motorola Star*Core processor. */
+#define	EM_ME16		59	/* Toyota ME16 processor. */
+#define	EM_ST100	60	/* STMicroelectronics ST100 processor. */
+#define	EM_TINYJ	61	/* Advanced Logic Corp. TinyJ processor. */
+#define	EM_X86_64	62	/* Advanced Micro Devices x86-64 */
+#define	EM_AMD64	EM_X86_64	/* Advanced Micro Devices x86-64 (compat) */
+#define	EM_PDSP		63	/* Sony DSP Processor. */
+#define	EM_FX66		66	/* Siemens FX66 microcontroller. */
+#define	EM_ST9PLUS	67	/* STMicroelectronics ST9+ 8/16
+				   microcontroller. */
+#define	EM_ST7		68	/* STmicroelectronics ST7 8-bit
+				   microcontroller. */
+#define	EM_68HC16	69	/* Motorola MC68HC16 microcontroller. */
+#define	EM_68HC11	70	/* Motorola MC68HC11 microcontroller. */
+#define	EM_68HC08	71	/* Motorola MC68HC08 microcontroller. */
+#define	EM_68HC05	72	/* Motorola MC68HC05 microcontroller. */
+#define	EM_SVX		73	/* Silicon Graphics SVx. */
+#define	EM_ST19		74	/* STMicroelectronics ST19 8-bit mc. */
+#define	EM_VAX		75	/* Digital VAX. */
+#define	EM_CRIS		76	/* Axis Communications 32-bit embedded
+				   processor. */
+#define	EM_JAVELIN	77	/* Infineon Technologies 32-bit embedded
+				   processor. */
+#define	EM_FIREPATH	78	/* Element 14 64-bit DSP Processor. */
+#define	EM_ZSP		79	/* LSI Logic 16-bit DSP Processor. */
+#define	EM_MMIX		80	/* Donald Knuth's educational 64-bit proc. */
+#define	EM_HUANY	81	/* Harvard University machine-independent
+				   object files. */
+#define	EM_PRISM	82	/* SiTera Prism. */
+#define	EM_AVR		83	/* Atmel AVR 8-bit microcontroller. */
+#define	EM_FR30		84	/* Fujitsu FR30. */
+#define	EM_D10V		85	/* Mitsubishi D10V. */
+#define	EM_D30V		86	/* Mitsubishi D30V. */
+#define	EM_V850		87	/* NEC v850. */
+#define	EM_M32R		88	/* Mitsubishi M32R. */
+#define	EM_MN10300	89	/* Matsushita MN10300. */
+#define	EM_MN10200	90	/* Matsushita MN10200. */
+#define	EM_PJ		91	/* picoJava. */
+#define	EM_OPENRISC	92	/* OpenRISC 32-bit embedded processor. */
+#define	EM_ARC_A5	93	/* ARC Cores Tangent-A5. */
+#define	EM_XTENSA	94	/* Tensilica Xtensa Architecture. */
+#define	EM_VIDEOCORE	95	/* Alphamosaic VideoCore processor. */
+#define	EM_TMM_GPP	96	/* Thompson Multimedia General Purpose
+				   Processor. */
+#define	EM_NS32K	97	/* National Semiconductor 32000 series. */
+#define	EM_TPC		98	/* Tenor Network TPC processor. */
+#define	EM_SNP1K	99	/* Trebia SNP 1000 processor. */
+#define	EM_ST200	100	/* STMicroelectronics ST200 microcontroller. */
+#define	EM_IP2K		101	/* Ubicom IP2xxx microcontroller family. */
+#define	EM_MAX		102	/* MAX Processor. */
+#define	EM_CR		103	/* National Semiconductor CompactRISC
+				   microprocessor. */
+#define	EM_F2MC16	104	/* Fujitsu F2MC16. */
+#define	EM_MSP430	105	/* Texas Instruments embedded microcontroller
+				   msp430. */
+#define	EM_BLACKFIN	106	/* Analog Devices Blackfin (DSP) processor. */
+#define	EM_SE_C33	107	/* S1C33 Family of Seiko Epson processors. */
+#define	EM_SEP		108	/* Sharp embedded microprocessor. */
+#define	EM_ARCA		109	/* Arca RISC Microprocessor. */
+#define	EM_UNICORE	110	/* Microprocessor series from PKU-Unity Ltd.
+				   and MPRC of Peking University */
+#define	EM_AARCH64	183	/* AArch64 (64-bit ARM) */
+#define	EM_RISCV	243	/* RISC-V */
+
+/* Non-standard or deprecated. */
+#define	EM_486		6	/* Intel i486. */
+#define	EM_MIPS_RS4_BE	10	/* MIPS R4000 Big-Endian */
+#define	EM_ALPHA_STD	41	/* Digital Alpha (standard value). */
+#define	EM_ALPHA	0x9026	/* Alpha (written in the absence of an ABI) */
+
+/**
+ * e_flags
+ */
+#define	EF_ARM_RELEXEC	0x1
+#define	EF_ARM_HASENTRY	0x2
+#define	EF_ARM_SYMSARESORTED	0x4
+#define	EF_ARM_DYNSYMSUSESEGIDX	0x8
+#define	EF_ARM_MAPSYMSFIRST	0x10
+#define	EF_ARM_LE8		0x00400000
+#define	EF_ARM_BE8		0x00800000
+#define	EF_ARM_EABIMASK		0xFF000000
+#define	EF_ARM_EABI_UNKNOWN	0x00000000
+#define	EF_ARM_EABI_VER1	0x01000000
+#define	EF_ARM_EABI_VER2	0x02000000
+#define	EF_ARM_EABI_VER3	0x03000000
+#define	EF_ARM_EABI_VER4	0x04000000
+#define	EF_ARM_EABI_VER5	0x05000000
+#define	EF_ARM_INTERWORK	0x00000004
+#define	EF_ARM_APCS_26		0x00000008
+#define	EF_ARM_APCS_FLOAT	0x00000010
+#define	EF_ARM_PIC		0x00000020
+#define	EF_ARM_ALIGN8		0x00000040
+#define	EF_ARM_NEW_ABI		0x00000080
+#define	EF_ARM_OLD_ABI		0x00000100
+#define	EF_ARM_ABI_FLOAT_SOFT	0x00000200
+#define	EF_ARM_SOFT_FLOAT	EF_ARM_ABI_FLOAT_SOFT /* Pre-V5 ABI name */
+#define	EF_ARM_ABI_FLOAT_HARD	0x00000400
+#define	EF_ARM_VFP_FLOAT	EF_ARM_ABI_FLOAT_HARD /* Pre-V5 ABI name */
+#define	EF_ARM_MAVERICK_FLOAT	0x00000800
+
+#define	EF_MIPS_NOREORDER	0x00000001
+#define	EF_MIPS_PIC		0x00000002	/* Contains PIC code */
+#define	EF_MIPS_CPIC		0x00000004	/* STD PIC calling sequence */
+#define	EF_MIPS_UCODE		0x00000010
+#define	EF_MIPS_ABI2		0x00000020	/* N32 */
+#define	EF_MIPS_OPTIONS_FIRST	0x00000080
+#define	EF_MIPS_ABI		0x0000F000
+#define	EF_MIPS_ABI_O32		0x00001000
+#define	EF_MIPS_ABI_O64		0x00002000
+#define	EF_MIPS_ABI_EABI32	0x00003000
+#define	EF_MIPS_ABI_EABI64	0x00004000
+#define	EF_MIPS_ARCH_ASE	0x0F000000	/* Architectural extensions */
+#define	EF_MIPS_ARCH_ASE_MDMX	0x08000000	/* MDMX multimedia extension */
+#define	EF_MIPS_ARCH_ASE_M16	0x04000000	/* MIPS-16 ISA extensions */
+#define	EF_MIPS_ARCH		0xF0000000	/* Architecture field */
+#define	EF_MIPS_ARCH_1		0x00000000	/* -mips1 code */
+#define	EF_MIPS_ARCH_2		0x10000000	/* -mips2 code */
+#define	EF_MIPS_ARCH_3		0x20000000	/* -mips3 code */
+#define	EF_MIPS_ARCH_4		0x30000000	/* -mips4 code */
+#define	EF_MIPS_ARCH_5		0x40000000	/* -mips5 code */
+#define	EF_MIPS_ARCH_32		0x50000000	/* -mips32 code */
+#define	EF_MIPS_ARCH_64		0x60000000	/* -mips64 code */
+#define	EF_MIPS_ARCH_32R2	0x70000000	/* -mips32r2 code */
+#define	EF_MIPS_ARCH_64R2	0x80000000	/* -mips64r2 code */
+
+#define	EF_PPC_EMB		0x80000000
+#define	EF_PPC_RELOCATABLE	0x00010000
+#define	EF_PPC_RELOCATABLE_LIB	0x00008000
+
+#define	EF_RISCV_RVC		0x00000001
+#define	EF_RISCV_FLOAT_ABI_MASK	0x00000006
+#define	EF_RISCV_FLOAT_ABI_SOFT	0x00000000
+#define	EF_RISCV_FLOAT_ABI_SINGLE 0x000002
+#define	EF_RISCV_FLOAT_ABI_DOUBLE 0x000004
+#define	EF_RISCV_FLOAT_ABI_QUAD	0x00000006
+#define	EF_RISCV_RVE		0x00000008
+#define	EF_RISCV_TSO		0x00000010
+
+#define	EF_SPARC_EXT_MASK	0x00ffff00
+#define	EF_SPARC_32PLUS		0x00000100
+#define	EF_SPARC_SUN_US1	0x00000200
+#define	EF_SPARC_HAL_R1		0x00000200
+#define	EF_SPARC_SUN_US3	0x00000800
+
+#define	EF_SPARCV9_MM		0x00000003
+#define	EF_SPARCV9_TSO		0x00000000
+#define	EF_SPARCV9_PSO		0x00000001
+#define	EF_SPARCV9_RMO		0x00000002
+
+/* Special section indexes. */
+#define	SHN_UNDEF	     0		/* Undefined, missing, irrelevant. */
+#define	SHN_LORESERVE	0xff00		/* First of reserved range. */
+#define	SHN_LOPROC	0xff00		/* First processor-specific. */
+#define	SHN_HIPROC	0xff1f		/* Last processor-specific. */
+#define	SHN_LOOS	0xff20		/* First operating system-specific. */
+#define	SHN_FBSD_CACHED	SHN_LOOS	/* Transient, for sys/kern/link_elf_obj
+					   linker only: Cached global in local
+					   symtab. */
+#define	SHN_HIOS	0xff3f		/* Last operating system-specific. */
+#define	SHN_ABS		0xfff1		/* Absolute values. */
+#define	SHN_COMMON	0xfff2		/* Common data. */
+#define	SHN_XINDEX	0xffff		/* Escape -- index stored elsewhere. */
+#define	SHN_HIRESERVE	0xffff		/* Last of reserved range. */
+
+/* sh_type */
+#define	SHT_NULL		0	/* inactive */
+#define	SHT_PROGBITS		1	/* program defined information */
+#define	SHT_SYMTAB		2	/* symbol table section */
+#define	SHT_STRTAB		3	/* string table section */
+#define	SHT_RELA		4	/* relocation section with addends */
+#define	SHT_HASH		5	/* symbol hash table section */
+#define	SHT_DYNAMIC		6	/* dynamic section */
+#define	SHT_NOTE		7	/* note section */
+#define	SHT_NOBITS		8	/* no space section */
+#define	SHT_REL			9	/* relocation section - no addends */
+#define	SHT_SHLIB		10	/* reserved - purpose unknown */
+#define	SHT_DYNSYM		11	/* dynamic symbol table section */
+#define	SHT_INIT_ARRAY		14	/* Initialization function pointers. */
+#define	SHT_FINI_ARRAY		15	/* Termination function pointers. */
+#define	SHT_PREINIT_ARRAY	16	/* Pre-initialization function ptrs. */
+#define	SHT_GROUP		17	/* Section group. */
+#define	SHT_SYMTAB_SHNDX	18	/* Section indexes (see SHN_XINDEX). */
+#define	SHT_LOOS		0x60000000	/* First of OS specific semantics */
+#define	SHT_LOSUNW		0x6ffffff4
+#define	SHT_SUNW_dof		0x6ffffff4
+#define	SHT_SUNW_cap		0x6ffffff5
+#define	SHT_GNU_ATTRIBUTES	0x6ffffff5
+#define	SHT_SUNW_SIGNATURE	0x6ffffff6
+#define	SHT_GNU_HASH		0x6ffffff6
+#define	SHT_GNU_LIBLIST		0x6ffffff7
+#define	SHT_SUNW_ANNOTATE	0x6ffffff7
+#define	SHT_SUNW_DEBUGSTR	0x6ffffff8
+#define	SHT_SUNW_DEBUG		0x6ffffff9
+#define	SHT_SUNW_move		0x6ffffffa
+#define	SHT_SUNW_COMDAT		0x6ffffffb
+#define	SHT_SUNW_syminfo	0x6ffffffc
+#define	SHT_SUNW_verdef		0x6ffffffd
+#define	SHT_GNU_verdef		0x6ffffffd	/* Symbol versions provided */
+#define	SHT_SUNW_verneed	0x6ffffffe
+#define	SHT_GNU_verneed		0x6ffffffe	/* Symbol versions required */
+#define	SHT_SUNW_versym		0x6fffffff
+#define	SHT_GNU_versym		0x6fffffff	/* Symbol version table */
+#define	SHT_HISUNW		0x6fffffff
+#define	SHT_HIOS		0x6fffffff	/* Last of OS specific semantics */
+#define	SHT_LOPROC		0x70000000	/* reserved range for processor */
+#define	SHT_X86_64_UNWIND	0x70000001	/* unwind information */
+#define	SHT_AMD64_UNWIND	SHT_X86_64_UNWIND 
+
+#define	SHT_ARM_EXIDX		0x70000001	/* Exception index table. */
+#define	SHT_ARM_PREEMPTMAP	0x70000002	/* BPABI DLL dynamic linking 
+						   pre-emption map. */
+#define	SHT_ARM_ATTRIBUTES	0x70000003	/* Object file compatibility 
+						   attributes. */
+#define	SHT_ARM_DEBUGOVERLAY	0x70000004	/* See DBGOVL for details. */
+#define	SHT_ARM_OVERLAYSECTION	0x70000005	/* See DBGOVL for details. */
+#define	SHT_MIPS_LIBLIST	0x70000000
+#define	SHT_MIPS_MSYM		0x70000001
+#define	SHT_MIPS_CONFLICT	0x70000002
+#define	SHT_MIPS_GPTAB		0x70000003
+#define	SHT_MIPS_UCODE		0x70000004
+#define	SHT_MIPS_DEBUG		0x70000005
+#define	SHT_MIPS_REGINFO	0x70000006
+#define	SHT_MIPS_PACKAGE	0x70000007
+#define	SHT_MIPS_PACKSYM	0x70000008
+#define	SHT_MIPS_RELD		0x70000009
+#define	SHT_MIPS_IFACE		0x7000000b
+#define	SHT_MIPS_CONTENT	0x7000000c
+#define	SHT_MIPS_OPTIONS	0x7000000d
+#define	SHT_MIPS_DELTASYM	0x7000001b
+#define	SHT_MIPS_DELTAINST	0x7000001c
+#define	SHT_MIPS_DELTACLASS	0x7000001d
+#define	SHT_MIPS_DWARF		0x7000001e	/* MIPS gcc uses MIPS_DWARF */
+#define	SHT_MIPS_DELTADECL	0x7000001f
+#define	SHT_MIPS_SYMBOL_LIB	0x70000020
+#define	SHT_MIPS_EVENTS		0x70000021
+#define	SHT_MIPS_TRANSLATE	0x70000022
+#define	SHT_MIPS_PIXIE		0x70000023
+#define	SHT_MIPS_XLATE		0x70000024
+#define	SHT_MIPS_XLATE_DEBUG	0x70000025
+#define	SHT_MIPS_WHIRL		0x70000026
+#define	SHT_MIPS_EH_REGION	0x70000027
+#define	SHT_MIPS_XLATE_OLD	0x70000028
+#define	SHT_MIPS_PDR_EXCEPTION	0x70000029
+#define	SHT_MIPS_ABIFLAGS	0x7000002a
+
+#define	SHT_SPARC_GOTDATA	0x70000000
+
+#define	SHTORDERED
+#define	SHT_HIPROC		0x7fffffff	/* specific section header types */
+#define	SHT_LOUSER		0x80000000	/* reserved range for application */
+#define	SHT_HIUSER		0xffffffff	/* specific indexes */
+
+/* Flags for sh_flags. */
+#define	SHF_WRITE		0x1	/* Section contains writable data. */
+#define	SHF_ALLOC		0x2	/* Section occupies memory. */
+#define	SHF_EXECINSTR		0x4	/* Section contains instructions. */
+#define	SHF_MERGE		0x10	/* Section may be merged. */
+#define	SHF_STRINGS		0x20	/* Section contains strings. */
+#define	SHF_INFO_LINK		0x40	/* sh_info holds section index. */
+#define	SHF_LINK_ORDER		0x80	/* Special ordering requirements. */
+#define	SHF_OS_NONCONFORMING	0x100	/* OS-specific processing required. */
+#define	SHF_GROUP		0x200	/* Member of section group. */
+#define	SHF_TLS			0x400	/* Section contains TLS data. */
+#define	SHF_COMPRESSED		0x800	/* Section contains compressed data. */
+#define	SHF_MASKOS	0x0ff00000	/* OS-specific semantics. */
+#define	SHF_MASKPROC	0xf0000000	/* Processor-specific semantics. */
+
+/* Flags for section groups. */
+#define	GRP_COMDAT	0x1	/* COMDAT semantics. */
+
+/*
+ * Flags / mask for .gnu.versym sections.
+ */
+#define	VERSYM_VERSION	0x7fff
+#define	VERSYM_HIDDEN	0x8000
+
+/* Values for p_type. */
+#define	PT_NULL		0	/* Unused entry. */
+#define	PT_LOAD		1	/* Loadable segment. */
+#define	PT_DYNAMIC	2	/* Dynamic linking information segment. */
+#define	PT_INTERP	3	/* Pathname of interpreter. */
+#define	PT_NOTE		4	/* Auxiliary information. */
+#define	PT_SHLIB	5	/* Reserved (not used). */
+#define	PT_PHDR		6	/* Location of program header itself. */
+#define	PT_TLS		7	/* Thread local storage segment */
+#define	PT_LOOS		0x60000000	/* First OS-specific. */
+#define	PT_SUNW_UNWIND	0x6464e550	/* amd64 UNWIND program header */
+#define	PT_DUMP_DELTA	0x6fb5d000	/* va->pa map for kernel dumps
+					   (currently arm). */
+#define	PT_LOSUNW	0x6ffffffa
+#define	PT_SUNWBSS	0x6ffffffa	/* Sun Specific segment */
+#define	PT_SUNWSTACK	0x6ffffffb	/* describes the stack segment */
+#define	PT_SUNWDTRACE	0x6ffffffc	/* private */
+#define	PT_SUNWCAP	0x6ffffffd	/* hard/soft capabilities segment */
+#define	PT_HISUNW	0x6fffffff
+#define	PT_HIOS		0x6fffffff	/* Last OS-specific. */
+#define	PT_LOPROC	0x70000000	/* First processor-specific type. */
+#define	PT_ARM_ARCHEXT	0x70000000	/* ARM arch compat information. */
+#define	PT_ARM_EXIDX	0x70000001	/* ARM exception unwind tables. */
+#define	PT_MIPS_REGINFO		0x70000000	/* MIPS register usage info */
+#define	PT_MIPS_RTPROC		0x70000001	/* MIPS runtime procedure tbl */
+#define	PT_MIPS_OPTIONS		0x70000002	/* MIPS e_flags value*/
+#define	PT_MIPS_ABIFLAGS	0x70000003	/* MIPS fp mode */
+#define	PT_HIPROC	0x7fffffff	/* Last processor-specific type. */
+
+#define	PT_OPENBSD_RANDOMIZE	0x65A3DBE6	/* OpenBSD random data segment */
+#define	PT_OPENBSD_WXNEEDED	0x65A3DBE7	/* OpenBSD EXEC/WRITE pages needed */
+#define	PT_OPENBSD_BOOTDATA	0x65A41BE6	/* OpenBSD section for boot args */
+
+/* Values for p_flags. */
+#define	PF_X		0x1		/* Executable. */
+#define	PF_W		0x2		/* Writable. */
+#define	PF_R		0x4		/* Readable. */
+#define	PF_MASKOS	0x0ff00000	/* Operating system-specific. */
+#define	PF_MASKPROC	0xf0000000	/* Processor-specific. */
+
+/* Extended program header index. */
+#define	PN_XNUM		0xffff
+
+/* Values for d_tag. */
+#define	DT_NULL		0	/* Terminating entry. */
+#define	DT_NEEDED	1	/* String table offset of a needed shared
+				   library. */
+#define	DT_PLTRELSZ	2	/* Total size in bytes of PLT relocations. */
+#define	DT_PLTGOT	3	/* Processor-dependent address. */
+#define	DT_HASH		4	/* Address of symbol hash table. */
+#define	DT_STRTAB	5	/* Address of string table. */
+#define	DT_SYMTAB	6	/* Address of symbol table. */
+#define	DT_RELA		7	/* Address of ElfNN_Rela relocations. */
+#define	DT_RELASZ	8	/* Total size of ElfNN_Rela relocations. */
+#define	DT_RELAENT	9	/* Size of each ElfNN_Rela relocation entry. */
+#define	DT_STRSZ	10	/* Size of string table. */
+#define	DT_SYMENT	11	/* Size of each symbol table entry. */
+#define	DT_INIT		12	/* Address of initialization function. */
+#define	DT_FINI		13	/* Address of finalization function. */
+#define	DT_SONAME	14	/* String table offset of shared object
+				   name. */
+#define	DT_RPATH	15	/* String table offset of library path. [sup] */
+#define	DT_SYMBOLIC	16	/* Indicates "symbolic" linking. [sup] */
+#define	DT_REL		17	/* Address of ElfNN_Rel relocations. */
+#define	DT_RELSZ	18	/* Total size of ElfNN_Rel relocations. */
+#define	DT_RELENT	19	/* Size of each ElfNN_Rel relocation. */
+#define	DT_PLTREL	20	/* Type of relocation used for PLT. */
+#define	DT_DEBUG	21	/* Reserved (not used). */
+#define	DT_TEXTREL	22	/* Indicates there may be relocations in
+				   non-writable segments. [sup] */
+#define	DT_JMPREL	23	/* Address of PLT relocations. */
+#define	DT_BIND_NOW	24	/* [sup] */
+#define	DT_INIT_ARRAY	25	/* Address of the array of pointers to
+				   initialization functions */
+#define	DT_FINI_ARRAY	26	/* Address of the array of pointers to
+				   termination functions */
+#define	DT_INIT_ARRAYSZ	27	/* Size in bytes of the array of
+				   initialization functions. */
+#define	DT_FINI_ARRAYSZ	28	/* Size in bytes of the array of
+				   termination functions. */
+#define	DT_RUNPATH	29	/* String table offset of a null-terminated
+				   library search path string. */
+#define	DT_FLAGS	30	/* Object specific flag values. */
+#define	DT_ENCODING	32	/* Values greater than or equal to DT_ENCODING
+				   and less than DT_LOOS follow the rules for
+				   the interpretation of the d_un union
+				   as follows: even == 'd_ptr', odd == 'd_val'
+				   or none */
+#define	DT_PREINIT_ARRAY 32	/* Address of the array of pointers to
+				   pre-initialization functions. */
+#define	DT_PREINIT_ARRAYSZ 33	/* Size in bytes of the array of
+				   pre-initialization functions. */
+#define	DT_MAXPOSTAGS	34	/* number of positive tags */
+#define	DT_RELRSZ	35	/* Total size of ElfNN_Relr relocations. */
+#define	DT_RELR		36	/* Address of ElfNN_Relr relocations. */
+#define	DT_RELRENT	37	/* Size of each ElfNN_Relr relocation. */
+#define	DT_LOOS		0x6000000d	/* First OS-specific */
+#define	DT_SUNW_AUXILIARY	0x6000000d	/* symbol auxiliary name */
+#define	DT_SUNW_RTLDINF		0x6000000e	/* ld.so.1 info (private) */
+#define	DT_SUNW_FILTER		0x6000000f	/* symbol filter name */
+#define	DT_SUNW_CAP		0x60000010	/* hardware/software */
+#define	DT_SUNW_ASLR		0x60000023	/* ASLR control */
+#define	DT_HIOS		0x6ffff000	/* Last OS-specific */
+
+/*
+ * DT_* entries which fall between DT_VALRNGHI & DT_VALRNGLO use the
+ * Dyn.d_un.d_val field of the Elf*_Dyn structure.
+ */
+#define	DT_VALRNGLO	0x6ffffd00
+#define	DT_GNU_PRELINKED	0x6ffffdf5 /* prelinking timestamp */
+#define	DT_GNU_CONFLICTSZ	0x6ffffdf6 /* size of conflict section */
+#define	DT_GNU_LIBLISTSZ	0x6ffffdf7 /* size of library list */
+#define	DT_CHECKSUM	0x6ffffdf8	/* elf checksum */
+#define	DT_PLTPADSZ	0x6ffffdf9	/* pltpadding size */
+#define	DT_MOVEENT	0x6ffffdfa	/* move table entry size */
+#define	DT_MOVESZ	0x6ffffdfb	/* move table size */
+#define	DT_FEATURE	0x6ffffdfc	/* feature holder */
+#define	DT_FEATURE_1	DT_FEATURE
+#define	DT_POSFLAG_1	0x6ffffdfd	/* flags for DT_* entries, effecting */
+					/*	the following DT_* entry. */
+					/*	See DF_P1_* definitions */
+#define	DT_SYMINSZ	0x6ffffdfe	/* syminfo table size (in bytes) */
+#define	DT_SYMINENT	0x6ffffdff	/* syminfo entry size (in bytes) */
+#define	DT_VALRNGHI	0x6ffffdff
+
+/*
+ * DT_* entries which fall between DT_ADDRRNGHI & DT_ADDRRNGLO use the
+ * Dyn.d_un.d_ptr field of the Elf*_Dyn structure.
+ *
+ * If any adjustment is made to the ELF object after it has been
+ * built, these entries will need to be adjusted.
+ */
+#define	DT_ADDRRNGLO	0x6ffffe00
+#define	DT_GNU_HASH	0x6ffffef5	/* GNU-style hash table */
+#define	DT_TLSDESC_PLT	0x6ffffef6	/* loc. of PLT for tlsdesc resolver */
+#define	DT_TLSDESC_GOT	0x6ffffef7	/* loc. of GOT for tlsdesc resolver */
+#define	DT_GNU_CONFLICT	0x6ffffef8	/* address of conflict section */
+#define	DT_GNU_LIBLIST	0x6ffffef9	/* address of library list */
+#define	DT_CONFIG	0x6ffffefa	/* configuration information */
+#define	DT_DEPAUDIT	0x6ffffefb	/* dependency auditing */
+#define	DT_AUDIT	0x6ffffefc	/* object auditing */
+#define	DT_PLTPAD	0x6ffffefd	/* pltpadding (sparcv9) */
+#define	DT_MOVETAB	0x6ffffefe	/* move table */
+#define	DT_SYMINFO	0x6ffffeff	/* syminfo table */
+#define	DT_ADDRRNGHI	0x6ffffeff
+
+#define	DT_VERSYM	0x6ffffff0	/* Address of versym section. */
+#define	DT_RELACOUNT	0x6ffffff9	/* number of RELATIVE relocations */
+#define	DT_RELCOUNT	0x6ffffffa	/* number of RELATIVE relocations */
+#define	DT_FLAGS_1	0x6ffffffb	/* state flags - see DF_1_* defs */
+#define	DT_VERDEF	0x6ffffffc	/* Address of verdef section. */
+#define	DT_VERDEFNUM	0x6ffffffd	/* Number of elems in verdef section */
+#define	DT_VERNEED	0x6ffffffe	/* Address of verneed section. */
+#define	DT_VERNEEDNUM	0x6fffffff	/* Number of elems in verneed section */
+
+#define	DT_LOPROC	0x70000000	/* First processor-specific type. */
+
+#define	DT_AARCH64_BTI_PLT		0x70000001
+#define	DT_AARCH64_PAC_PLT		0x70000003
+#define	DT_AARCH64_VARIANT_PCS		0x70000005
+
+#define	DT_ARM_SYMTABSZ			0x70000001
+#define	DT_ARM_PREEMPTMAP		0x70000002
+
+#define	DT_SPARC_REGISTER		0x70000001
+#define	DT_DEPRECATED_SPARC_REGISTER	0x7000001
+
+#define	DT_MIPS_RLD_VERSION		0x70000001
+#define	DT_MIPS_TIME_STAMP		0x70000002
+#define	DT_MIPS_ICHECKSUM		0x70000003
+#define	DT_MIPS_IVERSION		0x70000004
+#define	DT_MIPS_FLAGS			0x70000005
+#define	DT_MIPS_BASE_ADDRESS		0x70000006
+#define	DT_MIPS_CONFLICT		0x70000008
+#define	DT_MIPS_LIBLIST			0x70000009
+#define	DT_MIPS_LOCAL_GOTNO		0x7000000a
+#define	DT_MIPS_CONFLICTNO		0x7000000b
+#define	DT_MIPS_LIBLISTNO		0x70000010
+#define	DT_MIPS_SYMTABNO		0x70000011
+#define	DT_MIPS_UNREFEXTNO		0x70000012
+#define	DT_MIPS_GOTSYM			0x70000013
+#define	DT_MIPS_HIPAGENO		0x70000014
+#define	DT_MIPS_RLD_MAP			0x70000016
+#define	DT_MIPS_DELTA_CLASS		0x70000017
+#define	DT_MIPS_DELTA_CLASS_NO		0x70000018
+#define	DT_MIPS_DELTA_INSTANCE		0x70000019
+#define	DT_MIPS_DELTA_INSTANCE_NO	0x7000001A
+#define	DT_MIPS_DELTA_RELOC		0x7000001B
+#define	DT_MIPS_DELTA_RELOC_NO		0x7000001C
+#define	DT_MIPS_DELTA_SYM		0x7000001D
+#define	DT_MIPS_DELTA_SYM_NO		0x7000001E
+#define	DT_MIPS_DELTA_CLASSSYM		0x70000020
+#define	DT_MIPS_DELTA_CLASSSYM_NO	0x70000021
+#define	DT_MIPS_CXX_FLAGS		0x70000022
+#define	DT_MIPS_PIXIE_INIT		0x70000023
+#define	DT_MIPS_SYMBOL_LIB		0x70000024
+#define	DT_MIPS_LOCALPAGE_GOTIDX	0x70000025
+#define	DT_MIPS_LOCAL_GOTIDX		0x70000026
+#define	DT_MIPS_HIDDEN_GOTIDX		0x70000027
+#define	DT_MIPS_PROTECTED_GOTIDX	0x70000028
+#define	DT_MIPS_OPTIONS			0x70000029
+#define	DT_MIPS_INTERFACE		0x7000002A
+#define	DT_MIPS_DYNSTR_ALIGN		0x7000002B
+#define	DT_MIPS_INTERFACE_SIZE		0x7000002C
+#define	DT_MIPS_RLD_TEXT_RESOLVE_ADDR	0x7000002D
+#define	DT_MIPS_PERF_SUFFIX		0x7000002E
+#define	DT_MIPS_COMPACT_SIZE		0x7000002F
+#define	DT_MIPS_GP_VALUE		0x70000030
+#define	DT_MIPS_AUX_DYNAMIC		0x70000031
+#define	DT_MIPS_PLTGOT			0x70000032
+#define	DT_MIPS_RLD_OBJ_UPDATE		0x70000033
+#define	DT_MIPS_RWPLT			0x70000034
+#define	DT_MIPS_RLD_MAP_REL		0x70000035
+
+#define	DT_PPC_GOT			0x70000000
+#define	DT_PPC_TLSOPT			0x70000001
+
+#define	DT_PPC64_GLINK			0x70000000
+#define	DT_PPC64_OPD			0x70000001
+#define	DT_PPC64_OPDSZ			0x70000002
+#define	DT_PPC64_TLSOPT			0x70000003
+
+#define	DT_AUXILIARY	0x7ffffffd	/* shared library auxiliary name */
+#define	DT_USED		0x7ffffffe	/* ignored - same as needed */
+#define	DT_FILTER	0x7fffffff	/* shared library filter name */
+#define	DT_HIPROC	0x7fffffff	/* Last processor-specific type. */
+
+/* Values for DT_FLAGS */
+#define	DF_ORIGIN	0x0001	/* Indicates that the object being loaded may
+				   make reference to the $ORIGIN substitution
+				   string */
+#define	DF_SYMBOLIC	0x0002	/* Indicates "symbolic" linking. */
+#define	DF_TEXTREL	0x0004	/* Indicates there may be relocations in
+				   non-writable segments. */
+#define	DF_BIND_NOW	0x0008	/* Indicates that the dynamic linker should
+				   process all relocations for the object
+				   containing this entry before transferring
+				   control to the program. */
+#define	DF_STATIC_TLS	0x0010	/* Indicates that the shared object or
+				   executable contains code using a static
+				   thread-local storage scheme. */
+
+/* Values for DT_FLAGS_1 */
+#define	DF_1_BIND_NOW	0x00000001	/* Same as DF_BIND_NOW */
+#define	DF_1_GLOBAL	0x00000002	/* Set the RTLD_GLOBAL for object */
+#define	DF_1_NODELETE	0x00000008	/* Set the RTLD_NODELETE for object */
+#define	DF_1_LOADFLTR	0x00000010	/* Immediate loading of filtees */
+#define	DF_1_NOOPEN     0x00000040	/* Do not allow loading on dlopen() */
+#define	DF_1_ORIGIN	0x00000080	/* Process $ORIGIN */
+#define	DF_1_INTERPOSE	0x00000400	/* Interpose all objects but main */
+#define	DF_1_NODEFLIB	0x00000800	/* Do not search default paths */
+#define	DF_1_PIE	0x08000000	/* Is position-independent executable */
+
+/* Values for l_flags. */
+#define	LL_NONE			0x0	/* no flags */
+#define	LL_EXACT_MATCH		0x1	/* require an exact match */
+#define	LL_IGNORE_INT_VER	0x2	/* ignore version incompatibilities */
+#define	LL_REQUIRE_MINOR	0x4
+#define	LL_EXPORTS		0x8
+#define	LL_DELAY_LOAD		0x10
+#define	LL_DELTA		0x20
+
+/* Note section names */
+#define	ELF_NOTE_FREEBSD	"FreeBSD"
+#define	ELF_NOTE_NETBSD		"NetBSD"
+#define	ELF_NOTE_SOLARIS	"SUNW Solaris"
+#define	ELF_NOTE_GNU		"GNU"
+
+/* Values for n_type used in executables. */
+#define	NT_FREEBSD_ABI_TAG	1
+#define	NT_FREEBSD_NOINIT_TAG	2
+#define	NT_FREEBSD_ARCH_TAG	3
+#define	NT_FREEBSD_FEATURE_CTL	4
+
+/* NT_FREEBSD_FEATURE_CTL desc[0] bits */
+#define	NT_FREEBSD_FCTL_ASLR_DISABLE	0x00000001
+#define	NT_FREEBSD_FCTL_PROTMAX_DISABLE	0x00000002
+#define	NT_FREEBSD_FCTL_STKGAP_DISABLE	0x00000004
+#define	NT_FREEBSD_FCTL_WXNEEDED	0x00000008
+#define	NT_FREEBSD_FCTL_LA48		0x00000010
+/* was ASG_DISABLE, do not reuse	0x00000020 */
+
+/* Values for n_type.  Used in core files. */
+#define	NT_PRSTATUS	1	/* Process status. */
+#define	NT_FPREGSET	2	/* Floating point registers. */
+#define	NT_PRPSINFO	3	/* Process state info. */
+#define	NT_THRMISC	7	/* Thread miscellaneous info. */
+#define	NT_PROCSTAT_PROC	8	/* Procstat proc data. */
+#define	NT_PROCSTAT_FILES	9	/* Procstat files data. */
+#define	NT_PROCSTAT_VMMAP	10	/* Procstat vmmap data. */
+#define	NT_PROCSTAT_GROUPS	11	/* Procstat groups data. */
+#define	NT_PROCSTAT_UMASK	12	/* Procstat umask data. */
+#define	NT_PROCSTAT_RLIMIT	13	/* Procstat rlimit data. */
+#define	NT_PROCSTAT_OSREL	14	/* Procstat osreldate data. */
+#define	NT_PROCSTAT_PSSTRINGS	15	/* Procstat ps_strings data. */
+#define	NT_PROCSTAT_AUXV	16	/* Procstat auxv data. */
+#define	NT_PTLWPINFO		17	/* Thread ptrace miscellaneous info. */
+#define	NT_PPC_VMX	0x100	/* PowerPC Altivec/VMX registers */
+#define	NT_PPC_VSX	0x102	/* PowerPC VSX registers */
+#define	NT_X86_SEGBASES	0x200	/* x86 FS/GS base addresses. */
+#define	NT_X86_XSTATE	0x202	/* x86 XSAVE extended state. */
+#define	NT_ARM_VFP	0x400	/* ARM VFP registers */
+#define	NT_ARM_TLS	0x401	/* ARM TLS register */
+#define	NT_ARM_ADDR_MASK	0x406	/* arm64 address mask (e.g. for TBI) */
+
+/* GNU note types. */
+#define	NT_GNU_ABI_TAG		1
+#define	NT_GNU_HWCAP		2
+#define	NT_GNU_BUILD_ID		3
+#define	NT_GNU_GOLD_VERSION	4
+#define	NT_GNU_PROPERTY_TYPE_0	5
+
+#define	GNU_PROPERTY_LOPROC			0xc0000000
+#define	GNU_PROPERTY_HIPROC			0xdfffffff
+
+#define	GNU_PROPERTY_AARCH64_FEATURE_1_AND	0xc0000000
+
+#define	GNU_PROPERTY_AARCH64_FEATURE_1_PAC	0x00000002
+
+#define	GNU_PROPERTY_X86_FEATURE_1_AND		0xc0000002
+
+#define	GNU_PROPERTY_X86_FEATURE_1_IBT		0x00000001
+#define	GNU_PROPERTY_X86_FEATURE_1_SHSTK	0x00000002
+
+/* Symbol Binding - ELFNN_ST_BIND - st_info */
+#define	STB_LOCAL	0	/* Local symbol */
+#define	STB_GLOBAL	1	/* Global symbol */
+#define	STB_WEAK	2	/* like global - lower precedence */
+#define	STB_LOOS	10	/* Start of operating system reserved range. */
+#define	STB_GNU_UNIQUE	10	/* Unique symbol (GNU) */
+#define	STB_HIOS	12	/* End of operating system reserved range. */
+#define	STB_LOPROC	13	/* reserved range for processor */
+#define	STB_HIPROC	15	/*   specific semantics. */
+
+/* Symbol type - ELFNN_ST_TYPE - st_info */
+#define	STT_NOTYPE	0	/* Unspecified type. */
+#define	STT_OBJECT	1	/* Data object. */
+#define	STT_FUNC	2	/* Function. */
+#define	STT_SECTION	3	/* Section. */
+#define	STT_FILE	4	/* Source file. */
+#define	STT_COMMON	5	/* Uninitialized common block. */
+#define	STT_TLS		6	/* TLS object. */
+#define	STT_NUM		7
+#define	STT_LOOS	10	/* Reserved range for operating system */
+#define	STT_GNU_IFUNC	10
+#define	STT_HIOS	12	/*   specific semantics. */
+#define	STT_LOPROC	13	/* Start of processor reserved range. */
+#define	STT_SPARC_REGISTER 13	/* SPARC register information. */
+#define	STT_HIPROC	15	/* End of processor reserved range. */
+
+/* Symbol visibility - ELFNN_ST_VISIBILITY - st_other */
+#define	STV_DEFAULT	0x0	/* Default visibility (see binding). */
+#define	STV_INTERNAL	0x1	/* Special meaning in relocatable objects. */
+#define	STV_HIDDEN	0x2	/* Not visible. */
+#define	STV_PROTECTED	0x3	/* Visible but not preemptible. */
+#define	STV_EXPORTED	0x4
+#define	STV_SINGLETON	0x5
+#define	STV_ELIMINATE	0x6
+
+/* Special symbol table indexes. */
+#define	STN_UNDEF	0	/* Undefined symbol index. */
+
+/* Symbol versioning flags. */
+#define	VER_DEF_CURRENT	1
+#define	VER_DEF_IDX(x)	VER_NDX(x)
+
+#define	VER_FLG_BASE	0x01
+#define	VER_FLG_WEAK	0x02
+
+#define	VER_NEED_CURRENT	1
+#define	VER_NEED_WEAK	(1u << 15)
+#define	VER_NEED_HIDDEN	VER_NDX_HIDDEN
+#define	VER_NEED_IDX(x)	VER_NDX(x)
+
+#define	VER_NDX_LOCAL	0
+#define	VER_NDX_GLOBAL	1
+#define	VER_NDX_GIVEN	2
+
+#define	VER_NDX_HIDDEN	(1u << 15)
+#define	VER_NDX(x)	((x) & ~(1u << 15))
+
+#define	CA_SUNW_NULL	0
+#define	CA_SUNW_HW_1	1		/* first hardware capabilities entry */
+#define	CA_SUNW_SF_1	2		/* first software capabilities entry */
+
+/*
+ * Syminfo flag values
+ */
+#define	SYMINFO_FLG_DIRECT	0x0001	/* symbol ref has direct association */
+					/*	to object containing defn. */
+#define	SYMINFO_FLG_PASSTHRU	0x0002	/* ignored - see SYMINFO_FLG_FILTER */
+#define	SYMINFO_FLG_COPY	0x0004	/* symbol is a copy-reloc */
+#define	SYMINFO_FLG_LAZYLOAD	0x0008	/* object containing defn should be */
+					/*	lazily-loaded */
+#define	SYMINFO_FLG_DIRECTBIND	0x0010	/* ref should be bound directly to */
+					/*	object containing defn. */
+#define	SYMINFO_FLG_NOEXTDIRECT	0x0020	/* don't let an external reference */
+					/*	directly bind to this symbol */
+#define	SYMINFO_FLG_FILTER	0x0002	/* symbol ref is associated to a */
+#define	SYMINFO_FLG_AUXILIARY	0x0040	/* 	standard or auxiliary filter */
+
+/*
+ * Syminfo.si_boundto values.
+ */
+#define	SYMINFO_BT_SELF		0xffff	/* symbol bound to self */
+#define	SYMINFO_BT_PARENT	0xfffe	/* symbol bound to parent */
+#define	SYMINFO_BT_NONE		0xfffd	/* no special symbol binding */
+#define	SYMINFO_BT_EXTERN	0xfffc	/* symbol defined as external */
+#define	SYMINFO_BT_LOWRESERVE	0xff00	/* beginning of reserved entries */
+
+/*
+ * Syminfo version values.
+ */
+#define	SYMINFO_NONE		0	/* Syminfo version */
+#define	SYMINFO_CURRENT		1
+#define	SYMINFO_NUM		2
+
+/* Values for ch_type (compressed section headers). */
+#define	ELFCOMPRESS_ZLIB	1	/* ZLIB/DEFLATE */
+#define	ELFCOMPRESS_ZSTD	2	/* Zstandard */
+#define	ELFCOMPRESS_LOOS	0x60000000	/* OS-specific */
+#define	ELFCOMPRESS_HIOS	0x6fffffff
+#define	ELFCOMPRESS_LOPROC	0x70000000	/* Processor-specific */
+#define	ELFCOMPRESS_HIPROC	0x7fffffff
+
+/*
+ * Relocation types.
+ *
+ * All machine architectures are defined here to allow tools on one to
+ * handle others.
+ */
+
+#define	R_386_NONE		0	/* No relocation. */
+#define	R_386_32		1	/* Add symbol value. */
+#define	R_386_PC32		2	/* Add PC-relative symbol value. */
+#define	R_386_GOT32		3	/* Add PC-relative GOT offset. */
+#define	R_386_PLT32		4	/* Add PC-relative PLT offset. */
+#define	R_386_COPY		5	/* Copy data from shared object. */
+#define	R_386_GLOB_DAT		6	/* Set GOT entry to data address. */
+#define	R_386_JMP_SLOT		7	/* Set GOT entry to code address. */
+#define	R_386_RELATIVE		8	/* Add load address of shared object. */
+#define	R_386_GOTOFF		9	/* Add GOT-relative symbol address. */
+#define	R_386_GOTPC		10	/* Add PC-relative GOT table address. */
+#define	R_386_32PLT		11
+#define	R_386_TLS_TPOFF		14	/* Negative offset in static TLS block */
+#define	R_386_TLS_IE		15	/* Absolute address of GOT for -ve static TLS */
+#define	R_386_TLS_GOTIE		16	/* GOT entry for negative static TLS block */
+#define	R_386_TLS_LE		17	/* Negative offset relative to static TLS */
+#define	R_386_TLS_GD		18	/* 32 bit offset to GOT (index,off) pair */
+#define	R_386_TLS_LDM		19	/* 32 bit offset to GOT (index,zero) pair */
+#define	R_386_16		20
+#define	R_386_PC16		21
+#define	R_386_8			22
+#define	R_386_PC8		23
+#define	R_386_TLS_GD_32		24	/* 32 bit offset to GOT (index,off) pair */
+#define	R_386_TLS_GD_PUSH	25	/* pushl instruction for Sun ABI GD sequence */
+#define	R_386_TLS_GD_CALL	26	/* call instruction for Sun ABI GD sequence */
+#define	R_386_TLS_GD_POP	27	/* popl instruction for Sun ABI GD sequence */
+#define	R_386_TLS_LDM_32	28	/* 32 bit offset to GOT (index,zero) pair */
+#define	R_386_TLS_LDM_PUSH	29	/* pushl instruction for Sun ABI LD sequence */
+#define	R_386_TLS_LDM_CALL	30	/* call instruction for Sun ABI LD sequence */
+#define	R_386_TLS_LDM_POP	31	/* popl instruction for Sun ABI LD sequence */
+#define	R_386_TLS_LDO_32	32	/* 32 bit offset from start of TLS block */
+#define	R_386_TLS_IE_32		33	/* 32 bit offset to GOT static TLS offset entry */
+#define	R_386_TLS_LE_32		34	/* 32 bit offset within static TLS block */
+#define	R_386_TLS_DTPMOD32	35	/* GOT entry containing TLS index */
+#define	R_386_TLS_DTPOFF32	36	/* GOT entry containing TLS offset */
+#define	R_386_TLS_TPOFF32	37	/* GOT entry of -ve static TLS offset */
+#define	R_386_SIZE32		38
+#define	R_386_TLS_GOTDESC	39
+#define	R_386_TLS_DESC_CALL	40
+#define	R_386_TLS_DESC		41
+#define	R_386_IRELATIVE		42	/* PLT entry resolved indirectly at runtime */
+#define	R_386_GOT32X		43
+
+#define	R_AARCH64_NONE		0	/* No relocation */
+#define	R_AARCH64_ABS64		257	/* Absolute offset */
+#define	R_AARCH64_ABS32		258	/* Absolute, 32-bit overflow check */
+#define	R_AARCH64_ABS16		259	/* Absolute, 16-bit overflow check */
+#define	R_AARCH64_PREL64	260	/* PC relative */
+#define	R_AARCH64_PREL32	261	/* PC relative, 32-bit overflow check */
+#define	R_AARCH64_PREL16	262	/* PC relative, 16-bit overflow check */
+#define	R_AARCH64_TSTBR14	279	/* TBZ/TBNZ immediate */
+#define	R_AARCH64_CONDBR19	280	/* Conditional branch immediate */
+#define	R_AARCH64_JUMP26	282	/* Branch immediate */
+#define	R_AARCH64_CALL26	283	/* Call immediate */
+#define	R_AARCH64_COPY		1024	/* Copy data from shared object */
+#define	R_AARCH64_GLOB_DAT	1025	/* Set GOT entry to data address */
+#define	R_AARCH64_JUMP_SLOT	1026	/* Set GOT entry to code address */
+#define	R_AARCH64_RELATIVE 	1027	/* Add load address of shared object */
+#define	R_AARCH64_TLS_DTPREL64	1028
+#define	R_AARCH64_TLS_DTPMOD64	1029
+#define	R_AARCH64_TLS_TPREL64 	1030
+#define	R_AARCH64_TLSDESC 	1031	/* Identify the TLS descriptor */
+#define	R_AARCH64_IRELATIVE	1032
+
+#define	R_ARM_NONE		0	/* No relocation. */
+#define	R_ARM_PC24		1
+#define	R_ARM_ABS32		2
+#define	R_ARM_REL32		3
+#define	R_ARM_PC13		4
+#define	R_ARM_ABS16		5
+#define	R_ARM_ABS12		6
+#define	R_ARM_THM_ABS5		7
+#define	R_ARM_ABS8		8
+#define	R_ARM_SBREL32		9
+#define	R_ARM_THM_PC22		10
+#define	R_ARM_THM_PC8		11
+#define	R_ARM_AMP_VCALL9	12
+#define	R_ARM_SWI24		13
+#define	R_ARM_THM_SWI8		14
+#define	R_ARM_XPC25		15
+#define	R_ARM_THM_XPC22		16
+/* TLS relocations */
+#define	R_ARM_TLS_DTPMOD32	17	/* ID of module containing symbol */
+#define	R_ARM_TLS_DTPOFF32	18	/* Offset in TLS block */
+#define	R_ARM_TLS_TPOFF32	19	/* Offset in static TLS block */
+#define	R_ARM_COPY		20	/* Copy data from shared object. */
+#define	R_ARM_GLOB_DAT		21	/* Set GOT entry to data address. */
+#define	R_ARM_JUMP_SLOT		22	/* Set GOT entry to code address. */
+#define	R_ARM_RELATIVE		23	/* Add load address of shared object. */
+#define	R_ARM_GOTOFF		24	/* Add GOT-relative symbol address. */
+#define	R_ARM_GOTPC		25	/* Add PC-relative GOT table address. */
+#define	R_ARM_GOT32		26	/* Add PC-relative GOT offset. */
+#define	R_ARM_PLT32		27	/* Add PC-relative PLT offset. */
+#define	R_ARM_GNU_VTENTRY	100
+#define	R_ARM_GNU_VTINHERIT	101
+#define	R_ARM_RSBREL32		250
+#define	R_ARM_THM_RPC22		251
+#define	R_ARM_RREL32		252
+#define	R_ARM_RABS32		253
+#define	R_ARM_RPC24		254
+#define	R_ARM_RBASE		255
+
+/*	Name			Value	   Field	Calculation */
+#define	R_IA_64_NONE		0	/* None */
+#define	R_IA_64_IMM14		0x21	/* immediate14	S + A */
+#define	R_IA_64_IMM22		0x22	/* immediate22	S + A */
+#define	R_IA_64_IMM64		0x23	/* immediate64	S + A */
+#define	R_IA_64_DIR32MSB	0x24	/* word32 MSB	S + A */
+#define	R_IA_64_DIR32LSB	0x25	/* word32 LSB	S + A */
+#define	R_IA_64_DIR64MSB	0x26	/* word64 MSB	S + A */
+#define	R_IA_64_DIR64LSB	0x27	/* word64 LSB	S + A */
+#define	R_IA_64_GPREL22		0x2a	/* immediate22	@gprel(S + A) */
+#define	R_IA_64_GPREL64I	0x2b	/* immediate64	@gprel(S + A) */
+#define	R_IA_64_GPREL32MSB	0x2c	/* word32 MSB	@gprel(S + A) */
+#define	R_IA_64_GPREL32LSB	0x2d	/* word32 LSB	@gprel(S + A) */
+#define	R_IA_64_GPREL64MSB	0x2e	/* word64 MSB	@gprel(S + A) */
+#define	R_IA_64_GPREL64LSB	0x2f	/* word64 LSB	@gprel(S + A) */
+#define	R_IA_64_LTOFF22		0x32	/* immediate22	@ltoff(S + A) */
+#define	R_IA_64_LTOFF64I	0x33	/* immediate64	@ltoff(S + A) */
+#define	R_IA_64_PLTOFF22	0x3a	/* immediate22	@pltoff(S + A) */
+#define	R_IA_64_PLTOFF64I	0x3b	/* immediate64	@pltoff(S + A) */
+#define	R_IA_64_PLTOFF64MSB	0x3e	/* word64 MSB	@pltoff(S + A) */
+#define	R_IA_64_PLTOFF64LSB	0x3f	/* word64 LSB	@pltoff(S + A) */
+#define	R_IA_64_FPTR64I		0x43	/* immediate64	@fptr(S + A) */
+#define	R_IA_64_FPTR32MSB	0x44	/* word32 MSB	@fptr(S + A) */
+#define	R_IA_64_FPTR32LSB	0x45	/* word32 LSB	@fptr(S + A) */
+#define	R_IA_64_FPTR64MSB	0x46	/* word64 MSB	@fptr(S + A) */
+#define	R_IA_64_FPTR64LSB	0x47	/* word64 LSB	@fptr(S + A) */
+#define	R_IA_64_PCREL60B	0x48	/* immediate60 form1 S + A - P */
+#define	R_IA_64_PCREL21B	0x49	/* immediate21 form1 S + A - P */
+#define	R_IA_64_PCREL21M	0x4a	/* immediate21 form2 S + A - P */
+#define	R_IA_64_PCREL21F	0x4b	/* immediate21 form3 S + A - P */
+#define	R_IA_64_PCREL32MSB	0x4c	/* word32 MSB	S + A - P */
+#define	R_IA_64_PCREL32LSB	0x4d	/* word32 LSB	S + A - P */
+#define	R_IA_64_PCREL64MSB	0x4e	/* word64 MSB	S + A - P */
+#define	R_IA_64_PCREL64LSB	0x4f	/* word64 LSB	S + A - P */
+#define	R_IA_64_LTOFF_FPTR22	0x52	/* immediate22	@ltoff(@fptr(S + A)) */
+#define	R_IA_64_LTOFF_FPTR64I	0x53	/* immediate64	@ltoff(@fptr(S + A)) */
+#define	R_IA_64_LTOFF_FPTR32MSB	0x54	/* word32 MSB	@ltoff(@fptr(S + A)) */
+#define	R_IA_64_LTOFF_FPTR32LSB	0x55	/* word32 LSB	@ltoff(@fptr(S + A)) */
+#define	R_IA_64_LTOFF_FPTR64MSB	0x56	/* word64 MSB	@ltoff(@fptr(S + A)) */
+#define	R_IA_64_LTOFF_FPTR64LSB	0x57	/* word64 LSB	@ltoff(@fptr(S + A)) */
+#define	R_IA_64_SEGREL32MSB	0x5c	/* word32 MSB	@segrel(S + A) */
+#define	R_IA_64_SEGREL32LSB	0x5d	/* word32 LSB	@segrel(S + A) */
+#define	R_IA_64_SEGREL64MSB	0x5e	/* word64 MSB	@segrel(S + A) */
+#define	R_IA_64_SEGREL64LSB	0x5f	/* word64 LSB	@segrel(S + A) */
+#define	R_IA_64_SECREL32MSB	0x64	/* word32 MSB	@secrel(S + A) */
+#define	R_IA_64_SECREL32LSB	0x65	/* word32 LSB	@secrel(S + A) */
+#define	R_IA_64_SECREL64MSB	0x66	/* word64 MSB	@secrel(S + A) */
+#define	R_IA_64_SECREL64LSB	0x67	/* word64 LSB	@secrel(S + A) */
+#define	R_IA_64_REL32MSB	0x6c	/* word32 MSB	BD + A */
+#define	R_IA_64_REL32LSB	0x6d	/* word32 LSB	BD + A */
+#define	R_IA_64_REL64MSB	0x6e	/* word64 MSB	BD + A */
+#define	R_IA_64_REL64LSB	0x6f	/* word64 LSB	BD + A */
+#define	R_IA_64_LTV32MSB	0x74	/* word32 MSB	S + A */
+#define	R_IA_64_LTV32LSB	0x75	/* word32 LSB	S + A */
+#define	R_IA_64_LTV64MSB	0x76	/* word64 MSB	S + A */
+#define	R_IA_64_LTV64LSB	0x77	/* word64 LSB	S + A */
+#define	R_IA_64_PCREL21BI	0x79	/* immediate21 form1 S + A - P */
+#define	R_IA_64_PCREL22		0x7a	/* immediate22	S + A - P */
+#define	R_IA_64_PCREL64I	0x7b	/* immediate64	S + A - P */
+#define	R_IA_64_IPLTMSB		0x80	/* function descriptor MSB special */
+#define	R_IA_64_IPLTLSB		0x81	/* function descriptor LSB speciaal */
+#define	R_IA_64_SUB		0x85	/* immediate64	A - S */
+#define	R_IA_64_LTOFF22X	0x86	/* immediate22	special */
+#define	R_IA_64_LDXMOV		0x87	/* immediate22	special */
+#define	R_IA_64_TPREL14		0x91	/* imm14	@tprel(S + A) */
+#define	R_IA_64_TPREL22		0x92	/* imm22	@tprel(S + A) */
+#define	R_IA_64_TPREL64I	0x93	/* imm64	@tprel(S + A) */
+#define	R_IA_64_TPREL64MSB	0x96	/* word64 MSB	@tprel(S + A) */
+#define	R_IA_64_TPREL64LSB	0x97	/* word64 LSB	@tprel(S + A) */
+#define	R_IA_64_LTOFF_TPREL22	0x9a	/* imm22	@ltoff(@tprel(S+A)) */
+#define	R_IA_64_DTPMOD64MSB	0xa6	/* word64 MSB	@dtpmod(S + A) */
+#define	R_IA_64_DTPMOD64LSB	0xa7	/* word64 LSB	@dtpmod(S + A) */
+#define	R_IA_64_LTOFF_DTPMOD22	0xaa	/* imm22	@ltoff(@dtpmod(S+A)) */
+#define	R_IA_64_DTPREL14	0xb1	/* imm14	@dtprel(S + A) */
+#define	R_IA_64_DTPREL22	0xb2	/* imm22	@dtprel(S + A) */
+#define	R_IA_64_DTPREL64I	0xb3	/* imm64	@dtprel(S + A) */
+#define	R_IA_64_DTPREL32MSB	0xb4	/* word32 MSB	@dtprel(S + A) */
+#define	R_IA_64_DTPREL32LSB	0xb5	/* word32 LSB	@dtprel(S + A) */
+#define	R_IA_64_DTPREL64MSB	0xb6	/* word64 MSB	@dtprel(S + A) */
+#define	R_IA_64_DTPREL64LSB	0xb7	/* word64 LSB	@dtprel(S + A) */
+#define	R_IA_64_LTOFF_DTPREL22	0xba	/* imm22	@ltoff(@dtprel(S+A)) */
+
+#define	R_MIPS_NONE	0	/* No reloc */
+#define	R_MIPS_16	1	/* Direct 16 bit */
+#define	R_MIPS_32	2	/* Direct 32 bit */
+#define	R_MIPS_REL32	3	/* PC relative 32 bit */
+#define	R_MIPS_26	4	/* Direct 26 bit shifted */
+#define	R_MIPS_HI16	5	/* High 16 bit */
+#define	R_MIPS_LO16	6	/* Low 16 bit */
+#define	R_MIPS_GPREL16	7	/* GP relative 16 bit */
+#define	R_MIPS_LITERAL	8	/* 16 bit literal entry */
+#define	R_MIPS_GOT16	9	/* 16 bit GOT entry */
+#define	R_MIPS_PC16	10	/* PC relative 16 bit */
+#define	R_MIPS_CALL16	11	/* 16 bit GOT entry for function */
+#define	R_MIPS_GPREL32	12	/* GP relative 32 bit */
+#define	R_MIPS_64	18	/* Direct 64 bit */
+#define	R_MIPS_GOT_DISP	19
+#define	R_MIPS_GOT_PAGE	20
+#define	R_MIPS_GOT_OFST	21
+#define	R_MIPS_GOT_HI16	22	/* GOT HI 16 bit */
+#define	R_MIPS_GOT_LO16	23	/* GOT LO 16 bit */
+#define	R_MIPS_SUB	24
+#define	R_MIPS_CALLHI16 30	/* upper 16 bit GOT entry for function */
+#define	R_MIPS_CALLLO16 31	/* lower 16 bit GOT entry for function */
+#define	R_MIPS_JALR	37
+#define	R_MIPS_TLS_GD	42
+#define	R_MIPS_COPY	126
+#define	R_MIPS_JUMP_SLOT	127
+
+#define	R_PPC_NONE		0	/* No relocation. */
+#define	R_PPC_ADDR32		1
+#define	R_PPC_ADDR24		2
+#define	R_PPC_ADDR16		3
+#define	R_PPC_ADDR16_LO		4
+#define	R_PPC_ADDR16_HI		5
+#define	R_PPC_ADDR16_HA		6
+#define	R_PPC_ADDR14		7
+#define	R_PPC_ADDR14_BRTAKEN	8
+#define	R_PPC_ADDR14_BRNTAKEN	9
+#define	R_PPC_REL24		10
+#define	R_PPC_REL14		11
+#define	R_PPC_REL14_BRTAKEN	12
+#define	R_PPC_REL14_BRNTAKEN	13
+#define	R_PPC_GOT16		14
+#define	R_PPC_GOT16_LO		15
+#define	R_PPC_GOT16_HI		16
+#define	R_PPC_GOT16_HA		17
+#define	R_PPC_PLTREL24		18
+#define	R_PPC_COPY		19
+#define	R_PPC_GLOB_DAT		20
+#define	R_PPC_JMP_SLOT		21
+#define	R_PPC_RELATIVE		22
+#define	R_PPC_LOCAL24PC		23
+#define	R_PPC_UADDR32		24
+#define	R_PPC_UADDR16		25
+#define	R_PPC_REL32		26
+#define	R_PPC_PLT32		27
+#define	R_PPC_PLTREL32		28
+#define	R_PPC_PLT16_LO		29
+#define	R_PPC_PLT16_HI		30
+#define	R_PPC_PLT16_HA		31
+#define	R_PPC_SDAREL16		32
+#define	R_PPC_SECTOFF		33
+#define	R_PPC_SECTOFF_LO	34
+#define	R_PPC_SECTOFF_HI	35
+#define	R_PPC_SECTOFF_HA	36
+#define	R_PPC_IRELATIVE		248
+
+/*
+ * 64-bit relocations
+ */
+#define	R_PPC64_ADDR64		38
+#define	R_PPC64_ADDR16_HIGHER	39
+#define	R_PPC64_ADDR16_HIGHERA	40
+#define	R_PPC64_ADDR16_HIGHEST	41
+#define	R_PPC64_ADDR16_HIGHESTA	42
+#define	R_PPC64_UADDR64		43
+#define	R_PPC64_REL64		44
+#define	R_PPC64_PLT64		45
+#define	R_PPC64_PLTREL64	46
+#define	R_PPC64_TOC16		47
+#define	R_PPC64_TOC16_LO	48
+#define	R_PPC64_TOC16_HI	49
+#define	R_PPC64_TOC16_HA	50
+#define	R_PPC64_TOC		51
+#define	R_PPC64_DTPMOD64	68
+#define	R_PPC64_TPREL64		73
+#define	R_PPC64_DTPREL64	78
+
+/*
+ * TLS relocations
+ */
+#define	R_PPC_TLS		67
+#define	R_PPC_DTPMOD32		68
+#define	R_PPC_TPREL16		69
+#define	R_PPC_TPREL16_LO	70
+#define	R_PPC_TPREL16_HI	71
+#define	R_PPC_TPREL16_HA	72
+#define	R_PPC_TPREL32		73
+#define	R_PPC_DTPREL16		74
+#define	R_PPC_DTPREL16_LO	75
+#define	R_PPC_DTPREL16_HI	76
+#define	R_PPC_DTPREL16_HA	77
+#define	R_PPC_DTPREL32		78
+#define	R_PPC_GOT_TLSGD16	79
+#define	R_PPC_GOT_TLSGD16_LO	80
+#define	R_PPC_GOT_TLSGD16_HI	81
+#define	R_PPC_GOT_TLSGD16_HA	82
+#define	R_PPC_GOT_TLSLD16	83
+#define	R_PPC_GOT_TLSLD16_LO	84
+#define	R_PPC_GOT_TLSLD16_HI	85
+#define	R_PPC_GOT_TLSLD16_HA	86
+#define	R_PPC_GOT_TPREL16	87
+#define	R_PPC_GOT_TPREL16_LO	88
+#define	R_PPC_GOT_TPREL16_HI	89
+#define	R_PPC_GOT_TPREL16_HA	90
+
+/*
+ * The remaining relocs are from the Embedded ELF ABI, and are not in the
+ *  SVR4 ELF ABI.
+ */
+
+#define	R_PPC_EMB_NADDR32	101
+#define	R_PPC_EMB_NADDR16	102
+#define	R_PPC_EMB_NADDR16_LO	103
+#define	R_PPC_EMB_NADDR16_HI	104
+#define	R_PPC_EMB_NADDR16_HA	105
+#define	R_PPC_EMB_SDAI16	106
+#define	R_PPC_EMB_SDA2I16	107
+#define	R_PPC_EMB_SDA2REL	108
+#define	R_PPC_EMB_SDA21		109
+#define	R_PPC_EMB_MRKREF	110
+#define	R_PPC_EMB_RELSEC16	111
+#define	R_PPC_EMB_RELST_LO	112
+#define	R_PPC_EMB_RELST_HI	113
+#define	R_PPC_EMB_RELST_HA	114
+#define	R_PPC_EMB_BIT_FLD	115
+#define	R_PPC_EMB_RELSDA	116
+
+/*
+ * RISC-V relocation types.
+ */
+
+/* Relocation types used by the dynamic linker. */
+#define	R_RISCV_NONE		0
+#define	R_RISCV_32		1
+#define	R_RISCV_64		2
+#define	R_RISCV_RELATIVE	3
+#define	R_RISCV_COPY		4
+#define	R_RISCV_JUMP_SLOT	5
+#define	R_RISCV_TLS_DTPMOD32	6
+#define	R_RISCV_TLS_DTPMOD64	7
+#define	R_RISCV_TLS_DTPREL32	8
+#define	R_RISCV_TLS_DTPREL64	9
+#define	R_RISCV_TLS_TPREL32	10
+#define	R_RISCV_TLS_TPREL64	11
+
+/* Relocation types not used by the dynamic linker. */
+#define	R_RISCV_BRANCH		16
+#define	R_RISCV_JAL		17
+#define	R_RISCV_CALL		18
+#define	R_RISCV_CALL_PLT	19
+#define	R_RISCV_GOT_HI20	20
+#define	R_RISCV_TLS_GOT_HI20	21
+#define	R_RISCV_TLS_GD_HI20	22
+#define	R_RISCV_PCREL_HI20	23
+#define	R_RISCV_PCREL_LO12_I	24
+#define	R_RISCV_PCREL_LO12_S	25
+#define	R_RISCV_HI20		26
+#define	R_RISCV_LO12_I		27
+#define	R_RISCV_LO12_S		28
+#define	R_RISCV_TPREL_HI20	29
+#define	R_RISCV_TPREL_LO12_I	30
+#define	R_RISCV_TPREL_LO12_S	31
+#define	R_RISCV_TPREL_ADD	32
+#define	R_RISCV_ADD8		33
+#define	R_RISCV_ADD16		34
+#define	R_RISCV_ADD32		35
+#define	R_RISCV_ADD64		36
+#define	R_RISCV_SUB8		37
+#define	R_RISCV_SUB16		38
+#define	R_RISCV_SUB32		39
+#define	R_RISCV_SUB64		40
+#define	R_RISCV_GNU_VTINHERIT	41
+#define	R_RISCV_GNU_VTENTRY	42
+#define	R_RISCV_ALIGN		43
+#define	R_RISCV_RVC_BRANCH	44
+#define	R_RISCV_RVC_JUMP	45
+#define	R_RISCV_RVC_LUI		46
+#define	R_RISCV_RELAX		51
+#define	R_RISCV_SUB6		52
+#define	R_RISCV_SET6		53
+#define	R_RISCV_SET8		54
+#define	R_RISCV_SET16		55
+#define	R_RISCV_SET32		56
+#define	R_RISCV_32_PCREL	57
+#define	R_RISCV_IRELATIVE	58
+
+#define	R_SPARC_NONE		0
+#define	R_SPARC_8		1
+#define	R_SPARC_16		2
+#define	R_SPARC_32		3
+#define	R_SPARC_DISP8		4
+#define	R_SPARC_DISP16		5
+#define	R_SPARC_DISP32		6
+#define	R_SPARC_WDISP30		7
+#define	R_SPARC_WDISP22		8
+#define	R_SPARC_HI22		9
+#define	R_SPARC_22		10
+#define	R_SPARC_13		11
+#define	R_SPARC_LO10		12
+#define	R_SPARC_GOT10		13
+#define	R_SPARC_GOT13		14
+#define	R_SPARC_GOT22		15
+#define	R_SPARC_PC10		16
+#define	R_SPARC_PC22		17
+#define	R_SPARC_WPLT30		18
+#define	R_SPARC_COPY		19
+#define	R_SPARC_GLOB_DAT	20
+#define	R_SPARC_JMP_SLOT	21
+#define	R_SPARC_RELATIVE	22
+#define	R_SPARC_UA32		23
+#define	R_SPARC_PLT32		24
+#define	R_SPARC_HIPLT22		25
+#define	R_SPARC_LOPLT10		26
+#define	R_SPARC_PCPLT32		27
+#define	R_SPARC_PCPLT22		28
+#define	R_SPARC_PCPLT10		29
+#define	R_SPARC_10		30
+#define	R_SPARC_11		31
+#define	R_SPARC_64		32
+#define	R_SPARC_OLO10		33
+#define	R_SPARC_HH22		34
+#define	R_SPARC_HM10		35
+#define	R_SPARC_LM22		36
+#define	R_SPARC_PC_HH22		37
+#define	R_SPARC_PC_HM10		38
+#define	R_SPARC_PC_LM22		39
+#define	R_SPARC_WDISP16		40
+#define	R_SPARC_WDISP19		41
+#define	R_SPARC_GLOB_JMP	42
+#define	R_SPARC_7		43
+#define	R_SPARC_5		44
+#define	R_SPARC_6		45
+#define	R_SPARC_DISP64		46
+#define	R_SPARC_PLT64		47
+#define	R_SPARC_HIX22		48
+#define	R_SPARC_LOX10		49
+#define	R_SPARC_H44		50
+#define	R_SPARC_M44		51
+#define	R_SPARC_L44		52
+#define	R_SPARC_REGISTER	53
+#define	R_SPARC_UA64		54
+#define	R_SPARC_UA16		55
+#define	R_SPARC_TLS_GD_HI22	56
+#define	R_SPARC_TLS_GD_LO10	57
+#define	R_SPARC_TLS_GD_ADD	58
+#define	R_SPARC_TLS_GD_CALL	59
+#define	R_SPARC_TLS_LDM_HI22	60
+#define	R_SPARC_TLS_LDM_LO10	61
+#define	R_SPARC_TLS_LDM_ADD	62
+#define	R_SPARC_TLS_LDM_CALL	63
+#define	R_SPARC_TLS_LDO_HIX22	64
+#define	R_SPARC_TLS_LDO_LOX10	65
+#define	R_SPARC_TLS_LDO_ADD	66
+#define	R_SPARC_TLS_IE_HI22	67
+#define	R_SPARC_TLS_IE_LO10	68
+#define	R_SPARC_TLS_IE_LD	69
+#define	R_SPARC_TLS_IE_LDX	70
+#define	R_SPARC_TLS_IE_ADD	71
+#define	R_SPARC_TLS_LE_HIX22	72
+#define	R_SPARC_TLS_LE_LOX10	73
+#define	R_SPARC_TLS_DTPMOD32	74
+#define	R_SPARC_TLS_DTPMOD64	75
+#define	R_SPARC_TLS_DTPOFF32	76
+#define	R_SPARC_TLS_DTPOFF64	77
+#define	R_SPARC_TLS_TPOFF32	78
+#define	R_SPARC_TLS_TPOFF64	79
+
+#define	R_X86_64_NONE		0	/* No relocation. */
+#define	R_X86_64_64		1	/* Add 64 bit symbol value. */
+#define	R_X86_64_PC32		2	/* PC-relative 32 bit signed sym value. */
+#define	R_X86_64_GOT32		3	/* PC-relative 32 bit GOT offset. */
+#define	R_X86_64_PLT32		4	/* PC-relative 32 bit PLT offset. */
+#define	R_X86_64_COPY		5	/* Copy data from shared object. */
+#define	R_X86_64_GLOB_DAT	6	/* Set GOT entry to data address. */
+#define	R_X86_64_JMP_SLOT	7	/* Set GOT entry to code address. */
+#define	R_X86_64_RELATIVE	8	/* Add load address of shared object. */
+#define	R_X86_64_GOTPCREL	9	/* Add 32 bit signed pcrel offset to GOT. */
+#define	R_X86_64_32		10	/* Add 32 bit zero extended symbol value */
+#define	R_X86_64_32S		11	/* Add 32 bit sign extended symbol value */
+#define	R_X86_64_16		12	/* Add 16 bit zero extended symbol value */
+#define	R_X86_64_PC16		13	/* Add 16 bit signed extended pc relative symbol value */
+#define	R_X86_64_8		14	/* Add 8 bit zero extended symbol value */
+#define	R_X86_64_PC8		15	/* Add 8 bit signed extended pc relative symbol value */
+#define	R_X86_64_DTPMOD64	16	/* ID of module containing symbol */
+#define	R_X86_64_DTPOFF64	17	/* Offset in TLS block */
+#define	R_X86_64_TPOFF64	18	/* Offset in static TLS block */
+#define	R_X86_64_TLSGD		19	/* PC relative offset to GD GOT entry */
+#define	R_X86_64_TLSLD		20	/* PC relative offset to LD GOT entry */
+#define	R_X86_64_DTPOFF32	21	/* Offset in TLS block */
+#define	R_X86_64_GOTTPOFF	22	/* PC relative offset to IE GOT entry */
+#define	R_X86_64_TPOFF32	23	/* Offset in static TLS block */
+#define	R_X86_64_PC64		24	/* PC-relative 64 bit signed sym value. */
+#define	R_X86_64_GOTOFF64	25
+#define	R_X86_64_GOTPC32	26
+#define	R_X86_64_GOT64		27
+#define	R_X86_64_GOTPCREL64	28
+#define	R_X86_64_GOTPC64	29
+#define	R_X86_64_GOTPLT64	30
+#define	R_X86_64_PLTOFF64	31
+#define	R_X86_64_SIZE32		32
+#define	R_X86_64_SIZE64		33
+#define	R_X86_64_GOTPC32_TLSDESC 34
+#define	R_X86_64_TLSDESC_CALL	35
+#define	R_X86_64_TLSDESC	36
+#define	R_X86_64_IRELATIVE	37
+#define	R_X86_64_RELATIVE64	38
+/* 39 and 40 were BND-related, already decomissioned */
+#define	R_X86_64_GOTPCRELX	41
+#define	R_X86_64_REX_GOTPCRELX	42
+
+#define	ELF_BSDF_SIGFASTBLK	0x0001	/* Kernel supports fast sigblock */
+#define	ELF_BSDF_VMNOOVERCOMMIT	0x0002
+
+#endif /* !_SYS_ELF_COMMON_H_ */
diff --git a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/include/bits/elf_x86.h b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/include/bits/elf_x86.h
deleted file mode 100644
index dfbaba0..0000000
--- a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/include/bits/elf_x86.h
+++ /dev/null
@@ -1,60 +0,0 @@
-/*	$NetBSD: elf_machdep.h,v 1.12 2016/02/02 20:16:59 christos Exp $	*/
-
-#ifndef _X86_ELF_MACHDEP_H_
-#define _X86_ELF_MACHDEP_H_
-
-/* i386 relocations */
-#define	R_386_NONE	0
-#define	R_386_32	1
-#define	R_386_PC32	2
-#define	R_386_GOT32	3
-#define	R_386_PLT32	4
-#define	R_386_COPY	5
-#define	R_386_GLOB_DAT	6
-#define	R_386_JMP_SLOT	7
-#define	R_386_RELATIVE	8
-#define	R_386_GOTOFF	9
-#define	R_386_GOTPC	10
-#define	R_386_32PLT	11
-
-/* TLS relocations */
-#define	R_386_TLS_TPOFF	14
-#define	R_386_TLS_IE	15
-#define	R_386_TLS_GOTIE	16
-#define	R_386_TLS_LE	17
-#define	R_386_TLS_GD	18
-#define	R_386_TLS_LDM	19
-
-/* The following relocations are GNU extensions. */
-#define	R_386_16	20
-#define	R_386_PC16	21
-#define	R_386_8		22
-#define	R_386_PC8	23
-
-/* More TLS relocations */
-#define	R_386_TLS_GD_32		24
-#define	R_386_TLS_GD_PUSH	25
-#define	R_386_TLS_GD_CALL	26
-#define	R_386_TLS_GD_POP	27
-#define	R_386_TLS_LDM_32	28
-#define	R_386_TLS_LDM_PUSH	29
-#define	R_386_TLS_LDM_CALL	30
-#define	R_386_TLS_LDM_POP	31
-#define	R_386_TLS_LDO_32	32
-#define	R_386_TLS_IE_32		33
-#define	R_386_TLS_LE_32		34
-#define	R_386_TLS_DTPMOD32	35
-#define	R_386_TLS_DTPOFF32	36
-#define	R_386_TLS_TPOFF32	37
-
-#define R_386_SIZE32		38
-
-/* More TLS relocations */
-#define	R_386_TLS_GOTDESC	39
-#define	R_386_TLS_DESC_CALL	40
-#define	R_386_TLS_DESC		41
-
-#define R_386_IRELATIVE		42
-#define R_386_GOT32X		43
-
-#endif
diff --git a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/include/bits/elf_x86_64.h b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/include/bits/elf_x86_64.h
deleted file mode 100644
index 30062af..0000000
--- a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/include/bits/elf_x86_64.h
+++ /dev/null
@@ -1,55 +0,0 @@
-/*	$NetBSD: elf_machdep.h,v 1.5 2016/02/02 20:13:59 christos Exp $	*/
-
-#ifndef _X86_64_ELF_MACHDEP_H_
-#define _X86_64_ELF_MACHDEP_H_
-
-/* x86-64 relocations */
-
-#define R_X86_64_NONE		0
-#define R_X86_64_64		1
-#define R_X86_64_PC32		2
-#define R_X86_64_GOT32		3
-#define R_X86_64_PLT32		4
-#define R_X86_64_COPY		5
-#define R_X86_64_GLOB_DAT	6
-#define R_X86_64_JUMP_SLOT	7
-#define R_X86_64_RELATIVE	8
-#define R_X86_64_GOTPCREL	9
-#define R_X86_64_32		10
-#define R_X86_64_32S		11
-#define R_X86_64_16		12
-#define R_X86_64_PC16		13
-#define R_X86_64_8		14
-#define R_X86_64_PC8		15
-
-/* TLS relocations */
-#define R_X86_64_DTPMOD64	16
-#define R_X86_64_DTPOFF64	17
-#define R_X86_64_TPOFF64	18
-#define R_X86_64_TLSGD		19
-#define R_X86_64_TLSLD		20
-#define R_X86_64_DTPOFF32	21
-#define R_X86_64_GOTTPOFF	22
-#define R_X86_64_TPOFF32	23
-
-#define R_X86_64_PC64		24
-#define R_X86_64_GOTOFF64	25
-#define R_X86_64_GOTPC32	26
-#define R_X86_64_GOT64		27
-#define R_X86_64_GOTPCREL64	28
-#define R_X86_64_GOTPC64	29
-#define R_X86_64_GOTPLT64	30
-#define R_X86_64_PLTOFF64	31
-#define R_X86_64_SIZE32		32
-#define R_X86_64_SIZE64		33
-#define R_X86_64_GOTPC32_TLSDESC 34
-#define R_X86_64_TLSDESC_CALL	35
-#define R_X86_64_TLSDESC	36
-#define R_X86_64_IRELATIVE	37
-#define R_X86_64_RELATIVE64	38
-#define R_X86_64_PC32_BND	39
-#define R_X86_64_PLT32_BND	40
-#define R_X86_64_GOTPCRELX	41
-#define R_X86_64_REX_GOTPCRELX	42
-
-#endif
diff --git a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/include/bits/fenv_riscv64.h b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/include/bits/fenv_riscv64.h
new file mode 100644
index 0000000..e1e43b6
--- /dev/null
+++ b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/include/bits/fenv_riscv64.h
@@ -0,0 +1,52 @@
+/*
+ * Copyright (C) 2022 The Android Open Source Project
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *  * Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ *  * Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in
+ *    the documentation and/or other materials provided with the
+ *    distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+ * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+ * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
+ * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
+ * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+ * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
+ * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ */
+
+#pragma once
+
+#include <sys/types.h>
+
+__BEGIN_DECLS
+
+typedef __uint32_t fenv_t;
+typedef __uint32_t fexcept_t;
+
+/* Exception flags. No FE_DENORMAL for riscv64. */
+#define FE_INEXACT    0x01
+#define FE_UNDERFLOW  0x02
+#define FE_OVERFLOW   0x04
+#define FE_DIVBYZERO  0x08
+#define FE_INVALID    0x10
+#define FE_ALL_EXCEPT (FE_DIVBYZERO | FE_INEXACT | FE_INVALID | FE_OVERFLOW | FE_UNDERFLOW)
+
+/* Rounding modes. */
+#define FE_TONEAREST  0x0
+#define FE_TOWARDZERO 0x1
+#define FE_DOWNWARD   0x2
+#define FE_UPWARD     0x3
+
+__END_DECLS
diff --git a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/include/bits/fortify/fcntl.h b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/include/bits/fortify/fcntl.h
index 7063541..7fe60f4 100644
--- a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/include/bits/fortify/fcntl.h
+++ b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/include/bits/fortify/fcntl.h
@@ -41,7 +41,7 @@
 #if defined(__BIONIC_FORTIFY)
 #define __open_too_many_args_error "too many arguments"
 #define __open_too_few_args_error "called with O_CREAT or O_TMPFILE, but missing mode"
-#define __open_useless_modes_warning "has superfluous mode bits; missing O_CREAT?"
+#define __open_useless_modes_warning "has superfluous mode bits; missing O_CREAT or O_TMPFILE?"
 /* O_TMPFILE shares bits with O_DIRECTORY. */
 #define __open_modes_useful(flags) (((flags) & O_CREAT) || ((flags) & O_TMPFILE) == O_TMPFILE)
 
diff --git a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/include/elf.h b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/include/elf.h
index 4739bbd..1dfc008 100644
--- a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/include/elf.h
+++ b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/include/elf.h
@@ -30,13 +30,12 @@
 
 #include <sys/cdefs.h>
 
-#include <bits/auxvec.h>
-#include <bits/elf_arm.h>
-#include <bits/elf_arm64.h>
-#include <bits/elf_x86.h>
-#include <bits/elf_x86_64.h>
 #include <linux/elf.h>
 #include <linux/elf-em.h>
+#undef EI_PAD
+
+#include <bits/auxvec.h>
+#include <bits/elf_common.h>
 
 /* http://www.sco.com/developers/gabi/latest/ch4.intro.html */
 typedef __u64 Elf32_Xword;
@@ -83,14 +82,6 @@
   Elf64_Word l_version;
   Elf64_Word l_flags;
 } Elf64_Lib;
-/* ElfW(Lib)::l_flags values. */
-#define LL_NONE 0x0
-#define LL_EXACT_MATCH 0x1
-#define LL_IGNORE_INT_VER 0x2
-#define LL_REQUIRE_MINOR 0x4
-#define LL_EXPORTS 0x8
-#define LL_DELAY_LOAD 0x10
-#define LL_DELTA 0x20
 
 typedef struct {
   Elf32_Xword m_value;
@@ -118,14 +109,6 @@
   Elf64_Half si_boundto;
   Elf64_Half si_flags;
 } Elf64_Syminfo;
-/* ElfW(Syminfo)::si_boundto values. */
-#define SYMINFO_BT_SELF 0xffff
-#define SYMINFO_BT_PARENT 0xfffe
-/* ElfW(Syminfo)::si_flags values. */
-#define SYMINFO_FLG_DIRECT 0x1
-#define SYMINFO_FLG_PASSTHRU 0x2
-#define SYMINFO_FLG_COPY 0x4
-#define SYMINFO_FLG_LAZYLOAD 0x8
 
 typedef Elf32_Half Elf32_Versym;
 typedef Elf64_Half Elf64_Versym;
@@ -197,24 +180,12 @@
 typedef Elf64_Xword Elf64_Relr;
 
 /* http://www.sco.com/developers/gabi/latest/ch5.dynamic.html */
-#define DF_ORIGIN     0x00000001
-#define DF_SYMBOLIC   0x00000002
-#define DF_TEXTREL    0x00000004
-#define DF_BIND_NOW   0x00000008
-#define DF_STATIC_TLS 0x00000010
 
 #define DF_1_NOW        0x00000001 /* Perform complete relocation processing. */
-#define DF_1_GLOBAL     0x00000002 /* implies RTLD_GLOBAL */
 #define DF_1_GROUP      0x00000004
-#define DF_1_NODELETE   0x00000008 /* implies RTLD_NODELETE */
-#define DF_1_LOADFLTR   0x00000010
 #define DF_1_INITFIRST  0x00000020
-#define DF_1_NOOPEN     0x00000040 /* Object can not be used with dlopen(3) */
-#define DF_1_ORIGIN     0x00000080
 #define DF_1_DIRECT     0x00000100
 #define DF_1_TRANS      0x00000200
-#define DF_1_INTERPOSE  0x00000400
-#define DF_1_NODEFLIB   0x00000800
 #define DF_1_NODUMP     0x00001000 /* Object cannot be dumped with dldump(3) */
 #define DF_1_CONFALT    0x00002000
 #define DF_1_ENDFILTEE  0x00004000
@@ -230,58 +201,10 @@
 #define DF_1_GLOBAUDIT  0x01000000
 #define DF_1_SINGLETON  0x02000000
 #define DF_1_STUB       0x04000000
-#define DF_1_PIE        0x08000000
-
-/* http://www.sco.com/developers/gabi/latest/ch5.dynamic.html */
-#define DT_BIND_NOW 24
-#define DT_INIT_ARRAY 25
-#define DT_FINI_ARRAY 26
-#define DT_INIT_ARRAYSZ 27
-#define DT_FINI_ARRAYSZ 28
-#define DT_RUNPATH 29
-#define DT_FLAGS 30
-/* glibc and BSD disagree for DT_ENCODING; glibc looks wrong. */
-#define DT_PREINIT_ARRAY 32
-#define DT_PREINIT_ARRAYSZ 33
-#define DT_RELRSZ 35
-#define DT_RELR 36
-#define DT_RELRENT 37
-
-#define DT_GNU_HASH 0x6ffffef5
-#define DT_TLSDESC_PLT 0x6ffffef6
-#define DT_TLSDESC_GOT 0x6ffffef7
-
-/* http://www.sco.com/developers/gabi/latest/ch4.eheader.html */
-#define EI_ABIVERSION 8
-#undef EI_PAD
-#define EI_PAD 9
-
-/* http://www.sco.com/developers/gabi/latest/ch4.sheader.html */
-#define ELFCOMPRESS_ZLIB 1
-#define ELFCOMPRESS_LOOS 0x60000000
-#define ELFCOMPRESS_HIOS 0x6fffffff
-#define ELFCOMPRESS_LOPROC 0x70000000
-#define ELFCOMPRESS_HIPROC 0x7fffffff
 
 /* http://www.sco.com/developers/gabi/latest/ch4.eheader.html */
 #define ELFOSABI_SYSV 0 /* Synonym for ELFOSABI_NONE used by valgrind. */
-#define ELFOSABI_HPUX 1
-#define ELFOSABI_NETBSD 2
 #define ELFOSABI_GNU 3 /* Synonym for ELFOSABI_LINUX. */
-#define ELFOSABI_SOLARIS 6
-#define ELFOSABI_AIX 7
-#define ELFOSABI_IRIX 8
-#define ELFOSABI_FREEBSD 9
-#define ELFOSABI_TRU64 10
-#define ELFOSABI_MODESTO 11
-#define ELFOSABI_OPENBSD 12
-#define ELFOSABI_OPENVMS 13
-#define ELFOSABI_NSK 14
-#define ELFOSABI_AROS 15
-#define ELFOSABI_FENIXOS 16
-#define ELFOSABI_CLOUDABI 17
-#define ELFOSABI_OPENVOS 18
-#define ELFOSABI_ARM_AEABI 64
 
 /* http://www.sco.com/developers/gabi/latest/ch4.reloc.html */
 #define ELF32_R_INFO(sym, type) ((((Elf32_Word)sym) << 8) | ((type) & 0xff))
@@ -294,236 +217,17 @@
 #define ELF32_ST_INFO(b,t) ELF_ST_INFO(b,t)
 #define ELF64_ST_INFO(b,t) ELF_ST_INFO(b,t)
 
-/* http://www.sco.com/developers/gabi/latest/ch4.eheader.html */
-#define EM_S370 9
-#define EM_VPP500 17
-#define EM_960 19
-#define EM_V800 36
-#define EM_FR20 37
-#define EM_RH32 38
-#define EM_RCE 39
-#define EM_FAKE_ALPHA 41
-#define EM_TRICORE 44
-#define EM_ARC 45
-#define EM_H8_300H 47
-#define EM_H8S 48
-#define EM_H8_500 49
-#define EM_MIPS_X 51
-#define EM_COLDFIRE 52
-#define EM_68HC12 53
-#define EM_MMA 54
-#define EM_PCP 55
-#define EM_NCPU 56
-#define EM_NDR1 57
-#define EM_STARCORE 58
-#define EM_ME16 59
-#define EM_ST100 60
-#define EM_TINYJ 61
-#define EM_PDSP 63
-#define EM_PDP10 64
-#define EM_PDP11 65
-#define EM_FX66 66
-#define EM_ST9PLUS 67
-#define EM_ST7 68
-#define EM_68HC16 69
-#define EM_68HC11 70
-#define EM_68HC08 71
-#define EM_68HC05 72
-#define EM_SVX 73
-#define EM_ST19 74
-#define EM_VAX 75
-#define EM_JAVELIN 77
-#define EM_FIREPATH 78
-#define EM_ZSP 79
-#define EM_MMIX 80
-#define EM_HUANY 81
-#define EM_PRISM 82
-#define EM_AVR 83
-#define EM_FR30 84
-#define EM_D10V 85
-#define EM_D30V 86
-#define EM_V850 87
-#define EM_MN10200 90
-#define EM_PJ 91
-#define EM_ARC_COMPACT 93
-#define EM_XTENSA 94
-#define EM_VIDEOCORE 95
-#define EM_TMM_GPP 96
-#define EM_NS32K 97
-#define EM_TPC 98
-#define EM_SNP1K 99
-#define EM_ST200 100
-#define EM_IP2K 101
-#define EM_MAX 102
-#define EM_CR 103
-#define EM_F2MC16 104
-#define EM_MSP430 105
-#define EM_SE_C33 107
-#define EM_SEP 108
-#define EM_ARCA 109
-#define EM_UNICORE 110
-#define EM_EXCESS 111
-#define EM_DXP 112
-#define EM_CRX 114
-#define EM_XGATE 115
-#define EM_C166 116
-#define EM_M16C 117
-#define EM_DSPIC30F 118
-#define EM_CE 119
-#define EM_M32C 120
-#define EM_TSK3000 131
-#define EM_RS08 132
-#define EM_SHARC 133
-#define EM_ECOG2 134
-#define EM_SCORE7 135
-#define EM_DSP24 136
-#define EM_VIDEOCORE3 137
-#define EM_LATTICEMICO32 138
-#define EM_SE_C17 139
-#define EM_TI_C2000 141
-#define EM_TI_C5500 142
-#define EM_MMDSP_PLUS 160
-#define EM_CYPRESS_M8C 161
-#define EM_R32C 162
-#define EM_TRIMEDIA 163
-#define EM_QDSP6 164
-#define EM_8051 165
-#define EM_STXP7X 166
-#define EM_NDS32 167
-#define EM_ECOG1 168
-#define EM_ECOG1X 168
-#define EM_MAXQ30 169
-#define EM_XIMO16 170
-#define EM_MANIK 171
-#define EM_CRAYNV2 172
-#define EM_RX 173
-#define EM_METAG 174
-#define EM_MCST_ELBRUS 175
-#define EM_ECOG16 176
-#define EM_CR16 177
-#define EM_ETPU 178
-#define EM_SLE9X 179
-#define EM_L10M 180
-#define EM_K10M 181
-#define EM_AVR32 185
-#define EM_STM8 186
-#define EM_TILE64 187
-#define EM_CUDA 190
-#define EM_CLOUDSHIELD 192
-#define EM_COREA_1ST 193
-#define EM_COREA_2ND 194
-#define EM_ARC_COMPACT2 195
-#define EM_OPEN8 196
-#define EM_RL78 197
-#define EM_VIDEOCORE5 198
-#define EM_78KOR 199
-#define EM_56800EX 200
-#define EM_BA1 201
-#define EM_BA2 202
-#define EM_XCORE 203
-#define EM_MCHP_PIC 204
-#define EM_INTEL205 205
-#define EM_INTEL206 206
-#define EM_INTEL207 207
-#define EM_INTEL208 208
-#define EM_INTEL209 209
-#define EM_KM32 210
-#define EM_KMX32 211
-#define EM_KMX16 212
-#define EM_KMX8 213
-#define EM_KVARC 214
-#define EM_CDP 215
-#define EM_COGE 216
-#define EM_COOL 217
-#define EM_NORC 218
-#define EM_CSR_KALIMBA 219
-#define EM_Z80 220
-#define EM_VISIUM 221
-#define EM_FT32 222
-#define EM_MOXIE 223
-#define EM_AMDGPU 224
-#define EM_RISCV 243
-
-/* http://www.sco.com/developers/gabi/latest/ch4.eheader.html */
-#define ET_LOOS 0xfe00
-#define ET_HIOS 0xfeff
-
 /* http://www.sco.com/developers/gabi/latest/ch4.sheader.html */
-#define GRP_COMDAT 0x1
 #define GRP_MASKOS   0x0ff00000
 #define GRP_MASKPROC 0xf0000000
 
-/* http://www.sco.com/developers/gabi/latest/ch5.pheader.html */
-#define PF_X 0x1
-#define PF_W 0x2
-#define PF_R 0x4
-#define PF_MASKOS   0x0ff00000
-#define PF_MASKPROC 0xf0000000
-
-#define PT_GNU_RELRO 0x6474e552
-
-#define STB_LOOS 10
-#define STB_HIOS 12
-#define STB_LOPROC 13
-#define STB_HIPROC 15
-
 /* http://www.sco.com/developers/gabi/latest/ch4.sheader.html */
-#define SHF_MERGE 0x10
-#define SHF_STRINGS 0x20
-#define SHF_INFO_LINK 0x40
-#define SHF_LINK_ORDER 0x80
-#define SHF_OS_NONCONFORMING 0x100
-#define SHF_GROUP 0x200
-#define SHF_TLS 0x400
-#define SHF_COMPRESSED 0x800
-#define SHF_MASKOS 0x0ff00000
-#define SHF_MASKPROC 0xf0000000
-
-/* http://www.sco.com/developers/gabi/latest/ch4.sheader.html */
-#define SHN_LOOS 0xff20
-#define SHN_HIOS 0xff3f
-#define SHN_XINDEX 0xffff
-
-/* http://www.sco.com/developers/gabi/latest/ch4.sheader.html */
-#define SHT_INIT_ARRAY 14
-#define SHT_FINI_ARRAY 15
-#define SHT_PREINIT_ARRAY 16
-#define SHT_GROUP 17
-#define SHT_SYMTAB_SHNDX 18
+/*
+ * Standard replacement for SHT_ANDROID_RELR.
+ */
 #define SHT_RELR 19
 #undef SHT_NUM
 #define SHT_NUM 20
-#define SHT_LOOS 0x60000000
-#define SHT_HIOS 0x6fffffff
-
-/* http://www.sco.com/developers/gabi/latest/ch4.symtab.html */
-#define STN_UNDEF 0
-
-/* http://www.sco.com/developers/gabi/latest/ch4.symtab.html */
-#define STT_GNU_IFUNC 10
-#define STT_LOOS 10
-#define STT_HIOS 12
-#define STT_LOPROC 13
-#define STT_HIPROC 15
-
-/* http://www.sco.com/developers/gabi/latest/ch4.symtab.html */
-#define STV_DEFAULT 0
-#define STV_INTERNAL 1
-#define STV_HIDDEN 2
-#define STV_PROTECTED 3
-
-/* The kernel uses NT_PRFPREG but glibc also offers NT_FPREGSET */
-#define NT_FPREGSET NT_PRFPREG
-
-#define ELF_NOTE_GNU "GNU"
-
-#define NT_GNU_BUILD_ID 3
-
-#define VER_FLG_BASE 0x1
-#define VER_FLG_WEAK 0x2
-
-#define VER_NDX_LOCAL 0
-#define VER_NDX_GLOBAL 1
 
 /*
  * Experimental support for SHT_RELR sections. For details, see proposal
@@ -553,3 +257,13 @@
 #define DT_ANDROID_RELSZ 0x60000010 // DT_LOOS + 3
 #define DT_ANDROID_RELA 0x60000011 // DT_LOOS + 4
 #define DT_ANDROID_RELASZ 0x60000012 // DT_LOOS + 5
+
+/* Linux traditionally doesn't have the trailing 64 that BSD has on these. */
+#define R_AARCH64_TLS_DTPREL R_AARCH64_TLS_DTPREL64
+#define R_AARCH64_TLS_DTPMOD R_AARCH64_TLS_DTPMOD64
+#define R_AARCH64_TLS_TPREL R_AARCH64_TLS_TPREL64
+
+/* TODO: upstream these to FreeBSD? */
+#define R_ARM_TLS_DESC 13
+#define R_ARM_IRELATIVE 160
+#define R_X86_64_JUMP_SLOT 7
diff --git a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/include/fenv.h b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/include/fenv.h
index 7b775b6..3fd9852 100644
--- a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/include/fenv.h
+++ b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/include/fenv.h
@@ -35,6 +35,8 @@
 #include <bits/fenv_arm.h>
 #elif defined(__i386__)
 #include <bits/fenv_x86.h>
+#elif defined(__riscv)
+#include <bits/fenv_riscv64.h>
 #elif defined(__x86_64__)
 #include <bits/fenv_x86_64.h>
 #endif
diff --git a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/include/langinfo.h b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/include/langinfo.h
index d9d8c15..2b43892 100644
--- a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/include/langinfo.h
+++ b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/include/langinfo.h
@@ -92,8 +92,8 @@
 #define NOEXPR 54
 #define CRNCYSTR 55
 
-char* nl_langinfo(nl_item __item) __INTRODUCED_IN(26);
-char* nl_langinfo_l(nl_item __item, locale_t __l) __INTRODUCED_IN(26);
+char* _Nonnull nl_langinfo(nl_item __item) __INTRODUCED_IN(26);
+char* _Nonnull nl_langinfo_l(nl_item __item, locale_t _Nonnull __l) __INTRODUCED_IN(26);
 
 __END_DECLS
 
diff --git a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/include/libgen.h b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/include/libgen.h
index b910790..474f066 100644
--- a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/include/libgen.h
+++ b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/include/libgen.h
@@ -50,7 +50,7 @@
  * Note that Android's cv-qualifiers differ from POSIX; Android's implementation doesn't
  * modify its input and uses thread-local storage for the result if necessary.
  */
-char* __posix_basename(const char* __path) __RENAME(basename);
+char* _Nullable __posix_basename(const char* _Nullable __path) __RENAME(basename);
 
 /**
  * This macro ensures that callers get the POSIX basename() if they include this header,
@@ -65,13 +65,13 @@
  * Note that Android's cv-qualifiers differ from POSIX; Android's implementation doesn't
  * modify its input and uses thread-local storage for the result if necessary.
  */
-char* dirname(const char* __path);
+char* _Nullable dirname(const char* _Nullable __path);
 
 #if !defined(__LP64__)
 /** Deprecated. Use dirname() instead. */
-int dirname_r(const char* __path, char* __buf, size_t __n);
+int dirname_r(const char* _Nullable __path, char* _Nullable __buf, size_t __n);
 /** Deprecated. Use basename() instead. */
-int basename_r(const char* __path, char* __buf, size_t __n);
+int basename_r(const char* _Nullable __path, char* _Nullable __buf, size_t __n);
 #endif
 
 __END_DECLS
diff --git a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/include/malloc.h b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/include/malloc.h
index 40786fa..02bda60 100644
--- a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/include/malloc.h
+++ b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/include/malloc.h
@@ -40,7 +40,7 @@
  * Returns a pointer to the allocated memory on success and returns a null
  * pointer and sets `errno` on failure.
  */
-void* malloc(size_t __byte_count) __mallocfunc __BIONIC_ALLOC_SIZE(1) __wur;
+void* _Nullable malloc(size_t __byte_count) __mallocfunc __BIONIC_ALLOC_SIZE(1) __wur;
 
 /**
  * [calloc(3)](http://man7.org/linux/man-pages/man3/calloc.3.html) allocates
@@ -49,7 +49,7 @@
  * Returns a pointer to the allocated memory on success and returns a null
  * pointer and sets `errno` on failure.
  */
-void* calloc(size_t __item_count, size_t __item_size) __mallocfunc __BIONIC_ALLOC_SIZE(1,2) __wur;
+void* _Nullable calloc(size_t __item_count, size_t __item_size) __mallocfunc __BIONIC_ALLOC_SIZE(1,2) __wur;
 
 /**
  * [realloc(3)](http://man7.org/linux/man-pages/man3/realloc.3.html) resizes
@@ -58,7 +58,7 @@
  * Returns a pointer (which may be different from `__ptr`) to the resized
  * memory on success and returns a null pointer and sets `errno` on failure.
  */
-void* realloc(void* __ptr, size_t __byte_count) __BIONIC_ALLOC_SIZE(2) __wur;
+void* _Nullable realloc(void* _Nullable __ptr, size_t __byte_count) __BIONIC_ALLOC_SIZE(2) __wur;
 
 /**
  * [reallocarray(3)](http://man7.org/linux/man-pages/man3/realloc.3.html) resizes
@@ -70,13 +70,13 @@
  * Returns a pointer (which may be different from `__ptr`) to the resized
  * memory on success and returns a null pointer and sets `errno` on failure.
  */
-void* reallocarray(void* __ptr, size_t __item_count, size_t __item_size) __BIONIC_ALLOC_SIZE(2, 3) __wur __INTRODUCED_IN(29);
+void* _Nullable reallocarray(void* _Nullable __ptr, size_t __item_count, size_t __item_size) __BIONIC_ALLOC_SIZE(2, 3) __wur __INTRODUCED_IN(29);
 
 /**
  * [free(3)](http://man7.org/linux/man-pages/man3/free.3.html) deallocates
  * memory on the heap.
  */
-void free(void* __ptr);
+void free(void* _Nullable __ptr);
 
 /**
  * [memalign(3)](http://man7.org/linux/man-pages/man3/memalign.3.html) allocates
@@ -87,7 +87,7 @@
  *
  * See also posix_memalign().
  */
-void* memalign(size_t __alignment, size_t __byte_count) __mallocfunc __BIONIC_ALLOC_SIZE(2) __wur;
+void* _Nullable memalign(size_t __alignment, size_t __byte_count) __mallocfunc __BIONIC_ALLOC_SIZE(2) __wur;
 
 /**
  * [malloc_usable_size(3)](http://man7.org/linux/man-pages/man3/malloc_usable_size.3.html)
@@ -95,7 +95,7 @@
  *
  * Available since API level 17.
  */
-size_t malloc_usable_size(const void* __ptr) __INTRODUCED_IN(17);
+size_t malloc_usable_size(const void* _Nullable __ptr) __INTRODUCED_IN(17);
 
 #define __MALLINFO_BODY \
   /** Total number of non-mmapped bytes currently allocated from OS. */ \
@@ -168,7 +168,7 @@
  *
  * Available since API level 23.
  */
-int malloc_info(int __must_be_zero, FILE* __fp) __INTRODUCED_IN(23);
+int malloc_info(int __must_be_zero, FILE* _Nonnull __fp) __INTRODUCED_IN(23);
 
 /**
  * mallopt() option to set the decay time. Valid values are 0 and 1.
@@ -329,7 +329,7 @@
  *
  * See also: [extra documentation](https://android.googlesource.com/platform/bionic/+/master/libc/malloc_hooks/README.md)
  */
-extern void* (*volatile __malloc_hook)(size_t __byte_count, const void* __caller) __INTRODUCED_IN(28);
+extern void* _Nonnull (*volatile _Nonnull __malloc_hook)(size_t __byte_count, const void* _Nonnull __caller) __INTRODUCED_IN(28);
 
 /**
  * [__realloc_hook(3)](http://man7.org/linux/man-pages/man3/__realloc_hook.3.html)
@@ -340,7 +340,7 @@
  *
  * See also: [extra documentation](https://android.googlesource.com/platform/bionic/+/master/libc/malloc_hooks/README.md)
  */
-extern void* (*volatile __realloc_hook)(void* __ptr, size_t __byte_count, const void* __caller) __INTRODUCED_IN(28);
+extern void* _Nonnull (*volatile _Nonnull __realloc_hook)(void* _Nullable __ptr, size_t __byte_count, const void* _Nonnull __caller) __INTRODUCED_IN(28);
 
 /**
  * [__free_hook(3)](http://man7.org/linux/man-pages/man3/__free_hook.3.html)
@@ -351,7 +351,7 @@
  *
  * See also: [extra documentation](https://android.googlesource.com/platform/bionic/+/master/libc/malloc_hooks/README.md)
  */
-extern void (*volatile __free_hook)(void* __ptr, const void* __caller) __INTRODUCED_IN(28);
+extern void (*volatile _Nonnull __free_hook)(void* _Nullable __ptr, const void* _Nonnull __caller) __INTRODUCED_IN(28);
 
 /**
  * [__memalign_hook(3)](http://man7.org/linux/man-pages/man3/__memalign_hook.3.html)
@@ -362,6 +362,6 @@
  *
  * See also: [extra documentation](https://android.googlesource.com/platform/bionic/+/master/libc/malloc_hooks/README.md)
  */
-extern void* (*volatile __memalign_hook)(size_t __alignment, size_t __byte_count, const void* __caller) __INTRODUCED_IN(28);
+extern void* _Nonnull (*volatile _Nonnull __memalign_hook)(size_t __alignment, size_t __byte_count, const void* _Nonnull __caller) __INTRODUCED_IN(28);
 
 __END_DECLS
diff --git a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/include/regex.h b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/include/regex.h
index c4cc39c..be1418e 100644
--- a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/include/regex.h
+++ b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/include/regex.h
@@ -49,8 +49,8 @@
 typedef struct {
 	int re_magic;
 	size_t re_nsub;		/* number of parenthesized subexpressions */
-	const char *re_endp;	/* end pointer for REG_PEND */
-	struct re_guts *re_g;	/* none of your business :-) */
+	const char * _Null_unspecified re_endp;	/* end pointer for REG_PEND */
+	struct re_guts * _Null_unspecified re_g;	/* none of your business :-) */
 } regex_t;
 
 typedef struct {
@@ -67,6 +67,7 @@
 #define	REG_NOSPEC	0020
 #define	REG_PEND	0040
 #define	REG_DUMP	0200
+#define	REG_GNU		0400
 
 /* regerror() flags */
 #define	REG_NOMATCH	 1
@@ -85,6 +86,7 @@
 #define	REG_EMPTY	14
 #define	REG_ASSERT	15
 #define	REG_INVARG	16
+#define	REG_ILLSEQ	17
 #define	REG_ATOI	255	/* convert name to number (!) */
 #define	REG_ITOA	0400	/* convert number to name (!) */
 
@@ -97,10 +99,10 @@
 #define	REG_BACKR	02000	/* force use of backref code */
 
 __BEGIN_DECLS
-int regcomp(regex_t* __re, const char* __regex, int __flags);
-size_t regerror(int __error_code, const regex_t* __re, char* __buf, size_t __n);
-int regexec(const regex_t* __re, const char* __s, size_t __match_count, regmatch_t __matches[], int __flags);
-void regfree(regex_t* __re);
+int regcomp(regex_t* _Nonnull __re, const char* _Nonnull __regex, int __flags);
+size_t regerror(int __error_code, const regex_t* _Nullable __re, char* _Nullable __buf, size_t __n);
+int regexec(const regex_t* _Nonnull __re, const char* _Nonnull __s, size_t __match_count, regmatch_t __matches[_Nullable], int __flags);
+void regfree(regex_t* _Nonnull __re);
 __END_DECLS
 
 #endif
diff --git a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/include/setjmp.h b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/include/setjmp.h
index 3a64b33..a3de9c7 100644
--- a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/include/setjmp.h
+++ b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/include/setjmp.h
@@ -37,8 +37,12 @@
  *	@(#)setjmp.h	8.2 (Berkeley) 1/21/94
  */
 
-#ifndef _SETJMP_H_
-#define _SETJMP_H_
+#pragma once
+
+/**
+ * @file setjmp.h
+ * @brief Non-local jumps.
+ */
 
 #include <sys/cdefs.h>
 
@@ -48,28 +52,60 @@
 #define _JBLEN 64
 #elif defined(__i386__)
 #define _JBLEN 10
+#elif defined(__riscv)
+#define _JBLEN 29
 #elif defined(__x86_64__)
 #define _JBLEN 11
 #endif
 
+/** The type of the buffer used by sigsetjmp()/siglongjmp(). */
 typedef long sigjmp_buf[_JBLEN + 1];
+
+/** The type of the buffer used by setjmp()/longjmp(). */
 typedef long jmp_buf[_JBLEN];
 
 #undef _JBLEN
 
 __BEGIN_DECLS
 
+/**
+ * Equivalent to sigsetjmp() with the second argument 0, so that the signal
+ * mask is not saved.
+ */
 int _setjmp(jmp_buf __env) __returns_twice;
+
+/** Equivalent to siglongjmp(). */
 __noreturn void _longjmp(jmp_buf __env, int __value);
 
+/**
+ * Equivalent to sigsetjmp() with the second argument 1, so that the signal
+ * mask is saved.
+ */
 int setjmp(jmp_buf __env) __returns_twice;
-__noreturn void longjmp(jmp_buf __env, int __value);
 
+/** C11 says setjmp() must be a macro, but Android already had a function. */
 #define setjmp(__env) setjmp(__env)
 
-int sigsetjmp(sigjmp_buf __env, int __save_signal_mask);
+/** Equivalent to siglongjmp(). */
+__noreturn void longjmp(jmp_buf __env, int __value);
+
+/**
+ * [sigsetjmp(3)](http://man7.org/linux/man-pages/man3/sigsetjmp.3.html)
+ * sets the target of a future siglongjmp() call, saving or not saving the
+ * current signal mask based on the second argument.
+ *
+ * Returns 0 when first called, and returns the value passed to siglongjmp()
+ * when returning here as a result of a siglongjmp() call.
+ */
+int sigsetjmp(sigjmp_buf __env, int __save_signal_mask) __returns_twice;
+
+/**
+ * [siglongjmp(3)](http://man7.org/linux/man-pages/man3/siglongjmp.3.html)
+ * transfers control back to the site of the sigsetjmp() call that initialized
+ * the given jump buffer, returning the given value.
+ *
+ * Does not return.
+ */
 __noreturn void siglongjmp(sigjmp_buf __env, int __value);
 
 __END_DECLS
-
-#endif
diff --git a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/include/spawn.h b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/include/spawn.h
index 2e239bf..e445453 100644
--- a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/include/spawn.h
+++ b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/include/spawn.h
@@ -46,6 +46,8 @@
 #define POSIX_SPAWN_USEVFORK 64
 #define POSIX_SPAWN_SETSID 128
 #endif
+// mark all fds (except stdin/out/err) as close-on-exec prior to executing registered file actions
+#define POSIX_SPAWN_CLOEXEC_DEFAULT 256
 
 typedef struct __posix_spawnattr* posix_spawnattr_t;
 typedef struct __posix_spawn_file_actions* posix_spawn_file_actions_t;
diff --git a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/include/stdio_ext.h b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/include/stdio_ext.h
index 3aa183d..eda5919 100644
--- a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/include/stdio_ext.h
+++ b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/include/stdio_ext.h
@@ -96,13 +96,21 @@
 
 /**
  * [__fpending(3)](http://man7.org/linux/man-pages/man3/__fpending.3.html) returns the number of
- * bytes in the output buffer.
+ * bytes in the output buffer. See __freadahead() for the input buffer.
  *
  * Available since API level 23.
  */
 size_t __fpending(FILE* __fp) __INTRODUCED_IN(23);
 
 /**
+ * __freadahead(3) returns the number of bytes in the input buffer.
+ * See __fpending() for the output buffer.
+ *
+ * Available since API level 34.
+ */
+size_t __freadahead(FILE* __fp) __INTRODUCED_IN(34);
+
+/**
  * [_flushlbf(3)](http://man7.org/linux/man-pages/man3/_flushlbf.3.html) flushes all
  * line-buffered streams.
  *
diff --git a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/include/stdlib.h b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/include/stdlib.h
index 4aa27f9..06ed3f4 100644
--- a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/include/stdlib.h
+++ b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/include/stdlib.h
@@ -49,82 +49,82 @@
 __noreturn void _Exit(int) __RENAME(_exit);
 #endif
 
-int atexit(void (*__fn)(void));
+int atexit(void (* _Nonnull __fn)(void));
 
-int at_quick_exit(void (*__fn)(void)) __INTRODUCED_IN(21);
+int at_quick_exit(void (* _Nonnull __fn)(void)) __INTRODUCED_IN(21);
 void quick_exit(int __status) __noreturn __INTRODUCED_IN(21);
 
-char* getenv(const char* __name);
-int putenv(char* __assignment);
-int setenv(const char* __name, const char* __value, int __overwrite);
-int unsetenv(const char* __name);
+char* _Nullable getenv(const char* _Nonnull __name);
+int putenv(char* _Nonnull __assignment);
+int setenv(const char* _Nonnull __name, const char* _Nonnull __value, int __overwrite);
+int unsetenv(const char* _Nonnull __name);
 int clearenv(void);
 
-char* mkdtemp(char* __template);
-char* mktemp(char* __template) __attribute__((deprecated("mktemp is unsafe, use mkstemp or tmpfile instead")));
+char* _Nullable mkdtemp(char* _Nonnull __template);
+char* _Nullable mktemp(char* _Nonnull __template) __attribute__((deprecated("mktemp is unsafe, use mkstemp or tmpfile instead")));
 
-int mkostemp64(char* __template, int __flags) __INTRODUCED_IN(23);
-int mkostemp(char* __template, int __flags) __INTRODUCED_IN(23);
-int mkostemps64(char* __template, int __suffix_length, int __flags) __INTRODUCED_IN(23);
-int mkostemps(char* __template, int __suffix_length, int __flags) __INTRODUCED_IN(23);
-int mkstemp64(char* __template) __INTRODUCED_IN(21);
-int mkstemp(char* __template);
-int mkstemps64(char* __template, int __flags) __INTRODUCED_IN(23);
-int mkstemps(char* __template, int __flags);
+int mkostemp64(char* _Nonnull __template, int __flags) __INTRODUCED_IN(23);
+int mkostemp(char* _Nonnull __template, int __flags) __INTRODUCED_IN(23);
+int mkostemps64(char* _Nonnull __template, int __suffix_length, int __flags) __INTRODUCED_IN(23);
+int mkostemps(char* _Nonnull __template, int __suffix_length, int __flags) __INTRODUCED_IN(23);
+int mkstemp64(char* _Nonnull __template) __INTRODUCED_IN(21);
+int mkstemp(char* _Nonnull __template);
+int mkstemps64(char* _Nonnull __template, int __flags) __INTRODUCED_IN(23);
+int mkstemps(char* _Nonnull __template, int __flags);
 
-long strtol(const char* __s, char** __end_ptr, int __base);
-long long strtoll(const char* __s, char** __end_ptr, int __base);
-unsigned long strtoul(const char* __s, char** __end_ptr, int __base);
-unsigned long long strtoull(const char* __s, char** __end_ptr, int __base);
+long strtol(const char* _Nonnull __s, char* _Nullable * _Nullable __end_ptr, int __base);
+long long strtoll(const char* _Nonnull __s, char* _Nullable * _Nullable __end_ptr, int __base);
+unsigned long strtoul(const char* _Nonnull __s, char* _Nullable * _Nullable __end_ptr, int __base);
+unsigned long long strtoull(const char* _Nonnull __s, char* _Nullable * _Nullable __end_ptr, int __base);
 
-int posix_memalign(void** __memptr, size_t __alignment, size_t __size) __INTRODUCED_IN(17);
+int posix_memalign(void* _Nullable * _Nullable __memptr, size_t __alignment, size_t __size) __INTRODUCED_IN(17);
 
-void* aligned_alloc(size_t __alignment, size_t __size) __INTRODUCED_IN(28);
+void* _Nullable aligned_alloc(size_t __alignment, size_t __size) __INTRODUCED_IN(28);
 
-double strtod(const char* __s, char** __end_ptr);
-long double strtold(const char* __s, char** __end_ptr) __RENAME_LDBL(strtod, 3, 21);
+double strtod(const char* _Nonnull __s, char* _Nullable * _Nullable __end_ptr);
+long double strtold(const char* _Nonnull __s, char* _Nullable * _Nullable __end_ptr) __RENAME_LDBL(strtod, 3, 21);
 
-unsigned long strtoul_l(const char* __s, char** __end_ptr, int __base, locale_t __l) __INTRODUCED_IN(26);
+unsigned long strtoul_l(const char* _Nonnull __s, char* _Nullable * _Nullable __end_ptr, int __base, locale_t _Nonnull __l) __INTRODUCED_IN(26);
 
-int atoi(const char* __s) __attribute_pure__;
-long atol(const char* __s) __attribute_pure__;
-long long atoll(const char* __s) __attribute_pure__;
+int atoi(const char* _Nonnull __s) __attribute_pure__;
+long atol(const char* _Nonnull __s) __attribute_pure__;
+long long atoll(const char* _Nonnull __s) __attribute_pure__;
 
-__wur char* realpath(const char* __path, char* __resolved);
-int system(const char* __command);
+__wur char* _Nullable realpath(const char* _Nonnull __path, char* _Nullable __resolved);
+int system(const char* _Nonnull __command);
 
-void* bsearch(const void* __key, const void* __base, size_t __nmemb, size_t __size, int (*__comparator)(const void* __lhs, const void* __rhs));
+void* _Nullable bsearch(const void* _Nonnull __key, const void* _Nullable __base, size_t __nmemb, size_t __size, int (* _Nonnull __comparator)(const void* _Nonnull __lhs, const void* _Nonnull __rhs));
 
-void qsort(void* __base, size_t __nmemb, size_t __size, int (*__comparator)(const void* __lhs, const void* __rhs));
+void qsort(void* _Nullable __base, size_t __nmemb, size_t __size, int (* _Nonnull __comparator)(const void* _Nonnull __lhs, const void* _Nonnull __rhs));
 
 uint32_t arc4random(void);
 uint32_t arc4random_uniform(uint32_t __upper_bound);
-void arc4random_buf(void* __buf, size_t __n);
+void arc4random_buf(void* _Nonnull __buf, size_t __n);
 
 #define RAND_MAX 0x7fffffff
 
-int rand_r(unsigned int* __seed_ptr) __INTRODUCED_IN(21);
+int rand_r(unsigned int* _Nonnull __seed_ptr) __INTRODUCED_IN(21);
 
 double drand48(void);
-double erand48(unsigned short __xsubi[3]);
-long jrand48(unsigned short __xsubi[3]);
-void lcong48(unsigned short __param[7]) __INTRODUCED_IN(23);
+double erand48(unsigned short __xsubi[_Nonnull 3]);
+long jrand48(unsigned short __xsubi[_Nonnull 3]);
+void lcong48(unsigned short __param[_Nonnull 7]) __INTRODUCED_IN(23);
 long lrand48(void);
 long mrand48(void);
-long nrand48(unsigned short __xsubi[3]);
-unsigned short* seed48(unsigned short __seed16v[3]);
+long nrand48(unsigned short __xsubi[_Nonnull 3]);
+unsigned short* _Nonnull seed48(unsigned short __seed16v[_Nonnull 3]);
 void srand48(long __seed);
 
-char* initstate(unsigned int __seed, char* __state, size_t __n) __INTRODUCED_IN(21);
-char* setstate(char* __state) __INTRODUCED_IN(21);
+char* _Nullable initstate(unsigned int __seed, char* _Nonnull __state, size_t __n) __INTRODUCED_IN(21);
+char* _Nullable setstate(char* _Nonnull __state) __INTRODUCED_IN(21);
 
 int getpt(void);
 int posix_openpt(int __flags) __INTRODUCED_IN(21);
-char* ptsname(int __fd);
-int ptsname_r(int __fd, char* __buf, size_t __n);
+char* _Nullable ptsname(int __fd);
+int ptsname_r(int __fd, char* _Nonnull __buf, size_t __n);
 int unlockpt(int __fd);
 
-int getsubopt(char** __option, char* const* __tokens, char** __value_ptr) __INTRODUCED_IN(26);
+int getsubopt(char* _Nonnull * _Nonnull __option, char* _Nonnull const* _Nonnull __tokens, char* _Nullable * _Nonnull __value_ptr) __INTRODUCED_IN(26);
 
 typedef struct {
   int quot;
@@ -154,18 +154,18 @@
  *
  * Returns the number of samples written to `__averages` (at most 3), and returns -1 on failure.
  */
-int getloadavg(double __averages[], int __n) __INTRODUCED_IN(29);
+int getloadavg(double __averages[_Nonnull], int __n) __INTRODUCED_IN(29);
 
 /* BSD compatibility. */
-const char* getprogname(void) __INTRODUCED_IN(21);
-void setprogname(const char* __name) __INTRODUCED_IN(21);
+const char* _Nullable getprogname(void) __INTRODUCED_IN(21);
+void setprogname(const char* _Nonnull __name) __INTRODUCED_IN(21);
 
-int mblen(const char* __s, size_t __n) __INTRODUCED_IN_NO_GUARD_FOR_NDK(26);
-size_t mbstowcs(wchar_t* __dst, const char* __src, size_t __n) __INTRODUCED_IN_NO_GUARD_FOR_NDK(21);
-int mbtowc(wchar_t* __wc_ptr, const char* __s, size_t __n) __INTRODUCED_IN_NO_GUARD_FOR_NDK(21);
-int wctomb(char* __dst, wchar_t __wc) __INTRODUCED_IN_NO_GUARD_FOR_NDK(21);
+int mblen(const char* _Nullable __s, size_t __n) __INTRODUCED_IN_NO_GUARD_FOR_NDK(26);
+size_t mbstowcs(wchar_t* _Nullable __dst, const char* _Nullable __src, size_t __n) __INTRODUCED_IN_NO_GUARD_FOR_NDK(21);
+int mbtowc(wchar_t* _Nullable __wc_ptr, const char*  _Nullable __s, size_t __n) __INTRODUCED_IN_NO_GUARD_FOR_NDK(21);
+int wctomb(char* _Nullable __dst, wchar_t __wc) __INTRODUCED_IN_NO_GUARD_FOR_NDK(21);
 
-size_t wcstombs(char* __dst, const wchar_t* __src, size_t __n) __INTRODUCED_IN_NO_GUARD_FOR_NDK(21);
+size_t wcstombs(char* _Nullable __dst, const wchar_t* _Nullable __src, size_t __n) __INTRODUCED_IN_NO_GUARD_FOR_NDK(21);
 
 #if __ANDROID_API__ >= 21
 size_t __ctype_get_mb_cur_max(void) __INTRODUCED_IN(21);
@@ -192,25 +192,25 @@
 #endif
 
 #if __ANDROID_API__ >= 21
-float strtof(const char* __s, char** __end_ptr) __INTRODUCED_IN(21);
-double atof(const char* __s) __attribute_pure__ __INTRODUCED_IN(21);
+float strtof(const char* _Nonnull __s, char* _Nullable * _Nullable __end_ptr) __INTRODUCED_IN(21);
+double atof(const char* _Nonnull __s) __attribute_pure__ __INTRODUCED_IN(21);
 int rand(void) __INTRODUCED_IN(21);
 void srand(unsigned int __seed) __INTRODUCED_IN(21);
 long random(void) __INTRODUCED_IN(21);
 void srandom(unsigned int __seed) __INTRODUCED_IN(21);
 int grantpt(int __fd) __INTRODUCED_IN(21);
 
-long long strtoll_l(const char* __s, char** __end_ptr, int __base, locale_t __l) __INTRODUCED_IN(21);
-unsigned long long strtoull_l(const char* __s, char** __end_ptr, int __base, locale_t __l) __INTRODUCED_IN(21);
-long double strtold_l(const char* __s, char** __end_ptr, locale_t __l) __INTRODUCED_IN(21);
+long long strtoll_l(const char* _Nonnull __s, char* _Nullable * _Nullable __end_ptr, int __base, locale_t _Nonnull __l) __INTRODUCED_IN(21);
+unsigned long long strtoull_l(const char* _Nonnull __s, char* _Nullable * _Nullable __end_ptr, int __base, locale_t _Nonnull __l) __INTRODUCED_IN(21);
+long double strtold_l(const char* _Nonnull __s, char* _Nullable * _Nullable __end_ptr, locale_t _Nonnull __l) __INTRODUCED_IN(21);
 #else
 // Implemented as static inlines before 21.
 #endif
 
 #if __ANDROID_API__ >= 26
-double strtod_l(const char* __s, char** __end_ptr, locale_t __l) __INTRODUCED_IN(26);
-float strtof_l(const char* __s, char** __end_ptr, locale_t __l) __INTRODUCED_IN(26);
-long strtol_l(const char* __s, char** __end_ptr, int, locale_t __l) __INTRODUCED_IN(26);
+double strtod_l(const char* _Nonnull __s, char* _Nullable * _Nullable __end_ptr, locale_t _Nonnull __l) __INTRODUCED_IN(26);
+float strtof_l(const char* _Nonnull __s, char* _Nullable * _Nullable __end_ptr, locale_t _Nonnull __l) __INTRODUCED_IN(26);
+long strtol_l(const char* _Nonnull __s, char* _Nullable * _Nullable __end_ptr, int, locale_t _Nonnull __l) __INTRODUCED_IN(26);
 #else
 // Implemented as static inlines before 26.
 #endif
diff --git a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/include/string.h b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/include/string.h
index 0cc5611..59c4687 100644
--- a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/include/string.h
+++ b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/include/string.h
@@ -55,7 +55,24 @@
 void* mempcpy(void* __dst, const void* __src, size_t __n) __INTRODUCED_IN(23);
 #endif
 void* memmove(void* __dst, const void* __src, size_t __n);
+
+/**
+ * [memset(3)](http://man7.org/linux/man-pages/man3/memset.3.html) writes the
+ * bottom 8 bits of the given int to the next `n` bytes of `dst`.
+ *
+ * Returns `dst`.
+ */
 void* memset(void* __dst, int __ch, size_t __n);
+
+/**
+ * [memset_explicit(3)](http://man7.org/linux/man-pages/man3/memset_explicit.3.html)
+ * writes the bottom 8 bits of the given int to the next `n` bytes of `dst`,
+ * but won't be optimized out by the compiler.
+ *
+ * Returns `dst`.
+ */
+void* memset_explicit(void* __dst, int __ch, size_t __n) __INTRODUCED_IN(34);
+
 void* memmem(const void* __haystack, size_t __haystack_size, const void* __needle, size_t __needle_size) __attribute_pure__;
 
 char* strchr(const char* __s, int __ch) __attribute_pure__;
diff --git a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/include/sys/mman.h b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/include/sys/mman.h
index 6ef0c12..fea9332 100644
--- a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/include/sys/mman.h
+++ b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/include/sys/mman.h
@@ -110,6 +110,8 @@
  * [mlockall(2)](http://man7.org/linux/man-pages/man2/mlockall.2.html)
  * locks pages (preventing swapping).
  *
+ * Available since API level 17.
+ *
  * Returns 0 on success, and returns -1 and sets `errno` on failure.
  */
 int mlockall(int __flags) __INTRODUCED_IN(17);
@@ -118,6 +120,8 @@
  * [munlockall(2)](http://man7.org/linux/man-pages/man2/munlockall.2.html)
  * unlocks pages (allowing swapping).
  *
+ * Available since API level 17.
+ *
  * Returns 0 on success, and returns -1 and sets `errno` on failure.
  */
 int munlockall(void) __INTRODUCED_IN(17);
@@ -134,6 +138,8 @@
  * [mlock2(2)](http://man7.org/linux/man-pages/man2/mlock.2.html)
  * locks pages (preventing swapping), with optional flags.
  *
+ * Available since API level 30.
+ *
  * Returns 0 on success, and returns -1 and sets `errno` on failure.
  */
 int mlock2(const void* __addr, size_t __size, int __flags) __INTRODUCED_IN(30);
@@ -167,9 +173,14 @@
  * works just like madvise(2) but applies to the process specified by the given
  * PID file descriptor.
  *
+ * Available since API level 31. Its sibling process_mrelease() does not have a
+ * libc wrapper and should be called using syscall() instead. Given the lack of
+ * widespread applicability of this system call and the absence of wrappers in
+ * other libcs, it was probably a mistake to have added this wrapper to bionic.
+ *
  * Returns the number of bytes advised on success, and returns -1 and sets `errno` on failure.
  */
-ssize_t process_madvise(int __pid_fd, const struct iovec* __iov, size_t __count, int __advice, unsigned __flags);
+ssize_t process_madvise(int __pid_fd, const struct iovec* __iov, size_t __count, int __advice, unsigned __flags) __INTRODUCED_IN(31);
 
 #if defined(__USE_GNU)
 
@@ -177,6 +188,8 @@
  * [memfd_create(2)](http://man7.org/linux/man-pages/man2/memfd_create.2.html)
  * creates an anonymous file.
  *
+ * Available since API level 30.
+ *
  * Returns an fd on success, and returns -1 and sets `errno` on failure.
  */
 int memfd_create(const char* __name, unsigned __flags) __INTRODUCED_IN(30);
@@ -211,9 +224,10 @@
  * [posix_madvise(3)](http://man7.org/linux/man-pages/man3/posix_madvise.3.html)
  * gives the kernel advice about future usage patterns.
  *
- * Returns 0 on success, and returns a positive error number on failure.
+ * Available since API level 23.
+ * See also madvise() which is available at all API levels.
  *
- * See also madvise() which has been available much longer.
+ * Returns 0 on success, and returns a positive error number on failure.
  */
 int posix_madvise(void* __addr, size_t __size, int __advice) __INTRODUCED_IN(23);
 
diff --git a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/include/sys/resource.h b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/include/sys/resource.h
index 9181125..ccb267d 100644
--- a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/include/sys/resource.h
+++ b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/include/sys/resource.h
@@ -41,6 +41,7 @@
 #define RLIM_SAVED_MAX RLIM_INFINITY
 
 typedef unsigned long rlim_t;
+typedef unsigned long long rlim64_t;
 
 int getrlimit(int __resource, struct rlimit* __limit);
 int setrlimit(int __resource, const struct rlimit* __limit);
diff --git a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/include/sys/stat.h b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/include/sys/stat.h
index 4184f6c..623631e 100644
--- a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/include/sys/stat.h
+++ b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/include/sys/stat.h
@@ -40,7 +40,7 @@
 
 __BEGIN_DECLS
 
-#if defined(__aarch64__)
+#if defined(__aarch64__) || defined(__riscv)
 #define __STAT64_BODY \
   dev_t st_dev; \
   ino_t st_ino; \
diff --git a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/include/sys/ucontext.h b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/include/sys/ucontext.h
index 9c5801f..8e5873d 100644
--- a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/include/sys/ucontext.h
+++ b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/include/sys/ucontext.h
@@ -26,8 +26,7 @@
  * SUCH DAMAGE.
  */
 
-#ifndef _SYS_UCONTEXT_H_
-#define _SYS_UCONTEXT_H_
+#pragma once
 
 #include <sys/cdefs.h>
 
@@ -313,8 +312,69 @@
   struct _libc_fpstate __fpregs_mem;
 } ucontext_t;
 
+#elif defined(__riscv)
+
+#define NGREG 32
+
+#define REG_PC 0
+#define REG_RA 1
+#define REG_SP 2
+#define REG_TP 4
+#define REG_S0 8
+#define REG_A0 10
+
+typedef unsigned long __riscv_mc_gp_state[NGREG];
+
+typedef unsigned long greg_t;
+typedef unsigned long gregset_t[NGREG];
+typedef union __riscv_mc_fp_state fpregset_t;
+
+/* These match the kernel <asm/ptrace.h> types but with different names. */
+
+struct __riscv_mc_f_ext_state {
+  uint32_t __f[32];
+  uint32_t __fcsr;
+};
+
+struct __riscv_mc_d_ext_state {
+  uint64_t __f[32];
+  uint32_t __fcsr;
+};
+
+struct __riscv_mc_q_ext_state {
+  uint64_t __f[64] __attribute__((__aligned__(16)));
+  uint32_t __fcsr;
+  uint32_t __reserved[3];
+};
+
+union __riscv_mc_fp_state {
+  struct __riscv_mc_f_ext_state __f;
+  struct __riscv_mc_d_ext_state __d;
+  struct __riscv_mc_q_ext_state __q;
+};
+
+/* This matches the kernel <asm/sigcontext.h> but with different names. */
+
+typedef struct mcontext_t {
+  __riscv_mc_gp_state __gregs;
+  union __riscv_mc_fp_state __fpregs;
+} mcontext_t;
+
+/* This matches the kernel <asm/ucontext.h> but using mcontext_t. */
+
+typedef struct ucontext_t {
+  unsigned long uc_flags;
+  struct ucontext_t* uc_link;
+  stack_t uc_stack;
+  union {
+    sigset_t uc_sigmask;
+    sigset64_t uc_sigmask64;
+  };
+  /* The kernel adds extra padding here to allow sigset_t to grow. */
+  char __padding[128 - sizeof(sigset_t)];
+  mcontext_t uc_mcontext;
+} ucontext_t;
+
 #endif
 
 __END_DECLS
-
-#endif /* _SYS_UCONTEXT_H_ */
diff --git a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/include/sys/user.h b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/include/sys/user.h
index 2392edd..432c7cb 100644
--- a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/include/sys/user.h
+++ b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/include/sys/user.h
@@ -26,8 +26,7 @@
  * SUCH DAMAGE.
  */
 
-#ifndef _SYS_USER_H_
-#define _SYS_USER_H_
+#pragma once
 
 #include <sys/cdefs.h>
 #include <stddef.h> /* For size_t. */
@@ -233,6 +232,11 @@
   uint32_t fpcr;
 };
 
+#elif defined(__riscv)
+
+// This space deliberately left blank for now.
+// No other libcs have any riscv64-specific structs.
+
 #else
 
 #error "Unsupported architecture."
@@ -240,5 +244,3 @@
 #endif
 
 __END_DECLS
-
-#endif  /* _SYS_USER_H_ */
diff --git a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/include/syslog.h b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/include/syslog.h
index 45de253..d89d769 100644
--- a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/include/syslog.h
+++ b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/include/syslog.h
@@ -133,9 +133,10 @@
 
 /**
  * [openlog(3)](http://man7.org/linux/man-pages/man3/openlog.3.html) sets
- * the log tag to `__prefix`. On Android, the other two arguments are ignored.
+ * the log tag to `__prefix`, which can be NULL to return to the default of
+ * getprogname(). On Android, the other two arguments are ignored.
  */
-void openlog(const char* __prefix, int __option, int __facility);
+void openlog(const char* _Nullable __prefix, int __option, int __facility);
 
 /**
  * [setlogmask(3)](http://man7.org/linux/man-pages/man3/setlogmask.3.html)
@@ -149,13 +150,13 @@
  * the printf()-like message and logs it with the given priority, unless
  * suppressed by setlogmask(). On Android, the output goes to logcat.
  */
-void syslog(int __priority, const char* __fmt, ...) __printflike(2, 3);
+void syslog(int __priority, const char* _Nonnull __fmt, ...) __printflike(2, 3);
 
 /**
  * [vsyslog(3)](http://man7.org/linux/man-pages/man3/vsyslog.3.html) formats
  * the vprintf()-like message and logs it with the given priority, unless
  * suppressed by setlogmask(). On Android, the output goes to logcat.
  */
-void vsyslog(int __priority, const char* __fmt, va_list __args) __printflike(2, 0);
+void vsyslog(int __priority, const char* _Nonnull __fmt, va_list __args) __printflike(2, 0);
 
 __END_DECLS
diff --git a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/include/time.h b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/include/time.h
index 0db14ff..4b005c6 100644
--- a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/include/time.h
+++ b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/include/time.h
@@ -37,7 +37,7 @@
 
 #define CLOCKS_PER_SEC 1000000
 
-extern char* tzname[];
+extern char* _Nonnull tzname[];
 extern int daylight;
 extern long int timezone;
 
@@ -54,62 +54,64 @@
   int tm_yday;
   int tm_isdst;
   long int tm_gmtoff;
-  const char* tm_zone;
+  const char* _Nullable tm_zone;
 };
 
 #define TM_ZONE tm_zone
 
-time_t time(time_t* __t);
-int nanosleep(const struct timespec* __request, struct timespec* __remainder);
+time_t time(time_t* _Nullable __t);
+int nanosleep(const struct timespec* _Nonnull __request, struct timespec* _Nullable __remainder);
 
-char* asctime(const struct tm* __tm);
-char* asctime_r(const struct tm* __tm, char* __buf);
+char* _Nullable asctime(const struct tm* _Nonnull __tm);
+char* _Nullable asctime_r(const struct tm* _Nonnull __tm, char* _Nonnull __buf);
 
 double difftime(time_t __lhs, time_t __rhs);
-time_t mktime(struct tm* __tm);
+time_t mktime(struct tm* _Nonnull __tm);
 
-struct tm* localtime(const time_t* __t);
-struct tm* localtime_r(const time_t* __t, struct tm* __tm);
+struct tm* _Nullable localtime(const time_t* _Nonnull __t);
+struct tm* _Nullable localtime_r(const time_t* _Nonnull __t, struct tm* _Nonnull __tm);
 
-struct tm* gmtime(const time_t* __t);
-struct tm* gmtime_r(const time_t* __t, struct tm* __tm);
+struct tm* _Nullable gmtime(const time_t* _Nonnull __t);
+struct tm* _Nullable gmtime_r(const time_t* _Nonnull __t, struct tm* _Nonnull __tm);
 
-char* strptime(const char* __s, const char* __fmt, struct tm* __tm) __strftimelike(2);
-char* strptime_l(const char* __s, const char* __fmt, struct tm* __tm, locale_t __l) __strftimelike(2) __INTRODUCED_IN(28);
+char* _Nullable strptime(const char* _Nonnull __s, const char* _Nonnull __fmt, struct tm* _Nonnull __tm) __strftimelike(2);
+char* _Nullable strptime_l(const char* _Nonnull __s, const char* _Nonnull __fmt, struct tm* _Nonnull __tm, locale_t _Nonnull __l) __strftimelike(2) __INTRODUCED_IN(28);
 
-size_t strftime(char* __buf, size_t __n, const char* __fmt, const struct tm* __tm) __strftimelike(3);
+size_t strftime(char* _Nonnull __buf, size_t __n, const char* _Nonnull __fmt, const struct tm* _Nullable __tm) __strftimelike(3);
 #if __ANDROID_API__ >= 21
-size_t strftime_l(char* __buf, size_t __n, const char* __fmt, const struct tm* __tm, locale_t __l) __strftimelike(3) __INTRODUCED_IN(21);
+size_t strftime_l(char* _Nonnull __buf, size_t __n, const char* _Nonnull __fmt, const struct tm* _Nullable __tm, locale_t _Nonnull __l) __strftimelike(3) __INTRODUCED_IN(21);
 #else
 // Implemented as static inline before 21.
 #endif
 
-char* ctime(const time_t* __t);
-char* ctime_r(const time_t* __t, char* __buf);
+
+char* _Nullable ctime(const time_t* _Nonnull __t);
+char* _Nullable ctime_r(const time_t* _Nonnull __t, char* _Nonnull __buf);
 
 void tzset(void);
 
 clock_t clock(void);
 
-int clock_getcpuclockid(pid_t __pid, clockid_t* __clock) __INTRODUCED_IN(23);
+int clock_getcpuclockid(pid_t __pid, clockid_t* _Nonnull __clock) __INTRODUCED_IN(23);
 
-int clock_getres(clockid_t __clock, struct timespec* __resolution);
-int clock_gettime(clockid_t __clock, struct timespec* __ts);
-int clock_nanosleep(clockid_t __clock, int __flags, const struct timespec* __request, struct timespec* __remainder);
-int clock_settime(clockid_t __clock, const struct timespec* __ts);
 
-int timer_create(clockid_t __clock, struct sigevent* __event, timer_t* __timer_ptr);
-int timer_delete(timer_t __timer);
-int timer_settime(timer_t __timer, int __flags, const struct itimerspec* __new_value, struct itimerspec* __old_value);
-int timer_gettime(timer_t __timer, struct itimerspec* __ts);
-int timer_getoverrun(timer_t __timer);
+int clock_getres(clockid_t __clock, struct timespec* _Nullable __resolution);
+int clock_gettime(clockid_t __clock, struct timespec* _Nonnull __ts);
+int clock_nanosleep(clockid_t __clock, int __flags, const struct timespec* _Nonnull __request, struct timespec* _Nullable __remainder);
+int clock_settime(clockid_t __clock, const struct timespec* _Nonnull __ts);
+
+int timer_create(clockid_t __clock, struct sigevent* _Nullable __event, timer_t _Nonnull * _Nonnull __timer_ptr);
+int timer_delete(timer_t _Nonnull __timer);
+int timer_settime(timer_t _Nonnull __timer, int __flags, const struct itimerspec* _Nonnull __new_value, struct itimerspec* _Nullable __old_value);
+int timer_gettime(timer_t _Nonnull _timer, struct itimerspec* _Nonnull __ts);
+int timer_getoverrun(timer_t _Nonnull __timer);
 
 /* Non-standard extensions that are in the BSDs and glibc. */
-time_t timelocal(struct tm* __tm);
-time_t timegm(struct tm* __tm);
+time_t timelocal(struct tm* _Nonnull __tm);
+time_t timegm(struct tm* _Nonnull __tm);
 
 #define TIME_UTC 1
-int timespec_get(struct timespec* __ts, int __base) __INTRODUCED_IN(29);
+int timespec_get(struct timespec* _Nonnull __ts, int __base) __INTRODUCED_IN(29);
 
 __END_DECLS
 
diff --git a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/include/time64.h b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/include/time64.h
index 905669d..7d70030 100644
--- a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/include/time64.h
+++ b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/include/time64.h
@@ -47,17 +47,17 @@
 
 typedef int64_t time64_t;
 
-char* asctime64(const struct tm*);
-char* asctime64_r(const struct tm*, char*);
-char* ctime64(const time64_t*);
-char* ctime64_r(const time64_t*, char*);
-struct tm* gmtime64(const time64_t*);
-struct tm* gmtime64_r(const time64_t*, struct tm*);
-struct tm* localtime64(const time64_t*);
-struct tm* localtime64_r(const time64_t*, struct tm*);
-time64_t mktime64(const struct tm*);
-time64_t timegm64(const struct tm*);
-time64_t timelocal64(const struct tm*);
+char* _Nullable asctime64(const struct tm* _Nonnull);
+char* _Nullable asctime64_r(const struct tm* _Nonnull, char* _Nonnull);
+char* _Nullable ctime64(const time64_t* _Nonnull);
+char* _Nullable ctime64_r(const time64_t* _Nonnull, char* _Nonnull);
+struct tm* _Nullable gmtime64(const time64_t* _Nonnull);
+struct tm* _Nullable gmtime64_r(const time64_t* _Nonnull, struct tm* _Nonnull);
+struct tm* _Nullable localtime64(const time64_t* _Nonnull);
+struct tm* _Nullable localtime64_r(const time64_t* _Nonnull, struct tm* _Nonnull);
+time64_t mktime64(const struct tm* _Nonnull);
+time64_t timegm64(const struct tm* _Nonnull);
+time64_t timelocal64(const struct tm* _Nonnull);
 
 __END_DECLS
 
diff --git a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/include/unistd.h b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/include/unistd.h
index e360421..3efc9a2 100644
--- a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/include/unistd.h
+++ b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/include/unistd.h
@@ -313,10 +313,37 @@
 int getdomainname(char* __buf, size_t __buf_size) __INTRODUCED_IN(26);
 int setdomainname(const char* __name, size_t __n) __INTRODUCED_IN(26);
 
+/**
+ * [copy_file_range(2)](https://man7.org/linux/man-pages/man2/copy_file_range.2.html) copies
+ * a range of data from one file descriptor to another.
+ *
+ * Available since API level 34.
+ *
+ * Returns the number of bytes copied on success, and returns -1 and sets
+ * `errno` on failure.
+ */
+ssize_t copy_file_range(int __fd_in, off64_t* __off_in, int __fd_out, off64_t* __off_out, size_t __length, unsigned int __flags) __INTRODUCED_IN(34);
+
 #if __ANDROID_API__ >= 28
 void swab(const void* __src, void* __dst, ssize_t __byte_count) __INTRODUCED_IN(28);
 #endif
 
+/**
+ * [close_range(2)](https://man7.org/linux/man-pages/man2/close_range.2.html)
+ * performs an action (which depends on value of flags) on an inclusive range
+ * of file descriptors.
+ *
+ * Available since API level 34.
+ *
+ * Note: there is no emulation on too old kernels, hence this will fail with
+ * -1/ENOSYS on pre-5.9 kernels, -1/EINVAL for unsupported flags.  In particular
+ * CLOSE_RANGE_CLOEXEC requires 5.11, though support was backported to Android
+ * Common Kernel 5.10-T.
+ *
+ * Returns 0 on success, and returns -1 and sets `errno` on failure.
+ */
+int close_range(unsigned int __min_fd, unsigned int __max_fd, int __flags) __INTRODUCED_IN(34);
+
 #if defined(__BIONIC_INCLUDE_FORTIFY_HEADERS)
 #define _UNISTD_H_
 #include <bits/fortify/unistd.h>
diff --git a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/android/scsi/scsi/scsi_proto.h b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/android/scsi/scsi/scsi_proto.h
index eea87a0..13ac4c8 100644
--- a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/android/scsi/scsi/scsi_proto.h
+++ b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/android/scsi/scsi/scsi_proto.h
@@ -183,6 +183,8 @@
   ZBC_ZONE_TYPE_CONV = 0x1,
   ZBC_ZONE_TYPE_SEQWRITE_REQ = 0x2,
   ZBC_ZONE_TYPE_SEQWRITE_PREF = 0x3,
+  ZBC_ZONE_TYPE_SEQ_OR_BEFORE_REQ = 0x4,
+  ZBC_ZONE_TYPE_GAP = 0x5,
 };
 enum zbc_zone_cond {
   ZBC_ZONE_COND_NO_WP = 0x0,
@@ -194,6 +196,10 @@
   ZBC_ZONE_COND_FULL = 0xe,
   ZBC_ZONE_COND_OFFLINE = 0xf,
 };
+enum zbc_zone_alignment_method {
+  ZBC_CONSTANT_ZONE_LENGTH = 0x1,
+  ZBC_CONSTANT_ZONE_START_OFFSET = 0x8,
+};
 enum scsi_version_descriptor {
   SCSI_VERSION_DESCRIPTOR_FCP4 = 0x0a40,
   SCSI_VERSION_DESCRIPTOR_ISCSI = 0x0960,
diff --git a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/asm-arm/asm/signal.h b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/asm-arm/asm/signal.h
index 5f7e0c5..0424380 100644
--- a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/asm-arm/asm/signal.h
+++ b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/asm-arm/asm/signal.h
@@ -78,6 +78,6 @@
 typedef struct sigaltstack {
   void __user * ss_sp;
   int ss_flags;
-  size_t ss_size;
+  __kernel_size_t ss_size;
 } stack_t;
 #endif
diff --git a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/asm-arm64/asm/hwcap.h b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/asm-arm64/asm/hwcap.h
index 4316724..af32056 100644
--- a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/asm-arm64/asm/hwcap.h
+++ b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/asm-arm64/asm/hwcap.h
@@ -72,4 +72,16 @@
 #define HWCAP2_ECV (1 << 19)
 #define HWCAP2_AFP (1 << 20)
 #define HWCAP2_RPRES (1 << 21)
+#define HWCAP2_MTE3 (1 << 22)
+#define HWCAP2_SME (1 << 23)
+#define HWCAP2_SME_I16I64 (1 << 24)
+#define HWCAP2_SME_F64F64 (1 << 25)
+#define HWCAP2_SME_I8I32 (1 << 26)
+#define HWCAP2_SME_F16F32 (1 << 27)
+#define HWCAP2_SME_B16F32 (1 << 28)
+#define HWCAP2_SME_F32F32 (1 << 29)
+#define HWCAP2_SME_FA64 (1 << 30)
+#define HWCAP2_WFXT (1UL << 31)
+#define HWCAP2_EBF16 (1UL << 32)
+#define HWCAP2_SVE_EBF16 (1UL << 33)
 #endif
diff --git a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/asm-arm64/asm/kvm.h b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/asm-arm64/asm/kvm.h
index c53ee87..4f9b347 100644
--- a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/asm-arm64/asm/kvm.h
+++ b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/asm-arm64/asm/kvm.h
@@ -51,9 +51,9 @@
 #define KVM_ARM_TARGET_GENERIC_V8 5
 #define KVM_ARM_NUM_TARGETS 6
 #define KVM_ARM_DEVICE_TYPE_SHIFT 0
-#define KVM_ARM_DEVICE_TYPE_MASK (0xffff << KVM_ARM_DEVICE_TYPE_SHIFT)
+#define KVM_ARM_DEVICE_TYPE_MASK GENMASK(KVM_ARM_DEVICE_TYPE_SHIFT + 15, KVM_ARM_DEVICE_TYPE_SHIFT)
 #define KVM_ARM_DEVICE_ID_SHIFT 16
-#define KVM_ARM_DEVICE_ID_MASK (0xffff << KVM_ARM_DEVICE_ID_SHIFT)
+#define KVM_ARM_DEVICE_ID_MASK GENMASK(KVM_ARM_DEVICE_ID_SHIFT + 15, KVM_ARM_DEVICE_ID_SHIFT)
 #define KVM_ARM_DEVICE_VGIC_V2 0
 #define KVM_VGIC_V2_ADDR_TYPE_DIST 0
 #define KVM_VGIC_V2_ADDR_TYPE_CPU 1
@@ -88,8 +88,10 @@
   __u64 dbg_wcr[KVM_ARM_MAX_DBG_REGS];
   __u64 dbg_wvr[KVM_ARM_MAX_DBG_REGS];
 };
+#define KVM_DEBUG_ARCH_HSR_HIGH_VALID (1 << 0)
 struct kvm_debug_exit_arch {
   __u32 hsr;
+  __u32 hsr_high;
   __u64 far;
 };
 #define KVM_GUESTDBG_USE_SW_BP (1 << 16)
@@ -185,6 +187,21 @@
 #define KVM_ARM64_SVE_VQ_MAX __SVE_VQ_MAX
 #define KVM_REG_ARM64_SVE_VLS (KVM_REG_ARM64 | KVM_REG_ARM64_SVE | KVM_REG_SIZE_U512 | 0xffff)
 #define KVM_ARM64_SVE_VLS_WORDS ((KVM_ARM64_SVE_VQ_MAX - KVM_ARM64_SVE_VQ_MIN) / 64 + 1)
+#define KVM_REG_ARM_FW_FEAT_BMAP (0x0016 << KVM_REG_ARM_COPROC_SHIFT)
+#define KVM_REG_ARM_FW_FEAT_BMAP_REG(r) (KVM_REG_ARM64 | KVM_REG_SIZE_U64 | KVM_REG_ARM_FW_FEAT_BMAP | ((r) & 0xffff))
+#define KVM_REG_ARM_STD_BMAP KVM_REG_ARM_FW_FEAT_BMAP_REG(0)
+enum {
+  KVM_REG_ARM_STD_BIT_TRNG_V1_0 = 0,
+};
+#define KVM_REG_ARM_STD_HYP_BMAP KVM_REG_ARM_FW_FEAT_BMAP_REG(1)
+enum {
+  KVM_REG_ARM_STD_HYP_BIT_PV_TIME = 0,
+};
+#define KVM_REG_ARM_VENDOR_HYP_BMAP KVM_REG_ARM_FW_FEAT_BMAP_REG(2)
+enum {
+  KVM_REG_ARM_VENDOR_HYP_BIT_FUNC_FEAT = 0,
+  KVM_REG_ARM_VENDOR_HYP_BIT_PTP = 1,
+};
 #define KVM_DEV_ARM_VGIC_GRP_ADDR 0
 #define KVM_DEV_ARM_VGIC_GRP_DIST_REGS 1
 #define KVM_DEV_ARM_VGIC_GRP_CPU_REGS 2
@@ -214,6 +231,7 @@
 #define KVM_ARM_VCPU_PMU_V3_IRQ 0
 #define KVM_ARM_VCPU_PMU_V3_INIT 1
 #define KVM_ARM_VCPU_PMU_V3_FILTER 2
+#define KVM_ARM_VCPU_PMU_V3_SET_PMU 3
 #define KVM_ARM_VCPU_TIMER_CTRL 1
 #define KVM_ARM_VCPU_TIMER_IRQ_VTIMER 0
 #define KVM_ARM_VCPU_TIMER_IRQ_PTIMER 1
@@ -244,5 +262,7 @@
 #define KVM_PSCI_RET_NI PSCI_RET_NOT_SUPPORTED
 #define KVM_PSCI_RET_INVAL PSCI_RET_INVALID_PARAMS
 #define KVM_PSCI_RET_DENIED PSCI_RET_DENIED
+#define KVM_SYSTEM_EVENT_RESET_FLAG_PSCI_RESET2 (1ULL << 0)
+#define KVM_EXIT_FAIL_ENTRY_CPU_UNSUPPORTED (1ULL << 0)
 #endif
 #endif
diff --git a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/asm-arm64/asm/perf_regs.h b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/asm-arm64/asm/perf_regs.h
index 71d496f..e18fd05 100644
--- a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/asm-arm64/asm/perf_regs.h
+++ b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/asm-arm64/asm/perf_regs.h
@@ -53,5 +53,8 @@
   PERF_REG_ARM64_SP,
   PERF_REG_ARM64_PC,
   PERF_REG_ARM64_MAX,
+  PERF_REG_ARM64_VG = 46,
+  PERF_REG_ARM64_EXTENDED_MAX
 };
+#define PERF_REG_EXTENDED_MASK (1ULL << PERF_REG_ARM64_VG)
 #endif
diff --git a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/asm-arm64/asm/ptrace.h b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/asm-arm64/asm/ptrace.h
index 480efcf..9540c3e 100644
--- a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/asm-arm64/asm/ptrace.h
+++ b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/asm-arm64/asm/ptrace.h
@@ -111,7 +111,7 @@
 #define SVE_PT_SVE_FPSR_OFFSET(vq) ((SVE_PT_SVE_FFR_OFFSET(vq) + SVE_PT_SVE_FFR_SIZE(vq) + (__SVE_VQ_BYTES - 1)) / __SVE_VQ_BYTES * __SVE_VQ_BYTES)
 #define SVE_PT_SVE_FPCR_OFFSET(vq) (SVE_PT_SVE_FPSR_OFFSET(vq) + SVE_PT_SVE_FPSR_SIZE)
 #define SVE_PT_SVE_SIZE(vq,flags) ((SVE_PT_SVE_FPCR_OFFSET(vq) + SVE_PT_SVE_FPCR_SIZE - SVE_PT_SVE_OFFSET + (__SVE_VQ_BYTES - 1)) / __SVE_VQ_BYTES * __SVE_VQ_BYTES)
-#define SVE_PT_SIZE(vq,flags) (((flags) & SVE_PT_REGS_MASK) == SVE_PT_REGS_SVE ? SVE_PT_SVE_OFFSET + SVE_PT_SVE_SIZE(vq, flags) : SVE_PT_FPSIMD_OFFSET + SVE_PT_FPSIMD_SIZE(vq, flags))
+#define SVE_PT_SIZE(vq,flags) (((flags) & SVE_PT_REGS_MASK) == SVE_PT_REGS_SVE ? SVE_PT_SVE_OFFSET + SVE_PT_SVE_SIZE(vq, flags) : ((((flags) & SVE_PT_REGS_MASK) == SVE_PT_REGS_FPSIMD ? SVE_PT_FPSIMD_OFFSET + SVE_PT_FPSIMD_SIZE(vq, flags) : SVE_PT_REGS_OFFSET)))
 struct user_pac_mask {
   __u64 data_mask;
   __u64 insn_mask;
@@ -125,5 +125,19 @@
 struct user_pac_generic_keys {
   __uint128_t apgakey;
 };
+struct user_za_header {
+  __u32 size;
+  __u32 max_size;
+  __u16 vl;
+  __u16 max_vl;
+  __u16 flags;
+  __u16 __reserved;
+};
+#define ZA_PT_VL_INHERIT ((1 << 17) >> 16)
+#define ZA_PT_VL_ONEXEC ((1 << 18) >> 16)
+#define ZA_PT_ZA_OFFSET ((sizeof(struct user_za_header) + (__SVE_VQ_BYTES - 1)) / __SVE_VQ_BYTES * __SVE_VQ_BYTES)
+#define ZA_PT_ZAV_OFFSET(vq,n) (ZA_PT_ZA_OFFSET + ((vq * __SVE_VQ_BYTES) * n))
+#define ZA_PT_ZA_SIZE(vq) ((vq * __SVE_VQ_BYTES) * (vq * __SVE_VQ_BYTES))
+#define ZA_PT_SIZE(vq) (ZA_PT_ZA_OFFSET + ZA_PT_ZA_SIZE(vq))
 #endif
 #endif
diff --git a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/asm-arm64/asm/sigcontext.h b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/asm-arm64/asm/sigcontext.h
index 518079d..04aa593 100644
--- a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/asm-arm64/asm/sigcontext.h
+++ b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/asm-arm64/asm/sigcontext.h
@@ -55,6 +55,14 @@
 struct sve_context {
   struct _aarch64_ctx head;
   __u16 vl;
+  __u16 flags;
+  __u16 __reserved[2];
+};
+#define SVE_SIG_FLAG_SM 0x1
+#define ZA_MAGIC 0x54366345
+struct za_context {
+  struct _aarch64_ctx head;
+  __u16 vl;
   __u16 __reserved[3];
 };
 #endif
@@ -82,4 +90,8 @@
 #define SVE_SIG_FFR_OFFSET(vq) (SVE_SIG_REGS_OFFSET + __SVE_FFR_OFFSET(vq))
 #define SVE_SIG_REGS_SIZE(vq) (__SVE_FFR_OFFSET(vq) + __SVE_FFR_SIZE(vq))
 #define SVE_SIG_CONTEXT_SIZE(vq) (SVE_SIG_REGS_OFFSET + SVE_SIG_REGS_SIZE(vq))
+#define ZA_SIG_REGS_OFFSET ((sizeof(struct za_context) + (__SVE_VQ_BYTES - 1)) / __SVE_VQ_BYTES * __SVE_VQ_BYTES)
+#define ZA_SIG_REGS_SIZE(vq) ((vq * __SVE_VQ_BYTES) * (vq * __SVE_VQ_BYTES))
+#define ZA_SIG_ZAV_OFFSET(vq,n) (ZA_SIG_REGS_OFFSET + (SVE_SIG_ZREG_SIZE(vq) * n))
+#define ZA_SIG_CONTEXT_SIZE(vq) (ZA_SIG_REGS_OFFSET + ZA_SIG_REGS_SIZE(vq))
 #endif
diff --git a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/asm-generic/fcntl.h b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/asm-generic/fcntl.h
index a2cb5f4..ea8c108 100644
--- a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/asm-generic/fcntl.h
+++ b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/asm-generic/fcntl.h
@@ -100,7 +100,7 @@
 #define F_SETSIG 10
 #define F_GETSIG 11
 #endif
-#ifndef __LP64__
+#if __BITS_PER_LONG == 32
 #ifndef F_GETLK64
 #define F_GETLK64 12
 #define F_SETLK64 13
@@ -144,13 +144,5 @@
 #define LOCK_RW 192
 #define F_LINUX_SPECIFIC_BASE 1024
 #ifndef HAVE_ARCH_STRUCT_FLOCK
-#ifndef __ARCH_FLOCK_PAD
-#define __ARCH_FLOCK_PAD
-#endif
-#endif
-#ifndef HAVE_ARCH_STRUCT_FLOCK64
-#ifndef __ARCH_FLOCK64_PAD
-#define __ARCH_FLOCK64_PAD
-#endif
 #endif
 #endif
diff --git a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/asm-generic/hugetlb_encode.h b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/asm-generic/hugetlb_encode.h
index 73d8180..059991c 100644
--- a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/asm-generic/hugetlb_encode.h
+++ b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/asm-generic/hugetlb_encode.h
@@ -20,17 +20,17 @@
 #define _ASM_GENERIC_HUGETLB_ENCODE_H_
 #define HUGETLB_FLAG_ENCODE_SHIFT 26
 #define HUGETLB_FLAG_ENCODE_MASK 0x3f
-#define HUGETLB_FLAG_ENCODE_16KB (14 << HUGETLB_FLAG_ENCODE_SHIFT)
-#define HUGETLB_FLAG_ENCODE_64KB (16 << HUGETLB_FLAG_ENCODE_SHIFT)
-#define HUGETLB_FLAG_ENCODE_512KB (19 << HUGETLB_FLAG_ENCODE_SHIFT)
-#define HUGETLB_FLAG_ENCODE_1MB (20 << HUGETLB_FLAG_ENCODE_SHIFT)
-#define HUGETLB_FLAG_ENCODE_2MB (21 << HUGETLB_FLAG_ENCODE_SHIFT)
-#define HUGETLB_FLAG_ENCODE_8MB (23 << HUGETLB_FLAG_ENCODE_SHIFT)
-#define HUGETLB_FLAG_ENCODE_16MB (24 << HUGETLB_FLAG_ENCODE_SHIFT)
-#define HUGETLB_FLAG_ENCODE_32MB (25 << HUGETLB_FLAG_ENCODE_SHIFT)
-#define HUGETLB_FLAG_ENCODE_256MB (28 << HUGETLB_FLAG_ENCODE_SHIFT)
-#define HUGETLB_FLAG_ENCODE_512MB (29 << HUGETLB_FLAG_ENCODE_SHIFT)
-#define HUGETLB_FLAG_ENCODE_1GB (30 << HUGETLB_FLAG_ENCODE_SHIFT)
-#define HUGETLB_FLAG_ENCODE_2GB (31 << HUGETLB_FLAG_ENCODE_SHIFT)
-#define HUGETLB_FLAG_ENCODE_16GB (34 << HUGETLB_FLAG_ENCODE_SHIFT)
+#define HUGETLB_FLAG_ENCODE_16KB (14U << HUGETLB_FLAG_ENCODE_SHIFT)
+#define HUGETLB_FLAG_ENCODE_64KB (16U << HUGETLB_FLAG_ENCODE_SHIFT)
+#define HUGETLB_FLAG_ENCODE_512KB (19U << HUGETLB_FLAG_ENCODE_SHIFT)
+#define HUGETLB_FLAG_ENCODE_1MB (20U << HUGETLB_FLAG_ENCODE_SHIFT)
+#define HUGETLB_FLAG_ENCODE_2MB (21U << HUGETLB_FLAG_ENCODE_SHIFT)
+#define HUGETLB_FLAG_ENCODE_8MB (23U << HUGETLB_FLAG_ENCODE_SHIFT)
+#define HUGETLB_FLAG_ENCODE_16MB (24U << HUGETLB_FLAG_ENCODE_SHIFT)
+#define HUGETLB_FLAG_ENCODE_32MB (25U << HUGETLB_FLAG_ENCODE_SHIFT)
+#define HUGETLB_FLAG_ENCODE_256MB (28U << HUGETLB_FLAG_ENCODE_SHIFT)
+#define HUGETLB_FLAG_ENCODE_512MB (29U << HUGETLB_FLAG_ENCODE_SHIFT)
+#define HUGETLB_FLAG_ENCODE_1GB (30U << HUGETLB_FLAG_ENCODE_SHIFT)
+#define HUGETLB_FLAG_ENCODE_2GB (31U << HUGETLB_FLAG_ENCODE_SHIFT)
+#define HUGETLB_FLAG_ENCODE_16GB (34U << HUGETLB_FLAG_ENCODE_SHIFT)
 #endif
diff --git a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/asm-generic/mman-common.h b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/asm-generic/mman-common.h
index 9440576..966d05b 100644
--- a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/asm-generic/mman-common.h
+++ b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/asm-generic/mman-common.h
@@ -62,6 +62,8 @@
 #define MADV_PAGEOUT 21
 #define MADV_POPULATE_READ 22
 #define MADV_POPULATE_WRITE 23
+#define MADV_DONTNEED_LOCKED 24
+#define MADV_COLLAPSE 25
 #define MAP_FILE 0
 #define PKEY_DISABLE_ACCESS 0x1
 #define PKEY_DISABLE_WRITE 0x2
diff --git a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/asm-generic/shmbuf.h b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/asm-generic/shmbuf.h
index 067ffbc..11487f4 100644
--- a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/asm-generic/shmbuf.h
+++ b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/asm-generic/shmbuf.h
@@ -19,9 +19,11 @@
 #ifndef __ASM_GENERIC_SHMBUF_H
 #define __ASM_GENERIC_SHMBUF_H
 #include <asm/bitsperlong.h>
+#include <asm/ipcbuf.h>
+#include <asm/posix_types.h>
 struct shmid64_ds {
   struct ipc64_perm shm_perm;
-  size_t shm_segsz;
+  __kernel_size_t shm_segsz;
 #if __BITS_PER_LONG == 64
   long shm_atime;
   long shm_dtime;
diff --git a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/asm-generic/siginfo.h b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/asm-generic/siginfo.h
index f9199e5..c5e4178 100644
--- a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/asm-generic/siginfo.h
+++ b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/asm-generic/siginfo.h
@@ -80,6 +80,7 @@
       struct {
         unsigned long _data;
         __u32 _type;
+        __u32 _flags;
       } _perf;
     };
   } _sigfault;
@@ -125,6 +126,7 @@
 #define si_pkey _sifields._sigfault._addr_pkey._pkey
 #define si_perf_data _sifields._sigfault._perf._data
 #define si_perf_type _sifields._sigfault._perf._type
+#define si_perf_flags _sifields._sigfault._perf._flags
 #define si_band _sifields._sigpoll._band
 #define si_fd _sifields._sigpoll._fd
 #define si_call_addr _sifields._sigsys._call_addr
@@ -197,6 +199,7 @@
 #define TRAP_UNK 5
 #define TRAP_PERF 6
 #define NSIGTRAP 6
+#define TRAP_PERF_FLAG_ASYNC (1u << 0)
 #define CLD_EXITED 1
 #define CLD_KILLED 2
 #define CLD_DUMPED 3
diff --git a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/asm-generic/signal.h b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/asm-generic/signal.h
index 874fece..5cb1dce 100644
--- a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/asm-generic/signal.h
+++ b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/asm-generic/signal.h
@@ -84,7 +84,7 @@
 typedef struct sigaltstack {
   void __user * ss_sp;
   int ss_flags;
-  size_t ss_size;
+  __kernel_size_t ss_size;
 } stack_t;
 #endif
 #endif
diff --git a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/asm-generic/socket.h b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/asm-generic/socket.h
index 6767993..1a321bf 100644
--- a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/asm-generic/socket.h
+++ b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/asm-generic/socket.h
@@ -100,6 +100,8 @@
 #define SO_NETNS_COOKIE 71
 #define SO_BUF_LOCK 72
 #define SO_RESERVE_MEM 73
+#define SO_TXREHASH 74
+#define SO_RCVMARK 75
 #if __BITS_PER_LONG == 64 || defined(__x86_64__) && defined(__ILP32__)
 #define SO_TIMESTAMP SO_TIMESTAMP_OLD
 #define SO_TIMESTAMPNS SO_TIMESTAMPNS_OLD
diff --git a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/asm-generic/termbits-common.h b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/asm-generic/termbits-common.h
new file mode 100644
index 0000000..281eee8
--- /dev/null
+++ b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/asm-generic/termbits-common.h
@@ -0,0 +1,68 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef __ASM_GENERIC_TERMBITS_COMMON_H
+#define __ASM_GENERIC_TERMBITS_COMMON_H
+typedef unsigned char cc_t;
+typedef unsigned int speed_t;
+#define IGNBRK 0x001
+#define BRKINT 0x002
+#define IGNPAR 0x004
+#define PARMRK 0x008
+#define INPCK 0x010
+#define ISTRIP 0x020
+#define INLCR 0x040
+#define IGNCR 0x080
+#define ICRNL 0x100
+#define IXANY 0x800
+#define OPOST 0x01
+#define OCRNL 0x08
+#define ONOCR 0x10
+#define ONLRET 0x20
+#define OFILL 0x40
+#define OFDEL 0x80
+#define B0 0x00000000
+#define B50 0x00000001
+#define B75 0x00000002
+#define B110 0x00000003
+#define B134 0x00000004
+#define B150 0x00000005
+#define B200 0x00000006
+#define B300 0x00000007
+#define B600 0x00000008
+#define B1200 0x00000009
+#define B1800 0x0000000a
+#define B2400 0x0000000b
+#define B4800 0x0000000c
+#define B9600 0x0000000d
+#define B19200 0x0000000e
+#define B38400 0x0000000f
+#define EXTA B19200
+#define EXTB B38400
+#define ADDRB 0x20000000
+#define CMSPAR 0x40000000
+#define CRTSCTS 0x80000000
+#define IBSHIFT 16
+#define TCOOFF 0
+#define TCOON 1
+#define TCIOFF 2
+#define TCION 3
+#define TCIFLUSH 0
+#define TCOFLUSH 1
+#define TCIOFLUSH 2
+#endif
diff --git a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/asm-generic/termbits.h b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/asm-generic/termbits.h
index b592964..87d6c82 100644
--- a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/asm-generic/termbits.h
+++ b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/asm-generic/termbits.h
@@ -18,9 +18,7 @@
  ****************************************************************************/
 #ifndef __ASM_GENERIC_TERMBITS_H
 #define __ASM_GENERIC_TERMBITS_H
-#include <linux/posix_types.h>
-typedef unsigned char cc_t;
-typedef unsigned int speed_t;
+#include <asm-generic/termbits-common.h>
 typedef unsigned int tcflag_t;
 #define NCCS 19
 struct termios {
@@ -68,126 +66,82 @@
 #define VWERASE 14
 #define VLNEXT 15
 #define VEOL2 16
-#define IGNBRK 0000001
-#define BRKINT 0000002
-#define IGNPAR 0000004
-#define PARMRK 0000010
-#define INPCK 0000020
-#define ISTRIP 0000040
-#define INLCR 0000100
-#define IGNCR 0000200
-#define ICRNL 0000400
-#define IUCLC 0001000
-#define IXON 0002000
-#define IXANY 0004000
-#define IXOFF 0010000
-#define IMAXBEL 0020000
-#define IUTF8 0040000
-#define OPOST 0000001
-#define OLCUC 0000002
-#define ONLCR 0000004
-#define OCRNL 0000010
-#define ONOCR 0000020
-#define ONLRET 0000040
-#define OFILL 0000100
-#define OFDEL 0000200
-#define NLDLY 0000400
-#define NL0 0000000
-#define NL1 0000400
-#define CRDLY 0003000
-#define CR0 0000000
-#define CR1 0001000
-#define CR2 0002000
-#define CR3 0003000
-#define TABDLY 0014000
-#define TAB0 0000000
-#define TAB1 0004000
-#define TAB2 0010000
-#define TAB3 0014000
-#define XTABS 0014000
-#define BSDLY 0020000
-#define BS0 0000000
-#define BS1 0020000
-#define VTDLY 0040000
-#define VT0 0000000
-#define VT1 0040000
-#define FFDLY 0100000
-#define FF0 0000000
-#define FF1 0100000
-#define CBAUD 0010017
-#define B0 0000000
-#define B50 0000001
-#define B75 0000002
-#define B110 0000003
-#define B134 0000004
-#define B150 0000005
-#define B200 0000006
-#define B300 0000007
-#define B600 0000010
-#define B1200 0000011
-#define B1800 0000012
-#define B2400 0000013
-#define B4800 0000014
-#define B9600 0000015
-#define B19200 0000016
-#define B38400 0000017
-#define EXTA B19200
-#define EXTB B38400
-#define CSIZE 0000060
-#define CS5 0000000
-#define CS6 0000020
-#define CS7 0000040
-#define CS8 0000060
-#define CSTOPB 0000100
-#define CREAD 0000200
-#define PARENB 0000400
-#define PARODD 0001000
-#define HUPCL 0002000
-#define CLOCAL 0004000
-#define CBAUDEX 0010000
-#define BOTHER 0010000
-#define B57600 0010001
-#define B115200 0010002
-#define B230400 0010003
-#define B460800 0010004
-#define B500000 0010005
-#define B576000 0010006
-#define B921600 0010007
-#define B1000000 0010010
-#define B1152000 0010011
-#define B1500000 0010012
-#define B2000000 0010013
-#define B2500000 0010014
-#define B3000000 0010015
-#define B3500000 0010016
-#define B4000000 0010017
-#define CIBAUD 002003600000
-#define CMSPAR 010000000000
-#define CRTSCTS 020000000000
-#define IBSHIFT 16
-#define ISIG 0000001
-#define ICANON 0000002
-#define XCASE 0000004
-#define ECHO 0000010
-#define ECHOE 0000020
-#define ECHOK 0000040
-#define ECHONL 0000100
-#define NOFLSH 0000200
-#define TOSTOP 0000400
-#define ECHOCTL 0001000
-#define ECHOPRT 0002000
-#define ECHOKE 0004000
-#define FLUSHO 0010000
-#define PENDIN 0040000
-#define IEXTEN 0100000
-#define EXTPROC 0200000
-#define TCOOFF 0
-#define TCOON 1
-#define TCIOFF 2
-#define TCION 3
-#define TCIFLUSH 0
-#define TCOFLUSH 1
-#define TCIOFLUSH 2
+#define IUCLC 0x0200
+#define IXON 0x0400
+#define IXOFF 0x1000
+#define IMAXBEL 0x2000
+#define IUTF8 0x4000
+#define OLCUC 0x00002
+#define ONLCR 0x00004
+#define NLDLY 0x00100
+#define NL0 0x00000
+#define NL1 0x00100
+#define CRDLY 0x00600
+#define CR0 0x00000
+#define CR1 0x00200
+#define CR2 0x00400
+#define CR3 0x00600
+#define TABDLY 0x01800
+#define TAB0 0x00000
+#define TAB1 0x00800
+#define TAB2 0x01000
+#define TAB3 0x01800
+#define XTABS 0x01800
+#define BSDLY 0x02000
+#define BS0 0x00000
+#define BS1 0x02000
+#define VTDLY 0x04000
+#define VT0 0x00000
+#define VT1 0x04000
+#define FFDLY 0x08000
+#define FF0 0x00000
+#define FF1 0x08000
+#define CBAUD 0x0000100f
+#define CSIZE 0x00000030
+#define CS5 0x00000000
+#define CS6 0x00000010
+#define CS7 0x00000020
+#define CS8 0x00000030
+#define CSTOPB 0x00000040
+#define CREAD 0x00000080
+#define PARENB 0x00000100
+#define PARODD 0x00000200
+#define HUPCL 0x00000400
+#define CLOCAL 0x00000800
+#define CBAUDEX 0x00001000
+#define BOTHER 0x00001000
+#define B57600 0x00001001
+#define B115200 0x00001002
+#define B230400 0x00001003
+#define B460800 0x00001004
+#define B500000 0x00001005
+#define B576000 0x00001006
+#define B921600 0x00001007
+#define B1000000 0x00001008
+#define B1152000 0x00001009
+#define B1500000 0x0000100a
+#define B2000000 0x0000100b
+#define B2500000 0x0000100c
+#define B3000000 0x0000100d
+#define B3500000 0x0000100e
+#define B4000000 0x0000100f
+#define CIBAUD 0x100f0000
+#define ISIG 0x00001
+#define ICANON 0x00002
+#define XCASE 0x00004
+#define ECHO 0x00008
+#define ECHOE 0x00010
+#define ECHOK 0x00020
+#define ECHONL 0x00040
+#define NOFLSH 0x00080
+#define TOSTOP 0x00100
+#define ECHOCTL 0x00200
+#define ECHOPRT 0x00400
+#define ECHOKE 0x00800
+#define FLUSHO 0x01000
+#define PENDIN 0x04000
+#define IEXTEN 0x08000
+#define EXTPROC 0x10000
 #define TCSANOW 0
 #define TCSADRAIN 1
 #define TCSAFLUSH 2
diff --git a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/asm-generic/unistd.h b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/asm-generic/unistd.h
index 4b9f174..d23958b 100644
--- a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/asm-generic/unistd.h
+++ b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/asm-generic/unistd.h
@@ -360,7 +360,7 @@
 #endif
 #define __NR_rseq 293
 #define __NR_kexec_file_load 294
-#if __BITS_PER_LONG == 32
+#if defined(__SYSCALL_COMPAT) || __BITS_PER_LONG == 32
 #define __NR_clock_gettime64 403
 #define __NR_clock_settime64 404
 #define __NR_clock_adjtime64 405
diff --git a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/asm-riscv/asm/auxvec.h b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/asm-riscv/asm/auxvec.h
new file mode 100644
index 0000000..c70be17
--- /dev/null
+++ b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/asm-riscv/asm/auxvec.h
@@ -0,0 +1,31 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPI_ASM_RISCV_AUXVEC_H
+#define _UAPI_ASM_RISCV_AUXVEC_H
+#define AT_SYSINFO_EHDR 33
+#define AT_L1I_CACHESIZE 40
+#define AT_L1I_CACHEGEOMETRY 41
+#define AT_L1D_CACHESIZE 42
+#define AT_L1D_CACHEGEOMETRY 43
+#define AT_L2_CACHESIZE 44
+#define AT_L2_CACHEGEOMETRY 45
+#define AT_L3_CACHESIZE 46
+#define AT_L3_CACHEGEOMETRY 47
+#define AT_VECTOR_SIZE_ARCH 9
+#endif
diff --git a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/asm-riscv/asm/bitsperlong.h b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/asm-riscv/asm/bitsperlong.h
new file mode 100644
index 0000000..098b610
--- /dev/null
+++ b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/asm-riscv/asm/bitsperlong.h
@@ -0,0 +1,23 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPI_ASM_RISCV_BITSPERLONG_H
+#define _UAPI_ASM_RISCV_BITSPERLONG_H
+#define __BITS_PER_LONG (__SIZEOF_POINTER__ * 8)
+#include <asm-generic/bitsperlong.h>
+#endif
diff --git a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/asm-riscv/asm/bpf_perf_event.h b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/asm-riscv/asm/bpf_perf_event.h
new file mode 100644
index 0000000..47c09fd
--- /dev/null
+++ b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/asm-riscv/asm/bpf_perf_event.h
@@ -0,0 +1,23 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPI__ASM_BPF_PERF_EVENT_H__
+#define _UAPI__ASM_BPF_PERF_EVENT_H__
+#include <asm/ptrace.h>
+typedef struct user_regs_struct bpf_user_pt_regs_t;
+#endif
diff --git a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/asm-riscv/asm/byteorder.h b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/asm-riscv/asm/byteorder.h
new file mode 100644
index 0000000..42afc14
--- /dev/null
+++ b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/asm-riscv/asm/byteorder.h
@@ -0,0 +1,22 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPI_ASM_RISCV_BYTEORDER_H
+#define _UAPI_ASM_RISCV_BYTEORDER_H
+#include <linux/byteorder/little_endian.h>
+#endif
diff --git a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/asm-riscv/asm/elf.h b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/asm-riscv/asm/elf.h
new file mode 100644
index 0000000..07593d9
--- /dev/null
+++ b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/asm-riscv/asm/elf.h
@@ -0,0 +1,89 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPI_ASM_RISCV_ELF_H
+#define _UAPI_ASM_RISCV_ELF_H
+#include <asm/ptrace.h>
+typedef unsigned long elf_greg_t;
+typedef struct user_regs_struct elf_gregset_t;
+#define ELF_NGREG (sizeof(elf_gregset_t) / sizeof(elf_greg_t))
+typedef __u64 elf_fpreg_t;
+typedef union __riscv_fp_state elf_fpregset_t;
+#define ELF_NFPREG (sizeof(struct __riscv_d_ext_state) / sizeof(elf_fpreg_t))
+#if __riscv_xlen == 64
+#define ELF_RISCV_R_SYM(r_info) ELF64_R_SYM(r_info)
+#define ELF_RISCV_R_TYPE(r_info) ELF64_R_TYPE(r_info)
+#else
+#define ELF_RISCV_R_SYM(r_info) ELF32_R_SYM(r_info)
+#define ELF_RISCV_R_TYPE(r_info) ELF32_R_TYPE(r_info)
+#endif
+#define R_RISCV_NONE 0
+#define R_RISCV_32 1
+#define R_RISCV_64 2
+#define R_RISCV_RELATIVE 3
+#define R_RISCV_COPY 4
+#define R_RISCV_JUMP_SLOT 5
+#define R_RISCV_TLS_DTPMOD32 6
+#define R_RISCV_TLS_DTPMOD64 7
+#define R_RISCV_TLS_DTPREL32 8
+#define R_RISCV_TLS_DTPREL64 9
+#define R_RISCV_TLS_TPREL32 10
+#define R_RISCV_TLS_TPREL64 11
+#define R_RISCV_BRANCH 16
+#define R_RISCV_JAL 17
+#define R_RISCV_CALL 18
+#define R_RISCV_CALL_PLT 19
+#define R_RISCV_GOT_HI20 20
+#define R_RISCV_TLS_GOT_HI20 21
+#define R_RISCV_TLS_GD_HI20 22
+#define R_RISCV_PCREL_HI20 23
+#define R_RISCV_PCREL_LO12_I 24
+#define R_RISCV_PCREL_LO12_S 25
+#define R_RISCV_HI20 26
+#define R_RISCV_LO12_I 27
+#define R_RISCV_LO12_S 28
+#define R_RISCV_TPREL_HI20 29
+#define R_RISCV_TPREL_LO12_I 30
+#define R_RISCV_TPREL_LO12_S 31
+#define R_RISCV_TPREL_ADD 32
+#define R_RISCV_ADD8 33
+#define R_RISCV_ADD16 34
+#define R_RISCV_ADD32 35
+#define R_RISCV_ADD64 36
+#define R_RISCV_SUB8 37
+#define R_RISCV_SUB16 38
+#define R_RISCV_SUB32 39
+#define R_RISCV_SUB64 40
+#define R_RISCV_GNU_VTINHERIT 41
+#define R_RISCV_GNU_VTENTRY 42
+#define R_RISCV_ALIGN 43
+#define R_RISCV_RVC_BRANCH 44
+#define R_RISCV_RVC_JUMP 45
+#define R_RISCV_LUI 46
+#define R_RISCV_GPREL_I 47
+#define R_RISCV_GPREL_S 48
+#define R_RISCV_TPREL_I 49
+#define R_RISCV_TPREL_S 50
+#define R_RISCV_RELAX 51
+#define R_RISCV_SUB6 52
+#define R_RISCV_SET6 53
+#define R_RISCV_SET8 54
+#define R_RISCV_SET16 55
+#define R_RISCV_SET32 56
+#define R_RISCV_32_PCREL 57
+#endif
diff --git a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/asm-riscv/asm/errno.h b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/asm-riscv/asm/errno.h
new file mode 100644
index 0000000..392cd94
--- /dev/null
+++ b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/asm-riscv/asm/errno.h
@@ -0,0 +1,19 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#include <asm-generic/errno.h>
diff --git a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/asm-riscv/asm/fcntl.h b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/asm-riscv/asm/fcntl.h
new file mode 100644
index 0000000..518d3a7
--- /dev/null
+++ b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/asm-riscv/asm/fcntl.h
@@ -0,0 +1,19 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#include <asm-generic/fcntl.h>
diff --git a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/asm-riscv/asm/hwcap.h b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/asm-riscv/asm/hwcap.h
new file mode 100644
index 0000000..d130cf7
--- /dev/null
+++ b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/asm-riscv/asm/hwcap.h
@@ -0,0 +1,27 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPI_ASM_RISCV_HWCAP_H
+#define _UAPI_ASM_RISCV_HWCAP_H
+#define COMPAT_HWCAP_ISA_I (1 << ('I' - 'A'))
+#define COMPAT_HWCAP_ISA_M (1 << ('M' - 'A'))
+#define COMPAT_HWCAP_ISA_A (1 << ('A' - 'A'))
+#define COMPAT_HWCAP_ISA_F (1 << ('F' - 'A'))
+#define COMPAT_HWCAP_ISA_D (1 << ('D' - 'A'))
+#define COMPAT_HWCAP_ISA_C (1 << ('C' - 'A'))
+#endif
diff --git a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/asm-riscv/asm/ioctl.h b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/asm-riscv/asm/ioctl.h
new file mode 100644
index 0000000..7b7bd37
--- /dev/null
+++ b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/asm-riscv/asm/ioctl.h
@@ -0,0 +1,19 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#include <asm-generic/ioctl.h>
diff --git a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/asm-riscv/asm/ioctls.h b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/asm-riscv/asm/ioctls.h
new file mode 100644
index 0000000..0c66935
--- /dev/null
+++ b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/asm-riscv/asm/ioctls.h
@@ -0,0 +1,19 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#include <asm-generic/ioctls.h>
diff --git a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/asm-riscv/asm/ipcbuf.h b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/asm-riscv/asm/ipcbuf.h
new file mode 100644
index 0000000..0021f14
--- /dev/null
+++ b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/asm-riscv/asm/ipcbuf.h
@@ -0,0 +1,19 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#include <asm-generic/ipcbuf.h>
diff --git a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/asm-riscv/asm/kvm.h b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/asm-riscv/asm/kvm.h
new file mode 100644
index 0000000..5dc165b
--- /dev/null
+++ b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/asm-riscv/asm/kvm.h
@@ -0,0 +1,102 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef __LINUX_KVM_RISCV_H
+#define __LINUX_KVM_RISCV_H
+#ifndef __ASSEMBLY__
+#include <linux/types.h>
+#include <asm/ptrace.h>
+#define __KVM_HAVE_READONLY_MEM
+#define KVM_COALESCED_MMIO_PAGE_OFFSET 1
+#define KVM_INTERRUPT_SET - 1U
+#define KVM_INTERRUPT_UNSET - 2U
+struct kvm_regs {
+};
+struct kvm_fpu {
+};
+struct kvm_debug_exit_arch {
+};
+struct kvm_guest_debug_arch {
+};
+struct kvm_sync_regs {
+};
+struct kvm_sregs {
+};
+struct kvm_riscv_config {
+  unsigned long isa;
+  unsigned long zicbom_block_size;
+};
+struct kvm_riscv_core {
+  struct user_regs_struct regs;
+  unsigned long mode;
+};
+#define KVM_RISCV_MODE_S 1
+#define KVM_RISCV_MODE_U 0
+struct kvm_riscv_csr {
+  unsigned long sstatus;
+  unsigned long sie;
+  unsigned long stvec;
+  unsigned long sscratch;
+  unsigned long sepc;
+  unsigned long scause;
+  unsigned long stval;
+  unsigned long sip;
+  unsigned long satp;
+  unsigned long scounteren;
+};
+struct kvm_riscv_timer {
+  __u64 frequency;
+  __u64 time;
+  __u64 compare;
+  __u64 state;
+};
+enum KVM_RISCV_ISA_EXT_ID {
+  KVM_RISCV_ISA_EXT_A = 0,
+  KVM_RISCV_ISA_EXT_C,
+  KVM_RISCV_ISA_EXT_D,
+  KVM_RISCV_ISA_EXT_F,
+  KVM_RISCV_ISA_EXT_H,
+  KVM_RISCV_ISA_EXT_I,
+  KVM_RISCV_ISA_EXT_M,
+  KVM_RISCV_ISA_EXT_SVPBMT,
+  KVM_RISCV_ISA_EXT_SSTC,
+  KVM_RISCV_ISA_EXT_SVINVAL,
+  KVM_RISCV_ISA_EXT_ZIHINTPAUSE,
+  KVM_RISCV_ISA_EXT_ZICBOM,
+  KVM_RISCV_ISA_EXT_MAX,
+};
+#define KVM_RISCV_TIMER_STATE_OFF 0
+#define KVM_RISCV_TIMER_STATE_ON 1
+#define KVM_REG_SIZE(id) (1U << (((id) & KVM_REG_SIZE_MASK) >> KVM_REG_SIZE_SHIFT))
+#define KVM_REG_RISCV_TYPE_MASK 0x00000000FF000000
+#define KVM_REG_RISCV_TYPE_SHIFT 24
+#define KVM_REG_RISCV_CONFIG (0x01 << KVM_REG_RISCV_TYPE_SHIFT)
+#define KVM_REG_RISCV_CONFIG_REG(name) (offsetof(struct kvm_riscv_config, name) / sizeof(unsigned long))
+#define KVM_REG_RISCV_CORE (0x02 << KVM_REG_RISCV_TYPE_SHIFT)
+#define KVM_REG_RISCV_CORE_REG(name) (offsetof(struct kvm_riscv_core, name) / sizeof(unsigned long))
+#define KVM_REG_RISCV_CSR (0x03 << KVM_REG_RISCV_TYPE_SHIFT)
+#define KVM_REG_RISCV_CSR_REG(name) (offsetof(struct kvm_riscv_csr, name) / sizeof(unsigned long))
+#define KVM_REG_RISCV_TIMER (0x04 << KVM_REG_RISCV_TYPE_SHIFT)
+#define KVM_REG_RISCV_TIMER_REG(name) (offsetof(struct kvm_riscv_timer, name) / sizeof(__u64))
+#define KVM_REG_RISCV_FP_F (0x05 << KVM_REG_RISCV_TYPE_SHIFT)
+#define KVM_REG_RISCV_FP_F_REG(name) (offsetof(struct __riscv_f_ext_state, name) / sizeof(__u32))
+#define KVM_REG_RISCV_FP_D (0x06 << KVM_REG_RISCV_TYPE_SHIFT)
+#define KVM_REG_RISCV_FP_D_REG(name) (offsetof(struct __riscv_d_ext_state, name) / sizeof(__u64))
+#define KVM_REG_RISCV_ISA_EXT (0x07 << KVM_REG_RISCV_TYPE_SHIFT)
+#endif
+#endif
diff --git a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/asm-riscv/asm/mman.h b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/asm-riscv/asm/mman.h
new file mode 100644
index 0000000..6c23fb6
--- /dev/null
+++ b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/asm-riscv/asm/mman.h
@@ -0,0 +1,19 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#include <asm-generic/mman.h>
diff --git a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/asm-riscv/asm/msgbuf.h b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/asm-riscv/asm/msgbuf.h
new file mode 100644
index 0000000..7809e3c
--- /dev/null
+++ b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/asm-riscv/asm/msgbuf.h
@@ -0,0 +1,19 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#include <asm-generic/msgbuf.h>
diff --git a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/asm-riscv/asm/param.h b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/asm-riscv/asm/param.h
new file mode 100644
index 0000000..5ccf935
--- /dev/null
+++ b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/asm-riscv/asm/param.h
@@ -0,0 +1,19 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#include <asm-generic/param.h>
diff --git a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/asm-riscv/asm/perf_regs.h b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/asm-riscv/asm/perf_regs.h
new file mode 100644
index 0000000..ceb0bbe
--- /dev/null
+++ b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/asm-riscv/asm/perf_regs.h
@@ -0,0 +1,56 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _ASM_RISCV_PERF_REGS_H
+#define _ASM_RISCV_PERF_REGS_H
+enum perf_event_riscv_regs {
+  PERF_REG_RISCV_PC,
+  PERF_REG_RISCV_RA,
+  PERF_REG_RISCV_SP,
+  PERF_REG_RISCV_GP,
+  PERF_REG_RISCV_TP,
+  PERF_REG_RISCV_T0,
+  PERF_REG_RISCV_T1,
+  PERF_REG_RISCV_T2,
+  PERF_REG_RISCV_S0,
+  PERF_REG_RISCV_S1,
+  PERF_REG_RISCV_A0,
+  PERF_REG_RISCV_A1,
+  PERF_REG_RISCV_A2,
+  PERF_REG_RISCV_A3,
+  PERF_REG_RISCV_A4,
+  PERF_REG_RISCV_A5,
+  PERF_REG_RISCV_A6,
+  PERF_REG_RISCV_A7,
+  PERF_REG_RISCV_S2,
+  PERF_REG_RISCV_S3,
+  PERF_REG_RISCV_S4,
+  PERF_REG_RISCV_S5,
+  PERF_REG_RISCV_S6,
+  PERF_REG_RISCV_S7,
+  PERF_REG_RISCV_S8,
+  PERF_REG_RISCV_S9,
+  PERF_REG_RISCV_S10,
+  PERF_REG_RISCV_S11,
+  PERF_REG_RISCV_T3,
+  PERF_REG_RISCV_T4,
+  PERF_REG_RISCV_T5,
+  PERF_REG_RISCV_T6,
+  PERF_REG_RISCV_MAX,
+};
+#endif
diff --git a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/asm-riscv/asm/poll.h b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/asm-riscv/asm/poll.h
new file mode 100644
index 0000000..d7e8adc
--- /dev/null
+++ b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/asm-riscv/asm/poll.h
@@ -0,0 +1,19 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#include <asm-generic/poll.h>
diff --git a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/asm-riscv/asm/posix_types.h b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/asm-riscv/asm/posix_types.h
new file mode 100644
index 0000000..1b89253
--- /dev/null
+++ b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/asm-riscv/asm/posix_types.h
@@ -0,0 +1,19 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#include <asm-generic/posix_types.h>
diff --git a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/asm-riscv/asm/ptrace.h b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/asm-riscv/asm/ptrace.h
new file mode 100644
index 0000000..94e4ac9
--- /dev/null
+++ b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/asm-riscv/asm/ptrace.h
@@ -0,0 +1,76 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPI_ASM_RISCV_PTRACE_H
+#define _UAPI_ASM_RISCV_PTRACE_H
+#ifndef __ASSEMBLY__
+#include <linux/types.h>
+struct user_regs_struct {
+  unsigned long pc;
+  unsigned long ra;
+  unsigned long sp;
+  unsigned long gp;
+  unsigned long tp;
+  unsigned long t0;
+  unsigned long t1;
+  unsigned long t2;
+  unsigned long s0;
+  unsigned long s1;
+  unsigned long a0;
+  unsigned long a1;
+  unsigned long a2;
+  unsigned long a3;
+  unsigned long a4;
+  unsigned long a5;
+  unsigned long a6;
+  unsigned long a7;
+  unsigned long s2;
+  unsigned long s3;
+  unsigned long s4;
+  unsigned long s5;
+  unsigned long s6;
+  unsigned long s7;
+  unsigned long s8;
+  unsigned long s9;
+  unsigned long s10;
+  unsigned long s11;
+  unsigned long t3;
+  unsigned long t4;
+  unsigned long t5;
+  unsigned long t6;
+};
+struct __riscv_f_ext_state {
+  __u32 f[32];
+  __u32 fcsr;
+};
+struct __riscv_d_ext_state {
+  __u64 f[32];
+  __u32 fcsr;
+};
+struct __riscv_q_ext_state {
+  __u64 f[64] __attribute__((aligned(16)));
+  __u32 fcsr;
+  __u32 reserved[3];
+};
+union __riscv_fp_state {
+  struct __riscv_f_ext_state f;
+  struct __riscv_d_ext_state d;
+  struct __riscv_q_ext_state q;
+};
+#endif
+#endif
diff --git a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/asm-riscv/asm/resource.h b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/asm-riscv/asm/resource.h
new file mode 100644
index 0000000..371adb5
--- /dev/null
+++ b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/asm-riscv/asm/resource.h
@@ -0,0 +1,19 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#include <asm-generic/resource.h>
diff --git a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/asm-riscv/asm/sembuf.h b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/asm-riscv/asm/sembuf.h
new file mode 100644
index 0000000..6ce6549
--- /dev/null
+++ b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/asm-riscv/asm/sembuf.h
@@ -0,0 +1,19 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#include <asm-generic/sembuf.h>
diff --git a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/asm-riscv/asm/setup.h b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/asm-riscv/asm/setup.h
new file mode 100644
index 0000000..940c4db
--- /dev/null
+++ b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/asm-riscv/asm/setup.h
@@ -0,0 +1,19 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#include <asm-generic/setup.h>
diff --git a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/asm-riscv/asm/shmbuf.h b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/asm-riscv/asm/shmbuf.h
new file mode 100644
index 0000000..fe8b1be
--- /dev/null
+++ b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/asm-riscv/asm/shmbuf.h
@@ -0,0 +1,19 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#include <asm-generic/shmbuf.h>
diff --git a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/asm-riscv/asm/sigcontext.h b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/asm-riscv/asm/sigcontext.h
new file mode 100644
index 0000000..0553b94
--- /dev/null
+++ b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/asm-riscv/asm/sigcontext.h
@@ -0,0 +1,26 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPI_ASM_RISCV_SIGCONTEXT_H
+#define _UAPI_ASM_RISCV_SIGCONTEXT_H
+#include <asm/ptrace.h>
+struct sigcontext {
+  struct user_regs_struct sc_regs;
+  union __riscv_fp_state sc_fpregs;
+};
+#endif
diff --git a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/asm-riscv/asm/siginfo.h b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/asm-riscv/asm/siginfo.h
new file mode 100644
index 0000000..a31ebb2
--- /dev/null
+++ b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/asm-riscv/asm/siginfo.h
@@ -0,0 +1,19 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#include <asm-generic/siginfo.h>
diff --git a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/asm-riscv/asm/signal.h b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/asm-riscv/asm/signal.h
new file mode 100644
index 0000000..64373fe
--- /dev/null
+++ b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/asm-riscv/asm/signal.h
@@ -0,0 +1,19 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#include <asm-generic/signal.h>
diff --git a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/asm-riscv/asm/socket.h b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/asm-riscv/asm/socket.h
new file mode 100644
index 0000000..50a9874
--- /dev/null
+++ b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/asm-riscv/asm/socket.h
@@ -0,0 +1,19 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#include <asm-generic/socket.h>
diff --git a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/asm-riscv/asm/sockios.h b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/asm-riscv/asm/sockios.h
new file mode 100644
index 0000000..710db92
--- /dev/null
+++ b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/asm-riscv/asm/sockios.h
@@ -0,0 +1,19 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#include <asm-generic/sockios.h>
diff --git a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/asm-riscv/asm/stat.h b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/asm-riscv/asm/stat.h
new file mode 100644
index 0000000..af7ebfc
--- /dev/null
+++ b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/asm-riscv/asm/stat.h
@@ -0,0 +1,19 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#include <asm-generic/stat.h>
diff --git a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/asm-riscv/asm/statfs.h b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/asm-riscv/asm/statfs.h
new file mode 100644
index 0000000..93de275
--- /dev/null
+++ b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/asm-riscv/asm/statfs.h
@@ -0,0 +1,19 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#include <asm-generic/statfs.h>
diff --git a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/asm-riscv/asm/swab.h b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/asm-riscv/asm/swab.h
new file mode 100644
index 0000000..0049f53
--- /dev/null
+++ b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/asm-riscv/asm/swab.h
@@ -0,0 +1,19 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#include <asm-generic/swab.h>
diff --git a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/asm-riscv/asm/termbits.h b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/asm-riscv/asm/termbits.h
new file mode 100644
index 0000000..42af6fe
--- /dev/null
+++ b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/asm-riscv/asm/termbits.h
@@ -0,0 +1,19 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#include <asm-generic/termbits.h>
diff --git a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/asm-riscv/asm/termios.h b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/asm-riscv/asm/termios.h
new file mode 100644
index 0000000..feca4c6
--- /dev/null
+++ b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/asm-riscv/asm/termios.h
@@ -0,0 +1,19 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#include <asm-generic/termios.h>
diff --git a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/asm-riscv/asm/types.h b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/asm-riscv/asm/types.h
new file mode 100644
index 0000000..8250f43
--- /dev/null
+++ b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/asm-riscv/asm/types.h
@@ -0,0 +1,19 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#include <asm-generic/types.h>
diff --git a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/asm-riscv/asm/ucontext.h b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/asm-riscv/asm/ucontext.h
new file mode 100644
index 0000000..8b72cc1
--- /dev/null
+++ b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/asm-riscv/asm/ucontext.h
@@ -0,0 +1,30 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPI_ASM_RISCV_UCONTEXT_H
+#define _UAPI_ASM_RISCV_UCONTEXT_H
+#include <linux/types.h>
+struct ucontext {
+  unsigned long uc_flags;
+  struct ucontext * uc_link;
+  stack_t uc_stack;
+  sigset_t uc_sigmask;
+  __u8 __linux_unused[1024 / 8 - sizeof(sigset_t)];
+  struct sigcontext uc_mcontext;
+};
+#endif
diff --git a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/asm-riscv/asm/unistd.h b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/asm-riscv/asm/unistd.h
new file mode 100644
index 0000000..665b820
--- /dev/null
+++ b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/asm-riscv/asm/unistd.h
@@ -0,0 +1,29 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#if defined(__LP64__) && !defined(__SYSCALL_COMPAT)
+#define __ARCH_WANT_NEW_STAT
+#define __ARCH_WANT_SET_GET_RLIMIT
+#endif
+#define __ARCH_WANT_SYS_CLONE3
+#define __ARCH_WANT_MEMFD_SECRET
+#include <asm-generic/unistd.h>
+#ifndef __NR_riscv_flush_icache
+#define __NR_riscv_flush_icache (__NR_arch_specific_syscall + 15)
+#endif
+__SYSCALL(__NR_riscv_flush_icache, sys_riscv_flush_icache)
diff --git a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/asm-x86/asm/amd_hsmp.h b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/asm-x86/asm/amd_hsmp.h
new file mode 100644
index 0000000..c026aac
--- /dev/null
+++ b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/asm-x86/asm/amd_hsmp.h
@@ -0,0 +1,189 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPI_ASM_X86_AMD_HSMP_H_
+#define _UAPI_ASM_X86_AMD_HSMP_H_
+#include <linux/types.h>
+#pragma pack(4)
+#define HSMP_MAX_MSG_LEN 8
+enum hsmp_message_ids {
+  HSMP_TEST = 1,
+  HSMP_GET_SMU_VER,
+  HSMP_GET_PROTO_VER,
+  HSMP_GET_SOCKET_POWER,
+  HSMP_SET_SOCKET_POWER_LIMIT,
+  HSMP_GET_SOCKET_POWER_LIMIT,
+  HSMP_GET_SOCKET_POWER_LIMIT_MAX,
+  HSMP_SET_BOOST_LIMIT,
+  HSMP_SET_BOOST_LIMIT_SOCKET,
+  HSMP_GET_BOOST_LIMIT,
+  HSMP_GET_PROC_HOT,
+  HSMP_SET_XGMI_LINK_WIDTH,
+  HSMP_SET_DF_PSTATE,
+  HSMP_SET_AUTO_DF_PSTATE,
+  HSMP_GET_FCLK_MCLK,
+  HSMP_GET_CCLK_THROTTLE_LIMIT,
+  HSMP_GET_C0_PERCENT,
+  HSMP_SET_NBIO_DPM_LEVEL,
+  HSMP_GET_NBIO_DPM_LEVEL,
+  HSMP_GET_DDR_BANDWIDTH,
+  HSMP_GET_TEMP_MONITOR,
+  HSMP_GET_DIMM_TEMP_RANGE,
+  HSMP_GET_DIMM_POWER,
+  HSMP_GET_DIMM_THERMAL,
+  HSMP_GET_SOCKET_FREQ_LIMIT,
+  HSMP_GET_CCLK_CORE_LIMIT,
+  HSMP_GET_RAILS_SVI,
+  HSMP_GET_SOCKET_FMAX_FMIN,
+  HSMP_GET_IOLINK_BANDWITH,
+  HSMP_GET_XGMI_BANDWITH,
+  HSMP_SET_GMI3_WIDTH,
+  HSMP_SET_PCI_RATE,
+  HSMP_SET_POWER_MODE,
+  HSMP_SET_PSTATE_MAX_MIN,
+  HSMP_MSG_ID_MAX,
+};
+struct hsmp_message {
+  __u32 msg_id;
+  __u16 num_args;
+  __u16 response_sz;
+  __u32 args[HSMP_MAX_MSG_LEN];
+  __u16 sock_ind;
+};
+enum hsmp_msg_type {
+  HSMP_RSVD = - 1,
+  HSMP_SET = 0,
+  HSMP_GET = 1,
+};
+struct hsmp_msg_desc {
+  int num_args;
+  int response_sz;
+  enum hsmp_msg_type type;
+};
+static const struct hsmp_msg_desc hsmp_msg_desc_table[] = {
+ {
+    0, 0, HSMP_RSVD
+  }
+ , {
+    1, 1, HSMP_GET
+  }
+ , {
+    0, 1, HSMP_GET
+  }
+ , {
+    0, 1, HSMP_GET
+  }
+ , {
+    0, 1, HSMP_GET
+  }
+ , {
+    1, 0, HSMP_SET
+  }
+ , {
+    0, 1, HSMP_GET
+  }
+ , {
+    0, 1, HSMP_GET
+  }
+ , {
+    1, 0, HSMP_SET
+  }
+ , {
+    1, 0, HSMP_SET
+  }
+ , {
+    1, 1, HSMP_GET
+  }
+ , {
+    0, 1, HSMP_GET
+  }
+ , {
+    1, 0, HSMP_SET
+  }
+ , {
+    1, 0, HSMP_SET
+  }
+ , {
+    0, 0, HSMP_SET
+  }
+ , {
+    0, 2, HSMP_GET
+  }
+ , {
+    0, 1, HSMP_GET
+  }
+ , {
+    0, 1, HSMP_GET
+  }
+ , {
+    1, 0, HSMP_SET
+  }
+ , {
+    1, 1, HSMP_GET
+  }
+ , {
+    0, 1, HSMP_GET
+  }
+ , {
+    0, 1, HSMP_GET
+  }
+ , {
+    1, 1, HSMP_GET
+  }
+ , {
+    1, 1, HSMP_GET
+  }
+ , {
+    1, 1, HSMP_GET
+  }
+ , {
+    0, 1, HSMP_GET
+  }
+ , {
+    1, 1, HSMP_GET
+  }
+ , {
+    0, 1, HSMP_GET
+  }
+ , {
+    0, 1, HSMP_GET
+  }
+ , {
+    1, 1, HSMP_GET
+  }
+ , {
+    1, 1, HSMP_GET
+  }
+ , {
+    1, 0, HSMP_SET
+  }
+ , {
+    1, 1, HSMP_SET
+  }
+ , {
+    1, 0, HSMP_SET
+  }
+ , {
+    1, 0, HSMP_SET
+  }
+ ,
+};
+#pragma pack()
+#define HSMP_BASE_IOCTL_NR 0xF8
+#define HSMP_IOCTL_CMD _IOWR(HSMP_BASE_IOCTL_NR, 0, struct hsmp_message)
+#endif
diff --git a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/asm-x86/asm/bootparam.h b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/asm-x86/asm/bootparam.h
index 7401135..ab9d7f3 100644
--- a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/asm-x86/asm/bootparam.h
+++ b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/asm-x86/asm/bootparam.h
@@ -25,8 +25,12 @@
 #define SETUP_EFI 4
 #define SETUP_APPLE_PROPERTIES 5
 #define SETUP_JAILHOUSE 6
+#define SETUP_CC_BLOB 7
+#define SETUP_IMA 8
+#define SETUP_RNG_SEED 9
+#define SETUP_ENUM_MAX SETUP_RNG_SEED
 #define SETUP_INDIRECT (1 << 31)
-#define SETUP_TYPE_MAX (SETUP_INDIRECT | SETUP_JAILHOUSE)
+#define SETUP_TYPE_MAX (SETUP_ENUM_MAX | SETUP_INDIRECT)
 #define RAMDISK_IMAGE_START_MASK 0x07FF
 #define RAMDISK_PROMPT_FLAG 0x8000
 #define RAMDISK_LOAD_FLAG 0x4000
@@ -53,7 +57,7 @@
   __u64 next;
   __u32 type;
   __u32 len;
-  __u8 data[0];
+  __u8 data[];
 };
 struct setup_indirect {
   __u32 type;
@@ -147,6 +151,10 @@
     __u32 flags;
   } __attribute__((packed)) v2;
 } __attribute__((packed));
+struct ima_setup_data {
+  __u64 addr;
+  __u64 size;
+} __attribute__((packed));
 struct boot_params {
   struct screen_info screen_info;
   struct apm_bios_info apm_bios_info;
@@ -162,7 +170,8 @@
   __u32 ext_ramdisk_image;
   __u32 ext_ramdisk_size;
   __u32 ext_cmd_line_ptr;
-  __u8 _pad4[116];
+  __u8 _pad4[112];
+  __u32 cc_blob_address;
   struct edid_info edid_info;
   struct efi_info efi_info;
   __u32 alt_mem_k;
diff --git a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/asm-x86/asm/kvm.h b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/asm-x86/asm/kvm.h
index caf8fc0..f07b00e 100644
--- a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/asm-x86/asm/kvm.h
+++ b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/asm-x86/asm/kvm.h
@@ -178,11 +178,11 @@
 struct kvm_msrs {
   __u32 nmsrs;
   __u32 pad;
-  struct kvm_msr_entry entries[0];
+  struct kvm_msr_entry entries[];
 };
 struct kvm_msr_list {
   __u32 nmsrs;
-  __u32 indices[0];
+  __u32 indices[];
 };
 #define KVM_MSR_FILTER_MAX_BITMAP_SIZE 0x600
 struct kvm_msr_filter_range {
@@ -211,7 +211,7 @@
 struct kvm_cpuid {
   __u32 nent;
   __u32 padding;
-  struct kvm_cpuid_entry entries[0];
+  struct kvm_cpuid_entry entries[];
 };
 struct kvm_cpuid_entry2 {
   __u32 function;
@@ -229,7 +229,7 @@
 struct kvm_cpuid2 {
   __u32 nent;
   __u32 padding;
-  struct kvm_cpuid_entry2 entries[0];
+  struct kvm_cpuid_entry2 entries[];
 };
 struct kvm_pit_channel_state {
   __u32 count;
@@ -265,6 +265,7 @@
   struct kvm_pit_channel_state channels[3];
 };
 #define KVM_PIT_FLAGS_HPET_LEGACY 0x00000001
+#define KVM_PIT_FLAGS_SPEAKER_DATA_ON 0x00000002
 struct kvm_pit_state2 {
   struct kvm_pit_channel_state channels[3];
   __u32 flags;
@@ -279,6 +280,7 @@
 #define KVM_VCPUEVENT_VALID_SHADOW 0x00000004
 #define KVM_VCPUEVENT_VALID_SMM 0x00000008
 #define KVM_VCPUEVENT_VALID_PAYLOAD 0x00000010
+#define KVM_VCPUEVENT_VALID_TRIPLE_FAULT 0x00000020
 #define KVM_X86_SHADOW_INT_MOV_SS 0x01
 #define KVM_X86_SHADOW_INT_STI 0x02
 struct kvm_vcpu_events {
@@ -309,7 +311,10 @@
     __u8 smm_inside_nmi;
     __u8 latched_init;
   } smi;
-  __u8 reserved[27];
+  struct {
+    __u8 pending;
+  } triple_fault;
+  __u8 reserved[26];
   __u8 exception_has_payload;
   __u64 exception_payload;
 };
@@ -322,7 +327,7 @@
 };
 struct kvm_xsave {
   __u32 region[1024];
-  __u32 extra[0];
+  __u32 extra[];
 };
 #define KVM_MAX_XCRS 16
 struct kvm_xcr {
@@ -350,6 +355,8 @@
 #define KVM_X86_QUIRK_LAPIC_MMIO_HOLE (1 << 2)
 #define KVM_X86_QUIRK_OUT_7E_INC_RIP (1 << 3)
 #define KVM_X86_QUIRK_MISC_ENABLE_NO_MWAIT (1 << 4)
+#define KVM_X86_QUIRK_FIX_HYPERCALL_INSN (1 << 5)
+#define KVM_X86_QUIRK_MWAIT_NEVER_UD_FAULTS (1 << 6)
 #define KVM_STATE_NESTED_FORMAT_VMX 0
 #define KVM_STATE_NESTED_FORMAT_SVM 1
 #define KVM_STATE_NESTED_GUEST_MODE 0x00000001
@@ -403,7 +410,7 @@
   __u32 fixed_counter_bitmap;
   __u32 flags;
   __u32 pad[4];
-  __u64 events[0];
+  __u64 events[];
 };
 #define KVM_PMU_EVENT_ALLOW 0
 #define KVM_PMU_EVENT_DENY 1
diff --git a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/asm-x86/asm/processor-flags.h b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/asm-x86/asm/processor-flags.h
index 85f9d7e..0a95afd 100644
--- a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/asm-x86/asm/processor-flags.h
+++ b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/asm-x86/asm/processor-flags.h
@@ -127,6 +127,8 @@
 #define X86_CR4_SMAP _BITUL(X86_CR4_SMAP_BIT)
 #define X86_CR4_PKE_BIT 22
 #define X86_CR4_PKE _BITUL(X86_CR4_PKE_BIT)
+#define X86_CR4_CET_BIT 23
+#define X86_CR4_CET _BITUL(X86_CR4_CET_BIT)
 #define X86_CR8_TPR _AC(0x0000000f, UL)
 #define CX86_PCR0 0x20
 #define CX86_GCR 0xb8
diff --git a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/asm-x86/asm/sgx.h b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/asm-x86/asm/sgx.h
index 1874b78..fdc2700 100644
--- a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/asm-x86/asm/sgx.h
+++ b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/asm-x86/asm/sgx.h
@@ -29,6 +29,9 @@
 #define SGX_IOC_ENCLAVE_INIT _IOW(SGX_MAGIC, 0x02, struct sgx_enclave_init)
 #define SGX_IOC_ENCLAVE_PROVISION _IOW(SGX_MAGIC, 0x03, struct sgx_enclave_provision)
 #define SGX_IOC_VEPC_REMOVE_ALL _IO(SGX_MAGIC, 0x04)
+#define SGX_IOC_ENCLAVE_RESTRICT_PERMISSIONS _IOWR(SGX_MAGIC, 0x05, struct sgx_enclave_restrict_permissions)
+#define SGX_IOC_ENCLAVE_MODIFY_TYPES _IOWR(SGX_MAGIC, 0x06, struct sgx_enclave_modify_types)
+#define SGX_IOC_ENCLAVE_REMOVE_PAGES _IOWR(SGX_MAGIC, 0x07, struct sgx_enclave_remove_pages)
 struct sgx_enclave_create {
   __u64 src;
 };
@@ -46,6 +49,25 @@
 struct sgx_enclave_provision {
   __u64 fd;
 };
+struct sgx_enclave_restrict_permissions {
+  __u64 offset;
+  __u64 length;
+  __u64 permissions;
+  __u64 result;
+  __u64 count;
+};
+struct sgx_enclave_modify_types {
+  __u64 offset;
+  __u64 length;
+  __u64 page_type;
+  __u64 result;
+  __u64 count;
+};
+struct sgx_enclave_remove_pages {
+  __u64 offset;
+  __u64 length;
+  __u64 count;
+};
 struct sgx_enclave_run;
 typedef int(* sgx_enclave_user_handler_t) (long rdi, long rsi, long rdx, long rsp, long r8, long r9, struct sgx_enclave_run * run);
 struct sgx_enclave_run {
diff --git a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/asm-x86/asm/shmbuf.h b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/asm-x86/asm/shmbuf.h
index 03e195e..2a0dcb5 100644
--- a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/asm-x86/asm/shmbuf.h
+++ b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/asm-x86/asm/shmbuf.h
@@ -21,9 +21,11 @@
 #if !defined(__x86_64__) || !defined(__ILP32__)
 #include <asm-generic/shmbuf.h>
 #else
+#include <asm/ipcbuf.h>
+#include <asm/posix_types.h>
 struct shmid64_ds {
   struct ipc64_perm shm_perm;
-  size_t shm_segsz;
+  __kernel_size_t shm_segsz;
   __kernel_long_t shm_atime;
   __kernel_long_t shm_dtime;
   __kernel_long_t shm_ctime;
diff --git a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/asm-x86/asm/signal.h b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/asm-x86/asm/signal.h
index 8226da8..cbeeac4 100644
--- a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/asm-x86/asm/signal.h
+++ b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/asm-x86/asm/signal.h
@@ -90,7 +90,7 @@
 typedef struct sigaltstack {
   void __user * ss_sp;
   int ss_flags;
-  size_t ss_size;
+  __kernel_size_t ss_size;
 } stack_t;
 #endif
 #endif
diff --git a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/asm-x86/asm/svm.h b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/asm-x86/asm/svm.h
index d051481..8bda2d5 100644
--- a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/asm-x86/asm/svm.h
+++ b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/asm-x86/asm/svm.h
@@ -122,8 +122,16 @@
 #define SVM_VMGEXIT_AP_JUMP_TABLE 0x80000005
 #define SVM_VMGEXIT_SET_AP_JUMP_TABLE 0
 #define SVM_VMGEXIT_GET_AP_JUMP_TABLE 1
+#define SVM_VMGEXIT_PSC 0x80000010
+#define SVM_VMGEXIT_GUEST_REQUEST 0x80000011
+#define SVM_VMGEXIT_EXT_GUEST_REQUEST 0x80000012
+#define SVM_VMGEXIT_AP_CREATION 0x80000013
+#define SVM_VMGEXIT_AP_CREATE_ON_INIT 0
+#define SVM_VMGEXIT_AP_CREATE 1
+#define SVM_VMGEXIT_AP_DESTROY 2
+#define SVM_VMGEXIT_HV_FEATURES 0x8000fffd
 #define SVM_VMGEXIT_UNSUPPORTED_EVENT 0x8000ffff
 #define SVM_EXIT_SW 0xf0000000
 #define SVM_EXIT_ERR - 1
-#define SVM_EXIT_REASONS { SVM_EXIT_READ_CR0, "read_cr0" }, { SVM_EXIT_READ_CR2, "read_cr2" }, { SVM_EXIT_READ_CR3, "read_cr3" }, { SVM_EXIT_READ_CR4, "read_cr4" }, { SVM_EXIT_READ_CR8, "read_cr8" }, { SVM_EXIT_WRITE_CR0, "write_cr0" }, { SVM_EXIT_WRITE_CR2, "write_cr2" }, { SVM_EXIT_WRITE_CR3, "write_cr3" }, { SVM_EXIT_WRITE_CR4, "write_cr4" }, { SVM_EXIT_WRITE_CR8, "write_cr8" }, { SVM_EXIT_READ_DR0, "read_dr0" }, { SVM_EXIT_READ_DR1, "read_dr1" }, { SVM_EXIT_READ_DR2, "read_dr2" }, { SVM_EXIT_READ_DR3, "read_dr3" }, { SVM_EXIT_READ_DR4, "read_dr4" }, { SVM_EXIT_READ_DR5, "read_dr5" }, { SVM_EXIT_READ_DR6, "read_dr6" }, { SVM_EXIT_READ_DR7, "read_dr7" }, { SVM_EXIT_WRITE_DR0, "write_dr0" }, { SVM_EXIT_WRITE_DR1, "write_dr1" }, { SVM_EXIT_WRITE_DR2, "write_dr2" }, { SVM_EXIT_WRITE_DR3, "write_dr3" }, { SVM_EXIT_WRITE_DR4, "write_dr4" }, { SVM_EXIT_WRITE_DR5, "write_dr5" }, { SVM_EXIT_WRITE_DR6, "write_dr6" }, { SVM_EXIT_WRITE_DR7, "write_dr7" }, { SVM_EXIT_EXCP_BASE + DE_VECTOR, "DE excp" }, { SVM_EXIT_EXCP_BASE + DB_VECTOR, "DB excp" }, { SVM_EXIT_EXCP_BASE + BP_VECTOR, "BP excp" }, { SVM_EXIT_EXCP_BASE + OF_VECTOR, "OF excp" }, { SVM_EXIT_EXCP_BASE + BR_VECTOR, "BR excp" }, { SVM_EXIT_EXCP_BASE + UD_VECTOR, "UD excp" }, { SVM_EXIT_EXCP_BASE + NM_VECTOR, "NM excp" }, { SVM_EXIT_EXCP_BASE + DF_VECTOR, "DF excp" }, { SVM_EXIT_EXCP_BASE + TS_VECTOR, "TS excp" }, { SVM_EXIT_EXCP_BASE + NP_VECTOR, "NP excp" }, { SVM_EXIT_EXCP_BASE + SS_VECTOR, "SS excp" }, { SVM_EXIT_EXCP_BASE + GP_VECTOR, "GP excp" }, { SVM_EXIT_EXCP_BASE + PF_VECTOR, "PF excp" }, { SVM_EXIT_EXCP_BASE + MF_VECTOR, "MF excp" }, { SVM_EXIT_EXCP_BASE + AC_VECTOR, "AC excp" }, { SVM_EXIT_EXCP_BASE + MC_VECTOR, "MC excp" }, { SVM_EXIT_EXCP_BASE + XM_VECTOR, "XF excp" }, { SVM_EXIT_INTR, "interrupt" }, { SVM_EXIT_NMI, "nmi" }, { SVM_EXIT_SMI, "smi" }, { SVM_EXIT_INIT, "init" }, { SVM_EXIT_VINTR, "vintr" }, { SVM_EXIT_CR0_SEL_WRITE, "cr0_sel_write" }, { SVM_EXIT_IDTR_READ, "read_idtr" }, { SVM_EXIT_GDTR_READ, "read_gdtr" }, { SVM_EXIT_LDTR_READ, "read_ldtr" }, { SVM_EXIT_TR_READ, "read_rt" }, { SVM_EXIT_IDTR_WRITE, "write_idtr" }, { SVM_EXIT_GDTR_WRITE, "write_gdtr" }, { SVM_EXIT_LDTR_WRITE, "write_ldtr" }, { SVM_EXIT_TR_WRITE, "write_rt" }, { SVM_EXIT_RDTSC, "rdtsc" }, { SVM_EXIT_RDPMC, "rdpmc" }, { SVM_EXIT_PUSHF, "pushf" }, { SVM_EXIT_POPF, "popf" }, { SVM_EXIT_CPUID, "cpuid" }, { SVM_EXIT_RSM, "rsm" }, { SVM_EXIT_IRET, "iret" }, { SVM_EXIT_SWINT, "swint" }, { SVM_EXIT_INVD, "invd" }, { SVM_EXIT_PAUSE, "pause" }, { SVM_EXIT_HLT, "hlt" }, { SVM_EXIT_INVLPG, "invlpg" }, { SVM_EXIT_INVLPGA, "invlpga" }, { SVM_EXIT_IOIO, "io" }, { SVM_EXIT_MSR, "msr" }, { SVM_EXIT_TASK_SWITCH, "task_switch" }, { SVM_EXIT_FERR_FREEZE, "ferr_freeze" }, { SVM_EXIT_SHUTDOWN, "shutdown" }, { SVM_EXIT_VMRUN, "vmrun" }, { SVM_EXIT_VMMCALL, "hypercall" }, { SVM_EXIT_VMLOAD, "vmload" }, { SVM_EXIT_VMSAVE, "vmsave" }, { SVM_EXIT_STGI, "stgi" }, { SVM_EXIT_CLGI, "clgi" }, { SVM_EXIT_SKINIT, "skinit" }, { SVM_EXIT_RDTSCP, "rdtscp" }, { SVM_EXIT_ICEBP, "icebp" }, { SVM_EXIT_WBINVD, "wbinvd" }, { SVM_EXIT_MONITOR, "monitor" }, { SVM_EXIT_MWAIT, "mwait" }, { SVM_EXIT_XSETBV, "xsetbv" }, { SVM_EXIT_EFER_WRITE_TRAP, "write_efer_trap" }, { SVM_EXIT_CR0_WRITE_TRAP, "write_cr0_trap" }, { SVM_EXIT_CR4_WRITE_TRAP, "write_cr4_trap" }, { SVM_EXIT_CR8_WRITE_TRAP, "write_cr8_trap" }, { SVM_EXIT_INVPCID, "invpcid" }, { SVM_EXIT_NPF, "npf" }, { SVM_EXIT_AVIC_INCOMPLETE_IPI, "avic_incomplete_ipi" }, { SVM_EXIT_AVIC_UNACCELERATED_ACCESS, "avic_unaccelerated_access" }, { SVM_EXIT_VMGEXIT, "vmgexit" }, { SVM_VMGEXIT_MMIO_READ, "vmgexit_mmio_read" }, { SVM_VMGEXIT_MMIO_WRITE, "vmgexit_mmio_write" }, { SVM_VMGEXIT_NMI_COMPLETE, "vmgexit_nmi_complete" }, { SVM_VMGEXIT_AP_HLT_LOOP, "vmgexit_ap_hlt_loop" }, { SVM_VMGEXIT_AP_JUMP_TABLE, "vmgexit_ap_jump_table" }, { SVM_EXIT_ERR, "invalid_guest_state" }
+#define SVM_EXIT_REASONS { SVM_EXIT_READ_CR0, "read_cr0" }, { SVM_EXIT_READ_CR2, "read_cr2" }, { SVM_EXIT_READ_CR3, "read_cr3" }, { SVM_EXIT_READ_CR4, "read_cr4" }, { SVM_EXIT_READ_CR8, "read_cr8" }, { SVM_EXIT_WRITE_CR0, "write_cr0" }, { SVM_EXIT_WRITE_CR2, "write_cr2" }, { SVM_EXIT_WRITE_CR3, "write_cr3" }, { SVM_EXIT_WRITE_CR4, "write_cr4" }, { SVM_EXIT_WRITE_CR8, "write_cr8" }, { SVM_EXIT_READ_DR0, "read_dr0" }, { SVM_EXIT_READ_DR1, "read_dr1" }, { SVM_EXIT_READ_DR2, "read_dr2" }, { SVM_EXIT_READ_DR3, "read_dr3" }, { SVM_EXIT_READ_DR4, "read_dr4" }, { SVM_EXIT_READ_DR5, "read_dr5" }, { SVM_EXIT_READ_DR6, "read_dr6" }, { SVM_EXIT_READ_DR7, "read_dr7" }, { SVM_EXIT_WRITE_DR0, "write_dr0" }, { SVM_EXIT_WRITE_DR1, "write_dr1" }, { SVM_EXIT_WRITE_DR2, "write_dr2" }, { SVM_EXIT_WRITE_DR3, "write_dr3" }, { SVM_EXIT_WRITE_DR4, "write_dr4" }, { SVM_EXIT_WRITE_DR5, "write_dr5" }, { SVM_EXIT_WRITE_DR6, "write_dr6" }, { SVM_EXIT_WRITE_DR7, "write_dr7" }, { SVM_EXIT_EXCP_BASE + DE_VECTOR, "DE excp" }, { SVM_EXIT_EXCP_BASE + DB_VECTOR, "DB excp" }, { SVM_EXIT_EXCP_BASE + BP_VECTOR, "BP excp" }, { SVM_EXIT_EXCP_BASE + OF_VECTOR, "OF excp" }, { SVM_EXIT_EXCP_BASE + BR_VECTOR, "BR excp" }, { SVM_EXIT_EXCP_BASE + UD_VECTOR, "UD excp" }, { SVM_EXIT_EXCP_BASE + NM_VECTOR, "NM excp" }, { SVM_EXIT_EXCP_BASE + DF_VECTOR, "DF excp" }, { SVM_EXIT_EXCP_BASE + TS_VECTOR, "TS excp" }, { SVM_EXIT_EXCP_BASE + NP_VECTOR, "NP excp" }, { SVM_EXIT_EXCP_BASE + SS_VECTOR, "SS excp" }, { SVM_EXIT_EXCP_BASE + GP_VECTOR, "GP excp" }, { SVM_EXIT_EXCP_BASE + PF_VECTOR, "PF excp" }, { SVM_EXIT_EXCP_BASE + MF_VECTOR, "MF excp" }, { SVM_EXIT_EXCP_BASE + AC_VECTOR, "AC excp" }, { SVM_EXIT_EXCP_BASE + MC_VECTOR, "MC excp" }, { SVM_EXIT_EXCP_BASE + XM_VECTOR, "XF excp" }, { SVM_EXIT_INTR, "interrupt" }, { SVM_EXIT_NMI, "nmi" }, { SVM_EXIT_SMI, "smi" }, { SVM_EXIT_INIT, "init" }, { SVM_EXIT_VINTR, "vintr" }, { SVM_EXIT_CR0_SEL_WRITE, "cr0_sel_write" }, { SVM_EXIT_IDTR_READ, "read_idtr" }, { SVM_EXIT_GDTR_READ, "read_gdtr" }, { SVM_EXIT_LDTR_READ, "read_ldtr" }, { SVM_EXIT_TR_READ, "read_rt" }, { SVM_EXIT_IDTR_WRITE, "write_idtr" }, { SVM_EXIT_GDTR_WRITE, "write_gdtr" }, { SVM_EXIT_LDTR_WRITE, "write_ldtr" }, { SVM_EXIT_TR_WRITE, "write_rt" }, { SVM_EXIT_RDTSC, "rdtsc" }, { SVM_EXIT_RDPMC, "rdpmc" }, { SVM_EXIT_PUSHF, "pushf" }, { SVM_EXIT_POPF, "popf" }, { SVM_EXIT_CPUID, "cpuid" }, { SVM_EXIT_RSM, "rsm" }, { SVM_EXIT_IRET, "iret" }, { SVM_EXIT_SWINT, "swint" }, { SVM_EXIT_INVD, "invd" }, { SVM_EXIT_PAUSE, "pause" }, { SVM_EXIT_HLT, "hlt" }, { SVM_EXIT_INVLPG, "invlpg" }, { SVM_EXIT_INVLPGA, "invlpga" }, { SVM_EXIT_IOIO, "io" }, { SVM_EXIT_MSR, "msr" }, { SVM_EXIT_TASK_SWITCH, "task_switch" }, { SVM_EXIT_FERR_FREEZE, "ferr_freeze" }, { SVM_EXIT_SHUTDOWN, "shutdown" }, { SVM_EXIT_VMRUN, "vmrun" }, { SVM_EXIT_VMMCALL, "hypercall" }, { SVM_EXIT_VMLOAD, "vmload" }, { SVM_EXIT_VMSAVE, "vmsave" }, { SVM_EXIT_STGI, "stgi" }, { SVM_EXIT_CLGI, "clgi" }, { SVM_EXIT_SKINIT, "skinit" }, { SVM_EXIT_RDTSCP, "rdtscp" }, { SVM_EXIT_ICEBP, "icebp" }, { SVM_EXIT_WBINVD, "wbinvd" }, { SVM_EXIT_MONITOR, "monitor" }, { SVM_EXIT_MWAIT, "mwait" }, { SVM_EXIT_XSETBV, "xsetbv" }, { SVM_EXIT_EFER_WRITE_TRAP, "write_efer_trap" }, { SVM_EXIT_CR0_WRITE_TRAP, "write_cr0_trap" }, { SVM_EXIT_CR4_WRITE_TRAP, "write_cr4_trap" }, { SVM_EXIT_CR8_WRITE_TRAP, "write_cr8_trap" }, { SVM_EXIT_INVPCID, "invpcid" }, { SVM_EXIT_NPF, "npf" }, { SVM_EXIT_AVIC_INCOMPLETE_IPI, "avic_incomplete_ipi" }, { SVM_EXIT_AVIC_UNACCELERATED_ACCESS, "avic_unaccelerated_access" }, { SVM_EXIT_VMGEXIT, "vmgexit" }, { SVM_VMGEXIT_MMIO_READ, "vmgexit_mmio_read" }, { SVM_VMGEXIT_MMIO_WRITE, "vmgexit_mmio_write" }, { SVM_VMGEXIT_NMI_COMPLETE, "vmgexit_nmi_complete" }, { SVM_VMGEXIT_AP_HLT_LOOP, "vmgexit_ap_hlt_loop" }, { SVM_VMGEXIT_AP_JUMP_TABLE, "vmgexit_ap_jump_table" }, { SVM_VMGEXIT_PSC, "vmgexit_page_state_change" }, { SVM_VMGEXIT_GUEST_REQUEST, "vmgexit_guest_request" }, { SVM_VMGEXIT_EXT_GUEST_REQUEST, "vmgexit_ext_guest_request" }, { SVM_VMGEXIT_AP_CREATION, "vmgexit_ap_creation" }, { SVM_VMGEXIT_HV_FEATURES, "vmgexit_hypervisor_feature" }, { SVM_EXIT_ERR, "invalid_guest_state" }
 #endif
diff --git a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/asm-x86/asm/vmx.h b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/asm-x86/asm/vmx.h
index 6c07d4c..fdea539 100644
--- a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/asm-x86/asm/vmx.h
+++ b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/asm-x86/asm/vmx.h
@@ -81,7 +81,8 @@
 #define EXIT_REASON_UMWAIT 67
 #define EXIT_REASON_TPAUSE 68
 #define EXIT_REASON_BUS_LOCK 74
-#define VMX_EXIT_REASONS { EXIT_REASON_EXCEPTION_NMI, "EXCEPTION_NMI" }, { EXIT_REASON_EXTERNAL_INTERRUPT, "EXTERNAL_INTERRUPT" }, { EXIT_REASON_TRIPLE_FAULT, "TRIPLE_FAULT" }, { EXIT_REASON_INIT_SIGNAL, "INIT_SIGNAL" }, { EXIT_REASON_SIPI_SIGNAL, "SIPI_SIGNAL" }, { EXIT_REASON_INTERRUPT_WINDOW, "INTERRUPT_WINDOW" }, { EXIT_REASON_NMI_WINDOW, "NMI_WINDOW" }, { EXIT_REASON_TASK_SWITCH, "TASK_SWITCH" }, { EXIT_REASON_CPUID, "CPUID" }, { EXIT_REASON_HLT, "HLT" }, { EXIT_REASON_INVD, "INVD" }, { EXIT_REASON_INVLPG, "INVLPG" }, { EXIT_REASON_RDPMC, "RDPMC" }, { EXIT_REASON_RDTSC, "RDTSC" }, { EXIT_REASON_VMCALL, "VMCALL" }, { EXIT_REASON_VMCLEAR, "VMCLEAR" }, { EXIT_REASON_VMLAUNCH, "VMLAUNCH" }, { EXIT_REASON_VMPTRLD, "VMPTRLD" }, { EXIT_REASON_VMPTRST, "VMPTRST" }, { EXIT_REASON_VMREAD, "VMREAD" }, { EXIT_REASON_VMRESUME, "VMRESUME" }, { EXIT_REASON_VMWRITE, "VMWRITE" }, { EXIT_REASON_VMOFF, "VMOFF" }, { EXIT_REASON_VMON, "VMON" }, { EXIT_REASON_CR_ACCESS, "CR_ACCESS" }, { EXIT_REASON_DR_ACCESS, "DR_ACCESS" }, { EXIT_REASON_IO_INSTRUCTION, "IO_INSTRUCTION" }, { EXIT_REASON_MSR_READ, "MSR_READ" }, { EXIT_REASON_MSR_WRITE, "MSR_WRITE" }, { EXIT_REASON_INVALID_STATE, "INVALID_STATE" }, { EXIT_REASON_MSR_LOAD_FAIL, "MSR_LOAD_FAIL" }, { EXIT_REASON_MWAIT_INSTRUCTION, "MWAIT_INSTRUCTION" }, { EXIT_REASON_MONITOR_TRAP_FLAG, "MONITOR_TRAP_FLAG" }, { EXIT_REASON_MONITOR_INSTRUCTION, "MONITOR_INSTRUCTION" }, { EXIT_REASON_PAUSE_INSTRUCTION, "PAUSE_INSTRUCTION" }, { EXIT_REASON_MCE_DURING_VMENTRY, "MCE_DURING_VMENTRY" }, { EXIT_REASON_TPR_BELOW_THRESHOLD, "TPR_BELOW_THRESHOLD" }, { EXIT_REASON_APIC_ACCESS, "APIC_ACCESS" }, { EXIT_REASON_EOI_INDUCED, "EOI_INDUCED" }, { EXIT_REASON_GDTR_IDTR, "GDTR_IDTR" }, { EXIT_REASON_LDTR_TR, "LDTR_TR" }, { EXIT_REASON_EPT_VIOLATION, "EPT_VIOLATION" }, { EXIT_REASON_EPT_MISCONFIG, "EPT_MISCONFIG" }, { EXIT_REASON_INVEPT, "INVEPT" }, { EXIT_REASON_RDTSCP, "RDTSCP" }, { EXIT_REASON_PREEMPTION_TIMER, "PREEMPTION_TIMER" }, { EXIT_REASON_INVVPID, "INVVPID" }, { EXIT_REASON_WBINVD, "WBINVD" }, { EXIT_REASON_XSETBV, "XSETBV" }, { EXIT_REASON_APIC_WRITE, "APIC_WRITE" }, { EXIT_REASON_RDRAND, "RDRAND" }, { EXIT_REASON_INVPCID, "INVPCID" }, { EXIT_REASON_VMFUNC, "VMFUNC" }, { EXIT_REASON_ENCLS, "ENCLS" }, { EXIT_REASON_RDSEED, "RDSEED" }, { EXIT_REASON_PML_FULL, "PML_FULL" }, { EXIT_REASON_XSAVES, "XSAVES" }, { EXIT_REASON_XRSTORS, "XRSTORS" }, { EXIT_REASON_UMWAIT, "UMWAIT" }, { EXIT_REASON_TPAUSE, "TPAUSE" }, { EXIT_REASON_BUS_LOCK, "BUS_LOCK" }
+#define EXIT_REASON_NOTIFY 75
+#define VMX_EXIT_REASONS { EXIT_REASON_EXCEPTION_NMI, "EXCEPTION_NMI" }, { EXIT_REASON_EXTERNAL_INTERRUPT, "EXTERNAL_INTERRUPT" }, { EXIT_REASON_TRIPLE_FAULT, "TRIPLE_FAULT" }, { EXIT_REASON_INIT_SIGNAL, "INIT_SIGNAL" }, { EXIT_REASON_SIPI_SIGNAL, "SIPI_SIGNAL" }, { EXIT_REASON_INTERRUPT_WINDOW, "INTERRUPT_WINDOW" }, { EXIT_REASON_NMI_WINDOW, "NMI_WINDOW" }, { EXIT_REASON_TASK_SWITCH, "TASK_SWITCH" }, { EXIT_REASON_CPUID, "CPUID" }, { EXIT_REASON_HLT, "HLT" }, { EXIT_REASON_INVD, "INVD" }, { EXIT_REASON_INVLPG, "INVLPG" }, { EXIT_REASON_RDPMC, "RDPMC" }, { EXIT_REASON_RDTSC, "RDTSC" }, { EXIT_REASON_VMCALL, "VMCALL" }, { EXIT_REASON_VMCLEAR, "VMCLEAR" }, { EXIT_REASON_VMLAUNCH, "VMLAUNCH" }, { EXIT_REASON_VMPTRLD, "VMPTRLD" }, { EXIT_REASON_VMPTRST, "VMPTRST" }, { EXIT_REASON_VMREAD, "VMREAD" }, { EXIT_REASON_VMRESUME, "VMRESUME" }, { EXIT_REASON_VMWRITE, "VMWRITE" }, { EXIT_REASON_VMOFF, "VMOFF" }, { EXIT_REASON_VMON, "VMON" }, { EXIT_REASON_CR_ACCESS, "CR_ACCESS" }, { EXIT_REASON_DR_ACCESS, "DR_ACCESS" }, { EXIT_REASON_IO_INSTRUCTION, "IO_INSTRUCTION" }, { EXIT_REASON_MSR_READ, "MSR_READ" }, { EXIT_REASON_MSR_WRITE, "MSR_WRITE" }, { EXIT_REASON_INVALID_STATE, "INVALID_STATE" }, { EXIT_REASON_MSR_LOAD_FAIL, "MSR_LOAD_FAIL" }, { EXIT_REASON_MWAIT_INSTRUCTION, "MWAIT_INSTRUCTION" }, { EXIT_REASON_MONITOR_TRAP_FLAG, "MONITOR_TRAP_FLAG" }, { EXIT_REASON_MONITOR_INSTRUCTION, "MONITOR_INSTRUCTION" }, { EXIT_REASON_PAUSE_INSTRUCTION, "PAUSE_INSTRUCTION" }, { EXIT_REASON_MCE_DURING_VMENTRY, "MCE_DURING_VMENTRY" }, { EXIT_REASON_TPR_BELOW_THRESHOLD, "TPR_BELOW_THRESHOLD" }, { EXIT_REASON_APIC_ACCESS, "APIC_ACCESS" }, { EXIT_REASON_EOI_INDUCED, "EOI_INDUCED" }, { EXIT_REASON_GDTR_IDTR, "GDTR_IDTR" }, { EXIT_REASON_LDTR_TR, "LDTR_TR" }, { EXIT_REASON_EPT_VIOLATION, "EPT_VIOLATION" }, { EXIT_REASON_EPT_MISCONFIG, "EPT_MISCONFIG" }, { EXIT_REASON_INVEPT, "INVEPT" }, { EXIT_REASON_RDTSCP, "RDTSCP" }, { EXIT_REASON_PREEMPTION_TIMER, "PREEMPTION_TIMER" }, { EXIT_REASON_INVVPID, "INVVPID" }, { EXIT_REASON_WBINVD, "WBINVD" }, { EXIT_REASON_XSETBV, "XSETBV" }, { EXIT_REASON_APIC_WRITE, "APIC_WRITE" }, { EXIT_REASON_RDRAND, "RDRAND" }, { EXIT_REASON_INVPCID, "INVPCID" }, { EXIT_REASON_VMFUNC, "VMFUNC" }, { EXIT_REASON_ENCLS, "ENCLS" }, { EXIT_REASON_RDSEED, "RDSEED" }, { EXIT_REASON_PML_FULL, "PML_FULL" }, { EXIT_REASON_XSAVES, "XSAVES" }, { EXIT_REASON_XRSTORS, "XRSTORS" }, { EXIT_REASON_UMWAIT, "UMWAIT" }, { EXIT_REASON_TPAUSE, "TPAUSE" }, { EXIT_REASON_BUS_LOCK, "BUS_LOCK" }, { EXIT_REASON_NOTIFY, "NOTIFY" }
 #define VMX_EXIT_REASON_FLAGS { VMX_EXIT_REASONS_FAILED_VMENTRY, "FAILED_VMENTRY" }
 #define VMX_ABORT_SAVE_GUEST_MSR_FAIL 1
 #define VMX_ABORT_LOAD_HOST_PDPTE_FAIL 2
diff --git a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/drm/amdgpu_drm.h b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/drm/amdgpu_drm.h
index 3764d51..658eb31 100644
--- a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/drm/amdgpu_drm.h
+++ b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/drm/amdgpu_drm.h
@@ -72,6 +72,7 @@
 #define AMDGPU_GEM_CREATE_VRAM_WIPE_ON_RELEASE (1 << 9)
 #define AMDGPU_GEM_CREATE_ENCRYPTED (1 << 10)
 #define AMDGPU_GEM_CREATE_PREEMPTIBLE (1 << 11)
+#define AMDGPU_GEM_CREATE_DISCARDABLE (1 << 12)
 struct drm_amdgpu_gem_create_in {
   __u64 bo_size;
   __u64 alignment;
@@ -112,6 +113,8 @@
 #define AMDGPU_CTX_OP_FREE_CTX 2
 #define AMDGPU_CTX_OP_QUERY_STATE 3
 #define AMDGPU_CTX_OP_QUERY_STATE2 4
+#define AMDGPU_CTX_OP_GET_STABLE_PSTATE 5
+#define AMDGPU_CTX_OP_SET_STABLE_PSTATE 6
 #define AMDGPU_CTX_NO_RESET 0
 #define AMDGPU_CTX_GUILTY_RESET 1
 #define AMDGPU_CTX_INNOCENT_RESET 2
@@ -127,6 +130,12 @@
 #define AMDGPU_CTX_PRIORITY_NORMAL 0
 #define AMDGPU_CTX_PRIORITY_HIGH 512
 #define AMDGPU_CTX_PRIORITY_VERY_HIGH 1023
+#define AMDGPU_CTX_STABLE_PSTATE_FLAGS_MASK 0xf
+#define AMDGPU_CTX_STABLE_PSTATE_NONE 0
+#define AMDGPU_CTX_STABLE_PSTATE_STANDARD 1
+#define AMDGPU_CTX_STABLE_PSTATE_MIN_SCLK 2
+#define AMDGPU_CTX_STABLE_PSTATE_MIN_MCLK 3
+#define AMDGPU_CTX_STABLE_PSTATE_PEAK 4
 struct drm_amdgpu_ctx_in {
   __u32 op;
   __u32 flags;
@@ -143,6 +152,10 @@
     __u32 hangs;
     __u32 reset_status;
   } state;
+  struct {
+    __u32 flags;
+    __u32 _pad;
+  } pstate;
 };
 union drm_amdgpu_ctx {
   struct drm_amdgpu_ctx_in in;
@@ -307,6 +320,7 @@
 #define AMDGPU_VM_MTYPE_CC (3 << 5)
 #define AMDGPU_VM_MTYPE_UC (4 << 5)
 #define AMDGPU_VM_MTYPE_RW (5 << 5)
+#define AMDGPU_VM_PAGE_NOALLOC (1 << 9)
 struct drm_amdgpu_gem_va {
   __u32 handle;
   __u32 _pad;
@@ -438,6 +452,12 @@
 #define AMDGPU_INFO_FW_TA 0x13
 #define AMDGPU_INFO_FW_DMCUB 0x14
 #define AMDGPU_INFO_FW_TOC 0x15
+#define AMDGPU_INFO_FW_CAP 0x16
+#define AMDGPU_INFO_FW_GFX_RLCP 0x17
+#define AMDGPU_INFO_FW_GFX_RLCV 0x18
+#define AMDGPU_INFO_FW_MES_KIQ 0x19
+#define AMDGPU_INFO_FW_MES 0x1a
+#define AMDGPU_INFO_FW_IMU 0x1b
 #define AMDGPU_INFO_NUM_BYTES_MOVED 0x0f
 #define AMDGPU_INFO_VRAM_USAGE 0x10
 #define AMDGPU_INFO_GTT_USAGE 0x11
@@ -575,6 +595,8 @@
 #define AMDGPU_VRAM_TYPE_DDR4 8
 #define AMDGPU_VRAM_TYPE_GDDR6 9
 #define AMDGPU_VRAM_TYPE_DDR5 10
+#define AMDGPU_VRAM_TYPE_LPDDR4 11
+#define AMDGPU_VRAM_TYPE_LPDDR5 12
 struct drm_amdgpu_info_device {
   __u32 device_id;
   __u32 chip_rev;
@@ -633,7 +655,7 @@
   __u32 ib_start_alignment;
   __u32 ib_size_alignment;
   __u32 available_rings;
-  __u32 _pad;
+  __u32 ip_discovery_version;
 };
 struct drm_amdgpu_info_num_handles {
   __u32 uvd_max_handles;
@@ -681,7 +703,11 @@
 #define AMDGPU_FAMILY_RV 142
 #define AMDGPU_FAMILY_NV 143
 #define AMDGPU_FAMILY_VGH 144
+#define AMDGPU_FAMILY_GC_11_0_0 145
 #define AMDGPU_FAMILY_YC 146
+#define AMDGPU_FAMILY_GC_11_0_1 148
+#define AMDGPU_FAMILY_GC_10_3_6 149
+#define AMDGPU_FAMILY_GC_10_3_7 151
 #ifdef __cplusplus
 }
 #endif
diff --git a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/drm/drm_fourcc.h b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/drm/drm_fourcc.h
index e845c8c..8188b8f 100644
--- a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/drm/drm_fourcc.h
+++ b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/drm/drm_fourcc.h
@@ -25,7 +25,17 @@
 #define fourcc_code(a,b,c,d) ((__u32) (a) | ((__u32) (b) << 8) | ((__u32) (c) << 16) | ((__u32) (d) << 24))
 #define DRM_FORMAT_BIG_ENDIAN (1U << 31)
 #define DRM_FORMAT_INVALID 0
+#define DRM_FORMAT_C1 fourcc_code('C', '1', ' ', ' ')
+#define DRM_FORMAT_C2 fourcc_code('C', '2', ' ', ' ')
+#define DRM_FORMAT_C4 fourcc_code('C', '4', ' ', ' ')
 #define DRM_FORMAT_C8 fourcc_code('C', '8', ' ', ' ')
+#define DRM_FORMAT_D1 fourcc_code('D', '1', ' ', ' ')
+#define DRM_FORMAT_D2 fourcc_code('D', '2', ' ', ' ')
+#define DRM_FORMAT_D4 fourcc_code('D', '4', ' ', ' ')
+#define DRM_FORMAT_D8 fourcc_code('D', '8', ' ', ' ')
+#define DRM_FORMAT_R1 fourcc_code('R', '1', ' ', ' ')
+#define DRM_FORMAT_R2 fourcc_code('R', '2', ' ', ' ')
+#define DRM_FORMAT_R4 fourcc_code('R', '4', ' ', ' ')
 #define DRM_FORMAT_R8 fourcc_code('R', '8', ' ', ' ')
 #define DRM_FORMAT_R10 fourcc_code('R', '1', '0', ' ')
 #define DRM_FORMAT_R12 fourcc_code('R', '1', '2', ' ')
@@ -86,7 +96,9 @@
 #define DRM_FORMAT_UYVY fourcc_code('U', 'Y', 'V', 'Y')
 #define DRM_FORMAT_VYUY fourcc_code('V', 'Y', 'U', 'Y')
 #define DRM_FORMAT_AYUV fourcc_code('A', 'Y', 'U', 'V')
+#define DRM_FORMAT_AVUY8888 fourcc_code('A', 'V', 'U', 'Y')
 #define DRM_FORMAT_XYUV8888 fourcc_code('X', 'Y', 'U', 'V')
+#define DRM_FORMAT_XVUY8888 fourcc_code('X', 'V', 'U', 'Y')
 #define DRM_FORMAT_VUY888 fourcc_code('V', 'U', '2', '4')
 #define DRM_FORMAT_VUY101010 fourcc_code('V', 'U', '3', '0')
 #define DRM_FORMAT_Y210 fourcc_code('Y', '2', '1', '0')
@@ -163,9 +175,15 @@
 #define I915_FORMAT_MOD_Y_TILED_GEN12_RC_CCS fourcc_mod_code(INTEL, 6)
 #define I915_FORMAT_MOD_Y_TILED_GEN12_MC_CCS fourcc_mod_code(INTEL, 7)
 #define I915_FORMAT_MOD_Y_TILED_GEN12_RC_CCS_CC fourcc_mod_code(INTEL, 8)
+#define I915_FORMAT_MOD_4_TILED fourcc_mod_code(INTEL, 9)
+#define I915_FORMAT_MOD_4_TILED_DG2_RC_CCS fourcc_mod_code(INTEL, 10)
+#define I915_FORMAT_MOD_4_TILED_DG2_MC_CCS fourcc_mod_code(INTEL, 11)
+#define I915_FORMAT_MOD_4_TILED_DG2_RC_CCS_CC fourcc_mod_code(INTEL, 12)
 #define DRM_FORMAT_MOD_SAMSUNG_64_32_TILE fourcc_mod_code(SAMSUNG, 1)
 #define DRM_FORMAT_MOD_SAMSUNG_16_16_TILE fourcc_mod_code(SAMSUNG, 2)
 #define DRM_FORMAT_MOD_QCOM_COMPRESSED fourcc_mod_code(QCOM, 1)
+#define DRM_FORMAT_MOD_QCOM_TILED3 fourcc_mod_code(QCOM, 3)
+#define DRM_FORMAT_MOD_QCOM_TILED2 fourcc_mod_code(QCOM, 2)
 #define DRM_FORMAT_MOD_VIVANTE_TILED fourcc_mod_code(VIVANTE, 1)
 #define DRM_FORMAT_MOD_VIVANTE_SUPER_TILED fourcc_mod_code(VIVANTE, 2)
 #define DRM_FORMAT_MOD_VIVANTE_SPLIT_TILED fourcc_mod_code(VIVANTE, 3)
@@ -235,11 +253,13 @@
 #define AMD_FMT_MOD_TILE_VER_GFX9 1
 #define AMD_FMT_MOD_TILE_VER_GFX10 2
 #define AMD_FMT_MOD_TILE_VER_GFX10_RBPLUS 3
+#define AMD_FMT_MOD_TILE_VER_GFX11 4
 #define AMD_FMT_MOD_TILE_GFX9_64K_S 9
 #define AMD_FMT_MOD_TILE_GFX9_64K_D 10
 #define AMD_FMT_MOD_TILE_GFX9_64K_S_X 25
 #define AMD_FMT_MOD_TILE_GFX9_64K_D_X 26
 #define AMD_FMT_MOD_TILE_GFX9_64K_R_X 27
+#define AMD_FMT_MOD_TILE_GFX11_256K_R_X 31
 #define AMD_FMT_MOD_DCC_BLOCK_64B 0
 #define AMD_FMT_MOD_DCC_BLOCK_128B 1
 #define AMD_FMT_MOD_DCC_BLOCK_256B 2
@@ -271,9 +291,9 @@
 #define AMD_FMT_MOD_RB_MASK 0x7
 #define AMD_FMT_MOD_PIPE_SHIFT 33
 #define AMD_FMT_MOD_PIPE_MASK 0x7
-#define AMD_FMT_MOD_SET(field,value) ((uint64_t) (value) << AMD_FMT_MOD_ ##field ##_SHIFT)
+#define AMD_FMT_MOD_SET(field,value) ((__u64) (value) << AMD_FMT_MOD_ ##field ##_SHIFT)
 #define AMD_FMT_MOD_GET(field,value) (((value) >> AMD_FMT_MOD_ ##field ##_SHIFT) & AMD_FMT_MOD_ ##field ##_MASK)
-#define AMD_FMT_MOD_CLEAR(field) (~((uint64_t) AMD_FMT_MOD_ ##field ##_MASK << AMD_FMT_MOD_ ##field ##_SHIFT))
+#define AMD_FMT_MOD_CLEAR(field) (~((__u64) AMD_FMT_MOD_ ##field ##_MASK << AMD_FMT_MOD_ ##field ##_SHIFT))
 #ifdef __cplusplus
 }
 #endif
diff --git a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/drm/i915_drm.h b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/drm/i915_drm.h
index 52bfad2..198b969 100644
--- a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/drm/i915_drm.h
+++ b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/drm/i915_drm.h
@@ -41,13 +41,14 @@
   I915_ENGINE_CLASS_COPY = 1,
   I915_ENGINE_CLASS_VIDEO = 2,
   I915_ENGINE_CLASS_VIDEO_ENHANCE = 3,
+  I915_ENGINE_CLASS_COMPUTE = 4,
   I915_ENGINE_CLASS_INVALID = - 1
 };
 struct i915_engine_class_instance {
   __u16 engine_class;
-  __u16 engine_instance;
 #define I915_ENGINE_CLASS_INVALID_NONE - 1
 #define I915_ENGINE_CLASS_INVALID_VIRTUAL - 2
+  __u16 engine_instance;
 };
 enum drm_i915_pmu_engine_sample {
   I915_SAMPLE_BUSY = 0,
@@ -367,10 +368,11 @@
 #define I915_PARAM_PERF_REVISION 54
 #define I915_PARAM_HAS_EXEC_TIMELINE_FENCES 55
 #define I915_PARAM_HAS_USERPTR_PROBE 56
-typedef struct drm_i915_getparam {
+struct drm_i915_getparam {
   __s32 param;
   int __user * value;
-} drm_i915_getparam_t;
+};
+typedef struct drm_i915_getparam drm_i915_getparam_t;
 #define I915_SETPARAM_USE_MI_BATCHBUFFER_START 1
 #define I915_SETPARAM_TEX_LRU_LOG_GRANULARITY 2
 #define I915_SETPARAM_ALLOW_BATCHBUFFER 3
@@ -525,13 +527,13 @@
 };
 struct drm_i915_gem_exec_fence {
   __u32 handle;
+  __u32 flags;
 #define I915_EXEC_FENCE_WAIT (1 << 0)
 #define I915_EXEC_FENCE_SIGNAL (1 << 1)
 #define __I915_EXEC_FENCE_UNKNOWN_FLAGS (- (I915_EXEC_FENCE_SIGNAL << 1))
-  __u32 flags;
 };
-#define DRM_I915_GEM_EXECBUFFER_EXT_TIMELINE_FENCES 0
 struct drm_i915_gem_execbuffer_ext_timeline_fences {
+#define DRM_I915_GEM_EXECBUFFER_EXT_TIMELINE_FENCES 0
   struct i915_user_extension base;
   __u64 fence_count;
   __u64 handles_ptr;
@@ -546,6 +548,7 @@
   __u32 DR4;
   __u32 num_cliprects;
   __u64 cliprects_ptr;
+  __u64 flags;
 #define I915_EXEC_RING_MASK (0x3f)
 #define I915_EXEC_DEFAULT (0 << 0)
 #define I915_EXEC_RENDER (1 << 0)
@@ -556,10 +559,6 @@
 #define I915_EXEC_CONSTANTS_REL_GENERAL (0 << 6)
 #define I915_EXEC_CONSTANTS_ABSOLUTE (1 << 6)
 #define I915_EXEC_CONSTANTS_REL_SURFACE (2 << 6)
-  __u64 flags;
-  __u64 rsvd1;
-  __u64 rsvd2;
-};
 #define I915_EXEC_GEN7_SOL_RESET (1 << 8)
 #define I915_EXEC_SECURE (1 << 9)
 #define I915_EXEC_IS_PINNED (1 << 10)
@@ -578,6 +577,9 @@
 #define I915_EXEC_FENCE_SUBMIT (1 << 20)
 #define I915_EXEC_USE_EXTENSIONS (1 << 21)
 #define __I915_EXEC_UNKNOWN_FLAGS (- (I915_EXEC_USE_EXTENSIONS << 1))
+  __u64 rsvd1;
+  __u64 rsvd2;
+};
 #define I915_EXEC_CONTEXT_ID_MASK (0xffffffff)
 #define i915_execbuffer2_set_context_id(eb2,context) (eb2).rsvd1 = context & I915_EXEC_CONTEXT_ID_MASK
 #define i915_execbuffer2_get_context_id(eb2) ((eb2).rsvd1 & I915_EXEC_CONTEXT_ID_MASK)
@@ -721,6 +723,8 @@
 #define I915_CONTEXT_CREATE_FLAGS_SINGLE_TIMELINE (1u << 1)
 #define I915_CONTEXT_CREATE_FLAGS_UNKNOWN (- (I915_CONTEXT_CREATE_FLAGS_SINGLE_TIMELINE << 1))
   __u64 extensions;
+#define I915_CONTEXT_CREATE_EXT_SETPARAM 0
+#define I915_CONTEXT_CREATE_EXT_CLONE 1
 };
 struct drm_i915_gem_context_param {
   __u32 ctx_id;
@@ -760,7 +764,7 @@
   __u16 num_siblings;
   __u32 flags;
   __u64 mbz64;
-  struct i915_engine_class_instance engines[0];
+  struct i915_engine_class_instance engines[];
 } __attribute__((packed));
 #define I915_DEFINE_CONTEXT_ENGINES_LOAD_BALANCE(name__,N__) struct { struct i915_user_extension base; __u16 engine_index; __u16 num_siblings; __u32 flags; __u64 mbz64; struct i915_engine_class_instance engines[N__]; \
 } __attribute__((packed)) name__
@@ -771,7 +775,7 @@
   __u16 num_bonds;
   __u64 flags;
   __u64 mbz64[4];
-  struct i915_engine_class_instance engines[0];
+  struct i915_engine_class_instance engines[];
 } __attribute__((packed));
 #define I915_DEFINE_CONTEXT_ENGINES_BOND(name__,N__) struct { struct i915_user_extension base; struct i915_engine_class_instance master; __u16 virtual_index; __u16 num_bonds; __u64 flags; __u64 mbz64[4]; struct i915_engine_class_instance engines[N__]; \
 } __attribute__((packed)) name__
@@ -783,8 +787,8 @@
   __u16 mbz16;
   __u64 flags;
   __u64 mbz64[3];
-  struct i915_engine_class_instance engines[0];
-} __packed;
+  struct i915_engine_class_instance engines[];
+} __attribute__((__packed__));
 #define I915_DEFINE_CONTEXT_ENGINES_PARALLEL_SUBMIT(name__,N__) struct { struct i915_user_extension base; __u16 engine_index; __u16 width; __u16 num_siblings; __u16 mbz16; __u64 flags; __u64 mbz64[3]; struct i915_engine_class_instance engines[N__]; \
 } __attribute__((packed)) name__
 struct i915_context_param_engines {
@@ -797,11 +801,9 @@
 #define I915_DEFINE_CONTEXT_PARAM_ENGINES(name__,N__) struct { __u64 extensions; struct i915_engine_class_instance engines[N__]; \
 } __attribute__((packed)) name__
 struct drm_i915_gem_context_create_ext_setparam {
-#define I915_CONTEXT_CREATE_EXT_SETPARAM 0
   struct i915_user_extension base;
   struct drm_i915_gem_context_param param;
 };
-#define I915_CONTEXT_CREATE_EXT_CLONE 1
 struct drm_i915_gem_context_destroy {
   __u32 ctx_id;
   __u32 pad;
@@ -894,6 +896,8 @@
 #define DRM_I915_QUERY_ENGINE_INFO 2
 #define DRM_I915_QUERY_PERF_CONFIG 3
 #define DRM_I915_QUERY_MEMORY_REGIONS 4
+#define DRM_I915_QUERY_HWCONFIG_BLOB 5
+#define DRM_I915_QUERY_GEOMETRY_SUBSLICES 6
   __s32 length;
   __u32 flags;
 #define DRM_I915_QUERY_PERF_CONFIG_LIST 1
@@ -956,7 +960,13 @@
   __u32 rsvd0;
   __u64 probed_size;
   __u64 unallocated_size;
-  __u64 rsvd1[8];
+  union {
+    __u64 rsvd1[8];
+    struct {
+      __u64 probed_cpu_visible_size;
+      __u64 unallocated_cpu_visible_size;
+    };
+  };
 };
 struct drm_i915_query_memory_regions {
   __u32 num_regions;
@@ -966,6 +976,7 @@
 struct drm_i915_gem_create_ext {
   __u64 size;
   __u32 handle;
+#define I915_GEM_CREATE_EXT_FLAG_NEEDS_CPU_ACCESS (1 << 0)
   __u32 flags;
 #define I915_GEM_CREATE_EXT_MEMORY_REGIONS 0
 #define I915_GEM_CREATE_EXT_PROTECTED_CONTENT 1
diff --git a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/drm/msm_drm.h b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/drm/msm_drm.h
index b4ba1d0..c2edefd 100644
--- a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/drm/msm_drm.h
+++ b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/drm/msm_drm.h
@@ -43,11 +43,18 @@
 #define MSM_PARAM_PP_PGTABLE 0x08
 #define MSM_PARAM_FAULTS 0x09
 #define MSM_PARAM_SUSPENDS 0x0a
+#define MSM_PARAM_SYSPROF 0x0b
+#define MSM_PARAM_COMM 0x0c
+#define MSM_PARAM_CMDLINE 0x0d
+#define MSM_PARAM_VA_START 0x0e
+#define MSM_PARAM_VA_SIZE 0x0f
 #define MSM_PARAM_NR_RINGS MSM_PARAM_PRIORITIES
 struct drm_msm_param {
   __u32 pipe;
   __u32 param;
   __u64 value;
+  __u32 len;
+  __u32 pad;
 };
 #define MSM_BO_SCANOUT 0x00000001
 #define MSM_BO_GPU_READONLY 0x00000002
@@ -66,6 +73,7 @@
 #define MSM_INFO_GET_IOVA 0x01
 #define MSM_INFO_SET_NAME 0x02
 #define MSM_INFO_GET_NAME 0x03
+#define MSM_INFO_SET_IOVA 0x04
 struct drm_msm_gem_info {
   __u32 handle;
   __u32 info;
@@ -119,7 +127,8 @@
 #define MSM_SUBMIT_SUDO 0x10000000
 #define MSM_SUBMIT_SYNCOBJ_IN 0x08000000
 #define MSM_SUBMIT_SYNCOBJ_OUT 0x04000000
-#define MSM_SUBMIT_FLAGS (MSM_SUBMIT_NO_IMPLICIT | MSM_SUBMIT_FENCE_FD_IN | MSM_SUBMIT_FENCE_FD_OUT | MSM_SUBMIT_SUDO | MSM_SUBMIT_SYNCOBJ_IN | MSM_SUBMIT_SYNCOBJ_OUT | 0)
+#define MSM_SUBMIT_FENCE_SN_IN 0x02000000
+#define MSM_SUBMIT_FLAGS (MSM_SUBMIT_NO_IMPLICIT | MSM_SUBMIT_FENCE_FD_IN | MSM_SUBMIT_FENCE_FD_OUT | MSM_SUBMIT_SUDO | MSM_SUBMIT_SYNCOBJ_IN | MSM_SUBMIT_SYNCOBJ_OUT | MSM_SUBMIT_FENCE_SN_IN | 0)
 #define MSM_SUBMIT_SYNCOBJ_RESET 0x00000001
 #define MSM_SUBMIT_SYNCOBJ_FLAGS (MSM_SUBMIT_SYNCOBJ_RESET | 0)
 struct drm_msm_gem_submit_syncobj {
@@ -172,6 +181,7 @@
   __u32 pad;
 };
 #define DRM_MSM_GET_PARAM 0x00
+#define DRM_MSM_SET_PARAM 0x01
 #define DRM_MSM_GEM_NEW 0x02
 #define DRM_MSM_GEM_INFO 0x03
 #define DRM_MSM_GEM_CPU_PREP 0x04
@@ -183,6 +193,7 @@
 #define DRM_MSM_SUBMITQUEUE_CLOSE 0x0B
 #define DRM_MSM_SUBMITQUEUE_QUERY 0x0C
 #define DRM_IOCTL_MSM_GET_PARAM DRM_IOWR(DRM_COMMAND_BASE + DRM_MSM_GET_PARAM, struct drm_msm_param)
+#define DRM_IOCTL_MSM_SET_PARAM DRM_IOW(DRM_COMMAND_BASE + DRM_MSM_SET_PARAM, struct drm_msm_param)
 #define DRM_IOCTL_MSM_GEM_NEW DRM_IOWR(DRM_COMMAND_BASE + DRM_MSM_GEM_NEW, struct drm_msm_gem_new)
 #define DRM_IOCTL_MSM_GEM_INFO DRM_IOWR(DRM_COMMAND_BASE + DRM_MSM_GEM_INFO, struct drm_msm_gem_info)
 #define DRM_IOCTL_MSM_GEM_CPU_PREP DRM_IOW(DRM_COMMAND_BASE + DRM_MSM_GEM_CPU_PREP, struct drm_msm_gem_cpu_prep)
diff --git a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/drm/panfrost_drm.h b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/drm/panfrost_drm.h
index 1f4473d..04a85df 100644
--- a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/drm/panfrost_drm.h
+++ b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/drm/panfrost_drm.h
@@ -136,6 +136,38 @@
   __u32 madv;
   __u32 retained;
 };
+#define PANFROSTDUMP_MAJOR 1
+#define PANFROSTDUMP_MINOR 0
+#define PANFROSTDUMP_MAGIC 0x464E4150
+#define PANFROSTDUMP_BUF_REG 0
+#define PANFROSTDUMP_BUF_BOMAP (PANFROSTDUMP_BUF_REG + 1)
+#define PANFROSTDUMP_BUF_BO (PANFROSTDUMP_BUF_BOMAP + 1)
+#define PANFROSTDUMP_BUF_TRAILER (PANFROSTDUMP_BUF_BO + 1)
+struct panfrost_dump_object_header {
+  __u32 magic;
+  __u32 type;
+  __u32 file_size;
+  __u32 file_offset;
+  union {
+    struct {
+      __u64 jc;
+      __u32 gpu_id;
+      __u32 major;
+      __u32 minor;
+      __u64 nbos;
+    } reghdr;
+    struct {
+      __u32 valid;
+      __u64 iova;
+      __u32 data[2];
+    } bomap;
+    __u32 sizer[496];
+  };
+};
+struct panfrost_dump_registers {
+  __u32 reg;
+  __u32 value;
+};
 #ifdef __cplusplus
 }
 #endif
diff --git a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/drm/vmwgfx_drm.h b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/drm/vmwgfx_drm.h
index 395743b..2f75589 100644
--- a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/drm/vmwgfx_drm.h
+++ b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/drm/vmwgfx_drm.h
@@ -76,6 +76,7 @@
 #define DRM_VMW_PARAM_SM4_1 14
 #define DRM_VMW_PARAM_SM5 15
 #define DRM_VMW_PARAM_GL43 16
+#define DRM_VMW_PARAM_DEVICE_ID 17
 enum drm_vmw_handle_type {
   DRM_VMW_HANDLE_LEGACY = 0,
   DRM_VMW_HANDLE_PRIME = 1
diff --git a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/acct.h b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/acct.h
index aecc9f6..ba9d25f 100644
--- a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/acct.h
+++ b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/acct.h
@@ -74,6 +74,7 @@
 #define ACOMPAT 0x04
 #define ACORE 0x08
 #define AXSIG 0x10
+#define AGROUP 0x20
 #if defined(__BYTE_ORDER) ? __BYTE_ORDER == __BIG_ENDIAN : defined(__BIG_ENDIAN)
 #define ACCT_BYTEORDER 0x80
 #elif defined(__BYTE_ORDER)?__BYTE_ORDER==__LITTLE_ENDIAN:defined(__LITTLE_ENDIAN)
diff --git a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/agpgart.h b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/agpgart.h
index 3b126f1..9dda7bf 100644
--- a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/agpgart.h
+++ b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/agpgart.h
@@ -38,7 +38,6 @@
 #define FALSE 0
 #endif
 #include <linux/types.h>
-#include <stdlib.h>
 struct agp_version {
   __u16 major;
   __u16 minor;
@@ -48,10 +47,10 @@
   __u32 bridge_id;
   __u32 agp_mode;
   unsigned long aper_base;
-  size_t aper_size;
-  size_t pg_total;
-  size_t pg_system;
-  size_t pg_used;
+  __kernel_size_t aper_size;
+  __kernel_size_t pg_total;
+  __kernel_size_t pg_system;
+  __kernel_size_t pg_used;
 } agp_info;
 typedef struct _agp_setup {
   __u32 agp_mode;
diff --git a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/android/binder.h b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/android/binder.h
index ded1756..52f4c6b 100644
--- a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/android/binder.h
+++ b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/android/binder.h
@@ -127,6 +127,11 @@
   __u32 sync_recv;
   __u32 async_recv;
 };
+struct binder_extended_error {
+  __u32 id;
+  __u32 command;
+  __s32 param;
+};
 #define BINDER_WRITE_READ _IOWR('b', 1, struct binder_write_read)
 #define BINDER_SET_IDLE_TIMEOUT _IOW('b', 3, __s64)
 #define BINDER_SET_MAX_THREADS _IOW('b', 5, __u32)
@@ -140,12 +145,14 @@
 #define BINDER_FREEZE _IOW('b', 14, struct binder_freeze_info)
 #define BINDER_GET_FROZEN_INFO _IOWR('b', 15, struct binder_frozen_status_info)
 #define BINDER_ENABLE_ONEWAY_SPAM_DETECTION _IOW('b', 16, __u32)
+#define BINDER_GET_EXTENDED_ERROR _IOWR('b', 17, struct binder_extended_error)
 enum transaction_flags {
   TF_ONE_WAY = 0x01,
   TF_ROOT_OBJECT = 0x04,
   TF_STATUS_CODE = 0x08,
   TF_ACCEPT_FDS = 0x10,
   TF_CLEAR_BUF = 0x20,
+  TF_UPDATE_TXN = 0x40,
 };
 struct binder_transaction_data {
   union {
@@ -155,8 +162,8 @@
   binder_uintptr_t cookie;
   __u32 code;
   __u32 flags;
-  pid_t sender_pid;
-  uid_t sender_euid;
+  __kernel_pid_t sender_pid;
+  __kernel_uid32_t sender_euid;
   binder_size_t data_size;
   binder_size_t offsets_size;
   union {
@@ -182,7 +189,7 @@
 struct binder_handle_cookie {
   __u32 handle;
   binder_uintptr_t cookie;
-} __packed;
+} __attribute__((__packed__));
 struct binder_pri_desc {
   __s32 priority;
   __u32 desc;
diff --git a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/ashmem.h b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/ashmem.h
index 174667f..88f0e81 100644
--- a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/ashmem.h
+++ b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/ashmem.h
@@ -41,4 +41,5 @@
 #define ASHMEM_UNPIN _IOW(__ASHMEMIOC, 8, struct ashmem_pin)
 #define ASHMEM_GET_PIN_STATUS _IO(__ASHMEMIOC, 9)
 #define ASHMEM_PURGE_ALL_CACHES _IO(__ASHMEMIOC, 10)
+#define ASHMEM_GET_FILE_ID _IOR(__ASHMEMIOC, 11, unsigned long)
 #endif
diff --git a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/audit.h b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/audit.h
index 30a94af..f7c969b 100644
--- a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/audit.h
+++ b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/audit.h
@@ -140,7 +140,7 @@
 #define AUDIT_MAX_KEY_LEN 256
 #define AUDIT_BITMASK_SIZE 64
 #define AUDIT_WORD(nr) ((__u32) ((nr) / 32))
-#define AUDIT_BIT(nr) (1 << ((nr) - AUDIT_WORD(nr) * 32))
+#define AUDIT_BIT(nr) (1U << ((nr) - AUDIT_WORD(nr) * 32))
 #define AUDIT_SYSCALL_CLASSES 16
 #define AUDIT_CLASS_DIR_WRITE 0
 #define AUDIT_CLASS_DIR_WRITE_32 1
@@ -323,6 +323,8 @@
 #define AUDIT_ARCH_UNICORE (EM_UNICORE | __AUDIT_ARCH_LE)
 #define AUDIT_ARCH_X86_64 (EM_X86_64 | __AUDIT_ARCH_64BIT | __AUDIT_ARCH_LE)
 #define AUDIT_ARCH_XTENSA (EM_XTENSA)
+#define AUDIT_ARCH_LOONGARCH32 (EM_LOONGARCH | __AUDIT_ARCH_LE)
+#define AUDIT_ARCH_LOONGARCH64 (EM_LOONGARCH | __AUDIT_ARCH_64BIT | __AUDIT_ARCH_LE)
 #define AUDIT_PERM_EXEC 1
 #define AUDIT_PERM_WRITE 2
 #define AUDIT_PERM_READ 4
diff --git a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/blkzoned.h b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/blkzoned.h
index b551e8b..e41ac9f 100644
--- a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/blkzoned.h
+++ b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/blkzoned.h
@@ -54,7 +54,7 @@
   __u64 sector;
   __u32 nr_zones;
   __u32 flags;
-  struct blk_zone zones[0];
+  struct blk_zone zones[];
 };
 struct blk_zone_range {
   __u64 sector;
diff --git a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/bpf.h b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/bpf.h
index d363e81..807884a 100644
--- a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/bpf.h
+++ b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/bpf.h
@@ -74,10 +74,27 @@
   __u64 cgroup_inode_id;
   __u32 attach_type;
 };
+enum bpf_cgroup_iter_order {
+  BPF_CGROUP_ITER_ORDER_UNSPEC = 0,
+  BPF_CGROUP_ITER_SELF_ONLY,
+  BPF_CGROUP_ITER_DESCENDANTS_PRE,
+  BPF_CGROUP_ITER_DESCENDANTS_POST,
+  BPF_CGROUP_ITER_ANCESTORS_UP,
+};
 union bpf_iter_link_info {
   struct {
     __u32 map_fd;
   } map;
+  struct {
+    enum bpf_cgroup_iter_order order;
+    __u32 cgroup_fd;
+    __u64 cgroup_id;
+  } cgroup;
+  struct {
+    __u32 tid;
+    __u32 pid;
+    __u32 pid_fd;
+  } task;
 };
 enum bpf_cmd {
   BPF_MAP_CREATE,
@@ -150,6 +167,7 @@
   BPF_MAP_TYPE_INODE_STORAGE,
   BPF_MAP_TYPE_TASK_STORAGE,
   BPF_MAP_TYPE_BLOOM_FILTER,
+  BPF_MAP_TYPE_USER_RINGBUF,
 };
 enum bpf_prog_type {
   BPF_PROG_TYPE_UNSPEC,
@@ -228,6 +246,8 @@
   BPF_SK_REUSEPORT_SELECT,
   BPF_SK_REUSEPORT_SELECT_OR_MIGRATE,
   BPF_PERF_EVENT,
+  BPF_TRACE_KPROBE_MULTI,
+  BPF_LSM_CGROUP,
   __MAX_BPF_ATTACH_TYPE
 };
 #define MAX_BPF_ATTACH_TYPE __MAX_BPF_ATTACH_TYPE
@@ -240,6 +260,8 @@
   BPF_LINK_TYPE_NETNS = 5,
   BPF_LINK_TYPE_XDP = 6,
   BPF_LINK_TYPE_PERF_EVENT = 7,
+  BPF_LINK_TYPE_KPROBE_MULTI = 8,
+  BPF_LINK_TYPE_STRUCT_OPS = 9,
   MAX_BPF_LINK_TYPE,
 };
 #define BPF_F_ALLOW_OVERRIDE (1U << 0)
@@ -250,6 +272,8 @@
 #define BPF_F_TEST_RND_HI32 (1U << 2)
 #define BPF_F_TEST_STATE_FREQ (1U << 3)
 #define BPF_F_SLEEPABLE (1U << 4)
+#define BPF_F_XDP_HAS_FRAGS (1U << 5)
+#define BPF_F_KPROBE_MULTI_RETURN (1U << 0)
 #define BPF_PSEUDO_MAP_FD 1
 #define BPF_PSEUDO_MAP_IDX 5
 #define BPF_PSEUDO_MAP_VALUE 2
@@ -281,6 +305,7 @@
 };
 #define BPF_F_QUERY_EFFECTIVE (1U << 0)
 #define BPF_F_TEST_RUN_ON_CPU (1U << 0)
+#define BPF_F_TEST_XDP_LIVE_FRAMES (1U << 1)
 enum bpf_stats_type {
   BPF_STATS_RUN_TIME = 0,
 };
@@ -392,6 +417,7 @@
     __aligned_u64 ctx_out;
     __u32 flags;
     __u32 cpu;
+    __u32 batch_size;
   } test;
   struct {
     union {
@@ -416,6 +442,7 @@
     __u32 attach_flags;
     __aligned_u64 prog_ids;
     __u32 prog_cnt;
+    __aligned_u64 prog_attach_flags;
   } query;
   struct {
     __u64 name;
@@ -456,6 +483,17 @@
       struct {
         __u64 bpf_cookie;
       } perf_event;
+      struct {
+        __u32 flags;
+        __u32 cnt;
+        __aligned_u64 syms;
+        __aligned_u64 addrs;
+        __aligned_u64 cookies;
+      } kprobe_multi;
+      struct {
+        __u32 target_btf_id;
+        __u64 cookie;
+      } tracing;
     };
   } link_create;
   struct {
@@ -480,7 +518,7 @@
     __u32 flags;
   } prog_bind_map;
 } __attribute__((aligned(8)));
-#define __BPF_FUNC_MAPPER(FN) FN(unspec), FN(map_lookup_elem), FN(map_update_elem), FN(map_delete_elem), FN(probe_read), FN(ktime_get_ns), FN(trace_printk), FN(get_prandom_u32), FN(get_smp_processor_id), FN(skb_store_bytes), FN(l3_csum_replace), FN(l4_csum_replace), FN(tail_call), FN(clone_redirect), FN(get_current_pid_tgid), FN(get_current_uid_gid), FN(get_current_comm), FN(get_cgroup_classid), FN(skb_vlan_push), FN(skb_vlan_pop), FN(skb_get_tunnel_key), FN(skb_set_tunnel_key), FN(perf_event_read), FN(redirect), FN(get_route_realm), FN(perf_event_output), FN(skb_load_bytes), FN(get_stackid), FN(csum_diff), FN(skb_get_tunnel_opt), FN(skb_set_tunnel_opt), FN(skb_change_proto), FN(skb_change_type), FN(skb_under_cgroup), FN(get_hash_recalc), FN(get_current_task), FN(probe_write_user), FN(current_task_under_cgroup), FN(skb_change_tail), FN(skb_pull_data), FN(csum_update), FN(set_hash_invalid), FN(get_numa_node_id), FN(skb_change_head), FN(xdp_adjust_head), FN(probe_read_str), FN(get_socket_cookie), FN(get_socket_uid), FN(set_hash), FN(setsockopt), FN(skb_adjust_room), FN(redirect_map), FN(sk_redirect_map), FN(sock_map_update), FN(xdp_adjust_meta), FN(perf_event_read_value), FN(perf_prog_read_value), FN(getsockopt), FN(override_return), FN(sock_ops_cb_flags_set), FN(msg_redirect_map), FN(msg_apply_bytes), FN(msg_cork_bytes), FN(msg_pull_data), FN(bind), FN(xdp_adjust_tail), FN(skb_get_xfrm_state), FN(get_stack), FN(skb_load_bytes_relative), FN(fib_lookup), FN(sock_hash_update), FN(msg_redirect_hash), FN(sk_redirect_hash), FN(lwt_push_encap), FN(lwt_seg6_store_bytes), FN(lwt_seg6_adjust_srh), FN(lwt_seg6_action), FN(rc_repeat), FN(rc_keydown), FN(skb_cgroup_id), FN(get_current_cgroup_id), FN(get_local_storage), FN(sk_select_reuseport), FN(skb_ancestor_cgroup_id), FN(sk_lookup_tcp), FN(sk_lookup_udp), FN(sk_release), FN(map_push_elem), FN(map_pop_elem), FN(map_peek_elem), FN(msg_push_data), FN(msg_pop_data), FN(rc_pointer_rel), FN(spin_lock), FN(spin_unlock), FN(sk_fullsock), FN(tcp_sock), FN(skb_ecn_set_ce), FN(get_listener_sock), FN(skc_lookup_tcp), FN(tcp_check_syncookie), FN(sysctl_get_name), FN(sysctl_get_current_value), FN(sysctl_get_new_value), FN(sysctl_set_new_value), FN(strtol), FN(strtoul), FN(sk_storage_get), FN(sk_storage_delete), FN(send_signal), FN(tcp_gen_syncookie), FN(skb_output), FN(probe_read_user), FN(probe_read_kernel), FN(probe_read_user_str), FN(probe_read_kernel_str), FN(tcp_send_ack), FN(send_signal_thread), FN(jiffies64), FN(read_branch_records), FN(get_ns_current_pid_tgid), FN(xdp_output), FN(get_netns_cookie), FN(get_current_ancestor_cgroup_id), FN(sk_assign), FN(ktime_get_boot_ns), FN(seq_printf), FN(seq_write), FN(sk_cgroup_id), FN(sk_ancestor_cgroup_id), FN(ringbuf_output), FN(ringbuf_reserve), FN(ringbuf_submit), FN(ringbuf_discard), FN(ringbuf_query), FN(csum_level), FN(skc_to_tcp6_sock), FN(skc_to_tcp_sock), FN(skc_to_tcp_timewait_sock), FN(skc_to_tcp_request_sock), FN(skc_to_udp6_sock), FN(get_task_stack), FN(load_hdr_opt), FN(store_hdr_opt), FN(reserve_hdr_opt), FN(inode_storage_get), FN(inode_storage_delete), FN(d_path), FN(copy_from_user), FN(snprintf_btf), FN(seq_printf_btf), FN(skb_cgroup_classid), FN(redirect_neigh), FN(per_cpu_ptr), FN(this_cpu_ptr), FN(redirect_peer), FN(task_storage_get), FN(task_storage_delete), FN(get_current_task_btf), FN(bprm_opts_set), FN(ktime_get_coarse_ns), FN(ima_inode_hash), FN(sock_from_file), FN(check_mtu), FN(for_each_map_elem), FN(snprintf), FN(sys_bpf), FN(btf_find_by_name_kind), FN(sys_close), FN(timer_init), FN(timer_set_callback), FN(timer_start), FN(timer_cancel), FN(get_func_ip), FN(get_attach_cookie), FN(task_pt_regs), FN(get_branch_snapshot), FN(trace_vprintk), FN(skc_to_unix_sock), FN(kallsyms_lookup_name), FN(find_vma), FN(loop), FN(strncmp), FN(get_func_arg), FN(get_func_ret), FN(get_func_arg_cnt),
+#define __BPF_FUNC_MAPPER(FN) FN(unspec), FN(map_lookup_elem), FN(map_update_elem), FN(map_delete_elem), FN(probe_read), FN(ktime_get_ns), FN(trace_printk), FN(get_prandom_u32), FN(get_smp_processor_id), FN(skb_store_bytes), FN(l3_csum_replace), FN(l4_csum_replace), FN(tail_call), FN(clone_redirect), FN(get_current_pid_tgid), FN(get_current_uid_gid), FN(get_current_comm), FN(get_cgroup_classid), FN(skb_vlan_push), FN(skb_vlan_pop), FN(skb_get_tunnel_key), FN(skb_set_tunnel_key), FN(perf_event_read), FN(redirect), FN(get_route_realm), FN(perf_event_output), FN(skb_load_bytes), FN(get_stackid), FN(csum_diff), FN(skb_get_tunnel_opt), FN(skb_set_tunnel_opt), FN(skb_change_proto), FN(skb_change_type), FN(skb_under_cgroup), FN(get_hash_recalc), FN(get_current_task), FN(probe_write_user), FN(current_task_under_cgroup), FN(skb_change_tail), FN(skb_pull_data), FN(csum_update), FN(set_hash_invalid), FN(get_numa_node_id), FN(skb_change_head), FN(xdp_adjust_head), FN(probe_read_str), FN(get_socket_cookie), FN(get_socket_uid), FN(set_hash), FN(setsockopt), FN(skb_adjust_room), FN(redirect_map), FN(sk_redirect_map), FN(sock_map_update), FN(xdp_adjust_meta), FN(perf_event_read_value), FN(perf_prog_read_value), FN(getsockopt), FN(override_return), FN(sock_ops_cb_flags_set), FN(msg_redirect_map), FN(msg_apply_bytes), FN(msg_cork_bytes), FN(msg_pull_data), FN(bind), FN(xdp_adjust_tail), FN(skb_get_xfrm_state), FN(get_stack), FN(skb_load_bytes_relative), FN(fib_lookup), FN(sock_hash_update), FN(msg_redirect_hash), FN(sk_redirect_hash), FN(lwt_push_encap), FN(lwt_seg6_store_bytes), FN(lwt_seg6_adjust_srh), FN(lwt_seg6_action), FN(rc_repeat), FN(rc_keydown), FN(skb_cgroup_id), FN(get_current_cgroup_id), FN(get_local_storage), FN(sk_select_reuseport), FN(skb_ancestor_cgroup_id), FN(sk_lookup_tcp), FN(sk_lookup_udp), FN(sk_release), FN(map_push_elem), FN(map_pop_elem), FN(map_peek_elem), FN(msg_push_data), FN(msg_pop_data), FN(rc_pointer_rel), FN(spin_lock), FN(spin_unlock), FN(sk_fullsock), FN(tcp_sock), FN(skb_ecn_set_ce), FN(get_listener_sock), FN(skc_lookup_tcp), FN(tcp_check_syncookie), FN(sysctl_get_name), FN(sysctl_get_current_value), FN(sysctl_get_new_value), FN(sysctl_set_new_value), FN(strtol), FN(strtoul), FN(sk_storage_get), FN(sk_storage_delete), FN(send_signal), FN(tcp_gen_syncookie), FN(skb_output), FN(probe_read_user), FN(probe_read_kernel), FN(probe_read_user_str), FN(probe_read_kernel_str), FN(tcp_send_ack), FN(send_signal_thread), FN(jiffies64), FN(read_branch_records), FN(get_ns_current_pid_tgid), FN(xdp_output), FN(get_netns_cookie), FN(get_current_ancestor_cgroup_id), FN(sk_assign), FN(ktime_get_boot_ns), FN(seq_printf), FN(seq_write), FN(sk_cgroup_id), FN(sk_ancestor_cgroup_id), FN(ringbuf_output), FN(ringbuf_reserve), FN(ringbuf_submit), FN(ringbuf_discard), FN(ringbuf_query), FN(csum_level), FN(skc_to_tcp6_sock), FN(skc_to_tcp_sock), FN(skc_to_tcp_timewait_sock), FN(skc_to_tcp_request_sock), FN(skc_to_udp6_sock), FN(get_task_stack), FN(load_hdr_opt), FN(store_hdr_opt), FN(reserve_hdr_opt), FN(inode_storage_get), FN(inode_storage_delete), FN(d_path), FN(copy_from_user), FN(snprintf_btf), FN(seq_printf_btf), FN(skb_cgroup_classid), FN(redirect_neigh), FN(per_cpu_ptr), FN(this_cpu_ptr), FN(redirect_peer), FN(task_storage_get), FN(task_storage_delete), FN(get_current_task_btf), FN(bprm_opts_set), FN(ktime_get_coarse_ns), FN(ima_inode_hash), FN(sock_from_file), FN(check_mtu), FN(for_each_map_elem), FN(snprintf), FN(sys_bpf), FN(btf_find_by_name_kind), FN(sys_close), FN(timer_init), FN(timer_set_callback), FN(timer_start), FN(timer_cancel), FN(get_func_ip), FN(get_attach_cookie), FN(task_pt_regs), FN(get_branch_snapshot), FN(trace_vprintk), FN(skc_to_unix_sock), FN(kallsyms_lookup_name), FN(find_vma), FN(loop), FN(strncmp), FN(get_func_arg), FN(get_func_ret), FN(get_func_arg_cnt), FN(get_retval), FN(set_retval), FN(xdp_get_buff_len), FN(xdp_load_bytes), FN(xdp_store_bytes), FN(copy_from_user_task), FN(skb_set_tstamp), FN(ima_file_hash), FN(kptr_xchg), FN(map_lookup_percpu_elem), FN(skc_to_mptcp_sock), FN(dynptr_from_mem), FN(ringbuf_reserve_dynptr), FN(ringbuf_submit_dynptr), FN(ringbuf_discard_dynptr), FN(dynptr_read), FN(dynptr_write), FN(dynptr_data), FN(tcp_raw_gen_syncookie_ipv4), FN(tcp_raw_gen_syncookie_ipv6), FN(tcp_raw_check_syncookie_ipv4), FN(tcp_raw_check_syncookie_ipv6), FN(ktime_get_tai_ns), FN(user_ringbuf_drain),
 #define __BPF_ENUM_FN(x) BPF_FUNC_ ##x
 enum bpf_func_id {
   __BPF_FUNC_MAPPER(__BPF_ENUM_FN) __BPF_FUNC_MAX_ID,
@@ -517,6 +555,9 @@
   BPF_F_SEQ_NUMBER = (1ULL << 3),
 };
 enum {
+  BPF_F_TUNINFO_FLAGS = (1ULL << 4),
+};
+enum {
   BPF_F_INDEX_MASK = 0xffffffffULL,
   BPF_F_CURRENT_CPU = BPF_F_INDEX_MASK,
   BPF_F_CTXLEN_MASK = (0xfffffULL << 32),
@@ -595,6 +636,10 @@
 };
 #define __bpf_md_ptr(type,name) union { type name; __u64 : 64; \
 } __attribute__((aligned(8)))
+enum {
+  BPF_SKB_TSTAMP_UNSPEC,
+  BPF_SKB_TSTAMP_DELIVERY_MONO,
+};
 struct __sk_buff {
   __u32 len;
   __u32 pkt_type;
@@ -628,7 +673,8 @@
   __u32 gso_segs;
   __bpf_md_ptr(struct bpf_sock *, sk);
   __u32 gso_size;
-  __u32 : 32;
+  __u8 tstamp_type;
+  __u32 : 24;
   __u64 hwtstamp;
 };
 struct bpf_tunnel_key {
@@ -639,8 +685,15 @@
   };
   __u8 tunnel_tos;
   __u8 tunnel_ttl;
-  __u16 tunnel_ext;
+  union {
+    __u16 tunnel_ext;
+    __be16 tunnel_flags;
+  };
   __u32 tunnel_label;
+  union {
+    __u32 local_ipv4;
+    __u32 local_ipv6[4];
+  };
 };
 struct bpf_xfrm_state {
   __u32 reqid;
@@ -657,6 +710,7 @@
   BPF_DROP = 2,
   BPF_REDIRECT = 7,
   BPF_LWT_REROUTE = 128,
+  BPF_FLOW_DISSECTOR_CONTINUE = 129,
 };
 struct bpf_sock {
   __u32 bound_dev_if;
@@ -668,7 +722,8 @@
   __u32 src_ip4;
   __u32 src_ip6[4];
   __u32 src_port;
-  __u32 dst_port;
+  __be16 dst_port;
+  __u16 : 16;
   __u32 dst_ip4;
   __u32 dst_ip6[4];
   __u32 state;
@@ -818,6 +873,8 @@
   __u64 run_cnt;
   __u64 recursion_misses;
   __u32 verified_insns;
+  __u32 attach_btf_obj_id;
+  __u32 attach_btf_id;
 } __attribute__((aligned(8)));
 struct bpf_map_info {
   __u32 type;
@@ -871,6 +928,16 @@
           __u32 map_id;
         } map;
       };
+      union {
+        struct {
+          __u64 cgroup_id;
+          __u32 order;
+        } cgroup;
+        struct {
+          __u32 tid;
+          __u32 pid;
+        } task;
+      };
     } iter;
     struct {
       __u32 netns_ino;
@@ -1134,6 +1201,10 @@
   __u64 : 64;
   __u64 : 64;
 } __attribute__((aligned(8)));
+struct bpf_dynptr {
+  __u64 : 64;
+  __u64 : 64;
+} __attribute__((aligned(8)));
 struct bpf_sysctl {
   __u32 write;
   __u32 file_pos;
@@ -1160,7 +1231,8 @@
   __u32 protocol;
   __u32 remote_ip4;
   __u32 remote_ip6[4];
-  __u32 remote_port;
+  __be16 remote_port;
+  __u16 : 16;
   __u32 local_ip4;
   __u32 local_ip6[4];
   __u32 local_port;
@@ -1190,6 +1262,7 @@
   BPF_CORE_TYPE_SIZE = 9,
   BPF_CORE_ENUMVAL_EXISTS = 10,
   BPF_CORE_ENUMVAL_VALUE = 11,
+  BPF_CORE_TYPE_MATCHES = 12,
 };
 struct bpf_core_relo {
   __u32 insn_off;
diff --git a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/btf.h b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/btf.h
index fc57d3c..a1f68bf 100644
--- a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/btf.h
+++ b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/btf.h
@@ -65,6 +65,7 @@
   BTF_KIND_FLOAT = 16,
   BTF_KIND_DECL_TAG = 17,
   BTF_KIND_TYPE_TAG = 18,
+  BTF_KIND_ENUM64 = 19,
   NR_BTF_KINDS,
   BTF_KIND_MAX = NR_BTF_KINDS - 1,
 };
@@ -115,4 +116,9 @@
 struct btf_decl_tag {
   __s32 component_idx;
 };
+struct btf_enum64 {
+  __u32 name_off;
+  __u32 val_lo32;
+  __u32 val_hi32;
+};
 #endif
diff --git a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/btrfs.h b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/btrfs.h
index 08b96a3..506238f 100644
--- a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/btrfs.h
+++ b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/btrfs.h
@@ -59,7 +59,7 @@
   __u64 num_ref_copies;
   __u64 num_excl_copies;
   struct btrfs_qgroup_limit lim;
-  __u64 qgroups[0];
+  __u64 qgroups[];
 };
 struct btrfs_ioctl_qgroup_limit_args {
   __u64 qgroupid;
@@ -176,6 +176,7 @@
 #define BTRFS_FEATURE_COMPAT_RO_FREE_SPACE_TREE (1ULL << 0)
 #define BTRFS_FEATURE_COMPAT_RO_FREE_SPACE_TREE_VALID (1ULL << 1)
 #define BTRFS_FEATURE_COMPAT_RO_VERITY (1ULL << 2)
+#define BTRFS_FEATURE_COMPAT_RO_BLOCK_GROUP_TREE (1ULL << 3)
 #define BTRFS_FEATURE_INCOMPAT_MIXED_BACKREF (1ULL << 0)
 #define BTRFS_FEATURE_INCOMPAT_DEFAULT_SUBVOL (1ULL << 1)
 #define BTRFS_FEATURE_INCOMPAT_MIXED_GROUPS (1ULL << 2)
@@ -189,6 +190,7 @@
 #define BTRFS_FEATURE_INCOMPAT_METADATA_UUID (1ULL << 10)
 #define BTRFS_FEATURE_INCOMPAT_RAID1C34 (1ULL << 11)
 #define BTRFS_FEATURE_INCOMPAT_ZONED (1ULL << 12)
+#define BTRFS_FEATURE_INCOMPAT_EXTENT_TREE_V2 (1ULL << 13)
 struct btrfs_ioctl_feature_flags {
   __u64 compat_flags;
   __u64 compat_ro_flags;
@@ -303,7 +305,7 @@
 struct btrfs_ioctl_search_args_v2 {
   struct btrfs_ioctl_search_key key;
   __u64 buf_size;
-  __u64 buf[0];
+  __u64 buf[];
 };
 struct btrfs_ioctl_clone_range_args {
   __s64 src_fd;
@@ -334,7 +336,7 @@
   __u16 dest_count;
   __u16 reserved1;
   __u32 reserved2;
-  struct btrfs_ioctl_same_extent_info info[0];
+  struct btrfs_ioctl_same_extent_info info[];
 };
 struct btrfs_ioctl_space_info {
   __u64 flags;
@@ -344,14 +346,14 @@
 struct btrfs_ioctl_space_args {
   __u64 space_slots;
   __u64 total_spaces;
-  struct btrfs_ioctl_space_info spaces[0];
+  struct btrfs_ioctl_space_info spaces[];
 };
 struct btrfs_data_container {
   __u32 bytes_left;
   __u32 bytes_missing;
   __u32 elem_cnt;
   __u32 elem_missed;
-  __u64 val[0];
+  __u64 val[];
 };
 struct btrfs_ioctl_ino_path_args {
   __u64 inum;
@@ -421,7 +423,8 @@
 #define BTRFS_SEND_FLAG_OMIT_STREAM_HEADER 0x2
 #define BTRFS_SEND_FLAG_OMIT_END_CMD 0x4
 #define BTRFS_SEND_FLAG_VERSION 0x8
-#define BTRFS_SEND_FLAG_MASK (BTRFS_SEND_FLAG_NO_FILE_DATA | BTRFS_SEND_FLAG_OMIT_STREAM_HEADER | BTRFS_SEND_FLAG_OMIT_END_CMD | BTRFS_SEND_FLAG_VERSION)
+#define BTRFS_SEND_FLAG_COMPRESSED 0x10
+#define BTRFS_SEND_FLAG_MASK (BTRFS_SEND_FLAG_NO_FILE_DATA | BTRFS_SEND_FLAG_OMIT_STREAM_HEADER | BTRFS_SEND_FLAG_OMIT_END_CMD | BTRFS_SEND_FLAG_VERSION | BTRFS_SEND_FLAG_COMPRESSED)
 struct btrfs_ioctl_send_args {
   __s64 send_fd;
   __u64 clone_sources_count;
@@ -461,6 +464,29 @@
   __u8 num_items;
   __u8 align[7];
 };
+struct btrfs_ioctl_encoded_io_args {
+  const struct iovec __user * iov;
+  unsigned long iovcnt;
+  __s64 offset;
+  __u64 flags;
+  __u64 len;
+  __u64 unencoded_len;
+  __u64 unencoded_offset;
+  __u32 compression;
+  __u32 encryption;
+  __u8 reserved[64];
+};
+#define BTRFS_ENCODED_IO_COMPRESSION_NONE 0
+#define BTRFS_ENCODED_IO_COMPRESSION_ZLIB 1
+#define BTRFS_ENCODED_IO_COMPRESSION_ZSTD 2
+#define BTRFS_ENCODED_IO_COMPRESSION_LZO_4K 3
+#define BTRFS_ENCODED_IO_COMPRESSION_LZO_8K 4
+#define BTRFS_ENCODED_IO_COMPRESSION_LZO_16K 5
+#define BTRFS_ENCODED_IO_COMPRESSION_LZO_32K 6
+#define BTRFS_ENCODED_IO_COMPRESSION_LZO_64K 7
+#define BTRFS_ENCODED_IO_COMPRESSION_TYPES 8
+#define BTRFS_ENCODED_IO_ENCRYPTION_NONE 0
+#define BTRFS_ENCODED_IO_ENCRYPTION_TYPES 1
 enum btrfs_err_code {
   BTRFS_ERROR_DEV_RAID1_MIN_NOT_MET = 1,
   BTRFS_ERROR_DEV_RAID10_MIN_NOT_MET,
@@ -534,4 +560,6 @@
 #define BTRFS_IOC_GET_SUBVOL_ROOTREF _IOWR(BTRFS_IOCTL_MAGIC, 61, struct btrfs_ioctl_get_subvol_rootref_args)
 #define BTRFS_IOC_INO_LOOKUP_USER _IOWR(BTRFS_IOCTL_MAGIC, 62, struct btrfs_ioctl_ino_lookup_user_args)
 #define BTRFS_IOC_SNAP_DESTROY_V2 _IOW(BTRFS_IOCTL_MAGIC, 63, struct btrfs_ioctl_vol_args_v2)
+#define BTRFS_IOC_ENCODED_READ _IOR(BTRFS_IOCTL_MAGIC, 64, struct btrfs_ioctl_encoded_io_args)
+#define BTRFS_IOC_ENCODED_WRITE _IOW(BTRFS_IOCTL_MAGIC, 64, struct btrfs_ioctl_encoded_io_args)
 #endif
diff --git a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/btrfs_tree.h b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/btrfs_tree.h
index 0476733..6cd46dd 100644
--- a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/btrfs_tree.h
+++ b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/btrfs_tree.h
@@ -31,6 +31,7 @@
 #define BTRFS_QUOTA_TREE_OBJECTID 8ULL
 #define BTRFS_UUID_TREE_OBJECTID 9ULL
 #define BTRFS_FREE_SPACE_TREE_OBJECTID 10ULL
+#define BTRFS_BLOCK_GROUP_TREE_OBJECTID 11ULL
 #define BTRFS_DEV_STATS_OBJECTID 0ULL
 #define BTRFS_BALANCE_OBJECTID - 4ULL
 #define BTRFS_ORPHAN_OBJECTID - 5ULL
@@ -220,7 +221,7 @@
   __le64 parent_objectid;
   __le64 index;
   __le16 name_len;
-  __u8 name[0];
+  __u8 name[];
 } __attribute__((__packed__));
 struct btrfs_timespec {
   __le64 sec;
@@ -372,18 +373,6 @@
 #define BTRFS_BLOCK_GROUP_RAID1C3 (1ULL << 9)
 #define BTRFS_BLOCK_GROUP_RAID1C4 (1ULL << 10)
 #define BTRFS_BLOCK_GROUP_RESERVED (BTRFS_AVAIL_ALLOC_BIT_SINGLE | BTRFS_SPACE_INFO_GLOBAL_RSV)
-enum btrfs_raid_types {
-  BTRFS_RAID_RAID10,
-  BTRFS_RAID_RAID1,
-  BTRFS_RAID_DUP,
-  BTRFS_RAID_RAID0,
-  BTRFS_RAID_SINGLE,
-  BTRFS_RAID_RAID5,
-  BTRFS_RAID_RAID6,
-  BTRFS_RAID_RAID1C3,
-  BTRFS_RAID_RAID1C4,
-  BTRFS_NR_RAID_TYPES
-};
 #define BTRFS_BLOCK_GROUP_TYPE_MASK (BTRFS_BLOCK_GROUP_DATA | BTRFS_BLOCK_GROUP_SYSTEM | BTRFS_BLOCK_GROUP_METADATA)
 #define BTRFS_BLOCK_GROUP_PROFILE_MASK (BTRFS_BLOCK_GROUP_RAID0 | BTRFS_BLOCK_GROUP_RAID1 | BTRFS_BLOCK_GROUP_RAID1C3 | BTRFS_BLOCK_GROUP_RAID1C4 | BTRFS_BLOCK_GROUP_RAID5 | BTRFS_BLOCK_GROUP_RAID6 | BTRFS_BLOCK_GROUP_DUP | BTRFS_BLOCK_GROUP_RAID10)
 #define BTRFS_BLOCK_GROUP_RAID56_MASK (BTRFS_BLOCK_GROUP_RAID5 | BTRFS_BLOCK_GROUP_RAID6)
@@ -405,6 +394,7 @@
 #define BTRFS_QGROUP_STATUS_FLAG_ON (1ULL << 0)
 #define BTRFS_QGROUP_STATUS_FLAG_RESCAN (1ULL << 1)
 #define BTRFS_QGROUP_STATUS_FLAG_INCONSISTENT (1ULL << 2)
+#define BTRFS_QGROUP_STATUS_FLAGS_MASK (BTRFS_QGROUP_STATUS_FLAG_ON | BTRFS_QGROUP_STATUS_FLAG_RESCAN | BTRFS_QGROUP_STATUS_FLAG_INCONSISTENT)
 #define BTRFS_QGROUP_STATUS_VERSION 1
 struct btrfs_qgroup_status_item {
   __le64 version;
diff --git a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/cachefiles.h b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/cachefiles.h
new file mode 100644
index 0000000..f5a58a5
--- /dev/null
+++ b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/cachefiles.h
@@ -0,0 +1,48 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _LINUX_CACHEFILES_H
+#define _LINUX_CACHEFILES_H
+#include <linux/types.h>
+#include <linux/ioctl.h>
+#define CACHEFILES_MSG_MAX_SIZE 1024
+enum cachefiles_opcode {
+  CACHEFILES_OP_OPEN,
+  CACHEFILES_OP_CLOSE,
+  CACHEFILES_OP_READ,
+};
+struct cachefiles_msg {
+  __u32 msg_id;
+  __u32 opcode;
+  __u32 len;
+  __u32 object_id;
+  __u8 data[];
+};
+struct cachefiles_open {
+  __u32 volume_key_size;
+  __u32 cookie_key_size;
+  __u32 fd;
+  __u32 flags;
+  __u8 data[];
+};
+struct cachefiles_read {
+  __u64 off;
+  __u64 len;
+};
+#define CACHEFILES_IOC_READ_COMPLETE _IOW(0x98, 1, int)
+#endif
diff --git a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/can.h b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/can.h
index 30eeca2..1365dba 100644
--- a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/can.h
+++ b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/can.h
@@ -20,21 +20,29 @@
 #define _UAPI_CAN_H
 #include <linux/types.h>
 #include <linux/socket.h>
+#include <linux/stddef.h>
 #define CAN_EFF_FLAG 0x80000000U
 #define CAN_RTR_FLAG 0x40000000U
 #define CAN_ERR_FLAG 0x20000000U
 #define CAN_SFF_MASK 0x000007FFU
 #define CAN_EFF_MASK 0x1FFFFFFFU
 #define CAN_ERR_MASK 0x1FFFFFFFU
+#define CANXL_PRIO_MASK CAN_SFF_MASK
 typedef __u32 canid_t;
 #define CAN_SFF_ID_BITS 11
 #define CAN_EFF_ID_BITS 29
+#define CANXL_PRIO_BITS CAN_SFF_ID_BITS
 typedef __u32 can_err_mask_t;
 #define CAN_MAX_DLC 8
 #define CAN_MAX_RAW_DLC 15
 #define CAN_MAX_DLEN 8
 #define CANFD_MAX_DLC 15
 #define CANFD_MAX_DLEN 64
+#define CANXL_MIN_DLC 0
+#define CANXL_MAX_DLC 2047
+#define CANXL_MAX_DLC_MASK 0x07FF
+#define CANXL_MIN_DLEN 1
+#define CANXL_MAX_DLEN 2048
 struct can_frame {
   canid_t can_id;
   union {
@@ -57,8 +65,22 @@
   __u8 __res1;
   __u8 data[CANFD_MAX_DLEN] __attribute__((aligned(8)));
 };
+#define CANXL_XLF 0x80
+#define CANXL_SEC 0x01
+struct canxl_frame {
+  canid_t prio;
+  __u8 flags;
+  __u8 sdt;
+  __u16 len;
+  __u32 af;
+  __u8 data[CANXL_MAX_DLEN];
+};
 #define CAN_MTU (sizeof(struct can_frame))
 #define CANFD_MTU (sizeof(struct canfd_frame))
+#define CANXL_MTU (sizeof(struct canxl_frame))
+#define CANXL_HDR_SIZE (offsetof(struct canxl_frame, data))
+#define CANXL_MIN_MTU (CANXL_HDR_SIZE + 64)
+#define CANXL_MAX_MTU CANXL_MTU
 #define CAN_RAW 1
 #define CAN_BCM 2
 #define CAN_TP16 3
diff --git a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/can/bcm.h b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/can/bcm.h
index 42e0782..f5ab2c2 100644
--- a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/can/bcm.h
+++ b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/can/bcm.h
@@ -31,7 +31,7 @@
   struct bcm_timeval ival1, ival2;
   canid_t can_id;
   __u32 nframes;
-  struct can_frame frames[0];
+  struct can_frame frames[];
 };
 enum {
   TX_SETUP = 1,
diff --git a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/can/error.h b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/can/error.h
index 645373b..f585d2c 100644
--- a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/can/error.h
+++ b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/can/error.h
@@ -28,6 +28,7 @@
 #define CAN_ERR_BUSOFF 0x00000040U
 #define CAN_ERR_BUSERROR 0x00000080U
 #define CAN_ERR_RESTARTED 0x00000100U
+#define CAN_ERR_CNT 0x00000200U
 #define CAN_ERR_LOSTARB_UNSPEC 0x00
 #define CAN_ERR_CRTL_UNSPEC 0x00
 #define CAN_ERR_CRTL_RX_OVERFLOW 0x01
@@ -76,4 +77,7 @@
 #define CAN_ERR_TRX_CANL_SHORT_TO_VCC 0x60
 #define CAN_ERR_TRX_CANL_SHORT_TO_GND 0x70
 #define CAN_ERR_TRX_CANL_SHORT_TO_CANH 0x80
+#define CAN_ERROR_WARNING_THRESHOLD 96
+#define CAN_ERROR_PASSIVE_THRESHOLD 128
+#define CAN_BUS_OFF_THRESHOLD 256
 #endif
diff --git a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/can/isotp.h b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/can/isotp.h
index dd5e4f5..f51aa59 100644
--- a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/can/isotp.h
+++ b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/can/isotp.h
@@ -44,26 +44,28 @@
   __u8 tx_dl;
   __u8 tx_flags;
 };
-#define CAN_ISOTP_LISTEN_MODE 0x001
-#define CAN_ISOTP_EXTEND_ADDR 0x002
-#define CAN_ISOTP_TX_PADDING 0x004
-#define CAN_ISOTP_RX_PADDING 0x008
-#define CAN_ISOTP_CHK_PAD_LEN 0x010
-#define CAN_ISOTP_CHK_PAD_DATA 0x020
-#define CAN_ISOTP_HALF_DUPLEX 0x040
-#define CAN_ISOTP_FORCE_TXSTMIN 0x080
-#define CAN_ISOTP_FORCE_RXSTMIN 0x100
-#define CAN_ISOTP_RX_EXT_ADDR 0x200
-#define CAN_ISOTP_WAIT_TX_DONE 0x400
-#define CAN_ISOTP_SF_BROADCAST 0x800
+#define CAN_ISOTP_LISTEN_MODE 0x0001
+#define CAN_ISOTP_EXTEND_ADDR 0x0002
+#define CAN_ISOTP_TX_PADDING 0x0004
+#define CAN_ISOTP_RX_PADDING 0x0008
+#define CAN_ISOTP_CHK_PAD_LEN 0x0010
+#define CAN_ISOTP_CHK_PAD_DATA 0x0020
+#define CAN_ISOTP_HALF_DUPLEX 0x0040
+#define CAN_ISOTP_FORCE_TXSTMIN 0x0080
+#define CAN_ISOTP_FORCE_RXSTMIN 0x0100
+#define CAN_ISOTP_RX_EXT_ADDR 0x0200
+#define CAN_ISOTP_WAIT_TX_DONE 0x0400
+#define CAN_ISOTP_SF_BROADCAST 0x0800
+#define CAN_ISOTP_CF_BROADCAST 0x1000
 #define CAN_ISOTP_DEFAULT_FLAGS 0
 #define CAN_ISOTP_DEFAULT_EXT_ADDRESS 0x00
 #define CAN_ISOTP_DEFAULT_PAD_CONTENT 0xCC
-#define CAN_ISOTP_DEFAULT_FRAME_TXTIME 0
+#define CAN_ISOTP_DEFAULT_FRAME_TXTIME 50000
 #define CAN_ISOTP_DEFAULT_RECV_BS 0
 #define CAN_ISOTP_DEFAULT_RECV_STMIN 0x00
 #define CAN_ISOTP_DEFAULT_RECV_WFTMAX 0
 #define CAN_ISOTP_DEFAULT_LL_MTU CAN_MTU
 #define CAN_ISOTP_DEFAULT_LL_TX_DL CAN_MAX_DLEN
 #define CAN_ISOTP_DEFAULT_LL_TX_FLAGS 0
+#define CAN_ISOTP_FRAME_TXTIME_ZERO 0xFFFFFFFF
 #endif
diff --git a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/can/raw.h b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/can/raw.h
index a3bddb7..f8de179 100644
--- a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/can/raw.h
+++ b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/can/raw.h
@@ -30,5 +30,6 @@
   CAN_RAW_RECV_OWN_MSGS,
   CAN_RAW_FD_FRAMES,
   CAN_RAW_JOIN_FILTERS,
+  CAN_RAW_XL_FRAMES,
 };
 #endif
diff --git a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/capability.h b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/capability.h
index 958e6ab..c1b5dbf 100644
--- a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/capability.h
+++ b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/capability.h
@@ -111,5 +111,5 @@
 #define CAP_LAST_CAP CAP_CHECKPOINT_RESTORE
 #define cap_valid(x) ((x) >= 0 && (x) <= CAP_LAST_CAP)
 #define CAP_TO_INDEX(x) ((x) >> 5)
-#define CAP_TO_MASK(x) (1 << ((x) & 31))
+#define CAP_TO_MASK(x) (1U << ((x) & 31))
 #endif
diff --git a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/cec.h b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/cec.h
index b90dc49..3953fe3 100644
--- a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/cec.h
+++ b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/cec.h
@@ -340,6 +340,7 @@
 #define CEC_OP_FEAT_DEV_HAS_SET_AUDIO_RATE 0x08
 #define CEC_OP_FEAT_DEV_SINK_HAS_ARC_TX 0x04
 #define CEC_OP_FEAT_DEV_SOURCE_HAS_ARC_RX 0x02
+#define CEC_OP_FEAT_DEV_HAS_SET_AUDIO_VOLUME_LEVEL 0x01
 #define CEC_MSG_GIVE_FEATURES 0xa5
 #define CEC_MSG_DECK_CONTROL 0x42
 #define CEC_OP_DECK_CTL_MODE_SKIP_FWD 1
@@ -554,6 +555,7 @@
 #define CEC_MSG_SYSTEM_AUDIO_MODE_STATUS 0x7e
 #define CEC_OP_AUD_FMT_ID_CEA861 0
 #define CEC_OP_AUD_FMT_ID_CEA861_CXT 1
+#define CEC_MSG_SET_AUDIO_VOLUME_LEVEL 0x73
 #define CEC_MSG_SET_AUDIO_RATE 0x9a
 #define CEC_OP_AUD_RATE_OFF 0
 #define CEC_OP_AUD_RATE_WIDE_STD 1
diff --git a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/connector.h b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/connector.h
index adf3a7f..e3891e3 100644
--- a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/connector.h
+++ b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/connector.h
@@ -50,6 +50,6 @@
   __u32 ack;
   __u16 len;
   __u16 flags;
-  __u8 data[0];
+  __u8 data[];
 };
 #endif
diff --git a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/counter.h b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/counter.h
index 091e33d..f986365 100644
--- a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/counter.h
+++ b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/counter.h
@@ -45,6 +45,8 @@
   COUNTER_EVENT_OVERFLOW_UNDERFLOW,
   COUNTER_EVENT_THRESHOLD,
   COUNTER_EVENT_INDEX,
+  COUNTER_EVENT_CHANGE_OF_STATE,
+  COUNTER_EVENT_CAPTURE,
 };
 struct counter_watch {
   struct counter_component component;
@@ -90,4 +92,8 @@
   COUNTER_SYNAPSE_ACTION_FALLING_EDGE,
   COUNTER_SYNAPSE_ACTION_BOTH_EDGES,
 };
+enum counter_signal_polarity {
+  COUNTER_SIGNAL_POLARITY_POSITIVE,
+  COUNTER_SIGNAL_POLARITY_NEGATIVE,
+};
 #endif
diff --git a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/cxl_mem.h b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/cxl_mem.h
index 15e9e29..578cefd 100644
--- a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/cxl_mem.h
+++ b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/cxl_mem.h
@@ -38,8 +38,8 @@
   __u32 id;
   __u32 flags;
 #define CXL_MEM_COMMAND_FLAG_MASK GENMASK(0, 0)
-  __s32 size_in;
-  __s32 size_out;
+  __u32 size_in;
+  __u32 size_out;
 };
 struct cxl_mem_query_commands {
   __u32 n_commands;
@@ -58,12 +58,12 @@
   };
   __u32 retval;
   struct {
-    __s32 size;
+    __u32 size;
     __u32 rsvd;
     __u64 payload;
   } in;
   struct {
-    __s32 size;
+    __u32 size;
     __u32 rsvd;
     __u64 payload;
   } out;
diff --git a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/cycx_cfm.h b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/cycx_cfm.h
index 052de53..230b58d 100644
--- a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/cycx_cfm.h
+++ b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/cycx_cfm.h
@@ -53,7 +53,7 @@
   unsigned short reserved[6];
   char descr[CFM_DESCR_LEN];
   struct cycx_fw_info info;
-  unsigned char image[0];
+  unsigned char image[];
 };
 struct cycx_fw_header {
   unsigned long reset_size;
diff --git a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/devlink.h b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/devlink.h
index a809306..b2cdafa 100644
--- a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/devlink.h
+++ b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/devlink.h
@@ -103,6 +103,12 @@
   DEVLINK_CMD_RATE_SET,
   DEVLINK_CMD_RATE_NEW,
   DEVLINK_CMD_RATE_DEL,
+  DEVLINK_CMD_LINECARD_GET,
+  DEVLINK_CMD_LINECARD_SET,
+  DEVLINK_CMD_LINECARD_NEW,
+  DEVLINK_CMD_LINECARD_DEL,
+  DEVLINK_CMD_SELFTESTS_GET,
+  DEVLINK_CMD_SELFTESTS_RUN,
   __DEVLINK_CMD_MAX,
   DEVLINK_CMD_MAX = __DEVLINK_CMD_MAX - 1
 };
@@ -184,6 +190,25 @@
 #define DEVLINK_FLASH_OVERWRITE_SETTINGS _BITUL(DEVLINK_FLASH_OVERWRITE_SETTINGS_BIT)
 #define DEVLINK_FLASH_OVERWRITE_IDENTIFIERS _BITUL(DEVLINK_FLASH_OVERWRITE_IDENTIFIERS_BIT)
 #define DEVLINK_SUPPORTED_FLASH_OVERWRITE_SECTIONS (_BITUL(__DEVLINK_FLASH_OVERWRITE_MAX_BIT) - 1)
+enum devlink_attr_selftest_id {
+  DEVLINK_ATTR_SELFTEST_ID_UNSPEC,
+  DEVLINK_ATTR_SELFTEST_ID_FLASH,
+  __DEVLINK_ATTR_SELFTEST_ID_MAX,
+  DEVLINK_ATTR_SELFTEST_ID_MAX = __DEVLINK_ATTR_SELFTEST_ID_MAX - 1
+};
+enum devlink_selftest_status {
+  DEVLINK_SELFTEST_STATUS_SKIP,
+  DEVLINK_SELFTEST_STATUS_PASS,
+  DEVLINK_SELFTEST_STATUS_FAIL
+};
+enum devlink_attr_selftest_result {
+  DEVLINK_ATTR_SELFTEST_RESULT_UNSPEC,
+  DEVLINK_ATTR_SELFTEST_RESULT,
+  DEVLINK_ATTR_SELFTEST_RESULT_ID,
+  DEVLINK_ATTR_SELFTEST_RESULT_STATUS,
+  __DEVLINK_ATTR_SELFTEST_RESULT_MAX,
+  DEVLINK_ATTR_SELFTEST_RESULT_MAX = __DEVLINK_ATTR_SELFTEST_RESULT_MAX - 1
+};
 enum devlink_trap_action {
   DEVLINK_TRAP_ACTION_DROP,
   DEVLINK_TRAP_ACTION_TRAP,
@@ -212,6 +237,17 @@
   DEVLINK_RELOAD_LIMIT_MAX = __DEVLINK_RELOAD_LIMIT_MAX - 1
 };
 #define DEVLINK_RELOAD_LIMITS_VALID_MASK (_BITUL(__DEVLINK_RELOAD_LIMIT_MAX) - 1)
+enum devlink_linecard_state {
+  DEVLINK_LINECARD_STATE_UNSPEC,
+  DEVLINK_LINECARD_STATE_UNPROVISIONED,
+  DEVLINK_LINECARD_STATE_UNPROVISIONING,
+  DEVLINK_LINECARD_STATE_PROVISIONING,
+  DEVLINK_LINECARD_STATE_PROVISIONING_FAILED,
+  DEVLINK_LINECARD_STATE_PROVISIONED,
+  DEVLINK_LINECARD_STATE_ACTIVE,
+  __DEVLINK_LINECARD_STATE_MAX,
+  DEVLINK_LINECARD_STATE_MAX = __DEVLINK_LINECARD_STATE_MAX - 1
+};
 enum devlink_attr {
   DEVLINK_ATTR_UNSPEC,
   DEVLINK_ATTR_BUS_NAME,
@@ -384,6 +420,12 @@
   DEVLINK_ATTR_RATE_NODE_NAME,
   DEVLINK_ATTR_RATE_PARENT_NODE_NAME,
   DEVLINK_ATTR_REGION_MAX_SNAPSHOTS,
+  DEVLINK_ATTR_LINECARD_INDEX,
+  DEVLINK_ATTR_LINECARD_STATE,
+  DEVLINK_ATTR_LINECARD_TYPE,
+  DEVLINK_ATTR_LINECARD_SUPPORTED_TYPES,
+  DEVLINK_ATTR_NESTED_DEVLINK,
+  DEVLINK_ATTR_SELFTESTS,
   __DEVLINK_ATTR_MAX,
   DEVLINK_ATTR_MAX = __DEVLINK_ATTR_MAX - 1
 };
diff --git a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/dlm.h b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/dlm.h
index c75918f..499baad 100644
--- a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/dlm.h
+++ b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/dlm.h
@@ -31,6 +31,5 @@
   char * sb_lvbptr;
 };
 #define DLM_LSFL_TIMEWARN 0x00000002
-#define DLM_LSFL_FS 0x00000004
 #define DLM_LSFL_NEWEXCL 0x00000008
 #endif
diff --git a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/dm-ioctl.h b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/dm-ioctl.h
index 09f8a98..f0ff78c 100644
--- a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/dm-ioctl.h
+++ b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/dm-ioctl.h
@@ -48,23 +48,23 @@
 struct dm_target_deps {
   __u32 count;
   __u32 padding;
-  __u64 dev[0];
+  __u64 dev[];
 };
 struct dm_name_list {
   __u64 dev;
   __u32 next;
-  char name[0];
+  char name[];
 };
 #define DM_NAME_LIST_FLAG_HAS_UUID 1
 #define DM_NAME_LIST_FLAG_DOESNT_HAVE_UUID 2
 struct dm_target_versions {
   __u32 next;
   __u32 version[3];
-  char name[0];
+  char name[];
 };
 struct dm_target_msg {
   __u64 sector;
-  char message[0];
+  char message[];
 };
 enum {
   DM_VERSION_CMD = 0,
@@ -106,9 +106,9 @@
 #define DM_TARGET_MSG _IOWR(DM_IOCTL, DM_TARGET_MSG_CMD, struct dm_ioctl)
 #define DM_DEV_SET_GEOMETRY _IOWR(DM_IOCTL, DM_DEV_SET_GEOMETRY_CMD, struct dm_ioctl)
 #define DM_VERSION_MAJOR 4
-#define DM_VERSION_MINOR 45
+#define DM_VERSION_MINOR 47
 #define DM_VERSION_PATCHLEVEL 0
-#define DM_VERSION_EXTRA "-ioctl(2021-03-22)"
+#define DM_VERSION_EXTRA "-ioctl(2022-07-28)"
 #define DM_READONLY_FLAG (1 << 0)
 #define DM_SUSPEND_FLAG (1 << 1)
 #define DM_PERSISTENT_DEV_FLAG (1 << 3)
diff --git a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/dm-log-userspace.h b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/dm-log-userspace.h
index 4f0671b..37feee6 100644
--- a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/dm-log-userspace.h
+++ b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/dm-log-userspace.h
@@ -49,6 +49,6 @@
   __u32 seq;
   __u32 request_type;
   __u32 data_size;
-  char data[0];
+  char data[];
 };
 #endif
diff --git a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/dma-buf.h b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/dma-buf.h
index 221c20f..7462c15 100644
--- a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/dma-buf.h
+++ b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/dma-buf.h
@@ -29,9 +29,19 @@
 #define DMA_BUF_SYNC_END (1 << 2)
 #define DMA_BUF_SYNC_VALID_FLAGS_MASK (DMA_BUF_SYNC_RW | DMA_BUF_SYNC_END)
 #define DMA_BUF_NAME_LEN 32
+struct dma_buf_export_sync_file {
+  __u32 flags;
+  __s32 fd;
+};
+struct dma_buf_import_sync_file {
+  __u32 flags;
+  __s32 fd;
+};
 #define DMA_BUF_BASE 'b'
 #define DMA_BUF_IOCTL_SYNC _IOW(DMA_BUF_BASE, 0, struct dma_buf_sync)
 #define DMA_BUF_SET_NAME _IOW(DMA_BUF_BASE, 1, const char *)
-#define DMA_BUF_SET_NAME_A _IOW(DMA_BUF_BASE, 1, u32)
-#define DMA_BUF_SET_NAME_B _IOW(DMA_BUF_BASE, 1, u64)
+#define DMA_BUF_SET_NAME_A _IOW(DMA_BUF_BASE, 1, __u32)
+#define DMA_BUF_SET_NAME_B _IOW(DMA_BUF_BASE, 1, __u64)
+#define DMA_BUF_IOCTL_EXPORT_SYNC_FILE _IOWR(DMA_BUF_BASE, 2, struct dma_buf_export_sync_file)
+#define DMA_BUF_IOCTL_IMPORT_SYNC_FILE _IOW(DMA_BUF_BASE, 3, struct dma_buf_import_sync_file)
 #endif
diff --git a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/dn.h b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/dn.h
deleted file mode 100644
index 621f60f..0000000
--- a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/dn.h
+++ /dev/null
@@ -1,114 +0,0 @@
-/****************************************************************************
- ****************************************************************************
- ***
- ***   This header was automatically generated from a Linux kernel header
- ***   of the same name, to make information necessary for userspace to
- ***   call into the kernel available to libc.  It contains only constants,
- ***   structures, and macros generated from the original header, and thus,
- ***   contains no copyrightable information.
- ***
- ***   To edit the content of this header, modify the corresponding
- ***   source file (e.g. under external/kernel-headers/original/) then
- ***   run bionic/libc/kernel/tools/update_all.py
- ***
- ***   Any manual change here will be lost the next time this script will
- ***   be run. You've been warned!
- ***
- ****************************************************************************
- ****************************************************************************/
-#ifndef _LINUX_DN_H
-#define _LINUX_DN_H
-#include <linux/ioctl.h>
-#include <linux/types.h>
-#include <linux/if_ether.h>
-#define DNPROTO_NSP 2
-#define DNPROTO_ROU 3
-#define DNPROTO_NML 4
-#define DNPROTO_EVL 5
-#define DNPROTO_EVR 6
-#define DNPROTO_NSPT 7
-#define DN_ADDL 2
-#define DN_MAXADDL 2
-#define DN_MAXOPTL 16
-#define DN_MAXOBJL 16
-#define DN_MAXACCL 40
-#define DN_MAXALIASL 128
-#define DN_MAXNODEL 256
-#define DNBUFSIZE 65023
-#define SO_CONDATA 1
-#define SO_CONACCESS 2
-#define SO_PROXYUSR 3
-#define SO_LINKINFO 7
-#define DSO_CONDATA 1
-#define DSO_DISDATA 10
-#define DSO_CONACCESS 2
-#define DSO_ACCEPTMODE 4
-#define DSO_CONACCEPT 5
-#define DSO_CONREJECT 6
-#define DSO_LINKINFO 7
-#define DSO_STREAM 8
-#define DSO_SEQPACKET 9
-#define DSO_MAXWINDOW 11
-#define DSO_NODELAY 12
-#define DSO_CORK 13
-#define DSO_SERVICES 14
-#define DSO_INFO 15
-#define DSO_MAX 15
-#define LL_INACTIVE 0
-#define LL_CONNECTING 1
-#define LL_RUNNING 2
-#define LL_DISCONNECTING 3
-#define ACC_IMMED 0
-#define ACC_DEFER 1
-#define SDF_WILD 1
-#define SDF_PROXY 2
-#define SDF_UICPROXY 4
-struct dn_naddr {
-  __le16 a_len;
-  __u8 a_addr[DN_MAXADDL];
-};
-struct sockaddr_dn {
-  __u16 sdn_family;
-  __u8 sdn_flags;
-  __u8 sdn_objnum;
-  __le16 sdn_objnamel;
-  __u8 sdn_objname[DN_MAXOBJL];
-  struct dn_naddr sdn_add;
-};
-#define sdn_nodeaddrl sdn_add.a_len
-#define sdn_nodeaddr sdn_add.a_addr
-struct optdata_dn {
-  __le16 opt_status;
-#define opt_sts opt_status
-  __le16 opt_optl;
-  __u8 opt_data[16];
-};
-struct accessdata_dn {
-  __u8 acc_accl;
-  __u8 acc_acc[DN_MAXACCL];
-  __u8 acc_passl;
-  __u8 acc_pass[DN_MAXACCL];
-  __u8 acc_userl;
-  __u8 acc_user[DN_MAXACCL];
-};
-struct linkinfo_dn {
-  __u16 idn_segsize;
-  __u8 idn_linkstate;
-};
-union etheraddress {
-  __u8 dne_addr[ETH_ALEN];
-  struct {
-    __u8 dne_hiord[4];
-    __u8 dne_nodeaddr[2];
-  } dne_remote;
-};
-struct dn_addr {
-  __le16 dna_family;
-  union etheraddress dna_netaddr;
-};
-#define DECNET_IOCTL_BASE 0x89
-#define SIOCSNETADDR _IOW(DECNET_IOCTL_BASE, 0xe0, struct dn_naddr)
-#define SIOCGNETADDR _IOR(DECNET_IOCTL_BASE, 0xe1, struct dn_naddr)
-#define OSIOCSNETADDR _IOW(DECNET_IOCTL_BASE, 0xe0, int)
-#define OSIOCGNETADDR _IOR(DECNET_IOCTL_BASE, 0xe1, int)
-#endif
diff --git a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/dns_resolver.h b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/dns_resolver.h
index 21cb5c0..e7113d0 100644
--- a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/dns_resolver.h
+++ b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/dns_resolver.h
@@ -55,13 +55,13 @@
   __u8 zero;
   __u8 content;
   __u8 version;
-} __packed;
+} __attribute__((__packed__));
 struct dns_server_list_v1_header {
   struct dns_payload_header hdr;
   __u8 source;
   __u8 status;
   __u8 nr_servers;
-} __packed;
+} __attribute__((__packed__));
 struct dns_server_list_v1_server {
   __u16 name_len;
   __u16 priority;
@@ -71,8 +71,8 @@
   __u8 status;
   __u8 protocol;
   __u8 nr_addrs;
-} __packed;
+} __attribute__((__packed__));
 struct dns_server_list_v1_address {
   __u8 address_type;
-} __packed;
+} __attribute__((__packed__));
 #endif
diff --git a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/dw100.h b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/dw100.h
new file mode 100644
index 0000000..13d8487
--- /dev/null
+++ b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/dw100.h
@@ -0,0 +1,23 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef __UAPI_DW100_H__
+#define __UAPI_DW100_H__
+#include <linux/v4l2-controls.h>
+#define V4L2_CID_DW100_DEWARPING_16x16_VERTEX_MAP (V4L2_CID_USER_DW100_BASE + 1)
+#endif
diff --git a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/elf-em.h b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/elf-em.h
index d1ed1f6..92da93d 100644
--- a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/elf-em.h
+++ b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/elf-em.h
@@ -61,6 +61,7 @@
 #define EM_RISCV 243
 #define EM_BPF 247
 #define EM_CSKY 252
+#define EM_LOONGARCH 258
 #define EM_FRV 0x5441
 #define EM_ALPHA 0x9026
 #define EM_CYGNUS_M32R 0x9041
diff --git a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/elf.h b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/elf.h
index 7655f12..28c8426 100644
--- a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/elf.h
+++ b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/elf.h
@@ -45,9 +45,11 @@
 #define PT_HIOS 0x6fffffff
 #define PT_LOPROC 0x70000000
 #define PT_HIPROC 0x7fffffff
-#define PT_GNU_EH_FRAME 0x6474e550
-#define PT_GNU_PROPERTY 0x6474e553
+#define PT_GNU_EH_FRAME (PT_LOOS + 0x474e550)
 #define PT_GNU_STACK (PT_LOOS + 0x474e551)
+#define PT_GNU_RELRO (PT_LOOS + 0x474e552)
+#define PT_GNU_PROPERTY (PT_LOOS + 0x474e553)
+#define PT_AARCH64_MEMTAG_MTE (PT_LOPROC + 0x2)
 #define PN_XNUM 0xffff
 #define ET_NONE 0
 #define ET_REL 1
@@ -110,7 +112,7 @@
 #define STT_COMMON 5
 #define STT_TLS 6
 #define ELF_ST_BIND(x) ((x) >> 4)
-#define ELF_ST_TYPE(x) (((unsigned int) x) & 0xf)
+#define ELF_ST_TYPE(x) ((x) & 0xf)
 #define ELF32_ST_BIND(x) ELF_ST_BIND(x)
 #define ELF32_ST_TYPE(x) ELF_ST_TYPE(x)
 #define ELF64_ST_BIND(x) ELF_ST_BIND(x)
@@ -350,6 +352,7 @@
 #define NT_S390_GS_CB 0x30b
 #define NT_S390_GS_BC 0x30c
 #define NT_S390_RI_CB 0x30d
+#define NT_S390_PV_CPU_DATA 0x30e
 #define NT_ARM_VFP 0x400
 #define NT_ARM_TLS 0x401
 #define NT_ARM_HW_BREAK 0x402
@@ -361,11 +364,18 @@
 #define NT_ARM_PACG_KEYS 0x408
 #define NT_ARM_TAGGED_ADDR_CTRL 0x409
 #define NT_ARM_PAC_ENABLED_KEYS 0x40a
+#define NT_ARM_SSVE 0x40b
+#define NT_ARM_ZA 0x40c
 #define NT_ARC_V2 0x600
 #define NT_VMCOREDD 0x700
 #define NT_MIPS_DSP 0x800
 #define NT_MIPS_FP_MODE 0x801
 #define NT_MIPS_MSA 0x802
+#define NT_LOONGARCH_CPUCFG 0xa00
+#define NT_LOONGARCH_CSR 0xa01
+#define NT_LOONGARCH_LSX 0xa02
+#define NT_LOONGARCH_LASX 0xa03
+#define NT_LOONGARCH_LBT 0xa04
 #define NT_GNU_PROPERTY_TYPE_0 5
 typedef struct elf32_note {
   Elf32_Word n_namesz;
diff --git a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/ethtool.h b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/ethtool.h
index 741ea2a..8bdd622 100644
--- a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/ethtool.h
+++ b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/ethtool.h
@@ -98,7 +98,7 @@
   __u32 id;
   __u32 type_id;
   __u32 len;
-  void * data[0];
+  void * data[];
 };
 #define DOWNSHIFT_DEV_DEFAULT_COUNT 0xff
 #define DOWNSHIFT_DEV_DISABLE 0
@@ -118,14 +118,14 @@
   __u32 cmd;
   __u32 version;
   __u32 len;
-  __u8 data[0];
+  __u8 data[];
 };
 struct ethtool_eeprom {
   __u32 cmd;
   __u32 magic;
   __u32 offset;
   __u32 len;
-  __u8 data[0];
+  __u8 data[];
 };
 struct ethtool_eee {
   __u32 cmd;
@@ -277,17 +277,31 @@
   ETHTOOL_MODULE_POWER_MODE_LOW = 1,
   ETHTOOL_MODULE_POWER_MODE_HIGH,
 };
+enum ethtool_podl_pse_admin_state {
+  ETHTOOL_PODL_PSE_ADMIN_STATE_UNKNOWN = 1,
+  ETHTOOL_PODL_PSE_ADMIN_STATE_DISABLED,
+  ETHTOOL_PODL_PSE_ADMIN_STATE_ENABLED,
+};
+enum ethtool_podl_pse_pw_d_status {
+  ETHTOOL_PODL_PSE_PW_D_STATUS_UNKNOWN = 1,
+  ETHTOOL_PODL_PSE_PW_D_STATUS_DISABLED,
+  ETHTOOL_PODL_PSE_PW_D_STATUS_SEARCHING,
+  ETHTOOL_PODL_PSE_PW_D_STATUS_DELIVERING,
+  ETHTOOL_PODL_PSE_PW_D_STATUS_SLEEP,
+  ETHTOOL_PODL_PSE_PW_D_STATUS_IDLE,
+  ETHTOOL_PODL_PSE_PW_D_STATUS_ERROR,
+};
 struct ethtool_gstrings {
   __u32 cmd;
   __u32 string_set;
   __u32 len;
-  __u8 data[0];
+  __u8 data[];
 };
 struct ethtool_sset_info {
   __u32 cmd;
   __u32 reserved;
   __u64 sset_mask;
-  __u32 data[0];
+  __u32 data[];
 };
 enum ethtool_test_flags {
   ETH_TEST_FL_OFFLINE = (1 << 0),
@@ -300,17 +314,17 @@
   __u32 flags;
   __u32 reserved;
   __u32 len;
-  __u64 data[0];
+  __u64 data[];
 };
 struct ethtool_stats {
   __u32 cmd;
   __u32 n_stats;
-  __u64 data[0];
+  __u64 data[];
 };
 struct ethtool_perm_addr {
   __u32 cmd;
   __u32 size;
-  __u8 data[0];
+  __u8 data[];
 };
 enum ethtool_flags {
   ETH_FLAG_TXVLAN = (1 << 7),
@@ -410,7 +424,7 @@
 struct ethtool_rxfh_indir {
   __u32 cmd;
   __u32 size;
-  __u32 ring_index[0];
+  __u32 ring_index[];
 };
 struct ethtool_rxfh {
   __u32 cmd;
@@ -420,7 +434,7 @@
   __u8 hfunc;
   __u8 rsvd8[3];
   __u32 rsvd32;
-  __u32 rss_config[0];
+  __u32 rss_config[];
 };
 #define ETH_RXFH_CONTEXT_ALLOC 0xffffffff
 #define ETH_RXFH_INDIR_NO_CHANGE 0xffffffff
@@ -462,7 +476,7 @@
   __u32 version;
   __u32 flag;
   __u32 len;
-  __u8 data[0];
+  __u8 data[];
 };
 #define ETH_FW_DUMP_DISABLE 0
 struct ethtool_get_features_block {
@@ -474,7 +488,7 @@
 struct ethtool_gfeatures {
   __u32 cmd;
   __u32 size;
-  struct ethtool_get_features_block features[0];
+  struct ethtool_get_features_block features[];
 };
 struct ethtool_set_features_block {
   __u32 valid;
@@ -483,7 +497,7 @@
 struct ethtool_sfeatures {
   __u32 cmd;
   __u32 size;
-  struct ethtool_set_features_block features[0];
+  struct ethtool_set_features_block features[];
 };
 struct ethtool_ts_info {
   __u32 cmd;
@@ -704,6 +718,7 @@
   ETHTOOL_LINK_MODE_400000baseCR4_Full_BIT = 89,
   ETHTOOL_LINK_MODE_100baseFX_Half_BIT = 90,
   ETHTOOL_LINK_MODE_100baseFX_Full_BIT = 91,
+  ETHTOOL_LINK_MODE_10baseT1L_Full_BIT = 92,
   __ETHTOOL_LINK_MODE_MASK_NBITS
 };
 #define __ETHTOOL_LINK_MODE_LEGACY_MASK(base_name) (1UL << (ETHTOOL_LINK_MODE_ ##base_name ##_BIT))
@@ -799,6 +814,10 @@
 #define MASTER_SLAVE_STATE_MASTER 2
 #define MASTER_SLAVE_STATE_SLAVE 3
 #define MASTER_SLAVE_STATE_ERR 4
+#define RATE_MATCH_NONE 0
+#define RATE_MATCH_PAUSE 1
+#define RATE_MATCH_CRS 2
+#define RATE_MATCH_OPEN_LOOP 3
 #define PORT_TP 0x00
 #define PORT_AUI 0x01
 #define PORT_MII 0x02
@@ -900,8 +919,8 @@
   __u8 transceiver;
   __u8 master_slave_cfg;
   __u8 master_slave_state;
-  __u8 reserved1[1];
+  __u8 rate_matching;
   __u32 reserved[7];
-  __u32 link_mode_masks[0];
+  __u32 link_mode_masks[];
 };
 #endif
diff --git a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/ethtool_netlink.h b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/ethtool_netlink.h
index 7dcae22..08c6936 100644
--- a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/ethtool_netlink.h
+++ b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/ethtool_netlink.h
@@ -56,6 +56,8 @@
   ETHTOOL_MSG_PHC_VCLOCKS_GET,
   ETHTOOL_MSG_MODULE_GET,
   ETHTOOL_MSG_MODULE_SET,
+  ETHTOOL_MSG_PSE_GET,
+  ETHTOOL_MSG_PSE_SET,
   __ETHTOOL_MSG_USER_CNT,
   ETHTOOL_MSG_USER_MAX = __ETHTOOL_MSG_USER_CNT - 1
 };
@@ -97,6 +99,7 @@
   ETHTOOL_MSG_PHC_VCLOCKS_GET_REPLY,
   ETHTOOL_MSG_MODULE_GET_REPLY,
   ETHTOOL_MSG_MODULE_NTF,
+  ETHTOOL_MSG_PSE_GET_REPLY,
   __ETHTOOL_MSG_KERNEL_CNT,
   ETHTOOL_MSG_KERNEL_MAX = __ETHTOOL_MSG_KERNEL_CNT - 1
 };
@@ -193,6 +196,7 @@
   ETHTOOL_A_LINKMODES_MASTER_SLAVE_CFG,
   ETHTOOL_A_LINKMODES_MASTER_SLAVE_STATE,
   ETHTOOL_A_LINKMODES_LANES,
+  ETHTOOL_A_LINKMODES_RATE_MATCHING,
   __ETHTOOL_A_LINKMODES_CNT,
   ETHTOOL_A_LINKMODES_MAX = __ETHTOOL_A_LINKMODES_CNT - 1
 };
@@ -240,6 +244,11 @@
   ETHTOOL_A_PRIVFLAGS_MAX = __ETHTOOL_A_PRIVFLAGS_CNT - 1
 };
 enum {
+  ETHTOOL_TCP_DATA_SPLIT_UNKNOWN = 0,
+  ETHTOOL_TCP_DATA_SPLIT_DISABLED,
+  ETHTOOL_TCP_DATA_SPLIT_ENABLED,
+};
+enum {
   ETHTOOL_A_RINGS_UNSPEC,
   ETHTOOL_A_RINGS_HEADER,
   ETHTOOL_A_RINGS_RX_MAX,
@@ -251,6 +260,9 @@
   ETHTOOL_A_RINGS_RX_JUMBO,
   ETHTOOL_A_RINGS_TX,
   ETHTOOL_A_RINGS_RX_BUF_LEN,
+  ETHTOOL_A_RINGS_TCP_DATA_SPLIT,
+  ETHTOOL_A_RINGS_CQE_SIZE,
+  ETHTOOL_A_RINGS_TX_PUSH,
   __ETHTOOL_A_RINGS_CNT,
   ETHTOOL_A_RINGS_MAX = (__ETHTOOL_A_RINGS_CNT - 1)
 };
@@ -601,6 +613,15 @@
   __ETHTOOL_A_MODULE_CNT,
   ETHTOOL_A_MODULE_MAX = (__ETHTOOL_A_MODULE_CNT - 1)
 };
+enum {
+  ETHTOOL_A_PSE_UNSPEC,
+  ETHTOOL_A_PSE_HEADER,
+  ETHTOOL_A_PODL_PSE_ADMIN_STATE,
+  ETHTOOL_A_PODL_PSE_ADMIN_CONTROL,
+  ETHTOOL_A_PODL_PSE_PW_D_STATUS,
+  __ETHTOOL_A_PSE_CNT,
+  ETHTOOL_A_PSE_MAX = (__ETHTOOL_A_PSE_CNT - 1)
+};
 #define ETHTOOL_GENL_NAME "ethtool"
 #define ETHTOOL_GENL_VERSION 1
 #define ETHTOOL_MCGRP_MONITOR_NAME "monitor"
diff --git a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/f2fs.h b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/f2fs.h
index 76da8f6..3fcd444 100644
--- a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/f2fs.h
+++ b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/f2fs.h
@@ -25,7 +25,7 @@
 #define F2FS_IOC_COMMIT_ATOMIC_WRITE _IO(F2FS_IOCTL_MAGIC, 2)
 #define F2FS_IOC_START_VOLATILE_WRITE _IO(F2FS_IOCTL_MAGIC, 3)
 #define F2FS_IOC_RELEASE_VOLATILE_WRITE _IO(F2FS_IOCTL_MAGIC, 4)
-#define F2FS_IOC_ABORT_VOLATILE_WRITE _IO(F2FS_IOCTL_MAGIC, 5)
+#define F2FS_IOC_ABORT_ATOMIC_WRITE _IO(F2FS_IOCTL_MAGIC, 5)
 #define F2FS_IOC_GARBAGE_COLLECT _IOW(F2FS_IOCTL_MAGIC, 6, __u32)
 #define F2FS_IOC_WRITE_CHECKPOINT _IO(F2FS_IOCTL_MAGIC, 7)
 #define F2FS_IOC_DEFRAGMENT _IOWR(F2FS_IOCTL_MAGIC, 8, struct f2fs_defragment)
diff --git a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/fanotify.h b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/fanotify.h
index 6249292..9815a64 100644
--- a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/fanotify.h
+++ b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/fanotify.h
@@ -67,9 +67,12 @@
 #define FAN_MARK_IGNORED_MASK 0x00000020
 #define FAN_MARK_IGNORED_SURV_MODIFY 0x00000040
 #define FAN_MARK_FLUSH 0x00000080
+#define FAN_MARK_EVICTABLE 0x00000200
+#define FAN_MARK_IGNORE 0x00000400
 #define FAN_MARK_INODE 0x00000000
 #define FAN_MARK_MOUNT 0x00000010
 #define FAN_MARK_FILESYSTEM 0x00000100
+#define FAN_MARK_IGNORE_SURV (FAN_MARK_IGNORE | FAN_MARK_IGNORED_SURV_MODIFY)
 #define FAN_ALL_MARK_FLAGS (FAN_MARK_ADD | FAN_MARK_REMOVE | FAN_MARK_DONT_FOLLOW | FAN_MARK_ONLYDIR | FAN_MARK_MOUNT | FAN_MARK_IGNORED_MASK | FAN_MARK_IGNORED_SURV_MODIFY | FAN_MARK_FLUSH)
 #define FAN_ALL_EVENTS (FAN_ACCESS | FAN_MODIFY | FAN_CLOSE | FAN_OPEN)
 #define FAN_ALL_PERM_EVENTS (FAN_OPEN_PERM | FAN_ACCESS_PERM)
@@ -99,7 +102,7 @@
 struct fanotify_event_info_fid {
   struct fanotify_event_info_header hdr;
   __kernel_fsid_t fsid;
-  unsigned char handle[0];
+  unsigned char handle[];
 };
 struct fanotify_event_info_pidfd {
   struct fanotify_event_info_header hdr;
diff --git a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/fiemap.h b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/fiemap.h
index 4310786..a67a5fe 100644
--- a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/fiemap.h
+++ b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/fiemap.h
@@ -34,7 +34,7 @@
   __u32 fm_mapped_extents;
   __u32 fm_extent_count;
   __u32 fm_reserved;
-  struct fiemap_extent fm_extents[0];
+  struct fiemap_extent fm_extents[];
 };
 #define FIEMAP_MAX_OFFSET (~0ULL)
 #define FIEMAP_FLAG_SYNC 0x00000001
diff --git a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/firewire-cdev.h b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/firewire-cdev.h
index 92957bc..a54191c 100644
--- a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/firewire-cdev.h
+++ b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/firewire-cdev.h
@@ -50,7 +50,7 @@
   __u32 type;
   __u32 rcode;
   __u32 length;
-  __u32 data[0];
+  __u32 data[];
 };
 struct fw_cdev_event_request {
   __u64 closure;
@@ -59,7 +59,7 @@
   __u64 offset;
   __u32 handle;
   __u32 length;
-  __u32 data[0];
+  __u32 data[];
 };
 struct fw_cdev_event_request2 {
   __u64 closure;
@@ -72,14 +72,14 @@
   __u32 generation;
   __u32 handle;
   __u32 length;
-  __u32 data[0];
+  __u32 data[];
 };
 struct fw_cdev_event_iso_interrupt {
   __u64 closure;
   __u32 type;
   __u32 cycle;
   __u32 header_length;
-  __u32 header[0];
+  __u32 header[];
 };
 struct fw_cdev_event_iso_interrupt_mc {
   __u64 closure;
@@ -98,7 +98,7 @@
   __u32 type;
   __u32 rcode;
   __u32 length;
-  __u32 data[0];
+  __u32 data[];
 };
 union fw_cdev_event {
   struct fw_cdev_event_common common;
@@ -207,7 +207,7 @@
 #define FW_CDEV_ISO_HEADER_LENGTH(v) ((v) << 24)
 struct fw_cdev_iso_packet {
   __u32 control;
-  __u32 header[0];
+  __u32 header[];
 };
 struct fw_cdev_queue_iso {
   __u64 packets;
diff --git a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/fs.h b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/fs.h
index 3bb4183..96f9181 100644
--- a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/fs.h
+++ b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/fs.h
@@ -63,7 +63,7 @@
   __u16 dest_count;
   __u16 reserved1;
   __u32 reserved2;
-  struct file_dedupe_range_info info[0];
+  struct file_dedupe_range_info info[];
 };
 struct files_stat_struct {
   unsigned long nr_files;
diff --git a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/fscrypt.h b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/fscrypt.h
index ca42eb3..e6b5358 100644
--- a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/fscrypt.h
+++ b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/fscrypt.h
@@ -33,6 +33,7 @@
 #define FSCRYPT_MODE_AES_128_CBC 5
 #define FSCRYPT_MODE_AES_128_CTS 6
 #define FSCRYPT_MODE_ADIANTUM 9
+#define FSCRYPT_MODE_AES_256_HCTR2 10
 #define FSCRYPT_POLICY_V1 0
 #define FSCRYPT_KEY_DESCRIPTOR_SIZE 8
 struct fscrypt_policy_v1 {
diff --git a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/fsi.h b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/fsi.h
index fc88464..b080c21 100644
--- a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/fsi.h
+++ b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/fsi.h
@@ -48,4 +48,5 @@
 #define FSI_SCOM_READ _IOWR('s', 0x01, struct scom_access)
 #define FSI_SCOM_WRITE _IOWR('s', 0x02, struct scom_access)
 #define FSI_SCOM_RESET _IOW('s', 0x03, __u32)
+#define FSI_SBEFIFO_READ_TIMEOUT_SECONDS _IOW('s', 0x00, __u32)
 #endif
diff --git a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/fuse.h b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/fuse.h
index 144e960..ae667eb 100644
--- a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/fuse.h
+++ b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/fuse.h
@@ -20,7 +20,7 @@
 #define _LINUX_FUSE_H
 #include <stdint.h>
 #define FUSE_KERNEL_VERSION 7
-#define FUSE_KERNEL_MINOR_VERSION 36
+#define FUSE_KERNEL_MINOR_VERSION 37
 #define FUSE_ROOT_ID 1
 struct fuse_attr {
   uint64_t ino;
@@ -187,6 +187,7 @@
   FUSE_SETUPMAPPING = 48,
   FUSE_REMOVEMAPPING = 49,
   FUSE_SYNCFS = 50,
+  FUSE_TMPFILE = 51,
   FUSE_CANONICAL_PATH = 2016,
   CUSE_INIT = 4096,
   CUSE_INIT_BSWAP_RESERVED = 1048576,
diff --git a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/genetlink.h b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/genetlink.h
index 2e2137d..0f86331 100644
--- a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/genetlink.h
+++ b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/genetlink.h
@@ -81,6 +81,7 @@
   CTRL_ATTR_MCAST_GRP_ID,
   __CTRL_ATTR_MCAST_GRP_MAX,
 };
+#define CTRL_ATTR_MCAST_GRP_MAX (__CTRL_ATTR_MCAST_GRP_MAX - 1)
 enum {
   CTRL_ATTR_POLICY_UNSPEC,
   CTRL_ATTR_POLICY_DO,
@@ -88,5 +89,5 @@
   __CTRL_ATTR_POLICY_DUMP_MAX,
   CTRL_ATTR_POLICY_DUMP_MAX = __CTRL_ATTR_POLICY_DUMP_MAX - 1
 };
-#define CTRL_ATTR_MCAST_GRP_MAX (__CTRL_ATTR_MCAST_GRP_MAX - 1)
+#define CTRL_ATTR_POLICY_MAX (__CTRL_ATTR_POLICY_DUMP_MAX - 1)
 #endif
diff --git a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/gpio.h b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/gpio.h
index 7e010d9..e760321 100644
--- a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/gpio.h
+++ b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/gpio.h
@@ -42,6 +42,7 @@
   GPIO_V2_LINE_FLAG_BIAS_PULL_DOWN = _BITULL(9),
   GPIO_V2_LINE_FLAG_BIAS_DISABLED = _BITULL(10),
   GPIO_V2_LINE_FLAG_EVENT_CLOCK_REALTIME = _BITULL(11),
+  GPIO_V2_LINE_FLAG_EVENT_CLOCK_HTE = _BITULL(12),
 };
 struct gpio_v2_line_values {
   __aligned_u64 bits;
diff --git a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/gtp.h b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/gtp.h
index 3b9416e..20bc3d6 100644
--- a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/gtp.h
+++ b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/gtp.h
@@ -23,6 +23,7 @@
   GTP_CMD_NEWPDP,
   GTP_CMD_DELPDP,
   GTP_CMD_GETPDP,
+  GTP_CMD_ECHOREQ,
   GTP_CMD_MAX,
 };
 enum gtp_version {
diff --git a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/hid.h b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/hid.h
index ce93cd7..37ab462 100644
--- a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/hid.h
+++ b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/hid.h
@@ -22,12 +22,20 @@
 #define USB_INTERFACE_SUBCLASS_BOOT 1
 #define USB_INTERFACE_PROTOCOL_KEYBOARD 1
 #define USB_INTERFACE_PROTOCOL_MOUSE 2
-#define HID_REQ_GET_REPORT 0x01
-#define HID_REQ_GET_IDLE 0x02
-#define HID_REQ_GET_PROTOCOL 0x03
-#define HID_REQ_SET_REPORT 0x09
-#define HID_REQ_SET_IDLE 0x0A
-#define HID_REQ_SET_PROTOCOL 0x0B
+enum hid_report_type {
+  HID_INPUT_REPORT = 0,
+  HID_OUTPUT_REPORT = 1,
+  HID_FEATURE_REPORT = 2,
+  HID_REPORT_TYPES,
+};
+enum hid_class_request {
+  HID_REQ_GET_REPORT = 0x01,
+  HID_REQ_GET_IDLE = 0x02,
+  HID_REQ_GET_PROTOCOL = 0x03,
+  HID_REQ_SET_REPORT = 0x09,
+  HID_REQ_SET_IDLE = 0x0A,
+  HID_REQ_SET_PROTOCOL = 0x0B,
+};
 #define HID_DT_HID (USB_TYPE_CLASS | 0x01)
 #define HID_DT_REPORT (USB_TYPE_CLASS | 0x02)
 #define HID_DT_PHYSICAL (USB_TYPE_CLASS | 0x03)
diff --git a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/icmp.h b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/icmp.h
index 8847a48..77cb328 100644
--- a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/icmp.h
+++ b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/icmp.h
@@ -84,7 +84,11 @@
     } echo;
     __be32 gateway;
     struct {
+#ifdef __BIONIC__
       __be16 __linux_unused;
+#else
+      __be16 __linux_unused;
+#endif
       __be16 mtu;
     } frag;
     __u8 reserved[4];
diff --git a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/idxd.h b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/idxd.h
index ad9ed48..a456352 100644
--- a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/idxd.h
+++ b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/idxd.h
@@ -38,6 +38,7 @@
   IDXD_SCMD_WQ_NO_SIZE = 0x800e0000,
   IDXD_SCMD_WQ_NO_PRIV = 0x800f0000,
   IDXD_SCMD_WQ_IRQ_ERR = 0x80100000,
+  IDXD_SCMD_WQ_USER_NO_IOMMU = 0x80110000,
 };
 #define IDXD_SCMD_SOFTERR_MASK 0x80000000
 #define IDXD_SCMD_SOFTERR_SHIFT 16
@@ -57,6 +58,11 @@
 #define IDXD_OP_FLAG_DRDBK 0x4000
 #define IDXD_OP_FLAG_DSTS 0x8000
 #define IDXD_OP_FLAG_RD_SRC2_AECS 0x010000
+#define IDXD_OP_FLAG_RD_SRC2_2ND 0x020000
+#define IDXD_OP_FLAG_WR_SRC2_AECS_COMP 0x040000
+#define IDXD_OP_FLAG_WR_SRC2_AECS_OVFL 0x080000
+#define IDXD_OP_FLAG_SRC2_STS 0x100000
+#define IDXD_OP_FLAG_CRC_RFC3720 0x200000
 enum dsa_opcode {
   DSA_OPCODE_NOOP = 0,
   DSA_OPCODE_BATCH,
@@ -82,6 +88,18 @@
   IAX_OPCODE_MEMMOVE,
   IAX_OPCODE_DECOMPRESS = 0x42,
   IAX_OPCODE_COMPRESS,
+  IAX_OPCODE_CRC64,
+  IAX_OPCODE_ZERO_DECOMP_32 = 0x48,
+  IAX_OPCODE_ZERO_DECOMP_16,
+  IAX_OPCODE_ZERO_COMP_32 = 0x4c,
+  IAX_OPCODE_ZERO_COMP_16,
+  IAX_OPCODE_SCAN = 0x50,
+  IAX_OPCODE_SET_MEMBER,
+  IAX_OPCODE_EXTRACT,
+  IAX_OPCODE_SELECT,
+  IAX_OPCODE_RLE_BURST,
+  IAX_OPCODE_FIND_UNIQUE,
+  IAX_OPCODE_EXPAND,
 };
 enum dsa_completion_status {
   DSA_COMP_NONE = 0,
@@ -118,6 +136,7 @@
   IAX_COMP_NONE = 0,
   IAX_COMP_SUCCESS,
   IAX_COMP_PAGE_FAULT_IR = 0x04,
+  IAX_COMP_ANALYTICS_ERROR = 0x0a,
   IAX_COMP_OUTBUF_OVERFLOW,
   IAX_COMP_BAD_OPCODE = 0x10,
   IAX_COMP_INVALID_FLAGS,
@@ -138,7 +157,10 @@
   IAX_COMP_WATCHDOG,
   IAX_COMP_INVALID_COMP_FLAG = 0x30,
   IAX_COMP_INVALID_FILTER_FLAG,
-  IAX_COMP_INVALID_NUM_ELEMS = 0x33,
+  IAX_COMP_INVALID_INPUT_SIZE,
+  IAX_COMP_INVALID_NUM_ELEMS,
+  IAX_COMP_INVALID_SRC1_WIDTH,
+  IAX_COMP_INVALID_INVERT_OUT,
 };
 #define DSA_COMP_STATUS_MASK 0x7f
 #define DSA_COMP_STATUS_WRITE 0x80
@@ -291,8 +313,12 @@
   uint32_t output_size;
   uint8_t output_bits;
   uint8_t rsvd3;
-  uint16_t rsvd4;
-  uint64_t rsvd5[4];
+  uint16_t xor_csum;
+  uint32_t crc;
+  uint32_t min;
+  uint32_t max;
+  uint32_t sum;
+  uint64_t rsvd4[2];
 } __attribute__((packed));
 struct iax_raw_completion_record {
   uint64_t field[8];
diff --git a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/if_addr.h b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/if_addr.h
index 6a6b640..a225e69 100644
--- a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/if_addr.h
+++ b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/if_addr.h
@@ -39,6 +39,7 @@
   IFA_FLAGS,
   IFA_RT_PRIORITY,
   IFA_TARGET_NETNSID,
+  IFA_PROTO,
   __IFA_MAX,
 };
 #define IFA_MAX (__IFA_MAX - 1)
@@ -63,4 +64,8 @@
 };
 #define IFA_RTA(r) ((struct rtattr *) (((char *) (r)) + NLMSG_ALIGN(sizeof(struct ifaddrmsg))))
 #define IFA_PAYLOAD(n) NLMSG_PAYLOAD(n, sizeof(struct ifaddrmsg))
+#define IFAPROT_UNSPEC 0
+#define IFAPROT_KERNEL_LO 1
+#define IFAPROT_KERNEL_RA 2
+#define IFAPROT_KERNEL_LL 3
 #endif
diff --git a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/if_alg.h b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/if_alg.h
index 6530a16..237fe6e 100644
--- a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/if_alg.h
+++ b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/if_alg.h
@@ -35,7 +35,7 @@
 };
 struct af_alg_iv {
   __u32 ivlen;
-  __u8 iv[0];
+  __u8 iv[];
 };
 #define ALG_SET_KEY 1
 #define ALG_SET_IV 2
diff --git a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/if_arcnet.h b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/if_arcnet.h
index 6aece37..65b07e1 100644
--- a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/if_arcnet.h
+++ b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/if_arcnet.h
@@ -40,18 +40,18 @@
   __u8 proto;
   __u8 split_flag;
   __be16 sequence;
-  __u8 payload[0];
+  __u8 payload[];
 };
 #define RFC1201_HDR_SIZE 4
 struct arc_rfc1051 {
   __u8 proto;
-  __u8 payload[0];
+  __u8 payload[];
 };
 #define RFC1051_HDR_SIZE 1
 struct arc_eth_encap {
   __u8 proto;
   struct ethhdr eth;
-  __u8 payload[0];
+  __u8 payload[];
 };
 #define ETH_ENCAP_HDR_SIZE 14
 struct arc_cap {
diff --git a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/if_bridge.h b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/if_bridge.h
index 2054fb3..0f08866 100644
--- a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/if_bridge.h
+++ b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/if_bridge.h
@@ -108,6 +108,7 @@
   IFLA_BRIDGE_VLAN_TUNNEL_INFO,
   IFLA_BRIDGE_MRP,
   IFLA_BRIDGE_CFM,
+  IFLA_BRIDGE_MST,
   __IFLA_BRIDGE_MAX,
 };
 #define IFLA_BRIDGE_MAX (__IFLA_BRIDGE_MAX - 1)
@@ -384,6 +385,19 @@
   __IFLA_BRIDGE_CFM_CC_PEER_STATUS_MAX,
 };
 #define IFLA_BRIDGE_CFM_CC_PEER_STATUS_MAX (__IFLA_BRIDGE_CFM_CC_PEER_STATUS_MAX - 1)
+enum {
+  IFLA_BRIDGE_MST_UNSPEC,
+  IFLA_BRIDGE_MST_ENTRY,
+  __IFLA_BRIDGE_MST_MAX,
+};
+#define IFLA_BRIDGE_MST_MAX (__IFLA_BRIDGE_MST_MAX - 1)
+enum {
+  IFLA_BRIDGE_MST_ENTRY_UNSPEC,
+  IFLA_BRIDGE_MST_ENTRY_MSTI,
+  IFLA_BRIDGE_MST_ENTRY_STATE,
+  __IFLA_BRIDGE_MST_ENTRY_MAX,
+};
+#define IFLA_BRIDGE_MST_ENTRY_MAX (__IFLA_BRIDGE_MST_ENTRY_MAX - 1)
 struct bridge_stp_xstats {
   __u64 transition_blk;
   __u64 transition_fwd;
@@ -460,6 +474,7 @@
   BRIDGE_VLANDB_GOPTS_MCAST_QUERIER,
   BRIDGE_VLANDB_GOPTS_MCAST_ROUTER_PORTS,
   BRIDGE_VLANDB_GOPTS_MCAST_QUERIER_STATE,
+  BRIDGE_VLANDB_GOPTS_MSTI,
   __BRIDGE_VLANDB_GOPTS_MAX
 };
 #define BRIDGE_VLANDB_GOPTS_MAX (__BRIDGE_VLANDB_GOPTS_MAX - 1)
@@ -599,6 +614,7 @@
 enum br_boolopt_id {
   BR_BOOLOPT_NO_LL_LEARN,
   BR_BOOLOPT_MCAST_VLAN_SNOOPING,
+  BR_BOOLOPT_MST_ENABLE,
   BR_BOOLOPT_MAX
 };
 struct br_boolopt_multi {
diff --git a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/if_ether.h b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/if_ether.h
index 1f7f8f2..6043921 100644
--- a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/if_ether.h
+++ b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/if_ether.h
@@ -67,8 +67,10 @@
 #define ETH_P_LINK_CTL 0x886c
 #define ETH_P_ATMFATE 0x8884
 #define ETH_P_PAE 0x888E
+#define ETH_P_PROFINET 0x8892
 #define ETH_P_REALTEK 0x8899
 #define ETH_P_AOE 0x88A2
+#define ETH_P_ETHERCAT 0x88A4
 #define ETH_P_8021AD 0x88A8
 #define ETH_P_802_EX1 0x88B5
 #define ETH_P_PREAUTH 0x88C7
@@ -95,6 +97,7 @@
 #define ETH_P_QINQ3 0x9300
 #define ETH_P_EDSA 0xDADA
 #define ETH_P_DSA_8021Q 0xDADB
+#define ETH_P_DSA_A5PSW 0xE001
 #define ETH_P_IFE 0xED3E
 #define ETH_P_AF_IUCV 0xFBFB
 #define ETH_P_802_3_MIN 0x0600
@@ -109,6 +112,7 @@
 #define ETH_P_LOCALTALK 0x0009
 #define ETH_P_CAN 0x000C
 #define ETH_P_CANFD 0x000D
+#define ETH_P_CANXL 0x000E
 #define ETH_P_PPPTALK 0x0010
 #define ETH_P_TR_802_2 0x0011
 #define ETH_P_MOBITEX 0x0015
diff --git a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/if_link.h b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/if_link.h
index 7e413ae..ebf403a 100644
--- a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/if_link.h
+++ b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/if_link.h
@@ -71,6 +71,18 @@
   __u64 rx_compressed;
   __u64 tx_compressed;
   __u64 rx_nohandler;
+  __u64 rx_otherhost_dropped;
+};
+struct rtnl_hw_stats64 {
+  __u64 rx_packets;
+  __u64 tx_packets;
+  __u64 rx_bytes;
+  __u64 tx_bytes;
+  __u64 rx_errors;
+  __u64 tx_errors;
+  __u64 rx_dropped;
+  __u64 tx_dropped;
+  __u64 multicast;
 };
 struct rtnl_link_ifmap {
   __u64 mem_start;
@@ -151,6 +163,9 @@
   IFLA_PARENT_DEV_NAME,
   IFLA_PARENT_DEV_BUS_NAME,
   IFLA_GRO_MAX_SIZE,
+  IFLA_TSO_MAX_SIZE,
+  IFLA_TSO_MAX_SEGS,
+  IFLA_ALLMULTI,
   __IFLA_MAX
 };
 #define IFLA_MAX (__IFLA_MAX - 1)
@@ -289,6 +304,7 @@
   IFLA_BRPORT_MRP_IN_OPEN,
   IFLA_BRPORT_MCAST_EHT_HOSTS_LIMIT,
   IFLA_BRPORT_MCAST_EHT_HOSTS_CNT,
+  IFLA_BRPORT_LOCKED,
   __IFLA_BRPORT_MAX
 };
 #define IFLA_BRPORT_MAX (__IFLA_BRPORT_MAX - 1)
@@ -396,6 +412,7 @@
   IFLA_XFRM_UNSPEC,
   IFLA_XFRM_LINK,
   IFLA_XFRM_IF_ID,
+  IFLA_XFRM_COLLECT_METADATA,
   __IFLA_XFRM_MAX
 };
 #define IFLA_XFRM_MAX (__IFLA_XFRM_MAX - 1)
@@ -428,6 +445,44 @@
 };
 #define IPVLAN_F_PRIVATE 0x01
 #define IPVLAN_F_VEPA 0x02
+struct tunnel_msg {
+  __u8 family;
+  __u8 flags;
+  __u16 reserved2;
+  __u32 ifindex;
+};
+#define TUNNEL_MSG_FLAG_STATS 0x01
+#define TUNNEL_MSG_VALID_USER_FLAGS TUNNEL_MSG_FLAG_STATS
+enum {
+  VNIFILTER_ENTRY_STATS_UNSPEC,
+  VNIFILTER_ENTRY_STATS_RX_BYTES,
+  VNIFILTER_ENTRY_STATS_RX_PKTS,
+  VNIFILTER_ENTRY_STATS_RX_DROPS,
+  VNIFILTER_ENTRY_STATS_RX_ERRORS,
+  VNIFILTER_ENTRY_STATS_TX_BYTES,
+  VNIFILTER_ENTRY_STATS_TX_PKTS,
+  VNIFILTER_ENTRY_STATS_TX_DROPS,
+  VNIFILTER_ENTRY_STATS_TX_ERRORS,
+  VNIFILTER_ENTRY_STATS_PAD,
+  __VNIFILTER_ENTRY_STATS_MAX
+};
+#define VNIFILTER_ENTRY_STATS_MAX (__VNIFILTER_ENTRY_STATS_MAX - 1)
+enum {
+  VXLAN_VNIFILTER_ENTRY_UNSPEC,
+  VXLAN_VNIFILTER_ENTRY_START,
+  VXLAN_VNIFILTER_ENTRY_END,
+  VXLAN_VNIFILTER_ENTRY_GROUP,
+  VXLAN_VNIFILTER_ENTRY_GROUP6,
+  VXLAN_VNIFILTER_ENTRY_STATS,
+  __VXLAN_VNIFILTER_ENTRY_MAX
+};
+#define VXLAN_VNIFILTER_ENTRY_MAX (__VXLAN_VNIFILTER_ENTRY_MAX - 1)
+enum {
+  VXLAN_VNIFILTER_UNSPEC,
+  VXLAN_VNIFILTER_ENTRY,
+  __VXLAN_VNIFILTER_MAX
+};
+#define VXLAN_VNIFILTER_MAX (__VXLAN_VNIFILTER_MAX - 1)
 enum {
   IFLA_VXLAN_UNSPEC,
   IFLA_VXLAN_ID,
@@ -459,6 +514,7 @@
   IFLA_VXLAN_GPE,
   IFLA_VXLAN_TTL_INHERIT,
   IFLA_VXLAN_DF,
+  IFLA_VXLAN_VNIFILTER,
   __IFLA_VXLAN_MAX
 };
 #define IFLA_VXLAN_MAX (__IFLA_VXLAN_MAX - 1)
@@ -488,6 +544,7 @@
   IFLA_GENEVE_LABEL,
   IFLA_GENEVE_TTL_INHERIT,
   IFLA_GENEVE_DF,
+  IFLA_GENEVE_INNER_PROTO_INHERIT,
   __IFLA_GENEVE_MAX
 };
 #define IFLA_GENEVE_MAX (__IFLA_GENEVE_MAX - 1)
@@ -523,6 +580,8 @@
   IFLA_GTP_FD1,
   IFLA_GTP_PDP_HASHSIZE,
   IFLA_GTP_ROLE,
+  IFLA_GTP_CREATE_SOCKETS,
+  IFLA_GTP_RESTART_COUNT,
   __IFLA_GTP_MAX,
 };
 #define IFLA_GTP_MAX (__IFLA_GTP_MAX - 1)
@@ -558,6 +617,7 @@
   IFLA_BOND_PEER_NOTIF_DELAY,
   IFLA_BOND_AD_LACP_ACTIVE,
   IFLA_BOND_MISSED_MAX,
+  IFLA_BOND_NS_IP6_TARGET,
   __IFLA_BOND_MAX,
 };
 #define IFLA_BOND_MAX (__IFLA_BOND_MAX - 1)
@@ -581,6 +641,7 @@
   IFLA_BOND_SLAVE_AD_AGGREGATOR_ID,
   IFLA_BOND_SLAVE_AD_ACTOR_OPER_PORT_STATE,
   IFLA_BOND_SLAVE_AD_PARTNER_OPER_PORT_STATE,
+  IFLA_BOND_SLAVE_PRIO,
   __IFLA_BOND_SLAVE_MAX,
 };
 #define IFLA_BOND_SLAVE_MAX (__IFLA_BOND_SLAVE_MAX - 1)
@@ -777,6 +838,13 @@
 #define IFLA_STATS_MAX (__IFLA_STATS_MAX - 1)
 #define IFLA_STATS_FILTER_BIT(ATTR) (1 << (ATTR - 1))
 enum {
+  IFLA_STATS_GETSET_UNSPEC,
+  IFLA_STATS_GET_FILTERS,
+  IFLA_STATS_SET_OFFLOAD_XSTATS_L3_STATS,
+  __IFLA_STATS_GETSET_MAX,
+};
+#define IFLA_STATS_GETSET_MAX (__IFLA_STATS_GETSET_MAX - 1)
+enum {
   LINK_XSTATS_TYPE_UNSPEC,
   LINK_XSTATS_TYPE_BRIDGE,
   LINK_XSTATS_TYPE_BOND,
@@ -786,9 +854,18 @@
 enum {
   IFLA_OFFLOAD_XSTATS_UNSPEC,
   IFLA_OFFLOAD_XSTATS_CPU_HIT,
+  IFLA_OFFLOAD_XSTATS_HW_S_INFO,
+  IFLA_OFFLOAD_XSTATS_L3_STATS,
   __IFLA_OFFLOAD_XSTATS_MAX
 };
 #define IFLA_OFFLOAD_XSTATS_MAX (__IFLA_OFFLOAD_XSTATS_MAX - 1)
+enum {
+  IFLA_OFFLOAD_XSTATS_HW_S_INFO_UNSPEC,
+  IFLA_OFFLOAD_XSTATS_HW_S_INFO_REQUEST,
+  IFLA_OFFLOAD_XSTATS_HW_S_INFO_USED,
+  __IFLA_OFFLOAD_XSTATS_HW_S_INFO_MAX,
+};
+#define IFLA_OFFLOAD_XSTATS_HW_S_INFO_MAX (__IFLA_OFFLOAD_XSTATS_HW_S_INFO_MAX - 1)
 #define XDP_FLAGS_UPDATE_IF_NOEXIST (1U << 0)
 #define XDP_FLAGS_SKB_MODE (1U << 1)
 #define XDP_FLAGS_DRV_MODE (1U << 2)
@@ -862,4 +939,10 @@
   __IFLA_MCTP_MAX,
 };
 #define IFLA_MCTP_MAX (__IFLA_MCTP_MAX - 1)
+enum {
+  IFLA_DSA_UNSPEC,
+  IFLA_DSA_MASTER,
+  __IFLA_DSA_MAX,
+};
+#define IFLA_DSA_MAX (__IFLA_DSA_MAX - 1)
 #endif
diff --git a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/if_macsec.h b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/if_macsec.h
index e60d767..7b51f80 100644
--- a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/if_macsec.h
+++ b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/if_macsec.h
@@ -23,6 +23,7 @@
 #define MACSEC_GENL_VERSION 1
 #define MACSEC_MAX_KEY_LEN 128
 #define MACSEC_KEYID_LEN 16
+#define MACSEC_SALT_LEN 12
 #define MACSEC_CIPHER_ID_GCM_AES_128 0x0080C20001000001ULL
 #define MACSEC_CIPHER_ID_GCM_AES_256 0x0080C20001000002ULL
 #define MACSEC_CIPHER_ID_GCM_AES_XPN_128 0x0080C20001000003ULL
diff --git a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/if_pppox.h b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/if_pppox.h
index 40d25e8..2acafdf 100644
--- a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/if_pppox.h
+++ b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/if_pppox.h
@@ -51,27 +51,27 @@
     struct pppoe_addr pppoe;
     struct pptp_addr pptp;
   } sa_addr;
-} __packed;
+} __attribute__((__packed__));
 struct sockaddr_pppol2tp {
   __kernel_sa_family_t sa_family;
   unsigned int sa_protocol;
   struct pppol2tp_addr pppol2tp;
-} __packed;
+} __attribute__((__packed__));
 struct sockaddr_pppol2tpin6 {
   __kernel_sa_family_t sa_family;
   unsigned int sa_protocol;
   struct pppol2tpin6_addr pppol2tp;
-} __packed;
+} __attribute__((__packed__));
 struct sockaddr_pppol2tpv3 {
   __kernel_sa_family_t sa_family;
   unsigned int sa_protocol;
   struct pppol2tpv3_addr pppol2tp;
-} __packed;
+} __attribute__((__packed__));
 struct sockaddr_pppol2tpv3in6 {
   __kernel_sa_family_t sa_family;
   unsigned int sa_protocol;
   struct pppol2tpv3in6_addr pppol2tp;
-} __packed;
+} __attribute__((__packed__));
 #define PPPOEIOCSFWD _IOW(0xB1, 0, size_t)
 #define PPPOEIOCDFWD _IO(0xB1, 1)
 #define PADI_CODE 0x09
@@ -82,7 +82,7 @@
 struct pppoe_tag {
   __be16 tag_type;
   __be16 tag_len;
-  char tag_data[0];
+  char tag_data[];
 } __attribute__((packed));
 #define PTT_EOL __cpu_to_be16(0x0000)
 #define PTT_SRV_NAME __cpu_to_be16(0x0101)
@@ -107,7 +107,7 @@
   __u8 code;
   __be16 sid;
   __be16 length;
-  struct pppoe_tag tag[0];
-} __packed;
+  struct pppoe_tag tag[];
+} __attribute__((__packed__));
 #define PPPOE_SES_HLEN 8
 #endif
diff --git a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/if_tun.h b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/if_tun.h
index d1a8f9e..dda0830 100644
--- a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/if_tun.h
+++ b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/if_tun.h
@@ -57,6 +57,7 @@
 #define IFF_TAP 0x0002
 #define IFF_NAPI 0x0010
 #define IFF_NAPI_FRAGS 0x0020
+#define IFF_NO_CARRIER 0x0040
 #define IFF_NO_PI 0x1000
 #define IFF_ONE_QUEUE 0x2000
 #define IFF_VNET_HDR 0x4000
@@ -81,6 +82,6 @@
 struct tun_filter {
   __u16 flags;
   __u16 count;
-  __u8 addr[0][ETH_ALEN];
+  __u8 addr[][ETH_ALEN];
 };
 #endif
diff --git a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/if_tunnel.h b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/if_tunnel.h
index 8e1847f..01c2dc9 100644
--- a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/if_tunnel.h
+++ b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/if_tunnel.h
@@ -169,5 +169,6 @@
 #define TUNNEL_VXLAN_OPT __cpu_to_be16(0x1000)
 #define TUNNEL_NOCACHE __cpu_to_be16(0x2000)
 #define TUNNEL_ERSPAN_OPT __cpu_to_be16(0x4000)
-#define TUNNEL_OPTIONS_PRESENT (TUNNEL_GENEVE_OPT | TUNNEL_VXLAN_OPT | TUNNEL_ERSPAN_OPT)
+#define TUNNEL_GTP_OPT __cpu_to_be16(0x8000)
+#define TUNNEL_OPTIONS_PRESENT (TUNNEL_GENEVE_OPT | TUNNEL_VXLAN_OPT | TUNNEL_ERSPAN_OPT | TUNNEL_GTP_OPT)
 #endif
diff --git a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/igmp.h b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/igmp.h
index 885b0f8..71c2c8d 100644
--- a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/igmp.h
+++ b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/igmp.h
@@ -37,7 +37,7 @@
   __u8 grec_auxwords;
   __be16 grec_nsrcs;
   __be32 grec_mca;
-  __be32 grec_src[0];
+  __be32 grec_src[];
 };
 struct igmpv3_report {
   __u8 type;
@@ -45,7 +45,7 @@
   __sum16 csum;
   __be16 resv2;
   __be16 ngrec;
-  struct igmpv3_grec grec[0];
+  struct igmpv3_grec grec[];
 };
 struct igmpv3_query {
   __u8 type;
@@ -61,7 +61,7 @@
 #endif
   __u8 qqic;
   __be16 nsrcs;
-  __be32 srcs[0];
+  __be32 srcs[];
 };
 #define IGMP_HOST_MEMBERSHIP_QUERY 0x11
 #define IGMP_HOST_MEMBERSHIP_REPORT 0x12
diff --git a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/iio/types.h b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/iio/types.h
index 22409a7..af7bdda 100644
--- a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/iio/types.h
+++ b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/iio/types.h
@@ -101,6 +101,12 @@
   IIO_MOD_ETHANOL,
   IIO_MOD_H2,
   IIO_MOD_O2,
+  IIO_MOD_LINEAR_X,
+  IIO_MOD_LINEAR_Y,
+  IIO_MOD_LINEAR_Z,
+  IIO_MOD_PITCH,
+  IIO_MOD_YAW,
+  IIO_MOD_ROLL,
 };
 enum iio_event_type {
   IIO_EV_TYPE_THRESH,
@@ -109,11 +115,15 @@
   IIO_EV_TYPE_THRESH_ADAPTIVE,
   IIO_EV_TYPE_MAG_ADAPTIVE,
   IIO_EV_TYPE_CHANGE,
+  IIO_EV_TYPE_MAG_REFERENCED,
+  IIO_EV_TYPE_GESTURE,
 };
 enum iio_event_direction {
   IIO_EV_DIR_EITHER,
   IIO_EV_DIR_RISING,
   IIO_EV_DIR_FALLING,
   IIO_EV_DIR_NONE,
+  IIO_EV_DIR_SINGLETAP,
+  IIO_EV_DIR_DOUBLETAP,
 };
 #endif
diff --git a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/in.h b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/in.h
index d4060e7..53d3074 100644
--- a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/in.h
+++ b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/in.h
@@ -22,6 +22,7 @@
 #include <bits/ip_mreq_source.h>
 #include <bits/in_addr.h>
 #include <linux/types.h>
+#include <linux/stddef.h>
 #include <linux/libc-compat.h>
 #include <linux/socket.h>
 #if __UAPI_DEF_IN_IPPROTO
@@ -68,6 +69,8 @@
 #define IPPROTO_PIM IPPROTO_PIM
   IPPROTO_COMP = 108,
 #define IPPROTO_COMP IPPROTO_COMP
+  IPPROTO_L2TP = 115,
+#define IPPROTO_L2TP IPPROTO_L2TP
   IPPROTO_SCTP = 132,
 #define IPPROTO_SCTP IPPROTO_SCTP
   IPPROTO_UDPLITE = 136,
diff --git a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/inet_diag.h b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/inet_diag.h
index 8656dd4..27f390b 100644
--- a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/inet_diag.h
+++ b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/inet_diag.h
@@ -89,7 +89,7 @@
   __u8 family;
   __u8 prefix_len;
   int port;
-  __be32 addr[0];
+  __be32 addr[];
 };
 struct inet_diag_markcond {
   __u32 mark;
diff --git a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/inotify.h b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/inotify.h
index eb9ac3c..3b4b577 100644
--- a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/inotify.h
+++ b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/inotify.h
@@ -25,7 +25,7 @@
   __u32 mask;
   __u32 cookie;
   __u32 len;
-  char name[0];
+  char name[];
 };
 #define IN_ACCESS 0x00000001
 #define IN_MODIFY 0x00000002
diff --git a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/input-event-codes.h b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/input-event-codes.h
index 34cd23c..40827b5 100644
--- a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/input-event-codes.h
+++ b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/input-event-codes.h
@@ -580,6 +580,21 @@
 #define KEY_ONSCREEN_KEYBOARD 0x278
 #define KEY_PRIVACY_SCREEN_TOGGLE 0x279
 #define KEY_SELECTIVE_SCREENSHOT 0x27a
+#define KEY_NEXT_ELEMENT 0x27b
+#define KEY_PREVIOUS_ELEMENT 0x27c
+#define KEY_AUTOPILOT_ENGAGE_TOGGLE 0x27d
+#define KEY_MARK_WAYPOINT 0x27e
+#define KEY_SOS 0x27f
+#define KEY_NAV_CHART 0x280
+#define KEY_FISHING_CHART 0x281
+#define KEY_SINGLE_RANGE_RADAR 0x282
+#define KEY_DUAL_RANGE_RADAR 0x283
+#define KEY_RADAR_OVERLAY 0x284
+#define KEY_TRADITIONAL_SONAR 0x285
+#define KEY_CLEARVU_SONAR 0x286
+#define KEY_SIDEVU_SONAR 0x287
+#define KEY_NAV_INFO 0x288
+#define KEY_BRIGHTNESS_MENU 0x289
 #define KEY_MACRO1 0x290
 #define KEY_MACRO2 0x291
 #define KEY_MACRO3 0x292
@@ -705,6 +720,7 @@
 #define ABS_TILT_Y 0x1b
 #define ABS_TOOL_WIDTH 0x1c
 #define ABS_VOLUME 0x20
+#define ABS_PROFILE 0x21
 #define ABS_MISC 0x28
 #define ABS_RESERVED 0x2e
 #define ABS_MT_SLOT 0x2f
diff --git a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/input.h b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/input.h
index fe17226..4858c81 100644
--- a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/input.h
+++ b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/input.h
@@ -125,6 +125,7 @@
 #define BUS_RMI 0x1D
 #define BUS_CEC 0x1E
 #define BUS_INTEL_ISHTP 0x1F
+#define BUS_AMD_SFH 0x20
 #define MT_TOOL_FINGER 0x00
 #define MT_TOOL_PEN 0x01
 #define MT_TOOL_PALM 0x02
diff --git a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/io_uring.h b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/io_uring.h
index 96944f8..82dee97 100644
--- a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/io_uring.h
+++ b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/io_uring.h
@@ -20,6 +20,10 @@
 #define LINUX_IO_URING_H
 #include <linux/fs.h>
 #include <linux/types.h>
+#include <linux/time_types.h>
+#ifdef __cplusplus
+extern "C" {
+#endif
 struct io_uring_sqe {
   __u8 opcode;
   __u8 flags;
@@ -28,6 +32,10 @@
   union {
     __u64 off;
     __u64 addr2;
+    struct {
+      __u32 cmd_op;
+      __u32 __pad1;
+    };
   };
   union {
     __u64 addr;
@@ -51,6 +59,9 @@
     __u32 rename_flags;
     __u32 unlink_flags;
     __u32 hardlink_flags;
+    __u32 xattr_flags;
+    __u32 msg_ring_flags;
+    __u32 uring_cmd_flags;
   };
   __u64 user_data;
   union {
@@ -61,9 +72,20 @@
   union {
     __s32 splice_fd_in;
     __u32 file_index;
+    struct {
+      __u16 addr_len;
+      __u16 __pad3[1];
+    };
   };
-  __u64 __pad2[2];
+  union {
+    struct {
+      __u64 addr3;
+      __u64 __pad2[1];
+    };
+    __u8 cmd[0];
+  };
 };
+#define IORING_FILE_INDEX_ALLOC (~0U)
 enum {
   IOSQE_FIXED_FILE_BIT,
   IOSQE_IO_DRAIN_BIT,
@@ -87,7 +109,14 @@
 #define IORING_SETUP_CLAMP (1U << 4)
 #define IORING_SETUP_ATTACH_WQ (1U << 5)
 #define IORING_SETUP_R_DISABLED (1U << 6)
-enum {
+#define IORING_SETUP_SUBMIT_ALL (1U << 7)
+#define IORING_SETUP_COOP_TASKRUN (1U << 8)
+#define IORING_SETUP_TASKRUN_FLAG (1U << 9)
+#define IORING_SETUP_SQE128 (1U << 10)
+#define IORING_SETUP_CQE32 (1U << 11)
+#define IORING_SETUP_SINGLE_ISSUER (1U << 12)
+#define IORING_SETUP_DEFER_TASKRUN (1U << 13)
+enum io_uring_op {
   IORING_OP_NOP,
   IORING_OP_READV,
   IORING_OP_WRITEV,
@@ -128,8 +157,18 @@
   IORING_OP_MKDIRAT,
   IORING_OP_SYMLINKAT,
   IORING_OP_LINKAT,
+  IORING_OP_MSG_RING,
+  IORING_OP_FSETXATTR,
+  IORING_OP_SETXATTR,
+  IORING_OP_FGETXATTR,
+  IORING_OP_GETXATTR,
+  IORING_OP_SOCKET,
+  IORING_OP_URING_CMD,
+  IORING_OP_SEND_ZC,
+  IORING_OP_SENDMSG_ZC,
   IORING_OP_LAST,
 };
+#define IORING_URING_CMD_FIXED (1U << 0)
 #define IORING_FSYNC_DATASYNC (1U << 0)
 #define IORING_TIMEOUT_ABS (1U << 0)
 #define IORING_TIMEOUT_UPDATE (1U << 1)
@@ -143,13 +182,30 @@
 #define IORING_POLL_ADD_MULTI (1U << 0)
 #define IORING_POLL_UPDATE_EVENTS (1U << 1)
 #define IORING_POLL_UPDATE_USER_DATA (1U << 2)
+#define IORING_POLL_ADD_LEVEL (1U << 3)
+#define IORING_ASYNC_CANCEL_ALL (1U << 0)
+#define IORING_ASYNC_CANCEL_FD (1U << 1)
+#define IORING_ASYNC_CANCEL_ANY (1U << 2)
+#define IORING_ASYNC_CANCEL_FD_FIXED (1U << 3)
+#define IORING_RECVSEND_POLL_FIRST (1U << 0)
+#define IORING_RECV_MULTISHOT (1U << 1)
+#define IORING_RECVSEND_FIXED_BUF (1U << 2)
+#define IORING_ACCEPT_MULTISHOT (1U << 0)
+enum {
+  IORING_MSG_DATA,
+  IORING_MSG_SEND_FD,
+};
+#define IORING_MSG_RING_CQE_SKIP (1U << 0)
 struct io_uring_cqe {
   __u64 user_data;
   __s32 res;
   __u32 flags;
+  __u64 big_cqe[];
 };
 #define IORING_CQE_F_BUFFER (1U << 0)
 #define IORING_CQE_F_MORE (1U << 1)
+#define IORING_CQE_F_SOCK_NONEMPTY (1U << 2)
+#define IORING_CQE_F_NOTIF (1U << 3)
 enum {
   IORING_CQE_BUFFER_SHIFT = 16,
 };
@@ -169,6 +225,7 @@
 };
 #define IORING_SQ_NEED_WAKEUP (1U << 0)
 #define IORING_SQ_CQ_OVERFLOW (1U << 1)
+#define IORING_SQ_TASKRUN (1U << 2)
 struct io_cqring_offsets {
   __u32 head;
   __u32 tail;
@@ -185,6 +242,7 @@
 #define IORING_ENTER_SQ_WAKEUP (1U << 1)
 #define IORING_ENTER_SQ_WAIT (1U << 2)
 #define IORING_ENTER_EXT_ARG (1U << 3)
+#define IORING_ENTER_REGISTERED_RING (1U << 4)
 struct io_uring_params {
   __u32 sq_entries;
   __u32 cq_entries;
@@ -209,6 +267,7 @@
 #define IORING_FEAT_NATIVE_WORKERS (1U << 9)
 #define IORING_FEAT_RSRC_TAGS (1U << 10)
 #define IORING_FEAT_CQE_SKIP (1U << 11)
+#define IORING_FEAT_LINKED_FILE (1U << 12)
 enum {
   IORING_REGISTER_BUFFERS = 0,
   IORING_UNREGISTER_BUFFERS = 1,
@@ -230,6 +289,12 @@
   IORING_REGISTER_IOWQ_AFF = 17,
   IORING_UNREGISTER_IOWQ_AFF = 18,
   IORING_REGISTER_IOWQ_MAX_WORKERS = 19,
+  IORING_REGISTER_RING_FDS = 20,
+  IORING_UNREGISTER_RING_FDS = 21,
+  IORING_REGISTER_PBUF_RING = 22,
+  IORING_UNREGISTER_PBUF_RING = 23,
+  IORING_REGISTER_SYNC_CANCEL = 24,
+  IORING_REGISTER_FILE_ALLOC_RANGE = 25,
   IORING_REGISTER_LAST
 };
 enum {
@@ -241,9 +306,10 @@
   __u32 resv;
   __aligned_u64 fds;
 };
+#define IORING_RSRC_REGISTER_SPARSE (1U << 0)
 struct io_uring_rsrc_register {
   __u32 nr;
-  __u32 resv;
+  __u32 flags;
   __u64 resv2;
   __aligned_u64 data;
   __aligned_u64 tags;
@@ -261,6 +327,17 @@
   __u32 nr;
   __u32 resv2;
 };
+struct io_uring_notification_slot {
+  __u64 tag;
+  __u64 resv[3];
+};
+struct io_uring_notification_register {
+  __u32 nr_slots;
+  __u32 resv;
+  __u64 resv2;
+  __u64 data;
+  __u64 resv3;
+};
 #define IORING_REGISTER_FILES_SKIP (- 2)
 #define IO_URING_OP_SUPPORTED (1U << 0)
 struct io_uring_probe_op {
@@ -274,7 +351,7 @@
   __u8 ops_len;
   __u16 resv;
   __u32 resv2[3];
-  struct io_uring_probe_op ops[0];
+  struct io_uring_probe_op ops[];
 };
 struct io_uring_restriction {
   __u16 opcode;
@@ -286,6 +363,30 @@
   __u8 resv;
   __u32 resv2[3];
 };
+struct io_uring_buf {
+  __u64 addr;
+  __u32 len;
+  __u16 bid;
+  __u16 resv;
+};
+struct io_uring_buf_ring {
+  union {
+    struct {
+      __u64 resv1;
+      __u32 resv2;
+      __u16 resv3;
+      __u16 tail;
+    };
+    struct io_uring_buf bufs[0];
+  };
+};
+struct io_uring_buf_reg {
+  __u64 ring_addr;
+  __u32 ring_entries;
+  __u16 bgid;
+  __u16 pad;
+  __u64 resv[3];
+};
 enum {
   IORING_RESTRICTION_REGISTER_OP = 0,
   IORING_RESTRICTION_SQE_OP = 1,
@@ -299,4 +400,25 @@
   __u32 pad;
   __u64 ts;
 };
+struct io_uring_sync_cancel_reg {
+  __u64 addr;
+  __s32 fd;
+  __u32 flags;
+  struct __kernel_timespec timeout;
+  __u64 pad[4];
+};
+struct io_uring_file_index_range {
+  __u32 off;
+  __u32 len;
+  __u64 resv;
+};
+struct io_uring_recvmsg_out {
+  __u32 namelen;
+  __u32 controllen;
+  __u32 payloadlen;
+  __u32 flags;
+};
+#ifdef __cplusplus
+}
+#endif
 #endif
diff --git a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/ioam6_iptunnel.h b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/ioam6_iptunnel.h
index 7426225..ec1a6a8 100644
--- a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/ioam6_iptunnel.h
+++ b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/ioam6_iptunnel.h
@@ -32,6 +32,10 @@
   IOAM6_IPTUNNEL_MODE,
   IOAM6_IPTUNNEL_DST,
   IOAM6_IPTUNNEL_TRACE,
+#define IOAM6_IPTUNNEL_FREQ_MIN 1
+#define IOAM6_IPTUNNEL_FREQ_MAX 1000000
+  IOAM6_IPTUNNEL_FREQ_K,
+  IOAM6_IPTUNNEL_FREQ_N,
   __IOAM6_IPTUNNEL_MAX,
 };
 #define IOAM6_IPTUNNEL_MAX (__IOAM6_IPTUNNEL_MAX - 1)
diff --git a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/iommu.h b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/iommu.h
index 0a0af92..0304a32 100644
--- a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/iommu.h
+++ b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/iommu.h
@@ -85,76 +85,4 @@
   __u32 grpid;
   __u32 code;
 };
-enum iommu_inv_granularity {
-  IOMMU_INV_GRANU_DOMAIN,
-  IOMMU_INV_GRANU_PASID,
-  IOMMU_INV_GRANU_ADDR,
-  IOMMU_INV_GRANU_NR,
-};
-struct iommu_inv_addr_info {
-#define IOMMU_INV_ADDR_FLAGS_PASID (1 << 0)
-#define IOMMU_INV_ADDR_FLAGS_ARCHID (1 << 1)
-#define IOMMU_INV_ADDR_FLAGS_LEAF (1 << 2)
-  __u32 flags;
-  __u32 archid;
-  __u64 pasid;
-  __u64 addr;
-  __u64 granule_size;
-  __u64 nb_granules;
-};
-struct iommu_inv_pasid_info {
-#define IOMMU_INV_PASID_FLAGS_PASID (1 << 0)
-#define IOMMU_INV_PASID_FLAGS_ARCHID (1 << 1)
-  __u32 flags;
-  __u32 archid;
-  __u64 pasid;
-};
-struct iommu_cache_invalidate_info {
-  __u32 argsz;
-#define IOMMU_CACHE_INVALIDATE_INFO_VERSION_1 1
-  __u32 version;
-#define IOMMU_CACHE_INV_TYPE_IOTLB (1 << 0)
-#define IOMMU_CACHE_INV_TYPE_DEV_IOTLB (1 << 1)
-#define IOMMU_CACHE_INV_TYPE_PASID (1 << 2)
-#define IOMMU_CACHE_INV_TYPE_NR (3)
-  __u8 cache;
-  __u8 granularity;
-  __u8 padding[6];
-  union {
-    struct iommu_inv_pasid_info pasid_info;
-    struct iommu_inv_addr_info addr_info;
-  } granu;
-};
-struct iommu_gpasid_bind_data_vtd {
-#define IOMMU_SVA_VTD_GPASID_SRE (1 << 0)
-#define IOMMU_SVA_VTD_GPASID_EAFE (1 << 1)
-#define IOMMU_SVA_VTD_GPASID_PCD (1 << 2)
-#define IOMMU_SVA_VTD_GPASID_PWT (1 << 3)
-#define IOMMU_SVA_VTD_GPASID_EMTE (1 << 4)
-#define IOMMU_SVA_VTD_GPASID_CD (1 << 5)
-#define IOMMU_SVA_VTD_GPASID_WPE (1 << 6)
-#define IOMMU_SVA_VTD_GPASID_LAST (1 << 7)
-  __u64 flags;
-  __u32 pat;
-  __u32 emt;
-};
-#define IOMMU_SVA_VTD_GPASID_MTS_MASK (IOMMU_SVA_VTD_GPASID_CD | IOMMU_SVA_VTD_GPASID_EMTE | IOMMU_SVA_VTD_GPASID_PCD | IOMMU_SVA_VTD_GPASID_PWT)
-struct iommu_gpasid_bind_data {
-  __u32 argsz;
-#define IOMMU_GPASID_BIND_VERSION_1 1
-  __u32 version;
-#define IOMMU_PASID_FORMAT_INTEL_VTD 1
-#define IOMMU_PASID_FORMAT_LAST 2
-  __u32 format;
-  __u32 addr_width;
-#define IOMMU_SVA_GPASID_VAL (1 << 0)
-  __u64 flags;
-  __u64 gpgd;
-  __u64 hpasid;
-  __u64 gpasid;
-  __u8 padding[8];
-  union {
-    struct iommu_gpasid_bind_data_vtd vtd;
-  } vendor;
-};
 #endif
diff --git a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/ip.h b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/ip.h
index 9571cac..766a808 100644
--- a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/ip.h
+++ b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/ip.h
@@ -86,8 +86,9 @@
   __u8 ttl;
   __u8 protocol;
   __sum16 check;
-  __be32 saddr;
+  __struct_group(, addrs,, __be32 saddr;
   __be32 daddr;
+ );
 };
 struct ip_auth_hdr {
   __u8 nexthdr;
@@ -95,12 +96,12 @@
   __be16 reserved;
   __be32 spi;
   __be32 seq_no;
-  __u8 auth_data[0];
+  __u8 auth_data[];
 };
 struct ip_esp_hdr {
   __be32 spi;
   __be32 seq_no;
-  __u8 enc_data[0];
+  __u8 enc_data[];
 };
 struct ip_comp_hdr {
   __u8 nexthdr;
diff --git a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/ip_vs.h b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/ip_vs.h
index 6e3defe..916fcf0 100644
--- a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/ip_vs.h
+++ b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/ip_vs.h
@@ -159,11 +159,11 @@
   __be16 port;
   __u32 fwmark;
   unsigned int num_dests;
-  struct ip_vs_dest_entry entrytable[0];
+  struct ip_vs_dest_entry entrytable[];
 };
 struct ip_vs_get_services {
   unsigned int num_services;
-  struct ip_vs_service_entry entrytable[0];
+  struct ip_vs_service_entry entrytable[];
 };
 struct ip_vs_timeout_user {
   int tcp_timeout;
diff --git a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/ipv6.h b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/ipv6.h
index b3db9ce..2e57ed1 100644
--- a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/ipv6.h
+++ b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/ipv6.h
@@ -87,8 +87,9 @@
   __be16 payload_len;
   __u8 nexthdr;
   __u8 hop_limit;
-  struct in6_addr saddr;
+  __struct_group(, addrs,, struct in6_addr saddr;
   struct in6_addr daddr;
+ );
 };
 enum {
   DEVCONF_FORWARDING = 0,
@@ -148,6 +149,7 @@
   DEVCONF_IOAM6_ID,
   DEVCONF_IOAM6_ID_WIDE,
   DEVCONF_NDISC_EVICT_NOCARRIER,
+  DEVCONF_ACCEPT_UNTRACKED_NA,
   DEVCONF_MAX
 };
 #endif
diff --git a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/iso_fs.h b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/iso_fs.h
index 8227031..f9c4f48 100644
--- a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/iso_fs.h
+++ b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/iso_fs.h
@@ -132,7 +132,7 @@
   __u8 name_len[2];
   __u8 extent[4];
   __u8 parent[2];
-  char name[0];
+  char name[];
 } __attribute__((packed));
 struct iso_directory_record {
   __u8 length[ISODCL(1, 1)];
@@ -145,7 +145,7 @@
   __u8 interleave[ISODCL(28, 28)];
   __u8 volume_sequence_number[ISODCL(29, 32)];
   __u8 name_len[ISODCL(33, 33)];
-  char name[0];
+  char name[];
 } __attribute__((packed));
 #define ISOFS_BLOCK_BITS 11
 #define ISOFS_BLOCK_SIZE 2048
diff --git a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/jffs2.h b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/jffs2.h
index 698f953..643aa2e 100644
--- a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/jffs2.h
+++ b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/jffs2.h
@@ -86,7 +86,7 @@
   __u8 unused[2];
   jint32_t node_crc;
   jint32_t name_crc;
-  __u8 name[0];
+  __u8 name[];
 };
 struct jffs2_raw_inode {
   jint16_t magic;
@@ -110,7 +110,7 @@
   jint16_t flags;
   jint32_t data_crc;
   jint32_t node_crc;
-  __u8 data[0];
+  __u8 data[];
 };
 struct jffs2_raw_xattr {
   jint16_t magic;
@@ -124,7 +124,7 @@
   jint16_t value_len;
   jint32_t data_crc;
   jint32_t node_crc;
-  __u8 data[0];
+  __u8 data[];
 } __attribute__((packed));
 struct jffs2_raw_xref {
   jint16_t magic;
@@ -146,7 +146,7 @@
   jint32_t padded;
   jint32_t sum_crc;
   jint32_t node_crc;
-  jint32_t sum[0];
+  jint32_t sum[];
 };
 union jffs2_node_union {
   struct jffs2_raw_inode i;
diff --git a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/kcov.h b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/kcov.h
index cf2660b..5b6f6b1 100644
--- a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/kcov.h
+++ b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/kcov.h
@@ -24,7 +24,7 @@
   __u32 area_size;
   __u32 num_handles;
   __aligned_u64 common_handle;
-  __aligned_u64 handles[0];
+  __aligned_u64 handles[];
 };
 #define KCOV_REMOTE_MAX_HANDLES 0x100
 #define KCOV_INIT_TRACE _IOR('c', 1, unsigned long)
diff --git a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/kexec.h b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/kexec.h
index 2e3bd0c..438c07b 100644
--- a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/kexec.h
+++ b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/kexec.h
@@ -40,11 +40,12 @@
 #define KEXEC_ARCH_MIPS (8 << 16)
 #define KEXEC_ARCH_AARCH64 (183 << 16)
 #define KEXEC_ARCH_RISCV (243 << 16)
+#define KEXEC_ARCH_LOONGARCH (258 << 16)
 #define KEXEC_SEGMENT_MAX 16
 struct kexec_segment {
   const void * buf;
-  size_t bufsz;
+  __kernel_size_t bufsz;
   const void * mem;
-  size_t memsz;
+  __kernel_size_t memsz;
 };
 #endif
diff --git a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/kfd_ioctl.h b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/kfd_ioctl.h
index c52ac64..d21e0fc 100644
--- a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/kfd_ioctl.h
+++ b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/kfd_ioctl.h
@@ -21,7 +21,7 @@
 #include <drm/drm.h>
 #include <linux/ioctl.h>
 #define KFD_IOCTL_MAJOR_VERSION 1
-#define KFD_IOCTL_MINOR_VERSION 6
+#define KFD_IOCTL_MINOR_VERSION 11
 struct kfd_ioctl_get_version_args {
   __u32 major_version;
   __u32 minor_version;
@@ -72,6 +72,11 @@
   __u32 queue_id;
   __u32 pad;
 };
+struct kfd_ioctl_get_available_memory_args {
+  __u64 available;
+  __u32 gpu_id;
+  __u32 pad;
+};
 #define KFD_IOC_CACHE_POLICY_COHERENT 0
 #define KFD_IOC_CACHE_POLICY_NONCOHERENT 1
 struct kfd_ioctl_set_memory_policy_args {
@@ -132,6 +137,7 @@
   __u32 gpu_id;
   __u32 buf_size_in_bytes;
 };
+#define KFD_INVALID_FD 0xffffffff
 #define KFD_IOC_EVENT_SIGNAL 0
 #define KFD_IOC_EVENT_NODECHANGE 1
 #define KFD_IOC_EVENT_DEVICESTATECHANGE 2
@@ -294,12 +300,74 @@
   KFD_SMI_EVENT_THERMAL_THROTTLE = 2,
   KFD_SMI_EVENT_GPU_PRE_RESET = 3,
   KFD_SMI_EVENT_GPU_POST_RESET = 4,
+  KFD_SMI_EVENT_MIGRATE_START = 5,
+  KFD_SMI_EVENT_MIGRATE_END = 6,
+  KFD_SMI_EVENT_PAGE_FAULT_START = 7,
+  KFD_SMI_EVENT_PAGE_FAULT_END = 8,
+  KFD_SMI_EVENT_QUEUE_EVICTION = 9,
+  KFD_SMI_EVENT_QUEUE_RESTORE = 10,
+  KFD_SMI_EVENT_UNMAP_FROM_GPU = 11,
+  KFD_SMI_EVENT_ALL_PROCESS = 64
+};
+enum KFD_MIGRATE_TRIGGERS {
+  KFD_MIGRATE_TRIGGER_PREFETCH,
+  KFD_MIGRATE_TRIGGER_PAGEFAULT_GPU,
+  KFD_MIGRATE_TRIGGER_PAGEFAULT_CPU,
+  KFD_MIGRATE_TRIGGER_TTM_EVICTION
+};
+enum KFD_QUEUE_EVICTION_TRIGGERS {
+  KFD_QUEUE_EVICTION_TRIGGER_SVM,
+  KFD_QUEUE_EVICTION_TRIGGER_USERPTR,
+  KFD_QUEUE_EVICTION_TRIGGER_TTM,
+  KFD_QUEUE_EVICTION_TRIGGER_SUSPEND,
+  KFD_QUEUE_EVICTION_CRIU_CHECKPOINT,
+  KFD_QUEUE_EVICTION_CRIU_RESTORE
+};
+enum KFD_SVM_UNMAP_TRIGGERS {
+  KFD_SVM_UNMAP_TRIGGER_MMU_NOTIFY,
+  KFD_SVM_UNMAP_TRIGGER_MMU_NOTIFY_MIGRATE,
+  KFD_SVM_UNMAP_TRIGGER_UNMAP_FROM_CPU
 };
 #define KFD_SMI_EVENT_MASK_FROM_INDEX(i) (1ULL << ((i) - 1))
+#define KFD_SMI_EVENT_MSG_SIZE 96
 struct kfd_ioctl_smi_events_args {
   __u32 gpuid;
   __u32 anon_fd;
 };
+enum kfd_criu_op {
+  KFD_CRIU_OP_PROCESS_INFO,
+  KFD_CRIU_OP_CHECKPOINT,
+  KFD_CRIU_OP_UNPAUSE,
+  KFD_CRIU_OP_RESTORE,
+  KFD_CRIU_OP_RESUME,
+};
+struct kfd_ioctl_criu_args {
+  __u64 devices;
+  __u64 bos;
+  __u64 priv_data;
+  __u64 priv_data_size;
+  __u32 num_devices;
+  __u32 num_bos;
+  __u32 num_objects;
+  __u32 pid;
+  __u32 op;
+};
+struct kfd_criu_device_bucket {
+  __u32 user_gpu_id;
+  __u32 actual_gpu_id;
+  __u32 drm_fd;
+  __u32 pad;
+};
+struct kfd_criu_bo_bucket {
+  __u64 addr;
+  __u64 size;
+  __u64 offset;
+  __u64 restored_offset;
+  __u32 gpu_id;
+  __u32 alloc_flags;
+  __u32 dmabuf_fd;
+  __u32 pad;
+};
 enum kfd_mmio_remap {
   KFD_MMIO_REMAP_HDP_MEM_FLUSH_CNTL = 0,
   KFD_MMIO_REMAP_HDP_REG_FLUSH_CNTL = 4,
@@ -310,6 +378,7 @@
 #define KFD_IOCTL_SVM_FLAG_GPU_RO 0x00000008
 #define KFD_IOCTL_SVM_FLAG_GPU_EXEC 0x00000010
 #define KFD_IOCTL_SVM_FLAG_GPU_READ_MOSTLY 0x00000020
+#define KFD_IOCTL_SVM_FLAG_GPU_ALWAYS_MAPPED 0x00000040
 enum kfd_ioctl_svm_op {
   KFD_IOCTL_SVM_OP_SET_ATTR,
   KFD_IOCTL_SVM_OP_GET_ATTR
@@ -337,7 +406,7 @@
   __u64 size;
   __u32 op;
   __u32 nattr;
-  struct kfd_ioctl_svm_attribute attrs[0];
+  struct kfd_ioctl_svm_attribute attrs[];
 };
 struct kfd_ioctl_set_xnack_mode_args {
   __s32 xnack_enabled;
@@ -359,10 +428,10 @@
 #define AMDKFD_IOC_SET_EVENT AMDKFD_IOW(0x0A, struct kfd_ioctl_set_event_args)
 #define AMDKFD_IOC_RESET_EVENT AMDKFD_IOW(0x0B, struct kfd_ioctl_reset_event_args)
 #define AMDKFD_IOC_WAIT_EVENTS AMDKFD_IOWR(0x0C, struct kfd_ioctl_wait_events_args)
-#define AMDKFD_IOC_DBG_REGISTER AMDKFD_IOW(0x0D, struct kfd_ioctl_dbg_register_args)
-#define AMDKFD_IOC_DBG_UNREGISTER AMDKFD_IOW(0x0E, struct kfd_ioctl_dbg_unregister_args)
-#define AMDKFD_IOC_DBG_ADDRESS_WATCH AMDKFD_IOW(0x0F, struct kfd_ioctl_dbg_address_watch_args)
-#define AMDKFD_IOC_DBG_WAVE_CONTROL AMDKFD_IOW(0x10, struct kfd_ioctl_dbg_wave_control_args)
+#define AMDKFD_IOC_DBG_REGISTER_DEPRECATED AMDKFD_IOW(0x0D, struct kfd_ioctl_dbg_register_args)
+#define AMDKFD_IOC_DBG_UNREGISTER_DEPRECATED AMDKFD_IOW(0x0E, struct kfd_ioctl_dbg_unregister_args)
+#define AMDKFD_IOC_DBG_ADDRESS_WATCH_DEPRECATED AMDKFD_IOW(0x0F, struct kfd_ioctl_dbg_address_watch_args)
+#define AMDKFD_IOC_DBG_WAVE_CONTROL_DEPRECATED AMDKFD_IOW(0x10, struct kfd_ioctl_dbg_wave_control_args)
 #define AMDKFD_IOC_SET_SCRATCH_BACKING_VA AMDKFD_IOWR(0x11, struct kfd_ioctl_set_scratch_backing_va_args)
 #define AMDKFD_IOC_GET_TILE_CONFIG AMDKFD_IOWR(0x12, struct kfd_ioctl_get_tile_config_args)
 #define AMDKFD_IOC_SET_TRAP_HANDLER AMDKFD_IOW(0x13, struct kfd_ioctl_set_trap_handler_args)
@@ -380,6 +449,8 @@
 #define AMDKFD_IOC_SMI_EVENTS AMDKFD_IOWR(0x1F, struct kfd_ioctl_smi_events_args)
 #define AMDKFD_IOC_SVM AMDKFD_IOWR(0x20, struct kfd_ioctl_svm_args)
 #define AMDKFD_IOC_SET_XNACK_MODE AMDKFD_IOWR(0x21, struct kfd_ioctl_set_xnack_mode_args)
+#define AMDKFD_IOC_CRIU_OP AMDKFD_IOWR(0x22, struct kfd_ioctl_criu_args)
+#define AMDKFD_IOC_AVAILABLE_MEMORY AMDKFD_IOWR(0x23, struct kfd_ioctl_get_available_memory_args)
 #define AMDKFD_COMMAND_START 0x01
-#define AMDKFD_COMMAND_END 0x22
+#define AMDKFD_COMMAND_END 0x24
 #endif
diff --git a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/kvm.h b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/kvm.h
index 1cf7182..768f57e 100644
--- a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/kvm.h
+++ b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/kvm.h
@@ -216,6 +216,8 @@
 #define KVM_EXIT_X86_BUS_LOCK 33
 #define KVM_EXIT_XEN 34
 #define KVM_EXIT_RISCV_SBI 35
+#define KVM_EXIT_RISCV_CSR 36
+#define KVM_EXIT_NOTIFY 37
 #define KVM_INTERNAL_ERROR_EMULATION 1
 #define KVM_INTERNAL_ERROR_SIMUL_EX 2
 #define KVM_INTERNAL_ERROR_DELIVERY_EV 3
@@ -336,8 +338,15 @@
 #define KVM_SYSTEM_EVENT_SHUTDOWN 1
 #define KVM_SYSTEM_EVENT_RESET 2
 #define KVM_SYSTEM_EVENT_CRASH 3
+#define KVM_SYSTEM_EVENT_WAKEUP 4
+#define KVM_SYSTEM_EVENT_SUSPEND 5
+#define KVM_SYSTEM_EVENT_SEV_TERM 6
       __u32 type;
-      __u64 flags;
+      __u32 ndata;
+      union {
+        __u64 flags;
+        __u64 data[16];
+      };
     } system_event;
     struct {
       __u64 addr;
@@ -372,6 +381,16 @@
       unsigned long args[6];
       unsigned long ret[2];
     } riscv_sbi;
+    struct {
+      unsigned long csr_num;
+      unsigned long new_value;
+      unsigned long write_mask;
+      unsigned long ret_value;
+    } riscv_csr;
+    struct {
+#define KVM_NOTIFY_CONTEXT_INVALID (1 << 0)
+      __u32 flags;
+    } notify;
     char padding[256];
   };
 #define SYNC_REGS_SIZE_BYTES 2048
@@ -401,7 +420,7 @@
 };
 struct kvm_coalesced_mmio_ring {
   __u32 first, last;
-  struct kvm_coalesced_mmio coalesced_mmio[0];
+  struct kvm_coalesced_mmio coalesced_mmio[];
 };
 #define KVM_COALESCED_MMIO_MAX ((PAGE_SIZE - sizeof(struct kvm_coalesced_mmio_ring)) / sizeof(struct kvm_coalesced_mmio))
 struct kvm_translation {
@@ -419,7 +438,10 @@
   __u32 op;
   __u64 buf;
   union {
-    __u8 ar;
+    struct {
+      __u8 ar;
+      __u8 key;
+    };
     __u32 sida_offset;
     __u8 reserved[32];
   };
@@ -428,8 +450,11 @@
 #define KVM_S390_MEMOP_LOGICAL_WRITE 1
 #define KVM_S390_MEMOP_SIDA_READ 2
 #define KVM_S390_MEMOP_SIDA_WRITE 3
+#define KVM_S390_MEMOP_ABSOLUTE_READ 4
+#define KVM_S390_MEMOP_ABSOLUTE_WRITE 5
 #define KVM_S390_MEMOP_F_CHECK_ONLY (1ULL << 0)
 #define KVM_S390_MEMOP_F_INJECT_EXCEPTION (1ULL << 1)
+#define KVM_S390_MEMOP_F_SKEY_PROTECTION (1ULL << 2)
 struct kvm_interrupt {
   __u32 irq;
 };
@@ -452,7 +477,7 @@
 };
 struct kvm_signal_mask {
   __u32 len;
-  __u8 sigset[0];
+  __u8 sigset[];
 };
 struct kvm_tpr_access_ctl {
   __u32 enabled;
@@ -472,6 +497,7 @@
 #define KVM_MP_STATE_OPERATING 7
 #define KVM_MP_STATE_LOAD 8
 #define KVM_MP_STATE_AP_RESET_HOLD 9
+#define KVM_MP_STATE_SUSPENDED 10
 struct kvm_mp_state {
   __u32 mp_state;
 };
@@ -890,6 +916,19 @@
 #define KVM_CAP_XSAVE2 208
 #define KVM_CAP_SYS_ATTRIBUTES 209
 #define KVM_CAP_PPC_AIL_MODE_3 210
+#define KVM_CAP_S390_MEM_OP_EXTENSION 211
+#define KVM_CAP_PMU_CAPABILITY 212
+#define KVM_CAP_DISABLE_QUIRKS2 213
+#define KVM_CAP_VM_TSC_CONTROL 214
+#define KVM_CAP_SYSTEM_EVENT_DATA 215
+#define KVM_CAP_ARM_SYSTEM_SUSPEND 216
+#define KVM_CAP_S390_PROTECTED_DUMP 217
+#define KVM_CAP_X86_TRIPLE_FAULT_EVENT 218
+#define KVM_CAP_X86_NOTIFY_VMEXIT 219
+#define KVM_CAP_VM_DISABLE_NX_HUGE_PAGES 220
+#define KVM_CAP_S390_ZPCI_OP 221
+#define KVM_CAP_S390_CPU_TOPOLOGY 222
+#define KVM_CAP_DIRTY_LOG_RING_ACQ_REL 223
 #ifdef KVM_CAP_IRQ_ROUTING
 struct kvm_irq_routing_irqchip {
   __u32 irqchip;
@@ -943,7 +982,7 @@
 struct kvm_irq_routing {
   __u32 nr;
   __u32 flags;
-  struct kvm_irq_routing_entry entries[0];
+  struct kvm_irq_routing_entry entries[];
 };
 #endif
 #ifdef KVM_CAP_MCE
@@ -963,6 +1002,7 @@
 #define KVM_XEN_HVM_CONFIG_SHARED_INFO (1 << 2)
 #define KVM_XEN_HVM_CONFIG_RUNSTATE (1 << 3)
 #define KVM_XEN_HVM_CONFIG_EVTCHN_2LEVEL (1 << 4)
+#define KVM_XEN_HVM_CONFIG_EVTCHN_SEND (1 << 5)
 struct kvm_xen_hvm_config {
   __u32 flags;
   __u32 msr;
@@ -1028,7 +1068,7 @@
 #define KVM_REG_SIZE_U2048 0x0080000000000000ULL
 struct kvm_reg_list {
   __u64 n;
-  __u64 reg[0];
+  __u64 reg[];
 };
 struct kvm_one_reg {
   __u64 id;
@@ -1242,6 +1282,48 @@
   __u64 size;
   __u64 tweak;
 };
+enum pv_cmd_dmp_id {
+  KVM_PV_DUMP_INIT,
+  KVM_PV_DUMP_CONFIG_STOR_STATE,
+  KVM_PV_DUMP_COMPLETE,
+  KVM_PV_DUMP_CPU,
+};
+struct kvm_s390_pv_dmp {
+  __u64 subcmd;
+  __u64 buff_addr;
+  __u64 buff_len;
+  __u64 gaddr;
+  __u64 reserved[4];
+};
+enum pv_cmd_info_id {
+  KVM_PV_INFO_VM,
+  KVM_PV_INFO_DUMP,
+};
+struct kvm_s390_pv_info_dump {
+  __u64 dump_cpu_buffer_len;
+  __u64 dump_config_mem_buffer_per_1m;
+  __u64 dump_config_finalize_len;
+};
+struct kvm_s390_pv_info_vm {
+  __u64 inst_calls_list[4];
+  __u64 max_cpus;
+  __u64 max_guests;
+  __u64 max_guest_addr;
+  __u64 feature_indication;
+};
+struct kvm_s390_pv_info_header {
+  __u32 id;
+  __u32 len_max;
+  __u32 len_written;
+  __u32 reserved;
+};
+struct kvm_s390_pv_info {
+  struct kvm_s390_pv_info_header header;
+  union {
+    struct kvm_s390_pv_info_dump dump;
+    struct kvm_s390_pv_info_vm vm;
+  };
+};
 enum pv_cmd_id {
   KVM_PV_ENABLE,
   KVM_PV_DISABLE,
@@ -1250,6 +1332,8 @@
   KVM_PV_VERIFY,
   KVM_PV_PREP_RESET,
   KVM_PV_UNSHARE_ALL,
+  KVM_PV_INFO,
+  KVM_PV_DUMP,
 };
 struct kvm_pv_cmd {
   __u32 cmd;
@@ -1273,14 +1357,38 @@
     struct {
       __u64 gfn;
     } shared_info;
+    struct {
+      __u32 send_port;
+      __u32 type;
+      __u32 flags;
+#define KVM_XEN_EVTCHN_DEASSIGN (1 << 0)
+#define KVM_XEN_EVTCHN_UPDATE (1 << 1)
+#define KVM_XEN_EVTCHN_RESET (1 << 2)
+      union {
+        struct {
+          __u32 port;
+          __u32 vcpu;
+          __u32 priority;
+        } port;
+        struct {
+          __u32 port;
+          __s32 fd;
+        } eventfd;
+        __u32 padding[4];
+      } deliver;
+    } evtchn;
+    __u32 xen_version;
     __u64 pad[8];
   } u;
 };
 #define KVM_XEN_ATTR_TYPE_LONG_MODE 0x0
 #define KVM_XEN_ATTR_TYPE_SHARED_INFO 0x1
 #define KVM_XEN_ATTR_TYPE_UPCALL_VECTOR 0x2
+#define KVM_XEN_ATTR_TYPE_EVTCHN 0x3
+#define KVM_XEN_ATTR_TYPE_XEN_VERSION 0x4
 #define KVM_XEN_VCPU_GET_ATTR _IOWR(KVMIO, 0xca, struct kvm_xen_vcpu_attr)
 #define KVM_XEN_VCPU_SET_ATTR _IOW(KVMIO, 0xcb, struct kvm_xen_vcpu_attr)
+#define KVM_XEN_HVM_EVTCHN_SEND _IOW(KVMIO, 0xd0, struct kvm_irq_routing_xen_evtchn)
 #define KVM_GET_SREGS2 _IOR(KVMIO, 0xcc, struct kvm_sregs2)
 #define KVM_SET_SREGS2 _IOW(KVMIO, 0xcd, struct kvm_sregs2)
 struct kvm_xen_vcpu_attr {
@@ -1297,6 +1405,13 @@
       __u64 time_blocked;
       __u64 time_offline;
     } runstate;
+    __u32 vcpu_id;
+    struct {
+      __u32 port;
+      __u32 priority;
+      __u64 expires_ns;
+    } timer;
+    __u8 vector;
   } u;
 };
 #define KVM_XEN_VCPU_ATTR_TYPE_VCPU_INFO 0x0
@@ -1305,6 +1420,9 @@
 #define KVM_XEN_VCPU_ATTR_TYPE_RUNSTATE_CURRENT 0x3
 #define KVM_XEN_VCPU_ATTR_TYPE_RUNSTATE_DATA 0x4
 #define KVM_XEN_VCPU_ATTR_TYPE_RUNSTATE_ADJUST 0x5
+#define KVM_XEN_VCPU_ATTR_TYPE_VCPU_ID 0x6
+#define KVM_XEN_VCPU_ATTR_TYPE_TIMER 0x7
+#define KVM_XEN_VCPU_ATTR_TYPE_UPCALL_VECTOR 0x8
 enum sev_cmd_id {
   KVM_SEV_INIT = 0,
   KVM_SEV_ES_INIT,
@@ -1480,6 +1598,7 @@
 };
 #define KVM_BUS_LOCK_DETECTION_OFF (1 << 0)
 #define KVM_BUS_LOCK_DETECTION_EXIT (1 << 1)
+#define KVM_PMU_CAP_DISABLE (1 << 0)
 struct kvm_stats_header {
   __u32 flags;
   __u32 name_size;
@@ -1502,7 +1621,8 @@
 #define KVM_STATS_UNIT_BYTES (0x1 << KVM_STATS_UNIT_SHIFT)
 #define KVM_STATS_UNIT_SECONDS (0x2 << KVM_STATS_UNIT_SHIFT)
 #define KVM_STATS_UNIT_CYCLES (0x3 << KVM_STATS_UNIT_SHIFT)
-#define KVM_STATS_UNIT_MAX KVM_STATS_UNIT_CYCLES
+#define KVM_STATS_UNIT_BOOLEAN (0x4 << KVM_STATS_UNIT_SHIFT)
+#define KVM_STATS_UNIT_MAX KVM_STATS_UNIT_BOOLEAN
 #define KVM_STATS_BASE_SHIFT 8
 #define KVM_STATS_BASE_MASK (0xF << KVM_STATS_BASE_SHIFT)
 #define KVM_STATS_BASE_POW10 (0x0 << KVM_STATS_BASE_SHIFT)
@@ -1518,4 +1638,28 @@
 };
 #define KVM_GET_STATS_FD _IO(KVMIO, 0xce)
 #define KVM_GET_XSAVE2 _IOR(KVMIO, 0xcf, struct kvm_xsave)
+#define KVM_S390_PV_CPU_COMMAND _IOWR(KVMIO, 0xd0, struct kvm_pv_cmd)
+#define KVM_X86_NOTIFY_VMEXIT_ENABLED (1ULL << 0)
+#define KVM_X86_NOTIFY_VMEXIT_USER (1ULL << 1)
+#define KVM_S390_ZPCI_OP _IOW(KVMIO, 0xd1, struct kvm_s390_zpci_op)
+struct kvm_s390_zpci_op {
+  __u32 fh;
+  __u8 op;
+  __u8 pad[3];
+  union {
+    struct {
+      __u64 ibv;
+      __u64 sb;
+      __u32 flags;
+      __u32 noi;
+      __u8 isc;
+      __u8 sbo;
+      __u16 pad;
+    } reg_aen;
+    __u64 reserved[8];
+  } u;
+};
+#define KVM_S390_ZPCIOP_REG_AEN 0
+#define KVM_S390_ZPCIOP_DEREG_AEN 1
+#define KVM_S390_ZPCIOP_REGAEN_HOST (1 << 0)
 #endif
diff --git a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/l2tp.h b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/l2tp.h
index a054819..dee634e 100644
--- a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/l2tp.h
+++ b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/l2tp.h
@@ -22,7 +22,6 @@
 #include <linux/socket.h>
 #include <linux/in.h>
 #include <linux/in6.h>
-#define IPPROTO_L2TP 115
 #define __SOCK_SIZE__ 16
 struct sockaddr_l2tpip {
   __kernel_sa_family_t l2tp_family;
diff --git a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/landlock.h b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/landlock.h
index 50d79d8..ea2fd74 100644
--- a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/landlock.h
+++ b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/landlock.h
@@ -43,4 +43,5 @@
 #define LANDLOCK_ACCESS_FS_MAKE_FIFO (1ULL << 10)
 #define LANDLOCK_ACCESS_FS_MAKE_BLOCK (1ULL << 11)
 #define LANDLOCK_ACCESS_FS_MAKE_SYM (1ULL << 12)
+#define LANDLOCK_ACCESS_FS_REFER (1ULL << 13)
 #endif
diff --git a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/lirc.h b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/lirc.h
index a0ac24a..dff0b63 100644
--- a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/lirc.h
+++ b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/lirc.h
@@ -26,18 +26,21 @@
 #define LIRC_MODE2_PULSE 0x01000000
 #define LIRC_MODE2_FREQUENCY 0x02000000
 #define LIRC_MODE2_TIMEOUT 0x03000000
+#define LIRC_MODE2_OVERFLOW 0x04000000
 #define LIRC_VALUE_MASK 0x00FFFFFF
 #define LIRC_MODE2_MASK 0xFF000000
 #define LIRC_SPACE(val) (((val) & LIRC_VALUE_MASK) | LIRC_MODE2_SPACE)
 #define LIRC_PULSE(val) (((val) & LIRC_VALUE_MASK) | LIRC_MODE2_PULSE)
 #define LIRC_FREQUENCY(val) (((val) & LIRC_VALUE_MASK) | LIRC_MODE2_FREQUENCY)
 #define LIRC_TIMEOUT(val) (((val) & LIRC_VALUE_MASK) | LIRC_MODE2_TIMEOUT)
+#define LIRC_OVERFLOW(val) (((val) & LIRC_VALUE_MASK) | LIRC_MODE2_OVERFLOW)
 #define LIRC_VALUE(val) ((val) & LIRC_VALUE_MASK)
 #define LIRC_MODE2(val) ((val) & LIRC_MODE2_MASK)
 #define LIRC_IS_SPACE(val) (LIRC_MODE2(val) == LIRC_MODE2_SPACE)
 #define LIRC_IS_PULSE(val) (LIRC_MODE2(val) == LIRC_MODE2_PULSE)
 #define LIRC_IS_FREQUENCY(val) (LIRC_MODE2(val) == LIRC_MODE2_FREQUENCY)
 #define LIRC_IS_TIMEOUT(val) (LIRC_MODE2(val) == LIRC_MODE2_TIMEOUT)
+#define LIRC_IS_OVERFLOW(val) (LIRC_MODE2(val) == LIRC_MODE2_OVERFLOW)
 #define lirc_t int
 #define LIRC_MODE2SEND(x) (x)
 #define LIRC_SEND2MODE(x) (x)
@@ -63,17 +66,15 @@
 #define LIRC_CAN_REC_LIRCCODE LIRC_MODE2REC(LIRC_MODE_LIRCCODE)
 #define LIRC_CAN_REC_MASK LIRC_MODE2REC(LIRC_CAN_SEND_MASK)
 #define LIRC_CAN_SET_REC_CARRIER (LIRC_CAN_SET_SEND_CARRIER << 16)
-#define LIRC_CAN_SET_REC_DUTY_CYCLE (LIRC_CAN_SET_SEND_DUTY_CYCLE << 16)
-#define LIRC_CAN_SET_REC_DUTY_CYCLE_RANGE 0x40000000
 #define LIRC_CAN_SET_REC_CARRIER_RANGE 0x80000000
 #define LIRC_CAN_GET_REC_RESOLUTION 0x20000000
 #define LIRC_CAN_SET_REC_TIMEOUT 0x10000000
-#define LIRC_CAN_SET_REC_FILTER 0x08000000
 #define LIRC_CAN_MEASURE_CARRIER 0x02000000
 #define LIRC_CAN_USE_WIDEBAND_RECEIVER 0x04000000
 #define LIRC_CAN_SEND(x) ((x) & LIRC_CAN_SEND_MASK)
 #define LIRC_CAN_REC(x) ((x) & LIRC_CAN_REC_MASK)
-#define LIRC_CAN_NOTIFY_DECODE 0x01000000
+#define LIRC_CAN_SET_REC_FILTER 0
+#define LIRC_CAN_NOTIFY_DECODE 0
 #define LIRC_GET_FEATURES _IOR('i', 0x00000000, __u32)
 #define LIRC_GET_SEND_MODE _IOR('i', 0x00000001, __u32)
 #define LIRC_GET_REC_MODE _IOR('i', 0x00000002, __u32)
diff --git a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/loadpin.h b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/loadpin.h
new file mode 100644
index 0000000..2641939
--- /dev/null
+++ b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/loadpin.h
@@ -0,0 +1,23 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPI_LINUX_LOOP_LOADPIN_H
+#define _UAPI_LINUX_LOOP_LOADPIN_H
+#define LOADPIN_IOC_MAGIC 'L'
+#define LOADPIN_IOC_SET_TRUSTED_VERITY_DIGESTS _IOW(LOADPIN_IOC_MAGIC, 0x00, unsigned int)
+#endif
diff --git a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/lwtunnel.h b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/lwtunnel.h
index e6fb536..94011dd 100644
--- a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/lwtunnel.h
+++ b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/lwtunnel.h
@@ -30,6 +30,7 @@
   LWTUNNEL_ENCAP_SEG6_LOCAL,
   LWTUNNEL_ENCAP_RPL,
   LWTUNNEL_ENCAP_IOAM6,
+  LWTUNNEL_ENCAP_XFRM,
   __LWTUNNEL_ENCAP_MAX,
 };
 #define LWTUNNEL_ENCAP_MAX (__LWTUNNEL_ENCAP_MAX - 1)
@@ -107,4 +108,11 @@
 };
 #define LWT_BPF_MAX (__LWT_BPF_MAX - 1)
 #define LWT_BPF_MAX_HEADROOM 256
+enum {
+  LWT_XFRM_UNSPEC,
+  LWT_XFRM_IF_ID,
+  LWT_XFRM_LINK,
+  __LWT_XFRM_MAX,
+};
+#define LWT_XFRM_MAX (__LWT_XFRM_MAX - 1)
 #endif
diff --git a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/magic.h b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/magic.h
index 6563411..ac2a0f3 100644
--- a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/magic.h
+++ b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/magic.h
@@ -99,11 +99,7 @@
 #define AAFS_MAGIC 0x5a3c69f0
 #define ZONEFS_MAGIC 0x5a4f4653
 #define UDF_SUPER_MAGIC 0x15013346
-#define BALLOON_KVM_MAGIC 0x13661366
-#define ZSMALLOC_MAGIC 0x58295829
 #define DMA_BUF_MAGIC 0x444d4142
 #define DEVMEM_MAGIC 0x454d444d
-#define Z3FOLD_MAGIC 0x33
-#define PPC_CMM_MAGIC 0xc7571590
 #define SECRETMEM_MAGIC 0x5345434d
 #endif
diff --git a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/mctp.h b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/mctp.h
index 21a9a14..f02c12f 100644
--- a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/mctp.h
+++ b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/mctp.h
@@ -46,5 +46,13 @@
 #define MCTP_ADDR_ANY 0xff
 #define MCTP_TAG_MASK 0x07
 #define MCTP_TAG_OWNER 0x08
+#define MCTP_TAG_PREALLOC 0x10
 #define MCTP_OPT_ADDR_EXT 1
+#define SIOCMCTPALLOCTAG (SIOCPROTOPRIVATE + 0)
+#define SIOCMCTPDROPTAG (SIOCPROTOPRIVATE + 1)
+struct mctp_ioc_tag_ctl {
+  mctp_eid_t peer_addr;
+  __u8 tag;
+  __u16 flags;
+};
 #endif
diff --git a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/mdio.h b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/mdio.h
index d5c9da8..7a2c9af 100644
--- a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/mdio.h
+++ b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/mdio.h
@@ -66,6 +66,19 @@
 #define MDIO_PCS_10GBRT_STAT2 33
 #define MDIO_AN_10GBT_CTRL 32
 #define MDIO_AN_10GBT_STAT 33
+#define MDIO_B10L_PMA_CTRL 2294
+#define MDIO_PMA_10T1L_STAT 2295
+#define MDIO_PCS_10T1L_CTRL 2278
+#define MDIO_PMA_PMD_BT1 18
+#define MDIO_AN_T1_CTRL 512
+#define MDIO_AN_T1_STAT 513
+#define MDIO_AN_T1_ADV_L 514
+#define MDIO_AN_T1_ADV_M 515
+#define MDIO_AN_T1_ADV_H 516
+#define MDIO_AN_T1_LP_L 517
+#define MDIO_AN_T1_LP_M 518
+#define MDIO_AN_T1_LP_H 519
+#define MDIO_PMA_PMD_BT1_CTRL 2100
 #define MDIO_PMA_LASI_RXCTRL 0x9000
 #define MDIO_PMA_LASI_TXCTRL 0x9001
 #define MDIO_PMA_LASI_CTRL 0x9002
@@ -139,6 +152,7 @@
 #define MDIO_PMA_CTRL2_10BT 0x000f
 #define MDIO_PMA_CTRL2_2_5GBT 0x0030
 #define MDIO_PMA_CTRL2_5GBT 0x0031
+#define MDIO_PMA_CTRL2_BASET1 0x003D
 #define MDIO_PCS_CTRL2_TYPE 0x0003
 #define MDIO_PCS_CTRL2_10GBR 0x0000
 #define MDIO_PCS_CTRL2_10GBX 0x0001
@@ -184,6 +198,7 @@
 #define MDIO_PMA_EXTABLE_1000BKX 0x0040
 #define MDIO_PMA_EXTABLE_100BTX 0x0080
 #define MDIO_PMA_EXTABLE_10BT 0x0100
+#define MDIO_PMA_EXTABLE_BT1 0x0800
 #define MDIO_PMA_EXTABLE_NBT 0x4000
 #define MDIO_PHYXS_LNSTAT_SYNC0 0x0001
 #define MDIO_PHYXS_LNSTAT_SYNC1 0x0002
@@ -218,6 +233,44 @@
 #define MDIO_AN_10GBT_STAT_LOCOK 0x2000
 #define MDIO_AN_10GBT_STAT_MS 0x4000
 #define MDIO_AN_10GBT_STAT_MSFLT 0x8000
+#define MDIO_PMA_10T1L_CTRL_LB_EN 0x0001
+#define MDIO_PMA_10T1L_CTRL_EEE_EN 0x0400
+#define MDIO_PMA_10T1L_CTRL_LOW_POWER 0x0800
+#define MDIO_PMA_10T1L_CTRL_2V4_EN 0x1000
+#define MDIO_PMA_10T1L_CTRL_TX_DIS 0x4000
+#define MDIO_PMA_10T1L_CTRL_PMA_RST 0x8000
+#define MDIO_PMA_10T1L_STAT_LINK 0x0001
+#define MDIO_PMA_10T1L_STAT_FAULT 0x0002
+#define MDIO_PMA_10T1L_STAT_POLARITY 0x0004
+#define MDIO_PMA_10T1L_STAT_RECV_FAULT 0x0200
+#define MDIO_PMA_10T1L_STAT_EEE 0x0400
+#define MDIO_PMA_10T1L_STAT_LOW_POWER 0x0800
+#define MDIO_PMA_10T1L_STAT_2V4_ABLE 0x1000
+#define MDIO_PMA_10T1L_STAT_LB_ABLE 0x2000
+#define MDIO_PCS_10T1L_CTRL_LB 0x4000
+#define MDIO_PCS_10T1L_CTRL_RESET 0x8000
+#define MDIO_PMA_PMD_BT1_B10L_ABLE 0x0004
+#define MDIO_AN_T1_ADV_L_PAUSE_CAP ADVERTISE_PAUSE_CAP
+#define MDIO_AN_T1_ADV_L_PAUSE_ASYM ADVERTISE_PAUSE_ASYM
+#define MDIO_AN_T1_ADV_L_FORCE_MS 0x1000
+#define MDIO_AN_T1_ADV_L_REMOTE_FAULT ADVERTISE_RFAULT
+#define MDIO_AN_T1_ADV_L_ACK ADVERTISE_LPACK
+#define MDIO_AN_T1_ADV_L_NEXT_PAGE_REQ ADVERTISE_NPAGE
+#define MDIO_AN_T1_ADV_M_B10L 0x4000
+#define MDIO_AN_T1_ADV_M_MST 0x0010
+#define MDIO_AN_T1_ADV_H_10L_TX_HI_REQ 0x1000
+#define MDIO_AN_T1_ADV_H_10L_TX_HI 0x2000
+#define MDIO_AN_T1_LP_L_PAUSE_CAP LPA_PAUSE_CAP
+#define MDIO_AN_T1_LP_L_PAUSE_ASYM LPA_PAUSE_ASYM
+#define MDIO_AN_T1_LP_L_FORCE_MS 0x1000
+#define MDIO_AN_T1_LP_L_REMOTE_FAULT LPA_RFAULT
+#define MDIO_AN_T1_LP_L_ACK LPA_LPACK
+#define MDIO_AN_T1_LP_L_NEXT_PAGE_REQ LPA_NPAGE
+#define MDIO_AN_T1_LP_M_MST 0x0010
+#define MDIO_AN_T1_LP_M_B10L 0x4000
+#define MDIO_AN_T1_LP_H_10L_TX_HI_REQ 0x1000
+#define MDIO_AN_T1_LP_H_10L_TX_HI 0x2000
+#define MDIO_PMA_PMD_BT1_CTRL_CFG_MST 0x4000
 #define MDIO_AN_EEE_ADV_100TX 0x0002
 #define MDIO_AN_EEE_ADV_1000T 0x0004
 #define MDIO_EEE_100TX MDIO_AN_EEE_ADV_100TX
diff --git a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/media-bus-format.h b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/media-bus-format.h
index 2542a32..4555de1 100644
--- a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/media-bus-format.h
+++ b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/media-bus-format.h
@@ -43,9 +43,13 @@
 #define MEDIA_BUS_FMT_RGB888_3X8_DELTA 0x101d
 #define MEDIA_BUS_FMT_RGB888_1X7X4_SPWG 0x1011
 #define MEDIA_BUS_FMT_RGB888_1X7X4_JEIDA 0x1012
+#define MEDIA_BUS_FMT_RGB666_1X30_CPADLO 0x101e
+#define MEDIA_BUS_FMT_RGB888_1X30_CPADLO 0x101f
 #define MEDIA_BUS_FMT_ARGB8888_1X32 0x100d
 #define MEDIA_BUS_FMT_RGB888_1X32_PADHI 0x100f
 #define MEDIA_BUS_FMT_RGB101010_1X30 0x1018
+#define MEDIA_BUS_FMT_RGB666_1X36_CPADLO 0x1020
+#define MEDIA_BUS_FMT_RGB888_1X36_CPADLO 0x1021
 #define MEDIA_BUS_FMT_RGB121212_1X36 0x1019
 #define MEDIA_BUS_FMT_RGB161616_1X48 0x101a
 #define MEDIA_BUS_FMT_Y8_1X8 0x2001
diff --git a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/media.h b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/media.h
index 5c8efcd..869d47b 100644
--- a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/media.h
+++ b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/media.h
@@ -18,7 +18,6 @@
  ****************************************************************************/
 #ifndef __LINUX_MEDIA_H
 #define __LINUX_MEDIA_H
-#include <stdint.h>
 #include <linux/ioctl.h>
 #include <linux/types.h>
 struct media_device_info {
@@ -117,6 +116,7 @@
 #define MEDIA_LNK_FL_LINK_TYPE (0xf << 28)
 #define MEDIA_LNK_FL_DATA_LINK (0 << 28)
 #define MEDIA_LNK_FL_INTERFACE_LINK (1 << 28)
+#define MEDIA_LNK_FL_ANCILLARY_LINK (2 << 28)
 struct media_link_desc {
   struct media_pad_desc source;
   struct media_pad_desc sink;
diff --git a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/minix_fs.h b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/minix_fs.h
index b6f1c69..0878efe 100644
--- a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/minix_fs.h
+++ b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/minix_fs.h
@@ -77,10 +77,10 @@
 };
 struct minix_dir_entry {
   __u16 inode;
-  char name[0];
+  char name[];
 };
 struct minix3_dir_entry {
   __u32 inode;
-  char name[0];
+  char name[];
 };
 #endif
diff --git a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/mmc/ioctl.h b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/mmc/ioctl.h
index afea6a5..451134b 100644
--- a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/mmc/ioctl.h
+++ b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/mmc/ioctl.h
@@ -39,7 +39,7 @@
 #define mmc_ioc_cmd_set_data(ic,ptr) ic.data_ptr = (__u64) (unsigned long) ptr
 struct mmc_ioc_multi_cmd {
   __u64 num_of_cmds;
-  struct mmc_ioc_cmd cmds[0];
+  struct mmc_ioc_cmd cmds[];
 };
 #define MMC_IOC_CMD _IOWR(MMC_BLOCK_MAJOR, 0, struct mmc_ioc_cmd)
 #define MMC_IOC_MULTI_CMD _IOWR(MMC_BLOCK_MAJOR, 1, struct mmc_ioc_multi_cmd)
diff --git a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/mptcp.h b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/mptcp.h
index 67b0ce3..da1b5af 100644
--- a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/mptcp.h
+++ b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/mptcp.h
@@ -18,12 +18,13 @@
  ****************************************************************************/
 #ifndef _UAPI_MPTCP_H
 #define _UAPI_MPTCP_H
+#include <netinet/in.h>
+#include <sys/socket.h>
 #include <linux/const.h>
 #include <linux/types.h>
 #include <linux/in.h>
 #include <linux/in6.h>
 #include <linux/socket.h>
-#include <sys/socket.h>
 #define MPTCP_SUBFLOW_FLAG_MCAP_REM _BITUL(0)
 #define MPTCP_SUBFLOW_FLAG_MCAP_LOC _BITUL(1)
 #define MPTCP_SUBFLOW_FLAG_JOIN_REM _BITUL(2)
@@ -58,6 +59,9 @@
   MPTCP_PM_ATTR_ADDR,
   MPTCP_PM_ATTR_RCV_ADD_ADDRS,
   MPTCP_PM_ATTR_SUBFLOWS,
+  MPTCP_PM_ATTR_TOKEN,
+  MPTCP_PM_ATTR_LOC_ID,
+  MPTCP_PM_ATTR_ADDR_REMOTE,
   __MPTCP_PM_ATTR_MAX
 };
 #define MPTCP_PM_ATTR_MAX (__MPTCP_PM_ATTR_MAX - 1)
@@ -77,6 +81,7 @@
 #define MPTCP_PM_ADDR_FLAG_SUBFLOW (1 << 1)
 #define MPTCP_PM_ADDR_FLAG_BACKUP (1 << 2)
 #define MPTCP_PM_ADDR_FLAG_FULLMESH (1 << 3)
+#define MPTCP_PM_ADDR_FLAG_IMPLICIT (1 << 4)
 enum {
   MPTCP_PM_CMD_UNSPEC,
   MPTCP_PM_CMD_ADD_ADDR,
@@ -86,6 +91,10 @@
   MPTCP_PM_CMD_SET_LIMITS,
   MPTCP_PM_CMD_GET_LIMITS,
   MPTCP_PM_CMD_SET_FLAGS,
+  MPTCP_PM_CMD_ANNOUNCE,
+  MPTCP_PM_CMD_REMOVE,
+  MPTCP_PM_CMD_SUBFLOW_CREATE,
+  MPTCP_PM_CMD_SUBFLOW_DESTROY,
   __MPTCP_PM_CMD_AFTER_LAST
 };
 #define MPTCP_INFO_FLAG_FALLBACK _BITUL(0)
@@ -136,6 +145,7 @@
   MPTCP_ATTR_IF_IDX,
   MPTCP_ATTR_RESET_REASON,
   MPTCP_ATTR_RESET_FLAGS,
+  MPTCP_ATTR_SERVER_SIDE,
   __MPTCP_ATTR_AFTER_LAST
 };
 #define MPTCP_ATTR_MAX (__MPTCP_ATTR_AFTER_LAST - 1)
diff --git a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/mroute6.h b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/mroute6.h
index c73765c..68480de 100644
--- a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/mroute6.h
+++ b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/mroute6.h
@@ -93,6 +93,7 @@
 #define MRT6MSG_NOCACHE 1
 #define MRT6MSG_WRONGMIF 2
 #define MRT6MSG_WHOLEPKT 3
+#define MRT6MSG_WRMIFWHOLE 4
   __u8 im6_mbz;
   __u8 im6_msgtype;
   __u16 im6_mif;
diff --git a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/ndctl.h b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/ndctl.h
index 53f8ba4..7e0d560 100644
--- a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/ndctl.h
+++ b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/ndctl.h
@@ -22,33 +22,33 @@
 struct nd_cmd_dimm_flags {
   __u32 status;
   __u32 flags;
-} __packed;
+} __attribute__((__packed__));
 struct nd_cmd_get_config_size {
   __u32 status;
   __u32 config_size;
   __u32 max_xfer;
-} __packed;
+} __attribute__((__packed__));
 struct nd_cmd_get_config_data_hdr {
   __u32 in_offset;
   __u32 in_length;
   __u32 status;
-  __u8 out_buf[0];
-} __packed;
+  __u8 out_buf[];
+} __attribute__((__packed__));
 struct nd_cmd_set_config_hdr {
   __u32 in_offset;
   __u32 in_length;
-  __u8 in_buf[0];
-} __packed;
+  __u8 in_buf[];
+} __attribute__((__packed__));
 struct nd_cmd_vendor_hdr {
   __u32 opcode;
   __u32 in_length;
-  __u8 in_buf[0];
-} __packed;
+  __u8 in_buf[];
+} __attribute__((__packed__));
 struct nd_cmd_vendor_tail {
   __u32 status;
   __u32 out_length;
-  __u8 out_buf[0];
-} __packed;
+  __u8 out_buf[];
+} __attribute__((__packed__));
 struct nd_cmd_ars_cap {
   __u64 address;
   __u64 length;
@@ -57,7 +57,7 @@
   __u32 clear_err_unit;
   __u16 flags;
   __u16 reserved;
-} __packed;
+} __attribute__((__packed__));
 struct nd_cmd_ars_start {
   __u64 address;
   __u64 length;
@@ -66,7 +66,7 @@
   __u8 reserved[5];
   __u32 status;
   __u32 scrub_time;
-} __packed;
+} __attribute__((__packed__));
 struct nd_cmd_ars_status {
   __u32 status;
   __u32 out_length;
@@ -82,15 +82,15 @@
     __u32 reserved;
     __u64 err_address;
     __u64 length;
-  } __packed records[0];
-} __packed;
+  } __attribute__((__packed__)) records[];
+} __attribute__((__packed__));
 struct nd_cmd_clear_error {
   __u64 address;
   __u64 length;
   __u32 status;
   __u8 reserved[4];
   __u64 cleared;
-} __packed;
+} __attribute__((__packed__));
 enum {
   ND_CMD_IMPLEMENTED = 0,
   ND_CMD_ARS_CAP = 1,
@@ -129,7 +129,6 @@
 #define ND_DEVICE_REGION_BLK 3
 #define ND_DEVICE_NAMESPACE_IO 4
 #define ND_DEVICE_NAMESPACE_PMEM 5
-#define ND_DEVICE_NAMESPACE_BLK 6
 #define ND_DEVICE_DAX_PMEM 7
 enum nd_driver_flags {
   ND_DRIVER_DIMM = 1 << ND_DEVICE_DIMM,
@@ -137,7 +136,6 @@
   ND_DRIVER_REGION_BLK = 1 << ND_DEVICE_REGION_BLK,
   ND_DRIVER_NAMESPACE_IO = 1 << ND_DEVICE_NAMESPACE_IO,
   ND_DRIVER_NAMESPACE_PMEM = 1 << ND_DEVICE_NAMESPACE_PMEM,
-  ND_DRIVER_NAMESPACE_BLK = 1 << ND_DEVICE_NAMESPACE_BLK,
   ND_DRIVER_DAX_PMEM = 1 << ND_DEVICE_DAX_PMEM,
 };
 enum ars_masks {
diff --git a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/neighbour.h b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/neighbour.h
index 278f7d1..b86d2ae 100644
--- a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/neighbour.h
+++ b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/neighbour.h
@@ -46,6 +46,8 @@
   NDA_NH_ID,
   NDA_FDB_EXT_ATTRS,
   NDA_FLAGS_EXT,
+  NDA_NDM_STATE_MASK,
+  NDA_NDM_FLAGS_MASK,
   __NDA_MAX
 };
 #define NDA_MAX (__NDA_MAX - 1)
@@ -106,6 +108,7 @@
   NDTPA_QUEUE_LENBYTES,
   NDTPA_MCAST_REPROBES,
   NDTPA_PAD,
+  NDTPA_INTERVAL_PROBE_TIME_MS,
   __NDTPA_MAX
 };
 #define NDTPA_MAX (__NDTPA_MAX - 1)
diff --git a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/net_dropmon.h b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/net_dropmon.h
index 01b76cb..4d2c336 100644
--- a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/net_dropmon.h
+++ b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/net_dropmon.h
@@ -36,11 +36,11 @@
 };
 struct net_dm_config_msg {
   __u32 entries;
-  struct net_dm_config_entry options[0];
+  struct net_dm_config_entry options[];
 };
 struct net_dm_alert_msg {
   __u32 entries;
-  struct net_dm_drop_point points[0];
+  struct net_dm_drop_point points[];
 };
 struct net_dm_user_msg {
   union {
@@ -87,6 +87,7 @@
   NET_DM_ATTR_SW_DROPS,
   NET_DM_ATTR_HW_DROPS,
   NET_DM_ATTR_FLOW_ACTION_COOKIE,
+  NET_DM_ATTR_REASON,
   __NET_DM_ATTR_MAX,
   NET_DM_ATTR_MAX = __NET_DM_ATTR_MAX - 1
 };
diff --git a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/netfilter/nfnetlink_queue.h b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/netfilter/nfnetlink_queue.h
index 75fa359..d100dec 100644
--- a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/netfilter/nfnetlink_queue.h
+++ b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/netfilter/nfnetlink_queue.h
@@ -70,6 +70,7 @@
   NFQA_SECCTX,
   NFQA_VLAN,
   NFQA_L2HDR,
+  NFQA_PRIORITY,
   __NFQA_MAX
 };
 #define NFQA_MAX (__NFQA_MAX - 1)
diff --git a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/netfilter/x_tables.h b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/netfilter/x_tables.h
index 46bde57..0993265 100644
--- a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/netfilter/x_tables.h
+++ b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/netfilter/x_tables.h
@@ -36,7 +36,7 @@
     } kernel;
     __u16 match_size;
   } u;
-  unsigned char data[0];
+  unsigned char data[];
 };
 struct xt_entry_target {
   union {
@@ -87,7 +87,7 @@
 struct xt_counters_info {
   char name[XT_TABLE_MAXNAMELEN];
   unsigned int num_counters;
-  struct xt_counters counters[0];
+  struct xt_counters counters[];
 };
 #define XT_INV_PROTO 0x40
 #define XT_MATCH_ITERATE(type,e,fn,args...) \
diff --git a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/netfilter_arp/arp_tables.h b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/netfilter_arp/arp_tables.h
index 340625f..862f514 100644
--- a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/netfilter_arp/arp_tables.h
+++ b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/netfilter_arp/arp_tables.h
@@ -72,7 +72,7 @@
   __u16 next_offset;
   unsigned int comefrom;
   struct xt_counters counters;
-  unsigned char elems[0];
+  unsigned char elems[];
 };
 #define ARPT_BASE_CTL 96
 #define ARPT_SO_SET_REPLACE (ARPT_BASE_CTL)
@@ -99,11 +99,11 @@
   unsigned int underflow[NF_ARP_NUMHOOKS];
   unsigned int num_counters;
   struct xt_counters __user * counters;
-  struct arpt_entry entries[0];
+  struct arpt_entry entries[];
 };
 struct arpt_get_entries {
   char name[XT_TABLE_MAXNAMELEN];
   unsigned int size;
-  struct arpt_entry entrytable[0];
+  struct arpt_entry entrytable[];
 };
 #endif
diff --git a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/netfilter_bridge/ebt_among.h b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/netfilter_bridge/ebt_among.h
index 74cd550..aa39c5b 100644
--- a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/netfilter_bridge/ebt_among.h
+++ b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/netfilter_bridge/ebt_among.h
@@ -28,7 +28,7 @@
 struct ebt_mac_wormhash {
   int table[257];
   int poolsize;
-  struct ebt_mac_wormhash_tuple pool[0];
+  struct ebt_mac_wormhash_tuple pool[];
 };
 #define ebt_mac_wormhash_size(x) ((x) ? sizeof(struct ebt_mac_wormhash) + (x)->poolsize * sizeof(struct ebt_mac_wormhash_tuple) : 0)
 struct ebt_among_info {
diff --git a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/netfilter_decnet.h b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/netfilter_decnet.h
deleted file mode 100644
index c9c16ca..0000000
--- a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/netfilter_decnet.h
+++ /dev/null
@@ -1,57 +0,0 @@
-/****************************************************************************
- ****************************************************************************
- ***
- ***   This header was automatically generated from a Linux kernel header
- ***   of the same name, to make information necessary for userspace to
- ***   call into the kernel available to libc.  It contains only constants,
- ***   structures, and macros generated from the original header, and thus,
- ***   contains no copyrightable information.
- ***
- ***   To edit the content of this header, modify the corresponding
- ***   source file (e.g. under external/kernel-headers/original/) then
- ***   run bionic/libc/kernel/tools/update_all.py
- ***
- ***   Any manual change here will be lost the next time this script will
- ***   be run. You've been warned!
- ***
- ****************************************************************************
- ****************************************************************************/
-#ifndef __LINUX_DECNET_NETFILTER_H
-#define __LINUX_DECNET_NETFILTER_H
-#include <linux/netfilter.h>
-#include <limits.h>
-#define NF_DN_NUMHOOKS 7
-#define NF_DN_PRE_ROUTING 0
-#define NF_DN_LOCAL_IN 1
-#define NF_DN_FORWARD 2
-#define NF_DN_LOCAL_OUT 3
-#define NF_DN_POST_ROUTING 4
-#define NF_DN_HELLO 5
-#define NF_DN_ROUTE 6
-enum nf_dn_hook_priorities {
-  NF_DN_PRI_FIRST = INT_MIN,
-  NF_DN_PRI_CONNTRACK = - 200,
-  NF_DN_PRI_MANGLE = - 150,
-  NF_DN_PRI_NAT_DST = - 100,
-  NF_DN_PRI_FILTER = 0,
-  NF_DN_PRI_NAT_SRC = 100,
-  NF_DN_PRI_DNRTMSG = 200,
-  NF_DN_PRI_LAST = INT_MAX,
-};
-struct nf_dn_rtmsg {
-  int nfdn_ifindex;
-};
-#define NFDN_RTMSG(r) ((unsigned char *) (r) + NLMSG_ALIGN(sizeof(struct nf_dn_rtmsg)))
-#define DNRMG_L1_GROUP 0x01
-#define DNRMG_L2_GROUP 0x02
-enum {
-  DNRNG_NLGRP_NONE,
-#define DNRNG_NLGRP_NONE DNRNG_NLGRP_NONE
-  DNRNG_NLGRP_L1,
-#define DNRNG_NLGRP_L1 DNRNG_NLGRP_L1
-  DNRNG_NLGRP_L2,
-#define DNRNG_NLGRP_L2 DNRNG_NLGRP_L2
-  __DNRNG_NLGRP_MAX
-};
-#define DNRNG_NLGRP_MAX (__DNRNG_NLGRP_MAX - 1)
-#endif
diff --git a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/netfilter_ipv4/ip_tables.h b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/netfilter_ipv4/ip_tables.h
index 033c519..14a65ad 100644
--- a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/netfilter_ipv4/ip_tables.h
+++ b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/netfilter_ipv4/ip_tables.h
@@ -79,7 +79,7 @@
   __u16 next_offset;
   unsigned int comefrom;
   struct xt_counters counters;
-  unsigned char elems[0];
+  unsigned char elems[];
 };
 #define IPT_BASE_CTL 64
 #define IPT_SO_SET_REPLACE (IPT_BASE_CTL)
@@ -113,12 +113,12 @@
   unsigned int underflow[NF_INET_NUMHOOKS];
   unsigned int num_counters;
   struct xt_counters __user * counters;
-  struct ipt_entry entries[0];
+  struct ipt_entry entries[];
 };
 struct ipt_get_entries {
   char name[XT_TABLE_MAXNAMELEN];
   unsigned int size;
-  struct ipt_entry entrytable[0];
+  struct ipt_entry entrytable[];
 };
 static __inline__ struct xt_entry_target * ipt_get_target(struct ipt_entry * e) {
   return(struct xt_entry_target *) ((char *) e + e->target_offset);
diff --git a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/netfilter_ipv6/ip6_tables.h b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/netfilter_ipv6/ip6_tables.h
index b3f426d..22071db 100644
--- a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/netfilter_ipv6/ip6_tables.h
+++ b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/netfilter_ipv6/ip6_tables.h
@@ -133,12 +133,12 @@
   unsigned int underflow[NF_INET_NUMHOOKS];
   unsigned int num_counters;
   struct xt_counters __user * counters;
-  struct ip6t_entry entries[0];
+  struct ip6t_entry entries[];
 };
 struct ip6t_get_entries {
   char name[XT_TABLE_MAXNAMELEN];
   unsigned int size;
-  struct ip6t_entry entrytable[0];
+  struct ip6t_entry entrytable[];
 };
 static __inline__ struct xt_entry_target * ip6t_get_target(struct ip6t_entry * e) {
   return(struct xt_entry_target *) ((char *) e + e->target_offset);
diff --git a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/netlink.h b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/netlink.h
index 77825cc..17d5291 100644
--- a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/netlink.h
+++ b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/netlink.h
@@ -73,6 +73,7 @@
 #define NLM_F_CREATE 0x400
 #define NLM_F_APPEND 0x800
 #define NLM_F_NONREC 0x100
+#define NLM_F_BULK 0x200
 #define NLM_F_CAPPED 0x100
 #define NLM_F_ACK_TLVS 0x200
 #define NLMSG_ALIGNTO 4U
@@ -99,6 +100,8 @@
   NLMSGERR_ATTR_OFFS,
   NLMSGERR_ATTR_COOKIE,
   NLMSGERR_ATTR_POLICY,
+  NLMSGERR_ATTR_MISS_TYPE,
+  NLMSGERR_ATTR_MISS_NEST,
   __NLMSGERR_ATTR_MAX,
   NLMSGERR_ATTR_MAX = __NLMSGERR_ATTR_MAX - 1
 };
diff --git a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/nfs4.h b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/nfs4.h
index 9d614ce..ef860e2 100644
--- a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/nfs4.h
+++ b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/nfs4.h
@@ -45,6 +45,7 @@
 #define NFS4_FH_VOL_RENAME 0x0008
 #define NFS4_OPEN_RESULT_CONFIRM 0x0002
 #define NFS4_OPEN_RESULT_LOCKTYPE_POSIX 0x0004
+#define NFS4_OPEN_RESULT_PRESERVE_UNLINKED 0x0008
 #define NFS4_OPEN_RESULT_MAY_NOTIFY_LOCK 0x0020
 #define NFS4_SHARE_ACCESS_MASK 0x000F
 #define NFS4_SHARE_ACCESS_READ 0x0001
diff --git a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/nl80211.h b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/nl80211.h
index e902178..faff80a 100644
--- a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/nl80211.h
+++ b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/nl80211.h
@@ -185,6 +185,11 @@
   NL80211_CMD_COLOR_CHANGE_COMPLETED,
   NL80211_CMD_SET_FILS_AAD,
   NL80211_CMD_ASSOC_COMEBACK,
+  NL80211_CMD_ADD_LINK,
+  NL80211_CMD_REMOVE_LINK,
+  NL80211_CMD_ADD_LINK_STA,
+  NL80211_CMD_MODIFY_LINK_STA,
+  NL80211_CMD_REMOVE_LINK_STA,
   __NL80211_CMD_AFTER_LAST,
   NL80211_CMD_MAX = __NL80211_CMD_AFTER_LAST - 1
 };
@@ -511,6 +516,17 @@
   NL80211_ATTR_MBSSID_ELEMS,
   NL80211_ATTR_RADAR_BACKGROUND,
   NL80211_ATTR_AP_SETTINGS_FLAGS,
+  NL80211_ATTR_EHT_CAPABILITY,
+  NL80211_ATTR_DISABLE_EHT,
+  NL80211_ATTR_MLO_LINKS,
+  NL80211_ATTR_MLO_LINK_ID,
+  NL80211_ATTR_MLD_ADDR,
+  NL80211_ATTR_MLO_SUPPORT,
+  NL80211_ATTR_MAX_NUM_AKM_SUITES,
+  NL80211_ATTR_EML_CAPABILITY,
+  NL80211_ATTR_MLD_CAPA_AND_OPS,
+  NL80211_ATTR_TX_HW_TIMESTAMP,
+  NL80211_ATTR_RX_HW_TIMESTAMP,
   __NL80211_ATTR_AFTER_LAST,
   NUM_NL80211_ATTR = __NL80211_ATTR_AFTER_LAST,
   NL80211_ATTR_MAX = __NL80211_ATTR_AFTER_LAST - 1
@@ -555,6 +571,8 @@
 #define NL80211_HE_MAX_CAPABILITY_LEN 54
 #define NL80211_MAX_NR_CIPHER_SUITES 5
 #define NL80211_MAX_NR_AKM_SUITES 2
+#define NL80211_EHT_MIN_CAPABILITY_LEN 13
+#define NL80211_EHT_MAX_CAPABILITY_LEN 51
 #define NL80211_MIN_REMAIN_ON_CHANNEL_TIME 10
 #define NL80211_SCAN_RSSI_THOLD_OFF - 300
 #define NL80211_CQM_TXE_MAX_INTVL 1800
@@ -616,6 +634,29 @@
   NL80211_RATE_INFO_HE_RU_ALLOC_996,
   NL80211_RATE_INFO_HE_RU_ALLOC_2x996,
 };
+enum nl80211_eht_gi {
+  NL80211_RATE_INFO_EHT_GI_0_8,
+  NL80211_RATE_INFO_EHT_GI_1_6,
+  NL80211_RATE_INFO_EHT_GI_3_2,
+};
+enum nl80211_eht_ru_alloc {
+  NL80211_RATE_INFO_EHT_RU_ALLOC_26,
+  NL80211_RATE_INFO_EHT_RU_ALLOC_52,
+  NL80211_RATE_INFO_EHT_RU_ALLOC_52P26,
+  NL80211_RATE_INFO_EHT_RU_ALLOC_106,
+  NL80211_RATE_INFO_EHT_RU_ALLOC_106P26,
+  NL80211_RATE_INFO_EHT_RU_ALLOC_242,
+  NL80211_RATE_INFO_EHT_RU_ALLOC_484,
+  NL80211_RATE_INFO_EHT_RU_ALLOC_484P242,
+  NL80211_RATE_INFO_EHT_RU_ALLOC_996,
+  NL80211_RATE_INFO_EHT_RU_ALLOC_996P484,
+  NL80211_RATE_INFO_EHT_RU_ALLOC_996P484P242,
+  NL80211_RATE_INFO_EHT_RU_ALLOC_2x996,
+  NL80211_RATE_INFO_EHT_RU_ALLOC_2x996P484,
+  NL80211_RATE_INFO_EHT_RU_ALLOC_3x996,
+  NL80211_RATE_INFO_EHT_RU_ALLOC_3x996P484,
+  NL80211_RATE_INFO_EHT_RU_ALLOC_4x996,
+};
 enum nl80211_rate_info {
   __NL80211_RATE_INFO_INVALID,
   NL80211_RATE_INFO_BITRATE,
@@ -635,6 +676,11 @@
   NL80211_RATE_INFO_HE_GI,
   NL80211_RATE_INFO_HE_DCM,
   NL80211_RATE_INFO_HE_RU_ALLOC,
+  NL80211_RATE_INFO_320_MHZ_WIDTH,
+  NL80211_RATE_INFO_EHT_MCS,
+  NL80211_RATE_INFO_EHT_NSS,
+  NL80211_RATE_INFO_EHT_GI,
+  NL80211_RATE_INFO_EHT_RU_ALLOC,
   __NL80211_RATE_INFO_AFTER_LAST,
   NL80211_RATE_INFO_MAX = __NL80211_RATE_INFO_AFTER_LAST - 1
 };
@@ -754,6 +800,10 @@
   NL80211_BAND_IFTYPE_ATTR_HE_CAP_PPE,
   NL80211_BAND_IFTYPE_ATTR_HE_6GHZ_CAPA,
   NL80211_BAND_IFTYPE_ATTR_VENDOR_ELEMS,
+  NL80211_BAND_IFTYPE_ATTR_EHT_CAP_MAC,
+  NL80211_BAND_IFTYPE_ATTR_EHT_CAP_PHY,
+  NL80211_BAND_IFTYPE_ATTR_EHT_CAP_MCS_SET,
+  NL80211_BAND_IFTYPE_ATTR_EHT_CAP_PPE,
   __NL80211_BAND_IFTYPE_ATTR_AFTER_LAST,
   NL80211_BAND_IFTYPE_ATTR_MAX = __NL80211_BAND_IFTYPE_ATTR_AFTER_LAST - 1
 };
@@ -810,6 +860,8 @@
   NL80211_FREQUENCY_ATTR_4MHZ,
   NL80211_FREQUENCY_ATTR_8MHZ,
   NL80211_FREQUENCY_ATTR_16MHZ,
+  NL80211_FREQUENCY_ATTR_NO_320MHZ,
+  NL80211_FREQUENCY_ATTR_NO_EHT,
   __NL80211_FREQUENCY_ATTR_AFTER_LAST,
   NL80211_FREQUENCY_ATTR_MAX = __NL80211_FREQUENCY_ATTR_AFTER_LAST - 1
 };
@@ -878,6 +930,7 @@
   NL80211_RRF_NO_80MHZ = 1 << 15,
   NL80211_RRF_NO_160MHZ = 1 << 16,
   NL80211_RRF_NO_HE = 1 << 17,
+  NL80211_RRF_NO_320MHZ = 1 << 18,
 };
 #define NL80211_RRF_PASSIVE_SCAN NL80211_RRF_NO_IR
 #define NL80211_RRF_NO_IBSS NL80211_RRF_NO_IR
@@ -1033,6 +1086,7 @@
   NL80211_CHAN_WIDTH_4,
   NL80211_CHAN_WIDTH_8,
   NL80211_CHAN_WIDTH_16,
+  NL80211_CHAN_WIDTH_320,
 };
 enum nl80211_bss_scan_width {
   NL80211_BSS_CHAN_WIDTH_20,
@@ -1063,6 +1117,8 @@
   NL80211_BSS_PARENT_BSSID,
   NL80211_BSS_CHAIN_SIGNAL,
   NL80211_BSS_FREQUENCY_OFFSET,
+  NL80211_BSS_MLO_LINK_ID,
+  NL80211_BSS_MLD_ADDR,
   __NL80211_BSS_AFTER_LAST,
   NL80211_BSS_MAX = __NL80211_BSS_AFTER_LAST - 1
 };
@@ -1475,6 +1531,7 @@
   NL80211_EXT_FEATURE_BSS_COLOR,
   NL80211_EXT_FEATURE_FILS_CRYPTO_OFFLOAD,
   NL80211_EXT_FEATURE_RADAR_BACKGROUND,
+  NL80211_EXT_FEATURE_POWERED_ADDR_CHANGE,
   NUM_NL80211_EXT_FEATURES,
   MAX_NL80211_EXT_FEATURES = NUM_NL80211_EXT_FEATURES - 1
 };
diff --git a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/nvme_ioctl.h b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/nvme_ioctl.h
index f2a328e..388e83f 100644
--- a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/nvme_ioctl.h
+++ b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/nvme_ioctl.h
@@ -63,7 +63,10 @@
   __u64 metadata;
   __u64 addr;
   __u32 metadata_len;
-  __u32 data_len;
+  union {
+    __u32 data_len;
+    __u32 vec_cnt;
+  };
   __u32 cdw10;
   __u32 cdw11;
   __u32 cdw12;
@@ -74,6 +77,26 @@
   __u32 rsvd2;
   __u64 result;
 };
+struct nvme_uring_cmd {
+  __u8 opcode;
+  __u8 flags;
+  __u16 rsvd1;
+  __u32 nsid;
+  __u32 cdw2;
+  __u32 cdw3;
+  __u64 metadata;
+  __u64 addr;
+  __u32 metadata_len;
+  __u32 data_len;
+  __u32 cdw10;
+  __u32 cdw11;
+  __u32 cdw12;
+  __u32 cdw13;
+  __u32 cdw14;
+  __u32 cdw15;
+  __u32 timeout_ms;
+  __u32 rsvd2;
+};
 #define nvme_admin_cmd nvme_passthru_cmd
 #define NVME_IOCTL_ID _IO('N', 0x40)
 #define NVME_IOCTL_ADMIN_CMD _IOWR('N', 0x41, struct nvme_admin_cmd)
@@ -84,4 +107,9 @@
 #define NVME_IOCTL_RESCAN _IO('N', 0x46)
 #define NVME_IOCTL_ADMIN64_CMD _IOWR('N', 0x47, struct nvme_passthru_cmd64)
 #define NVME_IOCTL_IO64_CMD _IOWR('N', 0x48, struct nvme_passthru_cmd64)
+#define NVME_IOCTL_IO64_CMD_VEC _IOWR('N', 0x49, struct nvme_passthru_cmd64)
+#define NVME_URING_CMD_IO _IOWR('N', 0x80, struct nvme_uring_cmd)
+#define NVME_URING_CMD_IO_VEC _IOWR('N', 0x81, struct nvme_uring_cmd)
+#define NVME_URING_CMD_ADMIN _IOWR('N', 0x82, struct nvme_uring_cmd)
+#define NVME_URING_CMD_ADMIN_VEC _IOWR('N', 0x83, struct nvme_uring_cmd)
 #endif
diff --git a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/omap3isp.h b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/omap3isp.h
index d2eceb7..53345e3 100644
--- a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/omap3isp.h
+++ b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/omap3isp.h
@@ -89,10 +89,11 @@
 struct omap3isp_stat_data {
   struct timeval ts;
   void __user * buf;
-  __u32 buf_size;
+  __struct_group(, frame,, __u32 buf_size;
   __u16 frame_number;
   __u16 cur_frame;
   __u16 config_counter;
+ );
 };
 #define OMAP3ISP_HIST_BINS_32 0
 #define OMAP3ISP_HIST_BINS_64 1
diff --git a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/openvswitch.h b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/openvswitch.h
index 1f8ae17..c44e950 100644
--- a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/openvswitch.h
+++ b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/openvswitch.h
@@ -44,6 +44,7 @@
   OVS_DP_ATTR_PAD,
   OVS_DP_ATTR_MASKS_CACHE_SIZE,
   OVS_DP_ATTR_PER_CPU_PIDS,
+  OVS_DP_ATTR_IFINDEX,
   __OVS_DP_ATTR_MAX
 };
 #define OVS_DP_ATTR_MAX (__OVS_DP_ATTR_MAX - 1)
@@ -190,6 +191,10 @@
   OVS_KEY_ATTR_CT_ORIG_TUPLE_IPV4,
   OVS_KEY_ATTR_CT_ORIG_TUPLE_IPV6,
   OVS_KEY_ATTR_NSH,
+  OVS_KEY_ATTR_PACKET_TYPE,
+  OVS_KEY_ATTR_ND_EXTENSIONS,
+  OVS_KEY_ATTR_TUNNEL_INFO,
+  OVS_KEY_ATTR_IPV6_EXTHDRS,
   __OVS_KEY_ATTR_MAX
 };
 #define OVS_KEY_ATTR_MAX (__OVS_KEY_ATTR_MAX - 1)
@@ -245,6 +250,9 @@
   __u8 ipv6_hlimit;
   __u8 ipv6_frag;
 };
+struct ovs_key_ipv6_exthdrs {
+  __u16 hdrs;
+};
 struct ovs_key_tcp {
   __be16 tcp_src;
   __be16 tcp_dst;
diff --git a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/pci_regs.h b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/pci_regs.h
index 46612da..87549aa 100644
--- a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/pci_regs.h
+++ b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/pci_regs.h
@@ -525,6 +525,7 @@
 #define PCI_EXP_SLTCTL_PWR_OFF 0x0400
 #define PCI_EXP_SLTCTL_EIC 0x0800
 #define PCI_EXP_SLTCTL_DLLSCE 0x1000
+#define PCI_EXP_SLTCTL_ASPL_DISABLE 0x2000
 #define PCI_EXP_SLTCTL_IBPD_DISABLE 0x4000
 #define PCI_EXP_SLTSTA 0x1a
 #define PCI_EXP_SLTSTA_ABP 0x0001
@@ -634,7 +635,8 @@
 #define PCI_EXT_CAP_ID_DVSEC 0x23
 #define PCI_EXT_CAP_ID_DLF 0x25
 #define PCI_EXT_CAP_ID_PL_16GT 0x26
-#define PCI_EXT_CAP_ID_MAX PCI_EXT_CAP_ID_PL_16GT
+#define PCI_EXT_CAP_ID_DOE 0x2E
+#define PCI_EXT_CAP_ID_MAX PCI_EXT_CAP_ID_DOE
 #define PCI_EXT_CAP_DSN_SIZEOF 12
 #define PCI_EXT_CAP_MCAST_ENDPOINT_SIZEOF 40
 #define PCI_ERR_UNCOR_STATUS 0x04
@@ -937,4 +939,25 @@
 #define PCI_PL_16GT_LE_CTRL_DSP_TX_PRESET_MASK 0x0000000F
 #define PCI_PL_16GT_LE_CTRL_USP_TX_PRESET_MASK 0x000000F0
 #define PCI_PL_16GT_LE_CTRL_USP_TX_PRESET_SHIFT 4
+#define PCI_DOE_CAP 0x04
+#define PCI_DOE_CAP_INT_SUP 0x00000001
+#define PCI_DOE_CAP_INT_MSG_NUM 0x00000ffe
+#define PCI_DOE_CTRL 0x08
+#define PCI_DOE_CTRL_ABORT 0x00000001
+#define PCI_DOE_CTRL_INT_EN 0x00000002
+#define PCI_DOE_CTRL_GO 0x80000000
+#define PCI_DOE_STATUS 0x0c
+#define PCI_DOE_STATUS_BUSY 0x00000001
+#define PCI_DOE_STATUS_INT_STATUS 0x00000002
+#define PCI_DOE_STATUS_ERROR 0x00000004
+#define PCI_DOE_STATUS_DATA_OBJECT_READY 0x80000000
+#define PCI_DOE_WRITE 0x10
+#define PCI_DOE_READ 0x14
+#define PCI_DOE_DATA_OBJECT_HEADER_1_VID 0x0000ffff
+#define PCI_DOE_DATA_OBJECT_HEADER_1_TYPE 0x00ff0000
+#define PCI_DOE_DATA_OBJECT_HEADER_2_LENGTH 0x0003ffff
+#define PCI_DOE_DATA_OBJECT_DISC_REQ_3_INDEX 0x000000ff
+#define PCI_DOE_DATA_OBJECT_DISC_RSP_3_VID 0x0000ffff
+#define PCI_DOE_DATA_OBJECT_DISC_RSP_3_PROTOCOL 0x00ff0000
+#define PCI_DOE_DATA_OBJECT_DISC_RSP_3_NEXT_INDEX 0xff000000
 #endif
diff --git a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/perf_event.h b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/perf_event.h
index b022586..8f081ed 100644
--- a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/perf_event.h
+++ b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/perf_event.h
@@ -108,7 +108,6 @@
   PERF_SAMPLE_CODE_PAGE_SIZE = 1U << 23,
   PERF_SAMPLE_WEIGHT_STRUCT = 1U << 24,
   PERF_SAMPLE_MAX = 1U << 25,
-  __PERF_SAMPLE_CALLCHAIN_EARLY = 1ULL << 63,
 };
 #define PERF_SAMPLE_WEIGHT_TYPE (PERF_SAMPLE_WEIGHT | PERF_SAMPLE_WEIGHT_STRUCT)
 enum perf_branch_sample_type_shift {
@@ -130,6 +129,7 @@
   PERF_SAMPLE_BRANCH_NO_CYCLES_SHIFT = 15,
   PERF_SAMPLE_BRANCH_TYPE_SAVE_SHIFT = 16,
   PERF_SAMPLE_BRANCH_HW_INDEX_SHIFT = 17,
+  PERF_SAMPLE_BRANCH_PRIV_SAVE_SHIFT = 18,
   PERF_SAMPLE_BRANCH_MAX_SHIFT
 };
 enum perf_branch_sample_type {
@@ -151,6 +151,7 @@
   PERF_SAMPLE_BRANCH_NO_CYCLES = 1U << PERF_SAMPLE_BRANCH_NO_CYCLES_SHIFT,
   PERF_SAMPLE_BRANCH_TYPE_SAVE = 1U << PERF_SAMPLE_BRANCH_TYPE_SAVE_SHIFT,
   PERF_SAMPLE_BRANCH_HW_INDEX = 1U << PERF_SAMPLE_BRANCH_HW_INDEX_SHIFT,
+  PERF_SAMPLE_BRANCH_PRIV_SAVE = 1U << PERF_SAMPLE_BRANCH_PRIV_SAVE_SHIFT,
   PERF_SAMPLE_BRANCH_MAX = 1U << PERF_SAMPLE_BRANCH_MAX_SHIFT,
 };
 enum {
@@ -165,8 +166,42 @@
   PERF_BR_SYSRET = 8,
   PERF_BR_COND_CALL = 9,
   PERF_BR_COND_RET = 10,
+  PERF_BR_ERET = 11,
+  PERF_BR_IRQ = 12,
+  PERF_BR_SERROR = 13,
+  PERF_BR_NO_TX = 14,
+  PERF_BR_EXTEND_ABI = 15,
   PERF_BR_MAX,
 };
+enum {
+  PERF_BR_SPEC_NA = 0,
+  PERF_BR_SPEC_WRONG_PATH = 1,
+  PERF_BR_NON_SPEC_CORRECT_PATH = 2,
+  PERF_BR_SPEC_CORRECT_PATH = 3,
+  PERF_BR_SPEC_MAX,
+};
+enum {
+  PERF_BR_NEW_FAULT_ALGN = 0,
+  PERF_BR_NEW_FAULT_DATA = 1,
+  PERF_BR_NEW_FAULT_INST = 2,
+  PERF_BR_NEW_ARCH_1 = 3,
+  PERF_BR_NEW_ARCH_2 = 4,
+  PERF_BR_NEW_ARCH_3 = 5,
+  PERF_BR_NEW_ARCH_4 = 6,
+  PERF_BR_NEW_ARCH_5 = 7,
+  PERF_BR_NEW_MAX,
+};
+enum {
+  PERF_BR_PRIV_UNKNOWN = 0,
+  PERF_BR_PRIV_USER = 1,
+  PERF_BR_PRIV_KERNEL = 2,
+  PERF_BR_PRIV_HV = 3,
+};
+#define PERF_BR_ARM64_FIQ PERF_BR_NEW_ARCH_1
+#define PERF_BR_ARM64_DEBUG_HALT PERF_BR_NEW_ARCH_2
+#define PERF_BR_ARM64_DEBUG_EXIT PERF_BR_NEW_ARCH_3
+#define PERF_BR_ARM64_DEBUG_INST PERF_BR_NEW_ARCH_4
+#define PERF_BR_ARM64_DEBUG_DATA PERF_BR_NEW_ARCH_5
 #define PERF_SAMPLE_BRANCH_PLM_ALL (PERF_SAMPLE_BRANCH_USER | PERF_SAMPLE_BRANCH_KERNEL | PERF_SAMPLE_BRANCH_HV)
 enum perf_sample_regs_abi {
   PERF_SAMPLE_REGS_ABI_NONE = 0,
@@ -191,7 +226,8 @@
   PERF_FORMAT_TOTAL_TIME_RUNNING = 1U << 1,
   PERF_FORMAT_ID = 1U << 2,
   PERF_FORMAT_GROUP = 1U << 3,
-  PERF_FORMAT_MAX = 1U << 4,
+  PERF_FORMAT_LOST = 1U << 4,
+  PERF_FORMAT_MAX = 1U << 5,
 };
 #define PERF_ATTR_SIZE_VER0 64
 #define PERF_ATTR_SIZE_VER1 72
@@ -244,7 +280,7 @@
 struct perf_event_query_bpf {
   __u32 ids_len;
   __u32 prog_cnt;
-  __u32 ids[0];
+  __u32 ids[];
 };
 #define PERF_EVENT_IOC_ENABLE _IO('$', 0)
 #define PERF_EVENT_IOC_DISABLE _IO('$', 1)
@@ -432,6 +468,8 @@
 #define PERF_MEM_LVLNUM_L2 0x02
 #define PERF_MEM_LVLNUM_L3 0x03
 #define PERF_MEM_LVLNUM_L4 0x04
+#define PERF_MEM_LVLNUM_CXL 0x09
+#define PERF_MEM_LVLNUM_IO 0x0a
 #define PERF_MEM_LVLNUM_ANY_CACHE 0x0b
 #define PERF_MEM_LVLNUM_LFB 0x0c
 #define PERF_MEM_LVLNUM_RAM 0x0d
@@ -445,6 +483,7 @@
 #define PERF_MEM_SNOOP_HITM 0x10
 #define PERF_MEM_SNOOP_SHIFT 19
 #define PERF_MEM_SNOOPX_FWD 0x01
+#define PERF_MEM_SNOOPX_PEER 0x02
 #define PERF_MEM_SNOOPX_SHIFT 38
 #define PERF_MEM_LOCK_NA 0x01
 #define PERF_MEM_LOCK_LOCKED 0x02
@@ -470,7 +509,7 @@
 struct perf_branch_entry {
   __u64 from;
   __u64 to;
-  __u64 mispred : 1, predicted : 1, in_tx : 1, abort : 1, cycles : 16, type : 4, reserved : 40;
+  __u64 mispred : 1, predicted : 1, in_tx : 1, abort : 1, cycles : 16, type : 4, spec : 2, new_type : 4, priv : 3, reserved : 31;
 };
 union perf_sample_weight {
   __u64 full;
diff --git a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/pkt_cls.h b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/pkt_cls.h
index 9fd89e0..876cb73 100644
--- a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/pkt_cls.h
+++ b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/pkt_cls.h
@@ -199,7 +199,7 @@
   short offoff;
   short hoff;
   __be32 hmask;
-  struct tc_u32_key keys[0];
+  struct tc_u32_key keys[];
 };
 struct tc_u32_mark {
   __u32 val;
@@ -209,7 +209,7 @@
 struct tc_u32_pcnt {
   __u64 rcnt;
   __u64 rhit;
-  __u64 kcnts[0];
+  __u64 kcnts[];
 };
 #define TC_U32_TERMINAL 1
 #define TC_U32_OFFSET 2
@@ -459,6 +459,10 @@
   TCA_FLOWER_KEY_MPLS_OPTS,
   TCA_FLOWER_KEY_HASH,
   TCA_FLOWER_KEY_HASH_MASK,
+  TCA_FLOWER_KEY_NUM_OF_VLANS,
+  TCA_FLOWER_KEY_PPPOE_SID,
+  TCA_FLOWER_KEY_PPP_PROTO,
+  TCA_FLOWER_KEY_L2TPV3_SID,
   __TCA_FLOWER_MAX,
 };
 #define TCA_FLOWER_MAX (__TCA_FLOWER_MAX - 1)
@@ -476,6 +480,7 @@
   TCA_FLOWER_KEY_ENC_OPTS_GENEVE,
   TCA_FLOWER_KEY_ENC_OPTS_VXLAN,
   TCA_FLOWER_KEY_ENC_OPTS_ERSPAN,
+  TCA_FLOWER_KEY_ENC_OPTS_GTP,
   __TCA_FLOWER_KEY_ENC_OPTS_MAX,
 };
 #define TCA_FLOWER_KEY_ENC_OPTS_MAX (__TCA_FLOWER_KEY_ENC_OPTS_MAX - 1)
@@ -503,6 +508,13 @@
 };
 #define TCA_FLOWER_KEY_ENC_OPT_ERSPAN_MAX (__TCA_FLOWER_KEY_ENC_OPT_ERSPAN_MAX - 1)
 enum {
+  TCA_FLOWER_KEY_ENC_OPT_GTP_UNSPEC,
+  TCA_FLOWER_KEY_ENC_OPT_GTP_PDU_TYPE,
+  TCA_FLOWER_KEY_ENC_OPT_GTP_QFI,
+  __TCA_FLOWER_KEY_ENC_OPT_GTP_MAX,
+};
+#define TCA_FLOWER_KEY_ENC_OPT_GTP_MAX (__TCA_FLOWER_KEY_ENC_OPT_GTP_MAX - 1)
+enum {
   TCA_FLOWER_KEY_MPLS_OPTS_UNSPEC,
   TCA_FLOWER_KEY_MPLS_OPTS_LSE,
   __TCA_FLOWER_KEY_MPLS_OPTS_MAX,
diff --git a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/pkt_sched.h b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/pkt_sched.h
index e298b74..c31b8bb 100644
--- a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/pkt_sched.h
+++ b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/pkt_sched.h
@@ -924,6 +924,13 @@
 #define TCA_TAPRIO_ATTR_FLAG_TXTIME_ASSIST _BITUL(0)
 #define TCA_TAPRIO_ATTR_FLAG_FULL_OFFLOAD _BITUL(1)
 enum {
+  TCA_TAPRIO_TC_ENTRY_UNSPEC,
+  TCA_TAPRIO_TC_ENTRY_INDEX,
+  TCA_TAPRIO_TC_ENTRY_MAX_SDU,
+  __TCA_TAPRIO_TC_ENTRY_CNT,
+  TCA_TAPRIO_TC_ENTRY_MAX = (__TCA_TAPRIO_TC_ENTRY_CNT - 1)
+};
+enum {
   TCA_TAPRIO_ATTR_UNSPEC,
   TCA_TAPRIO_ATTR_PRIOMAP,
   TCA_TAPRIO_ATTR_SCHED_ENTRY_LIST,
@@ -936,6 +943,7 @@
   TCA_TAPRIO_ATTR_SCHED_CYCLE_TIME_EXTENSION,
   TCA_TAPRIO_ATTR_FLAGS,
   TCA_TAPRIO_ATTR_TXTIME_DELAY,
+  TCA_TAPRIO_ATTR_TC_ENTRY,
   __TCA_TAPRIO_ATTR_MAX,
 };
 #define TCA_TAPRIO_ATTR_MAX (__TCA_TAPRIO_ATTR_MAX - 1)
diff --git a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/prctl.h b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/prctl.h
index 9b4c695..1dac726 100644
--- a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/prctl.h
+++ b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/prctl.h
@@ -179,6 +179,11 @@
 #define PR_SCHED_CORE_SCOPE_THREAD 0
 #define PR_SCHED_CORE_SCOPE_THREAD_GROUP 1
 #define PR_SCHED_CORE_SCOPE_PROCESS_GROUP 2
+#define PR_SME_SET_VL 63
+#define PR_SME_SET_VL_ONEXEC (1 << 18)
+#define PR_SME_GET_VL 64
+#define PR_SME_VL_LEN_MASK 0xffff
+#define PR_SME_VL_INHERIT (1 << 17)
 #define PR_SET_VMA 0x53564d41
 #define PR_SET_VMA_ANON_NAME 0
 #endif
diff --git a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/psci.h b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/psci.h
index bc522e7..4dead17 100644
--- a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/psci.h
+++ b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/psci.h
@@ -39,11 +39,23 @@
 #define PSCI_0_2_FN64_MIGRATE PSCI_0_2_FN64(5)
 #define PSCI_0_2_FN64_MIGRATE_INFO_UP_CPU PSCI_0_2_FN64(7)
 #define PSCI_1_0_FN_PSCI_FEATURES PSCI_0_2_FN(10)
+#define PSCI_1_0_FN_CPU_FREEZE PSCI_0_2_FN(11)
+#define PSCI_1_0_FN_CPU_DEFAULT_SUSPEND PSCI_0_2_FN(12)
+#define PSCI_1_0_FN_NODE_HW_STATE PSCI_0_2_FN(13)
 #define PSCI_1_0_FN_SYSTEM_SUSPEND PSCI_0_2_FN(14)
 #define PSCI_1_0_FN_SET_SUSPEND_MODE PSCI_0_2_FN(15)
+#define PSCI_1_0_FN_STAT_RESIDENCY PSCI_0_2_FN(16)
+#define PSCI_1_0_FN_STAT_COUNT PSCI_0_2_FN(17)
 #define PSCI_1_1_FN_SYSTEM_RESET2 PSCI_0_2_FN(18)
+#define PSCI_1_1_FN_MEM_PROTECT PSCI_0_2_FN(19)
+#define PSCI_1_1_FN_MEM_PROTECT_CHECK_RANGE PSCI_0_2_FN(19)
+#define PSCI_1_0_FN64_CPU_DEFAULT_SUSPEND PSCI_0_2_FN64(12)
+#define PSCI_1_0_FN64_NODE_HW_STATE PSCI_0_2_FN64(13)
 #define PSCI_1_0_FN64_SYSTEM_SUSPEND PSCI_0_2_FN64(14)
+#define PSCI_1_0_FN64_STAT_RESIDENCY PSCI_0_2_FN64(16)
+#define PSCI_1_0_FN64_STAT_COUNT PSCI_0_2_FN64(17)
 #define PSCI_1_1_FN64_SYSTEM_RESET2 PSCI_0_2_FN64(18)
+#define PSCI_1_1_FN64_MEM_PROTECT_CHECK_RANGE PSCI_0_2_FN64(19)
 #define PSCI_0_2_POWER_STATE_ID_MASK 0xffff
 #define PSCI_0_2_POWER_STATE_ID_SHIFT 0
 #define PSCI_0_2_POWER_STATE_TYPE_SHIFT 16
@@ -60,6 +72,8 @@
 #define PSCI_0_2_TOS_UP_MIGRATE 0
 #define PSCI_0_2_TOS_UP_NO_MIGRATE 1
 #define PSCI_0_2_TOS_MP 2
+#define PSCI_1_1_RESET_TYPE_SYSTEM_WARM_RESET 0
+#define PSCI_1_1_RESET_TYPE_VENDOR_START 0x80000000U
 #define PSCI_VERSION_MAJOR_SHIFT 16
 #define PSCI_VERSION_MINOR_MASK ((1U << PSCI_VERSION_MAJOR_SHIFT) - 1)
 #define PSCI_VERSION_MAJOR_MASK ~PSCI_VERSION_MINOR_MASK
diff --git a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/psp-sev.h b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/psp-sev.h
index 6c4f73d..8c9ec80 100644
--- a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/psp-sev.h
+++ b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/psp-sev.h
@@ -66,37 +66,37 @@
   __u32 flags;
   __u8 build;
   __u32 guest_count;
-} __packed;
+} __attribute__((__packed__));
 #define SEV_STATUS_FLAGS_CONFIG_ES 0x0100
 struct sev_user_data_pek_csr {
   __u64 address;
   __u32 length;
-} __packed;
+} __attribute__((__packed__));
 struct sev_user_data_pek_cert_import {
   __u64 pek_cert_address;
   __u32 pek_cert_len;
   __u64 oca_cert_address;
   __u32 oca_cert_len;
-} __packed;
+} __attribute__((__packed__));
 struct sev_user_data_pdh_cert_export {
   __u64 pdh_cert_address;
   __u32 pdh_cert_len;
   __u64 cert_chain_address;
   __u32 cert_chain_len;
-} __packed;
+} __attribute__((__packed__));
 struct sev_user_data_get_id {
   __u8 socket1[64];
   __u8 socket2[64];
-} __packed;
+} __attribute__((__packed__));
 struct sev_user_data_get_id2 {
   __u64 address;
   __u32 length;
-} __packed;
+} __attribute__((__packed__));
 struct sev_issue_cmd {
   __u32 cmd;
   __u64 data;
   __u32 error;
-} __packed;
+} __attribute__((__packed__));
 #define SEV_IOC_TYPE 'S'
 #define SEV_ISSUE_CMD _IOWR(SEV_IOC_TYPE, 0x0, struct sev_issue_cmd)
 #endif
diff --git a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/qrtr.h b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/qrtr.h
index c0a4c72..ee56aca 100644
--- a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/qrtr.h
+++ b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/qrtr.h
@@ -54,5 +54,5 @@
       __le32 port;
     } client;
   };
-} __packed;
+} __attribute__((__packed__));
 #endif
diff --git a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/raid/md_p.h b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/raid/md_p.h
index 4ad444a..dc3084a 100644
--- a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/raid/md_p.h
+++ b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/raid/md_p.h
@@ -168,7 +168,7 @@
   __le32 sb_csum;
   __le32 max_dev;
   __u8 pad3[64 - 32];
-  __le16 dev_roles[0];
+  __le16 dev_roles[];
 };
 #define MD_FEATURE_BITMAP_OFFSET 1
 #define MD_FEATURE_RECOVERY_OFFSET 2
diff --git a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/random.h b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/random.h
index 2d3cfef..8df411b 100644
--- a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/random.h
+++ b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/random.h
@@ -31,7 +31,7 @@
 struct rand_pool_info {
   int entropy_count;
   int buf_size;
-  __u32 buf[0];
+  __u32 buf[];
 };
 #define GRND_NONBLOCK 0x0001
 #define GRND_RANDOM 0x0002
diff --git a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/reiserfs_xattr.h b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/reiserfs_xattr.h
index 36d31f6..16a7a08 100644
--- a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/reiserfs_xattr.h
+++ b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/reiserfs_xattr.h
@@ -27,6 +27,6 @@
 struct reiserfs_security_handle {
   const char * name;
   void * value;
-  size_t length;
+  __kernel_size_t length;
 };
 #endif
diff --git a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/rfkill.h b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/rfkill.h
index 6020baf..b90e67c 100644
--- a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/rfkill.h
+++ b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/rfkill.h
@@ -63,4 +63,6 @@
 #define RFKILL_IOC_MAGIC 'R'
 #define RFKILL_IOC_NOINPUT 1
 #define RFKILL_IOCTL_NOINPUT _IO(RFKILL_IOC_MAGIC, RFKILL_IOC_NOINPUT)
+#define RFKILL_IOC_MAX_SIZE 2
+#define RFKILL_IOCTL_MAX_SIZE _IOW(RFKILL_IOC_MAGIC, RFKILL_IOC_MAX_SIZE, __u32)
 #endif
diff --git a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/rkisp1-config.h b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/rkisp1-config.h
index cea14cd..7175c23 100644
--- a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/rkisp1-config.h
+++ b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/rkisp1-config.h
@@ -67,6 +67,37 @@
 #define RKISP1_CIF_ISP_HISTOGRAM_WEIGHT_GRIDS_SIZE_V12 81
 #define RKISP1_CIF_ISP_HISTOGRAM_WEIGHT_GRIDS_SIZE RKISP1_CIF_ISP_HISTOGRAM_WEIGHT_GRIDS_SIZE_V12
 #define RKISP1_CIF_ISP_DPCC_METHODS_MAX 3
+#define RKISP1_CIF_ISP_DPCC_MODE_STAGE1_ENABLE (1U << 2)
+#define RKISP1_CIF_ISP_DPCC_OUTPUT_MODE_STAGE1_INCL_G_CENTER (1U << 0)
+#define RKISP1_CIF_ISP_DPCC_OUTPUT_MODE_STAGE1_INCL_RB_CENTER (1U << 1)
+#define RKISP1_CIF_ISP_DPCC_OUTPUT_MODE_STAGE1_G_3X3 (1U << 2)
+#define RKISP1_CIF_ISP_DPCC_OUTPUT_MODE_STAGE1_RB_3X3 (1U << 3)
+#define RKISP1_CIF_ISP_DPCC_SET_USE_STAGE1_USE_SET(n) ((n) << 0)
+#define RKISP1_CIF_ISP_DPCC_SET_USE_STAGE1_USE_FIX_SET (1U << 3)
+#define RKISP1_CIF_ISP_DPCC_METHODS_SET_PG_GREEN_ENABLE (1U << 0)
+#define RKISP1_CIF_ISP_DPCC_METHODS_SET_LC_GREEN_ENABLE (1U << 1)
+#define RKISP1_CIF_ISP_DPCC_METHODS_SET_RO_GREEN_ENABLE (1U << 2)
+#define RKISP1_CIF_ISP_DPCC_METHODS_SET_RND_GREEN_ENABLE (1U << 3)
+#define RKISP1_CIF_ISP_DPCC_METHODS_SET_RG_GREEN_ENABLE (1U << 4)
+#define RKISP1_CIF_ISP_DPCC_METHODS_SET_PG_RED_BLUE_ENABLE (1U << 8)
+#define RKISP1_CIF_ISP_DPCC_METHODS_SET_LC_RED_BLUE_ENABLE (1U << 9)
+#define RKISP1_CIF_ISP_DPCC_METHODS_SET_RO_RED_BLUE_ENABLE (1U << 10)
+#define RKISP1_CIF_ISP_DPCC_METHODS_SET_RND_RED_BLUE_ENABLE (1U << 11)
+#define RKISP1_CIF_ISP_DPCC_METHODS_SET_RG_RED_BLUE_ENABLE (1U << 12)
+#define RKISP1_CIF_ISP_DPCC_LINE_THRESH_G(v) ((v) << 0)
+#define RKISP1_CIF_ISP_DPCC_LINE_THRESH_RB(v) ((v) << 8)
+#define RKISP1_CIF_ISP_DPCC_LINE_MAD_FAC_G(v) ((v) << 0)
+#define RKISP1_CIF_ISP_DPCC_LINE_MAD_FAC_RB(v) ((v) << 8)
+#define RKISP1_CIF_ISP_DPCC_PG_FAC_G(v) ((v) << 0)
+#define RKISP1_CIF_ISP_DPCC_PG_FAC_RB(v) ((v) << 8)
+#define RKISP1_CIF_ISP_DPCC_RND_THRESH_G(v) ((v) << 0)
+#define RKISP1_CIF_ISP_DPCC_RND_THRESH_RB(v) ((v) << 8)
+#define RKISP1_CIF_ISP_DPCC_RG_FAC_G(v) ((v) << 0)
+#define RKISP1_CIF_ISP_DPCC_RG_FAC_RB(v) ((v) << 8)
+#define RKISP1_CIF_ISP_DPCC_RO_LIMITS_n_G(n,v) ((v) << ((n) * 4))
+#define RKISP1_CIF_ISP_DPCC_RO_LIMITS_n_RB(n,v) ((v) << ((n) * 4 + 2))
+#define RKISP1_CIF_ISP_DPCC_RND_OFFS_n_G(n,v) ((v) << ((n) * 4))
+#define RKISP1_CIF_ISP_DPCC_RND_OFFS_n_RB(n,v) ((v) << ((n) * 4 + 2))
 #define RKISP1_CIF_ISP_DPF_MAX_NLF_COEFFS 17
 #define RKISP1_CIF_ISP_DPF_MAX_SPATIAL_COEFFS 6
 #define RKISP1_CIF_ISP_STAT_AWB (1U << 0)
diff --git a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/romfs_fs.h b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/romfs_fs.h
index 8e98714..bffbaf9 100644
--- a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/romfs_fs.h
+++ b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/romfs_fs.h
@@ -35,14 +35,14 @@
   __be32 word1;
   __be32 size;
   __be32 checksum;
-  char name[0];
+  char name[];
 };
 struct romfs_inode {
   __be32 next;
   __be32 spec;
   __be32 size;
   __be32 checksum;
-  char name[0];
+  char name[];
 };
 #define ROMFH_TYPE 7
 #define ROMFH_HRD 0
diff --git a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/rpmsg.h b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/rpmsg.h
index c5b5a76..9ceccdd 100644
--- a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/rpmsg.h
+++ b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/rpmsg.h
@@ -28,4 +28,6 @@
 };
 #define RPMSG_CREATE_EPT_IOCTL _IOW(0xb5, 0x1, struct rpmsg_endpoint_info)
 #define RPMSG_DESTROY_EPT_IOCTL _IO(0xb5, 0x2)
+#define RPMSG_CREATE_DEV_IOCTL _IOW(0xb5, 0x3, struct rpmsg_endpoint_info)
+#define RPMSG_RELEASE_DEV_IOCTL _IOW(0xb5, 0x4, struct rpmsg_endpoint_info)
 #endif
diff --git a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/rseq.h b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/rseq.h
index ba0ceb1..29a9457 100644
--- a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/rseq.h
+++ b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/rseq.h
@@ -47,22 +47,7 @@
 struct rseq {
   __u32 cpu_id_start;
   __u32 cpu_id;
-  union {
-    __u64 ptr64;
-#ifdef __LP64__
-    __u64 ptr;
-#else
-    struct {
-#if defined(__BYTE_ORDER) && __BYTE_ORDER == __BIG_ENDIAN || defined(__BIG_ENDIAN)
-      __u32 padding;
-      __u32 ptr32;
-#else
-      __u32 ptr32;
-      __u32 padding;
-#endif
-    } ptr;
-#endif
-  } rseq_cs;
+  __u64 rseq_cs;
   __u32 flags;
 } __attribute__((aligned(4 * sizeof(__u64))));
 #endif
diff --git a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/rtc.h b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/rtc.h
index cf5f22a..d75bc45 100644
--- a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/rtc.h
+++ b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/rtc.h
@@ -96,7 +96,8 @@
 #define RTC_FEATURE_UPDATE_INTERRUPT 4
 #define RTC_FEATURE_CORRECTION 5
 #define RTC_FEATURE_BACKUP_SWITCH_MODE 6
-#define RTC_FEATURE_CNT 7
+#define RTC_FEATURE_ALARM_WAKEUP_ONLY 7
+#define RTC_FEATURE_CNT 8
 #define RTC_PARAM_FEATURES 0
 #define RTC_PARAM_CORRECTION 1
 #define RTC_PARAM_BACKUP_SWITCH_MODE 2
diff --git a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/rtnetlink.h b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/rtnetlink.h
index 91c3ee4..7201827 100644
--- a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/rtnetlink.h
+++ b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/rtnetlink.h
@@ -131,6 +131,8 @@
 #define RTM_NEWSTATS RTM_NEWSTATS
   RTM_GETSTATS = 94,
 #define RTM_GETSTATS RTM_GETSTATS
+  RTM_SETSTATS,
+#define RTM_SETSTATS RTM_SETSTATS
   RTM_NEWCACHEREPORT = 96,
 #define RTM_NEWCACHEREPORT RTM_NEWCACHEREPORT
   RTM_NEWCHAIN = 100,
@@ -163,6 +165,12 @@
 #define RTM_DELNEXTHOPBUCKET RTM_DELNEXTHOPBUCKET
   RTM_GETNEXTHOPBUCKET,
 #define RTM_GETNEXTHOPBUCKET RTM_GETNEXTHOPBUCKET
+  RTM_NEWTUNNEL = 120,
+#define RTM_NEWTUNNEL RTM_NEWTUNNEL
+  RTM_DELTUNNEL,
+#define RTM_DELTUNNEL RTM_DELTUNNEL
+  RTM_GETTUNNEL,
+#define RTM_GETTUNNEL RTM_GETTUNNEL
   __RTM_MAX,
 #define RTM_MAX (((__RTM_MAX + 3) & ~3) - 1)
 };
@@ -315,7 +323,7 @@
 #define RTNH_DATA(rtnh) ((struct rtattr *) (((char *) (rtnh)) + RTNH_LENGTH(0)))
 struct rtvia {
   __kernel_sa_family_t rtvia_family;
-  __u8 rtvia_addr[0];
+  __u8 rtvia_addr[];
 };
 struct rta_cacheinfo {
   __u32 rta_clntref;
@@ -561,6 +569,10 @@
 #define RTNLGRP_BRVLAN RTNLGRP_BRVLAN
   RTNLGRP_MCTP_IFADDR,
 #define RTNLGRP_MCTP_IFADDR RTNLGRP_MCTP_IFADDR
+  RTNLGRP_TUNNEL,
+#define RTNLGRP_TUNNEL RTNLGRP_TUNNEL
+  RTNLGRP_STATS,
+#define RTNLGRP_STATS RTNLGRP_STATS
   __RTNLGRP_MAX
 };
 #define RTNLGRP_MAX (__RTNLGRP_MAX - 1)
@@ -592,4 +604,5 @@
 #define RTEXT_FILTER_MRP (1 << 4)
 #define RTEXT_FILTER_CFM_CONFIG (1 << 5)
 #define RTEXT_FILTER_CFM_STATUS (1 << 6)
+#define RTEXT_FILTER_MST (1 << 7)
 #endif
diff --git a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/sctp.h b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/sctp.h
index 765d6c9..4bf2412 100644
--- a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/sctp.h
+++ b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/sctp.h
@@ -210,7 +210,7 @@
   __u16 sac_outbound_streams;
   __u16 sac_inbound_streams;
   sctp_assoc_t sac_assoc_id;
-  __u8 sac_info[0];
+  __u8 sac_info[];
 };
 enum sctp_sac_state {
   SCTP_COMM_UP,
@@ -244,7 +244,7 @@
   __u32 sre_length;
   __be16 sre_error;
   sctp_assoc_t sre_assoc_id;
-  __u8 sre_data[0];
+  __u8 sre_data[];
 };
 struct sctp_send_failed {
   __u16 ssf_type;
@@ -253,7 +253,7 @@
   __u32 ssf_error;
   struct sctp_sndrcvinfo ssf_info;
   sctp_assoc_t ssf_assoc_id;
-  __u8 ssf_data[0];
+  __u8 ssf_data[];
 };
 struct sctp_send_failed_event {
   __u16 ssf_type;
@@ -262,7 +262,7 @@
   __u32 ssf_error;
   struct sctp_sndinfo ssfe_info;
   sctp_assoc_t ssf_assoc_id;
-  __u8 ssf_data[0];
+  __u8 ssf_data[];
 };
 enum sctp_ssf_flags {
   SCTP_DATA_UNSENT,
@@ -570,7 +570,7 @@
 struct sctp_getaddrs {
   sctp_assoc_t assoc_id;
   __u32 addr_num;
-  __u8 addrs[0];
+  __u8 addrs[];
 };
 struct sctp_assoc_stats {
   sctp_assoc_t sas_assoc_id;
diff --git a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/seccomp.h b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/seccomp.h
index e58b421..cc506ae 100644
--- a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/seccomp.h
+++ b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/seccomp.h
@@ -32,6 +32,7 @@
 #define SECCOMP_FILTER_FLAG_SPEC_ALLOW (1UL << 2)
 #define SECCOMP_FILTER_FLAG_NEW_LISTENER (1UL << 3)
 #define SECCOMP_FILTER_FLAG_TSYNC_ESRCH (1UL << 4)
+#define SECCOMP_FILTER_FLAG_WAIT_KILLABLE_RECV (1UL << 5)
 #define SECCOMP_RET_KILL_PROCESS 0x80000000U
 #define SECCOMP_RET_KILL_THREAD 0x00000000U
 #define SECCOMP_RET_KILL SECCOMP_RET_KILL_THREAD
diff --git a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/sed-opal.h b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/sed-opal.h
index a20197a..f7ac9bd 100644
--- a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/sed-opal.h
+++ b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/sed-opal.h
@@ -112,6 +112,16 @@
   __u64 flags;
   __u64 priv;
 };
+#define OPAL_FL_SUPPORTED 0x00000001
+#define OPAL_FL_LOCKING_SUPPORTED 0x00000002
+#define OPAL_FL_LOCKING_ENABLED 0x00000004
+#define OPAL_FL_LOCKED 0x00000008
+#define OPAL_FL_MBR_ENABLED 0x00000010
+#define OPAL_FL_MBR_DONE 0x00000020
+struct opal_status {
+  __u32 flags;
+  __u32 reserved;
+};
 #define IOC_OPAL_SAVE _IOW('p', 220, struct opal_lock_unlock)
 #define IOC_OPAL_LOCK_UNLOCK _IOW('p', 221, struct opal_lock_unlock)
 #define IOC_OPAL_TAKE_OWNERSHIP _IOW('p', 222, struct opal_key)
@@ -128,4 +138,5 @@
 #define IOC_OPAL_MBR_DONE _IOW('p', 233, struct opal_mbr_done)
 #define IOC_OPAL_WRITE_SHADOW_MBR _IOW('p', 234, struct opal_shadow_mbr)
 #define IOC_OPAL_GENERIC_TABLE_RW _IOW('p', 235, struct opal_read_write_table)
+#define IOC_OPAL_GET_STATUS _IOR('p', 236, struct opal_status)
 #endif
diff --git a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/seg6.h b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/seg6.h
index f180485..b8206cc 100644
--- a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/seg6.h
+++ b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/seg6.h
@@ -28,7 +28,7 @@
   __u8 first_segment;
   __u8 flags;
   __u16 tag;
-  struct in6_addr segments[0];
+  struct in6_addr segments[];
 };
 #define SR6_FLAG1_PROTECTED (1 << 6)
 #define SR6_FLAG1_OAM (1 << 5)
diff --git a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/seg6_iptunnel.h b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/seg6_iptunnel.h
index 1c1ad83..19d8ba4 100644
--- a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/seg6_iptunnel.h
+++ b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/seg6_iptunnel.h
@@ -27,12 +27,14 @@
 #define SEG6_IPTUNNEL_MAX (__SEG6_IPTUNNEL_MAX - 1)
 struct seg6_iptunnel_encap {
   int mode;
-  struct ipv6_sr_hdr srh[0];
+  struct ipv6_sr_hdr srh[];
 };
 #define SEG6_IPTUN_ENCAP_SIZE(x) ((sizeof(* x)) + (((x)->srh->hdrlen + 1) << 3))
 enum {
   SEG6_IPTUN_MODE_INLINE,
   SEG6_IPTUN_MODE_ENCAP,
   SEG6_IPTUN_MODE_L2ENCAP,
+  SEG6_IPTUN_MODE_ENCAP_RED,
+  SEG6_IPTUN_MODE_L2ENCAP_RED,
 };
 #endif
diff --git a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/seg6_local.h b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/seg6_local.h
index 61a8d97..4d062e8 100644
--- a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/seg6_local.h
+++ b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/seg6_local.h
@@ -31,6 +31,7 @@
   SEG6_LOCAL_BPF,
   SEG6_LOCAL_VRFTABLE,
   SEG6_LOCAL_COUNTERS,
+  SEG6_LOCAL_FLAVORS,
   __SEG6_LOCAL_MAX,
 };
 #define SEG6_LOCAL_MAX (__SEG6_LOCAL_MAX - 1)
@@ -71,4 +72,21 @@
   __SEG6_LOCAL_CNT_MAX,
 };
 #define SEG6_LOCAL_CNT_MAX (__SEG6_LOCAL_CNT_MAX - 1)
+enum {
+  SEG6_LOCAL_FLV_UNSPEC,
+  SEG6_LOCAL_FLV_OPERATION,
+  SEG6_LOCAL_FLV_LCBLOCK_BITS,
+  SEG6_LOCAL_FLV_LCNODE_FN_BITS,
+  __SEG6_LOCAL_FLV_MAX,
+};
+#define SEG6_LOCAL_FLV_MAX (__SEG6_LOCAL_FLV_MAX - 1)
+enum {
+  SEG6_LOCAL_FLV_OP_UNSPEC,
+  SEG6_LOCAL_FLV_OP_PSP,
+  SEG6_LOCAL_FLV_OP_USP,
+  SEG6_LOCAL_FLV_OP_USD,
+  SEG6_LOCAL_FLV_OP_NEXT_CSID,
+  __SEG6_LOCAL_FLV_OP_MAX
+};
+#define SEG6_LOCAL_FLV_OP_MAX (__SEG6_LOCAL_FLV_OP_MAX - 1)
 #endif
diff --git a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/serial.h b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/serial.h
index e4e903d..5a83c62 100644
--- a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/serial.h
+++ b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/serial.h
@@ -96,9 +96,20 @@
 #define SER_RS485_RTS_AFTER_SEND (1 << 2)
 #define SER_RS485_RX_DURING_TX (1 << 4)
 #define SER_RS485_TERMINATE_BUS (1 << 5)
+#define SER_RS485_ADDRB (1 << 6)
+#define SER_RS485_ADDR_RECV (1 << 7)
+#define SER_RS485_ADDR_DEST (1 << 8)
   __u32 delay_rts_before_send;
   __u32 delay_rts_after_send;
-  __u32 padding[5];
+  union {
+    __u32 padding[5];
+    struct {
+      __u8 addr_recv;
+      __u8 addr_dest;
+      __u8 padding0[2];
+      __u32 padding1[4];
+    };
+  };
 };
 struct serial_iso7816 {
   __u32 flags;
diff --git a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/serial_core.h b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/serial_core.h
index 0caf698..1e04429 100644
--- a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/serial_core.h
+++ b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/serial_core.h
@@ -47,6 +47,7 @@
 #define PORT_SUNSAB 39
 #define PORT_NPCM 40
 #define PORT_TEGRA_TCU 41
+#define PORT_ASPEED_VUART 42
 #define PORT_PCH_8LINE 44
 #define PORT_PCH_2LINE 45
 #define PORT_DZ 46
@@ -68,8 +69,6 @@
 #define PORT_IMX 62
 #define PORT_MPSC 63
 #define PORT_TXX9 64
-#define PORT_VR41XX_SIU 65
-#define PORT_VR41XX_DSIU 66
 #define PORT_S3C2400 67
 #define PORT_M32R_SIO 68
 #define PORT_JSM 69
@@ -122,4 +121,5 @@
 #define PORT_SIFIVE_V0 120
 #define PORT_SUNIX 121
 #define PORT_LINFLEXUART 122
+#define PORT_SUNPLUS 123
 #endif
diff --git a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/serial_reg.h b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/serial_reg.h
index b6648f8..e41e649 100644
--- a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/serial_reg.h
+++ b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/serial_reg.h
@@ -99,7 +99,7 @@
 #define UART_LSR_PE 0x04
 #define UART_LSR_OE 0x02
 #define UART_LSR_DR 0x01
-#define UART_LSR_BRK_ERROR_BITS 0x1E
+#define UART_LSR_BRK_ERROR_BITS (UART_LSR_BI | UART_LSR_FE | UART_LSR_PE | UART_LSR_OE)
 #define UART_MSR 6
 #define UART_MSR_DCD 0x80
 #define UART_MSR_RI 0x40
@@ -109,7 +109,7 @@
 #define UART_MSR_TERI 0x04
 #define UART_MSR_DDSR 0x02
 #define UART_MSR_DCTS 0x01
-#define UART_MSR_ANY_DELTA 0x0F
+#define UART_MSR_ANY_DELTA (UART_MSR_DDCD | UART_MSR_TERI | UART_MSR_DDSR | UART_MSR_DCTS)
 #define UART_SCR 7
 #define UART_DLL 0
 #define UART_DLM 1
diff --git a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/sev-guest.h b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/sev-guest.h
new file mode 100644
index 0000000..796479a
--- /dev/null
+++ b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/sev-guest.h
@@ -0,0 +1,56 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef __UAPI_LINUX_SEV_GUEST_H_
+#define __UAPI_LINUX_SEV_GUEST_H_
+#include <linux/types.h>
+struct snp_report_req {
+  __u8 user_data[64];
+  __u32 vmpl;
+  __u8 rsvd[28];
+};
+struct snp_report_resp {
+  __u8 data[4000];
+};
+struct snp_derived_key_req {
+  __u32 root_key_select;
+  __u32 rsvd;
+  __u64 guest_field_select;
+  __u32 vmpl;
+  __u32 guest_svn;
+  __u64 tcb_version;
+};
+struct snp_derived_key_resp {
+  __u8 data[64];
+};
+struct snp_guest_request_ioctl {
+  __u8 msg_version;
+  __u64 req_data;
+  __u64 resp_data;
+  __u64 fw_err;
+};
+struct snp_ext_report_req {
+  struct snp_report_req data;
+  __u64 certs_address;
+  __u32 certs_len;
+};
+#define SNP_GUEST_REQ_IOC_TYPE 'S'
+#define SNP_GET_REPORT _IOWR(SNP_GUEST_REQ_IOC_TYPE, 0x0, struct snp_guest_request_ioctl)
+#define SNP_GET_DERIVED_KEY _IOWR(SNP_GUEST_REQ_IOC_TYPE, 0x1, struct snp_guest_request_ioctl)
+#define SNP_GET_EXT_REPORT _IOWR(SNP_GUEST_REQ_IOC_TYPE, 0x2, struct snp_guest_request_ioctl)
+#endif
diff --git a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/smc.h b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/smc.h
index 01494da..200c9b6 100644
--- a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/smc.h
+++ b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/smc.h
@@ -57,6 +57,9 @@
   SMC_NETLINK_DUMP_SEID,
   SMC_NETLINK_ENABLE_SEID,
   SMC_NETLINK_DISABLE_SEID,
+  SMC_NETLINK_DUMP_HS_LIMITATION,
+  SMC_NETLINK_ENABLE_HS_LIMITATION,
+  SMC_NETLINK_DISABLE_HS_LIMITATION,
 };
 enum {
   SMC_GEN_UNSPEC,
@@ -109,6 +112,7 @@
   SMC_NLA_LGR_R_V2,
   SMC_NLA_LGR_R_NET_COOKIE,
   SMC_NLA_LGR_R_PAD,
+  SMC_NLA_LGR_R_BUF_TYPE,
   __SMC_NLA_LGR_R_MAX,
   SMC_NLA_LGR_R_MAX = __SMC_NLA_LGR_R_MAX - 1
 };
@@ -249,4 +253,11 @@
   __SMC_NLA_SEID_TABLE_MAX,
   SMC_NLA_SEID_TABLE_MAX = __SMC_NLA_SEID_TABLE_MAX - 1
 };
+enum {
+  SMC_NLA_HS_LIMITATION_UNSPEC,
+  SMC_NLA_HS_LIMITATION_ENABLED,
+  __SMC_NLA_HS_LIMITATION_MAX,
+  SMC_NLA_HS_LIMITATION_MAX = __SMC_NLA_HS_LIMITATION_MAX - 1
+};
+#define SMC_LIMIT_HS 1
 #endif
diff --git a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/snmp.h b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/snmp.h
index a503a7e..d98f39e 100644
--- a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/snmp.h
+++ b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/snmp.h
@@ -305,6 +305,8 @@
   LINUX_MIB_TLSRXDEVICE,
   LINUX_MIB_TLSDECRYPTERROR,
   LINUX_MIB_TLSRXDEVICERESYNC,
+  LINUX_MIB_TLSDECRYPTRETRY,
+  LINUX_MIB_TLSRXNOPADVIOL,
   __LINUX_MIB_TLSMAX
 };
 #endif
diff --git a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/socket.h b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/socket.h
index be16548..4a530a8 100644
--- a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/socket.h
+++ b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/socket.h
@@ -32,4 +32,7 @@
 #define SOCK_SNDBUF_LOCK 1
 #define SOCK_RCVBUF_LOCK 2
 #define SOCK_BUF_LOCK_MASK (SOCK_SNDBUF_LOCK | SOCK_RCVBUF_LOCK)
+#define SOCK_TXREHASH_DEFAULT 255
+#define SOCK_TXREHASH_DISABLED 0
+#define SOCK_TXREHASH_ENABLED 1
 #endif
diff --git a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/spi/spi.h b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/spi/spi.h
index 39267a2..693e752 100644
--- a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/spi/spi.h
+++ b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/spi/spi.h
@@ -40,5 +40,6 @@
 #define SPI_TX_OCTAL _BITUL(13)
 #define SPI_RX_OCTAL _BITUL(14)
 #define SPI_3WIRE_HIZ _BITUL(15)
-#define SPI_MODE_USER_MASK (_BITUL(16) - 1)
+#define SPI_RX_CPHA_FLIP _BITUL(16)
+#define SPI_MODE_USER_MASK (_BITUL(17) - 1)
 #endif
diff --git a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/stat.h b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/stat.h
index a15b9b5..89304ce 100644
--- a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/stat.h
+++ b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/stat.h
@@ -78,7 +78,8 @@
   __u32 stx_dev_major;
   __u32 stx_dev_minor;
   __u64 stx_mnt_id;
-  __u64 __spare2;
+  __u32 stx_dio_mem_align;
+  __u32 stx_dio_offset_align;
   __u64 __spare3[12];
 };
 #define STATX_TYPE 0x00000001U
@@ -95,6 +96,7 @@
 #define STATX_BASIC_STATS 0x000007ffU
 #define STATX_BTIME 0x00000800U
 #define STATX_MNT_ID 0x00001000U
+#define STATX_DIOALIGN 0x00002000U
 #define STATX__RESERVED 0x80000000U
 #define STATX_ALL 0x00000fffU
 #define STATX_ATTR_COMPRESSED 0x00000004
diff --git a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/stddef.h b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/stddef.h
index d5cdf80..6bc6925 100644
--- a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/stddef.h
+++ b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/stddef.h
@@ -16,9 +16,12 @@
  ***
  ****************************************************************************
  ****************************************************************************/
+#ifndef _UAPI_LINUX_STDDEF_H
+#define _UAPI_LINUX_STDDEF_H
 #include <linux/compiler_types.h>
 #ifndef __always_inline
 #define __always_inline inline
 #endif
 #define __struct_group(TAG,NAME,ATTRS,MEMBERS...) union { struct { MEMBERS } ATTRS; struct TAG { MEMBERS } ATTRS NAME; }
 #define __DECLARE_FLEX_ARRAY(TYPE,NAME) struct { struct { } __empty_ ##NAME; TYPE NAME[]; }
+#endif
diff --git a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/stm.h b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/stm.h
index 1c7f7f3..b1453f7 100644
--- a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/stm.h
+++ b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/stm.h
@@ -28,7 +28,7 @@
   __u16 width;
   __u16 __reserved_0;
   __u32 __reserved_1;
-  char id[0];
+  char id[];
 };
 #define STP_POLICY_ID_SET _IOWR('%', 0, struct stp_policy_id)
 #define STP_POLICY_ID_GET _IOR('%', 1, struct stp_policy_id)
diff --git a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/sysctl.h b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/sysctl.h
index ae9c2ba..ff17f7c 100644
--- a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/sysctl.h
+++ b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/sysctl.h
@@ -516,6 +516,7 @@
   NET_NEIGH_GC_THRESH3 = 16,
   NET_NEIGH_RETRANS_TIME_MS = 17,
   NET_NEIGH_REACHABLE_TIME_MS = 18,
+  NET_NEIGH_INTERVAL_PROBE_TIME_MS = 19,
 };
 enum {
   NET_DCCP_DEFAULT = 1,
diff --git a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/target_core_user.h b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/target_core_user.h
index dcba00e..83e155e 100644
--- a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/target_core_user.h
+++ b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/target_core_user.h
@@ -34,7 +34,7 @@
   __u32 cmdr_size;
   __u32 cmd_head;
   __u32 cmd_tail __attribute__((__aligned__(ALIGN_SIZE)));
-} __packed;
+} __attribute__((__packed__));
 enum tcmu_opcode {
   TCMU_OP_PAD = 0,
   TCMU_OP_CMD,
@@ -48,7 +48,7 @@
 #define TCMU_UFLAG_READ_LEN 0x2
 #define TCMU_UFLAG_KEEP_BUF 0x4
   __u8 uflags;
-} __packed;
+} __attribute__((__packed__));
 #define TCMU_OP_MASK 0x7
 #define TCMU_SENSE_BUFFERSIZE 96
 struct tcmu_cmd_entry {
@@ -71,7 +71,7 @@
       char sense_buffer[TCMU_SENSE_BUFFERSIZE];
     } rsp;
   };
-} __packed;
+} __attribute__((__packed__));
 struct tcmu_tmr_entry {
   struct tcmu_cmd_entry_hdr hdr;
 #define TCMU_TMR_UNKNOWN 0
@@ -89,8 +89,8 @@
   __u32 cmd_cnt;
   __u64 __pad3;
   __u64 __pad4;
-  __u16 cmd_ids[0];
-} __packed;
+  __u16 cmd_ids[];
+} __attribute__((__packed__));
 #define TCMU_OP_ALIGN_SIZE sizeof(__u64)
 enum tcmu_genl_cmd {
   TCMU_CMD_UNSPEC,
diff --git a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/taskstats.h b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/taskstats.h
index efa5b4a..c1cda52 100644
--- a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/taskstats.h
+++ b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/taskstats.h
@@ -19,7 +19,7 @@
 #ifndef _LINUX_TASKSTATS_H
 #define _LINUX_TASKSTATS_H
 #include <linux/types.h>
-#define TASKSTATS_VERSION 11
+#define TASKSTATS_VERSION 13
 #define TS_COMM_LEN 32
 struct taskstats {
   __u16 version;
@@ -71,6 +71,12 @@
   __u64 ac_btime64;
   __u64 compact_count;
   __u64 compact_delay_total;
+  __u32 ac_tgid;
+  __u64 ac_tgetime __attribute__((aligned(8)));
+  __u64 ac_exe_dev;
+  __u64 ac_exe_inode;
+  __u64 wpcopy_count;
+  __u64 wpcopy_delay_total;
 };
 enum {
   TASKSTATS_CMD_UNSPEC = 0,
diff --git a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/tc_act/tc_skbedit.h b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/tc_act/tc_skbedit.h
index 5706d4d..b041a6a 100644
--- a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/tc_act/tc_skbedit.h
+++ b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/tc_act/tc_skbedit.h
@@ -25,6 +25,7 @@
 #define SKBEDIT_F_PTYPE 0x8
 #define SKBEDIT_F_MASK 0x10
 #define SKBEDIT_F_INHERITDSFIELD 0x20
+#define SKBEDIT_F_TXQ_SKBHASH 0x40
 struct tc_skbedit {
   tc_gen;
 };
@@ -39,6 +40,7 @@
   TCA_SKBEDIT_PTYPE,
   TCA_SKBEDIT_MASK,
   TCA_SKBEDIT_FLAGS,
+  TCA_SKBEDIT_QUEUE_MAPPING_MAX,
   __TCA_SKBEDIT_MAX
 };
 #define TCA_SKBEDIT_MAX (__TCA_SKBEDIT_MAX - 1)
diff --git a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/tee.h b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/tee.h
index 5cfe713..404b7b2 100644
--- a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/tee.h
+++ b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/tee.h
@@ -22,8 +22,6 @@
 #include <linux/types.h>
 #define TEE_IOC_MAGIC 0xa4
 #define TEE_IOC_BASE 0
-#define TEE_IOCTL_SHM_MAPPED 0x1
-#define TEE_IOCTL_SHM_DMA_BUF 0x2
 #define TEE_MAX_ARG_SIZE 1024
 #define TEE_GEN_CAP_GP (1 << 0)
 #define TEE_GEN_CAP_PRIVILEGED (1 << 1)
diff --git a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/thermal.h b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/thermal.h
index 72ea378..2f9dccb 100644
--- a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/thermal.h
+++ b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/thermal.h
@@ -54,6 +54,10 @@
   THERMAL_GENL_ATTR_CDEV_MAX_STATE,
   THERMAL_GENL_ATTR_CDEV_NAME,
   THERMAL_GENL_ATTR_GOV_NAME,
+  THERMAL_GENL_ATTR_CPU_CAPABILITY,
+  THERMAL_GENL_ATTR_CPU_CAPABILITY_ID,
+  THERMAL_GENL_ATTR_CPU_CAPABILITY_PERFORMANCE,
+  THERMAL_GENL_ATTR_CPU_CAPABILITY_EFFICIENCY,
   __THERMAL_GENL_ATTR_MAX,
 };
 #define THERMAL_GENL_ATTR_MAX (__THERMAL_GENL_ATTR_MAX - 1)
@@ -77,6 +81,7 @@
   THERMAL_GENL_EVENT_CDEV_DELETE,
   THERMAL_GENL_EVENT_CDEV_STATE_UPDATE,
   THERMAL_GENL_EVENT_TZ_GOV_CHANGE,
+  THERMAL_GENL_EVENT_CPU_CAPABILITY_CHANGE,
   __THERMAL_GENL_EVENT_MAX,
 };
 #define THERMAL_GENL_EVENT_MAX (__THERMAL_GENL_EVENT_MAX - 1)
diff --git a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/tipc_config.h b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/tipc_config.h
index a371e37..c6ee1d1 100644
--- a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/tipc_config.h
+++ b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/tipc_config.h
@@ -22,7 +22,6 @@
 #include <linux/string.h>
 #include <linux/tipc.h>
 #include <asm/byteorder.h>
-#include <arpa/inet.h>
 #define TIPC_CMD_NOOP 0x0000
 #define TIPC_CMD_GET_NODES 0x0001
 #define TIPC_CMD_GET_MEDIA_NAMES 0x0002
diff --git a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/tls.h b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/tls.h
index c98ea0b..fcab74b 100644
--- a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/tls.h
+++ b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/tls.h
@@ -21,6 +21,8 @@
 #include <linux/types.h>
 #define TLS_TX 1
 #define TLS_RX 2
+#define TLS_TX_ZEROCOPY_RO 3
+#define TLS_RX_EXPECT_NO_PAD 4
 #define TLS_VERSION_MINOR(ver) ((ver) & 0xFF)
 #define TLS_VERSION_MAJOR(ver) (((ver) >> 8) & 0xFF)
 #define TLS_VERSION_NUMBER(id) ((((id ##_VERSION_MAJOR) & 0xFF) << 8) | ((id ##_VERSION_MINOR) & 0xFF))
@@ -66,6 +68,18 @@
 #define TLS_CIPHER_SM4_CCM_SALT_SIZE 4
 #define TLS_CIPHER_SM4_CCM_TAG_SIZE 16
 #define TLS_CIPHER_SM4_CCM_REC_SEQ_SIZE 8
+#define TLS_CIPHER_ARIA_GCM_128 57
+#define TLS_CIPHER_ARIA_GCM_128_IV_SIZE 8
+#define TLS_CIPHER_ARIA_GCM_128_KEY_SIZE 16
+#define TLS_CIPHER_ARIA_GCM_128_SALT_SIZE 4
+#define TLS_CIPHER_ARIA_GCM_128_TAG_SIZE 16
+#define TLS_CIPHER_ARIA_GCM_128_REC_SEQ_SIZE 8
+#define TLS_CIPHER_ARIA_GCM_256 58
+#define TLS_CIPHER_ARIA_GCM_256_IV_SIZE 8
+#define TLS_CIPHER_ARIA_GCM_256_KEY_SIZE 32
+#define TLS_CIPHER_ARIA_GCM_256_SALT_SIZE 4
+#define TLS_CIPHER_ARIA_GCM_256_TAG_SIZE 16
+#define TLS_CIPHER_ARIA_GCM_256_REC_SEQ_SIZE 8
 #define TLS_SET_RECORD_TYPE 1
 #define TLS_GET_RECORD_TYPE 2
 struct tls_crypto_info {
@@ -114,12 +128,28 @@
   unsigned char salt[TLS_CIPHER_SM4_CCM_SALT_SIZE];
   unsigned char rec_seq[TLS_CIPHER_SM4_CCM_REC_SEQ_SIZE];
 };
+struct tls12_crypto_info_aria_gcm_128 {
+  struct tls_crypto_info info;
+  unsigned char iv[TLS_CIPHER_ARIA_GCM_128_IV_SIZE];
+  unsigned char key[TLS_CIPHER_ARIA_GCM_128_KEY_SIZE];
+  unsigned char salt[TLS_CIPHER_ARIA_GCM_128_SALT_SIZE];
+  unsigned char rec_seq[TLS_CIPHER_ARIA_GCM_128_REC_SEQ_SIZE];
+};
+struct tls12_crypto_info_aria_gcm_256 {
+  struct tls_crypto_info info;
+  unsigned char iv[TLS_CIPHER_ARIA_GCM_256_IV_SIZE];
+  unsigned char key[TLS_CIPHER_ARIA_GCM_256_KEY_SIZE];
+  unsigned char salt[TLS_CIPHER_ARIA_GCM_256_SALT_SIZE];
+  unsigned char rec_seq[TLS_CIPHER_ARIA_GCM_256_REC_SEQ_SIZE];
+};
 enum {
   TLS_INFO_UNSPEC,
   TLS_INFO_VERSION,
   TLS_INFO_CIPHER,
   TLS_INFO_TXCONF,
   TLS_INFO_RXCONF,
+  TLS_INFO_ZC_RO_TX,
+  TLS_INFO_RX_NO_PAD,
   __TLS_INFO_MAX,
 };
 #define TLS_INFO_MAX (__TLS_INFO_MAX - 1)
diff --git a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/tty.h b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/tty.h
index dcce572..a94e6e6 100644
--- a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/tty.h
+++ b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/tty.h
@@ -18,7 +18,6 @@
  ****************************************************************************/
 #ifndef _UAPI_LINUX_TTY_H
 #define _UAPI_LINUX_TTY_H
-#define NR_LDISCS 30
 #define N_TTY 0
 #define N_SLIP 1
 #define N_MOUSE 2
@@ -48,4 +47,7 @@
 #define N_SPEAKUP 26
 #define N_NULL 27
 #define N_MCTP 28
+#define N_DEVELOPMENT 29
+#define N_CAN327 30
+#define NR_LDISCS 31
 #endif
diff --git a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/types.h b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/types.h
index 9145e66..f41d676 100644
--- a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/types.h
+++ b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/types.h
@@ -21,8 +21,8 @@
 #include <asm/types.h>
 #ifndef __ASSEMBLY__
 #include <linux/posix_types.h>
-#define __bitwise__
-#define __bitwise __bitwise__
+#define __bitwise
+#define __bitwise__ __bitwise
 typedef __u16 __bitwise __le16;
 typedef __u16 __bitwise __be16;
 typedef __u32 __bitwise __le32;
diff --git a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/ublk_cmd.h b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/ublk_cmd.h
new file mode 100644
index 0000000..8c9cbeb
--- /dev/null
+++ b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/ublk_cmd.h
@@ -0,0 +1,127 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef USER_BLK_DRV_CMD_INC_H
+#define USER_BLK_DRV_CMD_INC_H
+#include <linux/types.h>
+#define UBLK_CMD_GET_QUEUE_AFFINITY 0x01
+#define UBLK_CMD_GET_DEV_INFO 0x02
+#define UBLK_CMD_ADD_DEV 0x04
+#define UBLK_CMD_DEL_DEV 0x05
+#define UBLK_CMD_START_DEV 0x06
+#define UBLK_CMD_STOP_DEV 0x07
+#define UBLK_CMD_SET_PARAMS 0x08
+#define UBLK_CMD_GET_PARAMS 0x09
+#define UBLK_CMD_START_USER_RECOVERY 0x10
+#define UBLK_CMD_END_USER_RECOVERY 0x11
+#define UBLK_IO_FETCH_REQ 0x20
+#define UBLK_IO_COMMIT_AND_FETCH_REQ 0x21
+#define UBLK_IO_NEED_GET_DATA 0x22
+#define UBLK_IO_RES_OK 0
+#define UBLK_IO_RES_NEED_GET_DATA 1
+#define UBLK_IO_RES_ABORT (- ENODEV)
+#define UBLKSRV_CMD_BUF_OFFSET 0
+#define UBLKSRV_IO_BUF_OFFSET 0x80000000
+#define UBLK_MAX_QUEUE_DEPTH 4096
+#define UBLK_F_SUPPORT_ZERO_COPY (1ULL << 0)
+#define UBLK_F_URING_CMD_COMP_IN_TASK (1ULL << 1)
+#define UBLK_F_NEED_GET_DATA (1UL << 2)
+#define UBLK_F_USER_RECOVERY (1UL << 3)
+#define UBLK_F_USER_RECOVERY_REISSUE (1UL << 4)
+#define UBLK_S_DEV_DEAD 0
+#define UBLK_S_DEV_LIVE 1
+#define UBLK_S_DEV_QUIESCED 2
+struct ublksrv_ctrl_cmd {
+  __u32 dev_id;
+  __u16 queue_id;
+  __u16 len;
+  __u64 addr;
+  __u64 data[2];
+};
+struct ublksrv_ctrl_dev_info {
+  __u16 nr_hw_queues;
+  __u16 queue_depth;
+  __u16 state;
+  __u16 pad0;
+  __u32 max_io_buf_bytes;
+  __u32 dev_id;
+  __s32 ublksrv_pid;
+  __u32 pad1;
+  __u64 flags;
+  __u64 ublksrv_flags;
+  __u64 reserved0;
+  __u64 reserved1;
+  __u64 reserved2;
+};
+#define UBLK_IO_OP_READ 0
+#define UBLK_IO_OP_WRITE 1
+#define UBLK_IO_OP_FLUSH 2
+#define UBLK_IO_OP_DISCARD 3
+#define UBLK_IO_OP_WRITE_SAME 4
+#define UBLK_IO_OP_WRITE_ZEROES 5
+#define UBLK_IO_F_FAILFAST_DEV (1U << 8)
+#define UBLK_IO_F_FAILFAST_TRANSPORT (1U << 9)
+#define UBLK_IO_F_FAILFAST_DRIVER (1U << 10)
+#define UBLK_IO_F_META (1U << 11)
+#define UBLK_IO_F_FUA (1U << 13)
+#define UBLK_IO_F_NOUNMAP (1U << 15)
+#define UBLK_IO_F_SWAP (1U << 16)
+struct ublksrv_io_desc {
+  __u32 op_flags;
+  __u32 nr_sectors;
+  __u64 start_sector;
+  __u64 addr;
+};
+struct ublksrv_io_cmd {
+  __u16 q_id;
+  __u16 tag;
+  __s32 result;
+  __u64 addr;
+};
+struct ublk_param_basic {
+#define UBLK_ATTR_READ_ONLY (1 << 0)
+#define UBLK_ATTR_ROTATIONAL (1 << 1)
+#define UBLK_ATTR_VOLATILE_CACHE (1 << 2)
+#define UBLK_ATTR_FUA (1 << 3)
+  __u32 attrs;
+  __u8 logical_bs_shift;
+  __u8 physical_bs_shift;
+  __u8 io_opt_shift;
+  __u8 io_min_shift;
+  __u32 max_sectors;
+  __u32 chunk_sectors;
+  __u64 dev_sectors;
+  __u64 virt_boundary_mask;
+};
+struct ublk_param_discard {
+  __u32 discard_alignment;
+  __u32 discard_granularity;
+  __u32 max_discard_sectors;
+  __u32 max_write_zeroes_sectors;
+  __u16 max_discard_segments;
+  __u16 reserved0;
+};
+struct ublk_params {
+  __u32 len;
+#define UBLK_PARAM_TYPE_BASIC (1 << 0)
+#define UBLK_PARAM_TYPE_DISCARD (1 << 1)
+  __u32 types;
+  struct ublk_param_basic basic;
+  struct ublk_param_discard discard;
+};
+#endif
diff --git a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/usb/audio.h b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/usb/audio.h
index 7d36157..bfda540 100644
--- a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/usb/audio.h
+++ b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/usb/audio.h
@@ -186,7 +186,7 @@
   __u8 bUnitID;
   __u8 bSourceID;
   __u8 bControlSize;
-  __u8 bmaControls[0];
+  __u8 bmaControls[];
 } __attribute__((packed));
 struct uac_processing_unit_descriptor {
   __u8 bLength;
diff --git a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/usb/cdc.h b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/usb/cdc.h
index 59c9488..bbfc4db 100644
--- a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/usb/cdc.h
+++ b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/usb/cdc.h
@@ -131,7 +131,7 @@
   __u8 bDescriptorType;
   __u8 bDescriptorSubType;
   __u8 bGuidDescriptorType;
-  __u8 bDetailData[0];
+  __u8 bDetailData[];
 } __attribute__((packed));
 struct usb_cdc_obex_desc {
   __u8 bLength;
@@ -201,6 +201,8 @@
 #define USB_CDC_SPACE_PARITY 4
   __u8 bDataBits;
 } __attribute__((packed));
+#define USB_CDC_CTRL_DTR (1 << 0)
+#define USB_CDC_CTRL_RTS (1 << 1)
 #define USB_CDC_PACKET_TYPE_PROMISCUOUS (1 << 0)
 #define USB_CDC_PACKET_TYPE_ALL_MULTICAST (1 << 1)
 #define USB_CDC_PACKET_TYPE_DIRECTED (1 << 2)
@@ -217,6 +219,13 @@
   __le16 wIndex;
   __le16 wLength;
 } __attribute__((packed));
+#define USB_CDC_SERIAL_STATE_DCD (1 << 0)
+#define USB_CDC_SERIAL_STATE_DSR (1 << 1)
+#define USB_CDC_SERIAL_STATE_BREAK (1 << 2)
+#define USB_CDC_SERIAL_STATE_RING_SIGNAL (1 << 3)
+#define USB_CDC_SERIAL_STATE_FRAMING (1 << 4)
+#define USB_CDC_SERIAL_STATE_PARITY (1 << 5)
+#define USB_CDC_SERIAL_STATE_OVERRUN (1 << 6)
 struct usb_cdc_speed_change {
   __le32 DLBitRRate;
   __le32 ULBitRate;
@@ -267,7 +276,7 @@
   __le32 dwSignature;
   __le16 wLength;
   __le16 wNextNdpIndex;
-  struct usb_cdc_ncm_dpe16 dpe16[0];
+  struct usb_cdc_ncm_dpe16 dpe16[];
 } __attribute__((packed));
 struct usb_cdc_ncm_dpe32 {
   __le32 dwDatagramIndex;
@@ -279,7 +288,7 @@
   __le16 wReserved6;
   __le32 dwNextNdpIndex;
   __le32 dwReserved12;
-  struct usb_cdc_ncm_dpe32 dpe32[0];
+  struct usb_cdc_ncm_dpe32 dpe32[];
 } __attribute__((packed));
 #define USB_CDC_NCM_NDP16_INDEX_MIN 0x000C
 #define USB_CDC_NCM_NDP32_INDEX_MIN 0x0010
diff --git a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/usb/ch9.h b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/usb/ch9.h
index f1dade9..49eb5fa 100644
--- a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/usb/ch9.h
+++ b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/usb/ch9.h
@@ -324,7 +324,7 @@
   __u8 bDescriptorType;
   __u8 tTKID[3];
   __u8 bReserved;
-  __u8 bKeyData[0];
+  __u8 bKeyData[];
 } __attribute__((packed));
 struct usb_encryption_descriptor {
   __u8 bLength;
diff --git a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/usb/raw_gadget.h b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/usb/raw_gadget.h
index 70d5a26..8b60c8d 100644
--- a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/usb/raw_gadget.h
+++ b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/usb/raw_gadget.h
@@ -35,7 +35,7 @@
 struct usb_raw_event {
   __u32 type;
   __u32 length;
-  __u8 data[0];
+  __u8 data[];
 };
 #define USB_RAW_IO_FLAGS_ZERO 0x0001
 #define USB_RAW_IO_FLAGS_MASK 0x0001
@@ -43,7 +43,7 @@
   __u16 ep;
   __u16 flags;
   __u32 length;
-  __u8 data[0];
+  __u8 data[];
 };
 #define USB_RAW_EPS_NUM_MAX 30
 #define USB_RAW_EP_NAME_MAX 16
diff --git a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/usbdevice_fs.h b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/usbdevice_fs.h
index 7936ad9..5fef522 100644
--- a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/usbdevice_fs.h
+++ b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/usbdevice_fs.h
@@ -91,7 +91,7 @@
   int error_count;
   unsigned int signr;
   void __user * usercontext;
-  struct usbdevfs_iso_packet_desc iso_frame_desc[0];
+  struct usbdevfs_iso_packet_desc iso_frame_desc[];
 };
 struct usbdevfs_ioctl {
   int ifno;
@@ -121,7 +121,7 @@
 struct usbdevfs_streams {
   unsigned int num_streams;
   unsigned int num_eps;
-  unsigned char eps[0];
+  unsigned char eps[];
 };
 #define USBDEVFS_CONTROL _IOWR('U', 0, struct usbdevfs_ctrltransfer)
 #define USBDEVFS_CONTROL32 _IOWR('U', 0, struct usbdevfs_ctrltransfer32)
diff --git a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/usbip.h b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/usbip.h
index ae18347..b0c1067 100644
--- a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/usbip.h
+++ b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/usbip.h
@@ -27,4 +27,21 @@
   VDEV_ST_USED,
   VDEV_ST_ERROR
 };
+#define USBIP_URB_SHORT_NOT_OK 0x0001
+#define USBIP_URB_ISO_ASAP 0x0002
+#define USBIP_URB_NO_TRANSFER_DMA_MAP 0x0004
+#define USBIP_URB_ZERO_PACKET 0x0040
+#define USBIP_URB_NO_INTERRUPT 0x0080
+#define USBIP_URB_FREE_BUFFER 0x0100
+#define USBIP_URB_DIR_IN 0x0200
+#define USBIP_URB_DIR_OUT 0
+#define USBIP_URB_DIR_MASK USBIP_URB_DIR_IN
+#define USBIP_URB_DMA_MAP_SINGLE 0x00010000
+#define USBIP_URB_DMA_MAP_PAGE 0x00020000
+#define USBIP_URB_DMA_MAP_SG 0x00040000
+#define USBIP_URB_MAP_LOCAL 0x00080000
+#define USBIP_URB_SETUP_MAP_SINGLE 0x00100000
+#define USBIP_URB_SETUP_MAP_LOCAL 0x00200000
+#define USBIP_URB_DMA_SG_COMBINED 0x00400000
+#define USBIP_URB_ALIGNED_TEMP_BUFFER 0x00800000
 #endif
diff --git a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/userfaultfd.h b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/userfaultfd.h
index ca7b7a5..09e0d80 100644
--- a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/userfaultfd.h
+++ b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/userfaultfd.h
@@ -19,12 +19,14 @@
 #ifndef _LINUX_USERFAULTFD_H
 #define _LINUX_USERFAULTFD_H
 #include <linux/types.h>
+#define USERFAULTFD_IOC 0xAA
+#define USERFAULTFD_IOC_NEW _IO(USERFAULTFD_IOC, 0x00)
 #define UFFD_API ((__u64) 0xAA)
 #define UFFD_API_REGISTER_MODES (UFFDIO_REGISTER_MODE_MISSING | UFFDIO_REGISTER_MODE_WP | UFFDIO_REGISTER_MODE_MINOR)
-#define UFFD_API_FEATURES (UFFD_FEATURE_PAGEFAULT_FLAG_WP | UFFD_FEATURE_EVENT_FORK | UFFD_FEATURE_EVENT_REMAP | UFFD_FEATURE_EVENT_REMOVE | UFFD_FEATURE_EVENT_UNMAP | UFFD_FEATURE_MISSING_HUGETLBFS | UFFD_FEATURE_MISSING_SHMEM | UFFD_FEATURE_SIGBUS | UFFD_FEATURE_THREAD_ID | UFFD_FEATURE_MINOR_HUGETLBFS | UFFD_FEATURE_MINOR_SHMEM)
+#define UFFD_API_FEATURES (UFFD_FEATURE_PAGEFAULT_FLAG_WP | UFFD_FEATURE_EVENT_FORK | UFFD_FEATURE_EVENT_REMAP | UFFD_FEATURE_EVENT_REMOVE | UFFD_FEATURE_EVENT_UNMAP | UFFD_FEATURE_MISSING_HUGETLBFS | UFFD_FEATURE_MISSING_SHMEM | UFFD_FEATURE_SIGBUS | UFFD_FEATURE_THREAD_ID | UFFD_FEATURE_MINOR_HUGETLBFS | UFFD_FEATURE_MINOR_SHMEM | UFFD_FEATURE_EXACT_ADDRESS | UFFD_FEATURE_WP_HUGETLBFS_SHMEM)
 #define UFFD_API_IOCTLS ((__u64) 1 << _UFFDIO_REGISTER | (__u64) 1 << _UFFDIO_UNREGISTER | (__u64) 1 << _UFFDIO_API)
 #define UFFD_API_RANGE_IOCTLS ((__u64) 1 << _UFFDIO_WAKE | (__u64) 1 << _UFFDIO_COPY | (__u64) 1 << _UFFDIO_ZEROPAGE | (__u64) 1 << _UFFDIO_WRITEPROTECT | (__u64) 1 << _UFFDIO_CONTINUE)
-#define UFFD_API_RANGE_IOCTLS_BASIC ((__u64) 1 << _UFFDIO_WAKE | (__u64) 1 << _UFFDIO_COPY | (__u64) 1 << _UFFDIO_CONTINUE)
+#define UFFD_API_RANGE_IOCTLS_BASIC ((__u64) 1 << _UFFDIO_WAKE | (__u64) 1 << _UFFDIO_COPY | (__u64) 1 << _UFFDIO_CONTINUE | (__u64) 1 << _UFFDIO_WRITEPROTECT)
 #define _UFFDIO_REGISTER (0x00)
 #define _UFFDIO_UNREGISTER (0x01)
 #define _UFFDIO_WAKE (0x02)
@@ -73,7 +75,7 @@
       __u64 reserved3;
     } reserved;
   } arg;
-} __packed;
+} __attribute__((__packed__));
 #define UFFD_EVENT_PAGEFAULT 0x12
 #define UFFD_EVENT_FORK 0x13
 #define UFFD_EVENT_REMAP 0x14
@@ -95,6 +97,8 @@
 #define UFFD_FEATURE_THREAD_ID (1 << 8)
 #define UFFD_FEATURE_MINOR_HUGETLBFS (1 << 9)
 #define UFFD_FEATURE_MINOR_SHMEM (1 << 10)
+#define UFFD_FEATURE_EXACT_ADDRESS (1 << 11)
+#define UFFD_FEATURE_WP_HUGETLBFS_SHMEM (1 << 12)
   __u64 features;
   __u64 ioctls;
 };
diff --git a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/uvcvideo.h b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/uvcvideo.h
index 719147a..46528a9 100644
--- a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/uvcvideo.h
+++ b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/uvcvideo.h
@@ -68,5 +68,5 @@
   __u8 length;
   __u8 flags;
   __u8 buf[];
-} __packed;
+} __attribute__((__packed__));
 #endif
diff --git a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/v4l2-controls.h b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/v4l2-controls.h
index 1a11355..276ecaa 100644
--- a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/v4l2-controls.h
+++ b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/v4l2-controls.h
@@ -119,6 +119,8 @@
 #define V4L2_CID_USER_CODA_BASE (V4L2_CID_USER_BASE + 0x10e0)
 #define V4L2_CID_USER_CCS_BASE (V4L2_CID_USER_BASE + 0x10f0)
 #define V4L2_CID_USER_ALLEGRO_BASE (V4L2_CID_USER_BASE + 0x1170)
+#define V4L2_CID_USER_ISL7998X_BASE (V4L2_CID_USER_BASE + 0x1180)
+#define V4L2_CID_USER_DW100_BASE (V4L2_CID_USER_BASE + 0x1190)
 #define V4L2_CID_CODEC_BASE (V4L2_CTRL_CLASS_CODEC | 0x900)
 #define V4L2_CID_CODEC_CLASS (V4L2_CTRL_CLASS_CODEC | 1)
 #define V4L2_CID_MPEG_STREAM_TYPE (V4L2_CID_CODEC_BASE + 0)
@@ -329,6 +331,11 @@
 #define V4L2_CID_MPEG_VIDEO_USE_LTR_FRAMES (V4L2_CID_CODEC_BASE + 234)
 #define V4L2_CID_MPEG_VIDEO_DEC_CONCEAL_COLOR (V4L2_CID_CODEC_BASE + 235)
 #define V4L2_CID_MPEG_VIDEO_INTRA_REFRESH_PERIOD (V4L2_CID_CODEC_BASE + 236)
+#define V4L2_CID_MPEG_VIDEO_INTRA_REFRESH_PERIOD_TYPE (V4L2_CID_CODEC_BASE + 237)
+enum v4l2_mpeg_video_intra_refresh_period_type {
+  V4L2_CID_MPEG_VIDEO_INTRA_REFRESH_PERIOD_TYPE_RANDOM = 0,
+  V4L2_CID_MPEG_VIDEO_INTRA_REFRESH_PERIOD_TYPE_CYCLIC = 1,
+};
 #define V4L2_CID_MPEG_VIDEO_MPEG2_LEVEL (V4L2_CID_CODEC_BASE + 270)
 enum v4l2_mpeg_video_mpeg2_level {
   V4L2_MPEG_VIDEO_MPEG2_LEVEL_LOW = 0,
@@ -1153,6 +1160,8 @@
 #define V4L2_H264_DECODE_PARAM_FLAG_IDR_PIC 0x01
 #define V4L2_H264_DECODE_PARAM_FLAG_FIELD_PIC 0x02
 #define V4L2_H264_DECODE_PARAM_FLAG_BOTTOM_FIELD 0x04
+#define V4L2_H264_DECODE_PARAM_FLAG_PFRAME 0x08
+#define V4L2_H264_DECODE_PARAM_FLAG_BFRAME 0x10
 #define V4L2_CID_STATELESS_H264_DECODE_PARAMS (V4L2_CID_CODEC_STATELESS_BASE + 7)
 struct v4l2_ctrl_h264_decode_params {
   struct v4l2_h264_dpb_entry dpb[V4L2_H264_NUM_DPB_ENTRIES];
@@ -1323,6 +1332,204 @@
   __u8 chroma_intra_quantiser_matrix[64];
   __u8 chroma_non_intra_quantiser_matrix[64];
 };
+#define V4L2_CID_STATELESS_HEVC_SPS (V4L2_CID_CODEC_STATELESS_BASE + 400)
+#define V4L2_CID_STATELESS_HEVC_PPS (V4L2_CID_CODEC_STATELESS_BASE + 401)
+#define V4L2_CID_STATELESS_HEVC_SLICE_PARAMS (V4L2_CID_CODEC_STATELESS_BASE + 402)
+#define V4L2_CID_STATELESS_HEVC_SCALING_MATRIX (V4L2_CID_CODEC_STATELESS_BASE + 403)
+#define V4L2_CID_STATELESS_HEVC_DECODE_PARAMS (V4L2_CID_CODEC_STATELESS_BASE + 404)
+#define V4L2_CID_STATELESS_HEVC_DECODE_MODE (V4L2_CID_CODEC_STATELESS_BASE + 405)
+#define V4L2_CID_STATELESS_HEVC_START_CODE (V4L2_CID_CODEC_STATELESS_BASE + 406)
+#define V4L2_CID_STATELESS_HEVC_ENTRY_POINT_OFFSETS (V4L2_CID_CODEC_STATELESS_BASE + 407)
+enum v4l2_stateless_hevc_decode_mode {
+  V4L2_STATELESS_HEVC_DECODE_MODE_SLICE_BASED,
+  V4L2_STATELESS_HEVC_DECODE_MODE_FRAME_BASED,
+};
+enum v4l2_stateless_hevc_start_code {
+  V4L2_STATELESS_HEVC_START_CODE_NONE,
+  V4L2_STATELESS_HEVC_START_CODE_ANNEX_B,
+};
+#define V4L2_HEVC_SLICE_TYPE_B 0
+#define V4L2_HEVC_SLICE_TYPE_P 1
+#define V4L2_HEVC_SLICE_TYPE_I 2
+#define V4L2_HEVC_SPS_FLAG_SEPARATE_COLOUR_PLANE (1ULL << 0)
+#define V4L2_HEVC_SPS_FLAG_SCALING_LIST_ENABLED (1ULL << 1)
+#define V4L2_HEVC_SPS_FLAG_AMP_ENABLED (1ULL << 2)
+#define V4L2_HEVC_SPS_FLAG_SAMPLE_ADAPTIVE_OFFSET (1ULL << 3)
+#define V4L2_HEVC_SPS_FLAG_PCM_ENABLED (1ULL << 4)
+#define V4L2_HEVC_SPS_FLAG_PCM_LOOP_FILTER_DISABLED (1ULL << 5)
+#define V4L2_HEVC_SPS_FLAG_LONG_TERM_REF_PICS_PRESENT (1ULL << 6)
+#define V4L2_HEVC_SPS_FLAG_SPS_TEMPORAL_MVP_ENABLED (1ULL << 7)
+#define V4L2_HEVC_SPS_FLAG_STRONG_INTRA_SMOOTHING_ENABLED (1ULL << 8)
+struct v4l2_ctrl_hevc_sps {
+  __u8 video_parameter_set_id;
+  __u8 seq_parameter_set_id;
+  __u16 pic_width_in_luma_samples;
+  __u16 pic_height_in_luma_samples;
+  __u8 bit_depth_luma_minus8;
+  __u8 bit_depth_chroma_minus8;
+  __u8 log2_max_pic_order_cnt_lsb_minus4;
+  __u8 sps_max_dec_pic_buffering_minus1;
+  __u8 sps_max_num_reorder_pics;
+  __u8 sps_max_latency_increase_plus1;
+  __u8 log2_min_luma_coding_block_size_minus3;
+  __u8 log2_diff_max_min_luma_coding_block_size;
+  __u8 log2_min_luma_transform_block_size_minus2;
+  __u8 log2_diff_max_min_luma_transform_block_size;
+  __u8 max_transform_hierarchy_depth_inter;
+  __u8 max_transform_hierarchy_depth_intra;
+  __u8 pcm_sample_bit_depth_luma_minus1;
+  __u8 pcm_sample_bit_depth_chroma_minus1;
+  __u8 log2_min_pcm_luma_coding_block_size_minus3;
+  __u8 log2_diff_max_min_pcm_luma_coding_block_size;
+  __u8 num_short_term_ref_pic_sets;
+  __u8 num_long_term_ref_pics_sps;
+  __u8 chroma_format_idc;
+  __u8 sps_max_sub_layers_minus1;
+  __u8 reserved[6];
+  __u64 flags;
+};
+#define V4L2_HEVC_PPS_FLAG_DEPENDENT_SLICE_SEGMENT_ENABLED (1ULL << 0)
+#define V4L2_HEVC_PPS_FLAG_OUTPUT_FLAG_PRESENT (1ULL << 1)
+#define V4L2_HEVC_PPS_FLAG_SIGN_DATA_HIDING_ENABLED (1ULL << 2)
+#define V4L2_HEVC_PPS_FLAG_CABAC_INIT_PRESENT (1ULL << 3)
+#define V4L2_HEVC_PPS_FLAG_CONSTRAINED_INTRA_PRED (1ULL << 4)
+#define V4L2_HEVC_PPS_FLAG_TRANSFORM_SKIP_ENABLED (1ULL << 5)
+#define V4L2_HEVC_PPS_FLAG_CU_QP_DELTA_ENABLED (1ULL << 6)
+#define V4L2_HEVC_PPS_FLAG_PPS_SLICE_CHROMA_QP_OFFSETS_PRESENT (1ULL << 7)
+#define V4L2_HEVC_PPS_FLAG_WEIGHTED_PRED (1ULL << 8)
+#define V4L2_HEVC_PPS_FLAG_WEIGHTED_BIPRED (1ULL << 9)
+#define V4L2_HEVC_PPS_FLAG_TRANSQUANT_BYPASS_ENABLED (1ULL << 10)
+#define V4L2_HEVC_PPS_FLAG_TILES_ENABLED (1ULL << 11)
+#define V4L2_HEVC_PPS_FLAG_ENTROPY_CODING_SYNC_ENABLED (1ULL << 12)
+#define V4L2_HEVC_PPS_FLAG_LOOP_FILTER_ACROSS_TILES_ENABLED (1ULL << 13)
+#define V4L2_HEVC_PPS_FLAG_PPS_LOOP_FILTER_ACROSS_SLICES_ENABLED (1ULL << 14)
+#define V4L2_HEVC_PPS_FLAG_DEBLOCKING_FILTER_OVERRIDE_ENABLED (1ULL << 15)
+#define V4L2_HEVC_PPS_FLAG_PPS_DISABLE_DEBLOCKING_FILTER (1ULL << 16)
+#define V4L2_HEVC_PPS_FLAG_LISTS_MODIFICATION_PRESENT (1ULL << 17)
+#define V4L2_HEVC_PPS_FLAG_SLICE_SEGMENT_HEADER_EXTENSION_PRESENT (1ULL << 18)
+#define V4L2_HEVC_PPS_FLAG_DEBLOCKING_FILTER_CONTROL_PRESENT (1ULL << 19)
+#define V4L2_HEVC_PPS_FLAG_UNIFORM_SPACING (1ULL << 20)
+struct v4l2_ctrl_hevc_pps {
+  __u8 pic_parameter_set_id;
+  __u8 num_extra_slice_header_bits;
+  __u8 num_ref_idx_l0_default_active_minus1;
+  __u8 num_ref_idx_l1_default_active_minus1;
+  __s8 init_qp_minus26;
+  __u8 diff_cu_qp_delta_depth;
+  __s8 pps_cb_qp_offset;
+  __s8 pps_cr_qp_offset;
+  __u8 num_tile_columns_minus1;
+  __u8 num_tile_rows_minus1;
+  __u8 column_width_minus1[20];
+  __u8 row_height_minus1[22];
+  __s8 pps_beta_offset_div2;
+  __s8 pps_tc_offset_div2;
+  __u8 log2_parallel_merge_level_minus2;
+  __u8 reserved;
+  __u64 flags;
+};
+#define V4L2_HEVC_DPB_ENTRY_LONG_TERM_REFERENCE 0x01
+#define V4L2_HEVC_SEI_PIC_STRUCT_FRAME 0
+#define V4L2_HEVC_SEI_PIC_STRUCT_TOP_FIELD 1
+#define V4L2_HEVC_SEI_PIC_STRUCT_BOTTOM_FIELD 2
+#define V4L2_HEVC_SEI_PIC_STRUCT_TOP_BOTTOM 3
+#define V4L2_HEVC_SEI_PIC_STRUCT_BOTTOM_TOP 4
+#define V4L2_HEVC_SEI_PIC_STRUCT_TOP_BOTTOM_TOP 5
+#define V4L2_HEVC_SEI_PIC_STRUCT_BOTTOM_TOP_BOTTOM 6
+#define V4L2_HEVC_SEI_PIC_STRUCT_FRAME_DOUBLING 7
+#define V4L2_HEVC_SEI_PIC_STRUCT_FRAME_TRIPLING 8
+#define V4L2_HEVC_SEI_PIC_STRUCT_TOP_PAIRED_PREVIOUS_BOTTOM 9
+#define V4L2_HEVC_SEI_PIC_STRUCT_BOTTOM_PAIRED_PREVIOUS_TOP 10
+#define V4L2_HEVC_SEI_PIC_STRUCT_TOP_PAIRED_NEXT_BOTTOM 11
+#define V4L2_HEVC_SEI_PIC_STRUCT_BOTTOM_PAIRED_NEXT_TOP 12
+#define V4L2_HEVC_DPB_ENTRIES_NUM_MAX 16
+struct v4l2_hevc_dpb_entry {
+  __u64 timestamp;
+  __u8 flags;
+  __u8 field_pic;
+  __u16 reserved;
+  __s32 pic_order_cnt_val;
+};
+struct v4l2_hevc_pred_weight_table {
+  __s8 delta_luma_weight_l0[V4L2_HEVC_DPB_ENTRIES_NUM_MAX];
+  __s8 luma_offset_l0[V4L2_HEVC_DPB_ENTRIES_NUM_MAX];
+  __s8 delta_chroma_weight_l0[V4L2_HEVC_DPB_ENTRIES_NUM_MAX][2];
+  __s8 chroma_offset_l0[V4L2_HEVC_DPB_ENTRIES_NUM_MAX][2];
+  __s8 delta_luma_weight_l1[V4L2_HEVC_DPB_ENTRIES_NUM_MAX];
+  __s8 luma_offset_l1[V4L2_HEVC_DPB_ENTRIES_NUM_MAX];
+  __s8 delta_chroma_weight_l1[V4L2_HEVC_DPB_ENTRIES_NUM_MAX][2];
+  __s8 chroma_offset_l1[V4L2_HEVC_DPB_ENTRIES_NUM_MAX][2];
+  __u8 luma_log2_weight_denom;
+  __s8 delta_chroma_log2_weight_denom;
+};
+#define V4L2_HEVC_SLICE_PARAMS_FLAG_SLICE_SAO_LUMA (1ULL << 0)
+#define V4L2_HEVC_SLICE_PARAMS_FLAG_SLICE_SAO_CHROMA (1ULL << 1)
+#define V4L2_HEVC_SLICE_PARAMS_FLAG_SLICE_TEMPORAL_MVP_ENABLED (1ULL << 2)
+#define V4L2_HEVC_SLICE_PARAMS_FLAG_MVD_L1_ZERO (1ULL << 3)
+#define V4L2_HEVC_SLICE_PARAMS_FLAG_CABAC_INIT (1ULL << 4)
+#define V4L2_HEVC_SLICE_PARAMS_FLAG_COLLOCATED_FROM_L0 (1ULL << 5)
+#define V4L2_HEVC_SLICE_PARAMS_FLAG_USE_INTEGER_MV (1ULL << 6)
+#define V4L2_HEVC_SLICE_PARAMS_FLAG_SLICE_DEBLOCKING_FILTER_DISABLED (1ULL << 7)
+#define V4L2_HEVC_SLICE_PARAMS_FLAG_SLICE_LOOP_FILTER_ACROSS_SLICES_ENABLED (1ULL << 8)
+#define V4L2_HEVC_SLICE_PARAMS_FLAG_DEPENDENT_SLICE_SEGMENT (1ULL << 9)
+struct v4l2_ctrl_hevc_slice_params {
+  __u32 bit_size;
+  __u32 data_byte_offset;
+  __u32 num_entry_point_offsets;
+  __u8 nal_unit_type;
+  __u8 nuh_temporal_id_plus1;
+  __u8 slice_type;
+  __u8 colour_plane_id;
+  __s32 slice_pic_order_cnt;
+  __u8 num_ref_idx_l0_active_minus1;
+  __u8 num_ref_idx_l1_active_minus1;
+  __u8 collocated_ref_idx;
+  __u8 five_minus_max_num_merge_cand;
+  __s8 slice_qp_delta;
+  __s8 slice_cb_qp_offset;
+  __s8 slice_cr_qp_offset;
+  __s8 slice_act_y_qp_offset;
+  __s8 slice_act_cb_qp_offset;
+  __s8 slice_act_cr_qp_offset;
+  __s8 slice_beta_offset_div2;
+  __s8 slice_tc_offset_div2;
+  __u8 pic_struct;
+  __u8 reserved0[3];
+  __u32 slice_segment_addr;
+  __u8 ref_idx_l0[V4L2_HEVC_DPB_ENTRIES_NUM_MAX];
+  __u8 ref_idx_l1[V4L2_HEVC_DPB_ENTRIES_NUM_MAX];
+  __u16 short_term_ref_pic_set_size;
+  __u16 long_term_ref_pic_set_size;
+  struct v4l2_hevc_pred_weight_table pred_weight_table;
+  __u8 reserved1[2];
+  __u64 flags;
+};
+#define V4L2_HEVC_DECODE_PARAM_FLAG_IRAP_PIC 0x1
+#define V4L2_HEVC_DECODE_PARAM_FLAG_IDR_PIC 0x2
+#define V4L2_HEVC_DECODE_PARAM_FLAG_NO_OUTPUT_OF_PRIOR 0x4
+struct v4l2_ctrl_hevc_decode_params {
+  __s32 pic_order_cnt_val;
+  __u16 short_term_ref_pic_set_size;
+  __u16 long_term_ref_pic_set_size;
+  __u8 num_active_dpb_entries;
+  __u8 num_poc_st_curr_before;
+  __u8 num_poc_st_curr_after;
+  __u8 num_poc_lt_curr;
+  __u8 poc_st_curr_before[V4L2_HEVC_DPB_ENTRIES_NUM_MAX];
+  __u8 poc_st_curr_after[V4L2_HEVC_DPB_ENTRIES_NUM_MAX];
+  __u8 poc_lt_curr[V4L2_HEVC_DPB_ENTRIES_NUM_MAX];
+  __u8 reserved[4];
+  struct v4l2_hevc_dpb_entry dpb[V4L2_HEVC_DPB_ENTRIES_NUM_MAX];
+  __u64 flags;
+};
+struct v4l2_ctrl_hevc_scaling_matrix {
+  __u8 scaling_list_4x4[6][16];
+  __u8 scaling_list_8x8[6][64];
+  __u8 scaling_list_16x16[6][64];
+  __u8 scaling_list_32x32[2][64];
+  __u8 scaling_list_dc_coef_16x16[6];
+  __u8 scaling_list_dc_coef_32x32[2];
+};
 #define V4L2_CID_COLORIMETRY_CLASS_BASE (V4L2_CTRL_CLASS_COLORIMETRY | 0x900)
 #define V4L2_CID_COLORIMETRY_CLASS (V4L2_CTRL_CLASS_COLORIMETRY | 1)
 #define V4L2_CID_COLORIMETRY_HDR10_CLL_INFO (V4L2_CID_COLORIMETRY_CLASS_BASE + 0)
diff --git a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/vbox_vmmdev_types.h b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/vbox_vmmdev_types.h
index 009f9a6..777a2bb 100644
--- a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/vbox_vmmdev_types.h
+++ b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/vbox_vmmdev_types.h
@@ -157,7 +157,7 @@
       __u32 offset;
     } page_list;
   } u;
-} __packed;
+} __attribute__((__packed__));
 struct vmmdev_hgcm_function_parameter64 {
   enum vmmdev_hgcm_function_parameter_type type;
   union {
@@ -169,13 +169,13 @@
         __u64 phys_addr;
         __u64 linear_addr;
       } u;
-    } __packed pointer;
+    } __attribute__((__packed__)) pointer;
     struct {
       __u32 size;
       __u32 offset;
     } page_list;
-  } __packed u;
-} __packed;
+  } __attribute__((__packed__)) u;
+} __attribute__((__packed__));
 #if __BITS_PER_LONG == 64
 #define vmmdev_hgcm_function_parameter vmmdev_hgcm_function_parameter64
 #else
diff --git a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/vdpa.h b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/vdpa.h
index b3e5d39..ed61cdd 100644
--- a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/vdpa.h
+++ b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/vdpa.h
@@ -28,6 +28,7 @@
   VDPA_CMD_DEV_DEL,
   VDPA_CMD_DEV_GET,
   VDPA_CMD_DEV_CONFIG_GET,
+  VDPA_CMD_DEV_VSTATS_GET,
 };
 enum vdpa_attr {
   VDPA_ATTR_UNSPEC,
@@ -48,6 +49,11 @@
   VDPA_ATTR_DEV_NEGOTIATED_FEATURES,
   VDPA_ATTR_DEV_MGMTDEV_MAX_VQS,
   VDPA_ATTR_DEV_SUPPORTED_FEATURES,
+  VDPA_ATTR_DEV_QUEUE_INDEX,
+  VDPA_ATTR_DEV_VENDOR_ATTR_NAME,
+  VDPA_ATTR_DEV_VENDOR_ATTR_VALUE,
+  VDPA_ATTR_DEV_FEATURES,
+  VDPA_ATTR_VDPA_DEV_SUPPORTED_FEATURES,
   VDPA_ATTR_MAX,
 };
 #endif
diff --git a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/vduse.h b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/vduse.h
index 2dc8c82..f0b6d6b 100644
--- a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/vduse.h
+++ b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/vduse.h
@@ -90,6 +90,22 @@
 };
 #define VDUSE_VQ_SETUP_KICKFD _IOW(VDUSE_BASE, 0x16, struct vduse_vq_eventfd)
 #define VDUSE_VQ_INJECT_IRQ _IOW(VDUSE_BASE, 0x17, __u32)
+struct vduse_iova_umem {
+  __u64 uaddr;
+  __u64 iova;
+  __u64 size;
+  __u64 reserved[3];
+};
+#define VDUSE_IOTLB_REG_UMEM _IOW(VDUSE_BASE, 0x18, struct vduse_iova_umem)
+#define VDUSE_IOTLB_DEREG_UMEM _IOW(VDUSE_BASE, 0x19, struct vduse_iova_umem)
+struct vduse_iova_info {
+  __u64 start;
+  __u64 last;
+#define VDUSE_IOVA_CAP_UMEM (1 << 0)
+  __u64 capability;
+  __u64 reserved[3];
+};
+#define VDUSE_IOTLB_GET_INFO _IOWR(VDUSE_BASE, 0x1a, struct vduse_iova_info)
 enum vduse_req_type {
   VDUSE_GET_VQ_STATE,
   VDUSE_SET_STATUS,
diff --git a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/version.h b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/version.h
index 2dfd696..ab95caf 100644
--- a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/version.h
+++ b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/version.h
@@ -16,8 +16,8 @@
  ***
  ****************************************************************************
  ****************************************************************************/
-#define LINUX_VERSION_CODE 332032
+#define LINUX_VERSION_CODE 393472
 #define KERNEL_VERSION(a,b,c) (((a) << 16) + ((b) << 8) + ((c) > 255 ? 255 : (c)))
-#define LINUX_VERSION_MAJOR 5
-#define LINUX_VERSION_PATCHLEVEL 17
+#define LINUX_VERSION_MAJOR 6
+#define LINUX_VERSION_PATCHLEVEL 1
 #define LINUX_VERSION_SUBLEVEL 0
diff --git a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/vfio.h b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/vfio.h
index e0f322b..dffa136 100644
--- a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/vfio.h
+++ b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/vfio.h
@@ -110,7 +110,7 @@
 #define VFIO_REGION_TYPE_PCI_VENDOR_MASK (0xffff)
 #define VFIO_REGION_TYPE_GFX (1)
 #define VFIO_REGION_TYPE_CCW (2)
-#define VFIO_REGION_TYPE_MIGRATION (3)
+#define VFIO_REGION_TYPE_MIGRATION_DEPRECATED (3)
 #define VFIO_REGION_SUBTYPE_INTEL_IGD_OPREGION (1)
 #define VFIO_REGION_SUBTYPE_INTEL_IGD_HOST_CFG (2)
 #define VFIO_REGION_SUBTYPE_INTEL_IGD_LPC_CFG (3)
@@ -130,17 +130,17 @@
 #define VFIO_REGION_SUBTYPE_CCW_ASYNC_CMD (1)
 #define VFIO_REGION_SUBTYPE_CCW_SCHIB (2)
 #define VFIO_REGION_SUBTYPE_CCW_CRW (3)
-#define VFIO_REGION_SUBTYPE_MIGRATION (1)
+#define VFIO_REGION_SUBTYPE_MIGRATION_DEPRECATED (1)
 struct vfio_device_migration_info {
   __u32 device_state;
-#define VFIO_DEVICE_STATE_STOP (0)
-#define VFIO_DEVICE_STATE_RUNNING (1 << 0)
-#define VFIO_DEVICE_STATE_SAVING (1 << 1)
-#define VFIO_DEVICE_STATE_RESUMING (1 << 2)
-#define VFIO_DEVICE_STATE_MASK (VFIO_DEVICE_STATE_RUNNING | VFIO_DEVICE_STATE_SAVING | VFIO_DEVICE_STATE_RESUMING)
-#define VFIO_DEVICE_STATE_VALID(state) (state & VFIO_DEVICE_STATE_RESUMING ? (state & VFIO_DEVICE_STATE_MASK) == VFIO_DEVICE_STATE_RESUMING : 1)
-#define VFIO_DEVICE_STATE_IS_ERROR(state) ((state & VFIO_DEVICE_STATE_MASK) == (VFIO_DEVICE_STATE_SAVING | VFIO_DEVICE_STATE_RESUMING))
-#define VFIO_DEVICE_STATE_SET_ERROR(state) ((state & ~VFIO_DEVICE_STATE_MASK) | VFIO_DEVICE_SATE_SAVING | VFIO_DEVICE_STATE_RESUMING)
+#define VFIO_DEVICE_STATE_V1_STOP (0)
+#define VFIO_DEVICE_STATE_V1_RUNNING (1 << 0)
+#define VFIO_DEVICE_STATE_V1_SAVING (1 << 1)
+#define VFIO_DEVICE_STATE_V1_RESUMING (1 << 2)
+#define VFIO_DEVICE_STATE_MASK (VFIO_DEVICE_STATE_V1_RUNNING | VFIO_DEVICE_STATE_V1_SAVING | VFIO_DEVICE_STATE_V1_RESUMING)
+#define VFIO_DEVICE_STATE_VALID(state) (state & VFIO_DEVICE_STATE_V1_RESUMING ? (state & VFIO_DEVICE_STATE_MASK) == VFIO_DEVICE_STATE_V1_RESUMING : 1)
+#define VFIO_DEVICE_STATE_IS_ERROR(state) ((state & VFIO_DEVICE_STATE_MASK) == (VFIO_DEVICE_STATE_V1_SAVING | VFIO_DEVICE_STATE_V1_RESUMING))
+#define VFIO_DEVICE_STATE_SET_ERROR(state) ((state & ~VFIO_DEVICE_STATE_MASK) | VFIO_DEVICE_STATE_V1_SAVING | VFIO_DEVICE_STATE_V1_RESUMING)
   __u32 reserved;
   __u64 pending_bytes;
   __u64 data_offset;
@@ -285,6 +285,51 @@
 };
 #define VFIO_DEVICE_FEATURE _IO(VFIO_TYPE, VFIO_BASE + 17)
 #define VFIO_DEVICE_FEATURE_PCI_VF_TOKEN (0)
+struct vfio_device_feature_migration {
+  __aligned_u64 flags;
+#define VFIO_MIGRATION_STOP_COPY (1 << 0)
+#define VFIO_MIGRATION_P2P (1 << 1)
+};
+#define VFIO_DEVICE_FEATURE_MIGRATION 1
+struct vfio_device_feature_mig_state {
+  __u32 device_state;
+  __s32 data_fd;
+};
+#define VFIO_DEVICE_FEATURE_MIG_DEVICE_STATE 2
+enum vfio_device_mig_state {
+  VFIO_DEVICE_STATE_ERROR = 0,
+  VFIO_DEVICE_STATE_STOP = 1,
+  VFIO_DEVICE_STATE_RUNNING = 2,
+  VFIO_DEVICE_STATE_STOP_COPY = 3,
+  VFIO_DEVICE_STATE_RESUMING = 4,
+  VFIO_DEVICE_STATE_RUNNING_P2P = 5,
+};
+#define VFIO_DEVICE_FEATURE_LOW_POWER_ENTRY 3
+struct vfio_device_low_power_entry_with_wakeup {
+  __s32 wakeup_eventfd;
+  __u32 reserved;
+};
+#define VFIO_DEVICE_FEATURE_LOW_POWER_ENTRY_WITH_WAKEUP 4
+#define VFIO_DEVICE_FEATURE_LOW_POWER_EXIT 5
+struct vfio_device_feature_dma_logging_control {
+  __aligned_u64 page_size;
+  __u32 num_ranges;
+  __u32 __reserved;
+  __aligned_u64 ranges;
+};
+struct vfio_device_feature_dma_logging_range {
+  __aligned_u64 iova;
+  __aligned_u64 length;
+};
+#define VFIO_DEVICE_FEATURE_DMA_LOGGING_START 6
+#define VFIO_DEVICE_FEATURE_DMA_LOGGING_STOP 7
+struct vfio_device_feature_dma_logging_report {
+  __aligned_u64 iova;
+  __aligned_u64 length;
+  __aligned_u64 page_size;
+  __aligned_u64 bitmap;
+};
+#define VFIO_DEVICE_FEATURE_DMA_LOGGING_REPORT 8
 struct vfio_iommu_type1_info {
   __u32 argsz;
   __u32 flags;
diff --git a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/vfio_ccw.h b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/vfio_ccw.h
index a6defc5..7bf08f5 100644
--- a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/vfio_ccw.h
+++ b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/vfio_ccw.h
@@ -27,19 +27,19 @@
 #define IRB_AREA_SIZE 96
   __u8 irb_area[IRB_AREA_SIZE];
   __u32 ret_code;
-} __packed;
+} __attribute__((__packed__));
 #define VFIO_CCW_ASYNC_CMD_HSCH (1 << 0)
 #define VFIO_CCW_ASYNC_CMD_CSCH (1 << 1)
 struct ccw_cmd_region {
   __u32 command;
   __u32 ret_code;
-} __packed;
+} __attribute__((__packed__));
 struct ccw_schib_region {
 #define SCHIB_AREA_SIZE 52
   __u8 schib_area[SCHIB_AREA_SIZE];
-} __packed;
+} __attribute__((__packed__));
 struct ccw_crw_region {
   __u32 crw;
   __u32 pad;
-} __packed;
+} __attribute__((__packed__));
 #endif
diff --git a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/vfio_zdev.h b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/vfio_zdev.h
index c678e9a..1c3a943 100644
--- a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/vfio_zdev.h
+++ b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/vfio_zdev.h
@@ -29,6 +29,7 @@
   __u16 fmb_length;
   __u8 pft;
   __u8 gid;
+  __u32 fh;
 };
 struct vfio_device_info_cap_zpci_group {
   struct vfio_info_cap_header header;
@@ -40,6 +41,8 @@
   __u16 noi;
   __u16 maxstbl;
   __u8 version;
+  __u8 reserved;
+  __u16 imaxstbl;
 };
 struct vfio_device_info_cap_zpci_util {
   struct vfio_info_cap_header header;
diff --git a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/vhost.h b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/vhost.h
index 53b01c4..e5b1327 100644
--- a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/vhost.h
+++ b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/vhost.h
@@ -43,8 +43,6 @@
 #define VHOST_SET_VRING_ERR _IOW(VHOST_VIRTIO, 0x22, struct vhost_vring_file)
 #define VHOST_SET_VRING_BUSYLOOP_TIMEOUT _IOW(VHOST_VIRTIO, 0x23, struct vhost_vring_state)
 #define VHOST_GET_VRING_BUSYLOOP_TIMEOUT _IOW(VHOST_VIRTIO, 0x24, struct vhost_vring_state)
-#define VHOST_BACKEND_F_IOTLB_MSG_V2 0x1
-#define VHOST_BACKEND_F_IOTLB_BATCH 0x2
 #define VHOST_SET_BACKEND_FEATURES _IOW(VHOST_VIRTIO, 0x25, __u64)
 #define VHOST_GET_BACKEND_FEATURES _IOR(VHOST_VIRTIO, 0x26, __u64)
 #define VHOST_NET_SET_BACKEND _IOW(VHOST_VIRTIO, 0x30, struct vhost_vring_file)
@@ -64,4 +62,11 @@
 #define VHOST_VDPA_GET_VRING_NUM _IOR(VHOST_VIRTIO, 0x76, __u16)
 #define VHOST_VDPA_SET_CONFIG_CALL _IOW(VHOST_VIRTIO, 0x77, int)
 #define VHOST_VDPA_GET_IOVA_RANGE _IOR(VHOST_VIRTIO, 0x78, struct vhost_vdpa_iova_range)
+#define VHOST_VDPA_GET_CONFIG_SIZE _IOR(VHOST_VIRTIO, 0x79, __u32)
+#define VHOST_VDPA_GET_VQS_COUNT _IOR(VHOST_VIRTIO, 0x80, __u32)
+#define VHOST_VDPA_GET_GROUP_NUM _IOR(VHOST_VIRTIO, 0x81, __u32)
+#define VHOST_VDPA_GET_AS_NUM _IOR(VHOST_VIRTIO, 0x7A, unsigned int)
+#define VHOST_VDPA_GET_VRING_GROUP _IOWR(VHOST_VIRTIO, 0x7B, struct vhost_vring_state)
+#define VHOST_VDPA_SET_GROUP_ASID _IOW(VHOST_VIRTIO, 0x7C, struct vhost_vring_state)
+#define VHOST_VDPA_SUSPEND _IO(VHOST_VIRTIO, 0x7D)
 #endif
diff --git a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/vhost_types.h b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/vhost_types.h
index 6b4cc77..32efa85 100644
--- a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/vhost_types.h
+++ b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/vhost_types.h
@@ -66,7 +66,7 @@
 };
 struct vhost_msg_v2 {
   __u32 type;
-  __u32 reserved;
+  __u32 asid;
   union {
     struct vhost_iotlb_msg iotlb;
     __u8 padding[64];
@@ -82,7 +82,7 @@
 struct vhost_memory {
   __u32 nregions;
   __u32 padding;
-  struct vhost_memory_region regions[0];
+  struct vhost_memory_region regions[];
 };
 #define VHOST_SCSI_ABI_VERSION 1
 struct vhost_scsi_target {
@@ -94,7 +94,7 @@
 struct vhost_vdpa_config {
   __u32 off;
   __u32 len;
-  __u8 buf[0];
+  __u8 buf[];
 };
 struct vhost_vdpa_iova_range {
   __u64 first;
@@ -102,4 +102,8 @@
 };
 #define VHOST_F_LOG_ALL 26
 #define VHOST_NET_F_VIRTIO_NET_HDR 27
+#define VHOST_BACKEND_F_IOTLB_MSG_V2 0x1
+#define VHOST_BACKEND_F_IOTLB_BATCH 0x2
+#define VHOST_BACKEND_F_IOTLB_ASID 0x3
+#define VHOST_BACKEND_F_SUSPEND 0x4
 #endif
diff --git a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/videodev2.h b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/videodev2.h
index 1cae711..3d8dd72 100644
--- a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/videodev2.h
+++ b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/videodev2.h
@@ -24,7 +24,7 @@
 #include <linux/types.h>
 #include <linux/v4l2-common.h>
 #include <linux/v4l2-controls.h>
-#define VIDEO_MAX_FRAME 32
+#define VIDEO_MAX_FRAME 64
 #define VIDEO_MAX_PLANES 8
 #define v4l2_fourcc(a,b,c,d) ((__u32) (a) | ((__u32) (b) << 8) | ((__u32) (c) << 16) | ((__u32) (d) << 24))
 #define v4l2_fourcc_be(a,b,c,d) (v4l2_fourcc(a, b, c, d) | (1U << 31))
@@ -185,7 +185,6 @@
 #define V4L2_CAP_SDR_OUTPUT 0x00400000
 #define V4L2_CAP_META_CAPTURE 0x00800000
 #define V4L2_CAP_READWRITE 0x01000000
-#define V4L2_CAP_ASYNCIO 0x02000000
 #define V4L2_CAP_STREAMING 0x04000000
 #define V4L2_CAP_META_OUTPUT 0x08000000
 #define V4L2_CAP_TOUCH 0x10000000
@@ -255,6 +254,7 @@
 #define V4L2_PIX_FMT_Y16_BE v4l2_fourcc_be('Y', '1', '6', ' ')
 #define V4L2_PIX_FMT_Y10BPACK v4l2_fourcc('Y', '1', '0', 'B')
 #define V4L2_PIX_FMT_Y10P v4l2_fourcc('Y', '1', '0', 'P')
+#define V4L2_PIX_FMT_IPU3_Y10 v4l2_fourcc('i', 'p', '3', 'y')
 #define V4L2_PIX_FMT_PAL8 v4l2_fourcc('P', 'A', 'L', '8')
 #define V4L2_PIX_FMT_UV8 v4l2_fourcc('U', 'V', '8', ' ')
 #define V4L2_PIX_FMT_YUYV v4l2_fourcc('Y', 'U', 'Y', 'V')
@@ -272,6 +272,8 @@
 #define V4L2_PIX_FMT_XYUV32 v4l2_fourcc('X', 'Y', 'U', 'V')
 #define V4L2_PIX_FMT_VUYA32 v4l2_fourcc('V', 'U', 'Y', 'A')
 #define V4L2_PIX_FMT_VUYX32 v4l2_fourcc('V', 'U', 'Y', 'X')
+#define V4L2_PIX_FMT_YUVA32 v4l2_fourcc('Y', 'U', 'V', 'A')
+#define V4L2_PIX_FMT_YUVX32 v4l2_fourcc('Y', 'U', 'V', 'X')
 #define V4L2_PIX_FMT_M420 v4l2_fourcc('M', '4', '2', '0')
 #define V4L2_PIX_FMT_NV12 v4l2_fourcc('N', 'V', '1', '2')
 #define V4L2_PIX_FMT_NV21 v4l2_fourcc('N', 'V', '2', '1')
@@ -279,6 +281,7 @@
 #define V4L2_PIX_FMT_NV61 v4l2_fourcc('N', 'V', '6', '1')
 #define V4L2_PIX_FMT_NV24 v4l2_fourcc('N', 'V', '2', '4')
 #define V4L2_PIX_FMT_NV42 v4l2_fourcc('N', 'V', '4', '2')
+#define V4L2_PIX_FMT_P010 v4l2_fourcc('P', '0', '1', '0')
 #define V4L2_PIX_FMT_NV12M v4l2_fourcc('N', 'M', '1', '2')
 #define V4L2_PIX_FMT_NV21M v4l2_fourcc('N', 'M', '2', '1')
 #define V4L2_PIX_FMT_NV16M v4l2_fourcc('N', 'M', '1', '6')
@@ -298,8 +301,11 @@
 #define V4L2_PIX_FMT_NV12_4L4 v4l2_fourcc('V', 'T', '1', '2')
 #define V4L2_PIX_FMT_NV12_16L16 v4l2_fourcc('H', 'M', '1', '2')
 #define V4L2_PIX_FMT_NV12_32L32 v4l2_fourcc('S', 'T', '1', '2')
+#define V4L2_PIX_FMT_P010_4L4 v4l2_fourcc('T', '0', '1', '0')
 #define V4L2_PIX_FMT_NV12MT v4l2_fourcc('T', 'M', '1', '2')
 #define V4L2_PIX_FMT_NV12MT_16X16 v4l2_fourcc('V', 'M', '1', '2')
+#define V4L2_PIX_FMT_NV12M_8L128 v4l2_fourcc('N', 'A', '1', '2')
+#define V4L2_PIX_FMT_NV12M_10BE_8L128 v4l2_fourcc_be('N', 'T', '1', '2')
 #define V4L2_PIX_FMT_SBGGR8 v4l2_fourcc('B', 'A', '8', '1')
 #define V4L2_PIX_FMT_SGBRG8 v4l2_fourcc('G', 'B', 'R', 'G')
 #define V4L2_PIX_FMT_SGRBG8 v4l2_fourcc('G', 'R', 'B', 'G')
@@ -365,6 +371,7 @@
 #define V4L2_PIX_FMT_FWHT v4l2_fourcc('F', 'W', 'H', 'T')
 #define V4L2_PIX_FMT_FWHT_STATELESS v4l2_fourcc('S', 'F', 'W', 'H')
 #define V4L2_PIX_FMT_H264_SLICE v4l2_fourcc('S', '2', '6', '4')
+#define V4L2_PIX_FMT_HEVC_SLICE v4l2_fourcc('S', '2', '6', '5')
 #define V4L2_PIX_FMT_CPIA1 v4l2_fourcc('C', 'P', 'I', 'A')
 #define V4L2_PIX_FMT_WNVA v4l2_fourcc('W', 'N', 'V', 'A')
 #define V4L2_PIX_FMT_SN9C10X v4l2_fourcc('S', '9', '1', '0')
@@ -399,6 +406,8 @@
 #define V4L2_PIX_FMT_INZI v4l2_fourcc('I', 'N', 'Z', 'I')
 #define V4L2_PIX_FMT_CNF4 v4l2_fourcc('C', 'N', 'F', '4')
 #define V4L2_PIX_FMT_HI240 v4l2_fourcc('H', 'I', '2', '4')
+#define V4L2_PIX_FMT_QC08C v4l2_fourcc('Q', '0', '8', 'C')
+#define V4L2_PIX_FMT_QC10C v4l2_fourcc('Q', '1', '0', 'C')
 #define V4L2_PIX_FMT_IPU3_SBGGR10 v4l2_fourcc('i', 'p', '3', 'b')
 #define V4L2_PIX_FMT_IPU3_SGBRG10 v4l2_fourcc('i', 'p', '3', 'g')
 #define V4L2_PIX_FMT_IPU3_SGRBG10 v4l2_fourcc('i', 'p', '3', 'G')
@@ -782,7 +791,7 @@
 #define V4L2_DV_FL_CAN_DETECT_REDUCED_FPS (1 << 9)
 #define V4L2_DV_BT_BLANKING_WIDTH(bt) ((bt)->hfrontporch + (bt)->hsync + (bt)->hbackporch)
 #define V4L2_DV_BT_FRAME_WIDTH(bt) ((bt)->width + V4L2_DV_BT_BLANKING_WIDTH(bt))
-#define V4L2_DV_BT_BLANKING_HEIGHT(bt) ((bt)->vfrontporch + (bt)->vsync + (bt)->vbackporch + (bt)->il_vfrontporch + (bt)->il_vsync + (bt)->il_vbackporch)
+#define V4L2_DV_BT_BLANKING_HEIGHT(bt) ((bt)->vfrontporch + (bt)->vsync + (bt)->vbackporch + ((bt)->interlaced ? ((bt)->il_vfrontporch + (bt)->il_vsync + (bt)->il_vbackporch) : 0))
 #define V4L2_DV_BT_FRAME_HEIGHT(bt) ((bt)->height + V4L2_DV_BT_BLANKING_HEIGHT(bt))
 struct v4l2_dv_timings {
   __u32 type;
@@ -901,6 +910,11 @@
     struct v4l2_ctrl_mpeg2_quantisation __user * p_mpeg2_quantisation;
     struct v4l2_ctrl_vp9_compressed_hdr __user * p_vp9_compressed_hdr_probs;
     struct v4l2_ctrl_vp9_frame __user * p_vp9_frame;
+    struct v4l2_ctrl_hevc_sps __user * p_hevc_sps;
+    struct v4l2_ctrl_hevc_pps __user * p_hevc_pps;
+    struct v4l2_ctrl_hevc_slice_params __user * p_hevc_slice_params;
+    struct v4l2_ctrl_hevc_scaling_matrix __user * p_hevc_scaling_matrix;
+    struct v4l2_ctrl_hevc_decode_params __user * p_hevc_decode_params;
     void __user * ptr;
   };
 } __attribute__((packed));
@@ -953,6 +967,11 @@
   V4L2_CTRL_TYPE_MPEG2_PICTURE = 0x0252,
   V4L2_CTRL_TYPE_VP9_COMPRESSED_HDR = 0x0260,
   V4L2_CTRL_TYPE_VP9_FRAME = 0x0261,
+  V4L2_CTRL_TYPE_HEVC_SPS = 0x0270,
+  V4L2_CTRL_TYPE_HEVC_PPS = 0x0271,
+  V4L2_CTRL_TYPE_HEVC_SLICE_PARAMS = 0x0272,
+  V4L2_CTRL_TYPE_HEVC_SCALING_MATRIX = 0x0273,
+  V4L2_CTRL_TYPE_HEVC_DECODE_PARAMS = 0x0274,
 };
 struct v4l2_queryctrl {
   __u32 id;
@@ -1000,6 +1019,7 @@
 #define V4L2_CTRL_FLAG_HAS_PAYLOAD 0x0100
 #define V4L2_CTRL_FLAG_EXECUTE_ON_WRITE 0x0200
 #define V4L2_CTRL_FLAG_MODIFY_LAYOUT 0x0400
+#define V4L2_CTRL_FLAG_DYNAMIC_ARRAY 0x0800
 #define V4L2_CTRL_FLAG_NEXT_CTRL 0x80000000
 #define V4L2_CTRL_FLAG_NEXT_COMPOUND 0x40000000
 #define V4L2_CID_MAX_CTRLS 1024
@@ -1303,6 +1323,7 @@
 #define V4L2_EVENT_CTRL_CH_VALUE (1 << 0)
 #define V4L2_EVENT_CTRL_CH_FLAGS (1 << 1)
 #define V4L2_EVENT_CTRL_CH_RANGE (1 << 2)
+#define V4L2_EVENT_CTRL_CH_DIMENSIONS (1 << 3)
 struct v4l2_event_ctrl {
   __u32 changes;
   __u32 type;
@@ -1474,4 +1495,5 @@
 #define BASE_VIDIOC_PRIVATE 192
 #define V4L2_PIX_FMT_HM12 V4L2_PIX_FMT_NV12_16L16
 #define V4L2_PIX_FMT_SUNXI_TILED_NV12 V4L2_PIX_FMT_NV12_32L32
+#define V4L2_CAP_ASYNCIO 0x02000000
 #endif
diff --git a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/virtio_9p.h b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/virtio_9p.h
index 1d9dfb1..2e05786 100644
--- a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/virtio_9p.h
+++ b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/virtio_9p.h
@@ -24,6 +24,6 @@
 #define VIRTIO_9P_MOUNT_TAG 0
 struct virtio_9p_config {
   __virtio16 tag_len;
-  __u8 tag[0];
+  __u8 tag[];
 } __attribute__((packed));
 #endif
diff --git a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/virtio_blk.h b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/virtio_blk.h
index f2f0381..0dd08c5 100644
--- a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/virtio_blk.h
+++ b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/virtio_blk.h
@@ -31,6 +31,7 @@
 #define VIRTIO_BLK_F_MQ 12
 #define VIRTIO_BLK_F_DISCARD 13
 #define VIRTIO_BLK_F_WRITE_ZEROES 14
+#define VIRTIO_BLK_F_SECURE_ERASE 16
 #ifndef VIRTIO_BLK_NO_LEGACY
 #define VIRTIO_BLK_F_BARRIER 0
 #define VIRTIO_BLK_F_SCSI 7
@@ -63,6 +64,9 @@
   __virtio32 max_write_zeroes_seg;
   __u8 write_zeroes_may_unmap;
   __u8 unused1[3];
+  __virtio32 max_secure_erase_sectors;
+  __virtio32 max_secure_erase_seg;
+  __virtio32 secure_erase_sector_alignment;
 } __attribute__((packed));
 #define VIRTIO_BLK_T_IN 0
 #define VIRTIO_BLK_T_OUT 1
@@ -73,6 +77,7 @@
 #define VIRTIO_BLK_T_GET_ID 8
 #define VIRTIO_BLK_T_DISCARD 11
 #define VIRTIO_BLK_T_WRITE_ZEROES 13
+#define VIRTIO_BLK_T_SECURE_ERASE 14
 #ifndef VIRTIO_BLK_NO_LEGACY
 #define VIRTIO_BLK_T_BARRIER 0x80000000
 #endif
diff --git a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/virtio_config.h b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/virtio_config.h
index 6198fd1..bdd2e73 100644
--- a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/virtio_config.h
+++ b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/virtio_config.h
@@ -26,7 +26,7 @@
 #define VIRTIO_CONFIG_S_NEEDS_RESET 0x40
 #define VIRTIO_CONFIG_S_FAILED 0x80
 #define VIRTIO_TRANSPORT_F_START 28
-#define VIRTIO_TRANSPORT_F_END 38
+#define VIRTIO_TRANSPORT_F_END 41
 #ifndef VIRTIO_CONFIG_NO_LEGACY
 #define VIRTIO_F_NOTIFY_ON_EMPTY 24
 #define VIRTIO_F_ANY_LAYOUT 27
@@ -35,6 +35,8 @@
 #define VIRTIO_F_ACCESS_PLATFORM 33
 #define VIRTIO_F_IOMMU_PLATFORM VIRTIO_F_ACCESS_PLATFORM
 #define VIRTIO_F_RING_PACKED 34
+#define VIRTIO_F_IN_ORDER 35
 #define VIRTIO_F_ORDER_PLATFORM 36
 #define VIRTIO_F_SR_IOV 37
+#define VIRTIO_F_RING_RESET 40
 #endif
diff --git a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/virtio_crypto.h b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/virtio_crypto.h
index 2ce760f..7d7561d 100644
--- a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/virtio_crypto.h
+++ b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/virtio_crypto.h
@@ -26,6 +26,7 @@
 #define VIRTIO_CRYPTO_SERVICE_HASH 1
 #define VIRTIO_CRYPTO_SERVICE_MAC 2
 #define VIRTIO_CRYPTO_SERVICE_AEAD 3
+#define VIRTIO_CRYPTO_SERVICE_AKCIPHER 4
 #define VIRTIO_CRYPTO_OPCODE(service,op) (((service) << 8) | (op))
 struct virtio_crypto_ctrl_header {
 #define VIRTIO_CRYPTO_CIPHER_CREATE_SESSION VIRTIO_CRYPTO_OPCODE(VIRTIO_CRYPTO_SERVICE_CIPHER, 0x02)
@@ -36,6 +37,8 @@
 #define VIRTIO_CRYPTO_MAC_DESTROY_SESSION VIRTIO_CRYPTO_OPCODE(VIRTIO_CRYPTO_SERVICE_MAC, 0x03)
 #define VIRTIO_CRYPTO_AEAD_CREATE_SESSION VIRTIO_CRYPTO_OPCODE(VIRTIO_CRYPTO_SERVICE_AEAD, 0x02)
 #define VIRTIO_CRYPTO_AEAD_DESTROY_SESSION VIRTIO_CRYPTO_OPCODE(VIRTIO_CRYPTO_SERVICE_AEAD, 0x03)
+#define VIRTIO_CRYPTO_AKCIPHER_CREATE_SESSION VIRTIO_CRYPTO_OPCODE(VIRTIO_CRYPTO_SERVICE_AKCIPHER, 0x04)
+#define VIRTIO_CRYPTO_AKCIPHER_DESTROY_SESSION VIRTIO_CRYPTO_OPCODE(VIRTIO_CRYPTO_SERVICE_AKCIPHER, 0x05)
   __le32 opcode;
   __le32 algo;
   __le32 flag;
@@ -137,6 +140,51 @@
   struct virtio_crypto_aead_session_para para;
   __u8 padding[32];
 };
+struct virtio_crypto_rsa_session_para {
+#define VIRTIO_CRYPTO_RSA_RAW_PADDING 0
+#define VIRTIO_CRYPTO_RSA_PKCS1_PADDING 1
+  __le32 padding_algo;
+#define VIRTIO_CRYPTO_RSA_NO_HASH 0
+#define VIRTIO_CRYPTO_RSA_MD2 1
+#define VIRTIO_CRYPTO_RSA_MD3 2
+#define VIRTIO_CRYPTO_RSA_MD4 3
+#define VIRTIO_CRYPTO_RSA_MD5 4
+#define VIRTIO_CRYPTO_RSA_SHA1 5
+#define VIRTIO_CRYPTO_RSA_SHA256 6
+#define VIRTIO_CRYPTO_RSA_SHA384 7
+#define VIRTIO_CRYPTO_RSA_SHA512 8
+#define VIRTIO_CRYPTO_RSA_SHA224 9
+  __le32 hash_algo;
+};
+struct virtio_crypto_ecdsa_session_para {
+#define VIRTIO_CRYPTO_CURVE_UNKNOWN 0
+#define VIRTIO_CRYPTO_CURVE_NIST_P192 1
+#define VIRTIO_CRYPTO_CURVE_NIST_P224 2
+#define VIRTIO_CRYPTO_CURVE_NIST_P256 3
+#define VIRTIO_CRYPTO_CURVE_NIST_P384 4
+#define VIRTIO_CRYPTO_CURVE_NIST_P521 5
+  __le32 curve_id;
+  __le32 padding;
+};
+struct virtio_crypto_akcipher_session_para {
+#define VIRTIO_CRYPTO_NO_AKCIPHER 0
+#define VIRTIO_CRYPTO_AKCIPHER_RSA 1
+#define VIRTIO_CRYPTO_AKCIPHER_DSA 2
+#define VIRTIO_CRYPTO_AKCIPHER_ECDSA 3
+  __le32 algo;
+#define VIRTIO_CRYPTO_AKCIPHER_KEY_TYPE_PUBLIC 1
+#define VIRTIO_CRYPTO_AKCIPHER_KEY_TYPE_PRIVATE 2
+  __le32 keytype;
+  __le32 keylen;
+  union {
+    struct virtio_crypto_rsa_session_para rsa;
+    struct virtio_crypto_ecdsa_session_para ecdsa;
+  } u;
+};
+struct virtio_crypto_akcipher_create_session_req {
+  struct virtio_crypto_akcipher_session_para para;
+  __u8 padding[36];
+};
 struct virtio_crypto_alg_chain_session_para {
 #define VIRTIO_CRYPTO_SYM_ALG_CHAIN_ORDER_HASH_THEN_CIPHER 1
 #define VIRTIO_CRYPTO_SYM_ALG_CHAIN_ORDER_CIPHER_THEN_HASH 2
@@ -180,6 +228,7 @@
     struct virtio_crypto_hash_create_session_req hash_create_session;
     struct virtio_crypto_mac_create_session_req mac_create_session;
     struct virtio_crypto_aead_create_session_req aead_create_session;
+    struct virtio_crypto_akcipher_create_session_req akcipher_create_session;
     struct virtio_crypto_destroy_session_req destroy_session;
     __u8 padding[56];
   } u;
@@ -191,6 +240,10 @@
 #define VIRTIO_CRYPTO_MAC VIRTIO_CRYPTO_OPCODE(VIRTIO_CRYPTO_SERVICE_MAC, 0x00)
 #define VIRTIO_CRYPTO_AEAD_ENCRYPT VIRTIO_CRYPTO_OPCODE(VIRTIO_CRYPTO_SERVICE_AEAD, 0x00)
 #define VIRTIO_CRYPTO_AEAD_DECRYPT VIRTIO_CRYPTO_OPCODE(VIRTIO_CRYPTO_SERVICE_AEAD, 0x01)
+#define VIRTIO_CRYPTO_AKCIPHER_ENCRYPT VIRTIO_CRYPTO_OPCODE(VIRTIO_CRYPTO_SERVICE_AKCIPHER, 0x00)
+#define VIRTIO_CRYPTO_AKCIPHER_DECRYPT VIRTIO_CRYPTO_OPCODE(VIRTIO_CRYPTO_SERVICE_AKCIPHER, 0x01)
+#define VIRTIO_CRYPTO_AKCIPHER_SIGN VIRTIO_CRYPTO_OPCODE(VIRTIO_CRYPTO_SERVICE_AKCIPHER, 0x02)
+#define VIRTIO_CRYPTO_AKCIPHER_VERIFY VIRTIO_CRYPTO_OPCODE(VIRTIO_CRYPTO_SERVICE_AKCIPHER, 0x03)
   __le32 opcode;
   __le32 algo;
   __le64 session_id;
@@ -256,6 +309,14 @@
   struct virtio_crypto_aead_para para;
   __u8 padding[32];
 };
+struct virtio_crypto_akcipher_para {
+  __le32 src_data_len;
+  __le32 dst_data_len;
+};
+struct virtio_crypto_akcipher_data_req {
+  struct virtio_crypto_akcipher_para para;
+  __u8 padding[40];
+};
 struct virtio_crypto_op_data_req {
   struct virtio_crypto_op_header header;
   union {
@@ -263,6 +324,7 @@
     struct virtio_crypto_hash_data_req hash_req;
     struct virtio_crypto_mac_data_req mac_req;
     struct virtio_crypto_aead_data_req aead_req;
+    struct virtio_crypto_akcipher_data_req akcipher_req;
     __u8 padding[48];
   } u;
 };
@@ -271,6 +333,8 @@
 #define VIRTIO_CRYPTO_BADMSG 2
 #define VIRTIO_CRYPTO_NOTSUPP 3
 #define VIRTIO_CRYPTO_INVSESS 4
+#define VIRTIO_CRYPTO_NOSPC 5
+#define VIRTIO_CRYPTO_KEY_REJECTED 6
 #define VIRTIO_CRYPTO_S_HW_READY (1 << 0)
 struct virtio_crypto_config {
   __le32 status;
@@ -284,7 +348,7 @@
   __le32 aead_algo;
   __le32 max_cipher_key_len;
   __le32 max_auth_key_len;
-  __le32 reserve;
+  __le32 akcipher_algo;
   __le64 max_size;
 };
 struct virtio_crypto_inhdr {
diff --git a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/virtio_ids.h b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/virtio_ids.h
index 2894700..b31ed93 100644
--- a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/virtio_ids.h
+++ b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/virtio_ids.h
@@ -57,11 +57,11 @@
 #define VIRTIO_ID_AUDIO_POLICY 39
 #define VIRTIO_ID_BT 40
 #define VIRTIO_ID_GPIO 41
-#define VIRTIO_TRANS_ID_NET 1000
-#define VIRTIO_TRANS_ID_BLOCK 1001
-#define VIRTIO_TRANS_ID_BALLOON 1002
-#define VIRTIO_TRANS_ID_CONSOLE 1003
-#define VIRTIO_TRANS_ID_SCSI 1004
-#define VIRTIO_TRANS_ID_RNG 1005
-#define VIRTIO_TRANS_ID_9P 1009
+#define VIRTIO_TRANS_ID_NET 0x1000
+#define VIRTIO_TRANS_ID_BLOCK 0x1001
+#define VIRTIO_TRANS_ID_BALLOON 0x1002
+#define VIRTIO_TRANS_ID_CONSOLE 0x1003
+#define VIRTIO_TRANS_ID_SCSI 0x1004
+#define VIRTIO_TRANS_ID_RNG 0x1005
+#define VIRTIO_TRANS_ID_9P 0x1009
 #endif
diff --git a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/virtio_net.h b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/virtio_net.h
index 2d92904..6fe90aa 100644
--- a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/virtio_net.h
+++ b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/virtio_net.h
@@ -45,6 +45,7 @@
 #define VIRTIO_NET_F_GUEST_ANNOUNCE 21
 #define VIRTIO_NET_F_MQ 22
 #define VIRTIO_NET_F_CTRL_MAC_ADDR 23
+#define VIRTIO_NET_F_NOTF_COAL 53
 #define VIRTIO_NET_F_HASH_REPORT 57
 #define VIRTIO_NET_F_RSS 60
 #define VIRTIO_NET_F_RSC_EXT 61
@@ -186,4 +187,15 @@
 #define VIRTIO_NET_CTRL_MQ_HASH_CONFIG 2
 #define VIRTIO_NET_CTRL_GUEST_OFFLOADS 5
 #define VIRTIO_NET_CTRL_GUEST_OFFLOADS_SET 0
+#define VIRTIO_NET_CTRL_NOTF_COAL 6
+struct virtio_net_ctrl_coal_tx {
+  __le32 tx_max_packets;
+  __le32 tx_usecs;
+};
+#define VIRTIO_NET_CTRL_NOTF_COAL_TX_SET 0
+struct virtio_net_ctrl_coal_rx {
+  __le32 rx_max_packets;
+  __le32 rx_usecs;
+};
+#define VIRTIO_NET_CTRL_NOTF_COAL_RX_SET 1
 #endif
diff --git a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/virtio_pci.h b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/virtio_pci.h
index e6d2731..94ca0a2 100644
--- a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/virtio_pci.h
+++ b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/virtio_pci.h
@@ -117,5 +117,7 @@
 #define VIRTIO_PCI_COMMON_Q_AVAILHI 44
 #define VIRTIO_PCI_COMMON_Q_USEDLO 48
 #define VIRTIO_PCI_COMMON_Q_USEDHI 52
+#define VIRTIO_PCI_COMMON_Q_NDATA 56
+#define VIRTIO_PCI_COMMON_Q_RESET 58
 #endif
 #endif
diff --git a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/wmi.h b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/wmi.h
index 26f54d9..7b72056 100644
--- a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/wmi.h
+++ b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/wmi.h
@@ -30,17 +30,17 @@
   __u16 cmd_select;
   volatile __u32 input[4];
   volatile __u32 output[4];
-} __packed;
+} __attribute__((__packed__));
 struct dell_wmi_extensions {
   __u32 argattrib;
   __u32 blength;
   __u8 data[];
-} __packed;
+} __attribute__((__packed__));
 struct dell_wmi_smbios_buffer {
   __u64 length;
   struct calling_interface_buffer std;
   struct dell_wmi_extensions ext;
-} __packed;
+} __attribute__((__packed__));
 #define CLASS_TOKEN_READ 0
 #define CLASS_TOKEN_WRITE 1
 #define SELECT_TOKEN_STD 0
diff --git a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/xfrm.h b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/xfrm.h
index f4df95f..77ded42 100644
--- a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/xfrm.h
+++ b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/xfrm.h
@@ -35,7 +35,7 @@
   __u8 ctx_alg;
   __u16 ctx_len;
   __u32 ctx_sid;
-  char ctx_str[0];
+  char ctx_str[];
 };
 #define XFRM_SC_DOI_RESERVED 0
 #define XFRM_SC_DOI_LSM 1
@@ -85,24 +85,24 @@
   __u32 oseq_hi;
   __u32 seq_hi;
   __u32 replay_window;
-  __u32 bmp[0];
+  __u32 bmp[];
 };
 struct xfrm_algo {
   char alg_name[64];
   unsigned int alg_key_len;
-  char alg_key[0];
+  char alg_key[];
 };
 struct xfrm_algo_auth {
   char alg_name[64];
   unsigned int alg_key_len;
   unsigned int alg_trunc_len;
-  char alg_key[0];
+  char alg_key[];
 };
 struct xfrm_algo_aead {
   char alg_name[64];
   unsigned int alg_key_len;
   unsigned int alg_icv_len;
-  char alg_key[0];
+  char alg_key[];
 };
 struct xfrm_stats {
   __u32 replay_window;
diff --git a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/zorro.h b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/zorro.h
index f8e47a1..86320aa 100644
--- a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/zorro.h
+++ b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/linux/zorro.h
@@ -42,7 +42,7 @@
   __u8 ln_Type;
   __s8 ln_Pri;
   __be32 ln_Name;
-} __packed;
+} __attribute__((__packed__));
 struct ExpansionRom {
   __u8 er_Type;
   __u8 er_Product;
@@ -55,7 +55,7 @@
   __u8 er_Reserved0d;
   __u8 er_Reserved0e;
   __u8 er_Reserved0f;
-} __packed;
+} __attribute__((__packed__));
 #define ERT_TYPEMASK 0xc0
 #define ERT_ZORROII 0xc0
 #define ERT_ZORROIII 0x80
@@ -73,6 +73,6 @@
   __be32 cd_Driver;
   __be32 cd_NextCD;
   __be32 cd_Unused[4];
-} __packed;
+} __attribute__((__packed__));
 #define ZORRO_NUM_AUTO 16
 #endif
diff --git a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/misc/fastrpc.h b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/misc/fastrpc.h
index 62955ec..e82b961 100644
--- a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/misc/fastrpc.h
+++ b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/misc/fastrpc.h
@@ -27,11 +27,32 @@
 #define FASTRPC_IOCTL_MMAP _IOWR('R', 6, struct fastrpc_req_mmap)
 #define FASTRPC_IOCTL_MUNMAP _IOWR('R', 7, struct fastrpc_req_munmap)
 #define FASTRPC_IOCTL_INIT_ATTACH_SNS _IO('R', 8)
+#define FASTRPC_IOCTL_MEM_MAP _IOWR('R', 10, struct fastrpc_mem_map)
+#define FASTRPC_IOCTL_MEM_UNMAP _IOWR('R', 11, struct fastrpc_mem_unmap)
+#define FASTRPC_IOCTL_GET_DSP_INFO _IOWR('R', 13, struct fastrpc_ioctl_capability)
+enum fastrpc_map_flags {
+  FASTRPC_MAP_STATIC = 0,
+  FASTRPC_MAP_RESERVED,
+  FASTRPC_MAP_FD = 2,
+  FASTRPC_MAP_FD_DELAYED,
+  FASTRPC_MAP_FD_NOMAP = 16,
+  FASTRPC_MAP_MAX,
+};
+enum fastrpc_proc_attr {
+  FASTRPC_MODE_DEBUG = (1 << 0),
+  FASTRPC_MODE_PTRACE = (1 << 1),
+  FASTRPC_MODE_CRC = (1 << 2),
+  FASTRPC_MODE_UNSIGNED_MODULE = (1 << 3),
+  FASTRPC_MODE_ADAPTIVE_QOS = (1 << 4),
+  FASTRPC_MODE_SYSTEM_PROCESS = (1 << 5),
+  FASTRPC_MODE_PRIVILEGED = (1 << 6),
+};
+#define FASTRPC_ATTR_SECUREMAP (1)
 struct fastrpc_invoke_args {
   __u64 ptr;
   __u64 length;
   __s32 fd;
-  __u32 reserved;
+  __u32 attr;
 };
 struct fastrpc_invoke {
   __u32 handle;
@@ -57,8 +78,32 @@
   __u64 size;
   __u64 vaddrout;
 };
+struct fastrpc_mem_map {
+  __s32 version;
+  __s32 fd;
+  __s32 offset;
+  __u32 flags;
+  __u64 vaddrin;
+  __u64 length;
+  __u64 vaddrout;
+  __s32 attrs;
+  __s32 reserved[4];
+};
 struct fastrpc_req_munmap {
   __u64 vaddrout;
   __u64 size;
 };
+struct fastrpc_mem_unmap {
+  __s32 vesion;
+  __s32 fd;
+  __u64 vaddr;
+  __u64 length;
+  __s32 reserved[5];
+};
+struct fastrpc_ioctl_capability {
+  __u32 domain;
+  __u32 attribute_id;
+  __u32 capability;
+  __u32 reserved[4];
+};
 #endif
diff --git a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/misc/habanalabs.h b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/misc/habanalabs.h
index 6e3439a..b6140bc 100644
--- a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/misc/habanalabs.h
+++ b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/misc/habanalabs.h
@@ -24,6 +24,7 @@
 #define GAUDI_DRIVER_SRAM_RESERVED_SIZE_FROM_START 0x80
 #define GAUDI_FIRST_AVAILABLE_W_S_SYNC_OBJECT 144
 #define GAUDI_FIRST_AVAILABLE_W_S_MONITOR 72
+#define TS_MAX_ELEMENTS_NUM (1 << 20)
 enum goya_queue_id {
   GOYA_QUEUE_ID_DMA_0 = 0,
   GOYA_QUEUE_ID_DMA_1 = 1,
@@ -158,6 +159,270 @@
   GAUDI_QUEUE_ID_NIC_9_3 = 112,
   GAUDI_QUEUE_ID_SIZE
 };
+enum gaudi2_queue_id {
+  GAUDI2_QUEUE_ID_PDMA_0_0 = 0,
+  GAUDI2_QUEUE_ID_PDMA_0_1 = 1,
+  GAUDI2_QUEUE_ID_PDMA_0_2 = 2,
+  GAUDI2_QUEUE_ID_PDMA_0_3 = 3,
+  GAUDI2_QUEUE_ID_PDMA_1_0 = 4,
+  GAUDI2_QUEUE_ID_PDMA_1_1 = 5,
+  GAUDI2_QUEUE_ID_PDMA_1_2 = 6,
+  GAUDI2_QUEUE_ID_PDMA_1_3 = 7,
+  GAUDI2_QUEUE_ID_DCORE0_EDMA_0_0 = 8,
+  GAUDI2_QUEUE_ID_DCORE0_EDMA_0_1 = 9,
+  GAUDI2_QUEUE_ID_DCORE0_EDMA_0_2 = 10,
+  GAUDI2_QUEUE_ID_DCORE0_EDMA_0_3 = 11,
+  GAUDI2_QUEUE_ID_DCORE0_EDMA_1_0 = 12,
+  GAUDI2_QUEUE_ID_DCORE0_EDMA_1_1 = 13,
+  GAUDI2_QUEUE_ID_DCORE0_EDMA_1_2 = 14,
+  GAUDI2_QUEUE_ID_DCORE0_EDMA_1_3 = 15,
+  GAUDI2_QUEUE_ID_DCORE0_MME_0_0 = 16,
+  GAUDI2_QUEUE_ID_DCORE0_MME_0_1 = 17,
+  GAUDI2_QUEUE_ID_DCORE0_MME_0_2 = 18,
+  GAUDI2_QUEUE_ID_DCORE0_MME_0_3 = 19,
+  GAUDI2_QUEUE_ID_DCORE0_TPC_0_0 = 20,
+  GAUDI2_QUEUE_ID_DCORE0_TPC_0_1 = 21,
+  GAUDI2_QUEUE_ID_DCORE0_TPC_0_2 = 22,
+  GAUDI2_QUEUE_ID_DCORE0_TPC_0_3 = 23,
+  GAUDI2_QUEUE_ID_DCORE0_TPC_1_0 = 24,
+  GAUDI2_QUEUE_ID_DCORE0_TPC_1_1 = 25,
+  GAUDI2_QUEUE_ID_DCORE0_TPC_1_2 = 26,
+  GAUDI2_QUEUE_ID_DCORE0_TPC_1_3 = 27,
+  GAUDI2_QUEUE_ID_DCORE0_TPC_2_0 = 28,
+  GAUDI2_QUEUE_ID_DCORE0_TPC_2_1 = 29,
+  GAUDI2_QUEUE_ID_DCORE0_TPC_2_2 = 30,
+  GAUDI2_QUEUE_ID_DCORE0_TPC_2_3 = 31,
+  GAUDI2_QUEUE_ID_DCORE0_TPC_3_0 = 32,
+  GAUDI2_QUEUE_ID_DCORE0_TPC_3_1 = 33,
+  GAUDI2_QUEUE_ID_DCORE0_TPC_3_2 = 34,
+  GAUDI2_QUEUE_ID_DCORE0_TPC_3_3 = 35,
+  GAUDI2_QUEUE_ID_DCORE0_TPC_4_0 = 36,
+  GAUDI2_QUEUE_ID_DCORE0_TPC_4_1 = 37,
+  GAUDI2_QUEUE_ID_DCORE0_TPC_4_2 = 38,
+  GAUDI2_QUEUE_ID_DCORE0_TPC_4_3 = 39,
+  GAUDI2_QUEUE_ID_DCORE0_TPC_5_0 = 40,
+  GAUDI2_QUEUE_ID_DCORE0_TPC_5_1 = 41,
+  GAUDI2_QUEUE_ID_DCORE0_TPC_5_2 = 42,
+  GAUDI2_QUEUE_ID_DCORE0_TPC_5_3 = 43,
+  GAUDI2_QUEUE_ID_DCORE0_TPC_6_0 = 44,
+  GAUDI2_QUEUE_ID_DCORE0_TPC_6_1 = 45,
+  GAUDI2_QUEUE_ID_DCORE0_TPC_6_2 = 46,
+  GAUDI2_QUEUE_ID_DCORE0_TPC_6_3 = 47,
+  GAUDI2_QUEUE_ID_DCORE1_EDMA_0_0 = 48,
+  GAUDI2_QUEUE_ID_DCORE1_EDMA_0_1 = 49,
+  GAUDI2_QUEUE_ID_DCORE1_EDMA_0_2 = 50,
+  GAUDI2_QUEUE_ID_DCORE1_EDMA_0_3 = 51,
+  GAUDI2_QUEUE_ID_DCORE1_EDMA_1_0 = 52,
+  GAUDI2_QUEUE_ID_DCORE1_EDMA_1_1 = 53,
+  GAUDI2_QUEUE_ID_DCORE1_EDMA_1_2 = 54,
+  GAUDI2_QUEUE_ID_DCORE1_EDMA_1_3 = 55,
+  GAUDI2_QUEUE_ID_DCORE1_MME_0_0 = 56,
+  GAUDI2_QUEUE_ID_DCORE1_MME_0_1 = 57,
+  GAUDI2_QUEUE_ID_DCORE1_MME_0_2 = 58,
+  GAUDI2_QUEUE_ID_DCORE1_MME_0_3 = 59,
+  GAUDI2_QUEUE_ID_DCORE1_TPC_0_0 = 60,
+  GAUDI2_QUEUE_ID_DCORE1_TPC_0_1 = 61,
+  GAUDI2_QUEUE_ID_DCORE1_TPC_0_2 = 62,
+  GAUDI2_QUEUE_ID_DCORE1_TPC_0_3 = 63,
+  GAUDI2_QUEUE_ID_DCORE1_TPC_1_0 = 64,
+  GAUDI2_QUEUE_ID_DCORE1_TPC_1_1 = 65,
+  GAUDI2_QUEUE_ID_DCORE1_TPC_1_2 = 66,
+  GAUDI2_QUEUE_ID_DCORE1_TPC_1_3 = 67,
+  GAUDI2_QUEUE_ID_DCORE1_TPC_2_0 = 68,
+  GAUDI2_QUEUE_ID_DCORE1_TPC_2_1 = 69,
+  GAUDI2_QUEUE_ID_DCORE1_TPC_2_2 = 70,
+  GAUDI2_QUEUE_ID_DCORE1_TPC_2_3 = 71,
+  GAUDI2_QUEUE_ID_DCORE1_TPC_3_0 = 72,
+  GAUDI2_QUEUE_ID_DCORE1_TPC_3_1 = 73,
+  GAUDI2_QUEUE_ID_DCORE1_TPC_3_2 = 74,
+  GAUDI2_QUEUE_ID_DCORE1_TPC_3_3 = 75,
+  GAUDI2_QUEUE_ID_DCORE1_TPC_4_0 = 76,
+  GAUDI2_QUEUE_ID_DCORE1_TPC_4_1 = 77,
+  GAUDI2_QUEUE_ID_DCORE1_TPC_4_2 = 78,
+  GAUDI2_QUEUE_ID_DCORE1_TPC_4_3 = 79,
+  GAUDI2_QUEUE_ID_DCORE1_TPC_5_0 = 80,
+  GAUDI2_QUEUE_ID_DCORE1_TPC_5_1 = 81,
+  GAUDI2_QUEUE_ID_DCORE1_TPC_5_2 = 82,
+  GAUDI2_QUEUE_ID_DCORE1_TPC_5_3 = 83,
+  GAUDI2_QUEUE_ID_DCORE2_EDMA_0_0 = 84,
+  GAUDI2_QUEUE_ID_DCORE2_EDMA_0_1 = 85,
+  GAUDI2_QUEUE_ID_DCORE2_EDMA_0_2 = 86,
+  GAUDI2_QUEUE_ID_DCORE2_EDMA_0_3 = 87,
+  GAUDI2_QUEUE_ID_DCORE2_EDMA_1_0 = 88,
+  GAUDI2_QUEUE_ID_DCORE2_EDMA_1_1 = 89,
+  GAUDI2_QUEUE_ID_DCORE2_EDMA_1_2 = 90,
+  GAUDI2_QUEUE_ID_DCORE2_EDMA_1_3 = 91,
+  GAUDI2_QUEUE_ID_DCORE2_MME_0_0 = 92,
+  GAUDI2_QUEUE_ID_DCORE2_MME_0_1 = 93,
+  GAUDI2_QUEUE_ID_DCORE2_MME_0_2 = 94,
+  GAUDI2_QUEUE_ID_DCORE2_MME_0_3 = 95,
+  GAUDI2_QUEUE_ID_DCORE2_TPC_0_0 = 96,
+  GAUDI2_QUEUE_ID_DCORE2_TPC_0_1 = 97,
+  GAUDI2_QUEUE_ID_DCORE2_TPC_0_2 = 98,
+  GAUDI2_QUEUE_ID_DCORE2_TPC_0_3 = 99,
+  GAUDI2_QUEUE_ID_DCORE2_TPC_1_0 = 100,
+  GAUDI2_QUEUE_ID_DCORE2_TPC_1_1 = 101,
+  GAUDI2_QUEUE_ID_DCORE2_TPC_1_2 = 102,
+  GAUDI2_QUEUE_ID_DCORE2_TPC_1_3 = 103,
+  GAUDI2_QUEUE_ID_DCORE2_TPC_2_0 = 104,
+  GAUDI2_QUEUE_ID_DCORE2_TPC_2_1 = 105,
+  GAUDI2_QUEUE_ID_DCORE2_TPC_2_2 = 106,
+  GAUDI2_QUEUE_ID_DCORE2_TPC_2_3 = 107,
+  GAUDI2_QUEUE_ID_DCORE2_TPC_3_0 = 108,
+  GAUDI2_QUEUE_ID_DCORE2_TPC_3_1 = 109,
+  GAUDI2_QUEUE_ID_DCORE2_TPC_3_2 = 110,
+  GAUDI2_QUEUE_ID_DCORE2_TPC_3_3 = 111,
+  GAUDI2_QUEUE_ID_DCORE2_TPC_4_0 = 112,
+  GAUDI2_QUEUE_ID_DCORE2_TPC_4_1 = 113,
+  GAUDI2_QUEUE_ID_DCORE2_TPC_4_2 = 114,
+  GAUDI2_QUEUE_ID_DCORE2_TPC_4_3 = 115,
+  GAUDI2_QUEUE_ID_DCORE2_TPC_5_0 = 116,
+  GAUDI2_QUEUE_ID_DCORE2_TPC_5_1 = 117,
+  GAUDI2_QUEUE_ID_DCORE2_TPC_5_2 = 118,
+  GAUDI2_QUEUE_ID_DCORE2_TPC_5_3 = 119,
+  GAUDI2_QUEUE_ID_DCORE3_EDMA_0_0 = 120,
+  GAUDI2_QUEUE_ID_DCORE3_EDMA_0_1 = 121,
+  GAUDI2_QUEUE_ID_DCORE3_EDMA_0_2 = 122,
+  GAUDI2_QUEUE_ID_DCORE3_EDMA_0_3 = 123,
+  GAUDI2_QUEUE_ID_DCORE3_EDMA_1_0 = 124,
+  GAUDI2_QUEUE_ID_DCORE3_EDMA_1_1 = 125,
+  GAUDI2_QUEUE_ID_DCORE3_EDMA_1_2 = 126,
+  GAUDI2_QUEUE_ID_DCORE3_EDMA_1_3 = 127,
+  GAUDI2_QUEUE_ID_DCORE3_MME_0_0 = 128,
+  GAUDI2_QUEUE_ID_DCORE3_MME_0_1 = 129,
+  GAUDI2_QUEUE_ID_DCORE3_MME_0_2 = 130,
+  GAUDI2_QUEUE_ID_DCORE3_MME_0_3 = 131,
+  GAUDI2_QUEUE_ID_DCORE3_TPC_0_0 = 132,
+  GAUDI2_QUEUE_ID_DCORE3_TPC_0_1 = 133,
+  GAUDI2_QUEUE_ID_DCORE3_TPC_0_2 = 134,
+  GAUDI2_QUEUE_ID_DCORE3_TPC_0_3 = 135,
+  GAUDI2_QUEUE_ID_DCORE3_TPC_1_0 = 136,
+  GAUDI2_QUEUE_ID_DCORE3_TPC_1_1 = 137,
+  GAUDI2_QUEUE_ID_DCORE3_TPC_1_2 = 138,
+  GAUDI2_QUEUE_ID_DCORE3_TPC_1_3 = 139,
+  GAUDI2_QUEUE_ID_DCORE3_TPC_2_0 = 140,
+  GAUDI2_QUEUE_ID_DCORE3_TPC_2_1 = 141,
+  GAUDI2_QUEUE_ID_DCORE3_TPC_2_2 = 142,
+  GAUDI2_QUEUE_ID_DCORE3_TPC_2_3 = 143,
+  GAUDI2_QUEUE_ID_DCORE3_TPC_3_0 = 144,
+  GAUDI2_QUEUE_ID_DCORE3_TPC_3_1 = 145,
+  GAUDI2_QUEUE_ID_DCORE3_TPC_3_2 = 146,
+  GAUDI2_QUEUE_ID_DCORE3_TPC_3_3 = 147,
+  GAUDI2_QUEUE_ID_DCORE3_TPC_4_0 = 148,
+  GAUDI2_QUEUE_ID_DCORE3_TPC_4_1 = 149,
+  GAUDI2_QUEUE_ID_DCORE3_TPC_4_2 = 150,
+  GAUDI2_QUEUE_ID_DCORE3_TPC_4_3 = 151,
+  GAUDI2_QUEUE_ID_DCORE3_TPC_5_0 = 152,
+  GAUDI2_QUEUE_ID_DCORE3_TPC_5_1 = 153,
+  GAUDI2_QUEUE_ID_DCORE3_TPC_5_2 = 154,
+  GAUDI2_QUEUE_ID_DCORE3_TPC_5_3 = 155,
+  GAUDI2_QUEUE_ID_NIC_0_0 = 156,
+  GAUDI2_QUEUE_ID_NIC_0_1 = 157,
+  GAUDI2_QUEUE_ID_NIC_0_2 = 158,
+  GAUDI2_QUEUE_ID_NIC_0_3 = 159,
+  GAUDI2_QUEUE_ID_NIC_1_0 = 160,
+  GAUDI2_QUEUE_ID_NIC_1_1 = 161,
+  GAUDI2_QUEUE_ID_NIC_1_2 = 162,
+  GAUDI2_QUEUE_ID_NIC_1_3 = 163,
+  GAUDI2_QUEUE_ID_NIC_2_0 = 164,
+  GAUDI2_QUEUE_ID_NIC_2_1 = 165,
+  GAUDI2_QUEUE_ID_NIC_2_2 = 166,
+  GAUDI2_QUEUE_ID_NIC_2_3 = 167,
+  GAUDI2_QUEUE_ID_NIC_3_0 = 168,
+  GAUDI2_QUEUE_ID_NIC_3_1 = 169,
+  GAUDI2_QUEUE_ID_NIC_3_2 = 170,
+  GAUDI2_QUEUE_ID_NIC_3_3 = 171,
+  GAUDI2_QUEUE_ID_NIC_4_0 = 172,
+  GAUDI2_QUEUE_ID_NIC_4_1 = 173,
+  GAUDI2_QUEUE_ID_NIC_4_2 = 174,
+  GAUDI2_QUEUE_ID_NIC_4_3 = 175,
+  GAUDI2_QUEUE_ID_NIC_5_0 = 176,
+  GAUDI2_QUEUE_ID_NIC_5_1 = 177,
+  GAUDI2_QUEUE_ID_NIC_5_2 = 178,
+  GAUDI2_QUEUE_ID_NIC_5_3 = 179,
+  GAUDI2_QUEUE_ID_NIC_6_0 = 180,
+  GAUDI2_QUEUE_ID_NIC_6_1 = 181,
+  GAUDI2_QUEUE_ID_NIC_6_2 = 182,
+  GAUDI2_QUEUE_ID_NIC_6_3 = 183,
+  GAUDI2_QUEUE_ID_NIC_7_0 = 184,
+  GAUDI2_QUEUE_ID_NIC_7_1 = 185,
+  GAUDI2_QUEUE_ID_NIC_7_2 = 186,
+  GAUDI2_QUEUE_ID_NIC_7_3 = 187,
+  GAUDI2_QUEUE_ID_NIC_8_0 = 188,
+  GAUDI2_QUEUE_ID_NIC_8_1 = 189,
+  GAUDI2_QUEUE_ID_NIC_8_2 = 190,
+  GAUDI2_QUEUE_ID_NIC_8_3 = 191,
+  GAUDI2_QUEUE_ID_NIC_9_0 = 192,
+  GAUDI2_QUEUE_ID_NIC_9_1 = 193,
+  GAUDI2_QUEUE_ID_NIC_9_2 = 194,
+  GAUDI2_QUEUE_ID_NIC_9_3 = 195,
+  GAUDI2_QUEUE_ID_NIC_10_0 = 196,
+  GAUDI2_QUEUE_ID_NIC_10_1 = 197,
+  GAUDI2_QUEUE_ID_NIC_10_2 = 198,
+  GAUDI2_QUEUE_ID_NIC_10_3 = 199,
+  GAUDI2_QUEUE_ID_NIC_11_0 = 200,
+  GAUDI2_QUEUE_ID_NIC_11_1 = 201,
+  GAUDI2_QUEUE_ID_NIC_11_2 = 202,
+  GAUDI2_QUEUE_ID_NIC_11_3 = 203,
+  GAUDI2_QUEUE_ID_NIC_12_0 = 204,
+  GAUDI2_QUEUE_ID_NIC_12_1 = 205,
+  GAUDI2_QUEUE_ID_NIC_12_2 = 206,
+  GAUDI2_QUEUE_ID_NIC_12_3 = 207,
+  GAUDI2_QUEUE_ID_NIC_13_0 = 208,
+  GAUDI2_QUEUE_ID_NIC_13_1 = 209,
+  GAUDI2_QUEUE_ID_NIC_13_2 = 210,
+  GAUDI2_QUEUE_ID_NIC_13_3 = 211,
+  GAUDI2_QUEUE_ID_NIC_14_0 = 212,
+  GAUDI2_QUEUE_ID_NIC_14_1 = 213,
+  GAUDI2_QUEUE_ID_NIC_14_2 = 214,
+  GAUDI2_QUEUE_ID_NIC_14_3 = 215,
+  GAUDI2_QUEUE_ID_NIC_15_0 = 216,
+  GAUDI2_QUEUE_ID_NIC_15_1 = 217,
+  GAUDI2_QUEUE_ID_NIC_15_2 = 218,
+  GAUDI2_QUEUE_ID_NIC_15_3 = 219,
+  GAUDI2_QUEUE_ID_NIC_16_0 = 220,
+  GAUDI2_QUEUE_ID_NIC_16_1 = 221,
+  GAUDI2_QUEUE_ID_NIC_16_2 = 222,
+  GAUDI2_QUEUE_ID_NIC_16_3 = 223,
+  GAUDI2_QUEUE_ID_NIC_17_0 = 224,
+  GAUDI2_QUEUE_ID_NIC_17_1 = 225,
+  GAUDI2_QUEUE_ID_NIC_17_2 = 226,
+  GAUDI2_QUEUE_ID_NIC_17_3 = 227,
+  GAUDI2_QUEUE_ID_NIC_18_0 = 228,
+  GAUDI2_QUEUE_ID_NIC_18_1 = 229,
+  GAUDI2_QUEUE_ID_NIC_18_2 = 230,
+  GAUDI2_QUEUE_ID_NIC_18_3 = 231,
+  GAUDI2_QUEUE_ID_NIC_19_0 = 232,
+  GAUDI2_QUEUE_ID_NIC_19_1 = 233,
+  GAUDI2_QUEUE_ID_NIC_19_2 = 234,
+  GAUDI2_QUEUE_ID_NIC_19_3 = 235,
+  GAUDI2_QUEUE_ID_NIC_20_0 = 236,
+  GAUDI2_QUEUE_ID_NIC_20_1 = 237,
+  GAUDI2_QUEUE_ID_NIC_20_2 = 238,
+  GAUDI2_QUEUE_ID_NIC_20_3 = 239,
+  GAUDI2_QUEUE_ID_NIC_21_0 = 240,
+  GAUDI2_QUEUE_ID_NIC_21_1 = 241,
+  GAUDI2_QUEUE_ID_NIC_21_2 = 242,
+  GAUDI2_QUEUE_ID_NIC_21_3 = 243,
+  GAUDI2_QUEUE_ID_NIC_22_0 = 244,
+  GAUDI2_QUEUE_ID_NIC_22_1 = 245,
+  GAUDI2_QUEUE_ID_NIC_22_2 = 246,
+  GAUDI2_QUEUE_ID_NIC_22_3 = 247,
+  GAUDI2_QUEUE_ID_NIC_23_0 = 248,
+  GAUDI2_QUEUE_ID_NIC_23_1 = 249,
+  GAUDI2_QUEUE_ID_NIC_23_2 = 250,
+  GAUDI2_QUEUE_ID_NIC_23_3 = 251,
+  GAUDI2_QUEUE_ID_ROT_0_0 = 252,
+  GAUDI2_QUEUE_ID_ROT_0_1 = 253,
+  GAUDI2_QUEUE_ID_ROT_0_2 = 254,
+  GAUDI2_QUEUE_ID_ROT_0_3 = 255,
+  GAUDI2_QUEUE_ID_ROT_1_0 = 256,
+  GAUDI2_QUEUE_ID_ROT_1_1 = 257,
+  GAUDI2_QUEUE_ID_ROT_1_2 = 258,
+  GAUDI2_QUEUE_ID_ROT_1_3 = 259,
+  GAUDI2_QUEUE_ID_CPU_PQ = 260,
+  GAUDI2_QUEUE_ID_SIZE
+};
 enum goya_engine_id {
   GOYA_ENGINE_ID_DMA_0 = 0,
   GOYA_ENGINE_ID_DMA_1,
@@ -208,6 +473,84 @@
   GAUDI_ENGINE_ID_NIC_9,
   GAUDI_ENGINE_ID_SIZE
 };
+enum gaudi2_engine_id {
+  GAUDI2_DCORE0_ENGINE_ID_EDMA_0 = 0,
+  GAUDI2_DCORE0_ENGINE_ID_EDMA_1,
+  GAUDI2_DCORE0_ENGINE_ID_MME,
+  GAUDI2_DCORE0_ENGINE_ID_TPC_0,
+  GAUDI2_DCORE0_ENGINE_ID_TPC_1,
+  GAUDI2_DCORE0_ENGINE_ID_TPC_2,
+  GAUDI2_DCORE0_ENGINE_ID_TPC_3,
+  GAUDI2_DCORE0_ENGINE_ID_TPC_4,
+  GAUDI2_DCORE0_ENGINE_ID_TPC_5,
+  GAUDI2_DCORE0_ENGINE_ID_DEC_0,
+  GAUDI2_DCORE0_ENGINE_ID_DEC_1,
+  GAUDI2_DCORE1_ENGINE_ID_EDMA_0,
+  GAUDI2_DCORE1_ENGINE_ID_EDMA_1,
+  GAUDI2_DCORE1_ENGINE_ID_MME,
+  GAUDI2_DCORE1_ENGINE_ID_TPC_0,
+  GAUDI2_DCORE1_ENGINE_ID_TPC_1,
+  GAUDI2_DCORE1_ENGINE_ID_TPC_2,
+  GAUDI2_DCORE1_ENGINE_ID_TPC_3,
+  GAUDI2_DCORE1_ENGINE_ID_TPC_4,
+  GAUDI2_DCORE1_ENGINE_ID_TPC_5,
+  GAUDI2_DCORE1_ENGINE_ID_DEC_0,
+  GAUDI2_DCORE1_ENGINE_ID_DEC_1,
+  GAUDI2_DCORE2_ENGINE_ID_EDMA_0,
+  GAUDI2_DCORE2_ENGINE_ID_EDMA_1,
+  GAUDI2_DCORE2_ENGINE_ID_MME,
+  GAUDI2_DCORE2_ENGINE_ID_TPC_0,
+  GAUDI2_DCORE2_ENGINE_ID_TPC_1,
+  GAUDI2_DCORE2_ENGINE_ID_TPC_2,
+  GAUDI2_DCORE2_ENGINE_ID_TPC_3,
+  GAUDI2_DCORE2_ENGINE_ID_TPC_4,
+  GAUDI2_DCORE2_ENGINE_ID_TPC_5,
+  GAUDI2_DCORE2_ENGINE_ID_DEC_0,
+  GAUDI2_DCORE2_ENGINE_ID_DEC_1,
+  GAUDI2_DCORE3_ENGINE_ID_EDMA_0,
+  GAUDI2_DCORE3_ENGINE_ID_EDMA_1,
+  GAUDI2_DCORE3_ENGINE_ID_MME,
+  GAUDI2_DCORE3_ENGINE_ID_TPC_0,
+  GAUDI2_DCORE3_ENGINE_ID_TPC_1,
+  GAUDI2_DCORE3_ENGINE_ID_TPC_2,
+  GAUDI2_DCORE3_ENGINE_ID_TPC_3,
+  GAUDI2_DCORE3_ENGINE_ID_TPC_4,
+  GAUDI2_DCORE3_ENGINE_ID_TPC_5,
+  GAUDI2_DCORE3_ENGINE_ID_DEC_0,
+  GAUDI2_DCORE3_ENGINE_ID_DEC_1,
+  GAUDI2_DCORE0_ENGINE_ID_TPC_6,
+  GAUDI2_ENGINE_ID_PDMA_0,
+  GAUDI2_ENGINE_ID_PDMA_1,
+  GAUDI2_ENGINE_ID_ROT_0,
+  GAUDI2_ENGINE_ID_ROT_1,
+  GAUDI2_PCIE_ENGINE_ID_DEC_0,
+  GAUDI2_PCIE_ENGINE_ID_DEC_1,
+  GAUDI2_ENGINE_ID_NIC0_0,
+  GAUDI2_ENGINE_ID_NIC0_1,
+  GAUDI2_ENGINE_ID_NIC1_0,
+  GAUDI2_ENGINE_ID_NIC1_1,
+  GAUDI2_ENGINE_ID_NIC2_0,
+  GAUDI2_ENGINE_ID_NIC2_1,
+  GAUDI2_ENGINE_ID_NIC3_0,
+  GAUDI2_ENGINE_ID_NIC3_1,
+  GAUDI2_ENGINE_ID_NIC4_0,
+  GAUDI2_ENGINE_ID_NIC4_1,
+  GAUDI2_ENGINE_ID_NIC5_0,
+  GAUDI2_ENGINE_ID_NIC5_1,
+  GAUDI2_ENGINE_ID_NIC6_0,
+  GAUDI2_ENGINE_ID_NIC6_1,
+  GAUDI2_ENGINE_ID_NIC7_0,
+  GAUDI2_ENGINE_ID_NIC7_1,
+  GAUDI2_ENGINE_ID_NIC8_0,
+  GAUDI2_ENGINE_ID_NIC8_1,
+  GAUDI2_ENGINE_ID_NIC9_0,
+  GAUDI2_ENGINE_ID_NIC9_1,
+  GAUDI2_ENGINE_ID_NIC10_0,
+  GAUDI2_ENGINE_ID_NIC10_1,
+  GAUDI2_ENGINE_ID_NIC11_0,
+  GAUDI2_ENGINE_ID_NIC11_1,
+  GAUDI2_ENGINE_ID_SIZE
+};
 enum hl_goya_pll_index {
   HL_GOYA_CPU_PLL = 0,
   HL_GOYA_IC_PLL,
@@ -231,21 +574,56 @@
   HL_GAUDI_IF_PLL,
   HL_GAUDI_PLL_MAX
 };
+enum hl_gaudi2_pll_index {
+  HL_GAUDI2_CPU_PLL = 0,
+  HL_GAUDI2_PCI_PLL,
+  HL_GAUDI2_SRAM_PLL,
+  HL_GAUDI2_HBM_PLL,
+  HL_GAUDI2_NIC_PLL,
+  HL_GAUDI2_DMA_PLL,
+  HL_GAUDI2_MESH_PLL,
+  HL_GAUDI2_MME_PLL,
+  HL_GAUDI2_TPC_PLL,
+  HL_GAUDI2_IF_PLL,
+  HL_GAUDI2_VID_PLL,
+  HL_GAUDI2_MSS_PLL,
+  HL_GAUDI2_PLL_MAX
+};
+enum hl_goya_dma_direction {
+  HL_DMA_HOST_TO_DRAM,
+  HL_DMA_HOST_TO_SRAM,
+  HL_DMA_DRAM_TO_SRAM,
+  HL_DMA_SRAM_TO_DRAM,
+  HL_DMA_SRAM_TO_HOST,
+  HL_DMA_DRAM_TO_HOST,
+  HL_DMA_DRAM_TO_DRAM,
+  HL_DMA_SRAM_TO_SRAM,
+  HL_DMA_ENUM_MAX
+};
 enum hl_device_status {
   HL_DEVICE_STATUS_OPERATIONAL,
   HL_DEVICE_STATUS_IN_RESET,
   HL_DEVICE_STATUS_MALFUNCTION,
   HL_DEVICE_STATUS_NEEDS_RESET,
   HL_DEVICE_STATUS_IN_DEVICE_CREATION,
-  HL_DEVICE_STATUS_LAST = HL_DEVICE_STATUS_IN_DEVICE_CREATION
+  HL_DEVICE_STATUS_IN_RESET_AFTER_DEVICE_RELEASE,
+  HL_DEVICE_STATUS_LAST = HL_DEVICE_STATUS_IN_RESET_AFTER_DEVICE_RELEASE
 };
 enum hl_server_type {
   HL_SERVER_TYPE_UNKNOWN = 0,
   HL_SERVER_GAUDI_HLS1 = 1,
   HL_SERVER_GAUDI_HLS1H = 2,
   HL_SERVER_GAUDI_TYPE1 = 3,
-  HL_SERVER_GAUDI_TYPE2 = 4
+  HL_SERVER_GAUDI_TYPE2 = 4,
+  HL_SERVER_GAUDI2_HLS2 = 5
 };
+#define HL_NOTIFIER_EVENT_TPC_ASSERT (1ULL << 0)
+#define HL_NOTIFIER_EVENT_UNDEFINED_OPCODE (1ULL << 1)
+#define HL_NOTIFIER_EVENT_DEVICE_RESET (1ULL << 2)
+#define HL_NOTIFIER_EVENT_CS_TIMEOUT (1ULL << 3)
+#define HL_NOTIFIER_EVENT_DEVICE_UNAVAILABLE (1ULL << 4)
+#define HL_NOTIFIER_EVENT_USER_ENGINE_ERR (1ULL << 5)
+#define HL_NOTIFIER_EVENT_GENERAL_HW_ERR (1ULL << 6)
 #define HL_INFO_HW_IP_INFO 0
 #define HL_INFO_HW_EVENTS 1
 #define HL_INFO_DRAM_USAGE 2
@@ -269,8 +647,16 @@
 #define HL_INFO_LAST_ERR_OPEN_DEV_TIME 23
 #define HL_INFO_CS_TIMEOUT_EVENT 24
 #define HL_INFO_RAZWI_EVENT 25
+#define HL_INFO_DEV_MEM_ALLOC_PAGE_SIZES 26
+#define HL_INFO_SECURED_ATTESTATION 27
+#define HL_INFO_REGISTER_EVENTFD 28
+#define HL_INFO_UNREGISTER_EVENTFD 29
+#define HL_INFO_GET_EVENTS 30
+#define HL_INFO_UNDEFINED_OPCODE_EVENT 31
+#define HL_INFO_ENGINE_STATUS 32
 #define HL_INFO_VERSION_MAX_LEN 128
 #define HL_INFO_CARD_NAME_MAX_LEN 16
+#define HL_ENGINES_DATA_MAX_SIZE SZ_1M
 struct hl_info_hw_ip_info {
   __u64 sram_base_address;
   __u64 dram_base_address;
@@ -279,7 +665,7 @@
   __u32 num_of_events;
   __u32 device_id;
   __u32 module_id;
-  __u32 reserved;
+  __u32 decoder_enabled_mask;
   __u16 first_available_interrupt_id;
   __u16 server_type;
   __u32 cpld_version;
@@ -289,11 +675,17 @@
   __u32 psoc_pci_pll_div_factor;
   __u8 tpc_enabled_mask;
   __u8 dram_enabled;
-  __u8 pad[2];
+  __u8 security_enabled;
+  __u8 mme_master_slave_mode;
   __u8 cpucp_version[HL_INFO_VERSION_MAX_LEN];
   __u8 card_name[HL_INFO_CARD_NAME_MAX_LEN];
-  __u64 reserved2;
+  __u64 tpc_enabled_mask_ext;
   __u64 dram_page_size;
+  __u32 edma_enabled_mask;
+  __u16 number_of_user_interrupts;
+  __u16 pad2;
+  __u64 reserved4;
+  __u64 device_mem_alloc_default_page_size;
 };
 struct hl_info_dram_usage {
   __u64 dram_free_mem;
@@ -353,6 +745,9 @@
 struct hl_open_stats_info {
   __u64 open_counter;
   __u64 last_open_period_ms;
+  __u8 is_compute_ctx_active;
+  __u8 compute_ctx_in_release;
+  __u8 pad[6];
 };
 struct hl_power_info {
   __u64 power;
@@ -395,6 +790,40 @@
   __u8 error_type;
   __u8 pad[2];
 };
+#define MAX_QMAN_STREAMS_INFO 4
+#define OPCODE_INFO_MAX_ADDR_SIZE 8
+struct hl_info_undefined_opcode_event {
+  __s64 timestamp;
+  __u64 cb_addr_streams[MAX_QMAN_STREAMS_INFO][OPCODE_INFO_MAX_ADDR_SIZE];
+  __u64 cq_addr;
+  __u32 cq_size;
+  __u32 cb_addr_streams_len;
+  __u32 engine_id;
+  __u32 stream_id;
+};
+struct hl_info_dev_memalloc_page_sizes {
+  __u64 page_order_bitmask;
+};
+#define SEC_PCR_DATA_BUF_SZ 256
+#define SEC_PCR_QUOTE_BUF_SZ 510
+#define SEC_SIGNATURE_BUF_SZ 255
+#define SEC_PUB_DATA_BUF_SZ 510
+#define SEC_CERTIFICATE_BUF_SZ 2046
+struct hl_info_sec_attest {
+  __u32 nonce;
+  __u16 pcr_quote_len;
+  __u16 pub_data_len;
+  __u16 certificate_len;
+  __u8 pcr_num_reg;
+  __u8 pcr_reg_len;
+  __u8 quote_sig_len;
+  __u8 pcr_data[SEC_PCR_DATA_BUF_SZ];
+  __u8 pcr_quote[SEC_PCR_QUOTE_BUF_SZ];
+  __u8 quote_sig[SEC_SIGNATURE_BUF_SZ];
+  __u8 public_data[SEC_PUB_DATA_BUF_SZ];
+  __u8 certificate[SEC_CERTIFICATE_BUF_SZ];
+  __u8 pad0[2];
+};
 enum gaudi_dcores {
   HL_GAUDI_WS_DCORE,
   HL_GAUDI_WN_DCORE,
@@ -410,6 +839,9 @@
     __u32 ctx_id;
     __u32 period_ms;
     __u32 pll_index;
+    __u32 eventfd;
+    __u32 user_buffer_actual_size;
+    __u32 sec_attest_nonce;
   };
   __u32 pad;
 };
@@ -472,11 +904,23 @@
 #define HL_CS_FLAGS_ENCAP_SIGNALS 0x800
 #define HL_CS_FLAGS_RESERVE_SIGNALS_ONLY 0x1000
 #define HL_CS_FLAGS_UNRESERVE_SIGNALS_ONLY 0x2000
+#define HL_CS_FLAGS_ENGINE_CORE_COMMAND 0x4000
 #define HL_CS_STATUS_SUCCESS 0
 #define HL_MAX_JOBS_PER_CS 512
+#define HL_ENGINE_CORE_HALT (1 << 0)
+#define HL_ENGINE_CORE_RUN (1 << 1)
 struct hl_cs_in {
-  __u64 chunks_restore;
-  __u64 chunks_execute;
+  union {
+    struct {
+      __u64 chunks_restore;
+      __u64 chunks_execute;
+    };
+    struct {
+      __u64 engine_cores;
+      __u32 num_engine_cores;
+      __u32 core_command;
+    };
+  };
   union {
     __u64 seq;
     __u32 encaps_sig_handle_id;
@@ -490,6 +934,7 @@
   __u32 timeout;
   __u32 cs_flags;
   __u32 ctx_id;
+  __u8 pad[4];
 };
 struct hl_cs_out {
   union {
@@ -510,8 +955,11 @@
 };
 #define HL_WAIT_CS_FLAGS_INTERRUPT 0x2
 #define HL_WAIT_CS_FLAGS_INTERRUPT_MASK 0xFFF00000
+#define HL_WAIT_CS_FLAGS_ANY_CQ_INTERRUPT 0xFFF00000
+#define HL_WAIT_CS_FLAGS_ANY_DEC_INTERRUPT 0xFFE00000
 #define HL_WAIT_CS_FLAGS_MULTI_CS 0x4
 #define HL_WAIT_CS_FLAGS_INTERRUPT_KERNEL_CQ 0x10
+#define HL_WAIT_CS_FLAGS_REGISTER_INTERRUPT 0x20
 #define HL_WAIT_MULTI_CS_LIST_MAX_LEN 32
 struct hl_wait_cs_in {
   union {
@@ -537,6 +985,8 @@
     __u64 interrupt_timeout_us;
   };
   __u64 cq_counters_offset;
+  __u64 timestamp_handle;
+  __u64 timestamp_offset;
 };
 #define HL_WAIT_CS_STATUS_COMPLETED 0
 #define HL_WAIT_CS_STATUS_BUSY 1
@@ -561,14 +1011,17 @@
 #define HL_MEM_OP_UNMAP 3
 #define HL_MEM_OP_MAP_BLOCK 4
 #define HL_MEM_OP_EXPORT_DMABUF_FD 5
+#define HL_MEM_OP_TS_ALLOC 6
 #define HL_MEM_CONTIGUOUS 0x1
 #define HL_MEM_SHARED 0x2
 #define HL_MEM_USERPTR 0x4
 #define HL_MEM_FORCE_HINT 0x8
+#define HL_MEM_PREFETCH 0x40
 struct hl_mem_in {
   union {
     struct {
       __u64 mem_size;
+      __u64 page_size;
     } alloc;
     struct {
       __u64 handle;
@@ -596,7 +1049,7 @@
   __u32 op;
   __u32 flags;
   __u32 ctx_id;
-  __u32 pad;
+  __u32 num_of_elements;
 };
 struct hl_mem_out {
   union {
@@ -641,12 +1094,18 @@
   __u32 bw_win;
   __u32 win_capture;
   __u32 id;
-  __u32 pad;
+  __u32 control;
+  __u64 start_addr2;
+  __u64 end_addr2;
+  __u64 start_addr3;
+  __u64 end_addr3;
 };
 struct hl_debug_params_spmu {
   __u64 event_types[HL_DEBUG_MAX_AUX_VALUES];
   __u32 event_types_num;
-  __u32 pad;
+  __u32 pmtrc_val;
+  __u32 trc_ctrl_host_val;
+  __u32 trc_en_host_val;
 };
 #define HL_DEBUG_OP_ETR 0
 #define HL_DEBUG_OP_ETF 1
diff --git a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/misc/uacce/hisi_qm.h b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/misc/uacce/hisi_qm.h
index 87757a9..d2509d0 100644
--- a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/misc/uacce/hisi_qm.h
+++ b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/misc/uacce/hisi_qm.h
@@ -23,8 +23,15 @@
   __u16 id;
   __u16 qc_type;
 };
+struct hisi_qp_info {
+  __u32 sqe_size;
+  __u16 sq_depth;
+  __u16 cq_depth;
+  __u64 reserved;
+};
 #define HISI_QM_API_VER_BASE "hisi_qm_v1"
 #define HISI_QM_API_VER2_BASE "hisi_qm_v2"
 #define HISI_QM_API_VER3_BASE "hisi_qm_v3"
 #define UACCE_CMD_QM_SET_QP_CTX _IOWR('H', 10, struct hisi_qp_ctx)
+#define UACCE_CMD_QM_SET_QP_INFO _IOWR('H', 11, struct hisi_qp_info)
 #endif
diff --git a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/mtd/mtd-abi.h b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/mtd/mtd-abi.h
index 50ae565..6e26cae 100644
--- a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/mtd/mtd-abi.h
+++ b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/mtd/mtd-abi.h
@@ -52,6 +52,21 @@
   __u8 mode;
   __u8 padding[7];
 };
+struct mtd_read_req_ecc_stats {
+  __u32 uncorrectable_errors;
+  __u32 corrected_bitflips;
+  __u32 max_bitflips;
+};
+struct mtd_read_req {
+  __u64 start;
+  __u64 len;
+  __u64 ooblen;
+  __u64 usr_data;
+  __u64 usr_oob;
+  __u8 mode;
+  __u8 padding[7];
+  struct mtd_read_req_ecc_stats ecc_stats;
+};
 #define MTD_ABSENT 0
 #define MTD_RAM 1
 #define MTD_ROM 2
@@ -122,6 +137,7 @@
 #define MEMISLOCKED _IOR('M', 23, struct erase_info_user)
 #define MEMWRITE _IOWR('M', 24, struct mtd_write_req)
 #define OTPERASE _IOW('M', 25, struct otp_info)
+#define MEMREAD _IOWR('M', 26, struct mtd_read_req)
 struct nand_oobinfo {
   __u32 useecc;
   __u32 eccbytes;
diff --git a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/mtd/ubi-user.h b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/mtd/ubi-user.h
index 866fbd2..db203d5 100644
--- a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/mtd/ubi-user.h
+++ b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/mtd/ubi-user.h
@@ -56,7 +56,8 @@
   __s32 mtd_num;
   __s32 vid_hdr_offset;
   __s16 max_beb_per1024;
-  __s8 padding[10];
+  __s8 disable_fm;
+  __s8 padding[9];
 };
 enum {
   UBI_VOL_SKIP_CRC_CHECK_FLG = 0x1,
@@ -71,11 +72,11 @@
   __s16 name_len;
   __s8 padding2[4];
   char name[UBI_MAX_VOLUME_NAME + 1];
-} __packed;
+} __attribute__((__packed__));
 struct ubi_rsvol_req {
   __s64 bytes;
   __s32 vol_id;
-} __packed;
+} __attribute__((__packed__));
 struct ubi_rnvol_req {
   __s32 count;
   __s8 padding1[12];
@@ -85,24 +86,24 @@
     __s8 padding2[2];
     char name[UBI_MAX_VOLUME_NAME + 1];
   } ents[UBI_MAX_RNVOL];
-} __packed;
+} __attribute__((__packed__));
 struct ubi_leb_change_req {
   __s32 lnum;
   __s32 bytes;
   __s8 dtype;
   __s8 padding[7];
-} __packed;
+} __attribute__((__packed__));
 struct ubi_map_req {
   __s32 lnum;
   __s8 dtype;
   __s8 padding[3];
-} __packed;
+} __attribute__((__packed__));
 struct ubi_set_vol_prop_req {
   __u8 property;
   __u8 padding[7];
   __u64 value;
-} __packed;
+} __attribute__((__packed__));
 struct ubi_blkcreate_req {
   __s8 padding[128];
-} __packed;
+} __attribute__((__packed__));
 #endif
diff --git a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/rdma/efa-abi.h b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/rdma/efa-abi.h
index 4b6842b..bfb3f18 100644
--- a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/rdma/efa-abi.h
+++ b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/rdma/efa-abi.h
@@ -49,6 +49,7 @@
 };
 enum {
   EFA_CREATE_CQ_WITH_COMPLETION_CHANNEL = 1 << 0,
+  EFA_CREATE_CQ_WITH_SGID = 1 << 1,
 };
 struct efa_ibv_create_cq {
   __u32 comp_mask;
@@ -102,6 +103,7 @@
   EFA_QUERY_DEVICE_CAPS_RDMA_READ = 1 << 0,
   EFA_QUERY_DEVICE_CAPS_RNR_RETRY = 1 << 1,
   EFA_QUERY_DEVICE_CAPS_CQ_NOTIFICATIONS = 1 << 2,
+  EFA_QUERY_DEVICE_CAPS_CQ_WITH_SGID = 1 << 3,
 };
 struct efa_ibv_ex_query_device_resp {
   __u32 comp_mask;
diff --git a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/rdma/erdma-abi.h b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/rdma/erdma-abi.h
new file mode 100644
index 0000000..4df1757
--- /dev/null
+++ b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/rdma/erdma-abi.h
@@ -0,0 +1,54 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef __ERDMA_USER_H__
+#define __ERDMA_USER_H__
+#include <linux/types.h>
+#define ERDMA_ABI_VERSION 1
+struct erdma_ureq_create_cq {
+  __aligned_u64 db_record_va;
+  __aligned_u64 qbuf_va;
+  __u32 qbuf_len;
+  __u32 rsvd0;
+};
+struct erdma_uresp_create_cq {
+  __u32 cq_id;
+  __u32 num_cqe;
+};
+struct erdma_ureq_create_qp {
+  __aligned_u64 db_record_va;
+  __aligned_u64 qbuf_va;
+  __u32 qbuf_len;
+  __u32 rsvd0;
+};
+struct erdma_uresp_create_qp {
+  __u32 qp_id;
+  __u32 num_sqe;
+  __u32 num_rqe;
+  __u32 rq_offset;
+};
+struct erdma_uresp_alloc_ctx {
+  __u32 dev_id;
+  __u32 pad;
+  __u32 sdb_type;
+  __u32 sdb_offset;
+  __aligned_u64 sdb;
+  __aligned_u64 rdb;
+  __aligned_u64 cdb;
+};
+#endif
diff --git a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/rdma/hfi/hfi1_user.h b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/rdma/hfi/hfi1_user.h
index 3352907..6d58600 100644
--- a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/rdma/hfi/hfi1_user.h
+++ b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/rdma/hfi/hfi1_user.h
@@ -80,7 +80,7 @@
 struct hfi1_status {
   __aligned_u64 dev;
   __aligned_u64 port;
-  char freezemsg[0];
+  char freezemsg[];
 };
 enum sdma_req_opcode {
   EXPECTED = 0,
diff --git a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/rdma/ib_user_ioctl_verbs.h b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/rdma/ib_user_ioctl_verbs.h
index 3b94907..766d5be 100644
--- a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/rdma/ib_user_ioctl_verbs.h
+++ b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/rdma/ib_user_ioctl_verbs.h
@@ -191,6 +191,7 @@
   RDMA_DRIVER_QIB,
   RDMA_DRIVER_EFA,
   RDMA_DRIVER_SIW,
+  RDMA_DRIVER_ERDMA,
 };
 enum ib_uverbs_gid_type {
   IB_UVERBS_GID_TYPE_IB,
diff --git a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/rdma/ib_user_verbs.h b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/rdma/ib_user_verbs.h
index d9ac9e0..552c80a 100644
--- a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/rdma/ib_user_verbs.h
+++ b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/rdma/ib_user_verbs.h
@@ -106,16 +106,16 @@
 };
 struct ib_uverbs_get_context {
   __aligned_u64 response;
-  __aligned_u64 driver_data[0];
+  __aligned_u64 driver_data[];
 };
 struct ib_uverbs_get_context_resp {
   __u32 async_fd;
   __u32 num_comp_vectors;
-  __aligned_u64 driver_data[0];
+  __aligned_u64 driver_data[];
 };
 struct ib_uverbs_query_device {
   __aligned_u64 response;
-  __aligned_u64 driver_data[0];
+  __aligned_u64 driver_data[];
 };
 struct ib_uverbs_query_device_resp {
   __aligned_u64 fw_ver;
@@ -208,7 +208,7 @@
   __aligned_u64 response;
   __u8 port_num;
   __u8 reserved[7];
-  __aligned_u64 driver_data[0];
+  __aligned_u64 driver_data[];
 };
 struct ib_uverbs_query_port_resp {
   __u32 port_cap_flags;
@@ -236,11 +236,11 @@
 };
 struct ib_uverbs_alloc_pd {
   __aligned_u64 response;
-  __aligned_u64 driver_data[0];
+  __aligned_u64 driver_data[];
 };
 struct ib_uverbs_alloc_pd_resp {
   __u32 pd_handle;
-  __u32 driver_data[0];
+  __u32 driver_data[];
 };
 struct ib_uverbs_dealloc_pd {
   __u32 pd_handle;
@@ -249,11 +249,11 @@
   __aligned_u64 response;
   __u32 fd;
   __u32 oflags;
-  __aligned_u64 driver_data[0];
+  __aligned_u64 driver_data[];
 };
 struct ib_uverbs_open_xrcd_resp {
   __u32 xrcd_handle;
-  __u32 driver_data[0];
+  __u32 driver_data[];
 };
 struct ib_uverbs_close_xrcd {
   __u32 xrcd_handle;
@@ -265,13 +265,13 @@
   __aligned_u64 hca_va;
   __u32 pd_handle;
   __u32 access_flags;
-  __aligned_u64 driver_data[0];
+  __aligned_u64 driver_data[];
 };
 struct ib_uverbs_reg_mr_resp {
   __u32 mr_handle;
   __u32 lkey;
   __u32 rkey;
-  __u32 driver_data[0];
+  __u32 driver_data[];
 };
 struct ib_uverbs_rereg_mr {
   __aligned_u64 response;
@@ -282,12 +282,12 @@
   __aligned_u64 hca_va;
   __u32 pd_handle;
   __u32 access_flags;
-  __aligned_u64 driver_data[0];
+  __aligned_u64 driver_data[];
 };
 struct ib_uverbs_rereg_mr_resp {
   __u32 lkey;
   __u32 rkey;
-  __aligned_u64 driver_data[0];
+  __aligned_u64 driver_data[];
 };
 struct ib_uverbs_dereg_mr {
   __u32 mr_handle;
@@ -297,12 +297,12 @@
   __u32 pd_handle;
   __u8 mw_type;
   __u8 reserved[3];
-  __aligned_u64 driver_data[0];
+  __aligned_u64 driver_data[];
 };
 struct ib_uverbs_alloc_mw_resp {
   __u32 mw_handle;
   __u32 rkey;
-  __aligned_u64 driver_data[0];
+  __aligned_u64 driver_data[];
 };
 struct ib_uverbs_dealloc_mw {
   __u32 mw_handle;
@@ -320,7 +320,7 @@
   __u32 comp_vector;
   __s32 comp_channel;
   __u32 reserved;
-  __aligned_u64 driver_data[0];
+  __aligned_u64 driver_data[];
 };
 enum ib_uverbs_ex_create_cq_flags {
   IB_UVERBS_CQ_FLAGS_TIMESTAMP_COMPLETION = 1 << 0,
@@ -349,12 +349,12 @@
   __aligned_u64 response;
   __u32 cq_handle;
   __u32 cqe;
-  __aligned_u64 driver_data[0];
+  __aligned_u64 driver_data[];
 };
 struct ib_uverbs_resize_cq_resp {
   __u32 cqe;
   __u32 reserved;
-  __aligned_u64 driver_data[0];
+  __aligned_u64 driver_data[];
 };
 struct ib_uverbs_poll_cq {
   __aligned_u64 response;
@@ -394,7 +394,7 @@
 struct ib_uverbs_poll_cq_resp {
   __u32 count;
   __u32 reserved;
-  struct ib_uverbs_wc wc[0];
+  struct ib_uverbs_wc wc[];
 };
 struct ib_uverbs_req_notify_cq {
   __u32 cq_handle;
@@ -476,7 +476,7 @@
   __u8 qp_type;
   __u8 is_srq;
   __u8 reserved;
-  __aligned_u64 driver_data[0];
+  __aligned_u64 driver_data[];
 };
 enum ib_uverbs_create_qp_mask {
   IB_UVERBS_CREATE_QP_MASK_IND_TABLE = 1UL << 0,
@@ -511,7 +511,7 @@
   __u32 qpn;
   __u8 qp_type;
   __u8 reserved[7];
-  __aligned_u64 driver_data[0];
+  __aligned_u64 driver_data[];
 };
 struct ib_uverbs_create_qp_resp {
   __u32 qp_handle;
@@ -547,7 +547,7 @@
   __aligned_u64 response;
   __u32 qp_handle;
   __u32 attr_mask;
-  __aligned_u64 driver_data[0];
+  __aligned_u64 driver_data[];
 };
 struct ib_uverbs_query_qp_resp {
   struct ib_uverbs_qp_dest dest;
@@ -580,7 +580,7 @@
   __u8 alt_timeout;
   __u8 sq_sig_all;
   __u8 reserved[5];
-  __aligned_u64 driver_data[0];
+  __aligned_u64 driver_data[];
 };
 struct ib_uverbs_modify_qp {
   struct ib_uverbs_qp_dest dest;
@@ -685,7 +685,7 @@
   __u32 wr_count;
   __u32 sge_count;
   __u32 wqe_size;
-  struct ib_uverbs_send_wr send_wr[0];
+  struct ib_uverbs_send_wr send_wr[];
 };
 struct ib_uverbs_post_send_resp {
   __u32 bad_wr;
@@ -701,7 +701,7 @@
   __u32 wr_count;
   __u32 sge_count;
   __u32 wqe_size;
-  struct ib_uverbs_recv_wr recv_wr[0];
+  struct ib_uverbs_recv_wr recv_wr[];
 };
 struct ib_uverbs_post_recv_resp {
   __u32 bad_wr;
@@ -712,7 +712,7 @@
   __u32 wr_count;
   __u32 sge_count;
   __u32 wqe_size;
-  struct ib_uverbs_recv_wr recv[0];
+  struct ib_uverbs_recv_wr recv[];
 };
 struct ib_uverbs_post_srq_recv_resp {
   __u32 bad_wr;
@@ -723,11 +723,11 @@
   __u32 pd_handle;
   __u32 reserved;
   struct ib_uverbs_ah_attr attr;
-  __aligned_u64 driver_data[0];
+  __aligned_u64 driver_data[];
 };
 struct ib_uverbs_create_ah_resp {
   __u32 ah_handle;
-  __u32 driver_data[0];
+  __u32 driver_data[];
 };
 struct ib_uverbs_destroy_ah {
   __u32 ah_handle;
@@ -737,14 +737,14 @@
   __u32 qp_handle;
   __u16 mlid;
   __u16 reserved;
-  __aligned_u64 driver_data[0];
+  __aligned_u64 driver_data[];
 };
 struct ib_uverbs_detach_mcast {
   __u8 gid[16];
   __u32 qp_handle;
   __u16 mlid;
   __u16 reserved;
-  __aligned_u64 driver_data[0];
+  __aligned_u64 driver_data[];
 };
 struct ib_uverbs_flow_spec_hdr {
   __u32 type;
@@ -944,7 +944,7 @@
   __u8 reserved[2];
   __u8 port;
   __u32 flags;
-  struct ib_uverbs_flow_spec_hdr flow_specs[0];
+  struct ib_uverbs_flow_spec_hdr flow_specs[];
 };
 struct ib_uverbs_create_flow {
   __u32 comp_mask;
@@ -966,7 +966,7 @@
   __u32 max_wr;
   __u32 max_sge;
   __u32 srq_limit;
-  __aligned_u64 driver_data[0];
+  __aligned_u64 driver_data[];
 };
 struct ib_uverbs_create_xsrq {
   __aligned_u64 response;
@@ -979,27 +979,27 @@
   __u32 max_num_tags;
   __u32 xrcd_handle;
   __u32 cq_handle;
-  __aligned_u64 driver_data[0];
+  __aligned_u64 driver_data[];
 };
 struct ib_uverbs_create_srq_resp {
   __u32 srq_handle;
   __u32 max_wr;
   __u32 max_sge;
   __u32 srqn;
-  __u32 driver_data[0];
+  __u32 driver_data[];
 };
 struct ib_uverbs_modify_srq {
   __u32 srq_handle;
   __u32 attr_mask;
   __u32 max_wr;
   __u32 srq_limit;
-  __aligned_u64 driver_data[0];
+  __aligned_u64 driver_data[];
 };
 struct ib_uverbs_query_srq {
   __aligned_u64 response;
   __u32 srq_handle;
   __u32 reserved;
-  __aligned_u64 driver_data[0];
+  __aligned_u64 driver_data[];
 };
 struct ib_uverbs_query_srq_resp {
   __u32 max_wr;
@@ -1056,7 +1056,7 @@
 struct ib_uverbs_ex_create_rwq_ind_table {
   __u32 comp_mask;
   __u32 log_ind_tbl_size;
-  __u32 wq_handles[0];
+  __u32 wq_handles[];
 };
 struct ib_uverbs_ex_create_rwq_ind_table_resp {
   __u32 comp_mask;
@@ -1079,4 +1079,37 @@
   __u32 reserved;
 };
 #define IB_DEVICE_NAME_MAX 64
+enum ib_uverbs_device_cap_flags {
+  IB_UVERBS_DEVICE_RESIZE_MAX_WR = 1 << 0,
+  IB_UVERBS_DEVICE_BAD_PKEY_CNTR = 1 << 1,
+  IB_UVERBS_DEVICE_BAD_QKEY_CNTR = 1 << 2,
+  IB_UVERBS_DEVICE_RAW_MULTI = 1 << 3,
+  IB_UVERBS_DEVICE_AUTO_PATH_MIG = 1 << 4,
+  IB_UVERBS_DEVICE_CHANGE_PHY_PORT = 1 << 5,
+  IB_UVERBS_DEVICE_UD_AV_PORT_ENFORCE = 1 << 6,
+  IB_UVERBS_DEVICE_CURR_QP_STATE_MOD = 1 << 7,
+  IB_UVERBS_DEVICE_SHUTDOWN_PORT = 1 << 8,
+  IB_UVERBS_DEVICE_PORT_ACTIVE_EVENT = 1 << 10,
+  IB_UVERBS_DEVICE_SYS_IMAGE_GUID = 1 << 11,
+  IB_UVERBS_DEVICE_RC_RNR_NAK_GEN = 1 << 12,
+  IB_UVERBS_DEVICE_SRQ_RESIZE = 1 << 13,
+  IB_UVERBS_DEVICE_N_NOTIFY_CQ = 1 << 14,
+  IB_UVERBS_DEVICE_MEM_WINDOW = 1 << 17,
+  IB_UVERBS_DEVICE_UD_IP_CSUM = 1 << 18,
+  IB_UVERBS_DEVICE_XRC = 1 << 20,
+  IB_UVERBS_DEVICE_MEM_MGT_EXTENSIONS = 1 << 21,
+  IB_UVERBS_DEVICE_MEM_WINDOW_TYPE_2A = 1 << 23,
+  IB_UVERBS_DEVICE_MEM_WINDOW_TYPE_2B = 1 << 24,
+  IB_UVERBS_DEVICE_RC_IP_CSUM = 1 << 25,
+  IB_UVERBS_DEVICE_RAW_IP_CSUM = 1 << 26,
+  IB_UVERBS_DEVICE_MANAGED_FLOW_STEERING = 1 << 29,
+  IB_UVERBS_DEVICE_RAW_SCATTER_FCS = 1ULL << 34,
+  IB_UVERBS_DEVICE_PCI_WRITE_END_PADDING = 1ULL << 36,
+};
+enum ib_uverbs_raw_packet_caps {
+  IB_UVERBS_RAW_PACKET_CAP_CVLAN_STRIPPING = 1 << 0,
+  IB_UVERBS_RAW_PACKET_CAP_SCATTER_FCS = 1 << 1,
+  IB_UVERBS_RAW_PACKET_CAP_IP_CSUM = 1 << 2,
+  IB_UVERBS_RAW_PACKET_CAP_DELAY_DROP = 1 << 3,
+};
 #endif
diff --git a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/rdma/mlx5-abi.h b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/rdma/mlx5-abi.h
index aadb20e..f41c887 100644
--- a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/rdma/mlx5-abi.h
+++ b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/rdma/mlx5-abi.h
@@ -70,6 +70,7 @@
   MLX5_IB_ALLOC_UCONTEXT_RESP_MASK_ECE = 1UL << 2,
   MLX5_IB_ALLOC_UCONTEXT_RESP_MASK_SQD2RTS = 1UL << 3,
   MLX5_IB_ALLOC_UCONTEXT_RESP_MASK_REAL_TIME_TS = 1UL << 4,
+  MLX5_IB_ALLOC_UCONTEXT_RESP_MASK_MKEY_UPDATE_TAG = 1UL << 5,
 };
 enum mlx5_user_cmds_supp_uhw {
   MLX5_USER_CMDS_SUPP_UHW_QUERY_DEVICE = 1 << 0,
diff --git a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/rdma/mlx5_user_ioctl_cmds.h b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/rdma/mlx5_user_ioctl_cmds.h
index 862abcb..c060482 100644
--- a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/rdma/mlx5_user_ioctl_cmds.h
+++ b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/rdma/mlx5_user_ioctl_cmds.h
@@ -135,6 +135,7 @@
   MLX5_IB_ATTR_DEVX_UMEM_REG_ACCESS,
   MLX5_IB_ATTR_DEVX_UMEM_REG_OUT_ID,
   MLX5_IB_ATTR_DEVX_UMEM_REG_PGSZ_BITMAP,
+  MLX5_IB_ATTR_DEVX_UMEM_REG_DMABUF_FD,
 };
 enum mlx5_ib_devx_umem_dereg_attrs {
   MLX5_IB_ATTR_DEVX_UMEM_DEREG_HANDLE = (1U << UVERBS_ID_NS_SHIFT),
@@ -179,6 +180,7 @@
   MLX5_IB_OBJECT_VAR,
   MLX5_IB_OBJECT_PP,
   MLX5_IB_OBJECT_UAR,
+  MLX5_IB_OBJECT_STEERING_ANCHOR,
 };
 enum mlx5_ib_flow_matcher_create_attrs {
   MLX5_IB_ATTR_FLOW_MATCHER_CREATE_HANDLE = (1U << UVERBS_ID_NS_SHIFT),
@@ -195,6 +197,19 @@
   MLX5_IB_METHOD_FLOW_MATCHER_CREATE = (1U << UVERBS_ID_NS_SHIFT),
   MLX5_IB_METHOD_FLOW_MATCHER_DESTROY,
 };
+enum mlx5_ib_flow_steering_anchor_create_attrs {
+  MLX5_IB_ATTR_STEERING_ANCHOR_CREATE_HANDLE = (1U << UVERBS_ID_NS_SHIFT),
+  MLX5_IB_ATTR_STEERING_ANCHOR_FT_TYPE,
+  MLX5_IB_ATTR_STEERING_ANCHOR_PRIORITY,
+  MLX5_IB_ATTR_STEERING_ANCHOR_FT_ID,
+};
+enum mlx5_ib_flow_steering_anchor_destroy_attrs {
+  MLX5_IB_ATTR_STEERING_ANCHOR_DESTROY_HANDLE = (1U << UVERBS_ID_NS_SHIFT),
+};
+enum mlx5_ib_steering_anchor_methods {
+  MLX5_IB_METHOD_STEERING_ANCHOR_CREATE = (1U << UVERBS_ID_NS_SHIFT),
+  MLX5_IB_METHOD_STEERING_ANCHOR_DESTROY,
+};
 enum mlx5_ib_device_query_context_attrs {
   MLX5_IB_ATTR_QUERY_CONTEXT_RESP_UCTX = (1U << UVERBS_ID_NS_SHIFT),
 };
diff --git a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/rdma/mlx5_user_ioctl_verbs.h b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/rdma/mlx5_user_ioctl_verbs.h
index c3c3f89..f68c0b3 100644
--- a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/rdma/mlx5_user_ioctl_verbs.h
+++ b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/rdma/mlx5_user_ioctl_verbs.h
@@ -43,6 +43,7 @@
   MLX5_IB_UAPI_DM_TYPE_MEMIC,
   MLX5_IB_UAPI_DM_TYPE_STEERING_SW_ICM,
   MLX5_IB_UAPI_DM_TYPE_HEADER_MODIFY_SW_ICM,
+  MLX5_IB_UAPI_DM_TYPE_HEADER_MODIFY_PATTERN_SW_ICM,
 };
 enum mlx5_ib_uapi_devx_create_event_channel_flags {
   MLX5_IB_UAPI_DEVX_CR_EV_CH_FLAGS_OMIT_DATA = 1 << 0,
diff --git a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/rdma/rdma_user_cm.h b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/rdma/rdma_user_cm.h
index 7b1f7ee..37927f8 100644
--- a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/rdma/rdma_user_cm.h
+++ b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/rdma/rdma_user_cm.h
@@ -145,7 +145,7 @@
 struct rdma_ucm_query_path_resp {
   __u32 num_paths;
   __u32 reserved;
-  struct ib_path_rec_data path_data[0];
+  struct ib_path_rec_data path_data[];
 };
 struct rdma_ucm_conn_param {
   __u32 qp_num;
diff --git a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/rdma/rdma_user_ioctl_cmds.h b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/rdma/rdma_user_ioctl_cmds.h
index 22adfaa..dbaf9ed 100644
--- a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/rdma/rdma_user_ioctl_cmds.h
+++ b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/rdma/rdma_user_ioctl_cmds.h
@@ -50,6 +50,6 @@
   __aligned_u64 reserved1;
   __u32 driver_id;
   __u32 reserved2;
-  struct ib_uverbs_attr attrs[0];
+  struct ib_uverbs_attr attrs[];
 };
 #endif
diff --git a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/rdma/rdma_user_rxe.h b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/rdma/rdma_user_rxe.h
index cdb00c7..2476699 100644
--- a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/rdma/rdma_user_rxe.h
+++ b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/rdma/rdma_user_rxe.h
@@ -52,7 +52,7 @@
 };
 struct rxe_send_wr {
   __aligned_u64 wr_id;
-  __u32 num_sge;
+  __u32 reserved;
   __u32 opcode;
   __u32 send_flags;
   union {
@@ -128,7 +128,7 @@
 };
 struct rxe_recv_wqe {
   __aligned_u64 wr_id;
-  __u32 num_sge;
+  __u32 reserved;
   __u32 padding;
   struct rxe_dma_info dma;
 };
diff --git a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/scsi/fc/fc_els.h b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/scsi/fc/fc_els.h
index 04ae5b8..d29287d 100644
--- a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/scsi/fc/fc_els.h
+++ b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/scsi/fc/fc_els.h
@@ -142,7 +142,7 @@
 struct fc_tlv_desc {
   __be32 desc_tag;
   __be32 desc_len;
-  __u8 desc_value[0];
+  __u8 desc_value[];
 };
 #define FC_TLV_DESC_HDR_SZ sizeof(struct fc_tlv_desc)
 #define FC_TLV_DESC_LENGTH_FROM_SZ(desc) (sizeof(desc) - FC_TLV_DESC_HDR_SZ)
@@ -618,7 +618,7 @@
   __be32 event_threshold;
   __be32 event_count;
   __be32 pname_count;
-  __be64 pname_list[0];
+  __be64 pname_list[];
 };
 struct fc_fn_deli_desc {
   __be32 desc_tag;
@@ -636,7 +636,7 @@
   __be16 event_modifier;
   __be32 event_period;
   __be32 pname_count;
-  __be64 pname_list[0];
+  __be64 pname_list[];
 };
 struct fc_fn_congn_desc {
   __be32 desc_tag;
@@ -651,25 +651,25 @@
   __u8 fpin_cmd;
   __u8 fpin_zero[3];
   __be32 desc_len;
-  struct fc_tlv_desc fpin_desc[0];
+  struct fc_tlv_desc fpin_desc[];
 };
 struct fc_df_desc_fpin_reg {
   __be32 desc_tag;
   __be32 desc_len;
   __be32 count;
-  __be32 desc_tags[0];
+  __be32 desc_tags[];
 };
 struct fc_els_rdf {
   __u8 fpin_cmd;
   __u8 fpin_zero[3];
   __be32 desc_len;
-  struct fc_tlv_desc desc[0];
+  struct fc_tlv_desc desc[];
 };
 struct fc_els_rdf_resp {
   struct fc_els_ls_acc acc_hdr;
   __be32 desc_list_len;
   struct fc_els_lsri_desc lsri;
-  struct fc_tlv_desc desc[0];
+  struct fc_tlv_desc desc[];
 };
 struct fc_diag_lnkflt_desc {
   __be32 desc_tag;
@@ -707,12 +707,12 @@
   __u8 edc_cmd;
   __u8 edc_zero[3];
   __be32 desc_len;
-  struct fc_tlv_desc desc[0];
+  struct fc_tlv_desc desc[];
 };
 struct fc_els_edc_resp {
   struct fc_els_ls_acc acc_hdr;
   __be32 desc_list_len;
   struct fc_els_lsri_desc lsri;
-  struct fc_tlv_desc desc[0];
+  struct fc_tlv_desc desc[];
 };
 #endif
diff --git a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/scsi/scsi_bsg_fc.h b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/scsi/scsi_bsg_fc.h
index 8966f61..2647249 100644
--- a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/scsi/scsi_bsg_fc.h
+++ b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/scsi/scsi_bsg_fc.h
@@ -66,7 +66,7 @@
 };
 struct fc_bsg_host_vendor {
   __u64 vendor_id;
-  __u32 vendor_cmd[0];
+  __u32 vendor_cmd[];
 };
 struct fc_bsg_host_vendor_reply {
   __u32 vendor_rsp[0];
diff --git a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/scsi/scsi_bsg_mpi3mr.h b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/scsi/scsi_bsg_mpi3mr.h
new file mode 100644
index 0000000..fcba8cd
--- /dev/null
+++ b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/scsi/scsi_bsg_mpi3mr.h
@@ -0,0 +1,333 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef SCSI_BSG_MPI3MR_H_INCLUDED
+#define SCSI_BSG_MPI3MR_H_INCLUDED
+#include <linux/types.h>
+#define MPI3MR_IOCTL_VERSION 0x06
+#define MPI3MR_APP_DEFAULT_TIMEOUT (60)
+#define MPI3MR_BSG_ADPTYPE_UNKNOWN 0
+#define MPI3MR_BSG_ADPTYPE_AVGFAMILY 1
+#define MPI3MR_BSG_ADPSTATE_UNKNOWN 0
+#define MPI3MR_BSG_ADPSTATE_OPERATIONAL 1
+#define MPI3MR_BSG_ADPSTATE_FAULT 2
+#define MPI3MR_BSG_ADPSTATE_IN_RESET 3
+#define MPI3MR_BSG_ADPSTATE_UNRECOVERABLE 4
+#define MPI3MR_BSG_ADPRESET_UNKNOWN 0
+#define MPI3MR_BSG_ADPRESET_SOFT 1
+#define MPI3MR_BSG_ADPRESET_DIAG_FAULT 2
+#define MPI3MR_BSG_LOGDATA_MAX_ENTRIES 400
+#define MPI3MR_BSG_LOGDATA_ENTRY_HEADER_SZ 4
+#define MPI3MR_DRVBSG_OPCODE_UNKNOWN 0
+#define MPI3MR_DRVBSG_OPCODE_ADPINFO 1
+#define MPI3MR_DRVBSG_OPCODE_ADPRESET 2
+#define MPI3MR_DRVBSG_OPCODE_ALLTGTDEVINFO 4
+#define MPI3MR_DRVBSG_OPCODE_GETCHGCNT 5
+#define MPI3MR_DRVBSG_OPCODE_LOGDATAENABLE 6
+#define MPI3MR_DRVBSG_OPCODE_PELENABLE 7
+#define MPI3MR_DRVBSG_OPCODE_GETLOGDATA 8
+#define MPI3MR_DRVBSG_OPCODE_QUERY_HDB 9
+#define MPI3MR_DRVBSG_OPCODE_REPOST_HDB 10
+#define MPI3MR_DRVBSG_OPCODE_UPLOAD_HDB 11
+#define MPI3MR_DRVBSG_OPCODE_REFRESH_HDB_TRIGGERS 12
+#define MPI3MR_BSG_BUFTYPE_UNKNOWN 0
+#define MPI3MR_BSG_BUFTYPE_RAIDMGMT_CMD 1
+#define MPI3MR_BSG_BUFTYPE_RAIDMGMT_RESP 2
+#define MPI3MR_BSG_BUFTYPE_DATA_IN 3
+#define MPI3MR_BSG_BUFTYPE_DATA_OUT 4
+#define MPI3MR_BSG_BUFTYPE_MPI_REPLY 5
+#define MPI3MR_BSG_BUFTYPE_ERR_RESPONSE 6
+#define MPI3MR_BSG_BUFTYPE_MPI_REQUEST 0xFE
+#define MPI3MR_BSG_MPI_REPLY_BUFTYPE_UNKNOWN 0
+#define MPI3MR_BSG_MPI_REPLY_BUFTYPE_STATUS 1
+#define MPI3MR_BSG_MPI_REPLY_BUFTYPE_ADDRESS 2
+#define MPI3MR_HDB_BUFTYPE_UNKNOWN 0
+#define MPI3MR_HDB_BUFTYPE_TRACE 1
+#define MPI3MR_HDB_BUFTYPE_FIRMWARE 2
+#define MPI3MR_HDB_BUFTYPE_RESERVED 3
+#define MPI3MR_HDB_BUFSTATUS_UNKNOWN 0
+#define MPI3MR_HDB_BUFSTATUS_NOT_ALLOCATED 1
+#define MPI3MR_HDB_BUFSTATUS_POSTED_UNPAUSED 2
+#define MPI3MR_HDB_BUFSTATUS_POSTED_PAUSED 3
+#define MPI3MR_HDB_BUFSTATUS_RELEASED 4
+#define MPI3MR_HDB_TRIGGER_TYPE_UNKNOWN 0
+#define MPI3MR_HDB_TRIGGER_TYPE_DIAGFAULT 1
+#define MPI3MR_HDB_TRIGGER_TYPE_ELEMENT 2
+#define MPI3MR_HDB_TRIGGER_TYPE_MASTER 3
+enum command {
+  MPI3MR_DRV_CMD = 1,
+  MPI3MR_MPT_CMD = 2,
+};
+struct mpi3_driver_info_layout {
+  __le32 information_length;
+  __u8 driver_signature[12];
+  __u8 os_name[16];
+  __u8 os_version[12];
+  __u8 driver_name[20];
+  __u8 driver_version[32];
+  __u8 driver_release_date[20];
+  __le32 driver_capabilities;
+};
+struct mpi3mr_bsg_in_adpinfo {
+  __u32 adp_type;
+  __u32 rsvd1;
+  __u32 pci_dev_id;
+  __u32 pci_dev_hw_rev;
+  __u32 pci_subsys_dev_id;
+  __u32 pci_subsys_ven_id;
+  __u32 pci_dev : 5;
+  __u32 pci_func : 3;
+  __u32 pci_bus : 8;
+  __u16 rsvd2;
+  __u32 pci_seg_id;
+  __u32 app_intfc_ver;
+  __u8 adp_state;
+  __u8 rsvd3;
+  __u16 rsvd4;
+  __u32 rsvd5[2];
+  struct mpi3_driver_info_layout driver_info;
+};
+struct mpi3mr_bsg_adp_reset {
+  __u8 reset_type;
+  __u8 rsvd1;
+  __u16 rsvd2;
+};
+struct mpi3mr_change_count {
+  __u16 change_count;
+  __u16 rsvd;
+};
+struct mpi3mr_device_map_info {
+  __u16 handle;
+  __u16 perst_id;
+  __u32 target_id;
+  __u8 bus_id;
+  __u8 rsvd1;
+  __u16 rsvd2;
+};
+struct mpi3mr_all_tgt_info {
+  __u16 num_devices;
+  __u16 rsvd1;
+  __u32 rsvd2;
+  struct mpi3mr_device_map_info dmi[1];
+};
+struct mpi3mr_logdata_enable {
+  __u16 max_entries;
+  __u16 rsvd;
+};
+struct mpi3mr_bsg_out_pel_enable {
+  __u16 pel_locale;
+  __u8 pel_class;
+  __u8 rsvd;
+};
+struct mpi3mr_logdata_entry {
+  __u8 valid_entry;
+  __u8 rsvd1;
+  __u16 rsvd2;
+  __u8 data[1];
+};
+struct mpi3mr_bsg_in_log_data {
+  struct mpi3mr_logdata_entry entry[1];
+};
+struct mpi3mr_hdb_entry {
+  __u8 buf_type;
+  __u8 status;
+  __u8 trigger_type;
+  __u8 rsvd1;
+  __u16 size;
+  __u16 rsvd2;
+  __u64 trigger_data;
+  __u32 rsvd3;
+  __u32 rsvd4;
+};
+struct mpi3mr_bsg_in_hdb_status {
+  __u8 num_hdb_types;
+  __u8 rsvd1;
+  __u16 rsvd2;
+  __u32 rsvd3;
+  struct mpi3mr_hdb_entry entry[1];
+};
+struct mpi3mr_bsg_out_repost_hdb {
+  __u8 buf_type;
+  __u8 rsvd1;
+  __u16 rsvd2;
+};
+struct mpi3mr_bsg_out_upload_hdb {
+  __u8 buf_type;
+  __u8 rsvd1;
+  __u16 rsvd2;
+  __u32 start_offset;
+  __u32 length;
+};
+struct mpi3mr_bsg_out_refresh_hdb_triggers {
+  __u8 page_type;
+  __u8 rsvd1;
+  __u16 rsvd2;
+};
+struct mpi3mr_bsg_drv_cmd {
+  __u8 mrioc_id;
+  __u8 opcode;
+  __u16 rsvd1;
+  __u32 rsvd2[4];
+};
+struct mpi3mr_bsg_in_reply_buf {
+  __u8 mpi_reply_type;
+  __u8 rsvd1;
+  __u16 rsvd2;
+  __u8 reply_buf[1];
+};
+struct mpi3mr_buf_entry {
+  __u8 buf_type;
+  __u8 rsvd1;
+  __u16 rsvd2;
+  __u32 buf_len;
+};
+struct mpi3mr_buf_entry_list {
+  __u8 num_of_entries;
+  __u8 rsvd1;
+  __u16 rsvd2;
+  __u32 rsvd3;
+  struct mpi3mr_buf_entry buf_entry[1];
+};
+struct mpi3mr_bsg_mptcmd {
+  __u8 mrioc_id;
+  __u8 rsvd1;
+  __u16 timeout;
+  __u32 rsvd2;
+  struct mpi3mr_buf_entry_list buf_entry_list;
+};
+struct mpi3mr_bsg_packet {
+  __u8 cmd_type;
+  __u8 rsvd1;
+  __u16 rsvd2;
+  __u32 rsvd3;
+  union {
+    struct mpi3mr_bsg_drv_cmd drvrcmd;
+    struct mpi3mr_bsg_mptcmd mptcmd;
+  } cmd;
+};
+#ifndef MPI3_NVME_ENCAP_CMD_MAX
+#define MPI3_NVME_ENCAP_CMD_MAX (1)
+#endif
+struct mpi3_nvme_encapsulated_request {
+  __le16 host_tag;
+  __u8 ioc_use_only02;
+  __u8 function;
+  __le16 ioc_use_only04;
+  __u8 ioc_use_only06;
+  __u8 msg_flags;
+  __le16 change_count;
+  __le16 dev_handle;
+  __le16 encapsulated_command_length;
+  __le16 flags;
+  __le32 data_length;
+  __le32 reserved14[3];
+  __le32 command[MPI3_NVME_ENCAP_CMD_MAX];
+};
+struct mpi3_nvme_encapsulated_error_reply {
+  __le16 host_tag;
+  __u8 ioc_use_only02;
+  __u8 function;
+  __le16 ioc_use_only04;
+  __u8 ioc_use_only06;
+  __u8 msg_flags;
+  __le16 ioc_use_only08;
+  __le16 ioc_status;
+  __le32 ioc_log_info;
+  __le32 nvme_completion_entry[4];
+};
+#define MPI3MR_NVME_PRP_SIZE 8
+#define MPI3MR_NVME_CMD_PRP1_OFFSET 24
+#define MPI3MR_NVME_CMD_PRP2_OFFSET 32
+#define MPI3MR_NVME_CMD_SGL_OFFSET 24
+#define MPI3MR_NVME_DATA_FORMAT_PRP 0
+#define MPI3MR_NVME_DATA_FORMAT_SGL1 1
+#define MPI3MR_NVME_DATA_FORMAT_SGL2 2
+struct mpi3_scsi_task_mgmt_request {
+  __le16 host_tag;
+  __u8 ioc_use_only02;
+  __u8 function;
+  __le16 ioc_use_only04;
+  __u8 ioc_use_only06;
+  __u8 msg_flags;
+  __le16 change_count;
+  __le16 dev_handle;
+  __le16 task_host_tag;
+  __u8 task_type;
+  __u8 reserved0f;
+  __le16 task_request_queue_id;
+  __le16 reserved12;
+  __le32 reserved14;
+  __u8 lun[8];
+};
+#define MPI3_SCSITASKMGMT_MSGFLAGS_DO_NOT_SEND_TASK_IU (0x08)
+#define MPI3_SCSITASKMGMT_TASKTYPE_ABORT_TASK (0x01)
+#define MPI3_SCSITASKMGMT_TASKTYPE_ABORT_TASK_SET (0x02)
+#define MPI3_SCSITASKMGMT_TASKTYPE_TARGET_RESET (0x03)
+#define MPI3_SCSITASKMGMT_TASKTYPE_LOGICAL_UNIT_RESET (0x05)
+#define MPI3_SCSITASKMGMT_TASKTYPE_CLEAR_TASK_SET (0x06)
+#define MPI3_SCSITASKMGMT_TASKTYPE_QUERY_TASK (0x07)
+#define MPI3_SCSITASKMGMT_TASKTYPE_CLEAR_ACA (0x08)
+#define MPI3_SCSITASKMGMT_TASKTYPE_QUERY_TASK_SET (0x09)
+#define MPI3_SCSITASKMGMT_TASKTYPE_QUERY_ASYNC_EVENT (0x0a)
+#define MPI3_SCSITASKMGMT_TASKTYPE_I_T_NEXUS_RESET (0x0b)
+struct mpi3_scsi_task_mgmt_reply {
+  __le16 host_tag;
+  __u8 ioc_use_only02;
+  __u8 function;
+  __le16 ioc_use_only04;
+  __u8 ioc_use_only06;
+  __u8 msg_flags;
+  __le16 ioc_use_only08;
+  __le16 ioc_status;
+  __le32 ioc_log_info;
+  __le32 termination_count;
+  __le32 response_data;
+  __le32 reserved18;
+};
+#define MPI3_SCSITASKMGMT_RSPCODE_TM_COMPLETE (0x00)
+#define MPI3_SCSITASKMGMT_RSPCODE_INVALID_FRAME (0x02)
+#define MPI3_SCSITASKMGMT_RSPCODE_TM_FUNCTION_NOT_SUPPORTED (0x04)
+#define MPI3_SCSITASKMGMT_RSPCODE_TM_FAILED (0x05)
+#define MPI3_SCSITASKMGMT_RSPCODE_TM_SUCCEEDED (0x08)
+#define MPI3_SCSITASKMGMT_RSPCODE_TM_INVALID_LUN (0x09)
+#define MPI3_SCSITASKMGMT_RSPCODE_TM_OVERLAPPED_TAG (0x0a)
+#define MPI3_SCSITASKMGMT_RSPCODE_IO_QUEUED_ON_IOC (0x80)
+#define MPI3_SCSITASKMGMT_RSPCODE_TM_NVME_DENIED (0x81)
+#define MPI3_PEL_LOCALE_FLAGS_NON_BLOCKING_BOOT_EVENT (0x0200)
+#define MPI3_PEL_LOCALE_FLAGS_BLOCKING_BOOT_EVENT (0x0100)
+#define MPI3_PEL_LOCALE_FLAGS_PCIE (0x0080)
+#define MPI3_PEL_LOCALE_FLAGS_CONFIGURATION (0x0040)
+#define MPI3_PEL_LOCALE_FLAGS_CONTROLER (0x0020)
+#define MPI3_PEL_LOCALE_FLAGS_SAS (0x0010)
+#define MPI3_PEL_LOCALE_FLAGS_EPACK (0x0008)
+#define MPI3_PEL_LOCALE_FLAGS_ENCLOSURE (0x0004)
+#define MPI3_PEL_LOCALE_FLAGS_PD (0x0002)
+#define MPI3_PEL_LOCALE_FLAGS_VD (0x0001)
+#define MPI3_PEL_CLASS_DEBUG (0x00)
+#define MPI3_PEL_CLASS_PROGRESS (0x01)
+#define MPI3_PEL_CLASS_INFORMATIONAL (0x02)
+#define MPI3_PEL_CLASS_WARNING (0x03)
+#define MPI3_PEL_CLASS_CRITICAL (0x04)
+#define MPI3_PEL_CLASS_FATAL (0x05)
+#define MPI3_PEL_CLASS_FAULT (0x06)
+#define MPI3_BSG_FUNCTION_MGMT_PASSTHROUGH (0x0a)
+#define MPI3_BSG_FUNCTION_SCSI_IO (0x20)
+#define MPI3_BSG_FUNCTION_SCSI_TASK_MGMT (0x21)
+#define MPI3_BSG_FUNCTION_SMP_PASSTHROUGH (0x22)
+#define MPI3_BSG_FUNCTION_NVME_ENCAPSULATED (0x24)
+#endif
diff --git a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/scsi/scsi_netlink_fc.h b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/scsi/scsi_netlink_fc.h
index ff92877..6eeb866 100644
--- a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/scsi/scsi_netlink_fc.h
+++ b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/scsi/scsi_netlink_fc.h
@@ -30,6 +30,9 @@
   __u16 event_datalen;
   __u32 event_num;
   __u32 event_code;
-  __u32 event_data;
+  union {
+    __u32 event_data;
+    __DECLARE_FLEX_ARRAY(__u8, event_data_flex);
+  };
 } __attribute__((aligned(sizeof(__u64))));
 #endif
diff --git a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/sound/asoc.h b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/sound/asoc.h
index eeb12b0..1940e5d 100644
--- a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/sound/asoc.h
+++ b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/sound/asoc.h
@@ -356,7 +356,7 @@
   __le32 pcm_elems;
   __le32 dai_link_elems;
   struct snd_soc_tplg_private priv;
-} __packed;
+} __attribute__((__packed__));
 struct snd_soc_tplg_stream_caps_v4 {
   __le32 size;
   char name[SNDRV_CTL_ELEM_ID_NAME_MAXLEN];
@@ -372,7 +372,7 @@
   __le32 period_size_max;
   __le32 buffer_size_min;
   __le32 buffer_size_max;
-} __packed;
+} __attribute__((__packed__));
 struct snd_soc_tplg_pcm_v4 {
   __le32 size;
   char pcm_name[SNDRV_CTL_ELEM_ID_NAME_MAXLEN];
@@ -385,11 +385,11 @@
   struct snd_soc_tplg_stream stream[SND_SOC_TPLG_STREAM_CONFIG_MAX];
   __le32 num_streams;
   struct snd_soc_tplg_stream_caps_v4 caps[2];
-} __packed;
+} __attribute__((__packed__));
 struct snd_soc_tplg_link_config_v4 {
   __le32 size;
   __le32 id;
   struct snd_soc_tplg_stream stream[SND_SOC_TPLG_STREAM_CONFIG_MAX];
   __le32 num_streams;
-} __packed;
+} __attribute__((__packed__));
 #endif
diff --git a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/sound/asound.h b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/sound/asound.h
index b0e47c1..6e325e9 100644
--- a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/sound/asound.h
+++ b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/sound/asound.h
@@ -605,7 +605,7 @@
   __u32 tv_nsec;
   __u64 tv_sec;
   __u8 data[SNDRV_RAWMIDI_FRAMING_DATA_LENGTH];
-} __packed;
+} __attribute__((__packed__));
 struct snd_rawmidi_params {
   int stream;
   size_t buffer_size;
@@ -884,7 +884,7 @@
 struct snd_ctl_tlv {
   unsigned int numid;
   unsigned int length;
-  unsigned int tlv[0];
+  unsigned int tlv[];
 };
 #define SNDRV_CTL_IOCTL_PVERSION _IOR('U', 0x00, int)
 #define SNDRV_CTL_IOCTL_CARD_INFO _IOR('U', 0x01, struct snd_ctl_card_info)
diff --git a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/sound/firewire.h b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/sound/firewire.h
index 198a8f4..d26d722 100644
--- a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/sound/firewire.h
+++ b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/sound/firewire.h
@@ -46,11 +46,11 @@
   __be32 category;
   __be32 command;
   __be32 status;
-  __be32 params[0];
+  __be32 params[];
 };
 struct snd_firewire_event_efw_response {
   unsigned int type;
-  __be32 response[0];
+  __be32 response[];
 };
 struct snd_firewire_event_digi00x_message {
   unsigned int type;
@@ -67,7 +67,7 @@
 };
 struct snd_firewire_event_tascam_control {
   unsigned int type;
-  struct snd_firewire_tascam_change changes[0];
+  struct snd_firewire_tascam_change changes[];
 };
 struct snd_firewire_event_motu_register_dsp_change {
   unsigned int type;
diff --git a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/sound/intel/avs/tokens.h b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/sound/intel/avs/tokens.h
new file mode 100644
index 0000000..b6b3002
--- /dev/null
+++ b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/sound/intel/avs/tokens.h
@@ -0,0 +1,111 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef __UAPI_SOUND_INTEL_AVS_TOKENS_H
+#define __UAPI_SOUND_INTEL_AVS_TOKENS_H
+enum avs_tplg_token {
+  AVS_TKN_MANIFEST_NAME_STRING = 1,
+  AVS_TKN_MANIFEST_VERSION_U32 = 2,
+  AVS_TKN_MANIFEST_NUM_LIBRARIES_U32 = 3,
+  AVS_TKN_MANIFEST_NUM_AFMTS_U32 = 4,
+  AVS_TKN_MANIFEST_NUM_MODCFGS_BASE_U32 = 5,
+  AVS_TKN_MANIFEST_NUM_MODCFGS_EXT_U32 = 6,
+  AVS_TKN_MANIFEST_NUM_PPLCFGS_U32 = 7,
+  AVS_TKN_MANIFEST_NUM_BINDINGS_U32 = 8,
+  AVS_TKN_LIBRARY_ID_U32 = 101,
+  AVS_TKN_LIBRARY_NAME_STRING = 102,
+  AVS_TKN_AFMT_ID_U32 = 201,
+  AVS_TKN_AFMT_SAMPLE_RATE_U32 = 202,
+  AVS_TKN_AFMT_BIT_DEPTH_U32 = 203,
+  AVS_TKN_AFMT_CHANNEL_MAP_U32 = 204,
+  AVS_TKN_AFMT_CHANNEL_CFG_U32 = 205,
+  AVS_TKN_AFMT_INTERLEAVING_U32 = 206,
+  AVS_TKN_AFMT_NUM_CHANNELS_U32 = 207,
+  AVS_TKN_AFMT_VALID_BIT_DEPTH_U32 = 208,
+  AVS_TKN_AFMT_SAMPLE_TYPE_U32 = 209,
+  AVS_TKN_MODCFG_BASE_ID_U32 = 301,
+  AVS_TKN_MODCFG_BASE_CPC_U32 = 302,
+  AVS_TKN_MODCFG_BASE_IBS_U32 = 303,
+  AVS_TKN_MODCFG_BASE_OBS_U32 = 304,
+  AVS_TKN_MODCFG_BASE_PAGES_U32 = 305,
+  AVS_TKN_MODCFG_EXT_ID_U32 = 401,
+  AVS_TKN_MODCFG_EXT_TYPE_UUID = 402,
+  AVS_TKN_MODCFG_CPR_OUT_AFMT_ID_U32 = 403,
+  AVS_TKN_MODCFG_CPR_FEATURE_MASK_U32 = 404,
+  AVS_TKN_MODCFG_CPR_DMA_TYPE_U32 = 405,
+  AVS_TKN_MODCFG_CPR_DMABUFF_SIZE_U32 = 406,
+  AVS_TKN_MODCFG_CPR_VINDEX_U8 = 407,
+  AVS_TKN_MODCFG_CPR_BLOB_FMT_ID_U32 = 408,
+  AVS_TKN_MODCFG_MICSEL_OUT_AFMT_ID_U32 = 409,
+  AVS_TKN_MODCFG_INTELWOV_CPC_LP_MODE_U32 = 410,
+  AVS_TKN_MODCFG_SRC_OUT_FREQ_U32 = 411,
+  AVS_TKN_MODCFG_MUX_REF_AFMT_ID_U32 = 412,
+  AVS_TKN_MODCFG_MUX_OUT_AFMT_ID_U32 = 413,
+  AVS_TKN_MODCFG_AEC_REF_AFMT_ID_U32 = 414,
+  AVS_TKN_MODCFG_AEC_OUT_AFMT_ID_U32 = 415,
+  AVS_TKN_MODCFG_AEC_CPC_LP_MODE_U32 = 416,
+  AVS_TKN_MODCFG_ASRC_OUT_FREQ_U32 = 417,
+  AVS_TKN_MODCFG_ASRC_MODE_U8 = 418,
+  AVS_TKN_MODCFG_ASRC_DISABLE_JITTER_U8 = 419,
+  AVS_TKN_MODCFG_UPDOWN_MIX_OUT_CHAN_CFG_U32 = 420,
+  AVS_TKN_MODCFG_UPDOWN_MIX_COEFF_SELECT_U32 = 421,
+  AVS_TKN_MODCFG_UPDOWN_MIX_COEFF_0_S32 = 422,
+  AVS_TKN_MODCFG_UPDOWN_MIX_COEFF_1_S32 = 423,
+  AVS_TKN_MODCFG_UPDOWN_MIX_COEFF_2_S32 = 424,
+  AVS_TKN_MODCFG_UPDOWN_MIX_COEFF_3_S32 = 425,
+  AVS_TKN_MODCFG_UPDOWN_MIX_COEFF_4_S32 = 426,
+  AVS_TKN_MODCFG_UPDOWN_MIX_COEFF_5_S32 = 427,
+  AVS_TKN_MODCFG_UPDOWN_MIX_COEFF_6_S32 = 428,
+  AVS_TKN_MODCFG_UPDOWN_MIX_COEFF_7_S32 = 429,
+  AVS_TKN_MODCFG_UPDOWN_MIX_CHAN_MAP_U32 = 430,
+  AVS_TKN_MODCFG_EXT_NUM_INPUT_PINS_U16 = 431,
+  AVS_TKN_MODCFG_EXT_NUM_OUTPUT_PINS_U16 = 432,
+  AVS_TKN_PPLCFG_ID_U32 = 1401,
+  AVS_TKN_PPLCFG_REQ_SIZE_U16 = 1402,
+  AVS_TKN_PPLCFG_PRIORITY_U8 = 1403,
+  AVS_TKN_PPLCFG_LOW_POWER_BOOL = 1404,
+  AVS_TKN_PPLCFG_ATTRIBUTES_U16 = 1405,
+  AVS_TKN_PPLCFG_TRIGGER_U32 = 1406,
+  AVS_TKN_BINDING_ID_U32 = 1501,
+  AVS_TKN_BINDING_TARGET_TPLG_NAME_STRING = 1502,
+  AVS_TKN_BINDING_TARGET_PATH_TMPL_ID_U32 = 1503,
+  AVS_TKN_BINDING_TARGET_PPL_ID_U32 = 1504,
+  AVS_TKN_BINDING_TARGET_MOD_ID_U32 = 1505,
+  AVS_TKN_BINDING_TARGET_MOD_PIN_U8 = 1506,
+  AVS_TKN_BINDING_MOD_ID_U32 = 1507,
+  AVS_TKN_BINDING_MOD_PIN_U8 = 1508,
+  AVS_TKN_BINDING_IS_SINK_U8 = 1509,
+  AVS_TKN_PPL_ID_U32 = 1601,
+  AVS_TKN_PPL_PPLCFG_ID_U32 = 1602,
+  AVS_TKN_PPL_NUM_BINDING_IDS_U32 = 1603,
+  AVS_TKN_PPL_BINDING_ID_U32 = 1604,
+  AVS_TKN_MOD_ID_U32 = 1701,
+  AVS_TKN_MOD_MODCFG_BASE_ID_U32 = 1702,
+  AVS_TKN_MOD_IN_AFMT_ID_U32 = 1703,
+  AVS_TKN_MOD_CORE_ID_U8 = 1704,
+  AVS_TKN_MOD_PROC_DOMAIN_U8 = 1705,
+  AVS_TKN_MOD_MODCFG_EXT_ID_U32 = 1706,
+  AVS_TKN_PATH_TMPL_ID_U32 = 1801,
+  AVS_TKN_PATH_ID_U32 = 1901,
+  AVS_TKN_PATH_FE_FMT_ID_U32 = 1902,
+  AVS_TKN_PATH_BE_FMT_ID_U32 = 1903,
+  AVS_TKN_PIN_FMT_INDEX_U32 = 2201,
+  AVS_TKN_PIN_FMT_IOBS_U32 = 2202,
+  AVS_TKN_PIN_FMT_AFMT_ID_U32 = 2203,
+};
+#endif
diff --git a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/sound/skl-tplg-interface.h b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/sound/skl-tplg-interface.h
index b516a08..6dd9655 100644
--- a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/sound/skl-tplg-interface.h
+++ b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/sound/skl-tplg-interface.h
@@ -110,8 +110,8 @@
   __u32 rsvd : 30;
   __u32 param_id;
   __u32 max;
-  char params[0];
-} __packed;
+  char params[];
+} __attribute__((__packed__));
 enum skl_tkn_dir {
   SKL_DIR_IN,
   SKL_DIR_OUT
@@ -123,7 +123,7 @@
 struct skl_dfw_v4_module_pin {
   __u16 module_id;
   __u16 instance_id;
-} __packed;
+} __attribute__((__packed__));
 struct skl_dfw_v4_module_fmt {
   __u32 channels;
   __u32 freq;
@@ -133,21 +133,21 @@
   __u32 interleaving_style;
   __u32 sample_type;
   __u32 ch_map;
-} __packed;
+} __attribute__((__packed__));
 struct skl_dfw_v4_module_caps {
   __u32 set_params : 2;
   __u32 rsvd : 30;
   __u32 param_id;
   __u32 caps_size;
   __u32 caps[HDA_SST_CFG_MAX];
-} __packed;
+} __attribute__((__packed__));
 struct skl_dfw_v4_pipe {
   __u8 pipe_id;
   __u8 pipe_priority;
   __u16 conn_type : 4;
   __u16 rsvd : 4;
   __u16 memory_pages : 8;
-} __packed;
+} __attribute__((__packed__));
 struct skl_dfw_v4_module {
   char uuid[SKL_UUID_STR_SZ];
   __u16 module_id;
@@ -181,5 +181,5 @@
   struct skl_dfw_v4_module_pin in_pin[MAX_IN_QUEUE];
   struct skl_dfw_v4_module_pin out_pin[MAX_OUT_QUEUE];
   struct skl_dfw_v4_module_caps caps;
-} __packed;
+} __attribute__((__packed__));
 #endif
diff --git a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/sound/sof/abi.h b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/sound/sof/abi.h
index 3af3c9d..dc4e525 100644
--- a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/sound/sof/abi.h
+++ b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/sound/sof/abi.h
@@ -18,8 +18,9 @@
  ****************************************************************************/
 #ifndef __INCLUDE_UAPI_SOUND_SOF_ABI_H__
 #define __INCLUDE_UAPI_SOUND_SOF_ABI_H__
+#include <linux/types.h>
 #define SOF_ABI_MAJOR 3
-#define SOF_ABI_MINOR 18
+#define SOF_ABI_MINOR 23
 #define SOF_ABI_PATCH 0
 #define SOF_ABI_MAJOR_SHIFT 24
 #define SOF_ABI_MAJOR_MASK 0xff
diff --git a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/sound/sof/fw.h b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/sound/sof/fw.h
index c36c2b9..97b7de3 100644
--- a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/sound/sof/fw.h
+++ b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/sound/sof/fw.h
@@ -46,7 +46,7 @@
   enum snd_sof_fw_blk_type type;
   __u32 size;
   __u32 offset;
-} __packed;
+} __attribute__((__packed__));
 enum snd_sof_fw_mod_type {
   SOF_FW_BASE = 0,
   SOF_FW_MODULE = 1,
@@ -55,11 +55,11 @@
   enum snd_sof_fw_mod_type type;
   __u32 size;
   __u32 num_blocks;
-} __packed;
+} __attribute__((__packed__));
 struct snd_sof_fw_header {
   unsigned char sig[SND_SOF_FW_SIG_SIZE];
   __u32 file_size;
   __u32 num_modules;
   __u32 abi;
-} __packed;
+} __attribute__((__packed__));
 #endif
diff --git a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/sound/sof/header.h b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/sound/sof/header.h
index 3fbd4a4..7514550 100644
--- a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/sound/sof/header.h
+++ b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/sound/sof/header.h
@@ -25,6 +25,19 @@
   __u32 size;
   __u32 abi;
   __u32 reserved[4];
-  __u32 data[0];
-} __packed;
+  __u32 data[];
+} __attribute__((__packed__));
+#define SOF_MANIFEST_DATA_TYPE_NHLT 1
+struct sof_manifest_tlv {
+  __le32 type;
+  __le32 size;
+  __u8 data[];
+};
+struct sof_manifest {
+  __le16 abi_major;
+  __le16 abi_minor;
+  __le16 abi_patch;
+  __le16 count;
+  struct sof_manifest_tlv items[];
+};
 #endif
diff --git a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/sound/sof/tokens.h b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/sound/sof/tokens.h
index 856281a..b07ed42 100644
--- a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/sound/sof/tokens.h
+++ b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/sound/sof/tokens.h
@@ -37,8 +37,13 @@
 #define SOF_TKN_SCHED_FRAMES 204
 #define SOF_TKN_SCHED_TIME_DOMAIN 205
 #define SOF_TKN_SCHED_DYNAMIC_PIPELINE 206
+#define SOF_TKN_SCHED_LP_MODE 207
+#define SOF_TKN_SCHED_MEM_USAGE 208
 #define SOF_TKN_VOLUME_RAMP_STEP_TYPE 250
 #define SOF_TKN_VOLUME_RAMP_STEP_MS 251
+#define SOF_TKN_GAIN_RAMP_TYPE 260
+#define SOF_TKN_GAIN_RAMP_DURATION 261
+#define SOF_TKN_GAIN_VAL 262
 #define SOF_TKN_SRC_RATE_IN 300
 #define SOF_TKN_SRC_RATE_OUT 301
 #define SOF_TKN_ASRC_RATE_IN 320
@@ -51,6 +56,9 @@
 #define SOF_TKN_COMP_FORMAT 402
 #define SOF_TKN_COMP_CORE_ID 404
 #define SOF_TKN_COMP_UUID 405
+#define SOF_TKN_COMP_CPC 406
+#define SOF_TKN_COMP_IS_PAGES 409
+#define SOF_TKN_COMP_NUM_AUDIO_FORMATS 410
 #define SOF_TKN_INTEL_SSP_CLKS_CONTROL 500
 #define SOF_TKN_INTEL_SSP_MCLK_ID 501
 #define SOF_TKN_INTEL_SSP_SAMPLE_BITS 502
@@ -90,4 +98,29 @@
 #define SOF_TKN_MEDIATEK_AFE_RATE 1600
 #define SOF_TKN_MEDIATEK_AFE_CH 1601
 #define SOF_TKN_MEDIATEK_AFE_FORMAT 1602
+#define SOF_TKN_MIXER_TYPE 1700
+#define SOF_TKN_AMD_ACPDMIC_RATE 1800
+#define SOF_TKN_AMD_ACPDMIC_CH 1801
+#define SOF_TKN_CAVS_AUDIO_FORMAT_IN_RATE 1900
+#define SOF_TKN_CAVS_AUDIO_FORMAT_IN_BIT_DEPTH 1901
+#define SOF_TKN_CAVS_AUDIO_FORMAT_IN_VALID_BIT 1902
+#define SOF_TKN_CAVS_AUDIO_FORMAT_IN_CHANNELS 1903
+#define SOF_TKN_CAVS_AUDIO_FORMAT_IN_CH_MAP 1904
+#define SOF_TKN_CAVS_AUDIO_FORMAT_IN_CH_CFG 1905
+#define SOF_TKN_CAVS_AUDIO_FORMAT_IN_INTERLEAVING_STYLE 1906
+#define SOF_TKN_CAVS_AUDIO_FORMAT_IN_FMT_CFG 1907
+#define SOF_TKN_CAVS_AUDIO_FORMAT_IN_SAMPLE_TYPE 1908
+#define SOF_TKN_CAVS_AUDIO_FORMAT_OUT_RATE 1930
+#define SOF_TKN_CAVS_AUDIO_FORMAT_OUT_BIT_DEPTH 1931
+#define SOF_TKN_CAVS_AUDIO_FORMAT_OUT_VALID_BIT 1932
+#define SOF_TKN_CAVS_AUDIO_FORMAT_OUT_CHANNELS 1933
+#define SOF_TKN_CAVS_AUDIO_FORMAT_OUT_CH_MAP 1934
+#define SOF_TKN_CAVS_AUDIO_FORMAT_OUT_CH_CFG 1935
+#define SOF_TKN_CAVS_AUDIO_FORMAT_OUT_INTERLEAVING_STYLE 1936
+#define SOF_TKN_CAVS_AUDIO_FORMAT_OUT_FMT_CFG 1937
+#define SOF_TKN_CAVS_AUDIO_FORMAT_OUT_SAMPLE_TYPE 1938
+#define SOF_TKN_CAVS_AUDIO_FORMAT_IBS 1970
+#define SOF_TKN_CAVS_AUDIO_FORMAT_OBS 1971
+#define SOF_TKN_CAVS_AUDIO_FORMAT_DMA_BUFFER_SIZE 1972
+#define SOF_TKN_INTEL_COPIER_NODE_TYPE 1980
 #endif
diff --git a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/sound/usb_stream.h b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/sound/usb_stream.h
index bb7fe80..ac87c31 100644
--- a/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/sound/usb_stream.h
+++ b/mainline/runtime/sdk/android/x86_64/include/bionic/libc/kernel/uapi/sound/usb_stream.h
@@ -49,7 +49,7 @@
   unsigned inpacket_split_at;
   unsigned next_inpacket_split;
   unsigned next_inpacket_split_at;
-  struct usb_stream_packet inpacket[0];
+  struct usb_stream_packet inpacket[];
 };
 enum usb_stream_state {
   usb_stream_invalid,
diff --git a/mainline/runtime/sdk/android/x86_64/lib/crtbegin_dynamic.o b/mainline/runtime/sdk/android/x86_64/lib/crtbegin_dynamic.o
index e6f8a98..13520f2 100644
--- a/mainline/runtime/sdk/android/x86_64/lib/crtbegin_dynamic.o
+++ b/mainline/runtime/sdk/android/x86_64/lib/crtbegin_dynamic.o
Binary files differ
diff --git a/mainline/runtime/sdk/android/x86_64/lib/crtbegin_so.o b/mainline/runtime/sdk/android/x86_64/lib/crtbegin_so.o
index bab7597..9850252 100644
--- a/mainline/runtime/sdk/android/x86_64/lib/crtbegin_so.o
+++ b/mainline/runtime/sdk/android/x86_64/lib/crtbegin_so.o
Binary files differ
diff --git a/mainline/runtime/sdk/android/x86_64/lib/crtend.o b/mainline/runtime/sdk/android/x86_64/lib/crtend.o
deleted file mode 100644
index c9e8a09..0000000
--- a/mainline/runtime/sdk/android/x86_64/lib/crtend.o
+++ /dev/null
Binary files differ
diff --git a/mainline/runtime/sdk/android/x86_64/lib/crtend_android.o b/mainline/runtime/sdk/android/x86_64/lib/crtend_android.o
new file mode 100644
index 0000000..3233f21
--- /dev/null
+++ b/mainline/runtime/sdk/android/x86_64/lib/crtend_android.o
Binary files differ
diff --git a/mainline/runtime/sdk/android/x86_64/lib/crtend_so.o b/mainline/runtime/sdk/android/x86_64/lib/crtend_so.o
index 2f126fa..22b2827 100644
--- a/mainline/runtime/sdk/android/x86_64/lib/crtend_so.o
+++ b/mainline/runtime/sdk/android/x86_64/lib/crtend_so.o
Binary files differ
diff --git a/mainline/runtime/sdk/android/x86_64/lib/libasync_safe.a b/mainline/runtime/sdk/android/x86_64/lib/libasync_safe.a
index 830b3fd..055e798 100644
--- a/mainline/runtime/sdk/android/x86_64/lib/libasync_safe.a
+++ b/mainline/runtime/sdk/android/x86_64/lib/libasync_safe.a
Binary files differ
diff --git a/mainline/runtime/sdk/android/x86_64/lib/libc.so b/mainline/runtime/sdk/android/x86_64/lib/libc.so
index 781fad6..572fecc 100755
--- a/mainline/runtime/sdk/android/x86_64/lib/libc.so
+++ b/mainline/runtime/sdk/android/x86_64/lib/libc.so
Binary files differ
diff --git a/mainline/runtime/sdk/android/x86_64/lib/libdl.so b/mainline/runtime/sdk/android/x86_64/lib/libdl.so
index 01ee561..e1e9945 100755
--- a/mainline/runtime/sdk/android/x86_64/lib/libdl.so
+++ b/mainline/runtime/sdk/android/x86_64/lib/libdl.so
Binary files differ
diff --git a/mainline/runtime/sdk/android/x86_64/lib/libdl_android.so b/mainline/runtime/sdk/android/x86_64/lib/libdl_android.so
index 869349c..b9f82b2 100755
--- a/mainline/runtime/sdk/android/x86_64/lib/libdl_android.so
+++ b/mainline/runtime/sdk/android/x86_64/lib/libdl_android.so
Binary files differ
diff --git a/mainline/runtime/sdk/android/x86_64/lib/libm.so b/mainline/runtime/sdk/android/x86_64/lib/libm.so
index bdcecd4..6bf445e 100755
--- a/mainline/runtime/sdk/android/x86_64/lib/libm.so
+++ b/mainline/runtime/sdk/android/x86_64/lib/libm.so
Binary files differ
diff --git a/mainline/runtime/sdk/common_os/include/bionic/libc/platform/bionic/macros.h b/mainline/runtime/sdk/common_os/include/bionic/libc/platform/bionic/macros.h
index 076cff1..9e13e0d 100644
--- a/mainline/runtime/sdk/common_os/include/bionic/libc/platform/bionic/macros.h
+++ b/mainline/runtime/sdk/common_os/include/bionic/libc/platform/bionic/macros.h
@@ -55,6 +55,8 @@
 #define BIONIC_STOP_UNWIND asm volatile(".cfi_undefined x30")
 #elif defined(__i386__)
 #define BIONIC_STOP_UNWIND asm volatile(".cfi_undefined \%eip")
+#elif defined(__riscv)
+#define BIONIC_STOP_UNWIND asm volatile(".cfi_undefined ra")
 #elif defined(__x86_64__)
 #define BIONIC_STOP_UNWIND asm volatile(".cfi_undefined \%rip")
 #endif
diff --git a/mainline/runtime/sdk/common_os/include/bionic/libc/platform/bionic/malloc.h b/mainline/runtime/sdk/common_os/include/bionic/libc/platform/bionic/malloc.h
index b56ca74..ecc8743 100644
--- a/mainline/runtime/sdk/common_os/include/bionic/libc/platform/bionic/malloc.h
+++ b/mainline/runtime/sdk/common_os/include/bionic/libc/platform/bionic/malloc.h
@@ -96,14 +96,47 @@
   // otherwise this mallopt() will internally decide whether to sample the
   // process. The program must be single threaded at the point when the
   // android_mallopt function is called.
-  //   arg = bool*
-  //   arg_size = sizeof(bool)
+  //   arg = android_mallopt_gwp_asan_options_t*
+  //   arg_size = sizeof(android_mallopt_gwp_asan_options_t)
   M_INITIALIZE_GWP_ASAN = 10,
 #define M_INITIALIZE_GWP_ASAN M_INITIALIZE_GWP_ASAN
+  // Query whether memtag stack is enabled for this process.
+  M_MEMTAG_STACK_IS_ON = 11,
+#define M_MEMTAG_STACK_IS_ON M_MEMTAG_STACK_IS_ON
 };
 
+typedef struct {
+  // The null-terminated name that the zygote is spawning. Because native
+  // SpecializeCommon (where the GWP-ASan mallopt() is called from) happens
+  // before argv[0] is set, we need the zygote to tell us the new app name.
+  const char* program_name = nullptr;
+
+  // An android_mallopt(M_INITIALIZE_GWP_ASAN) is always issued on process
+  // startup and app startup, regardless of whether GWP-ASan is desired or not.
+  // This allows the process/app's desire to be overwritten by the
+  // "libc.debug.gwp_asan.*.app_default" or "libc.debug.gwp_asan.*.<name>"
+  // system properties, as well as the "GWP_ASAN_*" environment variables.
+  //
+  // Worth noting, the "libc.debug.gwp_asan.*.app_default" sysprops *do not*
+  // apply to system apps. They use the "libc.debug.gwp_asan.*.system_default"
+  // sysprops.
+  enum Action {
+    // The app has opted-in to GWP-ASan, and should always have it enabled. This
+    // should only be used by apps.
+    TURN_ON_FOR_APP,
+    // System processes apps have GWP-ASan enabled by default, but use the
+    // process sampling method.
+    TURN_ON_WITH_SAMPLING,
+    // Non-system apps don't have GWP-ASan by default.
+    DONT_TURN_ON_UNLESS_OVERRIDDEN,
+    // Note: GWP-ASan cannot be disabled once it's been enabled.
+  };
+
+  Action desire = DONT_TURN_ON_UNLESS_OVERRIDDEN;
+} android_mallopt_gwp_asan_options_t;
+
 // Manipulates bionic-specific handling of memory allocation APIs such as
-// malloc. Only for use by the Android platform itself.
+// malloc. Only for use by the Android platform and APEXes.
 //
 // On success, returns true. On failure, returns false and sets errno.
 extern "C" bool android_mallopt(int opcode, void* arg, size_t arg_size);
diff --git a/mainline/runtime/sdk/common_os/include/bionic/libc/platform/bionic/tls.h b/mainline/runtime/sdk/common_os/include/bionic/libc/platform/bionic/tls.h
index bf9e65b..e01eccd 100644
--- a/mainline/runtime/sdk/common_os/include/bionic/libc/platform/bionic/tls.h
+++ b/mainline/runtime/sdk/common_os/include/bionic/libc/platform/bionic/tls.h
@@ -34,6 +34,8 @@
 # define __get_tls() ({ void** __val; __asm__("mrc p15, 0, %0, c13, c0, 3" : "=r"(__val)); __val; })
 #elif defined(__i386__)
 # define __get_tls() ({ void** __val; __asm__("movl %%gs:0, %0" : "=r"(__val)); __val; })
+#elif defined(__riscv)
+# define __get_tls() ({ void** __val; __asm__("mv %0, tp" : "=r"(__val)); __val; })
 #elif defined(__x86_64__)
 # define __get_tls() ({ void** __val; __asm__("mov %%fs:0, %0" : "=r"(__val)); __val; })
 #else
diff --git a/mainline/runtime/sdk/common_os/include/bionic/libc/platform/bionic/tls_defines.h b/mainline/runtime/sdk/common_os/include/bionic/libc/platform/bionic/tls_defines.h
index 78099b3..3e2efa3 100644
--- a/mainline/runtime/sdk/common_os/include/bionic/libc/platform/bionic/tls_defines.h
+++ b/mainline/runtime/sdk/common_os/include/bionic/libc/platform/bionic/tls_defines.h
@@ -114,6 +114,28 @@
 #define TLS_SLOT_BIONIC_TLS       9
 #define MAX_TLS_SLOT              9 // update this value when reserving a slot
 
+#elif defined(__riscv)
+
+// RISC-V ELF Specification[1] specifies that RISC-V uses Variant I as described
+// by the ELF TLS specification, with tp containing the address one past the end
+// of the TCB.
+//
+// [1]: RISC-V ELF Specification. Section: Thread Local Storage
+// https://github.com/riscv-non-isa/riscv-elf-psabi-doc/blob/master/riscv-elf.adoc#thread-local-storage
+
+#define MIN_TLS_SLOT             (-9) // update this value when reserving a slot
+
+#define TLS_SLOT_BIONIC_TLS      (-9)
+#define TLS_SLOT_DTV             (-8)
+#define TLS_SLOT_THREAD_ID       (-7)
+#define TLS_SLOT_APP             (-6)
+#define TLS_SLOT_OPENGL          (-5)
+#define TLS_SLOT_OPENGL_API      (-4)
+#define TLS_SLOT_STACK_GUARD     (-3)
+#define TLS_SLOT_SANITIZER       (-2)
+#define TLS_SLOT_ART_THREAD_SELF (-1)
+#define MAX_TLS_SLOT             (-1)
+
 #endif
 
 #define BIONIC_TLS_SLOTS (MAX_TLS_SLOT - MIN_TLS_SLOT + 1)
diff --git a/mainline/runtime/sdk/common_os/include/system/logging/liblog/include/private/android_logger.h b/mainline/runtime/sdk/common_os/include/system/logging/liblog/include/private/android_logger.h
index 166f387..d414b07 100644
--- a/mainline/runtime/sdk/common_os/include/system/logging/liblog/include/private/android_logger.h
+++ b/mainline/runtime/sdk/common_os/include/system/logging/liblog/include/private/android_logger.h
@@ -126,7 +126,6 @@
                                       const char* filename, const char* buf,
                                       size_t len);
 
-#define LOG_ID_ANY ((log_id_t)-1)
 #define ANDROID_LOG_ANY ANDROID_LOG_UNKNOWN
 
 /* first 5 arguments match __android_log_msg_file_write, a cast is safe */
diff --git a/mainline/runtime/sdk/licenses/bionic/libc/NOTICE b/mainline/runtime/sdk/licenses/bionic/libc/NOTICE
index 9cbbde2..332885d 100644
--- a/mainline/runtime/sdk/licenses/bionic/libc/NOTICE
+++ b/mainline/runtime/sdk/licenses/bionic/libc/NOTICE
@@ -783,22 +783,6 @@
 -------------------------------------------------------------------
 
 Copyright (C) 2019 The Android Open Source Project
-
-Licensed under the Apache License, Version 2.0 (the "License");
-you may not use this file except in compliance with the License.
-You may obtain a copy of the License at
-
-     http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing, software
-distributed under the License is distributed on an "AS IS" BASIS,
-WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-See the License for the specific language governing permissions and
-limitations under the License.
-
--------------------------------------------------------------------
-
-Copyright (C) 2019 The Android Open Source Project
 All rights reserved.
 
 Redistribution and use in source and binary forms, with or without
@@ -826,34 +810,6 @@
 
 -------------------------------------------------------------------
 
-Copyright (C) 2019 The Android Open Source Project
-All rights reserved.
-
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions
-are met:
-Redistributions of source code must retain the above copyright
-   notice, this list of conditions and the following disclaimer.
-Redistributions in binary form must reproduce the above copyright
-   notice, this list of conditions and the following disclaimer in
-   the documentation and/or other materials provided with the
-   distribution.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
-FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
-COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
-INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
-BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
-OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
-AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
-OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
-OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
-SUCH DAMAGE.
-
--------------------------------------------------------------------
-
 Copyright (C) 2020 The Android Open Source Project
 All rights reserved.
 
@@ -2096,6 +2052,38 @@
 
 Copyright (c) 1990, 1993
    The Regents of the University of California.  All rights reserved.
+
+This code is derived from software contributed to Berkeley by
+Mike Hibler and Chris Torek.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions
+are met:
+1. Redistributions of source code must retain the above copyright
+   notice, this list of conditions and the following disclaimer.
+2. Redistributions in binary form must reproduce the above copyright
+   notice, this list of conditions and the following disclaimer in the
+   documentation and/or other materials provided with the distribution.
+3. Neither the name of the University nor the names of its contributors
+   may be used to endorse or promote products derived from this software
+   without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+SUCH DAMAGE.
+
+-------------------------------------------------------------------
+
+Copyright (c) 1990, 1993
+   The Regents of the University of California.  All rights reserved.
 (c) UNIX System Laboratories, Inc.
 All or some portions of this file are derived from material licensed
 to the University of California by American Telephone and Telegraph
@@ -2451,9 +2439,15 @@
 
 -------------------------------------------------------------------
 
+Copyright (c) 1992, 1993, 1994 Henry Spencer.
 Copyright (c) 1992, 1993, 1994
    The Regents of the University of California.  All rights reserved.
 
+Copyright (c) 2011 The FreeBSD Foundation
+All rights reserved.
+Portions of this software were developed by David Chisnall
+under sponsorship from the FreeBSD Foundation.
+
 This code is derived from software contributed to Berkeley by
 Henry Spencer.
 
@@ -2484,6 +2478,8 @@
 -------------------------------------------------------------------
 
 Copyright (c) 1992, 1993, 1994 Henry Spencer.
+Copyright (c) 1992, 1993, 1994
+   The Regents of the University of California.  All rights reserved.
 
 This code is derived from software contributed to Berkeley by
 Henry Spencer.
@@ -2496,11 +2492,7 @@
 2. Redistributions in binary form must reproduce the above copyright
    notice, this list of conditions and the following disclaimer in the
    documentation and/or other materials provided with the distribution.
-3. All advertising materials mentioning features or use of this software
-   must display the following acknowledgement:
-   This product includes software developed by the University of
-   California, Berkeley and its contributors.
-4. Neither the name of the University nor the names of its contributors
+3. Neither the name of the University nor the names of its contributors
    may be used to endorse or promote products derived from this software
    without specific prior written permission.
 
@@ -4310,33 +4302,6 @@
 
 -------------------------------------------------------------------
 
-Copyright (c) 2012-2013, Linaro Limited
-   All rights reserved.
-
-   Redistribution and use in source and binary forms, with or without
-   modification, are permitted provided that the following conditions are met:
-       * Redistributions of source code must retain the above copyright
-         notice, this list of conditions and the following disclaimer.
-       * Redistributions in binary form must reproduce the above copyright
-         notice, this list of conditions and the following disclaimer in the
-         documentation and/or other materials provided with the distribution.
-       * Neither the name of the Linaro nor the
-         names of its contributors may be used to endorse or promote products
-         derived from this software without specific prior written permission.
-
-   THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-   "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-   LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-   A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-   HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-   SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-   LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-   DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-   THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-   (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-
--------------------------------------------------------------------
-
 Copyright (c) 2012-2014 ARM Ltd
 All rights reserved.
 
@@ -4438,33 +4403,6 @@
 
 -------------------------------------------------------------------
 
-Copyright (c) 2013, Linaro Limited
-   All rights reserved.
-
-   Redistribution and use in source and binary forms, with or without
-   modification, are permitted provided that the following conditions are met:
-       * Redistributions of source code must retain the above copyright
-         notice, this list of conditions and the following disclaimer.
-       * Redistributions in binary form must reproduce the above copyright
-         notice, this list of conditions and the following disclaimer in the
-         documentation and/or other materials provided with the distribution.
-       * Neither the name of the Linaro nor the
-         names of its contributors may be used to endorse or promote products
-         derived from this software without specific prior written permission.
-
-   THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-   "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-   LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-   A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-   HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-   SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-   LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-   DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-   THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-   (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-
--------------------------------------------------------------------
-
 Copyright (c) 2014, Intel Corporation
 All rights reserved.
 
@@ -4495,62 +4433,6 @@
 
 -------------------------------------------------------------------
 
-Copyright (c) 2014, Linaro Limited
-   All rights reserved.
-
-   Redistribution and use in source and binary forms, with or without
-   modification, are permitted provided that the following conditions are met:
-       * Redistributions of source code must retain the above copyright
-         notice, this list of conditions and the following disclaimer.
-       * Redistributions in binary form must reproduce the above copyright
-         notice, this list of conditions and the following disclaimer in the
-         documentation and/or other materials provided with the distribution.
-       * Neither the name of the Linaro nor the
-         names of its contributors may be used to endorse or promote products
-         derived from this software without specific prior written permission.
-
-   THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-   "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-   LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-   A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-   HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-   SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-   LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-   DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-   THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-   (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-   OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
--------------------------------------------------------------------
-
-Copyright (c) 2015 ARM Ltd
-All rights reserved.
-
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions
-are met:
-1. Redistributions of source code must retain the above copyright
-   notice, this list of conditions and the following disclaimer.
-2. Redistributions in binary form must reproduce the above copyright
-   notice, this list of conditions and the following disclaimer in the
-   documentation and/or other materials provided with the distribution.
-3. The name of the company may not be used to endorse or promote
-   products derived from this software without specific prior written
-   permission.
-
-THIS SOFTWARE IS PROVIDED BY ARM LTD ``AS IS'' AND ANY EXPRESS OR IMPLIED
-WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
-MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
-IN NO EVENT SHALL ARM LTD BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED
-TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
-PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
-LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
-NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
--------------------------------------------------------------------
-
 Copyright (c) 2015 Joerg Sonnenberger <joerg@NetBSD.org>.
 All rights reserved.
 
@@ -4605,6 +4487,34 @@
 
 -------------------------------------------------------------------
 
+Copyright (c) 2017, 2018 Dell EMC
+Copyright (c) 2000, 2001, 2008, 2011, David E. O'Brien
+Copyright (c) 1998 John D. Polstra.
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions
+are met:
+1. Redistributions of source code must retain the above copyright
+   notice, this list of conditions and the following disclaimer.
+2. Redistributions in binary form must reproduce the above copyright
+   notice, this list of conditions and the following disclaimer in the
+   documentation and/or other materials provided with the distribution.
+
+THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+SUCH DAMAGE.
+
+-------------------------------------------------------------------
+
 Copyright (c)1999 Citrus Project,
 All rights reserved.
 
diff --git a/mainline/runtime/sdk/licenses/bionic/libm/NOTICE b/mainline/runtime/sdk/licenses/bionic/libm/NOTICE
index 64d253a..bce49ad 100644
--- a/mainline/runtime/sdk/licenses/bionic/libm/NOTICE
+++ b/mainline/runtime/sdk/licenses/bionic/libm/NOTICE
@@ -309,6 +309,34 @@
 
 -------------------------------------------------------------------
 
+Copyright (C) 2022 The Android Open Source Project
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions
+are met:
+ * Redistributions of source code must retain the above copyright
+   notice, this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+   notice, this list of conditions and the following disclaimer in
+   the documentation and/or other materials provided with the
+   distribution.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
+OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
+AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
+OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+SUCH DAMAGE.
+
+-------------------------------------------------------------------
+
 Copyright (c) 1985, 1993
    The Regents of the University of California.  All rights reserved.
 
diff --git a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/include/android/api-level.h b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/include/android/api-level.h
index ecf318d..79085d1 100644
--- a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/include/android/api-level.h
+++ b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/include/android/api-level.h
@@ -139,21 +139,32 @@
 #define __ANDROID_API_P__ 28
 
 /**
- * Names the "Q" API level (29), for comparison against `__ANDROID_API__`.
- * This release was called Android 10 publicly, not to be (but sure to be)
- * confused with API level 10.
+ * Names the Android 10 (aka "Q" or "Quince Tart") API level (29), for
+ * comparison against `__ANDROID_API__`.
  */
 #define __ANDROID_API_Q__ 29
 
-/** Names the "R" API level (30), for comparison against `__ANDROID_API__`. */
+/**
+ * Names the Android 11 (aka "R" or "Red Velvet Cake") API level (30), for
+ * comparison against `__ANDROID_API__`.
+ */
 #define __ANDROID_API_R__ 30
 
-/** Names the "S" API level (31), for comparison against `__ANDROID_API__`. */
+/**
+ * Names the Android 12 (aka "S" or "Snowcone") API level (31), for
+ * comparison against `__ANDROID_API__`.
+ */
 #define __ANDROID_API_S__ 31
 
-/** Names the "T" API level (33), for comparison against `__ANDROID_API__`. */
+/**
+ * Names the Android 13 (aka "T" or "Tiramisu") API level (33), for
+ * comparison against `__ANDROID_API__`.
+ */
 #define __ANDROID_API_T__ 33
 
+/** Names the "U" API level (34), for comparison against `__ANDROID_API__`. */
+#define __ANDROID_API_U__ 34
+
 /* This file is included in <features.h>, and might be used from .S files. */
 #if !defined(__ASSEMBLY__)
 
diff --git a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/include/android/fdsan.h b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/include/android/fdsan.h
index e23de85..59ce133 100644
--- a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/include/android/fdsan.h
+++ b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/include/android/fdsan.h
@@ -123,6 +123,9 @@
 
   /* libziparchive's ZipArchive */
   ANDROID_FDSAN_OWNER_TYPE_ZIPARCHIVE = 12,
+
+  /* native_handle_t */
+  ANDROID_FDSAN_OWNER_TYPE_NATIVE_HANDLE = 13,
 };
 
 /*
diff --git a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/include/android/legacy_stdlib_inlines.h b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/include/android/legacy_stdlib_inlines.h
index aeb1575..6903536 100644
--- a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/include/android/legacy_stdlib_inlines.h
+++ b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/include/android/legacy_stdlib_inlines.h
@@ -57,13 +57,11 @@
 __BEGIN_DECLS
 
 static __inline float strtof(const char* nptr, char** endptr) {
+  // N.B. Double-rounding makes this function incorrect for some inputs.
   double d = strtod(nptr, endptr);
-  if (d > FLT_MAX) {
+  if (__builtin_isfinite(d) && __builtin_fabs(d) > FLT_MAX) {
     errno = ERANGE;
-    return __builtin_huge_valf();
-  } else if (d < -FLT_MAX) {
-    errno = ERANGE;
-    return -__builtin_huge_valf();
+    return __builtin_copysign(__builtin_huge_valf(), d);
   }
   return __BIONIC_CAST(static_cast, float, d);
 }
diff --git a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/include/bits/elf_arm.h b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/include/bits/elf_arm.h
deleted file mode 100644
index 08fe1d5..0000000
--- a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/include/bits/elf_arm.h
+++ /dev/null
@@ -1,131 +0,0 @@
-/*	$NetBSD: elf_machdep.h,v 1.17 2014/02/25 19:20:09 matt Exp $	*/
-
-#ifndef _ARM_ELF_MACHDEP_H_
-#define _ARM_ELF_MACHDEP_H_
-
-/* Android-added. */
-#define R_ARM_IRELATIVE		160
-
-/* Processor specific flags for the ELF header e_flags field.  */
-#define EF_ARM_RELEXEC		0x00000001
-#define EF_ARM_HASENTRY		0x00000002
-#define EF_ARM_INTERWORK	0x00000004 /* GNU binutils 000413 */
-#define EF_ARM_SYMSARESORTED	0x00000004 /* ARM ELF A08 */
-#define EF_ARM_APCS_26		0x00000008 /* GNU binutils 000413 */
-#define EF_ARM_DYNSYMSUSESEGIDX	0x00000008 /* ARM ELF B01 */
-#define EF_ARM_APCS_FLOAT	0x00000010 /* GNU binutils 000413 */
-#define EF_ARM_MAPSYMSFIRST	0x00000010 /* ARM ELF B01 */
-#define EF_ARM_PIC		0x00000020
-#define EF_ARM_ALIGN8		0x00000040 /* 8-bit structure alignment.  */
-#define EF_ARM_NEW_ABI		0x00000080
-#define EF_ARM_OLD_ABI		0x00000100
-#define EF_ARM_SOFT_FLOAT	0x00000200
-#define EF_ARM_BE8		0x00800000
-#define EF_ARM_EABIMASK		0xff000000
-#define	EF_ARM_EABI_VER1	0x01000000
-#define	EF_ARM_EABI_VER2	0x02000000
-#define	EF_ARM_EABI_VER3	0x03000000
-#define	EF_ARM_EABI_VER4	0x04000000
-#define	EF_ARM_EABI_VER5	0x05000000
-
-/* Processor specific relocation types */
-
-#define R_ARM_NONE		0
-#define R_ARM_PC24		1
-#define R_ARM_ABS32		2
-#define R_ARM_REL32		3
-#define R_ARM_PC13		4
-#define R_ARM_ABS16		5
-#define R_ARM_ABS12		6
-#define R_ARM_THM_ABS5		7
-#define R_ARM_ABS8		8
-#define R_ARM_SBREL32		9
-#define R_ARM_THM_PC22		10
-#define R_ARM_THM_PC8		11
-#define R_ARM_AMP_VCALL9	12
-#define R_ARM_SWI24		13	/* obsolete static relocation */
-#define R_ARM_TLS_DESC		13	/* dynamic relocation */
-#define R_ARM_THM_SWI8		14
-#define R_ARM_XPC25		15
-#define R_ARM_THM_XPC22		16
-
-/* TLS relocations */
-#define R_ARM_TLS_DTPMOD32	17	/* ID of module containing symbol */
-#define R_ARM_TLS_DTPOFF32	18	/* Offset in TLS block */
-#define R_ARM_TLS_TPOFF32	19	/* Offset in static TLS block */
-
-/* 20-31 are reserved for ARM Linux. */
-#define R_ARM_COPY		20
-#define R_ARM_GLOB_DAT		21
-#define	R_ARM_JUMP_SLOT		22
-#define R_ARM_RELATIVE		23
-#define	R_ARM_GOTOFF		24
-#define R_ARM_GOTPC		25
-#define R_ARM_GOT32		26
-#define R_ARM_PLT32		27
-#define R_ARM_CALL		28
-#define R_ARM_JUMP24		29
-#define R_ARM_THM_JUMP24	30
-#define R_ARM_BASE_ABS		31
-#define R_ARM_ALU_PCREL_7_0	32
-#define R_ARM_ALU_PCREL_15_8	33
-#define R_ARM_ALU_PCREL_23_15	34
-#define R_ARM_ALU_SBREL_11_0	35
-#define R_ARM_ALU_SBREL_19_12	36
-#define R_ARM_ALU_SBREL_27_20	37	// depcreated
-#define R_ARM_TARGET1		38
-#define R_ARM_SBREL31		39	// deprecated
-#define R_ARM_V4BX		40
-#define R_ARM_TARGET2		41
-#define R_ARM_PREL31		42
-#define R_ARM_MOVW_ABS_NC	43
-#define R_ARM_MOVT_ABS		44
-#define R_ARM_MOVW_PREL_NC	45
-#define R_ARM_MOVT_PREL		46
-#define R_ARM_THM_MOVW_ABS_NC	47
-#define R_ARM_THM_MOVT_ABS	48
-#define R_ARM_THM_MOVW_PREL_NC	49
-#define R_ARM_THM_MOVT_PREL	50
-
-/* 96-111 are reserved to G++. */
-#define R_ARM_GNU_VTENTRY	100
-#define R_ARM_GNU_VTINHERIT	101
-#define R_ARM_THM_PC11		102
-#define R_ARM_THM_PC9		103
-
-/* More TLS relocations */
-#define R_ARM_TLS_GD32		104	/* PC-rel 32 bit for global dynamic */
-#define R_ARM_TLS_LDM32		105	/* PC-rel 32 bit for local dynamic */
-#define R_ARM_TLS_LDO32		106	/* 32 bit offset relative to TLS */
-#define R_ARM_TLS_IE32		107	/* PC-rel 32 bit for GOT entry of */
-#define R_ARM_TLS_LE32		108
-#define R_ARM_TLS_LDO12		109
-#define R_ARM_TLS_LE12		110
-#define R_ARM_TLS_IE12GP	111
-
-/* 112-127 are reserved for private experiments. */
-
-#define R_ARM_RXPC25		249
-#define R_ARM_RSBREL32		250
-#define R_ARM_THM_RPC22		251
-#define R_ARM_RREL32		252
-#define R_ARM_RABS32		253
-#define R_ARM_RPC24		254
-#define R_ARM_RBASE		255
-
-/* Processor specific program header flags */
-#define PF_ARM_SB		0x10000000
-#define PF_ARM_PI		0x20000000
-#define PF_ARM_ENTRY		0x80000000
-
-/* Processor specific program header types */
-#define PT_ARM_EXIDX		(PT_LOPROC + 1)
-
-/* Processor specific section header flags */
-#define SHF_ENTRYSECT		0x10000000
-#define SHF_COMDEF		0x80000000
-
-/* Processor specific symbol types */
-#define STT_ARM_TFUNC		STT_LOPROC
-
-#endif /* _ARM_ELF_MACHDEP_H_ */
diff --git a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/include/bits/elf_arm64.h b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/include/bits/elf_arm64.h
deleted file mode 100644
index 9330d7b..0000000
--- a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/include/bits/elf_arm64.h
+++ /dev/null
@@ -1,97 +0,0 @@
-/*
- * Copyright (C) 2013 The Android Open Source Project
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *  * Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- *  * Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
- * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
- * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
- * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
- * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- */
-
-#ifndef _AARCH64_ELF_MACHDEP_H_
-#define _AARCH64_ELF_MACHDEP_H_
-
-/* Null relocations */
-#define R_ARM_NONE                      0
-#define R_AARCH64_NONE                  256
-
-/* Static Data relocations */
-#define R_AARCH64_ABS64                 257
-#define R_AARCH64_ABS32                 258
-#define R_AARCH64_ABS16                 259
-#define R_AARCH64_PREL64                260
-#define R_AARCH64_PREL32                261
-#define R_AARCH64_PREL16                262
-
-#define R_AARCH64_MOVW_UABS_G0          263
-#define R_AARCH64_MOVW_UABS_G0_NC       264
-#define R_AARCH64_MOVW_UABS_G1          265
-#define R_AARCH64_MOVW_UABS_G1_NC       266
-#define R_AARCH64_MOVW_UABS_G2          267
-#define R_AARCH64_MOVW_UABS_G2_NC       268
-#define R_AARCH64_MOVW_UABS_G3          269
-#define R_AARCH64_MOVW_SABS_G0          270
-#define R_AARCH64_MOVW_SABS_G1          271
-#define R_AARCH64_MOVW_SABS_G2          272
-
-/* PC-relative addresses */
-#define R_AARCH64_LD_PREL_LO19          273
-#define R_AARCH64_ADR_PREL_LO21         274
-#define R_AARCH64_ADR_PREL_PG_HI21      275
-#define R_AARCH64_ADR_PREL_PG_HI21_NC   276
-#define R_AARCH64_ADD_ABS_LO12_NC       277
-#define R_AARCH64_LDST8_ABS_LO12_NC     278
-
-/* Control-flow relocations */
-#define R_AARCH64_TSTBR14               279
-#define R_AARCH64_CONDBR19              280
-#define R_AARCH64_JUMP26                282
-#define R_AARCH64_CALL26                283
-#define R_AARCH64_LDST16_ABS_LO12_NC    284
-#define R_AARCH64_LDST32_ABS_LO12_NC    285
-#define R_AARCH64_LDST64_ABS_LO12_NC    286
-#define R_AARCH64_LDST128_ABS_LO12_NC   299
-
-#define R_AARCH64_MOVW_PREL_G0          287
-#define R_AARCH64_MOVW_PREL_G0_NC       288
-#define R_AARCH64_MOVW_PREL_G1          289
-#define R_AARCH64_MOVW_PREL_G1_NC       290
-#define R_AARCH64_MOVW_PREL_G2          291
-#define R_AARCH64_MOVW_PREL_G2_NC       292
-#define R_AARCH64_MOVW_PREL_G3          293
-
-/* Dynamic relocations */
-#define R_AARCH64_COPY                  1024
-#define R_AARCH64_GLOB_DAT              1025    /* Create GOT entry.  */
-#define R_AARCH64_JUMP_SLOT             1026    /* Create PLT entry.  */
-#define R_AARCH64_RELATIVE              1027    /* Adjust by program base.  */
-#define R_AARCH64_TLS_DTPMOD            1028    /* Module index. */
-#define R_AARCH64_TLS_DTPREL            1029    /* Module-relative offset. */
-#define R_AARCH64_TLS_TPREL             1030    /* TP-relative offset. */
-#define R_AARCH64_TLSDESC               1031    /* 16-byte descriptor: resolver func + arg. */
-#define R_AARCH64_IRELATIVE             1032
-
-/* Dynamic array tags */
-#define DT_AARCH64_BTI_PLT              0x70000001
-#define DT_AARCH64_PAC_PLT              0x70000003
-#define DT_AARCH64_VARIANT_PCS          0x70000005
-
-#endif /* _AARCH64_ELF_MACHDEP_H_ */
diff --git a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/include/bits/elf_common.h b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/include/bits/elf_common.h
new file mode 100644
index 0000000..ea833f4
--- /dev/null
+++ b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/include/bits/elf_common.h
@@ -0,0 +1,1430 @@
+/*-
+ * SPDX-License-Identifier: BSD-2-Clause-FreeBSD
+ *
+ * Copyright (c) 2017, 2018 Dell EMC
+ * Copyright (c) 2000, 2001, 2008, 2011, David E. O'Brien
+ * Copyright (c) 1998 John D. Polstra.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ *
+ * $FreeBSD$
+ */
+
+#ifndef _SYS_ELF_COMMON_H_
+#define	_SYS_ELF_COMMON_H_ 1
+
+/*
+ * ELF definitions that are independent of architecture or word size.
+ */
+
+/*
+ * Option kinds.
+ */
+#define	ODK_NULL	0	/* undefined */
+#define	ODK_REGINFO	1	/* register usage info */
+#define	ODK_EXCEPTIONS	2	/* exception processing info */
+#define	ODK_PAD		3	/* section padding */
+#define	ODK_HWPATCH	4	/* hardware patch applied */
+#define	ODK_FILL	5	/* fill value used by the linker */
+#define	ODK_TAGS	6	/* reserved space for tools */
+#define	ODK_HWAND	7	/* hardware AND patch applied */
+#define	ODK_HWOR	8	/* hardware OR patch applied */
+#define	ODK_GP_GROUP	9	/* GP group for text/data sections */
+#define	ODK_IDENT	10	/* ID information */
+#define	ODK_PAGESIZE	11	/* page size information */
+
+/*
+ * ODK_EXCEPTIONS info field masks.
+ */
+#define	OEX_FPU_MIN	0x0000001f	/* min FPU exception required */
+#define	OEX_FPU_MAX	0x00001f00	/* max FPU exception allowed */
+#define	OEX_PAGE0	0x00010000	/* page zero must be mapped */
+#define	OEX_SMM		0x00020000	/* run in sequential memory mode */
+#define	OEX_PRECISEFP	0x00040000	/* run in precise FP exception mode */
+#define	OEX_DISMISS	0x00080000	/* dismiss invalid address traps */
+
+/*
+ * ODK_PAD info field masks.
+ */
+#define	OPAD_PREFIX	0x0001
+#define	OPAD_POSTFIX	0x0002
+#define	OPAD_SYMBOL	0x0004
+
+/*
+ * ODK_HWPATCH info field masks.
+ */
+#define	OHW_R4KEOP	0x00000001	/* patch for R4000 branch at end-of-page bug */
+#define	OHW_R8KPFETCH	0x00000002	/* R8000 prefetch bug may occur */
+#define	OHW_R5KEOP	0x00000004	/* patch for R5000 branch at end-of-page bug */
+#define	OHW_R5KCVTL	0x00000008	/* R5000 cvt.[ds].l bug: clean == 1 */
+#define	OHW_R10KLDL	0x00000010UL	/* need patch for R10000 misaligned load */
+
+/*
+ * ODK_HWAND/ODK_HWOR info field and hwp_flags[12] masks.
+ */
+#define	OHWA0_R4KEOP_CHECKED	0x00000001	/* object checked for R4000 end-of-page bug */
+#define	OHWA0_R4KEOP_CLEAN	0x00000002	/* object verified clean for R4000 end-of-page bug */
+#define	OHWO0_FIXADE		0x00000001	/* object requires call to fixade */
+
+/*
+ * ODK_IDENT/ODK_GP_GROUP info field masks.
+ */
+#define	OGP_GROUP	0x0000ffff	/* GP group number */
+#define	OGP_SELF	0x00010000	/* GP group is self-contained */
+
+/* Indexes into the e_ident array.  Keep synced with
+   http://www.sco.com/developers/gabi/latest/ch4.eheader.html */
+#define	EI_MAG0		0	/* Magic number, byte 0. */
+#define	EI_MAG1		1	/* Magic number, byte 1. */
+#define	EI_MAG2		2	/* Magic number, byte 2. */
+#define	EI_MAG3		3	/* Magic number, byte 3. */
+#define	EI_CLASS	4	/* Class of machine. */
+#define	EI_DATA		5	/* Data format. */
+#define	EI_VERSION	6	/* ELF format version. */
+#define	EI_OSABI	7	/* Operating system / ABI identification */
+#define	EI_ABIVERSION	8	/* ABI version */
+#define	OLD_EI_BRAND	8	/* Start of architecture identification. */
+#define	EI_PAD		9	/* Start of padding (per SVR4 ABI). */
+#define	EI_NIDENT	16	/* Size of e_ident array. */
+
+/* Values for the magic number bytes. */
+#define	ELFMAG0		0x7f
+#define	ELFMAG1		'E'
+#define	ELFMAG2		'L'
+#define	ELFMAG3		'F'
+#define	ELFMAG		"\177ELF"	/* magic string */
+#define	SELFMAG		4		/* magic string size */
+
+/* Values for e_ident[EI_VERSION] and e_version. */
+#define	EV_NONE		0
+#define	EV_CURRENT	1
+
+/* Values for e_ident[EI_CLASS]. */
+#define	ELFCLASSNONE	0	/* Unknown class. */
+#define	ELFCLASS32	1	/* 32-bit architecture. */
+#define	ELFCLASS64	2	/* 64-bit architecture. */
+
+/* Values for e_ident[EI_DATA]. */
+#define	ELFDATANONE	0	/* Unknown data format. */
+#define	ELFDATA2LSB	1	/* 2's complement little-endian. */
+#define	ELFDATA2MSB	2	/* 2's complement big-endian. */
+
+/* Values for e_ident[EI_OSABI]. */
+#define	ELFOSABI_NONE		0	/* UNIX System V ABI */
+#define	ELFOSABI_HPUX		1	/* HP-UX operating system */
+#define	ELFOSABI_NETBSD		2	/* NetBSD */
+#define	ELFOSABI_LINUX		3	/* GNU/Linux */
+#define	ELFOSABI_HURD		4	/* GNU/Hurd */
+#define	ELFOSABI_86OPEN		5	/* 86Open common IA32 ABI */
+#define	ELFOSABI_SOLARIS	6	/* Solaris */
+#define	ELFOSABI_AIX		7	/* AIX */
+#define	ELFOSABI_IRIX		8	/* IRIX */
+#define	ELFOSABI_FREEBSD	9	/* FreeBSD */
+#define	ELFOSABI_TRU64		10	/* TRU64 UNIX */
+#define	ELFOSABI_MODESTO	11	/* Novell Modesto */
+#define	ELFOSABI_OPENBSD	12	/* OpenBSD */
+#define	ELFOSABI_OPENVMS	13	/* Open VMS */
+#define	ELFOSABI_NSK		14	/* HP Non-Stop Kernel */
+#define	ELFOSABI_AROS		15	/* Amiga Research OS */
+#define	ELFOSABI_FENIXOS	16	/* FenixOS */
+#define	ELFOSABI_CLOUDABI	17	/* Nuxi CloudABI */
+#define	ELFOSABI_OPENVOS	18	/* Stratus Technologies OpenVOS */
+#define	ELFOSABI_ARM_AEABI	64	/* ARM EABI */
+#define	ELFOSABI_ARM		97	/* ARM */
+#define	ELFOSABI_STANDALONE	255	/* Standalone (embedded) application */
+
+#define	ELFOSABI_MONTEREY	ELFOSABI_AIX	/* Monterey */
+
+/* e_ident */
+#define	IS_ELF(ehdr)	((ehdr).e_ident[EI_MAG0] == ELFMAG0 && \
+			 (ehdr).e_ident[EI_MAG1] == ELFMAG1 && \
+			 (ehdr).e_ident[EI_MAG2] == ELFMAG2 && \
+			 (ehdr).e_ident[EI_MAG3] == ELFMAG3)
+
+/* Values for e_type. */
+#define	ET_NONE		0	/* Unknown type. */
+#define	ET_REL		1	/* Relocatable. */
+#define	ET_EXEC		2	/* Executable. */
+#define	ET_DYN		3	/* Shared object. */
+#define	ET_CORE		4	/* Core file. */
+#define	ET_LOOS		0xfe00	/* First operating system specific. */
+#define	ET_HIOS		0xfeff	/* Last operating system-specific. */
+#define	ET_LOPROC	0xff00	/* First processor-specific. */
+#define	ET_HIPROC	0xffff	/* Last processor-specific. */
+
+/* Values for e_machine. */
+#define	EM_NONE		0	/* Unknown machine. */
+#define	EM_M32		1	/* AT&T WE32100. */
+#define	EM_SPARC	2	/* Sun SPARC. */
+#define	EM_386		3	/* Intel i386. */
+#define	EM_68K		4	/* Motorola 68000. */
+#define	EM_88K		5	/* Motorola 88000. */
+#define	EM_IAMCU	6	/* Intel MCU. */
+#define	EM_860		7	/* Intel i860. */
+#define	EM_MIPS		8	/* MIPS R3000 Big-Endian only. */
+#define	EM_S370		9	/* IBM System/370. */
+#define	EM_MIPS_RS3_LE	10	/* MIPS R3000 Little-Endian. */
+#define	EM_PARISC	15	/* HP PA-RISC. */
+#define	EM_VPP500	17	/* Fujitsu VPP500. */
+#define	EM_SPARC32PLUS	18	/* SPARC v8plus. */
+#define	EM_960		19	/* Intel 80960. */
+#define	EM_PPC		20	/* PowerPC 32-bit. */
+#define	EM_PPC64	21	/* PowerPC 64-bit. */
+#define	EM_S390		22	/* IBM System/390. */
+#define	EM_V800		36	/* NEC V800. */
+#define	EM_FR20		37	/* Fujitsu FR20. */
+#define	EM_RH32		38	/* TRW RH-32. */
+#define	EM_RCE		39	/* Motorola RCE. */
+#define	EM_ARM		40	/* ARM. */
+#define	EM_SH		42	/* Hitachi SH. */
+#define	EM_SPARCV9	43	/* SPARC v9 64-bit. */
+#define	EM_TRICORE	44	/* Siemens TriCore embedded processor. */
+#define	EM_ARC		45	/* Argonaut RISC Core. */
+#define	EM_H8_300	46	/* Hitachi H8/300. */
+#define	EM_H8_300H	47	/* Hitachi H8/300H. */
+#define	EM_H8S		48	/* Hitachi H8S. */
+#define	EM_H8_500	49	/* Hitachi H8/500. */
+#define	EM_IA_64	50	/* Intel IA-64 Processor. */
+#define	EM_MIPS_X	51	/* Stanford MIPS-X. */
+#define	EM_COLDFIRE	52	/* Motorola ColdFire. */
+#define	EM_68HC12	53	/* Motorola M68HC12. */
+#define	EM_MMA		54	/* Fujitsu MMA. */
+#define	EM_PCP		55	/* Siemens PCP. */
+#define	EM_NCPU		56	/* Sony nCPU. */
+#define	EM_NDR1		57	/* Denso NDR1 microprocessor. */
+#define	EM_STARCORE	58	/* Motorola Star*Core processor. */
+#define	EM_ME16		59	/* Toyota ME16 processor. */
+#define	EM_ST100	60	/* STMicroelectronics ST100 processor. */
+#define	EM_TINYJ	61	/* Advanced Logic Corp. TinyJ processor. */
+#define	EM_X86_64	62	/* Advanced Micro Devices x86-64 */
+#define	EM_AMD64	EM_X86_64	/* Advanced Micro Devices x86-64 (compat) */
+#define	EM_PDSP		63	/* Sony DSP Processor. */
+#define	EM_FX66		66	/* Siemens FX66 microcontroller. */
+#define	EM_ST9PLUS	67	/* STMicroelectronics ST9+ 8/16
+				   microcontroller. */
+#define	EM_ST7		68	/* STmicroelectronics ST7 8-bit
+				   microcontroller. */
+#define	EM_68HC16	69	/* Motorola MC68HC16 microcontroller. */
+#define	EM_68HC11	70	/* Motorola MC68HC11 microcontroller. */
+#define	EM_68HC08	71	/* Motorola MC68HC08 microcontroller. */
+#define	EM_68HC05	72	/* Motorola MC68HC05 microcontroller. */
+#define	EM_SVX		73	/* Silicon Graphics SVx. */
+#define	EM_ST19		74	/* STMicroelectronics ST19 8-bit mc. */
+#define	EM_VAX		75	/* Digital VAX. */
+#define	EM_CRIS		76	/* Axis Communications 32-bit embedded
+				   processor. */
+#define	EM_JAVELIN	77	/* Infineon Technologies 32-bit embedded
+				   processor. */
+#define	EM_FIREPATH	78	/* Element 14 64-bit DSP Processor. */
+#define	EM_ZSP		79	/* LSI Logic 16-bit DSP Processor. */
+#define	EM_MMIX		80	/* Donald Knuth's educational 64-bit proc. */
+#define	EM_HUANY	81	/* Harvard University machine-independent
+				   object files. */
+#define	EM_PRISM	82	/* SiTera Prism. */
+#define	EM_AVR		83	/* Atmel AVR 8-bit microcontroller. */
+#define	EM_FR30		84	/* Fujitsu FR30. */
+#define	EM_D10V		85	/* Mitsubishi D10V. */
+#define	EM_D30V		86	/* Mitsubishi D30V. */
+#define	EM_V850		87	/* NEC v850. */
+#define	EM_M32R		88	/* Mitsubishi M32R. */
+#define	EM_MN10300	89	/* Matsushita MN10300. */
+#define	EM_MN10200	90	/* Matsushita MN10200. */
+#define	EM_PJ		91	/* picoJava. */
+#define	EM_OPENRISC	92	/* OpenRISC 32-bit embedded processor. */
+#define	EM_ARC_A5	93	/* ARC Cores Tangent-A5. */
+#define	EM_XTENSA	94	/* Tensilica Xtensa Architecture. */
+#define	EM_VIDEOCORE	95	/* Alphamosaic VideoCore processor. */
+#define	EM_TMM_GPP	96	/* Thompson Multimedia General Purpose
+				   Processor. */
+#define	EM_NS32K	97	/* National Semiconductor 32000 series. */
+#define	EM_TPC		98	/* Tenor Network TPC processor. */
+#define	EM_SNP1K	99	/* Trebia SNP 1000 processor. */
+#define	EM_ST200	100	/* STMicroelectronics ST200 microcontroller. */
+#define	EM_IP2K		101	/* Ubicom IP2xxx microcontroller family. */
+#define	EM_MAX		102	/* MAX Processor. */
+#define	EM_CR		103	/* National Semiconductor CompactRISC
+				   microprocessor. */
+#define	EM_F2MC16	104	/* Fujitsu F2MC16. */
+#define	EM_MSP430	105	/* Texas Instruments embedded microcontroller
+				   msp430. */
+#define	EM_BLACKFIN	106	/* Analog Devices Blackfin (DSP) processor. */
+#define	EM_SE_C33	107	/* S1C33 Family of Seiko Epson processors. */
+#define	EM_SEP		108	/* Sharp embedded microprocessor. */
+#define	EM_ARCA		109	/* Arca RISC Microprocessor. */
+#define	EM_UNICORE	110	/* Microprocessor series from PKU-Unity Ltd.
+				   and MPRC of Peking University */
+#define	EM_AARCH64	183	/* AArch64 (64-bit ARM) */
+#define	EM_RISCV	243	/* RISC-V */
+
+/* Non-standard or deprecated. */
+#define	EM_486		6	/* Intel i486. */
+#define	EM_MIPS_RS4_BE	10	/* MIPS R4000 Big-Endian */
+#define	EM_ALPHA_STD	41	/* Digital Alpha (standard value). */
+#define	EM_ALPHA	0x9026	/* Alpha (written in the absence of an ABI) */
+
+/**
+ * e_flags
+ */
+#define	EF_ARM_RELEXEC	0x1
+#define	EF_ARM_HASENTRY	0x2
+#define	EF_ARM_SYMSARESORTED	0x4
+#define	EF_ARM_DYNSYMSUSESEGIDX	0x8
+#define	EF_ARM_MAPSYMSFIRST	0x10
+#define	EF_ARM_LE8		0x00400000
+#define	EF_ARM_BE8		0x00800000
+#define	EF_ARM_EABIMASK		0xFF000000
+#define	EF_ARM_EABI_UNKNOWN	0x00000000
+#define	EF_ARM_EABI_VER1	0x01000000
+#define	EF_ARM_EABI_VER2	0x02000000
+#define	EF_ARM_EABI_VER3	0x03000000
+#define	EF_ARM_EABI_VER4	0x04000000
+#define	EF_ARM_EABI_VER5	0x05000000
+#define	EF_ARM_INTERWORK	0x00000004
+#define	EF_ARM_APCS_26		0x00000008
+#define	EF_ARM_APCS_FLOAT	0x00000010
+#define	EF_ARM_PIC		0x00000020
+#define	EF_ARM_ALIGN8		0x00000040
+#define	EF_ARM_NEW_ABI		0x00000080
+#define	EF_ARM_OLD_ABI		0x00000100
+#define	EF_ARM_ABI_FLOAT_SOFT	0x00000200
+#define	EF_ARM_SOFT_FLOAT	EF_ARM_ABI_FLOAT_SOFT /* Pre-V5 ABI name */
+#define	EF_ARM_ABI_FLOAT_HARD	0x00000400
+#define	EF_ARM_VFP_FLOAT	EF_ARM_ABI_FLOAT_HARD /* Pre-V5 ABI name */
+#define	EF_ARM_MAVERICK_FLOAT	0x00000800
+
+#define	EF_MIPS_NOREORDER	0x00000001
+#define	EF_MIPS_PIC		0x00000002	/* Contains PIC code */
+#define	EF_MIPS_CPIC		0x00000004	/* STD PIC calling sequence */
+#define	EF_MIPS_UCODE		0x00000010
+#define	EF_MIPS_ABI2		0x00000020	/* N32 */
+#define	EF_MIPS_OPTIONS_FIRST	0x00000080
+#define	EF_MIPS_ABI		0x0000F000
+#define	EF_MIPS_ABI_O32		0x00001000
+#define	EF_MIPS_ABI_O64		0x00002000
+#define	EF_MIPS_ABI_EABI32	0x00003000
+#define	EF_MIPS_ABI_EABI64	0x00004000
+#define	EF_MIPS_ARCH_ASE	0x0F000000	/* Architectural extensions */
+#define	EF_MIPS_ARCH_ASE_MDMX	0x08000000	/* MDMX multimedia extension */
+#define	EF_MIPS_ARCH_ASE_M16	0x04000000	/* MIPS-16 ISA extensions */
+#define	EF_MIPS_ARCH		0xF0000000	/* Architecture field */
+#define	EF_MIPS_ARCH_1		0x00000000	/* -mips1 code */
+#define	EF_MIPS_ARCH_2		0x10000000	/* -mips2 code */
+#define	EF_MIPS_ARCH_3		0x20000000	/* -mips3 code */
+#define	EF_MIPS_ARCH_4		0x30000000	/* -mips4 code */
+#define	EF_MIPS_ARCH_5		0x40000000	/* -mips5 code */
+#define	EF_MIPS_ARCH_32		0x50000000	/* -mips32 code */
+#define	EF_MIPS_ARCH_64		0x60000000	/* -mips64 code */
+#define	EF_MIPS_ARCH_32R2	0x70000000	/* -mips32r2 code */
+#define	EF_MIPS_ARCH_64R2	0x80000000	/* -mips64r2 code */
+
+#define	EF_PPC_EMB		0x80000000
+#define	EF_PPC_RELOCATABLE	0x00010000
+#define	EF_PPC_RELOCATABLE_LIB	0x00008000
+
+#define	EF_RISCV_RVC		0x00000001
+#define	EF_RISCV_FLOAT_ABI_MASK	0x00000006
+#define	EF_RISCV_FLOAT_ABI_SOFT	0x00000000
+#define	EF_RISCV_FLOAT_ABI_SINGLE 0x000002
+#define	EF_RISCV_FLOAT_ABI_DOUBLE 0x000004
+#define	EF_RISCV_FLOAT_ABI_QUAD	0x00000006
+#define	EF_RISCV_RVE		0x00000008
+#define	EF_RISCV_TSO		0x00000010
+
+#define	EF_SPARC_EXT_MASK	0x00ffff00
+#define	EF_SPARC_32PLUS		0x00000100
+#define	EF_SPARC_SUN_US1	0x00000200
+#define	EF_SPARC_HAL_R1		0x00000200
+#define	EF_SPARC_SUN_US3	0x00000800
+
+#define	EF_SPARCV9_MM		0x00000003
+#define	EF_SPARCV9_TSO		0x00000000
+#define	EF_SPARCV9_PSO		0x00000001
+#define	EF_SPARCV9_RMO		0x00000002
+
+/* Special section indexes. */
+#define	SHN_UNDEF	     0		/* Undefined, missing, irrelevant. */
+#define	SHN_LORESERVE	0xff00		/* First of reserved range. */
+#define	SHN_LOPROC	0xff00		/* First processor-specific. */
+#define	SHN_HIPROC	0xff1f		/* Last processor-specific. */
+#define	SHN_LOOS	0xff20		/* First operating system-specific. */
+#define	SHN_FBSD_CACHED	SHN_LOOS	/* Transient, for sys/kern/link_elf_obj
+					   linker only: Cached global in local
+					   symtab. */
+#define	SHN_HIOS	0xff3f		/* Last operating system-specific. */
+#define	SHN_ABS		0xfff1		/* Absolute values. */
+#define	SHN_COMMON	0xfff2		/* Common data. */
+#define	SHN_XINDEX	0xffff		/* Escape -- index stored elsewhere. */
+#define	SHN_HIRESERVE	0xffff		/* Last of reserved range. */
+
+/* sh_type */
+#define	SHT_NULL		0	/* inactive */
+#define	SHT_PROGBITS		1	/* program defined information */
+#define	SHT_SYMTAB		2	/* symbol table section */
+#define	SHT_STRTAB		3	/* string table section */
+#define	SHT_RELA		4	/* relocation section with addends */
+#define	SHT_HASH		5	/* symbol hash table section */
+#define	SHT_DYNAMIC		6	/* dynamic section */
+#define	SHT_NOTE		7	/* note section */
+#define	SHT_NOBITS		8	/* no space section */
+#define	SHT_REL			9	/* relocation section - no addends */
+#define	SHT_SHLIB		10	/* reserved - purpose unknown */
+#define	SHT_DYNSYM		11	/* dynamic symbol table section */
+#define	SHT_INIT_ARRAY		14	/* Initialization function pointers. */
+#define	SHT_FINI_ARRAY		15	/* Termination function pointers. */
+#define	SHT_PREINIT_ARRAY	16	/* Pre-initialization function ptrs. */
+#define	SHT_GROUP		17	/* Section group. */
+#define	SHT_SYMTAB_SHNDX	18	/* Section indexes (see SHN_XINDEX). */
+#define	SHT_LOOS		0x60000000	/* First of OS specific semantics */
+#define	SHT_LOSUNW		0x6ffffff4
+#define	SHT_SUNW_dof		0x6ffffff4
+#define	SHT_SUNW_cap		0x6ffffff5
+#define	SHT_GNU_ATTRIBUTES	0x6ffffff5
+#define	SHT_SUNW_SIGNATURE	0x6ffffff6
+#define	SHT_GNU_HASH		0x6ffffff6
+#define	SHT_GNU_LIBLIST		0x6ffffff7
+#define	SHT_SUNW_ANNOTATE	0x6ffffff7
+#define	SHT_SUNW_DEBUGSTR	0x6ffffff8
+#define	SHT_SUNW_DEBUG		0x6ffffff9
+#define	SHT_SUNW_move		0x6ffffffa
+#define	SHT_SUNW_COMDAT		0x6ffffffb
+#define	SHT_SUNW_syminfo	0x6ffffffc
+#define	SHT_SUNW_verdef		0x6ffffffd
+#define	SHT_GNU_verdef		0x6ffffffd	/* Symbol versions provided */
+#define	SHT_SUNW_verneed	0x6ffffffe
+#define	SHT_GNU_verneed		0x6ffffffe	/* Symbol versions required */
+#define	SHT_SUNW_versym		0x6fffffff
+#define	SHT_GNU_versym		0x6fffffff	/* Symbol version table */
+#define	SHT_HISUNW		0x6fffffff
+#define	SHT_HIOS		0x6fffffff	/* Last of OS specific semantics */
+#define	SHT_LOPROC		0x70000000	/* reserved range for processor */
+#define	SHT_X86_64_UNWIND	0x70000001	/* unwind information */
+#define	SHT_AMD64_UNWIND	SHT_X86_64_UNWIND 
+
+#define	SHT_ARM_EXIDX		0x70000001	/* Exception index table. */
+#define	SHT_ARM_PREEMPTMAP	0x70000002	/* BPABI DLL dynamic linking 
+						   pre-emption map. */
+#define	SHT_ARM_ATTRIBUTES	0x70000003	/* Object file compatibility 
+						   attributes. */
+#define	SHT_ARM_DEBUGOVERLAY	0x70000004	/* See DBGOVL for details. */
+#define	SHT_ARM_OVERLAYSECTION	0x70000005	/* See DBGOVL for details. */
+#define	SHT_MIPS_LIBLIST	0x70000000
+#define	SHT_MIPS_MSYM		0x70000001
+#define	SHT_MIPS_CONFLICT	0x70000002
+#define	SHT_MIPS_GPTAB		0x70000003
+#define	SHT_MIPS_UCODE		0x70000004
+#define	SHT_MIPS_DEBUG		0x70000005
+#define	SHT_MIPS_REGINFO	0x70000006
+#define	SHT_MIPS_PACKAGE	0x70000007
+#define	SHT_MIPS_PACKSYM	0x70000008
+#define	SHT_MIPS_RELD		0x70000009
+#define	SHT_MIPS_IFACE		0x7000000b
+#define	SHT_MIPS_CONTENT	0x7000000c
+#define	SHT_MIPS_OPTIONS	0x7000000d
+#define	SHT_MIPS_DELTASYM	0x7000001b
+#define	SHT_MIPS_DELTAINST	0x7000001c
+#define	SHT_MIPS_DELTACLASS	0x7000001d
+#define	SHT_MIPS_DWARF		0x7000001e	/* MIPS gcc uses MIPS_DWARF */
+#define	SHT_MIPS_DELTADECL	0x7000001f
+#define	SHT_MIPS_SYMBOL_LIB	0x70000020
+#define	SHT_MIPS_EVENTS		0x70000021
+#define	SHT_MIPS_TRANSLATE	0x70000022
+#define	SHT_MIPS_PIXIE		0x70000023
+#define	SHT_MIPS_XLATE		0x70000024
+#define	SHT_MIPS_XLATE_DEBUG	0x70000025
+#define	SHT_MIPS_WHIRL		0x70000026
+#define	SHT_MIPS_EH_REGION	0x70000027
+#define	SHT_MIPS_XLATE_OLD	0x70000028
+#define	SHT_MIPS_PDR_EXCEPTION	0x70000029
+#define	SHT_MIPS_ABIFLAGS	0x7000002a
+
+#define	SHT_SPARC_GOTDATA	0x70000000
+
+#define	SHTORDERED
+#define	SHT_HIPROC		0x7fffffff	/* specific section header types */
+#define	SHT_LOUSER		0x80000000	/* reserved range for application */
+#define	SHT_HIUSER		0xffffffff	/* specific indexes */
+
+/* Flags for sh_flags. */
+#define	SHF_WRITE		0x1	/* Section contains writable data. */
+#define	SHF_ALLOC		0x2	/* Section occupies memory. */
+#define	SHF_EXECINSTR		0x4	/* Section contains instructions. */
+#define	SHF_MERGE		0x10	/* Section may be merged. */
+#define	SHF_STRINGS		0x20	/* Section contains strings. */
+#define	SHF_INFO_LINK		0x40	/* sh_info holds section index. */
+#define	SHF_LINK_ORDER		0x80	/* Special ordering requirements. */
+#define	SHF_OS_NONCONFORMING	0x100	/* OS-specific processing required. */
+#define	SHF_GROUP		0x200	/* Member of section group. */
+#define	SHF_TLS			0x400	/* Section contains TLS data. */
+#define	SHF_COMPRESSED		0x800	/* Section contains compressed data. */
+#define	SHF_MASKOS	0x0ff00000	/* OS-specific semantics. */
+#define	SHF_MASKPROC	0xf0000000	/* Processor-specific semantics. */
+
+/* Flags for section groups. */
+#define	GRP_COMDAT	0x1	/* COMDAT semantics. */
+
+/*
+ * Flags / mask for .gnu.versym sections.
+ */
+#define	VERSYM_VERSION	0x7fff
+#define	VERSYM_HIDDEN	0x8000
+
+/* Values for p_type. */
+#define	PT_NULL		0	/* Unused entry. */
+#define	PT_LOAD		1	/* Loadable segment. */
+#define	PT_DYNAMIC	2	/* Dynamic linking information segment. */
+#define	PT_INTERP	3	/* Pathname of interpreter. */
+#define	PT_NOTE		4	/* Auxiliary information. */
+#define	PT_SHLIB	5	/* Reserved (not used). */
+#define	PT_PHDR		6	/* Location of program header itself. */
+#define	PT_TLS		7	/* Thread local storage segment */
+#define	PT_LOOS		0x60000000	/* First OS-specific. */
+#define	PT_SUNW_UNWIND	0x6464e550	/* amd64 UNWIND program header */
+#define	PT_DUMP_DELTA	0x6fb5d000	/* va->pa map for kernel dumps
+					   (currently arm). */
+#define	PT_LOSUNW	0x6ffffffa
+#define	PT_SUNWBSS	0x6ffffffa	/* Sun Specific segment */
+#define	PT_SUNWSTACK	0x6ffffffb	/* describes the stack segment */
+#define	PT_SUNWDTRACE	0x6ffffffc	/* private */
+#define	PT_SUNWCAP	0x6ffffffd	/* hard/soft capabilities segment */
+#define	PT_HISUNW	0x6fffffff
+#define	PT_HIOS		0x6fffffff	/* Last OS-specific. */
+#define	PT_LOPROC	0x70000000	/* First processor-specific type. */
+#define	PT_ARM_ARCHEXT	0x70000000	/* ARM arch compat information. */
+#define	PT_ARM_EXIDX	0x70000001	/* ARM exception unwind tables. */
+#define	PT_MIPS_REGINFO		0x70000000	/* MIPS register usage info */
+#define	PT_MIPS_RTPROC		0x70000001	/* MIPS runtime procedure tbl */
+#define	PT_MIPS_OPTIONS		0x70000002	/* MIPS e_flags value*/
+#define	PT_MIPS_ABIFLAGS	0x70000003	/* MIPS fp mode */
+#define	PT_HIPROC	0x7fffffff	/* Last processor-specific type. */
+
+#define	PT_OPENBSD_RANDOMIZE	0x65A3DBE6	/* OpenBSD random data segment */
+#define	PT_OPENBSD_WXNEEDED	0x65A3DBE7	/* OpenBSD EXEC/WRITE pages needed */
+#define	PT_OPENBSD_BOOTDATA	0x65A41BE6	/* OpenBSD section for boot args */
+
+/* Values for p_flags. */
+#define	PF_X		0x1		/* Executable. */
+#define	PF_W		0x2		/* Writable. */
+#define	PF_R		0x4		/* Readable. */
+#define	PF_MASKOS	0x0ff00000	/* Operating system-specific. */
+#define	PF_MASKPROC	0xf0000000	/* Processor-specific. */
+
+/* Extended program header index. */
+#define	PN_XNUM		0xffff
+
+/* Values for d_tag. */
+#define	DT_NULL		0	/* Terminating entry. */
+#define	DT_NEEDED	1	/* String table offset of a needed shared
+				   library. */
+#define	DT_PLTRELSZ	2	/* Total size in bytes of PLT relocations. */
+#define	DT_PLTGOT	3	/* Processor-dependent address. */
+#define	DT_HASH		4	/* Address of symbol hash table. */
+#define	DT_STRTAB	5	/* Address of string table. */
+#define	DT_SYMTAB	6	/* Address of symbol table. */
+#define	DT_RELA		7	/* Address of ElfNN_Rela relocations. */
+#define	DT_RELASZ	8	/* Total size of ElfNN_Rela relocations. */
+#define	DT_RELAENT	9	/* Size of each ElfNN_Rela relocation entry. */
+#define	DT_STRSZ	10	/* Size of string table. */
+#define	DT_SYMENT	11	/* Size of each symbol table entry. */
+#define	DT_INIT		12	/* Address of initialization function. */
+#define	DT_FINI		13	/* Address of finalization function. */
+#define	DT_SONAME	14	/* String table offset of shared object
+				   name. */
+#define	DT_RPATH	15	/* String table offset of library path. [sup] */
+#define	DT_SYMBOLIC	16	/* Indicates "symbolic" linking. [sup] */
+#define	DT_REL		17	/* Address of ElfNN_Rel relocations. */
+#define	DT_RELSZ	18	/* Total size of ElfNN_Rel relocations. */
+#define	DT_RELENT	19	/* Size of each ElfNN_Rel relocation. */
+#define	DT_PLTREL	20	/* Type of relocation used for PLT. */
+#define	DT_DEBUG	21	/* Reserved (not used). */
+#define	DT_TEXTREL	22	/* Indicates there may be relocations in
+				   non-writable segments. [sup] */
+#define	DT_JMPREL	23	/* Address of PLT relocations. */
+#define	DT_BIND_NOW	24	/* [sup] */
+#define	DT_INIT_ARRAY	25	/* Address of the array of pointers to
+				   initialization functions */
+#define	DT_FINI_ARRAY	26	/* Address of the array of pointers to
+				   termination functions */
+#define	DT_INIT_ARRAYSZ	27	/* Size in bytes of the array of
+				   initialization functions. */
+#define	DT_FINI_ARRAYSZ	28	/* Size in bytes of the array of
+				   termination functions. */
+#define	DT_RUNPATH	29	/* String table offset of a null-terminated
+				   library search path string. */
+#define	DT_FLAGS	30	/* Object specific flag values. */
+#define	DT_ENCODING	32	/* Values greater than or equal to DT_ENCODING
+				   and less than DT_LOOS follow the rules for
+				   the interpretation of the d_un union
+				   as follows: even == 'd_ptr', odd == 'd_val'
+				   or none */
+#define	DT_PREINIT_ARRAY 32	/* Address of the array of pointers to
+				   pre-initialization functions. */
+#define	DT_PREINIT_ARRAYSZ 33	/* Size in bytes of the array of
+				   pre-initialization functions. */
+#define	DT_MAXPOSTAGS	34	/* number of positive tags */
+#define	DT_RELRSZ	35	/* Total size of ElfNN_Relr relocations. */
+#define	DT_RELR		36	/* Address of ElfNN_Relr relocations. */
+#define	DT_RELRENT	37	/* Size of each ElfNN_Relr relocation. */
+#define	DT_LOOS		0x6000000d	/* First OS-specific */
+#define	DT_SUNW_AUXILIARY	0x6000000d	/* symbol auxiliary name */
+#define	DT_SUNW_RTLDINF		0x6000000e	/* ld.so.1 info (private) */
+#define	DT_SUNW_FILTER		0x6000000f	/* symbol filter name */
+#define	DT_SUNW_CAP		0x60000010	/* hardware/software */
+#define	DT_SUNW_ASLR		0x60000023	/* ASLR control */
+#define	DT_HIOS		0x6ffff000	/* Last OS-specific */
+
+/*
+ * DT_* entries which fall between DT_VALRNGHI & DT_VALRNGLO use the
+ * Dyn.d_un.d_val field of the Elf*_Dyn structure.
+ */
+#define	DT_VALRNGLO	0x6ffffd00
+#define	DT_GNU_PRELINKED	0x6ffffdf5 /* prelinking timestamp */
+#define	DT_GNU_CONFLICTSZ	0x6ffffdf6 /* size of conflict section */
+#define	DT_GNU_LIBLISTSZ	0x6ffffdf7 /* size of library list */
+#define	DT_CHECKSUM	0x6ffffdf8	/* elf checksum */
+#define	DT_PLTPADSZ	0x6ffffdf9	/* pltpadding size */
+#define	DT_MOVEENT	0x6ffffdfa	/* move table entry size */
+#define	DT_MOVESZ	0x6ffffdfb	/* move table size */
+#define	DT_FEATURE	0x6ffffdfc	/* feature holder */
+#define	DT_FEATURE_1	DT_FEATURE
+#define	DT_POSFLAG_1	0x6ffffdfd	/* flags for DT_* entries, effecting */
+					/*	the following DT_* entry. */
+					/*	See DF_P1_* definitions */
+#define	DT_SYMINSZ	0x6ffffdfe	/* syminfo table size (in bytes) */
+#define	DT_SYMINENT	0x6ffffdff	/* syminfo entry size (in bytes) */
+#define	DT_VALRNGHI	0x6ffffdff
+
+/*
+ * DT_* entries which fall between DT_ADDRRNGHI & DT_ADDRRNGLO use the
+ * Dyn.d_un.d_ptr field of the Elf*_Dyn structure.
+ *
+ * If any adjustment is made to the ELF object after it has been
+ * built, these entries will need to be adjusted.
+ */
+#define	DT_ADDRRNGLO	0x6ffffe00
+#define	DT_GNU_HASH	0x6ffffef5	/* GNU-style hash table */
+#define	DT_TLSDESC_PLT	0x6ffffef6	/* loc. of PLT for tlsdesc resolver */
+#define	DT_TLSDESC_GOT	0x6ffffef7	/* loc. of GOT for tlsdesc resolver */
+#define	DT_GNU_CONFLICT	0x6ffffef8	/* address of conflict section */
+#define	DT_GNU_LIBLIST	0x6ffffef9	/* address of library list */
+#define	DT_CONFIG	0x6ffffefa	/* configuration information */
+#define	DT_DEPAUDIT	0x6ffffefb	/* dependency auditing */
+#define	DT_AUDIT	0x6ffffefc	/* object auditing */
+#define	DT_PLTPAD	0x6ffffefd	/* pltpadding (sparcv9) */
+#define	DT_MOVETAB	0x6ffffefe	/* move table */
+#define	DT_SYMINFO	0x6ffffeff	/* syminfo table */
+#define	DT_ADDRRNGHI	0x6ffffeff
+
+#define	DT_VERSYM	0x6ffffff0	/* Address of versym section. */
+#define	DT_RELACOUNT	0x6ffffff9	/* number of RELATIVE relocations */
+#define	DT_RELCOUNT	0x6ffffffa	/* number of RELATIVE relocations */
+#define	DT_FLAGS_1	0x6ffffffb	/* state flags - see DF_1_* defs */
+#define	DT_VERDEF	0x6ffffffc	/* Address of verdef section. */
+#define	DT_VERDEFNUM	0x6ffffffd	/* Number of elems in verdef section */
+#define	DT_VERNEED	0x6ffffffe	/* Address of verneed section. */
+#define	DT_VERNEEDNUM	0x6fffffff	/* Number of elems in verneed section */
+
+#define	DT_LOPROC	0x70000000	/* First processor-specific type. */
+
+#define	DT_AARCH64_BTI_PLT		0x70000001
+#define	DT_AARCH64_PAC_PLT		0x70000003
+#define	DT_AARCH64_VARIANT_PCS		0x70000005
+
+#define	DT_ARM_SYMTABSZ			0x70000001
+#define	DT_ARM_PREEMPTMAP		0x70000002
+
+#define	DT_SPARC_REGISTER		0x70000001
+#define	DT_DEPRECATED_SPARC_REGISTER	0x7000001
+
+#define	DT_MIPS_RLD_VERSION		0x70000001
+#define	DT_MIPS_TIME_STAMP		0x70000002
+#define	DT_MIPS_ICHECKSUM		0x70000003
+#define	DT_MIPS_IVERSION		0x70000004
+#define	DT_MIPS_FLAGS			0x70000005
+#define	DT_MIPS_BASE_ADDRESS		0x70000006
+#define	DT_MIPS_CONFLICT		0x70000008
+#define	DT_MIPS_LIBLIST			0x70000009
+#define	DT_MIPS_LOCAL_GOTNO		0x7000000a
+#define	DT_MIPS_CONFLICTNO		0x7000000b
+#define	DT_MIPS_LIBLISTNO		0x70000010
+#define	DT_MIPS_SYMTABNO		0x70000011
+#define	DT_MIPS_UNREFEXTNO		0x70000012
+#define	DT_MIPS_GOTSYM			0x70000013
+#define	DT_MIPS_HIPAGENO		0x70000014
+#define	DT_MIPS_RLD_MAP			0x70000016
+#define	DT_MIPS_DELTA_CLASS		0x70000017
+#define	DT_MIPS_DELTA_CLASS_NO		0x70000018
+#define	DT_MIPS_DELTA_INSTANCE		0x70000019
+#define	DT_MIPS_DELTA_INSTANCE_NO	0x7000001A
+#define	DT_MIPS_DELTA_RELOC		0x7000001B
+#define	DT_MIPS_DELTA_RELOC_NO		0x7000001C
+#define	DT_MIPS_DELTA_SYM		0x7000001D
+#define	DT_MIPS_DELTA_SYM_NO		0x7000001E
+#define	DT_MIPS_DELTA_CLASSSYM		0x70000020
+#define	DT_MIPS_DELTA_CLASSSYM_NO	0x70000021
+#define	DT_MIPS_CXX_FLAGS		0x70000022
+#define	DT_MIPS_PIXIE_INIT		0x70000023
+#define	DT_MIPS_SYMBOL_LIB		0x70000024
+#define	DT_MIPS_LOCALPAGE_GOTIDX	0x70000025
+#define	DT_MIPS_LOCAL_GOTIDX		0x70000026
+#define	DT_MIPS_HIDDEN_GOTIDX		0x70000027
+#define	DT_MIPS_PROTECTED_GOTIDX	0x70000028
+#define	DT_MIPS_OPTIONS			0x70000029
+#define	DT_MIPS_INTERFACE		0x7000002A
+#define	DT_MIPS_DYNSTR_ALIGN		0x7000002B
+#define	DT_MIPS_INTERFACE_SIZE		0x7000002C
+#define	DT_MIPS_RLD_TEXT_RESOLVE_ADDR	0x7000002D
+#define	DT_MIPS_PERF_SUFFIX		0x7000002E
+#define	DT_MIPS_COMPACT_SIZE		0x7000002F
+#define	DT_MIPS_GP_VALUE		0x70000030
+#define	DT_MIPS_AUX_DYNAMIC		0x70000031
+#define	DT_MIPS_PLTGOT			0x70000032
+#define	DT_MIPS_RLD_OBJ_UPDATE		0x70000033
+#define	DT_MIPS_RWPLT			0x70000034
+#define	DT_MIPS_RLD_MAP_REL		0x70000035
+
+#define	DT_PPC_GOT			0x70000000
+#define	DT_PPC_TLSOPT			0x70000001
+
+#define	DT_PPC64_GLINK			0x70000000
+#define	DT_PPC64_OPD			0x70000001
+#define	DT_PPC64_OPDSZ			0x70000002
+#define	DT_PPC64_TLSOPT			0x70000003
+
+#define	DT_AUXILIARY	0x7ffffffd	/* shared library auxiliary name */
+#define	DT_USED		0x7ffffffe	/* ignored - same as needed */
+#define	DT_FILTER	0x7fffffff	/* shared library filter name */
+#define	DT_HIPROC	0x7fffffff	/* Last processor-specific type. */
+
+/* Values for DT_FLAGS */
+#define	DF_ORIGIN	0x0001	/* Indicates that the object being loaded may
+				   make reference to the $ORIGIN substitution
+				   string */
+#define	DF_SYMBOLIC	0x0002	/* Indicates "symbolic" linking. */
+#define	DF_TEXTREL	0x0004	/* Indicates there may be relocations in
+				   non-writable segments. */
+#define	DF_BIND_NOW	0x0008	/* Indicates that the dynamic linker should
+				   process all relocations for the object
+				   containing this entry before transferring
+				   control to the program. */
+#define	DF_STATIC_TLS	0x0010	/* Indicates that the shared object or
+				   executable contains code using a static
+				   thread-local storage scheme. */
+
+/* Values for DT_FLAGS_1 */
+#define	DF_1_BIND_NOW	0x00000001	/* Same as DF_BIND_NOW */
+#define	DF_1_GLOBAL	0x00000002	/* Set the RTLD_GLOBAL for object */
+#define	DF_1_NODELETE	0x00000008	/* Set the RTLD_NODELETE for object */
+#define	DF_1_LOADFLTR	0x00000010	/* Immediate loading of filtees */
+#define	DF_1_NOOPEN     0x00000040	/* Do not allow loading on dlopen() */
+#define	DF_1_ORIGIN	0x00000080	/* Process $ORIGIN */
+#define	DF_1_INTERPOSE	0x00000400	/* Interpose all objects but main */
+#define	DF_1_NODEFLIB	0x00000800	/* Do not search default paths */
+#define	DF_1_PIE	0x08000000	/* Is position-independent executable */
+
+/* Values for l_flags. */
+#define	LL_NONE			0x0	/* no flags */
+#define	LL_EXACT_MATCH		0x1	/* require an exact match */
+#define	LL_IGNORE_INT_VER	0x2	/* ignore version incompatibilities */
+#define	LL_REQUIRE_MINOR	0x4
+#define	LL_EXPORTS		0x8
+#define	LL_DELAY_LOAD		0x10
+#define	LL_DELTA		0x20
+
+/* Note section names */
+#define	ELF_NOTE_FREEBSD	"FreeBSD"
+#define	ELF_NOTE_NETBSD		"NetBSD"
+#define	ELF_NOTE_SOLARIS	"SUNW Solaris"
+#define	ELF_NOTE_GNU		"GNU"
+
+/* Values for n_type used in executables. */
+#define	NT_FREEBSD_ABI_TAG	1
+#define	NT_FREEBSD_NOINIT_TAG	2
+#define	NT_FREEBSD_ARCH_TAG	3
+#define	NT_FREEBSD_FEATURE_CTL	4
+
+/* NT_FREEBSD_FEATURE_CTL desc[0] bits */
+#define	NT_FREEBSD_FCTL_ASLR_DISABLE	0x00000001
+#define	NT_FREEBSD_FCTL_PROTMAX_DISABLE	0x00000002
+#define	NT_FREEBSD_FCTL_STKGAP_DISABLE	0x00000004
+#define	NT_FREEBSD_FCTL_WXNEEDED	0x00000008
+#define	NT_FREEBSD_FCTL_LA48		0x00000010
+/* was ASG_DISABLE, do not reuse	0x00000020 */
+
+/* Values for n_type.  Used in core files. */
+#define	NT_PRSTATUS	1	/* Process status. */
+#define	NT_FPREGSET	2	/* Floating point registers. */
+#define	NT_PRPSINFO	3	/* Process state info. */
+#define	NT_THRMISC	7	/* Thread miscellaneous info. */
+#define	NT_PROCSTAT_PROC	8	/* Procstat proc data. */
+#define	NT_PROCSTAT_FILES	9	/* Procstat files data. */
+#define	NT_PROCSTAT_VMMAP	10	/* Procstat vmmap data. */
+#define	NT_PROCSTAT_GROUPS	11	/* Procstat groups data. */
+#define	NT_PROCSTAT_UMASK	12	/* Procstat umask data. */
+#define	NT_PROCSTAT_RLIMIT	13	/* Procstat rlimit data. */
+#define	NT_PROCSTAT_OSREL	14	/* Procstat osreldate data. */
+#define	NT_PROCSTAT_PSSTRINGS	15	/* Procstat ps_strings data. */
+#define	NT_PROCSTAT_AUXV	16	/* Procstat auxv data. */
+#define	NT_PTLWPINFO		17	/* Thread ptrace miscellaneous info. */
+#define	NT_PPC_VMX	0x100	/* PowerPC Altivec/VMX registers */
+#define	NT_PPC_VSX	0x102	/* PowerPC VSX registers */
+#define	NT_X86_SEGBASES	0x200	/* x86 FS/GS base addresses. */
+#define	NT_X86_XSTATE	0x202	/* x86 XSAVE extended state. */
+#define	NT_ARM_VFP	0x400	/* ARM VFP registers */
+#define	NT_ARM_TLS	0x401	/* ARM TLS register */
+#define	NT_ARM_ADDR_MASK	0x406	/* arm64 address mask (e.g. for TBI) */
+
+/* GNU note types. */
+#define	NT_GNU_ABI_TAG		1
+#define	NT_GNU_HWCAP		2
+#define	NT_GNU_BUILD_ID		3
+#define	NT_GNU_GOLD_VERSION	4
+#define	NT_GNU_PROPERTY_TYPE_0	5
+
+#define	GNU_PROPERTY_LOPROC			0xc0000000
+#define	GNU_PROPERTY_HIPROC			0xdfffffff
+
+#define	GNU_PROPERTY_AARCH64_FEATURE_1_AND	0xc0000000
+
+#define	GNU_PROPERTY_AARCH64_FEATURE_1_PAC	0x00000002
+
+#define	GNU_PROPERTY_X86_FEATURE_1_AND		0xc0000002
+
+#define	GNU_PROPERTY_X86_FEATURE_1_IBT		0x00000001
+#define	GNU_PROPERTY_X86_FEATURE_1_SHSTK	0x00000002
+
+/* Symbol Binding - ELFNN_ST_BIND - st_info */
+#define	STB_LOCAL	0	/* Local symbol */
+#define	STB_GLOBAL	1	/* Global symbol */
+#define	STB_WEAK	2	/* like global - lower precedence */
+#define	STB_LOOS	10	/* Start of operating system reserved range. */
+#define	STB_GNU_UNIQUE	10	/* Unique symbol (GNU) */
+#define	STB_HIOS	12	/* End of operating system reserved range. */
+#define	STB_LOPROC	13	/* reserved range for processor */
+#define	STB_HIPROC	15	/*   specific semantics. */
+
+/* Symbol type - ELFNN_ST_TYPE - st_info */
+#define	STT_NOTYPE	0	/* Unspecified type. */
+#define	STT_OBJECT	1	/* Data object. */
+#define	STT_FUNC	2	/* Function. */
+#define	STT_SECTION	3	/* Section. */
+#define	STT_FILE	4	/* Source file. */
+#define	STT_COMMON	5	/* Uninitialized common block. */
+#define	STT_TLS		6	/* TLS object. */
+#define	STT_NUM		7
+#define	STT_LOOS	10	/* Reserved range for operating system */
+#define	STT_GNU_IFUNC	10
+#define	STT_HIOS	12	/*   specific semantics. */
+#define	STT_LOPROC	13	/* Start of processor reserved range. */
+#define	STT_SPARC_REGISTER 13	/* SPARC register information. */
+#define	STT_HIPROC	15	/* End of processor reserved range. */
+
+/* Symbol visibility - ELFNN_ST_VISIBILITY - st_other */
+#define	STV_DEFAULT	0x0	/* Default visibility (see binding). */
+#define	STV_INTERNAL	0x1	/* Special meaning in relocatable objects. */
+#define	STV_HIDDEN	0x2	/* Not visible. */
+#define	STV_PROTECTED	0x3	/* Visible but not preemptible. */
+#define	STV_EXPORTED	0x4
+#define	STV_SINGLETON	0x5
+#define	STV_ELIMINATE	0x6
+
+/* Special symbol table indexes. */
+#define	STN_UNDEF	0	/* Undefined symbol index. */
+
+/* Symbol versioning flags. */
+#define	VER_DEF_CURRENT	1
+#define	VER_DEF_IDX(x)	VER_NDX(x)
+
+#define	VER_FLG_BASE	0x01
+#define	VER_FLG_WEAK	0x02
+
+#define	VER_NEED_CURRENT	1
+#define	VER_NEED_WEAK	(1u << 15)
+#define	VER_NEED_HIDDEN	VER_NDX_HIDDEN
+#define	VER_NEED_IDX(x)	VER_NDX(x)
+
+#define	VER_NDX_LOCAL	0
+#define	VER_NDX_GLOBAL	1
+#define	VER_NDX_GIVEN	2
+
+#define	VER_NDX_HIDDEN	(1u << 15)
+#define	VER_NDX(x)	((x) & ~(1u << 15))
+
+#define	CA_SUNW_NULL	0
+#define	CA_SUNW_HW_1	1		/* first hardware capabilities entry */
+#define	CA_SUNW_SF_1	2		/* first software capabilities entry */
+
+/*
+ * Syminfo flag values
+ */
+#define	SYMINFO_FLG_DIRECT	0x0001	/* symbol ref has direct association */
+					/*	to object containing defn. */
+#define	SYMINFO_FLG_PASSTHRU	0x0002	/* ignored - see SYMINFO_FLG_FILTER */
+#define	SYMINFO_FLG_COPY	0x0004	/* symbol is a copy-reloc */
+#define	SYMINFO_FLG_LAZYLOAD	0x0008	/* object containing defn should be */
+					/*	lazily-loaded */
+#define	SYMINFO_FLG_DIRECTBIND	0x0010	/* ref should be bound directly to */
+					/*	object containing defn. */
+#define	SYMINFO_FLG_NOEXTDIRECT	0x0020	/* don't let an external reference */
+					/*	directly bind to this symbol */
+#define	SYMINFO_FLG_FILTER	0x0002	/* symbol ref is associated to a */
+#define	SYMINFO_FLG_AUXILIARY	0x0040	/* 	standard or auxiliary filter */
+
+/*
+ * Syminfo.si_boundto values.
+ */
+#define	SYMINFO_BT_SELF		0xffff	/* symbol bound to self */
+#define	SYMINFO_BT_PARENT	0xfffe	/* symbol bound to parent */
+#define	SYMINFO_BT_NONE		0xfffd	/* no special symbol binding */
+#define	SYMINFO_BT_EXTERN	0xfffc	/* symbol defined as external */
+#define	SYMINFO_BT_LOWRESERVE	0xff00	/* beginning of reserved entries */
+
+/*
+ * Syminfo version values.
+ */
+#define	SYMINFO_NONE		0	/* Syminfo version */
+#define	SYMINFO_CURRENT		1
+#define	SYMINFO_NUM		2
+
+/* Values for ch_type (compressed section headers). */
+#define	ELFCOMPRESS_ZLIB	1	/* ZLIB/DEFLATE */
+#define	ELFCOMPRESS_ZSTD	2	/* Zstandard */
+#define	ELFCOMPRESS_LOOS	0x60000000	/* OS-specific */
+#define	ELFCOMPRESS_HIOS	0x6fffffff
+#define	ELFCOMPRESS_LOPROC	0x70000000	/* Processor-specific */
+#define	ELFCOMPRESS_HIPROC	0x7fffffff
+
+/*
+ * Relocation types.
+ *
+ * All machine architectures are defined here to allow tools on one to
+ * handle others.
+ */
+
+#define	R_386_NONE		0	/* No relocation. */
+#define	R_386_32		1	/* Add symbol value. */
+#define	R_386_PC32		2	/* Add PC-relative symbol value. */
+#define	R_386_GOT32		3	/* Add PC-relative GOT offset. */
+#define	R_386_PLT32		4	/* Add PC-relative PLT offset. */
+#define	R_386_COPY		5	/* Copy data from shared object. */
+#define	R_386_GLOB_DAT		6	/* Set GOT entry to data address. */
+#define	R_386_JMP_SLOT		7	/* Set GOT entry to code address. */
+#define	R_386_RELATIVE		8	/* Add load address of shared object. */
+#define	R_386_GOTOFF		9	/* Add GOT-relative symbol address. */
+#define	R_386_GOTPC		10	/* Add PC-relative GOT table address. */
+#define	R_386_32PLT		11
+#define	R_386_TLS_TPOFF		14	/* Negative offset in static TLS block */
+#define	R_386_TLS_IE		15	/* Absolute address of GOT for -ve static TLS */
+#define	R_386_TLS_GOTIE		16	/* GOT entry for negative static TLS block */
+#define	R_386_TLS_LE		17	/* Negative offset relative to static TLS */
+#define	R_386_TLS_GD		18	/* 32 bit offset to GOT (index,off) pair */
+#define	R_386_TLS_LDM		19	/* 32 bit offset to GOT (index,zero) pair */
+#define	R_386_16		20
+#define	R_386_PC16		21
+#define	R_386_8			22
+#define	R_386_PC8		23
+#define	R_386_TLS_GD_32		24	/* 32 bit offset to GOT (index,off) pair */
+#define	R_386_TLS_GD_PUSH	25	/* pushl instruction for Sun ABI GD sequence */
+#define	R_386_TLS_GD_CALL	26	/* call instruction for Sun ABI GD sequence */
+#define	R_386_TLS_GD_POP	27	/* popl instruction for Sun ABI GD sequence */
+#define	R_386_TLS_LDM_32	28	/* 32 bit offset to GOT (index,zero) pair */
+#define	R_386_TLS_LDM_PUSH	29	/* pushl instruction for Sun ABI LD sequence */
+#define	R_386_TLS_LDM_CALL	30	/* call instruction for Sun ABI LD sequence */
+#define	R_386_TLS_LDM_POP	31	/* popl instruction for Sun ABI LD sequence */
+#define	R_386_TLS_LDO_32	32	/* 32 bit offset from start of TLS block */
+#define	R_386_TLS_IE_32		33	/* 32 bit offset to GOT static TLS offset entry */
+#define	R_386_TLS_LE_32		34	/* 32 bit offset within static TLS block */
+#define	R_386_TLS_DTPMOD32	35	/* GOT entry containing TLS index */
+#define	R_386_TLS_DTPOFF32	36	/* GOT entry containing TLS offset */
+#define	R_386_TLS_TPOFF32	37	/* GOT entry of -ve static TLS offset */
+#define	R_386_SIZE32		38
+#define	R_386_TLS_GOTDESC	39
+#define	R_386_TLS_DESC_CALL	40
+#define	R_386_TLS_DESC		41
+#define	R_386_IRELATIVE		42	/* PLT entry resolved indirectly at runtime */
+#define	R_386_GOT32X		43
+
+#define	R_AARCH64_NONE		0	/* No relocation */
+#define	R_AARCH64_ABS64		257	/* Absolute offset */
+#define	R_AARCH64_ABS32		258	/* Absolute, 32-bit overflow check */
+#define	R_AARCH64_ABS16		259	/* Absolute, 16-bit overflow check */
+#define	R_AARCH64_PREL64	260	/* PC relative */
+#define	R_AARCH64_PREL32	261	/* PC relative, 32-bit overflow check */
+#define	R_AARCH64_PREL16	262	/* PC relative, 16-bit overflow check */
+#define	R_AARCH64_TSTBR14	279	/* TBZ/TBNZ immediate */
+#define	R_AARCH64_CONDBR19	280	/* Conditional branch immediate */
+#define	R_AARCH64_JUMP26	282	/* Branch immediate */
+#define	R_AARCH64_CALL26	283	/* Call immediate */
+#define	R_AARCH64_COPY		1024	/* Copy data from shared object */
+#define	R_AARCH64_GLOB_DAT	1025	/* Set GOT entry to data address */
+#define	R_AARCH64_JUMP_SLOT	1026	/* Set GOT entry to code address */
+#define	R_AARCH64_RELATIVE 	1027	/* Add load address of shared object */
+#define	R_AARCH64_TLS_DTPREL64	1028
+#define	R_AARCH64_TLS_DTPMOD64	1029
+#define	R_AARCH64_TLS_TPREL64 	1030
+#define	R_AARCH64_TLSDESC 	1031	/* Identify the TLS descriptor */
+#define	R_AARCH64_IRELATIVE	1032
+
+#define	R_ARM_NONE		0	/* No relocation. */
+#define	R_ARM_PC24		1
+#define	R_ARM_ABS32		2
+#define	R_ARM_REL32		3
+#define	R_ARM_PC13		4
+#define	R_ARM_ABS16		5
+#define	R_ARM_ABS12		6
+#define	R_ARM_THM_ABS5		7
+#define	R_ARM_ABS8		8
+#define	R_ARM_SBREL32		9
+#define	R_ARM_THM_PC22		10
+#define	R_ARM_THM_PC8		11
+#define	R_ARM_AMP_VCALL9	12
+#define	R_ARM_SWI24		13
+#define	R_ARM_THM_SWI8		14
+#define	R_ARM_XPC25		15
+#define	R_ARM_THM_XPC22		16
+/* TLS relocations */
+#define	R_ARM_TLS_DTPMOD32	17	/* ID of module containing symbol */
+#define	R_ARM_TLS_DTPOFF32	18	/* Offset in TLS block */
+#define	R_ARM_TLS_TPOFF32	19	/* Offset in static TLS block */
+#define	R_ARM_COPY		20	/* Copy data from shared object. */
+#define	R_ARM_GLOB_DAT		21	/* Set GOT entry to data address. */
+#define	R_ARM_JUMP_SLOT		22	/* Set GOT entry to code address. */
+#define	R_ARM_RELATIVE		23	/* Add load address of shared object. */
+#define	R_ARM_GOTOFF		24	/* Add GOT-relative symbol address. */
+#define	R_ARM_GOTPC		25	/* Add PC-relative GOT table address. */
+#define	R_ARM_GOT32		26	/* Add PC-relative GOT offset. */
+#define	R_ARM_PLT32		27	/* Add PC-relative PLT offset. */
+#define	R_ARM_GNU_VTENTRY	100
+#define	R_ARM_GNU_VTINHERIT	101
+#define	R_ARM_RSBREL32		250
+#define	R_ARM_THM_RPC22		251
+#define	R_ARM_RREL32		252
+#define	R_ARM_RABS32		253
+#define	R_ARM_RPC24		254
+#define	R_ARM_RBASE		255
+
+/*	Name			Value	   Field	Calculation */
+#define	R_IA_64_NONE		0	/* None */
+#define	R_IA_64_IMM14		0x21	/* immediate14	S + A */
+#define	R_IA_64_IMM22		0x22	/* immediate22	S + A */
+#define	R_IA_64_IMM64		0x23	/* immediate64	S + A */
+#define	R_IA_64_DIR32MSB	0x24	/* word32 MSB	S + A */
+#define	R_IA_64_DIR32LSB	0x25	/* word32 LSB	S + A */
+#define	R_IA_64_DIR64MSB	0x26	/* word64 MSB	S + A */
+#define	R_IA_64_DIR64LSB	0x27	/* word64 LSB	S + A */
+#define	R_IA_64_GPREL22		0x2a	/* immediate22	@gprel(S + A) */
+#define	R_IA_64_GPREL64I	0x2b	/* immediate64	@gprel(S + A) */
+#define	R_IA_64_GPREL32MSB	0x2c	/* word32 MSB	@gprel(S + A) */
+#define	R_IA_64_GPREL32LSB	0x2d	/* word32 LSB	@gprel(S + A) */
+#define	R_IA_64_GPREL64MSB	0x2e	/* word64 MSB	@gprel(S + A) */
+#define	R_IA_64_GPREL64LSB	0x2f	/* word64 LSB	@gprel(S + A) */
+#define	R_IA_64_LTOFF22		0x32	/* immediate22	@ltoff(S + A) */
+#define	R_IA_64_LTOFF64I	0x33	/* immediate64	@ltoff(S + A) */
+#define	R_IA_64_PLTOFF22	0x3a	/* immediate22	@pltoff(S + A) */
+#define	R_IA_64_PLTOFF64I	0x3b	/* immediate64	@pltoff(S + A) */
+#define	R_IA_64_PLTOFF64MSB	0x3e	/* word64 MSB	@pltoff(S + A) */
+#define	R_IA_64_PLTOFF64LSB	0x3f	/* word64 LSB	@pltoff(S + A) */
+#define	R_IA_64_FPTR64I		0x43	/* immediate64	@fptr(S + A) */
+#define	R_IA_64_FPTR32MSB	0x44	/* word32 MSB	@fptr(S + A) */
+#define	R_IA_64_FPTR32LSB	0x45	/* word32 LSB	@fptr(S + A) */
+#define	R_IA_64_FPTR64MSB	0x46	/* word64 MSB	@fptr(S + A) */
+#define	R_IA_64_FPTR64LSB	0x47	/* word64 LSB	@fptr(S + A) */
+#define	R_IA_64_PCREL60B	0x48	/* immediate60 form1 S + A - P */
+#define	R_IA_64_PCREL21B	0x49	/* immediate21 form1 S + A - P */
+#define	R_IA_64_PCREL21M	0x4a	/* immediate21 form2 S + A - P */
+#define	R_IA_64_PCREL21F	0x4b	/* immediate21 form3 S + A - P */
+#define	R_IA_64_PCREL32MSB	0x4c	/* word32 MSB	S + A - P */
+#define	R_IA_64_PCREL32LSB	0x4d	/* word32 LSB	S + A - P */
+#define	R_IA_64_PCREL64MSB	0x4e	/* word64 MSB	S + A - P */
+#define	R_IA_64_PCREL64LSB	0x4f	/* word64 LSB	S + A - P */
+#define	R_IA_64_LTOFF_FPTR22	0x52	/* immediate22	@ltoff(@fptr(S + A)) */
+#define	R_IA_64_LTOFF_FPTR64I	0x53	/* immediate64	@ltoff(@fptr(S + A)) */
+#define	R_IA_64_LTOFF_FPTR32MSB	0x54	/* word32 MSB	@ltoff(@fptr(S + A)) */
+#define	R_IA_64_LTOFF_FPTR32LSB	0x55	/* word32 LSB	@ltoff(@fptr(S + A)) */
+#define	R_IA_64_LTOFF_FPTR64MSB	0x56	/* word64 MSB	@ltoff(@fptr(S + A)) */
+#define	R_IA_64_LTOFF_FPTR64LSB	0x57	/* word64 LSB	@ltoff(@fptr(S + A)) */
+#define	R_IA_64_SEGREL32MSB	0x5c	/* word32 MSB	@segrel(S + A) */
+#define	R_IA_64_SEGREL32LSB	0x5d	/* word32 LSB	@segrel(S + A) */
+#define	R_IA_64_SEGREL64MSB	0x5e	/* word64 MSB	@segrel(S + A) */
+#define	R_IA_64_SEGREL64LSB	0x5f	/* word64 LSB	@segrel(S + A) */
+#define	R_IA_64_SECREL32MSB	0x64	/* word32 MSB	@secrel(S + A) */
+#define	R_IA_64_SECREL32LSB	0x65	/* word32 LSB	@secrel(S + A) */
+#define	R_IA_64_SECREL64MSB	0x66	/* word64 MSB	@secrel(S + A) */
+#define	R_IA_64_SECREL64LSB	0x67	/* word64 LSB	@secrel(S + A) */
+#define	R_IA_64_REL32MSB	0x6c	/* word32 MSB	BD + A */
+#define	R_IA_64_REL32LSB	0x6d	/* word32 LSB	BD + A */
+#define	R_IA_64_REL64MSB	0x6e	/* word64 MSB	BD + A */
+#define	R_IA_64_REL64LSB	0x6f	/* word64 LSB	BD + A */
+#define	R_IA_64_LTV32MSB	0x74	/* word32 MSB	S + A */
+#define	R_IA_64_LTV32LSB	0x75	/* word32 LSB	S + A */
+#define	R_IA_64_LTV64MSB	0x76	/* word64 MSB	S + A */
+#define	R_IA_64_LTV64LSB	0x77	/* word64 LSB	S + A */
+#define	R_IA_64_PCREL21BI	0x79	/* immediate21 form1 S + A - P */
+#define	R_IA_64_PCREL22		0x7a	/* immediate22	S + A - P */
+#define	R_IA_64_PCREL64I	0x7b	/* immediate64	S + A - P */
+#define	R_IA_64_IPLTMSB		0x80	/* function descriptor MSB special */
+#define	R_IA_64_IPLTLSB		0x81	/* function descriptor LSB speciaal */
+#define	R_IA_64_SUB		0x85	/* immediate64	A - S */
+#define	R_IA_64_LTOFF22X	0x86	/* immediate22	special */
+#define	R_IA_64_LDXMOV		0x87	/* immediate22	special */
+#define	R_IA_64_TPREL14		0x91	/* imm14	@tprel(S + A) */
+#define	R_IA_64_TPREL22		0x92	/* imm22	@tprel(S + A) */
+#define	R_IA_64_TPREL64I	0x93	/* imm64	@tprel(S + A) */
+#define	R_IA_64_TPREL64MSB	0x96	/* word64 MSB	@tprel(S + A) */
+#define	R_IA_64_TPREL64LSB	0x97	/* word64 LSB	@tprel(S + A) */
+#define	R_IA_64_LTOFF_TPREL22	0x9a	/* imm22	@ltoff(@tprel(S+A)) */
+#define	R_IA_64_DTPMOD64MSB	0xa6	/* word64 MSB	@dtpmod(S + A) */
+#define	R_IA_64_DTPMOD64LSB	0xa7	/* word64 LSB	@dtpmod(S + A) */
+#define	R_IA_64_LTOFF_DTPMOD22	0xaa	/* imm22	@ltoff(@dtpmod(S+A)) */
+#define	R_IA_64_DTPREL14	0xb1	/* imm14	@dtprel(S + A) */
+#define	R_IA_64_DTPREL22	0xb2	/* imm22	@dtprel(S + A) */
+#define	R_IA_64_DTPREL64I	0xb3	/* imm64	@dtprel(S + A) */
+#define	R_IA_64_DTPREL32MSB	0xb4	/* word32 MSB	@dtprel(S + A) */
+#define	R_IA_64_DTPREL32LSB	0xb5	/* word32 LSB	@dtprel(S + A) */
+#define	R_IA_64_DTPREL64MSB	0xb6	/* word64 MSB	@dtprel(S + A) */
+#define	R_IA_64_DTPREL64LSB	0xb7	/* word64 LSB	@dtprel(S + A) */
+#define	R_IA_64_LTOFF_DTPREL22	0xba	/* imm22	@ltoff(@dtprel(S+A)) */
+
+#define	R_MIPS_NONE	0	/* No reloc */
+#define	R_MIPS_16	1	/* Direct 16 bit */
+#define	R_MIPS_32	2	/* Direct 32 bit */
+#define	R_MIPS_REL32	3	/* PC relative 32 bit */
+#define	R_MIPS_26	4	/* Direct 26 bit shifted */
+#define	R_MIPS_HI16	5	/* High 16 bit */
+#define	R_MIPS_LO16	6	/* Low 16 bit */
+#define	R_MIPS_GPREL16	7	/* GP relative 16 bit */
+#define	R_MIPS_LITERAL	8	/* 16 bit literal entry */
+#define	R_MIPS_GOT16	9	/* 16 bit GOT entry */
+#define	R_MIPS_PC16	10	/* PC relative 16 bit */
+#define	R_MIPS_CALL16	11	/* 16 bit GOT entry for function */
+#define	R_MIPS_GPREL32	12	/* GP relative 32 bit */
+#define	R_MIPS_64	18	/* Direct 64 bit */
+#define	R_MIPS_GOT_DISP	19
+#define	R_MIPS_GOT_PAGE	20
+#define	R_MIPS_GOT_OFST	21
+#define	R_MIPS_GOT_HI16	22	/* GOT HI 16 bit */
+#define	R_MIPS_GOT_LO16	23	/* GOT LO 16 bit */
+#define	R_MIPS_SUB	24
+#define	R_MIPS_CALLHI16 30	/* upper 16 bit GOT entry for function */
+#define	R_MIPS_CALLLO16 31	/* lower 16 bit GOT entry for function */
+#define	R_MIPS_JALR	37
+#define	R_MIPS_TLS_GD	42
+#define	R_MIPS_COPY	126
+#define	R_MIPS_JUMP_SLOT	127
+
+#define	R_PPC_NONE		0	/* No relocation. */
+#define	R_PPC_ADDR32		1
+#define	R_PPC_ADDR24		2
+#define	R_PPC_ADDR16		3
+#define	R_PPC_ADDR16_LO		4
+#define	R_PPC_ADDR16_HI		5
+#define	R_PPC_ADDR16_HA		6
+#define	R_PPC_ADDR14		7
+#define	R_PPC_ADDR14_BRTAKEN	8
+#define	R_PPC_ADDR14_BRNTAKEN	9
+#define	R_PPC_REL24		10
+#define	R_PPC_REL14		11
+#define	R_PPC_REL14_BRTAKEN	12
+#define	R_PPC_REL14_BRNTAKEN	13
+#define	R_PPC_GOT16		14
+#define	R_PPC_GOT16_LO		15
+#define	R_PPC_GOT16_HI		16
+#define	R_PPC_GOT16_HA		17
+#define	R_PPC_PLTREL24		18
+#define	R_PPC_COPY		19
+#define	R_PPC_GLOB_DAT		20
+#define	R_PPC_JMP_SLOT		21
+#define	R_PPC_RELATIVE		22
+#define	R_PPC_LOCAL24PC		23
+#define	R_PPC_UADDR32		24
+#define	R_PPC_UADDR16		25
+#define	R_PPC_REL32		26
+#define	R_PPC_PLT32		27
+#define	R_PPC_PLTREL32		28
+#define	R_PPC_PLT16_LO		29
+#define	R_PPC_PLT16_HI		30
+#define	R_PPC_PLT16_HA		31
+#define	R_PPC_SDAREL16		32
+#define	R_PPC_SECTOFF		33
+#define	R_PPC_SECTOFF_LO	34
+#define	R_PPC_SECTOFF_HI	35
+#define	R_PPC_SECTOFF_HA	36
+#define	R_PPC_IRELATIVE		248
+
+/*
+ * 64-bit relocations
+ */
+#define	R_PPC64_ADDR64		38
+#define	R_PPC64_ADDR16_HIGHER	39
+#define	R_PPC64_ADDR16_HIGHERA	40
+#define	R_PPC64_ADDR16_HIGHEST	41
+#define	R_PPC64_ADDR16_HIGHESTA	42
+#define	R_PPC64_UADDR64		43
+#define	R_PPC64_REL64		44
+#define	R_PPC64_PLT64		45
+#define	R_PPC64_PLTREL64	46
+#define	R_PPC64_TOC16		47
+#define	R_PPC64_TOC16_LO	48
+#define	R_PPC64_TOC16_HI	49
+#define	R_PPC64_TOC16_HA	50
+#define	R_PPC64_TOC		51
+#define	R_PPC64_DTPMOD64	68
+#define	R_PPC64_TPREL64		73
+#define	R_PPC64_DTPREL64	78
+
+/*
+ * TLS relocations
+ */
+#define	R_PPC_TLS		67
+#define	R_PPC_DTPMOD32		68
+#define	R_PPC_TPREL16		69
+#define	R_PPC_TPREL16_LO	70
+#define	R_PPC_TPREL16_HI	71
+#define	R_PPC_TPREL16_HA	72
+#define	R_PPC_TPREL32		73
+#define	R_PPC_DTPREL16		74
+#define	R_PPC_DTPREL16_LO	75
+#define	R_PPC_DTPREL16_HI	76
+#define	R_PPC_DTPREL16_HA	77
+#define	R_PPC_DTPREL32		78
+#define	R_PPC_GOT_TLSGD16	79
+#define	R_PPC_GOT_TLSGD16_LO	80
+#define	R_PPC_GOT_TLSGD16_HI	81
+#define	R_PPC_GOT_TLSGD16_HA	82
+#define	R_PPC_GOT_TLSLD16	83
+#define	R_PPC_GOT_TLSLD16_LO	84
+#define	R_PPC_GOT_TLSLD16_HI	85
+#define	R_PPC_GOT_TLSLD16_HA	86
+#define	R_PPC_GOT_TPREL16	87
+#define	R_PPC_GOT_TPREL16_LO	88
+#define	R_PPC_GOT_TPREL16_HI	89
+#define	R_PPC_GOT_TPREL16_HA	90
+
+/*
+ * The remaining relocs are from the Embedded ELF ABI, and are not in the
+ *  SVR4 ELF ABI.
+ */
+
+#define	R_PPC_EMB_NADDR32	101
+#define	R_PPC_EMB_NADDR16	102
+#define	R_PPC_EMB_NADDR16_LO	103
+#define	R_PPC_EMB_NADDR16_HI	104
+#define	R_PPC_EMB_NADDR16_HA	105
+#define	R_PPC_EMB_SDAI16	106
+#define	R_PPC_EMB_SDA2I16	107
+#define	R_PPC_EMB_SDA2REL	108
+#define	R_PPC_EMB_SDA21		109
+#define	R_PPC_EMB_MRKREF	110
+#define	R_PPC_EMB_RELSEC16	111
+#define	R_PPC_EMB_RELST_LO	112
+#define	R_PPC_EMB_RELST_HI	113
+#define	R_PPC_EMB_RELST_HA	114
+#define	R_PPC_EMB_BIT_FLD	115
+#define	R_PPC_EMB_RELSDA	116
+
+/*
+ * RISC-V relocation types.
+ */
+
+/* Relocation types used by the dynamic linker. */
+#define	R_RISCV_NONE		0
+#define	R_RISCV_32		1
+#define	R_RISCV_64		2
+#define	R_RISCV_RELATIVE	3
+#define	R_RISCV_COPY		4
+#define	R_RISCV_JUMP_SLOT	5
+#define	R_RISCV_TLS_DTPMOD32	6
+#define	R_RISCV_TLS_DTPMOD64	7
+#define	R_RISCV_TLS_DTPREL32	8
+#define	R_RISCV_TLS_DTPREL64	9
+#define	R_RISCV_TLS_TPREL32	10
+#define	R_RISCV_TLS_TPREL64	11
+
+/* Relocation types not used by the dynamic linker. */
+#define	R_RISCV_BRANCH		16
+#define	R_RISCV_JAL		17
+#define	R_RISCV_CALL		18
+#define	R_RISCV_CALL_PLT	19
+#define	R_RISCV_GOT_HI20	20
+#define	R_RISCV_TLS_GOT_HI20	21
+#define	R_RISCV_TLS_GD_HI20	22
+#define	R_RISCV_PCREL_HI20	23
+#define	R_RISCV_PCREL_LO12_I	24
+#define	R_RISCV_PCREL_LO12_S	25
+#define	R_RISCV_HI20		26
+#define	R_RISCV_LO12_I		27
+#define	R_RISCV_LO12_S		28
+#define	R_RISCV_TPREL_HI20	29
+#define	R_RISCV_TPREL_LO12_I	30
+#define	R_RISCV_TPREL_LO12_S	31
+#define	R_RISCV_TPREL_ADD	32
+#define	R_RISCV_ADD8		33
+#define	R_RISCV_ADD16		34
+#define	R_RISCV_ADD32		35
+#define	R_RISCV_ADD64		36
+#define	R_RISCV_SUB8		37
+#define	R_RISCV_SUB16		38
+#define	R_RISCV_SUB32		39
+#define	R_RISCV_SUB64		40
+#define	R_RISCV_GNU_VTINHERIT	41
+#define	R_RISCV_GNU_VTENTRY	42
+#define	R_RISCV_ALIGN		43
+#define	R_RISCV_RVC_BRANCH	44
+#define	R_RISCV_RVC_JUMP	45
+#define	R_RISCV_RVC_LUI		46
+#define	R_RISCV_RELAX		51
+#define	R_RISCV_SUB6		52
+#define	R_RISCV_SET6		53
+#define	R_RISCV_SET8		54
+#define	R_RISCV_SET16		55
+#define	R_RISCV_SET32		56
+#define	R_RISCV_32_PCREL	57
+#define	R_RISCV_IRELATIVE	58
+
+#define	R_SPARC_NONE		0
+#define	R_SPARC_8		1
+#define	R_SPARC_16		2
+#define	R_SPARC_32		3
+#define	R_SPARC_DISP8		4
+#define	R_SPARC_DISP16		5
+#define	R_SPARC_DISP32		6
+#define	R_SPARC_WDISP30		7
+#define	R_SPARC_WDISP22		8
+#define	R_SPARC_HI22		9
+#define	R_SPARC_22		10
+#define	R_SPARC_13		11
+#define	R_SPARC_LO10		12
+#define	R_SPARC_GOT10		13
+#define	R_SPARC_GOT13		14
+#define	R_SPARC_GOT22		15
+#define	R_SPARC_PC10		16
+#define	R_SPARC_PC22		17
+#define	R_SPARC_WPLT30		18
+#define	R_SPARC_COPY		19
+#define	R_SPARC_GLOB_DAT	20
+#define	R_SPARC_JMP_SLOT	21
+#define	R_SPARC_RELATIVE	22
+#define	R_SPARC_UA32		23
+#define	R_SPARC_PLT32		24
+#define	R_SPARC_HIPLT22		25
+#define	R_SPARC_LOPLT10		26
+#define	R_SPARC_PCPLT32		27
+#define	R_SPARC_PCPLT22		28
+#define	R_SPARC_PCPLT10		29
+#define	R_SPARC_10		30
+#define	R_SPARC_11		31
+#define	R_SPARC_64		32
+#define	R_SPARC_OLO10		33
+#define	R_SPARC_HH22		34
+#define	R_SPARC_HM10		35
+#define	R_SPARC_LM22		36
+#define	R_SPARC_PC_HH22		37
+#define	R_SPARC_PC_HM10		38
+#define	R_SPARC_PC_LM22		39
+#define	R_SPARC_WDISP16		40
+#define	R_SPARC_WDISP19		41
+#define	R_SPARC_GLOB_JMP	42
+#define	R_SPARC_7		43
+#define	R_SPARC_5		44
+#define	R_SPARC_6		45
+#define	R_SPARC_DISP64		46
+#define	R_SPARC_PLT64		47
+#define	R_SPARC_HIX22		48
+#define	R_SPARC_LOX10		49
+#define	R_SPARC_H44		50
+#define	R_SPARC_M44		51
+#define	R_SPARC_L44		52
+#define	R_SPARC_REGISTER	53
+#define	R_SPARC_UA64		54
+#define	R_SPARC_UA16		55
+#define	R_SPARC_TLS_GD_HI22	56
+#define	R_SPARC_TLS_GD_LO10	57
+#define	R_SPARC_TLS_GD_ADD	58
+#define	R_SPARC_TLS_GD_CALL	59
+#define	R_SPARC_TLS_LDM_HI22	60
+#define	R_SPARC_TLS_LDM_LO10	61
+#define	R_SPARC_TLS_LDM_ADD	62
+#define	R_SPARC_TLS_LDM_CALL	63
+#define	R_SPARC_TLS_LDO_HIX22	64
+#define	R_SPARC_TLS_LDO_LOX10	65
+#define	R_SPARC_TLS_LDO_ADD	66
+#define	R_SPARC_TLS_IE_HI22	67
+#define	R_SPARC_TLS_IE_LO10	68
+#define	R_SPARC_TLS_IE_LD	69
+#define	R_SPARC_TLS_IE_LDX	70
+#define	R_SPARC_TLS_IE_ADD	71
+#define	R_SPARC_TLS_LE_HIX22	72
+#define	R_SPARC_TLS_LE_LOX10	73
+#define	R_SPARC_TLS_DTPMOD32	74
+#define	R_SPARC_TLS_DTPMOD64	75
+#define	R_SPARC_TLS_DTPOFF32	76
+#define	R_SPARC_TLS_DTPOFF64	77
+#define	R_SPARC_TLS_TPOFF32	78
+#define	R_SPARC_TLS_TPOFF64	79
+
+#define	R_X86_64_NONE		0	/* No relocation. */
+#define	R_X86_64_64		1	/* Add 64 bit symbol value. */
+#define	R_X86_64_PC32		2	/* PC-relative 32 bit signed sym value. */
+#define	R_X86_64_GOT32		3	/* PC-relative 32 bit GOT offset. */
+#define	R_X86_64_PLT32		4	/* PC-relative 32 bit PLT offset. */
+#define	R_X86_64_COPY		5	/* Copy data from shared object. */
+#define	R_X86_64_GLOB_DAT	6	/* Set GOT entry to data address. */
+#define	R_X86_64_JMP_SLOT	7	/* Set GOT entry to code address. */
+#define	R_X86_64_RELATIVE	8	/* Add load address of shared object. */
+#define	R_X86_64_GOTPCREL	9	/* Add 32 bit signed pcrel offset to GOT. */
+#define	R_X86_64_32		10	/* Add 32 bit zero extended symbol value */
+#define	R_X86_64_32S		11	/* Add 32 bit sign extended symbol value */
+#define	R_X86_64_16		12	/* Add 16 bit zero extended symbol value */
+#define	R_X86_64_PC16		13	/* Add 16 bit signed extended pc relative symbol value */
+#define	R_X86_64_8		14	/* Add 8 bit zero extended symbol value */
+#define	R_X86_64_PC8		15	/* Add 8 bit signed extended pc relative symbol value */
+#define	R_X86_64_DTPMOD64	16	/* ID of module containing symbol */
+#define	R_X86_64_DTPOFF64	17	/* Offset in TLS block */
+#define	R_X86_64_TPOFF64	18	/* Offset in static TLS block */
+#define	R_X86_64_TLSGD		19	/* PC relative offset to GD GOT entry */
+#define	R_X86_64_TLSLD		20	/* PC relative offset to LD GOT entry */
+#define	R_X86_64_DTPOFF32	21	/* Offset in TLS block */
+#define	R_X86_64_GOTTPOFF	22	/* PC relative offset to IE GOT entry */
+#define	R_X86_64_TPOFF32	23	/* Offset in static TLS block */
+#define	R_X86_64_PC64		24	/* PC-relative 64 bit signed sym value. */
+#define	R_X86_64_GOTOFF64	25
+#define	R_X86_64_GOTPC32	26
+#define	R_X86_64_GOT64		27
+#define	R_X86_64_GOTPCREL64	28
+#define	R_X86_64_GOTPC64	29
+#define	R_X86_64_GOTPLT64	30
+#define	R_X86_64_PLTOFF64	31
+#define	R_X86_64_SIZE32		32
+#define	R_X86_64_SIZE64		33
+#define	R_X86_64_GOTPC32_TLSDESC 34
+#define	R_X86_64_TLSDESC_CALL	35
+#define	R_X86_64_TLSDESC	36
+#define	R_X86_64_IRELATIVE	37
+#define	R_X86_64_RELATIVE64	38
+/* 39 and 40 were BND-related, already decomissioned */
+#define	R_X86_64_GOTPCRELX	41
+#define	R_X86_64_REX_GOTPCRELX	42
+
+#define	ELF_BSDF_SIGFASTBLK	0x0001	/* Kernel supports fast sigblock */
+#define	ELF_BSDF_VMNOOVERCOMMIT	0x0002
+
+#endif /* !_SYS_ELF_COMMON_H_ */
diff --git a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/include/bits/elf_x86.h b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/include/bits/elf_x86.h
deleted file mode 100644
index dfbaba0..0000000
--- a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/include/bits/elf_x86.h
+++ /dev/null
@@ -1,60 +0,0 @@
-/*	$NetBSD: elf_machdep.h,v 1.12 2016/02/02 20:16:59 christos Exp $	*/
-
-#ifndef _X86_ELF_MACHDEP_H_
-#define _X86_ELF_MACHDEP_H_
-
-/* i386 relocations */
-#define	R_386_NONE	0
-#define	R_386_32	1
-#define	R_386_PC32	2
-#define	R_386_GOT32	3
-#define	R_386_PLT32	4
-#define	R_386_COPY	5
-#define	R_386_GLOB_DAT	6
-#define	R_386_JMP_SLOT	7
-#define	R_386_RELATIVE	8
-#define	R_386_GOTOFF	9
-#define	R_386_GOTPC	10
-#define	R_386_32PLT	11
-
-/* TLS relocations */
-#define	R_386_TLS_TPOFF	14
-#define	R_386_TLS_IE	15
-#define	R_386_TLS_GOTIE	16
-#define	R_386_TLS_LE	17
-#define	R_386_TLS_GD	18
-#define	R_386_TLS_LDM	19
-
-/* The following relocations are GNU extensions. */
-#define	R_386_16	20
-#define	R_386_PC16	21
-#define	R_386_8		22
-#define	R_386_PC8	23
-
-/* More TLS relocations */
-#define	R_386_TLS_GD_32		24
-#define	R_386_TLS_GD_PUSH	25
-#define	R_386_TLS_GD_CALL	26
-#define	R_386_TLS_GD_POP	27
-#define	R_386_TLS_LDM_32	28
-#define	R_386_TLS_LDM_PUSH	29
-#define	R_386_TLS_LDM_CALL	30
-#define	R_386_TLS_LDM_POP	31
-#define	R_386_TLS_LDO_32	32
-#define	R_386_TLS_IE_32		33
-#define	R_386_TLS_LE_32		34
-#define	R_386_TLS_DTPMOD32	35
-#define	R_386_TLS_DTPOFF32	36
-#define	R_386_TLS_TPOFF32	37
-
-#define R_386_SIZE32		38
-
-/* More TLS relocations */
-#define	R_386_TLS_GOTDESC	39
-#define	R_386_TLS_DESC_CALL	40
-#define	R_386_TLS_DESC		41
-
-#define R_386_IRELATIVE		42
-#define R_386_GOT32X		43
-
-#endif
diff --git a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/include/bits/elf_x86_64.h b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/include/bits/elf_x86_64.h
deleted file mode 100644
index 30062af..0000000
--- a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/include/bits/elf_x86_64.h
+++ /dev/null
@@ -1,55 +0,0 @@
-/*	$NetBSD: elf_machdep.h,v 1.5 2016/02/02 20:13:59 christos Exp $	*/
-
-#ifndef _X86_64_ELF_MACHDEP_H_
-#define _X86_64_ELF_MACHDEP_H_
-
-/* x86-64 relocations */
-
-#define R_X86_64_NONE		0
-#define R_X86_64_64		1
-#define R_X86_64_PC32		2
-#define R_X86_64_GOT32		3
-#define R_X86_64_PLT32		4
-#define R_X86_64_COPY		5
-#define R_X86_64_GLOB_DAT	6
-#define R_X86_64_JUMP_SLOT	7
-#define R_X86_64_RELATIVE	8
-#define R_X86_64_GOTPCREL	9
-#define R_X86_64_32		10
-#define R_X86_64_32S		11
-#define R_X86_64_16		12
-#define R_X86_64_PC16		13
-#define R_X86_64_8		14
-#define R_X86_64_PC8		15
-
-/* TLS relocations */
-#define R_X86_64_DTPMOD64	16
-#define R_X86_64_DTPOFF64	17
-#define R_X86_64_TPOFF64	18
-#define R_X86_64_TLSGD		19
-#define R_X86_64_TLSLD		20
-#define R_X86_64_DTPOFF32	21
-#define R_X86_64_GOTTPOFF	22
-#define R_X86_64_TPOFF32	23
-
-#define R_X86_64_PC64		24
-#define R_X86_64_GOTOFF64	25
-#define R_X86_64_GOTPC32	26
-#define R_X86_64_GOT64		27
-#define R_X86_64_GOTPCREL64	28
-#define R_X86_64_GOTPC64	29
-#define R_X86_64_GOTPLT64	30
-#define R_X86_64_PLTOFF64	31
-#define R_X86_64_SIZE32		32
-#define R_X86_64_SIZE64		33
-#define R_X86_64_GOTPC32_TLSDESC 34
-#define R_X86_64_TLSDESC_CALL	35
-#define R_X86_64_TLSDESC	36
-#define R_X86_64_IRELATIVE	37
-#define R_X86_64_RELATIVE64	38
-#define R_X86_64_PC32_BND	39
-#define R_X86_64_PLT32_BND	40
-#define R_X86_64_GOTPCRELX	41
-#define R_X86_64_REX_GOTPCRELX	42
-
-#endif
diff --git a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/include/bits/fenv_riscv64.h b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/include/bits/fenv_riscv64.h
new file mode 100644
index 0000000..e1e43b6
--- /dev/null
+++ b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/include/bits/fenv_riscv64.h
@@ -0,0 +1,52 @@
+/*
+ * Copyright (C) 2022 The Android Open Source Project
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *  * Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ *  * Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in
+ *    the documentation and/or other materials provided with the
+ *    distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+ * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+ * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
+ * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
+ * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+ * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
+ * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ */
+
+#pragma once
+
+#include <sys/types.h>
+
+__BEGIN_DECLS
+
+typedef __uint32_t fenv_t;
+typedef __uint32_t fexcept_t;
+
+/* Exception flags. No FE_DENORMAL for riscv64. */
+#define FE_INEXACT    0x01
+#define FE_UNDERFLOW  0x02
+#define FE_OVERFLOW   0x04
+#define FE_DIVBYZERO  0x08
+#define FE_INVALID    0x10
+#define FE_ALL_EXCEPT (FE_DIVBYZERO | FE_INEXACT | FE_INVALID | FE_OVERFLOW | FE_UNDERFLOW)
+
+/* Rounding modes. */
+#define FE_TONEAREST  0x0
+#define FE_TOWARDZERO 0x1
+#define FE_DOWNWARD   0x2
+#define FE_UPWARD     0x3
+
+__END_DECLS
diff --git a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/include/bits/fortify/fcntl.h b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/include/bits/fortify/fcntl.h
index 7063541..7fe60f4 100644
--- a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/include/bits/fortify/fcntl.h
+++ b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/include/bits/fortify/fcntl.h
@@ -41,7 +41,7 @@
 #if defined(__BIONIC_FORTIFY)
 #define __open_too_many_args_error "too many arguments"
 #define __open_too_few_args_error "called with O_CREAT or O_TMPFILE, but missing mode"
-#define __open_useless_modes_warning "has superfluous mode bits; missing O_CREAT?"
+#define __open_useless_modes_warning "has superfluous mode bits; missing O_CREAT or O_TMPFILE?"
 /* O_TMPFILE shares bits with O_DIRECTORY. */
 #define __open_modes_useful(flags) (((flags) & O_CREAT) || ((flags) & O_TMPFILE) == O_TMPFILE)
 
diff --git a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/include/elf.h b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/include/elf.h
index 4739bbd..1dfc008 100644
--- a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/include/elf.h
+++ b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/include/elf.h
@@ -30,13 +30,12 @@
 
 #include <sys/cdefs.h>
 
-#include <bits/auxvec.h>
-#include <bits/elf_arm.h>
-#include <bits/elf_arm64.h>
-#include <bits/elf_x86.h>
-#include <bits/elf_x86_64.h>
 #include <linux/elf.h>
 #include <linux/elf-em.h>
+#undef EI_PAD
+
+#include <bits/auxvec.h>
+#include <bits/elf_common.h>
 
 /* http://www.sco.com/developers/gabi/latest/ch4.intro.html */
 typedef __u64 Elf32_Xword;
@@ -83,14 +82,6 @@
   Elf64_Word l_version;
   Elf64_Word l_flags;
 } Elf64_Lib;
-/* ElfW(Lib)::l_flags values. */
-#define LL_NONE 0x0
-#define LL_EXACT_MATCH 0x1
-#define LL_IGNORE_INT_VER 0x2
-#define LL_REQUIRE_MINOR 0x4
-#define LL_EXPORTS 0x8
-#define LL_DELAY_LOAD 0x10
-#define LL_DELTA 0x20
 
 typedef struct {
   Elf32_Xword m_value;
@@ -118,14 +109,6 @@
   Elf64_Half si_boundto;
   Elf64_Half si_flags;
 } Elf64_Syminfo;
-/* ElfW(Syminfo)::si_boundto values. */
-#define SYMINFO_BT_SELF 0xffff
-#define SYMINFO_BT_PARENT 0xfffe
-/* ElfW(Syminfo)::si_flags values. */
-#define SYMINFO_FLG_DIRECT 0x1
-#define SYMINFO_FLG_PASSTHRU 0x2
-#define SYMINFO_FLG_COPY 0x4
-#define SYMINFO_FLG_LAZYLOAD 0x8
 
 typedef Elf32_Half Elf32_Versym;
 typedef Elf64_Half Elf64_Versym;
@@ -197,24 +180,12 @@
 typedef Elf64_Xword Elf64_Relr;
 
 /* http://www.sco.com/developers/gabi/latest/ch5.dynamic.html */
-#define DF_ORIGIN     0x00000001
-#define DF_SYMBOLIC   0x00000002
-#define DF_TEXTREL    0x00000004
-#define DF_BIND_NOW   0x00000008
-#define DF_STATIC_TLS 0x00000010
 
 #define DF_1_NOW        0x00000001 /* Perform complete relocation processing. */
-#define DF_1_GLOBAL     0x00000002 /* implies RTLD_GLOBAL */
 #define DF_1_GROUP      0x00000004
-#define DF_1_NODELETE   0x00000008 /* implies RTLD_NODELETE */
-#define DF_1_LOADFLTR   0x00000010
 #define DF_1_INITFIRST  0x00000020
-#define DF_1_NOOPEN     0x00000040 /* Object can not be used with dlopen(3) */
-#define DF_1_ORIGIN     0x00000080
 #define DF_1_DIRECT     0x00000100
 #define DF_1_TRANS      0x00000200
-#define DF_1_INTERPOSE  0x00000400
-#define DF_1_NODEFLIB   0x00000800
 #define DF_1_NODUMP     0x00001000 /* Object cannot be dumped with dldump(3) */
 #define DF_1_CONFALT    0x00002000
 #define DF_1_ENDFILTEE  0x00004000
@@ -230,58 +201,10 @@
 #define DF_1_GLOBAUDIT  0x01000000
 #define DF_1_SINGLETON  0x02000000
 #define DF_1_STUB       0x04000000
-#define DF_1_PIE        0x08000000
-
-/* http://www.sco.com/developers/gabi/latest/ch5.dynamic.html */
-#define DT_BIND_NOW 24
-#define DT_INIT_ARRAY 25
-#define DT_FINI_ARRAY 26
-#define DT_INIT_ARRAYSZ 27
-#define DT_FINI_ARRAYSZ 28
-#define DT_RUNPATH 29
-#define DT_FLAGS 30
-/* glibc and BSD disagree for DT_ENCODING; glibc looks wrong. */
-#define DT_PREINIT_ARRAY 32
-#define DT_PREINIT_ARRAYSZ 33
-#define DT_RELRSZ 35
-#define DT_RELR 36
-#define DT_RELRENT 37
-
-#define DT_GNU_HASH 0x6ffffef5
-#define DT_TLSDESC_PLT 0x6ffffef6
-#define DT_TLSDESC_GOT 0x6ffffef7
-
-/* http://www.sco.com/developers/gabi/latest/ch4.eheader.html */
-#define EI_ABIVERSION 8
-#undef EI_PAD
-#define EI_PAD 9
-
-/* http://www.sco.com/developers/gabi/latest/ch4.sheader.html */
-#define ELFCOMPRESS_ZLIB 1
-#define ELFCOMPRESS_LOOS 0x60000000
-#define ELFCOMPRESS_HIOS 0x6fffffff
-#define ELFCOMPRESS_LOPROC 0x70000000
-#define ELFCOMPRESS_HIPROC 0x7fffffff
 
 /* http://www.sco.com/developers/gabi/latest/ch4.eheader.html */
 #define ELFOSABI_SYSV 0 /* Synonym for ELFOSABI_NONE used by valgrind. */
-#define ELFOSABI_HPUX 1
-#define ELFOSABI_NETBSD 2
 #define ELFOSABI_GNU 3 /* Synonym for ELFOSABI_LINUX. */
-#define ELFOSABI_SOLARIS 6
-#define ELFOSABI_AIX 7
-#define ELFOSABI_IRIX 8
-#define ELFOSABI_FREEBSD 9
-#define ELFOSABI_TRU64 10
-#define ELFOSABI_MODESTO 11
-#define ELFOSABI_OPENBSD 12
-#define ELFOSABI_OPENVMS 13
-#define ELFOSABI_NSK 14
-#define ELFOSABI_AROS 15
-#define ELFOSABI_FENIXOS 16
-#define ELFOSABI_CLOUDABI 17
-#define ELFOSABI_OPENVOS 18
-#define ELFOSABI_ARM_AEABI 64
 
 /* http://www.sco.com/developers/gabi/latest/ch4.reloc.html */
 #define ELF32_R_INFO(sym, type) ((((Elf32_Word)sym) << 8) | ((type) & 0xff))
@@ -294,236 +217,17 @@
 #define ELF32_ST_INFO(b,t) ELF_ST_INFO(b,t)
 #define ELF64_ST_INFO(b,t) ELF_ST_INFO(b,t)
 
-/* http://www.sco.com/developers/gabi/latest/ch4.eheader.html */
-#define EM_S370 9
-#define EM_VPP500 17
-#define EM_960 19
-#define EM_V800 36
-#define EM_FR20 37
-#define EM_RH32 38
-#define EM_RCE 39
-#define EM_FAKE_ALPHA 41
-#define EM_TRICORE 44
-#define EM_ARC 45
-#define EM_H8_300H 47
-#define EM_H8S 48
-#define EM_H8_500 49
-#define EM_MIPS_X 51
-#define EM_COLDFIRE 52
-#define EM_68HC12 53
-#define EM_MMA 54
-#define EM_PCP 55
-#define EM_NCPU 56
-#define EM_NDR1 57
-#define EM_STARCORE 58
-#define EM_ME16 59
-#define EM_ST100 60
-#define EM_TINYJ 61
-#define EM_PDSP 63
-#define EM_PDP10 64
-#define EM_PDP11 65
-#define EM_FX66 66
-#define EM_ST9PLUS 67
-#define EM_ST7 68
-#define EM_68HC16 69
-#define EM_68HC11 70
-#define EM_68HC08 71
-#define EM_68HC05 72
-#define EM_SVX 73
-#define EM_ST19 74
-#define EM_VAX 75
-#define EM_JAVELIN 77
-#define EM_FIREPATH 78
-#define EM_ZSP 79
-#define EM_MMIX 80
-#define EM_HUANY 81
-#define EM_PRISM 82
-#define EM_AVR 83
-#define EM_FR30 84
-#define EM_D10V 85
-#define EM_D30V 86
-#define EM_V850 87
-#define EM_MN10200 90
-#define EM_PJ 91
-#define EM_ARC_COMPACT 93
-#define EM_XTENSA 94
-#define EM_VIDEOCORE 95
-#define EM_TMM_GPP 96
-#define EM_NS32K 97
-#define EM_TPC 98
-#define EM_SNP1K 99
-#define EM_ST200 100
-#define EM_IP2K 101
-#define EM_MAX 102
-#define EM_CR 103
-#define EM_F2MC16 104
-#define EM_MSP430 105
-#define EM_SE_C33 107
-#define EM_SEP 108
-#define EM_ARCA 109
-#define EM_UNICORE 110
-#define EM_EXCESS 111
-#define EM_DXP 112
-#define EM_CRX 114
-#define EM_XGATE 115
-#define EM_C166 116
-#define EM_M16C 117
-#define EM_DSPIC30F 118
-#define EM_CE 119
-#define EM_M32C 120
-#define EM_TSK3000 131
-#define EM_RS08 132
-#define EM_SHARC 133
-#define EM_ECOG2 134
-#define EM_SCORE7 135
-#define EM_DSP24 136
-#define EM_VIDEOCORE3 137
-#define EM_LATTICEMICO32 138
-#define EM_SE_C17 139
-#define EM_TI_C2000 141
-#define EM_TI_C5500 142
-#define EM_MMDSP_PLUS 160
-#define EM_CYPRESS_M8C 161
-#define EM_R32C 162
-#define EM_TRIMEDIA 163
-#define EM_QDSP6 164
-#define EM_8051 165
-#define EM_STXP7X 166
-#define EM_NDS32 167
-#define EM_ECOG1 168
-#define EM_ECOG1X 168
-#define EM_MAXQ30 169
-#define EM_XIMO16 170
-#define EM_MANIK 171
-#define EM_CRAYNV2 172
-#define EM_RX 173
-#define EM_METAG 174
-#define EM_MCST_ELBRUS 175
-#define EM_ECOG16 176
-#define EM_CR16 177
-#define EM_ETPU 178
-#define EM_SLE9X 179
-#define EM_L10M 180
-#define EM_K10M 181
-#define EM_AVR32 185
-#define EM_STM8 186
-#define EM_TILE64 187
-#define EM_CUDA 190
-#define EM_CLOUDSHIELD 192
-#define EM_COREA_1ST 193
-#define EM_COREA_2ND 194
-#define EM_ARC_COMPACT2 195
-#define EM_OPEN8 196
-#define EM_RL78 197
-#define EM_VIDEOCORE5 198
-#define EM_78KOR 199
-#define EM_56800EX 200
-#define EM_BA1 201
-#define EM_BA2 202
-#define EM_XCORE 203
-#define EM_MCHP_PIC 204
-#define EM_INTEL205 205
-#define EM_INTEL206 206
-#define EM_INTEL207 207
-#define EM_INTEL208 208
-#define EM_INTEL209 209
-#define EM_KM32 210
-#define EM_KMX32 211
-#define EM_KMX16 212
-#define EM_KMX8 213
-#define EM_KVARC 214
-#define EM_CDP 215
-#define EM_COGE 216
-#define EM_COOL 217
-#define EM_NORC 218
-#define EM_CSR_KALIMBA 219
-#define EM_Z80 220
-#define EM_VISIUM 221
-#define EM_FT32 222
-#define EM_MOXIE 223
-#define EM_AMDGPU 224
-#define EM_RISCV 243
-
-/* http://www.sco.com/developers/gabi/latest/ch4.eheader.html */
-#define ET_LOOS 0xfe00
-#define ET_HIOS 0xfeff
-
 /* http://www.sco.com/developers/gabi/latest/ch4.sheader.html */
-#define GRP_COMDAT 0x1
 #define GRP_MASKOS   0x0ff00000
 #define GRP_MASKPROC 0xf0000000
 
-/* http://www.sco.com/developers/gabi/latest/ch5.pheader.html */
-#define PF_X 0x1
-#define PF_W 0x2
-#define PF_R 0x4
-#define PF_MASKOS   0x0ff00000
-#define PF_MASKPROC 0xf0000000
-
-#define PT_GNU_RELRO 0x6474e552
-
-#define STB_LOOS 10
-#define STB_HIOS 12
-#define STB_LOPROC 13
-#define STB_HIPROC 15
-
 /* http://www.sco.com/developers/gabi/latest/ch4.sheader.html */
-#define SHF_MERGE 0x10
-#define SHF_STRINGS 0x20
-#define SHF_INFO_LINK 0x40
-#define SHF_LINK_ORDER 0x80
-#define SHF_OS_NONCONFORMING 0x100
-#define SHF_GROUP 0x200
-#define SHF_TLS 0x400
-#define SHF_COMPRESSED 0x800
-#define SHF_MASKOS 0x0ff00000
-#define SHF_MASKPROC 0xf0000000
-
-/* http://www.sco.com/developers/gabi/latest/ch4.sheader.html */
-#define SHN_LOOS 0xff20
-#define SHN_HIOS 0xff3f
-#define SHN_XINDEX 0xffff
-
-/* http://www.sco.com/developers/gabi/latest/ch4.sheader.html */
-#define SHT_INIT_ARRAY 14
-#define SHT_FINI_ARRAY 15
-#define SHT_PREINIT_ARRAY 16
-#define SHT_GROUP 17
-#define SHT_SYMTAB_SHNDX 18
+/*
+ * Standard replacement for SHT_ANDROID_RELR.
+ */
 #define SHT_RELR 19
 #undef SHT_NUM
 #define SHT_NUM 20
-#define SHT_LOOS 0x60000000
-#define SHT_HIOS 0x6fffffff
-
-/* http://www.sco.com/developers/gabi/latest/ch4.symtab.html */
-#define STN_UNDEF 0
-
-/* http://www.sco.com/developers/gabi/latest/ch4.symtab.html */
-#define STT_GNU_IFUNC 10
-#define STT_LOOS 10
-#define STT_HIOS 12
-#define STT_LOPROC 13
-#define STT_HIPROC 15
-
-/* http://www.sco.com/developers/gabi/latest/ch4.symtab.html */
-#define STV_DEFAULT 0
-#define STV_INTERNAL 1
-#define STV_HIDDEN 2
-#define STV_PROTECTED 3
-
-/* The kernel uses NT_PRFPREG but glibc also offers NT_FPREGSET */
-#define NT_FPREGSET NT_PRFPREG
-
-#define ELF_NOTE_GNU "GNU"
-
-#define NT_GNU_BUILD_ID 3
-
-#define VER_FLG_BASE 0x1
-#define VER_FLG_WEAK 0x2
-
-#define VER_NDX_LOCAL 0
-#define VER_NDX_GLOBAL 1
 
 /*
  * Experimental support for SHT_RELR sections. For details, see proposal
@@ -553,3 +257,13 @@
 #define DT_ANDROID_RELSZ 0x60000010 // DT_LOOS + 3
 #define DT_ANDROID_RELA 0x60000011 // DT_LOOS + 4
 #define DT_ANDROID_RELASZ 0x60000012 // DT_LOOS + 5
+
+/* Linux traditionally doesn't have the trailing 64 that BSD has on these. */
+#define R_AARCH64_TLS_DTPREL R_AARCH64_TLS_DTPREL64
+#define R_AARCH64_TLS_DTPMOD R_AARCH64_TLS_DTPMOD64
+#define R_AARCH64_TLS_TPREL R_AARCH64_TLS_TPREL64
+
+/* TODO: upstream these to FreeBSD? */
+#define R_ARM_TLS_DESC 13
+#define R_ARM_IRELATIVE 160
+#define R_X86_64_JUMP_SLOT 7
diff --git a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/include/fenv.h b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/include/fenv.h
index 7b775b6..3fd9852 100644
--- a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/include/fenv.h
+++ b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/include/fenv.h
@@ -35,6 +35,8 @@
 #include <bits/fenv_arm.h>
 #elif defined(__i386__)
 #include <bits/fenv_x86.h>
+#elif defined(__riscv)
+#include <bits/fenv_riscv64.h>
 #elif defined(__x86_64__)
 #include <bits/fenv_x86_64.h>
 #endif
diff --git a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/include/langinfo.h b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/include/langinfo.h
index d9d8c15..2b43892 100644
--- a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/include/langinfo.h
+++ b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/include/langinfo.h
@@ -92,8 +92,8 @@
 #define NOEXPR 54
 #define CRNCYSTR 55
 
-char* nl_langinfo(nl_item __item) __INTRODUCED_IN(26);
-char* nl_langinfo_l(nl_item __item, locale_t __l) __INTRODUCED_IN(26);
+char* _Nonnull nl_langinfo(nl_item __item) __INTRODUCED_IN(26);
+char* _Nonnull nl_langinfo_l(nl_item __item, locale_t _Nonnull __l) __INTRODUCED_IN(26);
 
 __END_DECLS
 
diff --git a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/include/libgen.h b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/include/libgen.h
index b910790..474f066 100644
--- a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/include/libgen.h
+++ b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/include/libgen.h
@@ -50,7 +50,7 @@
  * Note that Android's cv-qualifiers differ from POSIX; Android's implementation doesn't
  * modify its input and uses thread-local storage for the result if necessary.
  */
-char* __posix_basename(const char* __path) __RENAME(basename);
+char* _Nullable __posix_basename(const char* _Nullable __path) __RENAME(basename);
 
 /**
  * This macro ensures that callers get the POSIX basename() if they include this header,
@@ -65,13 +65,13 @@
  * Note that Android's cv-qualifiers differ from POSIX; Android's implementation doesn't
  * modify its input and uses thread-local storage for the result if necessary.
  */
-char* dirname(const char* __path);
+char* _Nullable dirname(const char* _Nullable __path);
 
 #if !defined(__LP64__)
 /** Deprecated. Use dirname() instead. */
-int dirname_r(const char* __path, char* __buf, size_t __n);
+int dirname_r(const char* _Nullable __path, char* _Nullable __buf, size_t __n);
 /** Deprecated. Use basename() instead. */
-int basename_r(const char* __path, char* __buf, size_t __n);
+int basename_r(const char* _Nullable __path, char* _Nullable __buf, size_t __n);
 #endif
 
 __END_DECLS
diff --git a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/include/malloc.h b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/include/malloc.h
index 40786fa..02bda60 100644
--- a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/include/malloc.h
+++ b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/include/malloc.h
@@ -40,7 +40,7 @@
  * Returns a pointer to the allocated memory on success and returns a null
  * pointer and sets `errno` on failure.
  */
-void* malloc(size_t __byte_count) __mallocfunc __BIONIC_ALLOC_SIZE(1) __wur;
+void* _Nullable malloc(size_t __byte_count) __mallocfunc __BIONIC_ALLOC_SIZE(1) __wur;
 
 /**
  * [calloc(3)](http://man7.org/linux/man-pages/man3/calloc.3.html) allocates
@@ -49,7 +49,7 @@
  * Returns a pointer to the allocated memory on success and returns a null
  * pointer and sets `errno` on failure.
  */
-void* calloc(size_t __item_count, size_t __item_size) __mallocfunc __BIONIC_ALLOC_SIZE(1,2) __wur;
+void* _Nullable calloc(size_t __item_count, size_t __item_size) __mallocfunc __BIONIC_ALLOC_SIZE(1,2) __wur;
 
 /**
  * [realloc(3)](http://man7.org/linux/man-pages/man3/realloc.3.html) resizes
@@ -58,7 +58,7 @@
  * Returns a pointer (which may be different from `__ptr`) to the resized
  * memory on success and returns a null pointer and sets `errno` on failure.
  */
-void* realloc(void* __ptr, size_t __byte_count) __BIONIC_ALLOC_SIZE(2) __wur;
+void* _Nullable realloc(void* _Nullable __ptr, size_t __byte_count) __BIONIC_ALLOC_SIZE(2) __wur;
 
 /**
  * [reallocarray(3)](http://man7.org/linux/man-pages/man3/realloc.3.html) resizes
@@ -70,13 +70,13 @@
  * Returns a pointer (which may be different from `__ptr`) to the resized
  * memory on success and returns a null pointer and sets `errno` on failure.
  */
-void* reallocarray(void* __ptr, size_t __item_count, size_t __item_size) __BIONIC_ALLOC_SIZE(2, 3) __wur __INTRODUCED_IN(29);
+void* _Nullable reallocarray(void* _Nullable __ptr, size_t __item_count, size_t __item_size) __BIONIC_ALLOC_SIZE(2, 3) __wur __INTRODUCED_IN(29);
 
 /**
  * [free(3)](http://man7.org/linux/man-pages/man3/free.3.html) deallocates
  * memory on the heap.
  */
-void free(void* __ptr);
+void free(void* _Nullable __ptr);
 
 /**
  * [memalign(3)](http://man7.org/linux/man-pages/man3/memalign.3.html) allocates
@@ -87,7 +87,7 @@
  *
  * See also posix_memalign().
  */
-void* memalign(size_t __alignment, size_t __byte_count) __mallocfunc __BIONIC_ALLOC_SIZE(2) __wur;
+void* _Nullable memalign(size_t __alignment, size_t __byte_count) __mallocfunc __BIONIC_ALLOC_SIZE(2) __wur;
 
 /**
  * [malloc_usable_size(3)](http://man7.org/linux/man-pages/man3/malloc_usable_size.3.html)
@@ -95,7 +95,7 @@
  *
  * Available since API level 17.
  */
-size_t malloc_usable_size(const void* __ptr) __INTRODUCED_IN(17);
+size_t malloc_usable_size(const void* _Nullable __ptr) __INTRODUCED_IN(17);
 
 #define __MALLINFO_BODY \
   /** Total number of non-mmapped bytes currently allocated from OS. */ \
@@ -168,7 +168,7 @@
  *
  * Available since API level 23.
  */
-int malloc_info(int __must_be_zero, FILE* __fp) __INTRODUCED_IN(23);
+int malloc_info(int __must_be_zero, FILE* _Nonnull __fp) __INTRODUCED_IN(23);
 
 /**
  * mallopt() option to set the decay time. Valid values are 0 and 1.
@@ -329,7 +329,7 @@
  *
  * See also: [extra documentation](https://android.googlesource.com/platform/bionic/+/master/libc/malloc_hooks/README.md)
  */
-extern void* (*volatile __malloc_hook)(size_t __byte_count, const void* __caller) __INTRODUCED_IN(28);
+extern void* _Nonnull (*volatile _Nonnull __malloc_hook)(size_t __byte_count, const void* _Nonnull __caller) __INTRODUCED_IN(28);
 
 /**
  * [__realloc_hook(3)](http://man7.org/linux/man-pages/man3/__realloc_hook.3.html)
@@ -340,7 +340,7 @@
  *
  * See also: [extra documentation](https://android.googlesource.com/platform/bionic/+/master/libc/malloc_hooks/README.md)
  */
-extern void* (*volatile __realloc_hook)(void* __ptr, size_t __byte_count, const void* __caller) __INTRODUCED_IN(28);
+extern void* _Nonnull (*volatile _Nonnull __realloc_hook)(void* _Nullable __ptr, size_t __byte_count, const void* _Nonnull __caller) __INTRODUCED_IN(28);
 
 /**
  * [__free_hook(3)](http://man7.org/linux/man-pages/man3/__free_hook.3.html)
@@ -351,7 +351,7 @@
  *
  * See also: [extra documentation](https://android.googlesource.com/platform/bionic/+/master/libc/malloc_hooks/README.md)
  */
-extern void (*volatile __free_hook)(void* __ptr, const void* __caller) __INTRODUCED_IN(28);
+extern void (*volatile _Nonnull __free_hook)(void* _Nullable __ptr, const void* _Nonnull __caller) __INTRODUCED_IN(28);
 
 /**
  * [__memalign_hook(3)](http://man7.org/linux/man-pages/man3/__memalign_hook.3.html)
@@ -362,6 +362,6 @@
  *
  * See also: [extra documentation](https://android.googlesource.com/platform/bionic/+/master/libc/malloc_hooks/README.md)
  */
-extern void* (*volatile __memalign_hook)(size_t __alignment, size_t __byte_count, const void* __caller) __INTRODUCED_IN(28);
+extern void* _Nonnull (*volatile _Nonnull __memalign_hook)(size_t __alignment, size_t __byte_count, const void* _Nonnull __caller) __INTRODUCED_IN(28);
 
 __END_DECLS
diff --git a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/include/regex.h b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/include/regex.h
index c4cc39c..be1418e 100644
--- a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/include/regex.h
+++ b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/include/regex.h
@@ -49,8 +49,8 @@
 typedef struct {
 	int re_magic;
 	size_t re_nsub;		/* number of parenthesized subexpressions */
-	const char *re_endp;	/* end pointer for REG_PEND */
-	struct re_guts *re_g;	/* none of your business :-) */
+	const char * _Null_unspecified re_endp;	/* end pointer for REG_PEND */
+	struct re_guts * _Null_unspecified re_g;	/* none of your business :-) */
 } regex_t;
 
 typedef struct {
@@ -67,6 +67,7 @@
 #define	REG_NOSPEC	0020
 #define	REG_PEND	0040
 #define	REG_DUMP	0200
+#define	REG_GNU		0400
 
 /* regerror() flags */
 #define	REG_NOMATCH	 1
@@ -85,6 +86,7 @@
 #define	REG_EMPTY	14
 #define	REG_ASSERT	15
 #define	REG_INVARG	16
+#define	REG_ILLSEQ	17
 #define	REG_ATOI	255	/* convert name to number (!) */
 #define	REG_ITOA	0400	/* convert number to name (!) */
 
@@ -97,10 +99,10 @@
 #define	REG_BACKR	02000	/* force use of backref code */
 
 __BEGIN_DECLS
-int regcomp(regex_t* __re, const char* __regex, int __flags);
-size_t regerror(int __error_code, const regex_t* __re, char* __buf, size_t __n);
-int regexec(const regex_t* __re, const char* __s, size_t __match_count, regmatch_t __matches[], int __flags);
-void regfree(regex_t* __re);
+int regcomp(regex_t* _Nonnull __re, const char* _Nonnull __regex, int __flags);
+size_t regerror(int __error_code, const regex_t* _Nullable __re, char* _Nullable __buf, size_t __n);
+int regexec(const regex_t* _Nonnull __re, const char* _Nonnull __s, size_t __match_count, regmatch_t __matches[_Nullable], int __flags);
+void regfree(regex_t* _Nonnull __re);
 __END_DECLS
 
 #endif
diff --git a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/include/setjmp.h b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/include/setjmp.h
index 3a64b33..a3de9c7 100644
--- a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/include/setjmp.h
+++ b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/include/setjmp.h
@@ -37,8 +37,12 @@
  *	@(#)setjmp.h	8.2 (Berkeley) 1/21/94
  */
 
-#ifndef _SETJMP_H_
-#define _SETJMP_H_
+#pragma once
+
+/**
+ * @file setjmp.h
+ * @brief Non-local jumps.
+ */
 
 #include <sys/cdefs.h>
 
@@ -48,28 +52,60 @@
 #define _JBLEN 64
 #elif defined(__i386__)
 #define _JBLEN 10
+#elif defined(__riscv)
+#define _JBLEN 29
 #elif defined(__x86_64__)
 #define _JBLEN 11
 #endif
 
+/** The type of the buffer used by sigsetjmp()/siglongjmp(). */
 typedef long sigjmp_buf[_JBLEN + 1];
+
+/** The type of the buffer used by setjmp()/longjmp(). */
 typedef long jmp_buf[_JBLEN];
 
 #undef _JBLEN
 
 __BEGIN_DECLS
 
+/**
+ * Equivalent to sigsetjmp() with the second argument 0, so that the signal
+ * mask is not saved.
+ */
 int _setjmp(jmp_buf __env) __returns_twice;
+
+/** Equivalent to siglongjmp(). */
 __noreturn void _longjmp(jmp_buf __env, int __value);
 
+/**
+ * Equivalent to sigsetjmp() with the second argument 1, so that the signal
+ * mask is saved.
+ */
 int setjmp(jmp_buf __env) __returns_twice;
-__noreturn void longjmp(jmp_buf __env, int __value);
 
+/** C11 says setjmp() must be a macro, but Android already had a function. */
 #define setjmp(__env) setjmp(__env)
 
-int sigsetjmp(sigjmp_buf __env, int __save_signal_mask);
+/** Equivalent to siglongjmp(). */
+__noreturn void longjmp(jmp_buf __env, int __value);
+
+/**
+ * [sigsetjmp(3)](http://man7.org/linux/man-pages/man3/sigsetjmp.3.html)
+ * sets the target of a future siglongjmp() call, saving or not saving the
+ * current signal mask based on the second argument.
+ *
+ * Returns 0 when first called, and returns the value passed to siglongjmp()
+ * when returning here as a result of a siglongjmp() call.
+ */
+int sigsetjmp(sigjmp_buf __env, int __save_signal_mask) __returns_twice;
+
+/**
+ * [siglongjmp(3)](http://man7.org/linux/man-pages/man3/siglongjmp.3.html)
+ * transfers control back to the site of the sigsetjmp() call that initialized
+ * the given jump buffer, returning the given value.
+ *
+ * Does not return.
+ */
 __noreturn void siglongjmp(sigjmp_buf __env, int __value);
 
 __END_DECLS
-
-#endif
diff --git a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/include/spawn.h b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/include/spawn.h
index 2e239bf..e445453 100644
--- a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/include/spawn.h
+++ b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/include/spawn.h
@@ -46,6 +46,8 @@
 #define POSIX_SPAWN_USEVFORK 64
 #define POSIX_SPAWN_SETSID 128
 #endif
+// mark all fds (except stdin/out/err) as close-on-exec prior to executing registered file actions
+#define POSIX_SPAWN_CLOEXEC_DEFAULT 256
 
 typedef struct __posix_spawnattr* posix_spawnattr_t;
 typedef struct __posix_spawn_file_actions* posix_spawn_file_actions_t;
diff --git a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/include/stdio_ext.h b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/include/stdio_ext.h
index 3aa183d..eda5919 100644
--- a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/include/stdio_ext.h
+++ b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/include/stdio_ext.h
@@ -96,13 +96,21 @@
 
 /**
  * [__fpending(3)](http://man7.org/linux/man-pages/man3/__fpending.3.html) returns the number of
- * bytes in the output buffer.
+ * bytes in the output buffer. See __freadahead() for the input buffer.
  *
  * Available since API level 23.
  */
 size_t __fpending(FILE* __fp) __INTRODUCED_IN(23);
 
 /**
+ * __freadahead(3) returns the number of bytes in the input buffer.
+ * See __fpending() for the output buffer.
+ *
+ * Available since API level 34.
+ */
+size_t __freadahead(FILE* __fp) __INTRODUCED_IN(34);
+
+/**
  * [_flushlbf(3)](http://man7.org/linux/man-pages/man3/_flushlbf.3.html) flushes all
  * line-buffered streams.
  *
diff --git a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/include/stdlib.h b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/include/stdlib.h
index 4aa27f9..06ed3f4 100644
--- a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/include/stdlib.h
+++ b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/include/stdlib.h
@@ -49,82 +49,82 @@
 __noreturn void _Exit(int) __RENAME(_exit);
 #endif
 
-int atexit(void (*__fn)(void));
+int atexit(void (* _Nonnull __fn)(void));
 
-int at_quick_exit(void (*__fn)(void)) __INTRODUCED_IN(21);
+int at_quick_exit(void (* _Nonnull __fn)(void)) __INTRODUCED_IN(21);
 void quick_exit(int __status) __noreturn __INTRODUCED_IN(21);
 
-char* getenv(const char* __name);
-int putenv(char* __assignment);
-int setenv(const char* __name, const char* __value, int __overwrite);
-int unsetenv(const char* __name);
+char* _Nullable getenv(const char* _Nonnull __name);
+int putenv(char* _Nonnull __assignment);
+int setenv(const char* _Nonnull __name, const char* _Nonnull __value, int __overwrite);
+int unsetenv(const char* _Nonnull __name);
 int clearenv(void);
 
-char* mkdtemp(char* __template);
-char* mktemp(char* __template) __attribute__((deprecated("mktemp is unsafe, use mkstemp or tmpfile instead")));
+char* _Nullable mkdtemp(char* _Nonnull __template);
+char* _Nullable mktemp(char* _Nonnull __template) __attribute__((deprecated("mktemp is unsafe, use mkstemp or tmpfile instead")));
 
-int mkostemp64(char* __template, int __flags) __INTRODUCED_IN(23);
-int mkostemp(char* __template, int __flags) __INTRODUCED_IN(23);
-int mkostemps64(char* __template, int __suffix_length, int __flags) __INTRODUCED_IN(23);
-int mkostemps(char* __template, int __suffix_length, int __flags) __INTRODUCED_IN(23);
-int mkstemp64(char* __template) __INTRODUCED_IN(21);
-int mkstemp(char* __template);
-int mkstemps64(char* __template, int __flags) __INTRODUCED_IN(23);
-int mkstemps(char* __template, int __flags);
+int mkostemp64(char* _Nonnull __template, int __flags) __INTRODUCED_IN(23);
+int mkostemp(char* _Nonnull __template, int __flags) __INTRODUCED_IN(23);
+int mkostemps64(char* _Nonnull __template, int __suffix_length, int __flags) __INTRODUCED_IN(23);
+int mkostemps(char* _Nonnull __template, int __suffix_length, int __flags) __INTRODUCED_IN(23);
+int mkstemp64(char* _Nonnull __template) __INTRODUCED_IN(21);
+int mkstemp(char* _Nonnull __template);
+int mkstemps64(char* _Nonnull __template, int __flags) __INTRODUCED_IN(23);
+int mkstemps(char* _Nonnull __template, int __flags);
 
-long strtol(const char* __s, char** __end_ptr, int __base);
-long long strtoll(const char* __s, char** __end_ptr, int __base);
-unsigned long strtoul(const char* __s, char** __end_ptr, int __base);
-unsigned long long strtoull(const char* __s, char** __end_ptr, int __base);
+long strtol(const char* _Nonnull __s, char* _Nullable * _Nullable __end_ptr, int __base);
+long long strtoll(const char* _Nonnull __s, char* _Nullable * _Nullable __end_ptr, int __base);
+unsigned long strtoul(const char* _Nonnull __s, char* _Nullable * _Nullable __end_ptr, int __base);
+unsigned long long strtoull(const char* _Nonnull __s, char* _Nullable * _Nullable __end_ptr, int __base);
 
-int posix_memalign(void** __memptr, size_t __alignment, size_t __size) __INTRODUCED_IN(17);
+int posix_memalign(void* _Nullable * _Nullable __memptr, size_t __alignment, size_t __size) __INTRODUCED_IN(17);
 
-void* aligned_alloc(size_t __alignment, size_t __size) __INTRODUCED_IN(28);
+void* _Nullable aligned_alloc(size_t __alignment, size_t __size) __INTRODUCED_IN(28);
 
-double strtod(const char* __s, char** __end_ptr);
-long double strtold(const char* __s, char** __end_ptr) __RENAME_LDBL(strtod, 3, 21);
+double strtod(const char* _Nonnull __s, char* _Nullable * _Nullable __end_ptr);
+long double strtold(const char* _Nonnull __s, char* _Nullable * _Nullable __end_ptr) __RENAME_LDBL(strtod, 3, 21);
 
-unsigned long strtoul_l(const char* __s, char** __end_ptr, int __base, locale_t __l) __INTRODUCED_IN(26);
+unsigned long strtoul_l(const char* _Nonnull __s, char* _Nullable * _Nullable __end_ptr, int __base, locale_t _Nonnull __l) __INTRODUCED_IN(26);
 
-int atoi(const char* __s) __attribute_pure__;
-long atol(const char* __s) __attribute_pure__;
-long long atoll(const char* __s) __attribute_pure__;
+int atoi(const char* _Nonnull __s) __attribute_pure__;
+long atol(const char* _Nonnull __s) __attribute_pure__;
+long long atoll(const char* _Nonnull __s) __attribute_pure__;
 
-__wur char* realpath(const char* __path, char* __resolved);
-int system(const char* __command);
+__wur char* _Nullable realpath(const char* _Nonnull __path, char* _Nullable __resolved);
+int system(const char* _Nonnull __command);
 
-void* bsearch(const void* __key, const void* __base, size_t __nmemb, size_t __size, int (*__comparator)(const void* __lhs, const void* __rhs));
+void* _Nullable bsearch(const void* _Nonnull __key, const void* _Nullable __base, size_t __nmemb, size_t __size, int (* _Nonnull __comparator)(const void* _Nonnull __lhs, const void* _Nonnull __rhs));
 
-void qsort(void* __base, size_t __nmemb, size_t __size, int (*__comparator)(const void* __lhs, const void* __rhs));
+void qsort(void* _Nullable __base, size_t __nmemb, size_t __size, int (* _Nonnull __comparator)(const void* _Nonnull __lhs, const void* _Nonnull __rhs));
 
 uint32_t arc4random(void);
 uint32_t arc4random_uniform(uint32_t __upper_bound);
-void arc4random_buf(void* __buf, size_t __n);
+void arc4random_buf(void* _Nonnull __buf, size_t __n);
 
 #define RAND_MAX 0x7fffffff
 
-int rand_r(unsigned int* __seed_ptr) __INTRODUCED_IN(21);
+int rand_r(unsigned int* _Nonnull __seed_ptr) __INTRODUCED_IN(21);
 
 double drand48(void);
-double erand48(unsigned short __xsubi[3]);
-long jrand48(unsigned short __xsubi[3]);
-void lcong48(unsigned short __param[7]) __INTRODUCED_IN(23);
+double erand48(unsigned short __xsubi[_Nonnull 3]);
+long jrand48(unsigned short __xsubi[_Nonnull 3]);
+void lcong48(unsigned short __param[_Nonnull 7]) __INTRODUCED_IN(23);
 long lrand48(void);
 long mrand48(void);
-long nrand48(unsigned short __xsubi[3]);
-unsigned short* seed48(unsigned short __seed16v[3]);
+long nrand48(unsigned short __xsubi[_Nonnull 3]);
+unsigned short* _Nonnull seed48(unsigned short __seed16v[_Nonnull 3]);
 void srand48(long __seed);
 
-char* initstate(unsigned int __seed, char* __state, size_t __n) __INTRODUCED_IN(21);
-char* setstate(char* __state) __INTRODUCED_IN(21);
+char* _Nullable initstate(unsigned int __seed, char* _Nonnull __state, size_t __n) __INTRODUCED_IN(21);
+char* _Nullable setstate(char* _Nonnull __state) __INTRODUCED_IN(21);
 
 int getpt(void);
 int posix_openpt(int __flags) __INTRODUCED_IN(21);
-char* ptsname(int __fd);
-int ptsname_r(int __fd, char* __buf, size_t __n);
+char* _Nullable ptsname(int __fd);
+int ptsname_r(int __fd, char* _Nonnull __buf, size_t __n);
 int unlockpt(int __fd);
 
-int getsubopt(char** __option, char* const* __tokens, char** __value_ptr) __INTRODUCED_IN(26);
+int getsubopt(char* _Nonnull * _Nonnull __option, char* _Nonnull const* _Nonnull __tokens, char* _Nullable * _Nonnull __value_ptr) __INTRODUCED_IN(26);
 
 typedef struct {
   int quot;
@@ -154,18 +154,18 @@
  *
  * Returns the number of samples written to `__averages` (at most 3), and returns -1 on failure.
  */
-int getloadavg(double __averages[], int __n) __INTRODUCED_IN(29);
+int getloadavg(double __averages[_Nonnull], int __n) __INTRODUCED_IN(29);
 
 /* BSD compatibility. */
-const char* getprogname(void) __INTRODUCED_IN(21);
-void setprogname(const char* __name) __INTRODUCED_IN(21);
+const char* _Nullable getprogname(void) __INTRODUCED_IN(21);
+void setprogname(const char* _Nonnull __name) __INTRODUCED_IN(21);
 
-int mblen(const char* __s, size_t __n) __INTRODUCED_IN_NO_GUARD_FOR_NDK(26);
-size_t mbstowcs(wchar_t* __dst, const char* __src, size_t __n) __INTRODUCED_IN_NO_GUARD_FOR_NDK(21);
-int mbtowc(wchar_t* __wc_ptr, const char* __s, size_t __n) __INTRODUCED_IN_NO_GUARD_FOR_NDK(21);
-int wctomb(char* __dst, wchar_t __wc) __INTRODUCED_IN_NO_GUARD_FOR_NDK(21);
+int mblen(const char* _Nullable __s, size_t __n) __INTRODUCED_IN_NO_GUARD_FOR_NDK(26);
+size_t mbstowcs(wchar_t* _Nullable __dst, const char* _Nullable __src, size_t __n) __INTRODUCED_IN_NO_GUARD_FOR_NDK(21);
+int mbtowc(wchar_t* _Nullable __wc_ptr, const char*  _Nullable __s, size_t __n) __INTRODUCED_IN_NO_GUARD_FOR_NDK(21);
+int wctomb(char* _Nullable __dst, wchar_t __wc) __INTRODUCED_IN_NO_GUARD_FOR_NDK(21);
 
-size_t wcstombs(char* __dst, const wchar_t* __src, size_t __n) __INTRODUCED_IN_NO_GUARD_FOR_NDK(21);
+size_t wcstombs(char* _Nullable __dst, const wchar_t* _Nullable __src, size_t __n) __INTRODUCED_IN_NO_GUARD_FOR_NDK(21);
 
 #if __ANDROID_API__ >= 21
 size_t __ctype_get_mb_cur_max(void) __INTRODUCED_IN(21);
@@ -192,25 +192,25 @@
 #endif
 
 #if __ANDROID_API__ >= 21
-float strtof(const char* __s, char** __end_ptr) __INTRODUCED_IN(21);
-double atof(const char* __s) __attribute_pure__ __INTRODUCED_IN(21);
+float strtof(const char* _Nonnull __s, char* _Nullable * _Nullable __end_ptr) __INTRODUCED_IN(21);
+double atof(const char* _Nonnull __s) __attribute_pure__ __INTRODUCED_IN(21);
 int rand(void) __INTRODUCED_IN(21);
 void srand(unsigned int __seed) __INTRODUCED_IN(21);
 long random(void) __INTRODUCED_IN(21);
 void srandom(unsigned int __seed) __INTRODUCED_IN(21);
 int grantpt(int __fd) __INTRODUCED_IN(21);
 
-long long strtoll_l(const char* __s, char** __end_ptr, int __base, locale_t __l) __INTRODUCED_IN(21);
-unsigned long long strtoull_l(const char* __s, char** __end_ptr, int __base, locale_t __l) __INTRODUCED_IN(21);
-long double strtold_l(const char* __s, char** __end_ptr, locale_t __l) __INTRODUCED_IN(21);
+long long strtoll_l(const char* _Nonnull __s, char* _Nullable * _Nullable __end_ptr, int __base, locale_t _Nonnull __l) __INTRODUCED_IN(21);
+unsigned long long strtoull_l(const char* _Nonnull __s, char* _Nullable * _Nullable __end_ptr, int __base, locale_t _Nonnull __l) __INTRODUCED_IN(21);
+long double strtold_l(const char* _Nonnull __s, char* _Nullable * _Nullable __end_ptr, locale_t _Nonnull __l) __INTRODUCED_IN(21);
 #else
 // Implemented as static inlines before 21.
 #endif
 
 #if __ANDROID_API__ >= 26
-double strtod_l(const char* __s, char** __end_ptr, locale_t __l) __INTRODUCED_IN(26);
-float strtof_l(const char* __s, char** __end_ptr, locale_t __l) __INTRODUCED_IN(26);
-long strtol_l(const char* __s, char** __end_ptr, int, locale_t __l) __INTRODUCED_IN(26);
+double strtod_l(const char* _Nonnull __s, char* _Nullable * _Nullable __end_ptr, locale_t _Nonnull __l) __INTRODUCED_IN(26);
+float strtof_l(const char* _Nonnull __s, char* _Nullable * _Nullable __end_ptr, locale_t _Nonnull __l) __INTRODUCED_IN(26);
+long strtol_l(const char* _Nonnull __s, char* _Nullable * _Nullable __end_ptr, int, locale_t _Nonnull __l) __INTRODUCED_IN(26);
 #else
 // Implemented as static inlines before 26.
 #endif
diff --git a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/include/string.h b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/include/string.h
index 0cc5611..59c4687 100644
--- a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/include/string.h
+++ b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/include/string.h
@@ -55,7 +55,24 @@
 void* mempcpy(void* __dst, const void* __src, size_t __n) __INTRODUCED_IN(23);
 #endif
 void* memmove(void* __dst, const void* __src, size_t __n);
+
+/**
+ * [memset(3)](http://man7.org/linux/man-pages/man3/memset.3.html) writes the
+ * bottom 8 bits of the given int to the next `n` bytes of `dst`.
+ *
+ * Returns `dst`.
+ */
 void* memset(void* __dst, int __ch, size_t __n);
+
+/**
+ * [memset_explicit(3)](http://man7.org/linux/man-pages/man3/memset_explicit.3.html)
+ * writes the bottom 8 bits of the given int to the next `n` bytes of `dst`,
+ * but won't be optimized out by the compiler.
+ *
+ * Returns `dst`.
+ */
+void* memset_explicit(void* __dst, int __ch, size_t __n) __INTRODUCED_IN(34);
+
 void* memmem(const void* __haystack, size_t __haystack_size, const void* __needle, size_t __needle_size) __attribute_pure__;
 
 char* strchr(const char* __s, int __ch) __attribute_pure__;
diff --git a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/include/sys/mman.h b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/include/sys/mman.h
index 6ef0c12..fea9332 100644
--- a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/include/sys/mman.h
+++ b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/include/sys/mman.h
@@ -110,6 +110,8 @@
  * [mlockall(2)](http://man7.org/linux/man-pages/man2/mlockall.2.html)
  * locks pages (preventing swapping).
  *
+ * Available since API level 17.
+ *
  * Returns 0 on success, and returns -1 and sets `errno` on failure.
  */
 int mlockall(int __flags) __INTRODUCED_IN(17);
@@ -118,6 +120,8 @@
  * [munlockall(2)](http://man7.org/linux/man-pages/man2/munlockall.2.html)
  * unlocks pages (allowing swapping).
  *
+ * Available since API level 17.
+ *
  * Returns 0 on success, and returns -1 and sets `errno` on failure.
  */
 int munlockall(void) __INTRODUCED_IN(17);
@@ -134,6 +138,8 @@
  * [mlock2(2)](http://man7.org/linux/man-pages/man2/mlock.2.html)
  * locks pages (preventing swapping), with optional flags.
  *
+ * Available since API level 30.
+ *
  * Returns 0 on success, and returns -1 and sets `errno` on failure.
  */
 int mlock2(const void* __addr, size_t __size, int __flags) __INTRODUCED_IN(30);
@@ -167,9 +173,14 @@
  * works just like madvise(2) but applies to the process specified by the given
  * PID file descriptor.
  *
+ * Available since API level 31. Its sibling process_mrelease() does not have a
+ * libc wrapper and should be called using syscall() instead. Given the lack of
+ * widespread applicability of this system call and the absence of wrappers in
+ * other libcs, it was probably a mistake to have added this wrapper to bionic.
+ *
  * Returns the number of bytes advised on success, and returns -1 and sets `errno` on failure.
  */
-ssize_t process_madvise(int __pid_fd, const struct iovec* __iov, size_t __count, int __advice, unsigned __flags);
+ssize_t process_madvise(int __pid_fd, const struct iovec* __iov, size_t __count, int __advice, unsigned __flags) __INTRODUCED_IN(31);
 
 #if defined(__USE_GNU)
 
@@ -177,6 +188,8 @@
  * [memfd_create(2)](http://man7.org/linux/man-pages/man2/memfd_create.2.html)
  * creates an anonymous file.
  *
+ * Available since API level 30.
+ *
  * Returns an fd on success, and returns -1 and sets `errno` on failure.
  */
 int memfd_create(const char* __name, unsigned __flags) __INTRODUCED_IN(30);
@@ -211,9 +224,10 @@
  * [posix_madvise(3)](http://man7.org/linux/man-pages/man3/posix_madvise.3.html)
  * gives the kernel advice about future usage patterns.
  *
- * Returns 0 on success, and returns a positive error number on failure.
+ * Available since API level 23.
+ * See also madvise() which is available at all API levels.
  *
- * See also madvise() which has been available much longer.
+ * Returns 0 on success, and returns a positive error number on failure.
  */
 int posix_madvise(void* __addr, size_t __size, int __advice) __INTRODUCED_IN(23);
 
diff --git a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/include/sys/resource.h b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/include/sys/resource.h
index 9181125..ccb267d 100644
--- a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/include/sys/resource.h
+++ b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/include/sys/resource.h
@@ -41,6 +41,7 @@
 #define RLIM_SAVED_MAX RLIM_INFINITY
 
 typedef unsigned long rlim_t;
+typedef unsigned long long rlim64_t;
 
 int getrlimit(int __resource, struct rlimit* __limit);
 int setrlimit(int __resource, const struct rlimit* __limit);
diff --git a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/include/sys/stat.h b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/include/sys/stat.h
index 4184f6c..623631e 100644
--- a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/include/sys/stat.h
+++ b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/include/sys/stat.h
@@ -40,7 +40,7 @@
 
 __BEGIN_DECLS
 
-#if defined(__aarch64__)
+#if defined(__aarch64__) || defined(__riscv)
 #define __STAT64_BODY \
   dev_t st_dev; \
   ino_t st_ino; \
diff --git a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/include/sys/ucontext.h b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/include/sys/ucontext.h
index 9c5801f..8e5873d 100644
--- a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/include/sys/ucontext.h
+++ b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/include/sys/ucontext.h
@@ -26,8 +26,7 @@
  * SUCH DAMAGE.
  */
 
-#ifndef _SYS_UCONTEXT_H_
-#define _SYS_UCONTEXT_H_
+#pragma once
 
 #include <sys/cdefs.h>
 
@@ -313,8 +312,69 @@
   struct _libc_fpstate __fpregs_mem;
 } ucontext_t;
 
+#elif defined(__riscv)
+
+#define NGREG 32
+
+#define REG_PC 0
+#define REG_RA 1
+#define REG_SP 2
+#define REG_TP 4
+#define REG_S0 8
+#define REG_A0 10
+
+typedef unsigned long __riscv_mc_gp_state[NGREG];
+
+typedef unsigned long greg_t;
+typedef unsigned long gregset_t[NGREG];
+typedef union __riscv_mc_fp_state fpregset_t;
+
+/* These match the kernel <asm/ptrace.h> types but with different names. */
+
+struct __riscv_mc_f_ext_state {
+  uint32_t __f[32];
+  uint32_t __fcsr;
+};
+
+struct __riscv_mc_d_ext_state {
+  uint64_t __f[32];
+  uint32_t __fcsr;
+};
+
+struct __riscv_mc_q_ext_state {
+  uint64_t __f[64] __attribute__((__aligned__(16)));
+  uint32_t __fcsr;
+  uint32_t __reserved[3];
+};
+
+union __riscv_mc_fp_state {
+  struct __riscv_mc_f_ext_state __f;
+  struct __riscv_mc_d_ext_state __d;
+  struct __riscv_mc_q_ext_state __q;
+};
+
+/* This matches the kernel <asm/sigcontext.h> but with different names. */
+
+typedef struct mcontext_t {
+  __riscv_mc_gp_state __gregs;
+  union __riscv_mc_fp_state __fpregs;
+} mcontext_t;
+
+/* This matches the kernel <asm/ucontext.h> but using mcontext_t. */
+
+typedef struct ucontext_t {
+  unsigned long uc_flags;
+  struct ucontext_t* uc_link;
+  stack_t uc_stack;
+  union {
+    sigset_t uc_sigmask;
+    sigset64_t uc_sigmask64;
+  };
+  /* The kernel adds extra padding here to allow sigset_t to grow. */
+  char __padding[128 - sizeof(sigset_t)];
+  mcontext_t uc_mcontext;
+} ucontext_t;
+
 #endif
 
 __END_DECLS
-
-#endif /* _SYS_UCONTEXT_H_ */
diff --git a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/include/sys/user.h b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/include/sys/user.h
index 2392edd..432c7cb 100644
--- a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/include/sys/user.h
+++ b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/include/sys/user.h
@@ -26,8 +26,7 @@
  * SUCH DAMAGE.
  */
 
-#ifndef _SYS_USER_H_
-#define _SYS_USER_H_
+#pragma once
 
 #include <sys/cdefs.h>
 #include <stddef.h> /* For size_t. */
@@ -233,6 +232,11 @@
   uint32_t fpcr;
 };
 
+#elif defined(__riscv)
+
+// This space deliberately left blank for now.
+// No other libcs have any riscv64-specific structs.
+
 #else
 
 #error "Unsupported architecture."
@@ -240,5 +244,3 @@
 #endif
 
 __END_DECLS
-
-#endif  /* _SYS_USER_H_ */
diff --git a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/include/syslog.h b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/include/syslog.h
index 45de253..d89d769 100644
--- a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/include/syslog.h
+++ b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/include/syslog.h
@@ -133,9 +133,10 @@
 
 /**
  * [openlog(3)](http://man7.org/linux/man-pages/man3/openlog.3.html) sets
- * the log tag to `__prefix`. On Android, the other two arguments are ignored.
+ * the log tag to `__prefix`, which can be NULL to return to the default of
+ * getprogname(). On Android, the other two arguments are ignored.
  */
-void openlog(const char* __prefix, int __option, int __facility);
+void openlog(const char* _Nullable __prefix, int __option, int __facility);
 
 /**
  * [setlogmask(3)](http://man7.org/linux/man-pages/man3/setlogmask.3.html)
@@ -149,13 +150,13 @@
  * the printf()-like message and logs it with the given priority, unless
  * suppressed by setlogmask(). On Android, the output goes to logcat.
  */
-void syslog(int __priority, const char* __fmt, ...) __printflike(2, 3);
+void syslog(int __priority, const char* _Nonnull __fmt, ...) __printflike(2, 3);
 
 /**
  * [vsyslog(3)](http://man7.org/linux/man-pages/man3/vsyslog.3.html) formats
  * the vprintf()-like message and logs it with the given priority, unless
  * suppressed by setlogmask(). On Android, the output goes to logcat.
  */
-void vsyslog(int __priority, const char* __fmt, va_list __args) __printflike(2, 0);
+void vsyslog(int __priority, const char* _Nonnull __fmt, va_list __args) __printflike(2, 0);
 
 __END_DECLS
diff --git a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/include/time.h b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/include/time.h
index 0db14ff..4b005c6 100644
--- a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/include/time.h
+++ b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/include/time.h
@@ -37,7 +37,7 @@
 
 #define CLOCKS_PER_SEC 1000000
 
-extern char* tzname[];
+extern char* _Nonnull tzname[];
 extern int daylight;
 extern long int timezone;
 
@@ -54,62 +54,64 @@
   int tm_yday;
   int tm_isdst;
   long int tm_gmtoff;
-  const char* tm_zone;
+  const char* _Nullable tm_zone;
 };
 
 #define TM_ZONE tm_zone
 
-time_t time(time_t* __t);
-int nanosleep(const struct timespec* __request, struct timespec* __remainder);
+time_t time(time_t* _Nullable __t);
+int nanosleep(const struct timespec* _Nonnull __request, struct timespec* _Nullable __remainder);
 
-char* asctime(const struct tm* __tm);
-char* asctime_r(const struct tm* __tm, char* __buf);
+char* _Nullable asctime(const struct tm* _Nonnull __tm);
+char* _Nullable asctime_r(const struct tm* _Nonnull __tm, char* _Nonnull __buf);
 
 double difftime(time_t __lhs, time_t __rhs);
-time_t mktime(struct tm* __tm);
+time_t mktime(struct tm* _Nonnull __tm);
 
-struct tm* localtime(const time_t* __t);
-struct tm* localtime_r(const time_t* __t, struct tm* __tm);
+struct tm* _Nullable localtime(const time_t* _Nonnull __t);
+struct tm* _Nullable localtime_r(const time_t* _Nonnull __t, struct tm* _Nonnull __tm);
 
-struct tm* gmtime(const time_t* __t);
-struct tm* gmtime_r(const time_t* __t, struct tm* __tm);
+struct tm* _Nullable gmtime(const time_t* _Nonnull __t);
+struct tm* _Nullable gmtime_r(const time_t* _Nonnull __t, struct tm* _Nonnull __tm);
 
-char* strptime(const char* __s, const char* __fmt, struct tm* __tm) __strftimelike(2);
-char* strptime_l(const char* __s, const char* __fmt, struct tm* __tm, locale_t __l) __strftimelike(2) __INTRODUCED_IN(28);
+char* _Nullable strptime(const char* _Nonnull __s, const char* _Nonnull __fmt, struct tm* _Nonnull __tm) __strftimelike(2);
+char* _Nullable strptime_l(const char* _Nonnull __s, const char* _Nonnull __fmt, struct tm* _Nonnull __tm, locale_t _Nonnull __l) __strftimelike(2) __INTRODUCED_IN(28);
 
-size_t strftime(char* __buf, size_t __n, const char* __fmt, const struct tm* __tm) __strftimelike(3);
+size_t strftime(char* _Nonnull __buf, size_t __n, const char* _Nonnull __fmt, const struct tm* _Nullable __tm) __strftimelike(3);
 #if __ANDROID_API__ >= 21
-size_t strftime_l(char* __buf, size_t __n, const char* __fmt, const struct tm* __tm, locale_t __l) __strftimelike(3) __INTRODUCED_IN(21);
+size_t strftime_l(char* _Nonnull __buf, size_t __n, const char* _Nonnull __fmt, const struct tm* _Nullable __tm, locale_t _Nonnull __l) __strftimelike(3) __INTRODUCED_IN(21);
 #else
 // Implemented as static inline before 21.
 #endif
 
-char* ctime(const time_t* __t);
-char* ctime_r(const time_t* __t, char* __buf);
+
+char* _Nullable ctime(const time_t* _Nonnull __t);
+char* _Nullable ctime_r(const time_t* _Nonnull __t, char* _Nonnull __buf);
 
 void tzset(void);
 
 clock_t clock(void);
 
-int clock_getcpuclockid(pid_t __pid, clockid_t* __clock) __INTRODUCED_IN(23);
+int clock_getcpuclockid(pid_t __pid, clockid_t* _Nonnull __clock) __INTRODUCED_IN(23);
 
-int clock_getres(clockid_t __clock, struct timespec* __resolution);
-int clock_gettime(clockid_t __clock, struct timespec* __ts);
-int clock_nanosleep(clockid_t __clock, int __flags, const struct timespec* __request, struct timespec* __remainder);
-int clock_settime(clockid_t __clock, const struct timespec* __ts);
 
-int timer_create(clockid_t __clock, struct sigevent* __event, timer_t* __timer_ptr);
-int timer_delete(timer_t __timer);
-int timer_settime(timer_t __timer, int __flags, const struct itimerspec* __new_value, struct itimerspec* __old_value);
-int timer_gettime(timer_t __timer, struct itimerspec* __ts);
-int timer_getoverrun(timer_t __timer);
+int clock_getres(clockid_t __clock, struct timespec* _Nullable __resolution);
+int clock_gettime(clockid_t __clock, struct timespec* _Nonnull __ts);
+int clock_nanosleep(clockid_t __clock, int __flags, const struct timespec* _Nonnull __request, struct timespec* _Nullable __remainder);
+int clock_settime(clockid_t __clock, const struct timespec* _Nonnull __ts);
+
+int timer_create(clockid_t __clock, struct sigevent* _Nullable __event, timer_t _Nonnull * _Nonnull __timer_ptr);
+int timer_delete(timer_t _Nonnull __timer);
+int timer_settime(timer_t _Nonnull __timer, int __flags, const struct itimerspec* _Nonnull __new_value, struct itimerspec* _Nullable __old_value);
+int timer_gettime(timer_t _Nonnull _timer, struct itimerspec* _Nonnull __ts);
+int timer_getoverrun(timer_t _Nonnull __timer);
 
 /* Non-standard extensions that are in the BSDs and glibc. */
-time_t timelocal(struct tm* __tm);
-time_t timegm(struct tm* __tm);
+time_t timelocal(struct tm* _Nonnull __tm);
+time_t timegm(struct tm* _Nonnull __tm);
 
 #define TIME_UTC 1
-int timespec_get(struct timespec* __ts, int __base) __INTRODUCED_IN(29);
+int timespec_get(struct timespec* _Nonnull __ts, int __base) __INTRODUCED_IN(29);
 
 __END_DECLS
 
diff --git a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/include/time64.h b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/include/time64.h
index 905669d..7d70030 100644
--- a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/include/time64.h
+++ b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/include/time64.h
@@ -47,17 +47,17 @@
 
 typedef int64_t time64_t;
 
-char* asctime64(const struct tm*);
-char* asctime64_r(const struct tm*, char*);
-char* ctime64(const time64_t*);
-char* ctime64_r(const time64_t*, char*);
-struct tm* gmtime64(const time64_t*);
-struct tm* gmtime64_r(const time64_t*, struct tm*);
-struct tm* localtime64(const time64_t*);
-struct tm* localtime64_r(const time64_t*, struct tm*);
-time64_t mktime64(const struct tm*);
-time64_t timegm64(const struct tm*);
-time64_t timelocal64(const struct tm*);
+char* _Nullable asctime64(const struct tm* _Nonnull);
+char* _Nullable asctime64_r(const struct tm* _Nonnull, char* _Nonnull);
+char* _Nullable ctime64(const time64_t* _Nonnull);
+char* _Nullable ctime64_r(const time64_t* _Nonnull, char* _Nonnull);
+struct tm* _Nullable gmtime64(const time64_t* _Nonnull);
+struct tm* _Nullable gmtime64_r(const time64_t* _Nonnull, struct tm* _Nonnull);
+struct tm* _Nullable localtime64(const time64_t* _Nonnull);
+struct tm* _Nullable localtime64_r(const time64_t* _Nonnull, struct tm* _Nonnull);
+time64_t mktime64(const struct tm* _Nonnull);
+time64_t timegm64(const struct tm* _Nonnull);
+time64_t timelocal64(const struct tm* _Nonnull);
 
 __END_DECLS
 
diff --git a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/include/unistd.h b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/include/unistd.h
index e360421..3efc9a2 100644
--- a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/include/unistd.h
+++ b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/include/unistd.h
@@ -313,10 +313,37 @@
 int getdomainname(char* __buf, size_t __buf_size) __INTRODUCED_IN(26);
 int setdomainname(const char* __name, size_t __n) __INTRODUCED_IN(26);
 
+/**
+ * [copy_file_range(2)](https://man7.org/linux/man-pages/man2/copy_file_range.2.html) copies
+ * a range of data from one file descriptor to another.
+ *
+ * Available since API level 34.
+ *
+ * Returns the number of bytes copied on success, and returns -1 and sets
+ * `errno` on failure.
+ */
+ssize_t copy_file_range(int __fd_in, off64_t* __off_in, int __fd_out, off64_t* __off_out, size_t __length, unsigned int __flags) __INTRODUCED_IN(34);
+
 #if __ANDROID_API__ >= 28
 void swab(const void* __src, void* __dst, ssize_t __byte_count) __INTRODUCED_IN(28);
 #endif
 
+/**
+ * [close_range(2)](https://man7.org/linux/man-pages/man2/close_range.2.html)
+ * performs an action (which depends on value of flags) on an inclusive range
+ * of file descriptors.
+ *
+ * Available since API level 34.
+ *
+ * Note: there is no emulation on too old kernels, hence this will fail with
+ * -1/ENOSYS on pre-5.9 kernels, -1/EINVAL for unsupported flags.  In particular
+ * CLOSE_RANGE_CLOEXEC requires 5.11, though support was backported to Android
+ * Common Kernel 5.10-T.
+ *
+ * Returns 0 on success, and returns -1 and sets `errno` on failure.
+ */
+int close_range(unsigned int __min_fd, unsigned int __max_fd, int __flags) __INTRODUCED_IN(34);
+
 #if defined(__BIONIC_INCLUDE_FORTIFY_HEADERS)
 #define _UNISTD_H_
 #include <bits/fortify/unistd.h>
diff --git a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/android/scsi/scsi/scsi_proto.h b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/android/scsi/scsi/scsi_proto.h
index eea87a0..13ac4c8 100644
--- a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/android/scsi/scsi/scsi_proto.h
+++ b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/android/scsi/scsi/scsi_proto.h
@@ -183,6 +183,8 @@
   ZBC_ZONE_TYPE_CONV = 0x1,
   ZBC_ZONE_TYPE_SEQWRITE_REQ = 0x2,
   ZBC_ZONE_TYPE_SEQWRITE_PREF = 0x3,
+  ZBC_ZONE_TYPE_SEQ_OR_BEFORE_REQ = 0x4,
+  ZBC_ZONE_TYPE_GAP = 0x5,
 };
 enum zbc_zone_cond {
   ZBC_ZONE_COND_NO_WP = 0x0,
@@ -194,6 +196,10 @@
   ZBC_ZONE_COND_FULL = 0xe,
   ZBC_ZONE_COND_OFFLINE = 0xf,
 };
+enum zbc_zone_alignment_method {
+  ZBC_CONSTANT_ZONE_LENGTH = 0x1,
+  ZBC_CONSTANT_ZONE_START_OFFSET = 0x8,
+};
 enum scsi_version_descriptor {
   SCSI_VERSION_DESCRIPTOR_FCP4 = 0x0a40,
   SCSI_VERSION_DESCRIPTOR_ISCSI = 0x0960,
diff --git a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/asm-arm/asm/signal.h b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/asm-arm/asm/signal.h
index 5f7e0c5..0424380 100644
--- a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/asm-arm/asm/signal.h
+++ b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/asm-arm/asm/signal.h
@@ -78,6 +78,6 @@
 typedef struct sigaltstack {
   void __user * ss_sp;
   int ss_flags;
-  size_t ss_size;
+  __kernel_size_t ss_size;
 } stack_t;
 #endif
diff --git a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/asm-arm64/asm/hwcap.h b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/asm-arm64/asm/hwcap.h
index 4316724..af32056 100644
--- a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/asm-arm64/asm/hwcap.h
+++ b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/asm-arm64/asm/hwcap.h
@@ -72,4 +72,16 @@
 #define HWCAP2_ECV (1 << 19)
 #define HWCAP2_AFP (1 << 20)
 #define HWCAP2_RPRES (1 << 21)
+#define HWCAP2_MTE3 (1 << 22)
+#define HWCAP2_SME (1 << 23)
+#define HWCAP2_SME_I16I64 (1 << 24)
+#define HWCAP2_SME_F64F64 (1 << 25)
+#define HWCAP2_SME_I8I32 (1 << 26)
+#define HWCAP2_SME_F16F32 (1 << 27)
+#define HWCAP2_SME_B16F32 (1 << 28)
+#define HWCAP2_SME_F32F32 (1 << 29)
+#define HWCAP2_SME_FA64 (1 << 30)
+#define HWCAP2_WFXT (1UL << 31)
+#define HWCAP2_EBF16 (1UL << 32)
+#define HWCAP2_SVE_EBF16 (1UL << 33)
 #endif
diff --git a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/asm-arm64/asm/kvm.h b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/asm-arm64/asm/kvm.h
index c53ee87..4f9b347 100644
--- a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/asm-arm64/asm/kvm.h
+++ b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/asm-arm64/asm/kvm.h
@@ -51,9 +51,9 @@
 #define KVM_ARM_TARGET_GENERIC_V8 5
 #define KVM_ARM_NUM_TARGETS 6
 #define KVM_ARM_DEVICE_TYPE_SHIFT 0
-#define KVM_ARM_DEVICE_TYPE_MASK (0xffff << KVM_ARM_DEVICE_TYPE_SHIFT)
+#define KVM_ARM_DEVICE_TYPE_MASK GENMASK(KVM_ARM_DEVICE_TYPE_SHIFT + 15, KVM_ARM_DEVICE_TYPE_SHIFT)
 #define KVM_ARM_DEVICE_ID_SHIFT 16
-#define KVM_ARM_DEVICE_ID_MASK (0xffff << KVM_ARM_DEVICE_ID_SHIFT)
+#define KVM_ARM_DEVICE_ID_MASK GENMASK(KVM_ARM_DEVICE_ID_SHIFT + 15, KVM_ARM_DEVICE_ID_SHIFT)
 #define KVM_ARM_DEVICE_VGIC_V2 0
 #define KVM_VGIC_V2_ADDR_TYPE_DIST 0
 #define KVM_VGIC_V2_ADDR_TYPE_CPU 1
@@ -88,8 +88,10 @@
   __u64 dbg_wcr[KVM_ARM_MAX_DBG_REGS];
   __u64 dbg_wvr[KVM_ARM_MAX_DBG_REGS];
 };
+#define KVM_DEBUG_ARCH_HSR_HIGH_VALID (1 << 0)
 struct kvm_debug_exit_arch {
   __u32 hsr;
+  __u32 hsr_high;
   __u64 far;
 };
 #define KVM_GUESTDBG_USE_SW_BP (1 << 16)
@@ -185,6 +187,21 @@
 #define KVM_ARM64_SVE_VQ_MAX __SVE_VQ_MAX
 #define KVM_REG_ARM64_SVE_VLS (KVM_REG_ARM64 | KVM_REG_ARM64_SVE | KVM_REG_SIZE_U512 | 0xffff)
 #define KVM_ARM64_SVE_VLS_WORDS ((KVM_ARM64_SVE_VQ_MAX - KVM_ARM64_SVE_VQ_MIN) / 64 + 1)
+#define KVM_REG_ARM_FW_FEAT_BMAP (0x0016 << KVM_REG_ARM_COPROC_SHIFT)
+#define KVM_REG_ARM_FW_FEAT_BMAP_REG(r) (KVM_REG_ARM64 | KVM_REG_SIZE_U64 | KVM_REG_ARM_FW_FEAT_BMAP | ((r) & 0xffff))
+#define KVM_REG_ARM_STD_BMAP KVM_REG_ARM_FW_FEAT_BMAP_REG(0)
+enum {
+  KVM_REG_ARM_STD_BIT_TRNG_V1_0 = 0,
+};
+#define KVM_REG_ARM_STD_HYP_BMAP KVM_REG_ARM_FW_FEAT_BMAP_REG(1)
+enum {
+  KVM_REG_ARM_STD_HYP_BIT_PV_TIME = 0,
+};
+#define KVM_REG_ARM_VENDOR_HYP_BMAP KVM_REG_ARM_FW_FEAT_BMAP_REG(2)
+enum {
+  KVM_REG_ARM_VENDOR_HYP_BIT_FUNC_FEAT = 0,
+  KVM_REG_ARM_VENDOR_HYP_BIT_PTP = 1,
+};
 #define KVM_DEV_ARM_VGIC_GRP_ADDR 0
 #define KVM_DEV_ARM_VGIC_GRP_DIST_REGS 1
 #define KVM_DEV_ARM_VGIC_GRP_CPU_REGS 2
@@ -214,6 +231,7 @@
 #define KVM_ARM_VCPU_PMU_V3_IRQ 0
 #define KVM_ARM_VCPU_PMU_V3_INIT 1
 #define KVM_ARM_VCPU_PMU_V3_FILTER 2
+#define KVM_ARM_VCPU_PMU_V3_SET_PMU 3
 #define KVM_ARM_VCPU_TIMER_CTRL 1
 #define KVM_ARM_VCPU_TIMER_IRQ_VTIMER 0
 #define KVM_ARM_VCPU_TIMER_IRQ_PTIMER 1
@@ -244,5 +262,7 @@
 #define KVM_PSCI_RET_NI PSCI_RET_NOT_SUPPORTED
 #define KVM_PSCI_RET_INVAL PSCI_RET_INVALID_PARAMS
 #define KVM_PSCI_RET_DENIED PSCI_RET_DENIED
+#define KVM_SYSTEM_EVENT_RESET_FLAG_PSCI_RESET2 (1ULL << 0)
+#define KVM_EXIT_FAIL_ENTRY_CPU_UNSUPPORTED (1ULL << 0)
 #endif
 #endif
diff --git a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/asm-arm64/asm/perf_regs.h b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/asm-arm64/asm/perf_regs.h
index 71d496f..e18fd05 100644
--- a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/asm-arm64/asm/perf_regs.h
+++ b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/asm-arm64/asm/perf_regs.h
@@ -53,5 +53,8 @@
   PERF_REG_ARM64_SP,
   PERF_REG_ARM64_PC,
   PERF_REG_ARM64_MAX,
+  PERF_REG_ARM64_VG = 46,
+  PERF_REG_ARM64_EXTENDED_MAX
 };
+#define PERF_REG_EXTENDED_MASK (1ULL << PERF_REG_ARM64_VG)
 #endif
diff --git a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/asm-arm64/asm/ptrace.h b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/asm-arm64/asm/ptrace.h
index 480efcf..9540c3e 100644
--- a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/asm-arm64/asm/ptrace.h
+++ b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/asm-arm64/asm/ptrace.h
@@ -111,7 +111,7 @@
 #define SVE_PT_SVE_FPSR_OFFSET(vq) ((SVE_PT_SVE_FFR_OFFSET(vq) + SVE_PT_SVE_FFR_SIZE(vq) + (__SVE_VQ_BYTES - 1)) / __SVE_VQ_BYTES * __SVE_VQ_BYTES)
 #define SVE_PT_SVE_FPCR_OFFSET(vq) (SVE_PT_SVE_FPSR_OFFSET(vq) + SVE_PT_SVE_FPSR_SIZE)
 #define SVE_PT_SVE_SIZE(vq,flags) ((SVE_PT_SVE_FPCR_OFFSET(vq) + SVE_PT_SVE_FPCR_SIZE - SVE_PT_SVE_OFFSET + (__SVE_VQ_BYTES - 1)) / __SVE_VQ_BYTES * __SVE_VQ_BYTES)
-#define SVE_PT_SIZE(vq,flags) (((flags) & SVE_PT_REGS_MASK) == SVE_PT_REGS_SVE ? SVE_PT_SVE_OFFSET + SVE_PT_SVE_SIZE(vq, flags) : SVE_PT_FPSIMD_OFFSET + SVE_PT_FPSIMD_SIZE(vq, flags))
+#define SVE_PT_SIZE(vq,flags) (((flags) & SVE_PT_REGS_MASK) == SVE_PT_REGS_SVE ? SVE_PT_SVE_OFFSET + SVE_PT_SVE_SIZE(vq, flags) : ((((flags) & SVE_PT_REGS_MASK) == SVE_PT_REGS_FPSIMD ? SVE_PT_FPSIMD_OFFSET + SVE_PT_FPSIMD_SIZE(vq, flags) : SVE_PT_REGS_OFFSET)))
 struct user_pac_mask {
   __u64 data_mask;
   __u64 insn_mask;
@@ -125,5 +125,19 @@
 struct user_pac_generic_keys {
   __uint128_t apgakey;
 };
+struct user_za_header {
+  __u32 size;
+  __u32 max_size;
+  __u16 vl;
+  __u16 max_vl;
+  __u16 flags;
+  __u16 __reserved;
+};
+#define ZA_PT_VL_INHERIT ((1 << 17) >> 16)
+#define ZA_PT_VL_ONEXEC ((1 << 18) >> 16)
+#define ZA_PT_ZA_OFFSET ((sizeof(struct user_za_header) + (__SVE_VQ_BYTES - 1)) / __SVE_VQ_BYTES * __SVE_VQ_BYTES)
+#define ZA_PT_ZAV_OFFSET(vq,n) (ZA_PT_ZA_OFFSET + ((vq * __SVE_VQ_BYTES) * n))
+#define ZA_PT_ZA_SIZE(vq) ((vq * __SVE_VQ_BYTES) * (vq * __SVE_VQ_BYTES))
+#define ZA_PT_SIZE(vq) (ZA_PT_ZA_OFFSET + ZA_PT_ZA_SIZE(vq))
 #endif
 #endif
diff --git a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/asm-arm64/asm/sigcontext.h b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/asm-arm64/asm/sigcontext.h
index 518079d..04aa593 100644
--- a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/asm-arm64/asm/sigcontext.h
+++ b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/asm-arm64/asm/sigcontext.h
@@ -55,6 +55,14 @@
 struct sve_context {
   struct _aarch64_ctx head;
   __u16 vl;
+  __u16 flags;
+  __u16 __reserved[2];
+};
+#define SVE_SIG_FLAG_SM 0x1
+#define ZA_MAGIC 0x54366345
+struct za_context {
+  struct _aarch64_ctx head;
+  __u16 vl;
   __u16 __reserved[3];
 };
 #endif
@@ -82,4 +90,8 @@
 #define SVE_SIG_FFR_OFFSET(vq) (SVE_SIG_REGS_OFFSET + __SVE_FFR_OFFSET(vq))
 #define SVE_SIG_REGS_SIZE(vq) (__SVE_FFR_OFFSET(vq) + __SVE_FFR_SIZE(vq))
 #define SVE_SIG_CONTEXT_SIZE(vq) (SVE_SIG_REGS_OFFSET + SVE_SIG_REGS_SIZE(vq))
+#define ZA_SIG_REGS_OFFSET ((sizeof(struct za_context) + (__SVE_VQ_BYTES - 1)) / __SVE_VQ_BYTES * __SVE_VQ_BYTES)
+#define ZA_SIG_REGS_SIZE(vq) ((vq * __SVE_VQ_BYTES) * (vq * __SVE_VQ_BYTES))
+#define ZA_SIG_ZAV_OFFSET(vq,n) (ZA_SIG_REGS_OFFSET + (SVE_SIG_ZREG_SIZE(vq) * n))
+#define ZA_SIG_CONTEXT_SIZE(vq) (ZA_SIG_REGS_OFFSET + ZA_SIG_REGS_SIZE(vq))
 #endif
diff --git a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/asm-generic/fcntl.h b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/asm-generic/fcntl.h
index a2cb5f4..ea8c108 100644
--- a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/asm-generic/fcntl.h
+++ b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/asm-generic/fcntl.h
@@ -100,7 +100,7 @@
 #define F_SETSIG 10
 #define F_GETSIG 11
 #endif
-#ifndef __LP64__
+#if __BITS_PER_LONG == 32
 #ifndef F_GETLK64
 #define F_GETLK64 12
 #define F_SETLK64 13
@@ -144,13 +144,5 @@
 #define LOCK_RW 192
 #define F_LINUX_SPECIFIC_BASE 1024
 #ifndef HAVE_ARCH_STRUCT_FLOCK
-#ifndef __ARCH_FLOCK_PAD
-#define __ARCH_FLOCK_PAD
-#endif
-#endif
-#ifndef HAVE_ARCH_STRUCT_FLOCK64
-#ifndef __ARCH_FLOCK64_PAD
-#define __ARCH_FLOCK64_PAD
-#endif
 #endif
 #endif
diff --git a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/asm-generic/hugetlb_encode.h b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/asm-generic/hugetlb_encode.h
index 73d8180..059991c 100644
--- a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/asm-generic/hugetlb_encode.h
+++ b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/asm-generic/hugetlb_encode.h
@@ -20,17 +20,17 @@
 #define _ASM_GENERIC_HUGETLB_ENCODE_H_
 #define HUGETLB_FLAG_ENCODE_SHIFT 26
 #define HUGETLB_FLAG_ENCODE_MASK 0x3f
-#define HUGETLB_FLAG_ENCODE_16KB (14 << HUGETLB_FLAG_ENCODE_SHIFT)
-#define HUGETLB_FLAG_ENCODE_64KB (16 << HUGETLB_FLAG_ENCODE_SHIFT)
-#define HUGETLB_FLAG_ENCODE_512KB (19 << HUGETLB_FLAG_ENCODE_SHIFT)
-#define HUGETLB_FLAG_ENCODE_1MB (20 << HUGETLB_FLAG_ENCODE_SHIFT)
-#define HUGETLB_FLAG_ENCODE_2MB (21 << HUGETLB_FLAG_ENCODE_SHIFT)
-#define HUGETLB_FLAG_ENCODE_8MB (23 << HUGETLB_FLAG_ENCODE_SHIFT)
-#define HUGETLB_FLAG_ENCODE_16MB (24 << HUGETLB_FLAG_ENCODE_SHIFT)
-#define HUGETLB_FLAG_ENCODE_32MB (25 << HUGETLB_FLAG_ENCODE_SHIFT)
-#define HUGETLB_FLAG_ENCODE_256MB (28 << HUGETLB_FLAG_ENCODE_SHIFT)
-#define HUGETLB_FLAG_ENCODE_512MB (29 << HUGETLB_FLAG_ENCODE_SHIFT)
-#define HUGETLB_FLAG_ENCODE_1GB (30 << HUGETLB_FLAG_ENCODE_SHIFT)
-#define HUGETLB_FLAG_ENCODE_2GB (31 << HUGETLB_FLAG_ENCODE_SHIFT)
-#define HUGETLB_FLAG_ENCODE_16GB (34 << HUGETLB_FLAG_ENCODE_SHIFT)
+#define HUGETLB_FLAG_ENCODE_16KB (14U << HUGETLB_FLAG_ENCODE_SHIFT)
+#define HUGETLB_FLAG_ENCODE_64KB (16U << HUGETLB_FLAG_ENCODE_SHIFT)
+#define HUGETLB_FLAG_ENCODE_512KB (19U << HUGETLB_FLAG_ENCODE_SHIFT)
+#define HUGETLB_FLAG_ENCODE_1MB (20U << HUGETLB_FLAG_ENCODE_SHIFT)
+#define HUGETLB_FLAG_ENCODE_2MB (21U << HUGETLB_FLAG_ENCODE_SHIFT)
+#define HUGETLB_FLAG_ENCODE_8MB (23U << HUGETLB_FLAG_ENCODE_SHIFT)
+#define HUGETLB_FLAG_ENCODE_16MB (24U << HUGETLB_FLAG_ENCODE_SHIFT)
+#define HUGETLB_FLAG_ENCODE_32MB (25U << HUGETLB_FLAG_ENCODE_SHIFT)
+#define HUGETLB_FLAG_ENCODE_256MB (28U << HUGETLB_FLAG_ENCODE_SHIFT)
+#define HUGETLB_FLAG_ENCODE_512MB (29U << HUGETLB_FLAG_ENCODE_SHIFT)
+#define HUGETLB_FLAG_ENCODE_1GB (30U << HUGETLB_FLAG_ENCODE_SHIFT)
+#define HUGETLB_FLAG_ENCODE_2GB (31U << HUGETLB_FLAG_ENCODE_SHIFT)
+#define HUGETLB_FLAG_ENCODE_16GB (34U << HUGETLB_FLAG_ENCODE_SHIFT)
 #endif
diff --git a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/asm-generic/mman-common.h b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/asm-generic/mman-common.h
index 9440576..966d05b 100644
--- a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/asm-generic/mman-common.h
+++ b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/asm-generic/mman-common.h
@@ -62,6 +62,8 @@
 #define MADV_PAGEOUT 21
 #define MADV_POPULATE_READ 22
 #define MADV_POPULATE_WRITE 23
+#define MADV_DONTNEED_LOCKED 24
+#define MADV_COLLAPSE 25
 #define MAP_FILE 0
 #define PKEY_DISABLE_ACCESS 0x1
 #define PKEY_DISABLE_WRITE 0x2
diff --git a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/asm-generic/shmbuf.h b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/asm-generic/shmbuf.h
index 067ffbc..11487f4 100644
--- a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/asm-generic/shmbuf.h
+++ b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/asm-generic/shmbuf.h
@@ -19,9 +19,11 @@
 #ifndef __ASM_GENERIC_SHMBUF_H
 #define __ASM_GENERIC_SHMBUF_H
 #include <asm/bitsperlong.h>
+#include <asm/ipcbuf.h>
+#include <asm/posix_types.h>
 struct shmid64_ds {
   struct ipc64_perm shm_perm;
-  size_t shm_segsz;
+  __kernel_size_t shm_segsz;
 #if __BITS_PER_LONG == 64
   long shm_atime;
   long shm_dtime;
diff --git a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/asm-generic/siginfo.h b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/asm-generic/siginfo.h
index f9199e5..c5e4178 100644
--- a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/asm-generic/siginfo.h
+++ b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/asm-generic/siginfo.h
@@ -80,6 +80,7 @@
       struct {
         unsigned long _data;
         __u32 _type;
+        __u32 _flags;
       } _perf;
     };
   } _sigfault;
@@ -125,6 +126,7 @@
 #define si_pkey _sifields._sigfault._addr_pkey._pkey
 #define si_perf_data _sifields._sigfault._perf._data
 #define si_perf_type _sifields._sigfault._perf._type
+#define si_perf_flags _sifields._sigfault._perf._flags
 #define si_band _sifields._sigpoll._band
 #define si_fd _sifields._sigpoll._fd
 #define si_call_addr _sifields._sigsys._call_addr
@@ -197,6 +199,7 @@
 #define TRAP_UNK 5
 #define TRAP_PERF 6
 #define NSIGTRAP 6
+#define TRAP_PERF_FLAG_ASYNC (1u << 0)
 #define CLD_EXITED 1
 #define CLD_KILLED 2
 #define CLD_DUMPED 3
diff --git a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/asm-generic/signal.h b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/asm-generic/signal.h
index 874fece..5cb1dce 100644
--- a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/asm-generic/signal.h
+++ b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/asm-generic/signal.h
@@ -84,7 +84,7 @@
 typedef struct sigaltstack {
   void __user * ss_sp;
   int ss_flags;
-  size_t ss_size;
+  __kernel_size_t ss_size;
 } stack_t;
 #endif
 #endif
diff --git a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/asm-generic/socket.h b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/asm-generic/socket.h
index 6767993..1a321bf 100644
--- a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/asm-generic/socket.h
+++ b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/asm-generic/socket.h
@@ -100,6 +100,8 @@
 #define SO_NETNS_COOKIE 71
 #define SO_BUF_LOCK 72
 #define SO_RESERVE_MEM 73
+#define SO_TXREHASH 74
+#define SO_RCVMARK 75
 #if __BITS_PER_LONG == 64 || defined(__x86_64__) && defined(__ILP32__)
 #define SO_TIMESTAMP SO_TIMESTAMP_OLD
 #define SO_TIMESTAMPNS SO_TIMESTAMPNS_OLD
diff --git a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/asm-generic/termbits-common.h b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/asm-generic/termbits-common.h
new file mode 100644
index 0000000..281eee8
--- /dev/null
+++ b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/asm-generic/termbits-common.h
@@ -0,0 +1,68 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef __ASM_GENERIC_TERMBITS_COMMON_H
+#define __ASM_GENERIC_TERMBITS_COMMON_H
+typedef unsigned char cc_t;
+typedef unsigned int speed_t;
+#define IGNBRK 0x001
+#define BRKINT 0x002
+#define IGNPAR 0x004
+#define PARMRK 0x008
+#define INPCK 0x010
+#define ISTRIP 0x020
+#define INLCR 0x040
+#define IGNCR 0x080
+#define ICRNL 0x100
+#define IXANY 0x800
+#define OPOST 0x01
+#define OCRNL 0x08
+#define ONOCR 0x10
+#define ONLRET 0x20
+#define OFILL 0x40
+#define OFDEL 0x80
+#define B0 0x00000000
+#define B50 0x00000001
+#define B75 0x00000002
+#define B110 0x00000003
+#define B134 0x00000004
+#define B150 0x00000005
+#define B200 0x00000006
+#define B300 0x00000007
+#define B600 0x00000008
+#define B1200 0x00000009
+#define B1800 0x0000000a
+#define B2400 0x0000000b
+#define B4800 0x0000000c
+#define B9600 0x0000000d
+#define B19200 0x0000000e
+#define B38400 0x0000000f
+#define EXTA B19200
+#define EXTB B38400
+#define ADDRB 0x20000000
+#define CMSPAR 0x40000000
+#define CRTSCTS 0x80000000
+#define IBSHIFT 16
+#define TCOOFF 0
+#define TCOON 1
+#define TCIOFF 2
+#define TCION 3
+#define TCIFLUSH 0
+#define TCOFLUSH 1
+#define TCIOFLUSH 2
+#endif
diff --git a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/asm-generic/termbits.h b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/asm-generic/termbits.h
index b592964..87d6c82 100644
--- a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/asm-generic/termbits.h
+++ b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/asm-generic/termbits.h
@@ -18,9 +18,7 @@
  ****************************************************************************/
 #ifndef __ASM_GENERIC_TERMBITS_H
 #define __ASM_GENERIC_TERMBITS_H
-#include <linux/posix_types.h>
-typedef unsigned char cc_t;
-typedef unsigned int speed_t;
+#include <asm-generic/termbits-common.h>
 typedef unsigned int tcflag_t;
 #define NCCS 19
 struct termios {
@@ -68,126 +66,82 @@
 #define VWERASE 14
 #define VLNEXT 15
 #define VEOL2 16
-#define IGNBRK 0000001
-#define BRKINT 0000002
-#define IGNPAR 0000004
-#define PARMRK 0000010
-#define INPCK 0000020
-#define ISTRIP 0000040
-#define INLCR 0000100
-#define IGNCR 0000200
-#define ICRNL 0000400
-#define IUCLC 0001000
-#define IXON 0002000
-#define IXANY 0004000
-#define IXOFF 0010000
-#define IMAXBEL 0020000
-#define IUTF8 0040000
-#define OPOST 0000001
-#define OLCUC 0000002
-#define ONLCR 0000004
-#define OCRNL 0000010
-#define ONOCR 0000020
-#define ONLRET 0000040
-#define OFILL 0000100
-#define OFDEL 0000200
-#define NLDLY 0000400
-#define NL0 0000000
-#define NL1 0000400
-#define CRDLY 0003000
-#define CR0 0000000
-#define CR1 0001000
-#define CR2 0002000
-#define CR3 0003000
-#define TABDLY 0014000
-#define TAB0 0000000
-#define TAB1 0004000
-#define TAB2 0010000
-#define TAB3 0014000
-#define XTABS 0014000
-#define BSDLY 0020000
-#define BS0 0000000
-#define BS1 0020000
-#define VTDLY 0040000
-#define VT0 0000000
-#define VT1 0040000
-#define FFDLY 0100000
-#define FF0 0000000
-#define FF1 0100000
-#define CBAUD 0010017
-#define B0 0000000
-#define B50 0000001
-#define B75 0000002
-#define B110 0000003
-#define B134 0000004
-#define B150 0000005
-#define B200 0000006
-#define B300 0000007
-#define B600 0000010
-#define B1200 0000011
-#define B1800 0000012
-#define B2400 0000013
-#define B4800 0000014
-#define B9600 0000015
-#define B19200 0000016
-#define B38400 0000017
-#define EXTA B19200
-#define EXTB B38400
-#define CSIZE 0000060
-#define CS5 0000000
-#define CS6 0000020
-#define CS7 0000040
-#define CS8 0000060
-#define CSTOPB 0000100
-#define CREAD 0000200
-#define PARENB 0000400
-#define PARODD 0001000
-#define HUPCL 0002000
-#define CLOCAL 0004000
-#define CBAUDEX 0010000
-#define BOTHER 0010000
-#define B57600 0010001
-#define B115200 0010002
-#define B230400 0010003
-#define B460800 0010004
-#define B500000 0010005
-#define B576000 0010006
-#define B921600 0010007
-#define B1000000 0010010
-#define B1152000 0010011
-#define B1500000 0010012
-#define B2000000 0010013
-#define B2500000 0010014
-#define B3000000 0010015
-#define B3500000 0010016
-#define B4000000 0010017
-#define CIBAUD 002003600000
-#define CMSPAR 010000000000
-#define CRTSCTS 020000000000
-#define IBSHIFT 16
-#define ISIG 0000001
-#define ICANON 0000002
-#define XCASE 0000004
-#define ECHO 0000010
-#define ECHOE 0000020
-#define ECHOK 0000040
-#define ECHONL 0000100
-#define NOFLSH 0000200
-#define TOSTOP 0000400
-#define ECHOCTL 0001000
-#define ECHOPRT 0002000
-#define ECHOKE 0004000
-#define FLUSHO 0010000
-#define PENDIN 0040000
-#define IEXTEN 0100000
-#define EXTPROC 0200000
-#define TCOOFF 0
-#define TCOON 1
-#define TCIOFF 2
-#define TCION 3
-#define TCIFLUSH 0
-#define TCOFLUSH 1
-#define TCIOFLUSH 2
+#define IUCLC 0x0200
+#define IXON 0x0400
+#define IXOFF 0x1000
+#define IMAXBEL 0x2000
+#define IUTF8 0x4000
+#define OLCUC 0x00002
+#define ONLCR 0x00004
+#define NLDLY 0x00100
+#define NL0 0x00000
+#define NL1 0x00100
+#define CRDLY 0x00600
+#define CR0 0x00000
+#define CR1 0x00200
+#define CR2 0x00400
+#define CR3 0x00600
+#define TABDLY 0x01800
+#define TAB0 0x00000
+#define TAB1 0x00800
+#define TAB2 0x01000
+#define TAB3 0x01800
+#define XTABS 0x01800
+#define BSDLY 0x02000
+#define BS0 0x00000
+#define BS1 0x02000
+#define VTDLY 0x04000
+#define VT0 0x00000
+#define VT1 0x04000
+#define FFDLY 0x08000
+#define FF0 0x00000
+#define FF1 0x08000
+#define CBAUD 0x0000100f
+#define CSIZE 0x00000030
+#define CS5 0x00000000
+#define CS6 0x00000010
+#define CS7 0x00000020
+#define CS8 0x00000030
+#define CSTOPB 0x00000040
+#define CREAD 0x00000080
+#define PARENB 0x00000100
+#define PARODD 0x00000200
+#define HUPCL 0x00000400
+#define CLOCAL 0x00000800
+#define CBAUDEX 0x00001000
+#define BOTHER 0x00001000
+#define B57600 0x00001001
+#define B115200 0x00001002
+#define B230400 0x00001003
+#define B460800 0x00001004
+#define B500000 0x00001005
+#define B576000 0x00001006
+#define B921600 0x00001007
+#define B1000000 0x00001008
+#define B1152000 0x00001009
+#define B1500000 0x0000100a
+#define B2000000 0x0000100b
+#define B2500000 0x0000100c
+#define B3000000 0x0000100d
+#define B3500000 0x0000100e
+#define B4000000 0x0000100f
+#define CIBAUD 0x100f0000
+#define ISIG 0x00001
+#define ICANON 0x00002
+#define XCASE 0x00004
+#define ECHO 0x00008
+#define ECHOE 0x00010
+#define ECHOK 0x00020
+#define ECHONL 0x00040
+#define NOFLSH 0x00080
+#define TOSTOP 0x00100
+#define ECHOCTL 0x00200
+#define ECHOPRT 0x00400
+#define ECHOKE 0x00800
+#define FLUSHO 0x01000
+#define PENDIN 0x04000
+#define IEXTEN 0x08000
+#define EXTPROC 0x10000
 #define TCSANOW 0
 #define TCSADRAIN 1
 #define TCSAFLUSH 2
diff --git a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/asm-generic/unistd.h b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/asm-generic/unistd.h
index 4b9f174..d23958b 100644
--- a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/asm-generic/unistd.h
+++ b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/asm-generic/unistd.h
@@ -360,7 +360,7 @@
 #endif
 #define __NR_rseq 293
 #define __NR_kexec_file_load 294
-#if __BITS_PER_LONG == 32
+#if defined(__SYSCALL_COMPAT) || __BITS_PER_LONG == 32
 #define __NR_clock_gettime64 403
 #define __NR_clock_settime64 404
 #define __NR_clock_adjtime64 405
diff --git a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/asm-riscv/asm/auxvec.h b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/asm-riscv/asm/auxvec.h
new file mode 100644
index 0000000..c70be17
--- /dev/null
+++ b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/asm-riscv/asm/auxvec.h
@@ -0,0 +1,31 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPI_ASM_RISCV_AUXVEC_H
+#define _UAPI_ASM_RISCV_AUXVEC_H
+#define AT_SYSINFO_EHDR 33
+#define AT_L1I_CACHESIZE 40
+#define AT_L1I_CACHEGEOMETRY 41
+#define AT_L1D_CACHESIZE 42
+#define AT_L1D_CACHEGEOMETRY 43
+#define AT_L2_CACHESIZE 44
+#define AT_L2_CACHEGEOMETRY 45
+#define AT_L3_CACHESIZE 46
+#define AT_L3_CACHEGEOMETRY 47
+#define AT_VECTOR_SIZE_ARCH 9
+#endif
diff --git a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/asm-riscv/asm/bitsperlong.h b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/asm-riscv/asm/bitsperlong.h
new file mode 100644
index 0000000..098b610
--- /dev/null
+++ b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/asm-riscv/asm/bitsperlong.h
@@ -0,0 +1,23 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPI_ASM_RISCV_BITSPERLONG_H
+#define _UAPI_ASM_RISCV_BITSPERLONG_H
+#define __BITS_PER_LONG (__SIZEOF_POINTER__ * 8)
+#include <asm-generic/bitsperlong.h>
+#endif
diff --git a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/asm-riscv/asm/bpf_perf_event.h b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/asm-riscv/asm/bpf_perf_event.h
new file mode 100644
index 0000000..47c09fd
--- /dev/null
+++ b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/asm-riscv/asm/bpf_perf_event.h
@@ -0,0 +1,23 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPI__ASM_BPF_PERF_EVENT_H__
+#define _UAPI__ASM_BPF_PERF_EVENT_H__
+#include <asm/ptrace.h>
+typedef struct user_regs_struct bpf_user_pt_regs_t;
+#endif
diff --git a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/asm-riscv/asm/byteorder.h b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/asm-riscv/asm/byteorder.h
new file mode 100644
index 0000000..42afc14
--- /dev/null
+++ b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/asm-riscv/asm/byteorder.h
@@ -0,0 +1,22 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPI_ASM_RISCV_BYTEORDER_H
+#define _UAPI_ASM_RISCV_BYTEORDER_H
+#include <linux/byteorder/little_endian.h>
+#endif
diff --git a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/asm-riscv/asm/elf.h b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/asm-riscv/asm/elf.h
new file mode 100644
index 0000000..07593d9
--- /dev/null
+++ b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/asm-riscv/asm/elf.h
@@ -0,0 +1,89 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPI_ASM_RISCV_ELF_H
+#define _UAPI_ASM_RISCV_ELF_H
+#include <asm/ptrace.h>
+typedef unsigned long elf_greg_t;
+typedef struct user_regs_struct elf_gregset_t;
+#define ELF_NGREG (sizeof(elf_gregset_t) / sizeof(elf_greg_t))
+typedef __u64 elf_fpreg_t;
+typedef union __riscv_fp_state elf_fpregset_t;
+#define ELF_NFPREG (sizeof(struct __riscv_d_ext_state) / sizeof(elf_fpreg_t))
+#if __riscv_xlen == 64
+#define ELF_RISCV_R_SYM(r_info) ELF64_R_SYM(r_info)
+#define ELF_RISCV_R_TYPE(r_info) ELF64_R_TYPE(r_info)
+#else
+#define ELF_RISCV_R_SYM(r_info) ELF32_R_SYM(r_info)
+#define ELF_RISCV_R_TYPE(r_info) ELF32_R_TYPE(r_info)
+#endif
+#define R_RISCV_NONE 0
+#define R_RISCV_32 1
+#define R_RISCV_64 2
+#define R_RISCV_RELATIVE 3
+#define R_RISCV_COPY 4
+#define R_RISCV_JUMP_SLOT 5
+#define R_RISCV_TLS_DTPMOD32 6
+#define R_RISCV_TLS_DTPMOD64 7
+#define R_RISCV_TLS_DTPREL32 8
+#define R_RISCV_TLS_DTPREL64 9
+#define R_RISCV_TLS_TPREL32 10
+#define R_RISCV_TLS_TPREL64 11
+#define R_RISCV_BRANCH 16
+#define R_RISCV_JAL 17
+#define R_RISCV_CALL 18
+#define R_RISCV_CALL_PLT 19
+#define R_RISCV_GOT_HI20 20
+#define R_RISCV_TLS_GOT_HI20 21
+#define R_RISCV_TLS_GD_HI20 22
+#define R_RISCV_PCREL_HI20 23
+#define R_RISCV_PCREL_LO12_I 24
+#define R_RISCV_PCREL_LO12_S 25
+#define R_RISCV_HI20 26
+#define R_RISCV_LO12_I 27
+#define R_RISCV_LO12_S 28
+#define R_RISCV_TPREL_HI20 29
+#define R_RISCV_TPREL_LO12_I 30
+#define R_RISCV_TPREL_LO12_S 31
+#define R_RISCV_TPREL_ADD 32
+#define R_RISCV_ADD8 33
+#define R_RISCV_ADD16 34
+#define R_RISCV_ADD32 35
+#define R_RISCV_ADD64 36
+#define R_RISCV_SUB8 37
+#define R_RISCV_SUB16 38
+#define R_RISCV_SUB32 39
+#define R_RISCV_SUB64 40
+#define R_RISCV_GNU_VTINHERIT 41
+#define R_RISCV_GNU_VTENTRY 42
+#define R_RISCV_ALIGN 43
+#define R_RISCV_RVC_BRANCH 44
+#define R_RISCV_RVC_JUMP 45
+#define R_RISCV_LUI 46
+#define R_RISCV_GPREL_I 47
+#define R_RISCV_GPREL_S 48
+#define R_RISCV_TPREL_I 49
+#define R_RISCV_TPREL_S 50
+#define R_RISCV_RELAX 51
+#define R_RISCV_SUB6 52
+#define R_RISCV_SET6 53
+#define R_RISCV_SET8 54
+#define R_RISCV_SET16 55
+#define R_RISCV_SET32 56
+#define R_RISCV_32_PCREL 57
+#endif
diff --git a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/asm-riscv/asm/errno.h b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/asm-riscv/asm/errno.h
new file mode 100644
index 0000000..392cd94
--- /dev/null
+++ b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/asm-riscv/asm/errno.h
@@ -0,0 +1,19 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#include <asm-generic/errno.h>
diff --git a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/asm-riscv/asm/fcntl.h b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/asm-riscv/asm/fcntl.h
new file mode 100644
index 0000000..518d3a7
--- /dev/null
+++ b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/asm-riscv/asm/fcntl.h
@@ -0,0 +1,19 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#include <asm-generic/fcntl.h>
diff --git a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/asm-riscv/asm/hwcap.h b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/asm-riscv/asm/hwcap.h
new file mode 100644
index 0000000..d130cf7
--- /dev/null
+++ b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/asm-riscv/asm/hwcap.h
@@ -0,0 +1,27 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPI_ASM_RISCV_HWCAP_H
+#define _UAPI_ASM_RISCV_HWCAP_H
+#define COMPAT_HWCAP_ISA_I (1 << ('I' - 'A'))
+#define COMPAT_HWCAP_ISA_M (1 << ('M' - 'A'))
+#define COMPAT_HWCAP_ISA_A (1 << ('A' - 'A'))
+#define COMPAT_HWCAP_ISA_F (1 << ('F' - 'A'))
+#define COMPAT_HWCAP_ISA_D (1 << ('D' - 'A'))
+#define COMPAT_HWCAP_ISA_C (1 << ('C' - 'A'))
+#endif
diff --git a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/asm-riscv/asm/ioctl.h b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/asm-riscv/asm/ioctl.h
new file mode 100644
index 0000000..7b7bd37
--- /dev/null
+++ b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/asm-riscv/asm/ioctl.h
@@ -0,0 +1,19 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#include <asm-generic/ioctl.h>
diff --git a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/asm-riscv/asm/ioctls.h b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/asm-riscv/asm/ioctls.h
new file mode 100644
index 0000000..0c66935
--- /dev/null
+++ b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/asm-riscv/asm/ioctls.h
@@ -0,0 +1,19 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#include <asm-generic/ioctls.h>
diff --git a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/asm-riscv/asm/ipcbuf.h b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/asm-riscv/asm/ipcbuf.h
new file mode 100644
index 0000000..0021f14
--- /dev/null
+++ b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/asm-riscv/asm/ipcbuf.h
@@ -0,0 +1,19 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#include <asm-generic/ipcbuf.h>
diff --git a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/asm-riscv/asm/kvm.h b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/asm-riscv/asm/kvm.h
new file mode 100644
index 0000000..5dc165b
--- /dev/null
+++ b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/asm-riscv/asm/kvm.h
@@ -0,0 +1,102 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef __LINUX_KVM_RISCV_H
+#define __LINUX_KVM_RISCV_H
+#ifndef __ASSEMBLY__
+#include <linux/types.h>
+#include <asm/ptrace.h>
+#define __KVM_HAVE_READONLY_MEM
+#define KVM_COALESCED_MMIO_PAGE_OFFSET 1
+#define KVM_INTERRUPT_SET - 1U
+#define KVM_INTERRUPT_UNSET - 2U
+struct kvm_regs {
+};
+struct kvm_fpu {
+};
+struct kvm_debug_exit_arch {
+};
+struct kvm_guest_debug_arch {
+};
+struct kvm_sync_regs {
+};
+struct kvm_sregs {
+};
+struct kvm_riscv_config {
+  unsigned long isa;
+  unsigned long zicbom_block_size;
+};
+struct kvm_riscv_core {
+  struct user_regs_struct regs;
+  unsigned long mode;
+};
+#define KVM_RISCV_MODE_S 1
+#define KVM_RISCV_MODE_U 0
+struct kvm_riscv_csr {
+  unsigned long sstatus;
+  unsigned long sie;
+  unsigned long stvec;
+  unsigned long sscratch;
+  unsigned long sepc;
+  unsigned long scause;
+  unsigned long stval;
+  unsigned long sip;
+  unsigned long satp;
+  unsigned long scounteren;
+};
+struct kvm_riscv_timer {
+  __u64 frequency;
+  __u64 time;
+  __u64 compare;
+  __u64 state;
+};
+enum KVM_RISCV_ISA_EXT_ID {
+  KVM_RISCV_ISA_EXT_A = 0,
+  KVM_RISCV_ISA_EXT_C,
+  KVM_RISCV_ISA_EXT_D,
+  KVM_RISCV_ISA_EXT_F,
+  KVM_RISCV_ISA_EXT_H,
+  KVM_RISCV_ISA_EXT_I,
+  KVM_RISCV_ISA_EXT_M,
+  KVM_RISCV_ISA_EXT_SVPBMT,
+  KVM_RISCV_ISA_EXT_SSTC,
+  KVM_RISCV_ISA_EXT_SVINVAL,
+  KVM_RISCV_ISA_EXT_ZIHINTPAUSE,
+  KVM_RISCV_ISA_EXT_ZICBOM,
+  KVM_RISCV_ISA_EXT_MAX,
+};
+#define KVM_RISCV_TIMER_STATE_OFF 0
+#define KVM_RISCV_TIMER_STATE_ON 1
+#define KVM_REG_SIZE(id) (1U << (((id) & KVM_REG_SIZE_MASK) >> KVM_REG_SIZE_SHIFT))
+#define KVM_REG_RISCV_TYPE_MASK 0x00000000FF000000
+#define KVM_REG_RISCV_TYPE_SHIFT 24
+#define KVM_REG_RISCV_CONFIG (0x01 << KVM_REG_RISCV_TYPE_SHIFT)
+#define KVM_REG_RISCV_CONFIG_REG(name) (offsetof(struct kvm_riscv_config, name) / sizeof(unsigned long))
+#define KVM_REG_RISCV_CORE (0x02 << KVM_REG_RISCV_TYPE_SHIFT)
+#define KVM_REG_RISCV_CORE_REG(name) (offsetof(struct kvm_riscv_core, name) / sizeof(unsigned long))
+#define KVM_REG_RISCV_CSR (0x03 << KVM_REG_RISCV_TYPE_SHIFT)
+#define KVM_REG_RISCV_CSR_REG(name) (offsetof(struct kvm_riscv_csr, name) / sizeof(unsigned long))
+#define KVM_REG_RISCV_TIMER (0x04 << KVM_REG_RISCV_TYPE_SHIFT)
+#define KVM_REG_RISCV_TIMER_REG(name) (offsetof(struct kvm_riscv_timer, name) / sizeof(__u64))
+#define KVM_REG_RISCV_FP_F (0x05 << KVM_REG_RISCV_TYPE_SHIFT)
+#define KVM_REG_RISCV_FP_F_REG(name) (offsetof(struct __riscv_f_ext_state, name) / sizeof(__u32))
+#define KVM_REG_RISCV_FP_D (0x06 << KVM_REG_RISCV_TYPE_SHIFT)
+#define KVM_REG_RISCV_FP_D_REG(name) (offsetof(struct __riscv_d_ext_state, name) / sizeof(__u64))
+#define KVM_REG_RISCV_ISA_EXT (0x07 << KVM_REG_RISCV_TYPE_SHIFT)
+#endif
+#endif
diff --git a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/asm-riscv/asm/mman.h b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/asm-riscv/asm/mman.h
new file mode 100644
index 0000000..6c23fb6
--- /dev/null
+++ b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/asm-riscv/asm/mman.h
@@ -0,0 +1,19 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#include <asm-generic/mman.h>
diff --git a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/asm-riscv/asm/msgbuf.h b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/asm-riscv/asm/msgbuf.h
new file mode 100644
index 0000000..7809e3c
--- /dev/null
+++ b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/asm-riscv/asm/msgbuf.h
@@ -0,0 +1,19 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#include <asm-generic/msgbuf.h>
diff --git a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/asm-riscv/asm/param.h b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/asm-riscv/asm/param.h
new file mode 100644
index 0000000..5ccf935
--- /dev/null
+++ b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/asm-riscv/asm/param.h
@@ -0,0 +1,19 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#include <asm-generic/param.h>
diff --git a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/asm-riscv/asm/perf_regs.h b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/asm-riscv/asm/perf_regs.h
new file mode 100644
index 0000000..ceb0bbe
--- /dev/null
+++ b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/asm-riscv/asm/perf_regs.h
@@ -0,0 +1,56 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _ASM_RISCV_PERF_REGS_H
+#define _ASM_RISCV_PERF_REGS_H
+enum perf_event_riscv_regs {
+  PERF_REG_RISCV_PC,
+  PERF_REG_RISCV_RA,
+  PERF_REG_RISCV_SP,
+  PERF_REG_RISCV_GP,
+  PERF_REG_RISCV_TP,
+  PERF_REG_RISCV_T0,
+  PERF_REG_RISCV_T1,
+  PERF_REG_RISCV_T2,
+  PERF_REG_RISCV_S0,
+  PERF_REG_RISCV_S1,
+  PERF_REG_RISCV_A0,
+  PERF_REG_RISCV_A1,
+  PERF_REG_RISCV_A2,
+  PERF_REG_RISCV_A3,
+  PERF_REG_RISCV_A4,
+  PERF_REG_RISCV_A5,
+  PERF_REG_RISCV_A6,
+  PERF_REG_RISCV_A7,
+  PERF_REG_RISCV_S2,
+  PERF_REG_RISCV_S3,
+  PERF_REG_RISCV_S4,
+  PERF_REG_RISCV_S5,
+  PERF_REG_RISCV_S6,
+  PERF_REG_RISCV_S7,
+  PERF_REG_RISCV_S8,
+  PERF_REG_RISCV_S9,
+  PERF_REG_RISCV_S10,
+  PERF_REG_RISCV_S11,
+  PERF_REG_RISCV_T3,
+  PERF_REG_RISCV_T4,
+  PERF_REG_RISCV_T5,
+  PERF_REG_RISCV_T6,
+  PERF_REG_RISCV_MAX,
+};
+#endif
diff --git a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/asm-riscv/asm/poll.h b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/asm-riscv/asm/poll.h
new file mode 100644
index 0000000..d7e8adc
--- /dev/null
+++ b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/asm-riscv/asm/poll.h
@@ -0,0 +1,19 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#include <asm-generic/poll.h>
diff --git a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/asm-riscv/asm/posix_types.h b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/asm-riscv/asm/posix_types.h
new file mode 100644
index 0000000..1b89253
--- /dev/null
+++ b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/asm-riscv/asm/posix_types.h
@@ -0,0 +1,19 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#include <asm-generic/posix_types.h>
diff --git a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/asm-riscv/asm/ptrace.h b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/asm-riscv/asm/ptrace.h
new file mode 100644
index 0000000..94e4ac9
--- /dev/null
+++ b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/asm-riscv/asm/ptrace.h
@@ -0,0 +1,76 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPI_ASM_RISCV_PTRACE_H
+#define _UAPI_ASM_RISCV_PTRACE_H
+#ifndef __ASSEMBLY__
+#include <linux/types.h>
+struct user_regs_struct {
+  unsigned long pc;
+  unsigned long ra;
+  unsigned long sp;
+  unsigned long gp;
+  unsigned long tp;
+  unsigned long t0;
+  unsigned long t1;
+  unsigned long t2;
+  unsigned long s0;
+  unsigned long s1;
+  unsigned long a0;
+  unsigned long a1;
+  unsigned long a2;
+  unsigned long a3;
+  unsigned long a4;
+  unsigned long a5;
+  unsigned long a6;
+  unsigned long a7;
+  unsigned long s2;
+  unsigned long s3;
+  unsigned long s4;
+  unsigned long s5;
+  unsigned long s6;
+  unsigned long s7;
+  unsigned long s8;
+  unsigned long s9;
+  unsigned long s10;
+  unsigned long s11;
+  unsigned long t3;
+  unsigned long t4;
+  unsigned long t5;
+  unsigned long t6;
+};
+struct __riscv_f_ext_state {
+  __u32 f[32];
+  __u32 fcsr;
+};
+struct __riscv_d_ext_state {
+  __u64 f[32];
+  __u32 fcsr;
+};
+struct __riscv_q_ext_state {
+  __u64 f[64] __attribute__((aligned(16)));
+  __u32 fcsr;
+  __u32 reserved[3];
+};
+union __riscv_fp_state {
+  struct __riscv_f_ext_state f;
+  struct __riscv_d_ext_state d;
+  struct __riscv_q_ext_state q;
+};
+#endif
+#endif
diff --git a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/asm-riscv/asm/resource.h b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/asm-riscv/asm/resource.h
new file mode 100644
index 0000000..371adb5
--- /dev/null
+++ b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/asm-riscv/asm/resource.h
@@ -0,0 +1,19 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#include <asm-generic/resource.h>
diff --git a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/asm-riscv/asm/sembuf.h b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/asm-riscv/asm/sembuf.h
new file mode 100644
index 0000000..6ce6549
--- /dev/null
+++ b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/asm-riscv/asm/sembuf.h
@@ -0,0 +1,19 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#include <asm-generic/sembuf.h>
diff --git a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/asm-riscv/asm/setup.h b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/asm-riscv/asm/setup.h
new file mode 100644
index 0000000..940c4db
--- /dev/null
+++ b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/asm-riscv/asm/setup.h
@@ -0,0 +1,19 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#include <asm-generic/setup.h>
diff --git a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/asm-riscv/asm/shmbuf.h b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/asm-riscv/asm/shmbuf.h
new file mode 100644
index 0000000..fe8b1be
--- /dev/null
+++ b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/asm-riscv/asm/shmbuf.h
@@ -0,0 +1,19 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#include <asm-generic/shmbuf.h>
diff --git a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/asm-riscv/asm/sigcontext.h b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/asm-riscv/asm/sigcontext.h
new file mode 100644
index 0000000..0553b94
--- /dev/null
+++ b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/asm-riscv/asm/sigcontext.h
@@ -0,0 +1,26 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPI_ASM_RISCV_SIGCONTEXT_H
+#define _UAPI_ASM_RISCV_SIGCONTEXT_H
+#include <asm/ptrace.h>
+struct sigcontext {
+  struct user_regs_struct sc_regs;
+  union __riscv_fp_state sc_fpregs;
+};
+#endif
diff --git a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/asm-riscv/asm/siginfo.h b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/asm-riscv/asm/siginfo.h
new file mode 100644
index 0000000..a31ebb2
--- /dev/null
+++ b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/asm-riscv/asm/siginfo.h
@@ -0,0 +1,19 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#include <asm-generic/siginfo.h>
diff --git a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/asm-riscv/asm/signal.h b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/asm-riscv/asm/signal.h
new file mode 100644
index 0000000..64373fe
--- /dev/null
+++ b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/asm-riscv/asm/signal.h
@@ -0,0 +1,19 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#include <asm-generic/signal.h>
diff --git a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/asm-riscv/asm/socket.h b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/asm-riscv/asm/socket.h
new file mode 100644
index 0000000..50a9874
--- /dev/null
+++ b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/asm-riscv/asm/socket.h
@@ -0,0 +1,19 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#include <asm-generic/socket.h>
diff --git a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/asm-riscv/asm/sockios.h b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/asm-riscv/asm/sockios.h
new file mode 100644
index 0000000..710db92
--- /dev/null
+++ b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/asm-riscv/asm/sockios.h
@@ -0,0 +1,19 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#include <asm-generic/sockios.h>
diff --git a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/asm-riscv/asm/stat.h b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/asm-riscv/asm/stat.h
new file mode 100644
index 0000000..af7ebfc
--- /dev/null
+++ b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/asm-riscv/asm/stat.h
@@ -0,0 +1,19 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#include <asm-generic/stat.h>
diff --git a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/asm-riscv/asm/statfs.h b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/asm-riscv/asm/statfs.h
new file mode 100644
index 0000000..93de275
--- /dev/null
+++ b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/asm-riscv/asm/statfs.h
@@ -0,0 +1,19 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#include <asm-generic/statfs.h>
diff --git a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/asm-riscv/asm/swab.h b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/asm-riscv/asm/swab.h
new file mode 100644
index 0000000..0049f53
--- /dev/null
+++ b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/asm-riscv/asm/swab.h
@@ -0,0 +1,19 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#include <asm-generic/swab.h>
diff --git a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/asm-riscv/asm/termbits.h b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/asm-riscv/asm/termbits.h
new file mode 100644
index 0000000..42af6fe
--- /dev/null
+++ b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/asm-riscv/asm/termbits.h
@@ -0,0 +1,19 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#include <asm-generic/termbits.h>
diff --git a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/asm-riscv/asm/termios.h b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/asm-riscv/asm/termios.h
new file mode 100644
index 0000000..feca4c6
--- /dev/null
+++ b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/asm-riscv/asm/termios.h
@@ -0,0 +1,19 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#include <asm-generic/termios.h>
diff --git a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/asm-riscv/asm/types.h b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/asm-riscv/asm/types.h
new file mode 100644
index 0000000..8250f43
--- /dev/null
+++ b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/asm-riscv/asm/types.h
@@ -0,0 +1,19 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#include <asm-generic/types.h>
diff --git a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/asm-riscv/asm/ucontext.h b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/asm-riscv/asm/ucontext.h
new file mode 100644
index 0000000..8b72cc1
--- /dev/null
+++ b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/asm-riscv/asm/ucontext.h
@@ -0,0 +1,30 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPI_ASM_RISCV_UCONTEXT_H
+#define _UAPI_ASM_RISCV_UCONTEXT_H
+#include <linux/types.h>
+struct ucontext {
+  unsigned long uc_flags;
+  struct ucontext * uc_link;
+  stack_t uc_stack;
+  sigset_t uc_sigmask;
+  __u8 __linux_unused[1024 / 8 - sizeof(sigset_t)];
+  struct sigcontext uc_mcontext;
+};
+#endif
diff --git a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/asm-riscv/asm/unistd.h b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/asm-riscv/asm/unistd.h
new file mode 100644
index 0000000..665b820
--- /dev/null
+++ b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/asm-riscv/asm/unistd.h
@@ -0,0 +1,29 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#if defined(__LP64__) && !defined(__SYSCALL_COMPAT)
+#define __ARCH_WANT_NEW_STAT
+#define __ARCH_WANT_SET_GET_RLIMIT
+#endif
+#define __ARCH_WANT_SYS_CLONE3
+#define __ARCH_WANT_MEMFD_SECRET
+#include <asm-generic/unistd.h>
+#ifndef __NR_riscv_flush_icache
+#define __NR_riscv_flush_icache (__NR_arch_specific_syscall + 15)
+#endif
+__SYSCALL(__NR_riscv_flush_icache, sys_riscv_flush_icache)
diff --git a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/asm-x86/asm/amd_hsmp.h b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/asm-x86/asm/amd_hsmp.h
new file mode 100644
index 0000000..c026aac
--- /dev/null
+++ b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/asm-x86/asm/amd_hsmp.h
@@ -0,0 +1,189 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPI_ASM_X86_AMD_HSMP_H_
+#define _UAPI_ASM_X86_AMD_HSMP_H_
+#include <linux/types.h>
+#pragma pack(4)
+#define HSMP_MAX_MSG_LEN 8
+enum hsmp_message_ids {
+  HSMP_TEST = 1,
+  HSMP_GET_SMU_VER,
+  HSMP_GET_PROTO_VER,
+  HSMP_GET_SOCKET_POWER,
+  HSMP_SET_SOCKET_POWER_LIMIT,
+  HSMP_GET_SOCKET_POWER_LIMIT,
+  HSMP_GET_SOCKET_POWER_LIMIT_MAX,
+  HSMP_SET_BOOST_LIMIT,
+  HSMP_SET_BOOST_LIMIT_SOCKET,
+  HSMP_GET_BOOST_LIMIT,
+  HSMP_GET_PROC_HOT,
+  HSMP_SET_XGMI_LINK_WIDTH,
+  HSMP_SET_DF_PSTATE,
+  HSMP_SET_AUTO_DF_PSTATE,
+  HSMP_GET_FCLK_MCLK,
+  HSMP_GET_CCLK_THROTTLE_LIMIT,
+  HSMP_GET_C0_PERCENT,
+  HSMP_SET_NBIO_DPM_LEVEL,
+  HSMP_GET_NBIO_DPM_LEVEL,
+  HSMP_GET_DDR_BANDWIDTH,
+  HSMP_GET_TEMP_MONITOR,
+  HSMP_GET_DIMM_TEMP_RANGE,
+  HSMP_GET_DIMM_POWER,
+  HSMP_GET_DIMM_THERMAL,
+  HSMP_GET_SOCKET_FREQ_LIMIT,
+  HSMP_GET_CCLK_CORE_LIMIT,
+  HSMP_GET_RAILS_SVI,
+  HSMP_GET_SOCKET_FMAX_FMIN,
+  HSMP_GET_IOLINK_BANDWITH,
+  HSMP_GET_XGMI_BANDWITH,
+  HSMP_SET_GMI3_WIDTH,
+  HSMP_SET_PCI_RATE,
+  HSMP_SET_POWER_MODE,
+  HSMP_SET_PSTATE_MAX_MIN,
+  HSMP_MSG_ID_MAX,
+};
+struct hsmp_message {
+  __u32 msg_id;
+  __u16 num_args;
+  __u16 response_sz;
+  __u32 args[HSMP_MAX_MSG_LEN];
+  __u16 sock_ind;
+};
+enum hsmp_msg_type {
+  HSMP_RSVD = - 1,
+  HSMP_SET = 0,
+  HSMP_GET = 1,
+};
+struct hsmp_msg_desc {
+  int num_args;
+  int response_sz;
+  enum hsmp_msg_type type;
+};
+static const struct hsmp_msg_desc hsmp_msg_desc_table[] = {
+ {
+    0, 0, HSMP_RSVD
+  }
+ , {
+    1, 1, HSMP_GET
+  }
+ , {
+    0, 1, HSMP_GET
+  }
+ , {
+    0, 1, HSMP_GET
+  }
+ , {
+    0, 1, HSMP_GET
+  }
+ , {
+    1, 0, HSMP_SET
+  }
+ , {
+    0, 1, HSMP_GET
+  }
+ , {
+    0, 1, HSMP_GET
+  }
+ , {
+    1, 0, HSMP_SET
+  }
+ , {
+    1, 0, HSMP_SET
+  }
+ , {
+    1, 1, HSMP_GET
+  }
+ , {
+    0, 1, HSMP_GET
+  }
+ , {
+    1, 0, HSMP_SET
+  }
+ , {
+    1, 0, HSMP_SET
+  }
+ , {
+    0, 0, HSMP_SET
+  }
+ , {
+    0, 2, HSMP_GET
+  }
+ , {
+    0, 1, HSMP_GET
+  }
+ , {
+    0, 1, HSMP_GET
+  }
+ , {
+    1, 0, HSMP_SET
+  }
+ , {
+    1, 1, HSMP_GET
+  }
+ , {
+    0, 1, HSMP_GET
+  }
+ , {
+    0, 1, HSMP_GET
+  }
+ , {
+    1, 1, HSMP_GET
+  }
+ , {
+    1, 1, HSMP_GET
+  }
+ , {
+    1, 1, HSMP_GET
+  }
+ , {
+    0, 1, HSMP_GET
+  }
+ , {
+    1, 1, HSMP_GET
+  }
+ , {
+    0, 1, HSMP_GET
+  }
+ , {
+    0, 1, HSMP_GET
+  }
+ , {
+    1, 1, HSMP_GET
+  }
+ , {
+    1, 1, HSMP_GET
+  }
+ , {
+    1, 0, HSMP_SET
+  }
+ , {
+    1, 1, HSMP_SET
+  }
+ , {
+    1, 0, HSMP_SET
+  }
+ , {
+    1, 0, HSMP_SET
+  }
+ ,
+};
+#pragma pack()
+#define HSMP_BASE_IOCTL_NR 0xF8
+#define HSMP_IOCTL_CMD _IOWR(HSMP_BASE_IOCTL_NR, 0, struct hsmp_message)
+#endif
diff --git a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/asm-x86/asm/bootparam.h b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/asm-x86/asm/bootparam.h
index 7401135..ab9d7f3 100644
--- a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/asm-x86/asm/bootparam.h
+++ b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/asm-x86/asm/bootparam.h
@@ -25,8 +25,12 @@
 #define SETUP_EFI 4
 #define SETUP_APPLE_PROPERTIES 5
 #define SETUP_JAILHOUSE 6
+#define SETUP_CC_BLOB 7
+#define SETUP_IMA 8
+#define SETUP_RNG_SEED 9
+#define SETUP_ENUM_MAX SETUP_RNG_SEED
 #define SETUP_INDIRECT (1 << 31)
-#define SETUP_TYPE_MAX (SETUP_INDIRECT | SETUP_JAILHOUSE)
+#define SETUP_TYPE_MAX (SETUP_ENUM_MAX | SETUP_INDIRECT)
 #define RAMDISK_IMAGE_START_MASK 0x07FF
 #define RAMDISK_PROMPT_FLAG 0x8000
 #define RAMDISK_LOAD_FLAG 0x4000
@@ -53,7 +57,7 @@
   __u64 next;
   __u32 type;
   __u32 len;
-  __u8 data[0];
+  __u8 data[];
 };
 struct setup_indirect {
   __u32 type;
@@ -147,6 +151,10 @@
     __u32 flags;
   } __attribute__((packed)) v2;
 } __attribute__((packed));
+struct ima_setup_data {
+  __u64 addr;
+  __u64 size;
+} __attribute__((packed));
 struct boot_params {
   struct screen_info screen_info;
   struct apm_bios_info apm_bios_info;
@@ -162,7 +170,8 @@
   __u32 ext_ramdisk_image;
   __u32 ext_ramdisk_size;
   __u32 ext_cmd_line_ptr;
-  __u8 _pad4[116];
+  __u8 _pad4[112];
+  __u32 cc_blob_address;
   struct edid_info edid_info;
   struct efi_info efi_info;
   __u32 alt_mem_k;
diff --git a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/asm-x86/asm/kvm.h b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/asm-x86/asm/kvm.h
index caf8fc0..f07b00e 100644
--- a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/asm-x86/asm/kvm.h
+++ b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/asm-x86/asm/kvm.h
@@ -178,11 +178,11 @@
 struct kvm_msrs {
   __u32 nmsrs;
   __u32 pad;
-  struct kvm_msr_entry entries[0];
+  struct kvm_msr_entry entries[];
 };
 struct kvm_msr_list {
   __u32 nmsrs;
-  __u32 indices[0];
+  __u32 indices[];
 };
 #define KVM_MSR_FILTER_MAX_BITMAP_SIZE 0x600
 struct kvm_msr_filter_range {
@@ -211,7 +211,7 @@
 struct kvm_cpuid {
   __u32 nent;
   __u32 padding;
-  struct kvm_cpuid_entry entries[0];
+  struct kvm_cpuid_entry entries[];
 };
 struct kvm_cpuid_entry2 {
   __u32 function;
@@ -229,7 +229,7 @@
 struct kvm_cpuid2 {
   __u32 nent;
   __u32 padding;
-  struct kvm_cpuid_entry2 entries[0];
+  struct kvm_cpuid_entry2 entries[];
 };
 struct kvm_pit_channel_state {
   __u32 count;
@@ -265,6 +265,7 @@
   struct kvm_pit_channel_state channels[3];
 };
 #define KVM_PIT_FLAGS_HPET_LEGACY 0x00000001
+#define KVM_PIT_FLAGS_SPEAKER_DATA_ON 0x00000002
 struct kvm_pit_state2 {
   struct kvm_pit_channel_state channels[3];
   __u32 flags;
@@ -279,6 +280,7 @@
 #define KVM_VCPUEVENT_VALID_SHADOW 0x00000004
 #define KVM_VCPUEVENT_VALID_SMM 0x00000008
 #define KVM_VCPUEVENT_VALID_PAYLOAD 0x00000010
+#define KVM_VCPUEVENT_VALID_TRIPLE_FAULT 0x00000020
 #define KVM_X86_SHADOW_INT_MOV_SS 0x01
 #define KVM_X86_SHADOW_INT_STI 0x02
 struct kvm_vcpu_events {
@@ -309,7 +311,10 @@
     __u8 smm_inside_nmi;
     __u8 latched_init;
   } smi;
-  __u8 reserved[27];
+  struct {
+    __u8 pending;
+  } triple_fault;
+  __u8 reserved[26];
   __u8 exception_has_payload;
   __u64 exception_payload;
 };
@@ -322,7 +327,7 @@
 };
 struct kvm_xsave {
   __u32 region[1024];
-  __u32 extra[0];
+  __u32 extra[];
 };
 #define KVM_MAX_XCRS 16
 struct kvm_xcr {
@@ -350,6 +355,8 @@
 #define KVM_X86_QUIRK_LAPIC_MMIO_HOLE (1 << 2)
 #define KVM_X86_QUIRK_OUT_7E_INC_RIP (1 << 3)
 #define KVM_X86_QUIRK_MISC_ENABLE_NO_MWAIT (1 << 4)
+#define KVM_X86_QUIRK_FIX_HYPERCALL_INSN (1 << 5)
+#define KVM_X86_QUIRK_MWAIT_NEVER_UD_FAULTS (1 << 6)
 #define KVM_STATE_NESTED_FORMAT_VMX 0
 #define KVM_STATE_NESTED_FORMAT_SVM 1
 #define KVM_STATE_NESTED_GUEST_MODE 0x00000001
@@ -403,7 +410,7 @@
   __u32 fixed_counter_bitmap;
   __u32 flags;
   __u32 pad[4];
-  __u64 events[0];
+  __u64 events[];
 };
 #define KVM_PMU_EVENT_ALLOW 0
 #define KVM_PMU_EVENT_DENY 1
diff --git a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/asm-x86/asm/processor-flags.h b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/asm-x86/asm/processor-flags.h
index 85f9d7e..0a95afd 100644
--- a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/asm-x86/asm/processor-flags.h
+++ b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/asm-x86/asm/processor-flags.h
@@ -127,6 +127,8 @@
 #define X86_CR4_SMAP _BITUL(X86_CR4_SMAP_BIT)
 #define X86_CR4_PKE_BIT 22
 #define X86_CR4_PKE _BITUL(X86_CR4_PKE_BIT)
+#define X86_CR4_CET_BIT 23
+#define X86_CR4_CET _BITUL(X86_CR4_CET_BIT)
 #define X86_CR8_TPR _AC(0x0000000f, UL)
 #define CX86_PCR0 0x20
 #define CX86_GCR 0xb8
diff --git a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/asm-x86/asm/sgx.h b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/asm-x86/asm/sgx.h
index 1874b78..fdc2700 100644
--- a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/asm-x86/asm/sgx.h
+++ b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/asm-x86/asm/sgx.h
@@ -29,6 +29,9 @@
 #define SGX_IOC_ENCLAVE_INIT _IOW(SGX_MAGIC, 0x02, struct sgx_enclave_init)
 #define SGX_IOC_ENCLAVE_PROVISION _IOW(SGX_MAGIC, 0x03, struct sgx_enclave_provision)
 #define SGX_IOC_VEPC_REMOVE_ALL _IO(SGX_MAGIC, 0x04)
+#define SGX_IOC_ENCLAVE_RESTRICT_PERMISSIONS _IOWR(SGX_MAGIC, 0x05, struct sgx_enclave_restrict_permissions)
+#define SGX_IOC_ENCLAVE_MODIFY_TYPES _IOWR(SGX_MAGIC, 0x06, struct sgx_enclave_modify_types)
+#define SGX_IOC_ENCLAVE_REMOVE_PAGES _IOWR(SGX_MAGIC, 0x07, struct sgx_enclave_remove_pages)
 struct sgx_enclave_create {
   __u64 src;
 };
@@ -46,6 +49,25 @@
 struct sgx_enclave_provision {
   __u64 fd;
 };
+struct sgx_enclave_restrict_permissions {
+  __u64 offset;
+  __u64 length;
+  __u64 permissions;
+  __u64 result;
+  __u64 count;
+};
+struct sgx_enclave_modify_types {
+  __u64 offset;
+  __u64 length;
+  __u64 page_type;
+  __u64 result;
+  __u64 count;
+};
+struct sgx_enclave_remove_pages {
+  __u64 offset;
+  __u64 length;
+  __u64 count;
+};
 struct sgx_enclave_run;
 typedef int(* sgx_enclave_user_handler_t) (long rdi, long rsi, long rdx, long rsp, long r8, long r9, struct sgx_enclave_run * run);
 struct sgx_enclave_run {
diff --git a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/asm-x86/asm/shmbuf.h b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/asm-x86/asm/shmbuf.h
index 03e195e..2a0dcb5 100644
--- a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/asm-x86/asm/shmbuf.h
+++ b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/asm-x86/asm/shmbuf.h
@@ -21,9 +21,11 @@
 #if !defined(__x86_64__) || !defined(__ILP32__)
 #include <asm-generic/shmbuf.h>
 #else
+#include <asm/ipcbuf.h>
+#include <asm/posix_types.h>
 struct shmid64_ds {
   struct ipc64_perm shm_perm;
-  size_t shm_segsz;
+  __kernel_size_t shm_segsz;
   __kernel_long_t shm_atime;
   __kernel_long_t shm_dtime;
   __kernel_long_t shm_ctime;
diff --git a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/asm-x86/asm/signal.h b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/asm-x86/asm/signal.h
index 8226da8..cbeeac4 100644
--- a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/asm-x86/asm/signal.h
+++ b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/asm-x86/asm/signal.h
@@ -90,7 +90,7 @@
 typedef struct sigaltstack {
   void __user * ss_sp;
   int ss_flags;
-  size_t ss_size;
+  __kernel_size_t ss_size;
 } stack_t;
 #endif
 #endif
diff --git a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/asm-x86/asm/svm.h b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/asm-x86/asm/svm.h
index d051481..8bda2d5 100644
--- a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/asm-x86/asm/svm.h
+++ b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/asm-x86/asm/svm.h
@@ -122,8 +122,16 @@
 #define SVM_VMGEXIT_AP_JUMP_TABLE 0x80000005
 #define SVM_VMGEXIT_SET_AP_JUMP_TABLE 0
 #define SVM_VMGEXIT_GET_AP_JUMP_TABLE 1
+#define SVM_VMGEXIT_PSC 0x80000010
+#define SVM_VMGEXIT_GUEST_REQUEST 0x80000011
+#define SVM_VMGEXIT_EXT_GUEST_REQUEST 0x80000012
+#define SVM_VMGEXIT_AP_CREATION 0x80000013
+#define SVM_VMGEXIT_AP_CREATE_ON_INIT 0
+#define SVM_VMGEXIT_AP_CREATE 1
+#define SVM_VMGEXIT_AP_DESTROY 2
+#define SVM_VMGEXIT_HV_FEATURES 0x8000fffd
 #define SVM_VMGEXIT_UNSUPPORTED_EVENT 0x8000ffff
 #define SVM_EXIT_SW 0xf0000000
 #define SVM_EXIT_ERR - 1
-#define SVM_EXIT_REASONS { SVM_EXIT_READ_CR0, "read_cr0" }, { SVM_EXIT_READ_CR2, "read_cr2" }, { SVM_EXIT_READ_CR3, "read_cr3" }, { SVM_EXIT_READ_CR4, "read_cr4" }, { SVM_EXIT_READ_CR8, "read_cr8" }, { SVM_EXIT_WRITE_CR0, "write_cr0" }, { SVM_EXIT_WRITE_CR2, "write_cr2" }, { SVM_EXIT_WRITE_CR3, "write_cr3" }, { SVM_EXIT_WRITE_CR4, "write_cr4" }, { SVM_EXIT_WRITE_CR8, "write_cr8" }, { SVM_EXIT_READ_DR0, "read_dr0" }, { SVM_EXIT_READ_DR1, "read_dr1" }, { SVM_EXIT_READ_DR2, "read_dr2" }, { SVM_EXIT_READ_DR3, "read_dr3" }, { SVM_EXIT_READ_DR4, "read_dr4" }, { SVM_EXIT_READ_DR5, "read_dr5" }, { SVM_EXIT_READ_DR6, "read_dr6" }, { SVM_EXIT_READ_DR7, "read_dr7" }, { SVM_EXIT_WRITE_DR0, "write_dr0" }, { SVM_EXIT_WRITE_DR1, "write_dr1" }, { SVM_EXIT_WRITE_DR2, "write_dr2" }, { SVM_EXIT_WRITE_DR3, "write_dr3" }, { SVM_EXIT_WRITE_DR4, "write_dr4" }, { SVM_EXIT_WRITE_DR5, "write_dr5" }, { SVM_EXIT_WRITE_DR6, "write_dr6" }, { SVM_EXIT_WRITE_DR7, "write_dr7" }, { SVM_EXIT_EXCP_BASE + DE_VECTOR, "DE excp" }, { SVM_EXIT_EXCP_BASE + DB_VECTOR, "DB excp" }, { SVM_EXIT_EXCP_BASE + BP_VECTOR, "BP excp" }, { SVM_EXIT_EXCP_BASE + OF_VECTOR, "OF excp" }, { SVM_EXIT_EXCP_BASE + BR_VECTOR, "BR excp" }, { SVM_EXIT_EXCP_BASE + UD_VECTOR, "UD excp" }, { SVM_EXIT_EXCP_BASE + NM_VECTOR, "NM excp" }, { SVM_EXIT_EXCP_BASE + DF_VECTOR, "DF excp" }, { SVM_EXIT_EXCP_BASE + TS_VECTOR, "TS excp" }, { SVM_EXIT_EXCP_BASE + NP_VECTOR, "NP excp" }, { SVM_EXIT_EXCP_BASE + SS_VECTOR, "SS excp" }, { SVM_EXIT_EXCP_BASE + GP_VECTOR, "GP excp" }, { SVM_EXIT_EXCP_BASE + PF_VECTOR, "PF excp" }, { SVM_EXIT_EXCP_BASE + MF_VECTOR, "MF excp" }, { SVM_EXIT_EXCP_BASE + AC_VECTOR, "AC excp" }, { SVM_EXIT_EXCP_BASE + MC_VECTOR, "MC excp" }, { SVM_EXIT_EXCP_BASE + XM_VECTOR, "XF excp" }, { SVM_EXIT_INTR, "interrupt" }, { SVM_EXIT_NMI, "nmi" }, { SVM_EXIT_SMI, "smi" }, { SVM_EXIT_INIT, "init" }, { SVM_EXIT_VINTR, "vintr" }, { SVM_EXIT_CR0_SEL_WRITE, "cr0_sel_write" }, { SVM_EXIT_IDTR_READ, "read_idtr" }, { SVM_EXIT_GDTR_READ, "read_gdtr" }, { SVM_EXIT_LDTR_READ, "read_ldtr" }, { SVM_EXIT_TR_READ, "read_rt" }, { SVM_EXIT_IDTR_WRITE, "write_idtr" }, { SVM_EXIT_GDTR_WRITE, "write_gdtr" }, { SVM_EXIT_LDTR_WRITE, "write_ldtr" }, { SVM_EXIT_TR_WRITE, "write_rt" }, { SVM_EXIT_RDTSC, "rdtsc" }, { SVM_EXIT_RDPMC, "rdpmc" }, { SVM_EXIT_PUSHF, "pushf" }, { SVM_EXIT_POPF, "popf" }, { SVM_EXIT_CPUID, "cpuid" }, { SVM_EXIT_RSM, "rsm" }, { SVM_EXIT_IRET, "iret" }, { SVM_EXIT_SWINT, "swint" }, { SVM_EXIT_INVD, "invd" }, { SVM_EXIT_PAUSE, "pause" }, { SVM_EXIT_HLT, "hlt" }, { SVM_EXIT_INVLPG, "invlpg" }, { SVM_EXIT_INVLPGA, "invlpga" }, { SVM_EXIT_IOIO, "io" }, { SVM_EXIT_MSR, "msr" }, { SVM_EXIT_TASK_SWITCH, "task_switch" }, { SVM_EXIT_FERR_FREEZE, "ferr_freeze" }, { SVM_EXIT_SHUTDOWN, "shutdown" }, { SVM_EXIT_VMRUN, "vmrun" }, { SVM_EXIT_VMMCALL, "hypercall" }, { SVM_EXIT_VMLOAD, "vmload" }, { SVM_EXIT_VMSAVE, "vmsave" }, { SVM_EXIT_STGI, "stgi" }, { SVM_EXIT_CLGI, "clgi" }, { SVM_EXIT_SKINIT, "skinit" }, { SVM_EXIT_RDTSCP, "rdtscp" }, { SVM_EXIT_ICEBP, "icebp" }, { SVM_EXIT_WBINVD, "wbinvd" }, { SVM_EXIT_MONITOR, "monitor" }, { SVM_EXIT_MWAIT, "mwait" }, { SVM_EXIT_XSETBV, "xsetbv" }, { SVM_EXIT_EFER_WRITE_TRAP, "write_efer_trap" }, { SVM_EXIT_CR0_WRITE_TRAP, "write_cr0_trap" }, { SVM_EXIT_CR4_WRITE_TRAP, "write_cr4_trap" }, { SVM_EXIT_CR8_WRITE_TRAP, "write_cr8_trap" }, { SVM_EXIT_INVPCID, "invpcid" }, { SVM_EXIT_NPF, "npf" }, { SVM_EXIT_AVIC_INCOMPLETE_IPI, "avic_incomplete_ipi" }, { SVM_EXIT_AVIC_UNACCELERATED_ACCESS, "avic_unaccelerated_access" }, { SVM_EXIT_VMGEXIT, "vmgexit" }, { SVM_VMGEXIT_MMIO_READ, "vmgexit_mmio_read" }, { SVM_VMGEXIT_MMIO_WRITE, "vmgexit_mmio_write" }, { SVM_VMGEXIT_NMI_COMPLETE, "vmgexit_nmi_complete" }, { SVM_VMGEXIT_AP_HLT_LOOP, "vmgexit_ap_hlt_loop" }, { SVM_VMGEXIT_AP_JUMP_TABLE, "vmgexit_ap_jump_table" }, { SVM_EXIT_ERR, "invalid_guest_state" }
+#define SVM_EXIT_REASONS { SVM_EXIT_READ_CR0, "read_cr0" }, { SVM_EXIT_READ_CR2, "read_cr2" }, { SVM_EXIT_READ_CR3, "read_cr3" }, { SVM_EXIT_READ_CR4, "read_cr4" }, { SVM_EXIT_READ_CR8, "read_cr8" }, { SVM_EXIT_WRITE_CR0, "write_cr0" }, { SVM_EXIT_WRITE_CR2, "write_cr2" }, { SVM_EXIT_WRITE_CR3, "write_cr3" }, { SVM_EXIT_WRITE_CR4, "write_cr4" }, { SVM_EXIT_WRITE_CR8, "write_cr8" }, { SVM_EXIT_READ_DR0, "read_dr0" }, { SVM_EXIT_READ_DR1, "read_dr1" }, { SVM_EXIT_READ_DR2, "read_dr2" }, { SVM_EXIT_READ_DR3, "read_dr3" }, { SVM_EXIT_READ_DR4, "read_dr4" }, { SVM_EXIT_READ_DR5, "read_dr5" }, { SVM_EXIT_READ_DR6, "read_dr6" }, { SVM_EXIT_READ_DR7, "read_dr7" }, { SVM_EXIT_WRITE_DR0, "write_dr0" }, { SVM_EXIT_WRITE_DR1, "write_dr1" }, { SVM_EXIT_WRITE_DR2, "write_dr2" }, { SVM_EXIT_WRITE_DR3, "write_dr3" }, { SVM_EXIT_WRITE_DR4, "write_dr4" }, { SVM_EXIT_WRITE_DR5, "write_dr5" }, { SVM_EXIT_WRITE_DR6, "write_dr6" }, { SVM_EXIT_WRITE_DR7, "write_dr7" }, { SVM_EXIT_EXCP_BASE + DE_VECTOR, "DE excp" }, { SVM_EXIT_EXCP_BASE + DB_VECTOR, "DB excp" }, { SVM_EXIT_EXCP_BASE + BP_VECTOR, "BP excp" }, { SVM_EXIT_EXCP_BASE + OF_VECTOR, "OF excp" }, { SVM_EXIT_EXCP_BASE + BR_VECTOR, "BR excp" }, { SVM_EXIT_EXCP_BASE + UD_VECTOR, "UD excp" }, { SVM_EXIT_EXCP_BASE + NM_VECTOR, "NM excp" }, { SVM_EXIT_EXCP_BASE + DF_VECTOR, "DF excp" }, { SVM_EXIT_EXCP_BASE + TS_VECTOR, "TS excp" }, { SVM_EXIT_EXCP_BASE + NP_VECTOR, "NP excp" }, { SVM_EXIT_EXCP_BASE + SS_VECTOR, "SS excp" }, { SVM_EXIT_EXCP_BASE + GP_VECTOR, "GP excp" }, { SVM_EXIT_EXCP_BASE + PF_VECTOR, "PF excp" }, { SVM_EXIT_EXCP_BASE + MF_VECTOR, "MF excp" }, { SVM_EXIT_EXCP_BASE + AC_VECTOR, "AC excp" }, { SVM_EXIT_EXCP_BASE + MC_VECTOR, "MC excp" }, { SVM_EXIT_EXCP_BASE + XM_VECTOR, "XF excp" }, { SVM_EXIT_INTR, "interrupt" }, { SVM_EXIT_NMI, "nmi" }, { SVM_EXIT_SMI, "smi" }, { SVM_EXIT_INIT, "init" }, { SVM_EXIT_VINTR, "vintr" }, { SVM_EXIT_CR0_SEL_WRITE, "cr0_sel_write" }, { SVM_EXIT_IDTR_READ, "read_idtr" }, { SVM_EXIT_GDTR_READ, "read_gdtr" }, { SVM_EXIT_LDTR_READ, "read_ldtr" }, { SVM_EXIT_TR_READ, "read_rt" }, { SVM_EXIT_IDTR_WRITE, "write_idtr" }, { SVM_EXIT_GDTR_WRITE, "write_gdtr" }, { SVM_EXIT_LDTR_WRITE, "write_ldtr" }, { SVM_EXIT_TR_WRITE, "write_rt" }, { SVM_EXIT_RDTSC, "rdtsc" }, { SVM_EXIT_RDPMC, "rdpmc" }, { SVM_EXIT_PUSHF, "pushf" }, { SVM_EXIT_POPF, "popf" }, { SVM_EXIT_CPUID, "cpuid" }, { SVM_EXIT_RSM, "rsm" }, { SVM_EXIT_IRET, "iret" }, { SVM_EXIT_SWINT, "swint" }, { SVM_EXIT_INVD, "invd" }, { SVM_EXIT_PAUSE, "pause" }, { SVM_EXIT_HLT, "hlt" }, { SVM_EXIT_INVLPG, "invlpg" }, { SVM_EXIT_INVLPGA, "invlpga" }, { SVM_EXIT_IOIO, "io" }, { SVM_EXIT_MSR, "msr" }, { SVM_EXIT_TASK_SWITCH, "task_switch" }, { SVM_EXIT_FERR_FREEZE, "ferr_freeze" }, { SVM_EXIT_SHUTDOWN, "shutdown" }, { SVM_EXIT_VMRUN, "vmrun" }, { SVM_EXIT_VMMCALL, "hypercall" }, { SVM_EXIT_VMLOAD, "vmload" }, { SVM_EXIT_VMSAVE, "vmsave" }, { SVM_EXIT_STGI, "stgi" }, { SVM_EXIT_CLGI, "clgi" }, { SVM_EXIT_SKINIT, "skinit" }, { SVM_EXIT_RDTSCP, "rdtscp" }, { SVM_EXIT_ICEBP, "icebp" }, { SVM_EXIT_WBINVD, "wbinvd" }, { SVM_EXIT_MONITOR, "monitor" }, { SVM_EXIT_MWAIT, "mwait" }, { SVM_EXIT_XSETBV, "xsetbv" }, { SVM_EXIT_EFER_WRITE_TRAP, "write_efer_trap" }, { SVM_EXIT_CR0_WRITE_TRAP, "write_cr0_trap" }, { SVM_EXIT_CR4_WRITE_TRAP, "write_cr4_trap" }, { SVM_EXIT_CR8_WRITE_TRAP, "write_cr8_trap" }, { SVM_EXIT_INVPCID, "invpcid" }, { SVM_EXIT_NPF, "npf" }, { SVM_EXIT_AVIC_INCOMPLETE_IPI, "avic_incomplete_ipi" }, { SVM_EXIT_AVIC_UNACCELERATED_ACCESS, "avic_unaccelerated_access" }, { SVM_EXIT_VMGEXIT, "vmgexit" }, { SVM_VMGEXIT_MMIO_READ, "vmgexit_mmio_read" }, { SVM_VMGEXIT_MMIO_WRITE, "vmgexit_mmio_write" }, { SVM_VMGEXIT_NMI_COMPLETE, "vmgexit_nmi_complete" }, { SVM_VMGEXIT_AP_HLT_LOOP, "vmgexit_ap_hlt_loop" }, { SVM_VMGEXIT_AP_JUMP_TABLE, "vmgexit_ap_jump_table" }, { SVM_VMGEXIT_PSC, "vmgexit_page_state_change" }, { SVM_VMGEXIT_GUEST_REQUEST, "vmgexit_guest_request" }, { SVM_VMGEXIT_EXT_GUEST_REQUEST, "vmgexit_ext_guest_request" }, { SVM_VMGEXIT_AP_CREATION, "vmgexit_ap_creation" }, { SVM_VMGEXIT_HV_FEATURES, "vmgexit_hypervisor_feature" }, { SVM_EXIT_ERR, "invalid_guest_state" }
 #endif
diff --git a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/asm-x86/asm/vmx.h b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/asm-x86/asm/vmx.h
index 6c07d4c..fdea539 100644
--- a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/asm-x86/asm/vmx.h
+++ b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/asm-x86/asm/vmx.h
@@ -81,7 +81,8 @@
 #define EXIT_REASON_UMWAIT 67
 #define EXIT_REASON_TPAUSE 68
 #define EXIT_REASON_BUS_LOCK 74
-#define VMX_EXIT_REASONS { EXIT_REASON_EXCEPTION_NMI, "EXCEPTION_NMI" }, { EXIT_REASON_EXTERNAL_INTERRUPT, "EXTERNAL_INTERRUPT" }, { EXIT_REASON_TRIPLE_FAULT, "TRIPLE_FAULT" }, { EXIT_REASON_INIT_SIGNAL, "INIT_SIGNAL" }, { EXIT_REASON_SIPI_SIGNAL, "SIPI_SIGNAL" }, { EXIT_REASON_INTERRUPT_WINDOW, "INTERRUPT_WINDOW" }, { EXIT_REASON_NMI_WINDOW, "NMI_WINDOW" }, { EXIT_REASON_TASK_SWITCH, "TASK_SWITCH" }, { EXIT_REASON_CPUID, "CPUID" }, { EXIT_REASON_HLT, "HLT" }, { EXIT_REASON_INVD, "INVD" }, { EXIT_REASON_INVLPG, "INVLPG" }, { EXIT_REASON_RDPMC, "RDPMC" }, { EXIT_REASON_RDTSC, "RDTSC" }, { EXIT_REASON_VMCALL, "VMCALL" }, { EXIT_REASON_VMCLEAR, "VMCLEAR" }, { EXIT_REASON_VMLAUNCH, "VMLAUNCH" }, { EXIT_REASON_VMPTRLD, "VMPTRLD" }, { EXIT_REASON_VMPTRST, "VMPTRST" }, { EXIT_REASON_VMREAD, "VMREAD" }, { EXIT_REASON_VMRESUME, "VMRESUME" }, { EXIT_REASON_VMWRITE, "VMWRITE" }, { EXIT_REASON_VMOFF, "VMOFF" }, { EXIT_REASON_VMON, "VMON" }, { EXIT_REASON_CR_ACCESS, "CR_ACCESS" }, { EXIT_REASON_DR_ACCESS, "DR_ACCESS" }, { EXIT_REASON_IO_INSTRUCTION, "IO_INSTRUCTION" }, { EXIT_REASON_MSR_READ, "MSR_READ" }, { EXIT_REASON_MSR_WRITE, "MSR_WRITE" }, { EXIT_REASON_INVALID_STATE, "INVALID_STATE" }, { EXIT_REASON_MSR_LOAD_FAIL, "MSR_LOAD_FAIL" }, { EXIT_REASON_MWAIT_INSTRUCTION, "MWAIT_INSTRUCTION" }, { EXIT_REASON_MONITOR_TRAP_FLAG, "MONITOR_TRAP_FLAG" }, { EXIT_REASON_MONITOR_INSTRUCTION, "MONITOR_INSTRUCTION" }, { EXIT_REASON_PAUSE_INSTRUCTION, "PAUSE_INSTRUCTION" }, { EXIT_REASON_MCE_DURING_VMENTRY, "MCE_DURING_VMENTRY" }, { EXIT_REASON_TPR_BELOW_THRESHOLD, "TPR_BELOW_THRESHOLD" }, { EXIT_REASON_APIC_ACCESS, "APIC_ACCESS" }, { EXIT_REASON_EOI_INDUCED, "EOI_INDUCED" }, { EXIT_REASON_GDTR_IDTR, "GDTR_IDTR" }, { EXIT_REASON_LDTR_TR, "LDTR_TR" }, { EXIT_REASON_EPT_VIOLATION, "EPT_VIOLATION" }, { EXIT_REASON_EPT_MISCONFIG, "EPT_MISCONFIG" }, { EXIT_REASON_INVEPT, "INVEPT" }, { EXIT_REASON_RDTSCP, "RDTSCP" }, { EXIT_REASON_PREEMPTION_TIMER, "PREEMPTION_TIMER" }, { EXIT_REASON_INVVPID, "INVVPID" }, { EXIT_REASON_WBINVD, "WBINVD" }, { EXIT_REASON_XSETBV, "XSETBV" }, { EXIT_REASON_APIC_WRITE, "APIC_WRITE" }, { EXIT_REASON_RDRAND, "RDRAND" }, { EXIT_REASON_INVPCID, "INVPCID" }, { EXIT_REASON_VMFUNC, "VMFUNC" }, { EXIT_REASON_ENCLS, "ENCLS" }, { EXIT_REASON_RDSEED, "RDSEED" }, { EXIT_REASON_PML_FULL, "PML_FULL" }, { EXIT_REASON_XSAVES, "XSAVES" }, { EXIT_REASON_XRSTORS, "XRSTORS" }, { EXIT_REASON_UMWAIT, "UMWAIT" }, { EXIT_REASON_TPAUSE, "TPAUSE" }, { EXIT_REASON_BUS_LOCK, "BUS_LOCK" }
+#define EXIT_REASON_NOTIFY 75
+#define VMX_EXIT_REASONS { EXIT_REASON_EXCEPTION_NMI, "EXCEPTION_NMI" }, { EXIT_REASON_EXTERNAL_INTERRUPT, "EXTERNAL_INTERRUPT" }, { EXIT_REASON_TRIPLE_FAULT, "TRIPLE_FAULT" }, { EXIT_REASON_INIT_SIGNAL, "INIT_SIGNAL" }, { EXIT_REASON_SIPI_SIGNAL, "SIPI_SIGNAL" }, { EXIT_REASON_INTERRUPT_WINDOW, "INTERRUPT_WINDOW" }, { EXIT_REASON_NMI_WINDOW, "NMI_WINDOW" }, { EXIT_REASON_TASK_SWITCH, "TASK_SWITCH" }, { EXIT_REASON_CPUID, "CPUID" }, { EXIT_REASON_HLT, "HLT" }, { EXIT_REASON_INVD, "INVD" }, { EXIT_REASON_INVLPG, "INVLPG" }, { EXIT_REASON_RDPMC, "RDPMC" }, { EXIT_REASON_RDTSC, "RDTSC" }, { EXIT_REASON_VMCALL, "VMCALL" }, { EXIT_REASON_VMCLEAR, "VMCLEAR" }, { EXIT_REASON_VMLAUNCH, "VMLAUNCH" }, { EXIT_REASON_VMPTRLD, "VMPTRLD" }, { EXIT_REASON_VMPTRST, "VMPTRST" }, { EXIT_REASON_VMREAD, "VMREAD" }, { EXIT_REASON_VMRESUME, "VMRESUME" }, { EXIT_REASON_VMWRITE, "VMWRITE" }, { EXIT_REASON_VMOFF, "VMOFF" }, { EXIT_REASON_VMON, "VMON" }, { EXIT_REASON_CR_ACCESS, "CR_ACCESS" }, { EXIT_REASON_DR_ACCESS, "DR_ACCESS" }, { EXIT_REASON_IO_INSTRUCTION, "IO_INSTRUCTION" }, { EXIT_REASON_MSR_READ, "MSR_READ" }, { EXIT_REASON_MSR_WRITE, "MSR_WRITE" }, { EXIT_REASON_INVALID_STATE, "INVALID_STATE" }, { EXIT_REASON_MSR_LOAD_FAIL, "MSR_LOAD_FAIL" }, { EXIT_REASON_MWAIT_INSTRUCTION, "MWAIT_INSTRUCTION" }, { EXIT_REASON_MONITOR_TRAP_FLAG, "MONITOR_TRAP_FLAG" }, { EXIT_REASON_MONITOR_INSTRUCTION, "MONITOR_INSTRUCTION" }, { EXIT_REASON_PAUSE_INSTRUCTION, "PAUSE_INSTRUCTION" }, { EXIT_REASON_MCE_DURING_VMENTRY, "MCE_DURING_VMENTRY" }, { EXIT_REASON_TPR_BELOW_THRESHOLD, "TPR_BELOW_THRESHOLD" }, { EXIT_REASON_APIC_ACCESS, "APIC_ACCESS" }, { EXIT_REASON_EOI_INDUCED, "EOI_INDUCED" }, { EXIT_REASON_GDTR_IDTR, "GDTR_IDTR" }, { EXIT_REASON_LDTR_TR, "LDTR_TR" }, { EXIT_REASON_EPT_VIOLATION, "EPT_VIOLATION" }, { EXIT_REASON_EPT_MISCONFIG, "EPT_MISCONFIG" }, { EXIT_REASON_INVEPT, "INVEPT" }, { EXIT_REASON_RDTSCP, "RDTSCP" }, { EXIT_REASON_PREEMPTION_TIMER, "PREEMPTION_TIMER" }, { EXIT_REASON_INVVPID, "INVVPID" }, { EXIT_REASON_WBINVD, "WBINVD" }, { EXIT_REASON_XSETBV, "XSETBV" }, { EXIT_REASON_APIC_WRITE, "APIC_WRITE" }, { EXIT_REASON_RDRAND, "RDRAND" }, { EXIT_REASON_INVPCID, "INVPCID" }, { EXIT_REASON_VMFUNC, "VMFUNC" }, { EXIT_REASON_ENCLS, "ENCLS" }, { EXIT_REASON_RDSEED, "RDSEED" }, { EXIT_REASON_PML_FULL, "PML_FULL" }, { EXIT_REASON_XSAVES, "XSAVES" }, { EXIT_REASON_XRSTORS, "XRSTORS" }, { EXIT_REASON_UMWAIT, "UMWAIT" }, { EXIT_REASON_TPAUSE, "TPAUSE" }, { EXIT_REASON_BUS_LOCK, "BUS_LOCK" }, { EXIT_REASON_NOTIFY, "NOTIFY" }
 #define VMX_EXIT_REASON_FLAGS { VMX_EXIT_REASONS_FAILED_VMENTRY, "FAILED_VMENTRY" }
 #define VMX_ABORT_SAVE_GUEST_MSR_FAIL 1
 #define VMX_ABORT_LOAD_HOST_PDPTE_FAIL 2
diff --git a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/drm/amdgpu_drm.h b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/drm/amdgpu_drm.h
index 3764d51..658eb31 100644
--- a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/drm/amdgpu_drm.h
+++ b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/drm/amdgpu_drm.h
@@ -72,6 +72,7 @@
 #define AMDGPU_GEM_CREATE_VRAM_WIPE_ON_RELEASE (1 << 9)
 #define AMDGPU_GEM_CREATE_ENCRYPTED (1 << 10)
 #define AMDGPU_GEM_CREATE_PREEMPTIBLE (1 << 11)
+#define AMDGPU_GEM_CREATE_DISCARDABLE (1 << 12)
 struct drm_amdgpu_gem_create_in {
   __u64 bo_size;
   __u64 alignment;
@@ -112,6 +113,8 @@
 #define AMDGPU_CTX_OP_FREE_CTX 2
 #define AMDGPU_CTX_OP_QUERY_STATE 3
 #define AMDGPU_CTX_OP_QUERY_STATE2 4
+#define AMDGPU_CTX_OP_GET_STABLE_PSTATE 5
+#define AMDGPU_CTX_OP_SET_STABLE_PSTATE 6
 #define AMDGPU_CTX_NO_RESET 0
 #define AMDGPU_CTX_GUILTY_RESET 1
 #define AMDGPU_CTX_INNOCENT_RESET 2
@@ -127,6 +130,12 @@
 #define AMDGPU_CTX_PRIORITY_NORMAL 0
 #define AMDGPU_CTX_PRIORITY_HIGH 512
 #define AMDGPU_CTX_PRIORITY_VERY_HIGH 1023
+#define AMDGPU_CTX_STABLE_PSTATE_FLAGS_MASK 0xf
+#define AMDGPU_CTX_STABLE_PSTATE_NONE 0
+#define AMDGPU_CTX_STABLE_PSTATE_STANDARD 1
+#define AMDGPU_CTX_STABLE_PSTATE_MIN_SCLK 2
+#define AMDGPU_CTX_STABLE_PSTATE_MIN_MCLK 3
+#define AMDGPU_CTX_STABLE_PSTATE_PEAK 4
 struct drm_amdgpu_ctx_in {
   __u32 op;
   __u32 flags;
@@ -143,6 +152,10 @@
     __u32 hangs;
     __u32 reset_status;
   } state;
+  struct {
+    __u32 flags;
+    __u32 _pad;
+  } pstate;
 };
 union drm_amdgpu_ctx {
   struct drm_amdgpu_ctx_in in;
@@ -307,6 +320,7 @@
 #define AMDGPU_VM_MTYPE_CC (3 << 5)
 #define AMDGPU_VM_MTYPE_UC (4 << 5)
 #define AMDGPU_VM_MTYPE_RW (5 << 5)
+#define AMDGPU_VM_PAGE_NOALLOC (1 << 9)
 struct drm_amdgpu_gem_va {
   __u32 handle;
   __u32 _pad;
@@ -438,6 +452,12 @@
 #define AMDGPU_INFO_FW_TA 0x13
 #define AMDGPU_INFO_FW_DMCUB 0x14
 #define AMDGPU_INFO_FW_TOC 0x15
+#define AMDGPU_INFO_FW_CAP 0x16
+#define AMDGPU_INFO_FW_GFX_RLCP 0x17
+#define AMDGPU_INFO_FW_GFX_RLCV 0x18
+#define AMDGPU_INFO_FW_MES_KIQ 0x19
+#define AMDGPU_INFO_FW_MES 0x1a
+#define AMDGPU_INFO_FW_IMU 0x1b
 #define AMDGPU_INFO_NUM_BYTES_MOVED 0x0f
 #define AMDGPU_INFO_VRAM_USAGE 0x10
 #define AMDGPU_INFO_GTT_USAGE 0x11
@@ -575,6 +595,8 @@
 #define AMDGPU_VRAM_TYPE_DDR4 8
 #define AMDGPU_VRAM_TYPE_GDDR6 9
 #define AMDGPU_VRAM_TYPE_DDR5 10
+#define AMDGPU_VRAM_TYPE_LPDDR4 11
+#define AMDGPU_VRAM_TYPE_LPDDR5 12
 struct drm_amdgpu_info_device {
   __u32 device_id;
   __u32 chip_rev;
@@ -633,7 +655,7 @@
   __u32 ib_start_alignment;
   __u32 ib_size_alignment;
   __u32 available_rings;
-  __u32 _pad;
+  __u32 ip_discovery_version;
 };
 struct drm_amdgpu_info_num_handles {
   __u32 uvd_max_handles;
@@ -681,7 +703,11 @@
 #define AMDGPU_FAMILY_RV 142
 #define AMDGPU_FAMILY_NV 143
 #define AMDGPU_FAMILY_VGH 144
+#define AMDGPU_FAMILY_GC_11_0_0 145
 #define AMDGPU_FAMILY_YC 146
+#define AMDGPU_FAMILY_GC_11_0_1 148
+#define AMDGPU_FAMILY_GC_10_3_6 149
+#define AMDGPU_FAMILY_GC_10_3_7 151
 #ifdef __cplusplus
 }
 #endif
diff --git a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/drm/drm_fourcc.h b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/drm/drm_fourcc.h
index e845c8c..8188b8f 100644
--- a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/drm/drm_fourcc.h
+++ b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/drm/drm_fourcc.h
@@ -25,7 +25,17 @@
 #define fourcc_code(a,b,c,d) ((__u32) (a) | ((__u32) (b) << 8) | ((__u32) (c) << 16) | ((__u32) (d) << 24))
 #define DRM_FORMAT_BIG_ENDIAN (1U << 31)
 #define DRM_FORMAT_INVALID 0
+#define DRM_FORMAT_C1 fourcc_code('C', '1', ' ', ' ')
+#define DRM_FORMAT_C2 fourcc_code('C', '2', ' ', ' ')
+#define DRM_FORMAT_C4 fourcc_code('C', '4', ' ', ' ')
 #define DRM_FORMAT_C8 fourcc_code('C', '8', ' ', ' ')
+#define DRM_FORMAT_D1 fourcc_code('D', '1', ' ', ' ')
+#define DRM_FORMAT_D2 fourcc_code('D', '2', ' ', ' ')
+#define DRM_FORMAT_D4 fourcc_code('D', '4', ' ', ' ')
+#define DRM_FORMAT_D8 fourcc_code('D', '8', ' ', ' ')
+#define DRM_FORMAT_R1 fourcc_code('R', '1', ' ', ' ')
+#define DRM_FORMAT_R2 fourcc_code('R', '2', ' ', ' ')
+#define DRM_FORMAT_R4 fourcc_code('R', '4', ' ', ' ')
 #define DRM_FORMAT_R8 fourcc_code('R', '8', ' ', ' ')
 #define DRM_FORMAT_R10 fourcc_code('R', '1', '0', ' ')
 #define DRM_FORMAT_R12 fourcc_code('R', '1', '2', ' ')
@@ -86,7 +96,9 @@
 #define DRM_FORMAT_UYVY fourcc_code('U', 'Y', 'V', 'Y')
 #define DRM_FORMAT_VYUY fourcc_code('V', 'Y', 'U', 'Y')
 #define DRM_FORMAT_AYUV fourcc_code('A', 'Y', 'U', 'V')
+#define DRM_FORMAT_AVUY8888 fourcc_code('A', 'V', 'U', 'Y')
 #define DRM_FORMAT_XYUV8888 fourcc_code('X', 'Y', 'U', 'V')
+#define DRM_FORMAT_XVUY8888 fourcc_code('X', 'V', 'U', 'Y')
 #define DRM_FORMAT_VUY888 fourcc_code('V', 'U', '2', '4')
 #define DRM_FORMAT_VUY101010 fourcc_code('V', 'U', '3', '0')
 #define DRM_FORMAT_Y210 fourcc_code('Y', '2', '1', '0')
@@ -163,9 +175,15 @@
 #define I915_FORMAT_MOD_Y_TILED_GEN12_RC_CCS fourcc_mod_code(INTEL, 6)
 #define I915_FORMAT_MOD_Y_TILED_GEN12_MC_CCS fourcc_mod_code(INTEL, 7)
 #define I915_FORMAT_MOD_Y_TILED_GEN12_RC_CCS_CC fourcc_mod_code(INTEL, 8)
+#define I915_FORMAT_MOD_4_TILED fourcc_mod_code(INTEL, 9)
+#define I915_FORMAT_MOD_4_TILED_DG2_RC_CCS fourcc_mod_code(INTEL, 10)
+#define I915_FORMAT_MOD_4_TILED_DG2_MC_CCS fourcc_mod_code(INTEL, 11)
+#define I915_FORMAT_MOD_4_TILED_DG2_RC_CCS_CC fourcc_mod_code(INTEL, 12)
 #define DRM_FORMAT_MOD_SAMSUNG_64_32_TILE fourcc_mod_code(SAMSUNG, 1)
 #define DRM_FORMAT_MOD_SAMSUNG_16_16_TILE fourcc_mod_code(SAMSUNG, 2)
 #define DRM_FORMAT_MOD_QCOM_COMPRESSED fourcc_mod_code(QCOM, 1)
+#define DRM_FORMAT_MOD_QCOM_TILED3 fourcc_mod_code(QCOM, 3)
+#define DRM_FORMAT_MOD_QCOM_TILED2 fourcc_mod_code(QCOM, 2)
 #define DRM_FORMAT_MOD_VIVANTE_TILED fourcc_mod_code(VIVANTE, 1)
 #define DRM_FORMAT_MOD_VIVANTE_SUPER_TILED fourcc_mod_code(VIVANTE, 2)
 #define DRM_FORMAT_MOD_VIVANTE_SPLIT_TILED fourcc_mod_code(VIVANTE, 3)
@@ -235,11 +253,13 @@
 #define AMD_FMT_MOD_TILE_VER_GFX9 1
 #define AMD_FMT_MOD_TILE_VER_GFX10 2
 #define AMD_FMT_MOD_TILE_VER_GFX10_RBPLUS 3
+#define AMD_FMT_MOD_TILE_VER_GFX11 4
 #define AMD_FMT_MOD_TILE_GFX9_64K_S 9
 #define AMD_FMT_MOD_TILE_GFX9_64K_D 10
 #define AMD_FMT_MOD_TILE_GFX9_64K_S_X 25
 #define AMD_FMT_MOD_TILE_GFX9_64K_D_X 26
 #define AMD_FMT_MOD_TILE_GFX9_64K_R_X 27
+#define AMD_FMT_MOD_TILE_GFX11_256K_R_X 31
 #define AMD_FMT_MOD_DCC_BLOCK_64B 0
 #define AMD_FMT_MOD_DCC_BLOCK_128B 1
 #define AMD_FMT_MOD_DCC_BLOCK_256B 2
@@ -271,9 +291,9 @@
 #define AMD_FMT_MOD_RB_MASK 0x7
 #define AMD_FMT_MOD_PIPE_SHIFT 33
 #define AMD_FMT_MOD_PIPE_MASK 0x7
-#define AMD_FMT_MOD_SET(field,value) ((uint64_t) (value) << AMD_FMT_MOD_ ##field ##_SHIFT)
+#define AMD_FMT_MOD_SET(field,value) ((__u64) (value) << AMD_FMT_MOD_ ##field ##_SHIFT)
 #define AMD_FMT_MOD_GET(field,value) (((value) >> AMD_FMT_MOD_ ##field ##_SHIFT) & AMD_FMT_MOD_ ##field ##_MASK)
-#define AMD_FMT_MOD_CLEAR(field) (~((uint64_t) AMD_FMT_MOD_ ##field ##_MASK << AMD_FMT_MOD_ ##field ##_SHIFT))
+#define AMD_FMT_MOD_CLEAR(field) (~((__u64) AMD_FMT_MOD_ ##field ##_MASK << AMD_FMT_MOD_ ##field ##_SHIFT))
 #ifdef __cplusplus
 }
 #endif
diff --git a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/drm/i915_drm.h b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/drm/i915_drm.h
index 52bfad2..198b969 100644
--- a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/drm/i915_drm.h
+++ b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/drm/i915_drm.h
@@ -41,13 +41,14 @@
   I915_ENGINE_CLASS_COPY = 1,
   I915_ENGINE_CLASS_VIDEO = 2,
   I915_ENGINE_CLASS_VIDEO_ENHANCE = 3,
+  I915_ENGINE_CLASS_COMPUTE = 4,
   I915_ENGINE_CLASS_INVALID = - 1
 };
 struct i915_engine_class_instance {
   __u16 engine_class;
-  __u16 engine_instance;
 #define I915_ENGINE_CLASS_INVALID_NONE - 1
 #define I915_ENGINE_CLASS_INVALID_VIRTUAL - 2
+  __u16 engine_instance;
 };
 enum drm_i915_pmu_engine_sample {
   I915_SAMPLE_BUSY = 0,
@@ -367,10 +368,11 @@
 #define I915_PARAM_PERF_REVISION 54
 #define I915_PARAM_HAS_EXEC_TIMELINE_FENCES 55
 #define I915_PARAM_HAS_USERPTR_PROBE 56
-typedef struct drm_i915_getparam {
+struct drm_i915_getparam {
   __s32 param;
   int __user * value;
-} drm_i915_getparam_t;
+};
+typedef struct drm_i915_getparam drm_i915_getparam_t;
 #define I915_SETPARAM_USE_MI_BATCHBUFFER_START 1
 #define I915_SETPARAM_TEX_LRU_LOG_GRANULARITY 2
 #define I915_SETPARAM_ALLOW_BATCHBUFFER 3
@@ -525,13 +527,13 @@
 };
 struct drm_i915_gem_exec_fence {
   __u32 handle;
+  __u32 flags;
 #define I915_EXEC_FENCE_WAIT (1 << 0)
 #define I915_EXEC_FENCE_SIGNAL (1 << 1)
 #define __I915_EXEC_FENCE_UNKNOWN_FLAGS (- (I915_EXEC_FENCE_SIGNAL << 1))
-  __u32 flags;
 };
-#define DRM_I915_GEM_EXECBUFFER_EXT_TIMELINE_FENCES 0
 struct drm_i915_gem_execbuffer_ext_timeline_fences {
+#define DRM_I915_GEM_EXECBUFFER_EXT_TIMELINE_FENCES 0
   struct i915_user_extension base;
   __u64 fence_count;
   __u64 handles_ptr;
@@ -546,6 +548,7 @@
   __u32 DR4;
   __u32 num_cliprects;
   __u64 cliprects_ptr;
+  __u64 flags;
 #define I915_EXEC_RING_MASK (0x3f)
 #define I915_EXEC_DEFAULT (0 << 0)
 #define I915_EXEC_RENDER (1 << 0)
@@ -556,10 +559,6 @@
 #define I915_EXEC_CONSTANTS_REL_GENERAL (0 << 6)
 #define I915_EXEC_CONSTANTS_ABSOLUTE (1 << 6)
 #define I915_EXEC_CONSTANTS_REL_SURFACE (2 << 6)
-  __u64 flags;
-  __u64 rsvd1;
-  __u64 rsvd2;
-};
 #define I915_EXEC_GEN7_SOL_RESET (1 << 8)
 #define I915_EXEC_SECURE (1 << 9)
 #define I915_EXEC_IS_PINNED (1 << 10)
@@ -578,6 +577,9 @@
 #define I915_EXEC_FENCE_SUBMIT (1 << 20)
 #define I915_EXEC_USE_EXTENSIONS (1 << 21)
 #define __I915_EXEC_UNKNOWN_FLAGS (- (I915_EXEC_USE_EXTENSIONS << 1))
+  __u64 rsvd1;
+  __u64 rsvd2;
+};
 #define I915_EXEC_CONTEXT_ID_MASK (0xffffffff)
 #define i915_execbuffer2_set_context_id(eb2,context) (eb2).rsvd1 = context & I915_EXEC_CONTEXT_ID_MASK
 #define i915_execbuffer2_get_context_id(eb2) ((eb2).rsvd1 & I915_EXEC_CONTEXT_ID_MASK)
@@ -721,6 +723,8 @@
 #define I915_CONTEXT_CREATE_FLAGS_SINGLE_TIMELINE (1u << 1)
 #define I915_CONTEXT_CREATE_FLAGS_UNKNOWN (- (I915_CONTEXT_CREATE_FLAGS_SINGLE_TIMELINE << 1))
   __u64 extensions;
+#define I915_CONTEXT_CREATE_EXT_SETPARAM 0
+#define I915_CONTEXT_CREATE_EXT_CLONE 1
 };
 struct drm_i915_gem_context_param {
   __u32 ctx_id;
@@ -760,7 +764,7 @@
   __u16 num_siblings;
   __u32 flags;
   __u64 mbz64;
-  struct i915_engine_class_instance engines[0];
+  struct i915_engine_class_instance engines[];
 } __attribute__((packed));
 #define I915_DEFINE_CONTEXT_ENGINES_LOAD_BALANCE(name__,N__) struct { struct i915_user_extension base; __u16 engine_index; __u16 num_siblings; __u32 flags; __u64 mbz64; struct i915_engine_class_instance engines[N__]; \
 } __attribute__((packed)) name__
@@ -771,7 +775,7 @@
   __u16 num_bonds;
   __u64 flags;
   __u64 mbz64[4];
-  struct i915_engine_class_instance engines[0];
+  struct i915_engine_class_instance engines[];
 } __attribute__((packed));
 #define I915_DEFINE_CONTEXT_ENGINES_BOND(name__,N__) struct { struct i915_user_extension base; struct i915_engine_class_instance master; __u16 virtual_index; __u16 num_bonds; __u64 flags; __u64 mbz64[4]; struct i915_engine_class_instance engines[N__]; \
 } __attribute__((packed)) name__
@@ -783,8 +787,8 @@
   __u16 mbz16;
   __u64 flags;
   __u64 mbz64[3];
-  struct i915_engine_class_instance engines[0];
-} __packed;
+  struct i915_engine_class_instance engines[];
+} __attribute__((__packed__));
 #define I915_DEFINE_CONTEXT_ENGINES_PARALLEL_SUBMIT(name__,N__) struct { struct i915_user_extension base; __u16 engine_index; __u16 width; __u16 num_siblings; __u16 mbz16; __u64 flags; __u64 mbz64[3]; struct i915_engine_class_instance engines[N__]; \
 } __attribute__((packed)) name__
 struct i915_context_param_engines {
@@ -797,11 +801,9 @@
 #define I915_DEFINE_CONTEXT_PARAM_ENGINES(name__,N__) struct { __u64 extensions; struct i915_engine_class_instance engines[N__]; \
 } __attribute__((packed)) name__
 struct drm_i915_gem_context_create_ext_setparam {
-#define I915_CONTEXT_CREATE_EXT_SETPARAM 0
   struct i915_user_extension base;
   struct drm_i915_gem_context_param param;
 };
-#define I915_CONTEXT_CREATE_EXT_CLONE 1
 struct drm_i915_gem_context_destroy {
   __u32 ctx_id;
   __u32 pad;
@@ -894,6 +896,8 @@
 #define DRM_I915_QUERY_ENGINE_INFO 2
 #define DRM_I915_QUERY_PERF_CONFIG 3
 #define DRM_I915_QUERY_MEMORY_REGIONS 4
+#define DRM_I915_QUERY_HWCONFIG_BLOB 5
+#define DRM_I915_QUERY_GEOMETRY_SUBSLICES 6
   __s32 length;
   __u32 flags;
 #define DRM_I915_QUERY_PERF_CONFIG_LIST 1
@@ -956,7 +960,13 @@
   __u32 rsvd0;
   __u64 probed_size;
   __u64 unallocated_size;
-  __u64 rsvd1[8];
+  union {
+    __u64 rsvd1[8];
+    struct {
+      __u64 probed_cpu_visible_size;
+      __u64 unallocated_cpu_visible_size;
+    };
+  };
 };
 struct drm_i915_query_memory_regions {
   __u32 num_regions;
@@ -966,6 +976,7 @@
 struct drm_i915_gem_create_ext {
   __u64 size;
   __u32 handle;
+#define I915_GEM_CREATE_EXT_FLAG_NEEDS_CPU_ACCESS (1 << 0)
   __u32 flags;
 #define I915_GEM_CREATE_EXT_MEMORY_REGIONS 0
 #define I915_GEM_CREATE_EXT_PROTECTED_CONTENT 1
diff --git a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/drm/msm_drm.h b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/drm/msm_drm.h
index b4ba1d0..c2edefd 100644
--- a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/drm/msm_drm.h
+++ b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/drm/msm_drm.h
@@ -43,11 +43,18 @@
 #define MSM_PARAM_PP_PGTABLE 0x08
 #define MSM_PARAM_FAULTS 0x09
 #define MSM_PARAM_SUSPENDS 0x0a
+#define MSM_PARAM_SYSPROF 0x0b
+#define MSM_PARAM_COMM 0x0c
+#define MSM_PARAM_CMDLINE 0x0d
+#define MSM_PARAM_VA_START 0x0e
+#define MSM_PARAM_VA_SIZE 0x0f
 #define MSM_PARAM_NR_RINGS MSM_PARAM_PRIORITIES
 struct drm_msm_param {
   __u32 pipe;
   __u32 param;
   __u64 value;
+  __u32 len;
+  __u32 pad;
 };
 #define MSM_BO_SCANOUT 0x00000001
 #define MSM_BO_GPU_READONLY 0x00000002
@@ -66,6 +73,7 @@
 #define MSM_INFO_GET_IOVA 0x01
 #define MSM_INFO_SET_NAME 0x02
 #define MSM_INFO_GET_NAME 0x03
+#define MSM_INFO_SET_IOVA 0x04
 struct drm_msm_gem_info {
   __u32 handle;
   __u32 info;
@@ -119,7 +127,8 @@
 #define MSM_SUBMIT_SUDO 0x10000000
 #define MSM_SUBMIT_SYNCOBJ_IN 0x08000000
 #define MSM_SUBMIT_SYNCOBJ_OUT 0x04000000
-#define MSM_SUBMIT_FLAGS (MSM_SUBMIT_NO_IMPLICIT | MSM_SUBMIT_FENCE_FD_IN | MSM_SUBMIT_FENCE_FD_OUT | MSM_SUBMIT_SUDO | MSM_SUBMIT_SYNCOBJ_IN | MSM_SUBMIT_SYNCOBJ_OUT | 0)
+#define MSM_SUBMIT_FENCE_SN_IN 0x02000000
+#define MSM_SUBMIT_FLAGS (MSM_SUBMIT_NO_IMPLICIT | MSM_SUBMIT_FENCE_FD_IN | MSM_SUBMIT_FENCE_FD_OUT | MSM_SUBMIT_SUDO | MSM_SUBMIT_SYNCOBJ_IN | MSM_SUBMIT_SYNCOBJ_OUT | MSM_SUBMIT_FENCE_SN_IN | 0)
 #define MSM_SUBMIT_SYNCOBJ_RESET 0x00000001
 #define MSM_SUBMIT_SYNCOBJ_FLAGS (MSM_SUBMIT_SYNCOBJ_RESET | 0)
 struct drm_msm_gem_submit_syncobj {
@@ -172,6 +181,7 @@
   __u32 pad;
 };
 #define DRM_MSM_GET_PARAM 0x00
+#define DRM_MSM_SET_PARAM 0x01
 #define DRM_MSM_GEM_NEW 0x02
 #define DRM_MSM_GEM_INFO 0x03
 #define DRM_MSM_GEM_CPU_PREP 0x04
@@ -183,6 +193,7 @@
 #define DRM_MSM_SUBMITQUEUE_CLOSE 0x0B
 #define DRM_MSM_SUBMITQUEUE_QUERY 0x0C
 #define DRM_IOCTL_MSM_GET_PARAM DRM_IOWR(DRM_COMMAND_BASE + DRM_MSM_GET_PARAM, struct drm_msm_param)
+#define DRM_IOCTL_MSM_SET_PARAM DRM_IOW(DRM_COMMAND_BASE + DRM_MSM_SET_PARAM, struct drm_msm_param)
 #define DRM_IOCTL_MSM_GEM_NEW DRM_IOWR(DRM_COMMAND_BASE + DRM_MSM_GEM_NEW, struct drm_msm_gem_new)
 #define DRM_IOCTL_MSM_GEM_INFO DRM_IOWR(DRM_COMMAND_BASE + DRM_MSM_GEM_INFO, struct drm_msm_gem_info)
 #define DRM_IOCTL_MSM_GEM_CPU_PREP DRM_IOW(DRM_COMMAND_BASE + DRM_MSM_GEM_CPU_PREP, struct drm_msm_gem_cpu_prep)
diff --git a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/drm/panfrost_drm.h b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/drm/panfrost_drm.h
index 1f4473d..04a85df 100644
--- a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/drm/panfrost_drm.h
+++ b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/drm/panfrost_drm.h
@@ -136,6 +136,38 @@
   __u32 madv;
   __u32 retained;
 };
+#define PANFROSTDUMP_MAJOR 1
+#define PANFROSTDUMP_MINOR 0
+#define PANFROSTDUMP_MAGIC 0x464E4150
+#define PANFROSTDUMP_BUF_REG 0
+#define PANFROSTDUMP_BUF_BOMAP (PANFROSTDUMP_BUF_REG + 1)
+#define PANFROSTDUMP_BUF_BO (PANFROSTDUMP_BUF_BOMAP + 1)
+#define PANFROSTDUMP_BUF_TRAILER (PANFROSTDUMP_BUF_BO + 1)
+struct panfrost_dump_object_header {
+  __u32 magic;
+  __u32 type;
+  __u32 file_size;
+  __u32 file_offset;
+  union {
+    struct {
+      __u64 jc;
+      __u32 gpu_id;
+      __u32 major;
+      __u32 minor;
+      __u64 nbos;
+    } reghdr;
+    struct {
+      __u32 valid;
+      __u64 iova;
+      __u32 data[2];
+    } bomap;
+    __u32 sizer[496];
+  };
+};
+struct panfrost_dump_registers {
+  __u32 reg;
+  __u32 value;
+};
 #ifdef __cplusplus
 }
 #endif
diff --git a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/drm/vmwgfx_drm.h b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/drm/vmwgfx_drm.h
index 395743b..2f75589 100644
--- a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/drm/vmwgfx_drm.h
+++ b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/drm/vmwgfx_drm.h
@@ -76,6 +76,7 @@
 #define DRM_VMW_PARAM_SM4_1 14
 #define DRM_VMW_PARAM_SM5 15
 #define DRM_VMW_PARAM_GL43 16
+#define DRM_VMW_PARAM_DEVICE_ID 17
 enum drm_vmw_handle_type {
   DRM_VMW_HANDLE_LEGACY = 0,
   DRM_VMW_HANDLE_PRIME = 1
diff --git a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/acct.h b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/acct.h
index aecc9f6..ba9d25f 100644
--- a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/acct.h
+++ b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/acct.h
@@ -74,6 +74,7 @@
 #define ACOMPAT 0x04
 #define ACORE 0x08
 #define AXSIG 0x10
+#define AGROUP 0x20
 #if defined(__BYTE_ORDER) ? __BYTE_ORDER == __BIG_ENDIAN : defined(__BIG_ENDIAN)
 #define ACCT_BYTEORDER 0x80
 #elif defined(__BYTE_ORDER)?__BYTE_ORDER==__LITTLE_ENDIAN:defined(__LITTLE_ENDIAN)
diff --git a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/agpgart.h b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/agpgart.h
index 3b126f1..9dda7bf 100644
--- a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/agpgart.h
+++ b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/agpgart.h
@@ -38,7 +38,6 @@
 #define FALSE 0
 #endif
 #include <linux/types.h>
-#include <stdlib.h>
 struct agp_version {
   __u16 major;
   __u16 minor;
@@ -48,10 +47,10 @@
   __u32 bridge_id;
   __u32 agp_mode;
   unsigned long aper_base;
-  size_t aper_size;
-  size_t pg_total;
-  size_t pg_system;
-  size_t pg_used;
+  __kernel_size_t aper_size;
+  __kernel_size_t pg_total;
+  __kernel_size_t pg_system;
+  __kernel_size_t pg_used;
 } agp_info;
 typedef struct _agp_setup {
   __u32 agp_mode;
diff --git a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/android/binder.h b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/android/binder.h
index ded1756..52f4c6b 100644
--- a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/android/binder.h
+++ b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/android/binder.h
@@ -127,6 +127,11 @@
   __u32 sync_recv;
   __u32 async_recv;
 };
+struct binder_extended_error {
+  __u32 id;
+  __u32 command;
+  __s32 param;
+};
 #define BINDER_WRITE_READ _IOWR('b', 1, struct binder_write_read)
 #define BINDER_SET_IDLE_TIMEOUT _IOW('b', 3, __s64)
 #define BINDER_SET_MAX_THREADS _IOW('b', 5, __u32)
@@ -140,12 +145,14 @@
 #define BINDER_FREEZE _IOW('b', 14, struct binder_freeze_info)
 #define BINDER_GET_FROZEN_INFO _IOWR('b', 15, struct binder_frozen_status_info)
 #define BINDER_ENABLE_ONEWAY_SPAM_DETECTION _IOW('b', 16, __u32)
+#define BINDER_GET_EXTENDED_ERROR _IOWR('b', 17, struct binder_extended_error)
 enum transaction_flags {
   TF_ONE_WAY = 0x01,
   TF_ROOT_OBJECT = 0x04,
   TF_STATUS_CODE = 0x08,
   TF_ACCEPT_FDS = 0x10,
   TF_CLEAR_BUF = 0x20,
+  TF_UPDATE_TXN = 0x40,
 };
 struct binder_transaction_data {
   union {
@@ -155,8 +162,8 @@
   binder_uintptr_t cookie;
   __u32 code;
   __u32 flags;
-  pid_t sender_pid;
-  uid_t sender_euid;
+  __kernel_pid_t sender_pid;
+  __kernel_uid32_t sender_euid;
   binder_size_t data_size;
   binder_size_t offsets_size;
   union {
@@ -182,7 +189,7 @@
 struct binder_handle_cookie {
   __u32 handle;
   binder_uintptr_t cookie;
-} __packed;
+} __attribute__((__packed__));
 struct binder_pri_desc {
   __s32 priority;
   __u32 desc;
diff --git a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/ashmem.h b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/ashmem.h
index 174667f..88f0e81 100644
--- a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/ashmem.h
+++ b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/ashmem.h
@@ -41,4 +41,5 @@
 #define ASHMEM_UNPIN _IOW(__ASHMEMIOC, 8, struct ashmem_pin)
 #define ASHMEM_GET_PIN_STATUS _IO(__ASHMEMIOC, 9)
 #define ASHMEM_PURGE_ALL_CACHES _IO(__ASHMEMIOC, 10)
+#define ASHMEM_GET_FILE_ID _IOR(__ASHMEMIOC, 11, unsigned long)
 #endif
diff --git a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/audit.h b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/audit.h
index 30a94af..f7c969b 100644
--- a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/audit.h
+++ b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/audit.h
@@ -140,7 +140,7 @@
 #define AUDIT_MAX_KEY_LEN 256
 #define AUDIT_BITMASK_SIZE 64
 #define AUDIT_WORD(nr) ((__u32) ((nr) / 32))
-#define AUDIT_BIT(nr) (1 << ((nr) - AUDIT_WORD(nr) * 32))
+#define AUDIT_BIT(nr) (1U << ((nr) - AUDIT_WORD(nr) * 32))
 #define AUDIT_SYSCALL_CLASSES 16
 #define AUDIT_CLASS_DIR_WRITE 0
 #define AUDIT_CLASS_DIR_WRITE_32 1
@@ -323,6 +323,8 @@
 #define AUDIT_ARCH_UNICORE (EM_UNICORE | __AUDIT_ARCH_LE)
 #define AUDIT_ARCH_X86_64 (EM_X86_64 | __AUDIT_ARCH_64BIT | __AUDIT_ARCH_LE)
 #define AUDIT_ARCH_XTENSA (EM_XTENSA)
+#define AUDIT_ARCH_LOONGARCH32 (EM_LOONGARCH | __AUDIT_ARCH_LE)
+#define AUDIT_ARCH_LOONGARCH64 (EM_LOONGARCH | __AUDIT_ARCH_64BIT | __AUDIT_ARCH_LE)
 #define AUDIT_PERM_EXEC 1
 #define AUDIT_PERM_WRITE 2
 #define AUDIT_PERM_READ 4
diff --git a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/blkzoned.h b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/blkzoned.h
index b551e8b..e41ac9f 100644
--- a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/blkzoned.h
+++ b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/blkzoned.h
@@ -54,7 +54,7 @@
   __u64 sector;
   __u32 nr_zones;
   __u32 flags;
-  struct blk_zone zones[0];
+  struct blk_zone zones[];
 };
 struct blk_zone_range {
   __u64 sector;
diff --git a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/bpf.h b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/bpf.h
index d363e81..807884a 100644
--- a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/bpf.h
+++ b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/bpf.h
@@ -74,10 +74,27 @@
   __u64 cgroup_inode_id;
   __u32 attach_type;
 };
+enum bpf_cgroup_iter_order {
+  BPF_CGROUP_ITER_ORDER_UNSPEC = 0,
+  BPF_CGROUP_ITER_SELF_ONLY,
+  BPF_CGROUP_ITER_DESCENDANTS_PRE,
+  BPF_CGROUP_ITER_DESCENDANTS_POST,
+  BPF_CGROUP_ITER_ANCESTORS_UP,
+};
 union bpf_iter_link_info {
   struct {
     __u32 map_fd;
   } map;
+  struct {
+    enum bpf_cgroup_iter_order order;
+    __u32 cgroup_fd;
+    __u64 cgroup_id;
+  } cgroup;
+  struct {
+    __u32 tid;
+    __u32 pid;
+    __u32 pid_fd;
+  } task;
 };
 enum bpf_cmd {
   BPF_MAP_CREATE,
@@ -150,6 +167,7 @@
   BPF_MAP_TYPE_INODE_STORAGE,
   BPF_MAP_TYPE_TASK_STORAGE,
   BPF_MAP_TYPE_BLOOM_FILTER,
+  BPF_MAP_TYPE_USER_RINGBUF,
 };
 enum bpf_prog_type {
   BPF_PROG_TYPE_UNSPEC,
@@ -228,6 +246,8 @@
   BPF_SK_REUSEPORT_SELECT,
   BPF_SK_REUSEPORT_SELECT_OR_MIGRATE,
   BPF_PERF_EVENT,
+  BPF_TRACE_KPROBE_MULTI,
+  BPF_LSM_CGROUP,
   __MAX_BPF_ATTACH_TYPE
 };
 #define MAX_BPF_ATTACH_TYPE __MAX_BPF_ATTACH_TYPE
@@ -240,6 +260,8 @@
   BPF_LINK_TYPE_NETNS = 5,
   BPF_LINK_TYPE_XDP = 6,
   BPF_LINK_TYPE_PERF_EVENT = 7,
+  BPF_LINK_TYPE_KPROBE_MULTI = 8,
+  BPF_LINK_TYPE_STRUCT_OPS = 9,
   MAX_BPF_LINK_TYPE,
 };
 #define BPF_F_ALLOW_OVERRIDE (1U << 0)
@@ -250,6 +272,8 @@
 #define BPF_F_TEST_RND_HI32 (1U << 2)
 #define BPF_F_TEST_STATE_FREQ (1U << 3)
 #define BPF_F_SLEEPABLE (1U << 4)
+#define BPF_F_XDP_HAS_FRAGS (1U << 5)
+#define BPF_F_KPROBE_MULTI_RETURN (1U << 0)
 #define BPF_PSEUDO_MAP_FD 1
 #define BPF_PSEUDO_MAP_IDX 5
 #define BPF_PSEUDO_MAP_VALUE 2
@@ -281,6 +305,7 @@
 };
 #define BPF_F_QUERY_EFFECTIVE (1U << 0)
 #define BPF_F_TEST_RUN_ON_CPU (1U << 0)
+#define BPF_F_TEST_XDP_LIVE_FRAMES (1U << 1)
 enum bpf_stats_type {
   BPF_STATS_RUN_TIME = 0,
 };
@@ -392,6 +417,7 @@
     __aligned_u64 ctx_out;
     __u32 flags;
     __u32 cpu;
+    __u32 batch_size;
   } test;
   struct {
     union {
@@ -416,6 +442,7 @@
     __u32 attach_flags;
     __aligned_u64 prog_ids;
     __u32 prog_cnt;
+    __aligned_u64 prog_attach_flags;
   } query;
   struct {
     __u64 name;
@@ -456,6 +483,17 @@
       struct {
         __u64 bpf_cookie;
       } perf_event;
+      struct {
+        __u32 flags;
+        __u32 cnt;
+        __aligned_u64 syms;
+        __aligned_u64 addrs;
+        __aligned_u64 cookies;
+      } kprobe_multi;
+      struct {
+        __u32 target_btf_id;
+        __u64 cookie;
+      } tracing;
     };
   } link_create;
   struct {
@@ -480,7 +518,7 @@
     __u32 flags;
   } prog_bind_map;
 } __attribute__((aligned(8)));
-#define __BPF_FUNC_MAPPER(FN) FN(unspec), FN(map_lookup_elem), FN(map_update_elem), FN(map_delete_elem), FN(probe_read), FN(ktime_get_ns), FN(trace_printk), FN(get_prandom_u32), FN(get_smp_processor_id), FN(skb_store_bytes), FN(l3_csum_replace), FN(l4_csum_replace), FN(tail_call), FN(clone_redirect), FN(get_current_pid_tgid), FN(get_current_uid_gid), FN(get_current_comm), FN(get_cgroup_classid), FN(skb_vlan_push), FN(skb_vlan_pop), FN(skb_get_tunnel_key), FN(skb_set_tunnel_key), FN(perf_event_read), FN(redirect), FN(get_route_realm), FN(perf_event_output), FN(skb_load_bytes), FN(get_stackid), FN(csum_diff), FN(skb_get_tunnel_opt), FN(skb_set_tunnel_opt), FN(skb_change_proto), FN(skb_change_type), FN(skb_under_cgroup), FN(get_hash_recalc), FN(get_current_task), FN(probe_write_user), FN(current_task_under_cgroup), FN(skb_change_tail), FN(skb_pull_data), FN(csum_update), FN(set_hash_invalid), FN(get_numa_node_id), FN(skb_change_head), FN(xdp_adjust_head), FN(probe_read_str), FN(get_socket_cookie), FN(get_socket_uid), FN(set_hash), FN(setsockopt), FN(skb_adjust_room), FN(redirect_map), FN(sk_redirect_map), FN(sock_map_update), FN(xdp_adjust_meta), FN(perf_event_read_value), FN(perf_prog_read_value), FN(getsockopt), FN(override_return), FN(sock_ops_cb_flags_set), FN(msg_redirect_map), FN(msg_apply_bytes), FN(msg_cork_bytes), FN(msg_pull_data), FN(bind), FN(xdp_adjust_tail), FN(skb_get_xfrm_state), FN(get_stack), FN(skb_load_bytes_relative), FN(fib_lookup), FN(sock_hash_update), FN(msg_redirect_hash), FN(sk_redirect_hash), FN(lwt_push_encap), FN(lwt_seg6_store_bytes), FN(lwt_seg6_adjust_srh), FN(lwt_seg6_action), FN(rc_repeat), FN(rc_keydown), FN(skb_cgroup_id), FN(get_current_cgroup_id), FN(get_local_storage), FN(sk_select_reuseport), FN(skb_ancestor_cgroup_id), FN(sk_lookup_tcp), FN(sk_lookup_udp), FN(sk_release), FN(map_push_elem), FN(map_pop_elem), FN(map_peek_elem), FN(msg_push_data), FN(msg_pop_data), FN(rc_pointer_rel), FN(spin_lock), FN(spin_unlock), FN(sk_fullsock), FN(tcp_sock), FN(skb_ecn_set_ce), FN(get_listener_sock), FN(skc_lookup_tcp), FN(tcp_check_syncookie), FN(sysctl_get_name), FN(sysctl_get_current_value), FN(sysctl_get_new_value), FN(sysctl_set_new_value), FN(strtol), FN(strtoul), FN(sk_storage_get), FN(sk_storage_delete), FN(send_signal), FN(tcp_gen_syncookie), FN(skb_output), FN(probe_read_user), FN(probe_read_kernel), FN(probe_read_user_str), FN(probe_read_kernel_str), FN(tcp_send_ack), FN(send_signal_thread), FN(jiffies64), FN(read_branch_records), FN(get_ns_current_pid_tgid), FN(xdp_output), FN(get_netns_cookie), FN(get_current_ancestor_cgroup_id), FN(sk_assign), FN(ktime_get_boot_ns), FN(seq_printf), FN(seq_write), FN(sk_cgroup_id), FN(sk_ancestor_cgroup_id), FN(ringbuf_output), FN(ringbuf_reserve), FN(ringbuf_submit), FN(ringbuf_discard), FN(ringbuf_query), FN(csum_level), FN(skc_to_tcp6_sock), FN(skc_to_tcp_sock), FN(skc_to_tcp_timewait_sock), FN(skc_to_tcp_request_sock), FN(skc_to_udp6_sock), FN(get_task_stack), FN(load_hdr_opt), FN(store_hdr_opt), FN(reserve_hdr_opt), FN(inode_storage_get), FN(inode_storage_delete), FN(d_path), FN(copy_from_user), FN(snprintf_btf), FN(seq_printf_btf), FN(skb_cgroup_classid), FN(redirect_neigh), FN(per_cpu_ptr), FN(this_cpu_ptr), FN(redirect_peer), FN(task_storage_get), FN(task_storage_delete), FN(get_current_task_btf), FN(bprm_opts_set), FN(ktime_get_coarse_ns), FN(ima_inode_hash), FN(sock_from_file), FN(check_mtu), FN(for_each_map_elem), FN(snprintf), FN(sys_bpf), FN(btf_find_by_name_kind), FN(sys_close), FN(timer_init), FN(timer_set_callback), FN(timer_start), FN(timer_cancel), FN(get_func_ip), FN(get_attach_cookie), FN(task_pt_regs), FN(get_branch_snapshot), FN(trace_vprintk), FN(skc_to_unix_sock), FN(kallsyms_lookup_name), FN(find_vma), FN(loop), FN(strncmp), FN(get_func_arg), FN(get_func_ret), FN(get_func_arg_cnt),
+#define __BPF_FUNC_MAPPER(FN) FN(unspec), FN(map_lookup_elem), FN(map_update_elem), FN(map_delete_elem), FN(probe_read), FN(ktime_get_ns), FN(trace_printk), FN(get_prandom_u32), FN(get_smp_processor_id), FN(skb_store_bytes), FN(l3_csum_replace), FN(l4_csum_replace), FN(tail_call), FN(clone_redirect), FN(get_current_pid_tgid), FN(get_current_uid_gid), FN(get_current_comm), FN(get_cgroup_classid), FN(skb_vlan_push), FN(skb_vlan_pop), FN(skb_get_tunnel_key), FN(skb_set_tunnel_key), FN(perf_event_read), FN(redirect), FN(get_route_realm), FN(perf_event_output), FN(skb_load_bytes), FN(get_stackid), FN(csum_diff), FN(skb_get_tunnel_opt), FN(skb_set_tunnel_opt), FN(skb_change_proto), FN(skb_change_type), FN(skb_under_cgroup), FN(get_hash_recalc), FN(get_current_task), FN(probe_write_user), FN(current_task_under_cgroup), FN(skb_change_tail), FN(skb_pull_data), FN(csum_update), FN(set_hash_invalid), FN(get_numa_node_id), FN(skb_change_head), FN(xdp_adjust_head), FN(probe_read_str), FN(get_socket_cookie), FN(get_socket_uid), FN(set_hash), FN(setsockopt), FN(skb_adjust_room), FN(redirect_map), FN(sk_redirect_map), FN(sock_map_update), FN(xdp_adjust_meta), FN(perf_event_read_value), FN(perf_prog_read_value), FN(getsockopt), FN(override_return), FN(sock_ops_cb_flags_set), FN(msg_redirect_map), FN(msg_apply_bytes), FN(msg_cork_bytes), FN(msg_pull_data), FN(bind), FN(xdp_adjust_tail), FN(skb_get_xfrm_state), FN(get_stack), FN(skb_load_bytes_relative), FN(fib_lookup), FN(sock_hash_update), FN(msg_redirect_hash), FN(sk_redirect_hash), FN(lwt_push_encap), FN(lwt_seg6_store_bytes), FN(lwt_seg6_adjust_srh), FN(lwt_seg6_action), FN(rc_repeat), FN(rc_keydown), FN(skb_cgroup_id), FN(get_current_cgroup_id), FN(get_local_storage), FN(sk_select_reuseport), FN(skb_ancestor_cgroup_id), FN(sk_lookup_tcp), FN(sk_lookup_udp), FN(sk_release), FN(map_push_elem), FN(map_pop_elem), FN(map_peek_elem), FN(msg_push_data), FN(msg_pop_data), FN(rc_pointer_rel), FN(spin_lock), FN(spin_unlock), FN(sk_fullsock), FN(tcp_sock), FN(skb_ecn_set_ce), FN(get_listener_sock), FN(skc_lookup_tcp), FN(tcp_check_syncookie), FN(sysctl_get_name), FN(sysctl_get_current_value), FN(sysctl_get_new_value), FN(sysctl_set_new_value), FN(strtol), FN(strtoul), FN(sk_storage_get), FN(sk_storage_delete), FN(send_signal), FN(tcp_gen_syncookie), FN(skb_output), FN(probe_read_user), FN(probe_read_kernel), FN(probe_read_user_str), FN(probe_read_kernel_str), FN(tcp_send_ack), FN(send_signal_thread), FN(jiffies64), FN(read_branch_records), FN(get_ns_current_pid_tgid), FN(xdp_output), FN(get_netns_cookie), FN(get_current_ancestor_cgroup_id), FN(sk_assign), FN(ktime_get_boot_ns), FN(seq_printf), FN(seq_write), FN(sk_cgroup_id), FN(sk_ancestor_cgroup_id), FN(ringbuf_output), FN(ringbuf_reserve), FN(ringbuf_submit), FN(ringbuf_discard), FN(ringbuf_query), FN(csum_level), FN(skc_to_tcp6_sock), FN(skc_to_tcp_sock), FN(skc_to_tcp_timewait_sock), FN(skc_to_tcp_request_sock), FN(skc_to_udp6_sock), FN(get_task_stack), FN(load_hdr_opt), FN(store_hdr_opt), FN(reserve_hdr_opt), FN(inode_storage_get), FN(inode_storage_delete), FN(d_path), FN(copy_from_user), FN(snprintf_btf), FN(seq_printf_btf), FN(skb_cgroup_classid), FN(redirect_neigh), FN(per_cpu_ptr), FN(this_cpu_ptr), FN(redirect_peer), FN(task_storage_get), FN(task_storage_delete), FN(get_current_task_btf), FN(bprm_opts_set), FN(ktime_get_coarse_ns), FN(ima_inode_hash), FN(sock_from_file), FN(check_mtu), FN(for_each_map_elem), FN(snprintf), FN(sys_bpf), FN(btf_find_by_name_kind), FN(sys_close), FN(timer_init), FN(timer_set_callback), FN(timer_start), FN(timer_cancel), FN(get_func_ip), FN(get_attach_cookie), FN(task_pt_regs), FN(get_branch_snapshot), FN(trace_vprintk), FN(skc_to_unix_sock), FN(kallsyms_lookup_name), FN(find_vma), FN(loop), FN(strncmp), FN(get_func_arg), FN(get_func_ret), FN(get_func_arg_cnt), FN(get_retval), FN(set_retval), FN(xdp_get_buff_len), FN(xdp_load_bytes), FN(xdp_store_bytes), FN(copy_from_user_task), FN(skb_set_tstamp), FN(ima_file_hash), FN(kptr_xchg), FN(map_lookup_percpu_elem), FN(skc_to_mptcp_sock), FN(dynptr_from_mem), FN(ringbuf_reserve_dynptr), FN(ringbuf_submit_dynptr), FN(ringbuf_discard_dynptr), FN(dynptr_read), FN(dynptr_write), FN(dynptr_data), FN(tcp_raw_gen_syncookie_ipv4), FN(tcp_raw_gen_syncookie_ipv6), FN(tcp_raw_check_syncookie_ipv4), FN(tcp_raw_check_syncookie_ipv6), FN(ktime_get_tai_ns), FN(user_ringbuf_drain),
 #define __BPF_ENUM_FN(x) BPF_FUNC_ ##x
 enum bpf_func_id {
   __BPF_FUNC_MAPPER(__BPF_ENUM_FN) __BPF_FUNC_MAX_ID,
@@ -517,6 +555,9 @@
   BPF_F_SEQ_NUMBER = (1ULL << 3),
 };
 enum {
+  BPF_F_TUNINFO_FLAGS = (1ULL << 4),
+};
+enum {
   BPF_F_INDEX_MASK = 0xffffffffULL,
   BPF_F_CURRENT_CPU = BPF_F_INDEX_MASK,
   BPF_F_CTXLEN_MASK = (0xfffffULL << 32),
@@ -595,6 +636,10 @@
 };
 #define __bpf_md_ptr(type,name) union { type name; __u64 : 64; \
 } __attribute__((aligned(8)))
+enum {
+  BPF_SKB_TSTAMP_UNSPEC,
+  BPF_SKB_TSTAMP_DELIVERY_MONO,
+};
 struct __sk_buff {
   __u32 len;
   __u32 pkt_type;
@@ -628,7 +673,8 @@
   __u32 gso_segs;
   __bpf_md_ptr(struct bpf_sock *, sk);
   __u32 gso_size;
-  __u32 : 32;
+  __u8 tstamp_type;
+  __u32 : 24;
   __u64 hwtstamp;
 };
 struct bpf_tunnel_key {
@@ -639,8 +685,15 @@
   };
   __u8 tunnel_tos;
   __u8 tunnel_ttl;
-  __u16 tunnel_ext;
+  union {
+    __u16 tunnel_ext;
+    __be16 tunnel_flags;
+  };
   __u32 tunnel_label;
+  union {
+    __u32 local_ipv4;
+    __u32 local_ipv6[4];
+  };
 };
 struct bpf_xfrm_state {
   __u32 reqid;
@@ -657,6 +710,7 @@
   BPF_DROP = 2,
   BPF_REDIRECT = 7,
   BPF_LWT_REROUTE = 128,
+  BPF_FLOW_DISSECTOR_CONTINUE = 129,
 };
 struct bpf_sock {
   __u32 bound_dev_if;
@@ -668,7 +722,8 @@
   __u32 src_ip4;
   __u32 src_ip6[4];
   __u32 src_port;
-  __u32 dst_port;
+  __be16 dst_port;
+  __u16 : 16;
   __u32 dst_ip4;
   __u32 dst_ip6[4];
   __u32 state;
@@ -818,6 +873,8 @@
   __u64 run_cnt;
   __u64 recursion_misses;
   __u32 verified_insns;
+  __u32 attach_btf_obj_id;
+  __u32 attach_btf_id;
 } __attribute__((aligned(8)));
 struct bpf_map_info {
   __u32 type;
@@ -871,6 +928,16 @@
           __u32 map_id;
         } map;
       };
+      union {
+        struct {
+          __u64 cgroup_id;
+          __u32 order;
+        } cgroup;
+        struct {
+          __u32 tid;
+          __u32 pid;
+        } task;
+      };
     } iter;
     struct {
       __u32 netns_ino;
@@ -1134,6 +1201,10 @@
   __u64 : 64;
   __u64 : 64;
 } __attribute__((aligned(8)));
+struct bpf_dynptr {
+  __u64 : 64;
+  __u64 : 64;
+} __attribute__((aligned(8)));
 struct bpf_sysctl {
   __u32 write;
   __u32 file_pos;
@@ -1160,7 +1231,8 @@
   __u32 protocol;
   __u32 remote_ip4;
   __u32 remote_ip6[4];
-  __u32 remote_port;
+  __be16 remote_port;
+  __u16 : 16;
   __u32 local_ip4;
   __u32 local_ip6[4];
   __u32 local_port;
@@ -1190,6 +1262,7 @@
   BPF_CORE_TYPE_SIZE = 9,
   BPF_CORE_ENUMVAL_EXISTS = 10,
   BPF_CORE_ENUMVAL_VALUE = 11,
+  BPF_CORE_TYPE_MATCHES = 12,
 };
 struct bpf_core_relo {
   __u32 insn_off;
diff --git a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/btf.h b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/btf.h
index fc57d3c..a1f68bf 100644
--- a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/btf.h
+++ b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/btf.h
@@ -65,6 +65,7 @@
   BTF_KIND_FLOAT = 16,
   BTF_KIND_DECL_TAG = 17,
   BTF_KIND_TYPE_TAG = 18,
+  BTF_KIND_ENUM64 = 19,
   NR_BTF_KINDS,
   BTF_KIND_MAX = NR_BTF_KINDS - 1,
 };
@@ -115,4 +116,9 @@
 struct btf_decl_tag {
   __s32 component_idx;
 };
+struct btf_enum64 {
+  __u32 name_off;
+  __u32 val_lo32;
+  __u32 val_hi32;
+};
 #endif
diff --git a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/btrfs.h b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/btrfs.h
index 08b96a3..506238f 100644
--- a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/btrfs.h
+++ b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/btrfs.h
@@ -59,7 +59,7 @@
   __u64 num_ref_copies;
   __u64 num_excl_copies;
   struct btrfs_qgroup_limit lim;
-  __u64 qgroups[0];
+  __u64 qgroups[];
 };
 struct btrfs_ioctl_qgroup_limit_args {
   __u64 qgroupid;
@@ -176,6 +176,7 @@
 #define BTRFS_FEATURE_COMPAT_RO_FREE_SPACE_TREE (1ULL << 0)
 #define BTRFS_FEATURE_COMPAT_RO_FREE_SPACE_TREE_VALID (1ULL << 1)
 #define BTRFS_FEATURE_COMPAT_RO_VERITY (1ULL << 2)
+#define BTRFS_FEATURE_COMPAT_RO_BLOCK_GROUP_TREE (1ULL << 3)
 #define BTRFS_FEATURE_INCOMPAT_MIXED_BACKREF (1ULL << 0)
 #define BTRFS_FEATURE_INCOMPAT_DEFAULT_SUBVOL (1ULL << 1)
 #define BTRFS_FEATURE_INCOMPAT_MIXED_GROUPS (1ULL << 2)
@@ -189,6 +190,7 @@
 #define BTRFS_FEATURE_INCOMPAT_METADATA_UUID (1ULL << 10)
 #define BTRFS_FEATURE_INCOMPAT_RAID1C34 (1ULL << 11)
 #define BTRFS_FEATURE_INCOMPAT_ZONED (1ULL << 12)
+#define BTRFS_FEATURE_INCOMPAT_EXTENT_TREE_V2 (1ULL << 13)
 struct btrfs_ioctl_feature_flags {
   __u64 compat_flags;
   __u64 compat_ro_flags;
@@ -303,7 +305,7 @@
 struct btrfs_ioctl_search_args_v2 {
   struct btrfs_ioctl_search_key key;
   __u64 buf_size;
-  __u64 buf[0];
+  __u64 buf[];
 };
 struct btrfs_ioctl_clone_range_args {
   __s64 src_fd;
@@ -334,7 +336,7 @@
   __u16 dest_count;
   __u16 reserved1;
   __u32 reserved2;
-  struct btrfs_ioctl_same_extent_info info[0];
+  struct btrfs_ioctl_same_extent_info info[];
 };
 struct btrfs_ioctl_space_info {
   __u64 flags;
@@ -344,14 +346,14 @@
 struct btrfs_ioctl_space_args {
   __u64 space_slots;
   __u64 total_spaces;
-  struct btrfs_ioctl_space_info spaces[0];
+  struct btrfs_ioctl_space_info spaces[];
 };
 struct btrfs_data_container {
   __u32 bytes_left;
   __u32 bytes_missing;
   __u32 elem_cnt;
   __u32 elem_missed;
-  __u64 val[0];
+  __u64 val[];
 };
 struct btrfs_ioctl_ino_path_args {
   __u64 inum;
@@ -421,7 +423,8 @@
 #define BTRFS_SEND_FLAG_OMIT_STREAM_HEADER 0x2
 #define BTRFS_SEND_FLAG_OMIT_END_CMD 0x4
 #define BTRFS_SEND_FLAG_VERSION 0x8
-#define BTRFS_SEND_FLAG_MASK (BTRFS_SEND_FLAG_NO_FILE_DATA | BTRFS_SEND_FLAG_OMIT_STREAM_HEADER | BTRFS_SEND_FLAG_OMIT_END_CMD | BTRFS_SEND_FLAG_VERSION)
+#define BTRFS_SEND_FLAG_COMPRESSED 0x10
+#define BTRFS_SEND_FLAG_MASK (BTRFS_SEND_FLAG_NO_FILE_DATA | BTRFS_SEND_FLAG_OMIT_STREAM_HEADER | BTRFS_SEND_FLAG_OMIT_END_CMD | BTRFS_SEND_FLAG_VERSION | BTRFS_SEND_FLAG_COMPRESSED)
 struct btrfs_ioctl_send_args {
   __s64 send_fd;
   __u64 clone_sources_count;
@@ -461,6 +464,29 @@
   __u8 num_items;
   __u8 align[7];
 };
+struct btrfs_ioctl_encoded_io_args {
+  const struct iovec __user * iov;
+  unsigned long iovcnt;
+  __s64 offset;
+  __u64 flags;
+  __u64 len;
+  __u64 unencoded_len;
+  __u64 unencoded_offset;
+  __u32 compression;
+  __u32 encryption;
+  __u8 reserved[64];
+};
+#define BTRFS_ENCODED_IO_COMPRESSION_NONE 0
+#define BTRFS_ENCODED_IO_COMPRESSION_ZLIB 1
+#define BTRFS_ENCODED_IO_COMPRESSION_ZSTD 2
+#define BTRFS_ENCODED_IO_COMPRESSION_LZO_4K 3
+#define BTRFS_ENCODED_IO_COMPRESSION_LZO_8K 4
+#define BTRFS_ENCODED_IO_COMPRESSION_LZO_16K 5
+#define BTRFS_ENCODED_IO_COMPRESSION_LZO_32K 6
+#define BTRFS_ENCODED_IO_COMPRESSION_LZO_64K 7
+#define BTRFS_ENCODED_IO_COMPRESSION_TYPES 8
+#define BTRFS_ENCODED_IO_ENCRYPTION_NONE 0
+#define BTRFS_ENCODED_IO_ENCRYPTION_TYPES 1
 enum btrfs_err_code {
   BTRFS_ERROR_DEV_RAID1_MIN_NOT_MET = 1,
   BTRFS_ERROR_DEV_RAID10_MIN_NOT_MET,
@@ -534,4 +560,6 @@
 #define BTRFS_IOC_GET_SUBVOL_ROOTREF _IOWR(BTRFS_IOCTL_MAGIC, 61, struct btrfs_ioctl_get_subvol_rootref_args)
 #define BTRFS_IOC_INO_LOOKUP_USER _IOWR(BTRFS_IOCTL_MAGIC, 62, struct btrfs_ioctl_ino_lookup_user_args)
 #define BTRFS_IOC_SNAP_DESTROY_V2 _IOW(BTRFS_IOCTL_MAGIC, 63, struct btrfs_ioctl_vol_args_v2)
+#define BTRFS_IOC_ENCODED_READ _IOR(BTRFS_IOCTL_MAGIC, 64, struct btrfs_ioctl_encoded_io_args)
+#define BTRFS_IOC_ENCODED_WRITE _IOW(BTRFS_IOCTL_MAGIC, 64, struct btrfs_ioctl_encoded_io_args)
 #endif
diff --git a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/btrfs_tree.h b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/btrfs_tree.h
index 0476733..6cd46dd 100644
--- a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/btrfs_tree.h
+++ b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/btrfs_tree.h
@@ -31,6 +31,7 @@
 #define BTRFS_QUOTA_TREE_OBJECTID 8ULL
 #define BTRFS_UUID_TREE_OBJECTID 9ULL
 #define BTRFS_FREE_SPACE_TREE_OBJECTID 10ULL
+#define BTRFS_BLOCK_GROUP_TREE_OBJECTID 11ULL
 #define BTRFS_DEV_STATS_OBJECTID 0ULL
 #define BTRFS_BALANCE_OBJECTID - 4ULL
 #define BTRFS_ORPHAN_OBJECTID - 5ULL
@@ -220,7 +221,7 @@
   __le64 parent_objectid;
   __le64 index;
   __le16 name_len;
-  __u8 name[0];
+  __u8 name[];
 } __attribute__((__packed__));
 struct btrfs_timespec {
   __le64 sec;
@@ -372,18 +373,6 @@
 #define BTRFS_BLOCK_GROUP_RAID1C3 (1ULL << 9)
 #define BTRFS_BLOCK_GROUP_RAID1C4 (1ULL << 10)
 #define BTRFS_BLOCK_GROUP_RESERVED (BTRFS_AVAIL_ALLOC_BIT_SINGLE | BTRFS_SPACE_INFO_GLOBAL_RSV)
-enum btrfs_raid_types {
-  BTRFS_RAID_RAID10,
-  BTRFS_RAID_RAID1,
-  BTRFS_RAID_DUP,
-  BTRFS_RAID_RAID0,
-  BTRFS_RAID_SINGLE,
-  BTRFS_RAID_RAID5,
-  BTRFS_RAID_RAID6,
-  BTRFS_RAID_RAID1C3,
-  BTRFS_RAID_RAID1C4,
-  BTRFS_NR_RAID_TYPES
-};
 #define BTRFS_BLOCK_GROUP_TYPE_MASK (BTRFS_BLOCK_GROUP_DATA | BTRFS_BLOCK_GROUP_SYSTEM | BTRFS_BLOCK_GROUP_METADATA)
 #define BTRFS_BLOCK_GROUP_PROFILE_MASK (BTRFS_BLOCK_GROUP_RAID0 | BTRFS_BLOCK_GROUP_RAID1 | BTRFS_BLOCK_GROUP_RAID1C3 | BTRFS_BLOCK_GROUP_RAID1C4 | BTRFS_BLOCK_GROUP_RAID5 | BTRFS_BLOCK_GROUP_RAID6 | BTRFS_BLOCK_GROUP_DUP | BTRFS_BLOCK_GROUP_RAID10)
 #define BTRFS_BLOCK_GROUP_RAID56_MASK (BTRFS_BLOCK_GROUP_RAID5 | BTRFS_BLOCK_GROUP_RAID6)
@@ -405,6 +394,7 @@
 #define BTRFS_QGROUP_STATUS_FLAG_ON (1ULL << 0)
 #define BTRFS_QGROUP_STATUS_FLAG_RESCAN (1ULL << 1)
 #define BTRFS_QGROUP_STATUS_FLAG_INCONSISTENT (1ULL << 2)
+#define BTRFS_QGROUP_STATUS_FLAGS_MASK (BTRFS_QGROUP_STATUS_FLAG_ON | BTRFS_QGROUP_STATUS_FLAG_RESCAN | BTRFS_QGROUP_STATUS_FLAG_INCONSISTENT)
 #define BTRFS_QGROUP_STATUS_VERSION 1
 struct btrfs_qgroup_status_item {
   __le64 version;
diff --git a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/cachefiles.h b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/cachefiles.h
new file mode 100644
index 0000000..f5a58a5
--- /dev/null
+++ b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/cachefiles.h
@@ -0,0 +1,48 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _LINUX_CACHEFILES_H
+#define _LINUX_CACHEFILES_H
+#include <linux/types.h>
+#include <linux/ioctl.h>
+#define CACHEFILES_MSG_MAX_SIZE 1024
+enum cachefiles_opcode {
+  CACHEFILES_OP_OPEN,
+  CACHEFILES_OP_CLOSE,
+  CACHEFILES_OP_READ,
+};
+struct cachefiles_msg {
+  __u32 msg_id;
+  __u32 opcode;
+  __u32 len;
+  __u32 object_id;
+  __u8 data[];
+};
+struct cachefiles_open {
+  __u32 volume_key_size;
+  __u32 cookie_key_size;
+  __u32 fd;
+  __u32 flags;
+  __u8 data[];
+};
+struct cachefiles_read {
+  __u64 off;
+  __u64 len;
+};
+#define CACHEFILES_IOC_READ_COMPLETE _IOW(0x98, 1, int)
+#endif
diff --git a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/can.h b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/can.h
index 30eeca2..1365dba 100644
--- a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/can.h
+++ b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/can.h
@@ -20,21 +20,29 @@
 #define _UAPI_CAN_H
 #include <linux/types.h>
 #include <linux/socket.h>
+#include <linux/stddef.h>
 #define CAN_EFF_FLAG 0x80000000U
 #define CAN_RTR_FLAG 0x40000000U
 #define CAN_ERR_FLAG 0x20000000U
 #define CAN_SFF_MASK 0x000007FFU
 #define CAN_EFF_MASK 0x1FFFFFFFU
 #define CAN_ERR_MASK 0x1FFFFFFFU
+#define CANXL_PRIO_MASK CAN_SFF_MASK
 typedef __u32 canid_t;
 #define CAN_SFF_ID_BITS 11
 #define CAN_EFF_ID_BITS 29
+#define CANXL_PRIO_BITS CAN_SFF_ID_BITS
 typedef __u32 can_err_mask_t;
 #define CAN_MAX_DLC 8
 #define CAN_MAX_RAW_DLC 15
 #define CAN_MAX_DLEN 8
 #define CANFD_MAX_DLC 15
 #define CANFD_MAX_DLEN 64
+#define CANXL_MIN_DLC 0
+#define CANXL_MAX_DLC 2047
+#define CANXL_MAX_DLC_MASK 0x07FF
+#define CANXL_MIN_DLEN 1
+#define CANXL_MAX_DLEN 2048
 struct can_frame {
   canid_t can_id;
   union {
@@ -57,8 +65,22 @@
   __u8 __res1;
   __u8 data[CANFD_MAX_DLEN] __attribute__((aligned(8)));
 };
+#define CANXL_XLF 0x80
+#define CANXL_SEC 0x01
+struct canxl_frame {
+  canid_t prio;
+  __u8 flags;
+  __u8 sdt;
+  __u16 len;
+  __u32 af;
+  __u8 data[CANXL_MAX_DLEN];
+};
 #define CAN_MTU (sizeof(struct can_frame))
 #define CANFD_MTU (sizeof(struct canfd_frame))
+#define CANXL_MTU (sizeof(struct canxl_frame))
+#define CANXL_HDR_SIZE (offsetof(struct canxl_frame, data))
+#define CANXL_MIN_MTU (CANXL_HDR_SIZE + 64)
+#define CANXL_MAX_MTU CANXL_MTU
 #define CAN_RAW 1
 #define CAN_BCM 2
 #define CAN_TP16 3
diff --git a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/can/bcm.h b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/can/bcm.h
index 42e0782..f5ab2c2 100644
--- a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/can/bcm.h
+++ b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/can/bcm.h
@@ -31,7 +31,7 @@
   struct bcm_timeval ival1, ival2;
   canid_t can_id;
   __u32 nframes;
-  struct can_frame frames[0];
+  struct can_frame frames[];
 };
 enum {
   TX_SETUP = 1,
diff --git a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/can/error.h b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/can/error.h
index 645373b..f585d2c 100644
--- a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/can/error.h
+++ b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/can/error.h
@@ -28,6 +28,7 @@
 #define CAN_ERR_BUSOFF 0x00000040U
 #define CAN_ERR_BUSERROR 0x00000080U
 #define CAN_ERR_RESTARTED 0x00000100U
+#define CAN_ERR_CNT 0x00000200U
 #define CAN_ERR_LOSTARB_UNSPEC 0x00
 #define CAN_ERR_CRTL_UNSPEC 0x00
 #define CAN_ERR_CRTL_RX_OVERFLOW 0x01
@@ -76,4 +77,7 @@
 #define CAN_ERR_TRX_CANL_SHORT_TO_VCC 0x60
 #define CAN_ERR_TRX_CANL_SHORT_TO_GND 0x70
 #define CAN_ERR_TRX_CANL_SHORT_TO_CANH 0x80
+#define CAN_ERROR_WARNING_THRESHOLD 96
+#define CAN_ERROR_PASSIVE_THRESHOLD 128
+#define CAN_BUS_OFF_THRESHOLD 256
 #endif
diff --git a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/can/isotp.h b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/can/isotp.h
index dd5e4f5..f51aa59 100644
--- a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/can/isotp.h
+++ b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/can/isotp.h
@@ -44,26 +44,28 @@
   __u8 tx_dl;
   __u8 tx_flags;
 };
-#define CAN_ISOTP_LISTEN_MODE 0x001
-#define CAN_ISOTP_EXTEND_ADDR 0x002
-#define CAN_ISOTP_TX_PADDING 0x004
-#define CAN_ISOTP_RX_PADDING 0x008
-#define CAN_ISOTP_CHK_PAD_LEN 0x010
-#define CAN_ISOTP_CHK_PAD_DATA 0x020
-#define CAN_ISOTP_HALF_DUPLEX 0x040
-#define CAN_ISOTP_FORCE_TXSTMIN 0x080
-#define CAN_ISOTP_FORCE_RXSTMIN 0x100
-#define CAN_ISOTP_RX_EXT_ADDR 0x200
-#define CAN_ISOTP_WAIT_TX_DONE 0x400
-#define CAN_ISOTP_SF_BROADCAST 0x800
+#define CAN_ISOTP_LISTEN_MODE 0x0001
+#define CAN_ISOTP_EXTEND_ADDR 0x0002
+#define CAN_ISOTP_TX_PADDING 0x0004
+#define CAN_ISOTP_RX_PADDING 0x0008
+#define CAN_ISOTP_CHK_PAD_LEN 0x0010
+#define CAN_ISOTP_CHK_PAD_DATA 0x0020
+#define CAN_ISOTP_HALF_DUPLEX 0x0040
+#define CAN_ISOTP_FORCE_TXSTMIN 0x0080
+#define CAN_ISOTP_FORCE_RXSTMIN 0x0100
+#define CAN_ISOTP_RX_EXT_ADDR 0x0200
+#define CAN_ISOTP_WAIT_TX_DONE 0x0400
+#define CAN_ISOTP_SF_BROADCAST 0x0800
+#define CAN_ISOTP_CF_BROADCAST 0x1000
 #define CAN_ISOTP_DEFAULT_FLAGS 0
 #define CAN_ISOTP_DEFAULT_EXT_ADDRESS 0x00
 #define CAN_ISOTP_DEFAULT_PAD_CONTENT 0xCC
-#define CAN_ISOTP_DEFAULT_FRAME_TXTIME 0
+#define CAN_ISOTP_DEFAULT_FRAME_TXTIME 50000
 #define CAN_ISOTP_DEFAULT_RECV_BS 0
 #define CAN_ISOTP_DEFAULT_RECV_STMIN 0x00
 #define CAN_ISOTP_DEFAULT_RECV_WFTMAX 0
 #define CAN_ISOTP_DEFAULT_LL_MTU CAN_MTU
 #define CAN_ISOTP_DEFAULT_LL_TX_DL CAN_MAX_DLEN
 #define CAN_ISOTP_DEFAULT_LL_TX_FLAGS 0
+#define CAN_ISOTP_FRAME_TXTIME_ZERO 0xFFFFFFFF
 #endif
diff --git a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/can/raw.h b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/can/raw.h
index a3bddb7..f8de179 100644
--- a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/can/raw.h
+++ b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/can/raw.h
@@ -30,5 +30,6 @@
   CAN_RAW_RECV_OWN_MSGS,
   CAN_RAW_FD_FRAMES,
   CAN_RAW_JOIN_FILTERS,
+  CAN_RAW_XL_FRAMES,
 };
 #endif
diff --git a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/capability.h b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/capability.h
index 958e6ab..c1b5dbf 100644
--- a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/capability.h
+++ b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/capability.h
@@ -111,5 +111,5 @@
 #define CAP_LAST_CAP CAP_CHECKPOINT_RESTORE
 #define cap_valid(x) ((x) >= 0 && (x) <= CAP_LAST_CAP)
 #define CAP_TO_INDEX(x) ((x) >> 5)
-#define CAP_TO_MASK(x) (1 << ((x) & 31))
+#define CAP_TO_MASK(x) (1U << ((x) & 31))
 #endif
diff --git a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/cec.h b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/cec.h
index b90dc49..3953fe3 100644
--- a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/cec.h
+++ b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/cec.h
@@ -340,6 +340,7 @@
 #define CEC_OP_FEAT_DEV_HAS_SET_AUDIO_RATE 0x08
 #define CEC_OP_FEAT_DEV_SINK_HAS_ARC_TX 0x04
 #define CEC_OP_FEAT_DEV_SOURCE_HAS_ARC_RX 0x02
+#define CEC_OP_FEAT_DEV_HAS_SET_AUDIO_VOLUME_LEVEL 0x01
 #define CEC_MSG_GIVE_FEATURES 0xa5
 #define CEC_MSG_DECK_CONTROL 0x42
 #define CEC_OP_DECK_CTL_MODE_SKIP_FWD 1
@@ -554,6 +555,7 @@
 #define CEC_MSG_SYSTEM_AUDIO_MODE_STATUS 0x7e
 #define CEC_OP_AUD_FMT_ID_CEA861 0
 #define CEC_OP_AUD_FMT_ID_CEA861_CXT 1
+#define CEC_MSG_SET_AUDIO_VOLUME_LEVEL 0x73
 #define CEC_MSG_SET_AUDIO_RATE 0x9a
 #define CEC_OP_AUD_RATE_OFF 0
 #define CEC_OP_AUD_RATE_WIDE_STD 1
diff --git a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/connector.h b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/connector.h
index adf3a7f..e3891e3 100644
--- a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/connector.h
+++ b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/connector.h
@@ -50,6 +50,6 @@
   __u32 ack;
   __u16 len;
   __u16 flags;
-  __u8 data[0];
+  __u8 data[];
 };
 #endif
diff --git a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/counter.h b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/counter.h
index 091e33d..f986365 100644
--- a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/counter.h
+++ b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/counter.h
@@ -45,6 +45,8 @@
   COUNTER_EVENT_OVERFLOW_UNDERFLOW,
   COUNTER_EVENT_THRESHOLD,
   COUNTER_EVENT_INDEX,
+  COUNTER_EVENT_CHANGE_OF_STATE,
+  COUNTER_EVENT_CAPTURE,
 };
 struct counter_watch {
   struct counter_component component;
@@ -90,4 +92,8 @@
   COUNTER_SYNAPSE_ACTION_FALLING_EDGE,
   COUNTER_SYNAPSE_ACTION_BOTH_EDGES,
 };
+enum counter_signal_polarity {
+  COUNTER_SIGNAL_POLARITY_POSITIVE,
+  COUNTER_SIGNAL_POLARITY_NEGATIVE,
+};
 #endif
diff --git a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/cxl_mem.h b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/cxl_mem.h
index 15e9e29..578cefd 100644
--- a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/cxl_mem.h
+++ b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/cxl_mem.h
@@ -38,8 +38,8 @@
   __u32 id;
   __u32 flags;
 #define CXL_MEM_COMMAND_FLAG_MASK GENMASK(0, 0)
-  __s32 size_in;
-  __s32 size_out;
+  __u32 size_in;
+  __u32 size_out;
 };
 struct cxl_mem_query_commands {
   __u32 n_commands;
@@ -58,12 +58,12 @@
   };
   __u32 retval;
   struct {
-    __s32 size;
+    __u32 size;
     __u32 rsvd;
     __u64 payload;
   } in;
   struct {
-    __s32 size;
+    __u32 size;
     __u32 rsvd;
     __u64 payload;
   } out;
diff --git a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/cycx_cfm.h b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/cycx_cfm.h
index 052de53..230b58d 100644
--- a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/cycx_cfm.h
+++ b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/cycx_cfm.h
@@ -53,7 +53,7 @@
   unsigned short reserved[6];
   char descr[CFM_DESCR_LEN];
   struct cycx_fw_info info;
-  unsigned char image[0];
+  unsigned char image[];
 };
 struct cycx_fw_header {
   unsigned long reset_size;
diff --git a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/devlink.h b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/devlink.h
index a809306..b2cdafa 100644
--- a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/devlink.h
+++ b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/devlink.h
@@ -103,6 +103,12 @@
   DEVLINK_CMD_RATE_SET,
   DEVLINK_CMD_RATE_NEW,
   DEVLINK_CMD_RATE_DEL,
+  DEVLINK_CMD_LINECARD_GET,
+  DEVLINK_CMD_LINECARD_SET,
+  DEVLINK_CMD_LINECARD_NEW,
+  DEVLINK_CMD_LINECARD_DEL,
+  DEVLINK_CMD_SELFTESTS_GET,
+  DEVLINK_CMD_SELFTESTS_RUN,
   __DEVLINK_CMD_MAX,
   DEVLINK_CMD_MAX = __DEVLINK_CMD_MAX - 1
 };
@@ -184,6 +190,25 @@
 #define DEVLINK_FLASH_OVERWRITE_SETTINGS _BITUL(DEVLINK_FLASH_OVERWRITE_SETTINGS_BIT)
 #define DEVLINK_FLASH_OVERWRITE_IDENTIFIERS _BITUL(DEVLINK_FLASH_OVERWRITE_IDENTIFIERS_BIT)
 #define DEVLINK_SUPPORTED_FLASH_OVERWRITE_SECTIONS (_BITUL(__DEVLINK_FLASH_OVERWRITE_MAX_BIT) - 1)
+enum devlink_attr_selftest_id {
+  DEVLINK_ATTR_SELFTEST_ID_UNSPEC,
+  DEVLINK_ATTR_SELFTEST_ID_FLASH,
+  __DEVLINK_ATTR_SELFTEST_ID_MAX,
+  DEVLINK_ATTR_SELFTEST_ID_MAX = __DEVLINK_ATTR_SELFTEST_ID_MAX - 1
+};
+enum devlink_selftest_status {
+  DEVLINK_SELFTEST_STATUS_SKIP,
+  DEVLINK_SELFTEST_STATUS_PASS,
+  DEVLINK_SELFTEST_STATUS_FAIL
+};
+enum devlink_attr_selftest_result {
+  DEVLINK_ATTR_SELFTEST_RESULT_UNSPEC,
+  DEVLINK_ATTR_SELFTEST_RESULT,
+  DEVLINK_ATTR_SELFTEST_RESULT_ID,
+  DEVLINK_ATTR_SELFTEST_RESULT_STATUS,
+  __DEVLINK_ATTR_SELFTEST_RESULT_MAX,
+  DEVLINK_ATTR_SELFTEST_RESULT_MAX = __DEVLINK_ATTR_SELFTEST_RESULT_MAX - 1
+};
 enum devlink_trap_action {
   DEVLINK_TRAP_ACTION_DROP,
   DEVLINK_TRAP_ACTION_TRAP,
@@ -212,6 +237,17 @@
   DEVLINK_RELOAD_LIMIT_MAX = __DEVLINK_RELOAD_LIMIT_MAX - 1
 };
 #define DEVLINK_RELOAD_LIMITS_VALID_MASK (_BITUL(__DEVLINK_RELOAD_LIMIT_MAX) - 1)
+enum devlink_linecard_state {
+  DEVLINK_LINECARD_STATE_UNSPEC,
+  DEVLINK_LINECARD_STATE_UNPROVISIONED,
+  DEVLINK_LINECARD_STATE_UNPROVISIONING,
+  DEVLINK_LINECARD_STATE_PROVISIONING,
+  DEVLINK_LINECARD_STATE_PROVISIONING_FAILED,
+  DEVLINK_LINECARD_STATE_PROVISIONED,
+  DEVLINK_LINECARD_STATE_ACTIVE,
+  __DEVLINK_LINECARD_STATE_MAX,
+  DEVLINK_LINECARD_STATE_MAX = __DEVLINK_LINECARD_STATE_MAX - 1
+};
 enum devlink_attr {
   DEVLINK_ATTR_UNSPEC,
   DEVLINK_ATTR_BUS_NAME,
@@ -384,6 +420,12 @@
   DEVLINK_ATTR_RATE_NODE_NAME,
   DEVLINK_ATTR_RATE_PARENT_NODE_NAME,
   DEVLINK_ATTR_REGION_MAX_SNAPSHOTS,
+  DEVLINK_ATTR_LINECARD_INDEX,
+  DEVLINK_ATTR_LINECARD_STATE,
+  DEVLINK_ATTR_LINECARD_TYPE,
+  DEVLINK_ATTR_LINECARD_SUPPORTED_TYPES,
+  DEVLINK_ATTR_NESTED_DEVLINK,
+  DEVLINK_ATTR_SELFTESTS,
   __DEVLINK_ATTR_MAX,
   DEVLINK_ATTR_MAX = __DEVLINK_ATTR_MAX - 1
 };
diff --git a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/dlm.h b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/dlm.h
index c75918f..499baad 100644
--- a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/dlm.h
+++ b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/dlm.h
@@ -31,6 +31,5 @@
   char * sb_lvbptr;
 };
 #define DLM_LSFL_TIMEWARN 0x00000002
-#define DLM_LSFL_FS 0x00000004
 #define DLM_LSFL_NEWEXCL 0x00000008
 #endif
diff --git a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/dm-ioctl.h b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/dm-ioctl.h
index 09f8a98..f0ff78c 100644
--- a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/dm-ioctl.h
+++ b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/dm-ioctl.h
@@ -48,23 +48,23 @@
 struct dm_target_deps {
   __u32 count;
   __u32 padding;
-  __u64 dev[0];
+  __u64 dev[];
 };
 struct dm_name_list {
   __u64 dev;
   __u32 next;
-  char name[0];
+  char name[];
 };
 #define DM_NAME_LIST_FLAG_HAS_UUID 1
 #define DM_NAME_LIST_FLAG_DOESNT_HAVE_UUID 2
 struct dm_target_versions {
   __u32 next;
   __u32 version[3];
-  char name[0];
+  char name[];
 };
 struct dm_target_msg {
   __u64 sector;
-  char message[0];
+  char message[];
 };
 enum {
   DM_VERSION_CMD = 0,
@@ -106,9 +106,9 @@
 #define DM_TARGET_MSG _IOWR(DM_IOCTL, DM_TARGET_MSG_CMD, struct dm_ioctl)
 #define DM_DEV_SET_GEOMETRY _IOWR(DM_IOCTL, DM_DEV_SET_GEOMETRY_CMD, struct dm_ioctl)
 #define DM_VERSION_MAJOR 4
-#define DM_VERSION_MINOR 45
+#define DM_VERSION_MINOR 47
 #define DM_VERSION_PATCHLEVEL 0
-#define DM_VERSION_EXTRA "-ioctl(2021-03-22)"
+#define DM_VERSION_EXTRA "-ioctl(2022-07-28)"
 #define DM_READONLY_FLAG (1 << 0)
 #define DM_SUSPEND_FLAG (1 << 1)
 #define DM_PERSISTENT_DEV_FLAG (1 << 3)
diff --git a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/dm-log-userspace.h b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/dm-log-userspace.h
index 4f0671b..37feee6 100644
--- a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/dm-log-userspace.h
+++ b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/dm-log-userspace.h
@@ -49,6 +49,6 @@
   __u32 seq;
   __u32 request_type;
   __u32 data_size;
-  char data[0];
+  char data[];
 };
 #endif
diff --git a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/dma-buf.h b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/dma-buf.h
index 221c20f..7462c15 100644
--- a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/dma-buf.h
+++ b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/dma-buf.h
@@ -29,9 +29,19 @@
 #define DMA_BUF_SYNC_END (1 << 2)
 #define DMA_BUF_SYNC_VALID_FLAGS_MASK (DMA_BUF_SYNC_RW | DMA_BUF_SYNC_END)
 #define DMA_BUF_NAME_LEN 32
+struct dma_buf_export_sync_file {
+  __u32 flags;
+  __s32 fd;
+};
+struct dma_buf_import_sync_file {
+  __u32 flags;
+  __s32 fd;
+};
 #define DMA_BUF_BASE 'b'
 #define DMA_BUF_IOCTL_SYNC _IOW(DMA_BUF_BASE, 0, struct dma_buf_sync)
 #define DMA_BUF_SET_NAME _IOW(DMA_BUF_BASE, 1, const char *)
-#define DMA_BUF_SET_NAME_A _IOW(DMA_BUF_BASE, 1, u32)
-#define DMA_BUF_SET_NAME_B _IOW(DMA_BUF_BASE, 1, u64)
+#define DMA_BUF_SET_NAME_A _IOW(DMA_BUF_BASE, 1, __u32)
+#define DMA_BUF_SET_NAME_B _IOW(DMA_BUF_BASE, 1, __u64)
+#define DMA_BUF_IOCTL_EXPORT_SYNC_FILE _IOWR(DMA_BUF_BASE, 2, struct dma_buf_export_sync_file)
+#define DMA_BUF_IOCTL_IMPORT_SYNC_FILE _IOW(DMA_BUF_BASE, 3, struct dma_buf_import_sync_file)
 #endif
diff --git a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/dn.h b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/dn.h
deleted file mode 100644
index 621f60f..0000000
--- a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/dn.h
+++ /dev/null
@@ -1,114 +0,0 @@
-/****************************************************************************
- ****************************************************************************
- ***
- ***   This header was automatically generated from a Linux kernel header
- ***   of the same name, to make information necessary for userspace to
- ***   call into the kernel available to libc.  It contains only constants,
- ***   structures, and macros generated from the original header, and thus,
- ***   contains no copyrightable information.
- ***
- ***   To edit the content of this header, modify the corresponding
- ***   source file (e.g. under external/kernel-headers/original/) then
- ***   run bionic/libc/kernel/tools/update_all.py
- ***
- ***   Any manual change here will be lost the next time this script will
- ***   be run. You've been warned!
- ***
- ****************************************************************************
- ****************************************************************************/
-#ifndef _LINUX_DN_H
-#define _LINUX_DN_H
-#include <linux/ioctl.h>
-#include <linux/types.h>
-#include <linux/if_ether.h>
-#define DNPROTO_NSP 2
-#define DNPROTO_ROU 3
-#define DNPROTO_NML 4
-#define DNPROTO_EVL 5
-#define DNPROTO_EVR 6
-#define DNPROTO_NSPT 7
-#define DN_ADDL 2
-#define DN_MAXADDL 2
-#define DN_MAXOPTL 16
-#define DN_MAXOBJL 16
-#define DN_MAXACCL 40
-#define DN_MAXALIASL 128
-#define DN_MAXNODEL 256
-#define DNBUFSIZE 65023
-#define SO_CONDATA 1
-#define SO_CONACCESS 2
-#define SO_PROXYUSR 3
-#define SO_LINKINFO 7
-#define DSO_CONDATA 1
-#define DSO_DISDATA 10
-#define DSO_CONACCESS 2
-#define DSO_ACCEPTMODE 4
-#define DSO_CONACCEPT 5
-#define DSO_CONREJECT 6
-#define DSO_LINKINFO 7
-#define DSO_STREAM 8
-#define DSO_SEQPACKET 9
-#define DSO_MAXWINDOW 11
-#define DSO_NODELAY 12
-#define DSO_CORK 13
-#define DSO_SERVICES 14
-#define DSO_INFO 15
-#define DSO_MAX 15
-#define LL_INACTIVE 0
-#define LL_CONNECTING 1
-#define LL_RUNNING 2
-#define LL_DISCONNECTING 3
-#define ACC_IMMED 0
-#define ACC_DEFER 1
-#define SDF_WILD 1
-#define SDF_PROXY 2
-#define SDF_UICPROXY 4
-struct dn_naddr {
-  __le16 a_len;
-  __u8 a_addr[DN_MAXADDL];
-};
-struct sockaddr_dn {
-  __u16 sdn_family;
-  __u8 sdn_flags;
-  __u8 sdn_objnum;
-  __le16 sdn_objnamel;
-  __u8 sdn_objname[DN_MAXOBJL];
-  struct dn_naddr sdn_add;
-};
-#define sdn_nodeaddrl sdn_add.a_len
-#define sdn_nodeaddr sdn_add.a_addr
-struct optdata_dn {
-  __le16 opt_status;
-#define opt_sts opt_status
-  __le16 opt_optl;
-  __u8 opt_data[16];
-};
-struct accessdata_dn {
-  __u8 acc_accl;
-  __u8 acc_acc[DN_MAXACCL];
-  __u8 acc_passl;
-  __u8 acc_pass[DN_MAXACCL];
-  __u8 acc_userl;
-  __u8 acc_user[DN_MAXACCL];
-};
-struct linkinfo_dn {
-  __u16 idn_segsize;
-  __u8 idn_linkstate;
-};
-union etheraddress {
-  __u8 dne_addr[ETH_ALEN];
-  struct {
-    __u8 dne_hiord[4];
-    __u8 dne_nodeaddr[2];
-  } dne_remote;
-};
-struct dn_addr {
-  __le16 dna_family;
-  union etheraddress dna_netaddr;
-};
-#define DECNET_IOCTL_BASE 0x89
-#define SIOCSNETADDR _IOW(DECNET_IOCTL_BASE, 0xe0, struct dn_naddr)
-#define SIOCGNETADDR _IOR(DECNET_IOCTL_BASE, 0xe1, struct dn_naddr)
-#define OSIOCSNETADDR _IOW(DECNET_IOCTL_BASE, 0xe0, int)
-#define OSIOCGNETADDR _IOR(DECNET_IOCTL_BASE, 0xe1, int)
-#endif
diff --git a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/dns_resolver.h b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/dns_resolver.h
index 21cb5c0..e7113d0 100644
--- a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/dns_resolver.h
+++ b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/dns_resolver.h
@@ -55,13 +55,13 @@
   __u8 zero;
   __u8 content;
   __u8 version;
-} __packed;
+} __attribute__((__packed__));
 struct dns_server_list_v1_header {
   struct dns_payload_header hdr;
   __u8 source;
   __u8 status;
   __u8 nr_servers;
-} __packed;
+} __attribute__((__packed__));
 struct dns_server_list_v1_server {
   __u16 name_len;
   __u16 priority;
@@ -71,8 +71,8 @@
   __u8 status;
   __u8 protocol;
   __u8 nr_addrs;
-} __packed;
+} __attribute__((__packed__));
 struct dns_server_list_v1_address {
   __u8 address_type;
-} __packed;
+} __attribute__((__packed__));
 #endif
diff --git a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/dw100.h b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/dw100.h
new file mode 100644
index 0000000..13d8487
--- /dev/null
+++ b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/dw100.h
@@ -0,0 +1,23 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef __UAPI_DW100_H__
+#define __UAPI_DW100_H__
+#include <linux/v4l2-controls.h>
+#define V4L2_CID_DW100_DEWARPING_16x16_VERTEX_MAP (V4L2_CID_USER_DW100_BASE + 1)
+#endif
diff --git a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/elf-em.h b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/elf-em.h
index d1ed1f6..92da93d 100644
--- a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/elf-em.h
+++ b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/elf-em.h
@@ -61,6 +61,7 @@
 #define EM_RISCV 243
 #define EM_BPF 247
 #define EM_CSKY 252
+#define EM_LOONGARCH 258
 #define EM_FRV 0x5441
 #define EM_ALPHA 0x9026
 #define EM_CYGNUS_M32R 0x9041
diff --git a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/elf.h b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/elf.h
index 7655f12..28c8426 100644
--- a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/elf.h
+++ b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/elf.h
@@ -45,9 +45,11 @@
 #define PT_HIOS 0x6fffffff
 #define PT_LOPROC 0x70000000
 #define PT_HIPROC 0x7fffffff
-#define PT_GNU_EH_FRAME 0x6474e550
-#define PT_GNU_PROPERTY 0x6474e553
+#define PT_GNU_EH_FRAME (PT_LOOS + 0x474e550)
 #define PT_GNU_STACK (PT_LOOS + 0x474e551)
+#define PT_GNU_RELRO (PT_LOOS + 0x474e552)
+#define PT_GNU_PROPERTY (PT_LOOS + 0x474e553)
+#define PT_AARCH64_MEMTAG_MTE (PT_LOPROC + 0x2)
 #define PN_XNUM 0xffff
 #define ET_NONE 0
 #define ET_REL 1
@@ -110,7 +112,7 @@
 #define STT_COMMON 5
 #define STT_TLS 6
 #define ELF_ST_BIND(x) ((x) >> 4)
-#define ELF_ST_TYPE(x) (((unsigned int) x) & 0xf)
+#define ELF_ST_TYPE(x) ((x) & 0xf)
 #define ELF32_ST_BIND(x) ELF_ST_BIND(x)
 #define ELF32_ST_TYPE(x) ELF_ST_TYPE(x)
 #define ELF64_ST_BIND(x) ELF_ST_BIND(x)
@@ -350,6 +352,7 @@
 #define NT_S390_GS_CB 0x30b
 #define NT_S390_GS_BC 0x30c
 #define NT_S390_RI_CB 0x30d
+#define NT_S390_PV_CPU_DATA 0x30e
 #define NT_ARM_VFP 0x400
 #define NT_ARM_TLS 0x401
 #define NT_ARM_HW_BREAK 0x402
@@ -361,11 +364,18 @@
 #define NT_ARM_PACG_KEYS 0x408
 #define NT_ARM_TAGGED_ADDR_CTRL 0x409
 #define NT_ARM_PAC_ENABLED_KEYS 0x40a
+#define NT_ARM_SSVE 0x40b
+#define NT_ARM_ZA 0x40c
 #define NT_ARC_V2 0x600
 #define NT_VMCOREDD 0x700
 #define NT_MIPS_DSP 0x800
 #define NT_MIPS_FP_MODE 0x801
 #define NT_MIPS_MSA 0x802
+#define NT_LOONGARCH_CPUCFG 0xa00
+#define NT_LOONGARCH_CSR 0xa01
+#define NT_LOONGARCH_LSX 0xa02
+#define NT_LOONGARCH_LASX 0xa03
+#define NT_LOONGARCH_LBT 0xa04
 #define NT_GNU_PROPERTY_TYPE_0 5
 typedef struct elf32_note {
   Elf32_Word n_namesz;
diff --git a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/ethtool.h b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/ethtool.h
index 741ea2a..8bdd622 100644
--- a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/ethtool.h
+++ b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/ethtool.h
@@ -98,7 +98,7 @@
   __u32 id;
   __u32 type_id;
   __u32 len;
-  void * data[0];
+  void * data[];
 };
 #define DOWNSHIFT_DEV_DEFAULT_COUNT 0xff
 #define DOWNSHIFT_DEV_DISABLE 0
@@ -118,14 +118,14 @@
   __u32 cmd;
   __u32 version;
   __u32 len;
-  __u8 data[0];
+  __u8 data[];
 };
 struct ethtool_eeprom {
   __u32 cmd;
   __u32 magic;
   __u32 offset;
   __u32 len;
-  __u8 data[0];
+  __u8 data[];
 };
 struct ethtool_eee {
   __u32 cmd;
@@ -277,17 +277,31 @@
   ETHTOOL_MODULE_POWER_MODE_LOW = 1,
   ETHTOOL_MODULE_POWER_MODE_HIGH,
 };
+enum ethtool_podl_pse_admin_state {
+  ETHTOOL_PODL_PSE_ADMIN_STATE_UNKNOWN = 1,
+  ETHTOOL_PODL_PSE_ADMIN_STATE_DISABLED,
+  ETHTOOL_PODL_PSE_ADMIN_STATE_ENABLED,
+};
+enum ethtool_podl_pse_pw_d_status {
+  ETHTOOL_PODL_PSE_PW_D_STATUS_UNKNOWN = 1,
+  ETHTOOL_PODL_PSE_PW_D_STATUS_DISABLED,
+  ETHTOOL_PODL_PSE_PW_D_STATUS_SEARCHING,
+  ETHTOOL_PODL_PSE_PW_D_STATUS_DELIVERING,
+  ETHTOOL_PODL_PSE_PW_D_STATUS_SLEEP,
+  ETHTOOL_PODL_PSE_PW_D_STATUS_IDLE,
+  ETHTOOL_PODL_PSE_PW_D_STATUS_ERROR,
+};
 struct ethtool_gstrings {
   __u32 cmd;
   __u32 string_set;
   __u32 len;
-  __u8 data[0];
+  __u8 data[];
 };
 struct ethtool_sset_info {
   __u32 cmd;
   __u32 reserved;
   __u64 sset_mask;
-  __u32 data[0];
+  __u32 data[];
 };
 enum ethtool_test_flags {
   ETH_TEST_FL_OFFLINE = (1 << 0),
@@ -300,17 +314,17 @@
   __u32 flags;
   __u32 reserved;
   __u32 len;
-  __u64 data[0];
+  __u64 data[];
 };
 struct ethtool_stats {
   __u32 cmd;
   __u32 n_stats;
-  __u64 data[0];
+  __u64 data[];
 };
 struct ethtool_perm_addr {
   __u32 cmd;
   __u32 size;
-  __u8 data[0];
+  __u8 data[];
 };
 enum ethtool_flags {
   ETH_FLAG_TXVLAN = (1 << 7),
@@ -410,7 +424,7 @@
 struct ethtool_rxfh_indir {
   __u32 cmd;
   __u32 size;
-  __u32 ring_index[0];
+  __u32 ring_index[];
 };
 struct ethtool_rxfh {
   __u32 cmd;
@@ -420,7 +434,7 @@
   __u8 hfunc;
   __u8 rsvd8[3];
   __u32 rsvd32;
-  __u32 rss_config[0];
+  __u32 rss_config[];
 };
 #define ETH_RXFH_CONTEXT_ALLOC 0xffffffff
 #define ETH_RXFH_INDIR_NO_CHANGE 0xffffffff
@@ -462,7 +476,7 @@
   __u32 version;
   __u32 flag;
   __u32 len;
-  __u8 data[0];
+  __u8 data[];
 };
 #define ETH_FW_DUMP_DISABLE 0
 struct ethtool_get_features_block {
@@ -474,7 +488,7 @@
 struct ethtool_gfeatures {
   __u32 cmd;
   __u32 size;
-  struct ethtool_get_features_block features[0];
+  struct ethtool_get_features_block features[];
 };
 struct ethtool_set_features_block {
   __u32 valid;
@@ -483,7 +497,7 @@
 struct ethtool_sfeatures {
   __u32 cmd;
   __u32 size;
-  struct ethtool_set_features_block features[0];
+  struct ethtool_set_features_block features[];
 };
 struct ethtool_ts_info {
   __u32 cmd;
@@ -704,6 +718,7 @@
   ETHTOOL_LINK_MODE_400000baseCR4_Full_BIT = 89,
   ETHTOOL_LINK_MODE_100baseFX_Half_BIT = 90,
   ETHTOOL_LINK_MODE_100baseFX_Full_BIT = 91,
+  ETHTOOL_LINK_MODE_10baseT1L_Full_BIT = 92,
   __ETHTOOL_LINK_MODE_MASK_NBITS
 };
 #define __ETHTOOL_LINK_MODE_LEGACY_MASK(base_name) (1UL << (ETHTOOL_LINK_MODE_ ##base_name ##_BIT))
@@ -799,6 +814,10 @@
 #define MASTER_SLAVE_STATE_MASTER 2
 #define MASTER_SLAVE_STATE_SLAVE 3
 #define MASTER_SLAVE_STATE_ERR 4
+#define RATE_MATCH_NONE 0
+#define RATE_MATCH_PAUSE 1
+#define RATE_MATCH_CRS 2
+#define RATE_MATCH_OPEN_LOOP 3
 #define PORT_TP 0x00
 #define PORT_AUI 0x01
 #define PORT_MII 0x02
@@ -900,8 +919,8 @@
   __u8 transceiver;
   __u8 master_slave_cfg;
   __u8 master_slave_state;
-  __u8 reserved1[1];
+  __u8 rate_matching;
   __u32 reserved[7];
-  __u32 link_mode_masks[0];
+  __u32 link_mode_masks[];
 };
 #endif
diff --git a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/ethtool_netlink.h b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/ethtool_netlink.h
index 7dcae22..08c6936 100644
--- a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/ethtool_netlink.h
+++ b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/ethtool_netlink.h
@@ -56,6 +56,8 @@
   ETHTOOL_MSG_PHC_VCLOCKS_GET,
   ETHTOOL_MSG_MODULE_GET,
   ETHTOOL_MSG_MODULE_SET,
+  ETHTOOL_MSG_PSE_GET,
+  ETHTOOL_MSG_PSE_SET,
   __ETHTOOL_MSG_USER_CNT,
   ETHTOOL_MSG_USER_MAX = __ETHTOOL_MSG_USER_CNT - 1
 };
@@ -97,6 +99,7 @@
   ETHTOOL_MSG_PHC_VCLOCKS_GET_REPLY,
   ETHTOOL_MSG_MODULE_GET_REPLY,
   ETHTOOL_MSG_MODULE_NTF,
+  ETHTOOL_MSG_PSE_GET_REPLY,
   __ETHTOOL_MSG_KERNEL_CNT,
   ETHTOOL_MSG_KERNEL_MAX = __ETHTOOL_MSG_KERNEL_CNT - 1
 };
@@ -193,6 +196,7 @@
   ETHTOOL_A_LINKMODES_MASTER_SLAVE_CFG,
   ETHTOOL_A_LINKMODES_MASTER_SLAVE_STATE,
   ETHTOOL_A_LINKMODES_LANES,
+  ETHTOOL_A_LINKMODES_RATE_MATCHING,
   __ETHTOOL_A_LINKMODES_CNT,
   ETHTOOL_A_LINKMODES_MAX = __ETHTOOL_A_LINKMODES_CNT - 1
 };
@@ -240,6 +244,11 @@
   ETHTOOL_A_PRIVFLAGS_MAX = __ETHTOOL_A_PRIVFLAGS_CNT - 1
 };
 enum {
+  ETHTOOL_TCP_DATA_SPLIT_UNKNOWN = 0,
+  ETHTOOL_TCP_DATA_SPLIT_DISABLED,
+  ETHTOOL_TCP_DATA_SPLIT_ENABLED,
+};
+enum {
   ETHTOOL_A_RINGS_UNSPEC,
   ETHTOOL_A_RINGS_HEADER,
   ETHTOOL_A_RINGS_RX_MAX,
@@ -251,6 +260,9 @@
   ETHTOOL_A_RINGS_RX_JUMBO,
   ETHTOOL_A_RINGS_TX,
   ETHTOOL_A_RINGS_RX_BUF_LEN,
+  ETHTOOL_A_RINGS_TCP_DATA_SPLIT,
+  ETHTOOL_A_RINGS_CQE_SIZE,
+  ETHTOOL_A_RINGS_TX_PUSH,
   __ETHTOOL_A_RINGS_CNT,
   ETHTOOL_A_RINGS_MAX = (__ETHTOOL_A_RINGS_CNT - 1)
 };
@@ -601,6 +613,15 @@
   __ETHTOOL_A_MODULE_CNT,
   ETHTOOL_A_MODULE_MAX = (__ETHTOOL_A_MODULE_CNT - 1)
 };
+enum {
+  ETHTOOL_A_PSE_UNSPEC,
+  ETHTOOL_A_PSE_HEADER,
+  ETHTOOL_A_PODL_PSE_ADMIN_STATE,
+  ETHTOOL_A_PODL_PSE_ADMIN_CONTROL,
+  ETHTOOL_A_PODL_PSE_PW_D_STATUS,
+  __ETHTOOL_A_PSE_CNT,
+  ETHTOOL_A_PSE_MAX = (__ETHTOOL_A_PSE_CNT - 1)
+};
 #define ETHTOOL_GENL_NAME "ethtool"
 #define ETHTOOL_GENL_VERSION 1
 #define ETHTOOL_MCGRP_MONITOR_NAME "monitor"
diff --git a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/f2fs.h b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/f2fs.h
index 76da8f6..3fcd444 100644
--- a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/f2fs.h
+++ b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/f2fs.h
@@ -25,7 +25,7 @@
 #define F2FS_IOC_COMMIT_ATOMIC_WRITE _IO(F2FS_IOCTL_MAGIC, 2)
 #define F2FS_IOC_START_VOLATILE_WRITE _IO(F2FS_IOCTL_MAGIC, 3)
 #define F2FS_IOC_RELEASE_VOLATILE_WRITE _IO(F2FS_IOCTL_MAGIC, 4)
-#define F2FS_IOC_ABORT_VOLATILE_WRITE _IO(F2FS_IOCTL_MAGIC, 5)
+#define F2FS_IOC_ABORT_ATOMIC_WRITE _IO(F2FS_IOCTL_MAGIC, 5)
 #define F2FS_IOC_GARBAGE_COLLECT _IOW(F2FS_IOCTL_MAGIC, 6, __u32)
 #define F2FS_IOC_WRITE_CHECKPOINT _IO(F2FS_IOCTL_MAGIC, 7)
 #define F2FS_IOC_DEFRAGMENT _IOWR(F2FS_IOCTL_MAGIC, 8, struct f2fs_defragment)
diff --git a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/fanotify.h b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/fanotify.h
index 6249292..9815a64 100644
--- a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/fanotify.h
+++ b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/fanotify.h
@@ -67,9 +67,12 @@
 #define FAN_MARK_IGNORED_MASK 0x00000020
 #define FAN_MARK_IGNORED_SURV_MODIFY 0x00000040
 #define FAN_MARK_FLUSH 0x00000080
+#define FAN_MARK_EVICTABLE 0x00000200
+#define FAN_MARK_IGNORE 0x00000400
 #define FAN_MARK_INODE 0x00000000
 #define FAN_MARK_MOUNT 0x00000010
 #define FAN_MARK_FILESYSTEM 0x00000100
+#define FAN_MARK_IGNORE_SURV (FAN_MARK_IGNORE | FAN_MARK_IGNORED_SURV_MODIFY)
 #define FAN_ALL_MARK_FLAGS (FAN_MARK_ADD | FAN_MARK_REMOVE | FAN_MARK_DONT_FOLLOW | FAN_MARK_ONLYDIR | FAN_MARK_MOUNT | FAN_MARK_IGNORED_MASK | FAN_MARK_IGNORED_SURV_MODIFY | FAN_MARK_FLUSH)
 #define FAN_ALL_EVENTS (FAN_ACCESS | FAN_MODIFY | FAN_CLOSE | FAN_OPEN)
 #define FAN_ALL_PERM_EVENTS (FAN_OPEN_PERM | FAN_ACCESS_PERM)
@@ -99,7 +102,7 @@
 struct fanotify_event_info_fid {
   struct fanotify_event_info_header hdr;
   __kernel_fsid_t fsid;
-  unsigned char handle[0];
+  unsigned char handle[];
 };
 struct fanotify_event_info_pidfd {
   struct fanotify_event_info_header hdr;
diff --git a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/fiemap.h b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/fiemap.h
index 4310786..a67a5fe 100644
--- a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/fiemap.h
+++ b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/fiemap.h
@@ -34,7 +34,7 @@
   __u32 fm_mapped_extents;
   __u32 fm_extent_count;
   __u32 fm_reserved;
-  struct fiemap_extent fm_extents[0];
+  struct fiemap_extent fm_extents[];
 };
 #define FIEMAP_MAX_OFFSET (~0ULL)
 #define FIEMAP_FLAG_SYNC 0x00000001
diff --git a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/firewire-cdev.h b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/firewire-cdev.h
index 92957bc..a54191c 100644
--- a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/firewire-cdev.h
+++ b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/firewire-cdev.h
@@ -50,7 +50,7 @@
   __u32 type;
   __u32 rcode;
   __u32 length;
-  __u32 data[0];
+  __u32 data[];
 };
 struct fw_cdev_event_request {
   __u64 closure;
@@ -59,7 +59,7 @@
   __u64 offset;
   __u32 handle;
   __u32 length;
-  __u32 data[0];
+  __u32 data[];
 };
 struct fw_cdev_event_request2 {
   __u64 closure;
@@ -72,14 +72,14 @@
   __u32 generation;
   __u32 handle;
   __u32 length;
-  __u32 data[0];
+  __u32 data[];
 };
 struct fw_cdev_event_iso_interrupt {
   __u64 closure;
   __u32 type;
   __u32 cycle;
   __u32 header_length;
-  __u32 header[0];
+  __u32 header[];
 };
 struct fw_cdev_event_iso_interrupt_mc {
   __u64 closure;
@@ -98,7 +98,7 @@
   __u32 type;
   __u32 rcode;
   __u32 length;
-  __u32 data[0];
+  __u32 data[];
 };
 union fw_cdev_event {
   struct fw_cdev_event_common common;
@@ -207,7 +207,7 @@
 #define FW_CDEV_ISO_HEADER_LENGTH(v) ((v) << 24)
 struct fw_cdev_iso_packet {
   __u32 control;
-  __u32 header[0];
+  __u32 header[];
 };
 struct fw_cdev_queue_iso {
   __u64 packets;
diff --git a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/fs.h b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/fs.h
index 3bb4183..96f9181 100644
--- a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/fs.h
+++ b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/fs.h
@@ -63,7 +63,7 @@
   __u16 dest_count;
   __u16 reserved1;
   __u32 reserved2;
-  struct file_dedupe_range_info info[0];
+  struct file_dedupe_range_info info[];
 };
 struct files_stat_struct {
   unsigned long nr_files;
diff --git a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/fscrypt.h b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/fscrypt.h
index ca42eb3..e6b5358 100644
--- a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/fscrypt.h
+++ b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/fscrypt.h
@@ -33,6 +33,7 @@
 #define FSCRYPT_MODE_AES_128_CBC 5
 #define FSCRYPT_MODE_AES_128_CTS 6
 #define FSCRYPT_MODE_ADIANTUM 9
+#define FSCRYPT_MODE_AES_256_HCTR2 10
 #define FSCRYPT_POLICY_V1 0
 #define FSCRYPT_KEY_DESCRIPTOR_SIZE 8
 struct fscrypt_policy_v1 {
diff --git a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/fsi.h b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/fsi.h
index fc88464..b080c21 100644
--- a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/fsi.h
+++ b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/fsi.h
@@ -48,4 +48,5 @@
 #define FSI_SCOM_READ _IOWR('s', 0x01, struct scom_access)
 #define FSI_SCOM_WRITE _IOWR('s', 0x02, struct scom_access)
 #define FSI_SCOM_RESET _IOW('s', 0x03, __u32)
+#define FSI_SBEFIFO_READ_TIMEOUT_SECONDS _IOW('s', 0x00, __u32)
 #endif
diff --git a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/fuse.h b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/fuse.h
index 144e960..ae667eb 100644
--- a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/fuse.h
+++ b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/fuse.h
@@ -20,7 +20,7 @@
 #define _LINUX_FUSE_H
 #include <stdint.h>
 #define FUSE_KERNEL_VERSION 7
-#define FUSE_KERNEL_MINOR_VERSION 36
+#define FUSE_KERNEL_MINOR_VERSION 37
 #define FUSE_ROOT_ID 1
 struct fuse_attr {
   uint64_t ino;
@@ -187,6 +187,7 @@
   FUSE_SETUPMAPPING = 48,
   FUSE_REMOVEMAPPING = 49,
   FUSE_SYNCFS = 50,
+  FUSE_TMPFILE = 51,
   FUSE_CANONICAL_PATH = 2016,
   CUSE_INIT = 4096,
   CUSE_INIT_BSWAP_RESERVED = 1048576,
diff --git a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/genetlink.h b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/genetlink.h
index 2e2137d..0f86331 100644
--- a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/genetlink.h
+++ b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/genetlink.h
@@ -81,6 +81,7 @@
   CTRL_ATTR_MCAST_GRP_ID,
   __CTRL_ATTR_MCAST_GRP_MAX,
 };
+#define CTRL_ATTR_MCAST_GRP_MAX (__CTRL_ATTR_MCAST_GRP_MAX - 1)
 enum {
   CTRL_ATTR_POLICY_UNSPEC,
   CTRL_ATTR_POLICY_DO,
@@ -88,5 +89,5 @@
   __CTRL_ATTR_POLICY_DUMP_MAX,
   CTRL_ATTR_POLICY_DUMP_MAX = __CTRL_ATTR_POLICY_DUMP_MAX - 1
 };
-#define CTRL_ATTR_MCAST_GRP_MAX (__CTRL_ATTR_MCAST_GRP_MAX - 1)
+#define CTRL_ATTR_POLICY_MAX (__CTRL_ATTR_POLICY_DUMP_MAX - 1)
 #endif
diff --git a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/gpio.h b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/gpio.h
index 7e010d9..e760321 100644
--- a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/gpio.h
+++ b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/gpio.h
@@ -42,6 +42,7 @@
   GPIO_V2_LINE_FLAG_BIAS_PULL_DOWN = _BITULL(9),
   GPIO_V2_LINE_FLAG_BIAS_DISABLED = _BITULL(10),
   GPIO_V2_LINE_FLAG_EVENT_CLOCK_REALTIME = _BITULL(11),
+  GPIO_V2_LINE_FLAG_EVENT_CLOCK_HTE = _BITULL(12),
 };
 struct gpio_v2_line_values {
   __aligned_u64 bits;
diff --git a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/gtp.h b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/gtp.h
index 3b9416e..20bc3d6 100644
--- a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/gtp.h
+++ b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/gtp.h
@@ -23,6 +23,7 @@
   GTP_CMD_NEWPDP,
   GTP_CMD_DELPDP,
   GTP_CMD_GETPDP,
+  GTP_CMD_ECHOREQ,
   GTP_CMD_MAX,
 };
 enum gtp_version {
diff --git a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/hid.h b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/hid.h
index ce93cd7..37ab462 100644
--- a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/hid.h
+++ b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/hid.h
@@ -22,12 +22,20 @@
 #define USB_INTERFACE_SUBCLASS_BOOT 1
 #define USB_INTERFACE_PROTOCOL_KEYBOARD 1
 #define USB_INTERFACE_PROTOCOL_MOUSE 2
-#define HID_REQ_GET_REPORT 0x01
-#define HID_REQ_GET_IDLE 0x02
-#define HID_REQ_GET_PROTOCOL 0x03
-#define HID_REQ_SET_REPORT 0x09
-#define HID_REQ_SET_IDLE 0x0A
-#define HID_REQ_SET_PROTOCOL 0x0B
+enum hid_report_type {
+  HID_INPUT_REPORT = 0,
+  HID_OUTPUT_REPORT = 1,
+  HID_FEATURE_REPORT = 2,
+  HID_REPORT_TYPES,
+};
+enum hid_class_request {
+  HID_REQ_GET_REPORT = 0x01,
+  HID_REQ_GET_IDLE = 0x02,
+  HID_REQ_GET_PROTOCOL = 0x03,
+  HID_REQ_SET_REPORT = 0x09,
+  HID_REQ_SET_IDLE = 0x0A,
+  HID_REQ_SET_PROTOCOL = 0x0B,
+};
 #define HID_DT_HID (USB_TYPE_CLASS | 0x01)
 #define HID_DT_REPORT (USB_TYPE_CLASS | 0x02)
 #define HID_DT_PHYSICAL (USB_TYPE_CLASS | 0x03)
diff --git a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/icmp.h b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/icmp.h
index 8847a48..77cb328 100644
--- a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/icmp.h
+++ b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/icmp.h
@@ -84,7 +84,11 @@
     } echo;
     __be32 gateway;
     struct {
+#ifdef __BIONIC__
       __be16 __linux_unused;
+#else
+      __be16 __linux_unused;
+#endif
       __be16 mtu;
     } frag;
     __u8 reserved[4];
diff --git a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/idxd.h b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/idxd.h
index ad9ed48..a456352 100644
--- a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/idxd.h
+++ b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/idxd.h
@@ -38,6 +38,7 @@
   IDXD_SCMD_WQ_NO_SIZE = 0x800e0000,
   IDXD_SCMD_WQ_NO_PRIV = 0x800f0000,
   IDXD_SCMD_WQ_IRQ_ERR = 0x80100000,
+  IDXD_SCMD_WQ_USER_NO_IOMMU = 0x80110000,
 };
 #define IDXD_SCMD_SOFTERR_MASK 0x80000000
 #define IDXD_SCMD_SOFTERR_SHIFT 16
@@ -57,6 +58,11 @@
 #define IDXD_OP_FLAG_DRDBK 0x4000
 #define IDXD_OP_FLAG_DSTS 0x8000
 #define IDXD_OP_FLAG_RD_SRC2_AECS 0x010000
+#define IDXD_OP_FLAG_RD_SRC2_2ND 0x020000
+#define IDXD_OP_FLAG_WR_SRC2_AECS_COMP 0x040000
+#define IDXD_OP_FLAG_WR_SRC2_AECS_OVFL 0x080000
+#define IDXD_OP_FLAG_SRC2_STS 0x100000
+#define IDXD_OP_FLAG_CRC_RFC3720 0x200000
 enum dsa_opcode {
   DSA_OPCODE_NOOP = 0,
   DSA_OPCODE_BATCH,
@@ -82,6 +88,18 @@
   IAX_OPCODE_MEMMOVE,
   IAX_OPCODE_DECOMPRESS = 0x42,
   IAX_OPCODE_COMPRESS,
+  IAX_OPCODE_CRC64,
+  IAX_OPCODE_ZERO_DECOMP_32 = 0x48,
+  IAX_OPCODE_ZERO_DECOMP_16,
+  IAX_OPCODE_ZERO_COMP_32 = 0x4c,
+  IAX_OPCODE_ZERO_COMP_16,
+  IAX_OPCODE_SCAN = 0x50,
+  IAX_OPCODE_SET_MEMBER,
+  IAX_OPCODE_EXTRACT,
+  IAX_OPCODE_SELECT,
+  IAX_OPCODE_RLE_BURST,
+  IAX_OPCODE_FIND_UNIQUE,
+  IAX_OPCODE_EXPAND,
 };
 enum dsa_completion_status {
   DSA_COMP_NONE = 0,
@@ -118,6 +136,7 @@
   IAX_COMP_NONE = 0,
   IAX_COMP_SUCCESS,
   IAX_COMP_PAGE_FAULT_IR = 0x04,
+  IAX_COMP_ANALYTICS_ERROR = 0x0a,
   IAX_COMP_OUTBUF_OVERFLOW,
   IAX_COMP_BAD_OPCODE = 0x10,
   IAX_COMP_INVALID_FLAGS,
@@ -138,7 +157,10 @@
   IAX_COMP_WATCHDOG,
   IAX_COMP_INVALID_COMP_FLAG = 0x30,
   IAX_COMP_INVALID_FILTER_FLAG,
-  IAX_COMP_INVALID_NUM_ELEMS = 0x33,
+  IAX_COMP_INVALID_INPUT_SIZE,
+  IAX_COMP_INVALID_NUM_ELEMS,
+  IAX_COMP_INVALID_SRC1_WIDTH,
+  IAX_COMP_INVALID_INVERT_OUT,
 };
 #define DSA_COMP_STATUS_MASK 0x7f
 #define DSA_COMP_STATUS_WRITE 0x80
@@ -291,8 +313,12 @@
   uint32_t output_size;
   uint8_t output_bits;
   uint8_t rsvd3;
-  uint16_t rsvd4;
-  uint64_t rsvd5[4];
+  uint16_t xor_csum;
+  uint32_t crc;
+  uint32_t min;
+  uint32_t max;
+  uint32_t sum;
+  uint64_t rsvd4[2];
 } __attribute__((packed));
 struct iax_raw_completion_record {
   uint64_t field[8];
diff --git a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/if_addr.h b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/if_addr.h
index 6a6b640..a225e69 100644
--- a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/if_addr.h
+++ b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/if_addr.h
@@ -39,6 +39,7 @@
   IFA_FLAGS,
   IFA_RT_PRIORITY,
   IFA_TARGET_NETNSID,
+  IFA_PROTO,
   __IFA_MAX,
 };
 #define IFA_MAX (__IFA_MAX - 1)
@@ -63,4 +64,8 @@
 };
 #define IFA_RTA(r) ((struct rtattr *) (((char *) (r)) + NLMSG_ALIGN(sizeof(struct ifaddrmsg))))
 #define IFA_PAYLOAD(n) NLMSG_PAYLOAD(n, sizeof(struct ifaddrmsg))
+#define IFAPROT_UNSPEC 0
+#define IFAPROT_KERNEL_LO 1
+#define IFAPROT_KERNEL_RA 2
+#define IFAPROT_KERNEL_LL 3
 #endif
diff --git a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/if_alg.h b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/if_alg.h
index 6530a16..237fe6e 100644
--- a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/if_alg.h
+++ b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/if_alg.h
@@ -35,7 +35,7 @@
 };
 struct af_alg_iv {
   __u32 ivlen;
-  __u8 iv[0];
+  __u8 iv[];
 };
 #define ALG_SET_KEY 1
 #define ALG_SET_IV 2
diff --git a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/if_arcnet.h b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/if_arcnet.h
index 6aece37..65b07e1 100644
--- a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/if_arcnet.h
+++ b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/if_arcnet.h
@@ -40,18 +40,18 @@
   __u8 proto;
   __u8 split_flag;
   __be16 sequence;
-  __u8 payload[0];
+  __u8 payload[];
 };
 #define RFC1201_HDR_SIZE 4
 struct arc_rfc1051 {
   __u8 proto;
-  __u8 payload[0];
+  __u8 payload[];
 };
 #define RFC1051_HDR_SIZE 1
 struct arc_eth_encap {
   __u8 proto;
   struct ethhdr eth;
-  __u8 payload[0];
+  __u8 payload[];
 };
 #define ETH_ENCAP_HDR_SIZE 14
 struct arc_cap {
diff --git a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/if_bridge.h b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/if_bridge.h
index 2054fb3..0f08866 100644
--- a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/if_bridge.h
+++ b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/if_bridge.h
@@ -108,6 +108,7 @@
   IFLA_BRIDGE_VLAN_TUNNEL_INFO,
   IFLA_BRIDGE_MRP,
   IFLA_BRIDGE_CFM,
+  IFLA_BRIDGE_MST,
   __IFLA_BRIDGE_MAX,
 };
 #define IFLA_BRIDGE_MAX (__IFLA_BRIDGE_MAX - 1)
@@ -384,6 +385,19 @@
   __IFLA_BRIDGE_CFM_CC_PEER_STATUS_MAX,
 };
 #define IFLA_BRIDGE_CFM_CC_PEER_STATUS_MAX (__IFLA_BRIDGE_CFM_CC_PEER_STATUS_MAX - 1)
+enum {
+  IFLA_BRIDGE_MST_UNSPEC,
+  IFLA_BRIDGE_MST_ENTRY,
+  __IFLA_BRIDGE_MST_MAX,
+};
+#define IFLA_BRIDGE_MST_MAX (__IFLA_BRIDGE_MST_MAX - 1)
+enum {
+  IFLA_BRIDGE_MST_ENTRY_UNSPEC,
+  IFLA_BRIDGE_MST_ENTRY_MSTI,
+  IFLA_BRIDGE_MST_ENTRY_STATE,
+  __IFLA_BRIDGE_MST_ENTRY_MAX,
+};
+#define IFLA_BRIDGE_MST_ENTRY_MAX (__IFLA_BRIDGE_MST_ENTRY_MAX - 1)
 struct bridge_stp_xstats {
   __u64 transition_blk;
   __u64 transition_fwd;
@@ -460,6 +474,7 @@
   BRIDGE_VLANDB_GOPTS_MCAST_QUERIER,
   BRIDGE_VLANDB_GOPTS_MCAST_ROUTER_PORTS,
   BRIDGE_VLANDB_GOPTS_MCAST_QUERIER_STATE,
+  BRIDGE_VLANDB_GOPTS_MSTI,
   __BRIDGE_VLANDB_GOPTS_MAX
 };
 #define BRIDGE_VLANDB_GOPTS_MAX (__BRIDGE_VLANDB_GOPTS_MAX - 1)
@@ -599,6 +614,7 @@
 enum br_boolopt_id {
   BR_BOOLOPT_NO_LL_LEARN,
   BR_BOOLOPT_MCAST_VLAN_SNOOPING,
+  BR_BOOLOPT_MST_ENABLE,
   BR_BOOLOPT_MAX
 };
 struct br_boolopt_multi {
diff --git a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/if_ether.h b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/if_ether.h
index 1f7f8f2..6043921 100644
--- a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/if_ether.h
+++ b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/if_ether.h
@@ -67,8 +67,10 @@
 #define ETH_P_LINK_CTL 0x886c
 #define ETH_P_ATMFATE 0x8884
 #define ETH_P_PAE 0x888E
+#define ETH_P_PROFINET 0x8892
 #define ETH_P_REALTEK 0x8899
 #define ETH_P_AOE 0x88A2
+#define ETH_P_ETHERCAT 0x88A4
 #define ETH_P_8021AD 0x88A8
 #define ETH_P_802_EX1 0x88B5
 #define ETH_P_PREAUTH 0x88C7
@@ -95,6 +97,7 @@
 #define ETH_P_QINQ3 0x9300
 #define ETH_P_EDSA 0xDADA
 #define ETH_P_DSA_8021Q 0xDADB
+#define ETH_P_DSA_A5PSW 0xE001
 #define ETH_P_IFE 0xED3E
 #define ETH_P_AF_IUCV 0xFBFB
 #define ETH_P_802_3_MIN 0x0600
@@ -109,6 +112,7 @@
 #define ETH_P_LOCALTALK 0x0009
 #define ETH_P_CAN 0x000C
 #define ETH_P_CANFD 0x000D
+#define ETH_P_CANXL 0x000E
 #define ETH_P_PPPTALK 0x0010
 #define ETH_P_TR_802_2 0x0011
 #define ETH_P_MOBITEX 0x0015
diff --git a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/if_link.h b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/if_link.h
index 7e413ae..ebf403a 100644
--- a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/if_link.h
+++ b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/if_link.h
@@ -71,6 +71,18 @@
   __u64 rx_compressed;
   __u64 tx_compressed;
   __u64 rx_nohandler;
+  __u64 rx_otherhost_dropped;
+};
+struct rtnl_hw_stats64 {
+  __u64 rx_packets;
+  __u64 tx_packets;
+  __u64 rx_bytes;
+  __u64 tx_bytes;
+  __u64 rx_errors;
+  __u64 tx_errors;
+  __u64 rx_dropped;
+  __u64 tx_dropped;
+  __u64 multicast;
 };
 struct rtnl_link_ifmap {
   __u64 mem_start;
@@ -151,6 +163,9 @@
   IFLA_PARENT_DEV_NAME,
   IFLA_PARENT_DEV_BUS_NAME,
   IFLA_GRO_MAX_SIZE,
+  IFLA_TSO_MAX_SIZE,
+  IFLA_TSO_MAX_SEGS,
+  IFLA_ALLMULTI,
   __IFLA_MAX
 };
 #define IFLA_MAX (__IFLA_MAX - 1)
@@ -289,6 +304,7 @@
   IFLA_BRPORT_MRP_IN_OPEN,
   IFLA_BRPORT_MCAST_EHT_HOSTS_LIMIT,
   IFLA_BRPORT_MCAST_EHT_HOSTS_CNT,
+  IFLA_BRPORT_LOCKED,
   __IFLA_BRPORT_MAX
 };
 #define IFLA_BRPORT_MAX (__IFLA_BRPORT_MAX - 1)
@@ -396,6 +412,7 @@
   IFLA_XFRM_UNSPEC,
   IFLA_XFRM_LINK,
   IFLA_XFRM_IF_ID,
+  IFLA_XFRM_COLLECT_METADATA,
   __IFLA_XFRM_MAX
 };
 #define IFLA_XFRM_MAX (__IFLA_XFRM_MAX - 1)
@@ -428,6 +445,44 @@
 };
 #define IPVLAN_F_PRIVATE 0x01
 #define IPVLAN_F_VEPA 0x02
+struct tunnel_msg {
+  __u8 family;
+  __u8 flags;
+  __u16 reserved2;
+  __u32 ifindex;
+};
+#define TUNNEL_MSG_FLAG_STATS 0x01
+#define TUNNEL_MSG_VALID_USER_FLAGS TUNNEL_MSG_FLAG_STATS
+enum {
+  VNIFILTER_ENTRY_STATS_UNSPEC,
+  VNIFILTER_ENTRY_STATS_RX_BYTES,
+  VNIFILTER_ENTRY_STATS_RX_PKTS,
+  VNIFILTER_ENTRY_STATS_RX_DROPS,
+  VNIFILTER_ENTRY_STATS_RX_ERRORS,
+  VNIFILTER_ENTRY_STATS_TX_BYTES,
+  VNIFILTER_ENTRY_STATS_TX_PKTS,
+  VNIFILTER_ENTRY_STATS_TX_DROPS,
+  VNIFILTER_ENTRY_STATS_TX_ERRORS,
+  VNIFILTER_ENTRY_STATS_PAD,
+  __VNIFILTER_ENTRY_STATS_MAX
+};
+#define VNIFILTER_ENTRY_STATS_MAX (__VNIFILTER_ENTRY_STATS_MAX - 1)
+enum {
+  VXLAN_VNIFILTER_ENTRY_UNSPEC,
+  VXLAN_VNIFILTER_ENTRY_START,
+  VXLAN_VNIFILTER_ENTRY_END,
+  VXLAN_VNIFILTER_ENTRY_GROUP,
+  VXLAN_VNIFILTER_ENTRY_GROUP6,
+  VXLAN_VNIFILTER_ENTRY_STATS,
+  __VXLAN_VNIFILTER_ENTRY_MAX
+};
+#define VXLAN_VNIFILTER_ENTRY_MAX (__VXLAN_VNIFILTER_ENTRY_MAX - 1)
+enum {
+  VXLAN_VNIFILTER_UNSPEC,
+  VXLAN_VNIFILTER_ENTRY,
+  __VXLAN_VNIFILTER_MAX
+};
+#define VXLAN_VNIFILTER_MAX (__VXLAN_VNIFILTER_MAX - 1)
 enum {
   IFLA_VXLAN_UNSPEC,
   IFLA_VXLAN_ID,
@@ -459,6 +514,7 @@
   IFLA_VXLAN_GPE,
   IFLA_VXLAN_TTL_INHERIT,
   IFLA_VXLAN_DF,
+  IFLA_VXLAN_VNIFILTER,
   __IFLA_VXLAN_MAX
 };
 #define IFLA_VXLAN_MAX (__IFLA_VXLAN_MAX - 1)
@@ -488,6 +544,7 @@
   IFLA_GENEVE_LABEL,
   IFLA_GENEVE_TTL_INHERIT,
   IFLA_GENEVE_DF,
+  IFLA_GENEVE_INNER_PROTO_INHERIT,
   __IFLA_GENEVE_MAX
 };
 #define IFLA_GENEVE_MAX (__IFLA_GENEVE_MAX - 1)
@@ -523,6 +580,8 @@
   IFLA_GTP_FD1,
   IFLA_GTP_PDP_HASHSIZE,
   IFLA_GTP_ROLE,
+  IFLA_GTP_CREATE_SOCKETS,
+  IFLA_GTP_RESTART_COUNT,
   __IFLA_GTP_MAX,
 };
 #define IFLA_GTP_MAX (__IFLA_GTP_MAX - 1)
@@ -558,6 +617,7 @@
   IFLA_BOND_PEER_NOTIF_DELAY,
   IFLA_BOND_AD_LACP_ACTIVE,
   IFLA_BOND_MISSED_MAX,
+  IFLA_BOND_NS_IP6_TARGET,
   __IFLA_BOND_MAX,
 };
 #define IFLA_BOND_MAX (__IFLA_BOND_MAX - 1)
@@ -581,6 +641,7 @@
   IFLA_BOND_SLAVE_AD_AGGREGATOR_ID,
   IFLA_BOND_SLAVE_AD_ACTOR_OPER_PORT_STATE,
   IFLA_BOND_SLAVE_AD_PARTNER_OPER_PORT_STATE,
+  IFLA_BOND_SLAVE_PRIO,
   __IFLA_BOND_SLAVE_MAX,
 };
 #define IFLA_BOND_SLAVE_MAX (__IFLA_BOND_SLAVE_MAX - 1)
@@ -777,6 +838,13 @@
 #define IFLA_STATS_MAX (__IFLA_STATS_MAX - 1)
 #define IFLA_STATS_FILTER_BIT(ATTR) (1 << (ATTR - 1))
 enum {
+  IFLA_STATS_GETSET_UNSPEC,
+  IFLA_STATS_GET_FILTERS,
+  IFLA_STATS_SET_OFFLOAD_XSTATS_L3_STATS,
+  __IFLA_STATS_GETSET_MAX,
+};
+#define IFLA_STATS_GETSET_MAX (__IFLA_STATS_GETSET_MAX - 1)
+enum {
   LINK_XSTATS_TYPE_UNSPEC,
   LINK_XSTATS_TYPE_BRIDGE,
   LINK_XSTATS_TYPE_BOND,
@@ -786,9 +854,18 @@
 enum {
   IFLA_OFFLOAD_XSTATS_UNSPEC,
   IFLA_OFFLOAD_XSTATS_CPU_HIT,
+  IFLA_OFFLOAD_XSTATS_HW_S_INFO,
+  IFLA_OFFLOAD_XSTATS_L3_STATS,
   __IFLA_OFFLOAD_XSTATS_MAX
 };
 #define IFLA_OFFLOAD_XSTATS_MAX (__IFLA_OFFLOAD_XSTATS_MAX - 1)
+enum {
+  IFLA_OFFLOAD_XSTATS_HW_S_INFO_UNSPEC,
+  IFLA_OFFLOAD_XSTATS_HW_S_INFO_REQUEST,
+  IFLA_OFFLOAD_XSTATS_HW_S_INFO_USED,
+  __IFLA_OFFLOAD_XSTATS_HW_S_INFO_MAX,
+};
+#define IFLA_OFFLOAD_XSTATS_HW_S_INFO_MAX (__IFLA_OFFLOAD_XSTATS_HW_S_INFO_MAX - 1)
 #define XDP_FLAGS_UPDATE_IF_NOEXIST (1U << 0)
 #define XDP_FLAGS_SKB_MODE (1U << 1)
 #define XDP_FLAGS_DRV_MODE (1U << 2)
@@ -862,4 +939,10 @@
   __IFLA_MCTP_MAX,
 };
 #define IFLA_MCTP_MAX (__IFLA_MCTP_MAX - 1)
+enum {
+  IFLA_DSA_UNSPEC,
+  IFLA_DSA_MASTER,
+  __IFLA_DSA_MAX,
+};
+#define IFLA_DSA_MAX (__IFLA_DSA_MAX - 1)
 #endif
diff --git a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/if_macsec.h b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/if_macsec.h
index e60d767..7b51f80 100644
--- a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/if_macsec.h
+++ b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/if_macsec.h
@@ -23,6 +23,7 @@
 #define MACSEC_GENL_VERSION 1
 #define MACSEC_MAX_KEY_LEN 128
 #define MACSEC_KEYID_LEN 16
+#define MACSEC_SALT_LEN 12
 #define MACSEC_CIPHER_ID_GCM_AES_128 0x0080C20001000001ULL
 #define MACSEC_CIPHER_ID_GCM_AES_256 0x0080C20001000002ULL
 #define MACSEC_CIPHER_ID_GCM_AES_XPN_128 0x0080C20001000003ULL
diff --git a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/if_pppox.h b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/if_pppox.h
index 40d25e8..2acafdf 100644
--- a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/if_pppox.h
+++ b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/if_pppox.h
@@ -51,27 +51,27 @@
     struct pppoe_addr pppoe;
     struct pptp_addr pptp;
   } sa_addr;
-} __packed;
+} __attribute__((__packed__));
 struct sockaddr_pppol2tp {
   __kernel_sa_family_t sa_family;
   unsigned int sa_protocol;
   struct pppol2tp_addr pppol2tp;
-} __packed;
+} __attribute__((__packed__));
 struct sockaddr_pppol2tpin6 {
   __kernel_sa_family_t sa_family;
   unsigned int sa_protocol;
   struct pppol2tpin6_addr pppol2tp;
-} __packed;
+} __attribute__((__packed__));
 struct sockaddr_pppol2tpv3 {
   __kernel_sa_family_t sa_family;
   unsigned int sa_protocol;
   struct pppol2tpv3_addr pppol2tp;
-} __packed;
+} __attribute__((__packed__));
 struct sockaddr_pppol2tpv3in6 {
   __kernel_sa_family_t sa_family;
   unsigned int sa_protocol;
   struct pppol2tpv3in6_addr pppol2tp;
-} __packed;
+} __attribute__((__packed__));
 #define PPPOEIOCSFWD _IOW(0xB1, 0, size_t)
 #define PPPOEIOCDFWD _IO(0xB1, 1)
 #define PADI_CODE 0x09
@@ -82,7 +82,7 @@
 struct pppoe_tag {
   __be16 tag_type;
   __be16 tag_len;
-  char tag_data[0];
+  char tag_data[];
 } __attribute__((packed));
 #define PTT_EOL __cpu_to_be16(0x0000)
 #define PTT_SRV_NAME __cpu_to_be16(0x0101)
@@ -107,7 +107,7 @@
   __u8 code;
   __be16 sid;
   __be16 length;
-  struct pppoe_tag tag[0];
-} __packed;
+  struct pppoe_tag tag[];
+} __attribute__((__packed__));
 #define PPPOE_SES_HLEN 8
 #endif
diff --git a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/if_tun.h b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/if_tun.h
index d1a8f9e..dda0830 100644
--- a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/if_tun.h
+++ b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/if_tun.h
@@ -57,6 +57,7 @@
 #define IFF_TAP 0x0002
 #define IFF_NAPI 0x0010
 #define IFF_NAPI_FRAGS 0x0020
+#define IFF_NO_CARRIER 0x0040
 #define IFF_NO_PI 0x1000
 #define IFF_ONE_QUEUE 0x2000
 #define IFF_VNET_HDR 0x4000
@@ -81,6 +82,6 @@
 struct tun_filter {
   __u16 flags;
   __u16 count;
-  __u8 addr[0][ETH_ALEN];
+  __u8 addr[][ETH_ALEN];
 };
 #endif
diff --git a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/if_tunnel.h b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/if_tunnel.h
index 8e1847f..01c2dc9 100644
--- a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/if_tunnel.h
+++ b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/if_tunnel.h
@@ -169,5 +169,6 @@
 #define TUNNEL_VXLAN_OPT __cpu_to_be16(0x1000)
 #define TUNNEL_NOCACHE __cpu_to_be16(0x2000)
 #define TUNNEL_ERSPAN_OPT __cpu_to_be16(0x4000)
-#define TUNNEL_OPTIONS_PRESENT (TUNNEL_GENEVE_OPT | TUNNEL_VXLAN_OPT | TUNNEL_ERSPAN_OPT)
+#define TUNNEL_GTP_OPT __cpu_to_be16(0x8000)
+#define TUNNEL_OPTIONS_PRESENT (TUNNEL_GENEVE_OPT | TUNNEL_VXLAN_OPT | TUNNEL_ERSPAN_OPT | TUNNEL_GTP_OPT)
 #endif
diff --git a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/igmp.h b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/igmp.h
index 885b0f8..71c2c8d 100644
--- a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/igmp.h
+++ b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/igmp.h
@@ -37,7 +37,7 @@
   __u8 grec_auxwords;
   __be16 grec_nsrcs;
   __be32 grec_mca;
-  __be32 grec_src[0];
+  __be32 grec_src[];
 };
 struct igmpv3_report {
   __u8 type;
@@ -45,7 +45,7 @@
   __sum16 csum;
   __be16 resv2;
   __be16 ngrec;
-  struct igmpv3_grec grec[0];
+  struct igmpv3_grec grec[];
 };
 struct igmpv3_query {
   __u8 type;
@@ -61,7 +61,7 @@
 #endif
   __u8 qqic;
   __be16 nsrcs;
-  __be32 srcs[0];
+  __be32 srcs[];
 };
 #define IGMP_HOST_MEMBERSHIP_QUERY 0x11
 #define IGMP_HOST_MEMBERSHIP_REPORT 0x12
diff --git a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/iio/types.h b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/iio/types.h
index 22409a7..af7bdda 100644
--- a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/iio/types.h
+++ b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/iio/types.h
@@ -101,6 +101,12 @@
   IIO_MOD_ETHANOL,
   IIO_MOD_H2,
   IIO_MOD_O2,
+  IIO_MOD_LINEAR_X,
+  IIO_MOD_LINEAR_Y,
+  IIO_MOD_LINEAR_Z,
+  IIO_MOD_PITCH,
+  IIO_MOD_YAW,
+  IIO_MOD_ROLL,
 };
 enum iio_event_type {
   IIO_EV_TYPE_THRESH,
@@ -109,11 +115,15 @@
   IIO_EV_TYPE_THRESH_ADAPTIVE,
   IIO_EV_TYPE_MAG_ADAPTIVE,
   IIO_EV_TYPE_CHANGE,
+  IIO_EV_TYPE_MAG_REFERENCED,
+  IIO_EV_TYPE_GESTURE,
 };
 enum iio_event_direction {
   IIO_EV_DIR_EITHER,
   IIO_EV_DIR_RISING,
   IIO_EV_DIR_FALLING,
   IIO_EV_DIR_NONE,
+  IIO_EV_DIR_SINGLETAP,
+  IIO_EV_DIR_DOUBLETAP,
 };
 #endif
diff --git a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/in.h b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/in.h
index d4060e7..53d3074 100644
--- a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/in.h
+++ b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/in.h
@@ -22,6 +22,7 @@
 #include <bits/ip_mreq_source.h>
 #include <bits/in_addr.h>
 #include <linux/types.h>
+#include <linux/stddef.h>
 #include <linux/libc-compat.h>
 #include <linux/socket.h>
 #if __UAPI_DEF_IN_IPPROTO
@@ -68,6 +69,8 @@
 #define IPPROTO_PIM IPPROTO_PIM
   IPPROTO_COMP = 108,
 #define IPPROTO_COMP IPPROTO_COMP
+  IPPROTO_L2TP = 115,
+#define IPPROTO_L2TP IPPROTO_L2TP
   IPPROTO_SCTP = 132,
 #define IPPROTO_SCTP IPPROTO_SCTP
   IPPROTO_UDPLITE = 136,
diff --git a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/inet_diag.h b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/inet_diag.h
index 8656dd4..27f390b 100644
--- a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/inet_diag.h
+++ b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/inet_diag.h
@@ -89,7 +89,7 @@
   __u8 family;
   __u8 prefix_len;
   int port;
-  __be32 addr[0];
+  __be32 addr[];
 };
 struct inet_diag_markcond {
   __u32 mark;
diff --git a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/inotify.h b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/inotify.h
index eb9ac3c..3b4b577 100644
--- a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/inotify.h
+++ b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/inotify.h
@@ -25,7 +25,7 @@
   __u32 mask;
   __u32 cookie;
   __u32 len;
-  char name[0];
+  char name[];
 };
 #define IN_ACCESS 0x00000001
 #define IN_MODIFY 0x00000002
diff --git a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/input-event-codes.h b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/input-event-codes.h
index 34cd23c..40827b5 100644
--- a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/input-event-codes.h
+++ b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/input-event-codes.h
@@ -580,6 +580,21 @@
 #define KEY_ONSCREEN_KEYBOARD 0x278
 #define KEY_PRIVACY_SCREEN_TOGGLE 0x279
 #define KEY_SELECTIVE_SCREENSHOT 0x27a
+#define KEY_NEXT_ELEMENT 0x27b
+#define KEY_PREVIOUS_ELEMENT 0x27c
+#define KEY_AUTOPILOT_ENGAGE_TOGGLE 0x27d
+#define KEY_MARK_WAYPOINT 0x27e
+#define KEY_SOS 0x27f
+#define KEY_NAV_CHART 0x280
+#define KEY_FISHING_CHART 0x281
+#define KEY_SINGLE_RANGE_RADAR 0x282
+#define KEY_DUAL_RANGE_RADAR 0x283
+#define KEY_RADAR_OVERLAY 0x284
+#define KEY_TRADITIONAL_SONAR 0x285
+#define KEY_CLEARVU_SONAR 0x286
+#define KEY_SIDEVU_SONAR 0x287
+#define KEY_NAV_INFO 0x288
+#define KEY_BRIGHTNESS_MENU 0x289
 #define KEY_MACRO1 0x290
 #define KEY_MACRO2 0x291
 #define KEY_MACRO3 0x292
@@ -705,6 +720,7 @@
 #define ABS_TILT_Y 0x1b
 #define ABS_TOOL_WIDTH 0x1c
 #define ABS_VOLUME 0x20
+#define ABS_PROFILE 0x21
 #define ABS_MISC 0x28
 #define ABS_RESERVED 0x2e
 #define ABS_MT_SLOT 0x2f
diff --git a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/input.h b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/input.h
index fe17226..4858c81 100644
--- a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/input.h
+++ b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/input.h
@@ -125,6 +125,7 @@
 #define BUS_RMI 0x1D
 #define BUS_CEC 0x1E
 #define BUS_INTEL_ISHTP 0x1F
+#define BUS_AMD_SFH 0x20
 #define MT_TOOL_FINGER 0x00
 #define MT_TOOL_PEN 0x01
 #define MT_TOOL_PALM 0x02
diff --git a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/io_uring.h b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/io_uring.h
index 96944f8..82dee97 100644
--- a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/io_uring.h
+++ b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/io_uring.h
@@ -20,6 +20,10 @@
 #define LINUX_IO_URING_H
 #include <linux/fs.h>
 #include <linux/types.h>
+#include <linux/time_types.h>
+#ifdef __cplusplus
+extern "C" {
+#endif
 struct io_uring_sqe {
   __u8 opcode;
   __u8 flags;
@@ -28,6 +32,10 @@
   union {
     __u64 off;
     __u64 addr2;
+    struct {
+      __u32 cmd_op;
+      __u32 __pad1;
+    };
   };
   union {
     __u64 addr;
@@ -51,6 +59,9 @@
     __u32 rename_flags;
     __u32 unlink_flags;
     __u32 hardlink_flags;
+    __u32 xattr_flags;
+    __u32 msg_ring_flags;
+    __u32 uring_cmd_flags;
   };
   __u64 user_data;
   union {
@@ -61,9 +72,20 @@
   union {
     __s32 splice_fd_in;
     __u32 file_index;
+    struct {
+      __u16 addr_len;
+      __u16 __pad3[1];
+    };
   };
-  __u64 __pad2[2];
+  union {
+    struct {
+      __u64 addr3;
+      __u64 __pad2[1];
+    };
+    __u8 cmd[0];
+  };
 };
+#define IORING_FILE_INDEX_ALLOC (~0U)
 enum {
   IOSQE_FIXED_FILE_BIT,
   IOSQE_IO_DRAIN_BIT,
@@ -87,7 +109,14 @@
 #define IORING_SETUP_CLAMP (1U << 4)
 #define IORING_SETUP_ATTACH_WQ (1U << 5)
 #define IORING_SETUP_R_DISABLED (1U << 6)
-enum {
+#define IORING_SETUP_SUBMIT_ALL (1U << 7)
+#define IORING_SETUP_COOP_TASKRUN (1U << 8)
+#define IORING_SETUP_TASKRUN_FLAG (1U << 9)
+#define IORING_SETUP_SQE128 (1U << 10)
+#define IORING_SETUP_CQE32 (1U << 11)
+#define IORING_SETUP_SINGLE_ISSUER (1U << 12)
+#define IORING_SETUP_DEFER_TASKRUN (1U << 13)
+enum io_uring_op {
   IORING_OP_NOP,
   IORING_OP_READV,
   IORING_OP_WRITEV,
@@ -128,8 +157,18 @@
   IORING_OP_MKDIRAT,
   IORING_OP_SYMLINKAT,
   IORING_OP_LINKAT,
+  IORING_OP_MSG_RING,
+  IORING_OP_FSETXATTR,
+  IORING_OP_SETXATTR,
+  IORING_OP_FGETXATTR,
+  IORING_OP_GETXATTR,
+  IORING_OP_SOCKET,
+  IORING_OP_URING_CMD,
+  IORING_OP_SEND_ZC,
+  IORING_OP_SENDMSG_ZC,
   IORING_OP_LAST,
 };
+#define IORING_URING_CMD_FIXED (1U << 0)
 #define IORING_FSYNC_DATASYNC (1U << 0)
 #define IORING_TIMEOUT_ABS (1U << 0)
 #define IORING_TIMEOUT_UPDATE (1U << 1)
@@ -143,13 +182,30 @@
 #define IORING_POLL_ADD_MULTI (1U << 0)
 #define IORING_POLL_UPDATE_EVENTS (1U << 1)
 #define IORING_POLL_UPDATE_USER_DATA (1U << 2)
+#define IORING_POLL_ADD_LEVEL (1U << 3)
+#define IORING_ASYNC_CANCEL_ALL (1U << 0)
+#define IORING_ASYNC_CANCEL_FD (1U << 1)
+#define IORING_ASYNC_CANCEL_ANY (1U << 2)
+#define IORING_ASYNC_CANCEL_FD_FIXED (1U << 3)
+#define IORING_RECVSEND_POLL_FIRST (1U << 0)
+#define IORING_RECV_MULTISHOT (1U << 1)
+#define IORING_RECVSEND_FIXED_BUF (1U << 2)
+#define IORING_ACCEPT_MULTISHOT (1U << 0)
+enum {
+  IORING_MSG_DATA,
+  IORING_MSG_SEND_FD,
+};
+#define IORING_MSG_RING_CQE_SKIP (1U << 0)
 struct io_uring_cqe {
   __u64 user_data;
   __s32 res;
   __u32 flags;
+  __u64 big_cqe[];
 };
 #define IORING_CQE_F_BUFFER (1U << 0)
 #define IORING_CQE_F_MORE (1U << 1)
+#define IORING_CQE_F_SOCK_NONEMPTY (1U << 2)
+#define IORING_CQE_F_NOTIF (1U << 3)
 enum {
   IORING_CQE_BUFFER_SHIFT = 16,
 };
@@ -169,6 +225,7 @@
 };
 #define IORING_SQ_NEED_WAKEUP (1U << 0)
 #define IORING_SQ_CQ_OVERFLOW (1U << 1)
+#define IORING_SQ_TASKRUN (1U << 2)
 struct io_cqring_offsets {
   __u32 head;
   __u32 tail;
@@ -185,6 +242,7 @@
 #define IORING_ENTER_SQ_WAKEUP (1U << 1)
 #define IORING_ENTER_SQ_WAIT (1U << 2)
 #define IORING_ENTER_EXT_ARG (1U << 3)
+#define IORING_ENTER_REGISTERED_RING (1U << 4)
 struct io_uring_params {
   __u32 sq_entries;
   __u32 cq_entries;
@@ -209,6 +267,7 @@
 #define IORING_FEAT_NATIVE_WORKERS (1U << 9)
 #define IORING_FEAT_RSRC_TAGS (1U << 10)
 #define IORING_FEAT_CQE_SKIP (1U << 11)
+#define IORING_FEAT_LINKED_FILE (1U << 12)
 enum {
   IORING_REGISTER_BUFFERS = 0,
   IORING_UNREGISTER_BUFFERS = 1,
@@ -230,6 +289,12 @@
   IORING_REGISTER_IOWQ_AFF = 17,
   IORING_UNREGISTER_IOWQ_AFF = 18,
   IORING_REGISTER_IOWQ_MAX_WORKERS = 19,
+  IORING_REGISTER_RING_FDS = 20,
+  IORING_UNREGISTER_RING_FDS = 21,
+  IORING_REGISTER_PBUF_RING = 22,
+  IORING_UNREGISTER_PBUF_RING = 23,
+  IORING_REGISTER_SYNC_CANCEL = 24,
+  IORING_REGISTER_FILE_ALLOC_RANGE = 25,
   IORING_REGISTER_LAST
 };
 enum {
@@ -241,9 +306,10 @@
   __u32 resv;
   __aligned_u64 fds;
 };
+#define IORING_RSRC_REGISTER_SPARSE (1U << 0)
 struct io_uring_rsrc_register {
   __u32 nr;
-  __u32 resv;
+  __u32 flags;
   __u64 resv2;
   __aligned_u64 data;
   __aligned_u64 tags;
@@ -261,6 +327,17 @@
   __u32 nr;
   __u32 resv2;
 };
+struct io_uring_notification_slot {
+  __u64 tag;
+  __u64 resv[3];
+};
+struct io_uring_notification_register {
+  __u32 nr_slots;
+  __u32 resv;
+  __u64 resv2;
+  __u64 data;
+  __u64 resv3;
+};
 #define IORING_REGISTER_FILES_SKIP (- 2)
 #define IO_URING_OP_SUPPORTED (1U << 0)
 struct io_uring_probe_op {
@@ -274,7 +351,7 @@
   __u8 ops_len;
   __u16 resv;
   __u32 resv2[3];
-  struct io_uring_probe_op ops[0];
+  struct io_uring_probe_op ops[];
 };
 struct io_uring_restriction {
   __u16 opcode;
@@ -286,6 +363,30 @@
   __u8 resv;
   __u32 resv2[3];
 };
+struct io_uring_buf {
+  __u64 addr;
+  __u32 len;
+  __u16 bid;
+  __u16 resv;
+};
+struct io_uring_buf_ring {
+  union {
+    struct {
+      __u64 resv1;
+      __u32 resv2;
+      __u16 resv3;
+      __u16 tail;
+    };
+    struct io_uring_buf bufs[0];
+  };
+};
+struct io_uring_buf_reg {
+  __u64 ring_addr;
+  __u32 ring_entries;
+  __u16 bgid;
+  __u16 pad;
+  __u64 resv[3];
+};
 enum {
   IORING_RESTRICTION_REGISTER_OP = 0,
   IORING_RESTRICTION_SQE_OP = 1,
@@ -299,4 +400,25 @@
   __u32 pad;
   __u64 ts;
 };
+struct io_uring_sync_cancel_reg {
+  __u64 addr;
+  __s32 fd;
+  __u32 flags;
+  struct __kernel_timespec timeout;
+  __u64 pad[4];
+};
+struct io_uring_file_index_range {
+  __u32 off;
+  __u32 len;
+  __u64 resv;
+};
+struct io_uring_recvmsg_out {
+  __u32 namelen;
+  __u32 controllen;
+  __u32 payloadlen;
+  __u32 flags;
+};
+#ifdef __cplusplus
+}
+#endif
 #endif
diff --git a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/ioam6_iptunnel.h b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/ioam6_iptunnel.h
index 7426225..ec1a6a8 100644
--- a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/ioam6_iptunnel.h
+++ b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/ioam6_iptunnel.h
@@ -32,6 +32,10 @@
   IOAM6_IPTUNNEL_MODE,
   IOAM6_IPTUNNEL_DST,
   IOAM6_IPTUNNEL_TRACE,
+#define IOAM6_IPTUNNEL_FREQ_MIN 1
+#define IOAM6_IPTUNNEL_FREQ_MAX 1000000
+  IOAM6_IPTUNNEL_FREQ_K,
+  IOAM6_IPTUNNEL_FREQ_N,
   __IOAM6_IPTUNNEL_MAX,
 };
 #define IOAM6_IPTUNNEL_MAX (__IOAM6_IPTUNNEL_MAX - 1)
diff --git a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/iommu.h b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/iommu.h
index 0a0af92..0304a32 100644
--- a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/iommu.h
+++ b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/iommu.h
@@ -85,76 +85,4 @@
   __u32 grpid;
   __u32 code;
 };
-enum iommu_inv_granularity {
-  IOMMU_INV_GRANU_DOMAIN,
-  IOMMU_INV_GRANU_PASID,
-  IOMMU_INV_GRANU_ADDR,
-  IOMMU_INV_GRANU_NR,
-};
-struct iommu_inv_addr_info {
-#define IOMMU_INV_ADDR_FLAGS_PASID (1 << 0)
-#define IOMMU_INV_ADDR_FLAGS_ARCHID (1 << 1)
-#define IOMMU_INV_ADDR_FLAGS_LEAF (1 << 2)
-  __u32 flags;
-  __u32 archid;
-  __u64 pasid;
-  __u64 addr;
-  __u64 granule_size;
-  __u64 nb_granules;
-};
-struct iommu_inv_pasid_info {
-#define IOMMU_INV_PASID_FLAGS_PASID (1 << 0)
-#define IOMMU_INV_PASID_FLAGS_ARCHID (1 << 1)
-  __u32 flags;
-  __u32 archid;
-  __u64 pasid;
-};
-struct iommu_cache_invalidate_info {
-  __u32 argsz;
-#define IOMMU_CACHE_INVALIDATE_INFO_VERSION_1 1
-  __u32 version;
-#define IOMMU_CACHE_INV_TYPE_IOTLB (1 << 0)
-#define IOMMU_CACHE_INV_TYPE_DEV_IOTLB (1 << 1)
-#define IOMMU_CACHE_INV_TYPE_PASID (1 << 2)
-#define IOMMU_CACHE_INV_TYPE_NR (3)
-  __u8 cache;
-  __u8 granularity;
-  __u8 padding[6];
-  union {
-    struct iommu_inv_pasid_info pasid_info;
-    struct iommu_inv_addr_info addr_info;
-  } granu;
-};
-struct iommu_gpasid_bind_data_vtd {
-#define IOMMU_SVA_VTD_GPASID_SRE (1 << 0)
-#define IOMMU_SVA_VTD_GPASID_EAFE (1 << 1)
-#define IOMMU_SVA_VTD_GPASID_PCD (1 << 2)
-#define IOMMU_SVA_VTD_GPASID_PWT (1 << 3)
-#define IOMMU_SVA_VTD_GPASID_EMTE (1 << 4)
-#define IOMMU_SVA_VTD_GPASID_CD (1 << 5)
-#define IOMMU_SVA_VTD_GPASID_WPE (1 << 6)
-#define IOMMU_SVA_VTD_GPASID_LAST (1 << 7)
-  __u64 flags;
-  __u32 pat;
-  __u32 emt;
-};
-#define IOMMU_SVA_VTD_GPASID_MTS_MASK (IOMMU_SVA_VTD_GPASID_CD | IOMMU_SVA_VTD_GPASID_EMTE | IOMMU_SVA_VTD_GPASID_PCD | IOMMU_SVA_VTD_GPASID_PWT)
-struct iommu_gpasid_bind_data {
-  __u32 argsz;
-#define IOMMU_GPASID_BIND_VERSION_1 1
-  __u32 version;
-#define IOMMU_PASID_FORMAT_INTEL_VTD 1
-#define IOMMU_PASID_FORMAT_LAST 2
-  __u32 format;
-  __u32 addr_width;
-#define IOMMU_SVA_GPASID_VAL (1 << 0)
-  __u64 flags;
-  __u64 gpgd;
-  __u64 hpasid;
-  __u64 gpasid;
-  __u8 padding[8];
-  union {
-    struct iommu_gpasid_bind_data_vtd vtd;
-  } vendor;
-};
 #endif
diff --git a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/ip.h b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/ip.h
index 9571cac..766a808 100644
--- a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/ip.h
+++ b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/ip.h
@@ -86,8 +86,9 @@
   __u8 ttl;
   __u8 protocol;
   __sum16 check;
-  __be32 saddr;
+  __struct_group(, addrs,, __be32 saddr;
   __be32 daddr;
+ );
 };
 struct ip_auth_hdr {
   __u8 nexthdr;
@@ -95,12 +96,12 @@
   __be16 reserved;
   __be32 spi;
   __be32 seq_no;
-  __u8 auth_data[0];
+  __u8 auth_data[];
 };
 struct ip_esp_hdr {
   __be32 spi;
   __be32 seq_no;
-  __u8 enc_data[0];
+  __u8 enc_data[];
 };
 struct ip_comp_hdr {
   __u8 nexthdr;
diff --git a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/ip_vs.h b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/ip_vs.h
index 6e3defe..916fcf0 100644
--- a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/ip_vs.h
+++ b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/ip_vs.h
@@ -159,11 +159,11 @@
   __be16 port;
   __u32 fwmark;
   unsigned int num_dests;
-  struct ip_vs_dest_entry entrytable[0];
+  struct ip_vs_dest_entry entrytable[];
 };
 struct ip_vs_get_services {
   unsigned int num_services;
-  struct ip_vs_service_entry entrytable[0];
+  struct ip_vs_service_entry entrytable[];
 };
 struct ip_vs_timeout_user {
   int tcp_timeout;
diff --git a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/ipv6.h b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/ipv6.h
index b3db9ce..2e57ed1 100644
--- a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/ipv6.h
+++ b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/ipv6.h
@@ -87,8 +87,9 @@
   __be16 payload_len;
   __u8 nexthdr;
   __u8 hop_limit;
-  struct in6_addr saddr;
+  __struct_group(, addrs,, struct in6_addr saddr;
   struct in6_addr daddr;
+ );
 };
 enum {
   DEVCONF_FORWARDING = 0,
@@ -148,6 +149,7 @@
   DEVCONF_IOAM6_ID,
   DEVCONF_IOAM6_ID_WIDE,
   DEVCONF_NDISC_EVICT_NOCARRIER,
+  DEVCONF_ACCEPT_UNTRACKED_NA,
   DEVCONF_MAX
 };
 #endif
diff --git a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/iso_fs.h b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/iso_fs.h
index 8227031..f9c4f48 100644
--- a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/iso_fs.h
+++ b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/iso_fs.h
@@ -132,7 +132,7 @@
   __u8 name_len[2];
   __u8 extent[4];
   __u8 parent[2];
-  char name[0];
+  char name[];
 } __attribute__((packed));
 struct iso_directory_record {
   __u8 length[ISODCL(1, 1)];
@@ -145,7 +145,7 @@
   __u8 interleave[ISODCL(28, 28)];
   __u8 volume_sequence_number[ISODCL(29, 32)];
   __u8 name_len[ISODCL(33, 33)];
-  char name[0];
+  char name[];
 } __attribute__((packed));
 #define ISOFS_BLOCK_BITS 11
 #define ISOFS_BLOCK_SIZE 2048
diff --git a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/jffs2.h b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/jffs2.h
index 698f953..643aa2e 100644
--- a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/jffs2.h
+++ b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/jffs2.h
@@ -86,7 +86,7 @@
   __u8 unused[2];
   jint32_t node_crc;
   jint32_t name_crc;
-  __u8 name[0];
+  __u8 name[];
 };
 struct jffs2_raw_inode {
   jint16_t magic;
@@ -110,7 +110,7 @@
   jint16_t flags;
   jint32_t data_crc;
   jint32_t node_crc;
-  __u8 data[0];
+  __u8 data[];
 };
 struct jffs2_raw_xattr {
   jint16_t magic;
@@ -124,7 +124,7 @@
   jint16_t value_len;
   jint32_t data_crc;
   jint32_t node_crc;
-  __u8 data[0];
+  __u8 data[];
 } __attribute__((packed));
 struct jffs2_raw_xref {
   jint16_t magic;
@@ -146,7 +146,7 @@
   jint32_t padded;
   jint32_t sum_crc;
   jint32_t node_crc;
-  jint32_t sum[0];
+  jint32_t sum[];
 };
 union jffs2_node_union {
   struct jffs2_raw_inode i;
diff --git a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/kcov.h b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/kcov.h
index cf2660b..5b6f6b1 100644
--- a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/kcov.h
+++ b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/kcov.h
@@ -24,7 +24,7 @@
   __u32 area_size;
   __u32 num_handles;
   __aligned_u64 common_handle;
-  __aligned_u64 handles[0];
+  __aligned_u64 handles[];
 };
 #define KCOV_REMOTE_MAX_HANDLES 0x100
 #define KCOV_INIT_TRACE _IOR('c', 1, unsigned long)
diff --git a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/kexec.h b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/kexec.h
index 2e3bd0c..438c07b 100644
--- a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/kexec.h
+++ b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/kexec.h
@@ -40,11 +40,12 @@
 #define KEXEC_ARCH_MIPS (8 << 16)
 #define KEXEC_ARCH_AARCH64 (183 << 16)
 #define KEXEC_ARCH_RISCV (243 << 16)
+#define KEXEC_ARCH_LOONGARCH (258 << 16)
 #define KEXEC_SEGMENT_MAX 16
 struct kexec_segment {
   const void * buf;
-  size_t bufsz;
+  __kernel_size_t bufsz;
   const void * mem;
-  size_t memsz;
+  __kernel_size_t memsz;
 };
 #endif
diff --git a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/kfd_ioctl.h b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/kfd_ioctl.h
index c52ac64..d21e0fc 100644
--- a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/kfd_ioctl.h
+++ b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/kfd_ioctl.h
@@ -21,7 +21,7 @@
 #include <drm/drm.h>
 #include <linux/ioctl.h>
 #define KFD_IOCTL_MAJOR_VERSION 1
-#define KFD_IOCTL_MINOR_VERSION 6
+#define KFD_IOCTL_MINOR_VERSION 11
 struct kfd_ioctl_get_version_args {
   __u32 major_version;
   __u32 minor_version;
@@ -72,6 +72,11 @@
   __u32 queue_id;
   __u32 pad;
 };
+struct kfd_ioctl_get_available_memory_args {
+  __u64 available;
+  __u32 gpu_id;
+  __u32 pad;
+};
 #define KFD_IOC_CACHE_POLICY_COHERENT 0
 #define KFD_IOC_CACHE_POLICY_NONCOHERENT 1
 struct kfd_ioctl_set_memory_policy_args {
@@ -132,6 +137,7 @@
   __u32 gpu_id;
   __u32 buf_size_in_bytes;
 };
+#define KFD_INVALID_FD 0xffffffff
 #define KFD_IOC_EVENT_SIGNAL 0
 #define KFD_IOC_EVENT_NODECHANGE 1
 #define KFD_IOC_EVENT_DEVICESTATECHANGE 2
@@ -294,12 +300,74 @@
   KFD_SMI_EVENT_THERMAL_THROTTLE = 2,
   KFD_SMI_EVENT_GPU_PRE_RESET = 3,
   KFD_SMI_EVENT_GPU_POST_RESET = 4,
+  KFD_SMI_EVENT_MIGRATE_START = 5,
+  KFD_SMI_EVENT_MIGRATE_END = 6,
+  KFD_SMI_EVENT_PAGE_FAULT_START = 7,
+  KFD_SMI_EVENT_PAGE_FAULT_END = 8,
+  KFD_SMI_EVENT_QUEUE_EVICTION = 9,
+  KFD_SMI_EVENT_QUEUE_RESTORE = 10,
+  KFD_SMI_EVENT_UNMAP_FROM_GPU = 11,
+  KFD_SMI_EVENT_ALL_PROCESS = 64
+};
+enum KFD_MIGRATE_TRIGGERS {
+  KFD_MIGRATE_TRIGGER_PREFETCH,
+  KFD_MIGRATE_TRIGGER_PAGEFAULT_GPU,
+  KFD_MIGRATE_TRIGGER_PAGEFAULT_CPU,
+  KFD_MIGRATE_TRIGGER_TTM_EVICTION
+};
+enum KFD_QUEUE_EVICTION_TRIGGERS {
+  KFD_QUEUE_EVICTION_TRIGGER_SVM,
+  KFD_QUEUE_EVICTION_TRIGGER_USERPTR,
+  KFD_QUEUE_EVICTION_TRIGGER_TTM,
+  KFD_QUEUE_EVICTION_TRIGGER_SUSPEND,
+  KFD_QUEUE_EVICTION_CRIU_CHECKPOINT,
+  KFD_QUEUE_EVICTION_CRIU_RESTORE
+};
+enum KFD_SVM_UNMAP_TRIGGERS {
+  KFD_SVM_UNMAP_TRIGGER_MMU_NOTIFY,
+  KFD_SVM_UNMAP_TRIGGER_MMU_NOTIFY_MIGRATE,
+  KFD_SVM_UNMAP_TRIGGER_UNMAP_FROM_CPU
 };
 #define KFD_SMI_EVENT_MASK_FROM_INDEX(i) (1ULL << ((i) - 1))
+#define KFD_SMI_EVENT_MSG_SIZE 96
 struct kfd_ioctl_smi_events_args {
   __u32 gpuid;
   __u32 anon_fd;
 };
+enum kfd_criu_op {
+  KFD_CRIU_OP_PROCESS_INFO,
+  KFD_CRIU_OP_CHECKPOINT,
+  KFD_CRIU_OP_UNPAUSE,
+  KFD_CRIU_OP_RESTORE,
+  KFD_CRIU_OP_RESUME,
+};
+struct kfd_ioctl_criu_args {
+  __u64 devices;
+  __u64 bos;
+  __u64 priv_data;
+  __u64 priv_data_size;
+  __u32 num_devices;
+  __u32 num_bos;
+  __u32 num_objects;
+  __u32 pid;
+  __u32 op;
+};
+struct kfd_criu_device_bucket {
+  __u32 user_gpu_id;
+  __u32 actual_gpu_id;
+  __u32 drm_fd;
+  __u32 pad;
+};
+struct kfd_criu_bo_bucket {
+  __u64 addr;
+  __u64 size;
+  __u64 offset;
+  __u64 restored_offset;
+  __u32 gpu_id;
+  __u32 alloc_flags;
+  __u32 dmabuf_fd;
+  __u32 pad;
+};
 enum kfd_mmio_remap {
   KFD_MMIO_REMAP_HDP_MEM_FLUSH_CNTL = 0,
   KFD_MMIO_REMAP_HDP_REG_FLUSH_CNTL = 4,
@@ -310,6 +378,7 @@
 #define KFD_IOCTL_SVM_FLAG_GPU_RO 0x00000008
 #define KFD_IOCTL_SVM_FLAG_GPU_EXEC 0x00000010
 #define KFD_IOCTL_SVM_FLAG_GPU_READ_MOSTLY 0x00000020
+#define KFD_IOCTL_SVM_FLAG_GPU_ALWAYS_MAPPED 0x00000040
 enum kfd_ioctl_svm_op {
   KFD_IOCTL_SVM_OP_SET_ATTR,
   KFD_IOCTL_SVM_OP_GET_ATTR
@@ -337,7 +406,7 @@
   __u64 size;
   __u32 op;
   __u32 nattr;
-  struct kfd_ioctl_svm_attribute attrs[0];
+  struct kfd_ioctl_svm_attribute attrs[];
 };
 struct kfd_ioctl_set_xnack_mode_args {
   __s32 xnack_enabled;
@@ -359,10 +428,10 @@
 #define AMDKFD_IOC_SET_EVENT AMDKFD_IOW(0x0A, struct kfd_ioctl_set_event_args)
 #define AMDKFD_IOC_RESET_EVENT AMDKFD_IOW(0x0B, struct kfd_ioctl_reset_event_args)
 #define AMDKFD_IOC_WAIT_EVENTS AMDKFD_IOWR(0x0C, struct kfd_ioctl_wait_events_args)
-#define AMDKFD_IOC_DBG_REGISTER AMDKFD_IOW(0x0D, struct kfd_ioctl_dbg_register_args)
-#define AMDKFD_IOC_DBG_UNREGISTER AMDKFD_IOW(0x0E, struct kfd_ioctl_dbg_unregister_args)
-#define AMDKFD_IOC_DBG_ADDRESS_WATCH AMDKFD_IOW(0x0F, struct kfd_ioctl_dbg_address_watch_args)
-#define AMDKFD_IOC_DBG_WAVE_CONTROL AMDKFD_IOW(0x10, struct kfd_ioctl_dbg_wave_control_args)
+#define AMDKFD_IOC_DBG_REGISTER_DEPRECATED AMDKFD_IOW(0x0D, struct kfd_ioctl_dbg_register_args)
+#define AMDKFD_IOC_DBG_UNREGISTER_DEPRECATED AMDKFD_IOW(0x0E, struct kfd_ioctl_dbg_unregister_args)
+#define AMDKFD_IOC_DBG_ADDRESS_WATCH_DEPRECATED AMDKFD_IOW(0x0F, struct kfd_ioctl_dbg_address_watch_args)
+#define AMDKFD_IOC_DBG_WAVE_CONTROL_DEPRECATED AMDKFD_IOW(0x10, struct kfd_ioctl_dbg_wave_control_args)
 #define AMDKFD_IOC_SET_SCRATCH_BACKING_VA AMDKFD_IOWR(0x11, struct kfd_ioctl_set_scratch_backing_va_args)
 #define AMDKFD_IOC_GET_TILE_CONFIG AMDKFD_IOWR(0x12, struct kfd_ioctl_get_tile_config_args)
 #define AMDKFD_IOC_SET_TRAP_HANDLER AMDKFD_IOW(0x13, struct kfd_ioctl_set_trap_handler_args)
@@ -380,6 +449,8 @@
 #define AMDKFD_IOC_SMI_EVENTS AMDKFD_IOWR(0x1F, struct kfd_ioctl_smi_events_args)
 #define AMDKFD_IOC_SVM AMDKFD_IOWR(0x20, struct kfd_ioctl_svm_args)
 #define AMDKFD_IOC_SET_XNACK_MODE AMDKFD_IOWR(0x21, struct kfd_ioctl_set_xnack_mode_args)
+#define AMDKFD_IOC_CRIU_OP AMDKFD_IOWR(0x22, struct kfd_ioctl_criu_args)
+#define AMDKFD_IOC_AVAILABLE_MEMORY AMDKFD_IOWR(0x23, struct kfd_ioctl_get_available_memory_args)
 #define AMDKFD_COMMAND_START 0x01
-#define AMDKFD_COMMAND_END 0x22
+#define AMDKFD_COMMAND_END 0x24
 #endif
diff --git a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/kvm.h b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/kvm.h
index 1cf7182..768f57e 100644
--- a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/kvm.h
+++ b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/kvm.h
@@ -216,6 +216,8 @@
 #define KVM_EXIT_X86_BUS_LOCK 33
 #define KVM_EXIT_XEN 34
 #define KVM_EXIT_RISCV_SBI 35
+#define KVM_EXIT_RISCV_CSR 36
+#define KVM_EXIT_NOTIFY 37
 #define KVM_INTERNAL_ERROR_EMULATION 1
 #define KVM_INTERNAL_ERROR_SIMUL_EX 2
 #define KVM_INTERNAL_ERROR_DELIVERY_EV 3
@@ -336,8 +338,15 @@
 #define KVM_SYSTEM_EVENT_SHUTDOWN 1
 #define KVM_SYSTEM_EVENT_RESET 2
 #define KVM_SYSTEM_EVENT_CRASH 3
+#define KVM_SYSTEM_EVENT_WAKEUP 4
+#define KVM_SYSTEM_EVENT_SUSPEND 5
+#define KVM_SYSTEM_EVENT_SEV_TERM 6
       __u32 type;
-      __u64 flags;
+      __u32 ndata;
+      union {
+        __u64 flags;
+        __u64 data[16];
+      };
     } system_event;
     struct {
       __u64 addr;
@@ -372,6 +381,16 @@
       unsigned long args[6];
       unsigned long ret[2];
     } riscv_sbi;
+    struct {
+      unsigned long csr_num;
+      unsigned long new_value;
+      unsigned long write_mask;
+      unsigned long ret_value;
+    } riscv_csr;
+    struct {
+#define KVM_NOTIFY_CONTEXT_INVALID (1 << 0)
+      __u32 flags;
+    } notify;
     char padding[256];
   };
 #define SYNC_REGS_SIZE_BYTES 2048
@@ -401,7 +420,7 @@
 };
 struct kvm_coalesced_mmio_ring {
   __u32 first, last;
-  struct kvm_coalesced_mmio coalesced_mmio[0];
+  struct kvm_coalesced_mmio coalesced_mmio[];
 };
 #define KVM_COALESCED_MMIO_MAX ((PAGE_SIZE - sizeof(struct kvm_coalesced_mmio_ring)) / sizeof(struct kvm_coalesced_mmio))
 struct kvm_translation {
@@ -419,7 +438,10 @@
   __u32 op;
   __u64 buf;
   union {
-    __u8 ar;
+    struct {
+      __u8 ar;
+      __u8 key;
+    };
     __u32 sida_offset;
     __u8 reserved[32];
   };
@@ -428,8 +450,11 @@
 #define KVM_S390_MEMOP_LOGICAL_WRITE 1
 #define KVM_S390_MEMOP_SIDA_READ 2
 #define KVM_S390_MEMOP_SIDA_WRITE 3
+#define KVM_S390_MEMOP_ABSOLUTE_READ 4
+#define KVM_S390_MEMOP_ABSOLUTE_WRITE 5
 #define KVM_S390_MEMOP_F_CHECK_ONLY (1ULL << 0)
 #define KVM_S390_MEMOP_F_INJECT_EXCEPTION (1ULL << 1)
+#define KVM_S390_MEMOP_F_SKEY_PROTECTION (1ULL << 2)
 struct kvm_interrupt {
   __u32 irq;
 };
@@ -452,7 +477,7 @@
 };
 struct kvm_signal_mask {
   __u32 len;
-  __u8 sigset[0];
+  __u8 sigset[];
 };
 struct kvm_tpr_access_ctl {
   __u32 enabled;
@@ -472,6 +497,7 @@
 #define KVM_MP_STATE_OPERATING 7
 #define KVM_MP_STATE_LOAD 8
 #define KVM_MP_STATE_AP_RESET_HOLD 9
+#define KVM_MP_STATE_SUSPENDED 10
 struct kvm_mp_state {
   __u32 mp_state;
 };
@@ -890,6 +916,19 @@
 #define KVM_CAP_XSAVE2 208
 #define KVM_CAP_SYS_ATTRIBUTES 209
 #define KVM_CAP_PPC_AIL_MODE_3 210
+#define KVM_CAP_S390_MEM_OP_EXTENSION 211
+#define KVM_CAP_PMU_CAPABILITY 212
+#define KVM_CAP_DISABLE_QUIRKS2 213
+#define KVM_CAP_VM_TSC_CONTROL 214
+#define KVM_CAP_SYSTEM_EVENT_DATA 215
+#define KVM_CAP_ARM_SYSTEM_SUSPEND 216
+#define KVM_CAP_S390_PROTECTED_DUMP 217
+#define KVM_CAP_X86_TRIPLE_FAULT_EVENT 218
+#define KVM_CAP_X86_NOTIFY_VMEXIT 219
+#define KVM_CAP_VM_DISABLE_NX_HUGE_PAGES 220
+#define KVM_CAP_S390_ZPCI_OP 221
+#define KVM_CAP_S390_CPU_TOPOLOGY 222
+#define KVM_CAP_DIRTY_LOG_RING_ACQ_REL 223
 #ifdef KVM_CAP_IRQ_ROUTING
 struct kvm_irq_routing_irqchip {
   __u32 irqchip;
@@ -943,7 +982,7 @@
 struct kvm_irq_routing {
   __u32 nr;
   __u32 flags;
-  struct kvm_irq_routing_entry entries[0];
+  struct kvm_irq_routing_entry entries[];
 };
 #endif
 #ifdef KVM_CAP_MCE
@@ -963,6 +1002,7 @@
 #define KVM_XEN_HVM_CONFIG_SHARED_INFO (1 << 2)
 #define KVM_XEN_HVM_CONFIG_RUNSTATE (1 << 3)
 #define KVM_XEN_HVM_CONFIG_EVTCHN_2LEVEL (1 << 4)
+#define KVM_XEN_HVM_CONFIG_EVTCHN_SEND (1 << 5)
 struct kvm_xen_hvm_config {
   __u32 flags;
   __u32 msr;
@@ -1028,7 +1068,7 @@
 #define KVM_REG_SIZE_U2048 0x0080000000000000ULL
 struct kvm_reg_list {
   __u64 n;
-  __u64 reg[0];
+  __u64 reg[];
 };
 struct kvm_one_reg {
   __u64 id;
@@ -1242,6 +1282,48 @@
   __u64 size;
   __u64 tweak;
 };
+enum pv_cmd_dmp_id {
+  KVM_PV_DUMP_INIT,
+  KVM_PV_DUMP_CONFIG_STOR_STATE,
+  KVM_PV_DUMP_COMPLETE,
+  KVM_PV_DUMP_CPU,
+};
+struct kvm_s390_pv_dmp {
+  __u64 subcmd;
+  __u64 buff_addr;
+  __u64 buff_len;
+  __u64 gaddr;
+  __u64 reserved[4];
+};
+enum pv_cmd_info_id {
+  KVM_PV_INFO_VM,
+  KVM_PV_INFO_DUMP,
+};
+struct kvm_s390_pv_info_dump {
+  __u64 dump_cpu_buffer_len;
+  __u64 dump_config_mem_buffer_per_1m;
+  __u64 dump_config_finalize_len;
+};
+struct kvm_s390_pv_info_vm {
+  __u64 inst_calls_list[4];
+  __u64 max_cpus;
+  __u64 max_guests;
+  __u64 max_guest_addr;
+  __u64 feature_indication;
+};
+struct kvm_s390_pv_info_header {
+  __u32 id;
+  __u32 len_max;
+  __u32 len_written;
+  __u32 reserved;
+};
+struct kvm_s390_pv_info {
+  struct kvm_s390_pv_info_header header;
+  union {
+    struct kvm_s390_pv_info_dump dump;
+    struct kvm_s390_pv_info_vm vm;
+  };
+};
 enum pv_cmd_id {
   KVM_PV_ENABLE,
   KVM_PV_DISABLE,
@@ -1250,6 +1332,8 @@
   KVM_PV_VERIFY,
   KVM_PV_PREP_RESET,
   KVM_PV_UNSHARE_ALL,
+  KVM_PV_INFO,
+  KVM_PV_DUMP,
 };
 struct kvm_pv_cmd {
   __u32 cmd;
@@ -1273,14 +1357,38 @@
     struct {
       __u64 gfn;
     } shared_info;
+    struct {
+      __u32 send_port;
+      __u32 type;
+      __u32 flags;
+#define KVM_XEN_EVTCHN_DEASSIGN (1 << 0)
+#define KVM_XEN_EVTCHN_UPDATE (1 << 1)
+#define KVM_XEN_EVTCHN_RESET (1 << 2)
+      union {
+        struct {
+          __u32 port;
+          __u32 vcpu;
+          __u32 priority;
+        } port;
+        struct {
+          __u32 port;
+          __s32 fd;
+        } eventfd;
+        __u32 padding[4];
+      } deliver;
+    } evtchn;
+    __u32 xen_version;
     __u64 pad[8];
   } u;
 };
 #define KVM_XEN_ATTR_TYPE_LONG_MODE 0x0
 #define KVM_XEN_ATTR_TYPE_SHARED_INFO 0x1
 #define KVM_XEN_ATTR_TYPE_UPCALL_VECTOR 0x2
+#define KVM_XEN_ATTR_TYPE_EVTCHN 0x3
+#define KVM_XEN_ATTR_TYPE_XEN_VERSION 0x4
 #define KVM_XEN_VCPU_GET_ATTR _IOWR(KVMIO, 0xca, struct kvm_xen_vcpu_attr)
 #define KVM_XEN_VCPU_SET_ATTR _IOW(KVMIO, 0xcb, struct kvm_xen_vcpu_attr)
+#define KVM_XEN_HVM_EVTCHN_SEND _IOW(KVMIO, 0xd0, struct kvm_irq_routing_xen_evtchn)
 #define KVM_GET_SREGS2 _IOR(KVMIO, 0xcc, struct kvm_sregs2)
 #define KVM_SET_SREGS2 _IOW(KVMIO, 0xcd, struct kvm_sregs2)
 struct kvm_xen_vcpu_attr {
@@ -1297,6 +1405,13 @@
       __u64 time_blocked;
       __u64 time_offline;
     } runstate;
+    __u32 vcpu_id;
+    struct {
+      __u32 port;
+      __u32 priority;
+      __u64 expires_ns;
+    } timer;
+    __u8 vector;
   } u;
 };
 #define KVM_XEN_VCPU_ATTR_TYPE_VCPU_INFO 0x0
@@ -1305,6 +1420,9 @@
 #define KVM_XEN_VCPU_ATTR_TYPE_RUNSTATE_CURRENT 0x3
 #define KVM_XEN_VCPU_ATTR_TYPE_RUNSTATE_DATA 0x4
 #define KVM_XEN_VCPU_ATTR_TYPE_RUNSTATE_ADJUST 0x5
+#define KVM_XEN_VCPU_ATTR_TYPE_VCPU_ID 0x6
+#define KVM_XEN_VCPU_ATTR_TYPE_TIMER 0x7
+#define KVM_XEN_VCPU_ATTR_TYPE_UPCALL_VECTOR 0x8
 enum sev_cmd_id {
   KVM_SEV_INIT = 0,
   KVM_SEV_ES_INIT,
@@ -1480,6 +1598,7 @@
 };
 #define KVM_BUS_LOCK_DETECTION_OFF (1 << 0)
 #define KVM_BUS_LOCK_DETECTION_EXIT (1 << 1)
+#define KVM_PMU_CAP_DISABLE (1 << 0)
 struct kvm_stats_header {
   __u32 flags;
   __u32 name_size;
@@ -1502,7 +1621,8 @@
 #define KVM_STATS_UNIT_BYTES (0x1 << KVM_STATS_UNIT_SHIFT)
 #define KVM_STATS_UNIT_SECONDS (0x2 << KVM_STATS_UNIT_SHIFT)
 #define KVM_STATS_UNIT_CYCLES (0x3 << KVM_STATS_UNIT_SHIFT)
-#define KVM_STATS_UNIT_MAX KVM_STATS_UNIT_CYCLES
+#define KVM_STATS_UNIT_BOOLEAN (0x4 << KVM_STATS_UNIT_SHIFT)
+#define KVM_STATS_UNIT_MAX KVM_STATS_UNIT_BOOLEAN
 #define KVM_STATS_BASE_SHIFT 8
 #define KVM_STATS_BASE_MASK (0xF << KVM_STATS_BASE_SHIFT)
 #define KVM_STATS_BASE_POW10 (0x0 << KVM_STATS_BASE_SHIFT)
@@ -1518,4 +1638,28 @@
 };
 #define KVM_GET_STATS_FD _IO(KVMIO, 0xce)
 #define KVM_GET_XSAVE2 _IOR(KVMIO, 0xcf, struct kvm_xsave)
+#define KVM_S390_PV_CPU_COMMAND _IOWR(KVMIO, 0xd0, struct kvm_pv_cmd)
+#define KVM_X86_NOTIFY_VMEXIT_ENABLED (1ULL << 0)
+#define KVM_X86_NOTIFY_VMEXIT_USER (1ULL << 1)
+#define KVM_S390_ZPCI_OP _IOW(KVMIO, 0xd1, struct kvm_s390_zpci_op)
+struct kvm_s390_zpci_op {
+  __u32 fh;
+  __u8 op;
+  __u8 pad[3];
+  union {
+    struct {
+      __u64 ibv;
+      __u64 sb;
+      __u32 flags;
+      __u32 noi;
+      __u8 isc;
+      __u8 sbo;
+      __u16 pad;
+    } reg_aen;
+    __u64 reserved[8];
+  } u;
+};
+#define KVM_S390_ZPCIOP_REG_AEN 0
+#define KVM_S390_ZPCIOP_DEREG_AEN 1
+#define KVM_S390_ZPCIOP_REGAEN_HOST (1 << 0)
 #endif
diff --git a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/l2tp.h b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/l2tp.h
index a054819..dee634e 100644
--- a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/l2tp.h
+++ b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/l2tp.h
@@ -22,7 +22,6 @@
 #include <linux/socket.h>
 #include <linux/in.h>
 #include <linux/in6.h>
-#define IPPROTO_L2TP 115
 #define __SOCK_SIZE__ 16
 struct sockaddr_l2tpip {
   __kernel_sa_family_t l2tp_family;
diff --git a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/landlock.h b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/landlock.h
index 50d79d8..ea2fd74 100644
--- a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/landlock.h
+++ b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/landlock.h
@@ -43,4 +43,5 @@
 #define LANDLOCK_ACCESS_FS_MAKE_FIFO (1ULL << 10)
 #define LANDLOCK_ACCESS_FS_MAKE_BLOCK (1ULL << 11)
 #define LANDLOCK_ACCESS_FS_MAKE_SYM (1ULL << 12)
+#define LANDLOCK_ACCESS_FS_REFER (1ULL << 13)
 #endif
diff --git a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/lirc.h b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/lirc.h
index a0ac24a..dff0b63 100644
--- a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/lirc.h
+++ b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/lirc.h
@@ -26,18 +26,21 @@
 #define LIRC_MODE2_PULSE 0x01000000
 #define LIRC_MODE2_FREQUENCY 0x02000000
 #define LIRC_MODE2_TIMEOUT 0x03000000
+#define LIRC_MODE2_OVERFLOW 0x04000000
 #define LIRC_VALUE_MASK 0x00FFFFFF
 #define LIRC_MODE2_MASK 0xFF000000
 #define LIRC_SPACE(val) (((val) & LIRC_VALUE_MASK) | LIRC_MODE2_SPACE)
 #define LIRC_PULSE(val) (((val) & LIRC_VALUE_MASK) | LIRC_MODE2_PULSE)
 #define LIRC_FREQUENCY(val) (((val) & LIRC_VALUE_MASK) | LIRC_MODE2_FREQUENCY)
 #define LIRC_TIMEOUT(val) (((val) & LIRC_VALUE_MASK) | LIRC_MODE2_TIMEOUT)
+#define LIRC_OVERFLOW(val) (((val) & LIRC_VALUE_MASK) | LIRC_MODE2_OVERFLOW)
 #define LIRC_VALUE(val) ((val) & LIRC_VALUE_MASK)
 #define LIRC_MODE2(val) ((val) & LIRC_MODE2_MASK)
 #define LIRC_IS_SPACE(val) (LIRC_MODE2(val) == LIRC_MODE2_SPACE)
 #define LIRC_IS_PULSE(val) (LIRC_MODE2(val) == LIRC_MODE2_PULSE)
 #define LIRC_IS_FREQUENCY(val) (LIRC_MODE2(val) == LIRC_MODE2_FREQUENCY)
 #define LIRC_IS_TIMEOUT(val) (LIRC_MODE2(val) == LIRC_MODE2_TIMEOUT)
+#define LIRC_IS_OVERFLOW(val) (LIRC_MODE2(val) == LIRC_MODE2_OVERFLOW)
 #define lirc_t int
 #define LIRC_MODE2SEND(x) (x)
 #define LIRC_SEND2MODE(x) (x)
@@ -63,17 +66,15 @@
 #define LIRC_CAN_REC_LIRCCODE LIRC_MODE2REC(LIRC_MODE_LIRCCODE)
 #define LIRC_CAN_REC_MASK LIRC_MODE2REC(LIRC_CAN_SEND_MASK)
 #define LIRC_CAN_SET_REC_CARRIER (LIRC_CAN_SET_SEND_CARRIER << 16)
-#define LIRC_CAN_SET_REC_DUTY_CYCLE (LIRC_CAN_SET_SEND_DUTY_CYCLE << 16)
-#define LIRC_CAN_SET_REC_DUTY_CYCLE_RANGE 0x40000000
 #define LIRC_CAN_SET_REC_CARRIER_RANGE 0x80000000
 #define LIRC_CAN_GET_REC_RESOLUTION 0x20000000
 #define LIRC_CAN_SET_REC_TIMEOUT 0x10000000
-#define LIRC_CAN_SET_REC_FILTER 0x08000000
 #define LIRC_CAN_MEASURE_CARRIER 0x02000000
 #define LIRC_CAN_USE_WIDEBAND_RECEIVER 0x04000000
 #define LIRC_CAN_SEND(x) ((x) & LIRC_CAN_SEND_MASK)
 #define LIRC_CAN_REC(x) ((x) & LIRC_CAN_REC_MASK)
-#define LIRC_CAN_NOTIFY_DECODE 0x01000000
+#define LIRC_CAN_SET_REC_FILTER 0
+#define LIRC_CAN_NOTIFY_DECODE 0
 #define LIRC_GET_FEATURES _IOR('i', 0x00000000, __u32)
 #define LIRC_GET_SEND_MODE _IOR('i', 0x00000001, __u32)
 #define LIRC_GET_REC_MODE _IOR('i', 0x00000002, __u32)
diff --git a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/loadpin.h b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/loadpin.h
new file mode 100644
index 0000000..2641939
--- /dev/null
+++ b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/loadpin.h
@@ -0,0 +1,23 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPI_LINUX_LOOP_LOADPIN_H
+#define _UAPI_LINUX_LOOP_LOADPIN_H
+#define LOADPIN_IOC_MAGIC 'L'
+#define LOADPIN_IOC_SET_TRUSTED_VERITY_DIGESTS _IOW(LOADPIN_IOC_MAGIC, 0x00, unsigned int)
+#endif
diff --git a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/lwtunnel.h b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/lwtunnel.h
index e6fb536..94011dd 100644
--- a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/lwtunnel.h
+++ b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/lwtunnel.h
@@ -30,6 +30,7 @@
   LWTUNNEL_ENCAP_SEG6_LOCAL,
   LWTUNNEL_ENCAP_RPL,
   LWTUNNEL_ENCAP_IOAM6,
+  LWTUNNEL_ENCAP_XFRM,
   __LWTUNNEL_ENCAP_MAX,
 };
 #define LWTUNNEL_ENCAP_MAX (__LWTUNNEL_ENCAP_MAX - 1)
@@ -107,4 +108,11 @@
 };
 #define LWT_BPF_MAX (__LWT_BPF_MAX - 1)
 #define LWT_BPF_MAX_HEADROOM 256
+enum {
+  LWT_XFRM_UNSPEC,
+  LWT_XFRM_IF_ID,
+  LWT_XFRM_LINK,
+  __LWT_XFRM_MAX,
+};
+#define LWT_XFRM_MAX (__LWT_XFRM_MAX - 1)
 #endif
diff --git a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/magic.h b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/magic.h
index 6563411..ac2a0f3 100644
--- a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/magic.h
+++ b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/magic.h
@@ -99,11 +99,7 @@
 #define AAFS_MAGIC 0x5a3c69f0
 #define ZONEFS_MAGIC 0x5a4f4653
 #define UDF_SUPER_MAGIC 0x15013346
-#define BALLOON_KVM_MAGIC 0x13661366
-#define ZSMALLOC_MAGIC 0x58295829
 #define DMA_BUF_MAGIC 0x444d4142
 #define DEVMEM_MAGIC 0x454d444d
-#define Z3FOLD_MAGIC 0x33
-#define PPC_CMM_MAGIC 0xc7571590
 #define SECRETMEM_MAGIC 0x5345434d
 #endif
diff --git a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/mctp.h b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/mctp.h
index 21a9a14..f02c12f 100644
--- a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/mctp.h
+++ b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/mctp.h
@@ -46,5 +46,13 @@
 #define MCTP_ADDR_ANY 0xff
 #define MCTP_TAG_MASK 0x07
 #define MCTP_TAG_OWNER 0x08
+#define MCTP_TAG_PREALLOC 0x10
 #define MCTP_OPT_ADDR_EXT 1
+#define SIOCMCTPALLOCTAG (SIOCPROTOPRIVATE + 0)
+#define SIOCMCTPDROPTAG (SIOCPROTOPRIVATE + 1)
+struct mctp_ioc_tag_ctl {
+  mctp_eid_t peer_addr;
+  __u8 tag;
+  __u16 flags;
+};
 #endif
diff --git a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/mdio.h b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/mdio.h
index d5c9da8..7a2c9af 100644
--- a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/mdio.h
+++ b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/mdio.h
@@ -66,6 +66,19 @@
 #define MDIO_PCS_10GBRT_STAT2 33
 #define MDIO_AN_10GBT_CTRL 32
 #define MDIO_AN_10GBT_STAT 33
+#define MDIO_B10L_PMA_CTRL 2294
+#define MDIO_PMA_10T1L_STAT 2295
+#define MDIO_PCS_10T1L_CTRL 2278
+#define MDIO_PMA_PMD_BT1 18
+#define MDIO_AN_T1_CTRL 512
+#define MDIO_AN_T1_STAT 513
+#define MDIO_AN_T1_ADV_L 514
+#define MDIO_AN_T1_ADV_M 515
+#define MDIO_AN_T1_ADV_H 516
+#define MDIO_AN_T1_LP_L 517
+#define MDIO_AN_T1_LP_M 518
+#define MDIO_AN_T1_LP_H 519
+#define MDIO_PMA_PMD_BT1_CTRL 2100
 #define MDIO_PMA_LASI_RXCTRL 0x9000
 #define MDIO_PMA_LASI_TXCTRL 0x9001
 #define MDIO_PMA_LASI_CTRL 0x9002
@@ -139,6 +152,7 @@
 #define MDIO_PMA_CTRL2_10BT 0x000f
 #define MDIO_PMA_CTRL2_2_5GBT 0x0030
 #define MDIO_PMA_CTRL2_5GBT 0x0031
+#define MDIO_PMA_CTRL2_BASET1 0x003D
 #define MDIO_PCS_CTRL2_TYPE 0x0003
 #define MDIO_PCS_CTRL2_10GBR 0x0000
 #define MDIO_PCS_CTRL2_10GBX 0x0001
@@ -184,6 +198,7 @@
 #define MDIO_PMA_EXTABLE_1000BKX 0x0040
 #define MDIO_PMA_EXTABLE_100BTX 0x0080
 #define MDIO_PMA_EXTABLE_10BT 0x0100
+#define MDIO_PMA_EXTABLE_BT1 0x0800
 #define MDIO_PMA_EXTABLE_NBT 0x4000
 #define MDIO_PHYXS_LNSTAT_SYNC0 0x0001
 #define MDIO_PHYXS_LNSTAT_SYNC1 0x0002
@@ -218,6 +233,44 @@
 #define MDIO_AN_10GBT_STAT_LOCOK 0x2000
 #define MDIO_AN_10GBT_STAT_MS 0x4000
 #define MDIO_AN_10GBT_STAT_MSFLT 0x8000
+#define MDIO_PMA_10T1L_CTRL_LB_EN 0x0001
+#define MDIO_PMA_10T1L_CTRL_EEE_EN 0x0400
+#define MDIO_PMA_10T1L_CTRL_LOW_POWER 0x0800
+#define MDIO_PMA_10T1L_CTRL_2V4_EN 0x1000
+#define MDIO_PMA_10T1L_CTRL_TX_DIS 0x4000
+#define MDIO_PMA_10T1L_CTRL_PMA_RST 0x8000
+#define MDIO_PMA_10T1L_STAT_LINK 0x0001
+#define MDIO_PMA_10T1L_STAT_FAULT 0x0002
+#define MDIO_PMA_10T1L_STAT_POLARITY 0x0004
+#define MDIO_PMA_10T1L_STAT_RECV_FAULT 0x0200
+#define MDIO_PMA_10T1L_STAT_EEE 0x0400
+#define MDIO_PMA_10T1L_STAT_LOW_POWER 0x0800
+#define MDIO_PMA_10T1L_STAT_2V4_ABLE 0x1000
+#define MDIO_PMA_10T1L_STAT_LB_ABLE 0x2000
+#define MDIO_PCS_10T1L_CTRL_LB 0x4000
+#define MDIO_PCS_10T1L_CTRL_RESET 0x8000
+#define MDIO_PMA_PMD_BT1_B10L_ABLE 0x0004
+#define MDIO_AN_T1_ADV_L_PAUSE_CAP ADVERTISE_PAUSE_CAP
+#define MDIO_AN_T1_ADV_L_PAUSE_ASYM ADVERTISE_PAUSE_ASYM
+#define MDIO_AN_T1_ADV_L_FORCE_MS 0x1000
+#define MDIO_AN_T1_ADV_L_REMOTE_FAULT ADVERTISE_RFAULT
+#define MDIO_AN_T1_ADV_L_ACK ADVERTISE_LPACK
+#define MDIO_AN_T1_ADV_L_NEXT_PAGE_REQ ADVERTISE_NPAGE
+#define MDIO_AN_T1_ADV_M_B10L 0x4000
+#define MDIO_AN_T1_ADV_M_MST 0x0010
+#define MDIO_AN_T1_ADV_H_10L_TX_HI_REQ 0x1000
+#define MDIO_AN_T1_ADV_H_10L_TX_HI 0x2000
+#define MDIO_AN_T1_LP_L_PAUSE_CAP LPA_PAUSE_CAP
+#define MDIO_AN_T1_LP_L_PAUSE_ASYM LPA_PAUSE_ASYM
+#define MDIO_AN_T1_LP_L_FORCE_MS 0x1000
+#define MDIO_AN_T1_LP_L_REMOTE_FAULT LPA_RFAULT
+#define MDIO_AN_T1_LP_L_ACK LPA_LPACK
+#define MDIO_AN_T1_LP_L_NEXT_PAGE_REQ LPA_NPAGE
+#define MDIO_AN_T1_LP_M_MST 0x0010
+#define MDIO_AN_T1_LP_M_B10L 0x4000
+#define MDIO_AN_T1_LP_H_10L_TX_HI_REQ 0x1000
+#define MDIO_AN_T1_LP_H_10L_TX_HI 0x2000
+#define MDIO_PMA_PMD_BT1_CTRL_CFG_MST 0x4000
 #define MDIO_AN_EEE_ADV_100TX 0x0002
 #define MDIO_AN_EEE_ADV_1000T 0x0004
 #define MDIO_EEE_100TX MDIO_AN_EEE_ADV_100TX
diff --git a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/media-bus-format.h b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/media-bus-format.h
index 2542a32..4555de1 100644
--- a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/media-bus-format.h
+++ b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/media-bus-format.h
@@ -43,9 +43,13 @@
 #define MEDIA_BUS_FMT_RGB888_3X8_DELTA 0x101d
 #define MEDIA_BUS_FMT_RGB888_1X7X4_SPWG 0x1011
 #define MEDIA_BUS_FMT_RGB888_1X7X4_JEIDA 0x1012
+#define MEDIA_BUS_FMT_RGB666_1X30_CPADLO 0x101e
+#define MEDIA_BUS_FMT_RGB888_1X30_CPADLO 0x101f
 #define MEDIA_BUS_FMT_ARGB8888_1X32 0x100d
 #define MEDIA_BUS_FMT_RGB888_1X32_PADHI 0x100f
 #define MEDIA_BUS_FMT_RGB101010_1X30 0x1018
+#define MEDIA_BUS_FMT_RGB666_1X36_CPADLO 0x1020
+#define MEDIA_BUS_FMT_RGB888_1X36_CPADLO 0x1021
 #define MEDIA_BUS_FMT_RGB121212_1X36 0x1019
 #define MEDIA_BUS_FMT_RGB161616_1X48 0x101a
 #define MEDIA_BUS_FMT_Y8_1X8 0x2001
diff --git a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/media.h b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/media.h
index 5c8efcd..869d47b 100644
--- a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/media.h
+++ b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/media.h
@@ -18,7 +18,6 @@
  ****************************************************************************/
 #ifndef __LINUX_MEDIA_H
 #define __LINUX_MEDIA_H
-#include <stdint.h>
 #include <linux/ioctl.h>
 #include <linux/types.h>
 struct media_device_info {
@@ -117,6 +116,7 @@
 #define MEDIA_LNK_FL_LINK_TYPE (0xf << 28)
 #define MEDIA_LNK_FL_DATA_LINK (0 << 28)
 #define MEDIA_LNK_FL_INTERFACE_LINK (1 << 28)
+#define MEDIA_LNK_FL_ANCILLARY_LINK (2 << 28)
 struct media_link_desc {
   struct media_pad_desc source;
   struct media_pad_desc sink;
diff --git a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/minix_fs.h b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/minix_fs.h
index b6f1c69..0878efe 100644
--- a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/minix_fs.h
+++ b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/minix_fs.h
@@ -77,10 +77,10 @@
 };
 struct minix_dir_entry {
   __u16 inode;
-  char name[0];
+  char name[];
 };
 struct minix3_dir_entry {
   __u32 inode;
-  char name[0];
+  char name[];
 };
 #endif
diff --git a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/mmc/ioctl.h b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/mmc/ioctl.h
index afea6a5..451134b 100644
--- a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/mmc/ioctl.h
+++ b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/mmc/ioctl.h
@@ -39,7 +39,7 @@
 #define mmc_ioc_cmd_set_data(ic,ptr) ic.data_ptr = (__u64) (unsigned long) ptr
 struct mmc_ioc_multi_cmd {
   __u64 num_of_cmds;
-  struct mmc_ioc_cmd cmds[0];
+  struct mmc_ioc_cmd cmds[];
 };
 #define MMC_IOC_CMD _IOWR(MMC_BLOCK_MAJOR, 0, struct mmc_ioc_cmd)
 #define MMC_IOC_MULTI_CMD _IOWR(MMC_BLOCK_MAJOR, 1, struct mmc_ioc_multi_cmd)
diff --git a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/mptcp.h b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/mptcp.h
index 67b0ce3..da1b5af 100644
--- a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/mptcp.h
+++ b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/mptcp.h
@@ -18,12 +18,13 @@
  ****************************************************************************/
 #ifndef _UAPI_MPTCP_H
 #define _UAPI_MPTCP_H
+#include <netinet/in.h>
+#include <sys/socket.h>
 #include <linux/const.h>
 #include <linux/types.h>
 #include <linux/in.h>
 #include <linux/in6.h>
 #include <linux/socket.h>
-#include <sys/socket.h>
 #define MPTCP_SUBFLOW_FLAG_MCAP_REM _BITUL(0)
 #define MPTCP_SUBFLOW_FLAG_MCAP_LOC _BITUL(1)
 #define MPTCP_SUBFLOW_FLAG_JOIN_REM _BITUL(2)
@@ -58,6 +59,9 @@
   MPTCP_PM_ATTR_ADDR,
   MPTCP_PM_ATTR_RCV_ADD_ADDRS,
   MPTCP_PM_ATTR_SUBFLOWS,
+  MPTCP_PM_ATTR_TOKEN,
+  MPTCP_PM_ATTR_LOC_ID,
+  MPTCP_PM_ATTR_ADDR_REMOTE,
   __MPTCP_PM_ATTR_MAX
 };
 #define MPTCP_PM_ATTR_MAX (__MPTCP_PM_ATTR_MAX - 1)
@@ -77,6 +81,7 @@
 #define MPTCP_PM_ADDR_FLAG_SUBFLOW (1 << 1)
 #define MPTCP_PM_ADDR_FLAG_BACKUP (1 << 2)
 #define MPTCP_PM_ADDR_FLAG_FULLMESH (1 << 3)
+#define MPTCP_PM_ADDR_FLAG_IMPLICIT (1 << 4)
 enum {
   MPTCP_PM_CMD_UNSPEC,
   MPTCP_PM_CMD_ADD_ADDR,
@@ -86,6 +91,10 @@
   MPTCP_PM_CMD_SET_LIMITS,
   MPTCP_PM_CMD_GET_LIMITS,
   MPTCP_PM_CMD_SET_FLAGS,
+  MPTCP_PM_CMD_ANNOUNCE,
+  MPTCP_PM_CMD_REMOVE,
+  MPTCP_PM_CMD_SUBFLOW_CREATE,
+  MPTCP_PM_CMD_SUBFLOW_DESTROY,
   __MPTCP_PM_CMD_AFTER_LAST
 };
 #define MPTCP_INFO_FLAG_FALLBACK _BITUL(0)
@@ -136,6 +145,7 @@
   MPTCP_ATTR_IF_IDX,
   MPTCP_ATTR_RESET_REASON,
   MPTCP_ATTR_RESET_FLAGS,
+  MPTCP_ATTR_SERVER_SIDE,
   __MPTCP_ATTR_AFTER_LAST
 };
 #define MPTCP_ATTR_MAX (__MPTCP_ATTR_AFTER_LAST - 1)
diff --git a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/mroute6.h b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/mroute6.h
index c73765c..68480de 100644
--- a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/mroute6.h
+++ b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/mroute6.h
@@ -93,6 +93,7 @@
 #define MRT6MSG_NOCACHE 1
 #define MRT6MSG_WRONGMIF 2
 #define MRT6MSG_WHOLEPKT 3
+#define MRT6MSG_WRMIFWHOLE 4
   __u8 im6_mbz;
   __u8 im6_msgtype;
   __u16 im6_mif;
diff --git a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/ndctl.h b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/ndctl.h
index 53f8ba4..7e0d560 100644
--- a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/ndctl.h
+++ b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/ndctl.h
@@ -22,33 +22,33 @@
 struct nd_cmd_dimm_flags {
   __u32 status;
   __u32 flags;
-} __packed;
+} __attribute__((__packed__));
 struct nd_cmd_get_config_size {
   __u32 status;
   __u32 config_size;
   __u32 max_xfer;
-} __packed;
+} __attribute__((__packed__));
 struct nd_cmd_get_config_data_hdr {
   __u32 in_offset;
   __u32 in_length;
   __u32 status;
-  __u8 out_buf[0];
-} __packed;
+  __u8 out_buf[];
+} __attribute__((__packed__));
 struct nd_cmd_set_config_hdr {
   __u32 in_offset;
   __u32 in_length;
-  __u8 in_buf[0];
-} __packed;
+  __u8 in_buf[];
+} __attribute__((__packed__));
 struct nd_cmd_vendor_hdr {
   __u32 opcode;
   __u32 in_length;
-  __u8 in_buf[0];
-} __packed;
+  __u8 in_buf[];
+} __attribute__((__packed__));
 struct nd_cmd_vendor_tail {
   __u32 status;
   __u32 out_length;
-  __u8 out_buf[0];
-} __packed;
+  __u8 out_buf[];
+} __attribute__((__packed__));
 struct nd_cmd_ars_cap {
   __u64 address;
   __u64 length;
@@ -57,7 +57,7 @@
   __u32 clear_err_unit;
   __u16 flags;
   __u16 reserved;
-} __packed;
+} __attribute__((__packed__));
 struct nd_cmd_ars_start {
   __u64 address;
   __u64 length;
@@ -66,7 +66,7 @@
   __u8 reserved[5];
   __u32 status;
   __u32 scrub_time;
-} __packed;
+} __attribute__((__packed__));
 struct nd_cmd_ars_status {
   __u32 status;
   __u32 out_length;
@@ -82,15 +82,15 @@
     __u32 reserved;
     __u64 err_address;
     __u64 length;
-  } __packed records[0];
-} __packed;
+  } __attribute__((__packed__)) records[];
+} __attribute__((__packed__));
 struct nd_cmd_clear_error {
   __u64 address;
   __u64 length;
   __u32 status;
   __u8 reserved[4];
   __u64 cleared;
-} __packed;
+} __attribute__((__packed__));
 enum {
   ND_CMD_IMPLEMENTED = 0,
   ND_CMD_ARS_CAP = 1,
@@ -129,7 +129,6 @@
 #define ND_DEVICE_REGION_BLK 3
 #define ND_DEVICE_NAMESPACE_IO 4
 #define ND_DEVICE_NAMESPACE_PMEM 5
-#define ND_DEVICE_NAMESPACE_BLK 6
 #define ND_DEVICE_DAX_PMEM 7
 enum nd_driver_flags {
   ND_DRIVER_DIMM = 1 << ND_DEVICE_DIMM,
@@ -137,7 +136,6 @@
   ND_DRIVER_REGION_BLK = 1 << ND_DEVICE_REGION_BLK,
   ND_DRIVER_NAMESPACE_IO = 1 << ND_DEVICE_NAMESPACE_IO,
   ND_DRIVER_NAMESPACE_PMEM = 1 << ND_DEVICE_NAMESPACE_PMEM,
-  ND_DRIVER_NAMESPACE_BLK = 1 << ND_DEVICE_NAMESPACE_BLK,
   ND_DRIVER_DAX_PMEM = 1 << ND_DEVICE_DAX_PMEM,
 };
 enum ars_masks {
diff --git a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/neighbour.h b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/neighbour.h
index 278f7d1..b86d2ae 100644
--- a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/neighbour.h
+++ b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/neighbour.h
@@ -46,6 +46,8 @@
   NDA_NH_ID,
   NDA_FDB_EXT_ATTRS,
   NDA_FLAGS_EXT,
+  NDA_NDM_STATE_MASK,
+  NDA_NDM_FLAGS_MASK,
   __NDA_MAX
 };
 #define NDA_MAX (__NDA_MAX - 1)
@@ -106,6 +108,7 @@
   NDTPA_QUEUE_LENBYTES,
   NDTPA_MCAST_REPROBES,
   NDTPA_PAD,
+  NDTPA_INTERVAL_PROBE_TIME_MS,
   __NDTPA_MAX
 };
 #define NDTPA_MAX (__NDTPA_MAX - 1)
diff --git a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/net_dropmon.h b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/net_dropmon.h
index 01b76cb..4d2c336 100644
--- a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/net_dropmon.h
+++ b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/net_dropmon.h
@@ -36,11 +36,11 @@
 };
 struct net_dm_config_msg {
   __u32 entries;
-  struct net_dm_config_entry options[0];
+  struct net_dm_config_entry options[];
 };
 struct net_dm_alert_msg {
   __u32 entries;
-  struct net_dm_drop_point points[0];
+  struct net_dm_drop_point points[];
 };
 struct net_dm_user_msg {
   union {
@@ -87,6 +87,7 @@
   NET_DM_ATTR_SW_DROPS,
   NET_DM_ATTR_HW_DROPS,
   NET_DM_ATTR_FLOW_ACTION_COOKIE,
+  NET_DM_ATTR_REASON,
   __NET_DM_ATTR_MAX,
   NET_DM_ATTR_MAX = __NET_DM_ATTR_MAX - 1
 };
diff --git a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/netfilter/nfnetlink_queue.h b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/netfilter/nfnetlink_queue.h
index 75fa359..d100dec 100644
--- a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/netfilter/nfnetlink_queue.h
+++ b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/netfilter/nfnetlink_queue.h
@@ -70,6 +70,7 @@
   NFQA_SECCTX,
   NFQA_VLAN,
   NFQA_L2HDR,
+  NFQA_PRIORITY,
   __NFQA_MAX
 };
 #define NFQA_MAX (__NFQA_MAX - 1)
diff --git a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/netfilter/x_tables.h b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/netfilter/x_tables.h
index 46bde57..0993265 100644
--- a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/netfilter/x_tables.h
+++ b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/netfilter/x_tables.h
@@ -36,7 +36,7 @@
     } kernel;
     __u16 match_size;
   } u;
-  unsigned char data[0];
+  unsigned char data[];
 };
 struct xt_entry_target {
   union {
@@ -87,7 +87,7 @@
 struct xt_counters_info {
   char name[XT_TABLE_MAXNAMELEN];
   unsigned int num_counters;
-  struct xt_counters counters[0];
+  struct xt_counters counters[];
 };
 #define XT_INV_PROTO 0x40
 #define XT_MATCH_ITERATE(type,e,fn,args...) \
diff --git a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/netfilter_arp/arp_tables.h b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/netfilter_arp/arp_tables.h
index 340625f..862f514 100644
--- a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/netfilter_arp/arp_tables.h
+++ b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/netfilter_arp/arp_tables.h
@@ -72,7 +72,7 @@
   __u16 next_offset;
   unsigned int comefrom;
   struct xt_counters counters;
-  unsigned char elems[0];
+  unsigned char elems[];
 };
 #define ARPT_BASE_CTL 96
 #define ARPT_SO_SET_REPLACE (ARPT_BASE_CTL)
@@ -99,11 +99,11 @@
   unsigned int underflow[NF_ARP_NUMHOOKS];
   unsigned int num_counters;
   struct xt_counters __user * counters;
-  struct arpt_entry entries[0];
+  struct arpt_entry entries[];
 };
 struct arpt_get_entries {
   char name[XT_TABLE_MAXNAMELEN];
   unsigned int size;
-  struct arpt_entry entrytable[0];
+  struct arpt_entry entrytable[];
 };
 #endif
diff --git a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/netfilter_bridge/ebt_among.h b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/netfilter_bridge/ebt_among.h
index 74cd550..aa39c5b 100644
--- a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/netfilter_bridge/ebt_among.h
+++ b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/netfilter_bridge/ebt_among.h
@@ -28,7 +28,7 @@
 struct ebt_mac_wormhash {
   int table[257];
   int poolsize;
-  struct ebt_mac_wormhash_tuple pool[0];
+  struct ebt_mac_wormhash_tuple pool[];
 };
 #define ebt_mac_wormhash_size(x) ((x) ? sizeof(struct ebt_mac_wormhash) + (x)->poolsize * sizeof(struct ebt_mac_wormhash_tuple) : 0)
 struct ebt_among_info {
diff --git a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/netfilter_decnet.h b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/netfilter_decnet.h
deleted file mode 100644
index c9c16ca..0000000
--- a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/netfilter_decnet.h
+++ /dev/null
@@ -1,57 +0,0 @@
-/****************************************************************************
- ****************************************************************************
- ***
- ***   This header was automatically generated from a Linux kernel header
- ***   of the same name, to make information necessary for userspace to
- ***   call into the kernel available to libc.  It contains only constants,
- ***   structures, and macros generated from the original header, and thus,
- ***   contains no copyrightable information.
- ***
- ***   To edit the content of this header, modify the corresponding
- ***   source file (e.g. under external/kernel-headers/original/) then
- ***   run bionic/libc/kernel/tools/update_all.py
- ***
- ***   Any manual change here will be lost the next time this script will
- ***   be run. You've been warned!
- ***
- ****************************************************************************
- ****************************************************************************/
-#ifndef __LINUX_DECNET_NETFILTER_H
-#define __LINUX_DECNET_NETFILTER_H
-#include <linux/netfilter.h>
-#include <limits.h>
-#define NF_DN_NUMHOOKS 7
-#define NF_DN_PRE_ROUTING 0
-#define NF_DN_LOCAL_IN 1
-#define NF_DN_FORWARD 2
-#define NF_DN_LOCAL_OUT 3
-#define NF_DN_POST_ROUTING 4
-#define NF_DN_HELLO 5
-#define NF_DN_ROUTE 6
-enum nf_dn_hook_priorities {
-  NF_DN_PRI_FIRST = INT_MIN,
-  NF_DN_PRI_CONNTRACK = - 200,
-  NF_DN_PRI_MANGLE = - 150,
-  NF_DN_PRI_NAT_DST = - 100,
-  NF_DN_PRI_FILTER = 0,
-  NF_DN_PRI_NAT_SRC = 100,
-  NF_DN_PRI_DNRTMSG = 200,
-  NF_DN_PRI_LAST = INT_MAX,
-};
-struct nf_dn_rtmsg {
-  int nfdn_ifindex;
-};
-#define NFDN_RTMSG(r) ((unsigned char *) (r) + NLMSG_ALIGN(sizeof(struct nf_dn_rtmsg)))
-#define DNRMG_L1_GROUP 0x01
-#define DNRMG_L2_GROUP 0x02
-enum {
-  DNRNG_NLGRP_NONE,
-#define DNRNG_NLGRP_NONE DNRNG_NLGRP_NONE
-  DNRNG_NLGRP_L1,
-#define DNRNG_NLGRP_L1 DNRNG_NLGRP_L1
-  DNRNG_NLGRP_L2,
-#define DNRNG_NLGRP_L2 DNRNG_NLGRP_L2
-  __DNRNG_NLGRP_MAX
-};
-#define DNRNG_NLGRP_MAX (__DNRNG_NLGRP_MAX - 1)
-#endif
diff --git a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/netfilter_ipv4/ip_tables.h b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/netfilter_ipv4/ip_tables.h
index 033c519..14a65ad 100644
--- a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/netfilter_ipv4/ip_tables.h
+++ b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/netfilter_ipv4/ip_tables.h
@@ -79,7 +79,7 @@
   __u16 next_offset;
   unsigned int comefrom;
   struct xt_counters counters;
-  unsigned char elems[0];
+  unsigned char elems[];
 };
 #define IPT_BASE_CTL 64
 #define IPT_SO_SET_REPLACE (IPT_BASE_CTL)
@@ -113,12 +113,12 @@
   unsigned int underflow[NF_INET_NUMHOOKS];
   unsigned int num_counters;
   struct xt_counters __user * counters;
-  struct ipt_entry entries[0];
+  struct ipt_entry entries[];
 };
 struct ipt_get_entries {
   char name[XT_TABLE_MAXNAMELEN];
   unsigned int size;
-  struct ipt_entry entrytable[0];
+  struct ipt_entry entrytable[];
 };
 static __inline__ struct xt_entry_target * ipt_get_target(struct ipt_entry * e) {
   return(struct xt_entry_target *) ((char *) e + e->target_offset);
diff --git a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/netfilter_ipv6/ip6_tables.h b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/netfilter_ipv6/ip6_tables.h
index b3f426d..22071db 100644
--- a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/netfilter_ipv6/ip6_tables.h
+++ b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/netfilter_ipv6/ip6_tables.h
@@ -133,12 +133,12 @@
   unsigned int underflow[NF_INET_NUMHOOKS];
   unsigned int num_counters;
   struct xt_counters __user * counters;
-  struct ip6t_entry entries[0];
+  struct ip6t_entry entries[];
 };
 struct ip6t_get_entries {
   char name[XT_TABLE_MAXNAMELEN];
   unsigned int size;
-  struct ip6t_entry entrytable[0];
+  struct ip6t_entry entrytable[];
 };
 static __inline__ struct xt_entry_target * ip6t_get_target(struct ip6t_entry * e) {
   return(struct xt_entry_target *) ((char *) e + e->target_offset);
diff --git a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/netlink.h b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/netlink.h
index 77825cc..17d5291 100644
--- a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/netlink.h
+++ b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/netlink.h
@@ -73,6 +73,7 @@
 #define NLM_F_CREATE 0x400
 #define NLM_F_APPEND 0x800
 #define NLM_F_NONREC 0x100
+#define NLM_F_BULK 0x200
 #define NLM_F_CAPPED 0x100
 #define NLM_F_ACK_TLVS 0x200
 #define NLMSG_ALIGNTO 4U
@@ -99,6 +100,8 @@
   NLMSGERR_ATTR_OFFS,
   NLMSGERR_ATTR_COOKIE,
   NLMSGERR_ATTR_POLICY,
+  NLMSGERR_ATTR_MISS_TYPE,
+  NLMSGERR_ATTR_MISS_NEST,
   __NLMSGERR_ATTR_MAX,
   NLMSGERR_ATTR_MAX = __NLMSGERR_ATTR_MAX - 1
 };
diff --git a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/nfs4.h b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/nfs4.h
index 9d614ce..ef860e2 100644
--- a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/nfs4.h
+++ b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/nfs4.h
@@ -45,6 +45,7 @@
 #define NFS4_FH_VOL_RENAME 0x0008
 #define NFS4_OPEN_RESULT_CONFIRM 0x0002
 #define NFS4_OPEN_RESULT_LOCKTYPE_POSIX 0x0004
+#define NFS4_OPEN_RESULT_PRESERVE_UNLINKED 0x0008
 #define NFS4_OPEN_RESULT_MAY_NOTIFY_LOCK 0x0020
 #define NFS4_SHARE_ACCESS_MASK 0x000F
 #define NFS4_SHARE_ACCESS_READ 0x0001
diff --git a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/nl80211.h b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/nl80211.h
index e902178..faff80a 100644
--- a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/nl80211.h
+++ b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/nl80211.h
@@ -185,6 +185,11 @@
   NL80211_CMD_COLOR_CHANGE_COMPLETED,
   NL80211_CMD_SET_FILS_AAD,
   NL80211_CMD_ASSOC_COMEBACK,
+  NL80211_CMD_ADD_LINK,
+  NL80211_CMD_REMOVE_LINK,
+  NL80211_CMD_ADD_LINK_STA,
+  NL80211_CMD_MODIFY_LINK_STA,
+  NL80211_CMD_REMOVE_LINK_STA,
   __NL80211_CMD_AFTER_LAST,
   NL80211_CMD_MAX = __NL80211_CMD_AFTER_LAST - 1
 };
@@ -511,6 +516,17 @@
   NL80211_ATTR_MBSSID_ELEMS,
   NL80211_ATTR_RADAR_BACKGROUND,
   NL80211_ATTR_AP_SETTINGS_FLAGS,
+  NL80211_ATTR_EHT_CAPABILITY,
+  NL80211_ATTR_DISABLE_EHT,
+  NL80211_ATTR_MLO_LINKS,
+  NL80211_ATTR_MLO_LINK_ID,
+  NL80211_ATTR_MLD_ADDR,
+  NL80211_ATTR_MLO_SUPPORT,
+  NL80211_ATTR_MAX_NUM_AKM_SUITES,
+  NL80211_ATTR_EML_CAPABILITY,
+  NL80211_ATTR_MLD_CAPA_AND_OPS,
+  NL80211_ATTR_TX_HW_TIMESTAMP,
+  NL80211_ATTR_RX_HW_TIMESTAMP,
   __NL80211_ATTR_AFTER_LAST,
   NUM_NL80211_ATTR = __NL80211_ATTR_AFTER_LAST,
   NL80211_ATTR_MAX = __NL80211_ATTR_AFTER_LAST - 1
@@ -555,6 +571,8 @@
 #define NL80211_HE_MAX_CAPABILITY_LEN 54
 #define NL80211_MAX_NR_CIPHER_SUITES 5
 #define NL80211_MAX_NR_AKM_SUITES 2
+#define NL80211_EHT_MIN_CAPABILITY_LEN 13
+#define NL80211_EHT_MAX_CAPABILITY_LEN 51
 #define NL80211_MIN_REMAIN_ON_CHANNEL_TIME 10
 #define NL80211_SCAN_RSSI_THOLD_OFF - 300
 #define NL80211_CQM_TXE_MAX_INTVL 1800
@@ -616,6 +634,29 @@
   NL80211_RATE_INFO_HE_RU_ALLOC_996,
   NL80211_RATE_INFO_HE_RU_ALLOC_2x996,
 };
+enum nl80211_eht_gi {
+  NL80211_RATE_INFO_EHT_GI_0_8,
+  NL80211_RATE_INFO_EHT_GI_1_6,
+  NL80211_RATE_INFO_EHT_GI_3_2,
+};
+enum nl80211_eht_ru_alloc {
+  NL80211_RATE_INFO_EHT_RU_ALLOC_26,
+  NL80211_RATE_INFO_EHT_RU_ALLOC_52,
+  NL80211_RATE_INFO_EHT_RU_ALLOC_52P26,
+  NL80211_RATE_INFO_EHT_RU_ALLOC_106,
+  NL80211_RATE_INFO_EHT_RU_ALLOC_106P26,
+  NL80211_RATE_INFO_EHT_RU_ALLOC_242,
+  NL80211_RATE_INFO_EHT_RU_ALLOC_484,
+  NL80211_RATE_INFO_EHT_RU_ALLOC_484P242,
+  NL80211_RATE_INFO_EHT_RU_ALLOC_996,
+  NL80211_RATE_INFO_EHT_RU_ALLOC_996P484,
+  NL80211_RATE_INFO_EHT_RU_ALLOC_996P484P242,
+  NL80211_RATE_INFO_EHT_RU_ALLOC_2x996,
+  NL80211_RATE_INFO_EHT_RU_ALLOC_2x996P484,
+  NL80211_RATE_INFO_EHT_RU_ALLOC_3x996,
+  NL80211_RATE_INFO_EHT_RU_ALLOC_3x996P484,
+  NL80211_RATE_INFO_EHT_RU_ALLOC_4x996,
+};
 enum nl80211_rate_info {
   __NL80211_RATE_INFO_INVALID,
   NL80211_RATE_INFO_BITRATE,
@@ -635,6 +676,11 @@
   NL80211_RATE_INFO_HE_GI,
   NL80211_RATE_INFO_HE_DCM,
   NL80211_RATE_INFO_HE_RU_ALLOC,
+  NL80211_RATE_INFO_320_MHZ_WIDTH,
+  NL80211_RATE_INFO_EHT_MCS,
+  NL80211_RATE_INFO_EHT_NSS,
+  NL80211_RATE_INFO_EHT_GI,
+  NL80211_RATE_INFO_EHT_RU_ALLOC,
   __NL80211_RATE_INFO_AFTER_LAST,
   NL80211_RATE_INFO_MAX = __NL80211_RATE_INFO_AFTER_LAST - 1
 };
@@ -754,6 +800,10 @@
   NL80211_BAND_IFTYPE_ATTR_HE_CAP_PPE,
   NL80211_BAND_IFTYPE_ATTR_HE_6GHZ_CAPA,
   NL80211_BAND_IFTYPE_ATTR_VENDOR_ELEMS,
+  NL80211_BAND_IFTYPE_ATTR_EHT_CAP_MAC,
+  NL80211_BAND_IFTYPE_ATTR_EHT_CAP_PHY,
+  NL80211_BAND_IFTYPE_ATTR_EHT_CAP_MCS_SET,
+  NL80211_BAND_IFTYPE_ATTR_EHT_CAP_PPE,
   __NL80211_BAND_IFTYPE_ATTR_AFTER_LAST,
   NL80211_BAND_IFTYPE_ATTR_MAX = __NL80211_BAND_IFTYPE_ATTR_AFTER_LAST - 1
 };
@@ -810,6 +860,8 @@
   NL80211_FREQUENCY_ATTR_4MHZ,
   NL80211_FREQUENCY_ATTR_8MHZ,
   NL80211_FREQUENCY_ATTR_16MHZ,
+  NL80211_FREQUENCY_ATTR_NO_320MHZ,
+  NL80211_FREQUENCY_ATTR_NO_EHT,
   __NL80211_FREQUENCY_ATTR_AFTER_LAST,
   NL80211_FREQUENCY_ATTR_MAX = __NL80211_FREQUENCY_ATTR_AFTER_LAST - 1
 };
@@ -878,6 +930,7 @@
   NL80211_RRF_NO_80MHZ = 1 << 15,
   NL80211_RRF_NO_160MHZ = 1 << 16,
   NL80211_RRF_NO_HE = 1 << 17,
+  NL80211_RRF_NO_320MHZ = 1 << 18,
 };
 #define NL80211_RRF_PASSIVE_SCAN NL80211_RRF_NO_IR
 #define NL80211_RRF_NO_IBSS NL80211_RRF_NO_IR
@@ -1033,6 +1086,7 @@
   NL80211_CHAN_WIDTH_4,
   NL80211_CHAN_WIDTH_8,
   NL80211_CHAN_WIDTH_16,
+  NL80211_CHAN_WIDTH_320,
 };
 enum nl80211_bss_scan_width {
   NL80211_BSS_CHAN_WIDTH_20,
@@ -1063,6 +1117,8 @@
   NL80211_BSS_PARENT_BSSID,
   NL80211_BSS_CHAIN_SIGNAL,
   NL80211_BSS_FREQUENCY_OFFSET,
+  NL80211_BSS_MLO_LINK_ID,
+  NL80211_BSS_MLD_ADDR,
   __NL80211_BSS_AFTER_LAST,
   NL80211_BSS_MAX = __NL80211_BSS_AFTER_LAST - 1
 };
@@ -1475,6 +1531,7 @@
   NL80211_EXT_FEATURE_BSS_COLOR,
   NL80211_EXT_FEATURE_FILS_CRYPTO_OFFLOAD,
   NL80211_EXT_FEATURE_RADAR_BACKGROUND,
+  NL80211_EXT_FEATURE_POWERED_ADDR_CHANGE,
   NUM_NL80211_EXT_FEATURES,
   MAX_NL80211_EXT_FEATURES = NUM_NL80211_EXT_FEATURES - 1
 };
diff --git a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/nvme_ioctl.h b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/nvme_ioctl.h
index f2a328e..388e83f 100644
--- a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/nvme_ioctl.h
+++ b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/nvme_ioctl.h
@@ -63,7 +63,10 @@
   __u64 metadata;
   __u64 addr;
   __u32 metadata_len;
-  __u32 data_len;
+  union {
+    __u32 data_len;
+    __u32 vec_cnt;
+  };
   __u32 cdw10;
   __u32 cdw11;
   __u32 cdw12;
@@ -74,6 +77,26 @@
   __u32 rsvd2;
   __u64 result;
 };
+struct nvme_uring_cmd {
+  __u8 opcode;
+  __u8 flags;
+  __u16 rsvd1;
+  __u32 nsid;
+  __u32 cdw2;
+  __u32 cdw3;
+  __u64 metadata;
+  __u64 addr;
+  __u32 metadata_len;
+  __u32 data_len;
+  __u32 cdw10;
+  __u32 cdw11;
+  __u32 cdw12;
+  __u32 cdw13;
+  __u32 cdw14;
+  __u32 cdw15;
+  __u32 timeout_ms;
+  __u32 rsvd2;
+};
 #define nvme_admin_cmd nvme_passthru_cmd
 #define NVME_IOCTL_ID _IO('N', 0x40)
 #define NVME_IOCTL_ADMIN_CMD _IOWR('N', 0x41, struct nvme_admin_cmd)
@@ -84,4 +107,9 @@
 #define NVME_IOCTL_RESCAN _IO('N', 0x46)
 #define NVME_IOCTL_ADMIN64_CMD _IOWR('N', 0x47, struct nvme_passthru_cmd64)
 #define NVME_IOCTL_IO64_CMD _IOWR('N', 0x48, struct nvme_passthru_cmd64)
+#define NVME_IOCTL_IO64_CMD_VEC _IOWR('N', 0x49, struct nvme_passthru_cmd64)
+#define NVME_URING_CMD_IO _IOWR('N', 0x80, struct nvme_uring_cmd)
+#define NVME_URING_CMD_IO_VEC _IOWR('N', 0x81, struct nvme_uring_cmd)
+#define NVME_URING_CMD_ADMIN _IOWR('N', 0x82, struct nvme_uring_cmd)
+#define NVME_URING_CMD_ADMIN_VEC _IOWR('N', 0x83, struct nvme_uring_cmd)
 #endif
diff --git a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/omap3isp.h b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/omap3isp.h
index d2eceb7..53345e3 100644
--- a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/omap3isp.h
+++ b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/omap3isp.h
@@ -89,10 +89,11 @@
 struct omap3isp_stat_data {
   struct timeval ts;
   void __user * buf;
-  __u32 buf_size;
+  __struct_group(, frame,, __u32 buf_size;
   __u16 frame_number;
   __u16 cur_frame;
   __u16 config_counter;
+ );
 };
 #define OMAP3ISP_HIST_BINS_32 0
 #define OMAP3ISP_HIST_BINS_64 1
diff --git a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/openvswitch.h b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/openvswitch.h
index 1f8ae17..c44e950 100644
--- a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/openvswitch.h
+++ b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/openvswitch.h
@@ -44,6 +44,7 @@
   OVS_DP_ATTR_PAD,
   OVS_DP_ATTR_MASKS_CACHE_SIZE,
   OVS_DP_ATTR_PER_CPU_PIDS,
+  OVS_DP_ATTR_IFINDEX,
   __OVS_DP_ATTR_MAX
 };
 #define OVS_DP_ATTR_MAX (__OVS_DP_ATTR_MAX - 1)
@@ -190,6 +191,10 @@
   OVS_KEY_ATTR_CT_ORIG_TUPLE_IPV4,
   OVS_KEY_ATTR_CT_ORIG_TUPLE_IPV6,
   OVS_KEY_ATTR_NSH,
+  OVS_KEY_ATTR_PACKET_TYPE,
+  OVS_KEY_ATTR_ND_EXTENSIONS,
+  OVS_KEY_ATTR_TUNNEL_INFO,
+  OVS_KEY_ATTR_IPV6_EXTHDRS,
   __OVS_KEY_ATTR_MAX
 };
 #define OVS_KEY_ATTR_MAX (__OVS_KEY_ATTR_MAX - 1)
@@ -245,6 +250,9 @@
   __u8 ipv6_hlimit;
   __u8 ipv6_frag;
 };
+struct ovs_key_ipv6_exthdrs {
+  __u16 hdrs;
+};
 struct ovs_key_tcp {
   __be16 tcp_src;
   __be16 tcp_dst;
diff --git a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/pci_regs.h b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/pci_regs.h
index 46612da..87549aa 100644
--- a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/pci_regs.h
+++ b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/pci_regs.h
@@ -525,6 +525,7 @@
 #define PCI_EXP_SLTCTL_PWR_OFF 0x0400
 #define PCI_EXP_SLTCTL_EIC 0x0800
 #define PCI_EXP_SLTCTL_DLLSCE 0x1000
+#define PCI_EXP_SLTCTL_ASPL_DISABLE 0x2000
 #define PCI_EXP_SLTCTL_IBPD_DISABLE 0x4000
 #define PCI_EXP_SLTSTA 0x1a
 #define PCI_EXP_SLTSTA_ABP 0x0001
@@ -634,7 +635,8 @@
 #define PCI_EXT_CAP_ID_DVSEC 0x23
 #define PCI_EXT_CAP_ID_DLF 0x25
 #define PCI_EXT_CAP_ID_PL_16GT 0x26
-#define PCI_EXT_CAP_ID_MAX PCI_EXT_CAP_ID_PL_16GT
+#define PCI_EXT_CAP_ID_DOE 0x2E
+#define PCI_EXT_CAP_ID_MAX PCI_EXT_CAP_ID_DOE
 #define PCI_EXT_CAP_DSN_SIZEOF 12
 #define PCI_EXT_CAP_MCAST_ENDPOINT_SIZEOF 40
 #define PCI_ERR_UNCOR_STATUS 0x04
@@ -937,4 +939,25 @@
 #define PCI_PL_16GT_LE_CTRL_DSP_TX_PRESET_MASK 0x0000000F
 #define PCI_PL_16GT_LE_CTRL_USP_TX_PRESET_MASK 0x000000F0
 #define PCI_PL_16GT_LE_CTRL_USP_TX_PRESET_SHIFT 4
+#define PCI_DOE_CAP 0x04
+#define PCI_DOE_CAP_INT_SUP 0x00000001
+#define PCI_DOE_CAP_INT_MSG_NUM 0x00000ffe
+#define PCI_DOE_CTRL 0x08
+#define PCI_DOE_CTRL_ABORT 0x00000001
+#define PCI_DOE_CTRL_INT_EN 0x00000002
+#define PCI_DOE_CTRL_GO 0x80000000
+#define PCI_DOE_STATUS 0x0c
+#define PCI_DOE_STATUS_BUSY 0x00000001
+#define PCI_DOE_STATUS_INT_STATUS 0x00000002
+#define PCI_DOE_STATUS_ERROR 0x00000004
+#define PCI_DOE_STATUS_DATA_OBJECT_READY 0x80000000
+#define PCI_DOE_WRITE 0x10
+#define PCI_DOE_READ 0x14
+#define PCI_DOE_DATA_OBJECT_HEADER_1_VID 0x0000ffff
+#define PCI_DOE_DATA_OBJECT_HEADER_1_TYPE 0x00ff0000
+#define PCI_DOE_DATA_OBJECT_HEADER_2_LENGTH 0x0003ffff
+#define PCI_DOE_DATA_OBJECT_DISC_REQ_3_INDEX 0x000000ff
+#define PCI_DOE_DATA_OBJECT_DISC_RSP_3_VID 0x0000ffff
+#define PCI_DOE_DATA_OBJECT_DISC_RSP_3_PROTOCOL 0x00ff0000
+#define PCI_DOE_DATA_OBJECT_DISC_RSP_3_NEXT_INDEX 0xff000000
 #endif
diff --git a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/perf_event.h b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/perf_event.h
index b022586..8f081ed 100644
--- a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/perf_event.h
+++ b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/perf_event.h
@@ -108,7 +108,6 @@
   PERF_SAMPLE_CODE_PAGE_SIZE = 1U << 23,
   PERF_SAMPLE_WEIGHT_STRUCT = 1U << 24,
   PERF_SAMPLE_MAX = 1U << 25,
-  __PERF_SAMPLE_CALLCHAIN_EARLY = 1ULL << 63,
 };
 #define PERF_SAMPLE_WEIGHT_TYPE (PERF_SAMPLE_WEIGHT | PERF_SAMPLE_WEIGHT_STRUCT)
 enum perf_branch_sample_type_shift {
@@ -130,6 +129,7 @@
   PERF_SAMPLE_BRANCH_NO_CYCLES_SHIFT = 15,
   PERF_SAMPLE_BRANCH_TYPE_SAVE_SHIFT = 16,
   PERF_SAMPLE_BRANCH_HW_INDEX_SHIFT = 17,
+  PERF_SAMPLE_BRANCH_PRIV_SAVE_SHIFT = 18,
   PERF_SAMPLE_BRANCH_MAX_SHIFT
 };
 enum perf_branch_sample_type {
@@ -151,6 +151,7 @@
   PERF_SAMPLE_BRANCH_NO_CYCLES = 1U << PERF_SAMPLE_BRANCH_NO_CYCLES_SHIFT,
   PERF_SAMPLE_BRANCH_TYPE_SAVE = 1U << PERF_SAMPLE_BRANCH_TYPE_SAVE_SHIFT,
   PERF_SAMPLE_BRANCH_HW_INDEX = 1U << PERF_SAMPLE_BRANCH_HW_INDEX_SHIFT,
+  PERF_SAMPLE_BRANCH_PRIV_SAVE = 1U << PERF_SAMPLE_BRANCH_PRIV_SAVE_SHIFT,
   PERF_SAMPLE_BRANCH_MAX = 1U << PERF_SAMPLE_BRANCH_MAX_SHIFT,
 };
 enum {
@@ -165,8 +166,42 @@
   PERF_BR_SYSRET = 8,
   PERF_BR_COND_CALL = 9,
   PERF_BR_COND_RET = 10,
+  PERF_BR_ERET = 11,
+  PERF_BR_IRQ = 12,
+  PERF_BR_SERROR = 13,
+  PERF_BR_NO_TX = 14,
+  PERF_BR_EXTEND_ABI = 15,
   PERF_BR_MAX,
 };
+enum {
+  PERF_BR_SPEC_NA = 0,
+  PERF_BR_SPEC_WRONG_PATH = 1,
+  PERF_BR_NON_SPEC_CORRECT_PATH = 2,
+  PERF_BR_SPEC_CORRECT_PATH = 3,
+  PERF_BR_SPEC_MAX,
+};
+enum {
+  PERF_BR_NEW_FAULT_ALGN = 0,
+  PERF_BR_NEW_FAULT_DATA = 1,
+  PERF_BR_NEW_FAULT_INST = 2,
+  PERF_BR_NEW_ARCH_1 = 3,
+  PERF_BR_NEW_ARCH_2 = 4,
+  PERF_BR_NEW_ARCH_3 = 5,
+  PERF_BR_NEW_ARCH_4 = 6,
+  PERF_BR_NEW_ARCH_5 = 7,
+  PERF_BR_NEW_MAX,
+};
+enum {
+  PERF_BR_PRIV_UNKNOWN = 0,
+  PERF_BR_PRIV_USER = 1,
+  PERF_BR_PRIV_KERNEL = 2,
+  PERF_BR_PRIV_HV = 3,
+};
+#define PERF_BR_ARM64_FIQ PERF_BR_NEW_ARCH_1
+#define PERF_BR_ARM64_DEBUG_HALT PERF_BR_NEW_ARCH_2
+#define PERF_BR_ARM64_DEBUG_EXIT PERF_BR_NEW_ARCH_3
+#define PERF_BR_ARM64_DEBUG_INST PERF_BR_NEW_ARCH_4
+#define PERF_BR_ARM64_DEBUG_DATA PERF_BR_NEW_ARCH_5
 #define PERF_SAMPLE_BRANCH_PLM_ALL (PERF_SAMPLE_BRANCH_USER | PERF_SAMPLE_BRANCH_KERNEL | PERF_SAMPLE_BRANCH_HV)
 enum perf_sample_regs_abi {
   PERF_SAMPLE_REGS_ABI_NONE = 0,
@@ -191,7 +226,8 @@
   PERF_FORMAT_TOTAL_TIME_RUNNING = 1U << 1,
   PERF_FORMAT_ID = 1U << 2,
   PERF_FORMAT_GROUP = 1U << 3,
-  PERF_FORMAT_MAX = 1U << 4,
+  PERF_FORMAT_LOST = 1U << 4,
+  PERF_FORMAT_MAX = 1U << 5,
 };
 #define PERF_ATTR_SIZE_VER0 64
 #define PERF_ATTR_SIZE_VER1 72
@@ -244,7 +280,7 @@
 struct perf_event_query_bpf {
   __u32 ids_len;
   __u32 prog_cnt;
-  __u32 ids[0];
+  __u32 ids[];
 };
 #define PERF_EVENT_IOC_ENABLE _IO('$', 0)
 #define PERF_EVENT_IOC_DISABLE _IO('$', 1)
@@ -432,6 +468,8 @@
 #define PERF_MEM_LVLNUM_L2 0x02
 #define PERF_MEM_LVLNUM_L3 0x03
 #define PERF_MEM_LVLNUM_L4 0x04
+#define PERF_MEM_LVLNUM_CXL 0x09
+#define PERF_MEM_LVLNUM_IO 0x0a
 #define PERF_MEM_LVLNUM_ANY_CACHE 0x0b
 #define PERF_MEM_LVLNUM_LFB 0x0c
 #define PERF_MEM_LVLNUM_RAM 0x0d
@@ -445,6 +483,7 @@
 #define PERF_MEM_SNOOP_HITM 0x10
 #define PERF_MEM_SNOOP_SHIFT 19
 #define PERF_MEM_SNOOPX_FWD 0x01
+#define PERF_MEM_SNOOPX_PEER 0x02
 #define PERF_MEM_SNOOPX_SHIFT 38
 #define PERF_MEM_LOCK_NA 0x01
 #define PERF_MEM_LOCK_LOCKED 0x02
@@ -470,7 +509,7 @@
 struct perf_branch_entry {
   __u64 from;
   __u64 to;
-  __u64 mispred : 1, predicted : 1, in_tx : 1, abort : 1, cycles : 16, type : 4, reserved : 40;
+  __u64 mispred : 1, predicted : 1, in_tx : 1, abort : 1, cycles : 16, type : 4, spec : 2, new_type : 4, priv : 3, reserved : 31;
 };
 union perf_sample_weight {
   __u64 full;
diff --git a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/pkt_cls.h b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/pkt_cls.h
index 9fd89e0..876cb73 100644
--- a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/pkt_cls.h
+++ b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/pkt_cls.h
@@ -199,7 +199,7 @@
   short offoff;
   short hoff;
   __be32 hmask;
-  struct tc_u32_key keys[0];
+  struct tc_u32_key keys[];
 };
 struct tc_u32_mark {
   __u32 val;
@@ -209,7 +209,7 @@
 struct tc_u32_pcnt {
   __u64 rcnt;
   __u64 rhit;
-  __u64 kcnts[0];
+  __u64 kcnts[];
 };
 #define TC_U32_TERMINAL 1
 #define TC_U32_OFFSET 2
@@ -459,6 +459,10 @@
   TCA_FLOWER_KEY_MPLS_OPTS,
   TCA_FLOWER_KEY_HASH,
   TCA_FLOWER_KEY_HASH_MASK,
+  TCA_FLOWER_KEY_NUM_OF_VLANS,
+  TCA_FLOWER_KEY_PPPOE_SID,
+  TCA_FLOWER_KEY_PPP_PROTO,
+  TCA_FLOWER_KEY_L2TPV3_SID,
   __TCA_FLOWER_MAX,
 };
 #define TCA_FLOWER_MAX (__TCA_FLOWER_MAX - 1)
@@ -476,6 +480,7 @@
   TCA_FLOWER_KEY_ENC_OPTS_GENEVE,
   TCA_FLOWER_KEY_ENC_OPTS_VXLAN,
   TCA_FLOWER_KEY_ENC_OPTS_ERSPAN,
+  TCA_FLOWER_KEY_ENC_OPTS_GTP,
   __TCA_FLOWER_KEY_ENC_OPTS_MAX,
 };
 #define TCA_FLOWER_KEY_ENC_OPTS_MAX (__TCA_FLOWER_KEY_ENC_OPTS_MAX - 1)
@@ -503,6 +508,13 @@
 };
 #define TCA_FLOWER_KEY_ENC_OPT_ERSPAN_MAX (__TCA_FLOWER_KEY_ENC_OPT_ERSPAN_MAX - 1)
 enum {
+  TCA_FLOWER_KEY_ENC_OPT_GTP_UNSPEC,
+  TCA_FLOWER_KEY_ENC_OPT_GTP_PDU_TYPE,
+  TCA_FLOWER_KEY_ENC_OPT_GTP_QFI,
+  __TCA_FLOWER_KEY_ENC_OPT_GTP_MAX,
+};
+#define TCA_FLOWER_KEY_ENC_OPT_GTP_MAX (__TCA_FLOWER_KEY_ENC_OPT_GTP_MAX - 1)
+enum {
   TCA_FLOWER_KEY_MPLS_OPTS_UNSPEC,
   TCA_FLOWER_KEY_MPLS_OPTS_LSE,
   __TCA_FLOWER_KEY_MPLS_OPTS_MAX,
diff --git a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/pkt_sched.h b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/pkt_sched.h
index e298b74..c31b8bb 100644
--- a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/pkt_sched.h
+++ b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/pkt_sched.h
@@ -924,6 +924,13 @@
 #define TCA_TAPRIO_ATTR_FLAG_TXTIME_ASSIST _BITUL(0)
 #define TCA_TAPRIO_ATTR_FLAG_FULL_OFFLOAD _BITUL(1)
 enum {
+  TCA_TAPRIO_TC_ENTRY_UNSPEC,
+  TCA_TAPRIO_TC_ENTRY_INDEX,
+  TCA_TAPRIO_TC_ENTRY_MAX_SDU,
+  __TCA_TAPRIO_TC_ENTRY_CNT,
+  TCA_TAPRIO_TC_ENTRY_MAX = (__TCA_TAPRIO_TC_ENTRY_CNT - 1)
+};
+enum {
   TCA_TAPRIO_ATTR_UNSPEC,
   TCA_TAPRIO_ATTR_PRIOMAP,
   TCA_TAPRIO_ATTR_SCHED_ENTRY_LIST,
@@ -936,6 +943,7 @@
   TCA_TAPRIO_ATTR_SCHED_CYCLE_TIME_EXTENSION,
   TCA_TAPRIO_ATTR_FLAGS,
   TCA_TAPRIO_ATTR_TXTIME_DELAY,
+  TCA_TAPRIO_ATTR_TC_ENTRY,
   __TCA_TAPRIO_ATTR_MAX,
 };
 #define TCA_TAPRIO_ATTR_MAX (__TCA_TAPRIO_ATTR_MAX - 1)
diff --git a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/prctl.h b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/prctl.h
index 9b4c695..1dac726 100644
--- a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/prctl.h
+++ b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/prctl.h
@@ -179,6 +179,11 @@
 #define PR_SCHED_CORE_SCOPE_THREAD 0
 #define PR_SCHED_CORE_SCOPE_THREAD_GROUP 1
 #define PR_SCHED_CORE_SCOPE_PROCESS_GROUP 2
+#define PR_SME_SET_VL 63
+#define PR_SME_SET_VL_ONEXEC (1 << 18)
+#define PR_SME_GET_VL 64
+#define PR_SME_VL_LEN_MASK 0xffff
+#define PR_SME_VL_INHERIT (1 << 17)
 #define PR_SET_VMA 0x53564d41
 #define PR_SET_VMA_ANON_NAME 0
 #endif
diff --git a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/psci.h b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/psci.h
index bc522e7..4dead17 100644
--- a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/psci.h
+++ b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/psci.h
@@ -39,11 +39,23 @@
 #define PSCI_0_2_FN64_MIGRATE PSCI_0_2_FN64(5)
 #define PSCI_0_2_FN64_MIGRATE_INFO_UP_CPU PSCI_0_2_FN64(7)
 #define PSCI_1_0_FN_PSCI_FEATURES PSCI_0_2_FN(10)
+#define PSCI_1_0_FN_CPU_FREEZE PSCI_0_2_FN(11)
+#define PSCI_1_0_FN_CPU_DEFAULT_SUSPEND PSCI_0_2_FN(12)
+#define PSCI_1_0_FN_NODE_HW_STATE PSCI_0_2_FN(13)
 #define PSCI_1_0_FN_SYSTEM_SUSPEND PSCI_0_2_FN(14)
 #define PSCI_1_0_FN_SET_SUSPEND_MODE PSCI_0_2_FN(15)
+#define PSCI_1_0_FN_STAT_RESIDENCY PSCI_0_2_FN(16)
+#define PSCI_1_0_FN_STAT_COUNT PSCI_0_2_FN(17)
 #define PSCI_1_1_FN_SYSTEM_RESET2 PSCI_0_2_FN(18)
+#define PSCI_1_1_FN_MEM_PROTECT PSCI_0_2_FN(19)
+#define PSCI_1_1_FN_MEM_PROTECT_CHECK_RANGE PSCI_0_2_FN(19)
+#define PSCI_1_0_FN64_CPU_DEFAULT_SUSPEND PSCI_0_2_FN64(12)
+#define PSCI_1_0_FN64_NODE_HW_STATE PSCI_0_2_FN64(13)
 #define PSCI_1_0_FN64_SYSTEM_SUSPEND PSCI_0_2_FN64(14)
+#define PSCI_1_0_FN64_STAT_RESIDENCY PSCI_0_2_FN64(16)
+#define PSCI_1_0_FN64_STAT_COUNT PSCI_0_2_FN64(17)
 #define PSCI_1_1_FN64_SYSTEM_RESET2 PSCI_0_2_FN64(18)
+#define PSCI_1_1_FN64_MEM_PROTECT_CHECK_RANGE PSCI_0_2_FN64(19)
 #define PSCI_0_2_POWER_STATE_ID_MASK 0xffff
 #define PSCI_0_2_POWER_STATE_ID_SHIFT 0
 #define PSCI_0_2_POWER_STATE_TYPE_SHIFT 16
@@ -60,6 +72,8 @@
 #define PSCI_0_2_TOS_UP_MIGRATE 0
 #define PSCI_0_2_TOS_UP_NO_MIGRATE 1
 #define PSCI_0_2_TOS_MP 2
+#define PSCI_1_1_RESET_TYPE_SYSTEM_WARM_RESET 0
+#define PSCI_1_1_RESET_TYPE_VENDOR_START 0x80000000U
 #define PSCI_VERSION_MAJOR_SHIFT 16
 #define PSCI_VERSION_MINOR_MASK ((1U << PSCI_VERSION_MAJOR_SHIFT) - 1)
 #define PSCI_VERSION_MAJOR_MASK ~PSCI_VERSION_MINOR_MASK
diff --git a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/psp-sev.h b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/psp-sev.h
index 6c4f73d..8c9ec80 100644
--- a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/psp-sev.h
+++ b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/psp-sev.h
@@ -66,37 +66,37 @@
   __u32 flags;
   __u8 build;
   __u32 guest_count;
-} __packed;
+} __attribute__((__packed__));
 #define SEV_STATUS_FLAGS_CONFIG_ES 0x0100
 struct sev_user_data_pek_csr {
   __u64 address;
   __u32 length;
-} __packed;
+} __attribute__((__packed__));
 struct sev_user_data_pek_cert_import {
   __u64 pek_cert_address;
   __u32 pek_cert_len;
   __u64 oca_cert_address;
   __u32 oca_cert_len;
-} __packed;
+} __attribute__((__packed__));
 struct sev_user_data_pdh_cert_export {
   __u64 pdh_cert_address;
   __u32 pdh_cert_len;
   __u64 cert_chain_address;
   __u32 cert_chain_len;
-} __packed;
+} __attribute__((__packed__));
 struct sev_user_data_get_id {
   __u8 socket1[64];
   __u8 socket2[64];
-} __packed;
+} __attribute__((__packed__));
 struct sev_user_data_get_id2 {
   __u64 address;
   __u32 length;
-} __packed;
+} __attribute__((__packed__));
 struct sev_issue_cmd {
   __u32 cmd;
   __u64 data;
   __u32 error;
-} __packed;
+} __attribute__((__packed__));
 #define SEV_IOC_TYPE 'S'
 #define SEV_ISSUE_CMD _IOWR(SEV_IOC_TYPE, 0x0, struct sev_issue_cmd)
 #endif
diff --git a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/qrtr.h b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/qrtr.h
index c0a4c72..ee56aca 100644
--- a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/qrtr.h
+++ b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/qrtr.h
@@ -54,5 +54,5 @@
       __le32 port;
     } client;
   };
-} __packed;
+} __attribute__((__packed__));
 #endif
diff --git a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/raid/md_p.h b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/raid/md_p.h
index 4ad444a..dc3084a 100644
--- a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/raid/md_p.h
+++ b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/raid/md_p.h
@@ -168,7 +168,7 @@
   __le32 sb_csum;
   __le32 max_dev;
   __u8 pad3[64 - 32];
-  __le16 dev_roles[0];
+  __le16 dev_roles[];
 };
 #define MD_FEATURE_BITMAP_OFFSET 1
 #define MD_FEATURE_RECOVERY_OFFSET 2
diff --git a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/random.h b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/random.h
index 2d3cfef..8df411b 100644
--- a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/random.h
+++ b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/random.h
@@ -31,7 +31,7 @@
 struct rand_pool_info {
   int entropy_count;
   int buf_size;
-  __u32 buf[0];
+  __u32 buf[];
 };
 #define GRND_NONBLOCK 0x0001
 #define GRND_RANDOM 0x0002
diff --git a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/reiserfs_xattr.h b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/reiserfs_xattr.h
index 36d31f6..16a7a08 100644
--- a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/reiserfs_xattr.h
+++ b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/reiserfs_xattr.h
@@ -27,6 +27,6 @@
 struct reiserfs_security_handle {
   const char * name;
   void * value;
-  size_t length;
+  __kernel_size_t length;
 };
 #endif
diff --git a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/rfkill.h b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/rfkill.h
index 6020baf..b90e67c 100644
--- a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/rfkill.h
+++ b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/rfkill.h
@@ -63,4 +63,6 @@
 #define RFKILL_IOC_MAGIC 'R'
 #define RFKILL_IOC_NOINPUT 1
 #define RFKILL_IOCTL_NOINPUT _IO(RFKILL_IOC_MAGIC, RFKILL_IOC_NOINPUT)
+#define RFKILL_IOC_MAX_SIZE 2
+#define RFKILL_IOCTL_MAX_SIZE _IOW(RFKILL_IOC_MAGIC, RFKILL_IOC_MAX_SIZE, __u32)
 #endif
diff --git a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/rkisp1-config.h b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/rkisp1-config.h
index cea14cd..7175c23 100644
--- a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/rkisp1-config.h
+++ b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/rkisp1-config.h
@@ -67,6 +67,37 @@
 #define RKISP1_CIF_ISP_HISTOGRAM_WEIGHT_GRIDS_SIZE_V12 81
 #define RKISP1_CIF_ISP_HISTOGRAM_WEIGHT_GRIDS_SIZE RKISP1_CIF_ISP_HISTOGRAM_WEIGHT_GRIDS_SIZE_V12
 #define RKISP1_CIF_ISP_DPCC_METHODS_MAX 3
+#define RKISP1_CIF_ISP_DPCC_MODE_STAGE1_ENABLE (1U << 2)
+#define RKISP1_CIF_ISP_DPCC_OUTPUT_MODE_STAGE1_INCL_G_CENTER (1U << 0)
+#define RKISP1_CIF_ISP_DPCC_OUTPUT_MODE_STAGE1_INCL_RB_CENTER (1U << 1)
+#define RKISP1_CIF_ISP_DPCC_OUTPUT_MODE_STAGE1_G_3X3 (1U << 2)
+#define RKISP1_CIF_ISP_DPCC_OUTPUT_MODE_STAGE1_RB_3X3 (1U << 3)
+#define RKISP1_CIF_ISP_DPCC_SET_USE_STAGE1_USE_SET(n) ((n) << 0)
+#define RKISP1_CIF_ISP_DPCC_SET_USE_STAGE1_USE_FIX_SET (1U << 3)
+#define RKISP1_CIF_ISP_DPCC_METHODS_SET_PG_GREEN_ENABLE (1U << 0)
+#define RKISP1_CIF_ISP_DPCC_METHODS_SET_LC_GREEN_ENABLE (1U << 1)
+#define RKISP1_CIF_ISP_DPCC_METHODS_SET_RO_GREEN_ENABLE (1U << 2)
+#define RKISP1_CIF_ISP_DPCC_METHODS_SET_RND_GREEN_ENABLE (1U << 3)
+#define RKISP1_CIF_ISP_DPCC_METHODS_SET_RG_GREEN_ENABLE (1U << 4)
+#define RKISP1_CIF_ISP_DPCC_METHODS_SET_PG_RED_BLUE_ENABLE (1U << 8)
+#define RKISP1_CIF_ISP_DPCC_METHODS_SET_LC_RED_BLUE_ENABLE (1U << 9)
+#define RKISP1_CIF_ISP_DPCC_METHODS_SET_RO_RED_BLUE_ENABLE (1U << 10)
+#define RKISP1_CIF_ISP_DPCC_METHODS_SET_RND_RED_BLUE_ENABLE (1U << 11)
+#define RKISP1_CIF_ISP_DPCC_METHODS_SET_RG_RED_BLUE_ENABLE (1U << 12)
+#define RKISP1_CIF_ISP_DPCC_LINE_THRESH_G(v) ((v) << 0)
+#define RKISP1_CIF_ISP_DPCC_LINE_THRESH_RB(v) ((v) << 8)
+#define RKISP1_CIF_ISP_DPCC_LINE_MAD_FAC_G(v) ((v) << 0)
+#define RKISP1_CIF_ISP_DPCC_LINE_MAD_FAC_RB(v) ((v) << 8)
+#define RKISP1_CIF_ISP_DPCC_PG_FAC_G(v) ((v) << 0)
+#define RKISP1_CIF_ISP_DPCC_PG_FAC_RB(v) ((v) << 8)
+#define RKISP1_CIF_ISP_DPCC_RND_THRESH_G(v) ((v) << 0)
+#define RKISP1_CIF_ISP_DPCC_RND_THRESH_RB(v) ((v) << 8)
+#define RKISP1_CIF_ISP_DPCC_RG_FAC_G(v) ((v) << 0)
+#define RKISP1_CIF_ISP_DPCC_RG_FAC_RB(v) ((v) << 8)
+#define RKISP1_CIF_ISP_DPCC_RO_LIMITS_n_G(n,v) ((v) << ((n) * 4))
+#define RKISP1_CIF_ISP_DPCC_RO_LIMITS_n_RB(n,v) ((v) << ((n) * 4 + 2))
+#define RKISP1_CIF_ISP_DPCC_RND_OFFS_n_G(n,v) ((v) << ((n) * 4))
+#define RKISP1_CIF_ISP_DPCC_RND_OFFS_n_RB(n,v) ((v) << ((n) * 4 + 2))
 #define RKISP1_CIF_ISP_DPF_MAX_NLF_COEFFS 17
 #define RKISP1_CIF_ISP_DPF_MAX_SPATIAL_COEFFS 6
 #define RKISP1_CIF_ISP_STAT_AWB (1U << 0)
diff --git a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/romfs_fs.h b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/romfs_fs.h
index 8e98714..bffbaf9 100644
--- a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/romfs_fs.h
+++ b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/romfs_fs.h
@@ -35,14 +35,14 @@
   __be32 word1;
   __be32 size;
   __be32 checksum;
-  char name[0];
+  char name[];
 };
 struct romfs_inode {
   __be32 next;
   __be32 spec;
   __be32 size;
   __be32 checksum;
-  char name[0];
+  char name[];
 };
 #define ROMFH_TYPE 7
 #define ROMFH_HRD 0
diff --git a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/rpmsg.h b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/rpmsg.h
index c5b5a76..9ceccdd 100644
--- a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/rpmsg.h
+++ b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/rpmsg.h
@@ -28,4 +28,6 @@
 };
 #define RPMSG_CREATE_EPT_IOCTL _IOW(0xb5, 0x1, struct rpmsg_endpoint_info)
 #define RPMSG_DESTROY_EPT_IOCTL _IO(0xb5, 0x2)
+#define RPMSG_CREATE_DEV_IOCTL _IOW(0xb5, 0x3, struct rpmsg_endpoint_info)
+#define RPMSG_RELEASE_DEV_IOCTL _IOW(0xb5, 0x4, struct rpmsg_endpoint_info)
 #endif
diff --git a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/rseq.h b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/rseq.h
index ba0ceb1..29a9457 100644
--- a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/rseq.h
+++ b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/rseq.h
@@ -47,22 +47,7 @@
 struct rseq {
   __u32 cpu_id_start;
   __u32 cpu_id;
-  union {
-    __u64 ptr64;
-#ifdef __LP64__
-    __u64 ptr;
-#else
-    struct {
-#if defined(__BYTE_ORDER) && __BYTE_ORDER == __BIG_ENDIAN || defined(__BIG_ENDIAN)
-      __u32 padding;
-      __u32 ptr32;
-#else
-      __u32 ptr32;
-      __u32 padding;
-#endif
-    } ptr;
-#endif
-  } rseq_cs;
+  __u64 rseq_cs;
   __u32 flags;
 } __attribute__((aligned(4 * sizeof(__u64))));
 #endif
diff --git a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/rtc.h b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/rtc.h
index cf5f22a..d75bc45 100644
--- a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/rtc.h
+++ b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/rtc.h
@@ -96,7 +96,8 @@
 #define RTC_FEATURE_UPDATE_INTERRUPT 4
 #define RTC_FEATURE_CORRECTION 5
 #define RTC_FEATURE_BACKUP_SWITCH_MODE 6
-#define RTC_FEATURE_CNT 7
+#define RTC_FEATURE_ALARM_WAKEUP_ONLY 7
+#define RTC_FEATURE_CNT 8
 #define RTC_PARAM_FEATURES 0
 #define RTC_PARAM_CORRECTION 1
 #define RTC_PARAM_BACKUP_SWITCH_MODE 2
diff --git a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/rtnetlink.h b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/rtnetlink.h
index 91c3ee4..7201827 100644
--- a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/rtnetlink.h
+++ b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/rtnetlink.h
@@ -131,6 +131,8 @@
 #define RTM_NEWSTATS RTM_NEWSTATS
   RTM_GETSTATS = 94,
 #define RTM_GETSTATS RTM_GETSTATS
+  RTM_SETSTATS,
+#define RTM_SETSTATS RTM_SETSTATS
   RTM_NEWCACHEREPORT = 96,
 #define RTM_NEWCACHEREPORT RTM_NEWCACHEREPORT
   RTM_NEWCHAIN = 100,
@@ -163,6 +165,12 @@
 #define RTM_DELNEXTHOPBUCKET RTM_DELNEXTHOPBUCKET
   RTM_GETNEXTHOPBUCKET,
 #define RTM_GETNEXTHOPBUCKET RTM_GETNEXTHOPBUCKET
+  RTM_NEWTUNNEL = 120,
+#define RTM_NEWTUNNEL RTM_NEWTUNNEL
+  RTM_DELTUNNEL,
+#define RTM_DELTUNNEL RTM_DELTUNNEL
+  RTM_GETTUNNEL,
+#define RTM_GETTUNNEL RTM_GETTUNNEL
   __RTM_MAX,
 #define RTM_MAX (((__RTM_MAX + 3) & ~3) - 1)
 };
@@ -315,7 +323,7 @@
 #define RTNH_DATA(rtnh) ((struct rtattr *) (((char *) (rtnh)) + RTNH_LENGTH(0)))
 struct rtvia {
   __kernel_sa_family_t rtvia_family;
-  __u8 rtvia_addr[0];
+  __u8 rtvia_addr[];
 };
 struct rta_cacheinfo {
   __u32 rta_clntref;
@@ -561,6 +569,10 @@
 #define RTNLGRP_BRVLAN RTNLGRP_BRVLAN
   RTNLGRP_MCTP_IFADDR,
 #define RTNLGRP_MCTP_IFADDR RTNLGRP_MCTP_IFADDR
+  RTNLGRP_TUNNEL,
+#define RTNLGRP_TUNNEL RTNLGRP_TUNNEL
+  RTNLGRP_STATS,
+#define RTNLGRP_STATS RTNLGRP_STATS
   __RTNLGRP_MAX
 };
 #define RTNLGRP_MAX (__RTNLGRP_MAX - 1)
@@ -592,4 +604,5 @@
 #define RTEXT_FILTER_MRP (1 << 4)
 #define RTEXT_FILTER_CFM_CONFIG (1 << 5)
 #define RTEXT_FILTER_CFM_STATUS (1 << 6)
+#define RTEXT_FILTER_MST (1 << 7)
 #endif
diff --git a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/sctp.h b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/sctp.h
index 765d6c9..4bf2412 100644
--- a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/sctp.h
+++ b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/sctp.h
@@ -210,7 +210,7 @@
   __u16 sac_outbound_streams;
   __u16 sac_inbound_streams;
   sctp_assoc_t sac_assoc_id;
-  __u8 sac_info[0];
+  __u8 sac_info[];
 };
 enum sctp_sac_state {
   SCTP_COMM_UP,
@@ -244,7 +244,7 @@
   __u32 sre_length;
   __be16 sre_error;
   sctp_assoc_t sre_assoc_id;
-  __u8 sre_data[0];
+  __u8 sre_data[];
 };
 struct sctp_send_failed {
   __u16 ssf_type;
@@ -253,7 +253,7 @@
   __u32 ssf_error;
   struct sctp_sndrcvinfo ssf_info;
   sctp_assoc_t ssf_assoc_id;
-  __u8 ssf_data[0];
+  __u8 ssf_data[];
 };
 struct sctp_send_failed_event {
   __u16 ssf_type;
@@ -262,7 +262,7 @@
   __u32 ssf_error;
   struct sctp_sndinfo ssfe_info;
   sctp_assoc_t ssf_assoc_id;
-  __u8 ssf_data[0];
+  __u8 ssf_data[];
 };
 enum sctp_ssf_flags {
   SCTP_DATA_UNSENT,
@@ -570,7 +570,7 @@
 struct sctp_getaddrs {
   sctp_assoc_t assoc_id;
   __u32 addr_num;
-  __u8 addrs[0];
+  __u8 addrs[];
 };
 struct sctp_assoc_stats {
   sctp_assoc_t sas_assoc_id;
diff --git a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/seccomp.h b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/seccomp.h
index e58b421..cc506ae 100644
--- a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/seccomp.h
+++ b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/seccomp.h
@@ -32,6 +32,7 @@
 #define SECCOMP_FILTER_FLAG_SPEC_ALLOW (1UL << 2)
 #define SECCOMP_FILTER_FLAG_NEW_LISTENER (1UL << 3)
 #define SECCOMP_FILTER_FLAG_TSYNC_ESRCH (1UL << 4)
+#define SECCOMP_FILTER_FLAG_WAIT_KILLABLE_RECV (1UL << 5)
 #define SECCOMP_RET_KILL_PROCESS 0x80000000U
 #define SECCOMP_RET_KILL_THREAD 0x00000000U
 #define SECCOMP_RET_KILL SECCOMP_RET_KILL_THREAD
diff --git a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/sed-opal.h b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/sed-opal.h
index a20197a..f7ac9bd 100644
--- a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/sed-opal.h
+++ b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/sed-opal.h
@@ -112,6 +112,16 @@
   __u64 flags;
   __u64 priv;
 };
+#define OPAL_FL_SUPPORTED 0x00000001
+#define OPAL_FL_LOCKING_SUPPORTED 0x00000002
+#define OPAL_FL_LOCKING_ENABLED 0x00000004
+#define OPAL_FL_LOCKED 0x00000008
+#define OPAL_FL_MBR_ENABLED 0x00000010
+#define OPAL_FL_MBR_DONE 0x00000020
+struct opal_status {
+  __u32 flags;
+  __u32 reserved;
+};
 #define IOC_OPAL_SAVE _IOW('p', 220, struct opal_lock_unlock)
 #define IOC_OPAL_LOCK_UNLOCK _IOW('p', 221, struct opal_lock_unlock)
 #define IOC_OPAL_TAKE_OWNERSHIP _IOW('p', 222, struct opal_key)
@@ -128,4 +138,5 @@
 #define IOC_OPAL_MBR_DONE _IOW('p', 233, struct opal_mbr_done)
 #define IOC_OPAL_WRITE_SHADOW_MBR _IOW('p', 234, struct opal_shadow_mbr)
 #define IOC_OPAL_GENERIC_TABLE_RW _IOW('p', 235, struct opal_read_write_table)
+#define IOC_OPAL_GET_STATUS _IOR('p', 236, struct opal_status)
 #endif
diff --git a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/seg6.h b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/seg6.h
index f180485..b8206cc 100644
--- a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/seg6.h
+++ b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/seg6.h
@@ -28,7 +28,7 @@
   __u8 first_segment;
   __u8 flags;
   __u16 tag;
-  struct in6_addr segments[0];
+  struct in6_addr segments[];
 };
 #define SR6_FLAG1_PROTECTED (1 << 6)
 #define SR6_FLAG1_OAM (1 << 5)
diff --git a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/seg6_iptunnel.h b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/seg6_iptunnel.h
index 1c1ad83..19d8ba4 100644
--- a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/seg6_iptunnel.h
+++ b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/seg6_iptunnel.h
@@ -27,12 +27,14 @@
 #define SEG6_IPTUNNEL_MAX (__SEG6_IPTUNNEL_MAX - 1)
 struct seg6_iptunnel_encap {
   int mode;
-  struct ipv6_sr_hdr srh[0];
+  struct ipv6_sr_hdr srh[];
 };
 #define SEG6_IPTUN_ENCAP_SIZE(x) ((sizeof(* x)) + (((x)->srh->hdrlen + 1) << 3))
 enum {
   SEG6_IPTUN_MODE_INLINE,
   SEG6_IPTUN_MODE_ENCAP,
   SEG6_IPTUN_MODE_L2ENCAP,
+  SEG6_IPTUN_MODE_ENCAP_RED,
+  SEG6_IPTUN_MODE_L2ENCAP_RED,
 };
 #endif
diff --git a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/seg6_local.h b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/seg6_local.h
index 61a8d97..4d062e8 100644
--- a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/seg6_local.h
+++ b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/seg6_local.h
@@ -31,6 +31,7 @@
   SEG6_LOCAL_BPF,
   SEG6_LOCAL_VRFTABLE,
   SEG6_LOCAL_COUNTERS,
+  SEG6_LOCAL_FLAVORS,
   __SEG6_LOCAL_MAX,
 };
 #define SEG6_LOCAL_MAX (__SEG6_LOCAL_MAX - 1)
@@ -71,4 +72,21 @@
   __SEG6_LOCAL_CNT_MAX,
 };
 #define SEG6_LOCAL_CNT_MAX (__SEG6_LOCAL_CNT_MAX - 1)
+enum {
+  SEG6_LOCAL_FLV_UNSPEC,
+  SEG6_LOCAL_FLV_OPERATION,
+  SEG6_LOCAL_FLV_LCBLOCK_BITS,
+  SEG6_LOCAL_FLV_LCNODE_FN_BITS,
+  __SEG6_LOCAL_FLV_MAX,
+};
+#define SEG6_LOCAL_FLV_MAX (__SEG6_LOCAL_FLV_MAX - 1)
+enum {
+  SEG6_LOCAL_FLV_OP_UNSPEC,
+  SEG6_LOCAL_FLV_OP_PSP,
+  SEG6_LOCAL_FLV_OP_USP,
+  SEG6_LOCAL_FLV_OP_USD,
+  SEG6_LOCAL_FLV_OP_NEXT_CSID,
+  __SEG6_LOCAL_FLV_OP_MAX
+};
+#define SEG6_LOCAL_FLV_OP_MAX (__SEG6_LOCAL_FLV_OP_MAX - 1)
 #endif
diff --git a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/serial.h b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/serial.h
index e4e903d..5a83c62 100644
--- a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/serial.h
+++ b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/serial.h
@@ -96,9 +96,20 @@
 #define SER_RS485_RTS_AFTER_SEND (1 << 2)
 #define SER_RS485_RX_DURING_TX (1 << 4)
 #define SER_RS485_TERMINATE_BUS (1 << 5)
+#define SER_RS485_ADDRB (1 << 6)
+#define SER_RS485_ADDR_RECV (1 << 7)
+#define SER_RS485_ADDR_DEST (1 << 8)
   __u32 delay_rts_before_send;
   __u32 delay_rts_after_send;
-  __u32 padding[5];
+  union {
+    __u32 padding[5];
+    struct {
+      __u8 addr_recv;
+      __u8 addr_dest;
+      __u8 padding0[2];
+      __u32 padding1[4];
+    };
+  };
 };
 struct serial_iso7816 {
   __u32 flags;
diff --git a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/serial_core.h b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/serial_core.h
index 0caf698..1e04429 100644
--- a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/serial_core.h
+++ b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/serial_core.h
@@ -47,6 +47,7 @@
 #define PORT_SUNSAB 39
 #define PORT_NPCM 40
 #define PORT_TEGRA_TCU 41
+#define PORT_ASPEED_VUART 42
 #define PORT_PCH_8LINE 44
 #define PORT_PCH_2LINE 45
 #define PORT_DZ 46
@@ -68,8 +69,6 @@
 #define PORT_IMX 62
 #define PORT_MPSC 63
 #define PORT_TXX9 64
-#define PORT_VR41XX_SIU 65
-#define PORT_VR41XX_DSIU 66
 #define PORT_S3C2400 67
 #define PORT_M32R_SIO 68
 #define PORT_JSM 69
@@ -122,4 +121,5 @@
 #define PORT_SIFIVE_V0 120
 #define PORT_SUNIX 121
 #define PORT_LINFLEXUART 122
+#define PORT_SUNPLUS 123
 #endif
diff --git a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/serial_reg.h b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/serial_reg.h
index b6648f8..e41e649 100644
--- a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/serial_reg.h
+++ b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/serial_reg.h
@@ -99,7 +99,7 @@
 #define UART_LSR_PE 0x04
 #define UART_LSR_OE 0x02
 #define UART_LSR_DR 0x01
-#define UART_LSR_BRK_ERROR_BITS 0x1E
+#define UART_LSR_BRK_ERROR_BITS (UART_LSR_BI | UART_LSR_FE | UART_LSR_PE | UART_LSR_OE)
 #define UART_MSR 6
 #define UART_MSR_DCD 0x80
 #define UART_MSR_RI 0x40
@@ -109,7 +109,7 @@
 #define UART_MSR_TERI 0x04
 #define UART_MSR_DDSR 0x02
 #define UART_MSR_DCTS 0x01
-#define UART_MSR_ANY_DELTA 0x0F
+#define UART_MSR_ANY_DELTA (UART_MSR_DDCD | UART_MSR_TERI | UART_MSR_DDSR | UART_MSR_DCTS)
 #define UART_SCR 7
 #define UART_DLL 0
 #define UART_DLM 1
diff --git a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/sev-guest.h b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/sev-guest.h
new file mode 100644
index 0000000..796479a
--- /dev/null
+++ b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/sev-guest.h
@@ -0,0 +1,56 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef __UAPI_LINUX_SEV_GUEST_H_
+#define __UAPI_LINUX_SEV_GUEST_H_
+#include <linux/types.h>
+struct snp_report_req {
+  __u8 user_data[64];
+  __u32 vmpl;
+  __u8 rsvd[28];
+};
+struct snp_report_resp {
+  __u8 data[4000];
+};
+struct snp_derived_key_req {
+  __u32 root_key_select;
+  __u32 rsvd;
+  __u64 guest_field_select;
+  __u32 vmpl;
+  __u32 guest_svn;
+  __u64 tcb_version;
+};
+struct snp_derived_key_resp {
+  __u8 data[64];
+};
+struct snp_guest_request_ioctl {
+  __u8 msg_version;
+  __u64 req_data;
+  __u64 resp_data;
+  __u64 fw_err;
+};
+struct snp_ext_report_req {
+  struct snp_report_req data;
+  __u64 certs_address;
+  __u32 certs_len;
+};
+#define SNP_GUEST_REQ_IOC_TYPE 'S'
+#define SNP_GET_REPORT _IOWR(SNP_GUEST_REQ_IOC_TYPE, 0x0, struct snp_guest_request_ioctl)
+#define SNP_GET_DERIVED_KEY _IOWR(SNP_GUEST_REQ_IOC_TYPE, 0x1, struct snp_guest_request_ioctl)
+#define SNP_GET_EXT_REPORT _IOWR(SNP_GUEST_REQ_IOC_TYPE, 0x2, struct snp_guest_request_ioctl)
+#endif
diff --git a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/smc.h b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/smc.h
index 01494da..200c9b6 100644
--- a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/smc.h
+++ b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/smc.h
@@ -57,6 +57,9 @@
   SMC_NETLINK_DUMP_SEID,
   SMC_NETLINK_ENABLE_SEID,
   SMC_NETLINK_DISABLE_SEID,
+  SMC_NETLINK_DUMP_HS_LIMITATION,
+  SMC_NETLINK_ENABLE_HS_LIMITATION,
+  SMC_NETLINK_DISABLE_HS_LIMITATION,
 };
 enum {
   SMC_GEN_UNSPEC,
@@ -109,6 +112,7 @@
   SMC_NLA_LGR_R_V2,
   SMC_NLA_LGR_R_NET_COOKIE,
   SMC_NLA_LGR_R_PAD,
+  SMC_NLA_LGR_R_BUF_TYPE,
   __SMC_NLA_LGR_R_MAX,
   SMC_NLA_LGR_R_MAX = __SMC_NLA_LGR_R_MAX - 1
 };
@@ -249,4 +253,11 @@
   __SMC_NLA_SEID_TABLE_MAX,
   SMC_NLA_SEID_TABLE_MAX = __SMC_NLA_SEID_TABLE_MAX - 1
 };
+enum {
+  SMC_NLA_HS_LIMITATION_UNSPEC,
+  SMC_NLA_HS_LIMITATION_ENABLED,
+  __SMC_NLA_HS_LIMITATION_MAX,
+  SMC_NLA_HS_LIMITATION_MAX = __SMC_NLA_HS_LIMITATION_MAX - 1
+};
+#define SMC_LIMIT_HS 1
 #endif
diff --git a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/snmp.h b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/snmp.h
index a503a7e..d98f39e 100644
--- a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/snmp.h
+++ b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/snmp.h
@@ -305,6 +305,8 @@
   LINUX_MIB_TLSRXDEVICE,
   LINUX_MIB_TLSDECRYPTERROR,
   LINUX_MIB_TLSRXDEVICERESYNC,
+  LINUX_MIB_TLSDECRYPTRETRY,
+  LINUX_MIB_TLSRXNOPADVIOL,
   __LINUX_MIB_TLSMAX
 };
 #endif
diff --git a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/socket.h b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/socket.h
index be16548..4a530a8 100644
--- a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/socket.h
+++ b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/socket.h
@@ -32,4 +32,7 @@
 #define SOCK_SNDBUF_LOCK 1
 #define SOCK_RCVBUF_LOCK 2
 #define SOCK_BUF_LOCK_MASK (SOCK_SNDBUF_LOCK | SOCK_RCVBUF_LOCK)
+#define SOCK_TXREHASH_DEFAULT 255
+#define SOCK_TXREHASH_DISABLED 0
+#define SOCK_TXREHASH_ENABLED 1
 #endif
diff --git a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/spi/spi.h b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/spi/spi.h
index 39267a2..693e752 100644
--- a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/spi/spi.h
+++ b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/spi/spi.h
@@ -40,5 +40,6 @@
 #define SPI_TX_OCTAL _BITUL(13)
 #define SPI_RX_OCTAL _BITUL(14)
 #define SPI_3WIRE_HIZ _BITUL(15)
-#define SPI_MODE_USER_MASK (_BITUL(16) - 1)
+#define SPI_RX_CPHA_FLIP _BITUL(16)
+#define SPI_MODE_USER_MASK (_BITUL(17) - 1)
 #endif
diff --git a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/stat.h b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/stat.h
index a15b9b5..89304ce 100644
--- a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/stat.h
+++ b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/stat.h
@@ -78,7 +78,8 @@
   __u32 stx_dev_major;
   __u32 stx_dev_minor;
   __u64 stx_mnt_id;
-  __u64 __spare2;
+  __u32 stx_dio_mem_align;
+  __u32 stx_dio_offset_align;
   __u64 __spare3[12];
 };
 #define STATX_TYPE 0x00000001U
@@ -95,6 +96,7 @@
 #define STATX_BASIC_STATS 0x000007ffU
 #define STATX_BTIME 0x00000800U
 #define STATX_MNT_ID 0x00001000U
+#define STATX_DIOALIGN 0x00002000U
 #define STATX__RESERVED 0x80000000U
 #define STATX_ALL 0x00000fffU
 #define STATX_ATTR_COMPRESSED 0x00000004
diff --git a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/stddef.h b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/stddef.h
index d5cdf80..6bc6925 100644
--- a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/stddef.h
+++ b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/stddef.h
@@ -16,9 +16,12 @@
  ***
  ****************************************************************************
  ****************************************************************************/
+#ifndef _UAPI_LINUX_STDDEF_H
+#define _UAPI_LINUX_STDDEF_H
 #include <linux/compiler_types.h>
 #ifndef __always_inline
 #define __always_inline inline
 #endif
 #define __struct_group(TAG,NAME,ATTRS,MEMBERS...) union { struct { MEMBERS } ATTRS; struct TAG { MEMBERS } ATTRS NAME; }
 #define __DECLARE_FLEX_ARRAY(TYPE,NAME) struct { struct { } __empty_ ##NAME; TYPE NAME[]; }
+#endif
diff --git a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/stm.h b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/stm.h
index 1c7f7f3..b1453f7 100644
--- a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/stm.h
+++ b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/stm.h
@@ -28,7 +28,7 @@
   __u16 width;
   __u16 __reserved_0;
   __u32 __reserved_1;
-  char id[0];
+  char id[];
 };
 #define STP_POLICY_ID_SET _IOWR('%', 0, struct stp_policy_id)
 #define STP_POLICY_ID_GET _IOR('%', 1, struct stp_policy_id)
diff --git a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/sysctl.h b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/sysctl.h
index ae9c2ba..ff17f7c 100644
--- a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/sysctl.h
+++ b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/sysctl.h
@@ -516,6 +516,7 @@
   NET_NEIGH_GC_THRESH3 = 16,
   NET_NEIGH_RETRANS_TIME_MS = 17,
   NET_NEIGH_REACHABLE_TIME_MS = 18,
+  NET_NEIGH_INTERVAL_PROBE_TIME_MS = 19,
 };
 enum {
   NET_DCCP_DEFAULT = 1,
diff --git a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/target_core_user.h b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/target_core_user.h
index dcba00e..83e155e 100644
--- a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/target_core_user.h
+++ b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/target_core_user.h
@@ -34,7 +34,7 @@
   __u32 cmdr_size;
   __u32 cmd_head;
   __u32 cmd_tail __attribute__((__aligned__(ALIGN_SIZE)));
-} __packed;
+} __attribute__((__packed__));
 enum tcmu_opcode {
   TCMU_OP_PAD = 0,
   TCMU_OP_CMD,
@@ -48,7 +48,7 @@
 #define TCMU_UFLAG_READ_LEN 0x2
 #define TCMU_UFLAG_KEEP_BUF 0x4
   __u8 uflags;
-} __packed;
+} __attribute__((__packed__));
 #define TCMU_OP_MASK 0x7
 #define TCMU_SENSE_BUFFERSIZE 96
 struct tcmu_cmd_entry {
@@ -71,7 +71,7 @@
       char sense_buffer[TCMU_SENSE_BUFFERSIZE];
     } rsp;
   };
-} __packed;
+} __attribute__((__packed__));
 struct tcmu_tmr_entry {
   struct tcmu_cmd_entry_hdr hdr;
 #define TCMU_TMR_UNKNOWN 0
@@ -89,8 +89,8 @@
   __u32 cmd_cnt;
   __u64 __pad3;
   __u64 __pad4;
-  __u16 cmd_ids[0];
-} __packed;
+  __u16 cmd_ids[];
+} __attribute__((__packed__));
 #define TCMU_OP_ALIGN_SIZE sizeof(__u64)
 enum tcmu_genl_cmd {
   TCMU_CMD_UNSPEC,
diff --git a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/taskstats.h b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/taskstats.h
index efa5b4a..c1cda52 100644
--- a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/taskstats.h
+++ b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/taskstats.h
@@ -19,7 +19,7 @@
 #ifndef _LINUX_TASKSTATS_H
 #define _LINUX_TASKSTATS_H
 #include <linux/types.h>
-#define TASKSTATS_VERSION 11
+#define TASKSTATS_VERSION 13
 #define TS_COMM_LEN 32
 struct taskstats {
   __u16 version;
@@ -71,6 +71,12 @@
   __u64 ac_btime64;
   __u64 compact_count;
   __u64 compact_delay_total;
+  __u32 ac_tgid;
+  __u64 ac_tgetime __attribute__((aligned(8)));
+  __u64 ac_exe_dev;
+  __u64 ac_exe_inode;
+  __u64 wpcopy_count;
+  __u64 wpcopy_delay_total;
 };
 enum {
   TASKSTATS_CMD_UNSPEC = 0,
diff --git a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/tc_act/tc_skbedit.h b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/tc_act/tc_skbedit.h
index 5706d4d..b041a6a 100644
--- a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/tc_act/tc_skbedit.h
+++ b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/tc_act/tc_skbedit.h
@@ -25,6 +25,7 @@
 #define SKBEDIT_F_PTYPE 0x8
 #define SKBEDIT_F_MASK 0x10
 #define SKBEDIT_F_INHERITDSFIELD 0x20
+#define SKBEDIT_F_TXQ_SKBHASH 0x40
 struct tc_skbedit {
   tc_gen;
 };
@@ -39,6 +40,7 @@
   TCA_SKBEDIT_PTYPE,
   TCA_SKBEDIT_MASK,
   TCA_SKBEDIT_FLAGS,
+  TCA_SKBEDIT_QUEUE_MAPPING_MAX,
   __TCA_SKBEDIT_MAX
 };
 #define TCA_SKBEDIT_MAX (__TCA_SKBEDIT_MAX - 1)
diff --git a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/tee.h b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/tee.h
index 5cfe713..404b7b2 100644
--- a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/tee.h
+++ b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/tee.h
@@ -22,8 +22,6 @@
 #include <linux/types.h>
 #define TEE_IOC_MAGIC 0xa4
 #define TEE_IOC_BASE 0
-#define TEE_IOCTL_SHM_MAPPED 0x1
-#define TEE_IOCTL_SHM_DMA_BUF 0x2
 #define TEE_MAX_ARG_SIZE 1024
 #define TEE_GEN_CAP_GP (1 << 0)
 #define TEE_GEN_CAP_PRIVILEGED (1 << 1)
diff --git a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/thermal.h b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/thermal.h
index 72ea378..2f9dccb 100644
--- a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/thermal.h
+++ b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/thermal.h
@@ -54,6 +54,10 @@
   THERMAL_GENL_ATTR_CDEV_MAX_STATE,
   THERMAL_GENL_ATTR_CDEV_NAME,
   THERMAL_GENL_ATTR_GOV_NAME,
+  THERMAL_GENL_ATTR_CPU_CAPABILITY,
+  THERMAL_GENL_ATTR_CPU_CAPABILITY_ID,
+  THERMAL_GENL_ATTR_CPU_CAPABILITY_PERFORMANCE,
+  THERMAL_GENL_ATTR_CPU_CAPABILITY_EFFICIENCY,
   __THERMAL_GENL_ATTR_MAX,
 };
 #define THERMAL_GENL_ATTR_MAX (__THERMAL_GENL_ATTR_MAX - 1)
@@ -77,6 +81,7 @@
   THERMAL_GENL_EVENT_CDEV_DELETE,
   THERMAL_GENL_EVENT_CDEV_STATE_UPDATE,
   THERMAL_GENL_EVENT_TZ_GOV_CHANGE,
+  THERMAL_GENL_EVENT_CPU_CAPABILITY_CHANGE,
   __THERMAL_GENL_EVENT_MAX,
 };
 #define THERMAL_GENL_EVENT_MAX (__THERMAL_GENL_EVENT_MAX - 1)
diff --git a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/tipc_config.h b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/tipc_config.h
index a371e37..c6ee1d1 100644
--- a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/tipc_config.h
+++ b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/tipc_config.h
@@ -22,7 +22,6 @@
 #include <linux/string.h>
 #include <linux/tipc.h>
 #include <asm/byteorder.h>
-#include <arpa/inet.h>
 #define TIPC_CMD_NOOP 0x0000
 #define TIPC_CMD_GET_NODES 0x0001
 #define TIPC_CMD_GET_MEDIA_NAMES 0x0002
diff --git a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/tls.h b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/tls.h
index c98ea0b..fcab74b 100644
--- a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/tls.h
+++ b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/tls.h
@@ -21,6 +21,8 @@
 #include <linux/types.h>
 #define TLS_TX 1
 #define TLS_RX 2
+#define TLS_TX_ZEROCOPY_RO 3
+#define TLS_RX_EXPECT_NO_PAD 4
 #define TLS_VERSION_MINOR(ver) ((ver) & 0xFF)
 #define TLS_VERSION_MAJOR(ver) (((ver) >> 8) & 0xFF)
 #define TLS_VERSION_NUMBER(id) ((((id ##_VERSION_MAJOR) & 0xFF) << 8) | ((id ##_VERSION_MINOR) & 0xFF))
@@ -66,6 +68,18 @@
 #define TLS_CIPHER_SM4_CCM_SALT_SIZE 4
 #define TLS_CIPHER_SM4_CCM_TAG_SIZE 16
 #define TLS_CIPHER_SM4_CCM_REC_SEQ_SIZE 8
+#define TLS_CIPHER_ARIA_GCM_128 57
+#define TLS_CIPHER_ARIA_GCM_128_IV_SIZE 8
+#define TLS_CIPHER_ARIA_GCM_128_KEY_SIZE 16
+#define TLS_CIPHER_ARIA_GCM_128_SALT_SIZE 4
+#define TLS_CIPHER_ARIA_GCM_128_TAG_SIZE 16
+#define TLS_CIPHER_ARIA_GCM_128_REC_SEQ_SIZE 8
+#define TLS_CIPHER_ARIA_GCM_256 58
+#define TLS_CIPHER_ARIA_GCM_256_IV_SIZE 8
+#define TLS_CIPHER_ARIA_GCM_256_KEY_SIZE 32
+#define TLS_CIPHER_ARIA_GCM_256_SALT_SIZE 4
+#define TLS_CIPHER_ARIA_GCM_256_TAG_SIZE 16
+#define TLS_CIPHER_ARIA_GCM_256_REC_SEQ_SIZE 8
 #define TLS_SET_RECORD_TYPE 1
 #define TLS_GET_RECORD_TYPE 2
 struct tls_crypto_info {
@@ -114,12 +128,28 @@
   unsigned char salt[TLS_CIPHER_SM4_CCM_SALT_SIZE];
   unsigned char rec_seq[TLS_CIPHER_SM4_CCM_REC_SEQ_SIZE];
 };
+struct tls12_crypto_info_aria_gcm_128 {
+  struct tls_crypto_info info;
+  unsigned char iv[TLS_CIPHER_ARIA_GCM_128_IV_SIZE];
+  unsigned char key[TLS_CIPHER_ARIA_GCM_128_KEY_SIZE];
+  unsigned char salt[TLS_CIPHER_ARIA_GCM_128_SALT_SIZE];
+  unsigned char rec_seq[TLS_CIPHER_ARIA_GCM_128_REC_SEQ_SIZE];
+};
+struct tls12_crypto_info_aria_gcm_256 {
+  struct tls_crypto_info info;
+  unsigned char iv[TLS_CIPHER_ARIA_GCM_256_IV_SIZE];
+  unsigned char key[TLS_CIPHER_ARIA_GCM_256_KEY_SIZE];
+  unsigned char salt[TLS_CIPHER_ARIA_GCM_256_SALT_SIZE];
+  unsigned char rec_seq[TLS_CIPHER_ARIA_GCM_256_REC_SEQ_SIZE];
+};
 enum {
   TLS_INFO_UNSPEC,
   TLS_INFO_VERSION,
   TLS_INFO_CIPHER,
   TLS_INFO_TXCONF,
   TLS_INFO_RXCONF,
+  TLS_INFO_ZC_RO_TX,
+  TLS_INFO_RX_NO_PAD,
   __TLS_INFO_MAX,
 };
 #define TLS_INFO_MAX (__TLS_INFO_MAX - 1)
diff --git a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/tty.h b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/tty.h
index dcce572..a94e6e6 100644
--- a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/tty.h
+++ b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/tty.h
@@ -18,7 +18,6 @@
  ****************************************************************************/
 #ifndef _UAPI_LINUX_TTY_H
 #define _UAPI_LINUX_TTY_H
-#define NR_LDISCS 30
 #define N_TTY 0
 #define N_SLIP 1
 #define N_MOUSE 2
@@ -48,4 +47,7 @@
 #define N_SPEAKUP 26
 #define N_NULL 27
 #define N_MCTP 28
+#define N_DEVELOPMENT 29
+#define N_CAN327 30
+#define NR_LDISCS 31
 #endif
diff --git a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/types.h b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/types.h
index 9145e66..f41d676 100644
--- a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/types.h
+++ b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/types.h
@@ -21,8 +21,8 @@
 #include <asm/types.h>
 #ifndef __ASSEMBLY__
 #include <linux/posix_types.h>
-#define __bitwise__
-#define __bitwise __bitwise__
+#define __bitwise
+#define __bitwise__ __bitwise
 typedef __u16 __bitwise __le16;
 typedef __u16 __bitwise __be16;
 typedef __u32 __bitwise __le32;
diff --git a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/ublk_cmd.h b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/ublk_cmd.h
new file mode 100644
index 0000000..8c9cbeb
--- /dev/null
+++ b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/ublk_cmd.h
@@ -0,0 +1,127 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef USER_BLK_DRV_CMD_INC_H
+#define USER_BLK_DRV_CMD_INC_H
+#include <linux/types.h>
+#define UBLK_CMD_GET_QUEUE_AFFINITY 0x01
+#define UBLK_CMD_GET_DEV_INFO 0x02
+#define UBLK_CMD_ADD_DEV 0x04
+#define UBLK_CMD_DEL_DEV 0x05
+#define UBLK_CMD_START_DEV 0x06
+#define UBLK_CMD_STOP_DEV 0x07
+#define UBLK_CMD_SET_PARAMS 0x08
+#define UBLK_CMD_GET_PARAMS 0x09
+#define UBLK_CMD_START_USER_RECOVERY 0x10
+#define UBLK_CMD_END_USER_RECOVERY 0x11
+#define UBLK_IO_FETCH_REQ 0x20
+#define UBLK_IO_COMMIT_AND_FETCH_REQ 0x21
+#define UBLK_IO_NEED_GET_DATA 0x22
+#define UBLK_IO_RES_OK 0
+#define UBLK_IO_RES_NEED_GET_DATA 1
+#define UBLK_IO_RES_ABORT (- ENODEV)
+#define UBLKSRV_CMD_BUF_OFFSET 0
+#define UBLKSRV_IO_BUF_OFFSET 0x80000000
+#define UBLK_MAX_QUEUE_DEPTH 4096
+#define UBLK_F_SUPPORT_ZERO_COPY (1ULL << 0)
+#define UBLK_F_URING_CMD_COMP_IN_TASK (1ULL << 1)
+#define UBLK_F_NEED_GET_DATA (1UL << 2)
+#define UBLK_F_USER_RECOVERY (1UL << 3)
+#define UBLK_F_USER_RECOVERY_REISSUE (1UL << 4)
+#define UBLK_S_DEV_DEAD 0
+#define UBLK_S_DEV_LIVE 1
+#define UBLK_S_DEV_QUIESCED 2
+struct ublksrv_ctrl_cmd {
+  __u32 dev_id;
+  __u16 queue_id;
+  __u16 len;
+  __u64 addr;
+  __u64 data[2];
+};
+struct ublksrv_ctrl_dev_info {
+  __u16 nr_hw_queues;
+  __u16 queue_depth;
+  __u16 state;
+  __u16 pad0;
+  __u32 max_io_buf_bytes;
+  __u32 dev_id;
+  __s32 ublksrv_pid;
+  __u32 pad1;
+  __u64 flags;
+  __u64 ublksrv_flags;
+  __u64 reserved0;
+  __u64 reserved1;
+  __u64 reserved2;
+};
+#define UBLK_IO_OP_READ 0
+#define UBLK_IO_OP_WRITE 1
+#define UBLK_IO_OP_FLUSH 2
+#define UBLK_IO_OP_DISCARD 3
+#define UBLK_IO_OP_WRITE_SAME 4
+#define UBLK_IO_OP_WRITE_ZEROES 5
+#define UBLK_IO_F_FAILFAST_DEV (1U << 8)
+#define UBLK_IO_F_FAILFAST_TRANSPORT (1U << 9)
+#define UBLK_IO_F_FAILFAST_DRIVER (1U << 10)
+#define UBLK_IO_F_META (1U << 11)
+#define UBLK_IO_F_FUA (1U << 13)
+#define UBLK_IO_F_NOUNMAP (1U << 15)
+#define UBLK_IO_F_SWAP (1U << 16)
+struct ublksrv_io_desc {
+  __u32 op_flags;
+  __u32 nr_sectors;
+  __u64 start_sector;
+  __u64 addr;
+};
+struct ublksrv_io_cmd {
+  __u16 q_id;
+  __u16 tag;
+  __s32 result;
+  __u64 addr;
+};
+struct ublk_param_basic {
+#define UBLK_ATTR_READ_ONLY (1 << 0)
+#define UBLK_ATTR_ROTATIONAL (1 << 1)
+#define UBLK_ATTR_VOLATILE_CACHE (1 << 2)
+#define UBLK_ATTR_FUA (1 << 3)
+  __u32 attrs;
+  __u8 logical_bs_shift;
+  __u8 physical_bs_shift;
+  __u8 io_opt_shift;
+  __u8 io_min_shift;
+  __u32 max_sectors;
+  __u32 chunk_sectors;
+  __u64 dev_sectors;
+  __u64 virt_boundary_mask;
+};
+struct ublk_param_discard {
+  __u32 discard_alignment;
+  __u32 discard_granularity;
+  __u32 max_discard_sectors;
+  __u32 max_write_zeroes_sectors;
+  __u16 max_discard_segments;
+  __u16 reserved0;
+};
+struct ublk_params {
+  __u32 len;
+#define UBLK_PARAM_TYPE_BASIC (1 << 0)
+#define UBLK_PARAM_TYPE_DISCARD (1 << 1)
+  __u32 types;
+  struct ublk_param_basic basic;
+  struct ublk_param_discard discard;
+};
+#endif
diff --git a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/usb/audio.h b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/usb/audio.h
index 7d36157..bfda540 100644
--- a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/usb/audio.h
+++ b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/usb/audio.h
@@ -186,7 +186,7 @@
   __u8 bUnitID;
   __u8 bSourceID;
   __u8 bControlSize;
-  __u8 bmaControls[0];
+  __u8 bmaControls[];
 } __attribute__((packed));
 struct uac_processing_unit_descriptor {
   __u8 bLength;
diff --git a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/usb/cdc.h b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/usb/cdc.h
index 59c9488..bbfc4db 100644
--- a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/usb/cdc.h
+++ b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/usb/cdc.h
@@ -131,7 +131,7 @@
   __u8 bDescriptorType;
   __u8 bDescriptorSubType;
   __u8 bGuidDescriptorType;
-  __u8 bDetailData[0];
+  __u8 bDetailData[];
 } __attribute__((packed));
 struct usb_cdc_obex_desc {
   __u8 bLength;
@@ -201,6 +201,8 @@
 #define USB_CDC_SPACE_PARITY 4
   __u8 bDataBits;
 } __attribute__((packed));
+#define USB_CDC_CTRL_DTR (1 << 0)
+#define USB_CDC_CTRL_RTS (1 << 1)
 #define USB_CDC_PACKET_TYPE_PROMISCUOUS (1 << 0)
 #define USB_CDC_PACKET_TYPE_ALL_MULTICAST (1 << 1)
 #define USB_CDC_PACKET_TYPE_DIRECTED (1 << 2)
@@ -217,6 +219,13 @@
   __le16 wIndex;
   __le16 wLength;
 } __attribute__((packed));
+#define USB_CDC_SERIAL_STATE_DCD (1 << 0)
+#define USB_CDC_SERIAL_STATE_DSR (1 << 1)
+#define USB_CDC_SERIAL_STATE_BREAK (1 << 2)
+#define USB_CDC_SERIAL_STATE_RING_SIGNAL (1 << 3)
+#define USB_CDC_SERIAL_STATE_FRAMING (1 << 4)
+#define USB_CDC_SERIAL_STATE_PARITY (1 << 5)
+#define USB_CDC_SERIAL_STATE_OVERRUN (1 << 6)
 struct usb_cdc_speed_change {
   __le32 DLBitRRate;
   __le32 ULBitRate;
@@ -267,7 +276,7 @@
   __le32 dwSignature;
   __le16 wLength;
   __le16 wNextNdpIndex;
-  struct usb_cdc_ncm_dpe16 dpe16[0];
+  struct usb_cdc_ncm_dpe16 dpe16[];
 } __attribute__((packed));
 struct usb_cdc_ncm_dpe32 {
   __le32 dwDatagramIndex;
@@ -279,7 +288,7 @@
   __le16 wReserved6;
   __le32 dwNextNdpIndex;
   __le32 dwReserved12;
-  struct usb_cdc_ncm_dpe32 dpe32[0];
+  struct usb_cdc_ncm_dpe32 dpe32[];
 } __attribute__((packed));
 #define USB_CDC_NCM_NDP16_INDEX_MIN 0x000C
 #define USB_CDC_NCM_NDP32_INDEX_MIN 0x0010
diff --git a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/usb/ch9.h b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/usb/ch9.h
index f1dade9..49eb5fa 100644
--- a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/usb/ch9.h
+++ b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/usb/ch9.h
@@ -324,7 +324,7 @@
   __u8 bDescriptorType;
   __u8 tTKID[3];
   __u8 bReserved;
-  __u8 bKeyData[0];
+  __u8 bKeyData[];
 } __attribute__((packed));
 struct usb_encryption_descriptor {
   __u8 bLength;
diff --git a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/usb/raw_gadget.h b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/usb/raw_gadget.h
index 70d5a26..8b60c8d 100644
--- a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/usb/raw_gadget.h
+++ b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/usb/raw_gadget.h
@@ -35,7 +35,7 @@
 struct usb_raw_event {
   __u32 type;
   __u32 length;
-  __u8 data[0];
+  __u8 data[];
 };
 #define USB_RAW_IO_FLAGS_ZERO 0x0001
 #define USB_RAW_IO_FLAGS_MASK 0x0001
@@ -43,7 +43,7 @@
   __u16 ep;
   __u16 flags;
   __u32 length;
-  __u8 data[0];
+  __u8 data[];
 };
 #define USB_RAW_EPS_NUM_MAX 30
 #define USB_RAW_EP_NAME_MAX 16
diff --git a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/usbdevice_fs.h b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/usbdevice_fs.h
index 7936ad9..5fef522 100644
--- a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/usbdevice_fs.h
+++ b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/usbdevice_fs.h
@@ -91,7 +91,7 @@
   int error_count;
   unsigned int signr;
   void __user * usercontext;
-  struct usbdevfs_iso_packet_desc iso_frame_desc[0];
+  struct usbdevfs_iso_packet_desc iso_frame_desc[];
 };
 struct usbdevfs_ioctl {
   int ifno;
@@ -121,7 +121,7 @@
 struct usbdevfs_streams {
   unsigned int num_streams;
   unsigned int num_eps;
-  unsigned char eps[0];
+  unsigned char eps[];
 };
 #define USBDEVFS_CONTROL _IOWR('U', 0, struct usbdevfs_ctrltransfer)
 #define USBDEVFS_CONTROL32 _IOWR('U', 0, struct usbdevfs_ctrltransfer32)
diff --git a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/usbip.h b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/usbip.h
index ae18347..b0c1067 100644
--- a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/usbip.h
+++ b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/usbip.h
@@ -27,4 +27,21 @@
   VDEV_ST_USED,
   VDEV_ST_ERROR
 };
+#define USBIP_URB_SHORT_NOT_OK 0x0001
+#define USBIP_URB_ISO_ASAP 0x0002
+#define USBIP_URB_NO_TRANSFER_DMA_MAP 0x0004
+#define USBIP_URB_ZERO_PACKET 0x0040
+#define USBIP_URB_NO_INTERRUPT 0x0080
+#define USBIP_URB_FREE_BUFFER 0x0100
+#define USBIP_URB_DIR_IN 0x0200
+#define USBIP_URB_DIR_OUT 0
+#define USBIP_URB_DIR_MASK USBIP_URB_DIR_IN
+#define USBIP_URB_DMA_MAP_SINGLE 0x00010000
+#define USBIP_URB_DMA_MAP_PAGE 0x00020000
+#define USBIP_URB_DMA_MAP_SG 0x00040000
+#define USBIP_URB_MAP_LOCAL 0x00080000
+#define USBIP_URB_SETUP_MAP_SINGLE 0x00100000
+#define USBIP_URB_SETUP_MAP_LOCAL 0x00200000
+#define USBIP_URB_DMA_SG_COMBINED 0x00400000
+#define USBIP_URB_ALIGNED_TEMP_BUFFER 0x00800000
 #endif
diff --git a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/userfaultfd.h b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/userfaultfd.h
index ca7b7a5..09e0d80 100644
--- a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/userfaultfd.h
+++ b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/userfaultfd.h
@@ -19,12 +19,14 @@
 #ifndef _LINUX_USERFAULTFD_H
 #define _LINUX_USERFAULTFD_H
 #include <linux/types.h>
+#define USERFAULTFD_IOC 0xAA
+#define USERFAULTFD_IOC_NEW _IO(USERFAULTFD_IOC, 0x00)
 #define UFFD_API ((__u64) 0xAA)
 #define UFFD_API_REGISTER_MODES (UFFDIO_REGISTER_MODE_MISSING | UFFDIO_REGISTER_MODE_WP | UFFDIO_REGISTER_MODE_MINOR)
-#define UFFD_API_FEATURES (UFFD_FEATURE_PAGEFAULT_FLAG_WP | UFFD_FEATURE_EVENT_FORK | UFFD_FEATURE_EVENT_REMAP | UFFD_FEATURE_EVENT_REMOVE | UFFD_FEATURE_EVENT_UNMAP | UFFD_FEATURE_MISSING_HUGETLBFS | UFFD_FEATURE_MISSING_SHMEM | UFFD_FEATURE_SIGBUS | UFFD_FEATURE_THREAD_ID | UFFD_FEATURE_MINOR_HUGETLBFS | UFFD_FEATURE_MINOR_SHMEM)
+#define UFFD_API_FEATURES (UFFD_FEATURE_PAGEFAULT_FLAG_WP | UFFD_FEATURE_EVENT_FORK | UFFD_FEATURE_EVENT_REMAP | UFFD_FEATURE_EVENT_REMOVE | UFFD_FEATURE_EVENT_UNMAP | UFFD_FEATURE_MISSING_HUGETLBFS | UFFD_FEATURE_MISSING_SHMEM | UFFD_FEATURE_SIGBUS | UFFD_FEATURE_THREAD_ID | UFFD_FEATURE_MINOR_HUGETLBFS | UFFD_FEATURE_MINOR_SHMEM | UFFD_FEATURE_EXACT_ADDRESS | UFFD_FEATURE_WP_HUGETLBFS_SHMEM)
 #define UFFD_API_IOCTLS ((__u64) 1 << _UFFDIO_REGISTER | (__u64) 1 << _UFFDIO_UNREGISTER | (__u64) 1 << _UFFDIO_API)
 #define UFFD_API_RANGE_IOCTLS ((__u64) 1 << _UFFDIO_WAKE | (__u64) 1 << _UFFDIO_COPY | (__u64) 1 << _UFFDIO_ZEROPAGE | (__u64) 1 << _UFFDIO_WRITEPROTECT | (__u64) 1 << _UFFDIO_CONTINUE)
-#define UFFD_API_RANGE_IOCTLS_BASIC ((__u64) 1 << _UFFDIO_WAKE | (__u64) 1 << _UFFDIO_COPY | (__u64) 1 << _UFFDIO_CONTINUE)
+#define UFFD_API_RANGE_IOCTLS_BASIC ((__u64) 1 << _UFFDIO_WAKE | (__u64) 1 << _UFFDIO_COPY | (__u64) 1 << _UFFDIO_CONTINUE | (__u64) 1 << _UFFDIO_WRITEPROTECT)
 #define _UFFDIO_REGISTER (0x00)
 #define _UFFDIO_UNREGISTER (0x01)
 #define _UFFDIO_WAKE (0x02)
@@ -73,7 +75,7 @@
       __u64 reserved3;
     } reserved;
   } arg;
-} __packed;
+} __attribute__((__packed__));
 #define UFFD_EVENT_PAGEFAULT 0x12
 #define UFFD_EVENT_FORK 0x13
 #define UFFD_EVENT_REMAP 0x14
@@ -95,6 +97,8 @@
 #define UFFD_FEATURE_THREAD_ID (1 << 8)
 #define UFFD_FEATURE_MINOR_HUGETLBFS (1 << 9)
 #define UFFD_FEATURE_MINOR_SHMEM (1 << 10)
+#define UFFD_FEATURE_EXACT_ADDRESS (1 << 11)
+#define UFFD_FEATURE_WP_HUGETLBFS_SHMEM (1 << 12)
   __u64 features;
   __u64 ioctls;
 };
diff --git a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/uvcvideo.h b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/uvcvideo.h
index 719147a..46528a9 100644
--- a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/uvcvideo.h
+++ b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/uvcvideo.h
@@ -68,5 +68,5 @@
   __u8 length;
   __u8 flags;
   __u8 buf[];
-} __packed;
+} __attribute__((__packed__));
 #endif
diff --git a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/v4l2-controls.h b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/v4l2-controls.h
index 1a11355..276ecaa 100644
--- a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/v4l2-controls.h
+++ b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/v4l2-controls.h
@@ -119,6 +119,8 @@
 #define V4L2_CID_USER_CODA_BASE (V4L2_CID_USER_BASE + 0x10e0)
 #define V4L2_CID_USER_CCS_BASE (V4L2_CID_USER_BASE + 0x10f0)
 #define V4L2_CID_USER_ALLEGRO_BASE (V4L2_CID_USER_BASE + 0x1170)
+#define V4L2_CID_USER_ISL7998X_BASE (V4L2_CID_USER_BASE + 0x1180)
+#define V4L2_CID_USER_DW100_BASE (V4L2_CID_USER_BASE + 0x1190)
 #define V4L2_CID_CODEC_BASE (V4L2_CTRL_CLASS_CODEC | 0x900)
 #define V4L2_CID_CODEC_CLASS (V4L2_CTRL_CLASS_CODEC | 1)
 #define V4L2_CID_MPEG_STREAM_TYPE (V4L2_CID_CODEC_BASE + 0)
@@ -329,6 +331,11 @@
 #define V4L2_CID_MPEG_VIDEO_USE_LTR_FRAMES (V4L2_CID_CODEC_BASE + 234)
 #define V4L2_CID_MPEG_VIDEO_DEC_CONCEAL_COLOR (V4L2_CID_CODEC_BASE + 235)
 #define V4L2_CID_MPEG_VIDEO_INTRA_REFRESH_PERIOD (V4L2_CID_CODEC_BASE + 236)
+#define V4L2_CID_MPEG_VIDEO_INTRA_REFRESH_PERIOD_TYPE (V4L2_CID_CODEC_BASE + 237)
+enum v4l2_mpeg_video_intra_refresh_period_type {
+  V4L2_CID_MPEG_VIDEO_INTRA_REFRESH_PERIOD_TYPE_RANDOM = 0,
+  V4L2_CID_MPEG_VIDEO_INTRA_REFRESH_PERIOD_TYPE_CYCLIC = 1,
+};
 #define V4L2_CID_MPEG_VIDEO_MPEG2_LEVEL (V4L2_CID_CODEC_BASE + 270)
 enum v4l2_mpeg_video_mpeg2_level {
   V4L2_MPEG_VIDEO_MPEG2_LEVEL_LOW = 0,
@@ -1153,6 +1160,8 @@
 #define V4L2_H264_DECODE_PARAM_FLAG_IDR_PIC 0x01
 #define V4L2_H264_DECODE_PARAM_FLAG_FIELD_PIC 0x02
 #define V4L2_H264_DECODE_PARAM_FLAG_BOTTOM_FIELD 0x04
+#define V4L2_H264_DECODE_PARAM_FLAG_PFRAME 0x08
+#define V4L2_H264_DECODE_PARAM_FLAG_BFRAME 0x10
 #define V4L2_CID_STATELESS_H264_DECODE_PARAMS (V4L2_CID_CODEC_STATELESS_BASE + 7)
 struct v4l2_ctrl_h264_decode_params {
   struct v4l2_h264_dpb_entry dpb[V4L2_H264_NUM_DPB_ENTRIES];
@@ -1323,6 +1332,204 @@
   __u8 chroma_intra_quantiser_matrix[64];
   __u8 chroma_non_intra_quantiser_matrix[64];
 };
+#define V4L2_CID_STATELESS_HEVC_SPS (V4L2_CID_CODEC_STATELESS_BASE + 400)
+#define V4L2_CID_STATELESS_HEVC_PPS (V4L2_CID_CODEC_STATELESS_BASE + 401)
+#define V4L2_CID_STATELESS_HEVC_SLICE_PARAMS (V4L2_CID_CODEC_STATELESS_BASE + 402)
+#define V4L2_CID_STATELESS_HEVC_SCALING_MATRIX (V4L2_CID_CODEC_STATELESS_BASE + 403)
+#define V4L2_CID_STATELESS_HEVC_DECODE_PARAMS (V4L2_CID_CODEC_STATELESS_BASE + 404)
+#define V4L2_CID_STATELESS_HEVC_DECODE_MODE (V4L2_CID_CODEC_STATELESS_BASE + 405)
+#define V4L2_CID_STATELESS_HEVC_START_CODE (V4L2_CID_CODEC_STATELESS_BASE + 406)
+#define V4L2_CID_STATELESS_HEVC_ENTRY_POINT_OFFSETS (V4L2_CID_CODEC_STATELESS_BASE + 407)
+enum v4l2_stateless_hevc_decode_mode {
+  V4L2_STATELESS_HEVC_DECODE_MODE_SLICE_BASED,
+  V4L2_STATELESS_HEVC_DECODE_MODE_FRAME_BASED,
+};
+enum v4l2_stateless_hevc_start_code {
+  V4L2_STATELESS_HEVC_START_CODE_NONE,
+  V4L2_STATELESS_HEVC_START_CODE_ANNEX_B,
+};
+#define V4L2_HEVC_SLICE_TYPE_B 0
+#define V4L2_HEVC_SLICE_TYPE_P 1
+#define V4L2_HEVC_SLICE_TYPE_I 2
+#define V4L2_HEVC_SPS_FLAG_SEPARATE_COLOUR_PLANE (1ULL << 0)
+#define V4L2_HEVC_SPS_FLAG_SCALING_LIST_ENABLED (1ULL << 1)
+#define V4L2_HEVC_SPS_FLAG_AMP_ENABLED (1ULL << 2)
+#define V4L2_HEVC_SPS_FLAG_SAMPLE_ADAPTIVE_OFFSET (1ULL << 3)
+#define V4L2_HEVC_SPS_FLAG_PCM_ENABLED (1ULL << 4)
+#define V4L2_HEVC_SPS_FLAG_PCM_LOOP_FILTER_DISABLED (1ULL << 5)
+#define V4L2_HEVC_SPS_FLAG_LONG_TERM_REF_PICS_PRESENT (1ULL << 6)
+#define V4L2_HEVC_SPS_FLAG_SPS_TEMPORAL_MVP_ENABLED (1ULL << 7)
+#define V4L2_HEVC_SPS_FLAG_STRONG_INTRA_SMOOTHING_ENABLED (1ULL << 8)
+struct v4l2_ctrl_hevc_sps {
+  __u8 video_parameter_set_id;
+  __u8 seq_parameter_set_id;
+  __u16 pic_width_in_luma_samples;
+  __u16 pic_height_in_luma_samples;
+  __u8 bit_depth_luma_minus8;
+  __u8 bit_depth_chroma_minus8;
+  __u8 log2_max_pic_order_cnt_lsb_minus4;
+  __u8 sps_max_dec_pic_buffering_minus1;
+  __u8 sps_max_num_reorder_pics;
+  __u8 sps_max_latency_increase_plus1;
+  __u8 log2_min_luma_coding_block_size_minus3;
+  __u8 log2_diff_max_min_luma_coding_block_size;
+  __u8 log2_min_luma_transform_block_size_minus2;
+  __u8 log2_diff_max_min_luma_transform_block_size;
+  __u8 max_transform_hierarchy_depth_inter;
+  __u8 max_transform_hierarchy_depth_intra;
+  __u8 pcm_sample_bit_depth_luma_minus1;
+  __u8 pcm_sample_bit_depth_chroma_minus1;
+  __u8 log2_min_pcm_luma_coding_block_size_minus3;
+  __u8 log2_diff_max_min_pcm_luma_coding_block_size;
+  __u8 num_short_term_ref_pic_sets;
+  __u8 num_long_term_ref_pics_sps;
+  __u8 chroma_format_idc;
+  __u8 sps_max_sub_layers_minus1;
+  __u8 reserved[6];
+  __u64 flags;
+};
+#define V4L2_HEVC_PPS_FLAG_DEPENDENT_SLICE_SEGMENT_ENABLED (1ULL << 0)
+#define V4L2_HEVC_PPS_FLAG_OUTPUT_FLAG_PRESENT (1ULL << 1)
+#define V4L2_HEVC_PPS_FLAG_SIGN_DATA_HIDING_ENABLED (1ULL << 2)
+#define V4L2_HEVC_PPS_FLAG_CABAC_INIT_PRESENT (1ULL << 3)
+#define V4L2_HEVC_PPS_FLAG_CONSTRAINED_INTRA_PRED (1ULL << 4)
+#define V4L2_HEVC_PPS_FLAG_TRANSFORM_SKIP_ENABLED (1ULL << 5)
+#define V4L2_HEVC_PPS_FLAG_CU_QP_DELTA_ENABLED (1ULL << 6)
+#define V4L2_HEVC_PPS_FLAG_PPS_SLICE_CHROMA_QP_OFFSETS_PRESENT (1ULL << 7)
+#define V4L2_HEVC_PPS_FLAG_WEIGHTED_PRED (1ULL << 8)
+#define V4L2_HEVC_PPS_FLAG_WEIGHTED_BIPRED (1ULL << 9)
+#define V4L2_HEVC_PPS_FLAG_TRANSQUANT_BYPASS_ENABLED (1ULL << 10)
+#define V4L2_HEVC_PPS_FLAG_TILES_ENABLED (1ULL << 11)
+#define V4L2_HEVC_PPS_FLAG_ENTROPY_CODING_SYNC_ENABLED (1ULL << 12)
+#define V4L2_HEVC_PPS_FLAG_LOOP_FILTER_ACROSS_TILES_ENABLED (1ULL << 13)
+#define V4L2_HEVC_PPS_FLAG_PPS_LOOP_FILTER_ACROSS_SLICES_ENABLED (1ULL << 14)
+#define V4L2_HEVC_PPS_FLAG_DEBLOCKING_FILTER_OVERRIDE_ENABLED (1ULL << 15)
+#define V4L2_HEVC_PPS_FLAG_PPS_DISABLE_DEBLOCKING_FILTER (1ULL << 16)
+#define V4L2_HEVC_PPS_FLAG_LISTS_MODIFICATION_PRESENT (1ULL << 17)
+#define V4L2_HEVC_PPS_FLAG_SLICE_SEGMENT_HEADER_EXTENSION_PRESENT (1ULL << 18)
+#define V4L2_HEVC_PPS_FLAG_DEBLOCKING_FILTER_CONTROL_PRESENT (1ULL << 19)
+#define V4L2_HEVC_PPS_FLAG_UNIFORM_SPACING (1ULL << 20)
+struct v4l2_ctrl_hevc_pps {
+  __u8 pic_parameter_set_id;
+  __u8 num_extra_slice_header_bits;
+  __u8 num_ref_idx_l0_default_active_minus1;
+  __u8 num_ref_idx_l1_default_active_minus1;
+  __s8 init_qp_minus26;
+  __u8 diff_cu_qp_delta_depth;
+  __s8 pps_cb_qp_offset;
+  __s8 pps_cr_qp_offset;
+  __u8 num_tile_columns_minus1;
+  __u8 num_tile_rows_minus1;
+  __u8 column_width_minus1[20];
+  __u8 row_height_minus1[22];
+  __s8 pps_beta_offset_div2;
+  __s8 pps_tc_offset_div2;
+  __u8 log2_parallel_merge_level_minus2;
+  __u8 reserved;
+  __u64 flags;
+};
+#define V4L2_HEVC_DPB_ENTRY_LONG_TERM_REFERENCE 0x01
+#define V4L2_HEVC_SEI_PIC_STRUCT_FRAME 0
+#define V4L2_HEVC_SEI_PIC_STRUCT_TOP_FIELD 1
+#define V4L2_HEVC_SEI_PIC_STRUCT_BOTTOM_FIELD 2
+#define V4L2_HEVC_SEI_PIC_STRUCT_TOP_BOTTOM 3
+#define V4L2_HEVC_SEI_PIC_STRUCT_BOTTOM_TOP 4
+#define V4L2_HEVC_SEI_PIC_STRUCT_TOP_BOTTOM_TOP 5
+#define V4L2_HEVC_SEI_PIC_STRUCT_BOTTOM_TOP_BOTTOM 6
+#define V4L2_HEVC_SEI_PIC_STRUCT_FRAME_DOUBLING 7
+#define V4L2_HEVC_SEI_PIC_STRUCT_FRAME_TRIPLING 8
+#define V4L2_HEVC_SEI_PIC_STRUCT_TOP_PAIRED_PREVIOUS_BOTTOM 9
+#define V4L2_HEVC_SEI_PIC_STRUCT_BOTTOM_PAIRED_PREVIOUS_TOP 10
+#define V4L2_HEVC_SEI_PIC_STRUCT_TOP_PAIRED_NEXT_BOTTOM 11
+#define V4L2_HEVC_SEI_PIC_STRUCT_BOTTOM_PAIRED_NEXT_TOP 12
+#define V4L2_HEVC_DPB_ENTRIES_NUM_MAX 16
+struct v4l2_hevc_dpb_entry {
+  __u64 timestamp;
+  __u8 flags;
+  __u8 field_pic;
+  __u16 reserved;
+  __s32 pic_order_cnt_val;
+};
+struct v4l2_hevc_pred_weight_table {
+  __s8 delta_luma_weight_l0[V4L2_HEVC_DPB_ENTRIES_NUM_MAX];
+  __s8 luma_offset_l0[V4L2_HEVC_DPB_ENTRIES_NUM_MAX];
+  __s8 delta_chroma_weight_l0[V4L2_HEVC_DPB_ENTRIES_NUM_MAX][2];
+  __s8 chroma_offset_l0[V4L2_HEVC_DPB_ENTRIES_NUM_MAX][2];
+  __s8 delta_luma_weight_l1[V4L2_HEVC_DPB_ENTRIES_NUM_MAX];
+  __s8 luma_offset_l1[V4L2_HEVC_DPB_ENTRIES_NUM_MAX];
+  __s8 delta_chroma_weight_l1[V4L2_HEVC_DPB_ENTRIES_NUM_MAX][2];
+  __s8 chroma_offset_l1[V4L2_HEVC_DPB_ENTRIES_NUM_MAX][2];
+  __u8 luma_log2_weight_denom;
+  __s8 delta_chroma_log2_weight_denom;
+};
+#define V4L2_HEVC_SLICE_PARAMS_FLAG_SLICE_SAO_LUMA (1ULL << 0)
+#define V4L2_HEVC_SLICE_PARAMS_FLAG_SLICE_SAO_CHROMA (1ULL << 1)
+#define V4L2_HEVC_SLICE_PARAMS_FLAG_SLICE_TEMPORAL_MVP_ENABLED (1ULL << 2)
+#define V4L2_HEVC_SLICE_PARAMS_FLAG_MVD_L1_ZERO (1ULL << 3)
+#define V4L2_HEVC_SLICE_PARAMS_FLAG_CABAC_INIT (1ULL << 4)
+#define V4L2_HEVC_SLICE_PARAMS_FLAG_COLLOCATED_FROM_L0 (1ULL << 5)
+#define V4L2_HEVC_SLICE_PARAMS_FLAG_USE_INTEGER_MV (1ULL << 6)
+#define V4L2_HEVC_SLICE_PARAMS_FLAG_SLICE_DEBLOCKING_FILTER_DISABLED (1ULL << 7)
+#define V4L2_HEVC_SLICE_PARAMS_FLAG_SLICE_LOOP_FILTER_ACROSS_SLICES_ENABLED (1ULL << 8)
+#define V4L2_HEVC_SLICE_PARAMS_FLAG_DEPENDENT_SLICE_SEGMENT (1ULL << 9)
+struct v4l2_ctrl_hevc_slice_params {
+  __u32 bit_size;
+  __u32 data_byte_offset;
+  __u32 num_entry_point_offsets;
+  __u8 nal_unit_type;
+  __u8 nuh_temporal_id_plus1;
+  __u8 slice_type;
+  __u8 colour_plane_id;
+  __s32 slice_pic_order_cnt;
+  __u8 num_ref_idx_l0_active_minus1;
+  __u8 num_ref_idx_l1_active_minus1;
+  __u8 collocated_ref_idx;
+  __u8 five_minus_max_num_merge_cand;
+  __s8 slice_qp_delta;
+  __s8 slice_cb_qp_offset;
+  __s8 slice_cr_qp_offset;
+  __s8 slice_act_y_qp_offset;
+  __s8 slice_act_cb_qp_offset;
+  __s8 slice_act_cr_qp_offset;
+  __s8 slice_beta_offset_div2;
+  __s8 slice_tc_offset_div2;
+  __u8 pic_struct;
+  __u8 reserved0[3];
+  __u32 slice_segment_addr;
+  __u8 ref_idx_l0[V4L2_HEVC_DPB_ENTRIES_NUM_MAX];
+  __u8 ref_idx_l1[V4L2_HEVC_DPB_ENTRIES_NUM_MAX];
+  __u16 short_term_ref_pic_set_size;
+  __u16 long_term_ref_pic_set_size;
+  struct v4l2_hevc_pred_weight_table pred_weight_table;
+  __u8 reserved1[2];
+  __u64 flags;
+};
+#define V4L2_HEVC_DECODE_PARAM_FLAG_IRAP_PIC 0x1
+#define V4L2_HEVC_DECODE_PARAM_FLAG_IDR_PIC 0x2
+#define V4L2_HEVC_DECODE_PARAM_FLAG_NO_OUTPUT_OF_PRIOR 0x4
+struct v4l2_ctrl_hevc_decode_params {
+  __s32 pic_order_cnt_val;
+  __u16 short_term_ref_pic_set_size;
+  __u16 long_term_ref_pic_set_size;
+  __u8 num_active_dpb_entries;
+  __u8 num_poc_st_curr_before;
+  __u8 num_poc_st_curr_after;
+  __u8 num_poc_lt_curr;
+  __u8 poc_st_curr_before[V4L2_HEVC_DPB_ENTRIES_NUM_MAX];
+  __u8 poc_st_curr_after[V4L2_HEVC_DPB_ENTRIES_NUM_MAX];
+  __u8 poc_lt_curr[V4L2_HEVC_DPB_ENTRIES_NUM_MAX];
+  __u8 reserved[4];
+  struct v4l2_hevc_dpb_entry dpb[V4L2_HEVC_DPB_ENTRIES_NUM_MAX];
+  __u64 flags;
+};
+struct v4l2_ctrl_hevc_scaling_matrix {
+  __u8 scaling_list_4x4[6][16];
+  __u8 scaling_list_8x8[6][64];
+  __u8 scaling_list_16x16[6][64];
+  __u8 scaling_list_32x32[2][64];
+  __u8 scaling_list_dc_coef_16x16[6];
+  __u8 scaling_list_dc_coef_32x32[2];
+};
 #define V4L2_CID_COLORIMETRY_CLASS_BASE (V4L2_CTRL_CLASS_COLORIMETRY | 0x900)
 #define V4L2_CID_COLORIMETRY_CLASS (V4L2_CTRL_CLASS_COLORIMETRY | 1)
 #define V4L2_CID_COLORIMETRY_HDR10_CLL_INFO (V4L2_CID_COLORIMETRY_CLASS_BASE + 0)
diff --git a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/vbox_vmmdev_types.h b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/vbox_vmmdev_types.h
index 009f9a6..777a2bb 100644
--- a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/vbox_vmmdev_types.h
+++ b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/vbox_vmmdev_types.h
@@ -157,7 +157,7 @@
       __u32 offset;
     } page_list;
   } u;
-} __packed;
+} __attribute__((__packed__));
 struct vmmdev_hgcm_function_parameter64 {
   enum vmmdev_hgcm_function_parameter_type type;
   union {
@@ -169,13 +169,13 @@
         __u64 phys_addr;
         __u64 linear_addr;
       } u;
-    } __packed pointer;
+    } __attribute__((__packed__)) pointer;
     struct {
       __u32 size;
       __u32 offset;
     } page_list;
-  } __packed u;
-} __packed;
+  } __attribute__((__packed__)) u;
+} __attribute__((__packed__));
 #if __BITS_PER_LONG == 64
 #define vmmdev_hgcm_function_parameter vmmdev_hgcm_function_parameter64
 #else
diff --git a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/vdpa.h b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/vdpa.h
index b3e5d39..ed61cdd 100644
--- a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/vdpa.h
+++ b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/vdpa.h
@@ -28,6 +28,7 @@
   VDPA_CMD_DEV_DEL,
   VDPA_CMD_DEV_GET,
   VDPA_CMD_DEV_CONFIG_GET,
+  VDPA_CMD_DEV_VSTATS_GET,
 };
 enum vdpa_attr {
   VDPA_ATTR_UNSPEC,
@@ -48,6 +49,11 @@
   VDPA_ATTR_DEV_NEGOTIATED_FEATURES,
   VDPA_ATTR_DEV_MGMTDEV_MAX_VQS,
   VDPA_ATTR_DEV_SUPPORTED_FEATURES,
+  VDPA_ATTR_DEV_QUEUE_INDEX,
+  VDPA_ATTR_DEV_VENDOR_ATTR_NAME,
+  VDPA_ATTR_DEV_VENDOR_ATTR_VALUE,
+  VDPA_ATTR_DEV_FEATURES,
+  VDPA_ATTR_VDPA_DEV_SUPPORTED_FEATURES,
   VDPA_ATTR_MAX,
 };
 #endif
diff --git a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/vduse.h b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/vduse.h
index 2dc8c82..f0b6d6b 100644
--- a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/vduse.h
+++ b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/vduse.h
@@ -90,6 +90,22 @@
 };
 #define VDUSE_VQ_SETUP_KICKFD _IOW(VDUSE_BASE, 0x16, struct vduse_vq_eventfd)
 #define VDUSE_VQ_INJECT_IRQ _IOW(VDUSE_BASE, 0x17, __u32)
+struct vduse_iova_umem {
+  __u64 uaddr;
+  __u64 iova;
+  __u64 size;
+  __u64 reserved[3];
+};
+#define VDUSE_IOTLB_REG_UMEM _IOW(VDUSE_BASE, 0x18, struct vduse_iova_umem)
+#define VDUSE_IOTLB_DEREG_UMEM _IOW(VDUSE_BASE, 0x19, struct vduse_iova_umem)
+struct vduse_iova_info {
+  __u64 start;
+  __u64 last;
+#define VDUSE_IOVA_CAP_UMEM (1 << 0)
+  __u64 capability;
+  __u64 reserved[3];
+};
+#define VDUSE_IOTLB_GET_INFO _IOWR(VDUSE_BASE, 0x1a, struct vduse_iova_info)
 enum vduse_req_type {
   VDUSE_GET_VQ_STATE,
   VDUSE_SET_STATUS,
diff --git a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/version.h b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/version.h
index 2dfd696..ab95caf 100644
--- a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/version.h
+++ b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/version.h
@@ -16,8 +16,8 @@
  ***
  ****************************************************************************
  ****************************************************************************/
-#define LINUX_VERSION_CODE 332032
+#define LINUX_VERSION_CODE 393472
 #define KERNEL_VERSION(a,b,c) (((a) << 16) + ((b) << 8) + ((c) > 255 ? 255 : (c)))
-#define LINUX_VERSION_MAJOR 5
-#define LINUX_VERSION_PATCHLEVEL 17
+#define LINUX_VERSION_MAJOR 6
+#define LINUX_VERSION_PATCHLEVEL 1
 #define LINUX_VERSION_SUBLEVEL 0
diff --git a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/vfio.h b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/vfio.h
index e0f322b..dffa136 100644
--- a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/vfio.h
+++ b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/vfio.h
@@ -110,7 +110,7 @@
 #define VFIO_REGION_TYPE_PCI_VENDOR_MASK (0xffff)
 #define VFIO_REGION_TYPE_GFX (1)
 #define VFIO_REGION_TYPE_CCW (2)
-#define VFIO_REGION_TYPE_MIGRATION (3)
+#define VFIO_REGION_TYPE_MIGRATION_DEPRECATED (3)
 #define VFIO_REGION_SUBTYPE_INTEL_IGD_OPREGION (1)
 #define VFIO_REGION_SUBTYPE_INTEL_IGD_HOST_CFG (2)
 #define VFIO_REGION_SUBTYPE_INTEL_IGD_LPC_CFG (3)
@@ -130,17 +130,17 @@
 #define VFIO_REGION_SUBTYPE_CCW_ASYNC_CMD (1)
 #define VFIO_REGION_SUBTYPE_CCW_SCHIB (2)
 #define VFIO_REGION_SUBTYPE_CCW_CRW (3)
-#define VFIO_REGION_SUBTYPE_MIGRATION (1)
+#define VFIO_REGION_SUBTYPE_MIGRATION_DEPRECATED (1)
 struct vfio_device_migration_info {
   __u32 device_state;
-#define VFIO_DEVICE_STATE_STOP (0)
-#define VFIO_DEVICE_STATE_RUNNING (1 << 0)
-#define VFIO_DEVICE_STATE_SAVING (1 << 1)
-#define VFIO_DEVICE_STATE_RESUMING (1 << 2)
-#define VFIO_DEVICE_STATE_MASK (VFIO_DEVICE_STATE_RUNNING | VFIO_DEVICE_STATE_SAVING | VFIO_DEVICE_STATE_RESUMING)
-#define VFIO_DEVICE_STATE_VALID(state) (state & VFIO_DEVICE_STATE_RESUMING ? (state & VFIO_DEVICE_STATE_MASK) == VFIO_DEVICE_STATE_RESUMING : 1)
-#define VFIO_DEVICE_STATE_IS_ERROR(state) ((state & VFIO_DEVICE_STATE_MASK) == (VFIO_DEVICE_STATE_SAVING | VFIO_DEVICE_STATE_RESUMING))
-#define VFIO_DEVICE_STATE_SET_ERROR(state) ((state & ~VFIO_DEVICE_STATE_MASK) | VFIO_DEVICE_SATE_SAVING | VFIO_DEVICE_STATE_RESUMING)
+#define VFIO_DEVICE_STATE_V1_STOP (0)
+#define VFIO_DEVICE_STATE_V1_RUNNING (1 << 0)
+#define VFIO_DEVICE_STATE_V1_SAVING (1 << 1)
+#define VFIO_DEVICE_STATE_V1_RESUMING (1 << 2)
+#define VFIO_DEVICE_STATE_MASK (VFIO_DEVICE_STATE_V1_RUNNING | VFIO_DEVICE_STATE_V1_SAVING | VFIO_DEVICE_STATE_V1_RESUMING)
+#define VFIO_DEVICE_STATE_VALID(state) (state & VFIO_DEVICE_STATE_V1_RESUMING ? (state & VFIO_DEVICE_STATE_MASK) == VFIO_DEVICE_STATE_V1_RESUMING : 1)
+#define VFIO_DEVICE_STATE_IS_ERROR(state) ((state & VFIO_DEVICE_STATE_MASK) == (VFIO_DEVICE_STATE_V1_SAVING | VFIO_DEVICE_STATE_V1_RESUMING))
+#define VFIO_DEVICE_STATE_SET_ERROR(state) ((state & ~VFIO_DEVICE_STATE_MASK) | VFIO_DEVICE_STATE_V1_SAVING | VFIO_DEVICE_STATE_V1_RESUMING)
   __u32 reserved;
   __u64 pending_bytes;
   __u64 data_offset;
@@ -285,6 +285,51 @@
 };
 #define VFIO_DEVICE_FEATURE _IO(VFIO_TYPE, VFIO_BASE + 17)
 #define VFIO_DEVICE_FEATURE_PCI_VF_TOKEN (0)
+struct vfio_device_feature_migration {
+  __aligned_u64 flags;
+#define VFIO_MIGRATION_STOP_COPY (1 << 0)
+#define VFIO_MIGRATION_P2P (1 << 1)
+};
+#define VFIO_DEVICE_FEATURE_MIGRATION 1
+struct vfio_device_feature_mig_state {
+  __u32 device_state;
+  __s32 data_fd;
+};
+#define VFIO_DEVICE_FEATURE_MIG_DEVICE_STATE 2
+enum vfio_device_mig_state {
+  VFIO_DEVICE_STATE_ERROR = 0,
+  VFIO_DEVICE_STATE_STOP = 1,
+  VFIO_DEVICE_STATE_RUNNING = 2,
+  VFIO_DEVICE_STATE_STOP_COPY = 3,
+  VFIO_DEVICE_STATE_RESUMING = 4,
+  VFIO_DEVICE_STATE_RUNNING_P2P = 5,
+};
+#define VFIO_DEVICE_FEATURE_LOW_POWER_ENTRY 3
+struct vfio_device_low_power_entry_with_wakeup {
+  __s32 wakeup_eventfd;
+  __u32 reserved;
+};
+#define VFIO_DEVICE_FEATURE_LOW_POWER_ENTRY_WITH_WAKEUP 4
+#define VFIO_DEVICE_FEATURE_LOW_POWER_EXIT 5
+struct vfio_device_feature_dma_logging_control {
+  __aligned_u64 page_size;
+  __u32 num_ranges;
+  __u32 __reserved;
+  __aligned_u64 ranges;
+};
+struct vfio_device_feature_dma_logging_range {
+  __aligned_u64 iova;
+  __aligned_u64 length;
+};
+#define VFIO_DEVICE_FEATURE_DMA_LOGGING_START 6
+#define VFIO_DEVICE_FEATURE_DMA_LOGGING_STOP 7
+struct vfio_device_feature_dma_logging_report {
+  __aligned_u64 iova;
+  __aligned_u64 length;
+  __aligned_u64 page_size;
+  __aligned_u64 bitmap;
+};
+#define VFIO_DEVICE_FEATURE_DMA_LOGGING_REPORT 8
 struct vfio_iommu_type1_info {
   __u32 argsz;
   __u32 flags;
diff --git a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/vfio_ccw.h b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/vfio_ccw.h
index a6defc5..7bf08f5 100644
--- a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/vfio_ccw.h
+++ b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/vfio_ccw.h
@@ -27,19 +27,19 @@
 #define IRB_AREA_SIZE 96
   __u8 irb_area[IRB_AREA_SIZE];
   __u32 ret_code;
-} __packed;
+} __attribute__((__packed__));
 #define VFIO_CCW_ASYNC_CMD_HSCH (1 << 0)
 #define VFIO_CCW_ASYNC_CMD_CSCH (1 << 1)
 struct ccw_cmd_region {
   __u32 command;
   __u32 ret_code;
-} __packed;
+} __attribute__((__packed__));
 struct ccw_schib_region {
 #define SCHIB_AREA_SIZE 52
   __u8 schib_area[SCHIB_AREA_SIZE];
-} __packed;
+} __attribute__((__packed__));
 struct ccw_crw_region {
   __u32 crw;
   __u32 pad;
-} __packed;
+} __attribute__((__packed__));
 #endif
diff --git a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/vfio_zdev.h b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/vfio_zdev.h
index c678e9a..1c3a943 100644
--- a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/vfio_zdev.h
+++ b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/vfio_zdev.h
@@ -29,6 +29,7 @@
   __u16 fmb_length;
   __u8 pft;
   __u8 gid;
+  __u32 fh;
 };
 struct vfio_device_info_cap_zpci_group {
   struct vfio_info_cap_header header;
@@ -40,6 +41,8 @@
   __u16 noi;
   __u16 maxstbl;
   __u8 version;
+  __u8 reserved;
+  __u16 imaxstbl;
 };
 struct vfio_device_info_cap_zpci_util {
   struct vfio_info_cap_header header;
diff --git a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/vhost.h b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/vhost.h
index 53b01c4..e5b1327 100644
--- a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/vhost.h
+++ b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/vhost.h
@@ -43,8 +43,6 @@
 #define VHOST_SET_VRING_ERR _IOW(VHOST_VIRTIO, 0x22, struct vhost_vring_file)
 #define VHOST_SET_VRING_BUSYLOOP_TIMEOUT _IOW(VHOST_VIRTIO, 0x23, struct vhost_vring_state)
 #define VHOST_GET_VRING_BUSYLOOP_TIMEOUT _IOW(VHOST_VIRTIO, 0x24, struct vhost_vring_state)
-#define VHOST_BACKEND_F_IOTLB_MSG_V2 0x1
-#define VHOST_BACKEND_F_IOTLB_BATCH 0x2
 #define VHOST_SET_BACKEND_FEATURES _IOW(VHOST_VIRTIO, 0x25, __u64)
 #define VHOST_GET_BACKEND_FEATURES _IOR(VHOST_VIRTIO, 0x26, __u64)
 #define VHOST_NET_SET_BACKEND _IOW(VHOST_VIRTIO, 0x30, struct vhost_vring_file)
@@ -64,4 +62,11 @@
 #define VHOST_VDPA_GET_VRING_NUM _IOR(VHOST_VIRTIO, 0x76, __u16)
 #define VHOST_VDPA_SET_CONFIG_CALL _IOW(VHOST_VIRTIO, 0x77, int)
 #define VHOST_VDPA_GET_IOVA_RANGE _IOR(VHOST_VIRTIO, 0x78, struct vhost_vdpa_iova_range)
+#define VHOST_VDPA_GET_CONFIG_SIZE _IOR(VHOST_VIRTIO, 0x79, __u32)
+#define VHOST_VDPA_GET_VQS_COUNT _IOR(VHOST_VIRTIO, 0x80, __u32)
+#define VHOST_VDPA_GET_GROUP_NUM _IOR(VHOST_VIRTIO, 0x81, __u32)
+#define VHOST_VDPA_GET_AS_NUM _IOR(VHOST_VIRTIO, 0x7A, unsigned int)
+#define VHOST_VDPA_GET_VRING_GROUP _IOWR(VHOST_VIRTIO, 0x7B, struct vhost_vring_state)
+#define VHOST_VDPA_SET_GROUP_ASID _IOW(VHOST_VIRTIO, 0x7C, struct vhost_vring_state)
+#define VHOST_VDPA_SUSPEND _IO(VHOST_VIRTIO, 0x7D)
 #endif
diff --git a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/vhost_types.h b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/vhost_types.h
index 6b4cc77..32efa85 100644
--- a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/vhost_types.h
+++ b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/vhost_types.h
@@ -66,7 +66,7 @@
 };
 struct vhost_msg_v2 {
   __u32 type;
-  __u32 reserved;
+  __u32 asid;
   union {
     struct vhost_iotlb_msg iotlb;
     __u8 padding[64];
@@ -82,7 +82,7 @@
 struct vhost_memory {
   __u32 nregions;
   __u32 padding;
-  struct vhost_memory_region regions[0];
+  struct vhost_memory_region regions[];
 };
 #define VHOST_SCSI_ABI_VERSION 1
 struct vhost_scsi_target {
@@ -94,7 +94,7 @@
 struct vhost_vdpa_config {
   __u32 off;
   __u32 len;
-  __u8 buf[0];
+  __u8 buf[];
 };
 struct vhost_vdpa_iova_range {
   __u64 first;
@@ -102,4 +102,8 @@
 };
 #define VHOST_F_LOG_ALL 26
 #define VHOST_NET_F_VIRTIO_NET_HDR 27
+#define VHOST_BACKEND_F_IOTLB_MSG_V2 0x1
+#define VHOST_BACKEND_F_IOTLB_BATCH 0x2
+#define VHOST_BACKEND_F_IOTLB_ASID 0x3
+#define VHOST_BACKEND_F_SUSPEND 0x4
 #endif
diff --git a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/videodev2.h b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/videodev2.h
index 1cae711..3d8dd72 100644
--- a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/videodev2.h
+++ b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/videodev2.h
@@ -24,7 +24,7 @@
 #include <linux/types.h>
 #include <linux/v4l2-common.h>
 #include <linux/v4l2-controls.h>
-#define VIDEO_MAX_FRAME 32
+#define VIDEO_MAX_FRAME 64
 #define VIDEO_MAX_PLANES 8
 #define v4l2_fourcc(a,b,c,d) ((__u32) (a) | ((__u32) (b) << 8) | ((__u32) (c) << 16) | ((__u32) (d) << 24))
 #define v4l2_fourcc_be(a,b,c,d) (v4l2_fourcc(a, b, c, d) | (1U << 31))
@@ -185,7 +185,6 @@
 #define V4L2_CAP_SDR_OUTPUT 0x00400000
 #define V4L2_CAP_META_CAPTURE 0x00800000
 #define V4L2_CAP_READWRITE 0x01000000
-#define V4L2_CAP_ASYNCIO 0x02000000
 #define V4L2_CAP_STREAMING 0x04000000
 #define V4L2_CAP_META_OUTPUT 0x08000000
 #define V4L2_CAP_TOUCH 0x10000000
@@ -255,6 +254,7 @@
 #define V4L2_PIX_FMT_Y16_BE v4l2_fourcc_be('Y', '1', '6', ' ')
 #define V4L2_PIX_FMT_Y10BPACK v4l2_fourcc('Y', '1', '0', 'B')
 #define V4L2_PIX_FMT_Y10P v4l2_fourcc('Y', '1', '0', 'P')
+#define V4L2_PIX_FMT_IPU3_Y10 v4l2_fourcc('i', 'p', '3', 'y')
 #define V4L2_PIX_FMT_PAL8 v4l2_fourcc('P', 'A', 'L', '8')
 #define V4L2_PIX_FMT_UV8 v4l2_fourcc('U', 'V', '8', ' ')
 #define V4L2_PIX_FMT_YUYV v4l2_fourcc('Y', 'U', 'Y', 'V')
@@ -272,6 +272,8 @@
 #define V4L2_PIX_FMT_XYUV32 v4l2_fourcc('X', 'Y', 'U', 'V')
 #define V4L2_PIX_FMT_VUYA32 v4l2_fourcc('V', 'U', 'Y', 'A')
 #define V4L2_PIX_FMT_VUYX32 v4l2_fourcc('V', 'U', 'Y', 'X')
+#define V4L2_PIX_FMT_YUVA32 v4l2_fourcc('Y', 'U', 'V', 'A')
+#define V4L2_PIX_FMT_YUVX32 v4l2_fourcc('Y', 'U', 'V', 'X')
 #define V4L2_PIX_FMT_M420 v4l2_fourcc('M', '4', '2', '0')
 #define V4L2_PIX_FMT_NV12 v4l2_fourcc('N', 'V', '1', '2')
 #define V4L2_PIX_FMT_NV21 v4l2_fourcc('N', 'V', '2', '1')
@@ -279,6 +281,7 @@
 #define V4L2_PIX_FMT_NV61 v4l2_fourcc('N', 'V', '6', '1')
 #define V4L2_PIX_FMT_NV24 v4l2_fourcc('N', 'V', '2', '4')
 #define V4L2_PIX_FMT_NV42 v4l2_fourcc('N', 'V', '4', '2')
+#define V4L2_PIX_FMT_P010 v4l2_fourcc('P', '0', '1', '0')
 #define V4L2_PIX_FMT_NV12M v4l2_fourcc('N', 'M', '1', '2')
 #define V4L2_PIX_FMT_NV21M v4l2_fourcc('N', 'M', '2', '1')
 #define V4L2_PIX_FMT_NV16M v4l2_fourcc('N', 'M', '1', '6')
@@ -298,8 +301,11 @@
 #define V4L2_PIX_FMT_NV12_4L4 v4l2_fourcc('V', 'T', '1', '2')
 #define V4L2_PIX_FMT_NV12_16L16 v4l2_fourcc('H', 'M', '1', '2')
 #define V4L2_PIX_FMT_NV12_32L32 v4l2_fourcc('S', 'T', '1', '2')
+#define V4L2_PIX_FMT_P010_4L4 v4l2_fourcc('T', '0', '1', '0')
 #define V4L2_PIX_FMT_NV12MT v4l2_fourcc('T', 'M', '1', '2')
 #define V4L2_PIX_FMT_NV12MT_16X16 v4l2_fourcc('V', 'M', '1', '2')
+#define V4L2_PIX_FMT_NV12M_8L128 v4l2_fourcc('N', 'A', '1', '2')
+#define V4L2_PIX_FMT_NV12M_10BE_8L128 v4l2_fourcc_be('N', 'T', '1', '2')
 #define V4L2_PIX_FMT_SBGGR8 v4l2_fourcc('B', 'A', '8', '1')
 #define V4L2_PIX_FMT_SGBRG8 v4l2_fourcc('G', 'B', 'R', 'G')
 #define V4L2_PIX_FMT_SGRBG8 v4l2_fourcc('G', 'R', 'B', 'G')
@@ -365,6 +371,7 @@
 #define V4L2_PIX_FMT_FWHT v4l2_fourcc('F', 'W', 'H', 'T')
 #define V4L2_PIX_FMT_FWHT_STATELESS v4l2_fourcc('S', 'F', 'W', 'H')
 #define V4L2_PIX_FMT_H264_SLICE v4l2_fourcc('S', '2', '6', '4')
+#define V4L2_PIX_FMT_HEVC_SLICE v4l2_fourcc('S', '2', '6', '5')
 #define V4L2_PIX_FMT_CPIA1 v4l2_fourcc('C', 'P', 'I', 'A')
 #define V4L2_PIX_FMT_WNVA v4l2_fourcc('W', 'N', 'V', 'A')
 #define V4L2_PIX_FMT_SN9C10X v4l2_fourcc('S', '9', '1', '0')
@@ -399,6 +406,8 @@
 #define V4L2_PIX_FMT_INZI v4l2_fourcc('I', 'N', 'Z', 'I')
 #define V4L2_PIX_FMT_CNF4 v4l2_fourcc('C', 'N', 'F', '4')
 #define V4L2_PIX_FMT_HI240 v4l2_fourcc('H', 'I', '2', '4')
+#define V4L2_PIX_FMT_QC08C v4l2_fourcc('Q', '0', '8', 'C')
+#define V4L2_PIX_FMT_QC10C v4l2_fourcc('Q', '1', '0', 'C')
 #define V4L2_PIX_FMT_IPU3_SBGGR10 v4l2_fourcc('i', 'p', '3', 'b')
 #define V4L2_PIX_FMT_IPU3_SGBRG10 v4l2_fourcc('i', 'p', '3', 'g')
 #define V4L2_PIX_FMT_IPU3_SGRBG10 v4l2_fourcc('i', 'p', '3', 'G')
@@ -782,7 +791,7 @@
 #define V4L2_DV_FL_CAN_DETECT_REDUCED_FPS (1 << 9)
 #define V4L2_DV_BT_BLANKING_WIDTH(bt) ((bt)->hfrontporch + (bt)->hsync + (bt)->hbackporch)
 #define V4L2_DV_BT_FRAME_WIDTH(bt) ((bt)->width + V4L2_DV_BT_BLANKING_WIDTH(bt))
-#define V4L2_DV_BT_BLANKING_HEIGHT(bt) ((bt)->vfrontporch + (bt)->vsync + (bt)->vbackporch + (bt)->il_vfrontporch + (bt)->il_vsync + (bt)->il_vbackporch)
+#define V4L2_DV_BT_BLANKING_HEIGHT(bt) ((bt)->vfrontporch + (bt)->vsync + (bt)->vbackporch + ((bt)->interlaced ? ((bt)->il_vfrontporch + (bt)->il_vsync + (bt)->il_vbackporch) : 0))
 #define V4L2_DV_BT_FRAME_HEIGHT(bt) ((bt)->height + V4L2_DV_BT_BLANKING_HEIGHT(bt))
 struct v4l2_dv_timings {
   __u32 type;
@@ -901,6 +910,11 @@
     struct v4l2_ctrl_mpeg2_quantisation __user * p_mpeg2_quantisation;
     struct v4l2_ctrl_vp9_compressed_hdr __user * p_vp9_compressed_hdr_probs;
     struct v4l2_ctrl_vp9_frame __user * p_vp9_frame;
+    struct v4l2_ctrl_hevc_sps __user * p_hevc_sps;
+    struct v4l2_ctrl_hevc_pps __user * p_hevc_pps;
+    struct v4l2_ctrl_hevc_slice_params __user * p_hevc_slice_params;
+    struct v4l2_ctrl_hevc_scaling_matrix __user * p_hevc_scaling_matrix;
+    struct v4l2_ctrl_hevc_decode_params __user * p_hevc_decode_params;
     void __user * ptr;
   };
 } __attribute__((packed));
@@ -953,6 +967,11 @@
   V4L2_CTRL_TYPE_MPEG2_PICTURE = 0x0252,
   V4L2_CTRL_TYPE_VP9_COMPRESSED_HDR = 0x0260,
   V4L2_CTRL_TYPE_VP9_FRAME = 0x0261,
+  V4L2_CTRL_TYPE_HEVC_SPS = 0x0270,
+  V4L2_CTRL_TYPE_HEVC_PPS = 0x0271,
+  V4L2_CTRL_TYPE_HEVC_SLICE_PARAMS = 0x0272,
+  V4L2_CTRL_TYPE_HEVC_SCALING_MATRIX = 0x0273,
+  V4L2_CTRL_TYPE_HEVC_DECODE_PARAMS = 0x0274,
 };
 struct v4l2_queryctrl {
   __u32 id;
@@ -1000,6 +1019,7 @@
 #define V4L2_CTRL_FLAG_HAS_PAYLOAD 0x0100
 #define V4L2_CTRL_FLAG_EXECUTE_ON_WRITE 0x0200
 #define V4L2_CTRL_FLAG_MODIFY_LAYOUT 0x0400
+#define V4L2_CTRL_FLAG_DYNAMIC_ARRAY 0x0800
 #define V4L2_CTRL_FLAG_NEXT_CTRL 0x80000000
 #define V4L2_CTRL_FLAG_NEXT_COMPOUND 0x40000000
 #define V4L2_CID_MAX_CTRLS 1024
@@ -1303,6 +1323,7 @@
 #define V4L2_EVENT_CTRL_CH_VALUE (1 << 0)
 #define V4L2_EVENT_CTRL_CH_FLAGS (1 << 1)
 #define V4L2_EVENT_CTRL_CH_RANGE (1 << 2)
+#define V4L2_EVENT_CTRL_CH_DIMENSIONS (1 << 3)
 struct v4l2_event_ctrl {
   __u32 changes;
   __u32 type;
@@ -1474,4 +1495,5 @@
 #define BASE_VIDIOC_PRIVATE 192
 #define V4L2_PIX_FMT_HM12 V4L2_PIX_FMT_NV12_16L16
 #define V4L2_PIX_FMT_SUNXI_TILED_NV12 V4L2_PIX_FMT_NV12_32L32
+#define V4L2_CAP_ASYNCIO 0x02000000
 #endif
diff --git a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/virtio_9p.h b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/virtio_9p.h
index 1d9dfb1..2e05786 100644
--- a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/virtio_9p.h
+++ b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/virtio_9p.h
@@ -24,6 +24,6 @@
 #define VIRTIO_9P_MOUNT_TAG 0
 struct virtio_9p_config {
   __virtio16 tag_len;
-  __u8 tag[0];
+  __u8 tag[];
 } __attribute__((packed));
 #endif
diff --git a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/virtio_blk.h b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/virtio_blk.h
index f2f0381..0dd08c5 100644
--- a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/virtio_blk.h
+++ b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/virtio_blk.h
@@ -31,6 +31,7 @@
 #define VIRTIO_BLK_F_MQ 12
 #define VIRTIO_BLK_F_DISCARD 13
 #define VIRTIO_BLK_F_WRITE_ZEROES 14
+#define VIRTIO_BLK_F_SECURE_ERASE 16
 #ifndef VIRTIO_BLK_NO_LEGACY
 #define VIRTIO_BLK_F_BARRIER 0
 #define VIRTIO_BLK_F_SCSI 7
@@ -63,6 +64,9 @@
   __virtio32 max_write_zeroes_seg;
   __u8 write_zeroes_may_unmap;
   __u8 unused1[3];
+  __virtio32 max_secure_erase_sectors;
+  __virtio32 max_secure_erase_seg;
+  __virtio32 secure_erase_sector_alignment;
 } __attribute__((packed));
 #define VIRTIO_BLK_T_IN 0
 #define VIRTIO_BLK_T_OUT 1
@@ -73,6 +77,7 @@
 #define VIRTIO_BLK_T_GET_ID 8
 #define VIRTIO_BLK_T_DISCARD 11
 #define VIRTIO_BLK_T_WRITE_ZEROES 13
+#define VIRTIO_BLK_T_SECURE_ERASE 14
 #ifndef VIRTIO_BLK_NO_LEGACY
 #define VIRTIO_BLK_T_BARRIER 0x80000000
 #endif
diff --git a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/virtio_config.h b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/virtio_config.h
index 6198fd1..bdd2e73 100644
--- a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/virtio_config.h
+++ b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/virtio_config.h
@@ -26,7 +26,7 @@
 #define VIRTIO_CONFIG_S_NEEDS_RESET 0x40
 #define VIRTIO_CONFIG_S_FAILED 0x80
 #define VIRTIO_TRANSPORT_F_START 28
-#define VIRTIO_TRANSPORT_F_END 38
+#define VIRTIO_TRANSPORT_F_END 41
 #ifndef VIRTIO_CONFIG_NO_LEGACY
 #define VIRTIO_F_NOTIFY_ON_EMPTY 24
 #define VIRTIO_F_ANY_LAYOUT 27
@@ -35,6 +35,8 @@
 #define VIRTIO_F_ACCESS_PLATFORM 33
 #define VIRTIO_F_IOMMU_PLATFORM VIRTIO_F_ACCESS_PLATFORM
 #define VIRTIO_F_RING_PACKED 34
+#define VIRTIO_F_IN_ORDER 35
 #define VIRTIO_F_ORDER_PLATFORM 36
 #define VIRTIO_F_SR_IOV 37
+#define VIRTIO_F_RING_RESET 40
 #endif
diff --git a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/virtio_crypto.h b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/virtio_crypto.h
index 2ce760f..7d7561d 100644
--- a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/virtio_crypto.h
+++ b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/virtio_crypto.h
@@ -26,6 +26,7 @@
 #define VIRTIO_CRYPTO_SERVICE_HASH 1
 #define VIRTIO_CRYPTO_SERVICE_MAC 2
 #define VIRTIO_CRYPTO_SERVICE_AEAD 3
+#define VIRTIO_CRYPTO_SERVICE_AKCIPHER 4
 #define VIRTIO_CRYPTO_OPCODE(service,op) (((service) << 8) | (op))
 struct virtio_crypto_ctrl_header {
 #define VIRTIO_CRYPTO_CIPHER_CREATE_SESSION VIRTIO_CRYPTO_OPCODE(VIRTIO_CRYPTO_SERVICE_CIPHER, 0x02)
@@ -36,6 +37,8 @@
 #define VIRTIO_CRYPTO_MAC_DESTROY_SESSION VIRTIO_CRYPTO_OPCODE(VIRTIO_CRYPTO_SERVICE_MAC, 0x03)
 #define VIRTIO_CRYPTO_AEAD_CREATE_SESSION VIRTIO_CRYPTO_OPCODE(VIRTIO_CRYPTO_SERVICE_AEAD, 0x02)
 #define VIRTIO_CRYPTO_AEAD_DESTROY_SESSION VIRTIO_CRYPTO_OPCODE(VIRTIO_CRYPTO_SERVICE_AEAD, 0x03)
+#define VIRTIO_CRYPTO_AKCIPHER_CREATE_SESSION VIRTIO_CRYPTO_OPCODE(VIRTIO_CRYPTO_SERVICE_AKCIPHER, 0x04)
+#define VIRTIO_CRYPTO_AKCIPHER_DESTROY_SESSION VIRTIO_CRYPTO_OPCODE(VIRTIO_CRYPTO_SERVICE_AKCIPHER, 0x05)
   __le32 opcode;
   __le32 algo;
   __le32 flag;
@@ -137,6 +140,51 @@
   struct virtio_crypto_aead_session_para para;
   __u8 padding[32];
 };
+struct virtio_crypto_rsa_session_para {
+#define VIRTIO_CRYPTO_RSA_RAW_PADDING 0
+#define VIRTIO_CRYPTO_RSA_PKCS1_PADDING 1
+  __le32 padding_algo;
+#define VIRTIO_CRYPTO_RSA_NO_HASH 0
+#define VIRTIO_CRYPTO_RSA_MD2 1
+#define VIRTIO_CRYPTO_RSA_MD3 2
+#define VIRTIO_CRYPTO_RSA_MD4 3
+#define VIRTIO_CRYPTO_RSA_MD5 4
+#define VIRTIO_CRYPTO_RSA_SHA1 5
+#define VIRTIO_CRYPTO_RSA_SHA256 6
+#define VIRTIO_CRYPTO_RSA_SHA384 7
+#define VIRTIO_CRYPTO_RSA_SHA512 8
+#define VIRTIO_CRYPTO_RSA_SHA224 9
+  __le32 hash_algo;
+};
+struct virtio_crypto_ecdsa_session_para {
+#define VIRTIO_CRYPTO_CURVE_UNKNOWN 0
+#define VIRTIO_CRYPTO_CURVE_NIST_P192 1
+#define VIRTIO_CRYPTO_CURVE_NIST_P224 2
+#define VIRTIO_CRYPTO_CURVE_NIST_P256 3
+#define VIRTIO_CRYPTO_CURVE_NIST_P384 4
+#define VIRTIO_CRYPTO_CURVE_NIST_P521 5
+  __le32 curve_id;
+  __le32 padding;
+};
+struct virtio_crypto_akcipher_session_para {
+#define VIRTIO_CRYPTO_NO_AKCIPHER 0
+#define VIRTIO_CRYPTO_AKCIPHER_RSA 1
+#define VIRTIO_CRYPTO_AKCIPHER_DSA 2
+#define VIRTIO_CRYPTO_AKCIPHER_ECDSA 3
+  __le32 algo;
+#define VIRTIO_CRYPTO_AKCIPHER_KEY_TYPE_PUBLIC 1
+#define VIRTIO_CRYPTO_AKCIPHER_KEY_TYPE_PRIVATE 2
+  __le32 keytype;
+  __le32 keylen;
+  union {
+    struct virtio_crypto_rsa_session_para rsa;
+    struct virtio_crypto_ecdsa_session_para ecdsa;
+  } u;
+};
+struct virtio_crypto_akcipher_create_session_req {
+  struct virtio_crypto_akcipher_session_para para;
+  __u8 padding[36];
+};
 struct virtio_crypto_alg_chain_session_para {
 #define VIRTIO_CRYPTO_SYM_ALG_CHAIN_ORDER_HASH_THEN_CIPHER 1
 #define VIRTIO_CRYPTO_SYM_ALG_CHAIN_ORDER_CIPHER_THEN_HASH 2
@@ -180,6 +228,7 @@
     struct virtio_crypto_hash_create_session_req hash_create_session;
     struct virtio_crypto_mac_create_session_req mac_create_session;
     struct virtio_crypto_aead_create_session_req aead_create_session;
+    struct virtio_crypto_akcipher_create_session_req akcipher_create_session;
     struct virtio_crypto_destroy_session_req destroy_session;
     __u8 padding[56];
   } u;
@@ -191,6 +240,10 @@
 #define VIRTIO_CRYPTO_MAC VIRTIO_CRYPTO_OPCODE(VIRTIO_CRYPTO_SERVICE_MAC, 0x00)
 #define VIRTIO_CRYPTO_AEAD_ENCRYPT VIRTIO_CRYPTO_OPCODE(VIRTIO_CRYPTO_SERVICE_AEAD, 0x00)
 #define VIRTIO_CRYPTO_AEAD_DECRYPT VIRTIO_CRYPTO_OPCODE(VIRTIO_CRYPTO_SERVICE_AEAD, 0x01)
+#define VIRTIO_CRYPTO_AKCIPHER_ENCRYPT VIRTIO_CRYPTO_OPCODE(VIRTIO_CRYPTO_SERVICE_AKCIPHER, 0x00)
+#define VIRTIO_CRYPTO_AKCIPHER_DECRYPT VIRTIO_CRYPTO_OPCODE(VIRTIO_CRYPTO_SERVICE_AKCIPHER, 0x01)
+#define VIRTIO_CRYPTO_AKCIPHER_SIGN VIRTIO_CRYPTO_OPCODE(VIRTIO_CRYPTO_SERVICE_AKCIPHER, 0x02)
+#define VIRTIO_CRYPTO_AKCIPHER_VERIFY VIRTIO_CRYPTO_OPCODE(VIRTIO_CRYPTO_SERVICE_AKCIPHER, 0x03)
   __le32 opcode;
   __le32 algo;
   __le64 session_id;
@@ -256,6 +309,14 @@
   struct virtio_crypto_aead_para para;
   __u8 padding[32];
 };
+struct virtio_crypto_akcipher_para {
+  __le32 src_data_len;
+  __le32 dst_data_len;
+};
+struct virtio_crypto_akcipher_data_req {
+  struct virtio_crypto_akcipher_para para;
+  __u8 padding[40];
+};
 struct virtio_crypto_op_data_req {
   struct virtio_crypto_op_header header;
   union {
@@ -263,6 +324,7 @@
     struct virtio_crypto_hash_data_req hash_req;
     struct virtio_crypto_mac_data_req mac_req;
     struct virtio_crypto_aead_data_req aead_req;
+    struct virtio_crypto_akcipher_data_req akcipher_req;
     __u8 padding[48];
   } u;
 };
@@ -271,6 +333,8 @@
 #define VIRTIO_CRYPTO_BADMSG 2
 #define VIRTIO_CRYPTO_NOTSUPP 3
 #define VIRTIO_CRYPTO_INVSESS 4
+#define VIRTIO_CRYPTO_NOSPC 5
+#define VIRTIO_CRYPTO_KEY_REJECTED 6
 #define VIRTIO_CRYPTO_S_HW_READY (1 << 0)
 struct virtio_crypto_config {
   __le32 status;
@@ -284,7 +348,7 @@
   __le32 aead_algo;
   __le32 max_cipher_key_len;
   __le32 max_auth_key_len;
-  __le32 reserve;
+  __le32 akcipher_algo;
   __le64 max_size;
 };
 struct virtio_crypto_inhdr {
diff --git a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/virtio_ids.h b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/virtio_ids.h
index 2894700..b31ed93 100644
--- a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/virtio_ids.h
+++ b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/virtio_ids.h
@@ -57,11 +57,11 @@
 #define VIRTIO_ID_AUDIO_POLICY 39
 #define VIRTIO_ID_BT 40
 #define VIRTIO_ID_GPIO 41
-#define VIRTIO_TRANS_ID_NET 1000
-#define VIRTIO_TRANS_ID_BLOCK 1001
-#define VIRTIO_TRANS_ID_BALLOON 1002
-#define VIRTIO_TRANS_ID_CONSOLE 1003
-#define VIRTIO_TRANS_ID_SCSI 1004
-#define VIRTIO_TRANS_ID_RNG 1005
-#define VIRTIO_TRANS_ID_9P 1009
+#define VIRTIO_TRANS_ID_NET 0x1000
+#define VIRTIO_TRANS_ID_BLOCK 0x1001
+#define VIRTIO_TRANS_ID_BALLOON 0x1002
+#define VIRTIO_TRANS_ID_CONSOLE 0x1003
+#define VIRTIO_TRANS_ID_SCSI 0x1004
+#define VIRTIO_TRANS_ID_RNG 0x1005
+#define VIRTIO_TRANS_ID_9P 0x1009
 #endif
diff --git a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/virtio_net.h b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/virtio_net.h
index 2d92904..6fe90aa 100644
--- a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/virtio_net.h
+++ b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/virtio_net.h
@@ -45,6 +45,7 @@
 #define VIRTIO_NET_F_GUEST_ANNOUNCE 21
 #define VIRTIO_NET_F_MQ 22
 #define VIRTIO_NET_F_CTRL_MAC_ADDR 23
+#define VIRTIO_NET_F_NOTF_COAL 53
 #define VIRTIO_NET_F_HASH_REPORT 57
 #define VIRTIO_NET_F_RSS 60
 #define VIRTIO_NET_F_RSC_EXT 61
@@ -186,4 +187,15 @@
 #define VIRTIO_NET_CTRL_MQ_HASH_CONFIG 2
 #define VIRTIO_NET_CTRL_GUEST_OFFLOADS 5
 #define VIRTIO_NET_CTRL_GUEST_OFFLOADS_SET 0
+#define VIRTIO_NET_CTRL_NOTF_COAL 6
+struct virtio_net_ctrl_coal_tx {
+  __le32 tx_max_packets;
+  __le32 tx_usecs;
+};
+#define VIRTIO_NET_CTRL_NOTF_COAL_TX_SET 0
+struct virtio_net_ctrl_coal_rx {
+  __le32 rx_max_packets;
+  __le32 rx_usecs;
+};
+#define VIRTIO_NET_CTRL_NOTF_COAL_RX_SET 1
 #endif
diff --git a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/virtio_pci.h b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/virtio_pci.h
index e6d2731..94ca0a2 100644
--- a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/virtio_pci.h
+++ b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/virtio_pci.h
@@ -117,5 +117,7 @@
 #define VIRTIO_PCI_COMMON_Q_AVAILHI 44
 #define VIRTIO_PCI_COMMON_Q_USEDLO 48
 #define VIRTIO_PCI_COMMON_Q_USEDHI 52
+#define VIRTIO_PCI_COMMON_Q_NDATA 56
+#define VIRTIO_PCI_COMMON_Q_RESET 58
 #endif
 #endif
diff --git a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/wmi.h b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/wmi.h
index 26f54d9..7b72056 100644
--- a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/wmi.h
+++ b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/wmi.h
@@ -30,17 +30,17 @@
   __u16 cmd_select;
   volatile __u32 input[4];
   volatile __u32 output[4];
-} __packed;
+} __attribute__((__packed__));
 struct dell_wmi_extensions {
   __u32 argattrib;
   __u32 blength;
   __u8 data[];
-} __packed;
+} __attribute__((__packed__));
 struct dell_wmi_smbios_buffer {
   __u64 length;
   struct calling_interface_buffer std;
   struct dell_wmi_extensions ext;
-} __packed;
+} __attribute__((__packed__));
 #define CLASS_TOKEN_READ 0
 #define CLASS_TOKEN_WRITE 1
 #define SELECT_TOKEN_STD 0
diff --git a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/xfrm.h b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/xfrm.h
index f4df95f..77ded42 100644
--- a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/xfrm.h
+++ b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/xfrm.h
@@ -35,7 +35,7 @@
   __u8 ctx_alg;
   __u16 ctx_len;
   __u32 ctx_sid;
-  char ctx_str[0];
+  char ctx_str[];
 };
 #define XFRM_SC_DOI_RESERVED 0
 #define XFRM_SC_DOI_LSM 1
@@ -85,24 +85,24 @@
   __u32 oseq_hi;
   __u32 seq_hi;
   __u32 replay_window;
-  __u32 bmp[0];
+  __u32 bmp[];
 };
 struct xfrm_algo {
   char alg_name[64];
   unsigned int alg_key_len;
-  char alg_key[0];
+  char alg_key[];
 };
 struct xfrm_algo_auth {
   char alg_name[64];
   unsigned int alg_key_len;
   unsigned int alg_trunc_len;
-  char alg_key[0];
+  char alg_key[];
 };
 struct xfrm_algo_aead {
   char alg_name[64];
   unsigned int alg_key_len;
   unsigned int alg_icv_len;
-  char alg_key[0];
+  char alg_key[];
 };
 struct xfrm_stats {
   __u32 replay_window;
diff --git a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/zorro.h b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/zorro.h
index f8e47a1..86320aa 100644
--- a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/zorro.h
+++ b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/linux/zorro.h
@@ -42,7 +42,7 @@
   __u8 ln_Type;
   __s8 ln_Pri;
   __be32 ln_Name;
-} __packed;
+} __attribute__((__packed__));
 struct ExpansionRom {
   __u8 er_Type;
   __u8 er_Product;
@@ -55,7 +55,7 @@
   __u8 er_Reserved0d;
   __u8 er_Reserved0e;
   __u8 er_Reserved0f;
-} __packed;
+} __attribute__((__packed__));
 #define ERT_TYPEMASK 0xc0
 #define ERT_ZORROII 0xc0
 #define ERT_ZORROIII 0x80
@@ -73,6 +73,6 @@
   __be32 cd_Driver;
   __be32 cd_NextCD;
   __be32 cd_Unused[4];
-} __packed;
+} __attribute__((__packed__));
 #define ZORRO_NUM_AUTO 16
 #endif
diff --git a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/misc/fastrpc.h b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/misc/fastrpc.h
index 62955ec..e82b961 100644
--- a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/misc/fastrpc.h
+++ b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/misc/fastrpc.h
@@ -27,11 +27,32 @@
 #define FASTRPC_IOCTL_MMAP _IOWR('R', 6, struct fastrpc_req_mmap)
 #define FASTRPC_IOCTL_MUNMAP _IOWR('R', 7, struct fastrpc_req_munmap)
 #define FASTRPC_IOCTL_INIT_ATTACH_SNS _IO('R', 8)
+#define FASTRPC_IOCTL_MEM_MAP _IOWR('R', 10, struct fastrpc_mem_map)
+#define FASTRPC_IOCTL_MEM_UNMAP _IOWR('R', 11, struct fastrpc_mem_unmap)
+#define FASTRPC_IOCTL_GET_DSP_INFO _IOWR('R', 13, struct fastrpc_ioctl_capability)
+enum fastrpc_map_flags {
+  FASTRPC_MAP_STATIC = 0,
+  FASTRPC_MAP_RESERVED,
+  FASTRPC_MAP_FD = 2,
+  FASTRPC_MAP_FD_DELAYED,
+  FASTRPC_MAP_FD_NOMAP = 16,
+  FASTRPC_MAP_MAX,
+};
+enum fastrpc_proc_attr {
+  FASTRPC_MODE_DEBUG = (1 << 0),
+  FASTRPC_MODE_PTRACE = (1 << 1),
+  FASTRPC_MODE_CRC = (1 << 2),
+  FASTRPC_MODE_UNSIGNED_MODULE = (1 << 3),
+  FASTRPC_MODE_ADAPTIVE_QOS = (1 << 4),
+  FASTRPC_MODE_SYSTEM_PROCESS = (1 << 5),
+  FASTRPC_MODE_PRIVILEGED = (1 << 6),
+};
+#define FASTRPC_ATTR_SECUREMAP (1)
 struct fastrpc_invoke_args {
   __u64 ptr;
   __u64 length;
   __s32 fd;
-  __u32 reserved;
+  __u32 attr;
 };
 struct fastrpc_invoke {
   __u32 handle;
@@ -57,8 +78,32 @@
   __u64 size;
   __u64 vaddrout;
 };
+struct fastrpc_mem_map {
+  __s32 version;
+  __s32 fd;
+  __s32 offset;
+  __u32 flags;
+  __u64 vaddrin;
+  __u64 length;
+  __u64 vaddrout;
+  __s32 attrs;
+  __s32 reserved[4];
+};
 struct fastrpc_req_munmap {
   __u64 vaddrout;
   __u64 size;
 };
+struct fastrpc_mem_unmap {
+  __s32 vesion;
+  __s32 fd;
+  __u64 vaddr;
+  __u64 length;
+  __s32 reserved[5];
+};
+struct fastrpc_ioctl_capability {
+  __u32 domain;
+  __u32 attribute_id;
+  __u32 capability;
+  __u32 reserved[4];
+};
 #endif
diff --git a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/misc/habanalabs.h b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/misc/habanalabs.h
index 6e3439a..b6140bc 100644
--- a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/misc/habanalabs.h
+++ b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/misc/habanalabs.h
@@ -24,6 +24,7 @@
 #define GAUDI_DRIVER_SRAM_RESERVED_SIZE_FROM_START 0x80
 #define GAUDI_FIRST_AVAILABLE_W_S_SYNC_OBJECT 144
 #define GAUDI_FIRST_AVAILABLE_W_S_MONITOR 72
+#define TS_MAX_ELEMENTS_NUM (1 << 20)
 enum goya_queue_id {
   GOYA_QUEUE_ID_DMA_0 = 0,
   GOYA_QUEUE_ID_DMA_1 = 1,
@@ -158,6 +159,270 @@
   GAUDI_QUEUE_ID_NIC_9_3 = 112,
   GAUDI_QUEUE_ID_SIZE
 };
+enum gaudi2_queue_id {
+  GAUDI2_QUEUE_ID_PDMA_0_0 = 0,
+  GAUDI2_QUEUE_ID_PDMA_0_1 = 1,
+  GAUDI2_QUEUE_ID_PDMA_0_2 = 2,
+  GAUDI2_QUEUE_ID_PDMA_0_3 = 3,
+  GAUDI2_QUEUE_ID_PDMA_1_0 = 4,
+  GAUDI2_QUEUE_ID_PDMA_1_1 = 5,
+  GAUDI2_QUEUE_ID_PDMA_1_2 = 6,
+  GAUDI2_QUEUE_ID_PDMA_1_3 = 7,
+  GAUDI2_QUEUE_ID_DCORE0_EDMA_0_0 = 8,
+  GAUDI2_QUEUE_ID_DCORE0_EDMA_0_1 = 9,
+  GAUDI2_QUEUE_ID_DCORE0_EDMA_0_2 = 10,
+  GAUDI2_QUEUE_ID_DCORE0_EDMA_0_3 = 11,
+  GAUDI2_QUEUE_ID_DCORE0_EDMA_1_0 = 12,
+  GAUDI2_QUEUE_ID_DCORE0_EDMA_1_1 = 13,
+  GAUDI2_QUEUE_ID_DCORE0_EDMA_1_2 = 14,
+  GAUDI2_QUEUE_ID_DCORE0_EDMA_1_3 = 15,
+  GAUDI2_QUEUE_ID_DCORE0_MME_0_0 = 16,
+  GAUDI2_QUEUE_ID_DCORE0_MME_0_1 = 17,
+  GAUDI2_QUEUE_ID_DCORE0_MME_0_2 = 18,
+  GAUDI2_QUEUE_ID_DCORE0_MME_0_3 = 19,
+  GAUDI2_QUEUE_ID_DCORE0_TPC_0_0 = 20,
+  GAUDI2_QUEUE_ID_DCORE0_TPC_0_1 = 21,
+  GAUDI2_QUEUE_ID_DCORE0_TPC_0_2 = 22,
+  GAUDI2_QUEUE_ID_DCORE0_TPC_0_3 = 23,
+  GAUDI2_QUEUE_ID_DCORE0_TPC_1_0 = 24,
+  GAUDI2_QUEUE_ID_DCORE0_TPC_1_1 = 25,
+  GAUDI2_QUEUE_ID_DCORE0_TPC_1_2 = 26,
+  GAUDI2_QUEUE_ID_DCORE0_TPC_1_3 = 27,
+  GAUDI2_QUEUE_ID_DCORE0_TPC_2_0 = 28,
+  GAUDI2_QUEUE_ID_DCORE0_TPC_2_1 = 29,
+  GAUDI2_QUEUE_ID_DCORE0_TPC_2_2 = 30,
+  GAUDI2_QUEUE_ID_DCORE0_TPC_2_3 = 31,
+  GAUDI2_QUEUE_ID_DCORE0_TPC_3_0 = 32,
+  GAUDI2_QUEUE_ID_DCORE0_TPC_3_1 = 33,
+  GAUDI2_QUEUE_ID_DCORE0_TPC_3_2 = 34,
+  GAUDI2_QUEUE_ID_DCORE0_TPC_3_3 = 35,
+  GAUDI2_QUEUE_ID_DCORE0_TPC_4_0 = 36,
+  GAUDI2_QUEUE_ID_DCORE0_TPC_4_1 = 37,
+  GAUDI2_QUEUE_ID_DCORE0_TPC_4_2 = 38,
+  GAUDI2_QUEUE_ID_DCORE0_TPC_4_3 = 39,
+  GAUDI2_QUEUE_ID_DCORE0_TPC_5_0 = 40,
+  GAUDI2_QUEUE_ID_DCORE0_TPC_5_1 = 41,
+  GAUDI2_QUEUE_ID_DCORE0_TPC_5_2 = 42,
+  GAUDI2_QUEUE_ID_DCORE0_TPC_5_3 = 43,
+  GAUDI2_QUEUE_ID_DCORE0_TPC_6_0 = 44,
+  GAUDI2_QUEUE_ID_DCORE0_TPC_6_1 = 45,
+  GAUDI2_QUEUE_ID_DCORE0_TPC_6_2 = 46,
+  GAUDI2_QUEUE_ID_DCORE0_TPC_6_3 = 47,
+  GAUDI2_QUEUE_ID_DCORE1_EDMA_0_0 = 48,
+  GAUDI2_QUEUE_ID_DCORE1_EDMA_0_1 = 49,
+  GAUDI2_QUEUE_ID_DCORE1_EDMA_0_2 = 50,
+  GAUDI2_QUEUE_ID_DCORE1_EDMA_0_3 = 51,
+  GAUDI2_QUEUE_ID_DCORE1_EDMA_1_0 = 52,
+  GAUDI2_QUEUE_ID_DCORE1_EDMA_1_1 = 53,
+  GAUDI2_QUEUE_ID_DCORE1_EDMA_1_2 = 54,
+  GAUDI2_QUEUE_ID_DCORE1_EDMA_1_3 = 55,
+  GAUDI2_QUEUE_ID_DCORE1_MME_0_0 = 56,
+  GAUDI2_QUEUE_ID_DCORE1_MME_0_1 = 57,
+  GAUDI2_QUEUE_ID_DCORE1_MME_0_2 = 58,
+  GAUDI2_QUEUE_ID_DCORE1_MME_0_3 = 59,
+  GAUDI2_QUEUE_ID_DCORE1_TPC_0_0 = 60,
+  GAUDI2_QUEUE_ID_DCORE1_TPC_0_1 = 61,
+  GAUDI2_QUEUE_ID_DCORE1_TPC_0_2 = 62,
+  GAUDI2_QUEUE_ID_DCORE1_TPC_0_3 = 63,
+  GAUDI2_QUEUE_ID_DCORE1_TPC_1_0 = 64,
+  GAUDI2_QUEUE_ID_DCORE1_TPC_1_1 = 65,
+  GAUDI2_QUEUE_ID_DCORE1_TPC_1_2 = 66,
+  GAUDI2_QUEUE_ID_DCORE1_TPC_1_3 = 67,
+  GAUDI2_QUEUE_ID_DCORE1_TPC_2_0 = 68,
+  GAUDI2_QUEUE_ID_DCORE1_TPC_2_1 = 69,
+  GAUDI2_QUEUE_ID_DCORE1_TPC_2_2 = 70,
+  GAUDI2_QUEUE_ID_DCORE1_TPC_2_3 = 71,
+  GAUDI2_QUEUE_ID_DCORE1_TPC_3_0 = 72,
+  GAUDI2_QUEUE_ID_DCORE1_TPC_3_1 = 73,
+  GAUDI2_QUEUE_ID_DCORE1_TPC_3_2 = 74,
+  GAUDI2_QUEUE_ID_DCORE1_TPC_3_3 = 75,
+  GAUDI2_QUEUE_ID_DCORE1_TPC_4_0 = 76,
+  GAUDI2_QUEUE_ID_DCORE1_TPC_4_1 = 77,
+  GAUDI2_QUEUE_ID_DCORE1_TPC_4_2 = 78,
+  GAUDI2_QUEUE_ID_DCORE1_TPC_4_3 = 79,
+  GAUDI2_QUEUE_ID_DCORE1_TPC_5_0 = 80,
+  GAUDI2_QUEUE_ID_DCORE1_TPC_5_1 = 81,
+  GAUDI2_QUEUE_ID_DCORE1_TPC_5_2 = 82,
+  GAUDI2_QUEUE_ID_DCORE1_TPC_5_3 = 83,
+  GAUDI2_QUEUE_ID_DCORE2_EDMA_0_0 = 84,
+  GAUDI2_QUEUE_ID_DCORE2_EDMA_0_1 = 85,
+  GAUDI2_QUEUE_ID_DCORE2_EDMA_0_2 = 86,
+  GAUDI2_QUEUE_ID_DCORE2_EDMA_0_3 = 87,
+  GAUDI2_QUEUE_ID_DCORE2_EDMA_1_0 = 88,
+  GAUDI2_QUEUE_ID_DCORE2_EDMA_1_1 = 89,
+  GAUDI2_QUEUE_ID_DCORE2_EDMA_1_2 = 90,
+  GAUDI2_QUEUE_ID_DCORE2_EDMA_1_3 = 91,
+  GAUDI2_QUEUE_ID_DCORE2_MME_0_0 = 92,
+  GAUDI2_QUEUE_ID_DCORE2_MME_0_1 = 93,
+  GAUDI2_QUEUE_ID_DCORE2_MME_0_2 = 94,
+  GAUDI2_QUEUE_ID_DCORE2_MME_0_3 = 95,
+  GAUDI2_QUEUE_ID_DCORE2_TPC_0_0 = 96,
+  GAUDI2_QUEUE_ID_DCORE2_TPC_0_1 = 97,
+  GAUDI2_QUEUE_ID_DCORE2_TPC_0_2 = 98,
+  GAUDI2_QUEUE_ID_DCORE2_TPC_0_3 = 99,
+  GAUDI2_QUEUE_ID_DCORE2_TPC_1_0 = 100,
+  GAUDI2_QUEUE_ID_DCORE2_TPC_1_1 = 101,
+  GAUDI2_QUEUE_ID_DCORE2_TPC_1_2 = 102,
+  GAUDI2_QUEUE_ID_DCORE2_TPC_1_3 = 103,
+  GAUDI2_QUEUE_ID_DCORE2_TPC_2_0 = 104,
+  GAUDI2_QUEUE_ID_DCORE2_TPC_2_1 = 105,
+  GAUDI2_QUEUE_ID_DCORE2_TPC_2_2 = 106,
+  GAUDI2_QUEUE_ID_DCORE2_TPC_2_3 = 107,
+  GAUDI2_QUEUE_ID_DCORE2_TPC_3_0 = 108,
+  GAUDI2_QUEUE_ID_DCORE2_TPC_3_1 = 109,
+  GAUDI2_QUEUE_ID_DCORE2_TPC_3_2 = 110,
+  GAUDI2_QUEUE_ID_DCORE2_TPC_3_3 = 111,
+  GAUDI2_QUEUE_ID_DCORE2_TPC_4_0 = 112,
+  GAUDI2_QUEUE_ID_DCORE2_TPC_4_1 = 113,
+  GAUDI2_QUEUE_ID_DCORE2_TPC_4_2 = 114,
+  GAUDI2_QUEUE_ID_DCORE2_TPC_4_3 = 115,
+  GAUDI2_QUEUE_ID_DCORE2_TPC_5_0 = 116,
+  GAUDI2_QUEUE_ID_DCORE2_TPC_5_1 = 117,
+  GAUDI2_QUEUE_ID_DCORE2_TPC_5_2 = 118,
+  GAUDI2_QUEUE_ID_DCORE2_TPC_5_3 = 119,
+  GAUDI2_QUEUE_ID_DCORE3_EDMA_0_0 = 120,
+  GAUDI2_QUEUE_ID_DCORE3_EDMA_0_1 = 121,
+  GAUDI2_QUEUE_ID_DCORE3_EDMA_0_2 = 122,
+  GAUDI2_QUEUE_ID_DCORE3_EDMA_0_3 = 123,
+  GAUDI2_QUEUE_ID_DCORE3_EDMA_1_0 = 124,
+  GAUDI2_QUEUE_ID_DCORE3_EDMA_1_1 = 125,
+  GAUDI2_QUEUE_ID_DCORE3_EDMA_1_2 = 126,
+  GAUDI2_QUEUE_ID_DCORE3_EDMA_1_3 = 127,
+  GAUDI2_QUEUE_ID_DCORE3_MME_0_0 = 128,
+  GAUDI2_QUEUE_ID_DCORE3_MME_0_1 = 129,
+  GAUDI2_QUEUE_ID_DCORE3_MME_0_2 = 130,
+  GAUDI2_QUEUE_ID_DCORE3_MME_0_3 = 131,
+  GAUDI2_QUEUE_ID_DCORE3_TPC_0_0 = 132,
+  GAUDI2_QUEUE_ID_DCORE3_TPC_0_1 = 133,
+  GAUDI2_QUEUE_ID_DCORE3_TPC_0_2 = 134,
+  GAUDI2_QUEUE_ID_DCORE3_TPC_0_3 = 135,
+  GAUDI2_QUEUE_ID_DCORE3_TPC_1_0 = 136,
+  GAUDI2_QUEUE_ID_DCORE3_TPC_1_1 = 137,
+  GAUDI2_QUEUE_ID_DCORE3_TPC_1_2 = 138,
+  GAUDI2_QUEUE_ID_DCORE3_TPC_1_3 = 139,
+  GAUDI2_QUEUE_ID_DCORE3_TPC_2_0 = 140,
+  GAUDI2_QUEUE_ID_DCORE3_TPC_2_1 = 141,
+  GAUDI2_QUEUE_ID_DCORE3_TPC_2_2 = 142,
+  GAUDI2_QUEUE_ID_DCORE3_TPC_2_3 = 143,
+  GAUDI2_QUEUE_ID_DCORE3_TPC_3_0 = 144,
+  GAUDI2_QUEUE_ID_DCORE3_TPC_3_1 = 145,
+  GAUDI2_QUEUE_ID_DCORE3_TPC_3_2 = 146,
+  GAUDI2_QUEUE_ID_DCORE3_TPC_3_3 = 147,
+  GAUDI2_QUEUE_ID_DCORE3_TPC_4_0 = 148,
+  GAUDI2_QUEUE_ID_DCORE3_TPC_4_1 = 149,
+  GAUDI2_QUEUE_ID_DCORE3_TPC_4_2 = 150,
+  GAUDI2_QUEUE_ID_DCORE3_TPC_4_3 = 151,
+  GAUDI2_QUEUE_ID_DCORE3_TPC_5_0 = 152,
+  GAUDI2_QUEUE_ID_DCORE3_TPC_5_1 = 153,
+  GAUDI2_QUEUE_ID_DCORE3_TPC_5_2 = 154,
+  GAUDI2_QUEUE_ID_DCORE3_TPC_5_3 = 155,
+  GAUDI2_QUEUE_ID_NIC_0_0 = 156,
+  GAUDI2_QUEUE_ID_NIC_0_1 = 157,
+  GAUDI2_QUEUE_ID_NIC_0_2 = 158,
+  GAUDI2_QUEUE_ID_NIC_0_3 = 159,
+  GAUDI2_QUEUE_ID_NIC_1_0 = 160,
+  GAUDI2_QUEUE_ID_NIC_1_1 = 161,
+  GAUDI2_QUEUE_ID_NIC_1_2 = 162,
+  GAUDI2_QUEUE_ID_NIC_1_3 = 163,
+  GAUDI2_QUEUE_ID_NIC_2_0 = 164,
+  GAUDI2_QUEUE_ID_NIC_2_1 = 165,
+  GAUDI2_QUEUE_ID_NIC_2_2 = 166,
+  GAUDI2_QUEUE_ID_NIC_2_3 = 167,
+  GAUDI2_QUEUE_ID_NIC_3_0 = 168,
+  GAUDI2_QUEUE_ID_NIC_3_1 = 169,
+  GAUDI2_QUEUE_ID_NIC_3_2 = 170,
+  GAUDI2_QUEUE_ID_NIC_3_3 = 171,
+  GAUDI2_QUEUE_ID_NIC_4_0 = 172,
+  GAUDI2_QUEUE_ID_NIC_4_1 = 173,
+  GAUDI2_QUEUE_ID_NIC_4_2 = 174,
+  GAUDI2_QUEUE_ID_NIC_4_3 = 175,
+  GAUDI2_QUEUE_ID_NIC_5_0 = 176,
+  GAUDI2_QUEUE_ID_NIC_5_1 = 177,
+  GAUDI2_QUEUE_ID_NIC_5_2 = 178,
+  GAUDI2_QUEUE_ID_NIC_5_3 = 179,
+  GAUDI2_QUEUE_ID_NIC_6_0 = 180,
+  GAUDI2_QUEUE_ID_NIC_6_1 = 181,
+  GAUDI2_QUEUE_ID_NIC_6_2 = 182,
+  GAUDI2_QUEUE_ID_NIC_6_3 = 183,
+  GAUDI2_QUEUE_ID_NIC_7_0 = 184,
+  GAUDI2_QUEUE_ID_NIC_7_1 = 185,
+  GAUDI2_QUEUE_ID_NIC_7_2 = 186,
+  GAUDI2_QUEUE_ID_NIC_7_3 = 187,
+  GAUDI2_QUEUE_ID_NIC_8_0 = 188,
+  GAUDI2_QUEUE_ID_NIC_8_1 = 189,
+  GAUDI2_QUEUE_ID_NIC_8_2 = 190,
+  GAUDI2_QUEUE_ID_NIC_8_3 = 191,
+  GAUDI2_QUEUE_ID_NIC_9_0 = 192,
+  GAUDI2_QUEUE_ID_NIC_9_1 = 193,
+  GAUDI2_QUEUE_ID_NIC_9_2 = 194,
+  GAUDI2_QUEUE_ID_NIC_9_3 = 195,
+  GAUDI2_QUEUE_ID_NIC_10_0 = 196,
+  GAUDI2_QUEUE_ID_NIC_10_1 = 197,
+  GAUDI2_QUEUE_ID_NIC_10_2 = 198,
+  GAUDI2_QUEUE_ID_NIC_10_3 = 199,
+  GAUDI2_QUEUE_ID_NIC_11_0 = 200,
+  GAUDI2_QUEUE_ID_NIC_11_1 = 201,
+  GAUDI2_QUEUE_ID_NIC_11_2 = 202,
+  GAUDI2_QUEUE_ID_NIC_11_3 = 203,
+  GAUDI2_QUEUE_ID_NIC_12_0 = 204,
+  GAUDI2_QUEUE_ID_NIC_12_1 = 205,
+  GAUDI2_QUEUE_ID_NIC_12_2 = 206,
+  GAUDI2_QUEUE_ID_NIC_12_3 = 207,
+  GAUDI2_QUEUE_ID_NIC_13_0 = 208,
+  GAUDI2_QUEUE_ID_NIC_13_1 = 209,
+  GAUDI2_QUEUE_ID_NIC_13_2 = 210,
+  GAUDI2_QUEUE_ID_NIC_13_3 = 211,
+  GAUDI2_QUEUE_ID_NIC_14_0 = 212,
+  GAUDI2_QUEUE_ID_NIC_14_1 = 213,
+  GAUDI2_QUEUE_ID_NIC_14_2 = 214,
+  GAUDI2_QUEUE_ID_NIC_14_3 = 215,
+  GAUDI2_QUEUE_ID_NIC_15_0 = 216,
+  GAUDI2_QUEUE_ID_NIC_15_1 = 217,
+  GAUDI2_QUEUE_ID_NIC_15_2 = 218,
+  GAUDI2_QUEUE_ID_NIC_15_3 = 219,
+  GAUDI2_QUEUE_ID_NIC_16_0 = 220,
+  GAUDI2_QUEUE_ID_NIC_16_1 = 221,
+  GAUDI2_QUEUE_ID_NIC_16_2 = 222,
+  GAUDI2_QUEUE_ID_NIC_16_3 = 223,
+  GAUDI2_QUEUE_ID_NIC_17_0 = 224,
+  GAUDI2_QUEUE_ID_NIC_17_1 = 225,
+  GAUDI2_QUEUE_ID_NIC_17_2 = 226,
+  GAUDI2_QUEUE_ID_NIC_17_3 = 227,
+  GAUDI2_QUEUE_ID_NIC_18_0 = 228,
+  GAUDI2_QUEUE_ID_NIC_18_1 = 229,
+  GAUDI2_QUEUE_ID_NIC_18_2 = 230,
+  GAUDI2_QUEUE_ID_NIC_18_3 = 231,
+  GAUDI2_QUEUE_ID_NIC_19_0 = 232,
+  GAUDI2_QUEUE_ID_NIC_19_1 = 233,
+  GAUDI2_QUEUE_ID_NIC_19_2 = 234,
+  GAUDI2_QUEUE_ID_NIC_19_3 = 235,
+  GAUDI2_QUEUE_ID_NIC_20_0 = 236,
+  GAUDI2_QUEUE_ID_NIC_20_1 = 237,
+  GAUDI2_QUEUE_ID_NIC_20_2 = 238,
+  GAUDI2_QUEUE_ID_NIC_20_3 = 239,
+  GAUDI2_QUEUE_ID_NIC_21_0 = 240,
+  GAUDI2_QUEUE_ID_NIC_21_1 = 241,
+  GAUDI2_QUEUE_ID_NIC_21_2 = 242,
+  GAUDI2_QUEUE_ID_NIC_21_3 = 243,
+  GAUDI2_QUEUE_ID_NIC_22_0 = 244,
+  GAUDI2_QUEUE_ID_NIC_22_1 = 245,
+  GAUDI2_QUEUE_ID_NIC_22_2 = 246,
+  GAUDI2_QUEUE_ID_NIC_22_3 = 247,
+  GAUDI2_QUEUE_ID_NIC_23_0 = 248,
+  GAUDI2_QUEUE_ID_NIC_23_1 = 249,
+  GAUDI2_QUEUE_ID_NIC_23_2 = 250,
+  GAUDI2_QUEUE_ID_NIC_23_3 = 251,
+  GAUDI2_QUEUE_ID_ROT_0_0 = 252,
+  GAUDI2_QUEUE_ID_ROT_0_1 = 253,
+  GAUDI2_QUEUE_ID_ROT_0_2 = 254,
+  GAUDI2_QUEUE_ID_ROT_0_3 = 255,
+  GAUDI2_QUEUE_ID_ROT_1_0 = 256,
+  GAUDI2_QUEUE_ID_ROT_1_1 = 257,
+  GAUDI2_QUEUE_ID_ROT_1_2 = 258,
+  GAUDI2_QUEUE_ID_ROT_1_3 = 259,
+  GAUDI2_QUEUE_ID_CPU_PQ = 260,
+  GAUDI2_QUEUE_ID_SIZE
+};
 enum goya_engine_id {
   GOYA_ENGINE_ID_DMA_0 = 0,
   GOYA_ENGINE_ID_DMA_1,
@@ -208,6 +473,84 @@
   GAUDI_ENGINE_ID_NIC_9,
   GAUDI_ENGINE_ID_SIZE
 };
+enum gaudi2_engine_id {
+  GAUDI2_DCORE0_ENGINE_ID_EDMA_0 = 0,
+  GAUDI2_DCORE0_ENGINE_ID_EDMA_1,
+  GAUDI2_DCORE0_ENGINE_ID_MME,
+  GAUDI2_DCORE0_ENGINE_ID_TPC_0,
+  GAUDI2_DCORE0_ENGINE_ID_TPC_1,
+  GAUDI2_DCORE0_ENGINE_ID_TPC_2,
+  GAUDI2_DCORE0_ENGINE_ID_TPC_3,
+  GAUDI2_DCORE0_ENGINE_ID_TPC_4,
+  GAUDI2_DCORE0_ENGINE_ID_TPC_5,
+  GAUDI2_DCORE0_ENGINE_ID_DEC_0,
+  GAUDI2_DCORE0_ENGINE_ID_DEC_1,
+  GAUDI2_DCORE1_ENGINE_ID_EDMA_0,
+  GAUDI2_DCORE1_ENGINE_ID_EDMA_1,
+  GAUDI2_DCORE1_ENGINE_ID_MME,
+  GAUDI2_DCORE1_ENGINE_ID_TPC_0,
+  GAUDI2_DCORE1_ENGINE_ID_TPC_1,
+  GAUDI2_DCORE1_ENGINE_ID_TPC_2,
+  GAUDI2_DCORE1_ENGINE_ID_TPC_3,
+  GAUDI2_DCORE1_ENGINE_ID_TPC_4,
+  GAUDI2_DCORE1_ENGINE_ID_TPC_5,
+  GAUDI2_DCORE1_ENGINE_ID_DEC_0,
+  GAUDI2_DCORE1_ENGINE_ID_DEC_1,
+  GAUDI2_DCORE2_ENGINE_ID_EDMA_0,
+  GAUDI2_DCORE2_ENGINE_ID_EDMA_1,
+  GAUDI2_DCORE2_ENGINE_ID_MME,
+  GAUDI2_DCORE2_ENGINE_ID_TPC_0,
+  GAUDI2_DCORE2_ENGINE_ID_TPC_1,
+  GAUDI2_DCORE2_ENGINE_ID_TPC_2,
+  GAUDI2_DCORE2_ENGINE_ID_TPC_3,
+  GAUDI2_DCORE2_ENGINE_ID_TPC_4,
+  GAUDI2_DCORE2_ENGINE_ID_TPC_5,
+  GAUDI2_DCORE2_ENGINE_ID_DEC_0,
+  GAUDI2_DCORE2_ENGINE_ID_DEC_1,
+  GAUDI2_DCORE3_ENGINE_ID_EDMA_0,
+  GAUDI2_DCORE3_ENGINE_ID_EDMA_1,
+  GAUDI2_DCORE3_ENGINE_ID_MME,
+  GAUDI2_DCORE3_ENGINE_ID_TPC_0,
+  GAUDI2_DCORE3_ENGINE_ID_TPC_1,
+  GAUDI2_DCORE3_ENGINE_ID_TPC_2,
+  GAUDI2_DCORE3_ENGINE_ID_TPC_3,
+  GAUDI2_DCORE3_ENGINE_ID_TPC_4,
+  GAUDI2_DCORE3_ENGINE_ID_TPC_5,
+  GAUDI2_DCORE3_ENGINE_ID_DEC_0,
+  GAUDI2_DCORE3_ENGINE_ID_DEC_1,
+  GAUDI2_DCORE0_ENGINE_ID_TPC_6,
+  GAUDI2_ENGINE_ID_PDMA_0,
+  GAUDI2_ENGINE_ID_PDMA_1,
+  GAUDI2_ENGINE_ID_ROT_0,
+  GAUDI2_ENGINE_ID_ROT_1,
+  GAUDI2_PCIE_ENGINE_ID_DEC_0,
+  GAUDI2_PCIE_ENGINE_ID_DEC_1,
+  GAUDI2_ENGINE_ID_NIC0_0,
+  GAUDI2_ENGINE_ID_NIC0_1,
+  GAUDI2_ENGINE_ID_NIC1_0,
+  GAUDI2_ENGINE_ID_NIC1_1,
+  GAUDI2_ENGINE_ID_NIC2_0,
+  GAUDI2_ENGINE_ID_NIC2_1,
+  GAUDI2_ENGINE_ID_NIC3_0,
+  GAUDI2_ENGINE_ID_NIC3_1,
+  GAUDI2_ENGINE_ID_NIC4_0,
+  GAUDI2_ENGINE_ID_NIC4_1,
+  GAUDI2_ENGINE_ID_NIC5_0,
+  GAUDI2_ENGINE_ID_NIC5_1,
+  GAUDI2_ENGINE_ID_NIC6_0,
+  GAUDI2_ENGINE_ID_NIC6_1,
+  GAUDI2_ENGINE_ID_NIC7_0,
+  GAUDI2_ENGINE_ID_NIC7_1,
+  GAUDI2_ENGINE_ID_NIC8_0,
+  GAUDI2_ENGINE_ID_NIC8_1,
+  GAUDI2_ENGINE_ID_NIC9_0,
+  GAUDI2_ENGINE_ID_NIC9_1,
+  GAUDI2_ENGINE_ID_NIC10_0,
+  GAUDI2_ENGINE_ID_NIC10_1,
+  GAUDI2_ENGINE_ID_NIC11_0,
+  GAUDI2_ENGINE_ID_NIC11_1,
+  GAUDI2_ENGINE_ID_SIZE
+};
 enum hl_goya_pll_index {
   HL_GOYA_CPU_PLL = 0,
   HL_GOYA_IC_PLL,
@@ -231,21 +574,56 @@
   HL_GAUDI_IF_PLL,
   HL_GAUDI_PLL_MAX
 };
+enum hl_gaudi2_pll_index {
+  HL_GAUDI2_CPU_PLL = 0,
+  HL_GAUDI2_PCI_PLL,
+  HL_GAUDI2_SRAM_PLL,
+  HL_GAUDI2_HBM_PLL,
+  HL_GAUDI2_NIC_PLL,
+  HL_GAUDI2_DMA_PLL,
+  HL_GAUDI2_MESH_PLL,
+  HL_GAUDI2_MME_PLL,
+  HL_GAUDI2_TPC_PLL,
+  HL_GAUDI2_IF_PLL,
+  HL_GAUDI2_VID_PLL,
+  HL_GAUDI2_MSS_PLL,
+  HL_GAUDI2_PLL_MAX
+};
+enum hl_goya_dma_direction {
+  HL_DMA_HOST_TO_DRAM,
+  HL_DMA_HOST_TO_SRAM,
+  HL_DMA_DRAM_TO_SRAM,
+  HL_DMA_SRAM_TO_DRAM,
+  HL_DMA_SRAM_TO_HOST,
+  HL_DMA_DRAM_TO_HOST,
+  HL_DMA_DRAM_TO_DRAM,
+  HL_DMA_SRAM_TO_SRAM,
+  HL_DMA_ENUM_MAX
+};
 enum hl_device_status {
   HL_DEVICE_STATUS_OPERATIONAL,
   HL_DEVICE_STATUS_IN_RESET,
   HL_DEVICE_STATUS_MALFUNCTION,
   HL_DEVICE_STATUS_NEEDS_RESET,
   HL_DEVICE_STATUS_IN_DEVICE_CREATION,
-  HL_DEVICE_STATUS_LAST = HL_DEVICE_STATUS_IN_DEVICE_CREATION
+  HL_DEVICE_STATUS_IN_RESET_AFTER_DEVICE_RELEASE,
+  HL_DEVICE_STATUS_LAST = HL_DEVICE_STATUS_IN_RESET_AFTER_DEVICE_RELEASE
 };
 enum hl_server_type {
   HL_SERVER_TYPE_UNKNOWN = 0,
   HL_SERVER_GAUDI_HLS1 = 1,
   HL_SERVER_GAUDI_HLS1H = 2,
   HL_SERVER_GAUDI_TYPE1 = 3,
-  HL_SERVER_GAUDI_TYPE2 = 4
+  HL_SERVER_GAUDI_TYPE2 = 4,
+  HL_SERVER_GAUDI2_HLS2 = 5
 };
+#define HL_NOTIFIER_EVENT_TPC_ASSERT (1ULL << 0)
+#define HL_NOTIFIER_EVENT_UNDEFINED_OPCODE (1ULL << 1)
+#define HL_NOTIFIER_EVENT_DEVICE_RESET (1ULL << 2)
+#define HL_NOTIFIER_EVENT_CS_TIMEOUT (1ULL << 3)
+#define HL_NOTIFIER_EVENT_DEVICE_UNAVAILABLE (1ULL << 4)
+#define HL_NOTIFIER_EVENT_USER_ENGINE_ERR (1ULL << 5)
+#define HL_NOTIFIER_EVENT_GENERAL_HW_ERR (1ULL << 6)
 #define HL_INFO_HW_IP_INFO 0
 #define HL_INFO_HW_EVENTS 1
 #define HL_INFO_DRAM_USAGE 2
@@ -269,8 +647,16 @@
 #define HL_INFO_LAST_ERR_OPEN_DEV_TIME 23
 #define HL_INFO_CS_TIMEOUT_EVENT 24
 #define HL_INFO_RAZWI_EVENT 25
+#define HL_INFO_DEV_MEM_ALLOC_PAGE_SIZES 26
+#define HL_INFO_SECURED_ATTESTATION 27
+#define HL_INFO_REGISTER_EVENTFD 28
+#define HL_INFO_UNREGISTER_EVENTFD 29
+#define HL_INFO_GET_EVENTS 30
+#define HL_INFO_UNDEFINED_OPCODE_EVENT 31
+#define HL_INFO_ENGINE_STATUS 32
 #define HL_INFO_VERSION_MAX_LEN 128
 #define HL_INFO_CARD_NAME_MAX_LEN 16
+#define HL_ENGINES_DATA_MAX_SIZE SZ_1M
 struct hl_info_hw_ip_info {
   __u64 sram_base_address;
   __u64 dram_base_address;
@@ -279,7 +665,7 @@
   __u32 num_of_events;
   __u32 device_id;
   __u32 module_id;
-  __u32 reserved;
+  __u32 decoder_enabled_mask;
   __u16 first_available_interrupt_id;
   __u16 server_type;
   __u32 cpld_version;
@@ -289,11 +675,17 @@
   __u32 psoc_pci_pll_div_factor;
   __u8 tpc_enabled_mask;
   __u8 dram_enabled;
-  __u8 pad[2];
+  __u8 security_enabled;
+  __u8 mme_master_slave_mode;
   __u8 cpucp_version[HL_INFO_VERSION_MAX_LEN];
   __u8 card_name[HL_INFO_CARD_NAME_MAX_LEN];
-  __u64 reserved2;
+  __u64 tpc_enabled_mask_ext;
   __u64 dram_page_size;
+  __u32 edma_enabled_mask;
+  __u16 number_of_user_interrupts;
+  __u16 pad2;
+  __u64 reserved4;
+  __u64 device_mem_alloc_default_page_size;
 };
 struct hl_info_dram_usage {
   __u64 dram_free_mem;
@@ -353,6 +745,9 @@
 struct hl_open_stats_info {
   __u64 open_counter;
   __u64 last_open_period_ms;
+  __u8 is_compute_ctx_active;
+  __u8 compute_ctx_in_release;
+  __u8 pad[6];
 };
 struct hl_power_info {
   __u64 power;
@@ -395,6 +790,40 @@
   __u8 error_type;
   __u8 pad[2];
 };
+#define MAX_QMAN_STREAMS_INFO 4
+#define OPCODE_INFO_MAX_ADDR_SIZE 8
+struct hl_info_undefined_opcode_event {
+  __s64 timestamp;
+  __u64 cb_addr_streams[MAX_QMAN_STREAMS_INFO][OPCODE_INFO_MAX_ADDR_SIZE];
+  __u64 cq_addr;
+  __u32 cq_size;
+  __u32 cb_addr_streams_len;
+  __u32 engine_id;
+  __u32 stream_id;
+};
+struct hl_info_dev_memalloc_page_sizes {
+  __u64 page_order_bitmask;
+};
+#define SEC_PCR_DATA_BUF_SZ 256
+#define SEC_PCR_QUOTE_BUF_SZ 510
+#define SEC_SIGNATURE_BUF_SZ 255
+#define SEC_PUB_DATA_BUF_SZ 510
+#define SEC_CERTIFICATE_BUF_SZ 2046
+struct hl_info_sec_attest {
+  __u32 nonce;
+  __u16 pcr_quote_len;
+  __u16 pub_data_len;
+  __u16 certificate_len;
+  __u8 pcr_num_reg;
+  __u8 pcr_reg_len;
+  __u8 quote_sig_len;
+  __u8 pcr_data[SEC_PCR_DATA_BUF_SZ];
+  __u8 pcr_quote[SEC_PCR_QUOTE_BUF_SZ];
+  __u8 quote_sig[SEC_SIGNATURE_BUF_SZ];
+  __u8 public_data[SEC_PUB_DATA_BUF_SZ];
+  __u8 certificate[SEC_CERTIFICATE_BUF_SZ];
+  __u8 pad0[2];
+};
 enum gaudi_dcores {
   HL_GAUDI_WS_DCORE,
   HL_GAUDI_WN_DCORE,
@@ -410,6 +839,9 @@
     __u32 ctx_id;
     __u32 period_ms;
     __u32 pll_index;
+    __u32 eventfd;
+    __u32 user_buffer_actual_size;
+    __u32 sec_attest_nonce;
   };
   __u32 pad;
 };
@@ -472,11 +904,23 @@
 #define HL_CS_FLAGS_ENCAP_SIGNALS 0x800
 #define HL_CS_FLAGS_RESERVE_SIGNALS_ONLY 0x1000
 #define HL_CS_FLAGS_UNRESERVE_SIGNALS_ONLY 0x2000
+#define HL_CS_FLAGS_ENGINE_CORE_COMMAND 0x4000
 #define HL_CS_STATUS_SUCCESS 0
 #define HL_MAX_JOBS_PER_CS 512
+#define HL_ENGINE_CORE_HALT (1 << 0)
+#define HL_ENGINE_CORE_RUN (1 << 1)
 struct hl_cs_in {
-  __u64 chunks_restore;
-  __u64 chunks_execute;
+  union {
+    struct {
+      __u64 chunks_restore;
+      __u64 chunks_execute;
+    };
+    struct {
+      __u64 engine_cores;
+      __u32 num_engine_cores;
+      __u32 core_command;
+    };
+  };
   union {
     __u64 seq;
     __u32 encaps_sig_handle_id;
@@ -490,6 +934,7 @@
   __u32 timeout;
   __u32 cs_flags;
   __u32 ctx_id;
+  __u8 pad[4];
 };
 struct hl_cs_out {
   union {
@@ -510,8 +955,11 @@
 };
 #define HL_WAIT_CS_FLAGS_INTERRUPT 0x2
 #define HL_WAIT_CS_FLAGS_INTERRUPT_MASK 0xFFF00000
+#define HL_WAIT_CS_FLAGS_ANY_CQ_INTERRUPT 0xFFF00000
+#define HL_WAIT_CS_FLAGS_ANY_DEC_INTERRUPT 0xFFE00000
 #define HL_WAIT_CS_FLAGS_MULTI_CS 0x4
 #define HL_WAIT_CS_FLAGS_INTERRUPT_KERNEL_CQ 0x10
+#define HL_WAIT_CS_FLAGS_REGISTER_INTERRUPT 0x20
 #define HL_WAIT_MULTI_CS_LIST_MAX_LEN 32
 struct hl_wait_cs_in {
   union {
@@ -537,6 +985,8 @@
     __u64 interrupt_timeout_us;
   };
   __u64 cq_counters_offset;
+  __u64 timestamp_handle;
+  __u64 timestamp_offset;
 };
 #define HL_WAIT_CS_STATUS_COMPLETED 0
 #define HL_WAIT_CS_STATUS_BUSY 1
@@ -561,14 +1011,17 @@
 #define HL_MEM_OP_UNMAP 3
 #define HL_MEM_OP_MAP_BLOCK 4
 #define HL_MEM_OP_EXPORT_DMABUF_FD 5
+#define HL_MEM_OP_TS_ALLOC 6
 #define HL_MEM_CONTIGUOUS 0x1
 #define HL_MEM_SHARED 0x2
 #define HL_MEM_USERPTR 0x4
 #define HL_MEM_FORCE_HINT 0x8
+#define HL_MEM_PREFETCH 0x40
 struct hl_mem_in {
   union {
     struct {
       __u64 mem_size;
+      __u64 page_size;
     } alloc;
     struct {
       __u64 handle;
@@ -596,7 +1049,7 @@
   __u32 op;
   __u32 flags;
   __u32 ctx_id;
-  __u32 pad;
+  __u32 num_of_elements;
 };
 struct hl_mem_out {
   union {
@@ -641,12 +1094,18 @@
   __u32 bw_win;
   __u32 win_capture;
   __u32 id;
-  __u32 pad;
+  __u32 control;
+  __u64 start_addr2;
+  __u64 end_addr2;
+  __u64 start_addr3;
+  __u64 end_addr3;
 };
 struct hl_debug_params_spmu {
   __u64 event_types[HL_DEBUG_MAX_AUX_VALUES];
   __u32 event_types_num;
-  __u32 pad;
+  __u32 pmtrc_val;
+  __u32 trc_ctrl_host_val;
+  __u32 trc_en_host_val;
 };
 #define HL_DEBUG_OP_ETR 0
 #define HL_DEBUG_OP_ETF 1
diff --git a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/misc/uacce/hisi_qm.h b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/misc/uacce/hisi_qm.h
index 87757a9..d2509d0 100644
--- a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/misc/uacce/hisi_qm.h
+++ b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/misc/uacce/hisi_qm.h
@@ -23,8 +23,15 @@
   __u16 id;
   __u16 qc_type;
 };
+struct hisi_qp_info {
+  __u32 sqe_size;
+  __u16 sq_depth;
+  __u16 cq_depth;
+  __u64 reserved;
+};
 #define HISI_QM_API_VER_BASE "hisi_qm_v1"
 #define HISI_QM_API_VER2_BASE "hisi_qm_v2"
 #define HISI_QM_API_VER3_BASE "hisi_qm_v3"
 #define UACCE_CMD_QM_SET_QP_CTX _IOWR('H', 10, struct hisi_qp_ctx)
+#define UACCE_CMD_QM_SET_QP_INFO _IOWR('H', 11, struct hisi_qp_info)
 #endif
diff --git a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/mtd/mtd-abi.h b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/mtd/mtd-abi.h
index 50ae565..6e26cae 100644
--- a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/mtd/mtd-abi.h
+++ b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/mtd/mtd-abi.h
@@ -52,6 +52,21 @@
   __u8 mode;
   __u8 padding[7];
 };
+struct mtd_read_req_ecc_stats {
+  __u32 uncorrectable_errors;
+  __u32 corrected_bitflips;
+  __u32 max_bitflips;
+};
+struct mtd_read_req {
+  __u64 start;
+  __u64 len;
+  __u64 ooblen;
+  __u64 usr_data;
+  __u64 usr_oob;
+  __u8 mode;
+  __u8 padding[7];
+  struct mtd_read_req_ecc_stats ecc_stats;
+};
 #define MTD_ABSENT 0
 #define MTD_RAM 1
 #define MTD_ROM 2
@@ -122,6 +137,7 @@
 #define MEMISLOCKED _IOR('M', 23, struct erase_info_user)
 #define MEMWRITE _IOWR('M', 24, struct mtd_write_req)
 #define OTPERASE _IOW('M', 25, struct otp_info)
+#define MEMREAD _IOWR('M', 26, struct mtd_read_req)
 struct nand_oobinfo {
   __u32 useecc;
   __u32 eccbytes;
diff --git a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/mtd/ubi-user.h b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/mtd/ubi-user.h
index 866fbd2..db203d5 100644
--- a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/mtd/ubi-user.h
+++ b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/mtd/ubi-user.h
@@ -56,7 +56,8 @@
   __s32 mtd_num;
   __s32 vid_hdr_offset;
   __s16 max_beb_per1024;
-  __s8 padding[10];
+  __s8 disable_fm;
+  __s8 padding[9];
 };
 enum {
   UBI_VOL_SKIP_CRC_CHECK_FLG = 0x1,
@@ -71,11 +72,11 @@
   __s16 name_len;
   __s8 padding2[4];
   char name[UBI_MAX_VOLUME_NAME + 1];
-} __packed;
+} __attribute__((__packed__));
 struct ubi_rsvol_req {
   __s64 bytes;
   __s32 vol_id;
-} __packed;
+} __attribute__((__packed__));
 struct ubi_rnvol_req {
   __s32 count;
   __s8 padding1[12];
@@ -85,24 +86,24 @@
     __s8 padding2[2];
     char name[UBI_MAX_VOLUME_NAME + 1];
   } ents[UBI_MAX_RNVOL];
-} __packed;
+} __attribute__((__packed__));
 struct ubi_leb_change_req {
   __s32 lnum;
   __s32 bytes;
   __s8 dtype;
   __s8 padding[7];
-} __packed;
+} __attribute__((__packed__));
 struct ubi_map_req {
   __s32 lnum;
   __s8 dtype;
   __s8 padding[3];
-} __packed;
+} __attribute__((__packed__));
 struct ubi_set_vol_prop_req {
   __u8 property;
   __u8 padding[7];
   __u64 value;
-} __packed;
+} __attribute__((__packed__));
 struct ubi_blkcreate_req {
   __s8 padding[128];
-} __packed;
+} __attribute__((__packed__));
 #endif
diff --git a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/rdma/efa-abi.h b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/rdma/efa-abi.h
index 4b6842b..bfb3f18 100644
--- a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/rdma/efa-abi.h
+++ b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/rdma/efa-abi.h
@@ -49,6 +49,7 @@
 };
 enum {
   EFA_CREATE_CQ_WITH_COMPLETION_CHANNEL = 1 << 0,
+  EFA_CREATE_CQ_WITH_SGID = 1 << 1,
 };
 struct efa_ibv_create_cq {
   __u32 comp_mask;
@@ -102,6 +103,7 @@
   EFA_QUERY_DEVICE_CAPS_RDMA_READ = 1 << 0,
   EFA_QUERY_DEVICE_CAPS_RNR_RETRY = 1 << 1,
   EFA_QUERY_DEVICE_CAPS_CQ_NOTIFICATIONS = 1 << 2,
+  EFA_QUERY_DEVICE_CAPS_CQ_WITH_SGID = 1 << 3,
 };
 struct efa_ibv_ex_query_device_resp {
   __u32 comp_mask;
diff --git a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/rdma/erdma-abi.h b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/rdma/erdma-abi.h
new file mode 100644
index 0000000..4df1757
--- /dev/null
+++ b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/rdma/erdma-abi.h
@@ -0,0 +1,54 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef __ERDMA_USER_H__
+#define __ERDMA_USER_H__
+#include <linux/types.h>
+#define ERDMA_ABI_VERSION 1
+struct erdma_ureq_create_cq {
+  __aligned_u64 db_record_va;
+  __aligned_u64 qbuf_va;
+  __u32 qbuf_len;
+  __u32 rsvd0;
+};
+struct erdma_uresp_create_cq {
+  __u32 cq_id;
+  __u32 num_cqe;
+};
+struct erdma_ureq_create_qp {
+  __aligned_u64 db_record_va;
+  __aligned_u64 qbuf_va;
+  __u32 qbuf_len;
+  __u32 rsvd0;
+};
+struct erdma_uresp_create_qp {
+  __u32 qp_id;
+  __u32 num_sqe;
+  __u32 num_rqe;
+  __u32 rq_offset;
+};
+struct erdma_uresp_alloc_ctx {
+  __u32 dev_id;
+  __u32 pad;
+  __u32 sdb_type;
+  __u32 sdb_offset;
+  __aligned_u64 sdb;
+  __aligned_u64 rdb;
+  __aligned_u64 cdb;
+};
+#endif
diff --git a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/rdma/hfi/hfi1_user.h b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/rdma/hfi/hfi1_user.h
index 3352907..6d58600 100644
--- a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/rdma/hfi/hfi1_user.h
+++ b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/rdma/hfi/hfi1_user.h
@@ -80,7 +80,7 @@
 struct hfi1_status {
   __aligned_u64 dev;
   __aligned_u64 port;
-  char freezemsg[0];
+  char freezemsg[];
 };
 enum sdma_req_opcode {
   EXPECTED = 0,
diff --git a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/rdma/ib_user_ioctl_verbs.h b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/rdma/ib_user_ioctl_verbs.h
index 3b94907..766d5be 100644
--- a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/rdma/ib_user_ioctl_verbs.h
+++ b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/rdma/ib_user_ioctl_verbs.h
@@ -191,6 +191,7 @@
   RDMA_DRIVER_QIB,
   RDMA_DRIVER_EFA,
   RDMA_DRIVER_SIW,
+  RDMA_DRIVER_ERDMA,
 };
 enum ib_uverbs_gid_type {
   IB_UVERBS_GID_TYPE_IB,
diff --git a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/rdma/ib_user_verbs.h b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/rdma/ib_user_verbs.h
index d9ac9e0..552c80a 100644
--- a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/rdma/ib_user_verbs.h
+++ b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/rdma/ib_user_verbs.h
@@ -106,16 +106,16 @@
 };
 struct ib_uverbs_get_context {
   __aligned_u64 response;
-  __aligned_u64 driver_data[0];
+  __aligned_u64 driver_data[];
 };
 struct ib_uverbs_get_context_resp {
   __u32 async_fd;
   __u32 num_comp_vectors;
-  __aligned_u64 driver_data[0];
+  __aligned_u64 driver_data[];
 };
 struct ib_uverbs_query_device {
   __aligned_u64 response;
-  __aligned_u64 driver_data[0];
+  __aligned_u64 driver_data[];
 };
 struct ib_uverbs_query_device_resp {
   __aligned_u64 fw_ver;
@@ -208,7 +208,7 @@
   __aligned_u64 response;
   __u8 port_num;
   __u8 reserved[7];
-  __aligned_u64 driver_data[0];
+  __aligned_u64 driver_data[];
 };
 struct ib_uverbs_query_port_resp {
   __u32 port_cap_flags;
@@ -236,11 +236,11 @@
 };
 struct ib_uverbs_alloc_pd {
   __aligned_u64 response;
-  __aligned_u64 driver_data[0];
+  __aligned_u64 driver_data[];
 };
 struct ib_uverbs_alloc_pd_resp {
   __u32 pd_handle;
-  __u32 driver_data[0];
+  __u32 driver_data[];
 };
 struct ib_uverbs_dealloc_pd {
   __u32 pd_handle;
@@ -249,11 +249,11 @@
   __aligned_u64 response;
   __u32 fd;
   __u32 oflags;
-  __aligned_u64 driver_data[0];
+  __aligned_u64 driver_data[];
 };
 struct ib_uverbs_open_xrcd_resp {
   __u32 xrcd_handle;
-  __u32 driver_data[0];
+  __u32 driver_data[];
 };
 struct ib_uverbs_close_xrcd {
   __u32 xrcd_handle;
@@ -265,13 +265,13 @@
   __aligned_u64 hca_va;
   __u32 pd_handle;
   __u32 access_flags;
-  __aligned_u64 driver_data[0];
+  __aligned_u64 driver_data[];
 };
 struct ib_uverbs_reg_mr_resp {
   __u32 mr_handle;
   __u32 lkey;
   __u32 rkey;
-  __u32 driver_data[0];
+  __u32 driver_data[];
 };
 struct ib_uverbs_rereg_mr {
   __aligned_u64 response;
@@ -282,12 +282,12 @@
   __aligned_u64 hca_va;
   __u32 pd_handle;
   __u32 access_flags;
-  __aligned_u64 driver_data[0];
+  __aligned_u64 driver_data[];
 };
 struct ib_uverbs_rereg_mr_resp {
   __u32 lkey;
   __u32 rkey;
-  __aligned_u64 driver_data[0];
+  __aligned_u64 driver_data[];
 };
 struct ib_uverbs_dereg_mr {
   __u32 mr_handle;
@@ -297,12 +297,12 @@
   __u32 pd_handle;
   __u8 mw_type;
   __u8 reserved[3];
-  __aligned_u64 driver_data[0];
+  __aligned_u64 driver_data[];
 };
 struct ib_uverbs_alloc_mw_resp {
   __u32 mw_handle;
   __u32 rkey;
-  __aligned_u64 driver_data[0];
+  __aligned_u64 driver_data[];
 };
 struct ib_uverbs_dealloc_mw {
   __u32 mw_handle;
@@ -320,7 +320,7 @@
   __u32 comp_vector;
   __s32 comp_channel;
   __u32 reserved;
-  __aligned_u64 driver_data[0];
+  __aligned_u64 driver_data[];
 };
 enum ib_uverbs_ex_create_cq_flags {
   IB_UVERBS_CQ_FLAGS_TIMESTAMP_COMPLETION = 1 << 0,
@@ -349,12 +349,12 @@
   __aligned_u64 response;
   __u32 cq_handle;
   __u32 cqe;
-  __aligned_u64 driver_data[0];
+  __aligned_u64 driver_data[];
 };
 struct ib_uverbs_resize_cq_resp {
   __u32 cqe;
   __u32 reserved;
-  __aligned_u64 driver_data[0];
+  __aligned_u64 driver_data[];
 };
 struct ib_uverbs_poll_cq {
   __aligned_u64 response;
@@ -394,7 +394,7 @@
 struct ib_uverbs_poll_cq_resp {
   __u32 count;
   __u32 reserved;
-  struct ib_uverbs_wc wc[0];
+  struct ib_uverbs_wc wc[];
 };
 struct ib_uverbs_req_notify_cq {
   __u32 cq_handle;
@@ -476,7 +476,7 @@
   __u8 qp_type;
   __u8 is_srq;
   __u8 reserved;
-  __aligned_u64 driver_data[0];
+  __aligned_u64 driver_data[];
 };
 enum ib_uverbs_create_qp_mask {
   IB_UVERBS_CREATE_QP_MASK_IND_TABLE = 1UL << 0,
@@ -511,7 +511,7 @@
   __u32 qpn;
   __u8 qp_type;
   __u8 reserved[7];
-  __aligned_u64 driver_data[0];
+  __aligned_u64 driver_data[];
 };
 struct ib_uverbs_create_qp_resp {
   __u32 qp_handle;
@@ -547,7 +547,7 @@
   __aligned_u64 response;
   __u32 qp_handle;
   __u32 attr_mask;
-  __aligned_u64 driver_data[0];
+  __aligned_u64 driver_data[];
 };
 struct ib_uverbs_query_qp_resp {
   struct ib_uverbs_qp_dest dest;
@@ -580,7 +580,7 @@
   __u8 alt_timeout;
   __u8 sq_sig_all;
   __u8 reserved[5];
-  __aligned_u64 driver_data[0];
+  __aligned_u64 driver_data[];
 };
 struct ib_uverbs_modify_qp {
   struct ib_uverbs_qp_dest dest;
@@ -685,7 +685,7 @@
   __u32 wr_count;
   __u32 sge_count;
   __u32 wqe_size;
-  struct ib_uverbs_send_wr send_wr[0];
+  struct ib_uverbs_send_wr send_wr[];
 };
 struct ib_uverbs_post_send_resp {
   __u32 bad_wr;
@@ -701,7 +701,7 @@
   __u32 wr_count;
   __u32 sge_count;
   __u32 wqe_size;
-  struct ib_uverbs_recv_wr recv_wr[0];
+  struct ib_uverbs_recv_wr recv_wr[];
 };
 struct ib_uverbs_post_recv_resp {
   __u32 bad_wr;
@@ -712,7 +712,7 @@
   __u32 wr_count;
   __u32 sge_count;
   __u32 wqe_size;
-  struct ib_uverbs_recv_wr recv[0];
+  struct ib_uverbs_recv_wr recv[];
 };
 struct ib_uverbs_post_srq_recv_resp {
   __u32 bad_wr;
@@ -723,11 +723,11 @@
   __u32 pd_handle;
   __u32 reserved;
   struct ib_uverbs_ah_attr attr;
-  __aligned_u64 driver_data[0];
+  __aligned_u64 driver_data[];
 };
 struct ib_uverbs_create_ah_resp {
   __u32 ah_handle;
-  __u32 driver_data[0];
+  __u32 driver_data[];
 };
 struct ib_uverbs_destroy_ah {
   __u32 ah_handle;
@@ -737,14 +737,14 @@
   __u32 qp_handle;
   __u16 mlid;
   __u16 reserved;
-  __aligned_u64 driver_data[0];
+  __aligned_u64 driver_data[];
 };
 struct ib_uverbs_detach_mcast {
   __u8 gid[16];
   __u32 qp_handle;
   __u16 mlid;
   __u16 reserved;
-  __aligned_u64 driver_data[0];
+  __aligned_u64 driver_data[];
 };
 struct ib_uverbs_flow_spec_hdr {
   __u32 type;
@@ -944,7 +944,7 @@
   __u8 reserved[2];
   __u8 port;
   __u32 flags;
-  struct ib_uverbs_flow_spec_hdr flow_specs[0];
+  struct ib_uverbs_flow_spec_hdr flow_specs[];
 };
 struct ib_uverbs_create_flow {
   __u32 comp_mask;
@@ -966,7 +966,7 @@
   __u32 max_wr;
   __u32 max_sge;
   __u32 srq_limit;
-  __aligned_u64 driver_data[0];
+  __aligned_u64 driver_data[];
 };
 struct ib_uverbs_create_xsrq {
   __aligned_u64 response;
@@ -979,27 +979,27 @@
   __u32 max_num_tags;
   __u32 xrcd_handle;
   __u32 cq_handle;
-  __aligned_u64 driver_data[0];
+  __aligned_u64 driver_data[];
 };
 struct ib_uverbs_create_srq_resp {
   __u32 srq_handle;
   __u32 max_wr;
   __u32 max_sge;
   __u32 srqn;
-  __u32 driver_data[0];
+  __u32 driver_data[];
 };
 struct ib_uverbs_modify_srq {
   __u32 srq_handle;
   __u32 attr_mask;
   __u32 max_wr;
   __u32 srq_limit;
-  __aligned_u64 driver_data[0];
+  __aligned_u64 driver_data[];
 };
 struct ib_uverbs_query_srq {
   __aligned_u64 response;
   __u32 srq_handle;
   __u32 reserved;
-  __aligned_u64 driver_data[0];
+  __aligned_u64 driver_data[];
 };
 struct ib_uverbs_query_srq_resp {
   __u32 max_wr;
@@ -1056,7 +1056,7 @@
 struct ib_uverbs_ex_create_rwq_ind_table {
   __u32 comp_mask;
   __u32 log_ind_tbl_size;
-  __u32 wq_handles[0];
+  __u32 wq_handles[];
 };
 struct ib_uverbs_ex_create_rwq_ind_table_resp {
   __u32 comp_mask;
@@ -1079,4 +1079,37 @@
   __u32 reserved;
 };
 #define IB_DEVICE_NAME_MAX 64
+enum ib_uverbs_device_cap_flags {
+  IB_UVERBS_DEVICE_RESIZE_MAX_WR = 1 << 0,
+  IB_UVERBS_DEVICE_BAD_PKEY_CNTR = 1 << 1,
+  IB_UVERBS_DEVICE_BAD_QKEY_CNTR = 1 << 2,
+  IB_UVERBS_DEVICE_RAW_MULTI = 1 << 3,
+  IB_UVERBS_DEVICE_AUTO_PATH_MIG = 1 << 4,
+  IB_UVERBS_DEVICE_CHANGE_PHY_PORT = 1 << 5,
+  IB_UVERBS_DEVICE_UD_AV_PORT_ENFORCE = 1 << 6,
+  IB_UVERBS_DEVICE_CURR_QP_STATE_MOD = 1 << 7,
+  IB_UVERBS_DEVICE_SHUTDOWN_PORT = 1 << 8,
+  IB_UVERBS_DEVICE_PORT_ACTIVE_EVENT = 1 << 10,
+  IB_UVERBS_DEVICE_SYS_IMAGE_GUID = 1 << 11,
+  IB_UVERBS_DEVICE_RC_RNR_NAK_GEN = 1 << 12,
+  IB_UVERBS_DEVICE_SRQ_RESIZE = 1 << 13,
+  IB_UVERBS_DEVICE_N_NOTIFY_CQ = 1 << 14,
+  IB_UVERBS_DEVICE_MEM_WINDOW = 1 << 17,
+  IB_UVERBS_DEVICE_UD_IP_CSUM = 1 << 18,
+  IB_UVERBS_DEVICE_XRC = 1 << 20,
+  IB_UVERBS_DEVICE_MEM_MGT_EXTENSIONS = 1 << 21,
+  IB_UVERBS_DEVICE_MEM_WINDOW_TYPE_2A = 1 << 23,
+  IB_UVERBS_DEVICE_MEM_WINDOW_TYPE_2B = 1 << 24,
+  IB_UVERBS_DEVICE_RC_IP_CSUM = 1 << 25,
+  IB_UVERBS_DEVICE_RAW_IP_CSUM = 1 << 26,
+  IB_UVERBS_DEVICE_MANAGED_FLOW_STEERING = 1 << 29,
+  IB_UVERBS_DEVICE_RAW_SCATTER_FCS = 1ULL << 34,
+  IB_UVERBS_DEVICE_PCI_WRITE_END_PADDING = 1ULL << 36,
+};
+enum ib_uverbs_raw_packet_caps {
+  IB_UVERBS_RAW_PACKET_CAP_CVLAN_STRIPPING = 1 << 0,
+  IB_UVERBS_RAW_PACKET_CAP_SCATTER_FCS = 1 << 1,
+  IB_UVERBS_RAW_PACKET_CAP_IP_CSUM = 1 << 2,
+  IB_UVERBS_RAW_PACKET_CAP_DELAY_DROP = 1 << 3,
+};
 #endif
diff --git a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/rdma/mlx5-abi.h b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/rdma/mlx5-abi.h
index aadb20e..f41c887 100644
--- a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/rdma/mlx5-abi.h
+++ b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/rdma/mlx5-abi.h
@@ -70,6 +70,7 @@
   MLX5_IB_ALLOC_UCONTEXT_RESP_MASK_ECE = 1UL << 2,
   MLX5_IB_ALLOC_UCONTEXT_RESP_MASK_SQD2RTS = 1UL << 3,
   MLX5_IB_ALLOC_UCONTEXT_RESP_MASK_REAL_TIME_TS = 1UL << 4,
+  MLX5_IB_ALLOC_UCONTEXT_RESP_MASK_MKEY_UPDATE_TAG = 1UL << 5,
 };
 enum mlx5_user_cmds_supp_uhw {
   MLX5_USER_CMDS_SUPP_UHW_QUERY_DEVICE = 1 << 0,
diff --git a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/rdma/mlx5_user_ioctl_cmds.h b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/rdma/mlx5_user_ioctl_cmds.h
index 862abcb..c060482 100644
--- a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/rdma/mlx5_user_ioctl_cmds.h
+++ b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/rdma/mlx5_user_ioctl_cmds.h
@@ -135,6 +135,7 @@
   MLX5_IB_ATTR_DEVX_UMEM_REG_ACCESS,
   MLX5_IB_ATTR_DEVX_UMEM_REG_OUT_ID,
   MLX5_IB_ATTR_DEVX_UMEM_REG_PGSZ_BITMAP,
+  MLX5_IB_ATTR_DEVX_UMEM_REG_DMABUF_FD,
 };
 enum mlx5_ib_devx_umem_dereg_attrs {
   MLX5_IB_ATTR_DEVX_UMEM_DEREG_HANDLE = (1U << UVERBS_ID_NS_SHIFT),
@@ -179,6 +180,7 @@
   MLX5_IB_OBJECT_VAR,
   MLX5_IB_OBJECT_PP,
   MLX5_IB_OBJECT_UAR,
+  MLX5_IB_OBJECT_STEERING_ANCHOR,
 };
 enum mlx5_ib_flow_matcher_create_attrs {
   MLX5_IB_ATTR_FLOW_MATCHER_CREATE_HANDLE = (1U << UVERBS_ID_NS_SHIFT),
@@ -195,6 +197,19 @@
   MLX5_IB_METHOD_FLOW_MATCHER_CREATE = (1U << UVERBS_ID_NS_SHIFT),
   MLX5_IB_METHOD_FLOW_MATCHER_DESTROY,
 };
+enum mlx5_ib_flow_steering_anchor_create_attrs {
+  MLX5_IB_ATTR_STEERING_ANCHOR_CREATE_HANDLE = (1U << UVERBS_ID_NS_SHIFT),
+  MLX5_IB_ATTR_STEERING_ANCHOR_FT_TYPE,
+  MLX5_IB_ATTR_STEERING_ANCHOR_PRIORITY,
+  MLX5_IB_ATTR_STEERING_ANCHOR_FT_ID,
+};
+enum mlx5_ib_flow_steering_anchor_destroy_attrs {
+  MLX5_IB_ATTR_STEERING_ANCHOR_DESTROY_HANDLE = (1U << UVERBS_ID_NS_SHIFT),
+};
+enum mlx5_ib_steering_anchor_methods {
+  MLX5_IB_METHOD_STEERING_ANCHOR_CREATE = (1U << UVERBS_ID_NS_SHIFT),
+  MLX5_IB_METHOD_STEERING_ANCHOR_DESTROY,
+};
 enum mlx5_ib_device_query_context_attrs {
   MLX5_IB_ATTR_QUERY_CONTEXT_RESP_UCTX = (1U << UVERBS_ID_NS_SHIFT),
 };
diff --git a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/rdma/mlx5_user_ioctl_verbs.h b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/rdma/mlx5_user_ioctl_verbs.h
index c3c3f89..f68c0b3 100644
--- a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/rdma/mlx5_user_ioctl_verbs.h
+++ b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/rdma/mlx5_user_ioctl_verbs.h
@@ -43,6 +43,7 @@
   MLX5_IB_UAPI_DM_TYPE_MEMIC,
   MLX5_IB_UAPI_DM_TYPE_STEERING_SW_ICM,
   MLX5_IB_UAPI_DM_TYPE_HEADER_MODIFY_SW_ICM,
+  MLX5_IB_UAPI_DM_TYPE_HEADER_MODIFY_PATTERN_SW_ICM,
 };
 enum mlx5_ib_uapi_devx_create_event_channel_flags {
   MLX5_IB_UAPI_DEVX_CR_EV_CH_FLAGS_OMIT_DATA = 1 << 0,
diff --git a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/rdma/rdma_user_cm.h b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/rdma/rdma_user_cm.h
index 7b1f7ee..37927f8 100644
--- a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/rdma/rdma_user_cm.h
+++ b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/rdma/rdma_user_cm.h
@@ -145,7 +145,7 @@
 struct rdma_ucm_query_path_resp {
   __u32 num_paths;
   __u32 reserved;
-  struct ib_path_rec_data path_data[0];
+  struct ib_path_rec_data path_data[];
 };
 struct rdma_ucm_conn_param {
   __u32 qp_num;
diff --git a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/rdma/rdma_user_ioctl_cmds.h b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/rdma/rdma_user_ioctl_cmds.h
index 22adfaa..dbaf9ed 100644
--- a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/rdma/rdma_user_ioctl_cmds.h
+++ b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/rdma/rdma_user_ioctl_cmds.h
@@ -50,6 +50,6 @@
   __aligned_u64 reserved1;
   __u32 driver_id;
   __u32 reserved2;
-  struct ib_uverbs_attr attrs[0];
+  struct ib_uverbs_attr attrs[];
 };
 #endif
diff --git a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/rdma/rdma_user_rxe.h b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/rdma/rdma_user_rxe.h
index cdb00c7..2476699 100644
--- a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/rdma/rdma_user_rxe.h
+++ b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/rdma/rdma_user_rxe.h
@@ -52,7 +52,7 @@
 };
 struct rxe_send_wr {
   __aligned_u64 wr_id;
-  __u32 num_sge;
+  __u32 reserved;
   __u32 opcode;
   __u32 send_flags;
   union {
@@ -128,7 +128,7 @@
 };
 struct rxe_recv_wqe {
   __aligned_u64 wr_id;
-  __u32 num_sge;
+  __u32 reserved;
   __u32 padding;
   struct rxe_dma_info dma;
 };
diff --git a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/scsi/fc/fc_els.h b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/scsi/fc/fc_els.h
index 04ae5b8..d29287d 100644
--- a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/scsi/fc/fc_els.h
+++ b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/scsi/fc/fc_els.h
@@ -142,7 +142,7 @@
 struct fc_tlv_desc {
   __be32 desc_tag;
   __be32 desc_len;
-  __u8 desc_value[0];
+  __u8 desc_value[];
 };
 #define FC_TLV_DESC_HDR_SZ sizeof(struct fc_tlv_desc)
 #define FC_TLV_DESC_LENGTH_FROM_SZ(desc) (sizeof(desc) - FC_TLV_DESC_HDR_SZ)
@@ -618,7 +618,7 @@
   __be32 event_threshold;
   __be32 event_count;
   __be32 pname_count;
-  __be64 pname_list[0];
+  __be64 pname_list[];
 };
 struct fc_fn_deli_desc {
   __be32 desc_tag;
@@ -636,7 +636,7 @@
   __be16 event_modifier;
   __be32 event_period;
   __be32 pname_count;
-  __be64 pname_list[0];
+  __be64 pname_list[];
 };
 struct fc_fn_congn_desc {
   __be32 desc_tag;
@@ -651,25 +651,25 @@
   __u8 fpin_cmd;
   __u8 fpin_zero[3];
   __be32 desc_len;
-  struct fc_tlv_desc fpin_desc[0];
+  struct fc_tlv_desc fpin_desc[];
 };
 struct fc_df_desc_fpin_reg {
   __be32 desc_tag;
   __be32 desc_len;
   __be32 count;
-  __be32 desc_tags[0];
+  __be32 desc_tags[];
 };
 struct fc_els_rdf {
   __u8 fpin_cmd;
   __u8 fpin_zero[3];
   __be32 desc_len;
-  struct fc_tlv_desc desc[0];
+  struct fc_tlv_desc desc[];
 };
 struct fc_els_rdf_resp {
   struct fc_els_ls_acc acc_hdr;
   __be32 desc_list_len;
   struct fc_els_lsri_desc lsri;
-  struct fc_tlv_desc desc[0];
+  struct fc_tlv_desc desc[];
 };
 struct fc_diag_lnkflt_desc {
   __be32 desc_tag;
@@ -707,12 +707,12 @@
   __u8 edc_cmd;
   __u8 edc_zero[3];
   __be32 desc_len;
-  struct fc_tlv_desc desc[0];
+  struct fc_tlv_desc desc[];
 };
 struct fc_els_edc_resp {
   struct fc_els_ls_acc acc_hdr;
   __be32 desc_list_len;
   struct fc_els_lsri_desc lsri;
-  struct fc_tlv_desc desc[0];
+  struct fc_tlv_desc desc[];
 };
 #endif
diff --git a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/scsi/scsi_bsg_fc.h b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/scsi/scsi_bsg_fc.h
index 8966f61..2647249 100644
--- a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/scsi/scsi_bsg_fc.h
+++ b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/scsi/scsi_bsg_fc.h
@@ -66,7 +66,7 @@
 };
 struct fc_bsg_host_vendor {
   __u64 vendor_id;
-  __u32 vendor_cmd[0];
+  __u32 vendor_cmd[];
 };
 struct fc_bsg_host_vendor_reply {
   __u32 vendor_rsp[0];
diff --git a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/scsi/scsi_bsg_mpi3mr.h b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/scsi/scsi_bsg_mpi3mr.h
new file mode 100644
index 0000000..fcba8cd
--- /dev/null
+++ b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/scsi/scsi_bsg_mpi3mr.h
@@ -0,0 +1,333 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef SCSI_BSG_MPI3MR_H_INCLUDED
+#define SCSI_BSG_MPI3MR_H_INCLUDED
+#include <linux/types.h>
+#define MPI3MR_IOCTL_VERSION 0x06
+#define MPI3MR_APP_DEFAULT_TIMEOUT (60)
+#define MPI3MR_BSG_ADPTYPE_UNKNOWN 0
+#define MPI3MR_BSG_ADPTYPE_AVGFAMILY 1
+#define MPI3MR_BSG_ADPSTATE_UNKNOWN 0
+#define MPI3MR_BSG_ADPSTATE_OPERATIONAL 1
+#define MPI3MR_BSG_ADPSTATE_FAULT 2
+#define MPI3MR_BSG_ADPSTATE_IN_RESET 3
+#define MPI3MR_BSG_ADPSTATE_UNRECOVERABLE 4
+#define MPI3MR_BSG_ADPRESET_UNKNOWN 0
+#define MPI3MR_BSG_ADPRESET_SOFT 1
+#define MPI3MR_BSG_ADPRESET_DIAG_FAULT 2
+#define MPI3MR_BSG_LOGDATA_MAX_ENTRIES 400
+#define MPI3MR_BSG_LOGDATA_ENTRY_HEADER_SZ 4
+#define MPI3MR_DRVBSG_OPCODE_UNKNOWN 0
+#define MPI3MR_DRVBSG_OPCODE_ADPINFO 1
+#define MPI3MR_DRVBSG_OPCODE_ADPRESET 2
+#define MPI3MR_DRVBSG_OPCODE_ALLTGTDEVINFO 4
+#define MPI3MR_DRVBSG_OPCODE_GETCHGCNT 5
+#define MPI3MR_DRVBSG_OPCODE_LOGDATAENABLE 6
+#define MPI3MR_DRVBSG_OPCODE_PELENABLE 7
+#define MPI3MR_DRVBSG_OPCODE_GETLOGDATA 8
+#define MPI3MR_DRVBSG_OPCODE_QUERY_HDB 9
+#define MPI3MR_DRVBSG_OPCODE_REPOST_HDB 10
+#define MPI3MR_DRVBSG_OPCODE_UPLOAD_HDB 11
+#define MPI3MR_DRVBSG_OPCODE_REFRESH_HDB_TRIGGERS 12
+#define MPI3MR_BSG_BUFTYPE_UNKNOWN 0
+#define MPI3MR_BSG_BUFTYPE_RAIDMGMT_CMD 1
+#define MPI3MR_BSG_BUFTYPE_RAIDMGMT_RESP 2
+#define MPI3MR_BSG_BUFTYPE_DATA_IN 3
+#define MPI3MR_BSG_BUFTYPE_DATA_OUT 4
+#define MPI3MR_BSG_BUFTYPE_MPI_REPLY 5
+#define MPI3MR_BSG_BUFTYPE_ERR_RESPONSE 6
+#define MPI3MR_BSG_BUFTYPE_MPI_REQUEST 0xFE
+#define MPI3MR_BSG_MPI_REPLY_BUFTYPE_UNKNOWN 0
+#define MPI3MR_BSG_MPI_REPLY_BUFTYPE_STATUS 1
+#define MPI3MR_BSG_MPI_REPLY_BUFTYPE_ADDRESS 2
+#define MPI3MR_HDB_BUFTYPE_UNKNOWN 0
+#define MPI3MR_HDB_BUFTYPE_TRACE 1
+#define MPI3MR_HDB_BUFTYPE_FIRMWARE 2
+#define MPI3MR_HDB_BUFTYPE_RESERVED 3
+#define MPI3MR_HDB_BUFSTATUS_UNKNOWN 0
+#define MPI3MR_HDB_BUFSTATUS_NOT_ALLOCATED 1
+#define MPI3MR_HDB_BUFSTATUS_POSTED_UNPAUSED 2
+#define MPI3MR_HDB_BUFSTATUS_POSTED_PAUSED 3
+#define MPI3MR_HDB_BUFSTATUS_RELEASED 4
+#define MPI3MR_HDB_TRIGGER_TYPE_UNKNOWN 0
+#define MPI3MR_HDB_TRIGGER_TYPE_DIAGFAULT 1
+#define MPI3MR_HDB_TRIGGER_TYPE_ELEMENT 2
+#define MPI3MR_HDB_TRIGGER_TYPE_MASTER 3
+enum command {
+  MPI3MR_DRV_CMD = 1,
+  MPI3MR_MPT_CMD = 2,
+};
+struct mpi3_driver_info_layout {
+  __le32 information_length;
+  __u8 driver_signature[12];
+  __u8 os_name[16];
+  __u8 os_version[12];
+  __u8 driver_name[20];
+  __u8 driver_version[32];
+  __u8 driver_release_date[20];
+  __le32 driver_capabilities;
+};
+struct mpi3mr_bsg_in_adpinfo {
+  __u32 adp_type;
+  __u32 rsvd1;
+  __u32 pci_dev_id;
+  __u32 pci_dev_hw_rev;
+  __u32 pci_subsys_dev_id;
+  __u32 pci_subsys_ven_id;
+  __u32 pci_dev : 5;
+  __u32 pci_func : 3;
+  __u32 pci_bus : 8;
+  __u16 rsvd2;
+  __u32 pci_seg_id;
+  __u32 app_intfc_ver;
+  __u8 adp_state;
+  __u8 rsvd3;
+  __u16 rsvd4;
+  __u32 rsvd5[2];
+  struct mpi3_driver_info_layout driver_info;
+};
+struct mpi3mr_bsg_adp_reset {
+  __u8 reset_type;
+  __u8 rsvd1;
+  __u16 rsvd2;
+};
+struct mpi3mr_change_count {
+  __u16 change_count;
+  __u16 rsvd;
+};
+struct mpi3mr_device_map_info {
+  __u16 handle;
+  __u16 perst_id;
+  __u32 target_id;
+  __u8 bus_id;
+  __u8 rsvd1;
+  __u16 rsvd2;
+};
+struct mpi3mr_all_tgt_info {
+  __u16 num_devices;
+  __u16 rsvd1;
+  __u32 rsvd2;
+  struct mpi3mr_device_map_info dmi[1];
+};
+struct mpi3mr_logdata_enable {
+  __u16 max_entries;
+  __u16 rsvd;
+};
+struct mpi3mr_bsg_out_pel_enable {
+  __u16 pel_locale;
+  __u8 pel_class;
+  __u8 rsvd;
+};
+struct mpi3mr_logdata_entry {
+  __u8 valid_entry;
+  __u8 rsvd1;
+  __u16 rsvd2;
+  __u8 data[1];
+};
+struct mpi3mr_bsg_in_log_data {
+  struct mpi3mr_logdata_entry entry[1];
+};
+struct mpi3mr_hdb_entry {
+  __u8 buf_type;
+  __u8 status;
+  __u8 trigger_type;
+  __u8 rsvd1;
+  __u16 size;
+  __u16 rsvd2;
+  __u64 trigger_data;
+  __u32 rsvd3;
+  __u32 rsvd4;
+};
+struct mpi3mr_bsg_in_hdb_status {
+  __u8 num_hdb_types;
+  __u8 rsvd1;
+  __u16 rsvd2;
+  __u32 rsvd3;
+  struct mpi3mr_hdb_entry entry[1];
+};
+struct mpi3mr_bsg_out_repost_hdb {
+  __u8 buf_type;
+  __u8 rsvd1;
+  __u16 rsvd2;
+};
+struct mpi3mr_bsg_out_upload_hdb {
+  __u8 buf_type;
+  __u8 rsvd1;
+  __u16 rsvd2;
+  __u32 start_offset;
+  __u32 length;
+};
+struct mpi3mr_bsg_out_refresh_hdb_triggers {
+  __u8 page_type;
+  __u8 rsvd1;
+  __u16 rsvd2;
+};
+struct mpi3mr_bsg_drv_cmd {
+  __u8 mrioc_id;
+  __u8 opcode;
+  __u16 rsvd1;
+  __u32 rsvd2[4];
+};
+struct mpi3mr_bsg_in_reply_buf {
+  __u8 mpi_reply_type;
+  __u8 rsvd1;
+  __u16 rsvd2;
+  __u8 reply_buf[1];
+};
+struct mpi3mr_buf_entry {
+  __u8 buf_type;
+  __u8 rsvd1;
+  __u16 rsvd2;
+  __u32 buf_len;
+};
+struct mpi3mr_buf_entry_list {
+  __u8 num_of_entries;
+  __u8 rsvd1;
+  __u16 rsvd2;
+  __u32 rsvd3;
+  struct mpi3mr_buf_entry buf_entry[1];
+};
+struct mpi3mr_bsg_mptcmd {
+  __u8 mrioc_id;
+  __u8 rsvd1;
+  __u16 timeout;
+  __u32 rsvd2;
+  struct mpi3mr_buf_entry_list buf_entry_list;
+};
+struct mpi3mr_bsg_packet {
+  __u8 cmd_type;
+  __u8 rsvd1;
+  __u16 rsvd2;
+  __u32 rsvd3;
+  union {
+    struct mpi3mr_bsg_drv_cmd drvrcmd;
+    struct mpi3mr_bsg_mptcmd mptcmd;
+  } cmd;
+};
+#ifndef MPI3_NVME_ENCAP_CMD_MAX
+#define MPI3_NVME_ENCAP_CMD_MAX (1)
+#endif
+struct mpi3_nvme_encapsulated_request {
+  __le16 host_tag;
+  __u8 ioc_use_only02;
+  __u8 function;
+  __le16 ioc_use_only04;
+  __u8 ioc_use_only06;
+  __u8 msg_flags;
+  __le16 change_count;
+  __le16 dev_handle;
+  __le16 encapsulated_command_length;
+  __le16 flags;
+  __le32 data_length;
+  __le32 reserved14[3];
+  __le32 command[MPI3_NVME_ENCAP_CMD_MAX];
+};
+struct mpi3_nvme_encapsulated_error_reply {
+  __le16 host_tag;
+  __u8 ioc_use_only02;
+  __u8 function;
+  __le16 ioc_use_only04;
+  __u8 ioc_use_only06;
+  __u8 msg_flags;
+  __le16 ioc_use_only08;
+  __le16 ioc_status;
+  __le32 ioc_log_info;
+  __le32 nvme_completion_entry[4];
+};
+#define MPI3MR_NVME_PRP_SIZE 8
+#define MPI3MR_NVME_CMD_PRP1_OFFSET 24
+#define MPI3MR_NVME_CMD_PRP2_OFFSET 32
+#define MPI3MR_NVME_CMD_SGL_OFFSET 24
+#define MPI3MR_NVME_DATA_FORMAT_PRP 0
+#define MPI3MR_NVME_DATA_FORMAT_SGL1 1
+#define MPI3MR_NVME_DATA_FORMAT_SGL2 2
+struct mpi3_scsi_task_mgmt_request {
+  __le16 host_tag;
+  __u8 ioc_use_only02;
+  __u8 function;
+  __le16 ioc_use_only04;
+  __u8 ioc_use_only06;
+  __u8 msg_flags;
+  __le16 change_count;
+  __le16 dev_handle;
+  __le16 task_host_tag;
+  __u8 task_type;
+  __u8 reserved0f;
+  __le16 task_request_queue_id;
+  __le16 reserved12;
+  __le32 reserved14;
+  __u8 lun[8];
+};
+#define MPI3_SCSITASKMGMT_MSGFLAGS_DO_NOT_SEND_TASK_IU (0x08)
+#define MPI3_SCSITASKMGMT_TASKTYPE_ABORT_TASK (0x01)
+#define MPI3_SCSITASKMGMT_TASKTYPE_ABORT_TASK_SET (0x02)
+#define MPI3_SCSITASKMGMT_TASKTYPE_TARGET_RESET (0x03)
+#define MPI3_SCSITASKMGMT_TASKTYPE_LOGICAL_UNIT_RESET (0x05)
+#define MPI3_SCSITASKMGMT_TASKTYPE_CLEAR_TASK_SET (0x06)
+#define MPI3_SCSITASKMGMT_TASKTYPE_QUERY_TASK (0x07)
+#define MPI3_SCSITASKMGMT_TASKTYPE_CLEAR_ACA (0x08)
+#define MPI3_SCSITASKMGMT_TASKTYPE_QUERY_TASK_SET (0x09)
+#define MPI3_SCSITASKMGMT_TASKTYPE_QUERY_ASYNC_EVENT (0x0a)
+#define MPI3_SCSITASKMGMT_TASKTYPE_I_T_NEXUS_RESET (0x0b)
+struct mpi3_scsi_task_mgmt_reply {
+  __le16 host_tag;
+  __u8 ioc_use_only02;
+  __u8 function;
+  __le16 ioc_use_only04;
+  __u8 ioc_use_only06;
+  __u8 msg_flags;
+  __le16 ioc_use_only08;
+  __le16 ioc_status;
+  __le32 ioc_log_info;
+  __le32 termination_count;
+  __le32 response_data;
+  __le32 reserved18;
+};
+#define MPI3_SCSITASKMGMT_RSPCODE_TM_COMPLETE (0x00)
+#define MPI3_SCSITASKMGMT_RSPCODE_INVALID_FRAME (0x02)
+#define MPI3_SCSITASKMGMT_RSPCODE_TM_FUNCTION_NOT_SUPPORTED (0x04)
+#define MPI3_SCSITASKMGMT_RSPCODE_TM_FAILED (0x05)
+#define MPI3_SCSITASKMGMT_RSPCODE_TM_SUCCEEDED (0x08)
+#define MPI3_SCSITASKMGMT_RSPCODE_TM_INVALID_LUN (0x09)
+#define MPI3_SCSITASKMGMT_RSPCODE_TM_OVERLAPPED_TAG (0x0a)
+#define MPI3_SCSITASKMGMT_RSPCODE_IO_QUEUED_ON_IOC (0x80)
+#define MPI3_SCSITASKMGMT_RSPCODE_TM_NVME_DENIED (0x81)
+#define MPI3_PEL_LOCALE_FLAGS_NON_BLOCKING_BOOT_EVENT (0x0200)
+#define MPI3_PEL_LOCALE_FLAGS_BLOCKING_BOOT_EVENT (0x0100)
+#define MPI3_PEL_LOCALE_FLAGS_PCIE (0x0080)
+#define MPI3_PEL_LOCALE_FLAGS_CONFIGURATION (0x0040)
+#define MPI3_PEL_LOCALE_FLAGS_CONTROLER (0x0020)
+#define MPI3_PEL_LOCALE_FLAGS_SAS (0x0010)
+#define MPI3_PEL_LOCALE_FLAGS_EPACK (0x0008)
+#define MPI3_PEL_LOCALE_FLAGS_ENCLOSURE (0x0004)
+#define MPI3_PEL_LOCALE_FLAGS_PD (0x0002)
+#define MPI3_PEL_LOCALE_FLAGS_VD (0x0001)
+#define MPI3_PEL_CLASS_DEBUG (0x00)
+#define MPI3_PEL_CLASS_PROGRESS (0x01)
+#define MPI3_PEL_CLASS_INFORMATIONAL (0x02)
+#define MPI3_PEL_CLASS_WARNING (0x03)
+#define MPI3_PEL_CLASS_CRITICAL (0x04)
+#define MPI3_PEL_CLASS_FATAL (0x05)
+#define MPI3_PEL_CLASS_FAULT (0x06)
+#define MPI3_BSG_FUNCTION_MGMT_PASSTHROUGH (0x0a)
+#define MPI3_BSG_FUNCTION_SCSI_IO (0x20)
+#define MPI3_BSG_FUNCTION_SCSI_TASK_MGMT (0x21)
+#define MPI3_BSG_FUNCTION_SMP_PASSTHROUGH (0x22)
+#define MPI3_BSG_FUNCTION_NVME_ENCAPSULATED (0x24)
+#endif
diff --git a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/scsi/scsi_netlink_fc.h b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/scsi/scsi_netlink_fc.h
index ff92877..6eeb866 100644
--- a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/scsi/scsi_netlink_fc.h
+++ b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/scsi/scsi_netlink_fc.h
@@ -30,6 +30,9 @@
   __u16 event_datalen;
   __u32 event_num;
   __u32 event_code;
-  __u32 event_data;
+  union {
+    __u32 event_data;
+    __DECLARE_FLEX_ARRAY(__u8, event_data_flex);
+  };
 } __attribute__((aligned(sizeof(__u64))));
 #endif
diff --git a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/sound/asoc.h b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/sound/asoc.h
index eeb12b0..1940e5d 100644
--- a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/sound/asoc.h
+++ b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/sound/asoc.h
@@ -356,7 +356,7 @@
   __le32 pcm_elems;
   __le32 dai_link_elems;
   struct snd_soc_tplg_private priv;
-} __packed;
+} __attribute__((__packed__));
 struct snd_soc_tplg_stream_caps_v4 {
   __le32 size;
   char name[SNDRV_CTL_ELEM_ID_NAME_MAXLEN];
@@ -372,7 +372,7 @@
   __le32 period_size_max;
   __le32 buffer_size_min;
   __le32 buffer_size_max;
-} __packed;
+} __attribute__((__packed__));
 struct snd_soc_tplg_pcm_v4 {
   __le32 size;
   char pcm_name[SNDRV_CTL_ELEM_ID_NAME_MAXLEN];
@@ -385,11 +385,11 @@
   struct snd_soc_tplg_stream stream[SND_SOC_TPLG_STREAM_CONFIG_MAX];
   __le32 num_streams;
   struct snd_soc_tplg_stream_caps_v4 caps[2];
-} __packed;
+} __attribute__((__packed__));
 struct snd_soc_tplg_link_config_v4 {
   __le32 size;
   __le32 id;
   struct snd_soc_tplg_stream stream[SND_SOC_TPLG_STREAM_CONFIG_MAX];
   __le32 num_streams;
-} __packed;
+} __attribute__((__packed__));
 #endif
diff --git a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/sound/asound.h b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/sound/asound.h
index b0e47c1..6e325e9 100644
--- a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/sound/asound.h
+++ b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/sound/asound.h
@@ -605,7 +605,7 @@
   __u32 tv_nsec;
   __u64 tv_sec;
   __u8 data[SNDRV_RAWMIDI_FRAMING_DATA_LENGTH];
-} __packed;
+} __attribute__((__packed__));
 struct snd_rawmidi_params {
   int stream;
   size_t buffer_size;
@@ -884,7 +884,7 @@
 struct snd_ctl_tlv {
   unsigned int numid;
   unsigned int length;
-  unsigned int tlv[0];
+  unsigned int tlv[];
 };
 #define SNDRV_CTL_IOCTL_PVERSION _IOR('U', 0x00, int)
 #define SNDRV_CTL_IOCTL_CARD_INFO _IOR('U', 0x01, struct snd_ctl_card_info)
diff --git a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/sound/firewire.h b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/sound/firewire.h
index 198a8f4..d26d722 100644
--- a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/sound/firewire.h
+++ b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/sound/firewire.h
@@ -46,11 +46,11 @@
   __be32 category;
   __be32 command;
   __be32 status;
-  __be32 params[0];
+  __be32 params[];
 };
 struct snd_firewire_event_efw_response {
   unsigned int type;
-  __be32 response[0];
+  __be32 response[];
 };
 struct snd_firewire_event_digi00x_message {
   unsigned int type;
@@ -67,7 +67,7 @@
 };
 struct snd_firewire_event_tascam_control {
   unsigned int type;
-  struct snd_firewire_tascam_change changes[0];
+  struct snd_firewire_tascam_change changes[];
 };
 struct snd_firewire_event_motu_register_dsp_change {
   unsigned int type;
diff --git a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/sound/intel/avs/tokens.h b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/sound/intel/avs/tokens.h
new file mode 100644
index 0000000..b6b3002
--- /dev/null
+++ b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/sound/intel/avs/tokens.h
@@ -0,0 +1,111 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef __UAPI_SOUND_INTEL_AVS_TOKENS_H
+#define __UAPI_SOUND_INTEL_AVS_TOKENS_H
+enum avs_tplg_token {
+  AVS_TKN_MANIFEST_NAME_STRING = 1,
+  AVS_TKN_MANIFEST_VERSION_U32 = 2,
+  AVS_TKN_MANIFEST_NUM_LIBRARIES_U32 = 3,
+  AVS_TKN_MANIFEST_NUM_AFMTS_U32 = 4,
+  AVS_TKN_MANIFEST_NUM_MODCFGS_BASE_U32 = 5,
+  AVS_TKN_MANIFEST_NUM_MODCFGS_EXT_U32 = 6,
+  AVS_TKN_MANIFEST_NUM_PPLCFGS_U32 = 7,
+  AVS_TKN_MANIFEST_NUM_BINDINGS_U32 = 8,
+  AVS_TKN_LIBRARY_ID_U32 = 101,
+  AVS_TKN_LIBRARY_NAME_STRING = 102,
+  AVS_TKN_AFMT_ID_U32 = 201,
+  AVS_TKN_AFMT_SAMPLE_RATE_U32 = 202,
+  AVS_TKN_AFMT_BIT_DEPTH_U32 = 203,
+  AVS_TKN_AFMT_CHANNEL_MAP_U32 = 204,
+  AVS_TKN_AFMT_CHANNEL_CFG_U32 = 205,
+  AVS_TKN_AFMT_INTERLEAVING_U32 = 206,
+  AVS_TKN_AFMT_NUM_CHANNELS_U32 = 207,
+  AVS_TKN_AFMT_VALID_BIT_DEPTH_U32 = 208,
+  AVS_TKN_AFMT_SAMPLE_TYPE_U32 = 209,
+  AVS_TKN_MODCFG_BASE_ID_U32 = 301,
+  AVS_TKN_MODCFG_BASE_CPC_U32 = 302,
+  AVS_TKN_MODCFG_BASE_IBS_U32 = 303,
+  AVS_TKN_MODCFG_BASE_OBS_U32 = 304,
+  AVS_TKN_MODCFG_BASE_PAGES_U32 = 305,
+  AVS_TKN_MODCFG_EXT_ID_U32 = 401,
+  AVS_TKN_MODCFG_EXT_TYPE_UUID = 402,
+  AVS_TKN_MODCFG_CPR_OUT_AFMT_ID_U32 = 403,
+  AVS_TKN_MODCFG_CPR_FEATURE_MASK_U32 = 404,
+  AVS_TKN_MODCFG_CPR_DMA_TYPE_U32 = 405,
+  AVS_TKN_MODCFG_CPR_DMABUFF_SIZE_U32 = 406,
+  AVS_TKN_MODCFG_CPR_VINDEX_U8 = 407,
+  AVS_TKN_MODCFG_CPR_BLOB_FMT_ID_U32 = 408,
+  AVS_TKN_MODCFG_MICSEL_OUT_AFMT_ID_U32 = 409,
+  AVS_TKN_MODCFG_INTELWOV_CPC_LP_MODE_U32 = 410,
+  AVS_TKN_MODCFG_SRC_OUT_FREQ_U32 = 411,
+  AVS_TKN_MODCFG_MUX_REF_AFMT_ID_U32 = 412,
+  AVS_TKN_MODCFG_MUX_OUT_AFMT_ID_U32 = 413,
+  AVS_TKN_MODCFG_AEC_REF_AFMT_ID_U32 = 414,
+  AVS_TKN_MODCFG_AEC_OUT_AFMT_ID_U32 = 415,
+  AVS_TKN_MODCFG_AEC_CPC_LP_MODE_U32 = 416,
+  AVS_TKN_MODCFG_ASRC_OUT_FREQ_U32 = 417,
+  AVS_TKN_MODCFG_ASRC_MODE_U8 = 418,
+  AVS_TKN_MODCFG_ASRC_DISABLE_JITTER_U8 = 419,
+  AVS_TKN_MODCFG_UPDOWN_MIX_OUT_CHAN_CFG_U32 = 420,
+  AVS_TKN_MODCFG_UPDOWN_MIX_COEFF_SELECT_U32 = 421,
+  AVS_TKN_MODCFG_UPDOWN_MIX_COEFF_0_S32 = 422,
+  AVS_TKN_MODCFG_UPDOWN_MIX_COEFF_1_S32 = 423,
+  AVS_TKN_MODCFG_UPDOWN_MIX_COEFF_2_S32 = 424,
+  AVS_TKN_MODCFG_UPDOWN_MIX_COEFF_3_S32 = 425,
+  AVS_TKN_MODCFG_UPDOWN_MIX_COEFF_4_S32 = 426,
+  AVS_TKN_MODCFG_UPDOWN_MIX_COEFF_5_S32 = 427,
+  AVS_TKN_MODCFG_UPDOWN_MIX_COEFF_6_S32 = 428,
+  AVS_TKN_MODCFG_UPDOWN_MIX_COEFF_7_S32 = 429,
+  AVS_TKN_MODCFG_UPDOWN_MIX_CHAN_MAP_U32 = 430,
+  AVS_TKN_MODCFG_EXT_NUM_INPUT_PINS_U16 = 431,
+  AVS_TKN_MODCFG_EXT_NUM_OUTPUT_PINS_U16 = 432,
+  AVS_TKN_PPLCFG_ID_U32 = 1401,
+  AVS_TKN_PPLCFG_REQ_SIZE_U16 = 1402,
+  AVS_TKN_PPLCFG_PRIORITY_U8 = 1403,
+  AVS_TKN_PPLCFG_LOW_POWER_BOOL = 1404,
+  AVS_TKN_PPLCFG_ATTRIBUTES_U16 = 1405,
+  AVS_TKN_PPLCFG_TRIGGER_U32 = 1406,
+  AVS_TKN_BINDING_ID_U32 = 1501,
+  AVS_TKN_BINDING_TARGET_TPLG_NAME_STRING = 1502,
+  AVS_TKN_BINDING_TARGET_PATH_TMPL_ID_U32 = 1503,
+  AVS_TKN_BINDING_TARGET_PPL_ID_U32 = 1504,
+  AVS_TKN_BINDING_TARGET_MOD_ID_U32 = 1505,
+  AVS_TKN_BINDING_TARGET_MOD_PIN_U8 = 1506,
+  AVS_TKN_BINDING_MOD_ID_U32 = 1507,
+  AVS_TKN_BINDING_MOD_PIN_U8 = 1508,
+  AVS_TKN_BINDING_IS_SINK_U8 = 1509,
+  AVS_TKN_PPL_ID_U32 = 1601,
+  AVS_TKN_PPL_PPLCFG_ID_U32 = 1602,
+  AVS_TKN_PPL_NUM_BINDING_IDS_U32 = 1603,
+  AVS_TKN_PPL_BINDING_ID_U32 = 1604,
+  AVS_TKN_MOD_ID_U32 = 1701,
+  AVS_TKN_MOD_MODCFG_BASE_ID_U32 = 1702,
+  AVS_TKN_MOD_IN_AFMT_ID_U32 = 1703,
+  AVS_TKN_MOD_CORE_ID_U8 = 1704,
+  AVS_TKN_MOD_PROC_DOMAIN_U8 = 1705,
+  AVS_TKN_MOD_MODCFG_EXT_ID_U32 = 1706,
+  AVS_TKN_PATH_TMPL_ID_U32 = 1801,
+  AVS_TKN_PATH_ID_U32 = 1901,
+  AVS_TKN_PATH_FE_FMT_ID_U32 = 1902,
+  AVS_TKN_PATH_BE_FMT_ID_U32 = 1903,
+  AVS_TKN_PIN_FMT_INDEX_U32 = 2201,
+  AVS_TKN_PIN_FMT_IOBS_U32 = 2202,
+  AVS_TKN_PIN_FMT_AFMT_ID_U32 = 2203,
+};
+#endif
diff --git a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/sound/skl-tplg-interface.h b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/sound/skl-tplg-interface.h
index b516a08..6dd9655 100644
--- a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/sound/skl-tplg-interface.h
+++ b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/sound/skl-tplg-interface.h
@@ -110,8 +110,8 @@
   __u32 rsvd : 30;
   __u32 param_id;
   __u32 max;
-  char params[0];
-} __packed;
+  char params[];
+} __attribute__((__packed__));
 enum skl_tkn_dir {
   SKL_DIR_IN,
   SKL_DIR_OUT
@@ -123,7 +123,7 @@
 struct skl_dfw_v4_module_pin {
   __u16 module_id;
   __u16 instance_id;
-} __packed;
+} __attribute__((__packed__));
 struct skl_dfw_v4_module_fmt {
   __u32 channels;
   __u32 freq;
@@ -133,21 +133,21 @@
   __u32 interleaving_style;
   __u32 sample_type;
   __u32 ch_map;
-} __packed;
+} __attribute__((__packed__));
 struct skl_dfw_v4_module_caps {
   __u32 set_params : 2;
   __u32 rsvd : 30;
   __u32 param_id;
   __u32 caps_size;
   __u32 caps[HDA_SST_CFG_MAX];
-} __packed;
+} __attribute__((__packed__));
 struct skl_dfw_v4_pipe {
   __u8 pipe_id;
   __u8 pipe_priority;
   __u16 conn_type : 4;
   __u16 rsvd : 4;
   __u16 memory_pages : 8;
-} __packed;
+} __attribute__((__packed__));
 struct skl_dfw_v4_module {
   char uuid[SKL_UUID_STR_SZ];
   __u16 module_id;
@@ -181,5 +181,5 @@
   struct skl_dfw_v4_module_pin in_pin[MAX_IN_QUEUE];
   struct skl_dfw_v4_module_pin out_pin[MAX_OUT_QUEUE];
   struct skl_dfw_v4_module_caps caps;
-} __packed;
+} __attribute__((__packed__));
 #endif
diff --git a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/sound/sof/abi.h b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/sound/sof/abi.h
index 3af3c9d..dc4e525 100644
--- a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/sound/sof/abi.h
+++ b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/sound/sof/abi.h
@@ -18,8 +18,9 @@
  ****************************************************************************/
 #ifndef __INCLUDE_UAPI_SOUND_SOF_ABI_H__
 #define __INCLUDE_UAPI_SOUND_SOF_ABI_H__
+#include <linux/types.h>
 #define SOF_ABI_MAJOR 3
-#define SOF_ABI_MINOR 18
+#define SOF_ABI_MINOR 23
 #define SOF_ABI_PATCH 0
 #define SOF_ABI_MAJOR_SHIFT 24
 #define SOF_ABI_MAJOR_MASK 0xff
diff --git a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/sound/sof/fw.h b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/sound/sof/fw.h
index c36c2b9..97b7de3 100644
--- a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/sound/sof/fw.h
+++ b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/sound/sof/fw.h
@@ -46,7 +46,7 @@
   enum snd_sof_fw_blk_type type;
   __u32 size;
   __u32 offset;
-} __packed;
+} __attribute__((__packed__));
 enum snd_sof_fw_mod_type {
   SOF_FW_BASE = 0,
   SOF_FW_MODULE = 1,
@@ -55,11 +55,11 @@
   enum snd_sof_fw_mod_type type;
   __u32 size;
   __u32 num_blocks;
-} __packed;
+} __attribute__((__packed__));
 struct snd_sof_fw_header {
   unsigned char sig[SND_SOF_FW_SIG_SIZE];
   __u32 file_size;
   __u32 num_modules;
   __u32 abi;
-} __packed;
+} __attribute__((__packed__));
 #endif
diff --git a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/sound/sof/header.h b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/sound/sof/header.h
index 3fbd4a4..7514550 100644
--- a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/sound/sof/header.h
+++ b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/sound/sof/header.h
@@ -25,6 +25,19 @@
   __u32 size;
   __u32 abi;
   __u32 reserved[4];
-  __u32 data[0];
-} __packed;
+  __u32 data[];
+} __attribute__((__packed__));
+#define SOF_MANIFEST_DATA_TYPE_NHLT 1
+struct sof_manifest_tlv {
+  __le32 type;
+  __le32 size;
+  __u8 data[];
+};
+struct sof_manifest {
+  __le16 abi_major;
+  __le16 abi_minor;
+  __le16 abi_patch;
+  __le16 count;
+  struct sof_manifest_tlv items[];
+};
 #endif
diff --git a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/sound/sof/tokens.h b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/sound/sof/tokens.h
index 856281a..b07ed42 100644
--- a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/sound/sof/tokens.h
+++ b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/sound/sof/tokens.h
@@ -37,8 +37,13 @@
 #define SOF_TKN_SCHED_FRAMES 204
 #define SOF_TKN_SCHED_TIME_DOMAIN 205
 #define SOF_TKN_SCHED_DYNAMIC_PIPELINE 206
+#define SOF_TKN_SCHED_LP_MODE 207
+#define SOF_TKN_SCHED_MEM_USAGE 208
 #define SOF_TKN_VOLUME_RAMP_STEP_TYPE 250
 #define SOF_TKN_VOLUME_RAMP_STEP_MS 251
+#define SOF_TKN_GAIN_RAMP_TYPE 260
+#define SOF_TKN_GAIN_RAMP_DURATION 261
+#define SOF_TKN_GAIN_VAL 262
 #define SOF_TKN_SRC_RATE_IN 300
 #define SOF_TKN_SRC_RATE_OUT 301
 #define SOF_TKN_ASRC_RATE_IN 320
@@ -51,6 +56,9 @@
 #define SOF_TKN_COMP_FORMAT 402
 #define SOF_TKN_COMP_CORE_ID 404
 #define SOF_TKN_COMP_UUID 405
+#define SOF_TKN_COMP_CPC 406
+#define SOF_TKN_COMP_IS_PAGES 409
+#define SOF_TKN_COMP_NUM_AUDIO_FORMATS 410
 #define SOF_TKN_INTEL_SSP_CLKS_CONTROL 500
 #define SOF_TKN_INTEL_SSP_MCLK_ID 501
 #define SOF_TKN_INTEL_SSP_SAMPLE_BITS 502
@@ -90,4 +98,29 @@
 #define SOF_TKN_MEDIATEK_AFE_RATE 1600
 #define SOF_TKN_MEDIATEK_AFE_CH 1601
 #define SOF_TKN_MEDIATEK_AFE_FORMAT 1602
+#define SOF_TKN_MIXER_TYPE 1700
+#define SOF_TKN_AMD_ACPDMIC_RATE 1800
+#define SOF_TKN_AMD_ACPDMIC_CH 1801
+#define SOF_TKN_CAVS_AUDIO_FORMAT_IN_RATE 1900
+#define SOF_TKN_CAVS_AUDIO_FORMAT_IN_BIT_DEPTH 1901
+#define SOF_TKN_CAVS_AUDIO_FORMAT_IN_VALID_BIT 1902
+#define SOF_TKN_CAVS_AUDIO_FORMAT_IN_CHANNELS 1903
+#define SOF_TKN_CAVS_AUDIO_FORMAT_IN_CH_MAP 1904
+#define SOF_TKN_CAVS_AUDIO_FORMAT_IN_CH_CFG 1905
+#define SOF_TKN_CAVS_AUDIO_FORMAT_IN_INTERLEAVING_STYLE 1906
+#define SOF_TKN_CAVS_AUDIO_FORMAT_IN_FMT_CFG 1907
+#define SOF_TKN_CAVS_AUDIO_FORMAT_IN_SAMPLE_TYPE 1908
+#define SOF_TKN_CAVS_AUDIO_FORMAT_OUT_RATE 1930
+#define SOF_TKN_CAVS_AUDIO_FORMAT_OUT_BIT_DEPTH 1931
+#define SOF_TKN_CAVS_AUDIO_FORMAT_OUT_VALID_BIT 1932
+#define SOF_TKN_CAVS_AUDIO_FORMAT_OUT_CHANNELS 1933
+#define SOF_TKN_CAVS_AUDIO_FORMAT_OUT_CH_MAP 1934
+#define SOF_TKN_CAVS_AUDIO_FORMAT_OUT_CH_CFG 1935
+#define SOF_TKN_CAVS_AUDIO_FORMAT_OUT_INTERLEAVING_STYLE 1936
+#define SOF_TKN_CAVS_AUDIO_FORMAT_OUT_FMT_CFG 1937
+#define SOF_TKN_CAVS_AUDIO_FORMAT_OUT_SAMPLE_TYPE 1938
+#define SOF_TKN_CAVS_AUDIO_FORMAT_IBS 1970
+#define SOF_TKN_CAVS_AUDIO_FORMAT_OBS 1971
+#define SOF_TKN_CAVS_AUDIO_FORMAT_DMA_BUFFER_SIZE 1972
+#define SOF_TKN_INTEL_COPIER_NODE_TYPE 1980
 #endif
diff --git a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/sound/usb_stream.h b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/sound/usb_stream.h
index bb7fe80..ac87c31 100644
--- a/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/sound/usb_stream.h
+++ b/mainline/runtime/sdk/linux_bionic/include/bionic/libc/kernel/uapi/sound/usb_stream.h
@@ -49,7 +49,7 @@
   unsigned inpacket_split_at;
   unsigned next_inpacket_split;
   unsigned next_inpacket_split_at;
-  struct usb_stream_packet inpacket[0];
+  struct usb_stream_packet inpacket[];
 };
 enum usb_stream_state {
   usb_stream_invalid,
diff --git a/mainline/runtime/sdk/linux_bionic/x86_64/lib/crtbegin_dynamic.o b/mainline/runtime/sdk/linux_bionic/x86_64/lib/crtbegin_dynamic.o
index f6e5db9..10107e7 100644
--- a/mainline/runtime/sdk/linux_bionic/x86_64/lib/crtbegin_dynamic.o
+++ b/mainline/runtime/sdk/linux_bionic/x86_64/lib/crtbegin_dynamic.o
Binary files differ
diff --git a/mainline/runtime/sdk/linux_bionic/x86_64/lib/crtbegin_so.o b/mainline/runtime/sdk/linux_bionic/x86_64/lib/crtbegin_so.o
index 64c03d4..2b3b586 100644
--- a/mainline/runtime/sdk/linux_bionic/x86_64/lib/crtbegin_so.o
+++ b/mainline/runtime/sdk/linux_bionic/x86_64/lib/crtbegin_so.o
Binary files differ
diff --git a/mainline/runtime/sdk/linux_bionic/x86_64/lib/crtend.o b/mainline/runtime/sdk/linux_bionic/x86_64/lib/crtend.o
deleted file mode 100644
index c9e8a09..0000000
--- a/mainline/runtime/sdk/linux_bionic/x86_64/lib/crtend.o
+++ /dev/null
Binary files differ
diff --git a/mainline/runtime/sdk/linux_bionic/x86_64/lib/crtend_android.o b/mainline/runtime/sdk/linux_bionic/x86_64/lib/crtend_android.o
new file mode 100644
index 0000000..3233f21
--- /dev/null
+++ b/mainline/runtime/sdk/linux_bionic/x86_64/lib/crtend_android.o
Binary files differ
diff --git a/mainline/runtime/sdk/linux_bionic/x86_64/lib/crtend_so.o b/mainline/runtime/sdk/linux_bionic/x86_64/lib/crtend_so.o
index 2f126fa..22b2827 100644
--- a/mainline/runtime/sdk/linux_bionic/x86_64/lib/crtend_so.o
+++ b/mainline/runtime/sdk/linux_bionic/x86_64/lib/crtend_so.o
Binary files differ
diff --git a/mainline/runtime/sdk/linux_bionic/x86_64/lib/libasync_safe.a b/mainline/runtime/sdk/linux_bionic/x86_64/lib/libasync_safe.a
index 59737b2..3035bbc 100644
--- a/mainline/runtime/sdk/linux_bionic/x86_64/lib/libasync_safe.a
+++ b/mainline/runtime/sdk/linux_bionic/x86_64/lib/libasync_safe.a
Binary files differ
diff --git a/mainline/runtime/sdk/linux_bionic/x86_64/lib/libc.so b/mainline/runtime/sdk/linux_bionic/x86_64/lib/libc.so
index a51f508..ac8603c 100755
--- a/mainline/runtime/sdk/linux_bionic/x86_64/lib/libc.so
+++ b/mainline/runtime/sdk/linux_bionic/x86_64/lib/libc.so
Binary files differ
diff --git a/mainline/runtime/sdk/linux_bionic/x86_64/lib/libdl.so b/mainline/runtime/sdk/linux_bionic/x86_64/lib/libdl.so
index 5fdc55a..b0dc3e0 100755
--- a/mainline/runtime/sdk/linux_bionic/x86_64/lib/libdl.so
+++ b/mainline/runtime/sdk/linux_bionic/x86_64/lib/libdl.so
Binary files differ
diff --git a/mainline/runtime/sdk/linux_bionic/x86_64/lib/libdl_android.so b/mainline/runtime/sdk/linux_bionic/x86_64/lib/libdl_android.so
index 6868b2b..11f2455 100755
--- a/mainline/runtime/sdk/linux_bionic/x86_64/lib/libdl_android.so
+++ b/mainline/runtime/sdk/linux_bionic/x86_64/lib/libdl_android.so
Binary files differ
diff --git a/mainline/runtime/sdk/linux_bionic/x86_64/lib/libm.so b/mainline/runtime/sdk/linux_bionic/x86_64/lib/libm.so
index e932188..db564c8 100755
--- a/mainline/runtime/sdk/linux_bionic/x86_64/lib/libm.so
+++ b/mainline/runtime/sdk/linux_bionic/x86_64/lib/libm.so
Binary files differ
diff --git a/mainline/runtime/sdk/snapshot-creation-build-number.txt b/mainline/runtime/sdk/snapshot-creation-build-number.txt
new file mode 100644
index 0000000..8675c6f
--- /dev/null
+++ b/mainline/runtime/sdk/snapshot-creation-build-number.txt
@@ -0,0 +1 @@
+9469196
\ No newline at end of file
diff --git a/mainline/statsd/apex/com.android.os.statsd-arm.apex b/mainline/statsd/apex/com.android.os.statsd-arm.apex
index a4cfafc..d30f18b 100644
--- a/mainline/statsd/apex/com.android.os.statsd-arm.apex
+++ b/mainline/statsd/apex/com.android.os.statsd-arm.apex
Binary files differ
diff --git a/mainline/statsd/apex/com.android.os.statsd-arm64.apex b/mainline/statsd/apex/com.android.os.statsd-arm64.apex
index 63743b5..7a3cdbb 100644
--- a/mainline/statsd/apex/com.android.os.statsd-arm64.apex
+++ b/mainline/statsd/apex/com.android.os.statsd-arm64.apex
Binary files differ
diff --git a/mainline/statsd/apex/com.android.os.statsd-x86.apex b/mainline/statsd/apex/com.android.os.statsd-x86.apex
index 4fc2d80..54f38a8 100644
--- a/mainline/statsd/apex/com.android.os.statsd-x86.apex
+++ b/mainline/statsd/apex/com.android.os.statsd-x86.apex
Binary files differ
diff --git a/mainline/statsd/apex/com.android.os.statsd-x86_64.apex b/mainline/statsd/apex/com.android.os.statsd-x86_64.apex
index 51ffcb6..44ca11a 100644
--- a/mainline/statsd/apex/com.android.os.statsd-x86_64.apex
+++ b/mainline/statsd/apex/com.android.os.statsd-x86_64.apex
Binary files differ
diff --git a/mainline/tzdata/apex/com.android.tzdata-arm.apex b/mainline/tzdata/apex/com.android.tzdata-arm.apex
index 6c73169..7d39b91 100644
--- a/mainline/tzdata/apex/com.android.tzdata-arm.apex
+++ b/mainline/tzdata/apex/com.android.tzdata-arm.apex
Binary files differ
diff --git a/mainline/tzdata/apex/com.android.tzdata-arm64.apex b/mainline/tzdata/apex/com.android.tzdata-arm64.apex
index 6c73169..7d39b91 100644
--- a/mainline/tzdata/apex/com.android.tzdata-arm64.apex
+++ b/mainline/tzdata/apex/com.android.tzdata-arm64.apex
Binary files differ
diff --git a/mainline/tzdata/apex/com.android.tzdata-x86.apex b/mainline/tzdata/apex/com.android.tzdata-x86.apex
index 6c73169..7d39b91 100644
--- a/mainline/tzdata/apex/com.android.tzdata-x86.apex
+++ b/mainline/tzdata/apex/com.android.tzdata-x86.apex
Binary files differ
diff --git a/mainline/tzdata/apex/com.android.tzdata-x86_64.apex b/mainline/tzdata/apex/com.android.tzdata-x86_64.apex
index 6c73169..7d39b91 100644
--- a/mainline/tzdata/apex/com.android.tzdata-x86_64.apex
+++ b/mainline/tzdata/apex/com.android.tzdata-x86_64.apex
Binary files differ
diff --git a/mainline/update.py b/mainline/update.py
index 6fd96c3..803fea2 100755
--- a/mainline/update.py
+++ b/mainline/update.py
@@ -1,4 +1,4 @@
-#!/usr/bin/env -S python -B
+#!/usr/bin/env -S python3 -B
 #
 # Copyright (C) 2020 The Android Open Source Project
 #
@@ -13,120 +13,529 @@
 # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 # See the License for the specific language governing permissions and
 # limitations under the License.
-#
-"""Downloads mainline prebuilts from the build server."""
+
+"""Downloads prebuilts for ART Module dependencies and creates CLs in git."""
+
+import argparse
+import collections
 import os
+import subprocess
 import sys
+import tempfile
 
-THIS_DIR = os.path.realpath(os.path.dirname(__file__))
 
-sys.path.append(THIS_DIR + '/../common/python')
+# Prebuilt description used in commit message
+PREBUILT_DESCR = "ART dependencies"
 
-import update_prebuilts as update
 
-PREBUILT_DESCRIPTION = 'mainline'
-MODULE_TARGET = 'mainline_modules-userdebug'
-SDK_TARGET = "mainline_modules_sdks-userdebug"
+# Branch and target tuple for a CI build
+BuildSource = collections.namedtuple("BuildSource", [
+    "branch",
+    "target",
+])
 
-COMMIT_MESSAGE_NOTE = """\
-CL prepared by prebuilts/runtime/mainline/update.py.
 
-See prebuilts/runtime/mainline/README.md for update instructions.
+ARCHES = ["arm", "arm64", "x86", "x86_64"]
 
-Test: Presubmits
-"""
+# CI build for SDK snapshots
+SDK_SOURCE = BuildSource("aosp-master", "mainline_modules_sdks-userdebug")
 
-def InstallApexEntries(apex_base_name, install_dir):
-  res = []
-  for arch in ['arm', 'arm64', 'x86', 'x86_64']:
-    res.append(update.InstallEntry(
-        MODULE_TARGET,
-        os.path.join('mainline_modules_' + arch,
-                     'com.android.' + apex_base_name + '.apex'),
-        os.path.join(install_dir,
-                     'com.android.' + apex_base_name + '-' + arch + '.apex'),
-        install_unzipped=False))
-  return res
+# Architecture-specific CI builds for APEXes. These are only used in the chroot
+# test setup (see art/tools/buildbot-build.sh). They never become part of any
+# dist artifact.
+#
+# There are currently no CI builds except for x86_64, so APEX updates are
+# skipped by default.
+APEX_SOURCE = {
+    "x86_64": BuildSource("aosp-master", "mainline_modules_x86_64-userdebug"),
+}
 
-def InstallUnbundledSdkEntries(apex_base_name, sdk_type):
-  return [update.InstallEntry(
-      SDK_TARGET,
-      os.path.join('mainline-sdks/for-latest-build/current',
-                   'com.android.' + apex_base_name,
-                   sdk_type,
-                   apex_base_name + '-module-' + sdk_type + '-current.zip'),
-      os.path.join(apex_base_name, sdk_type),
-      install_unzipped=True)]
+# Architecture-specific CI builds for implementation libraries. These are only
+# used in the chroot test setup (see art/tools/buildbot-build.sh). They never
+# become part of any dist artifact.
+#
+# We'd prefer to take all these from the aosp-master branch, but unfortunately
+# they're not available there, so we need to use aosp-master-throttled as well.
+# As long as they're new enough to contain the required changes (see README.md
+# instructions) and pass tests, it doesn't matter much which builds they come
+# from. Also, x86 has no userdebug build available, so we use eng for that.
+IMPL_LIB_SOURCE = {
+    "arm": BuildSource("aosp-master-throttled", "aosp_arm-userdebug"),
+    "arm64": BuildSource("aosp-master", "aosp_arm64-userdebug"),
+    "x86": BuildSource("aosp-master", "aosp_x86-eng"),
+    "x86_64": BuildSource("aosp-master", "aosp_x86_64-userdebug"),
+}
 
-def InstallBundledSdkEntries(apex_base_name, sdk_type):
-  return [update.InstallEntry(
-      SDK_TARGET,
-      os.path.join('bundled-mainline-sdks',
-                   'com.android.' + apex_base_name,
-                   sdk_type,
-                   apex_base_name + '-module-' + sdk_type + '-current.zip'),
-      os.path.join(apex_base_name, sdk_type),
-      install_unzipped=True)]
+# Paths to git projects to prepare CLs in
+GIT_PROJECT_ROOTS = [
+    "prebuilts/module_sdk/conscrypt",
+    "prebuilts/module_sdk/StatsD",
+    "prebuilts/runtime",
+]
 
-def InstallPlatformMainlineSdkEntries(sdk_type):
-  return [update.InstallEntry(
-      SDK_TARGET,
-      os.path.join('bundled-mainline-sdks',
-                   'platform-mainline',
-                   sdk_type,
-                   'platform-mainline-' + sdk_type + '-current.zip'),
-      os.path.join('platform', sdk_type),
-      install_unzipped=True)]
+SDK_VERSION = "current"
 
-def InstallSharedLibEntries(lib_name, install_dir):
-  res = []
-  for arch in ['arm', 'arm64', 'x86', 'x86_64']:
-    res.append(update.InstallEntry(
-        MODULE_TARGET,
-        os.path.join(arch, lib_name + '.so'),
-        os.path.join(install_dir, arch, lib_name  + '.so'),
-        install_unzipped=False))
-  return res
+SCRIPT_PATH = "prebuilts/runtime/mainline/update.py"
 
-PREBUILT_INSTALL_MODULES = (
+
+InstallEntry = collections.namedtuple(
+    "InstallEntry",
+    [
+        # One of "apex", "module_sdk" and "impl_lib", for the --skip-* flags.
+        "type",
+        # Source CI build as a BuildSource tuple, or None if none exists.
+        "source_build",
+        # Artifact path in the build, passed to fetch_target. Should match a
+        # single file. "{BUILD}" gets replaced with the build number.
+        "source_path",
+        # Local install path.
+        "install_path",
+        # True if the entry is a zip file that should be unzipped to
+        # install_path.
+        "install_unzipped",
+        # If set, the entry is a zip from which this single file is extracted to
+        # install_path.
+        "unzip_single_file",
+    ],
+    defaults=(False, None), # Defaults for install_unzipped and unzip_single_file.
+)
+
+
+def install_apex_entries(module_name, apex_name):
+  return [
+      InstallEntry(
+          type="apex",
+          source_build=APEX_SOURCE.get(arch, None),
+          source_path=os.path.join(
+              "mainline_modules_" + arch,
+              apex_name + ".apex"),
+          install_path=os.path.join(
+              "prebuilts/runtime/mainline",
+              module_name,
+              "apex",
+              apex_name + "-" + arch + ".apex"))
+      for arch in ARCHES]
+
+
+def install_unbundled_sdk_entries(apex_name, mainline_sdk_name, sdk_type, install_path):
+  return [
+      InstallEntry(
+          type="module_sdk",
+          source_build=SDK_SOURCE,
+          source_path=os.path.join(
+              "mainline-sdks/for-latest-build",
+              SDK_VERSION,
+              apex_name,
+              sdk_type,
+              mainline_sdk_name + "-" + sdk_type + "-" + SDK_VERSION + ".zip"),
+          install_path=install_path,
+          install_unzipped=True)]
+
+
+def install_bundled_sdk_entries(module_name, sdk_type):
+  return [
+      InstallEntry(
+          type="module_sdk",
+          source_build=SDK_SOURCE,
+          source_path=os.path.join(
+              "bundled-mainline-sdks",
+              "com.android." + module_name,
+              sdk_type,
+              module_name + "-module-" + sdk_type + "-" + SDK_VERSION + ".zip"),
+          install_path=os.path.join(
+              "prebuilts/runtime/mainline",
+              module_name,
+              sdk_type),
+          install_unzipped=True)]
+
+
+def install_platform_mainline_sdk_entries(sdk_type):
+  return [
+      InstallEntry(
+          type="module_sdk",
+          source_build=SDK_SOURCE,
+          source_path=os.path.join(
+              "bundled-mainline-sdks",
+              "platform-mainline",
+              sdk_type,
+              "platform-mainline-" + sdk_type + "-" + SDK_VERSION + ".zip"),
+          install_path=os.path.join(
+              "prebuilts/runtime/mainline/platform",
+              sdk_type),
+          install_unzipped=True)]
+
+
+def install_impl_lib_entries(lib_name):
+  return [
+      InstallEntry(
+          type="impl_lib",
+          source_build=IMPL_LIB_SOURCE[arch],
+          source_path="aosp_" + arch + "-target_files-{BUILD}.zip",
+          unzip_single_file=os.path.join(
+              "SYSTEM",
+              "lib64" if arch.endswith("64") else "lib",
+              lib_name),
+          install_path=os.path.join(
+              "prebuilts/runtime/mainline/platform/impl",
+              arch,
+              lib_name))
+      for arch in ARCHES]
+
+
+install_entries = (
     # Conscrypt
-    #InstallApexEntries('conscrypt', 'conscrypt/apex') +
-    #InstallUnbundledSdkEntries('conscrypt', 'test-exports') +
-    #InstallUnbundledSdkEntries('conscrypt', 'host-exports') +
+    install_apex_entries("conscrypt", "com.android.conscrypt") +
+    install_unbundled_sdk_entries(
+        "com.android.conscrypt", "conscrypt-module", "sdk",
+        "prebuilts/module_sdk/conscrypt/current") +
+    install_unbundled_sdk_entries(
+        "com.android.conscrypt", "conscrypt-module", "test-exports",
+        "prebuilts/module_sdk/conscrypt/current/test-exports") +
+    install_unbundled_sdk_entries(
+        "com.android.conscrypt", "conscrypt-module", "host-exports",
+        "prebuilts/module_sdk/conscrypt/current/host-exports") +
 
     # Runtime (Bionic)
-    #InstallApexEntries('runtime', 'runtime/apex') +
     # sdk and host-exports must always be updated together, because the linker
     # and the CRT object files gets embedded in the binaries on linux host
     # Bionic (see code and comments around host_bionic_linker_script in
     # build/soong).
-    InstallBundledSdkEntries('runtime', 'sdk') +
-    InstallBundledSdkEntries('runtime', 'host-exports') +
+    install_apex_entries("runtime", "com.android.runtime") +
+    install_bundled_sdk_entries("runtime", "sdk") +
+    install_bundled_sdk_entries("runtime", "host-exports") +
 
     # I18N
-    #InstallApexEntries('i18n', 'i18n/apex') +
-    #InstallBundledSdkEntries('i18n', 'sdk') +
-    #InstallBundledSdkEntries('i18n', 'test-exports') +
+    install_apex_entries("i18n", "com.android.i18n") +
+    install_bundled_sdk_entries("i18n", "sdk") +
+    install_bundled_sdk_entries("i18n", "test-exports") +
 
     # tzdata
-    #InstallApexEntries('tzdata', 'tzdata/apex') +
-    #InstallBundledSdkEntries('tzdata', 'test-exports') +
+    install_apex_entries("tzdata", "com.android.tzdata") +
+    install_bundled_sdk_entries("tzdata", "test-exports") +
 
     # statsd
-    #InstallApexEntries('os.statsd', 'statsd/apex') +
+    install_apex_entries("statsd", "com.android.os.statsd") +
+    install_unbundled_sdk_entries(
+        "com.android.os.statsd", "statsd-module", "sdk",
+        "prebuilts/module_sdk/StatsD/current") +
 
     # Platform
-    #InstallPlatformMainlineSdkEntries('sdk') +
-    #InstallPlatformMainlineSdkEntries('test-exports') +
-    # Shared libraries that are stubs in SDKs, but for which we need their
-    # implementation for device testing.
-    #InstallSharedLibEntries('heapprofd_client_api', 'platform/impl') +
-    #InstallSharedLibEntries('libartpalette-system', 'platform/impl') +
-    #InstallSharedLibEntries('liblog', 'platform/impl') +
+    install_platform_mainline_sdk_entries("sdk") +
+    install_platform_mainline_sdk_entries("test-exports") +
+    install_impl_lib_entries("heapprofd_client_api.so") +
+    install_impl_lib_entries("libartpalette-system.so") +
+    install_impl_lib_entries("liblog.so") +
+    install_impl_lib_entries("libbinder_ndk.so") +
+    # libbinder_ndk dependencies:
+    install_impl_lib_entries("libandroid_runtime_lazy.so") +
+    install_impl_lib_entries("libbase.so") +
+    install_impl_lib_entries("libbinder.so") +
+    install_impl_lib_entries("libcutils.so") +
+    install_impl_lib_entries("libutils.so") +
+    install_impl_lib_entries("libvndksupport.so") +
 
     [])
 
-if __name__ == '__main__':
-  args = update.parse_args()
-  update.main(args, THIS_DIR, PREBUILT_DESCRIPTION, PREBUILT_INSTALL_MODULES,
-              [], COMMIT_MESSAGE_NOTE)
+
+def check_call(cmd, **kwargs):
+  """Proxy for subprocess.check_call with logging."""
+  msg = " ".join(cmd) if isinstance(cmd, list) else cmd
+  if "cwd" in kwargs:
+    msg = "In " + kwargs["cwd"] + ": " + msg
+  print(msg)
+  subprocess.check_call(cmd, **kwargs)
+
+
+def fetch_artifact(branch, target, build, fetch_pattern, local_dir, zip_entry=None):
+  """Fetches artifact from the build server."""
+  fetch_artifact_path = "/google/data/ro/projects/android/fetch_artifact"
+  cmd = [fetch_artifact_path, "--branch", branch, "--target", target,
+         "--bid", build, fetch_pattern]
+  if zip_entry:
+    cmd += ["--zip_entry", zip_entry]
+  check_call(cmd, cwd=local_dir)
+
+
+def start_branch(git_branch_name, git_dirs):
+  """Creates a new repo branch in the given projects."""
+  check_call(["repo", "start", git_branch_name] + git_dirs)
+  # In case the branch already exists we reset it to upstream, to get a clean
+  # update CL.
+  for git_dir in git_dirs:
+    check_call(["git", "reset", "--hard", "@{upstream}"], cwd=git_dir)
+
+
+def upload_branch(git_root, git_branch_name):
+  """Uploads the CLs in the given branch in the given project."""
+  # Set the branch as topic to bundle with the CLs in other git projects (if
+  # any).
+  check_call(["repo", "upload", "-t", "--br=" + git_branch_name, git_root])
+
+
+def remove_files(git_root, subpaths, stage_removals):
+  """Removes files in the work tree, optionally staging them in git."""
+  if stage_removals:
+    check_call(["git", "rm", "-qrf", "--ignore-unmatch"] + subpaths, cwd=git_root)
+  # Need a plain rm afterwards even if git rm was executed, because git won't
+  # remove directories if they have non-git files in them.
+  check_call(["rm", "-rf"] + subpaths, cwd=git_root)
+
+
+def commit(git_root, prebuilt_descr, installed_sources, add_paths, bug_number):
+  """Commits the new prebuilts."""
+  check_call(["git", "add"] +
+             [path for path in add_paths
+              if os.path.exists(os.path.join(git_root, path))],
+             cwd=git_root)
+
+  if installed_sources:
+    message = "Update {} prebuilts.\n\n".format(prebuilt_descr)
+    if len(installed_sources) == 1:
+      message += "Taken from {}.".format(installed_sources[0])
+    else:
+      message += "Taken from:\n{}".format(
+          "\n".join([s.capitalize() for s in installed_sources]))
+  else:
+    message = (
+        "DO NOT SUBMIT: Update {prebuilt_descr} prebuilts from local build."
+        .format(prebuilt_descr=prebuilt_descr))
+  message += ("\n\nCL prepared by {}."
+              "\n\nTest: Presubmits".format(SCRIPT_PATH))
+  if bug_number:
+    message += ("\nBug: {}".format(bug_number))
+
+  msg_fd, msg_path = tempfile.mkstemp()
+  try:
+    with os.fdopen(msg_fd, "w") as f:
+      f.write(message)
+    # Do a diff first to skip the commit without error if there are no changes
+    # to commit.
+    check_call("git diff-index --quiet --cached HEAD -- || "
+               "git commit -F " + msg_path, shell=True, cwd=git_root)
+  finally:
+    os.unlink(msg_path)
+
+
+def install_entry(tmp_dir, local_dist, build_numbers, entry):
+  """Installs one file specified by entry."""
+
+  if not local_dist and not entry.source_build:
+    print("WARNING: No CI build for {} - skipping.".format(entry.source_path))
+    return None
+
+  build_number = build_numbers[entry.source_build.branch]
+  source_path = entry.source_path.replace("{BUILD}", str(build_number))
+
+  source_dir, source_file = os.path.split(source_path)
+
+  if local_dist:
+    download_dir = os.path.join(tmp_dir, source_dir)
+  else:
+    download_dir = os.path.join(tmp_dir,
+                                entry.source_build.branch,
+                                build_number,
+                                entry.source_build.target,
+                                source_dir)
+  os.makedirs(download_dir, exist_ok=True)
+  download_file = os.path.join(download_dir, source_file)
+
+  unzip_dir = None
+  unzip_file = None
+  if entry.unzip_single_file:
+    unzip_dir = os.path.join(download_dir,
+                             source_path.removesuffix(".zip") + "_unzip")
+    os.makedirs(unzip_dir, exist_ok=True)
+    unzip_file = os.path.join(unzip_dir, entry.unzip_single_file)
+
+  if not local_dist and unzip_file:
+    if not os.path.exists(unzip_file):
+      # Use the --zip_entry option to fetch_artifact to avoid downloading the
+      # whole zip.
+      fetch_artifact(entry.source_build.branch,
+                     entry.source_build.target,
+                     build_number,
+                     source_path,
+                     unzip_dir,
+                     entry.unzip_single_file)
+      if not os.path.exists(unzip_file):
+        sys.exit("fetch_artifact didn't create expected file {}".format(unzip_file))
+  else:
+    # Fetch files once by downloading them into a specific location in tmp_dir
+    # only if they're not already there.
+    if not os.path.exists(download_file):
+      if local_dist:
+        check_call(["cp", os.path.join(local_dist, source_path), download_dir])
+      else:
+        fetch_artifact(entry.source_build.branch,
+                       entry.source_build.target,
+                       build_number,
+                       source_path,
+                       download_dir)
+      if not os.path.exists(download_file):
+        sys.exit("Failed to retrieve {}".format(source_path))
+
+  install_dir, install_file = os.path.split(entry.install_path)
+  os.makedirs(install_dir, exist_ok=True)
+
+  if entry.install_unzipped:
+    check_call(["mkdir", install_file], cwd=install_dir)
+    # Add -DD to not extract timestamps that may confuse the build system.
+    check_call(["unzip", "-DD", download_file, "-d", install_file],
+               cwd=install_dir)
+  elif entry.unzip_single_file:
+    if not os.path.exists(unzip_file):
+      check_call(["unzip", download_file, "-d", unzip_dir, entry.unzip_single_file])
+    check_call(["cp", unzip_file, install_file], cwd=install_dir)
+  else:
+    check_call(["cp", download_file, install_file], cwd=install_dir)
+
+  # Return a description of the source location for inclusion in the commit
+  # message.
+  return (
+      "branch {}, target {}, build {}".format(
+          entry.source_build.branch,
+          entry.source_build.target,
+          build_number)
+      if not local_dist else None)
+
+
+def install_paths_per_git_root(roots, paths):
+  """Partitions the given paths into subpaths within the given roots.
+
+  Args:
+    roots: List of root paths.
+    paths: List of paths relative to the same directory as the root paths.
+
+  Returns:
+    A dict mapping each root to the subpaths under it. It's an error if some
+    path doesn't go into any root.
+  """
+  res = collections.defaultdict(list)
+  for path in paths:
+    found = False
+    for root in roots:
+      if path.startswith(root + "/"):
+        res[root].append(path[len(root) + 1:])
+        found = True
+        break
+    if not found:
+      sys.exit("Install path {} is not in any of the git roots: {}"
+               .format(path, " ".join(roots)))
+  return res
+
+
+def get_args():
+  """Parses and returns command line arguments."""
+  parser = argparse.ArgumentParser(
+      epilog="Either --aosp-master-build and --aosp-master-throttled-build, "
+      "or --local-dist, is required.")
+
+  parser.add_argument("--aosp-master-build", metavar="NUMBER",
+                      help="Build number to fetch from aosp-master")
+  parser.add_argument("--aosp-master-throttled-build", metavar="NUMBER",
+                      help="Build number to fetch from aosp-master-throttled")
+  parser.add_argument("--local-dist", metavar="PATH",
+                      help="Take prebuilts from this local dist dir instead of "
+                      "using fetch_artifact")
+  parser.add_argument("--skip-apex", default=True,
+                      action=argparse.BooleanOptionalAction,
+                      help="Do not fetch .apex files.")
+  parser.add_argument("--skip-module-sdk", action="store_true",
+                      help="Do not fetch and unpack sdk and module_export zips.")
+  parser.add_argument("--skip-impl-lib", action="store_true",
+                      help="Do not fetch implementation libraries.")
+  parser.add_argument("--skip-cls", action="store_true",
+                      help="Do not create branches or git commits")
+  parser.add_argument("--bug", metavar="NUMBER",
+                      help="Add a 'Bug' line with this number to commit "
+                      "messages.")
+  parser.add_argument("--upload", action="store_true",
+                      help="Upload the CLs to Gerrit")
+  parser.add_argument("--tmp-dir", metavar="PATH",
+                      help="Temporary directory for downloads. The default is "
+                      "to create one and delete it when finished, but this one "
+                      "will be kept, and any files already in it won't be "
+                      "downloaded again.")
+
+  args = parser.parse_args()
+  got_build_numbers = bool(args.aosp_master_build and
+                           args.aosp_master_throttled_build)
+  if ((not got_build_numbers and not args.local_dist) or
+      (got_build_numbers and args.local_dist)):
+    sys.exit(parser.format_help())
+  return args
+
+
+def main():
+  """Program entry point."""
+  args = get_args()
+
+  if any(path for path in GIT_PROJECT_ROOTS if not os.path.exists(path)):
+    sys.exit("This script must be run in the root of the Android build tree.")
+
+  build_numbers = None
+  if args.aosp_master_build:
+    build_numbers = {
+        "aosp-master": args.aosp_master_build,
+        "aosp-master-throttled": args.aosp_master_throttled_build,
+    }
+
+  entries = install_entries
+  if args.skip_apex:
+    entries = [entry for entry in entries if entry.type != "apex"]
+  if args.skip_module_sdk:
+    entries = [entry for entry in entries if entry.type != "module_sdk"]
+  if args.skip_impl_lib:
+    entries = [entry for entry in entries if entry.type != "impl_lib"]
+  if not entries:
+    sys.exit("All prebuilts skipped - nothing to do.")
+
+  install_paths = [entry.install_path for entry in entries]
+  install_paths_per_root = install_paths_per_git_root(
+      GIT_PROJECT_ROOTS, install_paths)
+
+  git_branch_name = PREBUILT_DESCR.lower().replace(" ", "-") + "-update"
+  if args.aosp_master_build:
+    git_branch_name += "-" + args.aosp_master_build
+
+  if not args.skip_cls:
+    git_paths = list(install_paths_per_root.keys())
+    start_branch(git_branch_name, git_paths)
+
+  for git_root, subpaths in install_paths_per_root.items():
+    remove_files(git_root, subpaths, not args.skip_cls)
+
+  all_installed_sources = {}
+
+  tmp_dir_obj = None
+  tmp_dir = args.tmp_dir
+  if not args.tmp_dir:
+    tmp_dir_obj = tempfile.TemporaryDirectory()
+    tmp_dir = tmp_dir_obj.name
+  tmp_dir = os.path.abspath(tmp_dir)
+  try:
+    for entry in entries:
+      installed_source = install_entry(
+          tmp_dir, args.local_dist, build_numbers, entry)
+      if installed_source:
+        all_installed_sources[entry.install_path] = installed_source
+  finally:
+    if tmp_dir_obj:
+      tmp_dir_obj.cleanup()
+
+  if not args.skip_cls:
+    for git_root, subpaths in install_paths_per_root.items():
+      installed_sources = set(src for path, src in all_installed_sources.items()
+                              if path.startswith(git_root + "/"))
+      commit(git_root, PREBUILT_DESCR, sorted(list(installed_sources)),
+             subpaths, args.bug)
+
+    if args.upload:
+      # Don't upload all projects in a single repo upload call, because that
+      # makes it pop up an interactive editor.
+      for git_root in install_paths_per_root:
+        upload_branch(git_root, git_branch_name)
+
+
+if __name__ == "__main__":
+  main()
diff --git a/update.py b/update.py
index 8023455..c1a38b4 100755
--- a/update.py
+++ b/update.py
@@ -1,4 +1,4 @@
-#!/usr/bin/env -S python -B
+#!/usr/bin/env -S python3 -B
 #
 # Copyright (C) 2019 The Android Open Source Project
 #
@@ -25,7 +25,7 @@
 import update_prebuilts as update
 
 adb_install_list = [
-    update.InstallEntry('sdk_arm64-sdk', 'adb', 'adb', need_exec=True),
+    update.InstallEntry('sdk', 'adb', 'adb', need_exec=True),
 ]
 
 adb_extracted_list = [