All of lore.kernel.org
 help / color / mirror / Atom feed
* bochs_drm: failed bochs_hw_init() results in panic
@ 2020-01-10  1:33 Marek Marczykowski-Górecki
  2020-01-10  5:35 ` Gerd Hoffmann
  0 siblings, 1 reply; 4+ messages in thread
From: Marek Marczykowski-Górecki @ 2020-01-10  1:33 UTC (permalink / raw)
  To: virtualization


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

Hi,

It looks like bochs_kms_fini() don't like being called if
bochs_kms_init() wasn't. Regardless of the reason for the
bochs_hw_init() failure (that's another story), it shouldn't cause a
panic. Any idea how to fix it?

Full message:
[   33.032576] [drm:bochs_hw_init [bochs_drm]] *ERROR* Cannot request framebuffer
[   33.069435] ------------[ cut here ]------------
[   33.070920] WARNING: CPU: 1 PID: 879 at drivers/gpu/drm/drm_modeset_lock.c:266 drm_modeset_lock+0xef/0x100 [drm]
[   33.073719] Modules linked in: amd64_edac_mod(-) snd_ac97_codec edac_mce_amd ac97_bus snd_seq snd_seq_device bochs_drm(+) drm_vram_helper snd_pcm pcspkr ttm parport_pc drm_kms_helper parport drm i2c_piix4 snd_timer e1000e snd soundcore xenfs ip_tables dm_thin_pool dm_persistent_data dm_bio_prison libcrc32c dm_crypt serio_raw ehci_pci ata_generic virtio_console virtio_scsi pata_acpi ehci_hcd floppy qemu_fw_cfg xen_privcmd xen_pciback xen_blkback xen_gntalloc xen_gntdev xen_evtchn uinput pkcs8_key_parser
[   33.085969] CPU: 1 PID: 879 Comm: systemd-udevd Tainted: G        W         5.4.5-1.qubes.x86_64 #1
[   33.088483] Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS 0.0.0 02/06/2015
[   33.090762] RIP: e030:drm_modeset_lock+0xef/0x100 [drm]
[   33.092213] Code: ff ff eb de e8 22 31 7e c1 41 89 c4 e9 75 ff ff ff 0f 0b e9 4c ff ff ff 41 83 fc 8e 74 c1 41 83 fc dd 75 be 48 89 6b 18 eb b8 <0f> 0b e9 6f ff ff ff 66 2e 0f 1f 84 00 00 00 00 00 0f 1f 44 00 00
[   33.097304] RSP: e02b:ffffc90000f379d0 EFLAGS: 00010286
[   33.098741] RAX: 0000000000000000 RBX: ffffc90000f37a40 RCX: 0000000000000000
[   33.100728] RDX: ffff88813bba2540 RSI: 0000000000000000 RDI: ffff888140128a00
[   33.102677] RBP: ffff888133931198 R08: 0000000000000000 R09: ffff88813bba4b30
[   33.104613] R10: 0000000000007ff0 R11: 0000000000000000 R12: 0000000000000000
[   33.106592] R13: ffff8881339311c0 R14: 0000000000000010 R15: 0000000000000000
[   33.108555] FS:  00007e279f5e7940(0000) GS:ffff888140100000(0000) knlGS:0000000000000000
[   33.110654] CS:  e030 DS: 0000 ES: 0000 CR0: 0000000080050033
[   33.112210] CR2: 000058a34b0d8774 CR3: 0000000138ff0000 CR4: 0000000000000660
[   33.114124] Call Trace:
[   33.114866]  drm_modeset_lock_all_ctx+0x1f/0xe0 [drm]
[   33.116284]  drm_atomic_helper_shutdown+0x43/0xc0 [drm_kms_helper]
[   33.118033]  bochs_kms_fini+0x12/0x20 [bochs_drm]
[   33.119252]  bochs_unload+0x16/0x40 [bochs_drm]
[   33.120570]  bochs_pci_probe+0xe8/0x160 [bochs_drm]
[   33.121967]  local_pci_probe+0x42/0x80
[   33.123041]  pci_device_probe+0x107/0x1a0
[   33.124190]  really_probe+0x147/0x3c0
[   33.125233]  driver_probe_device+0xb6/0x100
[   33.126384]  device_driver_attach+0x53/0x60
[   33.127533]  __driver_attach+0x8a/0x150
[   33.128603]  ? device_driver_attach+0x60/0x60
[   33.129830]  bus_for_each_dev+0x89/0xd0
[   33.130920]  bus_add_driver+0x14d/0x1f0
[   33.131990]  driver_register+0x6c/0xc0
[   33.133074]  ? 0xffffffffc02a8000
[   33.134003]  do_one_initcall+0x59/0x214
[   33.135038]  do_init_module+0x5c/0x230
[   33.135044] hrtimer: interrupt took 7595223 ns
[   33.137336]  load_module+0x1129/0x1260
[   33.138355]  ? __do_sys_finit_module+0xbb/0x120
[   33.139656]  __do_sys_finit_module+0xbb/0x120
[   33.140873]  do_syscall_64+0x5b/0x1a0
[   33.141917]  entry_SYSCALL_64_after_hwframe+0x44/0xa9
[   33.143329] RIP: 0033:0x7e27a058d1ad
[   33.144329] Code: 00 c3 66 2e 0f 1f 84 00 00 00 00 00 90 f3 0f 1e fa 48 89 f8 48 89 f7 48 89 d6 48 89 ca 4d 89 c2 4d 89 c8 4c 8b 4c 24 08 0f 05 <48> 3d 01 f0 ff ff 73 01 c3 48 8b 0d ab 5c 0c 00 f7 d8 64 89 01 48
[   33.150780] RSP: 002b:00007fff32c25888 EFLAGS: 00000246 ORIG_RAX: 0000000000000139
[   33.152850] RAX: ffffffffffffffda RBX: 00005ef4b82f7e90 RCX: 00007e27a058d1ad
[   33.154721] RDX: 0000000000000000 RSI: 00007e27a01b484d RDI: 0000000000000012
[   33.156695] RBP: 0000000000020000 R08: 0000000000000000 R09: 0000000000000007
[   33.158651] R10: 0000000000000012 R11: 0000000000000246 R12: 00007e27a01b484d
[   33.160635] R13: 0000000000000000 R14: 00005ef4b8311570 R15: 00005ef4b82f7e90
[   33.162572] ---[ end trace 688bd10d7416ac12 ]---
[   33.430995] ppdev: user-space parallel port driver
[   33.597636] Already setup the GSI :10
[   33.607033] snd_intel8x0 0000:00:03.0: enable KVM optimization
[   33.752121] BUG: kernel NULL pointer dereference, address: 0000000000000018
[   33.754174] #PF: supervisor write access in kernel mode
[   33.755600] #PF: error_code(0x0002) - not-present page
[   33.757036] PGD 0 P4D 0 
[   33.757779] Oops: 0002 [#1] SMP NOPTI
[   33.758811] CPU: 1 PID: 879 Comm: systemd-udevd Tainted: G        W         5.4.5-1.qubes.x86_64 #1
[   33.761352] Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS 0.0.0 02/06/2015
[   33.763587] RIP: e030:ww_mutex_lock+0x20/0x80
[   33.764813] Code: 1f 84 00 00 00 00 00 0f 1f 00 0f 1f 44 00 00 41 55 41 54 49 89 f4 55 48 89 fd e8 9b e2 ff ff 31 c0 65 48 8b 14 25 c0 6b 01 00 <f0> 48 0f b1 55 00 74 0d 4c 89 e6 48 89 ef 5d 41 5c 41 5d eb ab 4d
[   33.770009] RSP: e02b:ffffc90000f379b0 EFLAGS: 00010246
[   33.771434] RAX: 0000000000000000 RBX: ffffc90000f37a40 RCX: 0000000000000000
[   33.773412] RDX: ffff88813bba2540 RSI: 0000000000000000 RDI: ffff888140128a00
[   33.775359] RBP: 0000000000000018 R08: 0000000000000000 R09: ffff888140129450
[   33.777334] R10: 0000000000007ff0 R11: 0000000000000000 R12: ffffc90000f37a40
[   33.779305] R13: 0000000000000000 R14: fffffffffffffff0 R15: 0000000000000000
[   33.781263] FS:  00007e279f5e7940(0000) GS:ffff888140100000(0000) knlGS:0000000000000000
[   33.783492] CS:  e030 DS: 0000 ES: 0000 CR0: 0000000080050033
[   33.785083] CR2: 0000000000000018 CR3: 0000000138ff0000 CR4: 0000000000000660
[   33.787039] Call Trace:
[   33.787786]  drm_modeset_lock+0x48/0x100 [drm]
[   33.789052]  drm_modeset_lock_all_ctx+0x58/0xe0 [drm]
[   33.790476]  drm_atomic_helper_shutdown+0x43/0xc0 [drm_kms_helper]
[   33.792196]  bochs_kms_fini+0x12/0x20 [bochs_drm]
[   33.793491]  bochs_unload+0x16/0x40 [bochs_drm]
[   33.794749]  bochs_pci_probe+0xe8/0x160 [bochs_drm]
[   33.796107]  local_pci_probe+0x42/0x80
[   33.797180]  pci_device_probe+0x107/0x1a0
[   33.798276]  really_probe+0x147/0x3c0
[   33.799317]  driver_probe_device+0xb6/0x100
[   33.800504]  device_driver_attach+0x53/0x60
[   33.801670]  __driver_attach+0x8a/0x150
[   33.802759]  ? device_driver_attach+0x60/0x60
[   33.803972]  bus_for_each_dev+0x89/0xd0
[   33.805038]  bus_add_driver+0x14d/0x1f0
[   33.806112]  driver_register+0x6c/0xc0
[   33.807159]  ? 0xffffffffc02a8000
[   33.808098]  do_one_initcall+0x59/0x214
[   33.809161]  do_init_module+0x5c/0x230
[   33.810235]  load_module+0x1129/0x1260
[   33.811269]  ? __do_sys_finit_module+0xbb/0x120
[   33.812543]  __do_sys_finit_module+0xbb/0x120
[   33.813768]  do_syscall_64+0x5b/0x1a0
[   33.814772]  entry_SYSCALL_64_after_hwframe+0x44/0xa9
[   33.816111] RIP: 0033:0x7e27a058d1ad
[   33.817080] Code: 00 c3 66 2e 0f 1f 84 00 00 00 00 00 90 f3 0f 1e fa 48 89 f8 48 89 f7 48 89 d6 48 89 ca 4d 89 c2 4d 89 c8 4c 8b 4c 24 08 0f 05 <48> 3d 01 f0 ff ff 73 01 c3 48 8b 0d ab 5c 0c 00 f7 d8 64 89 01 48
[   33.822091] RSP: 002b:00007fff32c25888 EFLAGS: 00000246 ORIG_RAX: 0000000000000139
[   33.824104] RAX: ffffffffffffffda RBX: 00005ef4b82f7e90 RCX: 00007e27a058d1ad
[   33.826023] RDX: 0000000000000000 RSI: 00007e27a01b484d RDI: 0000000000000012
[   33.827948] RBP: 0000000000020000 R08: 0000000000000000 R09: 0000000000000007
[   33.829914] R10: 0000000000000012 R11: 0000000000000246 R12: 00007e27a01b484d
[   33.831824] R13: 0000000000000000 R14: 00005ef4b8311570 R15: 00005ef4b82f7e90
[   33.833746] Modules linked in: joydev ppdev snd_intel8x0(+) snd_ac97_codec edac_mce_amd ac97_bus snd_seq snd_seq_device bochs_drm(+) drm_vram_helper snd_pcm pcspkr ttm parport_pc drm_kms_helper parport drm i2c_piix4 snd_timer e1000e snd soundcore xenfs ip_tables dm_thin_pool dm_persistent_data dm_bio_prison libcrc32c dm_crypt serio_raw ehci_pci ata_generic virtio_console virtio_scsi pata_acpi ehci_hcd floppy qemu_fw_cfg xen_privcmd xen_pciback xen_blkback xen_gntalloc xen_gntdev xen_evtchn uinput pkcs8_key_parser
[   33.845935] CR2: 0000000000000018
[   33.847042] ---[ end trace 688bd10d7416ac13 ]---
[   33.848388] RIP: e030:ww_mutex_lock+0x20/0x80
[   33.849666] Code: 1f 84 00 00 00 00 00 0f 1f 00 0f 1f 44 00 00 41 55 41 54 49 89 f4 55 48 89 fd e8 9b e2 ff ff 31 c0 65 48 8b 14 25 c0 6b 01 00 <f0> 48 0f b1 55 00 74 0d 4c 89 e6 48 89 ef 5d 41 5c 41 5d eb ab 4d
[   33.854831] RSP: e02b:ffffc90000f379b0 EFLAGS: 00010246
[   33.856378] RAX: 0000000000000000 RBX: ffffc90000f37a40 RCX: 0000000000000000
[   33.858349] RDX: ffff88813bba2540 RSI: 0000000000000000 RDI: ffff888140128a00
[   33.860344] RBP: 0000000000000018 R08: 0000000000000000 R09: ffff888140129450
[   33.862299] R10: 0000000000007ff0 R11: 0000000000000000 R12: ffffc90000f37a40
[   33.864294] R13: 0000000000000000 R14: fffffffffffffff0 R15: 0000000000000000
[   33.866296] FS:  00007e279f5e7940(0000) GS:ffff888140100000(0000) knlGS:0000000000000000
[   33.868544] CS:  e030 DS: 0000 ES: 0000 CR0: 0000000080050033
[   33.870179] CR2: 0000000000000018 CR3: 0000000138ff0000 CR4: 0000000000000660
[   33.872141] Kernel panic - not syncing: Fatal exception
[   33.873609] Kernel Offset: disabled


-- 
Best Regards,
Marek Marczykowski-Górecki
Invisible Things Lab
A: Because it messes up the order in which people normally read text.
Q: Why is top-posting such a bad thing?

[-- Attachment #1.2: signature.asc --]
[-- Type: application/pgp-signature, Size: 488 bytes --]

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

_______________________________________________
Virtualization mailing list
Virtualization@lists.linux-foundation.org
https://lists.linuxfoundation.org/mailman/listinfo/virtualization

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

* Re: bochs_drm: failed bochs_hw_init() results in panic
  2020-01-10  1:33 bochs_drm: failed bochs_hw_init() results in panic Marek Marczykowski-Górecki
@ 2020-01-10  5:35 ` Gerd Hoffmann
  2020-01-11  0:07   ` Marek Marczykowski-Górecki
  0 siblings, 1 reply; 4+ messages in thread
From: Gerd Hoffmann @ 2020-01-10  5:35 UTC (permalink / raw)
  To: Marek Marczykowski-Górecki; +Cc: virtualization

On Fri, Jan 10, 2020 at 02:33:28AM +0100, Marek Marczykowski-Górecki wrote:
> Hi,
> 
> It looks like bochs_kms_fini() don't like being called if
> bochs_kms_init() wasn't. Regardless of the reason for the
> bochs_hw_init() failure (that's another story), it shouldn't cause a
> panic. Any idea how to fix it?

maybe this?

diff --git a/drivers/gpu/drm/bochs/bochs_kms.c b/drivers/gpu/drm/bochs/bochs_kms.c
index 3f0006c2470d..322be68a238a 100644
--- a/drivers/gpu/drm/bochs/bochs_kms.c
+++ b/drivers/gpu/drm/bochs/bochs_kms.c
@@ -192,6 +192,9 @@ int bochs_kms_init(struct bochs_device *bochs)
 
 void bochs_kms_fini(struct bochs_device *bochs)
 {
+	if (!dev->mode_config.num_connector)
+		return;
+
 	drm_atomic_helper_shutdown(bochs->dev);
 	drm_mode_config_cleanup(bochs->dev);
 }

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

* Re: bochs_drm: failed bochs_hw_init() results in panic
  2020-01-10  5:35 ` Gerd Hoffmann
@ 2020-01-11  0:07   ` Marek Marczykowski-Górecki
  2020-01-13  7:03     ` Gerd Hoffmann
  0 siblings, 1 reply; 4+ messages in thread
From: Marek Marczykowski-Górecki @ 2020-01-11  0:07 UTC (permalink / raw)
  To: Gerd Hoffmann; +Cc: virtualization


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

On Fri, Jan 10, 2020 at 06:35:53AM +0100, Gerd Hoffmann wrote:
> On Fri, Jan 10, 2020 at 02:33:28AM +0100, Marek Marczykowski-Górecki wrote:
> > Hi,
> > 
> > It looks like bochs_kms_fini() don't like being called if
> > bochs_kms_init() wasn't. Regardless of the reason for the
> > bochs_hw_init() failure (that's another story), it shouldn't cause a
> > panic. Any idea how to fix it?
> 
> maybe this?

Yes, it prevents the panic, with a little fix. Thanks!
Of course(?) I don't have working framebuffer then, but I can interact
with the system in other ways, at least to diagnose what's wrong.

Now the messages looks like this:

[   29.800835] bochs-drm 0000:00:02.0: remove_conflicting_pci_framebuffers: bar 0: 0xc0000000 -> 0xc0ffffff
[   29.800840] bochs-drm 0000:00:02.0: remove_conflicting_pci_framebuffers: bar 2: 0xc1087000 -> 0xc1087fff
[   29.800842] checking generic (c0000000 1000000) vs hw (c0000000 1000000)
[   29.800843] fb0: switching to bochsdrmfb from EFI VGA
[   29.805542] bochs-drm 0000:00:02.0: vgaarb: deactivate vga console
[   29.805742] bochs-drm 0000:00:02.0: BAR 0: can't reserve [mem 0xc0000000-0xc0ffffff pref]
[   29.805749] [drm:bochs_hw_init [bochs_drm]] *ERROR* Cannot request framebuffer
[   29.805781] bochs-drm: probe of 0000:00:02.0 failed with error -16
[   30.129014] Trying to free nonexistent resource <00000000c0000000-00000000c0ffffff>

Is the last one an issue?


> diff --git a/drivers/gpu/drm/bochs/bochs_kms.c b/drivers/gpu/drm/bochs/bochs_kms.c
> index 3f0006c2470d..322be68a238a 100644
> --- a/drivers/gpu/drm/bochs/bochs_kms.c
> +++ b/drivers/gpu/drm/bochs/bochs_kms.c
> @@ -192,6 +192,9 @@ int bochs_kms_init(struct bochs_device *bochs)
>  
>  void bochs_kms_fini(struct bochs_device *bochs)
>  {
> +	if (!dev->mode_config.num_connector)

bochs->dev->...

> +		return;
> +
>  	drm_atomic_helper_shutdown(bochs->dev);
>  	drm_mode_config_cleanup(bochs->dev);
>  }
> 

-- 
Best Regards,
Marek Marczykowski-Górecki
Invisible Things Lab
A: Because it messes up the order in which people normally read text.
Q: Why is top-posting such a bad thing?

[-- Attachment #1.2: signature.asc --]
[-- Type: application/pgp-signature, Size: 488 bytes --]

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

_______________________________________________
Virtualization mailing list
Virtualization@lists.linux-foundation.org
https://lists.linuxfoundation.org/mailman/listinfo/virtualization

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

* Re: bochs_drm: failed bochs_hw_init() results in panic
  2020-01-11  0:07   ` Marek Marczykowski-Górecki
@ 2020-01-13  7:03     ` Gerd Hoffmann
  0 siblings, 0 replies; 4+ messages in thread
From: Gerd Hoffmann @ 2020-01-13  7:03 UTC (permalink / raw)
  To: Marek Marczykowski-Górecki; +Cc: virtualization

> Now the messages looks like this:
> 
> [   29.800835] bochs-drm 0000:00:02.0: remove_conflicting_pci_framebuffers: bar 0: 0xc0000000 -> 0xc0ffffff
> [   29.800840] bochs-drm 0000:00:02.0: remove_conflicting_pci_framebuffers: bar 2: 0xc1087000 -> 0xc1087fff
> [   29.800842] checking generic (c0000000 1000000) vs hw (c0000000 1000000)
> [   29.800843] fb0: switching to bochsdrmfb from EFI VGA
> [   29.805542] bochs-drm 0000:00:02.0: vgaarb: deactivate vga console
> [   29.805742] bochs-drm 0000:00:02.0: BAR 0: can't reserve [mem 0xc0000000-0xc0ffffff pref]
> [   29.805749] [drm:bochs_hw_init [bochs_drm]] *ERROR* Cannot request framebuffer

This is the problem.

> [   29.805781] bochs-drm: probe of 0000:00:02.0 failed with error -16
> [   30.129014] Trying to free nonexistent resource <00000000c0000000-00000000c0ffffff>
> 
> Is the last one an issue?

Not critical.  Probably the pci_release_regions() call, trying to free
all regions, including the one the driver could not request, so it warns
about that one.

cheers,
  Gerd

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

end of thread, other threads:[~2020-01-13  7:03 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-01-10  1:33 bochs_drm: failed bochs_hw_init() results in panic Marek Marczykowski-Górecki
2020-01-10  5:35 ` Gerd Hoffmann
2020-01-11  0:07   ` Marek Marczykowski-Górecki
2020-01-13  7:03     ` Gerd Hoffmann

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.