|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [PATCH 2/4] xsm/silo: Support hwdom/control domains
On 2025-06-12 03:52, Jan Beulich wrote: On 11.06.2025 06:20, Jason Andryuk wrote:On 2025-06-11 09:17, Jan Beulich wrote:On 11.06.2025 00:57, Jason Andryuk wrote:In a disaggregated environment, dom0 is split into Control, Hardware, and Xenstore domains, along with domUs. The is_control_domain() check is not sufficient to handle all these cases. Add is_priv_domain() to support allowing for the various domains. The purpose of SILO mode is to prevent domUs from interacting with each other. But dom0 was allowed to communicate with domUs to provide services. As the disaggregation of dom0, Control, Hardware and Xenstore are all service domains that need to communicate with other domains. To provide xenstore connections, the Xenstore domain must be allowed to connect via grants and event channels. Xenstore domain must also be allowed to connect to Control and Hardware to provide xenstore to them.Are you suggesting that SILO at present is incompatible with a Xenstore domain? silo_mode_dom_check() in its original form has no special precautions, after all.Yes, it is incompatible with the current silo_mode_dom_check(). Only Control domain is allowed to use grants and event channels with a domU. A Xenstore domain would be denied. Xenstore stubdom only exists for x86 today. My limited attempts to run xenstored in an dedicated Xenstore ARM Linux domain have failed.This may want sorting independently first. Once sorted, the requirements here may become more clear. HW+XS-> xenstore worksCTL+XS or XS -> the domain's console just stops. vCPUs are in Linux cpu idle. I haven't figured out more. This required some Linux changes to query the capabilities since XS isn't exposed and ARM assumes initial domain implies HW + CTL. It's orthogonal to my goals, so I haven't looked too hard. Hardware domain will provide PV devices to domains, so it must be allowed to connect to domains.As a built-in policy, isn't this already going too far? There could conceivably be configurations with only pass-through devices in use, in which case neither grants nor the event channels operations intercepted by SILO would be required.Such a domain wouldn't have any PV devices configured?Indeed, that's my point: Why would Hardware then have a need to be allowed to connect to domains.I don't think this changes anything compared to today.I don't think I see what you mean to tell me with this. What we're discussing here is the effect of the separation you're suggesting, which necessarily is different from what we have today.Both sides need to be configured and opt-in. Hardware is a system domain, so it should be possible to allow grants and event channels. But they won't be used unless configured."Won't be used" isn't enough, imo. Isn't disaggregation about proper isolation, i.e. to guarantee that unwanted interactions can't occur? Disaggregation is the separation of components. The security policy applied is related but distinct. "Won't be used" is how dummy and SILO (with respect to dom0) devices work today dummy -> cooperating domUs can communicate SILO -> domUs cannot communicateFlask -> configurable, but typically strict limits to explicit communication channels SILO today doesn't deny communication between a domU without PV devices and dom0 - they just aren't configured. I'm saying that would be the same with a split hardware domain. PV devices just aren't configured, but there is no mandatory denial. SILO only enforces mandatory denial between domUs today. If you want mandatory enforcement, Flask is the correct choice. Everything would be explicitly configured. Some domains could communicate with hwdom and others could not. For SILO, a split hardware domain would be allowed communication with a domU if configured by the administrator. I see this as comparable to configuring a domU to access dom0 PV backends today. That leaves Control. Xenstore and Hardware would already allow access to Control, so it can obtain services that way. Control should be "privileged", which would mean it can make the connections. But with Xenstore and Hardware providing their services to domUs, there may not be a reason to allow Control to use grants or event channels with domUs. Still, Control is privileged, so it should be allowed to do something if it chooses. Establishing a grant, or event channel requires action on both sides, so allow for the possibility. This does open up an argo wildcard ring from domUs, FWIW.Along the lines of my reply to patch 1, I think Hardware and Control need to have a pretty strong boundary between them. It's hard to see, for example, whether grant map/copy/transfer would indeed make sense between the two. I can't parse this last sentence, and I think it's your main point.XSM -> don't speculate around permission checks. That's what I meant by "security critical".
The __init code is inaccessible to users, so it doesn't matter.
if ( is_xenstore_domain(d) )
continue;
getdomaininfo sets a flag, so I don't see this making a security
difference. It's not controlling loads or code paths.
(is_xenstore_domain(d) ? XEN_DOMINF_xs_domain : 0) | Regards, Jason
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |