All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH v2] xen/domain: introduce DOMID_ANY
@ 2025-09-20 17:47 dmukhin
  2025-09-22 15:23 ` Jan Beulich
  0 siblings, 1 reply; 5+ messages in thread
From: dmukhin @ 2025-09-20 17:47 UTC (permalink / raw)
  To: xen-devel
  Cc: andrew.cooper3, anthony.perard, jbeulich, julien, michal.orzel,
	roger.pau, sstabellini, dmukhin

From: Denis Mukhin <dmukhin@ford.com> 

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 <dmukhin@ford.com>
---
Changes since v1:
- moved DOMID_ANY from the public header
---
 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/xen/domain.h                |  3 +++
 6 files changed, 13 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/xen/domain.h b/xen/include/xen/domain.h
index 8aab05ae93c8..cd3e32d17683 100644
--- a/xen/include/xen/domain.h
+++ b/xen/include/xen/domain.h
@@ -15,6 +15,9 @@ struct guest_area {
 
 #include <asm/domain.h>
 
+/* Domain ID allocator: search [1..DOMID_FIRST_RESERVED-1] range. */
+#define DOMID_ANY            DOMID_INVALID
+
 typedef union {
     struct vcpu_guest_context *nat;
     struct compat_vcpu_guest_context *cmp;
-- 
2.51.0



^ permalink raw reply related	[flat|nested] 5+ messages in thread

* Re: [PATCH v2] xen/domain: introduce DOMID_ANY
  2025-09-20 17:47 [PATCH v2] xen/domain: introduce DOMID_ANY dmukhin
@ 2025-09-22 15:23 ` Jan Beulich
  2025-09-22 21:56   ` dmukhin
  0 siblings, 1 reply; 5+ messages in thread
From: Jan Beulich @ 2025-09-22 15:23 UTC (permalink / raw)
  To: dmukhin
  Cc: andrew.cooper3, anthony.perard, julien, michal.orzel, roger.pau,
	sstabellini, dmukhin, xen-devel

On 20.09.2025 19:47, dmukhin@xen.org wrote:
> From: Denis Mukhin <dmukhin@ford.com> 
> 
> 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 <dmukhin@ford.com>
> ---
> Changes since v1:
> - moved DOMID_ANY from the public header

This addresses my comment, but not Andrew's subsequent response, specifically
aiming at ...

> --- 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

... avoiding the need for any such secondary definitions.

Jan


^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [PATCH v2] xen/domain: introduce DOMID_ANY
  2025-09-22 15:23 ` Jan Beulich
@ 2025-09-22 21:56   ` dmukhin
  2025-09-22 22:43     ` Jan Beulich
  0 siblings, 1 reply; 5+ messages in thread
From: dmukhin @ 2025-09-22 21:56 UTC (permalink / raw)
  To: Jan Beulich
  Cc: andrew.cooper3, anthony.perard, julien, michal.orzel, roger.pau,
	sstabellini, dmukhin, xen-devel

On Mon, Sep 22, 2025 at 05:23:37PM +0200, Jan Beulich wrote:
> On 20.09.2025 19:47, dmukhin@xen.org wrote:
> > From: Denis Mukhin <dmukhin@ford.com> 
> > 
> > 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 <dmukhin@ford.com>
> > ---
> > Changes since v1:
> > - moved DOMID_ANY from the public header
> 
> This addresses my comment, but not Andrew's subsequent response, specifically
> aiming at ...

AFAIU, toolstack should start using DOMID_ANY instead of 0 in
XEN_DOMCTL_createdomain.

I was planning to send a separate patch to address it if that's OK.

> 
> > --- 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
> 
> ... avoiding the need for any such secondary definitions.

In the current design, unit test harness.h has to define DOMID_ANY.
Enabling xen/domain.h to compile for unit test is a separate task, IMO.

> 
> Jan


^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [PATCH v2] xen/domain: introduce DOMID_ANY
  2025-09-22 21:56   ` dmukhin
@ 2025-09-22 22:43     ` Jan Beulich
  2025-09-24  2:55       ` dmukhin
  0 siblings, 1 reply; 5+ messages in thread
From: Jan Beulich @ 2025-09-22 22:43 UTC (permalink / raw)
  To: dmukhin
  Cc: andrew.cooper3, anthony.perard, julien, michal.orzel, roger.pau,
	sstabellini, dmukhin, xen-devel

On 22.09.2025 23:56, dmukhin@xen.org wrote:
> On Mon, Sep 22, 2025 at 05:23:37PM +0200, Jan Beulich wrote:
>> On 20.09.2025 19:47, dmukhin@xen.org wrote:
>>> From: Denis Mukhin <dmukhin@ford.com> 
>>>
>>> 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 <dmukhin@ford.com>
>>> ---
>>> Changes since v1:
>>> - moved DOMID_ANY from the public header
>>
>> This addresses my comment, but not Andrew's subsequent response, specifically
>> aiming at ...
> 
> AFAIU, toolstack should start using DOMID_ANY instead of 0 in
> XEN_DOMCTL_createdomain.
> 
> I was planning to send a separate patch to address it if that's OK.
> 
>>
>>> --- 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
>>
>> ... avoiding the need for any such secondary definitions.
> 
> In the current design, unit test harness.h has to define DOMID_ANY.
> Enabling xen/domain.h to compile for unit test is a separate task, IMO.

That wasn't suggested as an option. The #define wants to move back to
the public header, but be properly guarded there. See the v1 replies
you got.

Jan


^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [PATCH v2] xen/domain: introduce DOMID_ANY
  2025-09-22 22:43     ` Jan Beulich
@ 2025-09-24  2:55       ` dmukhin
  0 siblings, 0 replies; 5+ messages in thread
From: dmukhin @ 2025-09-24  2:55 UTC (permalink / raw)
  To: Jan Beulich
  Cc: andrew.cooper3, anthony.perard, julien, michal.orzel, roger.pau,
	sstabellini, dmukhin, xen-devel

On Tue, Sep 23, 2025 at 12:43:54AM +0200, Jan Beulich wrote:
> On 22.09.2025 23:56, dmukhin@xen.org wrote:
> > On Mon, Sep 22, 2025 at 05:23:37PM +0200, Jan Beulich wrote:
> >> On 20.09.2025 19:47, dmukhin@xen.org wrote:
> >>> From: Denis Mukhin <dmukhin@ford.com> 
> >>>
> >>> 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 <dmukhin@ford.com>
> >>> ---
> >>> Changes since v1:
> >>> - moved DOMID_ANY from the public header
> >>
> >> This addresses my comment, but not Andrew's subsequent response, specifically
> >> aiming at ...
> > 
> > AFAIU, toolstack should start using DOMID_ANY instead of 0 in
> > XEN_DOMCTL_createdomain.
> > 
> > I was planning to send a separate patch to address it if that's OK.
> > 
> >>
> >>> --- 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
> >>
> >> ... avoiding the need for any such secondary definitions.
> > 
> > In the current design, unit test harness.h has to define DOMID_ANY.
> > Enabling xen/domain.h to compile for unit test is a separate task, IMO.
> 
> That wasn't suggested as an option. The #define wants to move back to
> the public header, but be properly guarded there. See the v1 replies
> you got.

Got it, thanks.
Will send v3.


^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2025-09-24  2:55 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-09-20 17:47 [PATCH v2] xen/domain: introduce DOMID_ANY dmukhin
2025-09-22 15:23 ` Jan Beulich
2025-09-22 21:56   ` dmukhin
2025-09-22 22:43     ` Jan Beulich
2025-09-24  2:55       ` dmukhin

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.