On Tue, 23 Sep 2025, [email protected] wrote: > From: Denis Mukhin <[email protected]> > > Add a new symbol DOMID_ANY aliasing DOMID_INVALID to improve the readability > of the code. > > Update all relevant domid_alloc() call sites. > > Amends: 2d5065060710 ("xen/domain: unify domain ID allocation") > Signed-off-by: Denis Mukhin <[email protected]>
Reviewed-by: Stefano Stabellini <[email protected]> > --- > Changes since v2: > - move DOMID_ANY back to the public header; add proper guards > - CI: https://gitlab.com/xen-project/people/dmukhin/xen/-/pipelines/2056319227 > - Link to v2: > https://lore.kernel.org/xen-devel/[email protected]/ > --- > tools/tests/domid/harness.h | 1 + > tools/tests/domid/test-domid.c | 12 ++++++------ > xen/common/device-tree/dom0less-build.c | 2 +- > xen/common/domctl.c | 2 +- > xen/common/domid.c | 2 +- > xen/include/public/xen.h | 5 +++++ > 6 files changed, 15 insertions(+), 9 deletions(-) > > diff --git a/tools/tests/domid/harness.h b/tools/tests/domid/harness.h > index 17eb22a9a854..610b564d4061 100644 > --- a/tools/tests/domid/harness.h > +++ b/tools/tests/domid/harness.h > @@ -41,6 +41,7 @@ extern unsigned long find_next_zero_bit(const unsigned long > *addr, > > #define DOMID_FIRST_RESERVED (100) > #define DOMID_INVALID (101) > +#define DOMID_ANY DOMID_INVALID > > #endif /* _TEST_HARNESS_ */ > > diff --git a/tools/tests/domid/test-domid.c b/tools/tests/domid/test-domid.c > index 5915c4699a5c..71cc4e7fd86d 100644 > --- a/tools/tests/domid/test-domid.c > +++ b/tools/tests/domid/test-domid.c > @@ -41,20 +41,20 @@ int main(int argc, char **argv) > domid_free(expected); > > /* > - * Test that that two consecutive calls of domid_alloc(DOMID_INVALID) > + * Test that that two consecutive calls of domid_alloc(DOMID_ANY) > * will never return the same ID. > * NB: ID#0 is reserved and shall not be allocated by > - * domid_alloc(DOMID_INVALID). > + * domid_alloc(DOMID_ANY). > */ > for ( expected = 1; expected < DOMID_FIRST_RESERVED; expected++ ) > { > - allocated = domid_alloc(DOMID_INVALID); > + allocated = domid_alloc(DOMID_ANY); > verify(allocated == expected, > "TEST 3: expected %u allocated %u\n", expected, allocated); > } > for ( expected = 1; expected < DOMID_FIRST_RESERVED; expected++ ) > { > - allocated = domid_alloc(DOMID_INVALID); > + allocated = domid_alloc(DOMID_ANY); > verify(allocated == DOMID_INVALID, > "TEST 4: expected %u allocated %u\n", DOMID_INVALID, > allocated); > } > @@ -64,7 +64,7 @@ int main(int argc, char **argv) > domid_free(expected); > for ( expected = 1; expected < DOMID_FIRST_RESERVED / 2; expected++ ) > { > - allocated = domid_alloc(DOMID_INVALID); > + allocated = domid_alloc(DOMID_ANY); > verify(allocated == expected, > "TEST 5: expected %u allocated %u\n", expected, allocated); > } > @@ -72,7 +72,7 @@ int main(int argc, char **argv) > /* Re-allocate last ID from [1..DOMID_FIRST_RESERVED - 1]. */ > expected = DOMID_FIRST_RESERVED - 1; > domid_free(DOMID_FIRST_RESERVED - 1); > - allocated = domid_alloc(DOMID_INVALID); > + allocated = domid_alloc(DOMID_ANY); > verify(allocated == expected, > "TEST 6: expected %u allocated %u\n", expected, allocated); > > diff --git a/xen/common/device-tree/dom0less-build.c > b/xen/common/device-tree/dom0less-build.c > index 9fd004c42af7..e2764768c983 100644 > --- a/xen/common/device-tree/dom0less-build.c > +++ b/xen/common/device-tree/dom0less-build.c > @@ -848,7 +848,7 @@ void __init create_domUs(void) > if ( (max_init_domid + 1) >= DOMID_FIRST_RESERVED ) > panic("No more domain IDs available\n"); > > - domid = domid_alloc(DOMID_INVALID); > + domid = domid_alloc(DOMID_ANY); > if ( domid == DOMID_INVALID ) > panic("Error allocating ID for domain %s\n", dt_node_name(node)); > > diff --git a/xen/common/domctl.c b/xen/common/domctl.c > index 954d79022645..ca91686a03d8 100644 > --- a/xen/common/domctl.c > +++ b/xen/common/domctl.c > @@ -410,7 +410,7 @@ long do_domctl(XEN_GUEST_HANDLE_PARAM(xen_domctl_t) > u_domctl) > case XEN_DOMCTL_createdomain: > { > /* NB: ID#0 is reserved, find the first suitable ID instead. */ > - domid_t domid = domid_alloc(op->domain ?: DOMID_INVALID); > + domid_t domid = domid_alloc(op->domain ?: DOMID_ANY); > > if ( domid == DOMID_INVALID ) > { > diff --git a/xen/common/domid.c b/xen/common/domid.c > index 2387ddb08300..76b7f3e7ae6e 100644 > --- a/xen/common/domid.c > +++ b/xen/common/domid.c > @@ -19,7 +19,7 @@ static DECLARE_BITMAP(domid_bitmap, DOMID_FIRST_RESERVED); > * @param domid Domain ID hint: > * - If an explicit domain ID is provided, verify its availability and use it > * if ID is not used; > - * - If DOMID_INVALID is provided, search [1..DOMID_FIRST_RESERVED-1] range, > + * - If DOMID_ANY is provided, search [1..DOMID_FIRST_RESERVED-1] range, > * starting from the last used ID. Implementation guarantees that two > * consecutive calls will never return the same ID. ID#0 is reserved for > * the first boot domain (currently, dom0) and excluded from the allocation > diff --git a/xen/include/public/xen.h b/xen/include/public/xen.h > index 82b9c05a76b7..29b7c81ba1bb 100644 > --- a/xen/include/public/xen.h > +++ b/xen/include/public/xen.h > @@ -608,6 +608,11 @@ DEFINE_XEN_GUEST_HANDLE(mmuext_op_t); > /* DOMID_INVALID is used to identify pages with unknown owner. */ > #define DOMID_INVALID xen_mk_uint(0x7FF4) > > +#if defined(__XEN__) || defined(__XEN_TOOLS__) > +/* Domain ID allocator: search [1..DOMID_FIRST_RESERVED-1] range. */ > +#define DOMID_ANY DOMID_INVALID > +#endif > + > /* Idle domain. */ > #define DOMID_IDLE xen_mk_uint(0x7FFF) > > -- > 2.51.0 >
