| /* SPDX-License-Identifier: GPL-2.0-or-later */ | |
| /* | |
| * Functions to retrieve information about the host system. | |
| * | |
| * Copyright (c) 2020 Red Hat Inc | |
| * Copyright 2022 IBM Corp. | |
| * | |
| * Authors: | |
| * Claudio Imbrenda <imbrenda@linux.ibm.com> | |
| */ | |
| #ifndef _S390X_HARDWARE_H_ | |
| #define _S390X_HARDWARE_H_ | |
| #include <asm/arch_def.h> | |
| #define MACHINE_Z15 0x8561 | |
| #define MACHINE_Z15T02 0x8562 | |
| enum s390_host { | |
| HOST_IS_UNKNOWN, | |
| HOST_IS_LPAR, | |
| HOST_IS_KVM, | |
| HOST_IS_TCG | |
| }; | |
| enum s390_host detect_host(void); | |
| static inline uint16_t get_machine_id(void) | |
| { | |
| return stidp() >> 16; | |
| } | |
| static inline bool host_is_tcg(void) | |
| { | |
| return detect_host() == HOST_IS_TCG; | |
| } | |
| static inline bool host_is_kvm(void) | |
| { | |
| return detect_host() == HOST_IS_KVM; | |
| } | |
| static inline bool host_is_lpar(void) | |
| { | |
| return detect_host() == HOST_IS_LPAR; | |
| } | |
| static inline bool host_is_qemu(void) | |
| { | |
| return host_is_tcg() || host_is_kvm(); | |
| } | |
| static inline bool machine_is_z15(void) | |
| { | |
| uint16_t machine = get_machine_id(); | |
| return machine == MACHINE_Z15 || machine == MACHINE_Z15T02; | |
| } | |
| #endif /* _S390X_HARDWARE_H_ */ |