qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
* [PATCH v3 0/5] docs: automated info about machine deprecation/removal info
@ 2025-05-06 16:00 Daniel P. Berrangé
  2025-05-06 16:00 ` [PATCH v3 1/5] Revert "include/hw: temporarily disable deletion of versioned machine types" Daniel P. Berrangé
                   ` (8 more replies)
  0 siblings, 9 replies; 15+ messages in thread
From: Daniel P. Berrangé @ 2025-05-06 16:00 UTC (permalink / raw)
  To: qemu-devel
  Cc: Yanan Wang, Michael S. Tsirkin, devel, Marcel Apfelbaum, Zhao Liu,
	Philippe Mathieu-Daudé, Eduardo Habkost, Thomas Huth,
	Peter Maydell, John Snow, Daniel P. Berrangé

Since we deprecate and remove versioned machine types on a fixed
schedule, we can automatically ensure that the docs reflect the
latest version info, rather than requiring manual updates on each
dev cycle.

The first patch in this series removes the hack which postponed
automatic removal of versioned machine types to the 10.1.0 release,
since we're now in the 10.1.0 dev cycle.

The second patch in this series fixes the logic to ensure dev snapshots
and release candidates don't have an off-by-1 error in setting
deprecation and removal thresholds - they must predict the next formal
release version number.

The following three patches deal with the docs stuff.

Changed in v3:

 - Remove mistaken mention of 'ppc', only 'ppc64' has versioned
   machine types

Changed in v2:

 - Remove hack that temporarily postponed automatic deletion
   of machine types
 - Fix docs version info for stable bugfix releases

Daniel P. Berrangé (5):
  Revert "include/hw: temporarily disable deletion of versioned machine
    types"
  include/hw/boards: cope with dev/rc versions in deprecation checks
  docs/about/deprecated: auto-generate a note for versioned machine
    types
  docs/about/removed-features: auto-generate a note for versioned
    machine types
  include/hw/boards: add warning about changing deprecation logic

 docs/about/deprecated.rst       |  7 ++++
 docs/about/removed-features.rst | 10 +++---
 docs/conf.py                    | 39 +++++++++++++++++++++-
 include/hw/boards.h             | 58 +++++++++++++++++++++------------
 4 files changed, 89 insertions(+), 25 deletions(-)

-- 
2.49.0



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

* [PATCH v3 1/5] Revert "include/hw: temporarily disable deletion of versioned machine types"
  2025-05-06 16:00 [PATCH v3 0/5] docs: automated info about machine deprecation/removal info Daniel P. Berrangé
@ 2025-05-06 16:00 ` Daniel P. Berrangé
  2025-05-06 16:00 ` [PATCH v3 2/5] include/hw/boards: cope with dev/rc versions in deprecation checks Daniel P. Berrangé
                   ` (7 subsequent siblings)
  8 siblings, 0 replies; 15+ messages in thread
From: Daniel P. Berrangé @ 2025-05-06 16:00 UTC (permalink / raw)
  To: qemu-devel
  Cc: Yanan Wang, Michael S. Tsirkin, devel, Marcel Apfelbaum, Zhao Liu,
	Philippe Mathieu-Daudé, Eduardo Habkost, Thomas Huth,
	Peter Maydell, John Snow, Daniel P. Berrangé

This reverts commit c9fd2d9a48ee3c195cf83cc611b87b09f02f0013.

When we introduced the specialized machine type deprecation policy, we
allow automatic deprecation to take effect immediately, but blocked the
automatic deletion of machine types for 2 releases. This ensured we
complied with the historical deprecation policy during the transition
window. Startnig with the 10.1.0 dev cycle, the old machine types would
be candidates for removal under both the old and new deprecation
policies.

Thus we can now enable automatic deletion of old machine types, which
takes effect by skipping the QOM type registration. This prevents the
machine types being listed with '-machine help', and blocks their
creation. The actual code can be purged at a convenient time of the
maintainer's choosing.

In the case of the x86_64 target, this change results in the blocking
of the following machine types:

  pc-i440fx-4.0        Standard PC (i440FX + PIIX, 1996) (deprecated)
  pc-i440fx-3.1        Standard PC (i440FX + PIIX, 1996) (deprecated)
  pc-i440fx-3.0        Standard PC (i440FX + PIIX, 1996) (deprecated)
  pc-i440fx-2.9        Standard PC (i440FX + PIIX, 1996) (deprecated)
  pc-i440fx-2.8        Standard PC (i440FX + PIIX, 1996) (deprecated)
  pc-i440fx-2.7        Standard PC (i440FX + PIIX, 1996) (deprecated)
  pc-i440fx-2.6        Standard PC (i440FX + PIIX, 1996) (deprecated)
  pc-i440fx-2.5        Standard PC (i440FX + PIIX, 1996) (deprecated)
  pc-i440fx-2.4        Standard PC (i440FX + PIIX, 1996) (deprecated)
  pc-i440fx-2.12       Standard PC (i440FX + PIIX, 1996) (deprecated)
  pc-i440fx-2.11       Standard PC (i440FX + PIIX, 1996) (deprecated)
  pc-i440fx-2.10       Standard PC (i440FX + PIIX, 1996) (deprecated)
  pc-q35-4.0.1         Standard PC (Q35 + ICH9, 2009) (deprecated)
  pc-q35-4.0           Standard PC (Q35 + ICH9, 2009) (deprecated)
  pc-q35-3.1           Standard PC (Q35 + ICH9, 2009) (deprecated)
  pc-q35-3.0           Standard PC (Q35 + ICH9, 2009) (deprecated)
  pc-q35-2.9           Standard PC (Q35 + ICH9, 2009) (deprecated)
  pc-q35-2.8           Standard PC (Q35 + ICH9, 2009) (deprecated)
  pc-q35-2.7           Standard PC (Q35 + ICH9, 2009) (deprecated)
  pc-q35-2.6           Standard PC (Q35 + ICH9, 2009) (deprecated)
  pc-q35-2.5           Standard PC (Q35 + ICH9, 2009) (deprecated)
  pc-q35-2.4           Standard PC (Q35 + ICH9, 2009) (deprecated)
  pc-q35-2.12          Standard PC (Q35 + ICH9, 2009) (deprecated)
  pc-q35-2.11          Standard PC (Q35 + ICH9, 2009) (deprecated)
  pc-q35-2.10          Standard PC (Q35 + ICH9, 2009) (deprecated)

Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
---
 include/hw/boards.h | 19 +------------------
 1 file changed, 1 insertion(+), 18 deletions(-)

diff --git a/include/hw/boards.h b/include/hw/boards.h
index 765dc8dd35..74a8e96b2e 100644
--- a/include/hw/boards.h
+++ b/include/hw/boards.h
@@ -719,28 +719,11 @@ struct MachineState {
  * suitable period of time has passed, it will cause
  * execution of the method to return, avoiding registration
  * of the machine
- *
- * The new deprecation and deletion policy for versioned
- * machine types was introduced in QEMU 9.1.0.
- *
- * Under the new policy a number of old machine types (any
- * prior to 2.12) would be liable for immediate deletion
- * which would be a violation of our historical deprecation
- * and removal policy
- *
- * Thus deletions are temporarily gated on existance of
- * the env variable "QEMU_DELETE_MACHINES" / QEMU version
- * number >= 10.1.0. This gate can be deleted in the 10.1.0
- * dev cycle
  */
 #define MACHINE_VER_DELETION(...) \
     do { \
         if (MACHINE_VER_SHOULD_DELETE(__VA_ARGS__)) { \
-            if (getenv("QEMU_DELETE_MACHINES") || \
-                QEMU_VERSION_MAJOR > 10 || (QEMU_VERSION_MAJOR == 10 && \
-                                            QEMU_VERSION_MINOR >= 1)) { \
-                return; \
-            } \
+            return; \
         } \
     } while (0)
 
-- 
2.49.0



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

* [PATCH v3 2/5] include/hw/boards: cope with dev/rc versions in deprecation checks
  2025-05-06 16:00 [PATCH v3 0/5] docs: automated info about machine deprecation/removal info Daniel P. Berrangé
  2025-05-06 16:00 ` [PATCH v3 1/5] Revert "include/hw: temporarily disable deletion of versioned machine types" Daniel P. Berrangé
@ 2025-05-06 16:00 ` Daniel P. Berrangé
  2025-05-08  7:45   ` Thomas Huth
  2025-05-06 16:00 ` [PATCH v3 3/5] docs/about/deprecated: auto-generate a note for versioned machine types Daniel P. Berrangé
                   ` (6 subsequent siblings)
  8 siblings, 1 reply; 15+ messages in thread
From: Daniel P. Berrangé @ 2025-05-06 16:00 UTC (permalink / raw)
  To: qemu-devel
  Cc: Yanan Wang, Michael S. Tsirkin, devel, Marcel Apfelbaum, Zhao Liu,
	Philippe Mathieu-Daudé, Eduardo Habkost, Thomas Huth,
	Peter Maydell, John Snow, Daniel P. Berrangé

When VERSION is set to a development snapshot (micro >= 50), or a release
candidate (micro >= 90) we have an off-by-1 in determining deprecation
and deletion thresholds for versioned machine types. In such cases we need
to use the next major/minor version in threshold checks.

This adapts the deprecation macros to do "next version" prediction when
seeing a dev/rc version number.

This ensures users of release candidates get an accurate view of machines
that will be deprecated/deleted in the final release.

This requires hardcoding our current release policy of 3 releases per
year, with a major bump at the start of each year, and that dev/rc
versions have micro >= 50.

Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
---
 include/hw/boards.h | 33 ++++++++++++++++++++++++++++++++-
 1 file changed, 32 insertions(+), 1 deletion(-)

diff --git a/include/hw/boards.h b/include/hw/boards.h
index 74a8e96b2e..a6784fe984 100644
--- a/include/hw/boards.h
+++ b/include/hw/boards.h
@@ -650,11 +650,42 @@ struct MachineState {
     " years old are subject to deletion after " \
     stringify(MACHINE_VER_DELETION_MAJOR) " years"
 
-#define _MACHINE_VER_IS_EXPIRED_IMPL(cutoff, major, minor) \
+#define _MACHINE_VER_IS_CURRENT_EXPIRED(cutoff, major, minor) \
     (((QEMU_VERSION_MAJOR - major) > cutoff) || \
      (((QEMU_VERSION_MAJOR - major) == cutoff) && \
       (QEMU_VERSION_MINOR - minor) >= 0))
 
+#define _MACHINE_VER_IS_NEXT_MINOR_EXPIRED(cutoff, major, minor) \
+    (((QEMU_VERSION_MAJOR - major) > cutoff) || \
+     (((QEMU_VERSION_MAJOR - major) == cutoff) && \
+      ((QEMU_VERSION_MINOR + 1) - minor) >= 0))
+
+#define _MACHINE_VER_IS_NEXT_MAJOR_EXPIRED(cutoff, major, minor) \
+    ((((QEMU_VERSION_MAJOR + 1) - major) > cutoff) ||            \
+     ((((QEMU_VERSION_MAJOR + 1) - major) == cutoff) &&          \
+      (0 - minor) >= 0))
+
+/*
+ * - The first check applies to formal releases
+ * - The second check applies to dev snapshots / release candidates
+ *   where the next major version is the same.
+ *   e.g. 9.0.50, 9.1.50, 9.0.90, 9.1.90
+ * - The third check applies to dev snapshots / release candidates
+ *   where the next major version will change.
+ *   e.g. 9.2.50, 9.2.90
+ *
+ * NB: this assumes we do 3 minor releases per year, before bumping major,
+ * and dev snapshots / release candidates are numbered with micro >= 50
+ * If this ever changes the logic below will need modifying....
+ */
+#define _MACHINE_VER_IS_EXPIRED_IMPL(cutoff, major, minor) \
+    ((QEMU_VERSION_MICRO < 50 && \
+      _MACHINE_VER_IS_CURRENT_EXPIRED(cutoff, major, minor)) || \
+     (QEMU_VERSION_MICRO >= 50 && QEMU_VERSION_MINOR < 2 && \
+      _MACHINE_VER_IS_NEXT_MINOR_EXPIRED(cutoff, major, minor)) || \
+     (QEMU_VERSION_MICRO >= 50 && QEMU_VERSION_MINOR == 2 && \
+      _MACHINE_VER_IS_NEXT_MAJOR_EXPIRED(cutoff, major, minor)))
+
 #define _MACHINE_VER_IS_EXPIRED2(cutoff, major, minor) \
     _MACHINE_VER_IS_EXPIRED_IMPL(cutoff, major, minor)
 #define _MACHINE_VER_IS_EXPIRED3(cutoff, major, minor, micro) \
-- 
2.49.0



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

* [PATCH v3 3/5] docs/about/deprecated: auto-generate a note for versioned machine types
  2025-05-06 16:00 [PATCH v3 0/5] docs: automated info about machine deprecation/removal info Daniel P. Berrangé
  2025-05-06 16:00 ` [PATCH v3 1/5] Revert "include/hw: temporarily disable deletion of versioned machine types" Daniel P. Berrangé
  2025-05-06 16:00 ` [PATCH v3 2/5] include/hw/boards: cope with dev/rc versions in deprecation checks Daniel P. Berrangé
@ 2025-05-06 16:00 ` Daniel P. Berrangé
  2025-05-06 16:00 ` [PATCH v3 4/5] docs/about/removed-features: " Daniel P. Berrangé
                   ` (5 subsequent siblings)
  8 siblings, 0 replies; 15+ messages in thread
From: Daniel P. Berrangé @ 2025-05-06 16:00 UTC (permalink / raw)
  To: qemu-devel
  Cc: Yanan Wang, Michael S. Tsirkin, devel, Marcel Apfelbaum, Zhao Liu,
	Philippe Mathieu-Daudé, Eduardo Habkost, Thomas Huth,
	Peter Maydell, John Snow, Daniel P. Berrangé

We deprecate versioned machine types on a fixed schedule. This allows us
to auto-generate a paragraph in the deprecated.rst document that always
has accurate version info.

Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
---
 docs/about/deprecated.rst |  7 +++++++
 docs/conf.py              | 33 ++++++++++++++++++++++++++++++++-
 2 files changed, 39 insertions(+), 1 deletion(-)

diff --git a/docs/about/deprecated.rst b/docs/about/deprecated.rst
index 05381441a9..1a1b423030 100644
--- a/docs/about/deprecated.rst
+++ b/docs/about/deprecated.rst
@@ -278,6 +278,13 @@ CPU implementation for a while before removing all support.
 System emulator machines
 ------------------------
 
+Versioned machine types (aarch64, arm, i386, m68k, ppc64, s390x, x86_64)
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+
+In accordance with our versioned machine type deprecation policy, all machine
+types with version |VER_MACHINE_DEPRECATION_VERSION|, or older, have been
+deprecated.
+
 Arm ``virt`` machine ``dtb-kaslr-seed`` property (since 7.1)
 ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
 
diff --git a/docs/conf.py b/docs/conf.py
index 7b5712e122..60dcf2a541 100644
--- a/docs/conf.py
+++ b/docs/conf.py
@@ -117,6 +117,27 @@
     else:
         version = release = "unknown version"
 
+bits = version.split(".")
+
+major = int(bits[0])
+minor = int(bits[1])
+micro = int(bits[2])
+
+# Check for a dev snapshot, so we can adjust to next
+# predicted release version.
+#
+# This assumes we do 3 releases per year, so must bump
+# major if minor == 2
+if micro >= 50:
+    micro = 0
+    if minor == 2:
+        major += 1
+        minor = 0
+    else:
+        minor += 1
+
+ver_machine_deprecation_version = "%d.%d.0" % (major - 3, minor)
+
 # The language for content autogenerated by Sphinx. Refer to documentation
 # for a list of supported languages.
 #
@@ -145,7 +166,17 @@
 # environment variable is not set is for the benefit of readthedocs
 # style document building; our Makefile always sets the variable.
 confdir = os.getenv('CONFDIR', "/etc/qemu")
-rst_epilog = ".. |CONFDIR| replace:: ``" + confdir + "``\n"
+
+vars = {
+    "CONFDIR": confdir,
+    "VER_MACHINE_DEPRECATION_VERSION": ver_machine_deprecation_version,
+}
+
+rst_epilog = "".join([
+    ".. |" + key + "| replace:: ``" + vars[key] + "``\n"
+    for key in vars.keys()
+])
+
 # We slurp in the defs.rst.inc and literally include it into rst_epilog,
 # because Sphinx's include:: directive doesn't work with absolute paths
 # and there isn't any one single relative path that will work for all
-- 
2.49.0



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

* [PATCH v3 4/5] docs/about/removed-features: auto-generate a note for versioned machine types
  2025-05-06 16:00 [PATCH v3 0/5] docs: automated info about machine deprecation/removal info Daniel P. Berrangé
                   ` (2 preceding siblings ...)
  2025-05-06 16:00 ` [PATCH v3 3/5] docs/about/deprecated: auto-generate a note for versioned machine types Daniel P. Berrangé
@ 2025-05-06 16:00 ` Daniel P. Berrangé
  2025-05-06 16:00 ` [PATCH v3 5/5] include/hw/boards: add warning about changing deprecation logic Daniel P. Berrangé
                   ` (4 subsequent siblings)
  8 siblings, 0 replies; 15+ messages in thread
From: Daniel P. Berrangé @ 2025-05-06 16:00 UTC (permalink / raw)
  To: qemu-devel
  Cc: Yanan Wang, Michael S. Tsirkin, devel, Marcel Apfelbaum, Zhao Liu,
	Philippe Mathieu-Daudé, Eduardo Habkost, Thomas Huth,
	Peter Maydell, John Snow, Daniel P. Berrangé

We remove versioned machine types on a fixed schedule. This allows us
to auto-generate a paragraph in the removed-features.rst document that
always has accurate version info.

Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
---
 docs/about/removed-features.rst | 10 ++++++----
 docs/conf.py                    |  2 ++
 2 files changed, 8 insertions(+), 4 deletions(-)

diff --git a/docs/about/removed-features.rst b/docs/about/removed-features.rst
index 790a5e481c..063284d4f8 100644
--- a/docs/about/removed-features.rst
+++ b/docs/about/removed-features.rst
@@ -981,10 +981,12 @@ from Linux in 2021, and is not supported anymore by QEMU either.
 System emulator machines
 ------------------------
 
-Note: Versioned machine types that have been introduced in a QEMU version
-that has initially been released more than 6 years before are considered
-obsolete and will be removed without further notice in this document.
-Please use newer machine types instead.
+Versioned machine types (aarch64, arm, i386, m68k, ppc64, s390x, x86_64)
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+
+In accordance with our versioned machine type deprecation policy, all machine
+types with version |VER_MACHINE_DELETION_VERSION|, or older, have been
+removed.
 
 ``s390-virtio`` (removed in 2.6)
 ''''''''''''''''''''''''''''''''
diff --git a/docs/conf.py b/docs/conf.py
index 60dcf2a541..248ff8cf5d 100644
--- a/docs/conf.py
+++ b/docs/conf.py
@@ -137,6 +137,7 @@
         minor += 1
 
 ver_machine_deprecation_version = "%d.%d.0" % (major - 3, minor)
+ver_machine_deletion_version = "%d.%d.0" % (major - 6, minor)
 
 # The language for content autogenerated by Sphinx. Refer to documentation
 # for a list of supported languages.
@@ -170,6 +171,7 @@
 vars = {
     "CONFDIR": confdir,
     "VER_MACHINE_DEPRECATION_VERSION": ver_machine_deprecation_version,
+    "VER_MACHINE_DELETION_VERSION": ver_machine_deletion_version,
 }
 
 rst_epilog = "".join([
-- 
2.49.0



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

* [PATCH v3 5/5] include/hw/boards: add warning about changing deprecation logic
  2025-05-06 16:00 [PATCH v3 0/5] docs: automated info about machine deprecation/removal info Daniel P. Berrangé
                   ` (3 preceding siblings ...)
  2025-05-06 16:00 ` [PATCH v3 4/5] docs/about/removed-features: " Daniel P. Berrangé
@ 2025-05-06 16:00 ` Daniel P. Berrangé
  2025-05-06 17:53 ` [PATCH v3 0/5] docs: automated info about machine deprecation/removal info Thomas Huth
                   ` (3 subsequent siblings)
  8 siblings, 0 replies; 15+ messages in thread
From: Daniel P. Berrangé @ 2025-05-06 16:00 UTC (permalink / raw)
  To: qemu-devel
  Cc: Yanan Wang, Michael S. Tsirkin, devel, Marcel Apfelbaum, Zhao Liu,
	Philippe Mathieu-Daudé, Eduardo Habkost, Thomas Huth,
	Peter Maydell, John Snow, Daniel P. Berrangé

If we change the deprecation logic in include/hw/boards.h, we must make
a corresponding change to docs/conf.py and docs/about/deprecated.rst.
Add comments to these files as a warning to future maintainers to keep
these files in sync.

Reviewed-by: Thomas Huth <thuth@redhat.com>
Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
---
 docs/conf.py        | 4 ++++
 include/hw/boards.h | 6 +++++-
 2 files changed, 9 insertions(+), 1 deletion(-)

diff --git a/docs/conf.py b/docs/conf.py
index 248ff8cf5d..f892a6e1da 100644
--- a/docs/conf.py
+++ b/docs/conf.py
@@ -136,6 +136,10 @@
     else:
         minor += 1
 
+# These thresholds must match the constants
+# MACHINE_VER_DELETION_MAJOR  & MACHINE_VER_DEPRECATION_MAJOR
+# defined in include/hw/boards.h and the introductory text in
+# docs/about/deprecated.rst
 ver_machine_deprecation_version = "%d.%d.0" % (major - 3, minor)
 ver_machine_deletion_version = "%d.%d.0" % (major - 6, minor)
 
diff --git a/include/hw/boards.h b/include/hw/boards.h
index a6784fe984..a7b1fcffae 100644
--- a/include/hw/boards.h
+++ b/include/hw/boards.h
@@ -636,7 +636,11 @@ struct MachineState {
 /*
  * How many years/major releases for each phase
  * of the life cycle. Assumes use of versioning
- * scheme where major is bumped each year
+ * scheme where major is bumped each year.
+ *
+ * These values must match the ver_machine_deprecation_version
+ * and ver_machine_deletion_version logic in docs/conf.py and
+ * the text in docs/about/deprecated.rst
  */
 #define MACHINE_VER_DELETION_MAJOR 6
 #define MACHINE_VER_DEPRECATION_MAJOR 3
-- 
2.49.0



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

* Re: [PATCH v3 0/5] docs: automated info about machine deprecation/removal info
  2025-05-06 16:00 [PATCH v3 0/5] docs: automated info about machine deprecation/removal info Daniel P. Berrangé
                   ` (4 preceding siblings ...)
  2025-05-06 16:00 ` [PATCH v3 5/5] include/hw/boards: add warning about changing deprecation logic Daniel P. Berrangé
@ 2025-05-06 17:53 ` Thomas Huth
  2025-05-08 11:17 ` Philippe Mathieu-Daudé
                   ` (2 subsequent siblings)
  8 siblings, 0 replies; 15+ messages in thread
From: Thomas Huth @ 2025-05-06 17:53 UTC (permalink / raw)
  To: Daniel P. Berrangé, qemu-devel
  Cc: Yanan Wang, Michael S. Tsirkin, devel, Marcel Apfelbaum, Zhao Liu,
	Philippe Mathieu-Daudé, Eduardo Habkost, Peter Maydell,
	John Snow

On 06/05/2025 18.00, Daniel P. Berrangé wrote:
> Since we deprecate and remove versioned machine types on a fixed
> schedule, we can automatically ensure that the docs reflect the
> latest version info, rather than requiring manual updates on each
> dev cycle.
> 
> The first patch in this series removes the hack which postponed
> automatic removal of versioned machine types to the 10.1.0 release,
> since we're now in the 10.1.0 dev cycle.
> 
> The second patch in this series fixes the logic to ensure dev snapshots
> and release candidates don't have an off-by-1 error in setting
> deprecation and removal thresholds - they must predict the next formal
> release version number.
> 
> The following three patches deal with the docs stuff.

Series
Reviewed-by: Thomas Huth <thuth@redhat.com>



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

* Re: [PATCH v3 2/5] include/hw/boards: cope with dev/rc versions in deprecation checks
  2025-05-06 16:00 ` [PATCH v3 2/5] include/hw/boards: cope with dev/rc versions in deprecation checks Daniel P. Berrangé
@ 2025-05-08  7:45   ` Thomas Huth
  2025-05-08  8:53     ` Daniel P. Berrangé
  0 siblings, 1 reply; 15+ messages in thread
From: Thomas Huth @ 2025-05-08  7:45 UTC (permalink / raw)
  To: Daniel P. Berrangé, qemu-devel
  Cc: Yanan Wang, Michael S. Tsirkin, devel, Marcel Apfelbaum, Zhao Liu,
	Philippe Mathieu-Daudé, Eduardo Habkost, Peter Maydell,
	John Snow

On 06/05/2025 18.00, Daniel P. Berrangé wrote:
> When VERSION is set to a development snapshot (micro >= 50), or a release
> candidate (micro >= 90) we have an off-by-1 in determining deprecation
> and deletion thresholds for versioned machine types. In such cases we need
> to use the next major/minor version in threshold checks.
> 
> This adapts the deprecation macros to do "next version" prediction when
> seeing a dev/rc version number.
> 
> This ensures users of release candidates get an accurate view of machines
> that will be deprecated/deleted in the final release.
> 
> This requires hardcoding our current release policy of 3 releases per
> year, with a major bump at the start of each year, and that dev/rc
> versions have micro >= 50.
> 
> Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
> ---
>   include/hw/boards.h | 33 ++++++++++++++++++++++++++++++++-
>   1 file changed, 32 insertions(+), 1 deletion(-)

FYI, this causes a failure in the CI now:

  https://gitlab.com/thuth/qemu/-/jobs/9965651507#L163

Looks like we have to remove the related subtest now?

  Thomas



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

* Re: [PATCH v3 2/5] include/hw/boards: cope with dev/rc versions in deprecation checks
  2025-05-08  7:45   ` Thomas Huth
@ 2025-05-08  8:53     ` Daniel P. Berrangé
  2025-05-08 10:21       ` Philippe Mathieu-Daudé
  0 siblings, 1 reply; 15+ messages in thread
From: Daniel P. Berrangé @ 2025-05-08  8:53 UTC (permalink / raw)
  To: Thomas Huth
  Cc: qemu-devel, Yanan Wang, Michael S. Tsirkin, devel,
	Marcel Apfelbaum, Zhao Liu, Philippe Mathieu-Daudé,
	Eduardo Habkost, Peter Maydell, John Snow

On Thu, May 08, 2025 at 09:45:50AM +0200, Thomas Huth wrote:
> On 06/05/2025 18.00, Daniel P. Berrangé wrote:
> > When VERSION is set to a development snapshot (micro >= 50), or a release
> > candidate (micro >= 90) we have an off-by-1 in determining deprecation
> > and deletion thresholds for versioned machine types. In such cases we need
> > to use the next major/minor version in threshold checks.
> > 
> > This adapts the deprecation macros to do "next version" prediction when
> > seeing a dev/rc version number.
> > 
> > This ensures users of release candidates get an accurate view of machines
> > that will be deprecated/deleted in the final release.
> > 
> > This requires hardcoding our current release policy of 3 releases per
> > year, with a major bump at the start of each year, and that dev/rc
> > versions have micro >= 50.
> > 
> > Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
> > ---
> >   include/hw/boards.h | 33 ++++++++++++++++++++++++++++++++-
> >   1 file changed, 32 insertions(+), 1 deletion(-)
> 
> FYI, this causes a failure in the CI now:
> 
>  https://gitlab.com/thuth/qemu/-/jobs/9965651507#L163
> 
> Looks like we have to remove the related subtest now?

Oh indeed yes.

With regards,
Daniel
-- 
|: https://berrange.com      -o-    https://www.flickr.com/photos/dberrange :|
|: https://libvirt.org         -o-            https://fstop138.berrange.com :|
|: https://entangle-photo.org    -o-    https://www.instagram.com/dberrange :|



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

* Re: [PATCH v3 2/5] include/hw/boards: cope with dev/rc versions in deprecation checks
  2025-05-08  8:53     ` Daniel P. Berrangé
@ 2025-05-08 10:21       ` Philippe Mathieu-Daudé
  2025-05-08 10:23         ` Daniel P. Berrangé
  0 siblings, 1 reply; 15+ messages in thread
From: Philippe Mathieu-Daudé @ 2025-05-08 10:21 UTC (permalink / raw)
  To: Daniel P. Berrangé, Thomas Huth
  Cc: qemu-devel, Yanan Wang, Michael S. Tsirkin, devel,
	Marcel Apfelbaum, Zhao Liu, Eduardo Habkost, Peter Maydell,
	John Snow

On 8/5/25 10:53, Daniel P. Berrangé wrote:
> On Thu, May 08, 2025 at 09:45:50AM +0200, Thomas Huth wrote:
>> On 06/05/2025 18.00, Daniel P. Berrangé wrote:
>>> When VERSION is set to a development snapshot (micro >= 50), or a release
>>> candidate (micro >= 90) we have an off-by-1 in determining deprecation
>>> and deletion thresholds for versioned machine types. In such cases we need
>>> to use the next major/minor version in threshold checks.
>>>
>>> This adapts the deprecation macros to do "next version" prediction when
>>> seeing a dev/rc version number.
>>>
>>> This ensures users of release candidates get an accurate view of machines
>>> that will be deprecated/deleted in the final release.
>>>
>>> This requires hardcoding our current release policy of 3 releases per
>>> year, with a major bump at the start of each year, and that dev/rc
>>> versions have micro >= 50.
>>>
>>> Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
>>> ---
>>>    include/hw/boards.h | 33 ++++++++++++++++++++++++++++++++-
>>>    1 file changed, 32 insertions(+), 1 deletion(-)
>>
>> FYI, this causes a failure in the CI now:
>>
>>   https://gitlab.com/thuth/qemu/-/jobs/9965651507#L163

Ah, just noticed the same error msg:

   qemu-system-x86_64: unsupported machine type: "pc-q35-4.1"

>>
>> Looks like we have to remove the related subtest now?

Hmmm shouldn't we merge this series on top of up-to-4.1 machines
removal?


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

* Re: [PATCH v3 2/5] include/hw/boards: cope with dev/rc versions in deprecation checks
  2025-05-08 10:21       ` Philippe Mathieu-Daudé
@ 2025-05-08 10:23         ` Daniel P. Berrangé
  2025-05-08 11:16           ` Philippe Mathieu-Daudé
  0 siblings, 1 reply; 15+ messages in thread
From: Daniel P. Berrangé @ 2025-05-08 10:23 UTC (permalink / raw)
  To: Philippe Mathieu-Daudé
  Cc: Thomas Huth, qemu-devel, Yanan Wang, Michael S. Tsirkin, devel,
	Marcel Apfelbaum, Zhao Liu, Eduardo Habkost, Peter Maydell,
	John Snow

On Thu, May 08, 2025 at 12:21:20PM +0200, Philippe Mathieu-Daudé wrote:
> On 8/5/25 10:53, Daniel P. Berrangé wrote:
> > On Thu, May 08, 2025 at 09:45:50AM +0200, Thomas Huth wrote:
> > > On 06/05/2025 18.00, Daniel P. Berrangé wrote:
> > > > When VERSION is set to a development snapshot (micro >= 50), or a release
> > > > candidate (micro >= 90) we have an off-by-1 in determining deprecation
> > > > and deletion thresholds for versioned machine types. In such cases we need
> > > > to use the next major/minor version in threshold checks.
> > > > 
> > > > This adapts the deprecation macros to do "next version" prediction when
> > > > seeing a dev/rc version number.
> > > > 
> > > > This ensures users of release candidates get an accurate view of machines
> > > > that will be deprecated/deleted in the final release.
> > > > 
> > > > This requires hardcoding our current release policy of 3 releases per
> > > > year, with a major bump at the start of each year, and that dev/rc
> > > > versions have micro >= 50.
> > > > 
> > > > Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
> > > > ---
> > > >    include/hw/boards.h | 33 ++++++++++++++++++++++++++++++++-
> > > >    1 file changed, 32 insertions(+), 1 deletion(-)
> > > 
> > > FYI, this causes a failure in the CI now:
> > > 
> > >   https://gitlab.com/thuth/qemu/-/jobs/9965651507#L163
> 
> Ah, just noticed the same error msg:
> 
>   qemu-system-x86_64: unsupported machine type: "pc-q35-4.1"
> 
> > > 
> > > Looks like we have to remove the related subtest now?
> 
> Hmmm shouldn't we merge this series on top of up-to-4.1 machines
> removal?

There's no dependency on that series in general, just removal of the
test case. We need to remove that test case regardless, because our
machines will automatically remove registration of the machine type,
regardless of whether the code is deleted.

With regards,
Daniel
-- 
|: https://berrange.com      -o-    https://www.flickr.com/photos/dberrange :|
|: https://libvirt.org         -o-            https://fstop138.berrange.com :|
|: https://entangle-photo.org    -o-    https://www.instagram.com/dberrange :|



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

* Re: [PATCH v3 2/5] include/hw/boards: cope with dev/rc versions in deprecation checks
  2025-05-08 10:23         ` Daniel P. Berrangé
@ 2025-05-08 11:16           ` Philippe Mathieu-Daudé
  0 siblings, 0 replies; 15+ messages in thread
From: Philippe Mathieu-Daudé @ 2025-05-08 11:16 UTC (permalink / raw)
  To: Daniel P. Berrangé
  Cc: Thomas Huth, qemu-devel, Yanan Wang, Michael S. Tsirkin, devel,
	Marcel Apfelbaum, Zhao Liu, Eduardo Habkost, Peter Maydell,
	John Snow

On 8/5/25 12:23, Daniel P. Berrangé wrote:
> On Thu, May 08, 2025 at 12:21:20PM +0200, Philippe Mathieu-Daudé wrote:
>> On 8/5/25 10:53, Daniel P. Berrangé wrote:
>>> On Thu, May 08, 2025 at 09:45:50AM +0200, Thomas Huth wrote:
>>>> On 06/05/2025 18.00, Daniel P. Berrangé wrote:
>>>>> When VERSION is set to a development snapshot (micro >= 50), or a release
>>>>> candidate (micro >= 90) we have an off-by-1 in determining deprecation
>>>>> and deletion thresholds for versioned machine types. In such cases we need
>>>>> to use the next major/minor version in threshold checks.
>>>>>
>>>>> This adapts the deprecation macros to do "next version" prediction when
>>>>> seeing a dev/rc version number.
>>>>>
>>>>> This ensures users of release candidates get an accurate view of machines
>>>>> that will be deprecated/deleted in the final release.
>>>>>
>>>>> This requires hardcoding our current release policy of 3 releases per
>>>>> year, with a major bump at the start of each year, and that dev/rc
>>>>> versions have micro >= 50.
>>>>>
>>>>> Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
>>>>> ---
>>>>>     include/hw/boards.h | 33 ++++++++++++++++++++++++++++++++-
>>>>>     1 file changed, 32 insertions(+), 1 deletion(-)
>>>>
>>>> FYI, this causes a failure in the CI now:
>>>>
>>>>    https://gitlab.com/thuth/qemu/-/jobs/9965651507#L163
>>
>> Ah, just noticed the same error msg:
>>
>>    qemu-system-x86_64: unsupported machine type: "pc-q35-4.1"
>>
>>>>
>>>> Looks like we have to remove the related subtest now?
>>
>> Hmmm shouldn't we merge this series on top of up-to-4.1 machines
>> removal?
> 
> There's no dependency on that series in general, just removal of the
> test case. We need to remove that test case regardless, because our
> machines will automatically remove registration of the machine type,
> regardless of whether the code is deleted.

Great then :)



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

* Re: [PATCH v3 0/5] docs: automated info about machine deprecation/removal info
  2025-05-06 16:00 [PATCH v3 0/5] docs: automated info about machine deprecation/removal info Daniel P. Berrangé
                   ` (5 preceding siblings ...)
  2025-05-06 17:53 ` [PATCH v3 0/5] docs: automated info about machine deprecation/removal info Thomas Huth
@ 2025-05-08 11:17 ` Philippe Mathieu-Daudé
  2025-05-09 16:55 ` Michael S. Tsirkin
  2025-05-11 13:20 ` Michael S. Tsirkin
  8 siblings, 0 replies; 15+ messages in thread
From: Philippe Mathieu-Daudé @ 2025-05-08 11:17 UTC (permalink / raw)
  To: Daniel P. Berrangé, qemu-devel
  Cc: Yanan Wang, Michael S. Tsirkin, devel, Marcel Apfelbaum, Zhao Liu,
	Eduardo Habkost, Thomas Huth, Peter Maydell, John Snow

On 6/5/25 18:00, Daniel P. Berrangé wrote:

> Daniel P. Berrangé (5):
>    Revert "include/hw: temporarily disable deletion of versioned machine
>      types"
>    include/hw/boards: cope with dev/rc versions in deprecation checks
>    docs/about/deprecated: auto-generate a note for versioned machine
>      types
>    docs/about/removed-features: auto-generate a note for versioned
>      machine types
>    include/hw/boards: add warning about changing deprecation logic

Series (on top on Thomas pc-q35-4.1 removal):
Tested-by: Philippe Mathieu-Daudé <philmd@linaro.org>



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

* Re: [PATCH v3 0/5] docs: automated info about machine deprecation/removal info
  2025-05-06 16:00 [PATCH v3 0/5] docs: automated info about machine deprecation/removal info Daniel P. Berrangé
                   ` (6 preceding siblings ...)
  2025-05-08 11:17 ` Philippe Mathieu-Daudé
@ 2025-05-09 16:55 ` Michael S. Tsirkin
  2025-05-11 13:20 ` Michael S. Tsirkin
  8 siblings, 0 replies; 15+ messages in thread
From: Michael S. Tsirkin @ 2025-05-09 16:55 UTC (permalink / raw)
  To: Daniel P. Berrangé
  Cc: qemu-devel, Yanan Wang, devel, Marcel Apfelbaum, Zhao Liu,
	Philippe Mathieu-Daudé, Eduardo Habkost, Thomas Huth,
	Peter Maydell, John Snow

On Tue, May 06, 2025 at 05:00:19PM +0100, Daniel P. Berrangé wrote:
> Since we deprecate and remove versioned machine types on a fixed
> schedule, we can automatically ensure that the docs reflect the
> latest version info, rather than requiring manual updates on each
> dev cycle.
> 
> The first patch in this series removes the hack which postponed
> automatic removal of versioned machine types to the 10.1.0 release,
> since we're now in the 10.1.0 dev cycle.
> 
> The second patch in this series fixes the logic to ensure dev snapshots
> and release candidates don't have an off-by-1 error in setting
> deprecation and removal thresholds - they must predict the next formal
> release version number.
> 
> The following three patches deal with the docs stuff.

series:
Reviewed-by: Michael S. Tsirkin <mst@redhat.com>

> Changed in v3:
> 
>  - Remove mistaken mention of 'ppc', only 'ppc64' has versioned
>    machine types
> 
> Changed in v2:
> 
>  - Remove hack that temporarily postponed automatic deletion
>    of machine types
>  - Fix docs version info for stable bugfix releases
> 
> Daniel P. Berrangé (5):
>   Revert "include/hw: temporarily disable deletion of versioned machine
>     types"
>   include/hw/boards: cope with dev/rc versions in deprecation checks
>   docs/about/deprecated: auto-generate a note for versioned machine
>     types
>   docs/about/removed-features: auto-generate a note for versioned
>     machine types
>   include/hw/boards: add warning about changing deprecation logic
> 
>  docs/about/deprecated.rst       |  7 ++++
>  docs/about/removed-features.rst | 10 +++---
>  docs/conf.py                    | 39 +++++++++++++++++++++-
>  include/hw/boards.h             | 58 +++++++++++++++++++++------------
>  4 files changed, 89 insertions(+), 25 deletions(-)
> 
> -- 
> 2.49.0



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

* Re: [PATCH v3 0/5] docs: automated info about machine deprecation/removal info
  2025-05-06 16:00 [PATCH v3 0/5] docs: automated info about machine deprecation/removal info Daniel P. Berrangé
                   ` (7 preceding siblings ...)
  2025-05-09 16:55 ` Michael S. Tsirkin
@ 2025-05-11 13:20 ` Michael S. Tsirkin
  8 siblings, 0 replies; 15+ messages in thread
From: Michael S. Tsirkin @ 2025-05-11 13:20 UTC (permalink / raw)
  To: Daniel P. Berrangé
  Cc: qemu-devel, Yanan Wang, devel, Marcel Apfelbaum, Zhao Liu,
	Philippe Mathieu-Daudé, Eduardo Habkost, Thomas Huth,
	Peter Maydell, John Snow

On Tue, May 06, 2025 at 05:00:19PM +0100, Daniel P. Berrangé wrote:
> Since we deprecate and remove versioned machine types on a fixed
> schedule, we can automatically ensure that the docs reflect the
> latest version info, rather than requiring manual updates on each
> dev cycle.
> 
> The first patch in this series removes the hack which postponed
> automatic removal of versioned machine types to the 10.1.0 release,
> since we're now in the 10.1.0 dev cycle.
> 
> The second patch in this series fixes the logic to ensure dev snapshots
> and release candidates don't have an off-by-1 error in setting
> deprecation and removal thresholds - they must predict the next formal
> release version number.
> 
> The following three patches deal with the docs stuff.


Reviewed-by: Michael S. Tsirkin <mst@redhat.com>

> Changed in v3:
> 
>  - Remove mistaken mention of 'ppc', only 'ppc64' has versioned
>    machine types
> 
> Changed in v2:
> 
>  - Remove hack that temporarily postponed automatic deletion
>    of machine types
>  - Fix docs version info for stable bugfix releases
> 
> Daniel P. Berrangé (5):
>   Revert "include/hw: temporarily disable deletion of versioned machine
>     types"
>   include/hw/boards: cope with dev/rc versions in deprecation checks
>   docs/about/deprecated: auto-generate a note for versioned machine
>     types
>   docs/about/removed-features: auto-generate a note for versioned
>     machine types
>   include/hw/boards: add warning about changing deprecation logic
> 
>  docs/about/deprecated.rst       |  7 ++++
>  docs/about/removed-features.rst | 10 +++---
>  docs/conf.py                    | 39 +++++++++++++++++++++-
>  include/hw/boards.h             | 58 +++++++++++++++++++++------------
>  4 files changed, 89 insertions(+), 25 deletions(-)
> 
> -- 
> 2.49.0



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

end of thread, other threads:[~2025-05-11 13:20 UTC | newest]

Thread overview: 15+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-05-06 16:00 [PATCH v3 0/5] docs: automated info about machine deprecation/removal info Daniel P. Berrangé
2025-05-06 16:00 ` [PATCH v3 1/5] Revert "include/hw: temporarily disable deletion of versioned machine types" Daniel P. Berrangé
2025-05-06 16:00 ` [PATCH v3 2/5] include/hw/boards: cope with dev/rc versions in deprecation checks Daniel P. Berrangé
2025-05-08  7:45   ` Thomas Huth
2025-05-08  8:53     ` Daniel P. Berrangé
2025-05-08 10:21       ` Philippe Mathieu-Daudé
2025-05-08 10:23         ` Daniel P. Berrangé
2025-05-08 11:16           ` Philippe Mathieu-Daudé
2025-05-06 16:00 ` [PATCH v3 3/5] docs/about/deprecated: auto-generate a note for versioned machine types Daniel P. Berrangé
2025-05-06 16:00 ` [PATCH v3 4/5] docs/about/removed-features: " Daniel P. Berrangé
2025-05-06 16:00 ` [PATCH v3 5/5] include/hw/boards: add warning about changing deprecation logic Daniel P. Berrangé
2025-05-06 17:53 ` [PATCH v3 0/5] docs: automated info about machine deprecation/removal info Thomas Huth
2025-05-08 11:17 ` Philippe Mathieu-Daudé
2025-05-09 16:55 ` Michael S. Tsirkin
2025-05-11 13:20 ` Michael S. Tsirkin

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).