The contents of the "conn_t *connp" argument for that panic
might be relevant, too:

> cde9f540::print conn_t
{
    conn_lock = {
        _opaque = [ 0, 0 ]
    }
    conn_ref = 0
    conn_flags = 0x200008
    conn_proto_priv = {
        cp_tcp = 0xcde9f900
        cp_udp = 0xcde9f900
        cp_icmp = 0xcde9f900
        cp_rts = 0xcde9f900
        cp_priv = 0xcde9f900
    }
    conn_cv = {
        _opaque = 0
    }
    conn_ulp = 0x11
    conn_recv = udp_input
    conn_sqp = 0
    conn_state_flags = 0x15
    conn_ire_cache = 0
    conn_on_sqp = 0
    conn_dontroute = 0
    conn_loopback = 0
    conn_broadcast = 0
    conn_reuseaddr = 0
    conn_multicast_loop = 0x1
    conn_multi_router = 0
    conn_draining = 0
    conn_did_putbq = 0
    conn_unspec_src = 0
    conn_policy_cached = 0
    conn_in_enforce_policy = 0
    conn_out_enforce_policy = 0
    conn_af_isv6 = 0
    conn_pkt_isv6 = 0
    conn_ip_recvpktinfo = 0
    conn_ipv6_recvhoplimit = 0
    conn_ipv6_recvhopopts = 0
    conn_ipv6_recvdstopts = 0
    conn_ipv6_recvrthdr = 0
    conn_ipv6_recvrtdstopts = 0
    conn_ipv6_v6only = 0
    conn_ipv6_recvtclass = 0
    conn_ipv6_recvpathmtu = 0
    conn_pathmtu_valid = 0
    conn_ipv6_dontfrag = 0
    conn_fully_bound = 0
    conn_recvif = 0
    conn_recvslla = 0                 
    conn_mdt_ok = 0
    conn_nexthop_set = 0
    conn_allzones = 0
    conn_lso_ok = 0
    conn_nofailover_ill = 0
    conn_dhcpinit_ill = 0
    conn_latch = 0
    conn_outgoing_ill = 0
    conn_send = 0
    conn_rq = 0xcdbd3ca8
    conn_wq = 0xcdbd3d28
    conn_dev = 0x1c
    conn_cred = 0
    conn_g_fanout = 0
    conn_g_next = 0
    conn_g_prev = 0
    conn_policy = 0
    conn_bound_source_v6 = {
        _S6_un = {
            _S6_u32 = [ 0, 0, 0, 0 ]
            _S6_u8 = [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ]
            __S6_align = 0
        }
    }
    conn_fanout = 0
    conn_next = 0
    conn_prev = 0
    connua_v6addr = {
        connua_laddr = {
            _S6_un = {
                _S6_u32 = [ 0, 0, 0, 0 ]
                _S6_u8 = [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ]
                __S6_align = 0
            }
        }
        connua_faddr = {
            _S6_un = {
                _S6_u32 = [ 0, 0, 0, 0 ]
                _S6_u8 = [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ]
                __S6_align = 0
            }
        }
    }
    u_port = {
        conn_ports2 = 0
        tcpu_ports = {
            tcpu_fport = 0
            tcpu_lport = 0
        }                             
    }
    conn_unused_byte = 0
    conn_proto = 0
    conn_incoming_ill = 0
    conn_outgoing_pill = 0
    conn_oper_pending_ill = 0xcbaaf014
    conn_ilg = 0
    conn_ilg_allocated = 0
    conn_ilg_inuse = 0
    conn_ilg_walker_cnt = 0
    conn_refcv = {
        _opaque = 0
    }
    conn_multicast_ipif = 0
    conn_multicast_ill = 0
    conn_orig_bound_ifindex = 0
    conn_orig_multicast_ifindex = 0
    conn_drain_next = 0
    conn_drain_prev = 0
    conn_idl = 0
    conn_ipsec_opt_mp = 0
    conn_src_preferences = 0
    mtuinfo = {
        ip6m_addr = {
            sin6_family = 0
            sin6_port = 0
            sin6_flowinfo = 0
            sin6_addr = {
                _S6_un = {
                    _S6_u32 = [ 0, 0, 0, 0 ]
                    _S6_u8 = [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ]
                    __S6_align = 0
                }
            }
            sin6_scope_id = 0
            __sin6_src_id = 0
        }
        ip6m_mtu = 0
    }
    conn_zoneid = 0
    conn_nexthop_v6 = {
        _S6_un = {
            _S6_u32 = [ 0, 0, 0, 0 ]
            _S6_u8 = [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ]
            __S6_align = 0
        }
    }
    conn_peercred = 0
    conn_ulp_labeled = 0              
    conn_mlp_type = 0
    conn_anon_mlp = 0
    conn_anon_port = 0
    conn_mac_exempt = 0
    conn_spare = 0
    conn_netstack = 0
    conn_trace_last = 0x2
    conn_trace_buf = [
        {
            ctb_depth = 0
            ctb_stack = [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ]
        }
        {
            ctb_depth = 0xd
            ctb_stack = [ 0xfa1fcea2, 0xfa17cf59, 0xfa16fa38, 0xfa16f6c0, 
0xfa247d1f, 
0xfa247933, 0xfa2464be, 0xfe85d36d, 0xfe9db72c, 0xfe9da8bc, 0xfa11f89e, 
0xfea4ab89, 
0xfe94e6f1, 0, 0 ]
        }
        {
            ctb_depth = 0xf
            ctb_stack = [ 0xfa1fcf12, 0xfa1a5c89, 0xfa156177, 0xfa23e2a8, 
0xfe9dfc57, 
0xfe9d399e, 0xfa11f0c0, 0xfea4a7e5, 0xfe93b9fc, 0xfe93b8fc, 0xfe9318ce, 
0xfe93143d, 
0xfe9c76db, 0xfe8e1de6, 0xfe8e1670 ]
        }
        {
            ctb_depth = 0
            ctb_stack = [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ]
        }
        {
            ctb_depth = 0
            ctb_stack = [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ]
        }
        {
            ctb_depth = 0
            ctb_stack = [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ]
        }
        {
            ctb_depth = 0
            ctb_stack = [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ]
        }
        {
            ctb_depth = 0
            ctb_stack = [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ]
        }
        {
            ctb_depth = 0
            ctb_stack = [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ]
        }
        {                             
            ctb_depth = 0
            ctb_stack = [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ]
        }
    ]
}


> You're brave. :-)  I hadn't even tested the code myself yet.
> 
> I'll have a look at this later today.
> 
>     -- Garrett
> 
> Juergen Keil wrote:
> > Garrett wrote:
> >
> >   
> >> For those who've wanted it, I posted the webrev from the dnet conversion 
> >> that I did at OpenSolaris Developer Summit 2007 at 
> >> http://cr.opensolaris.org/~gdamore/dnet-suspend/
> >>     
> >
> > Just tried that dnet patch on my ASUS P2B-LS "S3 suspend-to-ram" test box,
> > but it's crashing the box with a failed assertion panic during driver 
resume:
> >
> >   assertion failed: mutex_owned((&dnetp->intrlock)), in file dnet.c line 
2308
> >     
> >   stack backtrace shows
> >
> >       :panic...
> >   dnet:set_sia+12c(...)
> >   dnet:dnet_init_board+2a(...)
> >   dnet:dnetattach+5bd(..., 1)
> >   ...
> >   
> > (messages manually copied, disk device is suspended, so no crash dump :-)
> >
> >
> > I think the "dnet_init_board(macinfo);" call in the dnetattach()
> > DDI_RESUME case should be moved after the mutex_enter() calls.
> >
> >
> > With that change, suspend / resume does not panic any more.
> >
> > But the dnet device seems to be dead after a resume.  And after maybe
> > a minute,  I got another panic when I tried an "ifconfig -a" after the
> > resume:
> >
> >   
> >> ::status 
> >>     
> > debugging crash dump vmcore.3 (32-bit) from elise
> > operating system: 5.11 wos_b78_debug (i86pc)
> > panic message: 
> > assertion failed: connp->conn_oper_pending_ill == 0, file: 
../../common/inet/ip/
> > ipclassifier.c, line: 2219
> > dump content: kernel pages only
> >   
> >> $C
> >>     
> > ccdd6c58 vpanic(feae72dc, fa2a1fc4, fa2a2b18, 8ab)
> > ccdd6c78 assfail+0x5a(fa2a1fc4, fa2a2b18, 8ab)
> > ccdd6c98 ipcl_conn_cleanup+0x209(cde9f540)
> > ccdd6cc8 ipcl_conn_destroy+0x151()
> > ccdd6ce0 udp_close+0xb8(cdbd3ca8, 3, cd552690)
> > ccdd6d08 qdetach+0x9b(cdbd3ca8, 1, 3, cd552690, 0)
> > ccdd6d50 strclose+0x392(cde09580, 3, cd552690)
> > ccdd6d80 socktpi_close+0x1cc(cde09580, 3, 1, 0, 0, cd552690)
> > ccdd6dcc fop_close+0x51(cde09580, 3, 1, 0, 0, cd552690)
> > ccdd6e18 closef+0x88(cd3bd700)
> > ccdd6e48 closeall+0x58(cb6bf9a4)
> > ccdd6e90 proc_exit+0x40a(2, 2)
> > ccdd6ea4 exit+0x11(2, 2)
> > ccdd6efc psig+0x4c3()
> > ccdd6f7c post_syscall+0x3f6(4, cc6f3880)
> > ccdd6f90 syscall_exit+0x48(cc6f3880, 4, cc6f3880)
> > ccdd6fa4 sys_call+0x21a()
> >
> >
> >   
> >> ::msgbuf
> >>     
> > ...
> > System is being suspended
> > NOTICE: acpica_ddi_setwake: could not get handle for 
/[EMAIL PROTECTED],0/pci10b9,[EMAIL PROTECTED], ohci:0
> > NOTICE: acpica_ddi_setwake: could not get handle for 
/[EMAIL PROTECTED],0/pci10b9,[EMAIL PROTECTED],1, ohci:1
> > NOTICE: acpica_ddi_setwake: could not get handle for 
/[EMAIL PROTECTED],0/pci10b9,[EMAIL PROTECTED],2, ohci:2
> > NOTICE: acpica_ddi_setwake: could not get handle for 
/[EMAIL PROTECTED],0/pci10b9,[EMAIL PROTECTED],3, ehci:0
> > NOTICE: acpica_ddi_setwake: could not get handle for 
/[EMAIL PROTECTED],0/pci10b9,[EMAIL PROTECTED],3, ehci:0
> > NOTICE: acpica_ddi_setwake: could not get handle for 
/[EMAIL PROTECTED],0/pci10b9,[EMAIL PROTECTED],2, ohci:2
> > NOTICE: acpica_ddi_setwake: could not get handle for 
/[EMAIL PROTECTED],0/pci10b9,[EMAIL PROTECTED],1, ohci:1
> > NOTICE: acpica_ddi_setwake: could not get handle for 
/[EMAIL PROTECTED],0/pci10b9,[EMAIL PROTECTED], ohci:0
> >
> > The system is back where you left!
> > System has been resumed.
> >
> > panic[cpu0]/thread=cc6f3880: 
> > assertion failed: connp->conn_oper_pending_ill == 0, file: 
../../common/inet/ip/
> > ipclassifier.c, line: 2219
> >
> >
> > ccdd6c78 genunix:assfail+5a (fa2a1fc4, fa2a2b18,)
> > ccdd6c98 ip:ipcl_conn_cleanup+209 (cde9f540)
> > ccdd6cc8 ip:ipcl_conn_destroy+151 (cde9f540, cd5cf27c,)
> > ccdd6ce0 ip:udp_close+b8 (cdbd3ca8, 3, cd5526)
> > ccdd6d08 genunix:qdetach+9b (cdbd3ca8, 1, 3, cd5)
> > ccdd6d50 genunix:strclose+392 (cde09580, 3, cd5526)
> > ccdd6d80 sockfs:socktpi_close+1cc (cde09580, 3, 1, 0, )
> > ccdd6dcc genunix:fop_close+51 (cde09580, 3, 1, 0, )
> > ccdd6e18 genunix:closef+88 (cd3bd700)
> > ccdd6e48 genunix:closeall+58 (cb6bf9a4)
> > ccdd6e90 genunix:proc_exit+40a (2, 2)
> > ccdd6ea4 genunix:exit+11 (2, 2)
> > ccdd6efc genunix:psig+4c3 (ccdd6f90, 8047a54, )
> > ccdd6f7c genunix:post_syscall+3f6 (4, cc6f3880)
> > ccdd6f90 genunix:syscall_exit+48 (cc6f3880, 4, cc6f38)
> >
> > syncing file systems...
> >  done
> > dumping to /dev/dsk/c0d0s1, offset 83951616, content: kernel
> >   
> >> ::cpuinfo -v
> >>     
> >  ID ADDR     FLG NRUN BSPL PRI RNRN KRNRN SWITCH THREAD   PROC
> >   0 fec24b98  1b    1    0  59   no    no t-0    cc6f3880 ifconfig
> >                |    |
> >     RUNNING <--+    +-->  PRI THREAD   PROC
> >       READY                60 ca94cde0 sched
> >      EXISTS         
> >      ENABLE         
> >
> >
> >   
> 

Juergen Keil                    [EMAIL PROTECTED]
Tools GmbH                      +49 (228) 9858011
Vorgebirgsstraße 37-39          http://www.tools.de
53119 BONN 

Sitz- und Registergericht       HRB Bonn 4026
Geschäftsführung                Wolfgang Franke & Wolfgang Solfrank

_______________________________________________
driver-discuss mailing list
[email protected]
http://mail.opensolaris.org/mailman/listinfo/driver-discuss

Reply via email to