351 Commits

Author SHA1 Message Date
Christian Kellner
41b85c245d Rewrite strncpy to silence compiler warning
Instead of initializing the char array to 0 and writing N-1 bytes,
write N-1 bytes and set the last byte manually to 0. This seems
to make gcc happy.
2019-03-28 17:14:00 +01:00
Christian Kellner
34d86d30b1 Use additional compiler warnings, if supported
Check a list of well-known compiler warnings and use the one that
are supported by the current compiler.
2019-03-28 11:40:40 +00:00
Christian Kellner
4a577b8c7c Rename local variable to un-shadow the global bus
The local variable 'bus' was shadowing the global 'bus' variable;
to not confuse the two, rename the local one. Also unref the local
bus, i.e. fix a small memory leak.
2019-03-28 11:40:40 +00:00
Christian Kellner
c34186be07 Mark game_mode_context_loop as 'noreturn'
The function contains the main-loop of the daemon and will indeed
never return.
2019-03-28 11:40:40 +00:00
Christian Kellner
d12ab6830f No old-style function definitions.
Specify void as argument type for functions that don't take args.
2019-03-28 11:40:40 +00:00
Christian Kellner
45ba5bc4c4 Use matching signedness in format strings
Either cast the variable or change the format string to match the
signedness.
2019-03-28 11:40:40 +00:00
Christian Kellner
0eb59fc848 Use minimal number of characters for strncmp
MAX_GOVERNOR_LENGTH is defined as PATH_MAX + 1, so when comparing
two variable, each of once size, use the smaller one, i.e. PATH_MAX.
Assert statically that MAX_GOVERNOR_LENGTH is larger then PATH_MAX
so copying a string to a MAX_GOVERNOR_LENGTH sized variable from a
PATH_MAX size variable will not truncate the string.
2019-03-28 11:40:40 +00:00
Christian Kellner
bbde1d0357 Ensure strncpy'ed strings are all null terminated
If there is no null byte among the first n bytes of the source the
resulting string will not be properly null terminated.
Ensure that all strings that are copied via strncpy are properly
terminated copy "sizeof (dest) - 1" bytes and manually terminate
the string in the cases the array was not initialized.

Example compiler warning:
  ../daemon/gamemode-tests.c: In function ‘run_cpu_governor_tests’:
  ../daemon/gamemode-tests.c:326:4: warning: ‘strncpy’ specified bound
      256 equals destination size [-Wstringop-truncation]
    strncpy(defaultgov, currentgov, CONFIG_VALUE_MAX);
    ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2019-03-28 11:40:40 +00:00
Alex Smith
db4dd87e22 Add Debian to the list of distros which have packages available 2019-03-25 16:49:25 +00:00
Alex Smith
c0032efc4f Make gamemoderun.in executable (#115)
The install_mode option was only added in Meson 0.47. In versions prior
to that, it will base the mode on the permissions of the source file,
so set this executable to be compatible with older versions.

See #115.
2019-03-25 16:40:54 +00:00
Alex Smith
5516b547ca Merge pull request #121 from lilianmoraru/master
Build with optimizations
2019-03-25 16:16:25 +00:00
Lilian A. Moraru
c0ffecae43 Build with optimizations 2019-03-19 10:38:49 +02:00
Alex Smith
95c365076f Update to version 1.4-dev post-release 2019-03-15 16:11:57 +00:00
Alex Smith
ea7d1c13a3 Update to version 1.3 1.3 2019-03-15 13:39:00 +00:00
Alex Smith
10a31f8dec Update copyright years to 2019 2019-03-14 16:59:30 +00:00
Alex Smith
6b7f6c12c2 Various README fixes/adjustments 2019-03-14 16:51:29 +00:00
Alex Smith
0f680f2a83 clang-format fix 2019-03-14 16:30:52 +00:00
Alex Smith
5ee2f3c06a Adjust reaper_freq to match the default value set in code 2019-03-14 15:58:28 +00:00
Alex Smith
23bf1e6624 Minor adjustments 2019-03-14 15:47:02 +00:00
Alex Smith
f163d4847b Update changelog, convert to Markdown 2019-03-14 15:43:20 +00:00
Alex Smith
4306660918 Adjust renice documentation 2019-03-14 15:11:10 +00:00
Alex Smith
2ab46df4c3 Disable softrealtime (SCHED_ISO) and renice by default
SCHED_ISO is not supported by upstream kernels, so don't try to use this by
default since for most users it will result in an error log that trying to
set the scheduling policy fails.

Without extra system configuration, we will also not have permission to renice
processes by default, so out of the box doing this will fail as well.

Users that wish to use these features can enable them from the config once
they have configured their system appropriately.
2019-03-14 15:00:49 +00:00
Alex Smith
746b463783 Merge pull request #114 from mdiluz/fix-issue-113
Try and make an educated guess at the correct nvidia gpu index
2019-03-12 17:08:37 +00:00
Marc Di Luzio
1482a2b39e Get the gpu index for both get and set (thanks @rezzafr33!) 2019-03-12 08:52:58 +00:00
Marc Di Luzio
c1d06f2ad5 Try and make an educated guess at the correct nvidia gpu index
This should hopefully fix issue #113, where the user was in the common situation of having an intel and an nvidia GPU, at card0 and card1 respectively, but the nvidia gpu was [gpu:0] according to the driver
2019-03-11 21:58:51 +00:00
Alex Smith
0c08359005 Merge pull request #112 from mdiluz/automatic-gpu-info
Clean up NV optimization config
2019-03-11 17:14:41 +00:00
Marc Di Luzio
dc1258d750 Automatically adjust the nvidia gpu index
The drm device ID doesn't match up with the pci device as expected, spotted by issue #113

	I can't test this myself just yet, will need data from the user in question to verify PCIDevice is the right value
2019-03-11 16:27:49 +00:00
Marc Di Luzio
fec32ac53d Remove the nv_perf_level config option and figure it out programmatically
This also fixes the instances in testing where we don't have the nv overclock in use, but we do have the mode set

	Solves issues explaining the what the perf_level actually meant, and future proofs for any PR that wants to set individual perf levels
2019-03-10 15:19:34 +00:00
Marc Di Luzio
873d0a224b Remove passing the vendor to gpuclockctl 2019-03-10 15:19:34 +00:00
Marc Di Luzio
5e5cae31d3 Explain a little more about nv_perf_level
We think this was a little confusing, so explain some more.
2019-03-10 12:38:31 +00:00
Marc Di Luzio
eb9bb0cdf7 Add notes on values for nv_powermizer_mode
Instead of just suggesting values
2019-03-10 11:54:54 +00:00
Alex Smith
c49cd45e01 Ensure that we null terminate the process output buffer in run_external_process 2019-03-10 10:51:15 +00:00
Alex Smith
26ec6ad2b4 Document script_timeout 2019-03-10 10:49:06 +00:00
Alex Smith
8bb7c901de Fix typo (default_timout -> default_timeout) 2019-03-10 10:47:17 +00:00
Marc Di Luzio
7fb1950357 Fix formatting 2019-03-10 10:32:08 +00:00
Marc Di Luzio
54d7d3f259 Allow nv_perl_level and nv_powermizer_mode to be set independently 2019-03-10 10:32:08 +00:00
Marc Di Luzio
834a18aab4 Implement nv_powermizer_mode option to allow setting the Nvidia powermizer mode 2019-03-10 10:32:08 +00:00
Marc Di Luzio
9ade4481c3 Change AMD overclocking to simply be setting the power_dpm_force_performance_level file for now
This covers the MVP for now, and simply allows pinning the power level to "high"

	Full overclocking set up is somewhat more complicated, and it'll be better to implement that at the same time as the same for Nvidia, where we're currently only really setting the top end power level
2019-03-10 10:32:08 +00:00
Marc Di Luzio
20efaaa33f Rename the core and mem stats to nv_ prefix
These will be NV only going forward, as AMD needs a different chunk of work
2019-03-10 10:32:08 +00:00
Alex Smith
cc9f78fe0a Merge pull request #108 from mdiluz/bug-and-feature-bash
Assorted small bug fixes
2019-03-10 10:30:25 +00:00
Alex Smith
058efe8cce Use Meson's warning_level option
Set this to 3, and then remove extra warning flags that are already included
by enabling this (#107).
2019-03-10 10:20:29 +00:00
Alex Smith
433370e3fa Add details of Gentoo ebuild for stable release
As suggested in #110.
2019-03-10 10:10:00 +00:00
Marc Di Luzio
6a240d550e Extend the sleep for the child gamemode in tests 2019-03-08 12:32:08 +00:00
Marc Di Luzio
0efd65fc78 set the default gov not the desired gov in tests 2019-03-08 12:14:01 +00:00
Marc Di Luzio
b6da948ca2 Add the output to the log for external processes that have failed 2019-03-07 17:51:57 +00:00
Marc Di Luzio
c215626ccd Add "script_timeout" config value to control if a user wants to extend the script timeout before kill value 2019-03-07 17:51:57 +00:00
Marc Di Luzio
53d1700a68 Add the timout to the call signature of run_external_process 2019-03-07 17:51:57 +00:00
Marc Di Luzio
4578af47ba Combine the two run_external_process functions so they both have the same timeout protection 2019-03-07 17:51:57 +00:00
Marc Di Luzio
e9ff2cbb10 Implement a timeout in run_external_process 2019-03-07 17:51:57 +00:00
Marc Di Luzio
1665447350 Use run_external_process for the script execution
This protects the main process against script exection and allows more detailed error handling
2019-03-07 17:51:57 +00:00