All of lore.kernel.org
 help / color / mirror / Atom feed
* Regression: 6eb0233ec2d0 ("usb: don't inherity DMA properties for USB devices")
@ 2021-02-18 14:56 ` Thomas Zimmermann
  0 siblings, 0 replies; 6+ messages in thread
From: Thomas Zimmermann @ 2021-02-18 14:56 UTC (permalink / raw)
  To: hch, Greg KH, Daniel Vetter, David Airlie
  Cc: dri-devel, USB list, Linux Kernel Mailing List


[-- Attachment #1.1: Type: text/plain, Size: 4893 bytes --]

Hi,

commit 6eb0233ec2d0 ("usb: don't inherity DMA properties for USB 
devices") creates a regression with the udl driver. udl is a DRM driver 
for USB-based DisplayLink adapters.

It's no long possible to join/mirror displays in X. STR and an error log 
is shown below.

STR:
	* use internal GFX card (radeon, i915)
	* attach udl adapter
	* start Gnome/x11 via startx
	* try to configure joined/mirrored screens

Expected Result:
	* both adapters show the Gnome desktop

Actual result:
	* the udl-driven display remains dark
	* error in the dmesg log

I only have udl devices, but I expect that other DRM USB adapters are 
also affected.

How to fix this?

Best regards
Thomas


[   60.050199] ------------[ cut here ]------------
[   60.055092] WARNING: CPU: 0 PID: 1403 at kernel/dma/mapping.c:190 
dma_map_sg_attrs+0x8f/0xc0
[   60.064331] Modules linked in: af_packet(E) rfkill(E) dmi_sysfs(E) 
intel_rapl_msr(E) intel_rapl_common(E) snd_hda_codec_realtek(E) 
snd_hda_codec_generic(E) ledtrig_audio(E) snd_hda_codec_hdmi(E) 
x86_pkg_temp_thermal(E) intel_powerclam)
[   60.064801]  wmi(E) video(E) btrfs(E) blake2b_generic(E) libcrc32c(E) 
crc32c_intel(E) xor(E) raid6_pq(E) sg(E) dm_multipath(E) dm_mod(E) 
scsi_dh_rdac(E) scsi_dh_emc(E) scsi_dh_alua(E) msr(E) efivarfs(E)
[   60.170778] CPU: 0 PID: 1403 Comm: Xorg.bin Tainted: G            E 
    5.11.0-rc5-1-default+ #747
[   60.179841] Hardware name: Dell Inc. OptiPlex 9020/0N4YC8, BIOS A24 
10/24/2018
[   60.187145] RIP: 0010:dma_map_sg_attrs+0x8f/0xc0
[   60.191822] Code: 4d 85 ff 75 2b 49 89 d8 44 89 e1 44 89 f2 4c 89 ee 
48 89 ef e8 62 30 00 00 85 c0 78 36 5b 5d 41 5c 41 5d 41 5e 41 5f c3 0f 
0b <0f> 0b 31 c0 eb ed 49 8d 7f 50 e8 72 f5 2a 00 49 8b 47 50 49 89 d8
[   60.210770] RSP: 0018:ffffc90001d6fc18 EFLAGS: 00010246
[   60.216062] RAX: 0000000000000000 RBX: 0000000000000020 RCX: 
ffffffffb31e677b
[   60.223274] RDX: dffffc0000000000 RSI: ffff888212c10600 RDI: 
ffff8881b08a9488
[   60.230501] RBP: ffff8881b08a9030 R08: 0000000000000020 R09: 
ffff888212c10600
[   60.237710] R10: ffffed10425820df R11: 0000000000000001 R12: 
0000000000000000
[   60.244939] R13: ffff888212c10600 R14: 0000000000000008 R15: 
0000000000000000
[   60.252155] FS:  00007f08ac2b2f00(0000) GS:ffff8887cbe00000(0000) 
knlGS:0000000000000000
[   60.260333] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
[   60.266150] CR2: 000055831c899be8 CR3: 000000015372e006 CR4: 
00000000001706f0
[   60.273369] Call Trace:
[   60.275845]  drm_gem_map_dma_buf+0xb4/0x120
[   60.280089]  dma_buf_map_attachment+0x15d/0x1e0
[   60.284688]  drm_gem_prime_import_dev.part.0+0x5d/0x140
[   60.289984]  drm_gem_prime_fd_to_handle+0x213/0x280
[   60.294931]  ? drm_prime_destroy_file_private+0x30/0x30
[   60.300224]  drm_ioctl_kernel+0x131/0x180
[   60.304291]  ? drm_setversion+0x230/0x230
[   60.308366]  ? drm_prime_destroy_file_private+0x30/0x30
[   60.313659]  drm_ioctl+0x2f1/0x500
[   60.317118]  ? drm_version+0x150/0x150
[   60.320903]  ? lock_downgrade+0xa0/0xa0
[   60.324806]  ? do_vfs_ioctl+0x5f4/0x680
[   60.328694]  ? __fget_files+0x13e/0x210
[   60.332591]  ? ioctl_fiemap.isra.0+0x1a0/0x1a0
[   60.337102]  ? __fget_files+0x15d/0x210
[   60.340990]  __x64_sys_ioctl+0xb9/0xf0
[   60.344795]  do_syscall_64+0x33/0x80
[   60.348427]  entry_SYSCALL_64_after_hwframe+0x44/0xa9
[   60.353542] RIP: 0033:0x7f08ac7b53cb
[   60.357168] Code: 89 d8 49 8d 3c 1c 48 f7 d8 49 39 c4 72 b5 e8 1c ff 
ff ff 85 c0 78 ba 4c 89 e0 5b 5d 41 5c c3 f3 0f 1e fa b8 10 00 00 00 0f 
05 <48> 3d 01 f0 ff ff 73 01 c3 48 8b 0d 75 ba 0c 00 f7 d8 64 89 01 48
[   60.376108] RSP: 002b:00007ffeabc89fc8 EFLAGS: 00000246 ORIG_RAX: 
0000000000000010
[   60.383758] RAX: ffffffffffffffda RBX: 00007ffeabc8a00c RCX: 
00007f08ac7b53cb
[   60.390970] RDX: 00007ffeabc8a00c RSI: 00000000c00c642e RDI: 
000000000000000d
[   60.398221] RBP: 00000000c00c642e R08: 000055831c691d00 R09: 
000055831b2ec010
[   60.405446] R10: 00007f08acf6ada0 R11: 0000000000000246 R12: 
000055831c691d00
[   60.412667] R13: 000000000000000d R14: 00000000007e9000 R15: 
0000000000000000
[   60.419903] irq event stamp: 672893
[   60.423441] hardirqs last  enabled at (672913): [<ffffffffb31b796d>] 
console_unlock+0x44d/0x500
[   60.432230] hardirqs last disabled at (672922): [<ffffffffb31b7963>] 
console_unlock+0x443/0x500
[   60.441021] softirqs last  enabled at (672940): [<ffffffffb46003dd>] 
__do_softirq+0x3dd/0x554
[   60.449634] softirqs last disabled at (672931): [<ffffffffb44010f2>] 
asm_call_irq_on_stack+0x12/0x20
[   60.458871] ---[ end trace f2f88696eb17806c ]---



-- 
Thomas Zimmermann
Graphics Driver Developer
SUSE Software Solutions Germany GmbH
Maxfeldstr. 5, 90409 Nürnberg, Germany
(HRB 36809, AG Nürnberg)
Geschäftsführer: Felix Imendörffer


[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 840 bytes --]

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Regression: 6eb0233ec2d0 ("usb: don't inherity DMA properties for USB devices")
@ 2021-02-18 14:56 ` Thomas Zimmermann
  0 siblings, 0 replies; 6+ messages in thread
From: Thomas Zimmermann @ 2021-02-18 14:56 UTC (permalink / raw)
  To: hch, Greg KH, Daniel Vetter, David Airlie
  Cc: USB list, Linux Kernel Mailing List, dri-devel


[-- Attachment #1.1.1: Type: text/plain, Size: 4893 bytes --]

Hi,

commit 6eb0233ec2d0 ("usb: don't inherity DMA properties for USB 
devices") creates a regression with the udl driver. udl is a DRM driver 
for USB-based DisplayLink adapters.

It's no long possible to join/mirror displays in X. STR and an error log 
is shown below.

STR:
	* use internal GFX card (radeon, i915)
	* attach udl adapter
	* start Gnome/x11 via startx
	* try to configure joined/mirrored screens

Expected Result:
	* both adapters show the Gnome desktop

Actual result:
	* the udl-driven display remains dark
	* error in the dmesg log

I only have udl devices, but I expect that other DRM USB adapters are 
also affected.

How to fix this?

Best regards
Thomas


[   60.050199] ------------[ cut here ]------------
[   60.055092] WARNING: CPU: 0 PID: 1403 at kernel/dma/mapping.c:190 
dma_map_sg_attrs+0x8f/0xc0
[   60.064331] Modules linked in: af_packet(E) rfkill(E) dmi_sysfs(E) 
intel_rapl_msr(E) intel_rapl_common(E) snd_hda_codec_realtek(E) 
snd_hda_codec_generic(E) ledtrig_audio(E) snd_hda_codec_hdmi(E) 
x86_pkg_temp_thermal(E) intel_powerclam)
[   60.064801]  wmi(E) video(E) btrfs(E) blake2b_generic(E) libcrc32c(E) 
crc32c_intel(E) xor(E) raid6_pq(E) sg(E) dm_multipath(E) dm_mod(E) 
scsi_dh_rdac(E) scsi_dh_emc(E) scsi_dh_alua(E) msr(E) efivarfs(E)
[   60.170778] CPU: 0 PID: 1403 Comm: Xorg.bin Tainted: G            E 
    5.11.0-rc5-1-default+ #747
[   60.179841] Hardware name: Dell Inc. OptiPlex 9020/0N4YC8, BIOS A24 
10/24/2018
[   60.187145] RIP: 0010:dma_map_sg_attrs+0x8f/0xc0
[   60.191822] Code: 4d 85 ff 75 2b 49 89 d8 44 89 e1 44 89 f2 4c 89 ee 
48 89 ef e8 62 30 00 00 85 c0 78 36 5b 5d 41 5c 41 5d 41 5e 41 5f c3 0f 
0b <0f> 0b 31 c0 eb ed 49 8d 7f 50 e8 72 f5 2a 00 49 8b 47 50 49 89 d8
[   60.210770] RSP: 0018:ffffc90001d6fc18 EFLAGS: 00010246
[   60.216062] RAX: 0000000000000000 RBX: 0000000000000020 RCX: 
ffffffffb31e677b
[   60.223274] RDX: dffffc0000000000 RSI: ffff888212c10600 RDI: 
ffff8881b08a9488
[   60.230501] RBP: ffff8881b08a9030 R08: 0000000000000020 R09: 
ffff888212c10600
[   60.237710] R10: ffffed10425820df R11: 0000000000000001 R12: 
0000000000000000
[   60.244939] R13: ffff888212c10600 R14: 0000000000000008 R15: 
0000000000000000
[   60.252155] FS:  00007f08ac2b2f00(0000) GS:ffff8887cbe00000(0000) 
knlGS:0000000000000000
[   60.260333] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
[   60.266150] CR2: 000055831c899be8 CR3: 000000015372e006 CR4: 
00000000001706f0
[   60.273369] Call Trace:
[   60.275845]  drm_gem_map_dma_buf+0xb4/0x120
[   60.280089]  dma_buf_map_attachment+0x15d/0x1e0
[   60.284688]  drm_gem_prime_import_dev.part.0+0x5d/0x140
[   60.289984]  drm_gem_prime_fd_to_handle+0x213/0x280
[   60.294931]  ? drm_prime_destroy_file_private+0x30/0x30
[   60.300224]  drm_ioctl_kernel+0x131/0x180
[   60.304291]  ? drm_setversion+0x230/0x230
[   60.308366]  ? drm_prime_destroy_file_private+0x30/0x30
[   60.313659]  drm_ioctl+0x2f1/0x500
[   60.317118]  ? drm_version+0x150/0x150
[   60.320903]  ? lock_downgrade+0xa0/0xa0
[   60.324806]  ? do_vfs_ioctl+0x5f4/0x680
[   60.328694]  ? __fget_files+0x13e/0x210
[   60.332591]  ? ioctl_fiemap.isra.0+0x1a0/0x1a0
[   60.337102]  ? __fget_files+0x15d/0x210
[   60.340990]  __x64_sys_ioctl+0xb9/0xf0
[   60.344795]  do_syscall_64+0x33/0x80
[   60.348427]  entry_SYSCALL_64_after_hwframe+0x44/0xa9
[   60.353542] RIP: 0033:0x7f08ac7b53cb
[   60.357168] Code: 89 d8 49 8d 3c 1c 48 f7 d8 49 39 c4 72 b5 e8 1c ff 
ff ff 85 c0 78 ba 4c 89 e0 5b 5d 41 5c c3 f3 0f 1e fa b8 10 00 00 00 0f 
05 <48> 3d 01 f0 ff ff 73 01 c3 48 8b 0d 75 ba 0c 00 f7 d8 64 89 01 48
[   60.376108] RSP: 002b:00007ffeabc89fc8 EFLAGS: 00000246 ORIG_RAX: 
0000000000000010
[   60.383758] RAX: ffffffffffffffda RBX: 00007ffeabc8a00c RCX: 
00007f08ac7b53cb
[   60.390970] RDX: 00007ffeabc8a00c RSI: 00000000c00c642e RDI: 
000000000000000d
[   60.398221] RBP: 00000000c00c642e R08: 000055831c691d00 R09: 
000055831b2ec010
[   60.405446] R10: 00007f08acf6ada0 R11: 0000000000000246 R12: 
000055831c691d00
[   60.412667] R13: 000000000000000d R14: 00000000007e9000 R15: 
0000000000000000
[   60.419903] irq event stamp: 672893
[   60.423441] hardirqs last  enabled at (672913): [<ffffffffb31b796d>] 
console_unlock+0x44d/0x500
[   60.432230] hardirqs last disabled at (672922): [<ffffffffb31b7963>] 
console_unlock+0x443/0x500
[   60.441021] softirqs last  enabled at (672940): [<ffffffffb46003dd>] 
__do_softirq+0x3dd/0x554
[   60.449634] softirqs last disabled at (672931): [<ffffffffb44010f2>] 
asm_call_irq_on_stack+0x12/0x20
[   60.458871] ---[ end trace f2f88696eb17806c ]---



-- 
Thomas Zimmermann
Graphics Driver Developer
SUSE Software Solutions Germany GmbH
Maxfeldstr. 5, 90409 Nürnberg, Germany
(HRB 36809, AG Nürnberg)
Geschäftsführer: Felix Imendörffer


[-- Attachment #1.2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 840 bytes --]

[-- Attachment #2: Type: text/plain, Size: 160 bytes --]

_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: Regression: 6eb0233ec2d0 ("usb: don't inherity DMA properties for USB devices")
  2021-02-18 14:56 ` Thomas Zimmermann
  (?)
@ 2021-02-18 15:07 ` Christoph Hellwig
  2021-02-18 15:21     ` Thomas Zimmermann
  -1 siblings, 1 reply; 6+ messages in thread
From: Christoph Hellwig @ 2021-02-18 15:07 UTC (permalink / raw)
  To: Thomas Zimmermann
  Cc: hch, Greg KH, Daniel Vetter, David Airlie, dri-devel, USB list,
	Linux Kernel Mailing List

On Thu, Feb 18, 2021 at 03:56:00PM +0100, Thomas Zimmermann wrote:
> I only have udl devices, but I expect that other DRM USB adapters are also 
> affected.

Find where the driver calls dma_map_* itself instead of using the USB
wrappers and fix that..


^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: Regression: 6eb0233ec2d0 ("usb: don't inherity DMA properties for USB devices")
  2021-02-18 15:07 ` Christoph Hellwig
@ 2021-02-18 15:21     ` Thomas Zimmermann
  0 siblings, 0 replies; 6+ messages in thread
From: Thomas Zimmermann @ 2021-02-18 15:21 UTC (permalink / raw)
  To: Christoph Hellwig
  Cc: Greg KH, Daniel Vetter, David Airlie, dri-devel, USB list,
	Linux Kernel Mailing List


[-- Attachment #1.1: Type: text/plain, Size: 916 bytes --]

Hi

Am 18.02.21 um 16:07 schrieb Christoph Hellwig:
> On Thu, Feb 18, 2021 at 03:56:00PM +0100, Thomas Zimmermann wrote:
>> I only have udl devices, but I expect that other DRM USB adapters are also
>> affected.
> 
> Find where the driver calls dma_map_* itself instead of using the USB
> wrappers and fix that..
> 

Sure, it's at [1]. For udl, the dmabuf would need to be in system 
memory. The driver creates urbs from the framebuffer content and sends 
them to the device for displaying.

My question is more: what's the best interface to do this? Is there 
example code somewhere?

Best regards
Thomas

[1] 
https://elixir.bootlin.com/linux/v5.11/source/drivers/gpu/drm/drm_prime.c#L630


-- 
Thomas Zimmermann
Graphics Driver Developer
SUSE Software Solutions Germany GmbH
Maxfeldstr. 5, 90409 Nürnberg, Germany
(HRB 36809, AG Nürnberg)
Geschäftsführer: Felix Imendörffer


[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 840 bytes --]

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: Regression: 6eb0233ec2d0 ("usb: don't inherity DMA properties for USB devices")
@ 2021-02-18 15:21     ` Thomas Zimmermann
  0 siblings, 0 replies; 6+ messages in thread
From: Thomas Zimmermann @ 2021-02-18 15:21 UTC (permalink / raw)
  To: Christoph Hellwig
  Cc: Greg KH, USB list, Linux Kernel Mailing List, dri-devel, David Airlie


[-- Attachment #1.1.1: Type: text/plain, Size: 916 bytes --]

Hi

Am 18.02.21 um 16:07 schrieb Christoph Hellwig:
> On Thu, Feb 18, 2021 at 03:56:00PM +0100, Thomas Zimmermann wrote:
>> I only have udl devices, but I expect that other DRM USB adapters are also
>> affected.
> 
> Find where the driver calls dma_map_* itself instead of using the USB
> wrappers and fix that..
> 

Sure, it's at [1]. For udl, the dmabuf would need to be in system 
memory. The driver creates urbs from the framebuffer content and sends 
them to the device for displaying.

My question is more: what's the best interface to do this? Is there 
example code somewhere?

Best regards
Thomas

[1] 
https://elixir.bootlin.com/linux/v5.11/source/drivers/gpu/drm/drm_prime.c#L630


-- 
Thomas Zimmermann
Graphics Driver Developer
SUSE Software Solutions Germany GmbH
Maxfeldstr. 5, 90409 Nürnberg, Germany
(HRB 36809, AG Nürnberg)
Geschäftsführer: Felix Imendörffer


[-- Attachment #1.2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 840 bytes --]

[-- Attachment #2: Type: text/plain, Size: 160 bytes --]

_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: Regression: 6eb0233ec2d0 ("usb: don't inherity DMA properties for USB devices")
  2021-02-18 15:21     ` Thomas Zimmermann
  (?)
@ 2021-02-18 15:24     ` Christoph Hellwig
  -1 siblings, 0 replies; 6+ messages in thread
From: Christoph Hellwig @ 2021-02-18 15:24 UTC (permalink / raw)
  To: Thomas Zimmermann
  Cc: Christoph Hellwig, Greg KH, Daniel Vetter, David Airlie,
	dri-devel, USB list, Linux Kernel Mailing List

On Thu, Feb 18, 2021 at 04:21:26PM +0100, Thomas Zimmermann wrote:
> Sure, it's at [1]. For udl, the dmabuf would need to be in system memory. 
> The driver creates urbs from the framebuffer content and sends them to the 
> device for displaying.
>
> My question is more: what's the best interface to do this? Is there example 
> code somewhere?

URBs do point to system memory most of the time.  I'm not a real USB
expert, but usb-storage or uas would be classic examples for drivers
that take arbitrary memory controller by another layer and do DMA to/from
that.

^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2021-02-18 18:02 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-02-18 14:56 Regression: 6eb0233ec2d0 ("usb: don't inherity DMA properties for USB devices") Thomas Zimmermann
2021-02-18 14:56 ` Thomas Zimmermann
2021-02-18 15:07 ` Christoph Hellwig
2021-02-18 15:21   ` Thomas Zimmermann
2021-02-18 15:21     ` Thomas Zimmermann
2021-02-18 15:24     ` Christoph Hellwig

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.