[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-devel] RE: Propose "xen_init()" call first thing in Xen drivers
No comments or objections? If not, I will include the (minimal) changes in the next ia64 merge which I am preparing now. > -----Original Message----- > From: Magenheimer, Dan (HP Labs Fort Collins) > Sent: Wednesday, September 21, 2005 3:51 PM > To: xen-devel@xxxxxxxxxxxxxxxxxxx > Cc: 'Matt Chapman' > Subject: Propose "xen_init()" call first thing in Xen drivers > > Here's another patch needed for ia64 in various xen drivers > that should probably be discussed before the actual patch > code is attached/applied. > > Per previous posts, Xenlinux/ia64 is transparently paravirtualized, > which means the same bits run on top of Xen as on top of raw > iron. > > To accomplish this, we have to be very careful to avoid doing > Xen-like things when we are not running on Xen. The Xen > drivers tend to do Xen-like things early and often. To avoid > the Xen drivers doing nasty things when not running on Xen, > we have added a single line at the beginning of various > drivers/xen/xxx xxx_init() routines, namely: > > if (xen_init() < 0) return -ENODEV > > Where xen_init does "if (running_on_xen()) return -1;" > (among other things... see below) and where > running_on_xen() does the obvious (archdep) test. > We have been maintaining these changes out-of-tree. > > Note that the routine need not be provided on x86 as > the line can be easily ifdef'd away by adding > > #define xen_init() (0) > > in a file such as asm-x86/hypervisor.h. > > But wait... on xenlinux/ia64, xen_init does something > else! In xenlinux/x86 there was (not sure if it is still > there) some funky linker stuff to ensure that the drivers > are linked in the right order as bad things happened > if they weren't (due to the way init() works on Linux). > On xenlinux/ia64, xen_init() eliminates this problem with > a simple static one-shot variable in xen_init; regardless > of which routine calls xen_init first, xen_init does the > necessary initialization once. No linker magic required. > > So adding the xen_init test need not be ifdef'd away > for x86. > > For xenlinux/ia64, we have the test added in a few > places, namely: xencons_init, gnttab_init, xenbus_probe_init. > It may also be needed elsewhere as we've been struggling > out-of-tree with keeping up with changes in driver/xen, > haven't tested on raw iron in awhile, don't have networking > working yet, etc. > > So... how about we add the one line test to the init routines > of the various Xen drivers (including "core" drivers)? > > Thanks, > Dan > > P.S. The xen_init approach should be properly credited to > Matt Chapman. I am just proposing it for the core tree. > _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxxxxxxxx http://lists.xensource.com/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |