mirror of
https://github.com/xen-project/xen.git
synced 2026-10-28 02:01:24 +01:00
tools: Fix fallout from DOMID_ANY ABI breakage
Commit23e2479ff9("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:
1 parent
880e40b187
commit
50a21ee067
4 files changed
+9
-3
No files matched your search
@@ -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.
|
||||
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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;
|
||||
|
||||