Re: device_attach(9) and driver initialization

看板FB_current作者時間13年前 (2012/05/02 10:01), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串18/26 (看更多)
On Apr 7, 2012, at 9:04 AM, Nathan Whitehorn wrote: > On 04/07/12 07:50, Konstantin Belousov wrote: >> Hello, >> there seems to be a problem with device attach sequence offered by = newbus. >> Basically, when device attach method is executing, device is not = fully >> initialized yet. Also the device state in the newbus part of the = world >> is DS_ALIVE. There is definitely no shattering news in the = statements, >> but drivers that e.g. create devfs node to communicate with consumers >> are prone to a race. >>=20 >> If /dev node is created inside device attach method, then usermode >> can start calling cdevsw methods before device fully initialized = itself. >> Even more, if device tries to use newbus helpers in cdevsw methods, >> like device_busy(9), then panic occurs "called for unatteched = device". >> I get reports from users about this issues, to it is not something >> that only could happen. >>=20 >> I propose to add DEVICE_AFTER_ATTACH() driver method, to be called >> from newbus right after device attach finished and newbus considers >> the device fully initialized. Driver then could create devfs node >> in the after_attach method instead of attach. Please see the patch = below. >>=20 >=20 > Something like this would also be very useful for drivers that need to = interact across the device tree, if newbus called it only after all = drivers have been attached. Drivers that need to see other potentially = attached drivers now need to do some hacks with SYSINIT. Would it be = possible to do this? I don't think it changes the functionality you = need. Well, there's a problem here. You never know that you've attached = everything, so you could never really call it. Many busses enumerate = asynchronously, so it may be hard to get the semantics that you desire = unless the two devices you want to coordinate are in the static part of = the tree. Warner _______________________________________________ freebsd-current@freebsd.org mailing list http://lists.freebsd.org/mailman/listinfo/freebsd-current To unsubscribe, send any mail to "freebsd-current-unsubscribe@freebsd.org"
文章代碼(AID): #1Fe9Lieg (FB_current)
討論串 (同標題文章)
文章代碼(AID): #1Fe9Lieg (FB_current)