NetBSD-Bugs archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

Re: kern/52111: wmX i82574L inoperative in monoprocessor mode (i386)



The following reply was made to PR kern/52111; it has been noted by GNATS.

From: Kengo NAKAHARA <k-nakahara%iij.ad.jp@localhost>
To: kardel%netbsd.org@localhost, gnats-bugs%NetBSD.org@localhost, kern-bug-people%netbsd.org@localhost,
        gnats-admin%netbsd.org@localhost, netbsd-bugs%netbsd.org@localhost
Cc: 
Subject: Re: kern/52111: wmX i82574L inoperative in monoprocessor mode (i386)
Date: Wed, 29 Mar 2017 16:31:30 +0900

 Hi,
 
 On 2017/03/29 15:02, Frank Kardel wrote:
 > As for the panic in the boot -1 case the
 > panic of "intrctl list" occurred in:
 > 
 > sys/arch/x86/x86/intr.c:
 > 
 > static bool
 > intr_is_affinity_intrsource(struct intrsource *isp, const kcpuset_t 
 > *cpuset)
 > {
 >          struct cpu_info *ci;
 > 
 >          KASSERT(mutex_owned(&cpu_lock));
 > 
 >  >>>       ci = isp->is_handlers->ih_cpu;
 >          KASSERT(ci != NULL);
 > 
 >          return kcpuset_isset(cpuset, cpu_index(ci));
 > }
 > 
 > due to is_handlers == NULL. The whole struct intrsource seems to be 
 > zeroed except fir is_intrid, but
 > correctly linked.
 > 
 > Value of the intrsource is:
 > (gdb) print *isp
 > $2 = {is_maxlevel = 0, is_pin = 0, is_handlers = 0x0, is_pic = 0x0, 
 > is_recurse = 0x0, is_resume = 0x0, is_lwp = 0x0, is_evcnt = {ev_count = 
 > 0, ev_list = {tqe_next = 0x0, tqe_prev = 0x0}, ev_type = 0 '\000', 
 > ev_grouplen = 0 '\000',
 >      ev_namelen = 0 '\000', ev_pad1 = 0 '\000', ev_parent = 0x0, 
 > ev_group = 0x0, ev_name = 0x0}, is_flags = 0, is_type = 0, is_idtvec = 
 > 0, is_minlevel = 0, is_evname = '\000' <repeats 31 times>,
 >    is_intrid = "irq 9", '\000' <repeats 58 times>, is_xname = '\000' 
 > <repeats 255 times>, is_active_cpu = 0, is_saved_evcnt = 0xc3423ba8, 
 > is_list = {sqe_next = 0xc3a40e08}}
 > (gdb)
 
 Thank you for your debugging!
 
 struct intrsource must be initialized in intr_establish(), however
 the *isp isn't. It seems the *isp whose is_intrid=="irq 9" is wm(4),
 because there is no such device in your last mail "intrctl list"
 when boot -1 . So, I think my workaround patch does not wholly fit
 your "boot -1" environment.
 
 I implement fix code, but it will take a while to do it...
 
 Could you keep using the workaround code and avoiding "intrctl list" ?
 Please use "vmstat -e" instead of "intrctl list" if you want to know
 interrupt count, sorry.
 
 
 Thanks,
 
 -- 
 //////////////////////////////////////////////////////////////////////
 Internet Initiative Japan Inc.
 
 Device Engineering Section,
 IoT Platform Development Department,
 Network Division,
 Technology Unit
 
 Kengo NAKAHARA <k-nakahara%iij.ad.jp@localhost>
 


Home | Main Index | Thread Index | Old Index