| /* SPDX-License-Identifier: GPL-2.0-only */ |
| /* |
| * Define configuration macros. |
| * |
| * Copyright (C) 2023 Google LLC |
| */ |
| |
| #ifndef __GCIP_CONFIG_H__ |
| #define __GCIP_CONFIG_H__ |
| |
| #include <linux/version.h> |
| |
| #define GCIP_IS_GKI (IS_ENABLED(CONFIG_ANDROID) || IS_ENABLED(CONFIG_ANDROID_VENDOR_HOOKS)) |
| |
| /* Macros to check the availability of features and APIs */ |
| |
| #define GCIP_HAS_VMA_FLAGS_API \ |
| ((LINUX_VERSION_CODE >= KERNEL_VERSION(6, 1, 25) && GCIP_IS_GKI) || \ |
| LINUX_VERSION_CODE >= KERNEL_VERSION(6, 3, 0)) |
| |
| #define GCIP_HAS_IOMMU_PASID \ |
| ((LINUX_VERSION_CODE >= KERNEL_VERSION(6, 1, 0) && GCIP_IS_GKI) || \ |
| LINUX_VERSION_CODE >= KERNEL_VERSION(6, 2, 0)) |
| |
| #define GCIP_HAS_AUX_DOMAINS (LINUX_VERSION_CODE <= KERNEL_VERSION(5, 17, 0)) |
| |
| /* |
| * TODO(b/277649169) Best fit IOVA allocator was removed in 6.1 GKI |
| * The API needs to either be upstreamed, integrated into this driver, or disabled for 6.1 |
| * compatibility. For now, disable best-fit on all non-Android kernels and any GKI > 5.15. |
| */ |
| #define GCIP_HAS_IOVAD_BEST_FIT_ALGO \ |
| (LINUX_VERSION_CODE < KERNEL_VERSION(5, 16, 0) && \ |
| (IS_ENABLED(CONFIG_GCIP_TEST) || GCIP_IS_GKI)) |
| |
| #endif /* __GCIP_CONFIG_H__ */ |