blob: 4463a66bff1ebdbc181e8728010265c39f1c18d3 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
|
#!/bin/bash
. /sbin/rogentos-functions.sh
REDETECT=$(cat /proc/cmdline | grep "gpudetect")
gpus_same() {
# $1 and $2: output lines from "lspci"
local id1 id2 # [xxxx:]xx:xx.x
local dev1 dev2 # vendor and device: xxxx:xxxx
id1=$(echo "$1" | awk '/ VGA / { print $1 }')
id2=$(echo "$2" | awk '/ VGA / { print $1 }')
if [ -z "$id1" ] || [ -z "$id2" ]; then
return 1
fi
dev1=$(lspci -s "$id1" -n | awk '{ print $3 }')
dev2=$(lspci -s "$id2" -n | awk '{ print $3 }')
[ "$dev1" = "$dev2" ]
}
if [ -e /first_time_run ] || [ ! -e /etc/gpu-detector.conf ] \
|| [ -n "${REDETECT}" ]; then
echo "Configuring GPUs and input devices for the first time"
lspci | grep ' VGA ' > /etc/gpu-detector.conf
/usr/sbin/x-setup-configuration
exit 0
fi
infostr_run="Configuring GPUs and input devices"
infostr_skip="Skipping GPUs and input devices configuration"
lspci_vga=$(lspci | grep ' VGA ')
stored_vga=$(cat /etc/gpu-detector.conf)
if [ "${lspci_vga}" != "${stored_vga}" ]; then
# Strings are different, let's do the more "heavy" and accurate comparison.
if gpus_same "${lspci_vga}" "${stored_vga}"; then
# this may happen after vendor changes its name etc.
# and PCI ID file is updated
echo "${infostr_skip}, only updating GPU information file"
else
echo "${infostr_run}"
/usr/sbin/x-setup-configuration
fi
echo "${lspci_vga}" > /etc/gpu-detector.conf
exit 0
fi
echo "${infostr_skip}"
|