Added support for XNVCTRL on Linux to add support for --gpu-temp-retain for NVidia GPU
This commit is contained in:
@@ -56,6 +56,7 @@ typedef void *OCL_LIB;
|
||||
typedef void *ADL_LIB;
|
||||
typedef void *NVAPI_LIB;
|
||||
typedef void *NVML_LIB;
|
||||
typedef void *XNVCTRL_LIB;
|
||||
#ifdef OSX
|
||||
#define __stdcall
|
||||
#endif
|
||||
@@ -90,6 +91,7 @@ typedef HINSTANCE OCL_LIB;
|
||||
typedef HINSTANCE ADL_LIB;
|
||||
typedef HINSTANCE NVAPI_LIB;
|
||||
typedef HINSTANCE NVML_LIB;
|
||||
typedef HINSTANCE XNVCTRL_LIB;
|
||||
#endif
|
||||
|
||||
#define mkdir(name,mode) mkdir (name)
|
||||
|
||||
@@ -0,0 +1,92 @@
|
||||
/**
|
||||
* Authors.....: Jens Steube <jens.steube@gmail.com>
|
||||
* License.....: MIT
|
||||
*/
|
||||
|
||||
#ifndef EXT_XNVCTRL_H
|
||||
#define EXT_XNVCTRL_H
|
||||
|
||||
#if defined(HAVE_HWMON)
|
||||
|
||||
#include <common.h>
|
||||
|
||||
/**
|
||||
* Stuff from X11/Xlib.h
|
||||
*/
|
||||
|
||||
typedef void *(*XOPENDISPLAY) (char *);
|
||||
typedef int (*XCLOSEDISPLAY) (void *);
|
||||
|
||||
/**
|
||||
* Declarations from NVCtrl.h
|
||||
*/
|
||||
|
||||
#define NV_CTRL_TARGET_TYPE_GPU 1
|
||||
#define NV_CTRL_TARGET_TYPE_COOLER 5 /* e.g., fan */
|
||||
|
||||
#define NV_CTRL_GPU_COOLER_MANUAL_CONTROL 319 /* RW-G */
|
||||
#define NV_CTRL_GPU_COOLER_MANUAL_CONTROL_FALSE 0
|
||||
#define NV_CTRL_GPU_COOLER_MANUAL_CONTROL_TRUE 1
|
||||
|
||||
#define NV_CTRL_THERMAL_COOLER_CURRENT_LEVEL 417 /* R--C */
|
||||
#define NV_CTRL_THERMAL_COOLER_LEVEL 320 /* RW-C */
|
||||
|
||||
/*
|
||||
* NV_CTRL_GPU_CORE_THRESHOLD reflects the temperature at which the
|
||||
* GPU is throttled to prevent overheating.
|
||||
*/
|
||||
|
||||
#define NV_CTRL_GPU_CORE_THRESHOLD 61 /* R--G */
|
||||
|
||||
/**
|
||||
* hashcat stuff from here
|
||||
*/
|
||||
|
||||
typedef int HM_ADAPTER_XNVCTRL;
|
||||
|
||||
#include <shared.h>
|
||||
|
||||
#if defined(_WIN32) || defined(__WIN32__) || defined(__CYGWIN__)
|
||||
#define XNVCTRL_API_CALL __stdcall
|
||||
#else
|
||||
#define XNVCTRL_API_CALL
|
||||
#endif
|
||||
|
||||
typedef int (*XNVCTRL_API_CALL XNVCTRLQUERYTARGETATTRIBUTE) (void *, int, int, unsigned int, unsigned int, int *);
|
||||
typedef void (*XNVCTRL_API_CALL XNVCTRLSETTARGETATTRIBUTE) (void *, int, int, unsigned int, unsigned int, int);
|
||||
|
||||
typedef struct
|
||||
{
|
||||
void *dpy;
|
||||
|
||||
XNVCTRL_LIB lib_x11;
|
||||
XNVCTRL_LIB lib_xnvctrl;
|
||||
|
||||
XOPENDISPLAY XOpenDisplay;
|
||||
XCLOSEDISPLAY XCloseDisplay;
|
||||
|
||||
XNVCTRLQUERYTARGETATTRIBUTE XNVCTRLQueryTargetAttribute;
|
||||
XNVCTRLSETTARGETATTRIBUTE XNVCTRLSetTargetAttribute;
|
||||
|
||||
} hm_xnvctrl_lib_t;
|
||||
|
||||
#define XNVCTRL_PTR hm_xnvctrl_lib_t
|
||||
|
||||
int xnvctrl_init (XNVCTRL_PTR *xnvctrl);
|
||||
void xnvctrl_close (XNVCTRL_PTR *xnvctrl);
|
||||
|
||||
int hm_XNVCTRL_XOpenDisplay (XNVCTRL_PTR *xnvctrl);
|
||||
void hm_XNVCTRL_XCloseDisplay (XNVCTRL_PTR *xnvctrl);
|
||||
|
||||
int get_core_threshold (XNVCTRL_PTR *xnvctrl, int gpu, int *val);
|
||||
|
||||
int get_fan_control (XNVCTRL_PTR *xnvctrl, int gpu, int *val);
|
||||
int set_fan_control (XNVCTRL_PTR *xnvctrl, int gpu, int val);
|
||||
|
||||
int get_fan_speed_current (XNVCTRL_PTR *xnvctrl, int gpu, int *val);
|
||||
int get_fan_speed_target (XNVCTRL_PTR *xnvctrl, int gpu, int *val);
|
||||
int set_fan_speed_target (XNVCTRL_PTR *xnvctrl, int gpu, int val);
|
||||
|
||||
#endif // HAVE_HWMON
|
||||
|
||||
#endif // EXT_XNVCTRL_H
|
||||
@@ -117,6 +117,7 @@ static inline int CPU_ISSET (int num, cpu_set_t *cs) { return (cs->count & (1 <
|
||||
#include "ext_ADL.h"
|
||||
#include "ext_nvapi.h"
|
||||
#include "ext_nvml.h"
|
||||
#include "ext_xnvctrl.h"
|
||||
|
||||
/**
|
||||
* shared stuff
|
||||
@@ -1464,6 +1465,7 @@ int hm_get_memoryspeed_with_device_id (const uint device_id);
|
||||
int hm_get_corespeed_with_device_id (const uint device_id);
|
||||
int hm_get_throttle_with_device_id (const uint device_id);
|
||||
int hm_set_fanspeed_with_device_id_adl (const uint device_id, const int fanspeed, const int fanpolicy);
|
||||
int hm_set_fanspeed_with_device_id_xnvctrl (const uint device_id, const int fanspeed);
|
||||
|
||||
void hm_device_val_to_str (char *target_buf, int max_buf_size, char *suffix, int value);
|
||||
#endif // HAVE_HWMON
|
||||
|
||||
+5
-3
@@ -1099,9 +1099,10 @@ typedef struct __hc_device_param hc_device_param_t;
|
||||
#ifdef HAVE_HWMON
|
||||
typedef struct
|
||||
{
|
||||
HM_ADAPTER_ADL adl;
|
||||
HM_ADAPTER_NVML nvml;
|
||||
HM_ADAPTER_NVAPI nvapi;
|
||||
HM_ADAPTER_ADL adl;
|
||||
HM_ADAPTER_NVML nvml;
|
||||
HM_ADAPTER_NVAPI nvapi;
|
||||
HM_ADAPTER_XNVCTRL xnvctrl;
|
||||
|
||||
int od_version;
|
||||
|
||||
@@ -1177,6 +1178,7 @@ typedef struct
|
||||
void *hm_adl;
|
||||
void *hm_nvml;
|
||||
void *hm_nvapi;
|
||||
void *hm_xnvctrl;
|
||||
hm_attrs_t hm_device[DEVICES_MAX];
|
||||
#endif
|
||||
|
||||
|
||||
Reference in New Issue
Block a user