* [PULL 00/12] Misc HW patches for 2025-10-13
@ 2025-10-13 19:17 Philippe Mathieu-Daudé
2025-10-13 19:17 ` [PULL 01/12] hw/display/xenfb: Replace unreachable code by g_assert_not_reached() Philippe Mathieu-Daudé
` (11 more replies)
0 siblings, 12 replies; 13+ messages in thread
From: Philippe Mathieu-Daudé @ 2025-10-13 19:17 UTC (permalink / raw)
To: qemu-devel
The following changes since commit f3f2ad119347e8c086b72282febcaac5d731b343:
Merge tag 'pull-target-arm-20251010' of https://gitlab.com/pm215/qemu into staging (2025-10-10 08:26:09 -0700)
are available in the Git repository at:
https://github.com/philmd/qemu.git tags/hw-misc-20251013
for you to fetch changes up to 9fedc11ff127636900cc7a0a3e7214e5cb60a313:
hw/hppa: Reduce variables scope in common_init() (2025-10-13 21:13:08 +0200)
----------------------------------------------------------------
Misc HW patches
----------------------------------------------------------------
Cédric Le Goater (1):
hw/arm/aspeed: Don't set 'auto_create_sdcard'
Luc Michel (1):
hw/net/can/xlnx-versal-canfd: remove unused include directives
Markus Armbruster (1):
hw/display/xenfb: Replace unreachable code by g_assert_not_reached()
Mohamed Mediouni (1):
hw/vmapple: include missing headers
Philippe Mathieu-Daudé (8):
hw/ppc: Do not open-code cpu_resume() in spin_kick()
hw/xtensa/xtfpga: Have xtfpga_init() only initialize MMU
hw/sparc/leon3: Remove unnecessary CPU() QOM cast
hw/s390x/sclp: Do not ignore address_space_read/write() errors
hw/loongarch/boot: Remove unnecessary cast to target_ulong
hw/hppa: Convert type_init() -> DEFINE_TYPES()
hw/hppa: Factor QOM HPPA_COMMON_MACHINE out
hw/hppa: Reduce variables scope in common_init()
hw/arm/aspeed.c | 22 -------
hw/display/xenfb.c | 3 +-
hw/hppa/machine.c | 104 +++++++++++++++++----------------
hw/loongarch/boot.c | 7 ++-
hw/net/can/xlnx-versal-canfd.c | 4 --
hw/ppc/ppce500_spin.c | 3 +-
hw/s390x/sclp.c | 18 +++++-
hw/sparc/leon3.c | 2 +-
hw/vmapple/vmapple.c | 2 +
hw/xtensa/xtfpga.c | 2 +-
10 files changed, 78 insertions(+), 89 deletions(-)
--
2.51.0
^ permalink raw reply [flat|nested] 13+ messages in thread
* [PULL 01/12] hw/display/xenfb: Replace unreachable code by g_assert_not_reached()
2025-10-13 19:17 [PULL 00/12] Misc HW patches for 2025-10-13 Philippe Mathieu-Daudé
@ 2025-10-13 19:17 ` Philippe Mathieu-Daudé
2025-10-13 19:17 ` [PULL 02/12] hw/ppc: Do not open-code cpu_resume() in spin_kick() Philippe Mathieu-Daudé
` (10 subsequent siblings)
11 siblings, 0 replies; 13+ messages in thread
From: Philippe Mathieu-Daudé @ 2025-10-13 19:17 UTC (permalink / raw)
To: qemu-devel
From: Markus Armbruster <armbru@redhat.com>
xenfb_mouse_event() has a switch statement whose controlling
expression move->axis is an enum InputAxis. The enum values are
INPUT_AXIS_X and INPUT_AXIS_Y, encoded as 0 and 1. The switch has a
case for both axes. In addition, it has an unreachable default label.
This convinces Coverity that move->axis can be greater than 1. It
duly reports a buffer overrun when it is used to subscript an array
with two elements.
Replace the unreachable code by g_assert_not_reached().
Resolves: Coverity CID 1613906
Signed-off-by: Markus Armbruster <armbru@redhat.com>
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
Message-ID: <20250729111226.3627499-1-armbru@redhat.com>
[PMD: s/abort/g_assert_not_reached/]
Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org>
---
hw/display/xenfb.c | 3 +--
1 file changed, 1 insertion(+), 2 deletions(-)
diff --git a/hw/display/xenfb.c b/hw/display/xenfb.c
index 22822fecea3..164fd0b2485 100644
--- a/hw/display/xenfb.c
+++ b/hw/display/xenfb.c
@@ -283,8 +283,7 @@ static void xenfb_mouse_event(DeviceState *dev, QemuConsole *src,
scale = surface_height(surface) - 1;
break;
default:
- scale = 0x8000;
- break;
+ g_assert_not_reached();
}
xenfb->axis[move->axis] = move->value * scale / 0x7fff;
}
--
2.51.0
^ permalink raw reply related [flat|nested] 13+ messages in thread
* [PULL 02/12] hw/ppc: Do not open-code cpu_resume() in spin_kick()
2025-10-13 19:17 [PULL 00/12] Misc HW patches for 2025-10-13 Philippe Mathieu-Daudé
2025-10-13 19:17 ` [PULL 01/12] hw/display/xenfb: Replace unreachable code by g_assert_not_reached() Philippe Mathieu-Daudé
@ 2025-10-13 19:17 ` Philippe Mathieu-Daudé
2025-10-13 19:17 ` [PULL 03/12] hw/xtensa/xtfpga: Have xtfpga_init() only initialize MMU Philippe Mathieu-Daudé
` (9 subsequent siblings)
11 siblings, 0 replies; 13+ messages in thread
From: Philippe Mathieu-Daudé @ 2025-10-13 19:17 UTC (permalink / raw)
To: qemu-devel
In order to make the code easier to follow / review,
use the cpu_resume() helper instead of open-coding it.
Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org>
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
Message-Id: <20250924173028.53658-2-philmd@linaro.org>
---
hw/ppc/ppce500_spin.c | 3 +--
1 file changed, 1 insertion(+), 2 deletions(-)
diff --git a/hw/ppc/ppce500_spin.c b/hw/ppc/ppce500_spin.c
index 2310f62a91e..bc70e50e926 100644
--- a/hw/ppc/ppce500_spin.c
+++ b/hw/ppc/ppce500_spin.c
@@ -99,8 +99,7 @@ static void spin_kick(CPUState *cs, run_on_cpu_data data)
cs->halted = 0;
cs->exception_index = -1;
- cs->stopped = false;
- qemu_cpu_kick(cs);
+ cpu_resume(cs);
}
static void spin_write(void *opaque, hwaddr addr, uint64_t value,
--
2.51.0
^ permalink raw reply related [flat|nested] 13+ messages in thread
* [PULL 03/12] hw/xtensa/xtfpga: Have xtfpga_init() only initialize MMU
2025-10-13 19:17 [PULL 00/12] Misc HW patches for 2025-10-13 Philippe Mathieu-Daudé
2025-10-13 19:17 ` [PULL 01/12] hw/display/xenfb: Replace unreachable code by g_assert_not_reached() Philippe Mathieu-Daudé
2025-10-13 19:17 ` [PULL 02/12] hw/ppc: Do not open-code cpu_resume() in spin_kick() Philippe Mathieu-Daudé
@ 2025-10-13 19:17 ` Philippe Mathieu-Daudé
2025-10-13 19:17 ` [PULL 04/12] hw/sparc/leon3: Remove unnecessary CPU() QOM cast Philippe Mathieu-Daudé
` (8 subsequent siblings)
11 siblings, 0 replies; 13+ messages in thread
From: Philippe Mathieu-Daudé @ 2025-10-13 19:17 UTC (permalink / raw)
To: qemu-devel
cpu_reset() should not be used with an unrealized CPU.
Here we simply want to initialize the MMU, not the CPU,
so just call reset_mmu().
Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org>
Reviewed-by: Max Filippov <jcmvbkbc@gmail.com>
Message-Id: <20250925013513.67780-1-philmd@linaro.org>
---
hw/xtensa/xtfpga.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/hw/xtensa/xtfpga.c b/hw/xtensa/xtfpga.c
index 6efffae466b..55de1a7a073 100644
--- a/hw/xtensa/xtfpga.c
+++ b/hw/xtensa/xtfpga.c
@@ -268,7 +268,7 @@ static void xtfpga_init(const XtfpgaBoardDesc *board, MachineState *machine)
/* Need MMU initialized prior to ELF loading,
* so that ELF gets loaded into virtual addresses
*/
- cpu_reset(CPU(cpu));
+ reset_mmu(cenv);
}
if (smp_cpus > 1) {
extints = xtensa_mx_pic_get_extints(mx_pic);
--
2.51.0
^ permalink raw reply related [flat|nested] 13+ messages in thread
* [PULL 04/12] hw/sparc/leon3: Remove unnecessary CPU() QOM cast
2025-10-13 19:17 [PULL 00/12] Misc HW patches for 2025-10-13 Philippe Mathieu-Daudé
` (2 preceding siblings ...)
2025-10-13 19:17 ` [PULL 03/12] hw/xtensa/xtfpga: Have xtfpga_init() only initialize MMU Philippe Mathieu-Daudé
@ 2025-10-13 19:17 ` Philippe Mathieu-Daudé
2025-10-13 19:18 ` [PULL 05/12] hw/net/can/xlnx-versal-canfd: remove unused include directives Philippe Mathieu-Daudé
` (7 subsequent siblings)
11 siblings, 0 replies; 13+ messages in thread
From: Philippe Mathieu-Daudé @ 2025-10-13 19:17 UTC (permalink / raw)
To: qemu-devel
env_cpu() already returns a CPUState type, no need to cast.
Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org>
Reviewed-by: Clément Chigot <chigot@adacore.com>
Message-Id: <20251002033623.26800-1-philmd@linaro.org>
---
hw/sparc/leon3.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/hw/sparc/leon3.c b/hw/sparc/leon3.c
index 0aeaad3becc..09d2cec488c 100644
--- a/hw/sparc/leon3.c
+++ b/hw/sparc/leon3.c
@@ -192,7 +192,7 @@ static void leon3_cache_control_int(CPUSPARCState *env)
static void leon3_irq_ack(CPUSPARCState *env, int intno)
{
- CPUState *cpu = CPU(env_cpu(env));
+ CPUState *cpu = env_cpu(env);
grlib_irqmp_ack(env->irq_manager, cpu->cpu_index, intno);
}
--
2.51.0
^ permalink raw reply related [flat|nested] 13+ messages in thread
* [PULL 05/12] hw/net/can/xlnx-versal-canfd: remove unused include directives
2025-10-13 19:17 [PULL 00/12] Misc HW patches for 2025-10-13 Philippe Mathieu-Daudé
` (3 preceding siblings ...)
2025-10-13 19:17 ` [PULL 04/12] hw/sparc/leon3: Remove unnecessary CPU() QOM cast Philippe Mathieu-Daudé
@ 2025-10-13 19:18 ` Philippe Mathieu-Daudé
2025-10-13 19:18 ` [PULL 06/12] hw/arm/aspeed: Don't set 'auto_create_sdcard' Philippe Mathieu-Daudé
` (6 subsequent siblings)
11 siblings, 0 replies; 13+ messages in thread
From: Philippe Mathieu-Daudé @ 2025-10-13 19:18 UTC (permalink / raw)
To: qemu-devel
From: Luc Michel <luc.michel@amd.com>
Drop unecessary include directives in xlnx-versal-canfd.c.
Reviewed-by: Alistair Francis <alistair.francis@wdc.com>
Reviewed-by: Francisco Iglesias <francisco.iglesias@amd.com>
Reviewed-by: Edgar E. Iglesias <edgar.iglesias@amd.com>
Signed-off-by: Luc Michel <luc.michel@amd.com>
Message-ID: <20251002073418.109375-6-luc.michel@amd.com>
Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org>
---
hw/net/can/xlnx-versal-canfd.c | 4 ----
1 file changed, 4 deletions(-)
diff --git a/hw/net/can/xlnx-versal-canfd.c b/hw/net/can/xlnx-versal-canfd.c
index 3eb111949f8..343348660b5 100644
--- a/hw/net/can/xlnx-versal-canfd.c
+++ b/hw/net/can/xlnx-versal-canfd.c
@@ -35,12 +35,8 @@
#include "hw/irq.h"
#include "hw/register.h"
#include "qapi/error.h"
-#include "qemu/bitops.h"
#include "qemu/log.h"
-#include "qemu/cutils.h"
-#include "qemu/event_notifier.h"
#include "hw/qdev-properties.h"
-#include "qom/object_interfaces.h"
#include "migration/vmstate.h"
#include "hw/net/xlnx-versal-canfd.h"
#include "trace.h"
--
2.51.0
^ permalink raw reply related [flat|nested] 13+ messages in thread
* [PULL 06/12] hw/arm/aspeed: Don't set 'auto_create_sdcard'
2025-10-13 19:17 [PULL 00/12] Misc HW patches for 2025-10-13 Philippe Mathieu-Daudé
` (4 preceding siblings ...)
2025-10-13 19:18 ` [PULL 05/12] hw/net/can/xlnx-versal-canfd: remove unused include directives Philippe Mathieu-Daudé
@ 2025-10-13 19:18 ` Philippe Mathieu-Daudé
2025-10-13 19:18 ` [PULL 07/12] hw/s390x/sclp: Do not ignore address_space_read/write() errors Philippe Mathieu-Daudé
` (5 subsequent siblings)
11 siblings, 0 replies; 13+ messages in thread
From: Philippe Mathieu-Daudé @ 2025-10-13 19:18 UTC (permalink / raw)
To: qemu-devel
From: Cédric Le Goater <clg@redhat.com>
The Aspeed machines inherited from a 'no_sdcard' attribute when first
introduced in QEMU. This attribute was later renamed to
'auto_create_sdcard' by commit cdc8d7cadaac ("hw/boards: Rename
no_sdcard -> auto_create_sdcard") and set to 'true'. This has the
indesirable efect to automatically create SD cards at init time.
Remove 'auto_create_sdcard' to avoid creating a SD card device.
Cc: Philippe Mathieu-Daudé <philmd@linaro.org>
Signed-off-by: Cédric Le Goater <clg@redhat.com>
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
Message-ID: <20251003103024.1863551-1-clg@redhat.com>
Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org>
---
hw/arm/aspeed.c | 22 ----------------------
1 file changed, 22 deletions(-)
diff --git a/hw/arm/aspeed.c b/hw/arm/aspeed.c
index 6046ec0bb2a..58cfbc71379 100644
--- a/hw/arm/aspeed.c
+++ b/hw/arm/aspeed.c
@@ -1418,7 +1418,6 @@ static void aspeed_machine_palmetto_class_init(ObjectClass *oc,
amc->spi_model = "mx25l25635f";
amc->num_cs = 1;
amc->i2c_init = palmetto_bmc_i2c_init;
- mc->auto_create_sdcard = true;
mc->default_ram_size = 256 * MiB;
aspeed_machine_class_init_cpus_defaults(mc);
};
@@ -1436,7 +1435,6 @@ static void aspeed_machine_quanta_q71l_class_init(ObjectClass *oc,
amc->spi_model = "mx25l25635e";
amc->num_cs = 1;
amc->i2c_init = quanta_q71l_bmc_i2c_init;
- mc->auto_create_sdcard = true;
mc->default_ram_size = 128 * MiB;
aspeed_machine_class_init_cpus_defaults(mc);
}
@@ -1455,7 +1453,6 @@ static void aspeed_machine_supermicrox11_bmc_class_init(ObjectClass *oc,
amc->num_cs = 1;
amc->macs_mask = ASPEED_MAC0_ON | ASPEED_MAC1_ON;
amc->i2c_init = palmetto_bmc_i2c_init;
- mc->auto_create_sdcard = true;
mc->default_ram_size = 256 * MiB;
aspeed_machine_class_init_cpus_defaults(mc);
}
@@ -1474,7 +1471,6 @@ static void aspeed_machine_supermicro_x11spi_bmc_class_init(ObjectClass *oc,
amc->num_cs = 1;
amc->macs_mask = ASPEED_MAC0_ON | ASPEED_MAC1_ON;
amc->i2c_init = palmetto_bmc_i2c_init;
- mc->auto_create_sdcard = true;
mc->default_ram_size = 512 * MiB;
aspeed_machine_class_init_cpus_defaults(mc);
}
@@ -1492,7 +1488,6 @@ static void aspeed_machine_ast2500_evb_class_init(ObjectClass *oc,
amc->spi_model = "mx25l25635f";
amc->num_cs = 1;
amc->i2c_init = ast2500_evb_i2c_init;
- mc->auto_create_sdcard = true;
mc->default_ram_size = 512 * MiB;
aspeed_machine_class_init_cpus_defaults(mc);
};
@@ -1511,7 +1506,6 @@ static void aspeed_machine_yosemitev2_class_init(ObjectClass *oc,
amc->spi_model = "mx25l25635e";
amc->num_cs = 2;
amc->i2c_init = yosemitev2_bmc_i2c_init;
- mc->auto_create_sdcard = true;
mc->default_ram_size = 512 * MiB;
aspeed_machine_class_init_cpus_defaults(mc);
};
@@ -1529,7 +1523,6 @@ static void aspeed_machine_romulus_class_init(ObjectClass *oc,
amc->spi_model = "mx66l1g45g";
amc->num_cs = 2;
amc->i2c_init = romulus_bmc_i2c_init;
- mc->auto_create_sdcard = true;
mc->default_ram_size = 512 * MiB;
aspeed_machine_class_init_cpus_defaults(mc);
};
@@ -1548,7 +1541,6 @@ static void aspeed_machine_tiogapass_class_init(ObjectClass *oc,
amc->spi_model = "mx25l25635e";
amc->num_cs = 2;
amc->i2c_init = tiogapass_bmc_i2c_init;
- mc->auto_create_sdcard = true;
mc->default_ram_size = 1 * GiB;
aspeed_machine_class_init_cpus_defaults(mc);
};
@@ -1566,7 +1558,6 @@ static void aspeed_machine_sonorapass_class_init(ObjectClass *oc,
amc->spi_model = "mx66l1g45g";
amc->num_cs = 2;
amc->i2c_init = sonorapass_bmc_i2c_init;
- mc->auto_create_sdcard = true;
mc->default_ram_size = 512 * MiB;
aspeed_machine_class_init_cpus_defaults(mc);
};
@@ -1584,7 +1575,6 @@ static void aspeed_machine_witherspoon_class_init(ObjectClass *oc,
amc->spi_model = "mx66l1g45g";
amc->num_cs = 2;
amc->i2c_init = witherspoon_bmc_i2c_init;
- mc->auto_create_sdcard = true;
mc->default_ram_size = 512 * MiB;
aspeed_machine_class_init_cpus_defaults(mc);
};
@@ -1606,7 +1596,6 @@ static void aspeed_machine_ast2600_evb_class_init(ObjectClass *oc,
ASPEED_MAC3_ON;
amc->sdhci_wp_inverted = true;
amc->i2c_init = ast2600_evb_i2c_init;
- mc->auto_create_sdcard = true;
mc->default_ram_size = 1 * GiB;
aspeed_machine_class_init_cpus_defaults(mc);
aspeed_machine_ast2600_class_emmc_init(oc);
@@ -1625,7 +1614,6 @@ static void aspeed_machine_g220a_class_init(ObjectClass *oc, const void *data)
amc->num_cs = 2;
amc->macs_mask = ASPEED_MAC0_ON | ASPEED_MAC1_ON;
amc->i2c_init = g220a_bmc_i2c_init;
- mc->auto_create_sdcard = true;
mc->default_ram_size = 1024 * MiB;
aspeed_machine_class_init_cpus_defaults(mc);
};
@@ -1644,7 +1632,6 @@ static void aspeed_machine_fp5280g2_class_init(ObjectClass *oc,
amc->num_cs = 2;
amc->macs_mask = ASPEED_MAC0_ON | ASPEED_MAC1_ON;
amc->i2c_init = fp5280g2_bmc_i2c_init;
- mc->auto_create_sdcard = true;
mc->default_ram_size = 512 * MiB;
aspeed_machine_class_init_cpus_defaults(mc);
};
@@ -1663,7 +1650,6 @@ static void aspeed_machine_rainier_class_init(ObjectClass *oc, const void *data)
amc->num_cs = 2;
amc->macs_mask = ASPEED_MAC2_ON | ASPEED_MAC3_ON;
amc->i2c_init = rainier_bmc_i2c_init;
- mc->auto_create_sdcard = true;
mc->default_ram_size = 1 * GiB;
aspeed_machine_class_init_cpus_defaults(mc);
aspeed_machine_ast2600_class_emmc_init(oc);
@@ -1686,7 +1672,6 @@ static void aspeed_machine_fuji_class_init(ObjectClass *oc, const void *data)
amc->macs_mask = ASPEED_MAC3_ON;
amc->i2c_init = fuji_bmc_i2c_init;
amc->uart_default = ASPEED_DEV_UART1;
- mc->auto_create_sdcard = true;
mc->default_ram_size = FUJI_BMC_RAM_SIZE;
aspeed_machine_class_init_cpus_defaults(mc);
};
@@ -1708,7 +1693,6 @@ static void aspeed_machine_bletchley_class_init(ObjectClass *oc,
amc->num_cs = 2;
amc->macs_mask = ASPEED_MAC2_ON;
amc->i2c_init = bletchley_bmc_i2c_init;
- mc->auto_create_sdcard = true;
mc->default_ram_size = BLETCHLEY_BMC_RAM_SIZE;
aspeed_machine_class_init_cpus_defaults(mc);
}
@@ -1728,7 +1712,6 @@ static void aspeed_machine_catalina_class_init(ObjectClass *oc,
amc->num_cs = 2;
amc->macs_mask = ASPEED_MAC2_ON;
amc->i2c_init = catalina_bmc_i2c_init;
- mc->auto_create_sdcard = true;
mc->default_ram_size = CATALINA_BMC_RAM_SIZE;
aspeed_machine_class_init_cpus_defaults(mc);
aspeed_machine_ast2600_class_emmc_init(oc);
@@ -1796,7 +1779,6 @@ static void aspeed_machine_fby35_class_init(ObjectClass *oc, const void *data)
amc->num_cs = 2;
amc->macs_mask = ASPEED_MAC3_ON;
amc->i2c_init = fby35_i2c_init;
- mc->auto_create_sdcard = true;
/* FIXME: Replace this macro with something more general */
mc->default_ram_size = FUJI_BMC_RAM_SIZE;
aspeed_machine_class_init_cpus_defaults(mc);
@@ -1909,7 +1891,6 @@ static void aspeed_machine_ast2700a0_evb_class_init(ObjectClass *oc,
amc->uart_default = ASPEED_DEV_UART12;
amc->i2c_init = ast2700_evb_i2c_init;
amc->vbootrom = true;
- mc->auto_create_sdcard = true;
mc->default_ram_size = 1 * GiB;
aspeed_machine_class_init_cpus_defaults(mc);
}
@@ -1932,7 +1913,6 @@ static void aspeed_machine_ast2700a1_evb_class_init(ObjectClass *oc,
amc->uart_default = ASPEED_DEV_UART12;
amc->i2c_init = ast2700_evb_i2c_init;
amc->vbootrom = true;
- mc->auto_create_sdcard = true;
mc->default_ram_size = 1 * GiB;
aspeed_machine_class_init_cpus_defaults(mc);
}
@@ -1953,7 +1933,6 @@ static void aspeed_machine_qcom_dc_scm_v1_class_init(ObjectClass *oc,
amc->num_cs = 2;
amc->macs_mask = ASPEED_MAC2_ON | ASPEED_MAC3_ON;
amc->i2c_init = qcom_dc_scm_bmc_i2c_init;
- mc->auto_create_sdcard = true;
mc->default_ram_size = 1 * GiB;
aspeed_machine_class_init_cpus_defaults(mc);
};
@@ -1973,7 +1952,6 @@ static void aspeed_machine_qcom_firework_class_init(ObjectClass *oc,
amc->num_cs = 2;
amc->macs_mask = ASPEED_MAC2_ON | ASPEED_MAC3_ON;
amc->i2c_init = qcom_dc_scm_firework_i2c_init;
- mc->auto_create_sdcard = true;
mc->default_ram_size = 1 * GiB;
aspeed_machine_class_init_cpus_defaults(mc);
};
--
2.51.0
^ permalink raw reply related [flat|nested] 13+ messages in thread
* [PULL 07/12] hw/s390x/sclp: Do not ignore address_space_read/write() errors
2025-10-13 19:17 [PULL 00/12] Misc HW patches for 2025-10-13 Philippe Mathieu-Daudé
` (5 preceding siblings ...)
2025-10-13 19:18 ` [PULL 06/12] hw/arm/aspeed: Don't set 'auto_create_sdcard' Philippe Mathieu-Daudé
@ 2025-10-13 19:18 ` Philippe Mathieu-Daudé
2025-10-13 19:18 ` [PULL 08/12] hw/vmapple: include missing headers Philippe Mathieu-Daudé
` (4 subsequent siblings)
11 siblings, 0 replies; 13+ messages in thread
From: Philippe Mathieu-Daudé @ 2025-10-13 19:18 UTC (permalink / raw)
To: qemu-devel
If address_space_read() fails, return PGM_ADDRESSING. In the
unlikely case address_space_write() fails (we already checked
the address is readable), return PGM_PROTECTION.
Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org>
Reviewed-by: Thomas Huth <thuth@redhat.com>
Reviewed-by: Jason J. Herne <jjherne@linux.ibm.com>
Message-Id: <20251007015802.24748-1-philmd@linaro.org>
---
hw/s390x/sclp.c | 18 +++++++++++++++---
1 file changed, 15 insertions(+), 3 deletions(-)
diff --git a/hw/s390x/sclp.c b/hw/s390x/sclp.c
index 51e88ba8f12..8602a566a49 100644
--- a/hw/s390x/sclp.c
+++ b/hw/s390x/sclp.c
@@ -306,6 +306,7 @@ int sclp_service_call(S390CPU *cpu, uint64_t sccb, uint32_t code)
g_autofree SCCB *work_sccb = NULL;
AddressSpace *as = CPU(cpu)->as;
const MemTxAttrs attrs = MEMTXATTRS_UNSPECIFIED;
+ MemTxResult ret;
/* first some basic checks on program checks */
if (env->psw.mask & PSW_MASK_PSTATE) {
@@ -320,7 +321,10 @@ int sclp_service_call(S390CPU *cpu, uint64_t sccb, uint32_t code)
}
/* the header contains the actual length of the sccb */
- address_space_read(as, sccb, attrs, &header, sizeof(SCCBHeader));
+ ret = address_space_read(as, sccb, attrs, &header, sizeof(SCCBHeader));
+ if (ret != MEMTX_OK) {
+ return -PGM_ADDRESSING;
+ }
/* Valid sccb sizes */
if (be16_to_cpu(header.length) < sizeof(SCCBHeader)) {
@@ -333,7 +337,11 @@ int sclp_service_call(S390CPU *cpu, uint64_t sccb, uint32_t code)
* the host has checked the values
*/
work_sccb = g_malloc0(be16_to_cpu(header.length));
- address_space_read(as, sccb, attrs, work_sccb, be16_to_cpu(header.length));
+ ret = address_space_read(as, sccb, attrs,
+ work_sccb, be16_to_cpu(header.length));
+ if (ret != MEMTX_OK) {
+ return -PGM_ADDRESSING;
+ }
if (!sclp_command_code_valid(code)) {
work_sccb->h.response_code = cpu_to_be16(SCLP_RC_INVALID_SCLP_COMMAND);
@@ -347,7 +355,11 @@ int sclp_service_call(S390CPU *cpu, uint64_t sccb, uint32_t code)
sclp_c->execute(sclp, work_sccb, code);
out_write:
- address_space_write(as, sccb, attrs, work_sccb, be16_to_cpu(header.length));
+ ret = address_space_write(as, sccb, attrs,
+ work_sccb, be16_to_cpu(header.length));
+ if (ret != MEMTX_OK) {
+ return -PGM_PROTECTION;
+ }
sclp_c->service_interrupt(sclp, sccb);
--
2.51.0
^ permalink raw reply related [flat|nested] 13+ messages in thread
* [PULL 08/12] hw/vmapple: include missing headers
2025-10-13 19:17 [PULL 00/12] Misc HW patches for 2025-10-13 Philippe Mathieu-Daudé
` (6 preceding siblings ...)
2025-10-13 19:18 ` [PULL 07/12] hw/s390x/sclp: Do not ignore address_space_read/write() errors Philippe Mathieu-Daudé
@ 2025-10-13 19:18 ` Philippe Mathieu-Daudé
2025-10-13 19:18 ` [PULL 09/12] hw/loongarch/boot: Remove unnecessary cast to target_ulong Philippe Mathieu-Daudé
` (3 subsequent siblings)
11 siblings, 0 replies; 13+ messages in thread
From: Philippe Mathieu-Daudé @ 2025-10-13 19:18 UTC (permalink / raw)
To: qemu-devel
From: Mohamed Mediouni <mohamed@unpredictable.fr>
Disablement by default led to:
../hw/vmapple/vmapple.c:276:39: error: use of undeclared identifier 'GTIMER_VIRT'
276 | qdev_connect_gpio_out(cpudev, GTIMER_VIRT,
| ^
../hw/vmapple/vmapple.c:479:54: error: use of undeclared identifier 'QEMU_PSCI_CONDUIT_HVC'
479 | object_property_set_int(cpu, "psci-conduit", QEMU_PSCI_CONDUIT_HVC,
| ^
../hw/vmapple/vmapple.c:556:13: error: call to undeclared function 'arm_build_mp_affinity'; ISO C99 and later do not support implicit function declarations [-Wimplicit-function-declaration]
556 | arm_build_mp_affinity(n, GICV3_TARGETLIST_BITS);
| ^
3 errors generated.
pretty quickly.
Signed-off-by: Mohamed Mediouni <mohamed@unpredictable.fr>
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
Tested-by: Philippe Mathieu-Daudé <philmd@linaro.org>
Message-ID: <20251007203153.30136-2-mohamed@unpredictable.fr>
Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org>
---
hw/vmapple/vmapple.c | 2 ++
1 file changed, 2 insertions(+)
diff --git a/hw/vmapple/vmapple.c b/hw/vmapple/vmapple.c
index 16e6110b68f..1e4365f32c9 100644
--- a/hw/vmapple/vmapple.c
+++ b/hw/vmapple/vmapple.c
@@ -51,6 +51,8 @@
#include "system/reset.h"
#include "system/runstate.h"
#include "system/system.h"
+#include "target/arm/gtimer.h"
+#include "target/arm/cpu.h"
struct VMAppleMachineState {
MachineState parent;
--
2.51.0
^ permalink raw reply related [flat|nested] 13+ messages in thread
* [PULL 09/12] hw/loongarch/boot: Remove unnecessary cast to target_ulong
2025-10-13 19:17 [PULL 00/12] Misc HW patches for 2025-10-13 Philippe Mathieu-Daudé
` (7 preceding siblings ...)
2025-10-13 19:18 ` [PULL 08/12] hw/vmapple: include missing headers Philippe Mathieu-Daudé
@ 2025-10-13 19:18 ` Philippe Mathieu-Daudé
2025-10-13 19:18 ` [PULL 10/12] hw/hppa: Convert type_init() -> DEFINE_TYPES() Philippe Mathieu-Daudé
` (2 subsequent siblings)
11 siblings, 0 replies; 13+ messages in thread
From: Philippe Mathieu-Daudé @ 2025-10-13 19:18 UTC (permalink / raw)
To: qemu-devel
Reduce initrd_size scope. It is already of signed type (ssize_t),
no need to cast to unsigned for the comparison.
Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org>
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
Message-Id: <20251009201947.34643-2-philmd@linaro.org>
---
hw/loongarch/boot.c | 7 ++++---
1 file changed, 4 insertions(+), 3 deletions(-)
diff --git a/hw/loongarch/boot.c b/hw/loongarch/boot.c
index a516415822d..3dd48cb8aab 100644
--- a/hw/loongarch/boot.c
+++ b/hw/loongarch/boot.c
@@ -306,7 +306,7 @@ static ram_addr_t alloc_initrd_memory(struct loongarch_boot_info *info,
static int64_t load_kernel_info(struct loongarch_boot_info *info)
{
uint64_t kernel_entry, kernel_low, kernel_high, initrd_offset = 0;
- ssize_t kernel_size, initrd_size;
+ ssize_t kernel_size;
kernel_size = load_elf(info->kernel_filename, NULL,
cpu_loongarch_virt_to_phys, NULL,
@@ -328,7 +328,8 @@ static int64_t load_kernel_info(struct loongarch_boot_info *info)
}
if (info->initrd_filename) {
- initrd_size = get_image_size(info->initrd_filename);
+ ssize_t initrd_size = get_image_size(info->initrd_filename);
+
if (initrd_size > 0) {
initrd_offset = ROUND_UP(kernel_high + 4 * kernel_size, 64 * KiB);
initrd_offset = alloc_initrd_memory(info, initrd_offset,
@@ -337,7 +338,7 @@ static int64_t load_kernel_info(struct loongarch_boot_info *info)
initrd_offset, initrd_size);
}
- if (initrd_size == (target_ulong)-1) {
+ if (initrd_size == -1) {
error_report("could not load initial ram disk '%s'",
info->initrd_filename);
exit(1);
--
2.51.0
^ permalink raw reply related [flat|nested] 13+ messages in thread
* [PULL 10/12] hw/hppa: Convert type_init() -> DEFINE_TYPES()
2025-10-13 19:17 [PULL 00/12] Misc HW patches for 2025-10-13 Philippe Mathieu-Daudé
` (8 preceding siblings ...)
2025-10-13 19:18 ` [PULL 09/12] hw/loongarch/boot: Remove unnecessary cast to target_ulong Philippe Mathieu-Daudé
@ 2025-10-13 19:18 ` Philippe Mathieu-Daudé
2025-10-13 19:18 ` [PULL 11/12] hw/hppa: Factor QOM HPPA_COMMON_MACHINE out Philippe Mathieu-Daudé
2025-10-13 19:18 ` [PULL 12/12] hw/hppa: Reduce variables scope in common_init() Philippe Mathieu-Daudé
11 siblings, 0 replies; 13+ messages in thread
From: Philippe Mathieu-Daudé @ 2025-10-13 19:18 UTC (permalink / raw)
To: qemu-devel
Prefer DEFINE_TYPES() macro over type_init() to register
multiple QOM types.
Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org>
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
Message-Id: <20251009143106.22724-3-philmd@linaro.org>
---
hw/hppa/machine.c | 42 ++++++++++++++++++------------------------
1 file changed, 18 insertions(+), 24 deletions(-)
diff --git a/hw/hppa/machine.c b/hw/hppa/machine.c
index dacedc5409c..2ab5fcb471a 100644
--- a/hw/hppa/machine.c
+++ b/hw/hppa/machine.c
@@ -709,16 +709,6 @@ static void HP_B160L_machine_init_class_init(ObjectClass *oc, const void *data)
nc->nmi_monitor_handler = hppa_nmi;
}
-static const TypeInfo HP_B160L_machine_init_typeinfo = {
- .name = MACHINE_TYPE_NAME("B160L"),
- .parent = TYPE_MACHINE,
- .class_init = HP_B160L_machine_init_class_init,
- .interfaces = (const InterfaceInfo[]) {
- { TYPE_NMI },
- { }
- },
-};
-
static void HP_C3700_machine_init_class_init(ObjectClass *oc, const void *data)
{
static const char * const valid_cpu_types[] = {
@@ -745,20 +735,24 @@ static void HP_C3700_machine_init_class_init(ObjectClass *oc, const void *data)
nc->nmi_monitor_handler = hppa_nmi;
}
-static const TypeInfo HP_C3700_machine_init_typeinfo = {
- .name = MACHINE_TYPE_NAME("C3700"),
- .parent = TYPE_MACHINE,
- .class_init = HP_C3700_machine_init_class_init,
- .interfaces = (const InterfaceInfo[]) {
- { TYPE_NMI },
- { }
+static const TypeInfo hppa_machine_types[] = {
+ {
+ .name = MACHINE_TYPE_NAME("B160L"),
+ .parent = TYPE_MACHINE,
+ .class_init = HP_B160L_machine_init_class_init,
+ .interfaces = (const InterfaceInfo[]) {
+ { TYPE_NMI },
+ { }
+ },
+ }, {
+ .name = MACHINE_TYPE_NAME("C3700"),
+ .parent = TYPE_MACHINE,
+ .class_init = HP_C3700_machine_init_class_init,
+ .interfaces = (const InterfaceInfo[]) {
+ { TYPE_NMI },
+ { }
+ },
},
};
-static void hppa_machine_init_register_types(void)
-{
- type_register_static(&HP_B160L_machine_init_typeinfo);
- type_register_static(&HP_C3700_machine_init_typeinfo);
-}
-
-type_init(hppa_machine_init_register_types)
+DEFINE_TYPES(hppa_machine_types)
--
2.51.0
^ permalink raw reply related [flat|nested] 13+ messages in thread
* [PULL 11/12] hw/hppa: Factor QOM HPPA_COMMON_MACHINE out
2025-10-13 19:17 [PULL 00/12] Misc HW patches for 2025-10-13 Philippe Mathieu-Daudé
` (9 preceding siblings ...)
2025-10-13 19:18 ` [PULL 10/12] hw/hppa: Convert type_init() -> DEFINE_TYPES() Philippe Mathieu-Daudé
@ 2025-10-13 19:18 ` Philippe Mathieu-Daudé
2025-10-13 19:18 ` [PULL 12/12] hw/hppa: Reduce variables scope in common_init() Philippe Mathieu-Daudé
11 siblings, 0 replies; 13+ messages in thread
From: Philippe Mathieu-Daudé @ 2025-10-13 19:18 UTC (permalink / raw)
To: qemu-devel
B160L and C3700 share a lot of common code. Factor it out
as an abstract HPPA_COMMON_MACHINE QOM parent.
Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org>
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
Message-Id: <20251009143106.22724-4-philmd@linaro.org>
---
hw/hppa/machine.c | 61 +++++++++++++++++++++++++----------------------
1 file changed, 33 insertions(+), 28 deletions(-)
diff --git a/hw/hppa/machine.c b/hw/hppa/machine.c
index 2ab5fcb471a..c8da159a114 100644
--- a/hw/hppa/machine.c
+++ b/hw/hppa/machine.c
@@ -36,6 +36,13 @@
#include "net/net.h"
#include "qemu/log.h"
+#define TYPE_HPPA_COMMON_MACHINE MACHINE_TYPE_NAME("hppa-common")
+OBJECT_DECLARE_SIMPLE_TYPE(HppaMachineState, HPPA_COMMON_MACHINE)
+
+struct HppaMachineState {
+ MachineState parent_obj;
+};
+
#define MIN_SEABIOS_HPPA_VERSION 12 /* require at least this fw version */
#define HPA_POWER_BUTTON (FIRMWARE_END - 0x10)
@@ -683,6 +690,22 @@ static void hppa_nmi(NMIState *n, int cpu_index, Error **errp)
}
}
+static void hppa_machine_common_class_init(ObjectClass *oc, const void *data)
+{
+ MachineClass *mc = MACHINE_CLASS(oc);
+ NMIClass *nc = NMI_CLASS(oc);
+
+ mc->reset = hppa_machine_reset;
+ mc->block_default_type = IF_SCSI;
+ mc->default_cpus = 1;
+ mc->max_cpus = HPPA_MAX_CPUS;
+ mc->default_boot_order = "cd";
+ mc->default_ram_id = "ram";
+ mc->default_nic = "tulip";
+
+ nc->nmi_monitor_handler = hppa_nmi;
+}
+
static void HP_B160L_machine_init_class_init(ObjectClass *oc, const void *data)
{
static const char * const valid_cpu_types[] = {
@@ -690,23 +713,13 @@ static void HP_B160L_machine_init_class_init(ObjectClass *oc, const void *data)
NULL
};
MachineClass *mc = MACHINE_CLASS(oc);
- NMIClass *nc = NMI_CLASS(oc);
mc->desc = "HP B160L workstation";
mc->default_cpu_type = TYPE_HPPA_CPU;
mc->valid_cpu_types = valid_cpu_types;
mc->init = machine_HP_B160L_init;
- mc->reset = hppa_machine_reset;
- mc->block_default_type = IF_SCSI;
- mc->max_cpus = HPPA_MAX_CPUS;
- mc->default_cpus = 1;
mc->is_default = true;
mc->default_ram_size = 512 * MiB;
- mc->default_boot_order = "cd";
- mc->default_ram_id = "ram";
- mc->default_nic = "tulip";
-
- nc->nmi_monitor_handler = hppa_nmi;
}
static void HP_C3700_machine_init_class_init(ObjectClass *oc, const void *data)
@@ -716,42 +729,34 @@ static void HP_C3700_machine_init_class_init(ObjectClass *oc, const void *data)
NULL
};
MachineClass *mc = MACHINE_CLASS(oc);
- NMIClass *nc = NMI_CLASS(oc);
mc->desc = "HP C3700 workstation";
mc->default_cpu_type = TYPE_HPPA64_CPU;
mc->valid_cpu_types = valid_cpu_types;
mc->init = machine_HP_C3700_init;
- mc->reset = hppa_machine_reset;
- mc->block_default_type = IF_SCSI;
mc->max_cpus = HPPA_MAX_CPUS;
- mc->default_cpus = 1;
- mc->is_default = false;
mc->default_ram_size = 1024 * MiB;
- mc->default_boot_order = "cd";
- mc->default_ram_id = "ram";
- mc->default_nic = "tulip";
-
- nc->nmi_monitor_handler = hppa_nmi;
}
static const TypeInfo hppa_machine_types[] = {
{
- .name = MACHINE_TYPE_NAME("B160L"),
- .parent = TYPE_MACHINE,
- .class_init = HP_B160L_machine_init_class_init,
+ .name = TYPE_HPPA_COMMON_MACHINE,
+ .parent = TYPE_MACHINE,
+ .instance_size = sizeof(HppaMachineState),
+ .class_init = hppa_machine_common_class_init,
+ .abstract = true,
.interfaces = (const InterfaceInfo[]) {
{ TYPE_NMI },
{ }
},
+ }, {
+ .name = MACHINE_TYPE_NAME("B160L"),
+ .parent = TYPE_HPPA_COMMON_MACHINE,
+ .class_init = HP_B160L_machine_init_class_init,
}, {
.name = MACHINE_TYPE_NAME("C3700"),
- .parent = TYPE_MACHINE,
+ .parent = TYPE_HPPA_COMMON_MACHINE,
.class_init = HP_C3700_machine_init_class_init,
- .interfaces = (const InterfaceInfo[]) {
- { TYPE_NMI },
- { }
- },
},
};
--
2.51.0
^ permalink raw reply related [flat|nested] 13+ messages in thread
* [PULL 12/12] hw/hppa: Reduce variables scope in common_init()
2025-10-13 19:17 [PULL 00/12] Misc HW patches for 2025-10-13 Philippe Mathieu-Daudé
` (10 preceding siblings ...)
2025-10-13 19:18 ` [PULL 11/12] hw/hppa: Factor QOM HPPA_COMMON_MACHINE out Philippe Mathieu-Daudé
@ 2025-10-13 19:18 ` Philippe Mathieu-Daudé
11 siblings, 0 replies; 13+ messages in thread
From: Philippe Mathieu-Daudé @ 2025-10-13 19:18 UTC (permalink / raw)
To: qemu-devel
Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org>
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
Message-Id: <20251010061836.45739-4-philmd@linaro.org>
---
hw/hppa/machine.c | 15 +++++++++------
1 file changed, 9 insertions(+), 6 deletions(-)
diff --git a/hw/hppa/machine.c b/hw/hppa/machine.c
index c8da159a114..cddca69b938 100644
--- a/hw/hppa/machine.c
+++ b/hw/hppa/machine.c
@@ -352,16 +352,11 @@ static void machine_HP_common_init_tail(MachineState *machine, PCIBus *pci_bus,
TranslateFn *translate)
{
const char *kernel_filename = machine->kernel_filename;
- const char *kernel_cmdline = machine->kernel_cmdline;
- const char *initrd_filename = machine->initrd_filename;
- const char *firmware = machine->firmware;
MachineClass *mc = MACHINE_GET_CLASS(machine);
DeviceState *dev;
PCIDevice *pci_dev;
- char *firmware_filename;
- uint64_t firmware_low, firmware_high;
long size;
- uint64_t kernel_entry = 0, kernel_low, kernel_high;
+ uint64_t kernel_entry = 0;
MemoryRegion *addr_space = get_system_memory();
MemoryRegion *rom_region;
SysBusDevice *s;
@@ -431,6 +426,10 @@ static void machine_HP_common_init_tail(MachineState *machine, PCIBus *pci_bus,
firmware on 64-bit machines by default if not specified
on command line. */
if (!qtest_enabled()) {
+ const char *firmware = machine->firmware;
+ uint64_t firmware_low, firmware_high;
+ char *firmware_filename;
+
if (!firmware) {
firmware = lasi_dev ? "hppa-firmware.img" : "hppa-firmware64.img";
}
@@ -467,6 +466,10 @@ static void machine_HP_common_init_tail(MachineState *machine, PCIBus *pci_bus,
/* Load kernel */
if (kernel_filename) {
+ const char *kernel_cmdline = machine->kernel_cmdline;
+ const char *initrd_filename = machine->initrd_filename;
+ uint64_t kernel_low, kernel_high;
+
size = load_elf(kernel_filename, NULL, linux_kernel_virt_to_phys,
NULL, &kernel_entry, &kernel_low, &kernel_high, NULL,
ELFDATA2MSB, EM_PARISC, 0, 0);
--
2.51.0
^ permalink raw reply related [flat|nested] 13+ messages in thread
end of thread, other threads:[~2025-10-13 19:19 UTC | newest]
Thread overview: 13+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-10-13 19:17 [PULL 00/12] Misc HW patches for 2025-10-13 Philippe Mathieu-Daudé
2025-10-13 19:17 ` [PULL 01/12] hw/display/xenfb: Replace unreachable code by g_assert_not_reached() Philippe Mathieu-Daudé
2025-10-13 19:17 ` [PULL 02/12] hw/ppc: Do not open-code cpu_resume() in spin_kick() Philippe Mathieu-Daudé
2025-10-13 19:17 ` [PULL 03/12] hw/xtensa/xtfpga: Have xtfpga_init() only initialize MMU Philippe Mathieu-Daudé
2025-10-13 19:17 ` [PULL 04/12] hw/sparc/leon3: Remove unnecessary CPU() QOM cast Philippe Mathieu-Daudé
2025-10-13 19:18 ` [PULL 05/12] hw/net/can/xlnx-versal-canfd: remove unused include directives Philippe Mathieu-Daudé
2025-10-13 19:18 ` [PULL 06/12] hw/arm/aspeed: Don't set 'auto_create_sdcard' Philippe Mathieu-Daudé
2025-10-13 19:18 ` [PULL 07/12] hw/s390x/sclp: Do not ignore address_space_read/write() errors Philippe Mathieu-Daudé
2025-10-13 19:18 ` [PULL 08/12] hw/vmapple: include missing headers Philippe Mathieu-Daudé
2025-10-13 19:18 ` [PULL 09/12] hw/loongarch/boot: Remove unnecessary cast to target_ulong Philippe Mathieu-Daudé
2025-10-13 19:18 ` [PULL 10/12] hw/hppa: Convert type_init() -> DEFINE_TYPES() Philippe Mathieu-Daudé
2025-10-13 19:18 ` [PULL 11/12] hw/hppa: Factor QOM HPPA_COMMON_MACHINE out Philippe Mathieu-Daudé
2025-10-13 19:18 ` [PULL 12/12] hw/hppa: Reduce variables scope in common_init() Philippe Mathieu-Daudé
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).