From nobody Fri May 3 10:56:44 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of _spf.google.com designates 209.85.221.47 as permitted sender) client-ip=209.85.221.47; envelope-from=philippe.mathieu.daude@gmail.com; helo=mail-wr1-f47.google.com; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of _spf.google.com designates 209.85.221.47 as permitted sender) smtp.mailfrom=philippe.mathieu.daude@gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1604347996; cv=none; d=zohomail.com; s=zohoarc; b=jlrCIb0NHCwMJhScG89+jW1OkYRrq4xcRdoEaxFFiI6cD5RX5Hwss/U92lsNmBkXoG5aTnYDf0H07S4bqqAqXMKNPmQU1b06/oXFit4a/tmzBRSFG55ppvstCKGQvOgLcLPPg8ZGugA/nj4W5Efa7Pj+V2EbLwLkhjnrCD8yCGw= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1604347996; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:MIME-Version:Message-ID:Sender:Subject:To; bh=zJvN3LgH+5e54B3iKgw/oQMGpwPMQdEXv28RMQDjV8E=; b=buvMW+eqpH/tk/up+gFEiDl8468JwKP2pDtRcb0XxV3qSqK82DvvO73w22v9gCj3XXSydt4bPwtuImuyJHBPaCpBVzUKnshmE9ZfQgFviIkNrfr6/ZGlf7kkwjBNBR5fbUCHDSL2SgpaVZwVtnV/PCI0UtqNkn5OLGUJ22rnSTo= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of _spf.google.com designates 209.85.221.47 as permitted sender) smtp.mailfrom=philippe.mathieu.daude@gmail.com Received: from mail-wr1-f47.google.com (mail-wr1-f47.google.com [209.85.221.47]) by mx.zohomail.com with SMTPS id 1604347996026703.8977324095154; Mon, 2 Nov 2020 12:13:16 -0800 (PST) Received: by mail-wr1-f47.google.com with SMTP id x7so16088121wrl.3 for ; Mon, 02 Nov 2020 12:13:15 -0800 (PST) Return-Path: Return-Path: Received: from x1w.redhat.com (234.red-83-42-66.dynamicip.rima-tde.net. [83.42.66.234]) by smtp.gmail.com with ESMTPSA id 30sm23372680wrs.84.2020.11.02.12.13.12 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 02 Nov 2020 12:13:13 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=sender:from:to:cc:subject:date:message-id:mime-version :content-transfer-encoding; bh=zJvN3LgH+5e54B3iKgw/oQMGpwPMQdEXv28RMQDjV8E=; b=hSuRzfGYfjYvvLUCh0B0BFkF7OsnQ50w7NrQj7PfF1+ubryOFlIRNJnZVWO2xGDewg 3ko6jUvqHoVLJrYUs68MBSyoSVPmlQIxK8/hCdgMhbuNB+iPG7B7GdeuIIjh33oVBTTF QpqsewnFY3XhIdng05TA/Brj3LL8FNP7vhcJ0noqyCJ+vOZno5nKaSXtI7A+N8sLCXdR qAwrkjT4hbqANZaZT1YO/AZ4Scxt9qtR6ZQubADSirL4S7NpCBwEeeL78ZdH7l6r0zw2 k9KbGwHgotjZ9YJRHpgUhV/H/AOvzRAH001qAega91shS/wS5SXUXLGLXlwGyAV7/pbp oepA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:sender:from:to:cc:subject:date:message-id :mime-version:content-transfer-encoding; bh=zJvN3LgH+5e54B3iKgw/oQMGpwPMQdEXv28RMQDjV8E=; b=BLeXsQPdMyVsWnY3MO+bWvLxsv1tr50Uv2+LBZALnchXTQmoMmJ7mf2LyoidTTOPrl Cj1qhER16rxEFA12HG9QQSCK/bWvjhpFh9801sKAamDKAocQ5bT+RmVxqChFIwSrR7LH N/fmKHY4V2udNT7vYuPcpapGrCgiF4Ggy9JIPC3zh5TP4RJEO+0m7ptwCLKFWYSHwgRb vNEKQMo6dTa1OFGIxgzi55Iv+BhTLQYpVz3E9WFgm8hoCJZjVM6qku2EpSsbFFacqtpD K0kxxKQ64nlSco9eKroKTdgStft/Se0dFK9g6HX3TnLVbHm7o+m6sfq4uv/k13yvmf+R COJA== X-Gm-Message-State: AOAM533EcqSTA6FFuNJTLYsR/q5w4+ZO6ahzYDKhswj5eEojlRjDnAd1 jdegmS0MeXsL9ot6CLGYjDU= X-Google-Smtp-Source: ABdhPJwjvPId/u3QSNvVoj/ZU1oBW6fGAAt/TJrgRnLlrOdWCV21wDbO52fJSOIX8i5W000MXOvyGQ== X-Received: by 2002:adf:fec8:: with SMTP id q8mr23087464wrs.64.1604347993867; Mon, 02 Nov 2020 12:13:13 -0800 (PST) Sender: =?UTF-8?Q?Philippe_Mathieu=2DDaud=C3=A9?= From: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= To: qemu-devel@nongnu.org Cc: Jiaxun Yang , Aurelien Jarno , libvir-list@redhat.com, Aleksandar Rikalo , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Thomas Huth , Richard Henderson Subject: [PATCH-for-5.2 v3] hw/mips: Remove the 'r4k' machine Date: Mon, 2 Nov 2020 21:13:11 +0100 Message-Id: <20201102201311.2220005-1-f4bug@amsat.org> X-Mailer: git-send-email 2.26.2 MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-ZohoMail-DKIM: pass (identity @gmail.com) We deprecated the support for the 'r4k' machine for the 5.0 release (commit d32dc61421), which means that our deprecation policy allows us to drop it in release 5.2. Remove the code. To repeat the rationale from the deprecation note: - this virtual machine has no specification - the Linux kernel dropped support for it 10 years ago Users are recommended to use the Malta board instead. Acked-by: Richard Henderson Signed-off-by: Philippe Mathieu-Daud=C3=A9 ACKed-by: Peter Krempa Reviewed-by: Thomas Huth --- v3: Move to "Recently removed features" section --- docs/system/deprecated.rst | 12 +- .../devices/mips-softmmu-common.mak | 1 - hw/mips/r4k.c | 318 ------------------ MAINTAINERS | 6 - hw/mips/Kconfig | 13 - hw/mips/meson.build | 1 - 6 files changed, 6 insertions(+), 345 deletions(-) delete mode 100644 hw/mips/r4k.c diff --git a/docs/system/deprecated.rst b/docs/system/deprecated.rst index 0ebce37a191..e5b7cf274d3 100644 --- a/docs/system/deprecated.rst +++ b/docs/system/deprecated.rst @@ -327,12 +327,6 @@ The 'scsi-disk' device is deprecated. Users should use= 'scsi-hd' or System emulator machines ------------------------ =20 -mips ``r4k`` platform (since 5.0) -''''''''''''''''''''''''''''''''' - -This machine type is very old and unmaintained. Users should use the ``mal= ta`` -machine type instead. - mips ``fulong2e`` machine (since 5.1) ''''''''''''''''''''''''''''''''''''' =20 @@ -575,6 +569,12 @@ The version specific Spike machines have been removed = in favour of the generic ``spike`` machine. If you need to specify an older version of the = RISC-V spec you can use the ``-cpu rv64gcsu,priv_spec=3Dv1.10.0`` command line ar= gument. =20 +mips ``r4k`` platform (removed in 5.2) +'''''''''''''''''''''''''''''''''''''' + +This machine type is very old and unmaintained. Users should use the ``mal= ta`` +machine type instead. + Related binaries ---------------- =20 diff --git a/default-configs/devices/mips-softmmu-common.mak b/default-conf= igs/devices/mips-softmmu-common.mak index da29c6c0b24..ea78fe72759 100644 --- a/default-configs/devices/mips-softmmu-common.mak +++ b/default-configs/devices/mips-softmmu-common.mak @@ -33,7 +33,6 @@ CONFIG_MC146818RTC=3Dy CONFIG_EMPTY_SLOT=3Dy CONFIG_MIPS_CPS=3Dy CONFIG_MIPS_ITU=3Dy -CONFIG_R4K=3Dy CONFIG_MALTA=3Dy CONFIG_PCNET_PCI=3Dy CONFIG_MIPSSIM=3Dy diff --git a/hw/mips/r4k.c b/hw/mips/r4k.c deleted file mode 100644 index 38308543421..00000000000 --- a/hw/mips/r4k.c +++ /dev/null @@ -1,318 +0,0 @@ -/* - * QEMU/MIPS pseudo-board - * - * emulates a simple machine with ISA-like bus. - * ISA IO space mapped to the 0x14000000 (PHYS) and - * ISA memory at the 0x10000000 (PHYS, 16Mb in size). - * All peripherial devices are attached to this "bus" with - * the standard PC ISA addresses. - */ - -#include "qemu/osdep.h" -#include "qemu/units.h" -#include "qapi/error.h" -#include "qemu-common.h" -#include "cpu.h" -#include "hw/clock.h" -#include "hw/mips/mips.h" -#include "hw/mips/cpudevs.h" -#include "hw/intc/i8259.h" -#include "hw/char/serial.h" -#include "hw/isa/isa.h" -#include "net/net.h" -#include "hw/net/ne2000-isa.h" -#include "sysemu/sysemu.h" -#include "hw/boards.h" -#include "hw/block/flash.h" -#include "qemu/log.h" -#include "hw/mips/bios.h" -#include "hw/ide.h" -#include "hw/ide/internal.h" -#include "hw/loader.h" -#include "elf.h" -#include "hw/rtc/mc146818rtc.h" -#include "hw/input/i8042.h" -#include "hw/timer/i8254.h" -#include "exec/address-spaces.h" -#include "sysemu/qtest.h" -#include "sysemu/reset.h" -#include "sysemu/runstate.h" -#include "qemu/error-report.h" - -#define MAX_IDE_BUS 2 - -static const int ide_iobase[2] =3D { 0x1f0, 0x170 }; -static const int ide_iobase2[2] =3D { 0x3f6, 0x376 }; -static const int ide_irq[2] =3D { 14, 15 }; - -static ISADevice *pit; /* PIT i8254 */ - -/* i8254 PIT is attached to the IRQ0 at PIC i8259 */ - -static struct _loaderparams { - int ram_size; - const char *kernel_filename; - const char *kernel_cmdline; - const char *initrd_filename; -} loaderparams; - -static void mips_qemu_write(void *opaque, hwaddr addr, - uint64_t val, unsigned size) -{ - if ((addr & 0xffff) =3D=3D 0 && val =3D=3D 42) { - qemu_system_reset_request(SHUTDOWN_CAUSE_GUEST_RESET); - } else if ((addr & 0xffff) =3D=3D 4 && val =3D=3D 42) { - qemu_system_shutdown_request(SHUTDOWN_CAUSE_GUEST_SHUTDOWN); - } -} - -static uint64_t mips_qemu_read(void *opaque, hwaddr addr, - unsigned size) -{ - return 0; -} - -static const MemoryRegionOps mips_qemu_ops =3D { - .read =3D mips_qemu_read, - .write =3D mips_qemu_write, - .endianness =3D DEVICE_NATIVE_ENDIAN, -}; - -typedef struct ResetData { - MIPSCPU *cpu; - uint64_t vector; -} ResetData; - -static int64_t load_kernel(void) -{ - const size_t params_size =3D 264; - int64_t entry, kernel_high, initrd_size; - long kernel_size; - ram_addr_t initrd_offset; - uint32_t *params_buf; - int big_endian; - -#ifdef TARGET_WORDS_BIGENDIAN - big_endian =3D 1; -#else - big_endian =3D 0; -#endif - kernel_size =3D load_elf(loaderparams.kernel_filename, NULL, - cpu_mips_kseg0_to_phys, NULL, - (uint64_t *)&entry, NULL, - (uint64_t *)&kernel_high, NULL, big_endian, - EM_MIPS, 1, 0); - if (kernel_size < 0) { - error_report("could not load kernel '%s': %s", - loaderparams.kernel_filename, - load_elf_strerror(kernel_size)); - exit(1); - } - - /* load initrd */ - initrd_size =3D 0; - initrd_offset =3D 0; - if (loaderparams.initrd_filename) { - initrd_size =3D get_image_size(loaderparams.initrd_filename); - if (initrd_size > 0) { - initrd_offset =3D ROUND_UP(kernel_high, INITRD_PAGE_SIZE); - if (initrd_offset + initrd_size > ram_size) { - error_report("memory too small for initial ram disk '%s'", - loaderparams.initrd_filename); - exit(1); - } - initrd_size =3D load_image_targphys(loaderparams.initrd_filena= me, - initrd_offset, - ram_size - initrd_offset); - } - if (initrd_size =3D=3D (target_ulong) -1) { - error_report("could not load initial ram disk '%s'", - loaderparams.initrd_filename); - exit(1); - } - } - - /* Store command line. */ - params_buf =3D g_malloc(params_size); - - params_buf[0] =3D tswap32(ram_size); - params_buf[1] =3D tswap32(0x12345678); - - if (initrd_size > 0) { - snprintf((char *)params_buf + 8, 256, - "rd_start=3D0x%" PRIx64 " rd_size=3D%" PRId64 " %s", - cpu_mips_phys_to_kseg0(NULL, initrd_offset), - initrd_size, loaderparams.kernel_cmdline); - } else { - snprintf((char *)params_buf + 8, 256, - "%s", loaderparams.kernel_cmdline); - } - - rom_add_blob_fixed("params", params_buf, params_size, - 16 * MiB - params_size); - - g_free(params_buf); - return entry; -} - -static void main_cpu_reset(void *opaque) -{ - ResetData *s =3D (ResetData *)opaque; - CPUMIPSState *env =3D &s->cpu->env; - - cpu_reset(CPU(s->cpu)); - env->active_tc.PC =3D s->vector; -} - -static const int sector_len =3D 32 * KiB; -static -void mips_r4k_init(MachineState *machine) -{ - const char *kernel_filename =3D machine->kernel_filename; - const char *kernel_cmdline =3D machine->kernel_cmdline; - const char *initrd_filename =3D machine->initrd_filename; - char *filename; - MemoryRegion *address_space_mem =3D get_system_memory(); - MemoryRegion *bios; - MemoryRegion *iomem =3D g_new(MemoryRegion, 1); - MemoryRegion *isa_io =3D g_new(MemoryRegion, 1); - MemoryRegion *isa_mem =3D g_new(MemoryRegion, 1); - int bios_size; - Clock *cpuclk; - MIPSCPU *cpu; - CPUMIPSState *env; - ResetData *reset_info; - int i; - qemu_irq *i8259; - ISABus *isa_bus; - DriveInfo *hd[MAX_IDE_BUS * MAX_IDE_DEVS]; - DriveInfo *dinfo; - int be; - - cpuclk =3D clock_new(OBJECT(machine), "cpu-refclk"); - clock_set_hz(cpuclk, 200000000); /* 200 MHz */ - - /* init CPUs */ - cpu =3D mips_cpu_create_with_clock(machine->cpu_type, cpuclk); - env =3D &cpu->env; - - reset_info =3D g_malloc0(sizeof(ResetData)); - reset_info->cpu =3D cpu; - reset_info->vector =3D env->active_tc.PC; - qemu_register_reset(main_cpu_reset, reset_info); - - /* allocate RAM */ - if (machine->ram_size > 256 * MiB) { - error_report("Too much memory for this machine: %" PRId64 "MB," - " maximum 256MB", ram_size / MiB); - exit(1); - } - memory_region_add_subregion(address_space_mem, 0, machine->ram); - - memory_region_init_io(iomem, NULL, &mips_qemu_ops, - NULL, "mips-qemu", 0x10000); - - memory_region_add_subregion(address_space_mem, 0x1fbf0000, iomem); - - /* - * Try to load a BIOS image. If this fails, we continue regardless, - * but initialize the hardware ourselves. When a kernel gets - * preloaded we also initialize the hardware, since the BIOS wasn't - * run. - */ - - if (bios_name =3D=3D NULL) { - bios_name =3D BIOS_FILENAME; - } - filename =3D qemu_find_file(QEMU_FILE_TYPE_BIOS, bios_name); - if (filename) { - bios_size =3D get_image_size(filename); - } else { - bios_size =3D -1; - } -#ifdef TARGET_WORDS_BIGENDIAN - be =3D 1; -#else - be =3D 0; -#endif - dinfo =3D drive_get(IF_PFLASH, 0, 0); - if ((bios_size > 0) && (bios_size <=3D BIOS_SIZE)) { - bios =3D g_new(MemoryRegion, 1); - memory_region_init_rom(bios, NULL, "mips_r4k.bios", BIOS_SIZE, - &error_fatal); - memory_region_add_subregion(get_system_memory(), 0x1fc00000, bios); - - load_image_targphys(filename, 0x1fc00000, BIOS_SIZE); - } else if (dinfo !=3D NULL) { - uint32_t mips_rom =3D 0x00400000; - if (!pflash_cfi01_register(0x1fc00000, "mips_r4k.bios", mips_rom, - blk_by_legacy_dinfo(dinfo), - sector_len, 4, 0, 0, 0, 0, be)) { - fprintf(stderr, "qemu: Error registering flash memory.\n"); - } - } else if (!qtest_enabled()) { - /* not fatal */ - warn_report("could not load MIPS bios '%s'", bios_name); - } - g_free(filename); - - if (kernel_filename) { - loaderparams.ram_size =3D machine->ram_size; - loaderparams.kernel_filename =3D kernel_filename; - loaderparams.kernel_cmdline =3D kernel_cmdline; - loaderparams.initrd_filename =3D initrd_filename; - reset_info->vector =3D load_kernel(); - } - - /* Init CPU internal devices */ - cpu_mips_irq_init_cpu(cpu); - cpu_mips_clock_init(cpu); - - /* ISA bus: IO space at 0x14000000, mem space at 0x10000000 */ - memory_region_init_alias(isa_io, NULL, "isa-io", - get_system_io(), 0, 0x00010000); - memory_region_init(isa_mem, NULL, "isa-mem", 0x01000000); - memory_region_add_subregion(get_system_memory(), 0x14000000, isa_io); - memory_region_add_subregion(get_system_memory(), 0x10000000, isa_mem); - isa_bus =3D isa_bus_new(NULL, isa_mem, get_system_io(), &error_abort); - - /* The PIC is attached to the MIPS CPU INT0 pin */ - i8259 =3D i8259_init(isa_bus, env->irq[2]); - isa_bus_irqs(isa_bus, i8259); - - mc146818_rtc_init(isa_bus, 2000, NULL); - - pit =3D i8254_pit_init(isa_bus, 0x40, 0, NULL); - - serial_hds_isa_init(isa_bus, 0, MAX_ISA_SERIAL_PORTS); - - isa_vga_init(isa_bus); - - if (nd_table[0].used) { - isa_ne2000_init(isa_bus, 0x300, 9, &nd_table[0]); - } - - ide_drive_get(hd, ARRAY_SIZE(hd)); - for (i =3D 0; i < MAX_IDE_BUS; i++) - isa_ide_init(isa_bus, ide_iobase[i], ide_iobase2[i], ide_irq[i], - hd[MAX_IDE_DEVS * i], - hd[MAX_IDE_DEVS * i + 1]); - - isa_create_simple(isa_bus, TYPE_I8042); -} - -static void mips_machine_init(MachineClass *mc) -{ - mc->deprecation_reason =3D "use malta machine type instead"; - mc->desc =3D "mips r4k platform"; - mc->init =3D mips_r4k_init; - mc->block_default_type =3D IF_IDE; -#ifdef TARGET_MIPS64 - mc->default_cpu_type =3D MIPS_CPU_TYPE_NAME("R4000"); -#else - mc->default_cpu_type =3D MIPS_CPU_TYPE_NAME("24Kf"); -#endif - mc->default_ram_id =3D "mips_r4k.ram"; -} - -DEFINE_MACHINE("mips", mips_machine_init) diff --git a/MAINTAINERS b/MAINTAINERS index 8c744a9bdf4..77a67becc1f 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -1138,12 +1138,6 @@ S: Orphaned F: hw/mips/mipssim.c F: hw/net/mipsnet.c =20 -R4000 -R: Aurelien Jarno -R: Aleksandar Rikalo -S: Obsolete -F: hw/mips/r4k.c - Fuloong 2E M: Huacai Chen M: Philippe Mathieu-Daud=C3=A9 diff --git a/hw/mips/Kconfig b/hw/mips/Kconfig index 67d39c56a4e..8be70122f4c 100644 --- a/hw/mips/Kconfig +++ b/hw/mips/Kconfig @@ -1,16 +1,3 @@ -config R4K - bool - select ISA_BUS - select SERIAL_ISA - select I8259 - select I8254 - select MC146818RTC - imply VGA_ISA - imply NE2000_ISA - select IDE_ISA - select PCKBD - select PFLASH_CFI01 - config MALTA bool select ISA_SUPERIO diff --git a/hw/mips/meson.build b/hw/mips/meson.build index 46294b7382f..bcdf96be69f 100644 --- a/hw/mips/meson.build +++ b/hw/mips/meson.build @@ -6,6 +6,5 @@ mips_ss.add(when: 'CONFIG_MIPSSIM', if_true: files('mipssim.c')) mips_ss.add(when: 'CONFIG_MIPS_BOSTON', if_true: [files('boston.c'), fdt]) mips_ss.add(when: 'CONFIG_MIPS_CPS', if_true: files('cps.c')) -mips_ss.add(when: 'CONFIG_R4K', if_true: files('r4k.c')) =20 hw_arch +=3D {'mips': mips_ss} --=20 2.26.2