From: Greg Kurz <groug@kaod.org>
To: David Gibson <david@gibson.dropbear.id.au>
Cc: benh@kernel.crashing.org, qemu-ppc@nongnu.org, qemu-devel@nongnu.org
Subject: Re: [Qemu-devel] [PATCH for-2.13 02/10] spapr: Remove support for PowerPC 970 with pseries machine type
Date: Fri, 20 Apr 2018 14:25:23 +0200 [thread overview]
Message-ID: <20180420142523.515f0058@bahia.lan> (raw)
In-Reply-To: <20180417071722.9399-3-david@gibson.dropbear.id.au>
On Tue, 17 Apr 2018 17:17:14 +1000
David Gibson <david@gibson.dropbear.id.au> wrote:
> Current POWER cpus allow for a VRMA, a special mapping which describes a
> guest's view of memory when in real mode (MMU off, from the guest's point
> of view). Older cpus didn't have that which meant that to support a guest
> a special host-contiguous region of memory was needed to give the guest its
> Real Mode Area (RMA).
>
> This was useful in the early days of KVM on Power to allow it to be tested
> on PowerPC 970 chips as used in Macintosh G5 machines. Now, however, those
> machines are so old as to be irrelevant, and the host kernel has long since
> dropped support for this mode. It hasn't been tested in ages either.
>
> So, to simplify the code, drop the support from qemu as well.
>
> As well as the code for handling contiguous RMAs, we can remove some
> code to set the HIOR register, which existed on 970 but not on the
> current and supported CPUs.
>
> Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
> ---
Regardless of the discussion on the deprecation process, just
a cosmetic remark...
> hw/ppc/spapr.c | 61 +++++++++++++++----------------------------------
> hw/ppc/spapr_cpu_core.c | 2 --
> target/ppc/kvm.c | 36 -----------------------------
> target/ppc/kvm_ppc.h | 6 -----
> 4 files changed, 19 insertions(+), 86 deletions(-)
>
> diff --git a/hw/ppc/spapr.c b/hw/ppc/spapr.c
> index 81b50af3b5..fbb2c6752c 100644
> --- a/hw/ppc/spapr.c
> +++ b/hw/ppc/spapr.c
> @@ -2376,9 +2376,6 @@ static void spapr_machine_init(MachineState *machine)
> int i;
> MemoryRegion *sysmem = get_system_memory();
> MemoryRegion *ram = g_new(MemoryRegion, 1);
> - MemoryRegion *rma_region;
> - void *rma = NULL;
> - hwaddr rma_alloc_size;
> hwaddr node0_size = spapr_node0_size(machine);
> long load_limit, fw_size;
> char *filename;
> @@ -2417,40 +2414,28 @@ static void spapr_machine_init(MachineState *machine)
> exit(1);
> }
>
> - /* Allocate RMA if necessary */
> - rma_alloc_size = kvmppc_alloc_rma(&rma);
> + spapr->rma_size = node0_size;
>
> - if (rma_alloc_size == -1) {
> - error_report("Unable to create RMA");
> - exit(1);
> + /* With KVM, we don't actually know whether KVM supports an
> + * unbounded RMA (PR KVM) or is limited by the hash table size (HV
> + * KVM using VRMA), so we always assume the latter
> + *
> + * In that case, we also limit the initial allocations for RTAS
> + * etc... to 256M since we have no way to know what the VRMA size
> + * is going to be as it depends on the size of the hash table
> + * isn't determined yet.
... maybe s/isn't/which isn't/ while at it ?
> + */
> + if (kvm_enabled()) {
> + spapr->vrma_adjust = 1;
> + spapr->rma_size = MIN(spapr->rma_size, 0x10000000);
> }
>
> - if (rma_alloc_size && (rma_alloc_size < node0_size)) {
> - spapr->rma_size = rma_alloc_size;
> - } else {
> - spapr->rma_size = node0_size;
> -
> - /* With KVM, we don't actually know whether KVM supports an
> - * unbounded RMA (PR KVM) or is limited by the hash table size
> - * (HV KVM using VRMA), so we always assume the latter
> - *
> - * In that case, we also limit the initial allocations for RTAS
> - * etc... to 256M since we have no way to know what the VRMA size
> - * is going to be as it depends on the size of the hash table
> - * isn't determined yet.
> - */
> - if (kvm_enabled()) {
> - spapr->vrma_adjust = 1;
> - spapr->rma_size = MIN(spapr->rma_size, 0x10000000);
> - }
> -
> - /* Actually we don't support unbounded RMA anymore since we
> - * added proper emulation of HV mode. The max we can get is
> - * 16G which also happens to be what we configure for PAPR
> - * mode so make sure we don't do anything bigger than that
> - */
> - spapr->rma_size = MIN(spapr->rma_size, 0x400000000ull);
> - }
> + /* Actually we don't support unbounded RMA anymore since we
> + * added proper emulation of HV mode. The max we can get is
> + * 16G which also happens to be what we configure for PAPR
> + * mode so make sure we don't do anything bigger than that
> + */
> + spapr->rma_size = MIN(spapr->rma_size, 0x400000000ull);
>
> if (spapr->rma_size > node0_size) {
> error_report("Numa node 0 has to span the RMA (%#08"HWADDR_PRIx")",
> @@ -2508,14 +2493,6 @@ static void spapr_machine_init(MachineState *machine)
> machine->ram_size);
> memory_region_add_subregion(sysmem, 0, ram);
>
> - if (rma_alloc_size && rma) {
> - rma_region = g_new(MemoryRegion, 1);
> - memory_region_init_ram_ptr(rma_region, NULL, "ppc_spapr.rma",
> - rma_alloc_size, rma);
> - vmstate_register_ram_global(rma_region);
> - memory_region_add_subregion(sysmem, 0, rma_region);
> - }
> -
> /* initialize hotplug memory address space */
> if (machine->ram_size < machine->maxram_size) {
> ram_addr_t hotplug_mem_size = machine->maxram_size - machine->ram_size;
> diff --git a/hw/ppc/spapr_cpu_core.c b/hw/ppc/spapr_cpu_core.c
> index aa17626cda..f39d99a8da 100644
> --- a/hw/ppc/spapr_cpu_core.c
> +++ b/hw/ppc/spapr_cpu_core.c
> @@ -36,8 +36,6 @@ static void spapr_cpu_reset(void *opaque)
> * using an RTAS call */
> cs->halted = 1;
>
> - env->spr[SPR_HIOR] = 0;
> -
> /* Disable Power-saving mode Exit Cause exceptions for the CPU.
> * This can cause issues when rebooting the guest if a secondary
> * is awaken */
> diff --git a/target/ppc/kvm.c b/target/ppc/kvm.c
> index 6de59c5b21..51177a8e00 100644
> --- a/target/ppc/kvm.c
> +++ b/target/ppc/kvm.c
> @@ -2159,42 +2159,6 @@ void kvmppc_hint_smt_possible(Error **errp)
>
>
> #ifdef TARGET_PPC64
> -off_t kvmppc_alloc_rma(void **rma)
> -{
> - off_t size;
> - int fd;
> - struct kvm_allocate_rma ret;
> -
> - /* If cap_ppc_rma == 0, contiguous RMA allocation is not supported
> - * if cap_ppc_rma == 1, contiguous RMA allocation is supported, but
> - * not necessary on this hardware
> - * if cap_ppc_rma == 2, contiguous RMA allocation is needed on this hardware
> - *
> - * FIXME: We should allow the user to force contiguous RMA
> - * allocation in the cap_ppc_rma==1 case.
> - */
> - if (cap_ppc_rma < 2) {
> - return 0;
> - }
> -
> - fd = kvm_vm_ioctl(kvm_state, KVM_ALLOCATE_RMA, &ret);
> - if (fd < 0) {
> - fprintf(stderr, "KVM: Error on KVM_ALLOCATE_RMA: %s\n",
> - strerror(errno));
> - return -1;
> - }
> -
> - size = MIN(ret.rma_size, 256ul << 20);
> -
> - *rma = mmap(NULL, size, PROT_READ|PROT_WRITE, MAP_SHARED, fd, 0);
> - if (*rma == MAP_FAILED) {
> - fprintf(stderr, "KVM: Error mapping RMA: %s\n", strerror(errno));
> - return -1;
> - };
> -
> - return size;
> -}
> -
> uint64_t kvmppc_rma_size(uint64_t current_size, unsigned int hash_shift)
> {
> struct kvm_ppc_smmu_info info;
> diff --git a/target/ppc/kvm_ppc.h b/target/ppc/kvm_ppc.h
> index 4d2789eef6..e2840e1d33 100644
> --- a/target/ppc/kvm_ppc.h
> +++ b/target/ppc/kvm_ppc.h
> @@ -37,7 +37,6 @@ target_ulong kvmppc_configure_v3_mmu(PowerPCCPU *cpu,
> bool radix, bool gtse,
> uint64_t proc_tbl);
> #ifndef CONFIG_USER_ONLY
> -off_t kvmppc_alloc_rma(void **rma);
> bool kvmppc_spapr_use_multitce(void);
> int kvmppc_spapr_enable_inkernel_multitce(void);
> void *kvmppc_create_spapr_tce(uint32_t liobn, uint32_t page_shift,
> @@ -188,11 +187,6 @@ static inline target_ulong kvmppc_configure_v3_mmu(PowerPCCPU *cpu,
> }
>
> #ifndef CONFIG_USER_ONLY
> -static inline off_t kvmppc_alloc_rma(void **rma)
> -{
> - return 0;
> -}
> -
> static inline bool kvmppc_spapr_use_multitce(void)
> {
> return false;
next prev parent reply other threads:[~2018-04-20 12:25 UTC|newest]
Thread overview: 40+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-04-17 7:17 [Qemu-devel] [PATCH for-2.13 00/10] spapr: Cleanups to PAPR mode setup David Gibson
2018-04-17 7:17 ` [Qemu-devel] [PATCH for-2.13 01/10] spapr: Avoid redundant calls to spapr_cpu_reset() David Gibson
2018-04-19 13:48 ` Greg Kurz
2018-04-20 6:34 ` David Gibson
2018-04-20 9:15 ` Greg Kurz
2018-04-20 15:39 ` [Qemu-devel] [Qemu-ppc] " Greg Kurz
2018-06-18 3:42 ` David Gibson
2018-06-18 9:01 ` Greg Kurz
2018-04-17 7:17 ` [Qemu-devel] [PATCH for-2.13 02/10] spapr: Remove support for PowerPC 970 with pseries machine type David Gibson
2018-04-19 17:21 ` Greg Kurz
2018-04-20 5:58 ` [Qemu-devel] [Qemu-ppc] " Thomas Huth
2018-04-20 6:40 ` [Qemu-devel] " David Gibson
2018-04-20 6:48 ` [Qemu-devel] [Qemu-ppc] " luigi burdo
2018-04-20 7:15 ` David Gibson
2018-04-20 12:25 ` Greg Kurz [this message]
2018-05-03 6:23 ` [Qemu-devel] " David Gibson
2018-04-17 7:17 ` [Qemu-devel] [PATCH for-2.13 03/10] target/ppc: Remove unnecessary initialization of LPCR_UPRT David Gibson
2018-04-20 11:34 ` Greg Kurz
2018-04-20 12:57 ` David Gibson
2018-04-25 9:52 ` [Qemu-devel] [Qemu-ppc] " Cédric Le Goater
2018-04-26 6:46 ` David Gibson
2018-04-26 7:20 ` Cédric Le Goater
2018-05-01 6:39 ` David Gibson
2018-05-01 15:59 ` Cédric Le Goater
2018-04-17 7:17 ` [Qemu-devel] [PATCH for-2.13 04/10] spapr: Set compatibility mode before the rest of spapr_cpu_reset() David Gibson
2018-04-20 9:16 ` Greg Kurz
2018-04-20 10:48 ` David Gibson
2018-04-17 7:17 ` [Qemu-devel] [PATCH for-2.13 05/10] spapr: Move PAPR mode register initialization to spapr code David Gibson
2018-04-20 15:42 ` Greg Kurz
2018-04-17 7:17 ` [Qemu-devel] [PATCH for-2.13 06/10] target/ppc: Add ppc_store_lpcr() helper David Gibson
2018-04-20 15:46 ` Greg Kurz
2018-04-17 7:17 ` [Qemu-devel] [PATCH for-2.13 07/10] spapr: Make a helper to set up cpu entry point state David Gibson
2018-04-20 15:48 ` Greg Kurz
2018-04-17 7:17 ` [Qemu-devel] [PATCH for-2.13 08/10] spapr: Clean up handling of LPCR power-saving exit bits David Gibson
2018-04-20 15:56 ` Greg Kurz
2018-04-17 7:17 ` [Qemu-devel] [PATCH for-2.13 09/10] target/ppc: Don't bother with MSR_EP in cpu_ppc_set_papr() David Gibson
2018-04-20 6:08 ` [Qemu-devel] [Qemu-ppc] " Thomas Huth
2018-04-20 6:21 ` David Gibson
2018-04-17 7:17 ` [Qemu-devel] [PATCH for-2.13 10/10] spapr: Move PAPR specific cpu logic to pseries machine type David Gibson
2018-04-20 15:58 ` Greg Kurz
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20180420142523.515f0058@bahia.lan \
--to=groug@kaod.org \
--cc=benh@kernel.crashing.org \
--cc=david@gibson.dropbear.id.au \
--cc=qemu-devel@nongnu.org \
--cc=qemu-ppc@nongnu.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
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).