From patchwork Fri Jan 20 07:01:11 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Markus Armbruster X-Patchwork-Id: 13109259 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org 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 smtp.lore.kernel.org (Postfix) with ESMTPS id 0578CC05027 for ; Fri, 20 Jan 2023 07:03:16 +0000 (UTC) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1pIlPC-00009Q-Ua; Fri, 20 Jan 2023 02:01:43 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1pIlOz-0008UG-PR for qemu-devel@nongnu.org; Fri, 20 Jan 2023 02:01:32 -0500 Received: from us-smtp-delivery-124.mimecast.com ([170.10.129.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1pIlOx-0005GO-Th for qemu-devel@nongnu.org; Fri, 20 Jan 2023 02:01:29 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1674198087; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=7TC0jWFMGoAYpAGn99fdBxChxOKtjBjhu0HgZzGAObY=; b=fPN2deqaGDKERAG5h19eC+IgMvKU5viRq4zMfDYeVLk0ukxi1nI5e5x/HUCrEXWqKuw/5D HYfiRdMD9ugGLMPb0z+CnrO3v1vx+ZD1LV2eE3NwQRjcN6W72rKjS5tzDPhdx1vtl8c1YY KoZBEyHxarAhPnpFJKtPD2b4nXgtl6o= Received: from mimecast-mx02.redhat.com (mx3-rdu2.redhat.com [66.187.233.73]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id us-mta-515-z05Pct72NW-LdJHZdLnv7g-1; Fri, 20 Jan 2023 02:01:24 -0500 X-MC-Unique: z05Pct72NW-LdJHZdLnv7g-1 Received: from smtp.corp.redhat.com (int-mx08.intmail.prod.int.rdu2.redhat.com [10.11.54.8]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx02.redhat.com (Postfix) with ESMTPS id CB12D3C0D194; Fri, 20 Jan 2023 07:01:23 +0000 (UTC) Received: from blackfin.pond.sub.org (unknown [10.39.192.70]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 82B15C15BAD; Fri, 20 Jan 2023 07:01:23 +0000 (UTC) Received: by blackfin.pond.sub.org (Postfix, from userid 1000) id 8307421E66CB; Fri, 20 Jan 2023 08:01:22 +0100 (CET) From: Markus Armbruster To: qemu-devel@nongnu.org Cc: peter.maydell@linaro.org, Stefan Hajnoczi Subject: [PULL 01/12] coroutine: Clean up superfluous inclusion of qemu/coroutine.h Date: Fri, 20 Jan 2023 08:01:11 +0100 Message-Id: <20230120070122.3982588-2-armbru@redhat.com> In-Reply-To: <20230120070122.3982588-1-armbru@redhat.com> References: <20230120070122.3982588-1-armbru@redhat.com> MIME-Version: 1.0 Content-type: text/plain X-Scanned-By: MIMEDefang 3.1 on 10.11.54.8 Received-SPF: pass client-ip=170.10.129.124; envelope-from=armbru@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -27 X-Spam_score: -2.8 X-Spam_bar: -- X-Spam_report: (-2.8 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_LOW=-0.7, RCVD_IN_MSPIKE_H2=-0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org Sender: qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org Signed-off-by: Markus Armbruster Reviewed-by: Stefan Hajnoczi Message-Id: <20221221131435.3851212-2-armbru@redhat.com> --- crypto/block-luks-priv.h | 1 - include/block/raw-aio.h | 1 - include/scsi/pr-manager.h | 1 - nbd/nbd-internal.h | 1 - blockjob.c | 1 - crypto/block-luks.c | 1 - hw/9pfs/codir.c | 1 - hw/9pfs/cofile.c | 1 - hw/9pfs/cofs.c | 1 - hw/9pfs/coxattr.c | 1 - tests/unit/test-coroutine.c | 1 - tests/unit/test-vmstate.c | 1 - util/qemu-coroutine-lock.c | 1 - util/qemu-coroutine-sleep.c | 1 - util/qemu-coroutine.c | 1 - 15 files changed, 15 deletions(-) diff --git a/crypto/block-luks-priv.h b/crypto/block-luks-priv.h index 90a20d432b..dc2dd14e52 100644 --- a/crypto/block-luks-priv.h +++ b/crypto/block-luks-priv.h @@ -31,7 +31,6 @@ #include "crypto/random.h" #include "qemu/uuid.h" -#include "qemu/coroutine.h" #include "qemu/bitmap.h" /* diff --git a/include/block/raw-aio.h b/include/block/raw-aio.h index 21fc10c4c9..f8cda9df91 100644 --- a/include/block/raw-aio.h +++ b/include/block/raw-aio.h @@ -17,7 +17,6 @@ #define QEMU_RAW_AIO_H #include "block/aio.h" -#include "qemu/coroutine.h" #include "qemu/iov.h" /* AIO request types */ diff --git a/include/scsi/pr-manager.h b/include/scsi/pr-manager.h index e4ecbe00f6..45de28d354 100644 --- a/include/scsi/pr-manager.h +++ b/include/scsi/pr-manager.h @@ -5,7 +5,6 @@ #include "qapi/visitor.h" #include "qom/object_interfaces.h" #include "block/aio.h" -#include "qemu/coroutine.h" #define TYPE_PR_MANAGER "pr-manager" diff --git a/nbd/nbd-internal.h b/nbd/nbd-internal.h index 1b2141ab4b..df42fef706 100644 --- a/nbd/nbd-internal.h +++ b/nbd/nbd-internal.h @@ -13,7 +13,6 @@ #include "sysemu/block-backend.h" #include "io/channel-tls.h" -#include "qemu/coroutine.h" #include "qemu/iov.h" #ifndef _WIN32 diff --git a/blockjob.c b/blockjob.c index b7daf2a9f6..54b4091a36 100644 --- a/blockjob.c +++ b/blockjob.c @@ -32,7 +32,6 @@ #include "qapi/error.h" #include "qapi/qapi-events-block-core.h" #include "qapi/qmp/qerror.h" -#include "qemu/coroutine.h" #include "qemu/main-loop.h" #include "qemu/timer.h" diff --git a/crypto/block-luks.c b/crypto/block-luks.c index ff9e3945d1..5688783ab1 100644 --- a/crypto/block-luks.c +++ b/crypto/block-luks.c @@ -32,7 +32,6 @@ #include "crypto/random.h" #include "qemu/uuid.h" -#include "qemu/coroutine.h" #include "qemu/bitmap.h" /* diff --git a/hw/9pfs/codir.c b/hw/9pfs/codir.c index 93ba44fb75..7ba63be489 100644 --- a/hw/9pfs/codir.c +++ b/hw/9pfs/codir.c @@ -19,7 +19,6 @@ #include "qemu/osdep.h" #include "fsdev/qemu-fsdev.h" #include "qemu/thread.h" -#include "qemu/coroutine.h" #include "qemu/main-loop.h" #include "coth.h" #include "9p-xattr.h" diff --git a/hw/9pfs/cofile.c b/hw/9pfs/cofile.c index 20f93a90e7..9c5344039e 100644 --- a/hw/9pfs/cofile.c +++ b/hw/9pfs/cofile.c @@ -19,7 +19,6 @@ #include "qemu/osdep.h" #include "fsdev/qemu-fsdev.h" #include "qemu/thread.h" -#include "qemu/coroutine.h" #include "qemu/main-loop.h" #include "coth.h" diff --git a/hw/9pfs/cofs.c b/hw/9pfs/cofs.c index 9d0adc2e78..67e3ae5c5c 100644 --- a/hw/9pfs/cofs.c +++ b/hw/9pfs/cofs.c @@ -19,7 +19,6 @@ #include "qemu/osdep.h" #include "fsdev/qemu-fsdev.h" #include "qemu/thread.h" -#include "qemu/coroutine.h" #include "qemu/main-loop.h" #include "coth.h" diff --git a/hw/9pfs/coxattr.c b/hw/9pfs/coxattr.c index dbcd09e0fd..cd0f8488ac 100644 --- a/hw/9pfs/coxattr.c +++ b/hw/9pfs/coxattr.c @@ -19,7 +19,6 @@ #include "qemu/osdep.h" #include "fsdev/qemu-fsdev.h" #include "qemu/thread.h" -#include "qemu/coroutine.h" #include "qemu/main-loop.h" #include "coth.h" diff --git a/tests/unit/test-coroutine.c b/tests/unit/test-coroutine.c index e16b80c245..513800d3db 100644 --- a/tests/unit/test-coroutine.c +++ b/tests/unit/test-coroutine.c @@ -12,7 +12,6 @@ */ #include "qemu/osdep.h" -#include "qemu/coroutine.h" #include "qemu/coroutine_int.h" #include "qemu/lockable.h" diff --git a/tests/unit/test-vmstate.c b/tests/unit/test-vmstate.c index 541bb4f63e..79357b29ca 100644 --- a/tests/unit/test-vmstate.c +++ b/tests/unit/test-vmstate.c @@ -29,7 +29,6 @@ #include "migration/qemu-file-types.h" #include "../migration/qemu-file.h" #include "../migration/savevm.h" -#include "qemu/coroutine.h" #include "qemu/module.h" #include "io/channel-file.h" diff --git a/util/qemu-coroutine-lock.c b/util/qemu-coroutine-lock.c index 45c6b57374..58f3f77181 100644 --- a/util/qemu-coroutine-lock.c +++ b/util/qemu-coroutine-lock.c @@ -27,7 +27,6 @@ */ #include "qemu/osdep.h" -#include "qemu/coroutine.h" #include "qemu/coroutine_int.h" #include "qemu/processor.h" #include "qemu/queue.h" diff --git a/util/qemu-coroutine-sleep.c b/util/qemu-coroutine-sleep.c index 571ab521ff..af59f9af98 100644 --- a/util/qemu-coroutine-sleep.c +++ b/util/qemu-coroutine-sleep.c @@ -12,7 +12,6 @@ */ #include "qemu/osdep.h" -#include "qemu/coroutine.h" #include "qemu/coroutine_int.h" #include "qemu/timer.h" #include "block/aio.h" diff --git a/util/qemu-coroutine.c b/util/qemu-coroutine.c index 356b746f0b..8494523692 100644 --- a/util/qemu-coroutine.c +++ b/util/qemu-coroutine.c @@ -16,7 +16,6 @@ #include "trace.h" #include "qemu/thread.h" #include "qemu/atomic.h" -#include "qemu/coroutine.h" #include "qemu/coroutine_int.h" #include "qemu/coroutine-tls.h" #include "block/aio.h" From patchwork Fri Jan 20 07:01:12 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Markus Armbruster X-Patchwork-Id: 13109253 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org 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 smtp.lore.kernel.org (Postfix) with ESMTPS id B8443C25B4E for ; Fri, 20 Jan 2023 07:02:15 +0000 (UTC) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1pIlPE-0000A5-Jr; Fri, 20 Jan 2023 02:01:45 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1pIlOz-0008UF-OL for qemu-devel@nongnu.org; Fri, 20 Jan 2023 02:01:32 -0500 Received: from us-smtp-delivery-124.mimecast.com ([170.10.129.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1pIlOw-0005Fy-Rr for qemu-devel@nongnu.org; Fri, 20 Jan 2023 02:01:29 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1674198085; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=d9ORpZB/nS35WM2wJV7axvWxJFHw5VO3WMZewxjuvtc=; b=XFdhx+68deEg9pQm7PUtYV6TUqgzbWUN+e+gpMpurVdwQrNqWXwM97i28nBxL27rwonhih 9wJQEmzLTqIOzGPqZYYjLT/9hvg/TdW7BvhKXOimwyhvnyAACZweFRhZBIeMoFlYV05wx0 p8HNKMzZG1BJACA1JjZxWVm48kmy4QM= Received: from mimecast-mx02.redhat.com (mimecast-mx02.redhat.com [66.187.233.88]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id us-mta-215-nqHD2E9DMLqmluMzC9JsWQ-1; Fri, 20 Jan 2023 02:01:24 -0500 X-MC-Unique: nqHD2E9DMLqmluMzC9JsWQ-1 Received: from smtp.corp.redhat.com (int-mx10.intmail.prod.int.rdu2.redhat.com [10.11.54.10]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx02.redhat.com (Postfix) with ESMTPS id CF72185C06B; Fri, 20 Jan 2023 07:01:23 +0000 (UTC) Received: from blackfin.pond.sub.org (unknown [10.39.192.70]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 89F66492B02; Fri, 20 Jan 2023 07:01:23 +0000 (UTC) Received: by blackfin.pond.sub.org (Postfix, from userid 1000) id 85B7B21E66CD; Fri, 20 Jan 2023 08:01:22 +0100 (CET) From: Markus Armbruster To: qemu-devel@nongnu.org Cc: peter.maydell@linaro.org, Stefan Hajnoczi Subject: [PULL 02/12] coroutine: Move coroutine_fn to qemu/osdep.h, trim includes Date: Fri, 20 Jan 2023 08:01:12 +0100 Message-Id: <20230120070122.3982588-3-armbru@redhat.com> In-Reply-To: <20230120070122.3982588-1-armbru@redhat.com> References: <20230120070122.3982588-1-armbru@redhat.com> MIME-Version: 1.0 Content-type: text/plain X-Scanned-By: MIMEDefang 3.1 on 10.11.54.10 Received-SPF: pass client-ip=170.10.129.124; envelope-from=armbru@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -27 X-Spam_score: -2.8 X-Spam_bar: -- X-Spam_report: (-2.8 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_LOW=-0.7, RCVD_IN_MSPIKE_H2=-0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org Sender: qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org block/block-hmp-cmds.h and qemu/co-shared-resource.h use coroutine_fn without including qemu/coroutine.h. They compile only if it's already included from elsewhere. I could fix that, but pulling in qemu/coroutine.h and everything it includes just for a macro that expands into nothing feels silly. Instead, move the macro to qemu/osdep.h. Inclusions of qemu/coroutine.h just for coroutine_fn become superfluous. Drop them. Signed-off-by: Markus Armbruster Reviewed-by: Stefan Hajnoczi Message-Id: <20221221131435.3851212-3-armbru@redhat.com> --- include/block/aio_task.h | 2 -- include/block/block-common.h | 1 - include/block/graph-lock.h | 2 -- include/monitor/hmp.h | 1 - include/qemu/coroutine.h | 18 +++++++----------- include/qemu/osdep.h | 16 ++++++++++++++++ 6 files changed, 23 insertions(+), 17 deletions(-) diff --git a/include/block/aio_task.h b/include/block/aio_task.h index 50bc1e1817..18a9c41f4e 100644 --- a/include/block/aio_task.h +++ b/include/block/aio_task.h @@ -25,8 +25,6 @@ #ifndef BLOCK_AIO_TASK_H #define BLOCK_AIO_TASK_H -#include "qemu/coroutine.h" - typedef struct AioTaskPool AioTaskPool; typedef struct AioTask AioTask; typedef int coroutine_fn (*AioTaskFunc)(AioTask *task); diff --git a/include/block/block-common.h b/include/block/block-common.h index 4749c46a5e..434ffc5d34 100644 --- a/include/block/block-common.h +++ b/include/block/block-common.h @@ -27,7 +27,6 @@ #include "block/aio.h" #include "block/aio-wait.h" #include "qemu/iov.h" -#include "qemu/coroutine.h" #include "block/accounting.h" #include "qemu/hbitmap.h" #include "qemu/transactions.h" diff --git a/include/block/graph-lock.h b/include/block/graph-lock.h index 4c92cd8edf..3ab924d5e2 100644 --- a/include/block/graph-lock.h +++ b/include/block/graph-lock.h @@ -23,8 +23,6 @@ #include "qemu/osdep.h" #include "qemu/clang-tsa.h" -#include "qemu/coroutine.h" - /** * Graph Lock API * This API provides a rwlock used to protect block layer diff --git a/include/monitor/hmp.h b/include/monitor/hmp.h index 27f86399f7..c9e3887737 100644 --- a/include/monitor/hmp.h +++ b/include/monitor/hmp.h @@ -15,7 +15,6 @@ #define HMP_H #include "qemu/readline.h" -#include "qemu/coroutine.h" #include "qapi/qapi-types-common.h" bool hmp_handle_error(Monitor *mon, Error *err); diff --git a/include/qemu/coroutine.h b/include/qemu/coroutine.h index 89650a2d7f..2496a4f4ef 100644 --- a/include/qemu/coroutine.h +++ b/include/qemu/coroutine.h @@ -26,23 +26,19 @@ * waiting for events to complete. * * These functions are re-entrant and may be used outside the global mutex. - */ - -/** - * Mark a function that executes in coroutine context * - * Functions that execute in coroutine context cannot be called directly from - * normal functions. In the future it would be nice to enable compiler or - * static checker support for catching such errors. This annotation might make - * it possible and in the meantime it serves as documentation. - * - * For example: + * Functions that execute in coroutine context cannot be called + * directly from normal functions. Use @coroutine_fn to mark such + * functions. For example: * * static void coroutine_fn foo(void) { * .... * } + * + * In the future it would be nice to have the compiler or a static + * checker catch misuse of such functions. This annotation might make + * it possible and in the meantime it serves as documentation. */ -#define coroutine_fn typedef struct Coroutine Coroutine; diff --git a/include/qemu/osdep.h b/include/qemu/osdep.h index bd23a08595..c850001408 100644 --- a/include/qemu/osdep.h +++ b/include/qemu/osdep.h @@ -157,6 +157,22 @@ extern "C" { #include "qemu/typedefs.h" +/** + * Mark a function that executes in coroutine context + * + * Functions that execute in coroutine context cannot be called directly from + * normal functions. In the future it would be nice to enable compiler or + * static checker support for catching such errors. This annotation might make + * it possible and in the meantime it serves as documentation. + * + * For example: + * + * static void coroutine_fn foo(void) { + * .... + * } + */ +#define coroutine_fn + /* * For mingw, as of v6.0.0, the function implementing the assert macro is * not marked as noreturn, so the compiler cannot delete code following an From patchwork Fri Jan 20 07:01:13 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Markus Armbruster X-Patchwork-Id: 13109258 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org 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 smtp.lore.kernel.org (Postfix) with ESMTPS id 30F96C25B50 for ; Fri, 20 Jan 2023 07:02:51 +0000 (UTC) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1pIlPB-00009G-VW; Fri, 20 Jan 2023 02:01:41 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1pIlOy-0008TR-M2 for qemu-devel@nongnu.org; Fri, 20 Jan 2023 02:01:32 -0500 Received: from us-smtp-delivery-124.mimecast.com ([170.10.129.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1pIlOw-0005G1-Pc for qemu-devel@nongnu.org; Fri, 20 Jan 2023 02:01:28 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1674198085; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=mwwGPfRN+h1yAsoaoCHr559yEhqh0X7HGyqCT/CbR90=; b=MSg85V6Qcu16HNblEAbfaexfA2PfJY+fzkQXF/QrlygG3hmtHkpT3wcPouOXOthZoFeJr7 6/959K9UIcW0ww3dLEoP3SAPmwjSX/Oq/AxHt75GgG3C6C09n3IdRqIW7OGGqZ7LEHrIgu tN8WJTGsFI+EeO2yfmTPAxttF9XAT8w= Received: from mimecast-mx02.redhat.com (mimecast-mx02.redhat.com [66.187.233.88]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id us-mta-515-rVbQIBo5O5GIoiRaSt9tTA-1; Fri, 20 Jan 2023 02:01:24 -0500 X-MC-Unique: rVbQIBo5O5GIoiRaSt9tTA-1 Received: from smtp.corp.redhat.com (int-mx02.intmail.prod.int.rdu2.redhat.com [10.11.54.2]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx02.redhat.com (Postfix) with ESMTPS id CBA0A100F908; Fri, 20 Jan 2023 07:01:23 +0000 (UTC) Received: from blackfin.pond.sub.org (unknown [10.39.192.70]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 8A4DE4085720; Fri, 20 Jan 2023 07:01:23 +0000 (UTC) Received: by blackfin.pond.sub.org (Postfix, from userid 1000) id 8840321E66F2; Fri, 20 Jan 2023 08:01:22 +0100 (CET) From: Markus Armbruster To: qemu-devel@nongnu.org Cc: peter.maydell@linaro.org, Stefan Hajnoczi Subject: [PULL 03/12] coroutine: Clean up superfluous inclusion of qemu/lockable.h Date: Fri, 20 Jan 2023 08:01:13 +0100 Message-Id: <20230120070122.3982588-4-armbru@redhat.com> In-Reply-To: <20230120070122.3982588-1-armbru@redhat.com> References: <20230120070122.3982588-1-armbru@redhat.com> MIME-Version: 1.0 Content-type: text/plain X-Scanned-By: MIMEDefang 3.1 on 10.11.54.2 Received-SPF: pass client-ip=170.10.129.124; envelope-from=armbru@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -27 X-Spam_score: -2.8 X-Spam_bar: -- X-Spam_report: (-2.8 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_LOW=-0.7, RCVD_IN_MSPIKE_H2=-0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org Sender: qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org Signed-off-by: Markus Armbruster Reviewed-by: Stefan Hajnoczi Message-Id: <20221221131435.3851212-4-armbru@redhat.com> --- include/qemu/progress_meter.h | 2 +- block/progress_meter.c | 2 ++ tests/unit/test-coroutine.c | 1 - 3 files changed, 3 insertions(+), 2 deletions(-) diff --git a/include/qemu/progress_meter.h b/include/qemu/progress_meter.h index dadf822bbf..0f2c0a32d2 100644 --- a/include/qemu/progress_meter.h +++ b/include/qemu/progress_meter.h @@ -27,7 +27,7 @@ #ifndef QEMU_PROGRESS_METER_H #define QEMU_PROGRESS_METER_H -#include "qemu/lockable.h" +#include "qemu/thread.h" typedef struct ProgressMeter { /** diff --git a/block/progress_meter.c b/block/progress_meter.c index aa2e60248c..31a170a2cd 100644 --- a/block/progress_meter.c +++ b/block/progress_meter.c @@ -23,7 +23,9 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ + #include "qemu/osdep.h" +#include "qemu/coroutine.h" #include "qemu/progress_meter.h" void progress_init(ProgressMeter *pm) diff --git a/tests/unit/test-coroutine.c b/tests/unit/test-coroutine.c index 513800d3db..b0d21d673a 100644 --- a/tests/unit/test-coroutine.c +++ b/tests/unit/test-coroutine.c @@ -13,7 +13,6 @@ #include "qemu/osdep.h" #include "qemu/coroutine_int.h" -#include "qemu/lockable.h" /* * Check that qemu_in_coroutine() works From patchwork Fri Jan 20 07:01:14 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Markus Armbruster X-Patchwork-Id: 13109255 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org 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 smtp.lore.kernel.org (Postfix) with ESMTPS id 696EBC27C76 for ; Fri, 20 Jan 2023 07:02:30 +0000 (UTC) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1pIlPB-00008t-1d; Fri, 20 Jan 2023 02:01:41 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1pIlP0-0008VN-Tq for qemu-devel@nongnu.org; Fri, 20 Jan 2023 02:01:32 -0500 Received: from us-smtp-delivery-124.mimecast.com ([170.10.133.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1pIlOy-0005GX-M3 for qemu-devel@nongnu.org; Fri, 20 Jan 2023 02:01:30 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1674198087; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=m8LIRZOqO3MFn3Oh8kPiUCgLc88Ez3/U1NO49fjC3Hs=; b=OEa2mV96YAL0RPE/Xj1hmEo4axAE03bzhyzSDEO4yiUPkh95cNLEj71Mea7tVpQjsHE2Pc hXyjmwQUTYrFlKWF7X/gQ7A63Ghj5n/vfdvSueO2/o8kykB9eozR48wanFdexGTiwQYUHL EyagthKajvL7BRGvbJBU6R55MaYVs90= Received: from mimecast-mx02.redhat.com (mimecast-mx02.redhat.com [66.187.233.88]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id us-mta-132-6MwY91JlMLuJdLA8-XwuKg-1; Fri, 20 Jan 2023 02:01:24 -0500 X-MC-Unique: 6MwY91JlMLuJdLA8-XwuKg-1 Received: from smtp.corp.redhat.com (int-mx03.intmail.prod.int.rdu2.redhat.com [10.11.54.3]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx02.redhat.com (Postfix) with ESMTPS id 0740385C064; Fri, 20 Jan 2023 07:01:24 +0000 (UTC) Received: from blackfin.pond.sub.org (unknown [10.39.192.70]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 97EAE1121318; Fri, 20 Jan 2023 07:01:23 +0000 (UTC) Received: by blackfin.pond.sub.org (Postfix, from userid 1000) id 8B11421E6681; Fri, 20 Jan 2023 08:01:22 +0100 (CET) From: Markus Armbruster To: qemu-devel@nongnu.org Cc: peter.maydell@linaro.org Subject: [PULL 04/12] coroutine: Split qemu/coroutine-core.h off qemu/coroutine.h Date: Fri, 20 Jan 2023 08:01:14 +0100 Message-Id: <20230120070122.3982588-5-armbru@redhat.com> In-Reply-To: <20230120070122.3982588-1-armbru@redhat.com> References: <20230120070122.3982588-1-armbru@redhat.com> MIME-Version: 1.0 Content-type: text/plain X-Scanned-By: MIMEDefang 3.1 on 10.11.54.3 Received-SPF: pass client-ip=170.10.133.124; envelope-from=armbru@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H2=-0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org Sender: qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org qemu/coroutine.h and qemu/lockable.h include each other. They need each other only in macro expansions, so we could simply drop both inclusions to break the loop, and add suitable includes to files that expand the macros. Instead, move a part of qemu/coroutine.h to new qemu/coroutine-core.h so that qemu/coroutine-core.h doesn't need qemu/lockable.h, and qemu/lockable.h only needs qemu/coroutine-core.h. Result: qemu/coroutine.h includes qemu/lockable.h includes qemu/coroutine-core.h. Signed-off-by: Markus Armbruster Message-Id: <20221221131435.3851212-5-armbru@redhat.com> [Semantic rebase conflict with 7c10cb38cc "accel/tcg: Add debuginfo support" resolved] --- accel/tcg/debuginfo.h | 2 + hw/9pfs/coth.h | 2 +- include/block/aio.h | 2 +- include/io/channel.h | 2 +- include/qemu/coroutine-core.h | 154 ++++++++++++++++++++++++++++++++++ include/qemu/coroutine.h | 97 +-------------------- include/qemu/lockable.h | 2 +- include/qemu/typedefs.h | 1 - nbd/client-connection.c | 1 + tests/unit/test-aio.c | 2 +- ui/console.c | 1 + 11 files changed, 164 insertions(+), 102 deletions(-) create mode 100644 include/qemu/coroutine-core.h diff --git a/accel/tcg/debuginfo.h b/accel/tcg/debuginfo.h index 7542cfe6e0..f064e1c144 100644 --- a/accel/tcg/debuginfo.h +++ b/accel/tcg/debuginfo.h @@ -7,6 +7,8 @@ #ifndef ACCEL_TCG_DEBUGINFO_H #define ACCEL_TCG_DEBUGINFO_H +#include "qemu/bitops.h" + /* * Debuginfo describing a certain address. */ diff --git a/hw/9pfs/coth.h b/hw/9pfs/coth.h index 1a1edbdc2a..2c54249b35 100644 --- a/hw/9pfs/coth.h +++ b/hw/9pfs/coth.h @@ -16,7 +16,7 @@ #define QEMU_9P_COTH_H #include "qemu/thread.h" -#include "qemu/coroutine.h" +#include "qemu/coroutine-core.h" #include "9p.h" /* diff --git a/include/block/aio.h b/include/block/aio.h index 0f65a3cc9e..3a546e7515 100644 --- a/include/block/aio.h +++ b/include/block/aio.h @@ -17,7 +17,7 @@ #ifdef CONFIG_LINUX_IO_URING #include #endif -#include "qemu/coroutine.h" +#include "qemu/coroutine-core.h" #include "qemu/queue.h" #include "qemu/event_notifier.h" #include "qemu/thread.h" diff --git a/include/io/channel.h b/include/io/channel.h index f1b7e05f81..78b15f7870 100644 --- a/include/io/channel.h +++ b/include/io/channel.h @@ -22,7 +22,7 @@ #define QIO_CHANNEL_H #include "qom/object.h" -#include "qemu/coroutine.h" +#include "qemu/coroutine-core.h" #include "block/aio.h" #define TYPE_QIO_CHANNEL "qio-channel" diff --git a/include/qemu/coroutine-core.h b/include/qemu/coroutine-core.h new file mode 100644 index 0000000000..230bb56517 --- /dev/null +++ b/include/qemu/coroutine-core.h @@ -0,0 +1,154 @@ +/* + * QEMU coroutine implementation + * + * Copyright IBM, Corp. 2011 + * + * Authors: + * Stefan Hajnoczi + * Kevin Wolf + * + * This work is licensed under the terms of the GNU LGPL, version 2 or later. + * See the COPYING.LIB file in the top-level directory. + * + */ + +#ifndef QEMU_COROUTINE_CORE_H +#define QEMU_COROUTINE_CORE_H + +/** + * Coroutines are a mechanism for stack switching and can be used for + * cooperative userspace threading. These functions provide a simple but + * useful flavor of coroutines that is suitable for writing sequential code, + * rather than callbacks, for operations that need to give up control while + * waiting for events to complete. + * + * These functions are re-entrant and may be used outside the global mutex. + * + * Functions that execute in coroutine context cannot be called + * directly from normal functions. Use @coroutine_fn to mark such + * functions. For example: + * + * static void coroutine_fn foo(void) { + * .... + * } + * + * In the future it would be nice to have the compiler or a static + * checker catch misuse of such functions. This annotation might make + * it possible and in the meantime it serves as documentation. + */ + +/** + * Mark a function that executes in coroutine context + * + * + * Functions that execute in coroutine context cannot be called + * directly from normal functions. Use @coroutine_fn to mark such + * functions. For example: + * + * static void coroutine_fn foo(void) { + * .... + * } + * + * In the future it would be nice to have the compiler or a static + * checker catch misuse of such functions. This annotation might make + * it possible and in the meantime it serves as documentation. + */ + +typedef struct Coroutine Coroutine; +typedef struct CoMutex CoMutex; + +/** + * Coroutine entry point + * + * When the coroutine is entered for the first time, opaque is passed in as an + * argument. + * + * When this function returns, the coroutine is destroyed automatically and + * execution continues in the caller who last entered the coroutine. + */ +typedef void coroutine_fn CoroutineEntry(void *opaque); + +/** + * Create a new coroutine + * + * Use qemu_coroutine_enter() to actually transfer control to the coroutine. + * The opaque argument is passed as the argument to the entry point. + */ +Coroutine *qemu_coroutine_create(CoroutineEntry *entry, void *opaque); + +/** + * Transfer control to a coroutine + */ +void qemu_coroutine_enter(Coroutine *coroutine); + +/** + * Transfer control to a coroutine if it's not active (i.e. part of the call + * stack of the running coroutine). Otherwise, do nothing. + */ +void qemu_coroutine_enter_if_inactive(Coroutine *co); + +/** + * Transfer control to a coroutine and associate it with ctx + */ +void qemu_aio_coroutine_enter(AioContext *ctx, Coroutine *co); + +/** + * Transfer control back to a coroutine's caller + * + * This function does not return until the coroutine is re-entered using + * qemu_coroutine_enter(). + */ +void coroutine_fn qemu_coroutine_yield(void); + +/** + * Get the AioContext of the given coroutine + */ +AioContext *qemu_coroutine_get_aio_context(Coroutine *co); + +/** + * Get the currently executing coroutine + */ +Coroutine *qemu_coroutine_self(void); + +/** + * Return whether or not currently inside a coroutine + * + * This can be used to write functions that work both when in coroutine context + * and when not in coroutine context. Note that such functions cannot use the + * coroutine_fn annotation since they work outside coroutine context. + */ +bool qemu_in_coroutine(void); + +/** + * Return true if the coroutine is currently entered + * + * A coroutine is "entered" if it has not yielded from the current + * qemu_coroutine_enter() call used to run it. This does not mean that the + * coroutine is currently executing code since it may have transferred control + * to another coroutine using qemu_coroutine_enter(). + * + * When several coroutines enter each other there may be no way to know which + * ones have already been entered. In such situations this function can be + * used to avoid recursively entering coroutines. + */ +bool qemu_coroutine_entered(Coroutine *co); + +/** + * Initialises a CoMutex. This must be called before any other operation is used + * on the CoMutex. + */ +void qemu_co_mutex_init(CoMutex *mutex); + +/** + * Locks the mutex. If the lock cannot be taken immediately, control is + * transferred to the caller of the current coroutine. + */ +void coroutine_fn qemu_co_mutex_lock(CoMutex *mutex); + +/** + * Unlocks the mutex and schedules the next coroutine that was waiting for this + * lock to be run. + */ +void coroutine_fn qemu_co_mutex_unlock(CoMutex *mutex); + +#endif diff --git a/include/qemu/coroutine.h b/include/qemu/coroutine.h index 2496a4f4ef..a65be6697f 100644 --- a/include/qemu/coroutine.h +++ b/include/qemu/coroutine.h @@ -15,6 +15,7 @@ #ifndef QEMU_COROUTINE_H #define QEMU_COROUTINE_H +#include "qemu/coroutine-core.h" #include "qemu/queue.h" #include "qemu/timer.h" @@ -40,84 +41,6 @@ * it possible and in the meantime it serves as documentation. */ -typedef struct Coroutine Coroutine; - -/** - * Coroutine entry point - * - * When the coroutine is entered for the first time, opaque is passed in as an - * argument. - * - * When this function returns, the coroutine is destroyed automatically and - * execution continues in the caller who last entered the coroutine. - */ -typedef void coroutine_fn CoroutineEntry(void *opaque); - -/** - * Create a new coroutine - * - * Use qemu_coroutine_enter() to actually transfer control to the coroutine. - * The opaque argument is passed as the argument to the entry point. - */ -Coroutine *qemu_coroutine_create(CoroutineEntry *entry, void *opaque); - -/** - * Transfer control to a coroutine - */ -void qemu_coroutine_enter(Coroutine *coroutine); - -/** - * Transfer control to a coroutine if it's not active (i.e. part of the call - * stack of the running coroutine). Otherwise, do nothing. - */ -void qemu_coroutine_enter_if_inactive(Coroutine *co); - -/** - * Transfer control to a coroutine and associate it with ctx - */ -void qemu_aio_coroutine_enter(AioContext *ctx, Coroutine *co); - -/** - * Transfer control back to a coroutine's caller - * - * This function does not return until the coroutine is re-entered using - * qemu_coroutine_enter(). - */ -void coroutine_fn qemu_coroutine_yield(void); - -/** - * Get the AioContext of the given coroutine - */ -AioContext *qemu_coroutine_get_aio_context(Coroutine *co); - -/** - * Get the currently executing coroutine - */ -Coroutine *qemu_coroutine_self(void); - -/** - * Return whether or not currently inside a coroutine - * - * This can be used to write functions that work both when in coroutine context - * and when not in coroutine context. Note that such functions cannot use the - * coroutine_fn annotation since they work outside coroutine context. - */ -bool qemu_in_coroutine(void); - -/** - * Return true if the coroutine is currently entered - * - * A coroutine is "entered" if it has not yielded from the current - * qemu_coroutine_enter() call used to run it. This does not mean that the - * coroutine is currently executing code since it may have transferred control - * to another coroutine using qemu_coroutine_enter(). - * - * When several coroutines enter each other there may be no way to know which - * ones have already been entered. In such situations this function can be - * used to avoid recursively entering coroutines. - */ -bool qemu_coroutine_entered(Coroutine *co); - /** * Provides a mutex that can be used to synchronise coroutines */ @@ -145,24 +68,6 @@ struct CoMutex { Coroutine *holder; }; -/** - * Initialises a CoMutex. This must be called before any other operation is used - * on the CoMutex. - */ -void qemu_co_mutex_init(CoMutex *mutex); - -/** - * Locks the mutex. If the lock cannot be taken immediately, control is - * transferred to the caller of the current coroutine. - */ -void coroutine_fn qemu_co_mutex_lock(CoMutex *mutex); - -/** - * Unlocks the mutex and schedules the next coroutine that was waiting for this - * lock to be run. - */ -void coroutine_fn qemu_co_mutex_unlock(CoMutex *mutex); - /** * Assert that the current coroutine holds @mutex. */ diff --git a/include/qemu/lockable.h b/include/qemu/lockable.h index 86db7cb04c..9823220446 100644 --- a/include/qemu/lockable.h +++ b/include/qemu/lockable.h @@ -13,7 +13,7 @@ #ifndef QEMU_LOCKABLE_H #define QEMU_LOCKABLE_H -#include "qemu/coroutine.h" +#include "qemu/coroutine-core.h" #include "qemu/thread.h" typedef void QemuLockUnlockFunc(void *); diff --git a/include/qemu/typedefs.h b/include/qemu/typedefs.h index fba04875c2..c7c8a85315 100644 --- a/include/qemu/typedefs.h +++ b/include/qemu/typedefs.h @@ -38,7 +38,6 @@ typedef struct BusState BusState; typedef struct Chardev Chardev; typedef struct Clock Clock; typedef struct CompatProperty CompatProperty; -typedef struct CoMutex CoMutex; typedef struct ConfidentialGuestSupport ConfidentialGuestSupport; typedef struct CPUAddressSpace CPUAddressSpace; typedef struct CPUArchState CPUArchState; diff --git a/nbd/client-connection.c b/nbd/client-connection.c index 0c5f917efa..e5b1046a1c 100644 --- a/nbd/client-connection.c +++ b/nbd/client-connection.c @@ -29,6 +29,7 @@ #include "qapi/qapi-visit-sockets.h" #include "qapi/clone-visitor.h" +#include "qemu/coroutine.h" struct NBDClientConnection { /* Initialization constants, never change */ diff --git a/tests/unit/test-aio.c b/tests/unit/test-aio.c index 178048d2f2..321d7ab01a 100644 --- a/tests/unit/test-aio.c +++ b/tests/unit/test-aio.c @@ -16,7 +16,7 @@ #include "qemu/timer.h" #include "qemu/sockets.h" #include "qemu/error-report.h" -#include "qemu/coroutine.h" +#include "qemu/coroutine-core.h" #include "qemu/main-loop.h" static AioContext *ctx; diff --git a/ui/console.c b/ui/console.c index 9ff9217f9b..ab43561fe1 100644 --- a/ui/console.c +++ b/ui/console.c @@ -27,6 +27,7 @@ #include "hw/qdev-core.h" #include "qapi/error.h" #include "qapi/qapi-commands-ui.h" +#include "qemu/coroutine.h" #include "qemu/fifo8.h" #include "qemu/main-loop.h" #include "qemu/module.h" From patchwork Fri Jan 20 07:01:15 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Markus Armbruster X-Patchwork-Id: 13109270 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org 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 smtp.lore.kernel.org (Postfix) with ESMTPS id BFD50C25B50 for ; Fri, 20 Jan 2023 07:07:25 +0000 (UTC) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1pIlPH-0000CZ-HL; Fri, 20 Jan 2023 02:01:47 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1pIlP4-00005j-B7 for qemu-devel@nongnu.org; Fri, 20 Jan 2023 02:01:34 -0500 Received: from us-smtp-delivery-124.mimecast.com ([170.10.129.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1pIlP2-0005Hv-Iy for qemu-devel@nongnu.org; Fri, 20 Jan 2023 02:01:34 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1674198091; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=UmOkepH9Z50W+1dDWCybW72eYrz1ePmOIKDmLJag9i0=; b=iUtl7S+xV+Hl39BV1bqa+EFPTcXw1j77F/VdCUDWUTo30ZtENHPujerUw0KF+8f0YOWdxN P8qU0UdPkK5T4suqwayuiheg7IriUyxKjHUcjotXPlCuKBNSfurvggPa0gtF1jUxQrSU38 WumP7KAgGgEDyqzbTCjahGVzgrz2PpY= Received: from mimecast-mx02.redhat.com (mimecast-mx02.redhat.com [66.187.233.88]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id us-mta-593-pn7O9HZXOO6qNkGsRyXLcQ-1; Fri, 20 Jan 2023 02:01:25 -0500 X-MC-Unique: pn7O9HZXOO6qNkGsRyXLcQ-1 Received: from smtp.corp.redhat.com (int-mx05.intmail.prod.int.rdu2.redhat.com [10.11.54.5]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx02.redhat.com (Postfix) with ESMTPS id 16E9185A588; Fri, 20 Jan 2023 07:01:25 +0000 (UTC) Received: from blackfin.pond.sub.org (unknown [10.39.192.70]) by smtp.corp.redhat.com (Postfix) with ESMTPS id E71FE1759E; Fri, 20 Jan 2023 07:01:24 +0000 (UTC) Received: by blackfin.pond.sub.org (Postfix, from userid 1000) id 8DA3121E669F; Fri, 20 Jan 2023 08:01:22 +0100 (CET) From: Markus Armbruster To: qemu-devel@nongnu.org Cc: peter.maydell@linaro.org, =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= Subject: [PULL 05/12] coroutine: Use Coroutine typedef name instead of structure tag Date: Fri, 20 Jan 2023 08:01:15 +0100 Message-Id: <20230120070122.3982588-6-armbru@redhat.com> In-Reply-To: <20230120070122.3982588-1-armbru@redhat.com> References: <20230120070122.3982588-1-armbru@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 3.1 on 10.11.54.5 Received-SPF: pass client-ip=170.10.129.124; envelope-from=armbru@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -27 X-Spam_score: -2.8 X-Spam_bar: -- X-Spam_report: (-2.8 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_LOW=-0.7, RCVD_IN_MSPIKE_H2=-0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org Sender: qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org Signed-off-by: Markus Armbruster Reviewed-by: Philippe Mathieu-Daudé Message-Id: <20221221131435.3851212-6-armbru@redhat.com> --- include/block/aio.h | 7 +++---- util/async.c | 4 ++-- 2 files changed, 5 insertions(+), 6 deletions(-) diff --git a/include/block/aio.h b/include/block/aio.h index 3a546e7515..8fba6a3584 100644 --- a/include/block/aio.h +++ b/include/block/aio.h @@ -52,7 +52,6 @@ typedef void QEMUBHFunc(void *opaque); typedef bool AioPollFn(void *opaque); typedef void IOHandler(void *opaque); -struct Coroutine; struct ThreadPool; struct LinuxAioState; struct LuringState; @@ -694,7 +693,7 @@ static inline bool aio_node_check(AioContext *ctx, bool is_external) * is the context in which the coroutine is running (i.e. the value of * qemu_get_current_aio_context() from the coroutine itself). */ -void aio_co_schedule(AioContext *ctx, struct Coroutine *co); +void aio_co_schedule(AioContext *ctx, Coroutine *co); /** * aio_co_reschedule_self: @@ -717,7 +716,7 @@ void coroutine_fn aio_co_reschedule_self(AioContext *new_ctx); * context. The coroutine must not be entered by anyone else while * aio_co_wake() is active. */ -void aio_co_wake(struct Coroutine *co); +void aio_co_wake(Coroutine *co); /** * aio_co_enter: @@ -726,7 +725,7 @@ void aio_co_wake(struct Coroutine *co); * * Enter a coroutine in the specified AioContext. */ -void aio_co_enter(AioContext *ctx, struct Coroutine *co); +void aio_co_enter(AioContext *ctx, Coroutine *co); /** * Return the AioContext whose event loop runs in the current thread. diff --git a/util/async.c b/util/async.c index 14d63b3091..0657b75397 100644 --- a/util/async.c +++ b/util/async.c @@ -640,7 +640,7 @@ void coroutine_fn aio_co_reschedule_self(AioContext *new_ctx) } } -void aio_co_wake(struct Coroutine *co) +void aio_co_wake(Coroutine *co) { AioContext *ctx; @@ -653,7 +653,7 @@ void aio_co_wake(struct Coroutine *co) aio_co_enter(ctx, co); } -void aio_co_enter(AioContext *ctx, struct Coroutine *co) +void aio_co_enter(AioContext *ctx, Coroutine *co) { if (ctx != qemu_get_current_aio_context()) { aio_co_schedule(ctx, co); From patchwork Fri Jan 20 07:01:16 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Markus Armbruster X-Patchwork-Id: 13109260 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org 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 smtp.lore.kernel.org (Postfix) with ESMTPS id 95DBCC25B4E for ; Fri, 20 Jan 2023 07:03:18 +0000 (UTC) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1pIlPG-0000Bz-Pd; Fri, 20 Jan 2023 02:01:46 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1pIlPB-000093-H5 for qemu-devel@nongnu.org; Fri, 20 Jan 2023 02:01:41 -0500 Received: from us-smtp-delivery-124.mimecast.com ([170.10.133.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1pIlP8-0005Jk-5C for qemu-devel@nongnu.org; Fri, 20 Jan 2023 02:01:41 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1674198097; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=dNteV/CjoG/nz3pQDw5Vct2pvRdNS0D611pKwiF8riY=; b=WY3JKHLpQYa8b6DQl5cGy8hgcTWgtAwX/8nvCDkIW7xqQXzT0GCd0++jCeLaX7L0cNCN7I ex1/YIcTNkPuMGFhEtfo0LCI+KeERsY8yVWguiL7PJ2G7E1mXkaT72mwxh2jsrkaEecrPt upgf+BiDCw/8kEmKQA/wI//NdLJQPPM= Received: from mimecast-mx02.redhat.com (mx3-rdu2.redhat.com [66.187.233.73]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id us-mta-172-Fo3_iDkKMcm6j36W5W28ig-1; Fri, 20 Jan 2023 02:01:25 -0500 X-MC-Unique: Fo3_iDkKMcm6j36W5W28ig-1 Received: from smtp.corp.redhat.com (int-mx04.intmail.prod.int.rdu2.redhat.com [10.11.54.4]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx02.redhat.com (Postfix) with ESMTPS id 6F9391C068C1; Fri, 20 Jan 2023 07:01:25 +0000 (UTC) Received: from blackfin.pond.sub.org (unknown [10.39.192.70]) by smtp.corp.redhat.com (Postfix) with ESMTPS id E6C8D2026D76; Fri, 20 Jan 2023 07:01:24 +0000 (UTC) Received: by blackfin.pond.sub.org (Postfix, from userid 1000) id 9097821E66A4; Fri, 20 Jan 2023 08:01:22 +0100 (CET) From: Markus Armbruster To: qemu-devel@nongnu.org Cc: peter.maydell@linaro.org Subject: [PULL 06/12] include/block: Untangle inclusion loops Date: Fri, 20 Jan 2023 08:01:16 +0100 Message-Id: <20230120070122.3982588-7-armbru@redhat.com> In-Reply-To: <20230120070122.3982588-1-armbru@redhat.com> References: <20230120070122.3982588-1-armbru@redhat.com> MIME-Version: 1.0 Content-type: text/plain X-Scanned-By: MIMEDefang 3.1 on 10.11.54.4 Received-SPF: pass client-ip=170.10.133.124; envelope-from=armbru@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H2=-0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org Sender: qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org We have two inclusion loops: block/block.h -> block/block-global-state.h -> block/block-common.h -> block/blockjob.h -> block/block.h block/block.h -> block/block-io.h -> block/block-common.h -> block/blockjob.h -> block/block.h I believe these go back to Emanuele's reorganization of the block API, merged a few months ago in commit d7e2fe4aac8. Fortunately, breaking them is merely a matter of deleting unnecessary includes from headers, and adding them back in places where they are now missing. Signed-off-by: Markus Armbruster Message-Id: <20221221133551.3967339-2-armbru@redhat.com> --- include/block/block-common.h | 9 ++------- include/block/block-copy.h | 4 ++-- include/block/block-global-state.h | 4 +++- include/block/block-hmp-cmds.h | 2 ++ include/block/block-io.h | 5 ++++- include/block/block.h | 4 ++-- include/block/block_backup.h | 2 +- include/block/block_int-common.h | 14 +++++--------- include/block/block_int-global-state.h | 5 ++++- include/block/block_int-io.h | 4 +++- include/block/block_int.h | 4 ++-- include/block/blockjob.h | 2 +- include/block/blockjob_int.h | 1 - include/block/dirty-bitmap.h | 1 + include/block/qapi.h | 2 +- include/block/thread-pool.h | 2 +- include/block/throttle-groups.h | 2 +- include/sysemu/block-backend-io.h | 1 + block.c | 1 + block/amend.c | 1 + block/backup.c | 1 + block/blkdebug.c | 1 + block/blklogwrites.c | 1 + block/blkreplay.c | 1 + block/blkverify.c | 1 + block/block-copy.c | 4 ++++ block/bochs.c | 1 + block/cloop.c | 1 + block/copy-before-write.c | 1 + block/copy-on-read.c | 1 + block/curl.c | 1 + block/dirty-bitmap.c | 2 ++ block/dmg.c | 1 + block/export/fuse.c | 3 ++- block/file-posix.c | 1 + block/file-win32.c | 1 + block/filter-compress.c | 1 + block/gluster.c | 1 + block/io.c | 1 + block/iscsi.c | 1 + block/mirror.c | 1 + block/monitor/bitmap-qmp-cmds.c | 2 ++ block/nfs.c | 1 + block/null.c | 1 + block/nvme.c | 1 + block/parallels-ext.c | 2 ++ block/preallocate.c | 1 + block/qapi-sysemu.c | 1 + block/qapi.c | 1 + block/qcow2-bitmap.c | 2 ++ block/qcow2-cache.c | 1 + block/qcow2-cluster.c | 1 + block/qcow2-refcount.c | 1 + block/qcow2-threads.c | 1 + block/qcow2.c | 1 + block/qed-check.c | 1 + block/qed-table.c | 1 + block/raw-format.c | 1 + block/rbd.c | 1 + block/ssh.c | 1 + block/throttle.c | 2 ++ block/vhdx-log.c | 1 + block/vvfat.c | 1 + block/win32-aio.c | 1 + block/write-threshold.c | 1 + blockdev.c | 1 + blockjob.c | 1 + hw/block/block.c | 1 + hw/sparc64/niagara.c | 1 + hw/virtio/virtio-pmem.c | 1 + migration/block-dirty-bitmap.c | 1 + migration/block.c | 1 + migration/savevm.c | 1 + monitor/qmp-cmds.c | 1 + nbd/server.c | 2 ++ qemu-img.c | 1 + softmmu/cpus.c | 1 + softmmu/physmem.c | 1 + storage-daemon/qemu-storage-daemon.c | 1 + target/i386/kvm/kvm.c | 1 + tests/unit/test-bdrv-drain.c | 2 +- tests/unit/test-block-iothread.c | 1 + scripts/block-coroutine-wrapper.py | 3 ++- 83 files changed, 112 insertions(+), 35 deletions(-) diff --git a/include/block/block-common.h b/include/block/block-common.h index 434ffc5d34..41686810de 100644 --- a/include/block/block-common.h +++ b/include/block/block-common.h @@ -24,12 +24,8 @@ #ifndef BLOCK_COMMON_H #define BLOCK_COMMON_H -#include "block/aio.h" -#include "block/aio-wait.h" -#include "qemu/iov.h" -#include "block/accounting.h" -#include "qemu/hbitmap.h" -#include "qemu/transactions.h" +#include "qapi/qapi-types-block-core.h" +#include "qemu/queue.h" /* * co_wrapper{*}: Function specifiers used by block-coroutine-wrapper.py @@ -55,7 +51,6 @@ #define co_wrapper_bdrv_rdlock #define co_wrapper_mixed_bdrv_rdlock -#include "block/dirty-bitmap.h" #include "block/blockjob.h" /* block.c */ diff --git a/include/block/block-copy.h b/include/block/block-copy.h index 8cea4f9b90..d0f8386554 100644 --- a/include/block/block-copy.h +++ b/include/block/block-copy.h @@ -15,8 +15,8 @@ #ifndef BLOCK_COPY_H #define BLOCK_COPY_H -#include "block/block.h" -#include "qemu/co-shared-resource.h" +#include "block/block-common.h" +#include "qemu/progress_meter.h" /* All APIs are thread-safe */ diff --git a/include/block/block-global-state.h b/include/block/block-global-state.h index b0a3cfe6b8..a38f86dc15 100644 --- a/include/block/block-global-state.h +++ b/include/block/block-global-state.h @@ -24,7 +24,9 @@ #ifndef BLOCK_GLOBAL_STATE_H #define BLOCK_GLOBAL_STATE_H -#include "block-common.h" +#include "block/block-common.h" +#include "qemu/coroutine.h" +#include "qemu/transactions.h" /* * Global state (GS) API. These functions run under the BQL. diff --git a/include/block/block-hmp-cmds.h b/include/block/block-hmp-cmds.h index ba0593c440..71113cd7ef 100644 --- a/include/block/block-hmp-cmds.h +++ b/include/block/block-hmp-cmds.h @@ -15,6 +15,8 @@ #ifndef BLOCK_BLOCK_HMP_CMDS_H #define BLOCK_BLOCK_HMP_CMDS_H +#include "qemu/coroutine.h" + void hmp_drive_add(Monitor *mon, const QDict *qdict); void hmp_commit(Monitor *mon, const QDict *qdict); diff --git a/include/block/block-io.h b/include/block/block-io.h index 2ed6214909..3398351596 100644 --- a/include/block/block-io.h +++ b/include/block/block-io.h @@ -24,7 +24,10 @@ #ifndef BLOCK_IO_H #define BLOCK_IO_H -#include "block-common.h" +#include "block/aio-wait.h" +#include "block/block-common.h" +#include "qemu/coroutine.h" +#include "qemu/iov.h" /* * I/O API functions. These functions are thread-safe, and therefore diff --git a/include/block/block.h b/include/block/block.h index 1e6b8fef1e..e2c647de27 100644 --- a/include/block/block.h +++ b/include/block/block.h @@ -24,8 +24,8 @@ #ifndef BLOCK_H #define BLOCK_H -#include "block-global-state.h" -#include "block-io.h" +#include "block/block-global-state.h" +#include "block/block-io.h" /* DO NOT ADD ANYTHING IN HERE. USE ONE OF THE HEADERS INCLUDED ABOVE */ diff --git a/include/block/block_backup.h b/include/block/block_backup.h index 157596c296..4d4d5ba153 100644 --- a/include/block/block_backup.h +++ b/include/block/block_backup.h @@ -18,7 +18,7 @@ #ifndef BLOCK_BACKUP_H #define BLOCK_BACKUP_H -#include "block/block_int.h" +#include "block/blockjob.h" void backup_do_checkpoint(BlockJob *job, Error **errp); diff --git a/include/block/block_int-common.h b/include/block/block_int-common.h index c34c525fa6..887ace7dbd 100644 --- a/include/block/block_int-common.h +++ b/include/block/block_int-common.h @@ -24,17 +24,13 @@ #ifndef BLOCK_INT_COMMON_H #define BLOCK_INT_COMMON_H -#include "block/accounting.h" -#include "block/block.h" -#include "block/aio-wait.h" -#include "qemu/queue.h" -#include "qemu/coroutine.h" -#include "qemu/stats64.h" -#include "qemu/timer.h" -#include "qemu/hbitmap.h" +#include "block/aio.h" +#include "block/block-common.h" +#include "block/block-global-state.h" #include "block/snapshot.h" -#include "qemu/throttle.h" +#include "qemu/iov.h" #include "qemu/rcu.h" +#include "qemu/stats64.h" #define BLOCK_FLAG_LAZY_REFCOUNTS 8 diff --git a/include/block/block_int-global-state.h b/include/block/block_int-global-state.h index 2f0993f6e9..902406eb99 100644 --- a/include/block/block_int-global-state.h +++ b/include/block/block_int-global-state.h @@ -25,7 +25,10 @@ #ifndef BLOCK_INT_GLOBAL_STATE_H #define BLOCK_INT_GLOBAL_STATE_H -#include "block_int-common.h" +#include "block/blockjob.h" +#include "block/block_int-common.h" +#include "qemu/hbitmap.h" +#include "qemu/main-loop.h" /* * Global state (GS) API. These functions run under the BQL. diff --git a/include/block/block_int-io.h b/include/block/block_int-io.h index 8bc061ebb8..44367219f4 100644 --- a/include/block/block_int-io.h +++ b/include/block/block_int-io.h @@ -24,7 +24,9 @@ #ifndef BLOCK_INT_IO_H #define BLOCK_INT_IO_H -#include "block_int-common.h" +#include "block/block_int-common.h" +#include "qemu/hbitmap.h" +#include "qemu/main-loop.h" /* * I/O API functions. These functions are thread-safe. diff --git a/include/block/block_int.h b/include/block/block_int.h index b35b0138ed..567a178e13 100644 --- a/include/block/block_int.h +++ b/include/block/block_int.h @@ -24,8 +24,8 @@ #ifndef BLOCK_INT_H #define BLOCK_INT_H -#include "block_int-global-state.h" -#include "block_int-io.h" +#include "block/block_int-global-state.h" +#include "block/block_int-io.h" #include "block/graph-lock.h" /* DO NOT ADD ANYTHING IN HERE. USE ONE OF THE HEADERS INCLUDED ABOVE */ diff --git a/include/block/blockjob.h b/include/block/blockjob.h index 03032b2eca..058b0c824c 100644 --- a/include/block/blockjob.h +++ b/include/block/blockjob.h @@ -26,8 +26,8 @@ #ifndef BLOCKJOB_H #define BLOCKJOB_H +#include "qapi/qapi-types-block-core.h" #include "qemu/job.h" -#include "block/block.h" #include "qemu/ratelimit.h" #define BLOCK_JOB_SLICE_TIME 100000000ULL /* ns */ diff --git a/include/block/blockjob_int.h b/include/block/blockjob_int.h index 6bd9ae2b20..f008446285 100644 --- a/include/block/blockjob_int.h +++ b/include/block/blockjob_int.h @@ -27,7 +27,6 @@ #define BLOCKJOB_INT_H #include "block/blockjob.h" -#include "block/block.h" /** * BlockJobDriver: diff --git a/include/block/dirty-bitmap.h b/include/block/dirty-bitmap.h index c3700cec76..233535ef2d 100644 --- a/include/block/dirty-bitmap.h +++ b/include/block/dirty-bitmap.h @@ -1,6 +1,7 @@ #ifndef BLOCK_DIRTY_BITMAP_H #define BLOCK_DIRTY_BITMAP_H +#include "block/block-common.h" #include "qapi/qapi-types-block-core.h" #include "qemu/hbitmap.h" diff --git a/include/block/qapi.h b/include/block/qapi.h index 22c7807c89..865fb974d4 100644 --- a/include/block/qapi.h +++ b/include/block/qapi.h @@ -25,8 +25,8 @@ #ifndef BLOCK_QAPI_H #define BLOCK_QAPI_H -#include "block/block.h" #include "block/snapshot.h" +#include "qapi/qapi-types-block-core.h" BlockDeviceInfo *bdrv_block_device_info(BlockBackend *blk, BlockDriverState *bs, diff --git a/include/block/thread-pool.h b/include/block/thread-pool.h index 2020bcc92d..95ff2b0bdb 100644 --- a/include/block/thread-pool.h +++ b/include/block/thread-pool.h @@ -18,7 +18,7 @@ #ifndef QEMU_THREAD_POOL_H #define QEMU_THREAD_POOL_H -#include "block/block.h" +#include "block/aio.h" #define THREAD_POOL_MAX_THREADS_DEFAULT 64 diff --git a/include/block/throttle-groups.h b/include/block/throttle-groups.h index 9541b32432..ff282fc0f8 100644 --- a/include/block/throttle-groups.h +++ b/include/block/throttle-groups.h @@ -25,8 +25,8 @@ #ifndef THROTTLE_GROUPS_H #define THROTTLE_GROUPS_H +#include "qemu/coroutine.h" #include "qemu/throttle.h" -#include "block/block_int.h" #include "qom/object.h" /* The ThrottleGroupMember structure indicates membership in a ThrottleGroup diff --git a/include/sysemu/block-backend-io.h b/include/sysemu/block-backend-io.h index 7ec6d978d4..031a27ba10 100644 --- a/include/sysemu/block-backend-io.h +++ b/include/sysemu/block-backend-io.h @@ -14,6 +14,7 @@ #define BLOCK_BACKEND_IO_H #include "block-backend-common.h" +#include "block/accounting.h" /* * I/O API functions. These functions are thread-safe. diff --git a/block.c b/block.c index 9c2ac757e4..b4a89207ad 100644 --- a/block.c +++ b/block.c @@ -27,6 +27,7 @@ #include "block/trace.h" #include "block/block_int.h" #include "block/blockjob.h" +#include "block/dirty-bitmap.h" #include "block/fuse.h" #include "block/nbd.h" #include "block/qdict.h" diff --git a/block/amend.c b/block/amend.c index f696a006e3..bc4bb7b416 100644 --- a/block/amend.c +++ b/block/amend.c @@ -26,6 +26,7 @@ */ #include "qemu/osdep.h" +#include "block/block-io.h" #include "block/block_int.h" #include "qemu/job.h" #include "qemu/main-loop.h" diff --git a/block/backup.c b/block/backup.c index 6a9ad97a53..824d39acaa 100644 --- a/block/backup.c +++ b/block/backup.c @@ -20,6 +20,7 @@ #include "block/blockjob_int.h" #include "block/block_backup.h" #include "block/block-copy.h" +#include "block/dirty-bitmap.h" #include "qapi/error.h" #include "qapi/qmp/qerror.h" #include "qemu/cutils.h" diff --git a/block/blkdebug.c b/block/blkdebug.c index ca65b043f0..fa38c1cf7d 100644 --- a/block/blkdebug.c +++ b/block/blkdebug.c @@ -27,6 +27,7 @@ #include "qapi/error.h" #include "qemu/cutils.h" #include "qemu/config-file.h" +#include "block/block-io.h" #include "block/block_int.h" #include "block/qdict.h" #include "qemu/module.h" diff --git a/block/blklogwrites.c b/block/blklogwrites.c index cef9efe55d..a5bf767184 100644 --- a/block/blklogwrites.c +++ b/block/blklogwrites.c @@ -12,6 +12,7 @@ #include "qemu/osdep.h" #include "qapi/error.h" #include "qemu/sockets.h" /* for EINPROGRESS on Windows */ +#include "block/block-io.h" #include "block/block_int.h" #include "qapi/qmp/qdict.h" #include "qapi/qmp/qstring.h" diff --git a/block/blkreplay.c b/block/blkreplay.c index 76a0b8d12a..e3b6a3efb2 100644 --- a/block/blkreplay.c +++ b/block/blkreplay.c @@ -11,6 +11,7 @@ #include "qemu/osdep.h" #include "qemu/module.h" +#include "block/block-io.h" #include "block/block_int.h" #include "sysemu/replay.h" #include "qapi/error.h" diff --git a/block/blkverify.c b/block/blkverify.c index c60a2dc624..0e78bc9dd6 100644 --- a/block/blkverify.c +++ b/block/blkverify.c @@ -10,6 +10,7 @@ #include "qemu/osdep.h" #include "qapi/error.h" #include "qemu/sockets.h" /* for EINPROGRESS on Windows */ +#include "block/block-io.h" #include "block/block_int.h" #include "qapi/qmp/qdict.h" #include "qapi/qmp/qstring.h" diff --git a/block/block-copy.c b/block/block-copy.c index 5e59d6262f..30a4da0f2e 100644 --- a/block/block-copy.c +++ b/block/block-copy.c @@ -17,10 +17,14 @@ #include "trace.h" #include "qapi/error.h" #include "block/block-copy.h" +#include "block/block_int-io.h" +#include "block/dirty-bitmap.h" #include "block/reqlist.h" #include "sysemu/block-backend.h" #include "qemu/units.h" +#include "qemu/co-shared-resource.h" #include "qemu/coroutine.h" +#include "qemu/ratelimit.h" #include "block/aio_task.h" #include "qemu/error-report.h" #include "qemu/memalign.h" diff --git a/block/bochs.c b/block/bochs.c index e30e3908d9..46e7958316 100644 --- a/block/bochs.c +++ b/block/bochs.c @@ -24,6 +24,7 @@ */ #include "qemu/osdep.h" #include "qapi/error.h" +#include "block/block-io.h" #include "block/block_int.h" #include "qemu/module.h" #include "qemu/bswap.h" diff --git a/block/cloop.c b/block/cloop.c index 3ff975a94d..1e5a52d6b2 100644 --- a/block/cloop.c +++ b/block/cloop.c @@ -24,6 +24,7 @@ #include "qemu/osdep.h" #include "qapi/error.h" #include "qemu/error-report.h" +#include "block/block-io.h" #include "block/block_int.h" #include "qemu/module.h" #include "qemu/bswap.h" diff --git a/block/copy-before-write.c b/block/copy-before-write.c index 70c4ba7432..c9fb809ba0 100644 --- a/block/copy-before-write.c +++ b/block/copy-before-write.c @@ -32,6 +32,7 @@ #include "block/block_int.h" #include "block/qdict.h" #include "block/block-copy.h" +#include "block/dirty-bitmap.h" #include "block/copy-before-write.h" #include "block/reqlist.h" diff --git a/block/copy-on-read.c b/block/copy-on-read.c index 815ac1d835..13ed4150a6 100644 --- a/block/copy-on-read.c +++ b/block/copy-on-read.c @@ -21,6 +21,7 @@ */ #include "qemu/osdep.h" +#include "block/block-io.h" #include "block/block_int.h" #include "qemu/module.h" #include "qapi/error.h" diff --git a/block/curl.c b/block/curl.c index cba4c4cac7..bf45fa3244 100644 --- a/block/curl.c +++ b/block/curl.c @@ -27,6 +27,7 @@ #include "qemu/error-report.h" #include "qemu/module.h" #include "qemu/option.h" +#include "block/block-io.h" #include "block/block_int.h" #include "qapi/qmp/qdict.h" #include "qapi/qmp/qstring.h" diff --git a/block/dirty-bitmap.c b/block/dirty-bitmap.c index 956feeb2ae..1e7aee4010 100644 --- a/block/dirty-bitmap.c +++ b/block/dirty-bitmap.c @@ -24,8 +24,10 @@ #include "qemu/osdep.h" #include "qapi/error.h" #include "trace.h" +#include "block/block-io.h" #include "block/block_int.h" #include "block/blockjob.h" +#include "block/dirty-bitmap.h" #include "qemu/main-loop.h" struct BdrvDirtyBitmap { diff --git a/block/dmg.c b/block/dmg.c index 675e840ca5..e10b9a2ba5 100644 --- a/block/dmg.c +++ b/block/dmg.c @@ -23,6 +23,7 @@ */ #include "qemu/osdep.h" #include "qapi/error.h" +#include "block/block-io.h" #include "block/block_int.h" #include "qemu/bswap.h" #include "qemu/error-report.h" diff --git a/block/export/fuse.c b/block/export/fuse.c index 1b26ddfcf3..e5fc4af165 100644 --- a/block/export/fuse.c +++ b/block/export/fuse.c @@ -21,12 +21,13 @@ #include "qemu/osdep.h" #include "qemu/memalign.h" #include "block/aio.h" -#include "block/block.h" +#include "block/block_int-common.h" #include "block/export.h" #include "block/fuse.h" #include "block/qapi.h" #include "qapi/error.h" #include "qapi/qapi-commands-block.h" +#include "qemu/main-loop.h" #include "sysemu/block-backend.h" #include diff --git a/block/file-posix.c b/block/file-posix.c index b9955db205..fa227d9d14 100644 --- a/block/file-posix.c +++ b/block/file-posix.c @@ -26,6 +26,7 @@ #include "qapi/error.h" #include "qemu/cutils.h" #include "qemu/error-report.h" +#include "block/block-io.h" #include "block/block_int.h" #include "qemu/module.h" #include "qemu/option.h" diff --git a/block/file-win32.c b/block/file-win32.c index ec9d64d0e4..12be9c3d0f 100644 --- a/block/file-win32.c +++ b/block/file-win32.c @@ -25,6 +25,7 @@ #include "qemu/osdep.h" #include "qapi/error.h" #include "qemu/cutils.h" +#include "block/block-io.h" #include "block/block_int.h" #include "qemu/module.h" #include "qemu/option.h" diff --git a/block/filter-compress.c b/block/filter-compress.c index 305716c86c..0ff8d28661 100644 --- a/block/filter-compress.c +++ b/block/filter-compress.c @@ -22,6 +22,7 @@ */ #include "qemu/osdep.h" +#include "block/block-io.h" #include "block/block_int.h" #include "qemu/module.h" #include "qapi/error.h" diff --git a/block/gluster.c b/block/gluster.c index 7efc296399..1ad19ae915 100644 --- a/block/gluster.c +++ b/block/gluster.c @@ -11,6 +11,7 @@ #include "qemu/osdep.h" #include "qemu/units.h" #include +#include "block/block-io.h" #include "block/block_int.h" #include "block/qdict.h" #include "qapi/error.h" diff --git a/block/io.c b/block/io.c index a09b1b34ab..a09a19f7a7 100644 --- a/block/io.c +++ b/block/io.c @@ -30,6 +30,7 @@ #include "block/blockjob_int.h" #include "block/block_int.h" #include "block/coroutines.h" +#include "block/dirty-bitmap.h" #include "block/write-threshold.h" #include "qemu/cutils.h" #include "qemu/memalign.h" diff --git a/block/iscsi.c b/block/iscsi.c index a316d46d96..c16c592042 100644 --- a/block/iscsi.c +++ b/block/iscsi.c @@ -33,6 +33,7 @@ #include "qemu/error-report.h" #include "qemu/bitops.h" #include "qemu/bitmap.h" +#include "block/block-io.h" #include "block/block_int.h" #include "block/qdict.h" #include "scsi/constants.h" diff --git a/block/mirror.c b/block/mirror.c index 251adc5ae0..634815d78d 100644 --- a/block/mirror.c +++ b/block/mirror.c @@ -18,6 +18,7 @@ #include "trace.h" #include "block/blockjob_int.h" #include "block/block_int.h" +#include "block/dirty-bitmap.h" #include "sysemu/block-backend.h" #include "qapi/error.h" #include "qapi/qmp/qerror.h" diff --git a/block/monitor/bitmap-qmp-cmds.c b/block/monitor/bitmap-qmp-cmds.c index 282363606f..55f778f5af 100644 --- a/block/monitor/bitmap-qmp-cmds.c +++ b/block/monitor/bitmap-qmp-cmds.c @@ -32,7 +32,9 @@ #include "qemu/osdep.h" +#include "block/block-io.h" #include "block/block_int.h" +#include "block/dirty-bitmap.h" #include "qapi/qapi-commands-block.h" #include "qapi/error.h" diff --git a/block/nfs.c b/block/nfs.c index ece22353ac..5e288dfc83 100644 --- a/block/nfs.c +++ b/block/nfs.c @@ -30,6 +30,7 @@ #include "qemu/config-file.h" #include "qemu/error-report.h" #include "qapi/error.h" +#include "block/block-io.h" #include "block/block_int.h" #include "block/qdict.h" #include "trace.h" diff --git a/block/null.c b/block/null.c index 75f7d0db40..306e605fa1 100644 --- a/block/null.c +++ b/block/null.c @@ -16,6 +16,7 @@ #include "qapi/qmp/qstring.h" #include "qemu/module.h" #include "qemu/option.h" +#include "block/block-io.h" #include "block/block_int.h" #include "sysemu/replay.h" diff --git a/block/nvme.c b/block/nvme.c index 656624c585..1f1367640a 100644 --- a/block/nvme.c +++ b/block/nvme.c @@ -23,6 +23,7 @@ #include "qemu/option.h" #include "qemu/memalign.h" #include "qemu/vfio-helpers.h" +#include "block/block-io.h" #include "block/block_int.h" #include "sysemu/replay.h" #include "trace.h" diff --git a/block/parallels-ext.c b/block/parallels-ext.c index c9dbbf5089..8a109f005a 100644 --- a/block/parallels-ext.c +++ b/block/parallels-ext.c @@ -25,7 +25,9 @@ #include "qemu/osdep.h" #include "qapi/error.h" +#include "block/block-io.h" #include "block/block_int.h" +#include "block/dirty-bitmap.h" #include "parallels.h" #include "crypto/hash.h" #include "qemu/uuid.h" diff --git a/block/preallocate.c b/block/preallocate.c index d50ee7f49b..a51fc08515 100644 --- a/block/preallocate.c +++ b/block/preallocate.c @@ -30,6 +30,7 @@ #include "qemu/module.h" #include "qemu/option.h" #include "qemu/units.h" +#include "block/block-io.h" #include "block/block_int.h" diff --git a/block/qapi-sysemu.c b/block/qapi-sysemu.c index 0c7a1423de..7bd7554150 100644 --- a/block/qapi-sysemu.c +++ b/block/qapi-sysemu.c @@ -32,6 +32,7 @@ #include "qemu/osdep.h" +#include "block/block_int.h" #include "qapi/error.h" #include "qapi/qapi-commands-block.h" #include "qapi/qmp/qdict.h" diff --git a/block/qapi.c b/block/qapi.c index fea808425b..9b4da12966 100644 --- a/block/qapi.c +++ b/block/qapi.c @@ -26,6 +26,7 @@ #include "qemu/cutils.h" #include "block/qapi.h" #include "block/block_int.h" +#include "block/dirty-bitmap.h" #include "block/throttle-groups.h" #include "block/write-threshold.h" #include "qapi/error.h" diff --git a/block/qcow2-bitmap.c b/block/qcow2-bitmap.c index bcad567c0c..385260a1b5 100644 --- a/block/qcow2-bitmap.c +++ b/block/qcow2-bitmap.c @@ -26,6 +26,8 @@ */ #include "qemu/osdep.h" +#include "block/block-io.h" +#include "block/dirty-bitmap.h" #include "qapi/error.h" #include "qemu/cutils.h" diff --git a/block/qcow2-cache.c b/block/qcow2-cache.c index 54b2d5f4de..01c67bdddc 100644 --- a/block/qcow2-cache.c +++ b/block/qcow2-cache.c @@ -23,6 +23,7 @@ */ #include "qemu/osdep.h" +#include "block/block-io.h" #include "qemu/memalign.h" #include "qcow2.h" #include "trace.h" diff --git a/block/qcow2-cluster.c b/block/qcow2-cluster.c index 40ed847f97..870be106b6 100644 --- a/block/qcow2-cluster.c +++ b/block/qcow2-cluster.c @@ -25,6 +25,7 @@ #include "qemu/osdep.h" #include +#include "block/block-io.h" #include "qapi/error.h" #include "qcow2.h" #include "qemu/bswap.h" diff --git a/block/qcow2-refcount.c b/block/qcow2-refcount.c index 81264740f0..5ffbefee2e 100644 --- a/block/qcow2-refcount.c +++ b/block/qcow2-refcount.c @@ -23,6 +23,7 @@ */ #include "qemu/osdep.h" +#include "block/block-io.h" #include "qapi/error.h" #include "qcow2.h" #include "qemu/range.h" diff --git a/block/qcow2-threads.c b/block/qcow2-threads.c index 1914baf456..953bbe6df8 100644 --- a/block/qcow2-threads.c +++ b/block/qcow2-threads.c @@ -34,6 +34,7 @@ #endif #include "qcow2.h" +#include "block/block-io.h" #include "block/thread-pool.h" #include "crypto.h" diff --git a/block/qcow2.c b/block/qcow2.c index bafbd077b9..2e9c57e269 100644 --- a/block/qcow2.c +++ b/block/qcow2.c @@ -43,6 +43,7 @@ #include "qapi/qapi-visit-block-core.h" #include "crypto.h" #include "block/aio_task.h" +#include "block/dirty-bitmap.h" /* Differences with QCOW: diff --git a/block/qed-check.c b/block/qed-check.c index 418033ee24..a6612be00f 100644 --- a/block/qed-check.c +++ b/block/qed-check.c @@ -12,6 +12,7 @@ */ #include "qemu/osdep.h" +#include "block/block-io.h" #include "qed.h" typedef struct { diff --git a/block/qed-table.c b/block/qed-table.c index aa203f2627..e41c87a157 100644 --- a/block/qed-table.c +++ b/block/qed-table.c @@ -13,6 +13,7 @@ */ #include "qemu/osdep.h" +#include "block/block-io.h" #include "trace.h" #include "qemu/sockets.h" /* for EINPROGRESS on Windows */ #include "qed.h" diff --git a/block/raw-format.c b/block/raw-format.c index 28905b09ee..b6a0ce58f4 100644 --- a/block/raw-format.c +++ b/block/raw-format.c @@ -27,6 +27,7 @@ */ #include "qemu/osdep.h" +#include "block/block-io.h" #include "block/block_int.h" #include "qapi/error.h" #include "qemu/module.h" diff --git a/block/rbd.c b/block/rbd.c index 3aa6aae0e0..6167c5e424 100644 --- a/block/rbd.c +++ b/block/rbd.c @@ -18,6 +18,7 @@ #include "qemu/error-report.h" #include "qemu/module.h" #include "qemu/option.h" +#include "block/block-io.h" #include "block/block_int.h" #include "block/qdict.h" #include "crypto/secret.h" diff --git a/block/ssh.c b/block/ssh.c index 8508710f2f..8bd2a134c1 100644 --- a/block/ssh.c +++ b/block/ssh.c @@ -27,6 +27,7 @@ #include #include +#include "block/block-io.h" #include "block/block_int.h" #include "block/qdict.h" #include "qapi/error.h" diff --git a/block/throttle.c b/block/throttle.c index 88851c84f4..00cb46d0e5 100644 --- a/block/throttle.c +++ b/block/throttle.c @@ -18,6 +18,8 @@ */ #include "qemu/osdep.h" +#include "block/block-io.h" +#include "block/block_int.h" #include "block/throttle-groups.h" #include "qemu/module.h" #include "qemu/option.h" diff --git a/block/vhdx-log.c b/block/vhdx-log.c index 572582b87b..c48cf65d62 100644 --- a/block/vhdx-log.c +++ b/block/vhdx-log.c @@ -20,6 +20,7 @@ #include "qemu/osdep.h" #include "qapi/error.h" +#include "block/block-io.h" #include "block/block_int.h" #include "qemu/error-report.h" #include "qemu/bswap.h" diff --git a/block/vvfat.c b/block/vvfat.c index 723c91216e..d7d775bd2c 100644 --- a/block/vvfat.c +++ b/block/vvfat.c @@ -27,6 +27,7 @@ #include #include #include "qapi/error.h" +#include "block/block-io.h" #include "block/block_int.h" #include "block/qdict.h" #include "qemu/module.h" diff --git a/block/win32-aio.c b/block/win32-aio.c index aadc7b1bc3..ee87d6048f 100644 --- a/block/win32-aio.c +++ b/block/win32-aio.c @@ -24,6 +24,7 @@ #include "qemu/osdep.h" #include "qemu/timer.h" +#include "block/block-io.h" #include "block/block_int.h" #include "block/aio.h" #include "block/raw-aio.h" diff --git a/block/write-threshold.c b/block/write-threshold.c index 35cafbc22d..76d8885677 100644 --- a/block/write-threshold.c +++ b/block/write-threshold.c @@ -11,6 +11,7 @@ */ #include "qemu/osdep.h" +#include "block/block-io.h" #include "block/block_int.h" #include "block/write-threshold.h" #include "qapi/error.h" diff --git a/blockdev.c b/blockdev.c index ebf952cd21..fe9d8d89c0 100644 --- a/blockdev.c +++ b/blockdev.c @@ -35,6 +35,7 @@ #include "sysemu/blockdev.h" #include "hw/block/block.h" #include "block/blockjob.h" +#include "block/dirty-bitmap.h" #include "block/qdict.h" #include "block/throttle-groups.h" #include "monitor/monitor.h" diff --git a/blockjob.c b/blockjob.c index 54b4091a36..659c3cb9de 100644 --- a/blockjob.c +++ b/blockjob.c @@ -24,6 +24,7 @@ */ #include "qemu/osdep.h" +#include "block/aio-wait.h" #include "block/block.h" #include "block/blockjob_int.h" #include "block/block_int.h" diff --git a/hw/block/block.c b/hw/block/block.c index f9c4fe6767..ddcef71f80 100644 --- a/hw/block/block.c +++ b/hw/block/block.c @@ -8,6 +8,7 @@ */ #include "qemu/osdep.h" +#include "block/block_int-common.h" #include "sysemu/blockdev.h" #include "sysemu/block-backend.h" #include "hw/block/block.h" diff --git a/hw/sparc64/niagara.c b/hw/sparc64/niagara.c index ccad2c43a3..ab3c4ec346 100644 --- a/hw/sparc64/niagara.c +++ b/hw/sparc64/niagara.c @@ -23,6 +23,7 @@ */ #include "qemu/osdep.h" +#include "block/block_int-common.h" #include "qemu/units.h" #include "cpu.h" #include "hw/boards.h" diff --git a/hw/virtio/virtio-pmem.c b/hw/virtio/virtio-pmem.c index a1abfe0e1b..dff402f08f 100644 --- a/hw/virtio/virtio-pmem.c +++ b/hw/virtio/virtio-pmem.c @@ -14,6 +14,7 @@ #include "qemu/osdep.h" #include "qapi/error.h" #include "qemu/error-report.h" +#include "qemu/iov.h" #include "qemu/main-loop.h" #include "hw/virtio/virtio-pmem.h" #include "hw/qdev-properties.h" diff --git a/migration/block-dirty-bitmap.c b/migration/block-dirty-bitmap.c index 283017d7d3..15127d489a 100644 --- a/migration/block-dirty-bitmap.c +++ b/migration/block-dirty-bitmap.c @@ -61,6 +61,7 @@ #include "qemu/osdep.h" #include "block/block.h" #include "block/block_int.h" +#include "block/dirty-bitmap.h" #include "sysemu/block-backend.h" #include "sysemu/runstate.h" #include "qemu/main-loop.h" diff --git a/migration/block.c b/migration/block.c index 4347da1526..5da15a62de 100644 --- a/migration/block.c +++ b/migration/block.c @@ -20,6 +20,7 @@ #include "qemu/cutils.h" #include "qemu/queue.h" #include "block.h" +#include "block/dirty-bitmap.h" #include "migration/misc.h" #include "migration.h" #include "migration/register.h" diff --git a/migration/savevm.c b/migration/savevm.c index a0cdb714f7..a783789430 100644 --- a/migration/savevm.c +++ b/migration/savevm.c @@ -52,6 +52,7 @@ #include "exec/target_page.h" #include "trace.h" #include "qemu/iov.h" +#include "qemu/job.h" #include "qemu/main-loop.h" #include "block/snapshot.h" #include "qemu/cutils.h" diff --git a/monitor/qmp-cmds.c b/monitor/qmp-cmds.c index 2932b3f3a5..e0e1fdf507 100644 --- a/monitor/qmp-cmds.c +++ b/monitor/qmp-cmds.c @@ -14,6 +14,7 @@ */ #include "qemu/osdep.h" +#include "block/blockjob.h" #include "qemu/cutils.h" #include "qemu/option.h" #include "monitor/monitor.h" diff --git a/nbd/server.c b/nbd/server.c index 67ed333578..a4750e4188 100644 --- a/nbd/server.c +++ b/nbd/server.c @@ -19,7 +19,9 @@ #include "qemu/osdep.h" +#include "block/block_int.h" #include "block/export.h" +#include "block/dirty-bitmap.h" #include "qapi/error.h" #include "qemu/queue.h" #include "trace.h" diff --git a/qemu-img.c b/qemu-img.c index 439d8de1e3..7e73c5c1da 100644 --- a/qemu-img.c +++ b/qemu-img.c @@ -48,6 +48,7 @@ #include "sysemu/block-backend.h" #include "block/block_int.h" #include "block/blockjob.h" +#include "block/dirty-bitmap.h" #include "block/qapi.h" #include "crypto/init.h" #include "trace/control.h" diff --git a/softmmu/cpus.c b/softmmu/cpus.c index 5a584a8d57..9cbc8172b5 100644 --- a/softmmu/cpus.c +++ b/softmmu/cpus.c @@ -34,6 +34,7 @@ #include "sysemu/hw_accel.h" #include "exec/cpu-common.h" #include "qemu/thread.h" +#include "qemu/main-loop.h" #include "qemu/plugin.h" #include "sysemu/cpus.h" #include "qemu/guest-random.h" diff --git a/softmmu/physmem.c b/softmmu/physmem.c index edec095c7a..cd5b6a1634 100644 --- a/softmmu/physmem.c +++ b/softmmu/physmem.c @@ -23,6 +23,7 @@ #include "qemu/cutils.h" #include "qemu/cacheflush.h" +#include "qemu/hbitmap.h" #include "qemu/madvise.h" #ifdef CONFIG_TCG diff --git a/storage-daemon/qemu-storage-daemon.c b/storage-daemon/qemu-storage-daemon.c index 7718f6dcda..da19498c66 100644 --- a/storage-daemon/qemu-storage-daemon.c +++ b/storage-daemon/qemu-storage-daemon.c @@ -48,6 +48,7 @@ #include "qemu/config-file.h" #include "qemu/error-report.h" #include "qemu/help_option.h" +#include "qemu/job.h" #include "qemu/log.h" #include "qemu/main-loop.h" #include "qemu/module.h" diff --git a/target/i386/kvm/kvm.c b/target/i386/kvm/kvm.c index 0ab4e0734a..5870301991 100644 --- a/target/i386/kvm/kvm.c +++ b/target/i386/kvm/kvm.c @@ -37,6 +37,7 @@ #include "exec/gdbstub.h" #include "qemu/host-utils.h" #include "qemu/main-loop.h" +#include "qemu/ratelimit.h" #include "qemu/config-file.h" #include "qemu/error-report.h" #include "qemu/memalign.h" diff --git a/tests/unit/test-bdrv-drain.c b/tests/unit/test-bdrv-drain.c index 8cedea4959..4fed8b751f 100644 --- a/tests/unit/test-bdrv-drain.c +++ b/tests/unit/test-bdrv-drain.c @@ -23,7 +23,7 @@ */ #include "qemu/osdep.h" -#include "block/block.h" +#include "block/block_int.h" #include "block/blockjob_int.h" #include "sysemu/block-backend.h" #include "qapi/error.h" diff --git a/tests/unit/test-block-iothread.c b/tests/unit/test-block-iothread.c index 8ca5adec5e..ff5147f619 100644 --- a/tests/unit/test-block-iothread.c +++ b/tests/unit/test-block-iothread.c @@ -24,6 +24,7 @@ #include "qemu/osdep.h" #include "block/block.h" +#include "block/block_int-global-state.h" #include "block/blockjob_int.h" #include "sysemu/block-backend.h" #include "qapi/error.h" diff --git a/scripts/block-coroutine-wrapper.py b/scripts/block-coroutine-wrapper.py index 6e087fa0b7..dff3af49f5 100644 --- a/scripts/block-coroutine-wrapper.py +++ b/scripts/block-coroutine-wrapper.py @@ -42,7 +42,8 @@ def gen_header(): #include "qemu/osdep.h" #include "block/coroutines.h" #include "block/block-gen.h" -#include "block/block_int.h"\ +#include "block/block_int.h" +#include "block/dirty-bitmap.h" """ From patchwork Fri Jan 20 07:01:17 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Markus Armbruster X-Patchwork-Id: 13109254 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org 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 smtp.lore.kernel.org (Postfix) with ESMTPS id 59E32C25B50 for ; Fri, 20 Jan 2023 07:02:28 +0000 (UTC) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1pIlPC-00009L-6S; Fri, 20 Jan 2023 02:01:42 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1pIlP5-000073-KV for qemu-devel@nongnu.org; Fri, 20 Jan 2023 02:01:40 -0500 Received: from us-smtp-delivery-124.mimecast.com ([170.10.133.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1pIlP2-0005IE-SE for qemu-devel@nongnu.org; Fri, 20 Jan 2023 02:01:35 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1674198092; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=85lzfiZpyKp3blFpb9CIMtPmAG3yPXcWc7+YRarLtDY=; b=IMaeHJmNFjhPC9MnUkoP6LDXYkyb3Y5s+AU5DZ1SvHNFHAUz+yIjqqCyWdZ0Ev3O2VuFQL kE+Y9dWwbizCFs7fGxOS1a1dd0+aK9tV0NV+xt4i4aTBUAKPkc/YNxeVq5/8S8+E0lDVVE Ge41IRxdfaQwRFvsaZoeC1l74Y6xoxo= Received: from mimecast-mx02.redhat.com (mimecast-mx02.redhat.com [66.187.233.88]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id us-mta-270-IxaTwYJaP22pDvTQKJMyoQ-1; Fri, 20 Jan 2023 02:01:25 -0500 X-MC-Unique: IxaTwYJaP22pDvTQKJMyoQ-1 Received: from smtp.corp.redhat.com (int-mx08.intmail.prod.int.rdu2.redhat.com [10.11.54.8]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx02.redhat.com (Postfix) with ESMTPS id 16C5B8030A0; Fri, 20 Jan 2023 07:01:25 +0000 (UTC) Received: from blackfin.pond.sub.org (unknown [10.39.192.70]) by smtp.corp.redhat.com (Postfix) with ESMTPS id E7456C15BAD; Fri, 20 Jan 2023 07:01:24 +0000 (UTC) Received: by blackfin.pond.sub.org (Postfix, from userid 1000) id 9316221E6600; Fri, 20 Jan 2023 08:01:22 +0100 (CET) From: Markus Armbruster To: qemu-devel@nongnu.org Cc: peter.maydell@linaro.org, =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= Subject: [PULL 07/12] hw/sparc64/niagara: Use blk_name() instead of open-coding it Date: Fri, 20 Jan 2023 08:01:17 +0100 Message-Id: <20230120070122.3982588-8-armbru@redhat.com> In-Reply-To: <20230120070122.3982588-1-armbru@redhat.com> References: <20230120070122.3982588-1-armbru@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 3.1 on 10.11.54.8 Received-SPF: pass client-ip=170.10.133.124; envelope-from=armbru@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H2=-0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org Sender: qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org Signed-off-by: Markus Armbruster Reviewed-by: Philippe Mathieu-Daudé Message-Id: <20221221133551.3967339-3-armbru@redhat.com> --- hw/sparc64/niagara.c | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/hw/sparc64/niagara.c b/hw/sparc64/niagara.c index ab3c4ec346..6725cc61fd 100644 --- a/hw/sparc64/niagara.c +++ b/hw/sparc64/niagara.c @@ -23,7 +23,6 @@ */ #include "qemu/osdep.h" -#include "block/block_int-common.h" #include "qemu/units.h" #include "cpu.h" #include "hw/boards.h" @@ -144,10 +143,9 @@ static void niagara_init(MachineState *machine) memory_region_add_subregion(get_system_memory(), NIAGARA_VDISK_BASE, &s->vdisk_ram); dinfo->is_default = 1; - rom_add_file_fixed(blk_bs(blk)->filename, NIAGARA_VDISK_BASE, -1); + rom_add_file_fixed(blk_name(blk), NIAGARA_VDISK_BASE, -1); } else { - error_report("could not load ram disk '%s'", - blk_bs(blk)->filename); + error_report("could not load ram disk '%s'", blk_name(blk)); exit(1); } } From patchwork Fri Jan 20 07:01:18 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Markus Armbruster X-Patchwork-Id: 13109251 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org 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 smtp.lore.kernel.org (Postfix) with ESMTPS id 7466AC25B4E for ; Fri, 20 Jan 2023 07:02:02 +0000 (UTC) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1pIlPC-00009K-0n; Fri, 20 Jan 2023 02:01:42 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1pIlP0-0008VO-Ud for qemu-devel@nongnu.org; Fri, 20 Jan 2023 02:01:32 -0500 Received: from us-smtp-delivery-124.mimecast.com ([170.10.133.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1pIlOz-0005Gh-1P for qemu-devel@nongnu.org; Fri, 20 Jan 2023 02:01:30 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1674198088; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=fQOnOdgcHck49zSh5ndlo+r2E0Hr2dzMBOQwJoLV5Wg=; b=KbcqR9b58IFUsD4AUJUNLMAqyfzlovWh3T3co+P3xEL0AYp1dh1+x57Vc0k1NoYIQh1ISX MgzOatN6fZ/APTEEkR8UXKcXBaBVSggNoN1xuv0T8zyozshSwe3Y2ItFjLX8/pVUcDzsAX 6Q/n7YeWhImFmCLzYliFDqJbV2cmHuQ= Received: from mimecast-mx02.redhat.com (mx3-rdu2.redhat.com [66.187.233.73]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id us-mta-270-yoNIRgJBNZ-y8PePYCrbzQ-1; Fri, 20 Jan 2023 02:01:25 -0500 X-MC-Unique: yoNIRgJBNZ-y8PePYCrbzQ-1 Received: from smtp.corp.redhat.com (int-mx06.intmail.prod.int.rdu2.redhat.com [10.11.54.6]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx02.redhat.com (Postfix) with ESMTPS id 151531C068C6; Fri, 20 Jan 2023 07:01:25 +0000 (UTC) Received: from blackfin.pond.sub.org (unknown [10.39.192.70]) by smtp.corp.redhat.com (Postfix) with ESMTPS id E6BE32166B2A; Fri, 20 Jan 2023 07:01:24 +0000 (UTC) Received: by blackfin.pond.sub.org (Postfix, from userid 1000) id 9553D21E6602; Fri, 20 Jan 2023 08:01:22 +0100 (CET) From: Markus Armbruster To: qemu-devel@nongnu.org Cc: peter.maydell@linaro.org, =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= Subject: [PULL 08/12] include/hw/block: Include hw/block/block.h where needed Date: Fri, 20 Jan 2023 08:01:18 +0100 Message-Id: <20230120070122.3982588-9-armbru@redhat.com> In-Reply-To: <20230120070122.3982588-1-armbru@redhat.com> References: <20230120070122.3982588-1-armbru@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 3.1 on 10.11.54.6 Received-SPF: pass client-ip=170.10.133.124; envelope-from=armbru@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H2=-0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org Sender: qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org hw/block/swim.h needs BlockConf. Signed-off-by: Markus Armbruster Reviewed-by: Philippe Mathieu-Daudé Message-Id: <20221221133551.3967339-4-armbru@redhat.com> --- include/hw/block/swim.h | 1 + 1 file changed, 1 insertion(+) diff --git a/include/hw/block/swim.h b/include/hw/block/swim.h index c1bd5f6555..9b3dcb029d 100644 --- a/include/hw/block/swim.h +++ b/include/hw/block/swim.h @@ -11,6 +11,7 @@ #ifndef SWIM_H #define SWIM_H +#include "hw/block/block.h" #include "hw/sysbus.h" #include "qom/object.h" From patchwork Fri Jan 20 07:01:19 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Markus Armbruster X-Patchwork-Id: 13109257 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org 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 smtp.lore.kernel.org (Postfix) with ESMTPS id E6358C25B4E for ; Fri, 20 Jan 2023 07:02:49 +0000 (UTC) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1pIlPI-0000Cx-CO; Fri, 20 Jan 2023 02:01:48 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1pIlP4-00006x-U9 for qemu-devel@nongnu.org; Fri, 20 Jan 2023 02:01:40 -0500 Received: from us-smtp-delivery-124.mimecast.com ([170.10.133.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1pIlP2-0005I6-J4 for qemu-devel@nongnu.org; Fri, 20 Jan 2023 02:01:34 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1674198091; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=v/y+3P8J7gu+gdL1z6oiLJifLt7TwsctXr4i6FKNn0M=; b=JeItg4tcERqyMbqCkmFV/H4EFQZwOx5V/gY0KgJZcGPwQeie6WobfmnD3Y/xiwech3yQaJ B98F3CyU3j/yX5RNNuhtIH/WeG5+QalqbTMpdurXrUM0Q0snQCqEAjyI9xKqHTvurEcxh3 s9Yhq6camjldelTA7dYbIiyf0xoaAYc= Received: from mimecast-mx02.redhat.com (mx3-rdu2.redhat.com [66.187.233.73]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id us-mta-480-iGGPSGFqPH-BfEdDJaOCyA-1; Fri, 20 Jan 2023 02:01:25 -0500 X-MC-Unique: iGGPSGFqPH-BfEdDJaOCyA-1 Received: from smtp.corp.redhat.com (int-mx10.intmail.prod.int.rdu2.redhat.com [10.11.54.10]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx02.redhat.com (Postfix) with ESMTPS id 58D7438145A1; Fri, 20 Jan 2023 07:01:25 +0000 (UTC) Received: from blackfin.pond.sub.org (unknown [10.39.192.70]) by smtp.corp.redhat.com (Postfix) with ESMTPS id E72FC492B02; Fri, 20 Jan 2023 07:01:24 +0000 (UTC) Received: by blackfin.pond.sub.org (Postfix, from userid 1000) id 97FFC21E6604; Fri, 20 Jan 2023 08:01:22 +0100 (CET) From: Markus Armbruster To: qemu-devel@nongnu.org Cc: peter.maydell@linaro.org, =?utf-8?q?C=C3=A9dric_Le_Goater?= , Daniel Henrique Barboza Subject: [PULL 09/12] include/hw/ppc: Split pnv_chip.h off pnv.h Date: Fri, 20 Jan 2023 08:01:19 +0100 Message-Id: <20230120070122.3982588-10-armbru@redhat.com> In-Reply-To: <20230120070122.3982588-1-armbru@redhat.com> References: <20230120070122.3982588-1-armbru@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 3.1 on 10.11.54.10 Received-SPF: pass client-ip=170.10.133.124; envelope-from=armbru@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H2=-0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org Sender: qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org PnvChipClass, PnvChip, Pnv8Chip, Pnv9Chip, and Pnv10Chip are defined in pnv.h. Many users of the header don't actually need them. One instance is this inclusion loop: hw/ppc/pnv_homer.h includes hw/ppc/pnv.h for typedef PnvChip, and vice versa for struct PnvHomer. Similar structs live in their own headers: PnvHomerClass and PnvHomer in pnv_homer.h, PnvLpcClass and PnvLpcController in pci_lpc.h, PnvPsiClass, PnvPsi, Pnv8Psi, Pnv9Psi, Pnv10Psi in pnv_psi.h, ... Move PnvChipClass, PnvChip, Pnv8Chip, Pnv9Chip, and Pnv10Chip to new pnv_chip.h, and adjust include directives. This breaks the inclusion loop mentioned above. Signed-off-by: Markus Armbruster Reviewed-by: Cédric Le Goater Reviewed-by: Daniel Henrique Barboza Message-Id: <20221222104628.659681-2-armbru@redhat.com> --- include/hw/ppc/pnv.h | 143 +----------------------------------- include/hw/ppc/pnv_chip.h | 147 +++++++++++++++++++++++++++++++++++++ hw/intc/pnv_xive.c | 1 + hw/intc/pnv_xive2.c | 1 + hw/pci-host/pnv_phb3.c | 1 + hw/pci-host/pnv_phb4_pec.c | 1 + hw/ppc/pnv.c | 3 + hw/ppc/pnv_core.c | 1 + hw/ppc/pnv_homer.c | 1 + hw/ppc/pnv_lpc.c | 1 + hw/ppc/pnv_xscom.c | 1 + 11 files changed, 160 insertions(+), 141 deletions(-) create mode 100644 include/hw/ppc/pnv_chip.h diff --git a/include/hw/ppc/pnv.h b/include/hw/ppc/pnv.h index 9ef7e2d0dc..ca49e4281d 100644 --- a/include/hw/ppc/pnv.h +++ b/include/hw/ppc/pnv.h @@ -20,158 +20,19 @@ #ifndef PPC_PNV_H #define PPC_PNV_H +#include "cpu.h" #include "hw/boards.h" #include "hw/sysbus.h" #include "hw/ipmi/ipmi.h" -#include "hw/ppc/pnv_lpc.h" #include "hw/ppc/pnv_pnor.h" -#include "hw/ppc/pnv_psi.h" -#include "hw/ppc/pnv_occ.h" -#include "hw/ppc/pnv_sbe.h" -#include "hw/ppc/pnv_homer.h" -#include "hw/ppc/pnv_xive.h" -#include "hw/ppc/pnv_core.h" -#include "hw/pci-host/pnv_phb3.h" -#include "hw/pci-host/pnv_phb4.h" #include "hw/pci-host/pnv_phb.h" -#include "qom/object.h" #define TYPE_PNV_CHIP "pnv-chip" -OBJECT_DECLARE_TYPE(PnvChip, PnvChipClass, - PNV_CHIP) -struct PnvChip { - /*< private >*/ - SysBusDevice parent_obj; - - /*< public >*/ - uint32_t chip_id; - uint64_t ram_start; - uint64_t ram_size; - - uint32_t nr_cores; - uint32_t nr_threads; - uint64_t cores_mask; - PnvCore **cores; - - uint32_t num_pecs; - - MemoryRegion xscom_mmio; - MemoryRegion xscom; - AddressSpace xscom_as; - - MemoryRegion *fw_mr; - gchar *dt_isa_nodename; -}; - -#define TYPE_PNV8_CHIP "pnv8-chip" +typedef struct PnvChip PnvChip; typedef struct Pnv8Chip Pnv8Chip; -DECLARE_INSTANCE_CHECKER(Pnv8Chip, PNV8_CHIP, - TYPE_PNV8_CHIP) - -struct Pnv8Chip { - /*< private >*/ - PnvChip parent_obj; - - /*< public >*/ - MemoryRegion icp_mmio; - - PnvLpcController lpc; - Pnv8Psi psi; - PnvOCC occ; - PnvHomer homer; - -#define PNV8_CHIP_PHB3_MAX 4 - /* - * The array is used to allow quick access to the phbs by - * pnv_ics_get_child() and pnv_ics_resend_child(). - */ - PnvPHB *phbs[PNV8_CHIP_PHB3_MAX]; - uint32_t num_phbs; - - XICSFabric *xics; -}; - -#define TYPE_PNV9_CHIP "pnv9-chip" typedef struct Pnv9Chip Pnv9Chip; -DECLARE_INSTANCE_CHECKER(Pnv9Chip, PNV9_CHIP, - TYPE_PNV9_CHIP) - -struct Pnv9Chip { - /*< private >*/ - PnvChip parent_obj; - - /*< public >*/ - PnvXive xive; - Pnv9Psi psi; - PnvLpcController lpc; - PnvOCC occ; - PnvSBE sbe; - PnvHomer homer; - - uint32_t nr_quads; - PnvQuad *quads; - -#define PNV9_CHIP_MAX_PEC 3 - PnvPhb4PecState pecs[PNV9_CHIP_MAX_PEC]; -}; - -/* - * A SMT8 fused core is a pair of SMT4 cores. - */ -#define PNV9_PIR2FUSEDCORE(pir) (((pir) >> 3) & 0xf) -#define PNV9_PIR2CHIP(pir) (((pir) >> 8) & 0x7f) - -#define TYPE_PNV10_CHIP "pnv10-chip" typedef struct Pnv10Chip Pnv10Chip; -DECLARE_INSTANCE_CHECKER(Pnv10Chip, PNV10_CHIP, - TYPE_PNV10_CHIP) - -struct Pnv10Chip { - /*< private >*/ - PnvChip parent_obj; - - /*< public >*/ - PnvXive2 xive; - Pnv9Psi psi; - PnvLpcController lpc; - PnvOCC occ; - PnvSBE sbe; - PnvHomer homer; - - uint32_t nr_quads; - PnvQuad *quads; - -#define PNV10_CHIP_MAX_PEC 2 - PnvPhb4PecState pecs[PNV10_CHIP_MAX_PEC]; -}; - -#define PNV10_PIR2FUSEDCORE(pir) (((pir) >> 3) & 0xf) -#define PNV10_PIR2CHIP(pir) (((pir) >> 8) & 0x7f) - -struct PnvChipClass { - /*< private >*/ - SysBusDeviceClass parent_class; - - /*< public >*/ - uint64_t chip_cfam_id; - uint64_t cores_mask; - uint32_t num_pecs; - uint32_t num_phbs; - - DeviceRealize parent_realize; - - uint32_t (*core_pir)(PnvChip *chip, uint32_t core_id); - void (*intc_create)(PnvChip *chip, PowerPCCPU *cpu, Error **errp); - void (*intc_reset)(PnvChip *chip, PowerPCCPU *cpu); - void (*intc_destroy)(PnvChip *chip, PowerPCCPU *cpu); - void (*intc_print_info)(PnvChip *chip, PowerPCCPU *cpu, Monitor *mon); - ISABus *(*isa_create)(PnvChip *chip, Error **errp); - void (*dt_populate)(PnvChip *chip, void *fdt); - void (*pic_print_info)(PnvChip *chip, Monitor *mon); - uint64_t (*xscom_core_base)(PnvChip *chip, uint32_t core_id); - uint32_t (*xscom_pcba)(PnvChip *chip, uint64_t addr); -}; #define PNV_CHIP_TYPE_SUFFIX "-" TYPE_PNV_CHIP #define PNV_CHIP_TYPE_NAME(cpu_model) cpu_model PNV_CHIP_TYPE_SUFFIX diff --git a/include/hw/ppc/pnv_chip.h b/include/hw/ppc/pnv_chip.h new file mode 100644 index 0000000000..53e1d921d7 --- /dev/null +++ b/include/hw/ppc/pnv_chip.h @@ -0,0 +1,147 @@ +#ifndef PPC_PNV_CHIP_H +#define PPC_PNV_CHIP_H + +#include "hw/pci-host/pnv_phb4.h" +#include "hw/ppc/pnv_core.h" +#include "hw/ppc/pnv_homer.h" +#include "hw/ppc/pnv_lpc.h" +#include "hw/ppc/pnv_occ.h" +#include "hw/ppc/pnv_psi.h" +#include "hw/ppc/pnv_sbe.h" +#include "hw/ppc/pnv_xive.h" +#include "hw/sysbus.h" + +OBJECT_DECLARE_TYPE(PnvChip, PnvChipClass, + PNV_CHIP) + +struct PnvChip { + /*< private >*/ + SysBusDevice parent_obj; + + /*< public >*/ + uint32_t chip_id; + uint64_t ram_start; + uint64_t ram_size; + + uint32_t nr_cores; + uint32_t nr_threads; + uint64_t cores_mask; + PnvCore **cores; + + uint32_t num_pecs; + + MemoryRegion xscom_mmio; + MemoryRegion xscom; + AddressSpace xscom_as; + + MemoryRegion *fw_mr; + gchar *dt_isa_nodename; +}; + +#define TYPE_PNV8_CHIP "pnv8-chip" +DECLARE_INSTANCE_CHECKER(Pnv8Chip, PNV8_CHIP, + TYPE_PNV8_CHIP) + +struct Pnv8Chip { + /*< private >*/ + PnvChip parent_obj; + + /*< public >*/ + MemoryRegion icp_mmio; + + PnvLpcController lpc; + Pnv8Psi psi; + PnvOCC occ; + PnvHomer homer; + +#define PNV8_CHIP_PHB3_MAX 4 + /* + * The array is used to allow quick access to the phbs by + * pnv_ics_get_child() and pnv_ics_resend_child(). + */ + PnvPHB *phbs[PNV8_CHIP_PHB3_MAX]; + uint32_t num_phbs; + + XICSFabric *xics; +}; + +#define TYPE_PNV9_CHIP "pnv9-chip" +DECLARE_INSTANCE_CHECKER(Pnv9Chip, PNV9_CHIP, + TYPE_PNV9_CHIP) + +struct Pnv9Chip { + /*< private >*/ + PnvChip parent_obj; + + /*< public >*/ + PnvXive xive; + Pnv9Psi psi; + PnvLpcController lpc; + PnvOCC occ; + PnvSBE sbe; + PnvHomer homer; + + uint32_t nr_quads; + PnvQuad *quads; + +#define PNV9_CHIP_MAX_PEC 3 + PnvPhb4PecState pecs[PNV9_CHIP_MAX_PEC]; +}; + +/* + * A SMT8 fused core is a pair of SMT4 cores. + */ +#define PNV9_PIR2FUSEDCORE(pir) (((pir) >> 3) & 0xf) +#define PNV9_PIR2CHIP(pir) (((pir) >> 8) & 0x7f) + +#define TYPE_PNV10_CHIP "pnv10-chip" +DECLARE_INSTANCE_CHECKER(Pnv10Chip, PNV10_CHIP, + TYPE_PNV10_CHIP) + +struct Pnv10Chip { + /*< private >*/ + PnvChip parent_obj; + + /*< public >*/ + PnvXive2 xive; + Pnv9Psi psi; + PnvLpcController lpc; + PnvOCC occ; + PnvSBE sbe; + PnvHomer homer; + + uint32_t nr_quads; + PnvQuad *quads; + +#define PNV10_CHIP_MAX_PEC 2 + PnvPhb4PecState pecs[PNV10_CHIP_MAX_PEC]; +}; + +#define PNV10_PIR2FUSEDCORE(pir) (((pir) >> 3) & 0xf) +#define PNV10_PIR2CHIP(pir) (((pir) >> 8) & 0x7f) + +struct PnvChipClass { + /*< private >*/ + SysBusDeviceClass parent_class; + + /*< public >*/ + uint64_t chip_cfam_id; + uint64_t cores_mask; + uint32_t num_pecs; + uint32_t num_phbs; + + DeviceRealize parent_realize; + + uint32_t (*core_pir)(PnvChip *chip, uint32_t core_id); + void (*intc_create)(PnvChip *chip, PowerPCCPU *cpu, Error **errp); + void (*intc_reset)(PnvChip *chip, PowerPCCPU *cpu); + void (*intc_destroy)(PnvChip *chip, PowerPCCPU *cpu); + void (*intc_print_info)(PnvChip *chip, PowerPCCPU *cpu, Monitor *mon); + ISABus *(*isa_create)(PnvChip *chip, Error **errp); + void (*dt_populate)(PnvChip *chip, void *fdt); + void (*pic_print_info)(PnvChip *chip, Monitor *mon); + uint64_t (*xscom_core_base)(PnvChip *chip, uint32_t core_id); + uint32_t (*xscom_pcba)(PnvChip *chip, uint64_t addr); +}; + +#endif diff --git a/hw/intc/pnv_xive.c b/hw/intc/pnv_xive.c index c7b75ed12e..622f9d28b7 100644 --- a/hw/intc/pnv_xive.c +++ b/hw/intc/pnv_xive.c @@ -18,6 +18,7 @@ #include "monitor/monitor.h" #include "hw/ppc/fdt.h" #include "hw/ppc/pnv.h" +#include "hw/ppc/pnv_chip.h" #include "hw/ppc/pnv_core.h" #include "hw/ppc/pnv_xscom.h" #include "hw/ppc/pnv_xive.h" diff --git a/hw/intc/pnv_xive2.c b/hw/intc/pnv_xive2.c index f22ce5ca59..7176d70234 100644 --- a/hw/intc/pnv_xive2.c +++ b/hw/intc/pnv_xive2.c @@ -16,6 +16,7 @@ #include "monitor/monitor.h" #include "hw/ppc/fdt.h" #include "hw/ppc/pnv.h" +#include "hw/ppc/pnv_chip.h" #include "hw/ppc/pnv_core.h" #include "hw/ppc/pnv_xscom.h" #include "hw/ppc/xive2.h" diff --git a/hw/pci-host/pnv_phb3.c b/hw/pci-host/pnv_phb3.c index 9054c393a2..7a21497cf8 100644 --- a/hw/pci-host/pnv_phb3.c +++ b/hw/pci-host/pnv_phb3.c @@ -16,6 +16,7 @@ #include "hw/pci/pcie_host.h" #include "hw/pci/pcie_port.h" #include "hw/ppc/pnv.h" +#include "hw/ppc/pnv_chip.h" #include "hw/irq.h" #include "hw/qdev-properties.h" #include "qom/object.h" diff --git a/hw/pci-host/pnv_phb4_pec.c b/hw/pci-host/pnv_phb4_pec.c index 9871f462cd..43267a428f 100644 --- a/hw/pci-host/pnv_phb4_pec.c +++ b/hw/pci-host/pnv_phb4_pec.c @@ -17,6 +17,7 @@ #include "hw/pci/pci_bridge.h" #include "hw/pci/pci_bus.h" #include "hw/ppc/pnv.h" +#include "hw/ppc/pnv_chip.h" #include "hw/qdev-properties.h" #include "sysemu/sysemu.h" diff --git a/hw/ppc/pnv.c b/hw/ppc/pnv.c index 3d01e26f84..44b1fbbc93 100644 --- a/hw/ppc/pnv.c +++ b/hw/ppc/pnv.c @@ -44,9 +44,12 @@ #include "target/ppc/mmu-hash64.h" #include "hw/pci/msi.h" #include "hw/pci-host/pnv_phb.h" +#include "hw/pci-host/pnv_phb3.h" +#include "hw/pci-host/pnv_phb4.h" #include "hw/ppc/xics.h" #include "hw/qdev-properties.h" +#include "hw/ppc/pnv_chip.h" #include "hw/ppc/pnv_xscom.h" #include "hw/ppc/pnv_pnor.h" diff --git a/hw/ppc/pnv_core.c b/hw/ppc/pnv_core.c index 9ee79192dd..410f31bdf8 100644 --- a/hw/ppc/pnv_core.c +++ b/hw/ppc/pnv_core.c @@ -25,6 +25,7 @@ #include "target/ppc/cpu.h" #include "hw/ppc/ppc.h" #include "hw/ppc/pnv.h" +#include "hw/ppc/pnv_chip.h" #include "hw/ppc/pnv_core.h" #include "hw/ppc/pnv_xscom.h" #include "hw/ppc/xics.h" diff --git a/hw/ppc/pnv_homer.c b/hw/ppc/pnv_homer.c index ea73919e54..f9a203d11d 100644 --- a/hw/ppc/pnv_homer.c +++ b/hw/ppc/pnv_homer.c @@ -25,6 +25,7 @@ #include "hw/qdev-core.h" #include "hw/qdev-properties.h" #include "hw/ppc/pnv.h" +#include "hw/ppc/pnv_chip.h" #include "hw/ppc/pnv_homer.h" #include "hw/ppc/pnv_xscom.h" diff --git a/hw/ppc/pnv_lpc.c b/hw/ppc/pnv_lpc.c index ee890e7ab4..71143b7692 100644 --- a/hw/ppc/pnv_lpc.c +++ b/hw/ppc/pnv_lpc.c @@ -26,6 +26,7 @@ #include "hw/isa/isa.h" #include "hw/qdev-properties.h" #include "hw/ppc/pnv.h" +#include "hw/ppc/pnv_chip.h" #include "hw/ppc/pnv_lpc.h" #include "hw/ppc/pnv_xscom.h" #include "hw/ppc/fdt.h" diff --git a/hw/ppc/pnv_xscom.c b/hw/ppc/pnv_xscom.c index 79f10de57f..d820e05e40 100644 --- a/hw/ppc/pnv_xscom.c +++ b/hw/ppc/pnv_xscom.c @@ -26,6 +26,7 @@ #include "hw/ppc/fdt.h" #include "hw/ppc/pnv.h" +#include "hw/ppc/pnv_chip.h" #include "hw/ppc/pnv_xscom.h" #include From patchwork Fri Jan 20 07:01:20 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Markus Armbruster X-Patchwork-Id: 13109261 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org 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 smtp.lore.kernel.org (Postfix) with ESMTPS id 1F75BC27C76 for ; Fri, 20 Jan 2023 07:03:22 +0000 (UTC) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1pIlPD-00009X-LL; Fri, 20 Jan 2023 02:01:43 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1pIlP3-00005W-1x for qemu-devel@nongnu.org; Fri, 20 Jan 2023 02:01:34 -0500 Received: from us-smtp-delivery-124.mimecast.com ([170.10.129.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1pIlP0-0005HU-MI for qemu-devel@nongnu.org; Fri, 20 Jan 2023 02:01:32 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1674198090; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=raDGazesJJrxICRdUMjyxwbjzL/EAnZZKbjCdkAAc1Q=; b=HhvUfJO3AjSzc00zFd3WBs1jwESTW5HUKp2X8rtY9WCZ0iL6vaYZragZtVw5Nzfj8pz0/5 hNWzutL6IT9l0Teh6Ow+Hlq5elKvrv3bPRW53LDhpOI6fboAYGdy7538jtox83TBIM4HD0 Go0hySvf/T3bD3S002iiqxLj4hrwGVw= Received: from mimecast-mx02.redhat.com (mimecast-mx02.redhat.com [66.187.233.88]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id us-mta-219-fD7JdoAHMjSe14jlohs46A-1; Fri, 20 Jan 2023 02:01:25 -0500 X-MC-Unique: fD7JdoAHMjSe14jlohs46A-1 Received: from smtp.corp.redhat.com (int-mx05.intmail.prod.int.rdu2.redhat.com [10.11.54.5]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx02.redhat.com (Postfix) with ESMTPS id 1E302100F904; Fri, 20 Jan 2023 07:01:25 +0000 (UTC) Received: from blackfin.pond.sub.org (unknown [10.39.192.70]) by smtp.corp.redhat.com (Postfix) with ESMTPS id E6DCA53AA; Fri, 20 Jan 2023 07:01:24 +0000 (UTC) Received: by blackfin.pond.sub.org (Postfix, from userid 1000) id 9A77A21E6606; Fri, 20 Jan 2023 08:01:22 +0100 (CET) From: Markus Armbruster To: qemu-devel@nongnu.org Cc: peter.maydell@linaro.org, =?utf-8?q?C=C3=A9dric_Le_Goater?= , Daniel Henrique Barboza Subject: [PULL 10/12] include/hw/ppc: Supply a few missing includes Date: Fri, 20 Jan 2023 08:01:20 +0100 Message-Id: <20230120070122.3982588-11-armbru@redhat.com> In-Reply-To: <20230120070122.3982588-1-armbru@redhat.com> References: <20230120070122.3982588-1-armbru@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 3.1 on 10.11.54.5 Received-SPF: pass client-ip=170.10.129.124; envelope-from=armbru@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -27 X-Spam_score: -2.8 X-Spam_bar: -- X-Spam_report: (-2.8 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_LOW=-0.7, RCVD_IN_MSPIKE_H2=-0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org Sender: qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org A few headers neglect to include headers they need. They compile only if something else includes the required header(s) first. Fix that. Signed-off-by: Markus Armbruster Reviewed-by: Cédric Le Goater Reviewed-by: Daniel Henrique Barboza Message-Id: <20221222104628.659681-3-armbru@redhat.com> --- include/hw/ppc/pnv_lpc.h | 3 ++- include/hw/ppc/pnv_occ.h | 3 ++- include/hw/ppc/pnv_pnor.h | 2 +- include/hw/ppc/pnv_sbe.h | 3 ++- include/hw/ppc/pnv_xscom.h | 3 ++- include/hw/ppc/xive2.h | 2 ++ include/hw/ppc/xive2_regs.h | 2 ++ 7 files changed, 13 insertions(+), 5 deletions(-) diff --git a/include/hw/ppc/pnv_lpc.h b/include/hw/ppc/pnv_lpc.h index 8a8d1a3d42..001eee27d7 100644 --- a/include/hw/ppc/pnv_lpc.h +++ b/include/hw/ppc/pnv_lpc.h @@ -20,7 +20,8 @@ #ifndef PPC_PNV_LPC_H #define PPC_PNV_LPC_H -#include "qom/object.h" +#include "exec/memory.h" +#include "hw/qdev-core.h" #define TYPE_PNV_LPC "pnv-lpc" typedef struct PnvLpcClass PnvLpcClass; diff --git a/include/hw/ppc/pnv_occ.h b/include/hw/ppc/pnv_occ.h index 90a81dae2b..df321244e3 100644 --- a/include/hw/ppc/pnv_occ.h +++ b/include/hw/ppc/pnv_occ.h @@ -20,7 +20,8 @@ #ifndef PPC_PNV_OCC_H #define PPC_PNV_OCC_H -#include "qom/object.h" +#include "exec/memory.h" +#include "hw/qdev-core.h" #define TYPE_PNV_OCC "pnv-occ" OBJECT_DECLARE_TYPE(PnvOCC, PnvOCCClass, diff --git a/include/hw/ppc/pnv_pnor.h b/include/hw/ppc/pnv_pnor.h index bab2f79844..2e37ac88bf 100644 --- a/include/hw/ppc/pnv_pnor.h +++ b/include/hw/ppc/pnv_pnor.h @@ -10,7 +10,7 @@ #ifndef PPC_PNV_PNOR_H #define PPC_PNV_PNOR_H -#include "qom/object.h" +#include "hw/sysbus.h" /* * PNOR offset on the LPC FW address space diff --git a/include/hw/ppc/pnv_sbe.h b/include/hw/ppc/pnv_sbe.h index f54a3ae9ba..b6b378ad14 100644 --- a/include/hw/ppc/pnv_sbe.h +++ b/include/hw/ppc/pnv_sbe.h @@ -20,7 +20,8 @@ #ifndef PPC_PNV_SBE_H #define PPC_PNV_SBE_H -#include "qom/object.h" +#include "exec/memory.h" +#include "hw/qdev-core.h" #define TYPE_PNV_SBE "pnv-sbe" OBJECT_DECLARE_TYPE(PnvSBE, PnvSBEClass, PNV_SBE) diff --git a/include/hw/ppc/pnv_xscom.h b/include/hw/ppc/pnv_xscom.h index c6e9ef8dd2..cbe848d27b 100644 --- a/include/hw/ppc/pnv_xscom.h +++ b/include/hw/ppc/pnv_xscom.h @@ -20,7 +20,8 @@ #ifndef PPC_PNV_XSCOM_H #define PPC_PNV_XSCOM_H -#include "qom/object.h" +#include "exec/memory.h" +#include "hw/ppc/pnv.h" typedef struct PnvXScomInterface PnvXScomInterface; diff --git a/include/hw/ppc/xive2.h b/include/hw/ppc/xive2.h index e9e3ea135e..ab68f8d157 100644 --- a/include/hw/ppc/xive2.h +++ b/include/hw/ppc/xive2.h @@ -11,7 +11,9 @@ #ifndef PPC_XIVE2_H #define PPC_XIVE2_H +#include "hw/ppc/xive.h" #include "hw/ppc/xive2_regs.h" +#include "hw/sysbus.h" /* * XIVE2 Router (POWER10) diff --git a/include/hw/ppc/xive2_regs.h b/include/hw/ppc/xive2_regs.h index 14605bd458..b7adbdb7b9 100644 --- a/include/hw/ppc/xive2_regs.h +++ b/include/hw/ppc/xive2_regs.h @@ -10,6 +10,8 @@ #ifndef PPC_XIVE2_REGS_H #define PPC_XIVE2_REGS_H +#include "cpu.h" + /* * Thread Interrupt Management Area (TIMA) * From patchwork Fri Jan 20 07:01:21 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Markus Armbruster X-Patchwork-Id: 13109269 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org 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 smtp.lore.kernel.org (Postfix) with ESMTPS id EBD0FC25B4E for ; Fri, 20 Jan 2023 07:04:37 +0000 (UTC) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1pIlPC-00009P-Qc; Fri, 20 Jan 2023 02:01:43 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1pIlP2-000053-R2 for qemu-devel@nongnu.org; Fri, 20 Jan 2023 02:01:32 -0500 Received: from us-smtp-delivery-124.mimecast.com ([170.10.133.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1pIlP0-0005HG-4l for qemu-devel@nongnu.org; Fri, 20 Jan 2023 02:01:31 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1674198089; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=+aPGe8k8+cN+U8FSaOZiCGVRYUVNBUabUEbh4OxQ1vc=; b=LnJvyMVfkuhznRuOg4ZKLNChhki90k4spSDfOo1XeXrvlmVqB/XKO8Jy2XtY9BmCr7ZzbQ chRS/JekjwdByAmT1Z+wygeFWOKrXC0RWLd98UXOH8RqLcSPnu6rV+UiRuRsH4HLXva/5T p9Tz1bfojg2jBUQm4vfKFU0tRe2RuLs= Received: from mimecast-mx02.redhat.com (mimecast-mx02.redhat.com [66.187.233.88]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id us-mta-272-k0NcST9AOK2XlS00_2kTRQ-1; Fri, 20 Jan 2023 02:01:25 -0500 X-MC-Unique: k0NcST9AOK2XlS00_2kTRQ-1 Received: from smtp.corp.redhat.com (int-mx08.intmail.prod.int.rdu2.redhat.com [10.11.54.8]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx02.redhat.com (Postfix) with ESMTPS id 1D31585C06E; Fri, 20 Jan 2023 07:01:25 +0000 (UTC) Received: from blackfin.pond.sub.org (unknown [10.39.192.70]) by smtp.corp.redhat.com (Postfix) with ESMTPS id E7488C15BAE; Fri, 20 Jan 2023 07:01:24 +0000 (UTC) Received: by blackfin.pond.sub.org (Postfix, from userid 1000) id 9CA4B21E6608; Fri, 20 Jan 2023 08:01:22 +0100 (CET) From: Markus Armbruster To: qemu-devel@nongnu.org Cc: peter.maydell@linaro.org, =?utf-8?q?C=C3=A9dric_Le_Goater?= , Daniel Henrique Barboza Subject: [PULL 11/12] include/hw/ppc: Don't include hw/pci-host/pnv_phb.h from pnv.h Date: Fri, 20 Jan 2023 08:01:21 +0100 Message-Id: <20230120070122.3982588-12-armbru@redhat.com> In-Reply-To: <20230120070122.3982588-1-armbru@redhat.com> References: <20230120070122.3982588-1-armbru@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 3.1 on 10.11.54.8 Received-SPF: pass client-ip=170.10.133.124; envelope-from=armbru@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H2=-0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org Sender: qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org The next commit needs to include hw/ppc/pnv.h from hw/pci-host/pnv_phb.h. Avoid an inclusion loop. Signed-off-by: Markus Armbruster Reviewed-by: Cédric Le Goater Reviewed-by: Daniel Henrique Barboza Message-Id: <20221222104628.659681-4-armbru@redhat.com> --- include/hw/pci-host/pnv_phb4.h | 3 ++- include/hw/ppc/pnv.h | 3 ++- hw/ppc/pnv_psi.c | 1 + 3 files changed, 5 insertions(+), 2 deletions(-) diff --git a/include/hw/pci-host/pnv_phb4.h b/include/hw/pci-host/pnv_phb4.h index d9cea3f952..b4f2b29fb5 100644 --- a/include/hw/pci-host/pnv_phb4.h +++ b/include/hw/pci-host/pnv_phb4.h @@ -10,14 +10,15 @@ #ifndef PCI_HOST_PNV_PHB4_H #define PCI_HOST_PNV_PHB4_H +#include "hw/pci-host/pnv_phb.h" #include "hw/pci/pci_bus.h" +#include "hw/ppc/pnv.h" #include "hw/ppc/xive.h" #include "qom/object.h" typedef struct PnvPhb4PecState PnvPhb4PecState; typedef struct PnvPhb4PecStack PnvPhb4PecStack; typedef struct PnvPHB4 PnvPHB4; -typedef struct PnvPHB PnvPHB; typedef struct PnvChip PnvChip; /* diff --git a/include/hw/ppc/pnv.h b/include/hw/ppc/pnv.h index ca49e4281d..96fb850419 100644 --- a/include/hw/ppc/pnv.h +++ b/include/hw/ppc/pnv.h @@ -25,7 +25,6 @@ #include "hw/sysbus.h" #include "hw/ipmi/ipmi.h" #include "hw/ppc/pnv_pnor.h" -#include "hw/pci-host/pnv_phb.h" #define TYPE_PNV_CHIP "pnv-chip" @@ -59,6 +58,8 @@ DECLARE_INSTANCE_CHECKER(PnvChip, PNV_CHIP_POWER10, PowerPCCPU *pnv_chip_find_cpu(PnvChip *chip, uint32_t pir); +typedef struct PnvPHB PnvPHB; + #define TYPE_PNV_MACHINE MACHINE_TYPE_NAME("powernv") typedef struct PnvMachineClass PnvMachineClass; typedef struct PnvMachineState PnvMachineState; diff --git a/hw/ppc/pnv_psi.c b/hw/ppc/pnv_psi.c index 98045ed3d2..8aa09ab26b 100644 --- a/hw/ppc/pnv_psi.c +++ b/hw/ppc/pnv_psi.c @@ -18,6 +18,7 @@ */ #include "qemu/osdep.h" +#include "exec/address-spaces.h" #include "hw/irq.h" #include "target/ppc/cpu.h" #include "qemu/log.h" From patchwork Fri Jan 20 07:01:22 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Markus Armbruster X-Patchwork-Id: 13109256 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org 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 smtp.lore.kernel.org (Postfix) with ESMTPS id 8373BC05027 for ; Fri, 20 Jan 2023 07:02:33 +0000 (UTC) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1pIlPG-0000Bd-E9; Fri, 20 Jan 2023 02:01:46 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1pIlP0-0008VJ-PX for qemu-devel@nongnu.org; Fri, 20 Jan 2023 02:01:32 -0500 Received: from us-smtp-delivery-124.mimecast.com ([170.10.133.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1pIlOy-0005Gg-SS for qemu-devel@nongnu.org; Fri, 20 Jan 2023 02:01:30 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1674198088; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=xKXtZsO8lnptTaaBCHlOkSzR3qu9Uu3BLJo2fZPDBlk=; b=bLl8GCm6ED2zb52lxfKta47FAXt3IgLNe+khf8A0UsuQKaLUQ083yP+lf0vIkAjhSeh7DX 8p1AV6iEO8t8My4o3DIEIbe7dOrhfGc83t8NmPYelBQoRfpGv0BCqxguzOchaN/1PAwwsH 5kbmzKoB2FPp61DWq6DAYuskKW1etow= Received: from mimecast-mx02.redhat.com (mx3-rdu2.redhat.com [66.187.233.73]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id us-mta-272-F8V4-s62Oki-vjQXyp2L_Q-1; Fri, 20 Jan 2023 02:01:25 -0500 X-MC-Unique: F8V4-s62Oki-vjQXyp2L_Q-1 Received: from smtp.corp.redhat.com (int-mx09.intmail.prod.int.rdu2.redhat.com [10.11.54.9]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx02.redhat.com (Postfix) with ESMTPS id 3C50E1C068C7; Fri, 20 Jan 2023 07:01:25 +0000 (UTC) Received: from blackfin.pond.sub.org (unknown [10.39.192.70]) by smtp.corp.redhat.com (Postfix) with ESMTPS id E6D31492C3E; Fri, 20 Jan 2023 07:01:24 +0000 (UTC) Received: by blackfin.pond.sub.org (Postfix, from userid 1000) id 9EE8021E6609; Fri, 20 Jan 2023 08:01:22 +0100 (CET) From: Markus Armbruster To: qemu-devel@nongnu.org Cc: peter.maydell@linaro.org, =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= , =?utf-8?q?C?= =?utf-8?q?=C3=A9dric_Le_Goater?= , Daniel Henrique Barboza Subject: [PULL 12/12] include/hw/ppc include/hw/pci-host: Drop extra typedefs Date: Fri, 20 Jan 2023 08:01:22 +0100 Message-Id: <20230120070122.3982588-13-armbru@redhat.com> In-Reply-To: <20230120070122.3982588-1-armbru@redhat.com> References: <20230120070122.3982588-1-armbru@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 3.1 on 10.11.54.9 Received-SPF: pass client-ip=170.10.133.124; envelope-from=armbru@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H2=-0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org Sender: qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org PnvChip is typedef'ed in five places, and PnvPhb4PecState in two. Keep one, drop the others. Signed-off-by: Markus Armbruster Reviewed-by: Philippe Mathieu-Daudé Reviewed-by: Cédric Le Goater Reviewed-by: Daniel Henrique Barboza Message-Id: <20221222104628.659681-5-armbru@redhat.com> --- hw/pci-host/pnv_phb.h | 2 +- include/hw/pci-host/pnv_phb3.h | 1 - include/hw/pci-host/pnv_phb4.h | 2 -- include/hw/ppc/pnv_core.h | 3 +-- include/hw/ppc/pnv_homer.h | 2 +- include/hw/ppc/pnv_lpc.h | 8 ++------ include/hw/ppc/pnv_xive.h | 7 +++---- 7 files changed, 8 insertions(+), 17 deletions(-) diff --git a/hw/pci-host/pnv_phb.h b/hw/pci-host/pnv_phb.h index 58ebd6dd0f..eb429d529f 100644 --- a/hw/pci-host/pnv_phb.h +++ b/hw/pci-host/pnv_phb.h @@ -12,9 +12,9 @@ #include "hw/pci/pcie_host.h" #include "hw/pci/pcie_port.h" +#include "hw/ppc/pnv.h" #include "qom/object.h" -typedef struct PnvChip PnvChip; typedef struct PnvPhb4PecState PnvPhb4PecState; struct PnvPHB { diff --git a/include/hw/pci-host/pnv_phb3.h b/include/hw/pci-host/pnv_phb3.h index f791ebda9b..d62b3091ac 100644 --- a/include/hw/pci-host/pnv_phb3.h +++ b/include/hw/pci-host/pnv_phb3.h @@ -15,7 +15,6 @@ #include "hw/pci-host/pnv_phb.h" typedef struct PnvPHB3 PnvPHB3; -typedef struct PnvChip PnvChip; /* * PHB3 XICS Source for MSIs diff --git a/include/hw/pci-host/pnv_phb4.h b/include/hw/pci-host/pnv_phb4.h index b4f2b29fb5..1f3237c9d5 100644 --- a/include/hw/pci-host/pnv_phb4.h +++ b/include/hw/pci-host/pnv_phb4.h @@ -16,10 +16,8 @@ #include "hw/ppc/xive.h" #include "qom/object.h" -typedef struct PnvPhb4PecState PnvPhb4PecState; typedef struct PnvPhb4PecStack PnvPhb4PecStack; typedef struct PnvPHB4 PnvPHB4; -typedef struct PnvChip PnvChip; /* * We have one such address space wrapper per possible device under diff --git a/include/hw/ppc/pnv_core.h b/include/hw/ppc/pnv_core.h index c22eab2e1f..3d75706e95 100644 --- a/include/hw/ppc/pnv_core.h +++ b/include/hw/ppc/pnv_core.h @@ -22,14 +22,13 @@ #include "hw/cpu/core.h" #include "target/ppc/cpu.h" +#include "hw/ppc/pnv.h" #include "qom/object.h" #define TYPE_PNV_CORE "powernv-cpu-core" OBJECT_DECLARE_TYPE(PnvCore, PnvCoreClass, PNV_CORE) -typedef struct PnvChip PnvChip; - struct PnvCore { /*< private >*/ CPUCore parent_obj; diff --git a/include/hw/ppc/pnv_homer.h b/include/hw/ppc/pnv_homer.h index 07e8b19311..b1c5d498dc 100644 --- a/include/hw/ppc/pnv_homer.h +++ b/include/hw/ppc/pnv_homer.h @@ -39,7 +39,7 @@ DECLARE_INSTANCE_CHECKER(PnvHomer, PNV10_HOMER, struct PnvHomer { DeviceState parent; - struct PnvChip *chip; + PnvChip *chip; MemoryRegion pba_regs; MemoryRegion regs; }; diff --git a/include/hw/ppc/pnv_lpc.h b/include/hw/ppc/pnv_lpc.h index 001eee27d7..5d22c45570 100644 --- a/include/hw/ppc/pnv_lpc.h +++ b/include/hw/ppc/pnv_lpc.h @@ -21,6 +21,7 @@ #define PPC_PNV_LPC_H #include "exec/memory.h" +#include "hw/ppc/pnv.h" #include "hw/qdev-core.h" #define TYPE_PNV_LPC "pnv-lpc" @@ -93,13 +94,8 @@ struct PnvLpcClass { DeviceRealize parent_realize; }; -/* - * Old compilers error on typdef forward declarations. Keep them happy. - */ -struct PnvChip; - ISABus *pnv_lpc_isa_create(PnvLpcController *lpc, bool use_cpld, Error **errp); -int pnv_dt_lpc(struct PnvChip *chip, void *fdt, int root_offset, +int pnv_dt_lpc(PnvChip *chip, void *fdt, int root_offset, uint64_t lpcm_addr, uint64_t lpcm_size); #endif /* PPC_PNV_LPC_H */ diff --git a/include/hw/ppc/pnv_xive.h b/include/hw/ppc/pnv_xive.h index b5d91505e5..9c48430ee4 100644 --- a/include/hw/ppc/pnv_xive.h +++ b/include/hw/ppc/pnv_xive.h @@ -10,12 +10,11 @@ #ifndef PPC_PNV_XIVE_H #define PPC_PNV_XIVE_H +#include "hw/ppc/pnv.h" #include "hw/ppc/xive.h" #include "qom/object.h" #include "hw/ppc/xive2.h" -struct PnvChip; - #define TYPE_PNV_XIVE "pnv-xive" OBJECT_DECLARE_TYPE(PnvXive, PnvXiveClass, PNV_XIVE) @@ -31,7 +30,7 @@ struct PnvXive { XiveRouter parent_obj; /* Owning chip */ - struct PnvChip *chip; + PnvChip *chip; /* XSCOM addresses giving access to the controller registers */ MemoryRegion xscom_regs; @@ -106,7 +105,7 @@ typedef struct PnvXive2 { Xive2Router parent_obj; /* Owning chip */ - struct PnvChip *chip; + PnvChip *chip; /* XSCOM addresses giving access to the controller registers */ MemoryRegion xscom_regs;