Gabriele Bulfon wrote:
No way.........USB CDC modem/fax under VMWare Esxi 4.1 does not work....
Everything looks fine under the OS (devices, dev/cua, messages from the USB 
management),
but then tip does not attach as if the dev file is missing, or maybe just not 
responding....
Anyone does have the ability to check this why?

Try running this dtrace script while doing the failing tip, to see
where in the kernel the ENXIO is coming from. Drop it into a
file with the #! as the first line and with +x access, and just run
the file.

#!/usr/sbin/dtrace -Fs
#pragma D option bufsize=1m
#pragma D option specsize=1m

syscall::open:entry
/execname == "tip"/
{
       /*
* The call to speculation() creates a new speculation. If this fails, * dtrace(1M) will generate an error message indicating the reason for * the failed speculation(), but subsequent speculative tracing will be
        * silently discarded.
        */
       self->spec = speculation();
       speculate(self->spec);

       /*
        * Because this printf() follows the speculate(), it is being
* speculatively traced; it will only appear in the data buffer if the
        * speculation is subsequently commited.
        */
       printf("%s", stringof(copyinstr(arg0)));
}

fbt:::entry
/self->spec/
{
       /*
* A speculate() with no other actions speculates the default action:
        * tracing the EPID.
        */
       speculate(self->spec);
       printf("%x %x %x %x %x", arg0, arg1, arg2, arg3, arg4);
}

fbt:::return
/self->spec/
{
       /*
* A speculate() with no other actions speculates the default action:
        * tracing the EPID.
        */
       speculate(self->spec);
       printf("%x errno=%d", arg1, errno);
}

syscall::open:return
/self->spec/
{
       /*
        * To balance the output with the -F option, we want to be sure that
        * every entry has a matching return.  Because we speculated the
        * open entry above, we want to also speculate the open return.
        * This is also a convenient time to trace the errno value.
        */
       speculate(self->spec);
       trace(errno);
}

syscall::open:return
/self->spec && errno == ENXIO/
{
       /*
        * If errno is ENXIO, we want to commit the speculation.
        */
       commit(self->spec);
       self->spec = 0;
}

syscall::open:return
/self->spec && errno != ENXIO/
{
       /*
        * If errno is not ENXIO, we discard the speculation.
        */
       discard(self->spec);
       self->spec = 0;
}

--
Andrew

_______________________________________________
OpenIndiana-discuss mailing list
[email protected]
http://openindiana.org/mailman/listinfo/openindiana-discuss

Reply via email to