XLibre Xserver
Go to file
Shashank Sharma 82bf391c93 xf86: allow DDX driver for GPU/PCI hot-plug
The current X server infrastructure sets modesetting driver as default driver
to handle PCI-hotplug of a GPU device. This prevents the respective DDX driver
(like AMDGPU DDX driver) to take control of the card.

This patch:
- Adds a few functions and fine-tunes the GPU hotplug infrastructure to allow
  the DDX driver to be loaded, if it is configured in the X config file
  options as "hotplug-driver".
- Scans and updates the PCI device list before adding the new GPU device
  in platform, so that the association of the platform device and PCI device
  is in place (dev->pdev).
- Adds documentation of this new option

An example usage in the config file would look like:

Section "OutputClass"
        Identifier "AMDgpu"
        MatchDriver "amdgpu"
        Driver "amdgpu"
	HotplugDriver "amdgpu"
EndSection

V2:
Fixed typo in commit message (Martin)
Added R-B from Adam.
Added ACK from Alex and Martin.

V3:
Added an output class based approach for finding the DDX driver (Aaron)
Rebase

V4:
Addressed review comment from Aaron:
GPU hot-plug handling driver's name to be read from the DDX config file options.
In this way only the DDX drivers interested in handling GPU hot-plug will be
picked and loaded, for others modesetting driver will be used as usual.

V5:
Addressed review comments from Aaron:
- X config option to be listed in CamelCase.
- Indentation fix at one place.
- Code readability related optimization.

V6:
Addressed review comments from Aaron:
- Squash the doc in the same patch
- Doc formatting changes

Cc: Alex Deucher <alexander.deucher@amd.com>
Suggested-by: Aaron Plattner aplattner@nvidia.com (v3)
Acked-by: Martin Roukala martin.roukala@mupuf.org(v1)
Acked-by: Alex Deucher alexander.deucher@amd.com (v1)
Reviewed-by: Adam Jackson ajax@redhat.com(v1)
Signed-off-by: Shashank Sharma shashank.sharma@amd.com
2022-11-16 15:47:46 +00:00
.gitlab-ci ci: remove redundant slash in libxcvt repository url 2022-09-11 11:53:54 +00:00
Xext Xext: the check firstValuator ≤ 1 is duplicated in this branch 2022-04-02 18:06:30 +00:00
Xi dix: Correctly save replayed event into GrabInfoRec 2022-02-09 11:33:03 +00:00
composite Remove autotools support 2021-10-27 13:15:40 +03:00
config fdi2iclass: remove unused local variable 2022-04-02 18:06:30 +00:00
damageext Remove autotools support 2021-10-27 13:15:40 +03:00
dbe Remove autotools support 2021-10-27 13:15:40 +03:00
dix dix: Skip more code in SetRootClip for ROOT_CLIP_INPUT_ONLY 2022-09-12 10:51:05 +00:00
doc Remove autotools support 2021-10-27 13:15:40 +03:00
dri3 Remove autotools support 2021-10-27 13:15:40 +03:00
exa exa: fix "comparison is always false" 2022-04-02 18:06:30 +00:00
fb Remove autotools support 2021-10-27 13:15:40 +03:00
glamor glamor_egl: properly get FDs from multiplanar GBM BOs 2022-10-28 12:38:20 +00:00
glx glx: remove a noop assert (index is unsigned) 2022-04-02 18:06:30 +00:00
hw xf86: allow DDX driver for GPU/PCI hot-plug 2022-11-16 15:47:46 +00:00
include xf86AutoConfig: try modesetting on all platforms we build it on 2022-09-20 18:26:03 +00:00
m4 Add ax_pthread.m4 to m4/ 2016-05-29 19:20:51 -07:00
man Remove autotools support 2021-10-27 13:15:40 +03:00
mi mi: Use memcpy() instead of memmove() when buffers are known not to overlap 2022-08-29 21:10:51 +00:00
miext rootless: Dead code removal (ROOTLESS_REDISPLAY_DELAY is already defined) 2022-06-13 22:01:04 -07:00
os os: Restore buffer when writing to network 2022-09-09 16:52:43 +00:00
present present: Check for NULL to prevent crash 2022-01-19 10:23:20 -08:00
pseudoramiX Remove autotools support 2021-10-27 13:15:40 +03:00
randr randr: Correctly get physical size for screen with RandR 1.5 2022-08-09 07:17:07 +00:00
record record: Fix out of bounds access in SwapCreateRegister() 2021-12-14 15:00:00 +02:00
render render: Fix build with gcc 12 2022-01-25 16:16:30 +01:00
test test: Exclude two XTS xsetfontpath tests 2022-09-02 14:49:08 +02:00
xfixes xfixes: Fix out of bounds access in *ProcXFixesCreatePointerBarrier() 2021-12-14 15:00:01 +02:00
xkb xkb: Avoid length-check failure on empty strings. 2022-08-31 06:38:54 +00:00
.appveyor.yml appveyor: Add libxcvt build dep 2021-11-04 13:03:25 +00:00
.dir-locals.el .dir-locals.el: Add missing final newline 2019-10-01 17:05:28 +00:00
.gitignore .gitignore: Add new autotools file 'test-driver' 2014-04-21 13:41:42 -07:00
.gitlab-ci.yml ci: Move build job script to a separate file 2022-09-02 14:52:20 +02:00
.travis.yml travis: Add OSX meson build to matrix 2019-05-02 15:42:58 +00:00
COPYING modesetting: Merge modesetting's COPYING into the xserver's. 2014-09-15 12:46:02 -07:00
README.md Fix spelling/wording issues 2020-07-05 13:07:33 -07:00
meson.build Fix build on FreeBSD/powerpc* 2022-11-05 12:10:34 -07:00
meson_options.txt meson: fix types for some build options 2022-09-08 22:34:11 +00:00
xorg-server.m4 xorg-server.m4: just all cflags instead of just sdkdir 2018-09-20 20:12:24 +01:00
xorg-server.pc.in xfree86: link modules against Xorg symbols on Cygwin 2012-04-05 21:57:07 -05:00
xserver.ent.in doc: relocate xserver.ent in the package root directory 2011-05-14 11:22:26 -07:00

X Server

The X server accepts requests from client applications to create windows, which are (normally rectangular) "virtual screens" that the client program can draw into.

Windows are then composed on the actual screen by the X server (or by a separate composite manager) as directed by the window manager, which usually communicates with the user via graphical controls such as buttons and draggable titlebars and borders.

For a comprehensive overview of X Server and X Window System, consult the following article: https://en.wikipedia.org/wiki/X_server

All questions regarding this software should be directed at the Xorg mailing list:

https://lists.freedesktop.org/mailman/listinfo/xorg

The primary development code repository can be found at:

https://gitlab.freedesktop.org/xorg/xserver

For patch submission instructions, see:

https://www.x.org/wiki/Development/Documentation/SubmittingPatches

As with other projects hosted on freedesktop.org, X.Org follows its Code of Conduct, based on the Contributor Covenant. Please conduct yourself in a respectful and civilized manner when using the above mailing lists, bug trackers, etc:

https://www.freedesktop.org/wiki/CodeOfConduct