1#!/usr/bin/env bash 2# Copyright 2022 The ChromiumOS Authors 3# Use of this source code is governed by a BSD-style license that can be 4# found in the LICENSE file. 5 6# Regenerate kvm_sys bindgen bindings. 7 8set -euo pipefail 9cd "$(dirname "${BASH_SOURCE[0]}")/.." 10 11source tools/impl/bindgen-common.sh 12 13KVM_EXTRAS="// Added by kvm_sys/bindgen.sh 14pub const KVM_SYSTEM_EVENT_S2IDLE: u32 = 4; 15// TODO(tjeznach): Remove this when reporting KVM_IOAPIC_NUM_PINS is no longer required. 16pub const KVM_CAP_IOAPIC_NUM_PINS: u32 = 8191; 17// TODO(qwandor): Update this once the pKVM patches are merged upstream with a stable capability ID. 18pub const KVM_CAP_ARM_PROTECTED_VM: u32 = 0xffbadab1; 19pub const KVM_CAP_ARM_PROTECTED_VM_FLAGS_SET_FW_IPA: u32 = 0; 20pub const KVM_CAP_ARM_PROTECTED_VM_FLAGS_INFO: u32 = 1; 21pub const KVM_VM_TYPE_ARM_PROTECTED: u32 = 0x80000000;" 22 23bindgen_generate \ 24 --raw-line "${KVM_EXTRAS}" \ 25 --blocklist-item='__kernel.*' \ 26 --blocklist-item='__BITS_PER_LONG' \ 27 --blocklist-item='__FD_SETSIZE' \ 28 --blocklist-item='_?IOC.*' \ 29 "${BINDGEN_LINUX_X86_HEADERS}/include/linux/kvm.h" \ 30 -- \ 31 -isystem "${BINDGEN_LINUX_X86_HEADERS}/include" \ 32 | replace_linux_int_types \ 33 > kvm_sys/src/x86/bindings.rs 34 35bindgen_generate \ 36 --raw-line "${KVM_EXTRAS}" \ 37 --blocklist-item='__kernel.*' \ 38 --blocklist-item='__BITS_PER_LONG' \ 39 --blocklist-item='__FD_SETSIZE' \ 40 --blocklist-item='_?IOC.*' \ 41 "${BINDGEN_LINUX_ARM64_HEADERS}/include/linux/kvm.h" \ 42 -- \ 43 -isystem "${BINDGEN_LINUX_ARM64_HEADERS}/include" \ 44 | replace_linux_int_types \ 45 > kvm_sys/src/aarch64/bindings.rs 46