From patchwork Fri Mar 26 00:27:19 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= X-Patchwork-Id: 1458560 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=nongnu.org (client-ip=209.51.188.17; helo=lists.gnu.org; envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org; receiver=) Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.a=rsa-sha256 header.s=20161025 header.b=hqQ6yMll; dkim-atps=neutral Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 4F62t12rf6z9sVt for ; Fri, 26 Mar 2021 11:29:45 +1100 (AEDT) Received: from localhost ([::1]:55542 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lPaMB-0002uA-Ch for incoming@patchwork.ozlabs.org; Thu, 25 Mar 2021 20:29:43 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:57678) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lPaKP-0002Pp-KK; Thu, 25 Mar 2021 20:27:53 -0400 Received: from mail-wm1-x32a.google.com ([2a00:1450:4864:20::32a]:38768) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1lPaKE-00042Z-TJ; Thu, 25 Mar 2021 20:27:45 -0400 Received: by mail-wm1-x32a.google.com with SMTP id m20-20020a7bcb940000b029010cab7e5a9fso4025506wmi.3; Thu, 25 Mar 2021 17:27:38 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=sender:from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=saTn6NarVlEELQgHGdwR/wrWO06QjsMUeOIlGAoNQ9M=; b=hqQ6yMllaA4CLNt9rLG19D+p6ABbiimsAVYZ6gof5/26P4m3A+TrjSLrjhb8E5CpaD k1bjspKsRk4KD+NAw6s2oR1SS849pXkypeM6PRHYeNai8tvs4RdA6nbYVHx3FnhoaWka TnEktTPPI2LDuHuK2WPh+fta7zi84IFZ42Sf7JDhDKXLZxYiDc8BdIEVuqNKBQVcCYwJ 2/IIB6cji/VJHYEabwdj6KE6oZVEEhJ473jpjNzIs5k1/UOxrXyZUXEjd0SYCv1bBGnG OPmAN+++431XhIx16jo99xp2O/rVdQiDHxgsXObnKA9Y4iMar5rXbBoOqRKG9MCPgAPm w3vw== 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 :in-reply-to:references:mime-version:content-transfer-encoding; bh=saTn6NarVlEELQgHGdwR/wrWO06QjsMUeOIlGAoNQ9M=; b=Wz9U+kldQS96O0w28xF0TynTxCk3yny81KWxM8VaYS9UND+oZWdzJSgF6KWOaWRw2e EIMkwl+vw0LCaFnO6Wly1A/ZSJHt3kxsWG0mLsNyWe4Qguh3Ekix7hmazXRUB5x2Dnle DOsRDVB/GwfYVNQ5/BrpGedz3+dFvDTiPiiTpXddfYxgaa9yInOQrPBnfT6ueVurIpOI AdHtlmwW4EEOOMdBBURFFj0QnHlKkaEc7j3ngFbrGXA+QnIPUnyw7LwoQ2s4q6W5umST 7dXHHg0/pJsu7fXMS+oauhPkun8KF5AitmSntRi1B7gtXRpD3Va/3A2KHW4OkiuSc+hH xyrQ== X-Gm-Message-State: AOAM532p/F8eJjBeXpfq0BG3VrBA476pl6U4AJu12BTWdaX4n3pCG9Fl 3KFAMThM91hokEVHsqYULJ0287Fpm6LNEg== X-Google-Smtp-Source: ABdhPJxdvBd4hUR6euoVap15xJPgJm/JSU6i+IUtGx9IiifYu3ssymwlxnQzlB8aMbmzOqublIVEng== X-Received: by 2002:a1c:bc82:: with SMTP id m124mr10383440wmf.118.1616718456724; Thu, 25 Mar 2021 17:27:36 -0700 (PDT) Received: from localhost.localdomain (17.red-88-21-201.staticip.rima-tde.net. [88.21.201.17]) by smtp.gmail.com with ESMTPSA id q207sm8402159wme.36.2021.03.25.17.27.35 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 25 Mar 2021 17:27:36 -0700 (PDT) From: =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= To: qemu-devel@nongnu.org Subject: [RFC PATCH-for-6.1 01/10] hw/misc: Add device to help managing aliased memory regions Date: Fri, 26 Mar 2021 01:27:19 +0100 Message-Id: <20210326002728.1069834-2-f4bug@amsat.org> X-Mailer: git-send-email 2.26.2 In-Reply-To: <20210326002728.1069834-1-f4bug@amsat.org> References: <20210326002728.1069834-1-f4bug@amsat.org> MIME-Version: 1.0 Received-SPF: pass client-ip=2a00:1450:4864:20::32a; envelope-from=philippe.mathieu.daude@gmail.com; helo=mail-wm1-x32a.google.com X-Spam_score_int: -14 X-Spam_score: -1.5 X-Spam_bar: - X-Spam_report: (-1.5 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FORGED_FROMDOMAIN=0.249, FREEMAIL_FROM=0.001, HEADER_FROM_DIFFERENT_DOMAINS=0.25, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=no autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Peter Maydell , Mark Cave-Ayland , Alistair Francis , Richard Henderson , =?utf-8?q?Philippe_Mathie?= =?utf-8?q?u-Daud=C3=A9?= , Laurent Vivier , qemu-arm@nongnu.org, qemu-ppc@nongnu.org, "Edgar E. Iglesias" , David Gibson Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: "Qemu-devel" // TODO explain here how buses work? when some address lines are // not bound we get memory aliasing, high addresses are masked. // etc... Add a helper to manage this use case easily. For example a having @span_size = @region_size / 4 we get such mapping: ^-----------^ | | | | | +-------+ | +---------+ <--+ | | +---------+ | | | | | | | | +-----------> | alias#3 | | | | | | | | | | | +---------+ | | | | +---------+ | | | | | | | | | | +-------> | alias#2 | | | | | | | | |region | container | | | +---------+ | size | | | | +---------+ | | | | | | | | | | | | +----> | alias#1 | | | | | | | | | | | | | | | +---------+ <--+ | | | +-+---+--+--+ +---------+ | | | | | | | | |span | | | | subregion +-> | alias#0 | |size | offset | | | | | | | | +----> | +-------+ | +-----------+ +---------+ <--+ <--+ | | | | | | | | | | | | | | | | ^-----------^ Signed-off-by: Philippe Mathieu-Daudé --- include/hw/misc/aliased_region.h | 87 ++++++++++++++++++++ hw/misc/aliased_region.c | 133 +++++++++++++++++++++++++++++++ MAINTAINERS | 6 ++ hw/misc/Kconfig | 3 + hw/misc/meson.build | 1 + 5 files changed, 230 insertions(+) create mode 100644 include/hw/misc/aliased_region.h create mode 100644 hw/misc/aliased_region.c diff --git a/include/hw/misc/aliased_region.h b/include/hw/misc/aliased_region.h new file mode 100644 index 00000000000..0ce0d5d1cef --- /dev/null +++ b/include/hw/misc/aliased_region.h @@ -0,0 +1,87 @@ +/* + * Aliased memory regions + * + * Copyright (c) 2018 Philippe Mathieu-Daudé + * + * SPDX-License-Identifier: GPL-2.0-or-later + */ + +#ifndef HW_MISC_ALIASED_REGION_H +#define HW_MISC_ALIASED_REGION_H + +#include "exec/memory.h" +#include "hw/sysbus.h" + +#define TYPE_ALIASED_REGION "aliased-memory-region" +OBJECT_DECLARE_SIMPLE_TYPE(AliasedRegionState, ALIASED_REGION) + +struct AliasedRegionState { + /*< private >*/ + SysBusDevice parent_obj; + + /*< public >*/ + MemoryRegion container; + uint64_t region_size; + uint64_t span_size; + MemoryRegion *mr; + + struct { + size_t count; + MemoryRegion *alias; + } mem; +}; + +/** + * memory_region_add_subregion_aliased: + * @container: the #MemoryRegion to contain the aliased subregions. + * @offset: the offset relative to @container where the aliased subregion + * are added. + * @region_size: size of the region containing the aliased subregions. + * @subregion: the subregion to be aliased. + * @span_size: size between each aliased subregion + * + * This utility function creates and maps an instance of aliased-memory-region, + * which is a dummy device of a single region which simply contains multiple + * aliases of the provided @subregion, spanned over the @region_size every + * @span_size. The device is mapped at @offset within @container. + * + * For example a having @span_size = @region_size / 4 we get such mapping: + * + * +-----------+ + * | | + * | | + * | +-------+ | +---------+ <--+ + * | | +---------+ | + * | | | | | + * | | +-----------> | alias#3 | | + * | | | | | | + * | | | +---------+ | + * | | | +---------+ | + * | | | | | | + * | | | +-------> | alias#2 | | + * | | | | | | |region + * | container | | | +---------+ | size + * | | | | +---------+ | + * | | | | | | | + * | | | | +----> | alias#1 | | + * | | | | | | | | + * | | | | | +---------+ <--+ | + * | | +-+---+--+--+ +---------+ | | + * | | | | | | |span | + * | | | subregion +-> | alias#0 | |size | + * offset | | | | | | | | + * +----> | +-------+ | +-----------+ +---------+ <--+ <--+ + * | | | + * | | | + * | | | + * | | | + * | | | + * + +-----------+ + */ +void memory_region_add_subregion_aliased(MemoryRegion *container, + hwaddr offset, + uint64_t region_size, + MemoryRegion *subregion, + uint64_t span_size); + +#endif diff --git a/hw/misc/aliased_region.c b/hw/misc/aliased_region.c new file mode 100644 index 00000000000..8fcc63f2648 --- /dev/null +++ b/hw/misc/aliased_region.c @@ -0,0 +1,133 @@ +/* + * Aliased memory regions + * + * Copyright (c) 2018 Philippe Mathieu-Daudé + * + * SPDX-License-Identifier: GPL-2.0-or-later + */ + +#include "qemu/osdep.h" +#include "qemu/cutils.h" +#include "qapi/error.h" +#include "hw/hw.h" +#include "hw/sysbus.h" +#include "hw/misc/aliased_region.h" +#include "hw/qdev-properties.h" + +static void aliased_mem_realize(AliasedRegionState *s, const char *mr_name) +{ + uint64_t subregion_size; + int subregion_bits; + + memory_region_init(&s->container, OBJECT(s), mr_name, s->region_size); + + subregion_bits = 64 - clz64(s->span_size - 1); + s->mem.count = s->region_size >> subregion_bits; + assert(s->mem.count > 1); + subregion_size = 1ULL << subregion_bits; + + s->mem.alias = g_new(MemoryRegion, s->mem.count); + for (size_t i = 0; i < s->mem.count; i++) { + g_autofree char *name = g_strdup_printf("%s [#%zu/%zu]", + memory_region_name(s->mr), + i, s->mem.count); + memory_region_init_alias(&s->mem.alias[i], OBJECT(s), name, + s->mr, 0, s->span_size); + memory_region_add_subregion(&s->container, i * subregion_size, + &s->mem.alias[i]); + } +} + +static void aliased_mr_realize(DeviceState *dev, Error **errp) +{ + AliasedRegionState *s = ALIASED_REGION(dev); + g_autofree char *name = NULL, *span = NULL; + + if (s->region_size == 0) { + error_setg(errp, "property 'region-size' not specified or zero"); + return; + } + + if (s->mr == NULL) { + error_setg(errp, "property 'iomem' not specified"); + return; + } + + if (!s->span_size) { + s->span_size = pow2ceil(memory_region_size(s->mr)); + } else if (!is_power_of_2(s->span_size)) { + error_setg(errp, "property 'span-size' must be a power of 2"); + return; + } + + span = size_to_str(s->span_size); + name = g_strdup_printf("masked %s [span of %s]", + memory_region_name(s->mr), span); + aliased_mem_realize(s, name); + sysbus_init_mmio(SYS_BUS_DEVICE(s), &s->container); +} + +static void aliased_mr_unrealize(DeviceState *dev) +{ + AliasedRegionState *s = ALIASED_REGION(dev); + + g_free(s->mem.alias); +} + +static Property aliased_mr_properties[] = { + DEFINE_PROP_UINT64("region-size", AliasedRegionState, region_size, 0), + DEFINE_PROP_UINT64("span-size", AliasedRegionState, span_size, 0), + DEFINE_PROP_LINK("iomem", AliasedRegionState, mr, + TYPE_MEMORY_REGION, MemoryRegion *), + DEFINE_PROP_END_OF_LIST(), +}; + +static void aliased_mr_class_init(ObjectClass *klass, void *data) +{ + DeviceClass *dc = DEVICE_CLASS(klass); + + dc->realize = aliased_mr_realize; + dc->unrealize = aliased_mr_unrealize; + /* Reason: needs to be wired up to work */ + dc->user_creatable = false; + device_class_set_props(dc, aliased_mr_properties); +} + +static const TypeInfo aliased_mr_info = { + .name = TYPE_ALIASED_REGION, + .parent = TYPE_SYS_BUS_DEVICE, + .instance_size = sizeof(AliasedRegionState), + .class_init = aliased_mr_class_init, +}; + +static void aliased_mr_register_types(void) +{ + type_register_static(&aliased_mr_info); +} + +type_init(aliased_mr_register_types) + +void memory_region_add_subregion_aliased(MemoryRegion *container, + hwaddr offset, + uint64_t region_size, + MemoryRegion *subregion, + uint64_t span_size) +{ + DeviceState *dev; + + if (!region_size) { + region_size = pow2ceil(memory_region_size(container)); + } else { + assert(region_size <= memory_region_size(container)); + } + + dev = qdev_new(TYPE_ALIASED_REGION); + qdev_prop_set_uint64(dev, "region-size", region_size); + qdev_prop_set_uint64(dev, "span-size", span_size); + object_property_set_link(OBJECT(dev), "iomem", OBJECT(subregion), + &error_abort); + sysbus_realize(SYS_BUS_DEVICE(dev), &error_abort); + + memory_region_add_subregion(container, offset, + sysbus_mmio_get_region(SYS_BUS_DEVICE(dev), 0)); +} diff --git a/MAINTAINERS b/MAINTAINERS index 554be84b321..f82ffd50a91 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -2097,6 +2097,12 @@ S: Maintained F: include/hw/misc/empty_slot.h F: hw/misc/empty_slot.c +Aliased memory region +M: Philippe Mathieu-Daudé +S: Maintained +F: include/hw/misc/aliased_region.h +F: hw/misc/aliased_region.c + Standard VGA M: Gerd Hoffmann S: Maintained diff --git a/hw/misc/Kconfig b/hw/misc/Kconfig index c71ed258204..ca51b99989e 100644 --- a/hw/misc/Kconfig +++ b/hw/misc/Kconfig @@ -151,6 +151,9 @@ config AUX config UNIMP bool +config ALIASED_REGION + bool + config LED bool diff --git a/hw/misc/meson.build b/hw/misc/meson.build index 21034dc60a8..e65541b835f 100644 --- a/hw/misc/meson.build +++ b/hw/misc/meson.build @@ -12,6 +12,7 @@ softmmu_ss.add(when: 'CONFIG_EMC141X', if_true: files('emc141x.c')) softmmu_ss.add(when: 'CONFIG_UNIMP', if_true: files('unimp.c')) softmmu_ss.add(when: 'CONFIG_EMPTY_SLOT', if_true: files('empty_slot.c')) +softmmu_ss.add(when: 'CONFIG_ALIASED_REGION', if_true: files('aliased_region.c')) softmmu_ss.add(when: 'CONFIG_LED', if_true: files('led.c')) softmmu_ss.add(when: 'CONFIG_PVPANIC_COMMON', if_true: files('pvpanic.c')) From patchwork Fri Mar 26 00:27:20 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= X-Patchwork-Id: 1458561 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=nongnu.org (client-ip=209.51.188.17; helo=lists.gnu.org; envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org; receiver=) Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.a=rsa-sha256 header.s=20161025 header.b=N19NSLmf; dkim-atps=neutral Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 4F62y80sHvz9sCD for ; Fri, 26 Mar 2021 11:33:20 +1100 (AEDT) Received: from localhost ([::1]:35362 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lPaPe-0006UX-53 for incoming@patchwork.ozlabs.org; Thu, 25 Mar 2021 20:33:18 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:57714) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lPaKR-0002Ra-GK; Thu, 25 Mar 2021 20:27:55 -0400 Received: from mail-wm1-x332.google.com ([2a00:1450:4864:20::332]:37885) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1lPaKJ-00043U-IO; Thu, 25 Mar 2021 20:27:53 -0400 Received: by mail-wm1-x332.google.com with SMTP id f22-20020a7bc8d60000b029010c024a1407so4034500wml.2; Thu, 25 Mar 2021 17:27:43 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=sender:from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=O7W6IEOHSoDvRbI0khuBdpTH+Nl9d9QUqt9PPpv29LE=; b=N19NSLmflIp+mhy8BaAwL7u8+ZVW61/N8eKBushPRrKAg1g3QAmzjyi/kOXs/5dnYB oBMdcn2/pnbIqQqFH9Pce8Poyjhc4UA+LCYcwW71/Sf75blOnxcWu6YVt+sp+ZYxKOM6 N9zdAQfsqAsTY9AMMSBGPvxVzeeeKwRfxc96wfPhaFRzptGWN15ITC9D08+JKPNQcMpI OgJdq7Q6V+Dw9JdEvr46z1eQ1iBwg5k83PbshUDu3ml6zobNMV/vHwUii5oCKiIMdgsq WdTJ5P9FOb9EP0CizDOMncFP1RACO1BtMmWdQ84p09RAF/h23JSSZqv0PfjuUuLVfWgB xElA== 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 :in-reply-to:references:mime-version:content-transfer-encoding; bh=O7W6IEOHSoDvRbI0khuBdpTH+Nl9d9QUqt9PPpv29LE=; b=BdSdL62CEaR2uswTh9zj2OrqVT2yBs7NZ9CuCStSUb14yF0fz6h41hfQPgJbD7KC7e QbOO5PZY/bt6odRq0es90GkYKn2UnucJL076atyES+QYGEAEB6vngu7hNnqtEP9EFCw2 knHnp1SNBe1lsKOZTAsNVS4d6nqIK/ItnwT/sXZfJv8+OyFmW/eWa7ofxWnPLNl/noWc GJSAZ+2WmJMqxiz4jDvnEoJEdp3vpPowWfmDIW0Wd+nv8czbkjjJvWju8+WU9Ey9JEO0 EQFF6CW9Il6Rjq/+kR0WN9AoAOcez1/wFyb2FtLDRJyyO6aXb3dUxoXXiXo0mJ2/A4ki 7jvw== X-Gm-Message-State: AOAM532HL6zIxB59QbgWKKyOTbfTk1GRe1gmwbvIUns86LDOpwdhPw6Y HlFbHYB1Oq0I4SK4NxCEt4eNKOFrnmEkxQ== X-Google-Smtp-Source: ABdhPJws53IjRyn7osS54kW9BohBvUfqx6cHPjq6vzHHzPx4wiEBlIv6thwVRPTw9U+Dhz/5c3TwMQ== X-Received: by 2002:a7b:c385:: with SMTP id s5mr9896183wmj.17.1616718461645; Thu, 25 Mar 2021 17:27:41 -0700 (PDT) Received: from localhost.localdomain (17.red-88-21-201.staticip.rima-tde.net. [88.21.201.17]) by smtp.gmail.com with ESMTPSA id u4sm9609242wrm.24.2021.03.25.17.27.40 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 25 Mar 2021 17:27:41 -0700 (PDT) From: =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= To: qemu-devel@nongnu.org Subject: [PATCH-for-6.1 02/10] hw/arm/musicpal: Open-code pflash_cfi02_register() call Date: Fri, 26 Mar 2021 01:27:20 +0100 Message-Id: <20210326002728.1069834-3-f4bug@amsat.org> X-Mailer: git-send-email 2.26.2 In-Reply-To: <20210326002728.1069834-1-f4bug@amsat.org> References: <20210326002728.1069834-1-f4bug@amsat.org> MIME-Version: 1.0 Received-SPF: pass client-ip=2a00:1450:4864:20::332; envelope-from=philippe.mathieu.daude@gmail.com; helo=mail-wm1-x332.google.com X-Spam_score_int: -14 X-Spam_score: -1.5 X-Spam_bar: - X-Spam_report: (-1.5 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FORGED_FROMDOMAIN=0.249, FREEMAIL_FROM=0.001, HEADER_FROM_DIFFERENT_DOMAINS=0.25, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=no autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Peter Maydell , Jan Kiszka , Mark Cave-Ayland , Alistair Francis , Richard Henderson , =?utf-8?q?Philippe_Mathie?= =?utf-8?q?u-Daud=C3=A9?= , Laurent Vivier , qemu-arm@nongnu.org, qemu-ppc@nongnu.org, "Edgar E. Iglesias" , David Gibson Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: "Qemu-devel" To be able to manually map the flash region on the main memory (in the next commit), first expand the pflash_cfi02_register in place. Signed-off-by: Philippe Mathieu-Daudé --- hw/arm/musicpal.c | 27 +++++++++++++++++++++------ 1 file changed, 21 insertions(+), 6 deletions(-) diff --git a/hw/arm/musicpal.c b/hw/arm/musicpal.c index 9cebece2de0..8b58b66f263 100644 --- a/hw/arm/musicpal.c +++ b/hw/arm/musicpal.c @@ -10,6 +10,7 @@ */ #include "qemu/osdep.h" +#include "qemu/units.h" #include "qapi/error.h" #include "cpu.h" #include "hw/sysbus.h" @@ -1640,6 +1641,7 @@ static void musicpal_init(MachineState *machine) /* Register flash */ dinfo = drive_get(IF_PFLASH, 0, 0); if (dinfo) { + static const size_t sector_size = 64 * KiB; BlockBackend *blk = blk_by_legacy_dinfo(dinfo); flash_size = blk_getlength(blk); @@ -1649,17 +1651,30 @@ static void musicpal_init(MachineState *machine) exit(1); } + dev = qdev_new(TYPE_PFLASH_CFI02); + qdev_prop_set_drive(dev, "drive", blk); + qdev_prop_set_uint32(dev, "num-blocks", flash_size / sector_size); + qdev_prop_set_uint32(dev, "sector-length", sector_size); + qdev_prop_set_uint8(dev, "width", 2); /* 16-bit */ + qdev_prop_set_uint8(dev, "mappings", MP_FLASH_SIZE_MAX / flash_size); + qdev_prop_set_uint8(dev, "big-endian", 0); + qdev_prop_set_uint16(dev, "id0", 0x00bf); + qdev_prop_set_uint16(dev, "id1", 0x236d); + qdev_prop_set_uint16(dev, "id2", 0x0000); + qdev_prop_set_uint16(dev, "id3", 0x0000); + qdev_prop_set_uint16(dev, "unlock-addr0", 0x5555); + qdev_prop_set_uint16(dev, "unlock-addr1", 0x2aaa); + qdev_prop_set_string(dev, "name", "musicpal.flash"); + sysbus_realize_and_unref(SYS_BUS_DEVICE(dev), &error_fatal); + + sysbus_mmio_map(SYS_BUS_DEVICE(dev), 0, + 0x100000000ULL - MP_FLASH_SIZE_MAX); + /* * The original U-Boot accesses the flash at 0xFE000000 instead of * 0xFF800000 (if there is 8 MB flash). So remap flash access if the * image is smaller than 32 MB. */ - pflash_cfi02_register(0x100000000ULL - MP_FLASH_SIZE_MAX, - "musicpal.flash", flash_size, - blk, 0x10000, - MP_FLASH_SIZE_MAX / flash_size, - 2, 0x00BF, 0x236D, 0x0000, 0x0000, - 0x5555, 0x2AAA, 0); } sysbus_create_simple(TYPE_MV88W8618_FLASHCFG, MP_FLASHCFG_BASE, NULL); From patchwork Fri Mar 26 00:27:21 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= X-Patchwork-Id: 1458559 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=nongnu.org (client-ip=209.51.188.17; helo=lists.gnu.org; envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org; receiver=) Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.a=rsa-sha256 header.s=20161025 header.b=KPgrCjl7; dkim-atps=neutral Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 4F62sH0hCzz9sS8 for ; Fri, 26 Mar 2021 11:29:07 +1100 (AEDT) Received: from localhost ([::1]:55050 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lPaLZ-0002gI-3T for incoming@patchwork.ozlabs.org; Thu, 25 Mar 2021 20:29:05 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:57712) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lPaKR-0002RW-Fs; Thu, 25 Mar 2021 20:27:55 -0400 Received: from mail-wm1-x32c.google.com ([2a00:1450:4864:20::32c]:44587) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1lPaKP-000452-87; Thu, 25 Mar 2021 20:27:54 -0400 Received: by mail-wm1-x32c.google.com with SMTP id j4-20020a05600c4104b029010c62bc1e20so2112478wmi.3; Thu, 25 Mar 2021 17:27:47 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=sender:from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=IYakNFxQV1ex75l66dPkqyEqS369liYXkwtkj/H9Uas=; b=KPgrCjl7IEfoYlrAJFCDMudAfThi+8A7nYifuZpdkqHNNj2tu1GBZmdoCJK30+iz26 TatGmkhGh6fSBj5zwzxTTyolSrNFlCbQ96wcMdfeUMtkMsTenHnwj3oy+h00COc2gF5V pGejtLKe4WsO4r6LyNfE12k3Mo2uDfsf1hp2AQbjvwCaI5+mRgZHjdqJNLULqzDCc2zf DJYFn1Yirj9flWyfBZXdNqAK9uxsTOOomjsfWbgBNZ82KJIf4ctMY4tL1l7tInTb6sLA AyeCPrEVk3+ijjvP378521okK5qsgls19edZgOtTODDF6cdFMcgHYhlf6YceabPA/ETD nkjg== 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 :in-reply-to:references:mime-version:content-transfer-encoding; bh=IYakNFxQV1ex75l66dPkqyEqS369liYXkwtkj/H9Uas=; b=k5W2mvyS51GD6dhNoimEszopWHobWnB8efwxqo7LgQtNkNRbvz5+cro7H9RjfXuskI JuajobnD2EsmBXm2zg8BkLLosBJvBSV/TUQQkDh62xA6uHTPDaPkhlbmAnEst2Eakubn 7fHYQOUt2d0K7/gT0kMCtbCu/RNPsrCWC0PTciduxCF5Q5nxPabfJCzBLGHt6BYywqVm roXg2M1pthnE4dbskRRIKYB2LpyJ1nIoq/+rdElFwaVbV1vHbxR7gdKDzleaC60WUXKt lKtVLokANo2C3XYMnFyPM5semYYCwXM36JsDAQLxAkM3GoWR9yVM6hxg/4WB+PLyXOfT STcg== X-Gm-Message-State: AOAM531sgHL44vA95u/hmaOYBqwk0sBIHUZnPNnyHDraLQjwfQMCWTQh i83oyqZChXFwk3h82M7V2hprQlALRIKnvA== X-Google-Smtp-Source: ABdhPJxe/rYYqQpo4DJebS5dMcnZn6DD4xd4y8iiQPhT0TcaIdyPxFYKOKupjgPTUjqg3bP3SutnPQ== X-Received: by 2002:a05:600c:210a:: with SMTP id u10mr10497666wml.147.1616718466644; Thu, 25 Mar 2021 17:27:46 -0700 (PDT) Received: from localhost.localdomain (17.red-88-21-201.staticip.rima-tde.net. [88.21.201.17]) by smtp.gmail.com with ESMTPSA id r11sm9513265wrm.26.2021.03.25.17.27.45 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 25 Mar 2021 17:27:46 -0700 (PDT) From: =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= To: qemu-devel@nongnu.org Subject: [RFC PATCH-for-6.1 03/10] hw/arm/musicpal: Map flash using memory_region_add_subregion_aliased() Date: Fri, 26 Mar 2021 01:27:21 +0100 Message-Id: <20210326002728.1069834-4-f4bug@amsat.org> X-Mailer: git-send-email 2.26.2 In-Reply-To: <20210326002728.1069834-1-f4bug@amsat.org> References: <20210326002728.1069834-1-f4bug@amsat.org> MIME-Version: 1.0 Received-SPF: pass client-ip=2a00:1450:4864:20::32c; envelope-from=philippe.mathieu.daude@gmail.com; helo=mail-wm1-x32c.google.com X-Spam_score_int: -14 X-Spam_score: -1.5 X-Spam_bar: - X-Spam_report: (-1.5 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FORGED_FROMDOMAIN=0.249, FREEMAIL_FROM=0.001, HEADER_FROM_DIFFERENT_DOMAINS=0.25, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=no autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Peter Maydell , Jan Kiszka , Mark Cave-Ayland , Alistair Francis , Richard Henderson , =?utf-8?q?Philippe_Mathie?= =?utf-8?q?u-Daud=C3=A9?= , Laurent Vivier , qemu-arm@nongnu.org, qemu-ppc@nongnu.org, "Edgar E. Iglesias" , David Gibson Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: "Qemu-devel" Instead of using a device specific feature for mapping the flash memory multiple times over a wider region, use the generic memory_region_add_subregion_aliased() helper. There is no change in the memory layout. Signed-off-by: Philippe Mathieu-Daudé --- hw/arm/musicpal.c | 11 +++++++---- hw/arm/Kconfig | 1 + 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/hw/arm/musicpal.c b/hw/arm/musicpal.c index 8b58b66f263..7d1f2f3fb3f 100644 --- a/hw/arm/musicpal.c +++ b/hw/arm/musicpal.c @@ -30,6 +30,7 @@ #include "hw/irq.h" #include "hw/or-irq.h" #include "hw/audio/wm8750.h" +#include "hw/misc/aliased_region.h" #include "sysemu/block-backend.h" #include "sysemu/runstate.h" #include "sysemu/dma.h" @@ -1656,7 +1657,7 @@ static void musicpal_init(MachineState *machine) qdev_prop_set_uint32(dev, "num-blocks", flash_size / sector_size); qdev_prop_set_uint32(dev, "sector-length", sector_size); qdev_prop_set_uint8(dev, "width", 2); /* 16-bit */ - qdev_prop_set_uint8(dev, "mappings", MP_FLASH_SIZE_MAX / flash_size); + qdev_prop_set_uint8(dev, "mappings", 0); qdev_prop_set_uint8(dev, "big-endian", 0); qdev_prop_set_uint16(dev, "id0", 0x00bf); qdev_prop_set_uint16(dev, "id1", 0x236d); @@ -1667,14 +1668,16 @@ static void musicpal_init(MachineState *machine) qdev_prop_set_string(dev, "name", "musicpal.flash"); sysbus_realize_and_unref(SYS_BUS_DEVICE(dev), &error_fatal); - sysbus_mmio_map(SYS_BUS_DEVICE(dev), 0, - 0x100000000ULL - MP_FLASH_SIZE_MAX); - /* * The original U-Boot accesses the flash at 0xFE000000 instead of * 0xFF800000 (if there is 8 MB flash). So remap flash access if the * image is smaller than 32 MB. */ + memory_region_add_subregion_aliased(get_system_memory(), + 0x100000000ULL - MP_FLASH_SIZE_MAX, + MP_FLASH_SIZE_MAX, + sysbus_mmio_get_region(SYS_BUS_DEVICE(dev), 0), + flash_size); } sysbus_create_simple(TYPE_MV88W8618_FLASHCFG, MP_FLASHCFG_BASE, NULL); diff --git a/hw/arm/Kconfig b/hw/arm/Kconfig index 8c37cf00da7..aa8553b3cd3 100644 --- a/hw/arm/Kconfig +++ b/hw/arm/Kconfig @@ -101,6 +101,7 @@ config MUSICPAL select MARVELL_88W8618 select PTIMER select PFLASH_CFI02 + select ALIASED_REGION select SERIAL select WM8750 From patchwork Fri Mar 26 00:27:22 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= X-Patchwork-Id: 1458564 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=nongnu.org (client-ip=209.51.188.17; helo=lists.gnu.org; envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org; receiver=) Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.a=rsa-sha256 header.s=20161025 header.b=XG7b71J6; dkim-atps=neutral Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 4F630Z2TZbz9sCD for ; Fri, 26 Mar 2021 11:35:26 +1100 (AEDT) Received: from localhost ([::1]:41940 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lPaRg-0000t6-C0 for incoming@patchwork.ozlabs.org; Thu, 25 Mar 2021 20:35:24 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:57738) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lPaKS-0002VP-Ry; Thu, 25 Mar 2021 20:27:56 -0400 Received: from mail-wr1-x430.google.com ([2a00:1450:4864:20::430]:39843) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1lPaKQ-00045i-1n; Thu, 25 Mar 2021 20:27:56 -0400 Received: by mail-wr1-x430.google.com with SMTP id e18so4021888wrt.6; Thu, 25 Mar 2021 17:27:52 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=sender:from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=FPkR6E5eYDSt/dTQyU/+Z12pNzndsaiabWlUEgFNTyo=; b=XG7b71J6Lu5jA5w+dCTkl2zhZguh7iKxEIeIOn3DUL4n1zI86Hn6x2aAc8exNt5jjd hGQn2/jPbN8OZbFpiPv0iOQhrBz2dqhJUUimQmfzjB9LU9eXlNGA/QhsjVd0LUTrt2e1 7AbJOBBY/IZrPtP8Za+jx3TOpM5ot51mYIcHM5NdOSTFqjCQHHlA1l1YGC9TIAvTJK7p 2ihJwDotxJmvGOaLeSCOMVveWpCIdBtkgrQZxV/ehos/Co/7pOdHRvEgTyS/tzBJZlis UnHD6YcKXbNmHItqMc22/ZavWI1CzjtgRR5XY1RGY4iE/Ifu3cCrR553QXCTnvn97hi3 QePQ== 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 :in-reply-to:references:mime-version:content-transfer-encoding; bh=FPkR6E5eYDSt/dTQyU/+Z12pNzndsaiabWlUEgFNTyo=; b=FP/bwebG3WYXUYJqmWBiYPBGX06t4NGPqjZGNvmzI+JLQRjpflQkvCypX8QlFdxt+h 6dW2u02jkPpmxkJUDgoCLq0Uv/2UD27VstNDdH7WzkK5Ds+WW+WaJseRAaYPGMX0ubWQ 7WrrEwwnL3zth2Ul5V/6YPh3LHxC4nlmVC+Tqbiu4780/z1BPOfFXBgEJkBoxFFyK0Th kwTfGzi0pvUA3LyEl707Woo9heX/YI0qSbhv4a1VxJwWtx05dvEx8bdBb3Hn9ZAQzRS3 qyhmixU5zcAzwpOSiAJErhYxc4uXTbgnNmdFzqHX2qMkBVJNYawt3CtUugRrLFMGSrIi NaEw== X-Gm-Message-State: AOAM532Zqfp6Ouo16XG5Vrhep/Nr9jCmdauMylbCQ9dIiCr6wv+Qq0Q5 5ywP7RY8X6YLVSVMzsKEsyVHvwnxp3sL6Q== X-Google-Smtp-Source: ABdhPJxIKwzLEE+6NFuEVQ8AZI9y5ldUO4TQzECKUGzoXG7wdLQccHU3sj1+XaT543vfeG3X8xs45w== X-Received: by 2002:a5d:56d0:: with SMTP id m16mr11631592wrw.355.1616718471500; Thu, 25 Mar 2021 17:27:51 -0700 (PDT) Received: from localhost.localdomain (17.red-88-21-201.staticip.rima-tde.net. [88.21.201.17]) by smtp.gmail.com with ESMTPSA id c6sm9121200wri.32.2021.03.25.17.27.50 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 25 Mar 2021 17:27:51 -0700 (PDT) From: =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= To: qemu-devel@nongnu.org Subject: [PATCH-for-6.1 04/10] hw/arm/digic: Open-code pflash_cfi02_register() call Date: Fri, 26 Mar 2021 01:27:22 +0100 Message-Id: <20210326002728.1069834-5-f4bug@amsat.org> X-Mailer: git-send-email 2.26.2 In-Reply-To: <20210326002728.1069834-1-f4bug@amsat.org> References: <20210326002728.1069834-1-f4bug@amsat.org> MIME-Version: 1.0 Received-SPF: pass client-ip=2a00:1450:4864:20::430; envelope-from=philippe.mathieu.daude@gmail.com; helo=mail-wr1-x430.google.com X-Spam_score_int: -14 X-Spam_score: -1.5 X-Spam_bar: - X-Spam_report: (-1.5 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FORGED_FROMDOMAIN=0.249, FREEMAIL_FROM=0.001, HEADER_FROM_DIFFERENT_DOMAINS=0.25, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=no autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Peter Maydell , Mark Cave-Ayland , Alistair Francis , Richard Henderson , =?utf-8?q?Philippe_Mathie?= =?utf-8?q?u-Daud=C3=A9?= , Laurent Vivier , qemu-arm@nongnu.org, qemu-ppc@nongnu.org, Antony Pavlov , "Edgar E. Iglesias" , David Gibson Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: "Qemu-devel" To be able to manually map the flash region on the main memory (in the next commit), first expand the pflash_cfi02_register in place. Signed-off-by: Philippe Mathieu-Daudé --- hw/arm/digic_boards.c | 27 +++++++++++++++++++++------ 1 file changed, 21 insertions(+), 6 deletions(-) diff --git a/hw/arm/digic_boards.c b/hw/arm/digic_boards.c index 6cdc1d83fca..fc4a671b2e1 100644 --- a/hw/arm/digic_boards.c +++ b/hw/arm/digic_boards.c @@ -31,6 +31,8 @@ #include "hw/boards.h" #include "exec/address-spaces.h" #include "qemu/error-report.h" +#include "hw/qdev-properties.h" +#include "hw/misc/aliased_region.h" #include "hw/arm/digic.h" #include "hw/block/flash.h" #include "hw/loader.h" @@ -120,12 +122,25 @@ static void digic4_add_k8p3215uqb_rom(DigicState *s, hwaddr addr, #define FLASH_K8P3215UQB_SIZE (4 * 1024 * 1024) #define FLASH_K8P3215UQB_SECTOR_SIZE (64 * 1024) - pflash_cfi02_register(addr, "pflash", FLASH_K8P3215UQB_SIZE, - NULL, FLASH_K8P3215UQB_SECTOR_SIZE, - DIGIC4_ROM_MAX_SIZE / FLASH_K8P3215UQB_SIZE, - 4, - 0x00EC, 0x007E, 0x0003, 0x0001, - 0x0555, 0x2aa, 0); + DeviceState *dev = qdev_new(TYPE_PFLASH_CFI02); + + qdev_prop_set_uint32(dev, "num-blocks", + FLASH_K8P3215UQB_SIZE / FLASH_K8P3215UQB_SECTOR_SIZE); + qdev_prop_set_uint32(dev, "sector-length", FLASH_K8P3215UQB_SECTOR_SIZE); + qdev_prop_set_uint8(dev, "width", 4); /* 32-bit */ + qdev_prop_set_uint8(dev, "mappings", + DIGIC4_ROM_MAX_SIZE / FLASH_K8P3215UQB_SIZE); + qdev_prop_set_uint8(dev, "big-endian", 0); + qdev_prop_set_uint16(dev, "id0", 0x00ec); + qdev_prop_set_uint16(dev, "id1", 0x007e); + qdev_prop_set_uint16(dev, "id2", 0x0003); + qdev_prop_set_uint16(dev, "id3", 0x0001); + qdev_prop_set_uint16(dev, "unlock-addr0", 0x0555); + qdev_prop_set_uint16(dev, "unlock-addr1", 0x2aa); + qdev_prop_set_string(dev, "name", "pflash"); + sysbus_realize_and_unref(SYS_BUS_DEVICE(dev), &error_fatal); + + sysbus_mmio_map(SYS_BUS_DEVICE(dev), 0, addr); digic_load_rom(s, addr, FLASH_K8P3215UQB_SIZE, filename); } From patchwork Fri Mar 26 00:27:23 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= X-Patchwork-Id: 1458566 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=nongnu.org (client-ip=209.51.188.17; helo=lists.gnu.org; envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org; receiver=) Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.a=rsa-sha256 header.s=20161025 header.b=U/dcfFBg; dkim-atps=neutral Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 4F632v3Kp9z9sCD for ; Fri, 26 Mar 2021 11:37:27 +1100 (AEDT) Received: from localhost ([::1]:50518 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lPaTd-0004Z8-GL for incoming@patchwork.ozlabs.org; Thu, 25 Mar 2021 20:37:25 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:57772) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lPaKW-0002g3-NS; Thu, 25 Mar 2021 20:28:00 -0400 Received: from mail-wr1-x435.google.com ([2a00:1450:4864:20::435]:43801) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1lPaKV-00049e-4J; Thu, 25 Mar 2021 20:28:00 -0400 Received: by mail-wr1-x435.google.com with SMTP id x7so3993326wrw.10; Thu, 25 Mar 2021 17:27:57 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=sender:from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=9vQI7A5hmQ3wSaUcxdAm+j6q3/KZqQAA4ivIYPpUB90=; b=U/dcfFBgWaAIgcCwfoiGO/eDt8K/1jMiXa/RXYJzdS9NYIL8P80pZrT0JSRSj1+vO4 luO7ybcX4WdAiV4opZZdQyrVX3bmYyjws4dChRjp/v5rv9JsdGon6h2rz++HL0EeZebA cvJ1l5b1gRd0qAGbDMJuyMBvxrQHMYltJT9Vz4BRJdLquze3iSXCD40JTYb/QRgHISmO rwIZqvc80ctdAkq4E3ExL33eEeS552pISMqNBNG/mpSE28B1MlRhfgNqGI/4CtvfJdDa LHD4mMlALpniwsZWsoMHsGaVOoR5KJfUtwEqbtPlWRtiUU7o3X0rBk1x1cyjU1M8GdUY /Hcg== 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 :in-reply-to:references:mime-version:content-transfer-encoding; bh=9vQI7A5hmQ3wSaUcxdAm+j6q3/KZqQAA4ivIYPpUB90=; b=W5veSU2UW1MlB4mVRXKbe1chsttRszP1n6hctcUnwJdcHWmRj9Tp+0SpZ8z/c3OW1f kBFVOD+pwU/4TfXAEnTM+ZKc1C283qOTErioKYEaW9nZjExo6tYhyGU2nln+x7jp/RoD 2bj+FEmWRXXIUhpa8t2Xc92kBxtaRd5vijzuQnUAnoFtErnQKYKZwP9snolEaRf7seGd /QUBRdF6fSONwrn/hX7OwGR1kh6vwXcscbkoUJOqUWeBncOC82GJG7EMGHQ+Olb4HHiz cm5Y4KuaTS2VJRJ3SdJHBmcNJU0wBXyBheYUQGxNbNZo75tiV/eUuuV3/ML4G1GlcAT4 g2eg== X-Gm-Message-State: AOAM533ExgZNB4+zZ80TM9nFUG3QBvp+MmWBYj9TNoKHd2pQF0nYwqT1 Qwpzn1gpYd2iJ6rxEtruxKVVXFCBz+ooug== X-Google-Smtp-Source: ABdhPJzJyn8qA/gDC2LjpGKi6r8FHjnf2MA7vcXj4XM4GYzPYEWOP4ddLgBme7pftkweiiKL7l4CFw== X-Received: by 2002:a05:6000:1868:: with SMTP id d8mr11705878wri.301.1616718476546; Thu, 25 Mar 2021 17:27:56 -0700 (PDT) Received: from localhost.localdomain (17.red-88-21-201.staticip.rima-tde.net. [88.21.201.17]) by smtp.gmail.com with ESMTPSA id e17sm9844458wra.65.2021.03.25.17.27.55 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 25 Mar 2021 17:27:56 -0700 (PDT) From: =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= To: qemu-devel@nongnu.org Subject: [RFC PATCH-for-6.1 05/10] hw/arm/digic: Map flash using memory_region_add_subregion_aliased() Date: Fri, 26 Mar 2021 01:27:23 +0100 Message-Id: <20210326002728.1069834-6-f4bug@amsat.org> X-Mailer: git-send-email 2.26.2 In-Reply-To: <20210326002728.1069834-1-f4bug@amsat.org> References: <20210326002728.1069834-1-f4bug@amsat.org> MIME-Version: 1.0 Received-SPF: pass client-ip=2a00:1450:4864:20::435; envelope-from=philippe.mathieu.daude@gmail.com; helo=mail-wr1-x435.google.com X-Spam_score_int: -14 X-Spam_score: -1.5 X-Spam_bar: - X-Spam_report: (-1.5 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FORGED_FROMDOMAIN=0.249, FREEMAIL_FROM=0.001, HEADER_FROM_DIFFERENT_DOMAINS=0.25, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=no autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Peter Maydell , Mark Cave-Ayland , Alistair Francis , Richard Henderson , =?utf-8?q?Philippe_Mathie?= =?utf-8?q?u-Daud=C3=A9?= , Laurent Vivier , qemu-arm@nongnu.org, qemu-ppc@nongnu.org, Antony Pavlov , "Edgar E. Iglesias" , David Gibson Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: "Qemu-devel" Instead of using a device specific feature for mapping the flash memory multiple times over a wider region, use the generic memory_region_add_subregion_aliased() helper. There is no change in the memory layout. * before: $ qemu-system-arm -M canon-a1100 -S -monitor stdio QEMU 5.2.90 monitor - type 'help' for more information (qemu) info mtree address-space: memory 0000000000000000-ffffffffffffffff (prio 0, i/o): system 0000000000000000-0000000003ffffff (prio 0, ram): ram 00000000c0210000-00000000c02100ff (prio 0, i/o): digic-timer 00000000c0210100-00000000c02101ff (prio 0, i/o): digic-timer 00000000c0210200-00000000c02102ff (prio 0, i/o): digic-timer 00000000c0800000-00000000c0800017 (prio 0, i/o): digic-uart 00000000f8000000-00000000ffffffff (prio 0, i/o): pflash 00000000f8000000-00000000f83fffff (prio 0, romd): alias pflash-alias @pflash 0000000000000000-00000000003fffff 00000000f8400000-00000000f87fffff (prio 0, romd): alias pflash-alias @pflash 0000000000000000-00000000003fffff 00000000f8800000-00000000f8bfffff (prio 0, romd): alias pflash-alias @pflash 0000000000000000-00000000003fffff ... 00000000ff400000-00000000ff7fffff (prio 0, romd): alias pflash-alias @pflash 0000000000000000-00000000003fffff 00000000ff800000-00000000ffbfffff (prio 0, romd): alias pflash-alias @pflash 0000000000000000-00000000003fffff 00000000ffc00000-00000000ffffffff (prio 0, romd): alias pflash-alias @pflash 0000000000000000-00000000003fffff * after: (qemu) info mtree address-space: memory 0000000000000000-ffffffffffffffff (prio 0, i/o): system 0000000000000000-0000000003ffffff (prio 0, ram): ram 00000000c0210000-00000000c02100ff (prio 0, i/o): digic-timer 00000000c0210100-00000000c02101ff (prio 0, i/o): digic-timer 00000000c0210200-00000000c02102ff (prio 0, i/o): digic-timer 00000000c0800000-00000000c0800017 (prio 0, i/o): digic-uart 00000000f8000000-00000000ffffffff (prio 0, i/o): masked pflash [span of 4 MiB] 00000000f8000000-00000000f83fffff (prio 0, romd): alias pflash [#0/32] @pflash 0000000000000000-00000000003fffff 00000000f8400000-00000000f87fffff (prio 0, romd): alias pflash [#1/32] @pflash 0000000000000000-00000000003fffff 00000000f8800000-00000000f8bfffff (prio 0, romd): alias pflash [#2/32] @pflash 0000000000000000-00000000003fffff ... 00000000ff400000-00000000ff7fffff (prio 0, romd): alias pflash [#29/32] @pflash 0000000000000000-00000000003fffff 00000000ff800000-00000000ffbfffff (prio 0, romd): alias pflash [#30/32] @pflash 0000000000000000-00000000003fffff 00000000ffc00000-00000000ffffffff (prio 0, romd): alias pflash [#31/32] @pflash 0000000000000000-00000000003fffff Signed-off-by: Philippe Mathieu-Daudé --- hw/arm/digic_boards.c | 8 +++++--- hw/arm/Kconfig | 1 + 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/hw/arm/digic_boards.c b/hw/arm/digic_boards.c index fc4a671b2e1..293402b1240 100644 --- a/hw/arm/digic_boards.c +++ b/hw/arm/digic_boards.c @@ -128,8 +128,7 @@ static void digic4_add_k8p3215uqb_rom(DigicState *s, hwaddr addr, FLASH_K8P3215UQB_SIZE / FLASH_K8P3215UQB_SECTOR_SIZE); qdev_prop_set_uint32(dev, "sector-length", FLASH_K8P3215UQB_SECTOR_SIZE); qdev_prop_set_uint8(dev, "width", 4); /* 32-bit */ - qdev_prop_set_uint8(dev, "mappings", - DIGIC4_ROM_MAX_SIZE / FLASH_K8P3215UQB_SIZE); + qdev_prop_set_uint8(dev, "mappings", 0); qdev_prop_set_uint8(dev, "big-endian", 0); qdev_prop_set_uint16(dev, "id0", 0x00ec); qdev_prop_set_uint16(dev, "id1", 0x007e); @@ -140,7 +139,10 @@ static void digic4_add_k8p3215uqb_rom(DigicState *s, hwaddr addr, qdev_prop_set_string(dev, "name", "pflash"); sysbus_realize_and_unref(SYS_BUS_DEVICE(dev), &error_fatal); - sysbus_mmio_map(SYS_BUS_DEVICE(dev), 0, addr); + memory_region_add_subregion_aliased(get_system_memory(), + addr, DIGIC4_ROM_MAX_SIZE, + sysbus_mmio_get_region(SYS_BUS_DEVICE(dev), 0), + FLASH_K8P3215UQB_SIZE); digic_load_rom(s, addr, FLASH_K8P3215UQB_SIZE, filename); } diff --git a/hw/arm/Kconfig b/hw/arm/Kconfig index aa8553b3cd3..1a7b9724d6c 100644 --- a/hw/arm/Kconfig +++ b/hw/arm/Kconfig @@ -42,6 +42,7 @@ config DIGIC bool select PTIMER select PFLASH_CFI02 + select ALIASED_REGION config EXYNOS4 bool From patchwork Fri Mar 26 00:27:24 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= X-Patchwork-Id: 1458572 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=nongnu.org (client-ip=209.51.188.17; helo=lists.gnu.org; envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org; receiver=) Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.a=rsa-sha256 header.s=20161025 header.b=QavHjpPU; dkim-atps=neutral Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 4F634l4wBXz9sCD for ; Fri, 26 Mar 2021 11:39:03 +1100 (AEDT) Received: from localhost ([::1]:54924 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lPaVB-0006Q0-N0 for incoming@patchwork.ozlabs.org; Thu, 25 Mar 2021 20:39:01 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:57804) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lPaKc-0002n3-8f; Thu, 25 Mar 2021 20:28:06 -0400 Received: from mail-wm1-x329.google.com ([2a00:1450:4864:20::329]:36771) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1lPaKa-0004Bb-Mg; Thu, 25 Mar 2021 20:28:05 -0400 Received: by mail-wm1-x329.google.com with SMTP id j20-20020a05600c1914b029010f31e15a7fso4035332wmq.1; Thu, 25 Mar 2021 17:28:02 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=sender:from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=dJbcGY6sOvOVraPquf/gluBsf0D+iYUyhVli41P2iL8=; b=QavHjpPUU/2FTrNGn+BNIYCIvSckEOAjdO1WvSBeaip7H1mVUFLLisbh1i/Z0/73gP 3GfhCvlwYq1zpN5UtUW2Cvc8Bo4R+FbIVaconwCJZYTkfUJRkhFfXz41v60Aaopnh+0A wKpcAkarUjmjvn+uP4OExdtLGJ+iaaB0j69Qx3JnFFGP38SGGWZu22Wvqhp+msEnxOOz 4XT/3m/wChvdP3fYiML2p3JHQoOgie3VeqcSJOcA5gk9vHCvsfj+2qxFVj2jtVtDbX7g jd34gix/Q+at6nXkHgrV90bQ4ZCHjSRYEDG4lvk5HwD8VpRV+oVNc7MXKkaxje2ZNxka t8Eg== 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 :in-reply-to:references:mime-version:content-transfer-encoding; bh=dJbcGY6sOvOVraPquf/gluBsf0D+iYUyhVli41P2iL8=; b=geRLiHGzu4OIh/hvmB5KKGjUBnIPsnC2GzPqij3tZxHmiyBWGUpQuGMEthgtrI2IOP yYCV0h0hOJl+7ar9rFyV3+AnNEJQP+zpDPMpwrFwWu1YseFQU+hvhoiipJjDGsJj0cva O0FATam3hohFAHc82fLurAhgRJkny//Q3n7ZF29YYQRW0ApLp3I9JTQac5H/PbYB4Ms3 QcRVmGne3ow+PJk6j5jQRaVH6D3VlO18b1tDhz8PbzrPRZf7aKNWGFe/Gf1EpqOQf0GB oKjtzcJEhQexFDHe4uu44EGa0gReCRTNGg+c/pqllf2FHPb65DcKhzEiPO02krfqAgTw b2vQ== X-Gm-Message-State: AOAM532QLeTGvhGIpsv+Ijzrl+bbgF/MWV2FyGZwQOV1WCLfrp3J1D+G k9uvVESmTIxZMir5ltRiL32zsegbZlUT0A== X-Google-Smtp-Source: ABdhPJzAxyJzBhSmyfeQ71RrGp7Fb6STCrZIx7mGw3rdXekioUzmFk44J8ZOW7GI0HCYiSPxwUd1NQ== X-Received: by 2002:a1c:e341:: with SMTP id a62mr10654555wmh.152.1616718481720; Thu, 25 Mar 2021 17:28:01 -0700 (PDT) Received: from localhost.localdomain (17.red-88-21-201.staticip.rima-tde.net. [88.21.201.17]) by smtp.gmail.com with ESMTPSA id a13sm9524931wrp.31.2021.03.25.17.28.00 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 25 Mar 2021 17:28:01 -0700 (PDT) From: =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= To: qemu-devel@nongnu.org Subject: [PATCH-for-6.1 06/10] hw/block/pflash_cfi02: Remove pflash_setup_mappings() Date: Fri, 26 Mar 2021 01:27:24 +0100 Message-Id: <20210326002728.1069834-7-f4bug@amsat.org> X-Mailer: git-send-email 2.26.2 In-Reply-To: <20210326002728.1069834-1-f4bug@amsat.org> References: <20210326002728.1069834-1-f4bug@amsat.org> MIME-Version: 1.0 Received-SPF: pass client-ip=2a00:1450:4864:20::329; envelope-from=philippe.mathieu.daude@gmail.com; helo=mail-wm1-x329.google.com X-Spam_score_int: -14 X-Spam_score: -1.5 X-Spam_bar: - X-Spam_report: (-1.5 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FORGED_FROMDOMAIN=0.249, FREEMAIL_FROM=0.001, HEADER_FROM_DIFFERENT_DOMAINS=0.25, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=no autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Kevin Wolf , Peter Maydell , "open list:Block layer core" , Mark Cave-Ayland , Alistair Francis , Richard Henderson , =?utf-8?q?Philippe_Mathie?= =?utf-8?q?u-Daud=C3=A9?= , Laurent Vivier , qemu-arm@nongnu.org, qemu-ppc@nongnu.org, "Edgar E. Iglesias" , Max Reitz , =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= , David Gibson Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: "Qemu-devel" All boards calling pflash_cfi02_register() use nb_mappings=1, which does not do any mapping: $ git grep -wl pflash_cfi02_register hw/ hw/arm/xilinx_zynq.c hw/block/pflash_cfi02.c hw/lm32/lm32_boards.c hw/ppc/ppc405_boards.c hw/sh4/r2d.c We can remove this now unneeded code. Signed-off-by: Philippe Mathieu-Daudé Reviewed-by: David Gibson --- hw/block/pflash_cfi02.c | 35 ++--------------------------------- 1 file changed, 2 insertions(+), 33 deletions(-) diff --git a/hw/block/pflash_cfi02.c b/hw/block/pflash_cfi02.c index 02c514fb6e0..6f4b3e3c3fe 100644 --- a/hw/block/pflash_cfi02.c +++ b/hw/block/pflash_cfi02.c @@ -75,7 +75,6 @@ struct PFlashCFI02 { uint32_t nb_blocs[PFLASH_MAX_ERASE_REGIONS]; uint32_t sector_len[PFLASH_MAX_ERASE_REGIONS]; uint32_t chip_len; - uint8_t mappings; uint8_t width; uint8_t be; int wcycle; /* if 0, the flash is read normally */ @@ -92,13 +91,6 @@ struct PFlashCFI02 { uint16_t unlock_addr1; uint8_t cfi_table[0x4d]; QEMUTimer timer; - /* - * The device replicates the flash memory across its memory space. Emulate - * that by having a container (.mem) filled with an array of aliases - * (.mem_mappings) pointing to the flash memory (.orig_mem). - */ - MemoryRegion mem; - MemoryRegion *mem_mappings; /* array; one per mapping */ MemoryRegion orig_mem; bool rom_mode; int read_counter; /* used for lazy switch-back to rom mode */ @@ -158,23 +150,6 @@ static inline void toggle_dq2(PFlashCFI02 *pfl) pfl->status ^= 0x04; } -/* - * Set up replicated mappings of the same region. - */ -static void pflash_setup_mappings(PFlashCFI02 *pfl) -{ - unsigned i; - hwaddr size = memory_region_size(&pfl->orig_mem); - - memory_region_init(&pfl->mem, OBJECT(pfl), "pflash", pfl->mappings * size); - pfl->mem_mappings = g_new(MemoryRegion, pfl->mappings); - for (i = 0; i < pfl->mappings; ++i) { - memory_region_init_alias(&pfl->mem_mappings[i], OBJECT(pfl), - "pflash-alias", &pfl->orig_mem, 0, size); - memory_region_add_subregion(&pfl->mem, i * size, &pfl->mem_mappings[i]); - } -} - static void pflash_reset_state_machine(PFlashCFI02 *pfl) { trace_pflash_reset(pfl->name); @@ -917,12 +892,7 @@ static void pflash_cfi02_realize(DeviceState *dev, Error **errp) pfl->sector_erase_map = bitmap_new(pfl->total_sectors); pfl->rom_mode = true; - if (pfl->mappings > 1) { - pflash_setup_mappings(pfl); - sysbus_init_mmio(SYS_BUS_DEVICE(dev), &pfl->mem); - } else { - sysbus_init_mmio(SYS_BUS_DEVICE(dev), &pfl->orig_mem); - } + sysbus_init_mmio(SYS_BUS_DEVICE(dev), &pfl->orig_mem); timer_init_ns(&pfl->timer, QEMU_CLOCK_VIRTUAL, pflash_timer, pfl); pfl->status = 0; @@ -950,7 +920,6 @@ static Property pflash_cfi02_properties[] = { DEFINE_PROP_UINT32("num-blocks3", PFlashCFI02, nb_blocs[3], 0), DEFINE_PROP_UINT32("sector-length3", PFlashCFI02, sector_len[3], 0), DEFINE_PROP_UINT8("width", PFlashCFI02, width, 0), - DEFINE_PROP_UINT8("mappings", PFlashCFI02, mappings, 0), DEFINE_PROP_UINT8("big-endian", PFlashCFI02, be, 0), DEFINE_PROP_UINT16("id0", PFlashCFI02, ident0, 0), DEFINE_PROP_UINT16("id1", PFlashCFI02, ident1, 0), @@ -1008,6 +977,7 @@ PFlashCFI02 *pflash_cfi02_register(hwaddr base, { DeviceState *dev = qdev_new(TYPE_PFLASH_CFI02); + assert(nb_mappings <= 1); if (blk) { qdev_prop_set_drive(dev, "drive", blk); } @@ -1015,7 +985,6 @@ PFlashCFI02 *pflash_cfi02_register(hwaddr base, qdev_prop_set_uint32(dev, "num-blocks", size / sector_len); qdev_prop_set_uint32(dev, "sector-length", sector_len); qdev_prop_set_uint8(dev, "width", width); - qdev_prop_set_uint8(dev, "mappings", nb_mappings); qdev_prop_set_uint8(dev, "big-endian", !!be); qdev_prop_set_uint16(dev, "id0", id0); qdev_prop_set_uint16(dev, "id1", id1); From patchwork Fri Mar 26 00:27:25 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= X-Patchwork-Id: 1458562 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=nongnu.org (client-ip=209.51.188.17; helo=lists.gnu.org; envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org; receiver=) Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.a=rsa-sha256 header.s=20161025 header.b=qWF7s3vr; dkim-atps=neutral Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 4F62zD6Z9jz9sCD for ; Fri, 26 Mar 2021 11:34:16 +1100 (AEDT) Received: from localhost ([::1]:37944 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lPaQY-0007ax-UK for incoming@patchwork.ozlabs.org; Thu, 25 Mar 2021 20:34:14 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:57818) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lPaKh-0002oE-L9; Thu, 25 Mar 2021 20:28:19 -0400 Received: from mail-wr1-x42b.google.com ([2a00:1450:4864:20::42b]:33401) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1lPaKf-0004FA-Ua; Thu, 25 Mar 2021 20:28:11 -0400 Received: by mail-wr1-x42b.google.com with SMTP id o16so4072180wrn.0; Thu, 25 Mar 2021 17:28:08 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=sender:from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=nDWnefwEc2MavpEPfUetVUP5VldhKkTrnJaHJ9vDFJg=; b=qWF7s3vr6tMbXqm7PL121kfpJIY8tLAD0lQs1XkGxpQSsqetG8+7mYnujU6/vtjlZ3 xkEA18Dfj7wNUC7PPAYJVjG7JlRl8l+QikwyDBd7nUHWj6yJjCv+NvkFyw64vWdhLVje DI7/sRKj4UFmH8Ye7vGZBO+k9oiwNLt6ze1k0Nc/I1v15h+HLy20NHLeTKIwCpkHKfhD QMZqo+WPyE9kwZPTaiN4OrLLttIKwEs+7MPKJz3NnYA3mUCvopedhIRNNCo3yI3u7hYs BjxDQfMJ5sFTlAJlBxEyRnEQLqNDQwrwbE4o/xl6Otw9YJkx0dTfLpjauJXrAmtqdQmJ Ju+g== 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 :in-reply-to:references:mime-version:content-transfer-encoding; bh=nDWnefwEc2MavpEPfUetVUP5VldhKkTrnJaHJ9vDFJg=; b=hDLVZtS9Ec5so84JkCjPD3TwkfCX/IZRCCyXLOb/6AyCsJ4oeXGP9twO4P58iedMKA QCM7R6td1O+k8PzgNYAYdNEvlWwaojcBCEO88RbUfSObW5oMegsvK83NVROOeg4ZLLG0 8oM177oGAslIfOK1ZHwKon0RWCZCM1Ge3fT5BO+r2qLFkP1KdQ+XFpSQKipq6/LRs9no Fm/mE0FSB7RARDs2YR7Mqd98T/L84WGusPSmRbXJbHMKCV3h8ZuquuWmh0MavBKtgS36 +6qujSBIqKt1A9FYSfrbjxvBrvf7go8aqBRosM2/rGk9iQENRabp+J0Rx2O17T6JPOAs i7BA== X-Gm-Message-State: AOAM533xVxoaXSh/Y2ukT0MmTwaAhCGy7KWw8Xi9ekw1tBRTQEYuURME y9GATlIzwYcjj/B4+LeV+brPqOIhKdvT6w== X-Google-Smtp-Source: ABdhPJxGX774X1QY6/TgwL3qC1ihPzYVBr6n4pJ2MKpCiZAmwvKQNGUbaNZUHgO6BcWW2fw/ALzzAQ== X-Received: by 2002:adf:8b45:: with SMTP id v5mr11436323wra.398.1616718487086; Thu, 25 Mar 2021 17:28:07 -0700 (PDT) Received: from localhost.localdomain (17.red-88-21-201.staticip.rima-tde.net. [88.21.201.17]) by smtp.gmail.com with ESMTPSA id y1sm7976686wmq.29.2021.03.25.17.28.05 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 25 Mar 2021 17:28:06 -0700 (PDT) From: =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= To: qemu-devel@nongnu.org Subject: [PATCH-for-6.1 07/10] hw/block/pflash_cfi02: Simplify pflash_cfi02_register() prototype Date: Fri, 26 Mar 2021 01:27:25 +0100 Message-Id: <20210326002728.1069834-8-f4bug@amsat.org> X-Mailer: git-send-email 2.26.2 In-Reply-To: <20210326002728.1069834-1-f4bug@amsat.org> References: <20210326002728.1069834-1-f4bug@amsat.org> MIME-Version: 1.0 Received-SPF: pass client-ip=2a00:1450:4864:20::42b; envelope-from=philippe.mathieu.daude@gmail.com; helo=mail-wr1-x42b.google.com X-Spam_score_int: -14 X-Spam_score: -1.5 X-Spam_bar: - X-Spam_report: (-1.5 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FORGED_FROMDOMAIN=0.249, FREEMAIL_FROM=0.001, HEADER_FROM_DIFFERENT_DOMAINS=0.25, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=no autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Kevin Wolf , Peter Maydell , Magnus Damm , Jan Kiszka , "open list:Block layer core" , Yoshinori Sato , Mark Cave-Ayland , Alistair Francis , Richard Henderson , =?utf-8?q?Philippe_Mathie?= =?utf-8?q?u-Daud=C3=A9?= , Laurent Vivier , Michael Walle , qemu-arm@nongnu.org, qemu-ppc@nongnu.org, Antony Pavlov , "Edgar E. Iglesias" , Greg Kurz , Max Reitz , =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= , David Gibson Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: "Qemu-devel" The previous commit removed the mapping code from TYPE_PFLASH_CFI02. pflash_cfi02_register() doesn't use the 'nb_mappings' argument anymore. Simply remove it to simplify. Signed-off-by: Philippe Mathieu-Daudé --- include/hw/block/flash.h | 1 - hw/arm/digic_boards.c | 1 - hw/arm/musicpal.c | 1 - hw/arm/xilinx_zynq.c | 2 +- hw/block/pflash_cfi02.c | 3 +-- hw/lm32/lm32_boards.c | 4 ++-- hw/ppc/ppc405_boards.c | 6 +++--- hw/sh4/r2d.c | 2 +- 8 files changed, 8 insertions(+), 12 deletions(-) diff --git a/include/hw/block/flash.h b/include/hw/block/flash.h index 7dde0adcee7..0e5dd818a9d 100644 --- a/include/hw/block/flash.h +++ b/include/hw/block/flash.h @@ -36,7 +36,6 @@ PFlashCFI02 *pflash_cfi02_register(hwaddr base, hwaddr size, BlockBackend *blk, uint32_t sector_len, - int nb_mappings, int width, uint16_t id0, uint16_t id1, uint16_t id2, uint16_t id3, diff --git a/hw/arm/digic_boards.c b/hw/arm/digic_boards.c index 293402b1240..eb694c70d4c 100644 --- a/hw/arm/digic_boards.c +++ b/hw/arm/digic_boards.c @@ -128,7 +128,6 @@ static void digic4_add_k8p3215uqb_rom(DigicState *s, hwaddr addr, FLASH_K8P3215UQB_SIZE / FLASH_K8P3215UQB_SECTOR_SIZE); qdev_prop_set_uint32(dev, "sector-length", FLASH_K8P3215UQB_SECTOR_SIZE); qdev_prop_set_uint8(dev, "width", 4); /* 32-bit */ - qdev_prop_set_uint8(dev, "mappings", 0); qdev_prop_set_uint8(dev, "big-endian", 0); qdev_prop_set_uint16(dev, "id0", 0x00ec); qdev_prop_set_uint16(dev, "id1", 0x007e); diff --git a/hw/arm/musicpal.c b/hw/arm/musicpal.c index 7d1f2f3fb3f..e882e11df36 100644 --- a/hw/arm/musicpal.c +++ b/hw/arm/musicpal.c @@ -1657,7 +1657,6 @@ static void musicpal_init(MachineState *machine) qdev_prop_set_uint32(dev, "num-blocks", flash_size / sector_size); qdev_prop_set_uint32(dev, "sector-length", sector_size); qdev_prop_set_uint8(dev, "width", 2); /* 16-bit */ - qdev_prop_set_uint8(dev, "mappings", 0); qdev_prop_set_uint8(dev, "big-endian", 0); qdev_prop_set_uint16(dev, "id0", 0x00bf); qdev_prop_set_uint16(dev, "id1", 0x236d); diff --git a/hw/arm/xilinx_zynq.c b/hw/arm/xilinx_zynq.c index 8db6cfd47f5..d12b00e7648 100644 --- a/hw/arm/xilinx_zynq.c +++ b/hw/arm/xilinx_zynq.c @@ -220,7 +220,7 @@ static void zynq_init(MachineState *machine) pflash_cfi02_register(0xe2000000, "zynq.pflash", FLASH_SIZE, dinfo ? blk_by_legacy_dinfo(dinfo) : NULL, FLASH_SECTOR_SIZE, 1, - 1, 0x0066, 0x0022, 0x0000, 0x0000, 0x0555, 0x2aa, + 0x0066, 0x0022, 0x0000, 0x0000, 0x0555, 0x2aa, 0); /* Create the main clock source, and feed slcr with it */ diff --git a/hw/block/pflash_cfi02.c b/hw/block/pflash_cfi02.c index 6f4b3e3c3fe..2b412402fac 100644 --- a/hw/block/pflash_cfi02.c +++ b/hw/block/pflash_cfi02.c @@ -968,7 +968,7 @@ PFlashCFI02 *pflash_cfi02_register(hwaddr base, hwaddr size, BlockBackend *blk, uint32_t sector_len, - int nb_mappings, int width, + int width, uint16_t id0, uint16_t id1, uint16_t id2, uint16_t id3, uint16_t unlock_addr0, @@ -977,7 +977,6 @@ PFlashCFI02 *pflash_cfi02_register(hwaddr base, { DeviceState *dev = qdev_new(TYPE_PFLASH_CFI02); - assert(nb_mappings <= 1); if (blk) { qdev_prop_set_drive(dev, "drive", blk); } diff --git a/hw/lm32/lm32_boards.c b/hw/lm32/lm32_boards.c index b5d97dd53ed..96877ba7cfb 100644 --- a/hw/lm32/lm32_boards.c +++ b/hw/lm32/lm32_boards.c @@ -121,7 +121,7 @@ static void lm32_evr_init(MachineState *machine) pflash_cfi02_register(flash_base, "lm32_evr.flash", flash_size, dinfo ? blk_by_legacy_dinfo(dinfo) : NULL, flash_sector_size, - 1, 2, 0x01, 0x7e, 0x43, 0x00, 0x555, 0x2aa, 1); + 2, 0x01, 0x7e, 0x43, 0x00, 0x555, 0x2aa, 1); /* create irq lines */ env->pic_state = lm32_pic_init(qemu_allocate_irq(cpu_irq_handler, cpu, 0)); @@ -218,7 +218,7 @@ static void lm32_uclinux_init(MachineState *machine) pflash_cfi02_register(flash_base, "lm32_uclinux.flash", flash_size, dinfo ? blk_by_legacy_dinfo(dinfo) : NULL, flash_sector_size, - 1, 2, 0x01, 0x7e, 0x43, 0x00, 0x555, 0x2aa, 1); + 2, 0x01, 0x7e, 0x43, 0x00, 0x555, 0x2aa, 1); /* create irq lines */ env->pic_state = lm32_pic_init(qemu_allocate_irq(cpu_irq_handler, env, 0)); diff --git a/hw/ppc/ppc405_boards.c b/hw/ppc/ppc405_boards.c index 8f77887fb18..2503e033497 100644 --- a/hw/ppc/ppc405_boards.c +++ b/hw/ppc/ppc405_boards.c @@ -198,7 +198,7 @@ static void ref405ep_init(MachineState *machine) pflash_cfi02_register((uint32_t)(-bios_size), "ef405ep.bios", bios_size, blk_by_legacy_dinfo(dinfo), - 64 * KiB, 1, + 64 * KiB, 2, 0x0001, 0x22DA, 0x0000, 0x0000, 0x555, 0x2AA, 1); } else @@ -469,7 +469,7 @@ static void taihu_405ep_init(MachineState *machine) pflash_cfi02_register(0xFFE00000, "taihu_405ep.bios", bios_size, blk_by_legacy_dinfo(dinfo), - 64 * KiB, 1, + 64 * KiB, 4, 0x0001, 0x22DA, 0x0000, 0x0000, 0x555, 0x2AA, 1); fl_idx++; @@ -502,7 +502,7 @@ static void taihu_405ep_init(MachineState *machine) bios_size = 32 * MiB; pflash_cfi02_register(0xfc000000, "taihu_405ep.flash", bios_size, blk_by_legacy_dinfo(dinfo), - 64 * KiB, 1, + 64 * KiB, 4, 0x0001, 0x22DA, 0x0000, 0x0000, 0x555, 0x2AA, 1); fl_idx++; diff --git a/hw/sh4/r2d.c b/hw/sh4/r2d.c index 443820901d4..b7288dcba80 100644 --- a/hw/sh4/r2d.c +++ b/hw/sh4/r2d.c @@ -301,7 +301,7 @@ static void r2d_init(MachineState *machine) dinfo = drive_get(IF_PFLASH, 0, 0); pflash_cfi02_register(0x0, "r2d.flash", FLASH_SIZE, dinfo ? blk_by_legacy_dinfo(dinfo) : NULL, - 64 * KiB, 1, 2, 0x0001, 0x227e, 0x2220, 0x2200, + 64 * KiB, 2, 0x0001, 0x227e, 0x2220, 0x2200, 0x555, 0x2aa, 0); /* NIC: rtl8139 on-board, and 2 slots. */ From patchwork Fri Mar 26 00:27:26 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= X-Patchwork-Id: 1458565 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=nongnu.org (client-ip=209.51.188.17; helo=lists.gnu.org; envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org; receiver=) Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.a=rsa-sha256 header.s=20161025 header.b=O8+KG+/o; dkim-atps=neutral Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 4F631P2D5Yz9sCD for ; Fri, 26 Mar 2021 11:36:09 +1100 (AEDT) Received: from localhost ([::1]:45206 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lPaSN-0002FC-C2 for incoming@patchwork.ozlabs.org; Thu, 25 Mar 2021 20:36:07 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:57900) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lPaKw-0002or-GI; Thu, 25 Mar 2021 20:28:26 -0400 Received: from mail-wm1-x336.google.com ([2a00:1450:4864:20::336]:51866) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1lPaKp-0004Hq-R8; Thu, 25 Mar 2021 20:28:23 -0400 Received: by mail-wm1-x336.google.com with SMTP id p19so2119802wmq.1; Thu, 25 Mar 2021 17:28:13 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=sender:from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=OKDA4eVJdfRxYq1EfuTuqohDkKwpb3am+iFd4G3Hvr4=; b=O8+KG+/omyfE3MH1os+UijgTr/H3PK50FfNKFkjBALk6lmN9OPaXSGbEHO8OzF7pKu unDA/pp34Ts9CED9QY34UuHA3GIVmBEdHxsLxbht2imL0nbsecRFsU9Ec3AjMun7ouPR LMAsCnSI0inmmqD3evV3B7wS4NHrwnZmoEDN2v+0xMnVNYFgbw+cSHY04OwBn5M+4RoH SFxa+/WDTyZg2KEnBBie2EYvW7FmxAr+BsO5cRy5TVF4r+iYlNB+8r/m8Qt7EuENKijG GmjymdiQR4f813q7I4djwx68DYv5/CeMKNsKHmvwewG5AC/h4JOdZYB57e7FmxDl5ekF j7Ig== 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 :in-reply-to:references:mime-version:content-transfer-encoding; bh=OKDA4eVJdfRxYq1EfuTuqohDkKwpb3am+iFd4G3Hvr4=; b=F8ILx7UiEzpL39v7thRmK2CNojRjBc7wzwyBoeBzqahwcGkvrQYM6+C3R7BdBzGigL OKiEvzRLOxy9Vl99e560FV3gRMSgt0H35dR7ME2lcT0YWsiZfJJkRqIxeyHV/oweGmht US4ijGQnTDuFveU0leX4Sq9XHPgXwFIxeGTvfWTNSPFMs5SNEro5WKo+DjB4jRsf9o9N 0AjE5+cg7Hzj4azJkjup3/HgeZta/AVbK1GyCtvSSU5qcRX9DZuvEgG9vrLEw3RIRJxi nqXYrFwD5as16OfyHEBRNNwQv4gvxLUp4CNInt3wfUHsVGimHzwnLrKgbUZ3uB7O3wcl AE2w== X-Gm-Message-State: AOAM533FJWu0phlqgf9ySOWk7aYgG0Jhgy8LRo/vp2Y1GyNwiiknkRci 2G4pfVoVSIGrFO3vhqcjv9buzpnyRNo0AQ== X-Google-Smtp-Source: ABdhPJy1NXEfN2hkOHw1HkOWIl3+xRN70JpVZP9oEPisumT3Rs9PjqBFDq3uB88l1C8YmzpOK702fg== X-Received: by 2002:a1c:9a09:: with SMTP id c9mr10056005wme.172.1616718492267; Thu, 25 Mar 2021 17:28:12 -0700 (PDT) Received: from localhost.localdomain (17.red-88-21-201.staticip.rima-tde.net. [88.21.201.17]) by smtp.gmail.com with ESMTPSA id s20sm8211386wmj.36.2021.03.25.17.28.11 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 25 Mar 2021 17:28:11 -0700 (PDT) From: =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= To: qemu-devel@nongnu.org Subject: [RFC PATCH-for-6.1 08/10] hw/misc/aliased_region: Simplify aliased I/O regions Date: Fri, 26 Mar 2021 01:27:26 +0100 Message-Id: <20210326002728.1069834-9-f4bug@amsat.org> X-Mailer: git-send-email 2.26.2 In-Reply-To: <20210326002728.1069834-1-f4bug@amsat.org> References: <20210326002728.1069834-1-f4bug@amsat.org> MIME-Version: 1.0 Received-SPF: pass client-ip=2a00:1450:4864:20::336; envelope-from=philippe.mathieu.daude@gmail.com; helo=mail-wm1-x336.google.com X-Spam_score_int: -14 X-Spam_score: -1.5 X-Spam_bar: - X-Spam_report: (-1.5 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FORGED_FROMDOMAIN=0.249, FREEMAIL_FROM=0.001, HEADER_FROM_DIFFERENT_DOMAINS=0.25, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=no autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Peter Maydell , Mark Cave-Ayland , Alistair Francis , Richard Henderson , =?utf-8?q?Philippe_Mathie?= =?utf-8?q?u-Daud=C3=A9?= , Laurent Vivier , qemu-arm@nongnu.org, qemu-ppc@nongnu.org, "Edgar E. Iglesias" , David Gibson Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: "Qemu-devel" Currently a small I/O region aliased on a wide container creates many aliases. For example, a 8 bytes regions in a 4KiB container creates 512 aliases! As I/O goes via the slow path, we can optimize by using an I/O region which dispatch via an address space view of the aliased region. Signed-off-by: Philippe Mathieu-Daudé --- include/hw/misc/aliased_region.h | 6 +++- hw/misc/aliased_region.c | 56 ++++++++++++++++++++++++++++++-- 2 files changed, 59 insertions(+), 3 deletions(-) diff --git a/include/hw/misc/aliased_region.h b/include/hw/misc/aliased_region.h index 0ce0d5d1cef..30b54cf06b7 100644 --- a/include/hw/misc/aliased_region.h +++ b/include/hw/misc/aliased_region.h @@ -1,7 +1,7 @@ /* * Aliased memory regions * - * Copyright (c) 2018 Philippe Mathieu-Daudé + * Copyright (c) 2018, 2020 Philippe Mathieu-Daudé * * SPDX-License-Identifier: GPL-2.0-or-later */ @@ -25,6 +25,10 @@ struct AliasedRegionState { uint64_t span_size; MemoryRegion *mr; + struct { + AddressSpace as; + } io; + struct { size_t count; MemoryRegion *alias; diff --git a/hw/misc/aliased_region.c b/hw/misc/aliased_region.c index 8fcc63f2648..46b4412430a 100644 --- a/hw/misc/aliased_region.c +++ b/hw/misc/aliased_region.c @@ -1,7 +1,7 @@ /* * Aliased memory regions * - * Copyright (c) 2018 Philippe Mathieu-Daudé + * Copyright (c) 2018, 2020 Philippe Mathieu-Daudé * * SPDX-License-Identifier: GPL-2.0-or-later */ @@ -14,6 +14,50 @@ #include "hw/misc/aliased_region.h" #include "hw/qdev-properties.h" +static MemTxResult aliased_io_read(void *opaque, hwaddr offset, + uint64_t *data, unsigned size, + MemTxAttrs attrs) +{ + AliasedRegionState *s = ALIASED_REGION(opaque); + + return address_space_read(&s->io.as, offset, attrs, data, size); +} + +static MemTxResult aliased_io_write(void *opaque, hwaddr offset, + uint64_t data, unsigned size, + MemTxAttrs attrs) +{ + AliasedRegionState *s = ALIASED_REGION(opaque); + + return address_space_write(&s->io.as, offset, attrs, &data, size); +} + +static bool aliased_io_accepts(void *opaque, hwaddr offset, unsigned size, + bool is_write, MemTxAttrs attrs) +{ + AliasedRegionState *s = ALIASED_REGION(opaque); + + return address_space_access_valid(&s->io.as, offset, size, is_write, attrs); +} + +static const MemoryRegionOps aliased_io_ops = { + .read_with_attrs = aliased_io_read, + .write_with_attrs = aliased_io_write, + .impl.min_access_size = 1, + .impl.max_access_size = 8, + .valid.min_access_size = 1, + .valid.max_access_size = 8, + .valid.accepts = aliased_io_accepts, + .endianness = DEVICE_NATIVE_ENDIAN, +}; + +static void aliased_io_realize(AliasedRegionState *s, const char *mr_name) +{ + memory_region_init_io(&s->container, OBJECT(s), &aliased_io_ops, s, + mr_name, s->region_size); + address_space_init(&s->io.as, s->mr, memory_region_name(s->mr)); +} + static void aliased_mem_realize(AliasedRegionState *s, const char *mr_name) { uint64_t subregion_size; @@ -63,7 +107,15 @@ static void aliased_mr_realize(DeviceState *dev, Error **errp) span = size_to_str(s->span_size); name = g_strdup_printf("masked %s [span of %s]", memory_region_name(s->mr), span); - aliased_mem_realize(s, name); + + if (memory_region_is_ram(s->mr) + || memory_region_is_ram_device(s->mr) + || memory_region_is_romd(s->mr)) { + aliased_mem_realize(s, name); + } else { + /* I/O or container */ + aliased_io_realize(s, name); + } sysbus_init_mmio(SYS_BUS_DEVICE(s), &s->container); } From patchwork Fri Mar 26 00:27:27 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= X-Patchwork-Id: 1458563 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=nongnu.org (client-ip=209.51.188.17; helo=lists.gnu.org; envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org; receiver=) Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.a=rsa-sha256 header.s=20161025 header.b=aLBGIQyB; dkim-atps=neutral Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 4F62zR4bmwz9sCD for ; Fri, 26 Mar 2021 11:34:27 +1100 (AEDT) Received: from localhost ([::1]:38902 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lPaQj-00081K-ME for incoming@patchwork.ozlabs.org; Thu, 25 Mar 2021 20:34:25 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:57904) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lPaKw-0002ov-HN; Thu, 25 Mar 2021 20:28:26 -0400 Received: from mail-wm1-x331.google.com ([2a00:1450:4864:20::331]:35560) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1lPaKq-0004JY-55; Thu, 25 Mar 2021 20:28:24 -0400 Received: by mail-wm1-x331.google.com with SMTP id a132-20020a1c668a0000b029010f141fe7c2so4058973wmc.0; Thu, 25 Mar 2021 17:28:18 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=sender:from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=ZjHOHQ6FW9OLxHcp9ojcwWz0Qq5Kwhc+7VGNOsAq47o=; b=aLBGIQyBNFRm+22cuNQuAwX4oIXI2Tfptl+DmTXOCqiT81LTlC8vCs5ZYzBSKqG7RI it57i0q/sCXWcAAP62Z2T/yrXCwRSimZ7BOTMVRdQSniflCGppEX0y9INwjMOybgqFS7 hAWbv8vUSAXHQaCaaSx8Tecd5pxOf+nb/JZCfcquFk7jMzCrn5aU+AElkqsaWnLhHzQC WPn8e3vTICuj8MHt4Mya7h0tPxSLXZMR5/fO7APO8xCoR4DNSzGSPTEdMEaEnJ0hZuMz WrM6D9LUlXQx37gBZRMmrkF2T6F89nt30gbLEW7KlDtH0cMmDNR7zs+/QCR7Z+Z4DFAw kp/w== 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 :in-reply-to:references:mime-version:content-transfer-encoding; bh=ZjHOHQ6FW9OLxHcp9ojcwWz0Qq5Kwhc+7VGNOsAq47o=; b=ktdN25eOHN/964sTPmjxNIRxycadNt2gBUKVnBkk6Ys5gr8YBvj/40Oj1Eh0d2QS15 L5dww3+kO+UltRZOFiPFvBlL5EQXvy79tsthVtzoiYT1W7LdRNKFdSCIqb0//jyZyfdk qi69wdLu3rpFgKF1YJhalkA4KN1wx6wH8AmJNIISHk1NQPxx0lIlh2hl43B5ah+F1oeA Z6QM+LHJKFqbLiukLVk8le0v0lwxHEAifFnFj63rr5m3nNFyzHhmnxUNUCa4zdieE0j0 dY2RYyA/VG/NqE3k7k7dIz6l9WOUdf+xj54FwPDXNBipEji1HPQXLwEWQdbjRO/1L5jc AoEQ== X-Gm-Message-State: AOAM532yrskYEdPwrJDpq3vAw2hS8msy6nNvyK/NgTyTSk0jEhr1sbvU C5VN5KS2JwOPmgXAm7Z8Y5pKRJIgRnD/7A== X-Google-Smtp-Source: ABdhPJwoV5Hp8hbWmfYVBJtivaREd9dCiXrpe8vp/XnkXZA96gDS0sB6VTjt24fdnH2m3y6MBTjWjg== X-Received: by 2002:a7b:c047:: with SMTP id u7mr10379733wmc.98.1616718497222; Thu, 25 Mar 2021 17:28:17 -0700 (PDT) Received: from localhost.localdomain (17.red-88-21-201.staticip.rima-tde.net. [88.21.201.17]) by smtp.gmail.com with ESMTPSA id f22sm8015889wmc.33.2021.03.25.17.28.16 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 25 Mar 2021 17:28:16 -0700 (PDT) From: =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= To: qemu-devel@nongnu.org Subject: [PATCH-for-6.1 09/10] hw/m68k/q800: Add MacIO container Date: Fri, 26 Mar 2021 01:27:27 +0100 Message-Id: <20210326002728.1069834-10-f4bug@amsat.org> X-Mailer: git-send-email 2.26.2 In-Reply-To: <20210326002728.1069834-1-f4bug@amsat.org> References: <20210326002728.1069834-1-f4bug@amsat.org> MIME-Version: 1.0 Received-SPF: pass client-ip=2a00:1450:4864:20::331; envelope-from=philippe.mathieu.daude@gmail.com; helo=mail-wm1-x331.google.com X-Spam_score_int: -14 X-Spam_score: -1.5 X-Spam_bar: - X-Spam_report: (-1.5 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FORGED_FROMDOMAIN=0.249, FREEMAIL_FROM=0.001, HEADER_FROM_DIFFERENT_DOMAINS=0.25, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=no autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Peter Maydell , Mark Cave-Ayland , Alistair Francis , Richard Henderson , =?utf-8?q?Philippe_Mathie?= =?utf-8?q?u-Daud=C3=A9?= , Laurent Vivier , qemu-arm@nongnu.org, qemu-ppc@nongnu.org, "Edgar E. Iglesias" , David Gibson Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: "Qemu-devel" Instead of having devices mapped onto some main memory range, then having many aliases pointing to this memory range, add a container, map the devices onto it, and map aliases of the container onto the main memory. We gain a better visibility of the devices on the mac-io bus. - before: (qemu) info mtree address-space: memory 0000000000000000-ffffffffffffffff (prio 0, i/o): system 0000000000000000-0000000007ffffff (prio 0, ram): m68k_mac.ram 0000000040800000-00000000408fffff (prio 0, rom): m68k_mac.rom 0000000050000000-0000000050003fff (prio 0, i/o): mac-via 0000000050000000-0000000050001fff (prio 0, i/o): via1 0000000050002000-0000000050003fff (prio 0, i/o): via2 0000000050008000-0000000050008fff (prio 0, rom): dp8393x-prom 000000005000a000-000000005000a0ff (prio 0, i/o): dp8393x-regs 000000005000c020-000000005000c027 (prio 0, i/o): escc 0000000050010000-00000000500100ff (prio 0, i/o): esp-regs 0000000050010100-0000000050010103 (prio 0, i/o): esp-pdma 000000005001e000-000000005001ffff (prio 0, i/o): swim 0000000050040000-000000005007ffff (prio 0, i/o): alias mac_m68k.io[1] @system 0000000050000000-000000005003ffff 0000000050080000-00000000500bffff (prio 0, i/o): alias mac_m68k.io[2] @system 0000000050000000-000000005003ffff 00000000500c0000-00000000500fffff (prio 0, i/o): alias mac_m68k.io[3] @system 0000000050000000-000000005003ffff ... 0000000053f40000-0000000053f7ffff (prio 0, i/o): alias mac_m68k.io[253] @system 0000000050000000-000000005003ffff 0000000053f80000-0000000053fbffff (prio 0, i/o): alias mac_m68k.io[254] @system 0000000050000000-000000005003ffff 0000000053fc0000-0000000053ffffff (prio 0, i/o): alias mac_m68k.io[255] @system 0000000050000000-000000005003ffff 0000000060000000-00000000efffffff (prio 0, i/o): nubus-super-slots 00000000f0000000-00000000feffffff (prio 0, i/o): nubus-slots 00000000f9000000-00000000f9ffffff (prio 0, i/o): nubus-slot-9 00000000f9001000-00000000f9400fff (prio 0, ram): macfb-vram 00000000f9800000-00000000f9800fff (prio 0, i/o): macfb-ctrl 00000000f9ffffe8-00000000f9ffffeb (prio 0, i/o): nubus-slot-9-rom 00000000f9ffffec-00000000f9ffffff (prio 0, i/o): nubus-slot-9-format-block - after: address-space: memory 0000000000000000-0000000007ffffff (prio 0, ram): m68k_mac.ram 0000000040800000-00000000408fffff (prio 0, rom): m68k_mac.rom 0000000050000000-000000005003ffff (prio 0, i/o): alias mac_m68k.io[0] @mac-io 0000000000000000-000000000003ffff 0000000050040000-000000005007ffff (prio 0, i/o): alias mac_m68k.io[1] @mac-io 0000000000000000-000000000003ffff 0000000050080000-00000000500bffff (prio 0, i/o): alias mac_m68k.io[2] @mac-io 0000000000000000-000000000003ffff ... 0000000053f40000-0000000053f7ffff (prio 0, i/o): alias mac_m68k.io[253] @mac-io 0000000000000000-000000000003ffff 0000000053f80000-0000000053fbffff (prio 0, i/o): alias mac_m68k.io[254] @mac-io 0000000000000000-000000000003ffff 0000000053fc0000-0000000053ffffff (prio 0, i/o): alias mac_m68k.io[255] @mac-io 0000000000000000-000000000003ffff 0000000060000000-00000000efffffff (prio 0, i/o): nubus-super-slots 00000000f0000000-00000000feffffff (prio 0, i/o): nubus-slots 00000000f9000000-00000000f9ffffff (prio 0, i/o): nubus-slot-9 00000000f9001000-00000000f9400fff (prio 0, ram): macfb-vram 00000000f9800000-00000000f9800fff (prio 0, i/o): macfb-ctrl 00000000f9ffffe8-00000000f9ffffeb (prio 0, i/o): nubus-slot-9-rom 00000000f9ffffec-00000000f9ffffff (prio 0, i/o): nubus-slot-9-format-block memory-region: mac-io 0000000000000000-000000000003ffff (prio 0, i/o): mac-io 0000000000000000-0000000000003fff (prio 0, i/o): mac-via 0000000000000000-0000000000001fff (prio 0, i/o): via1 0000000000002000-0000000000003fff (prio 0, i/o): via2 0000000000008000-0000000000008fff (prio 0, rom): dp8393x-prom 000000000000a000-000000000000a0ff (prio 0, i/o): dp8393x-regs 000000000000c020-000000000000c027 (prio 0, i/o): escc 0000000000010000-00000000000100ff (prio 0, i/o): esp-regs 0000000000010100-0000000000010103 (prio 0, i/o): esp-pdma 000000000001e000-000000000001ffff (prio 0, i/o): swim Signed-off-by: Philippe Mathieu-Daudé --- hw/m68k/q800.c | 54 ++++++++++++++++++++++++++++++-------------------- 1 file changed, 33 insertions(+), 21 deletions(-) diff --git a/hw/m68k/q800.c b/hw/m68k/q800.c index 4d2e866eec7..8f14e677077 100644 --- a/hw/m68k/q800.c +++ b/hw/m68k/q800.c @@ -61,14 +61,14 @@ #define IO_SLICE 0x00040000 #define IO_SIZE 0x04000000 -#define VIA_BASE (IO_BASE + 0x00000) -#define SONIC_PROM_BASE (IO_BASE + 0x08000) -#define SONIC_BASE (IO_BASE + 0x0a000) -#define SCC_BASE (IO_BASE + 0x0c020) -#define ESP_BASE (IO_BASE + 0x10000) -#define ESP_PDMA (IO_BASE + 0x10100) -#define ASC_BASE (IO_BASE + 0x14000) -#define SWIM_BASE (IO_BASE + 0x1E000) +#define VIA_OFFSET (0x00000) +#define SONIC_PROM_OFFSET (0x08000) +#define SONIC_IO_OFFSET (0x0a000) +#define SCC_OFFSET (0x0c020) +#define ESP_OFFSET (0x10000) +#define ESP_PDMA_OFFSET (0x10100) +#define ASC_OFFSET (0x14000) +#define SWIM_OFFSET (0x1e000) #define NUBUS_SUPER_SLOT_BASE 0x60000000 #define NUBUS_SLOT_BASE 0xf0000000 @@ -213,8 +213,9 @@ static void q800_init(MachineState *machine) ram_addr_t initrd_base; int32_t initrd_size; MemoryRegion *rom; + MemoryRegion *macio; MemoryRegion *io; - const int io_slice_nb = (IO_SIZE / IO_SLICE) - 1; + const int io_slice_nb = (IO_SIZE / IO_SLICE); int i; ram_addr_t ram_size = machine->ram_size; const char *kernel_filename = machine->kernel_filename; @@ -249,18 +250,21 @@ static void q800_init(MachineState *machine) /* RAM */ memory_region_add_subregion(get_system_memory(), 0, machine->ram); + /* MacIO bus */ + macio = g_new(MemoryRegion, 1); + memory_region_init(macio, NULL, "mac-io", 256 * KiB); /* FIXME or 128K? */ + /* * Memory from IO_BASE to IO_BASE + IO_SLICE is repeated * from IO_BASE + IO_SLICE to IO_BASE + IO_SIZE */ io = g_new(MemoryRegion, io_slice_nb); for (i = 0; i < io_slice_nb; i++) { - char *name = g_strdup_printf("mac_m68k.io[%d]", i + 1); + char *name = g_strdup_printf("mac_m68k.io[%d]", i); - memory_region_init_alias(&io[i], NULL, name, get_system_memory(), - IO_BASE, IO_SLICE); + memory_region_init_alias(&io[i], NULL, name, macio, 0, IO_SLICE); memory_region_add_subregion(get_system_memory(), - IO_BASE + (i + 1) * IO_SLICE, &io[i]); + IO_BASE + i * IO_SLICE, &io[i]); g_free(name); } @@ -278,7 +282,8 @@ static void q800_init(MachineState *machine) } sysbus = SYS_BUS_DEVICE(via_dev); sysbus_realize_and_unref(sysbus, &error_fatal); - sysbus_mmio_map(sysbus, 0, VIA_BASE); + memory_region_add_subregion(macio, VIA_OFFSET, + sysbus_mmio_get_region(sysbus, 0)); qdev_connect_gpio_out_named(DEVICE(sysbus), "irq", 0, qdev_get_gpio_in(glue, 0)); qdev_connect_gpio_out_named(DEVICE(sysbus), "irq", 1, @@ -321,9 +326,11 @@ static void q800_init(MachineState *machine) OBJECT(get_system_memory()), &error_abort); sysbus = SYS_BUS_DEVICE(dev); sysbus_realize_and_unref(sysbus, &error_fatal); - sysbus_mmio_map(sysbus, 0, SONIC_BASE); - sysbus_mmio_map(sysbus, 1, SONIC_PROM_BASE); sysbus_connect_irq(sysbus, 0, qdev_get_gpio_in(glue, 2)); + memory_region_add_subregion(macio, SONIC_IO_OFFSET, + sysbus_mmio_get_region(sysbus, 0)); + memory_region_add_subregion(macio, SONIC_PROM_OFFSET, + sysbus_mmio_get_region(sysbus, 1)); /* SCC */ @@ -346,7 +353,8 @@ static void q800_init(MachineState *machine) sysbus_connect_irq(sysbus, 0, qdev_get_gpio_in(escc_orgate, 0)); sysbus_connect_irq(sysbus, 1, qdev_get_gpio_in(escc_orgate, 1)); qdev_connect_gpio_out(DEVICE(escc_orgate), 0, qdev_get_gpio_in(glue, 3)); - sysbus_mmio_map(sysbus, 0, SCC_BASE); + memory_region_add_subregion(macio, SCC_OFFSET, + sysbus_mmio_get_region(sysbus, 0)); /* SCSI */ @@ -367,8 +375,10 @@ static void q800_init(MachineState *machine) sysbus_connect_irq(sysbus, 1, qdev_get_gpio_in_named(via_dev, "via2-irq", VIA2_IRQ_SCSI_DATA_BIT)); - sysbus_mmio_map(sysbus, 0, ESP_BASE); - sysbus_mmio_map(sysbus, 1, ESP_PDMA); + memory_region_add_subregion(macio, ESP_OFFSET, + sysbus_mmio_get_region(sysbus, 0)); + memory_region_add_subregion(macio, ESP_PDMA_OFFSET, + sysbus_mmio_get_region(sysbus, 1)); scsi_bus_legacy_handle_cmdline(&esp->bus); @@ -376,7 +386,8 @@ static void q800_init(MachineState *machine) dev = qdev_new(TYPE_SWIM); sysbus_realize_and_unref(SYS_BUS_DEVICE(dev), &error_fatal); - sysbus_mmio_map(SYS_BUS_DEVICE(dev), 0, SWIM_BASE); + memory_region_add_subregion(macio, SWIM_OFFSET, + sysbus_mmio_get_region(SYS_BUS_DEVICE(dev), 0)); /* NuBus */ @@ -423,7 +434,8 @@ static void q800_init(MachineState *machine) (graphic_height << 16) | graphic_width); BOOTINFO1(cs->as, parameters_base, BI_MAC_VROW, (graphic_width * graphic_depth + 7) / 8); - BOOTINFO1(cs->as, parameters_base, BI_MAC_SCCBASE, SCC_BASE); + BOOTINFO1(cs->as, parameters_base, BI_MAC_SCCBASE, + IO_BASE + SCC_OFFSET); rom = g_malloc(sizeof(*rom)); memory_region_init_ram_ptr(rom, NULL, "m68k_fake_mac.rom", From patchwork Fri Mar 26 00:27:28 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= X-Patchwork-Id: 1458567 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=nongnu.org (client-ip=209.51.188.17; helo=lists.gnu.org; envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org; receiver=) Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.a=rsa-sha256 header.s=20161025 header.b=iqmAYl2j; dkim-atps=neutral Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 4F633f41vGz9sCD for ; Fri, 26 Mar 2021 11:38:06 +1100 (AEDT) Received: from localhost ([::1]:51804 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lPaUG-00056f-Jb for incoming@patchwork.ozlabs.org; Thu, 25 Mar 2021 20:38:04 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:57936) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lPaKy-0002vS-SW; Thu, 25 Mar 2021 20:28:28 -0400 Received: from mail-wr1-x42f.google.com ([2a00:1450:4864:20::42f]:36664) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1lPaKx-0004M5-3L; Thu, 25 Mar 2021 20:28:28 -0400 Received: by mail-wr1-x42f.google.com with SMTP id k8so4036913wrc.3; Thu, 25 Mar 2021 17:28:23 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=sender:from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=ac0Y0HtO9B44DC7CRON+B/TUEAbi/V+Fv+F690K+iOg=; b=iqmAYl2jN3HWu/A7aUc/pSLgR/GC7FfqN3oJ/B6BTStageD5LUGX4gbKUI/dG/Ks82 xfRU2YWlsh0jPYeGN3IQ9r6NwDQE3Gt8PBmIstFCsZd5ZXoGNblym8XUcizMEZ5OWbOp 5ML7PCeKdNPjvyp5jiW+laBZsAPlI85pvMJxbNYzqOBqGbtp34vV/UXG/akuaZ6ih3EV X19KPH0ZGvdsOYSpOMJbMfqBt7Loki8qrltW4AlT0At5ksPR28G61rHpX89HJ08duCf2 0TD/mvUMAqr1ayGfIgVFxEehSqLiUSmLCV1U4oH8iXNsqss9I+6YVMVkEEWtM0Sy6MGl kV7Q== 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 :in-reply-to:references:mime-version:content-transfer-encoding; bh=ac0Y0HtO9B44DC7CRON+B/TUEAbi/V+Fv+F690K+iOg=; b=ajerWKspy8nm5Lp7X3U9AGvFnQycitz0KJG8OhFprjTvr9rp/WSxnK2RqsAb30XNVX IVBWZgqcJP2gHFo+Ay0jJOxEi521YIUpZnxCU0EX8WgemWSbRa5GWzsriyCC4r5I+eOG 0Eu9UhfCiu7tOFyjhEqGvchlS0gbIKol/vQ/tIJ+IN5D8dJl1adD7y9a3fQ+zznLxBDl 0fJsrznQ5rURUz9adfDKyXTvp+4dc+/prL4TaQmfA8qNVj6Kf87Aap0Eo9mZgw0ibJaC B0G3Y8u6GypxfhKfgCByge2Lmk8L+vhbhI3ClAqQpliWvtgio6YSKfdp+CTEUXqjVxu8 BQMQ== X-Gm-Message-State: AOAM53192cxlaOmmftyztWurwuXnroYvOS8MBztwtlVt67qPUBJzOZoh 0LWs1edoOpToE5PGH/kJWvxNE4iF4ImrxQ== X-Google-Smtp-Source: ABdhPJwzfb/pc3AyVKBgvghDNvg21uDVkExx/Rm2ArpGHOtX8A77e1dWA5XXS0UPZCDGAa1ZGTkHNg== X-Received: by 2002:a05:6000:10c3:: with SMTP id b3mr11417612wrx.96.1616718502178; Thu, 25 Mar 2021 17:28:22 -0700 (PDT) Received: from localhost.localdomain (17.red-88-21-201.staticip.rima-tde.net. [88.21.201.17]) by smtp.gmail.com with ESMTPSA id a17sm7951026wmj.9.2021.03.25.17.28.21 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 25 Mar 2021 17:28:21 -0700 (PDT) From: =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= To: qemu-devel@nongnu.org Subject: [RFC PATCH-for-6.1 10/10] hw/m68k/q800: Map MacIO using memory_region_add_subregion_aliased() Date: Fri, 26 Mar 2021 01:27:28 +0100 Message-Id: <20210326002728.1069834-11-f4bug@amsat.org> X-Mailer: git-send-email 2.26.2 In-Reply-To: <20210326002728.1069834-1-f4bug@amsat.org> References: <20210326002728.1069834-1-f4bug@amsat.org> MIME-Version: 1.0 Received-SPF: pass client-ip=2a00:1450:4864:20::42f; envelope-from=philippe.mathieu.daude@gmail.com; helo=mail-wr1-x42f.google.com X-Spam_score_int: -14 X-Spam_score: -1.5 X-Spam_bar: - X-Spam_report: (-1.5 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FORGED_FROMDOMAIN=0.249, FREEMAIL_FROM=0.001, HEADER_FROM_DIFFERENT_DOMAINS=0.25, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=no autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Peter Maydell , Mark Cave-Ayland , Alistair Francis , Richard Henderson , =?utf-8?q?Philippe_Mathie?= =?utf-8?q?u-Daud=C3=A9?= , Laurent Vivier , qemu-arm@nongnu.org, qemu-ppc@nongnu.org, "Edgar E. Iglesias" , David Gibson Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: "Qemu-devel" Currently the memory and flatview tree is huge, not very practical: $ (echo info mtree -f;echo q) \ | qemu-system-m68k -M q800 -S -monitor stdio \ | wc -l 2073 Use the memory_region_add_subregion_aliased() helper to manage the MacIO aliases under the hood. - before: (qemu) info mtree address-space: memory 0000000000000000-0000000007ffffff (prio 0, ram): m68k_mac.ram 0000000040800000-00000000408fffff (prio 0, rom): m68k_mac.rom 0000000050000000-000000005003ffff (prio 0, i/o): alias mac_m68k.io[0] @mac-io 0000000000000000-000000000003ffff 0000000050040000-000000005007ffff (prio 0, i/o): alias mac_m68k.io[1] @mac-io 0000000000000000-000000000003ffff 0000000050080000-00000000500bffff (prio 0, i/o): alias mac_m68k.io[2] @mac-io 0000000000000000-000000000003ffff ... 0000000053f40000-0000000053f7ffff (prio 0, i/o): alias mac_m68k.io[253] @mac-io 0000000000000000-000000000003ffff 0000000053f80000-0000000053fbffff (prio 0, i/o): alias mac_m68k.io[254] @mac-io 0000000000000000-000000000003ffff 0000000053fc0000-0000000053ffffff (prio 0, i/o): alias mac_m68k.io[255] @mac-io 0000000000000000-000000000003ffff 0000000060000000-00000000efffffff (prio 0, i/o): nubus-super-slots 00000000f0000000-00000000feffffff (prio 0, i/o): nubus-slots 00000000f9000000-00000000f9ffffff (prio 0, i/o): nubus-slot-9 00000000f9001000-00000000f9400fff (prio 0, ram): macfb-vram 00000000f9800000-00000000f9800fff (prio 0, i/o): macfb-ctrl 00000000f9ffffe8-00000000f9ffffeb (prio 0, i/o): nubus-slot-9-rom 00000000f9ffffec-00000000f9ffffff (prio 0, i/o): nubus-slot-9-format-block - after: (qemu) info mtree address-space: memory 0000000000000000-ffffffffffffffff (prio 0, i/o): system 0000000000000000-0000000007ffffff (prio 0, ram): m68k_mac.ram 0000000040800000-00000000408fffff (prio 0, rom): m68k_mac.rom 0000000050000000-0000000053ffffff (prio 0, i/o): masked mac-io [span of 256 KiB] 0000000060000000-00000000efffffff (prio 0, i/o): nubus-super-slots 00000000f0000000-00000000feffffff (prio 0, i/o): nubus-slots 00000000f9000000-00000000f9ffffff (prio 0, i/o): nubus-slot-9 00000000f9001000-00000000f9400fff (prio 0, ram): macfb-vram 00000000f9800000-00000000f9800fff (prio 0, i/o): macfb-ctrl 00000000f9ffffe8-00000000f9ffffeb (prio 0, i/o): nubus-slot-9-rom 00000000f9ffffec-00000000f9ffffff (prio 0, i/o): nubus-slot-9-format-block (qemu) info mtree -f FlatView #0 AS "memory", root: system AS "cpu-memory-0", root: system AS "dp8393x", root: system Root memory region: system 0000000000000000-0000000007ffffff (prio 0, ram): m68k_mac.ram 0000000040800000-00000000408fffff (prio 0, rom): m68k_mac.rom 0000000050000000-0000000053ffffff (prio 0, i/o): masked mac-io [span of 256 KiB] 0000000060000000-00000000efffffff (prio 0, i/o): nubus-super-slots 00000000f0000000-00000000f9000fff (prio 0, i/o): nubus-slots 00000000f9001000-00000000f9400fff (prio 0, ram): macfb-vram 00000000f9401000-00000000f97fffff (prio 0, i/o): nubus-slots @0000000009401000 00000000f9800000-00000000f9800fff (prio 0, i/o): macfb-ctrl 00000000f9801000-00000000f9ffffe7 (prio 0, i/o): nubus-slots @0000000009801000 00000000f9ffffe8-00000000f9ffffeb (prio 0, rom): nubus-slot-9-rom 00000000f9ffffec-00000000f9ffffff (prio 0, i/o): nubus-slot-9-format-block 00000000fa000000-00000000feffffff (prio 0, i/o): nubus-slots @000000000a000000 FlatView #1 AS "mac-io", root: mac-io Root memory region: mac-io 0000000000000000-0000000000001fff (prio 0, i/o): via1 0000000000002000-0000000000003fff (prio 0, i/o): via2 0000000000008000-0000000000008fff (prio 0, rom): dp8393x-prom 000000000000a000-000000000000a0ff (prio 0, i/o): dp8393x-regs 000000000000c020-000000000000c027 (prio 0, i/o): escc 0000000000010000-00000000000100ff (prio 0, i/o): esp-regs 0000000000010100-0000000000010103 (prio 0, i/o): esp-pdma 000000000001e000-000000000001ffff (prio 0, i/o): swim Signed-off-by: Philippe Mathieu-Daudé --- hw/m68k/q800.c | 15 +++------------ hw/m68k/Kconfig | 1 + 2 files changed, 4 insertions(+), 12 deletions(-) diff --git a/hw/m68k/q800.c b/hw/m68k/q800.c index 8f14e677077..4ca7e1af08e 100644 --- a/hw/m68k/q800.c +++ b/hw/m68k/q800.c @@ -40,6 +40,7 @@ #include "standard-headers/asm-m68k/bootinfo.h" #include "standard-headers/asm-m68k/bootinfo-mac.h" #include "bootinfo.h" +#include "hw/misc/aliased_region.h" #include "hw/misc/mac_via.h" #include "hw/input/adb.h" #include "hw/nubus/mac-nubus-bridge.h" @@ -214,9 +215,6 @@ static void q800_init(MachineState *machine) int32_t initrd_size; MemoryRegion *rom; MemoryRegion *macio; - MemoryRegion *io; - const int io_slice_nb = (IO_SIZE / IO_SLICE); - int i; ram_addr_t ram_size = machine->ram_size; const char *kernel_filename = machine->kernel_filename; const char *initrd_filename = machine->initrd_filename; @@ -258,15 +256,8 @@ static void q800_init(MachineState *machine) * Memory from IO_BASE to IO_BASE + IO_SLICE is repeated * from IO_BASE + IO_SLICE to IO_BASE + IO_SIZE */ - io = g_new(MemoryRegion, io_slice_nb); - for (i = 0; i < io_slice_nb; i++) { - char *name = g_strdup_printf("mac_m68k.io[%d]", i); - - memory_region_init_alias(&io[i], NULL, name, macio, 0, IO_SLICE); - memory_region_add_subregion(get_system_memory(), - IO_BASE + i * IO_SLICE, &io[i]); - g_free(name); - } + memory_region_add_subregion_aliased(get_system_memory(), + IO_BASE, IO_SIZE, macio, IO_SLICE); /* IRQ Glue */ glue = qdev_new(TYPE_GLUE); diff --git a/hw/m68k/Kconfig b/hw/m68k/Kconfig index f839f8a0306..d2e588913b7 100644 --- a/hw/m68k/Kconfig +++ b/hw/m68k/Kconfig @@ -23,6 +23,7 @@ config Q800 select ESP select DP8393X select OR_IRQ + select ALIASED_REGION config M68K_VIRT bool