113e5c32cSMichal Wajdeczko /* SPDX-License-Identifier: MIT */ 213e5c32cSMichal Wajdeczko /* 313e5c32cSMichal Wajdeczko * Copyright © 2023 Intel Corporation 413e5c32cSMichal Wajdeczko */ 513e5c32cSMichal Wajdeczko 613e5c32cSMichal Wajdeczko #ifndef _XE_SRIOV_H_ 713e5c32cSMichal Wajdeczko #define _XE_SRIOV_H_ 813e5c32cSMichal Wajdeczko 913e5c32cSMichal Wajdeczko #include "xe_assert.h" 1013e5c32cSMichal Wajdeczko #include "xe_device_types.h" 1113e5c32cSMichal Wajdeczko #include "xe_sriov_types.h" 1213e5c32cSMichal Wajdeczko 133df49b2eSMichal Wajdeczko struct drm_printer; 143df49b2eSMichal Wajdeczko 1513e5c32cSMichal Wajdeczko const char *xe_sriov_mode_to_string(enum xe_sriov_mode mode); 16c7201728SMichal Wajdeczko const char *xe_sriov_function_name(unsigned int n, char *buf, size_t len); 1713e5c32cSMichal Wajdeczko 18d79c88c4SMichal Wajdeczko void xe_sriov_probe_early(struct xe_device *xe); 193df49b2eSMichal Wajdeczko void xe_sriov_print_info(struct xe_device *xe, struct drm_printer *p); 200cfb7caeSMichal Wajdeczko int xe_sriov_init(struct xe_device *xe); 2113e5c32cSMichal Wajdeczko xe_device_sriov_mode(const struct xe_device * xe)22*0e6745deSMichal Wajdeczkostatic inline enum xe_sriov_mode xe_device_sriov_mode(const struct xe_device *xe) 2313e5c32cSMichal Wajdeczko { 2413e5c32cSMichal Wajdeczko xe_assert(xe, xe->sriov.__mode); 2513e5c32cSMichal Wajdeczko return xe->sriov.__mode; 2613e5c32cSMichal Wajdeczko } 2713e5c32cSMichal Wajdeczko xe_device_is_sriov_pf(const struct xe_device * xe)28*0e6745deSMichal Wajdeczkostatic inline bool xe_device_is_sriov_pf(const struct xe_device *xe) 2913e5c32cSMichal Wajdeczko { 3013e5c32cSMichal Wajdeczko return xe_device_sriov_mode(xe) == XE_SRIOV_MODE_PF; 3113e5c32cSMichal Wajdeczko } 3213e5c32cSMichal Wajdeczko xe_device_is_sriov_vf(const struct xe_device * xe)33*0e6745deSMichal Wajdeczkostatic inline bool xe_device_is_sriov_vf(const struct xe_device *xe) 3413e5c32cSMichal Wajdeczko { 3513e5c32cSMichal Wajdeczko return xe_device_sriov_mode(xe) == XE_SRIOV_MODE_VF; 3613e5c32cSMichal Wajdeczko } 3713e5c32cSMichal Wajdeczko 3813e5c32cSMichal Wajdeczko #ifdef CONFIG_PCI_IOV 3913e5c32cSMichal Wajdeczko #define IS_SRIOV_PF(xe) xe_device_is_sriov_pf(xe) 4013e5c32cSMichal Wajdeczko #else 4113e5c32cSMichal Wajdeczko #define IS_SRIOV_PF(xe) (typecheck(struct xe_device *, (xe)) && false) 4213e5c32cSMichal Wajdeczko #endif 4313e5c32cSMichal Wajdeczko #define IS_SRIOV_VF(xe) xe_device_is_sriov_vf(xe) 4413e5c32cSMichal Wajdeczko 4513e5c32cSMichal Wajdeczko #define IS_SRIOV(xe) (IS_SRIOV_PF(xe) || IS_SRIOV_VF(xe)) 4613e5c32cSMichal Wajdeczko 4713e5c32cSMichal Wajdeczko #endif 48