Re: 4.9 regression/bisection - 761ed4a94582 tty: serial_core: convert uart_close to use tty_port_close

From: Rob Herring
Date: Fri Oct 21 2016 - 09:52:22 EST


On Fri, Oct 21, 2016 at 7:45 AM, Mike Galbraith
<umgwanakikbuti@xxxxxxxxx> wrote:
> Greetings,
>
> My old DL980 G7 is exploding on reboot with master, with only the first
> couple lines actually making it to the console. Once (and only once)
> during bisection it did manage to get the below emitted.

Does this patch[1] fix things for you? Sorry, only the reply seems to
be in the archives.

Rob

[1] https://lkml.org/lkml/2016/10/19/394

>
> [ 358.315713] BUG: unable to handle kernel NULL pointer dereference at 00000000000001e0
> [ 358.400610] IP: [<ffffffff81414b4c>] tty_wakeup+0xc/0x70
> [ 358.460221] PGD 0
> [ 358.481987] Oops: 0000 [#1] SMP
> [ 358.515036] Dumping ftrace buffer:
> [ 358.555845] (ftrace buffer empty)
> [ 358.591789] Modules linked in: autofs4(E) edd(E) af_packet(E) cpufreq_conservative(E) cpufreq_userspace(E) fuse(E) loop(E) md_mod(E) dm_mod(E) vhost_net(E) macvtap(E) macvlan(E) vhost(E) tun(E) ipmi_ssif(E) iTCO_wdt(E) kvm_intel(E) iTCO_vendor_support(E) gpio_ich(E) ipmi_si(E) kvm(E) joydev(E) i7core_edac(E) lpc_ich(E) irqbypass(E) bnx2(E) netxen_nic(E) shpchp(E) sr_mod(E) pcspkr(E) ipmi_msghandler(E) mfd_core(E) cdrom(E) edac_core(E) hpilo(E) hpwdt(E) pcc_cpufreq(E) sg(E) fjes(E) hid_generic(E) button(E) acpi_cpufreq(E) ehci_pci(E) acpi_power_meter(E) ext4(E) mbcache(E) jbd2(E) crc16(E) usbhid(E) uhci_hcd(E) ehci_hcd(E) usbcore(E) sd_mod(E) thermal(E) scsi_dh_hp_sw(E) scsi_dh_emc(E) scsi_dh_rdac(E) scsi_dh_alua(E) ata_generic(E) ata_piix(E) libata(E) hpsa(E) scsi_transport_sas(E) cciss(E) scsi_mod(E)
> [ 359.376789] CPU: 0 PID: 1698 Comm: kworker/0:4 Tainted: G E 4.9.0-default #230
> [ 359.479980] Hardware name: Hewlett-Packard ProLiant DL980 G7, BIOS P66 07/07/2010
> [ 359.568962] task: ffff880273eba240 task.stack: ffffc90001fe4000
> [ 359.635241] RIP: 0010:[<ffffffff81414b4c>] [<ffffffff81414b4c>] tty_wakeup+0xc/0x70
> [ 359.720193] RSP: 0018:ffff88027fc03df8 EFLAGS: 00010082
> [ 359.781228] RAX: ffff880274e901a8 RBX: ffffffff820941e0 RCX: 0000000000000000
> [ 359.863437] RDX: 000000000000001b RSI: 00000000000002f8 RDI: 0000000000000000
> [ 359.946407] RBP: ffff88027fc03e08 R08: ffff88027fc17cc0 R09: 0000000000000000
> [ 360.024457] R10: ffffffffffffffe4 R11: ffffffffffffff9e R12: ffff880274e901a8
> [ 360.105862] R13: 0000000000000000 R14: 0000000000000020 R15: 00000000000000c2
> [ 360.187865] FS: 0000000000000000(0000) GS:ffff88027fc00000(0000) knlGS:0000000000000000
> [ 360.278200] CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033
> [ 360.345712] CR2: 00000000000000b8 CR3: 0000000001c06000 CR4: 00000000000006f0
> [ 360.427968] Stack:
> [ 360.449955] ffffffff820941e0 ffff880274e901a8 ffff88027fc03e18 ffffffff814319d1
> [ 360.535162] ffff88027fc03e40 ffffffff81439e20 ffffffff820941e0 0000000000000060
> [ 360.625426] 0000000000000046 ffff88027fc03e78 ffffffff8143a05d ffffffff820941e0
> [ 360.709070] Call Trace:
> [ 360.736862] <IRQ>
> [ 360.756285] [<ffffffff814319d1>] uart_write_wakeup+0x21/0x30
> [ 360.823321] [<ffffffff81439e20>] serial8250_tx_chars+0x220/0x280
> [ 360.894461] [<ffffffff8143a05d>] serial8250_handle_irq.part.22+0xdd/0x100
> [ 360.970372] [<ffffffff8143a0e7>] serial8250_default_handle_irq+0x47/0x70
> [ 361.046833] [<ffffffff81435623>] serial8250_interrupt+0x63/0x130
> [ 361.109593] [<ffffffff810cc82f>] __handle_irq_event_percpu+0x3f/0x1a0
> [ 361.177384] [<ffffffff810cc9b3>] handle_irq_event_percpu+0x23/0x60
> [ 361.240864] [<ffffffff810cca2e>] handle_irq_event+0x3e/0x60
> [ 361.302754] [<ffffffff810d0089>] handle_edge_irq+0x99/0x150
> [ 361.386869] [<ffffffff8101ec7d>] handle_irq+0x1d/0x30
> [ 361.445032] [<ffffffff81600fad>] do_IRQ+0x4d/0xd0
> [ 361.494099] [<ffffffff815ff18c>] common_interrupt+0x8c/0x8c
> [ 361.552523] <EOI>
> [ 361.572270] [<ffffffff810bcc9f>] ? native_queued_spin_lock_slowpath+0x12f/0x1a0
> [ 361.652790] [<ffffffff811804e4>] queued_spin_lock_slowpath+0xb/0xf
> [ 361.725628] [<ffffffff815fe5b0>] _raw_spin_lock+0x20/0x30
> [ 361.789215] [<ffffffff811c7339>] find_vmap_area+0x19/0x60
> [ 361.852010] [<ffffffff811c8b41>] remove_vm_area+0x11/0x70
> [ 361.911002] [<ffffffff811c8bca>] __vunmap+0x2a/0xd0
> [ 361.967589] [<ffffffff811c8cde>] vfree+0x2e/0x70
> [ 362.020037] [<ffffffff8106dec5>] put_task_stack+0x75/0x110
> [ 362.083000] [<ffffffff81098977>] finish_task_switch+0x1c7/0x240
> [ 362.149896] [<ffffffff815fa6e4>] __schedule+0x224/0x6a0
> [ 362.212147] [<ffffffff815fab96>] schedule+0x36/0x80
> [ 362.268175] [<ffffffff8108acf2>] worker_thread+0x1a2/0x4b0
> [ 362.332810] [<ffffffff8108ab50>] ? rescuer_thread+0x350/0x350
> [ 362.399906] [<ffffffff810904ca>] kthread+0xca/0xe0
> [ 362.457034] [<ffffffff81090400>] ? kthread_park+0x60/0x60
> [ 362.519201] [<ffffffff815fea55>] ret_from_fork+0x25/0x30
> [ 362.582964] Code: 00 00 48 85 c0 74 05 48 89 df ff d0 4c 89 ee 4c 89 e7 e8 18 98 1e 00 5b 41 5c 41 5d 5d c3 90 66 66 66 66 90 55 48 89 e5 41 54 53 <48> 8b 87 e0 01 00 00 48 89 fb a8 20 75 20 48 8d bb 30 02 00 00
> [ 362.799640] RIP [<ffffffff81414b4c>] tty_wakeup+0xc/0x70
> [ 362.860880] RSP <ffff88027fc03df8>
> [ 362.901975] CR2: 00000000000001e0
>
> 761ed4a94582ab291aa24dcbea4e01e8936488c8 is the first bad commit
> commit 761ed4a94582ab291aa24dcbea4e01e8936488c8
> Author: Rob Herring <robh@xxxxxxxxxx>
> Date: Mon Aug 22 17:39:10 2016 -0500
>
> tty: serial_core: convert uart_close to use tty_port_close
>
> tty_port_close handles much of the common parts of tty close. Convert
> uart_close to use it and move the serial_core specific parts into
> tty_port.shutdown function. This will be needed to use tty_port functions
> directly from in kernel clients.
>
> This change causes ops->stop_rx() to be called after uart_wait_until_sent()
> is called which I think should be fine. Otherwise, the sequence of the
> close should be the same.
>
> Cc: Peter Hurley <peter@xxxxxxxxxxxxxxxxxx>
> Signed-off-by: Rob Herring <robh@xxxxxxxxxx>
> Acked-by: Alan Cox <alan@xxxxxxxxxxxxxxx>
> Signed-off-by: Greg Kroah-Hartman <gregkh@xxxxxxxxxxxxxxxxxxx>
>
> :040000 040000 91a49bab72cc416842d1058b43896c213a64ab5d e84cedcd2ce818ea3aafbd4e7221b283eaec45f4 M drivers
>
> git bisect start
> # good: [c8d2bc9bc39ebea8437fd974fdbc21847bb897a3] Linux 4.8
> git bisect good c8d2bc9bc39ebea8437fd974fdbc21847bb897a3
> # bad: [c3f8f7fa8b19e274e7eb99dee428ad3a9b2ad8eb] Merge tag 'platform-drivers-x86-v4.9-2' of git://git.infradead.org/users/dvhart/linux-platform-drivers-x86
> git bisect bad c3f8f7fa8b19e274e7eb99dee428ad3a9b2ad8eb
> # bad: [41844e36206be90cd4d962ea49b0abc3612a99d0] Merge tag 'staging-4.9-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/staging
> git bisect bad 41844e36206be90cd4d962ea49b0abc3612a99d0
> # bad: [d268dbe76a53d72cc41316eb59e7968db60e77ad] Merge tag 'pinctrl-v4.9-1' of git://git.kernel.org/pub/scm/linux/kernel/git/linusw/linux-pinctrl
> git bisect bad d268dbe76a53d72cc41316eb59e7968db60e77ad
> # bad: [02bafd96f3a5d8e610b19033ffec55b92459aaae] Merge tag 'docs-4.9' of git://git.lwn.net/linux
> git bisect bad 02bafd96f3a5d8e610b19033ffec55b92459aaae
> # good: [9929780e86854833e649b39b290b5fe921eb1701] Merge tag 'driver-core-4.9-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/driver-core
> git bisect good 9929780e86854833e649b39b290b5fe921eb1701
> # bad: [77b0a4aa0732f1856aef85b8db085864e5971a14] Merge tag 'hwmon-for-linus-v4.9' of git://git.kernel.org/pub/scm/linux/kernel/git/groeck/linux-staging
> git bisect bad 77b0a4aa0732f1856aef85b8db085864e5971a14
> # good: [f21ca2c9999872da113a1fc70abb527129b72af3] Merge tag 'usb-ci-v4.9-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/peter.chen/usb into usb-testing
> git bisect good f21ca2c9999872da113a1fc70abb527129b72af3
> # bad: [e6dce825fba05f447bd22c865e27233182ab3d79] Merge tag 'tty-4.9-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/tty
> git bisect bad e6dce825fba05f447bd22c865e27233182ab3d79
> # bad: [5d7519dfc963ec8b6a10a51356840580fc005a1e] serial: mxs-auart: Disable clock on error path
> git bisect bad 5d7519dfc963ec8b6a10a51356840580fc005a1e
> # bad: [a13e19cf3dc1080cf8a3a174cefd9199610faed7] serial: 8250_lpss: split LPSS driver to separate module
> git bisect bad a13e19cf3dc1080cf8a3a174cefd9199610faed7
> # bad: [5887ad43ee02a00f17a6132b7fb256dc6865474c] tty: serial: fsl_lpuart: Use cyclic DMA for Rx
> git bisect bad 5887ad43ee02a00f17a6132b7fb256dc6865474c
> # bad: [761ed4a94582ab291aa24dcbea4e01e8936488c8] tty: serial_core: convert uart_close to use tty_port_close
> git bisect bad 761ed4a94582ab291aa24dcbea4e01e8936488c8
> # good: [2426fbc77faef57c80a573303af6543531e2efa3] tty: amba-pl011: probe ZTE device from AMBA bus with a pseudo-ID
> git bisect good 2426fbc77faef57c80a573303af6543531e2efa3
> # good: [ebaa81c7287edd40dd4899e5d93a20e7a2b938e7] serial: samsung: Register cpufreq notifier only on S3C24xx
> git bisect good ebaa81c7287edd40dd4899e5d93a20e7a2b938e7
> # good: [b3b57646186400d4f54652ab7bbf55f5764d9467] tty: serial_core: convert uart_open to use tty_port_open
> git bisect good b3b57646186400d4f54652ab7bbf55f5764d9467