Misc HW patches
-----BEGIN PGP SIGNATURE----- iQIzBAABCAAdFiEE+qvnXhKRciHc/Wuy4+MsLN6twN4FAmjtUDsACgkQ4+MsLN6t wN79jg/+IUcN3tRk39XeLMyJvTBbv1Q/25llZPuCwkPz1kkS9QEtgck0ZluWxiqG Uql2mb3mnxR3pQaQ38gim058XfTFnc1W76/cprYq/0HeZuk8XlVVgnU+wjEYFYvD nGfdXJdCytGnDjcr4OQGKjsIo20b++QNtB/Jgy+gQNcFc/dg0BHG8sJoeIL/0IRz qpJZ3ACcmurlMdfYm3o0U9tRn7I9fmOOZbM5INnA9OBuhrSc95ObXiOKbUd9QTaX Fzminv85ZULIx5sX515l6vbiMRaAy/toj40OyWrG6qV6zMv/T8Snpad53NyOEalc QHEmx2t7ae0g0o8NB4EEA8JOy/RT9l2nu8xiPeDCcmI6/E4M6mQDovEgMsbhKiYd /YbAPifdLyNy4p2D9S0xjXsihNRNshvH0ce7x5sDxRMITrvHWrPQ3WzSxw8oeaVd aczm4plm777GSzioIP4zz0hVy48vc9c0Bzsw6CwTJjFI2f8ThuKtDRc/FWabr/cp OCA2pBWYSoKCEm8WE+RTpCVu87oPQ/HNj8ekDszFStnPkz62B4Xq8EGriSMM56xX R9wn6IRepQ6gc0ObWl8ofgdvuXh+F1wFC2EvhQ6n93Bq1YXKFSccNf9tX84zEMdn Dpx6SrKeYA53Qm0fHoOWQeCw2rjwK6hR9Pd5dZB9cK+2XGbfPtQ= =nIym -----END PGP SIGNATURE----- Merge tag 'hw-misc-20251013' of https://github.com/philmd/qemu into staging Misc HW patches # -----BEGIN PGP SIGNATURE----- # # iQIzBAABCAAdFiEE+qvnXhKRciHc/Wuy4+MsLN6twN4FAmjtUDsACgkQ4+MsLN6t # wN79jg/+IUcN3tRk39XeLMyJvTBbv1Q/25llZPuCwkPz1kkS9QEtgck0ZluWxiqG # Uql2mb3mnxR3pQaQ38gim058XfTFnc1W76/cprYq/0HeZuk8XlVVgnU+wjEYFYvD # nGfdXJdCytGnDjcr4OQGKjsIo20b++QNtB/Jgy+gQNcFc/dg0BHG8sJoeIL/0IRz # qpJZ3ACcmurlMdfYm3o0U9tRn7I9fmOOZbM5INnA9OBuhrSc95ObXiOKbUd9QTaX # Fzminv85ZULIx5sX515l6vbiMRaAy/toj40OyWrG6qV6zMv/T8Snpad53NyOEalc # QHEmx2t7ae0g0o8NB4EEA8JOy/RT9l2nu8xiPeDCcmI6/E4M6mQDovEgMsbhKiYd # /YbAPifdLyNy4p2D9S0xjXsihNRNshvH0ce7x5sDxRMITrvHWrPQ3WzSxw8oeaVd # aczm4plm777GSzioIP4zz0hVy48vc9c0Bzsw6CwTJjFI2f8ThuKtDRc/FWabr/cp # OCA2pBWYSoKCEm8WE+RTpCVu87oPQ/HNj8ekDszFStnPkz62B4Xq8EGriSMM56xX # R9wn6IRepQ6gc0ObWl8ofgdvuXh+F1wFC2EvhQ6n93Bq1YXKFSccNf9tX84zEMdn # Dpx6SrKeYA53Qm0fHoOWQeCw2rjwK6hR9Pd5dZB9cK+2XGbfPtQ= # =nIym # -----END PGP SIGNATURE----- # gpg: Signature made Mon 13 Oct 2025 12:17:15 PM PDT # gpg: using RSA key FAABE75E12917221DCFD6BB2E3E32C2CDEADC0DE # gpg: Good signature from "Philippe Mathieu-Daudé (F4BUG) <f4bug@amsat.org>" [unknown] # gpg: WARNING: This key is not certified with a trusted signature! # gpg: There is no indication that the signature belongs to the owner. # Primary key fingerprint: FAAB E75E 1291 7221 DCFD 6BB2 E3E3 2C2C DEAD C0DE * tag 'hw-misc-20251013' of https://github.com/philmd/qemu: hw/hppa: Reduce variables scope in common_init() hw/hppa: Factor QOM HPPA_COMMON_MACHINE out hw/hppa: Convert type_init() -> DEFINE_TYPES() hw/loongarch/boot: Remove unnecessary cast to target_ulong hw/vmapple: include missing headers hw/s390x/sclp: Do not ignore address_space_read/write() errors hw/arm/aspeed: Don't set 'auto_create_sdcard' hw/net/can/xlnx-versal-canfd: remove unused include directives hw/sparc/leon3: Remove unnecessary CPU() QOM cast hw/xtensa/xtfpga: Have xtfpga_init() only initialize MMU hw/ppc: Do not open-code cpu_resume() in spin_kick() hw/display/xenfb: Replace unreachable code by g_assert_not_reached() Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
This commit is contained in:
commit
2953fba3ba
9 changed files with 78 additions and 67 deletions
|
|
@ -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;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
|
|
@ -345,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;
|
||||
|
|
@ -424,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";
|
||||
}
|
||||
|
|
@ -460,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);
|
||||
|
|
@ -683,25 +693,15 @@ static void hppa_nmi(NMIState *n, int cpu_index, Error **errp)
|
|||
}
|
||||
}
|
||||
|
||||
static void HP_B160L_machine_init_class_init(ObjectClass *oc, const void *data)
|
||||
static void hppa_machine_common_class_init(ObjectClass *oc, const void *data)
|
||||
{
|
||||
static const char * const valid_cpu_types[] = {
|
||||
TYPE_HPPA_CPU,
|
||||
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->max_cpus = HPPA_MAX_CPUS;
|
||||
mc->default_boot_order = "cd";
|
||||
mc->default_ram_id = "ram";
|
||||
mc->default_nic = "tulip";
|
||||
|
|
@ -709,15 +709,21 @@ 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_B160L_machine_init_class_init(ObjectClass *oc, const void *data)
|
||||
{
|
||||
static const char * const valid_cpu_types[] = {
|
||||
TYPE_HPPA_CPU,
|
||||
NULL
|
||||
};
|
||||
MachineClass *mc = MACHINE_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->is_default = true;
|
||||
mc->default_ram_size = 512 * MiB;
|
||||
}
|
||||
|
||||
static void HP_C3700_machine_init_class_init(ObjectClass *oc, const void *data)
|
||||
{
|
||||
|
|
@ -726,39 +732,35 @@ 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 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 = 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_HPPA_COMMON_MACHINE,
|
||||
.class_init = HP_C3700_machine_init_class_init,
|
||||
},
|
||||
};
|
||||
|
||||
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)
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
|
|
|
|||
|
|
@ -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"
|
||||
|
|
|
|||
|
|
@ -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,
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue