docs/about/deprecated.rst | 13 ------ docs/about/removed-features.rst | 12 +++++ include/system/system.h | 1 - hw/arm/boot.c | 81 +-------------------------------- system/globals.c | 1 - system/vl.c | 4 -- qemu-options.hx | 7 --- 7 files changed, 13 insertions(+), 106 deletions(-)
We deprecated the command line option -old-param for the 10.0
release, which allows us to drop it in 10.2. This option was used to
boot Arm targets with a very old boot protocol using the
'param_struct' ABI. We only ever needed this on a handful of board
types which have all now been removed from QEMU.
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
---
docs/about/deprecated.rst | 13 ------
docs/about/removed-features.rst | 12 +++++
include/system/system.h | 1 -
hw/arm/boot.c | 81 +--------------------------------
system/globals.c | 1 -
system/vl.c | 4 --
qemu-options.hx | 7 ---
7 files changed, 13 insertions(+), 106 deletions(-)
diff --git a/docs/about/deprecated.rst b/docs/about/deprecated.rst
index d50645a0711..58bce715f9c 100644
--- a/docs/about/deprecated.rst
+++ b/docs/about/deprecated.rst
@@ -68,19 +68,6 @@ configurations (e.g. -smp drawers=1,books=1,clusters=1 for x86 PC machine) is
marked deprecated since 9.0, users have to ensure that all the topology members
described with -smp are supported by the target machine.
-``-old-param`` option for booting Arm kernels via param_struct (since 10.0)
-'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
-
-The ``-old-param`` command line option is specific to Arm targets:
-it is used when directly booting a guest kernel to pass it the
-command line and other information via the old ``param_struct`` ABI,
-rather than the newer ATAGS or DTB mechanisms. This option was only
-ever needed to support ancient kernels on some old board types
-like the ``akita`` or ``terrier``; it has been deprecated in the
-kernel since 2001. None of the board types QEMU supports need
-``param_struct`` support, so this option has been deprecated and will
-be removed in a future QEMU version.
-
User-mode emulator command line arguments
-----------------------------------------
diff --git a/docs/about/removed-features.rst b/docs/about/removed-features.rst
index d7c2113fc3e..b1b3d1b1b3f 100644
--- a/docs/about/removed-features.rst
+++ b/docs/about/removed-features.rst
@@ -560,6 +560,18 @@ the options along with the machine models they were intended for.
Use ``-run-with user=..`` instead.
+``-old-param`` option for booting Arm kernels via param_struct (since 10.0)
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+
+The ``-old-param`` command line option was specific to Arm targets:
+it was used when directly booting a guest kernel to pass it the
+command line and other information via the old ``param_struct`` ABI,
+rather than the newer ATAGS or DTB mechanisms. This option was only
+ever needed to support ancient kernels on some old board types
+like the ``akita`` or ``terrier``; it has been deprecated in the
+kernel since 2001. None of the board types QEMU supports need
+``param_struct`` support, so this option has been removed.
+
User-mode emulator command line arguments
-----------------------------------------
diff --git a/include/system/system.h b/include/system/system.h
index a7effe7dfd8..03a2d0e9005 100644
--- a/include/system/system.h
+++ b/include/system/system.h
@@ -42,7 +42,6 @@ extern int graphic_height;
extern int graphic_depth;
extern int display_opengl;
extern const char *keyboard_layout;
-extern int old_param;
extern uint8_t *boot_splash_filedata;
extern bool enable_cpu_pm;
extern QEMUClockType rtc_clock;
diff --git a/hw/arm/boot.c b/hw/arm/boot.c
index d391cd01bb1..525b31e1659 100644
--- a/hw/arm/boot.c
+++ b/hw/arm/boot.c
@@ -336,81 +336,6 @@ static void set_kernel_args(const struct arm_boot_info *info, AddressSpace *as)
WRITE_WORD(p, 0);
}
-static void set_kernel_args_old(const struct arm_boot_info *info,
- AddressSpace *as)
-{
- hwaddr p;
- const char *s;
- int initrd_size = info->initrd_size;
- hwaddr base = info->loader_start;
-
- /* see linux/include/asm-arm/setup.h */
- p = base + KERNEL_ARGS_ADDR;
- /* page_size */
- WRITE_WORD(p, 4096);
- /* nr_pages */
- WRITE_WORD(p, info->ram_size / 4096);
- /* ramdisk_size */
- WRITE_WORD(p, 0);
-#define FLAG_READONLY 1
-#define FLAG_RDLOAD 4
-#define FLAG_RDPROMPT 8
- /* flags */
- WRITE_WORD(p, FLAG_READONLY | FLAG_RDLOAD | FLAG_RDPROMPT);
- /* rootdev */
- WRITE_WORD(p, (31 << 8) | 0); /* /dev/mtdblock0 */
- /* video_num_cols */
- WRITE_WORD(p, 0);
- /* video_num_rows */
- WRITE_WORD(p, 0);
- /* video_x */
- WRITE_WORD(p, 0);
- /* video_y */
- WRITE_WORD(p, 0);
- /* memc_control_reg */
- WRITE_WORD(p, 0);
- /* unsigned char sounddefault */
- /* unsigned char adfsdrives */
- /* unsigned char bytes_per_char_h */
- /* unsigned char bytes_per_char_v */
- WRITE_WORD(p, 0);
- /* pages_in_bank[4] */
- WRITE_WORD(p, 0);
- WRITE_WORD(p, 0);
- WRITE_WORD(p, 0);
- WRITE_WORD(p, 0);
- /* pages_in_vram */
- WRITE_WORD(p, 0);
- /* initrd_start */
- if (initrd_size) {
- WRITE_WORD(p, info->initrd_start);
- } else {
- WRITE_WORD(p, 0);
- }
- /* initrd_size */
- WRITE_WORD(p, initrd_size);
- /* rd_start */
- WRITE_WORD(p, 0);
- /* system_rev */
- WRITE_WORD(p, 0);
- /* system_serial_low */
- WRITE_WORD(p, 0);
- /* system_serial_high */
- WRITE_WORD(p, 0);
- /* mem_fclk_21285 */
- WRITE_WORD(p, 0);
- /* zero unused fields */
- while (p < base + KERNEL_ARGS_ADDR + 256 + 1024) {
- WRITE_WORD(p, 0);
- }
- s = info->kernel_cmdline;
- if (s) {
- address_space_write(as, p, MEMTXATTRS_UNSPECIFIED, s, strlen(s) + 1);
- } else {
- WRITE_WORD(p, 0);
- }
-}
-
static int fdt_add_memory_node(void *fdt, uint32_t acells, hwaddr mem_base,
uint32_t scells, hwaddr mem_len,
int numa_node_id)
@@ -760,11 +685,7 @@ static void do_cpu_reset(void *opaque)
cpu_set_pc(cs, info->loader_start);
if (!have_dtb(info)) {
- if (old_param) {
- set_kernel_args_old(info, as);
- } else {
- set_kernel_args(info, as);
- }
+ set_kernel_args(info, as);
}
} else if (info->secondary_cpu_reset_hook) {
info->secondary_cpu_reset_hook(cpu, info);
diff --git a/system/globals.c b/system/globals.c
index 9640c9511e9..98f9876d5d4 100644
--- a/system/globals.c
+++ b/system/globals.c
@@ -52,7 +52,6 @@ bool vga_interface_created;
Chardev *parallel_hds[MAX_PARALLEL_PORTS];
QEMUOptionRom option_rom[MAX_OPTION_ROMS];
int nb_option_roms;
-int old_param;
const char *qemu_name;
unsigned int nb_prom_envs;
const char *prom_envs[MAX_PROM_ENVS];
diff --git a/system/vl.c b/system/vl.c
index 3b7057e6c66..00f36947257 100644
--- a/system/vl.c
+++ b/system/vl.c
@@ -3524,10 +3524,6 @@ void qemu_init(int argc, char **argv)
prom_envs[nb_prom_envs] = optarg;
nb_prom_envs++;
break;
- case QEMU_OPTION_old_param:
- warn_report("-old-param is deprecated");
- old_param = 1;
- break;
case QEMU_OPTION_rtc:
opts = qemu_opts_parse_noisily(qemu_find_opts("rtc"), optarg,
false);
diff --git a/qemu-options.hx b/qemu-options.hx
index ab23f14d217..aa44b0e34ae 100644
--- a/qemu-options.hx
+++ b/qemu-options.hx
@@ -5347,13 +5347,6 @@ SRST
specified, the former is passed to semihosting as it always
takes precedence.
ERST
-DEF("old-param", 0, QEMU_OPTION_old_param,
- "-old-param old param mode\n", QEMU_ARCH_ARM)
-SRST
-``-old-param``
- Old param mode (ARM only).
-ERST
-
DEF("sandbox", HAS_ARG, QEMU_OPTION_sandbox, \
"-sandbox on[,obsolete=allow|deny][,elevateprivileges=allow|deny|children]\n" \
" [,spawn=allow|deny][,resourcecontrol=allow|deny]\n" \
--
2.43.0
On 28/8/25 18:27, Peter Maydell wrote: > We deprecated the command line option -old-param for the 10.0 > release, which allows us to drop it in 10.2. This option was used to > boot Arm targets with a very old boot protocol using the > 'param_struct' ABI. We only ever needed this on a handful of board > types which have all now been removed from QEMU. > > Signed-off-by: Peter Maydell <peter.maydell@linaro.org> > --- > docs/about/deprecated.rst | 13 ------ > docs/about/removed-features.rst | 12 +++++ > include/system/system.h | 1 - > hw/arm/boot.c | 81 +-------------------------------- > system/globals.c | 1 - > system/vl.c | 4 -- > qemu-options.hx | 7 --- > 7 files changed, 13 insertions(+), 106 deletions(-) FYI this patch doesn't apply anymore.
On Tue, 2 Sept 2025 at 11:54, Philippe Mathieu-Daudé <philmd@linaro.org> wrote: > > On 28/8/25 18:27, Peter Maydell wrote: > > We deprecated the command line option -old-param for the 10.0 > > release, which allows us to drop it in 10.2. This option was used to > > boot Arm targets with a very old boot protocol using the > > 'param_struct' ABI. We only ever needed this on a handful of board > > types which have all now been removed from QEMU. > > > > Signed-off-by: Peter Maydell <peter.maydell@linaro.org> > > --- > > docs/about/deprecated.rst | 13 ------ > > docs/about/removed-features.rst | 12 +++++ > > include/system/system.h | 1 - > > hw/arm/boot.c | 81 +-------------------------------- > > system/globals.c | 1 - > > system/vl.c | 4 -- > > qemu-options.hx | 7 --- > > 7 files changed, 13 insertions(+), 106 deletions(-) > > FYI this patch doesn't apply anymore. I think I wrote it on top of https://patchwork.ozlabs.org/project/qemu-devel/patch/20250828162012.3307647-1-peter.maydell@linaro.org/ ("linux-user: Drop deprecated -p option") -- the conflict is only in the deprecated-features.rst docs. I'll fix this up when I apply it to target-arm.next if the linux-user patch hasn't hit upstream first. -- PMM
On 28/8/25 18:27, Peter Maydell wrote: > We deprecated the command line option -old-param for the 10.0 > release, which allows us to drop it in 10.2. This option was used to > boot Arm targets with a very old boot protocol using the > 'param_struct' ABI. We only ever needed this on a handful of board > types which have all now been removed from QEMU. > > Signed-off-by: Peter Maydell <peter.maydell@linaro.org> > --- > docs/about/deprecated.rst | 13 ------ > docs/about/removed-features.rst | 12 +++++ > include/system/system.h | 1 - > hw/arm/boot.c | 81 +-------------------------------- > system/globals.c | 1 - > system/vl.c | 4 -- > qemu-options.hx | 7 --- > 7 files changed, 13 insertions(+), 106 deletions(-) > diff --git a/docs/about/removed-features.rst b/docs/about/removed-features.rst > index d7c2113fc3e..b1b3d1b1b3f 100644 > --- a/docs/about/removed-features.rst > +++ b/docs/about/removed-features.rst > @@ -560,6 +560,18 @@ the options along with the machine models they were intended for. > > Use ``-run-with user=..`` instead. > > +``-old-param`` option for booting Arm kernels via param_struct (since 10.0) s/since 10.0/removed in 10.2/ > +''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' > + > +The ``-old-param`` command line option was specific to Arm targets: > +it was used when directly booting a guest kernel to pass it the > +command line and other information via the old ``param_struct`` ABI, > +rather than the newer ATAGS or DTB mechanisms. This option was only > +ever needed to support ancient kernels on some old board types > +like the ``akita`` or ``terrier``; it has been deprecated in the > +kernel since 2001. None of the board types QEMU supports need > +``param_struct`` support, so this option has been removed. Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
On 8/29/25 02:27, Peter Maydell wrote: > We deprecated the command line option -old-param for the 10.0 > release, which allows us to drop it in 10.2. This option was used to > boot Arm targets with a very old boot protocol using the > 'param_struct' ABI. We only ever needed this on a handful of board > types which have all now been removed from QEMU. > > Signed-off-by: Peter Maydell<peter.maydell@linaro.org> > --- > docs/about/deprecated.rst | 13 ------ > docs/about/removed-features.rst | 12 +++++ > include/system/system.h | 1 - > hw/arm/boot.c | 81 +-------------------------------- > system/globals.c | 1 - > system/vl.c | 4 -- > qemu-options.hx | 7 --- > 7 files changed, 13 insertions(+), 106 deletions(-) Reviewed-by: Richard Henderson <richard.henderson@linaro.org> r~
On Thu, 28 Aug 2025 19:27, Peter Maydell <peter.maydell@linaro.org> wrote: >We deprecated the command line option -old-param for the 10.0 >release, which allows us to drop it in 10.2. This option was used to >boot Arm targets with a very old boot protocol using the >'param_struct' ABI. We only ever needed this on a handful of board >types which have all now been removed from QEMU. > >Signed-off-by: Peter Maydell <peter.maydell@linaro.org> >--- Reviewed-by: Manos Pitsidianakis <manos.pitsidianakis@linaro.org> > docs/about/deprecated.rst | 13 ------ > docs/about/removed-features.rst | 12 +++++ > include/system/system.h | 1 - > hw/arm/boot.c | 81 +-------------------------------- > system/globals.c | 1 - > system/vl.c | 4 -- > qemu-options.hx | 7 --- > 7 files changed, 13 insertions(+), 106 deletions(-) > >diff --git a/docs/about/deprecated.rst b/docs/about/deprecated.rst >index d50645a0711..58bce715f9c 100644 >--- a/docs/about/deprecated.rst >+++ b/docs/about/deprecated.rst >@@ -68,19 +68,6 @@ configurations (e.g. -smp drawers=1,books=1,clusters=1 for x86 PC machine) is > marked deprecated since 9.0, users have to ensure that all the topology members > described with -smp are supported by the target machine. > >-``-old-param`` option for booting Arm kernels via param_struct (since 10.0) >-''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' >- >-The ``-old-param`` command line option is specific to Arm targets: >-it is used when directly booting a guest kernel to pass it the >-command line and other information via the old ``param_struct`` ABI, >-rather than the newer ATAGS or DTB mechanisms. This option was only >-ever needed to support ancient kernels on some old board types >-like the ``akita`` or ``terrier``; it has been deprecated in the >-kernel since 2001. None of the board types QEMU supports need >-``param_struct`` support, so this option has been deprecated and will >-be removed in a future QEMU version. >- > User-mode emulator command line arguments > ----------------------------------------- > >diff --git a/docs/about/removed-features.rst b/docs/about/removed-features.rst >index d7c2113fc3e..b1b3d1b1b3f 100644 >--- a/docs/about/removed-features.rst >+++ b/docs/about/removed-features.rst >@@ -560,6 +560,18 @@ the options along with the machine models they were intended for. > > Use ``-run-with user=..`` instead. > >+``-old-param`` option for booting Arm kernels via param_struct (since 10.0) >+''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' >+ >+The ``-old-param`` command line option was specific to Arm targets: >+it was used when directly booting a guest kernel to pass it the >+command line and other information via the old ``param_struct`` ABI, >+rather than the newer ATAGS or DTB mechanisms. This option was only >+ever needed to support ancient kernels on some old board types >+like the ``akita`` or ``terrier``; it has been deprecated in the >+kernel since 2001. None of the board types QEMU supports need >+``param_struct`` support, so this option has been removed. >+ > > User-mode emulator command line arguments > ----------------------------------------- >diff --git a/include/system/system.h b/include/system/system.h >index a7effe7dfd8..03a2d0e9005 100644 >--- a/include/system/system.h >+++ b/include/system/system.h >@@ -42,7 +42,6 @@ extern int graphic_height; > extern int graphic_depth; > extern int display_opengl; > extern const char *keyboard_layout; >-extern int old_param; > extern uint8_t *boot_splash_filedata; > extern bool enable_cpu_pm; > extern QEMUClockType rtc_clock; >diff --git a/hw/arm/boot.c b/hw/arm/boot.c >index d391cd01bb1..525b31e1659 100644 >--- a/hw/arm/boot.c >+++ b/hw/arm/boot.c >@@ -336,81 +336,6 @@ static void set_kernel_args(const struct arm_boot_info *info, AddressSpace *as) > WRITE_WORD(p, 0); > } > >-static void set_kernel_args_old(const struct arm_boot_info *info, >- AddressSpace *as) >-{ >- hwaddr p; >- const char *s; >- int initrd_size = info->initrd_size; >- hwaddr base = info->loader_start; >- >- /* see linux/include/asm-arm/setup.h */ >- p = base + KERNEL_ARGS_ADDR; >- /* page_size */ >- WRITE_WORD(p, 4096); >- /* nr_pages */ >- WRITE_WORD(p, info->ram_size / 4096); >- /* ramdisk_size */ >- WRITE_WORD(p, 0); >-#define FLAG_READONLY 1 >-#define FLAG_RDLOAD 4 >-#define FLAG_RDPROMPT 8 >- /* flags */ >- WRITE_WORD(p, FLAG_READONLY | FLAG_RDLOAD | FLAG_RDPROMPT); >- /* rootdev */ >- WRITE_WORD(p, (31 << 8) | 0); /* /dev/mtdblock0 */ >- /* video_num_cols */ >- WRITE_WORD(p, 0); >- /* video_num_rows */ >- WRITE_WORD(p, 0); >- /* video_x */ >- WRITE_WORD(p, 0); >- /* video_y */ >- WRITE_WORD(p, 0); >- /* memc_control_reg */ >- WRITE_WORD(p, 0); >- /* unsigned char sounddefault */ >- /* unsigned char adfsdrives */ >- /* unsigned char bytes_per_char_h */ >- /* unsigned char bytes_per_char_v */ >- WRITE_WORD(p, 0); >- /* pages_in_bank[4] */ >- WRITE_WORD(p, 0); >- WRITE_WORD(p, 0); >- WRITE_WORD(p, 0); >- WRITE_WORD(p, 0); >- /* pages_in_vram */ >- WRITE_WORD(p, 0); >- /* initrd_start */ >- if (initrd_size) { >- WRITE_WORD(p, info->initrd_start); >- } else { >- WRITE_WORD(p, 0); >- } >- /* initrd_size */ >- WRITE_WORD(p, initrd_size); >- /* rd_start */ >- WRITE_WORD(p, 0); >- /* system_rev */ >- WRITE_WORD(p, 0); >- /* system_serial_low */ >- WRITE_WORD(p, 0); >- /* system_serial_high */ >- WRITE_WORD(p, 0); >- /* mem_fclk_21285 */ >- WRITE_WORD(p, 0); >- /* zero unused fields */ >- while (p < base + KERNEL_ARGS_ADDR + 256 + 1024) { >- WRITE_WORD(p, 0); >- } >- s = info->kernel_cmdline; >- if (s) { >- address_space_write(as, p, MEMTXATTRS_UNSPECIFIED, s, strlen(s) + 1); >- } else { >- WRITE_WORD(p, 0); >- } >-} >- > static int fdt_add_memory_node(void *fdt, uint32_t acells, hwaddr mem_base, > uint32_t scells, hwaddr mem_len, > int numa_node_id) >@@ -760,11 +685,7 @@ static void do_cpu_reset(void *opaque) > cpu_set_pc(cs, info->loader_start); > > if (!have_dtb(info)) { >- if (old_param) { >- set_kernel_args_old(info, as); >- } else { >- set_kernel_args(info, as); >- } >+ set_kernel_args(info, as); > } > } else if (info->secondary_cpu_reset_hook) { > info->secondary_cpu_reset_hook(cpu, info); >diff --git a/system/globals.c b/system/globals.c >index 9640c9511e9..98f9876d5d4 100644 >--- a/system/globals.c >+++ b/system/globals.c >@@ -52,7 +52,6 @@ bool vga_interface_created; > Chardev *parallel_hds[MAX_PARALLEL_PORTS]; > QEMUOptionRom option_rom[MAX_OPTION_ROMS]; > int nb_option_roms; >-int old_param; > const char *qemu_name; > unsigned int nb_prom_envs; > const char *prom_envs[MAX_PROM_ENVS]; >diff --git a/system/vl.c b/system/vl.c >index 3b7057e6c66..00f36947257 100644 >--- a/system/vl.c >+++ b/system/vl.c >@@ -3524,10 +3524,6 @@ void qemu_init(int argc, char **argv) > prom_envs[nb_prom_envs] = optarg; > nb_prom_envs++; > break; >- case QEMU_OPTION_old_param: >- warn_report("-old-param is deprecated"); >- old_param = 1; >- break; > case QEMU_OPTION_rtc: > opts = qemu_opts_parse_noisily(qemu_find_opts("rtc"), optarg, > false); >diff --git a/qemu-options.hx b/qemu-options.hx >index ab23f14d217..aa44b0e34ae 100644 >--- a/qemu-options.hx >+++ b/qemu-options.hx >@@ -5347,13 +5347,6 @@ SRST > specified, the former is passed to semihosting as it always > takes precedence. > ERST >-DEF("old-param", 0, QEMU_OPTION_old_param, >- "-old-param old param mode\n", QEMU_ARCH_ARM) >-SRST >-``-old-param`` >- Old param mode (ARM only). >-ERST >- > DEF("sandbox", HAS_ARG, QEMU_OPTION_sandbox, \ > "-sandbox on[,obsolete=allow|deny][,elevateprivileges=allow|deny|children]\n" \ > " [,spawn=allow|deny][,resourcecontrol=allow|deny]\n" \ >-- >2.43.0 > >
On 28/08/2025 18.27, Peter Maydell wrote: > We deprecated the command line option -old-param for the 10.0 > release, which allows us to drop it in 10.2. This option was used to > boot Arm targets with a very old boot protocol using the > 'param_struct' ABI. We only ever needed this on a handful of board > types which have all now been removed from QEMU. > > Signed-off-by: Peter Maydell <peter.maydell@linaro.org> > --- > docs/about/deprecated.rst | 13 ------ > docs/about/removed-features.rst | 12 +++++ > include/system/system.h | 1 - > hw/arm/boot.c | 81 +-------------------------------- > system/globals.c | 1 - > system/vl.c | 4 -- > qemu-options.hx | 7 --- > 7 files changed, 13 insertions(+), 106 deletions(-) Reviewed-by: Thomas Huth <thuth@redhat.com>
Peter Maydell <peter.maydell@linaro.org> writes: > We deprecated the command line option -old-param for the 10.0 > release, which allows us to drop it in 10.2. This option was used to > boot Arm targets with a very old boot protocol using the > 'param_struct' ABI. We only ever needed this on a handful of board > types which have all now been removed from QEMU. > > Signed-off-by: Peter Maydell <peter.maydell@linaro.org> Reviewed-by: Alex Bennée <alex.bennee@linaro.org> -- Alex Bennée Virtualisation Tech Lead @ Linaro
© 2016 - 2025 Red Hat, Inc.