NetBSD Problem Report #52409

From makoto@h81.i.ki.nu  Sun Jul 16 04:46:21 2017
Return-Path: <makoto@h81.i.ki.nu>
Received: from mail.netbsd.org (mail.netbsd.org [199.233.217.200])
	(using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))
	(Client CN "mail.netbsd.org", Issuer "Postmaster NetBSD.org" (not verified))
	by mollari.NetBSD.org (Postfix) with ESMTPS id 909277A214
	for <gnats-bugs@gnats.NetBSD.org>; Sun, 16 Jul 2017 04:46:21 +0000 (UTC)
Message-Id: <201707160446.v6G4kHQx007335@h81.i.ki.nu>
Date: Sun, 16 Jul 2017 13:46:17 +0900 (JST)
From: makoto@ki.nu
Reply-To: makoto@ki.nu
To: gnats-bugs@NetBSD.org
Subject: uvm_fault when waking up after sleep (Let's Note CF-{N,S}-9, etc.)
X-Send-Pr-Version: 3.95

>Number:         52409
>Category:       kern
>Synopsis:       uvm_fault when waking up after sleep (Let's Note CF-{N,S}-9, etc.)
>Confidential:   no
>Severity:       serious
>Priority:       medium
>Responsible:    kern-bug-people
>State:          closed
>Class:          sw-bug
>Submitter-Id:   net
>Arrival-Date:   Sun Jul 16 04:50:00 +0000 2017
>Closed-Date:    Mon Jun 04 10:21:35 +0000 2018
>Last-Modified:  Mon Jun 04 10:21:35 +0000 2018
>Originator:     Makoto Fujiwara
>Release:        NetBSD 8.99.1
>Organization:
KINU Corporation

>Environment:


NetBSD 8.99.1 (GENERIC) #0: Sat Jul 15 10:17:09 UTC 2017
        mkrepro@mkrepro.NetBSD.org:/usr/src/sys/arch/amd64/compile/GENERIC

Architecture: x86_64
Machine: amd64

>Description:
At waking up after sleep state, 

(1) In file sys/external/bsd/drm2/pci/drm_pci.c, 
   ---------------------
   234  static int
   235  drm_pci_irq_install(struct drm_device *dev, irqreturn_t (*handler)(void *),
   236      int flags, const char *name, void *arg, struct drm_bus_irq_cookie **cookiep)

        ... (omit) ...
   253          intrstr = pci_intr_string(pa->pa_pc, irq_cookie->intr_handles[0],
   254              intrbuf, sizeof(intrbuf));
   ---------------------
   at the line 253, irq_cookie->intr_handles == 0, 
   which causes following trap.

    acpi0: entering state S3
    Flushing disk caches: 10 done
    ioapic0 reenabling
    uvm_fault(0xffffe40110dc68b8, 0x0, 1) -> e
    fatal page fault in supervisor mode
    trap type 6 code 0 rip 0xffffffff806435c8 cs 0x8 rflags 0x10202 cr2 0 ilevel 0 rsp 0xffffe4004003baa0
    curlwp 0xffffe40115c38480 pid 823.1 lowest kstack 0xffffe400400382c0
    panic: trap
    cpu0: Begin traceback...
    vpanic() at netbsd:vpanic+0x140
    snprintf() at netbsd:snprintf
    trap() at netbsd:trap+0xc6b
    --- trap (number 6) ---
    drm_pci_irq_install() at netbsd:drm_pci_irq_install+0x90
    drm_irq_install() at netbsd:drm_irq_install+0xb7
    __i915_drm_thaw() at netbsd:__i915_drm_thaw+0xc9
    i915drmkms_resume() at netbsd:i915drmkms_resume+0x34
    device_pmf_driver_resume() at netbsd:device_pmf_driver_resume+0x46
    pmf_device_resume_locked() at netbsd:pmf_device_resume_locked+0xd3
    pmf_device_resume() at netbsd:pmf_device_resume+0x41
    pmf_system_resume() at netbsd:pmf_system_resume+0xc7
    acpi_enter_sleep_state() at netbsd:acpi_enter_sleep_state+0x182
    sysctl_hw_acpi_sleepstate() at netbsd:sysctl_hw_acpi_sleepstate+0xfe
    sysctl_dispatch() at netbsd:sysctl_dispatch+0xc1
    sys___sysctl() at netbsd:sys___sysctl+0xd8
    syscall() at netbsd:syscall+0x1d8
    --- syscall (number 202) ---
    727e27b1bb6a:
    cpu0: End traceback...

    dumping to dev 0,1 (offset=8802119, size=997005):
    dump Copyright (c) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005,
        2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017
        The NetBSD Foundation, Inc.  All rights reserved.
    Copyright (c) 1982, 1986, 1989, 1991, 1993
        The Regents of the University of California.  All rights reserved.

    NetBSD 8.99.1 (GENERIC) #0: Sat Jul 15 10:17:09 UTC 2017
    	mkrepro@mkrepro.NetBSD.org:/usr/src/sys/arch/amd64/compile/GENERIC
    total memory = 3894 MB
    avail memory = 3759 MB

>How-To-Repeat:

1. Have the machine, Let's Note CF-N9 or CF-S9. CF-J10.
   (SX2 or N10 are OK for this purpose, but they have another
   problem)

2. Install 8.99.1 from the daily 
   http://nycdn.netbsd.org/pub/NetBSD-daily/HEAD/201707151110Z/amd64/

3. Replace lid_switch by sleep_button in followin path.

   ls -lt /etc/powerd/scripts/{sl*,lid*}
   -r-xr-xr-x  1 root  wheel  1035 Jul  8 00:41 /etc/powerd/scripts/lid_switch
   -r-xr-xr-x  1 root  wheel   513 Mar 12 03:45 /etc/powerd/scripts/lid_switch.orig
   -r-xr-xr-x  1 root  wheel  1035 Mar 12 03:45 /etc/powerd/scripts/sleep_button

4. Boot the machine

5. When you see login: prompt, close the lid
   (PC gets sleep) .. this works only once after reboot.
   see another PR
   42051 lid switch works only once
   49024 Powerd invokes lid_switch by acpilid only ONCE after boot

6. Wait few seconds, and open the lid

7. You may see some lines for trap or panic (sometimes may not), and soon
   screen gets dark out and one or two mins later, it will reboot automatically

Note: (a)  in above, don't set ddb.onpanic to 1.
Note: (b)  You may replace the procedure 3 to 5 above, 
           login and do
             sudo sysctl -w hw.acpi.sleep.state=3
           may give the equivalent effect.

>Fix:


diff --git a/sys/external/bsd/drm2/i915drm/i915_pci.c b/sys/external/bsd/drm2/i915drm/i915_pci.c
index 3ba85bc531c..5b46e472102 100644
--- a/sys/external/bsd/drm2/i915drm/i915_pci.c
+++ b/sys/external/bsd/drm2/i915drm/i915_pci.c
@@ -241,6 +241,7 @@ i915drmkms_resume(device_t self, const pmf_qual_t *qual)

 	if (dev == NULL)
 		return true;
+	pci_enable_msi(dev->pdev);

 	ret = i915_drm_thaw_early(dev);
 	if (ret)

>Release-Note:

>Audit-Trail:
From: coypu@sdf.org
To: gnats-bugs@NetBSD.org
Cc: 
Subject: Re: kern/52409: uvm_fault when waking up after sleep (Let's Note
 CF-{N,S}-9, etc.)
Date: Sun, 16 Jul 2017 06:58:04 +0000

 Hi,

 I see that the other code has:

    1784 	/* On the 945G/GM, the chipset reports the MSI capability on the
    1785 	 * integrated graphics even though the support isn't actually there
    1786 	 * according to the published specs.  It doesn't appear to function
    1787 	 * correctly in testing on 945G.
    1788 	 * This may be a side effect of MSI having been made available for PEG
    1789 	 * and the registers being closely associated.
    1790 	 *
    1791 	 * According to chipset errata, on the 965GM, MSI interrupts may
    1792 	 * be lost or delayed, but we use them anyways to avoid
    1793 	 * stuck interrupts on some machines.
    1794 	 */
    1795 	if (!IS_I945G(dev) && !IS_I945GM(dev))
    1796 		pci_enable_msi(dev->pdev);

 So maybe limit this on resume too.

From: mlelstv@serpens.de (Michael van Elst)
To: gnats-bugs@netbsd.org
Cc: 
Subject: Re: kern/52409: uvm_fault when waking up after sleep (Let's Note CF-{N,S}-9, etc.)
Date: Sun, 16 Jul 2017 08:56:55 -0000 (UTC)

 makoto@ki.nu writes:

 >(1) In file sys/external/bsd/drm2/pci/drm_pci.c, 
 >   ---------------------
 >   234  static int
 >   235  drm_pci_irq_install(struct drm_device *dev, irqreturn_t (*handler)(void *),
 >   236      int flags, const char *name, void *arg, struct drm_bus_irq_cookie **cookiep)

 >        ... (omit) ...
 >   253          intrstr = pci_intr_string(pa->pa_pc, irq_cookie->intr_handles[0],


 Can you try:

 http://ftp.netbsd.org/pub/NetBSD/misc/mlelstv/drm_pci.diff

 ?

 -- 
 -- 
                                 Michael van Elst
 Internet: mlelstv@serpens.de
                                 "A potential Snark may lurk in every tree."

From: Makoto Fujiwara <makoto@ki.nu>
To: gnats-bugs@netbsd.org
Cc: 
Subject: Re: kern/52409: uvm_fault when waking up after sleep (Let's Note CF-{N,S}-9, etc.)
Date: Sun, 16 Jul 2017 21:46:43 +0900

 Michael, thanks for the Response,

 | From: mlelstv@serpens.de (Michael van Elst)
 | Date: Sun, 16 Jul 2017 09:00:02 +0000 (UTC)
 >  Can you try:
 >  http://ftp.netbsd.org/pub/NetBSD/misc/mlelstv/drm_pci.diff

 Unfortunately, (1) crashes again (2) /var/crash does not have files
 Following is from /var/run/dmesg.boot
  ....
 sockaddr_getsize_by_family: Unhandled address family=255
 acpi0: entering state S3
 Flushing disk caches: 4 done
 ioapic0 reenabling
 i915drmkms0: interrupting at msi0 vec 0 (i915)
 fatal protection fault in supervisor mode
 trap type 4 code 0x31b rip 0xffffffff80253a43 cs 0x8 rflags 0x10246 cr2 0x77a18fc35000 ilevel 0 rsp 0xffffe400
 40013960
 curlwp 0xffffe401088b7360 pid 178.1 lowest kstack 0xffffe400400102c0
 panic: trap
 cpu0: Begin traceback...
 vpanic() at netbsd:vpanic+0x140
 snprintf() at netbsd:snprintf
 trap() at netbsd:trap+0xc6b
 --- trap (number 4) ---
 lapic_delay() at netbsd:lapic_delay+0x7b
 ironlake_crtc_enable() at netbsd:ironlake_crtc_enable+0x58a
 __intel_set_mode() at netbsd:__intel_set_mode+0x916
 intel_modeset_setup_hw_state() at netbsd:intel_modeset_setup_hw_state+0x7e6
 __i915_drm_thaw() at netbsd:__i915_drm_thaw+0xe6
 i915drmkms_resume() at netbsd:i915drmkms_resume+0x34
 device_pmf_driver_resume() at netbsd:device_pmf_driver_resume+0x46
 pmf_device_resume_locked() at netbsd:pmf_device_resume_locked+0xd3
 pmf_device_resume() at netbsd:pmf_device_resume+0x41
 pmf_system_resume() at netbsd:pmf_system_resume+0xc7
 acpi_enter_sleep_state() at netbsd:acpi_enter_sleep_state+0x182
 sysctl_hw_acpi_sleepstate() at netbsd:sysctl_hw_acpi_sleepstate+0xfe
 sysctl_dispatch() at netbsd:sysctl_dispatch+0xc1
 sys___sysctl() at netbsd:sys___sysctl+0xd8
 syscall() at netbsd:syscall+0x1d8
 --- syscall (number 202) ---
 780ec371bb6a:
 cpu0: End traceback...

 dumping to dev 0,1 (offset=8802119, size=997005):
 dump

 Thank you,
 ---
 Makoto Fujiwara, 
 Chiba, Japan, Narita Airport and Disneyland prefecture.
 Key fingerprint = 0BFA FAEB EAD1 90BA 7498  8F85 6809 9E0B B7EF A12E

From: Kimihiro Nonaka <nonakap@gmail.com>
To: "gnats-bugs@netbsd.org" <gnats-bugs@netbsd.org>
Cc: kern-bug-people@netbsd.org, 
	"gnats-admin@netbsd.org" <gnats-admin@netbsd.org>, "netbsd-bugs@netbsd.org" <netbsd-bugs@netbsd.org>
Subject: Re: kern/52409: uvm_fault when waking up after sleep (Let's Note
 CF-{N,S}-9, etc.)
Date: Wed, 19 Jul 2017 11:45:52 +0900

 --001a114dd5907218ed0554a2a1d1
 Content-Type: text/plain; charset="UTF-8"

 Hi,

 > (1) In file sys/external/bsd/drm2/pci/drm_pci.c,
 >    ---------------------
 >    234  static int
 >    235  drm_pci_irq_install(struct drm_device *dev, irqreturn_t (*handler)(void *),
 >    236      int flags, const char *name, void *arg, struct drm_bus_irq_cookie **cookiep)
 >
 >         ... (omit) ...
 >    253          intrstr = pci_intr_string(pa->pa_pc, irq_cookie->intr_handles[0],
 >    254              intrbuf, sizeof(intrbuf));
 >    ---------------------
 >    at the line 253, irq_cookie->intr_handles == 0,
 >    which causes following trap.

 Could you try the attached patch?

 Regards,
 -- 
 Kimihiro Nonaka

 --001a114dd5907218ed0554a2a1d1
 Content-Type: text/plain; charset="US-ASCII"; name="drm_pci.c.diff"
 Content-Disposition: attachment; filename="drm_pci.c.diff"
 Content-Transfer-Encoding: base64
 X-Attachment-Id: f_j5aeo7yu0

 ZGlmZiAtLWdpdCBhL3N5cy9leHRlcm5hbC9ic2QvZHJtMi9wY2kvZHJtX3BjaS5jIGIvc3lzL2V4
 dGVybmFsL2JzZC9kcm0yL3BjaS9kcm1fcGNpLmMKaW5kZXggOWYzNzI5ZTMzZGQuLmZjNzEzMmRh
 Yjk5IDEwMDY0NAotLS0gYS9zeXMvZXh0ZXJuYWwvYnNkL2RybTIvcGNpL2RybV9wY2kuYworKysg
 Yi9zeXMvZXh0ZXJuYWwvYnNkL2RybTIvcGNpL2RybV9wY2kuYwpAQCAtMjQzLDExICsyNDMsMTcg
 QEAgZHJtX3BjaV9pcnFfaW5zdGFsbChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCBpcnFyZXR1cm5f
 dCAoKmhhbmRsZXIpKHZvaWQgKiksCiAJaXJxX2Nvb2tpZSA9IGttZW1fYWxsb2Moc2l6ZW9mKCpp
 cnFfY29va2llKSwgS01fU0xFRVApOwogCiAJaWYgKGRldi0+cGRldi0+bXNpX2VuYWJsZWQpIHsK
 LQkJaXJxX2Nvb2tpZS0+aW50cl9oYW5kbGVzID0gZGV2LT5wZGV2LT5pbnRyX2hhbmRsZXM7Ci0J
 CWRldi0+cGRldi0+aW50cl9oYW5kbGVzID0gTlVMTDsKKwkJaWYgKGRldi0+cGRldi0+aW50cl9o
 YW5kbGVzID09IE5VTEwpIHsKKwkJCWlmIChwY2lfbXNpX2FsbG9jX2V4YWN0KHBhLCAmaXJxX2Nv
 b2tpZS0+aW50cl9oYW5kbGVzLAorCQkJICAgIDEpKQorCQkJCWdvdG8gZXJyb3I7CisJCX0gZWxz
 ZSB7CisJCQlpcnFfY29va2llLT5pbnRyX2hhbmRsZXMgPSBkZXYtPnBkZXYtPmludHJfaGFuZGxl
 czsKKwkJCWRldi0+cGRldi0+aW50cl9oYW5kbGVzID0gTlVMTDsKKwkJfQogCX0gZWxzZSB7CiAJ
 CWlmIChwY2lfaW50eF9hbGxvYyhwYSwgJmlycV9jb29raWUtPmludHJfaGFuZGxlcykpCi0JCQly
 ZXR1cm4gLUVOT0VOVDsKKwkJCWdvdG8gZXJyb3I7CiAJfQogCiAJaW50cnN0ciA9IHBjaV9pbnRy
 X3N0cmluZyhwYS0+cGFfcGMsIGlycV9jb29raWUtPmludHJfaGFuZGxlc1swXSwKQEAgLTI1Nywx
 MiArMjYzLDE3IEBAIGRybV9wY2lfaXJxX2luc3RhbGwoc3RydWN0IGRybV9kZXZpY2UgKmRldiwg
 aXJxcmV0dXJuX3QgKCpoYW5kbGVyKSh2b2lkICopLAogCWlmIChpcnFfY29va2llLT5paF9jb29r
 aWUgPT0gTlVMTCkgewogCQlhcHJpbnRfZXJyb3JfZGV2KGRldi0+ZGV2LAogCQkgICAgImNvdWxk
 bid0IGVzdGFibGlzaCBpbnRlcnJ1cHQgYXQgJXMgKCVzKVxuIiwgaW50cnN0ciwgbmFtZSk7Ci0J
 CXJldHVybiAtRU5PRU5UOworCQlwY2lfaW50cl9yZWxlYXNlKHBhLT5wYV9wYywgaXJxX2Nvb2tp
 ZS0+aW50cl9oYW5kbGVzLCAxKTsKKwkJZ290byBlcnJvcjsKIAl9CiAKIAlhcHJpbnRfbm9ybWFs
 X2RldihkZXYtPmRldiwgImludGVycnVwdGluZyBhdCAlcyAoJXMpXG4iLCBpbnRyc3RyLCBuYW1l
 KTsKIAkqY29va2llcCA9IGlycV9jb29raWU7CiAJcmV0dXJuIDA7CisKK2Vycm9yOgorCWttZW1f
 ZnJlZShpcnFfY29va2llLCBzaXplb2YoKmlycV9jb29raWUpKTsKKwlyZXR1cm4gLUVOT0VOVDsK
 IH0KIAogc3RhdGljIHZvaWQK
 --001a114dd5907218ed0554a2a1d1--

From: Makoto Fujiwara <makoto@ki.nu>
To: gnats-bugs@netbsd.org
Cc: 
Subject: Re: kern/52409: uvm_fault when waking up after sleep (Let's Note CF-{N,S}-9, etc.)
Date: Wed, 19 Jul 2017 23:45:45 +0900

 Thanks nonaka@, yes, your patch works fine on Let's Note CF-N9.

 Thank you,
 ---
 Makoto Fujiwara, 
 Chiba, Japan, Narita Airport and Disneyland prefecture.
 http://www.ki.nu/~makoto/pkgsrc/check-update/00_Summary.html
 Key fingerprint = 0BFA FAEB EAD1 90BA 7498  8F85 6809 9E0B B7EF A12E

From: coypu@sdf.org
To: gnats-bugs@NetBSD.org
Cc: 
Subject: Re: kern/52409: uvm_fault when waking up after sleep (Let's Note
 CF-{N,S}-9, etc.)
Date: Wed, 26 Jul 2017 11:40:17 +0000

 Please commit

From: "NONAKA Kimihiro" <nonaka@netbsd.org>
To: gnats-bugs@gnats.NetBSD.org
Cc: 
Subject: PR/52409 CVS commit: src/sys/external/bsd/drm2/pci
Date: Thu, 27 Jul 2017 02:11:24 +0000

 Module Name:	src
 Committed By:	nonaka
 Date:		Thu Jul 27 02:11:24 UTC 2017

 Modified Files:
 	src/sys/external/bsd/drm2/pci: drm_pci.c

 Log Message:
 PR/52409: Avoid panic at resume.

 XXX: pullup-8


 To generate a diff of this commit:
 cvs rdiff -u -r1.17 -r1.18 src/sys/external/bsd/drm2/pci/drm_pci.c

 Please note that diffs are not public domain; they are subject to the
 copyright notices on the relevant files.

From: Kimihiro Nonaka <nonakap@gmail.com>
To: "gnats-bugs@netbsd.org" <gnats-bugs@netbsd.org>
Cc: kern-bug-people@netbsd.org, 
	"gnats-admin@netbsd.org" <gnats-admin@netbsd.org>, "netbsd-bugs@netbsd.org" <netbsd-bugs@netbsd.org>, 
	=?UTF-8?B?6Jek5Y6fIOiqoA==?= <makoto@ki.nu>
Subject: Re: kern/52409: uvm_fault when waking up after sleep (Let's Note
 CF-{N,S}-9, etc.)
Date: Thu, 27 Jul 2017 16:19:23 +0900

 Could you try src/sys/external/bsd/drm2/pci/drm_pci.c 1.18?

 2017-07-19 23:45 GMT+09:00 Makoto Fujiwara <makoto@ki.nu>:

 > The following reply was made to PR kern/52409; it has been noted by GNATS.
 >
 > From: Makoto Fujiwara <makoto@ki.nu>
 > To: gnats-bugs@netbsd.org
 > Cc:
 > Subject: Re: kern/52409: uvm_fault when waking up after sleep (Let's Note CF-{N,S}-9, etc.)
 > Date: Wed, 19 Jul 2017 23:45:45 +0900
 >
 >  Thanks nonaka@, yes, your patch works fine on Let's Note CF-N9.
 >
 >  Thank you,
 >  ---
 >  Makoto Fujiwara,
 >  Chiba, Japan, Narita Airport and Disneyland prefecture.
 >  http://www.ki.nu/~makoto/pkgsrc/check-update/00_Summary.html
 >  Key fingerprint = 0BFA FAEB EAD1 90BA 7498  8F85 6809 9E0B B7EF A12E
 >

 Regards,
 -- 
 Kimihiro Nonaka

From: "Soren Jacobsen" <snj@netbsd.org>
To: gnats-bugs@gnats.NetBSD.org
Cc: 
Subject: PR/52409 CVS commit: [netbsd-8] src/sys/external/bsd/drm2/pci
Date: Tue, 1 Aug 2017 23:12:06 +0000

 Module Name:	src
 Committed By:	snj
 Date:		Tue Aug  1 23:12:06 UTC 2017

 Modified Files:
 	src/sys/external/bsd/drm2/pci [netbsd-8]: drm_pci.c

 Log Message:
 Pull up following revision(s) (requested by nonaka in ticket #163):
 	sys/external/bsd/drm2/pci/drm_pci.c: revision 1.18
 PR/52409: Avoid panic at resume.


 To generate a diff of this commit:
 cvs rdiff -u -r1.17 -r1.17.2.1 src/sys/external/bsd/drm2/pci/drm_pci.c

 Please note that diffs are not public domain; they are subject to the
 copyright notices on the relevant files.

State-Changed-From-To: open->closed
State-Changed-By: maya@NetBSD.org
State-Changed-When: Mon, 04 Jun 2018 10:21:35 +0000
State-Changed-Why:
fixed and pulled up to -8. This specific code segment was changed between netbsd-7 and netbsd-8. since I could preivously suspend with the old code, I suspect it wasn't a problem with it.


>Unformatted:

NetBSD Home
NetBSD PR Database Search

(Contact us) $NetBSD: query-full-pr,v 1.43 2018/01/16 07:36:43 maya Exp $
$NetBSD: gnats_config.sh,v 1.9 2014/08/02 14:16:04 spz Exp $
Copyright © 1994-2017 The NetBSD Foundation, Inc. ALL RIGHTS RESERVED.