| 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
 |