On Wed, Feb 27, 2008 at 04:32:50PM +0800, Cathy Zhou wrote:
> Cathy Zhou wrote:
> >>now the domU hangs during boot with the following command:
> >>    /sbin/ifconfig rtls0 plumb
> >>
> >>
> >>here's the interface that softmac_hold_device() is trying to lookup:
> >>---8<---
> >>[0]> d5fe366c$c2
> >>...
> >>mod_hash_find+0x22(d58fa900, d5fe37d0)
> >>...
> >>[0]> d5fe37d0/s
> >>0xd5fe37d0:     rtls0
> >>---8<---
> >>
> >>and here's the contents of softmac_hash:
> >>---8<---
> >>[0]> *softmac_hash::walk modent | ::modent -v | ::print softmac_t
> >>smac_devname
> >>smac_devname = [ "rtls1" ]
> >>---8<---
> >>
> >>so it really doesn't seem like we'll ever be comming out of this loop.
> >>it's worth mentioning that the rtls interface in the domU used to
> >>be rtls0, hence the existance of a /etc/hostname.rtls0 file and
> >>the ifconfig command during boot.  but now the instance number of
> >>the rtls interface has changed.  this change is also reflected in
> >>prtconf:
> >>---8<---
> >>[0]> d31e8e28::prtconf
> >>DEVINFO  NAME
> >>d31ece20 i86pc (driver name: rootnex)
> >>    d31eca48 pci, instance #0 (driver name: pci)
> >>        d31e8e28 pci10ec,8139, instance #1 (driver name: rtls)
> >>---8<---
> >>
> >>so it seems like there might be multiple bugs:
> >>
> >>- we're stuck in an infinite loop in softmac_hold_device()
> >>  (so either this function or it's callers are broken)
> >>
> >>- for some reason bfu'ing the domain resulted in the rtls
> >>  interface instance number changing.
> >>
> >I am not sure about the second issue and I don't think that is Clearview
> >related. But I have some thoughts on the first issue.
> >
> >In softmac_hold_device(), we first tried to hold the rtls0 device and it
> >succeeded:
> >
> >         if ((dip = ddi_hold_devi_by_instance(getmajor(dev), ppa, 0)) ==
> >         NULL)
> >                 return (ENOENT);
> >
> >That is why it is spinning to find the rtls0 in softmac_hash. Based on my
> >read of the problem, there is only one rtls device instance, which was
> >"rtls1" and after reboot it changed to "rtls0". If so, it is strange to
> >see "rtls1" but no "rtls0" in the softmac_hash. There is something wrong
> >there.
> >
> I had another look. Ed said that the rtls device used to be rtls0 and now
> it is changed to rtls1. Therefore, the rtls1 in the softmac_hash is
> expected.
>
> Then the question becomes, why the following check in softmac_hold_device()
> succeeded?
>
>       if ((dip = ddi_hold_devi_by_instance(getmajor(dev), ppa, 0)) == NULL)
>               return (ENOENT);
>

a fine question!  but it's one that i am not going to be able to answer
before going to bed.  ;)

ed

Reply via email to