Skip to content
GitLab
Projects
Groups
Snippets
Help
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
xserver
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
893
Issues
893
List
Boards
Labels
Service Desk
Milestones
Merge Requests
87
Merge Requests
87
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Operations
Operations
Incidents
Environments
Packages & Registries
Packages & Registries
Container Registry
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
xorg
xserver
Commits
af4c84ce
Commit
af4c84ce
authored
Sep 08, 2020
by
Olivier Fourdan
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Revert "linux: Make platform device probe less fragile"
This reverts commit
74b7427c
.
#1068
parent
39cb95e9
Pipeline
#202255
passed with stages
in 5 minutes and 37 seconds
Changes
2
Pipelines
1
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
23 additions
and
14 deletions
+23
-14
config/udev.c
config/udev.c
+5
-12
hw/xfree86/os-support/linux/lnx_platform.c
hw/xfree86/os-support/linux/lnx_platform.c
+18
-2
No files found.
config/udev.c
View file @
af4c84ce
...
...
@@ -56,7 +56,7 @@ static struct udev_monitor *udev_monitor;
#ifdef CONFIG_UDEV_KMS
static
void
config_udev_odev_setup_attribs
(
struct
udev_device
*
udev_device
,
const
char
*
path
,
const
char
*
syspath
,
config_udev_odev_setup_attribs
(
const
char
*
path
,
const
char
*
syspath
,
int
major
,
int
minor
,
config_odev_probe_proc_ptr
probe_callback
);
#endif
...
...
@@ -128,7 +128,7 @@ device_added(struct udev_device *udev_device)
LogMessage
(
X_INFO
,
"config/udev: Adding drm device (%s)
\n
"
,
path
);
config_udev_odev_setup_attribs
(
udev_device
,
path
,
syspath
,
major
(
devnum
),
config_udev_odev_setup_attribs
(
path
,
syspath
,
major
(
devnum
),
minor
(
devnum
),
NewGPUDeviceRequest
);
return
;
}
...
...
@@ -322,7 +322,7 @@ device_removed(struct udev_device *device)
LogMessage
(
X_INFO
,
"config/udev: removing GPU device %s %s
\n
"
,
syspath
,
path
);
config_udev_odev_setup_attribs
(
device
,
path
,
syspath
,
major
(
devnum
),
config_udev_odev_setup_attribs
(
path
,
syspath
,
major
(
devnum
),
minor
(
devnum
),
DeleteGPUDeviceRequest
);
/* Retry vtenter after a drm node removal */
systemd_logind_vtenter
();
...
...
@@ -465,24 +465,17 @@ config_udev_fini(void)
#ifdef CONFIG_UDEV_KMS
static
void
config_udev_odev_setup_attribs
(
struct
udev_device
*
udev_device
,
const
char
*
path
,
const
char
*
syspath
,
config_udev_odev_setup_attribs
(
const
char
*
path
,
const
char
*
syspath
,
int
major
,
int
minor
,
config_odev_probe_proc_ptr
probe_callback
)
{
struct
OdevAttributes
*
attribs
=
config_odev_allocate_attributes
();
const
char
*
value
;
attribs
->
path
=
XNFstrdup
(
path
);
attribs
->
syspath
=
XNFstrdup
(
syspath
);
attribs
->
major
=
major
;
attribs
->
minor
=
minor
;
value
=
udev_device_get_property_value
(
udev_device
,
"ID_PATH"
);
if
(
value
&&
!
strncmp
(
value
,
"pci-"
,
4
))
{
attribs
->
busid
=
XNFstrdup
(
value
);
attribs
->
busid
[
3
]
=
':'
;
}
/* ownership of attribs is passed to probe layer */
probe_callback
(
attribs
);
}
...
...
@@ -523,7 +516,7 @@ config_udev_odev_probe(config_odev_probe_proc_ptr probe_callback)
else
if
(
!
check_seat
(
udev_device
))
goto
no_probe
;
config_udev_odev_setup_attribs
(
udev_device
,
path
,
syspath
,
major
(
devnum
),
config_udev_odev_setup_attribs
(
path
,
syspath
,
major
(
devnum
),
minor
(
devnum
),
probe_callback
);
no_probe:
udev_device_unref
(
udev_device
);
...
...
hw/xfree86/os-support/linux/lnx_platform.c
View file @
af4c84ce
...
...
@@ -23,13 +23,13 @@
static
Bool
get_drm_info
(
struct
OdevAttributes
*
attribs
,
char
*
path
,
int
delayed_index
)
{
drmSetVersion
sv
;
drmVersionPtr
v
;
char
*
buf
;
int
fd
;
int
err
=
0
;
Bool
paused
,
server_fd
=
FALSE
;
LogMessage
(
X_INFO
,
"Platform probe for %s
\n
"
,
attribs
->
syspath
);
fd
=
systemd_logind_take_fd
(
attribs
->
major
,
attribs
->
minor
,
path
,
&
paused
);
if
(
fd
!=
-
1
)
{
if
(
paused
)
{
...
...
@@ -48,6 +48,18 @@ get_drm_info(struct OdevAttributes *attribs, char *path, int delayed_index)
if
(
fd
==
-
1
)
return
FALSE
;
sv
.
drm_di_major
=
1
;
sv
.
drm_di_minor
=
4
;
sv
.
drm_dd_major
=
-
1
;
/* Don't care */
sv
.
drm_dd_minor
=
-
1
;
/* Don't care */
err
=
drmSetInterfaceVersion
(
fd
,
&
sv
);
if
(
err
)
{
xf86Msg
(
X_ERROR
,
"%s: failed to set DRM interface version 1.4: %s
\n
"
,
path
,
strerror
(
-
err
));
goto
out
;
}
/* for a delayed probe we've already added the device */
if
(
delayed_index
==
-
1
)
{
xf86_add_platform_device
(
attribs
,
FALSE
);
...
...
@@ -57,6 +69,10 @@ get_drm_info(struct OdevAttributes *attribs, char *path, int delayed_index)
if
(
server_fd
)
xf86_platform_devices
[
delayed_index
].
flags
|=
XF86_PDEV_SERVER_FD
;
buf
=
drmGetBusid
(
fd
);
xf86_platform_odev_attributes
(
delayed_index
)
->
busid
=
XNFstrdup
(
buf
);
drmFreeBusid
(
buf
);
v
=
drmGetVersion
(
fd
);
if
(
!
v
)
{
xf86Msg
(
X_ERROR
,
"%s: failed to query DRM version
\n
"
,
path
);
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment