fix GPU detect using old lspci
This commit is contained in:
@@ -8,26 +8,55 @@ DEST_XORG_CONF="$1"
|
||||
|
||||
[ -n "$DEST_XORG_CONF" ] || exit 2
|
||||
|
||||
pci_line="$(lspci -nnm | grep -F '[0300]' -m 1)" || exit 1
|
||||
|
||||
pci_line="$(lspci -nnm | grep -F '[0300]' | head -1)" || exit 1
|
||||
PCI_ADDR="$(echo "$pci_line" | awk '{print $1}')"
|
||||
PCI_VENDOR_ID="$(echo "$pci_line" | awk -F'[][]' '{print $4}')"
|
||||
PCI_DEVICE_ID="$(echo "$pci_line" | awk -F'[][]' '{print $6}')"
|
||||
|
||||
PCI_VENDOR_NAME="$(echo "$pci_line" | awk -F'"' '{print $4}' | sed 's/ \[[^]]*\]$//')"
|
||||
PCI_DEVICE_NAME="$(echo "$pci_line" | awk -F'"' '{print $6}' | sed 's/ \[[^]]*\]$//')"
|
||||
pci_line_raw="$(lspci -nm -s "$PCI_ADDR" | head -1)" || exit 1
|
||||
|
||||
PCI_BUS="$(echo "$PCI_ADDR" | awk -F'[:.]' '{print $1}')"
|
||||
PCI_DEV="$(echo "$PCI_ADDR" | awk -F'[:.]' '{print $2}')"
|
||||
PCI_FUNC="$(echo "$PCI_ADDR" | awk -F'[:.]' '{print $3}')"
|
||||
PCI_VENDOR_ID="$(echo "$pci_line_raw" | awk -F'"' '{print $4}')"
|
||||
PCI_DEVICE_ID="$(echo "$pci_line_raw" | awk -F'"' '{print $6}')"
|
||||
|
||||
XORG_BUSID="PCI:$((16#$PCI_BUS)):$((16#$PCI_DEV)):$PCI_FUNC"
|
||||
RAW_BUS="$(echo "$pci_line_raw" | awk '{print $1}')"
|
||||
|
||||
case "$RAW_BUS" in
|
||||
*:*:*.*)
|
||||
PCI_DOMAIN="$(echo "$RAW_BUS" | awk -F'[:.]' '{print $1}')"
|
||||
PCI_BUS="$(echo "$RAW_BUS" | awk -F'[:.]' '{print $2}')"
|
||||
PCI_DEV="$(echo "$RAW_BUS" | awk -F'[:.]' '{print $3}')"
|
||||
PCI_FUNC="$(echo "$RAW_BUS" | awk -F'[:.]' '{print $4}')"
|
||||
;;
|
||||
*:*.*)
|
||||
PCI_DOMAIN="0000"
|
||||
PCI_BUS="$(echo "$RAW_BUS" | awk -F'[:.]' '{print $1}')"
|
||||
PCI_DEV="$(echo "$RAW_BUS" | awk -F'[:.]' '{print $2}')"
|
||||
PCI_FUNC="$(echo "$RAW_BUS" | awk -F'[:.]' '{print $3}')"
|
||||
;;
|
||||
*)
|
||||
echo "ERROR: invalid PCI address format: $RAW_BUS" >&2
|
||||
exit 2
|
||||
;;
|
||||
esac
|
||||
|
||||
if [ "$PCI_DOMAIN" = "0000" ]; then
|
||||
XORG_BUSID="PCI:$((16#$PCI_BUS)):$((16#$PCI_DEV)):$PCI_FUNC"
|
||||
else
|
||||
XORG_BUSID=""
|
||||
echo "WARNING: non-zero PCI domain detected, skipping BusID on old Xorg"
|
||||
fi
|
||||
|
||||
logger -t retrodebian-xorg-autoconfig "GPU detected !"
|
||||
logger -t retrodebian-xorg-autoconfig " Line : $pci_line"
|
||||
logger -t retrodebian-xorg-autoconfig " Address : $PCI_ADDR"
|
||||
logger -t retrodebian-xorg-autoconfig " Vendor : $PCI_VENDOR_NAME [$PCI_VENDOR_ID]"
|
||||
logger -t retrodebian-xorg-autoconfig " Device : $PCI_DEVICE_NAME [$PCI_DEVICE_ID]"
|
||||
logger -t retrodebian-xorg-autoconfig " BusID : $XORG_BUSID"
|
||||
logger -t retrodebian-xorg-autoconfig " Vendor : $PCI_VENDOR_ID"
|
||||
logger -t retrodebian-xorg-autoconfig " Device : $PCI_DEVICE_ID"
|
||||
logger -t retrodebian-xorg-autoconfig " RawBus : $RAW_BUS"
|
||||
logger -t retrodebian-xorg-autoconfig " Domain : $PCI_DOMAIN"
|
||||
logger -t retrodebian-xorg-autoconfig " Bus : $PCI_BUS"
|
||||
logger -t retrodebian-xorg-autoconfig " Dev : $PCI_DEV"
|
||||
logger -t retrodebian-xorg-autoconfig " Func : $PCI_FUNC"
|
||||
logger -t retrodebian-xorg-autoconfig " XorgBusID : $XORG_BUSID"
|
||||
|
||||
|
||||
|
||||
|
||||
ROOT_DIR="/opt/retrodebian/xorg"
|
||||
@@ -47,8 +76,6 @@ for module in "${ROOT_DIR}/video-detect.d/"*.sh; do
|
||||
if PCI_ADDR="$PCI_ADDR" \
|
||||
PCI_VENDOR_ID="$PCI_VENDOR_ID" \
|
||||
PCI_DEVICE_ID="$PCI_DEVICE_ID" \
|
||||
PCI_VENDOR_NAME="$PCI_VENDOR_NAME" \
|
||||
PCI_DEVICE_NAME="$PCI_DEVICE_NAME" \
|
||||
XORG_BUSID="$XORG_BUSID" \
|
||||
"$module" "${TMP_XORG_FILE_PATH}"
|
||||
then
|
||||
@@ -63,9 +90,13 @@ for module in "${ROOT_DIR}/video-detect.d/"*.sh; do
|
||||
fi
|
||||
done
|
||||
|
||||
sed -i \
|
||||
-e "s|{DeviceBusID}|$XORG_BUSID|g" \
|
||||
"${TMP_XORG_FILE_PATH}" || exit 2
|
||||
if [ -n "$XORG_BUSID" ]; then
|
||||
sed -i -e "s|{DeviceBusID}|$XORG_BUSID|g" "${TMP_XORG_FILE_PATH}" || exit 2
|
||||
else
|
||||
sed -i \
|
||||
-e '/^[[:space:]]*BusID[[:space:]]*"{DeviceBusID}"[[:space:]]*$/d' \
|
||||
"${TMP_XORG_FILE_PATH}" || exit 2
|
||||
fi
|
||||
|
||||
[ "$MATCHED" -eq 1 ] || exit 2
|
||||
|
||||
|
||||
Reference in New Issue
Block a user