[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [PATCH v6 4/7] xen/arm: configure dom0less domain for enabling xenstore after boot



Hi Rahul,

On 11/05/2022 11:53, Rahul Singh wrote:
On 11 May 2022, at 10:18 am, Bertrand Marquis <Bertrand.Marquis@xxxxxxx> wrote:

Hi Julien,

On 11 May 2022, at 10:10, Julien Grall <julien@xxxxxxx> wrote:

Hi Bertrand,

On 11/05/2022 09:46, Bertrand Marquis wrote:
On 11 May 2022, at 09:38, Julien Grall <julien@xxxxxxx> wrote:

Hi Bertrand,

On 11/05/2022 08:46, Bertrand Marquis wrote:
On 10 May 2022, at 17:35, Julien Grall <julien@xxxxxxx> wrote:

Hi Rahul,

On 10/05/2022 17:30, Rahul Singh wrote:
+ rc = evtchn_alloc_unbound(&alloc);
+ if ( rc )
+ {
+ printk("Failed allocating event channel for domain\n");
+ return rc;
+ }
+
+ d->arch.hvm.params[HVM_PARAM_STORE_EVTCHN] = alloc.port;
+
+ return 0;
+}
+
static int __init construct_domU(struct domain *d,
const struct dt_device_node *node)
{
@@ -3214,6 +3243,14 @@ static int __init construct_domU(struct domain *d,
if ( rc < 0 )
return rc;

+ if ( kinfo.dom0less_enhanced )
I think we need to do something like this to fix the error.
if ( hardware_domain && kinfo.dom0less_enhanced )
{
}

Is there any use case to use "dom0less_enhanced" without dom0 (or a domain 
servicing Xenstored)?

Just being curious here but would it even be possible to have non dom0 domain 
servicing xenstored ?

You can build Xenstored against mini-os and configure the init script to launch 
xenstored as a domain.
So dom0 is not mandatory or should mini-os be started as Dom0 for this to work ?

In order to allocate the event channel, you need to know the ID of the domain 
where Xenstored will run. Stefano's patch is relying on Xenstored to be run in 
Domain 0.

This would need to be updated if we want to run it in a separate domain.

Ok then Dom0 is mandatory at the moment, I am ok with that.



If not, then I would consider to forbid this case and return an error.
One way or an other we need to solve the crash but if it is forbidden we must 
prevent coming to this step earlier as it means the configuration is wrong.

I think this should be checked when parsing the configuration.
If dom0 is mandatory yes, we should still make sure that this code cannot be 
reached so an ASSERT would be nice here at least in case someone tries to 
activate this code without dom0 (which might happen when we will push the serie 
for static event channels).

I am fine with an ASSERT().

Are you saying that dom0less_enhanced will be set to true for the static event 
channel series?

If yes, then I think dom0less_enhanced will need to be an enum so we know what 
part of Xen is exposed.

No it won’t, we just need some of the changes done but without setting 
dom0less_enhanced.
@Rahul: can you confirm.


We need to set the "xen,enhanced” enabled for dom0less domU to enable
the event-channel interface in dom0less guest. If we did not set this property we 
can’t
use the event-channel interface in dom0less domUs guests.

Is this because the domU will not know which PPI will be used for notification?

The property "xen,enhanced" with an empty string (or with the value "enabled") is meant to indicate that PV drivers will be usable in the domain.

AFAIU, you are suggesting to change the meaning based on dom0 whether has been created. I don't particularly like that because a user may spent a while to understand why Xenstored doesn't work.

The current proposal for xen,enhanced allows us to define new values if we wanted to only enabled selected interfaces. AFAIU, in your case, you only want to expose the event channel interface, so I would create a new value to indicate that the event channel interface is exposed. Xen would then create only the part for the event channel (i.e. no extended regions, grant tables...).

Cheers,

--
Julien Grall



 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.