[arch-commits] Commit in xf86-video-vesa/trunk (3 files)

Jan Steffens heftig at gemini.archlinux.org
Tue Jun 21 20:24:48 UTC 2022


    Date: Tuesday, June 21, 2022 @ 20:24:47
  Author: heftig
Revision: 449234

2.5.0-3: Prevent interference with simpledrm

Added:
  xf86-video-vesa/trunk/0001-Refuse-to-run-if-framebuffer-or-dri-devices-are-pres.patch
Modified:
  xf86-video-vesa/trunk/PKGBUILD
Deleted:
  xf86-video-vesa/trunk/revert-kernelcheck.patch

-----------------------------------------------------------------+
 0001-Refuse-to-run-if-framebuffer-or-dri-devices-are-pres.patch |   88 ++++++++++
 PKGBUILD                                                        |   11 -
 revert-kernelcheck.patch                                        |   31 ---
 3 files changed, 95 insertions(+), 35 deletions(-)

Added: 0001-Refuse-to-run-if-framebuffer-or-dri-devices-are-pres.patch
===================================================================
--- 0001-Refuse-to-run-if-framebuffer-or-dri-devices-are-pres.patch	                        (rev 0)
+++ 0001-Refuse-to-run-if-framebuffer-or-dri-devices-are-pres.patch	2022-06-21 20:24:47 UTC (rev 449234)
@@ -0,0 +1,88 @@
+From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
+From: Jocelyn Falempe <jfalempe at redhat.com>
+Date: Thu, 14 Apr 2022 14:39:37 +0200
+Subject: [PATCH] Refuse to run if framebuffer or dri devices are present
+
+The simpledrm driver, introduced in kernel 5.14,
+can replace efifb to provide the efi framebuffer.
+
+This fixes a bug on Fedora 36 (first version to use simpledrm driver):
+https://bugzilla.redhat.com/show_bug.cgi?id=2074789
+
+v2: check for framebuffer or dri devices instead of efi framebuffer interface.
+
+Reviewed-by: Adam Jackson <ajax at redhat.com>
+Reviewed-by: Javier Martinez Canillas <javierm at redhat.com>
+Signed-off-by: Jocelyn Falempe <jfalempe at redhat.com>
+---
+ src/vesa.c | 39 ++++++++++++++++++++++++++++++++++-----
+ 1 file changed, 34 insertions(+), 5 deletions(-)
+
+diff --git a/src/vesa.c b/src/vesa.c
+index b2a1922c2332..2bf18e9f278c 100644
+--- a/src/vesa.c
++++ b/src/vesa.c
+@@ -44,6 +44,7 @@
+ 
+ #include <string.h>
+ #include <unistd.h>
++#include <dirent.h>
+ #include "vesa.h"
+ 
+ /* All drivers initialising the SW cursor need this */
+@@ -439,22 +440,50 @@ VESAInitScrn(ScrnInfoPtr pScrn)
+     pScrn->FreeScreen    = VESAFreeScreen;
+ }
+ 
++#ifdef XSERVER_LIBPCIACCESS
++#ifdef __linux__
++/*
++ * check if a file exist in directory
++ * should be equivalent to a glob ${directory}/${prefix}*
++ */
++
++static Bool
++VESAFileExistsPrefix(const char *directory, const char *prefix) {
++    DIR *dir;
++    struct dirent *entry;
++    Bool found = FALSE;
++    int len = strlen(prefix);
++
++    dir = opendir(directory);
++    if (!dir)
++        return FALSE;
++
++    while ((entry = readdir(dir)) != NULL) {
++            if (strlen(entry->d_name) > len &&
++                !memcmp(entry->d_name, prefix, len)) {
++                found = TRUE;
++                break;
++            }
++        }
++    closedir(dir);
++    return found;
++}
++#endif
++
+ /*
+  * This function is called once, at the start of the first server generation to
+  * do a minimal probe for supported hardware.
+  */
+-
+-#ifdef XSERVER_LIBPCIACCESS
+ static Bool
+ VESAPciProbe(DriverPtr drv, int entity_num, struct pci_device *dev,
+ 	     intptr_t match_data)
+ {
+     ScrnInfoPtr pScrn;
+ 
+ #ifdef __linux__
+-    if (access("/sys/devices/platform/efi-framebuffer.0", F_OK) == 0 ||
+-        access("/sys/devices/platform/efifb.0", F_OK) == 0) {
+-        ErrorF("vesa: Refusing to run on UEFI\n");
++    if (VESAFileExistsPrefix("/dev", "fb") ||
++        VESAFileExistsPrefix("/dev/dri", "card")) {
++        ErrorF("vesa: Refusing to run, Framebuffer or dri device present\n");
+         return FALSE;
+     }
+ #endif

Modified: PKGBUILD
===================================================================
--- PKGBUILD	2022-06-21 19:44:28 UTC (rev 449233)
+++ PKGBUILD	2022-06-21 20:24:47 UTC (rev 449234)
@@ -2,7 +2,7 @@
 
 pkgname=xf86-video-vesa
 pkgver=2.5.0
-pkgrel=2
+pkgrel=3
 pkgdesc="X.org vesa video driver"
 arch=(x86_64)
 license=('custom')
@@ -11,17 +11,20 @@
 makedepends=('xorg-server-devel' 'X-ABI-VIDEODRV_VERSION=25.2')
 conflicts=('xorg-server<21.1.1' 'X-ABI-VIDEODRV_VERSION<25' 'X-ABI-VIDEODRV_VERSION>=26')
 groups=('xorg-drivers' 'xorg')
+options=('debug')
 source=(${url}/releases/individual/driver/${pkgname}-${pkgver}.tar.bz2{,.sig}
-        revert-kernelcheck.patch)
+        0001-Refuse-to-run-if-framebuffer-or-dri-devices-are-pres.patch)
 sha512sums=('36fd921f54f33eb25966b5f9ea1e1b3e9009965c012c8b9c676686b472111719921b80cf62dafc746058878253e21f0ef341a2ff2d650df22ca1e35e81716a8b'
             'SKIP'
-            '2357f9b30732321c774073c3e233d16ebff29aab31bcebf7c6481bd2187554e85ec8b9cd375eaa836b433dfaba4d9e9cea1dcf3659803a388ceb6699ed905923')
+            '97fe6c8953bc026d53033fb53367208d70affcc2a05d0011fb71d5f95cba2f7c46c65cd64bc74609e97515052952f1d2342b5607e1d0fe2deb9dfcdcb077f200')
 validpgpkeys=('DD38563A8A8224537D1F90E45B8A2D50A0ECD0D3') #  "Adam Jackson <ajax at nwnk.net>"
 validpgpkeys+=('995ED5C8A6138EB0961F18474C09DD83CAAA50B2') # "Adam Jackson <ajax at nwnk.net>"
 
 prepare() {
   cd ${pkgname}-${pkgver}
-  patch -Np1 -R -i "${srcdir}/revert-kernelcheck.patch"
+
+  # https://gitlab.freedesktop.org/xorg/driver/xf86-video-vesa/-/merge_requests/5
+  patch -Np1 -i ../0001-Refuse-to-run-if-framebuffer-or-dri-devices-are-pres.patch
 }
 
 build() {

Deleted: revert-kernelcheck.patch
===================================================================
--- revert-kernelcheck.patch	2022-06-21 19:44:28 UTC (rev 449233)
+++ revert-kernelcheck.patch	2022-06-21 20:24:47 UTC (rev 449234)
@@ -1,31 +0,0 @@
-From b1f7f190f9d4f2ab63d3e9ade3e7e04bb4b1f89f Mon Sep 17 00:00:00 2001
-From: Adam Jackson <ajax at redhat.com>
-Date: Wed, 08 Dec 2010 18:45:32 +0000
-Subject: Refuse to load if there's a kernel driver bound to the device
-
-Ported from the equivalent check in nv.
-
-Signed-off-by: Adam Jackson <ajax at redhat.com>
----
-diff --git a/src/vesa.c b/src/vesa.c
-index 168fde1..2523d76 100644
---- a/src/vesa.c
-+++ b/src/vesa.c
-@@ -431,8 +431,14 @@ VESAPciProbe(DriverPtr drv, int entity_num, struct pci_device *dev,
-     pScrn = xf86ConfigPciEntity(NULL, 0, entity_num, NULL, 
- 				NULL, NULL, NULL, NULL, NULL);
-     if (pScrn != NULL) {
--	VESAPtr pVesa = VESAGetRec(pScrn);
-+	VESAPtr pVesa;
- 
-+	if (pci_device_has_kernel_driver(dev)) {
-+	    ErrorF("vesa: Ignoring device with a bound kernel driver\n");
-+	    return FALSE;
-+	}
-+
-+	pVesa = VESAGetRec(pScrn);
- 	VESAInitScrn(pScrn);
- 	pVesa->pciInfo = dev;
-     }
---
-cgit v0.9.0.2-2-gbebe



More information about the arch-commits mailing list