All of lore.kernel.org
 help / color / mirror / Atom feed
From: Daniel De Graaf <dgdegra@tycho.nsa.gov>
To: Ian Campbell <Ian.Campbell@citrix.com>
Cc: "xen-devel@lists.xensource.com" <xen-devel@lists.xensource.com>,
	Ian Jackson <Ian.Jackson@eu.citrix.com>
Subject: Re: [PATCH] xenbus: Fix loopback event channel assuming domain 0
Date: Fri, 07 Oct 2011 12:37:36 -0400	[thread overview]
Message-ID: <4E8F2AD0.2060904@tycho.nsa.gov> (raw)
In-Reply-To: <1317973956.21903.281.camel@zakaz.uk.xensource.com>

On 10/07/2011 03:52 AM, Ian Campbell wrote:
> On Thu, 2011-10-06 at 19:32 +0100, Daniel De Graaf wrote:
>> On 10/06/2011 01:53 PM, Ian Jackson wrote:
>>> Daniel De Graaf writes ("[Xen-devel] [PATCH] xenbus: Fix loopback event channel assuming domain 0"):
>>>> The xenbus event channel established in xenbus_init is intended to be a
>>>> loopback channel, but the remote domain was hardcoded to 0; this will
>>>> cause the channel to be unusable when xenstore is not being run in
>>>> domain 0.
>>>
>>> I'm not sure I understand this.
>>>
>>> ...
>>>>  		/* Next allocate a local port which xenstored can bind to */
>>>>  		alloc_unbound.dom        = DOMID_SELF;
>>>> -		alloc_unbound.remote_dom = 0;
>>>> +		alloc_unbound.remote_dom = DOMID_SELF;
>>>
>>> The comment doesn't suggest that this is supposedly a loopback channel
>>> (ie one for use by the xenbus client for signalling to itself,
>>> somehow).
>>
>> The event channel being changed here is a loopback event channel exposed in
>> /proc/xen/xsd_port, which xenstored binds to. This code is only used for the
>> initial domain; otherwise, the shared info page is used.
> 
> How does this change impact the regular dom0? It will be expecting a
> xenstored to startup locally when in reality it actually needs to wait
> for another domain and then connect to that.

This change does not attempt to address the regular dom0, except for not
breaking existing setups where xenstored resides in dom0.

> Diego Ongaro did some work several years ago on this issue, it was most
> recently re-posted by Alex Zeffert, patches against xen-unstable and the
> linux-2.6.18 tree:
> http://lists.xensource.com/archives/html/xen-devel/2009-03/msg01484.html
> http://lists.xensource.com/archives/html/xen-devel/2009-03/msg01488.html
> 
> Part of the trick was to fixup the kernel side in a way which was
> compatible with both existing Xen releases while also supporting new
> releases which support both stub and non-stub xenstore. To do this Diego
> setup a lazy xenbus initialisation with a state machine to track which
> case was active, with transitions triggered either from the local-mmap
> of /proc/xen/xenbus_xsd (so was backwards compatible) or an ioctl called
> by the tool which builds the stub domain to tell the dom0 xenbus code
> which domain/mfn/evtchn contains the xenstored and dom0's connection to
> it (the patcheset includes a cut-down builder which works without
> xenstore).
> 
> http://lists.xensource.com/archives/html/xen-devel/2009-03/msg01487.html
> is the key kernel side patch in that regard.
> 
> Diego did some initial work with xenstored in a Linux domU, but I think
> the final patchset was stub-xenstored (i.e. ocaml xenstored on minios,
> possibly C xenstored on minios too), so I'm not sure about the xenstored
> in Linux domU use case.
> 
> Some of the more trivial bits of this series were committed but the real
> meat wasn't really pushed through.
> 

Thanks for pointing out that series; I hadn't seen it yet. The setup I am
currently using has a non-Linux dom0, so the state machine in dom0 was not
required. A separate minios-based xenstored is the eventual goal; this patch
just avoids creating a broken event channel in an initial domain whose
domain ID is not 0.

I do have a more complex version of this patch that replaces the initial
domain check with a check on the start_info structure so that an initial
domain can have xenstore information placed in its start_info field like
any other domain; would this be of interest?

>>> Rather it's supposed to be a channel to xenstore.  So the remote
>>> domain should be the xenstore domain, which should come from the
>>> shared info page.
>>>
>>> Have you actually tested this with a separate xenstored domain ?
>>>
>>> Ian.
>>>
>>
>> The test setup that exposed this issue is having a non-dom0 Linux domain
>> running xenstored (in addition to other services); this domain is started
>> with the SIF_INITDOMAIN flag set. It has been tested and can start other
>> domains with references back to the xenstored running there; the local
>> kernel is able to communicate with the locally running xenstore to provide
>> backend services.
>>
>> The test for xen_initial_domain() here might better be replaced with a
>> check on xen_start_info->store_evtchn which should be a valid event channel
>> on all domains except the domain running xenstored. This seems like a more
>> elegant solution than relying on the SIF_INITDOMAIN flag to determine the
>> location of xenstore.
>>
> 

  reply	other threads:[~2011-10-07 16:37 UTC|newest]

Thread overview: 13+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2011-10-05 14:28 [PATCH] xenbus: Fix loopback event channel assuming domain 0 Daniel De Graaf
2011-10-06 17:53 ` Ian Jackson
2011-10-06 18:32   ` Daniel De Graaf
2011-10-07  7:52     ` Ian Campbell
2011-10-07 16:37       ` Daniel De Graaf [this message]
2011-10-10 12:54         ` Ian Campbell
2011-10-11 14:52           ` Daniel De Graaf
2011-10-12 16:32             ` Ian Campbell
2011-10-12 18:47               ` Daniel De Graaf
2011-10-13  9:24                 ` Ian Campbell
2011-10-13 18:24                   ` Konrad Rzeszutek Wilk
2011-10-13 20:07                     ` [PATCH 1/2] " Daniel De Graaf
2011-10-13 20:07                       ` [PATCH 2/2] xenbus: don't rely on xen_initial_domain to detect local xenstore Daniel De Graaf

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=4E8F2AD0.2060904@tycho.nsa.gov \
    --to=dgdegra@tycho.nsa.gov \
    --cc=Ian.Campbell@citrix.com \
    --cc=Ian.Jackson@eu.citrix.com \
    --cc=xen-devel@lists.xensource.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.