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
