Message ID | 20170609065757.9736-1-dja@axtens.net (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Hi Daniel, On 9 June 2017 at 07:57, Daniel Axtens <dja@axtens.net> wrote: > Currently, calling drmGetBusid from libdrm on a hibmc VGA > card returns a string like "0007:a1:00.0". > > The busid reported by most cards begins with "pci:". For > example, on an amd64 system, a VGA card reported > "pci:0000:00:02.0". > > The missing "pci:" prefix confuses Xorg and leads to crashes > and other misbehaviour.[0] > > Use the standard helper from the drm core to set the busid to > include the "pci:" prefix. This is done by many other drivers. > > With this patch, Xorg can be run successfully. > > [0]: https://bugs.launchpad.net/ubuntu/+source/xorg/+bug/1691991 > > Cc: Xinliang Liu <z.liuxinliang@hisilicon.com> > Cc: Rongrong Zou <zourongrong@gmail.com> > Signed-off-by: Daniel Axtens <dja@axtens.net> > --- > drivers/gpu/drm/hisilicon/hibmc/hibmc_drm_drv.c | 1 + > 1 file changed, 1 insertion(+) > > diff --git a/drivers/gpu/drm/hisilicon/hibmc/hibmc_drm_drv.c b/drivers/gpu/drm/hisilicon/hibmc/hibmc_drm_drv.c > index 2ffdbf9801bd..9663a633897a 100644 > --- a/drivers/gpu/drm/hisilicon/hibmc/hibmc_drm_drv.c > +++ b/drivers/gpu/drm/hisilicon/hibmc/hibmc_drm_drv.c > @@ -69,6 +69,7 @@ static struct drm_driver hibmc_driver = { > .dumb_map_offset = hibmc_dumb_mmap_offset, > .dumb_destroy = drm_gem_dumb_destroy, > .irq_handler = hibmc_drm_interrupt, > + .set_busid = drm_pci_set_busid, Daniel V has been working very hard on cleaning all the set_busid "chaos" and even has some patches which remove it completely [1]. While your patch is correct, it would be nicer if we can remove the code so that nobody else gets bitten ;-) Can you be so kind and re-spin your patch with the cleanups (2-4) on top? IIRC your fix should be CC kernel-stable. Thanks Emil [1] https://lists.freedesktop.org/archives/dri-devel/2017-May/142670.html
Hi Emil, > Daniel V has been working very hard on cleaning all the set_busid > "chaos" and even has some patches which remove it completely [1]. > While your patch is correct, it would be nicer if we can remove the > code so that nobody else gets bitten ;-) > > Can you be so kind and re-spin your patch with the cleanups (2-4) on top? > IIRC your fix should be CC kernel-stable. Thanks for pointing me towards that series. That series (in particular patch 4) actually fixes the bug I was trying to fix, so it renders my patch unnecessary. However, I notice that series has attracted a lot of discussion: any ideas when is it likely to land? I just want to avoid the situation where we don't merge my fix because of Daniel's series and Daniel's series also doesn't land for another few releases! Regards, Daniel > > Thanks > Emil > > [1] https://lists.freedesktop.org/archives/dri-devel/2017-May/142670.html
On Tue, Jun 13, 2017 at 10:23:34AM +0100, Emil Velikov wrote: > Hi Daniel, > > On 9 June 2017 at 07:57, Daniel Axtens <dja@axtens.net> wrote: > > Currently, calling drmGetBusid from libdrm on a hibmc VGA > > card returns a string like "0007:a1:00.0". > > > > The busid reported by most cards begins with "pci:". For > > example, on an amd64 system, a VGA card reported > > "pci:0000:00:02.0". > > > > The missing "pci:" prefix confuses Xorg and leads to crashes > > and other misbehaviour.[0] > > > > Use the standard helper from the drm core to set the busid to > > include the "pci:" prefix. This is done by many other drivers. > > > > With this patch, Xorg can be run successfully. > > > > [0]: https://bugs.launchpad.net/ubuntu/+source/xorg/+bug/1691991 > > > > Cc: Xinliang Liu <z.liuxinliang@hisilicon.com> > > Cc: Rongrong Zou <zourongrong@gmail.com> > > Signed-off-by: Daniel Axtens <dja@axtens.net> > > --- > > drivers/gpu/drm/hisilicon/hibmc/hibmc_drm_drv.c | 1 + > > 1 file changed, 1 insertion(+) > > > > diff --git a/drivers/gpu/drm/hisilicon/hibmc/hibmc_drm_drv.c b/drivers/gpu/drm/hisilicon/hibmc/hibmc_drm_drv.c > > index 2ffdbf9801bd..9663a633897a 100644 > > --- a/drivers/gpu/drm/hisilicon/hibmc/hibmc_drm_drv.c > > +++ b/drivers/gpu/drm/hisilicon/hibmc/hibmc_drm_drv.c > > @@ -69,6 +69,7 @@ static struct drm_driver hibmc_driver = { > > .dumb_map_offset = hibmc_dumb_mmap_offset, > > .dumb_destroy = drm_gem_dumb_destroy, > > .irq_handler = hibmc_drm_interrupt, > > + .set_busid = drm_pci_set_busid, > > Daniel V has been working very hard on cleaning all the set_busid > "chaos" and even has some patches which remove it completely [1]. > While your patch is correct, it would be nicer if we can remove the > code so that nobody else gets bitten ;-) Yeah I just applied my patches to nuke the set_busid callback. Pls drop this one. If you want this backported, I guess we could cherry-pick it over with a cc: stable (it's likely only going to reach 4.14 as-is). -Daniel > > Can you be so kind and re-spin your patch with the cleanups (2-4) on top? > IIRC your fix should be CC kernel-stable. > > Thanks > Emil > > [1] https://lists.freedesktop.org/archives/dri-devel/2017-May/142670.html
diff --git a/drivers/gpu/drm/hisilicon/hibmc/hibmc_drm_drv.c b/drivers/gpu/drm/hisilicon/hibmc/hibmc_drm_drv.c index 2ffdbf9801bd..9663a633897a 100644 --- a/drivers/gpu/drm/hisilicon/hibmc/hibmc_drm_drv.c +++ b/drivers/gpu/drm/hisilicon/hibmc/hibmc_drm_drv.c @@ -69,6 +69,7 @@ static struct drm_driver hibmc_driver = { .dumb_map_offset = hibmc_dumb_mmap_offset, .dumb_destroy = drm_gem_dumb_destroy, .irq_handler = hibmc_drm_interrupt, + .set_busid = drm_pci_set_busid, }; static int __maybe_unused hibmc_pm_suspend(struct device *dev)
Currently, calling drmGetBusid from libdrm on a hibmc VGA card returns a string like "0007:a1:00.0". The busid reported by most cards begins with "pci:". For example, on an amd64 system, a VGA card reported "pci:0000:00:02.0". The missing "pci:" prefix confuses Xorg and leads to crashes and other misbehaviour.[0] Use the standard helper from the drm core to set the busid to include the "pci:" prefix. This is done by many other drivers. With this patch, Xorg can be run successfully. [0]: https://bugs.launchpad.net/ubuntu/+source/xorg/+bug/1691991 Cc: Xinliang Liu <z.liuxinliang@hisilicon.com> Cc: Rongrong Zou <zourongrong@gmail.com> Signed-off-by: Daniel Axtens <dja@axtens.net> --- drivers/gpu/drm/hisilicon/hibmc/hibmc_drm_drv.c | 1 + 1 file changed, 1 insertion(+)