tools: Fix fallout from DOMID_ANY ABI breakage

Commit 23e2479ff9 ("xen/domain: introduce DOMID_ANY") broke at least:

 * xenstored domains
 * The Python bindings
 * The Ocaml bindings (i.e XAPI, and therefore XenServer/XCP-ng)

by causing Xen to reject 0 (the wildcard sentinel since the start of Xen) and
DOMID_INVALID (since 4.21) without adjusting the callers of xc_domain_create().

Under other circumstances I'd revert, but xenstored has gained a dependent use
of DOMID_ANY.

Fix up the remaining in-tree callers of xc_domain_create(), which covers
init-xenstore-domain and the python bindings.

The Ocaml C bindings, like libxc itself, expose this ABI detail to their
caller, but in this case the caller is still internal to the bindings as a
whole.  Adjust the default value in the internal transformation, adding
domid_any for legibility.

Leave a very clear message in CHANGELOG.md that all external callers need
altering.

Fixes: 23e2479ff9 ("xen/domain: introduce DOMID_ANY")
Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com>
Acked-by: Roger Pau Monné <roger.pau@citrix.com>
Acked-by: Pau Ruiz Safont <pau.safont@vates.tech>
This commit is contained in:
Andrew Cooper committed 2026-05-28 16:19:16 +01:00
1 parent 880e40b187
commit 50a21ee067
4 files changed
+9 -3

No files matched your search

+4
View File
@@ -7,6 +7,10 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/)
## [4.22.0 UNRELEASED](https://xenbits.xenproject.org/gitweb/?p=xen.git;a=shortlog;h=staging) - TBD
### Changed
- Users of XEN_DOMCTL_createdomain/xc_domain_create() must now pass DOMID_ANY
to obtain an automatically allocated domid. The prior sentinel values (0
since the start of Xen, and DOMID_INVALID since Xen 4.21) now no longer
represent a wildcard input.
- On x86:
- Enable pf-fixup option by default for PVH dom0.
+1 -1
View File
@@ -21,7 +21,7 @@
#define LAPIC_BASE_ADDRESS 0xfee00000UL
static uint32_t domid = ~0;
static uint32_t domid = DOMID_ANY;
static char *kernel;
static char *ramdisk;
static char *flask;
+3 -1
View File
@@ -208,7 +208,9 @@ let with_intf f =
external domain_create_stub: handle -> domid -> domctl_create_config -> domid
= "stub_xc_domain_create"
let domain_create handle ?(domid=0) config =
let domid_any = 0x7ff5 (* DOMID_ANY from public/xen.h *)
let domain_create handle ?(domid=domid_any) config =
domain_create_stub handle domid config
external domain_sethandle: handle -> domid -> string -> unit
+1 -1
View File
@@ -118,7 +118,7 @@ static PyObject *pyxc_domain_create(XcObject *self,
PyObject *args,
PyObject *kwds)
{
uint32_t dom = 0, target = 0, max_grant_version = 2;
uint32_t dom = DOMID_ANY, target = 0, max_grant_version = 2;
int ret;
size_t i;
PyObject *pyhandle = NULL;
Reference in new issue
Block a user
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.