summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAnssi Hannula <anssi@mageia.org>2012-04-05 02:49:43 +0000
committerAnssi Hannula <anssi@mageia.org>2012-04-05 02:49:43 +0000
commitc61397fbd9ccea27c9879b6951cc518b664666e8 (patch)
tree7c3b8f511160a4b831a3d2aa2cdf05cc3d1072b2
parent904fa5196c05a4ec59f4bc29ed1246e7409498f0 (diff)
downloaddrakx-kbd-mouse-x11-c61397fbd9ccea27c9879b6951cc518b664666e8.tar
drakx-kbd-mouse-x11-c61397fbd9ccea27c9879b6951cc518b664666e8.tar.gz
drakx-kbd-mouse-x11-c61397fbd9ccea27c9879b6951cc518b664666e8.tar.bz2
drakx-kbd-mouse-x11-c61397fbd9ccea27c9879b6951cc518b664666e8.tar.xz
drakx-kbd-mouse-x11-c61397fbd9ccea27c9879b6951cc518b664666e8.zip
display_driver_helper: return false for --is-kms-allowed when radeon
firmware is needed but not installed
-rw-r--r--NEWS3
-rw-r--r--tools/display_driver_helper16
2 files changed, 19 insertions, 0 deletions
diff --git a/NEWS b/NEWS
index 78040f4..f278e51 100644
--- a/NEWS
+++ b/NEWS
@@ -9,6 +9,9 @@
X server in that case
o load radeon module with modeset=0 when no firmware is installed
(see mga#3466)
+ o report KMS as not allowed with --is-kms-allowed on radeon hardware
+ without radeon firmware, so that 'nokmsboot' will be used on such
+ cases
Version 0.99 - 18 December 2011
- default to 24bit with QXL driver (16 bit doesn't work)
diff --git a/tools/display_driver_helper b/tools/display_driver_helper
index 7fe63c5..b15fad6 100644
--- a/tools/display_driver_helper
+++ b/tools/display_driver_helper
@@ -330,6 +330,22 @@ is_kms_allowed() {
# Check all drivers for conflicts only.
check_xorg $driver 0 || return 1
done
+
+ # Perform full check for KMS drivers of present hardware.
+ # Needed for e.g. checking if radeon firmware is present.
+ for modalias in $(get_hw_display_modaliases); do
+ for modulename in $(/sbin/modprobe -Rq "$modalias"); do
+ for driver in $KMS_DRIVERS; do
+ if [ "$driver" = "$modulename" ]; then
+ check_driver "$modulename" "$modalias" || return 1
+ # Driver was ok but needs KMS disabled:
+ [ -n "$IS_KMS" ] || return 1
+ break
+ fi
+ done
+ done
+ done
+
return 0
}