From: Bernhard Beschow <shentey@gmail.com>
To: qemu-devel@nongnu.org
Cc: "Marcel Apfelbaum" <marcel.apfelbaum@gmail.com>,
qemu-trivial@nongnu.org, "Aurelien Jarno" <aurelien@aurel32.net>,
"Eduardo Habkost" <eduardo@habkost.net>,
"Ani Sinha" <ani@anisinha.ca>,
"Michael S. Tsirkin" <mst@redhat.com>,
"Philippe Mathieu-Daudé" <philmd@linaro.org>,
"Richard Henderson" <richard.henderson@linaro.org>,
"Igor Mammedov" <imammedo@redhat.com>,
"Paolo Bonzini" <pbonzini@redhat.com>,
"Markus Armbruster" <armbru@redhat.com>,
"Bernhard Beschow" <shentey@gmail.com>
Subject: [PATCH v4 7/7] hw/i386/pc: Unexport pc_madt_cpu_entry()
Date: Sat, 21 Jan 2023 16:19:41 +0100 [thread overview]
Message-ID: <20230121151941.24120-8-shentey@gmail.com> (raw)
In-Reply-To: <20230121151941.24120-1-shentey@gmail.com>
pc_madt_cpu_entry() is now only used in target/i386/cpu, so move it
there, and unexport and rename it.
Signed-off-by: Bernhard Beschow <shentey@gmail.com>
---
include/hw/i386/pc.h | 4 ----
hw/acpi/acpi-x86-stub.c | 6 ------
hw/i386/acpi-common.c | 33 ---------------------------------
target/i386/cpu.c | 37 +++++++++++++++++++++++++++++++++++--
4 files changed, 35 insertions(+), 45 deletions(-)
diff --git a/include/hw/i386/pc.h b/include/hw/i386/pc.h
index 66e3d059ef..9ab1818812 100644
--- a/include/hw/i386/pc.h
+++ b/include/hw/i386/pc.h
@@ -191,10 +191,6 @@ bool pc_system_ovmf_table_find(const char *entry, uint8_t **data,
int *data_len);
void pc_system_parse_ovmf_flash(uint8_t *flash_ptr, size_t flash_size);
-/* hw/i386/acpi-common.c */
-void pc_madt_cpu_entry(int uid, const CPUArchIdList *apic_ids,
- GArray *entry, bool force_enabled);
-
/* sgx.c */
void pc_machine_init_sgx_epc(PCMachineState *pcms);
diff --git a/hw/acpi/acpi-x86-stub.c b/hw/acpi/acpi-x86-stub.c
index d0d399d26b..9662a594ad 100644
--- a/hw/acpi/acpi-x86-stub.c
+++ b/hw/acpi/acpi-x86-stub.c
@@ -1,12 +1,6 @@
#include "qemu/osdep.h"
-#include "hw/i386/pc.h"
#include "hw/i386/acpi-build.h"
-void pc_madt_cpu_entry(int uid, const CPUArchIdList *apic_ids,
- GArray *entry, bool force_enabled)
-{
-}
-
Object *acpi_get_i386_pci_host(void)
{
return NULL;
diff --git a/hw/i386/acpi-common.c b/hw/i386/acpi-common.c
index 0d1a2bb8aa..0041623aeb 100644
--- a/hw/i386/acpi-common.c
+++ b/hw/i386/acpi-common.c
@@ -28,44 +28,11 @@
#include "hw/acpi/acpi_cpu_interface.h"
#include "hw/acpi/aml-build.h"
#include "hw/acpi/utils.h"
-#include "hw/i386/pc.h"
#include "target/i386/cpu.h"
#include "acpi-build.h"
#include "acpi-common.h"
-void pc_madt_cpu_entry(int uid, const CPUArchIdList *apic_ids,
- GArray *entry, bool force_enabled)
-{
- uint32_t apic_id = apic_ids->cpus[uid].arch_id;
- /* Flags – Local APIC Flags */
- uint32_t flags = apic_ids->cpus[uid].cpu != NULL || force_enabled ?
- 1 /* Enabled */ : 0;
-
- /* ACPI spec says that LAPIC entry for non present
- * CPU may be omitted from MADT or it must be marked
- * as disabled. However omitting non present CPU from
- * MADT breaks hotplug on linux. So possible CPUs
- * should be put in MADT but kept disabled.
- */
- if (apic_id < 255) {
- /* Rev 1.0b, Table 5-13 Processor Local APIC Structure */
- build_append_int_noprefix(entry, 0, 1); /* Type */
- build_append_int_noprefix(entry, 8, 1); /* Length */
- build_append_int_noprefix(entry, uid, 1); /* ACPI Processor ID */
- build_append_int_noprefix(entry, apic_id, 1); /* APIC ID */
- build_append_int_noprefix(entry, flags, 4); /* Flags */
- } else {
- /* Rev 4.0, 5.2.12.12 Processor Local x2APIC Structure */
- build_append_int_noprefix(entry, 9, 1); /* Type */
- build_append_int_noprefix(entry, 16, 1); /* Length */
- build_append_int_noprefix(entry, 0, 2); /* Reserved */
- build_append_int_noprefix(entry, apic_id, 4); /* X2APIC ID */
- build_append_int_noprefix(entry, flags, 4); /* Flags */
- build_append_int_noprefix(entry, uid, 4); /* ACPI Processor UID */
- }
-}
-
static void build_ioapic(GArray *entry, uint8_t id, uint32_t addr, uint32_t irq)
{
/* Rev 1.0b, 5.2.8.2 IO APIC */
diff --git a/target/i386/cpu.c b/target/i386/cpu.c
index 6ac50506a7..b05062bc57 100644
--- a/target/i386/cpu.c
+++ b/target/i386/cpu.c
@@ -38,8 +38,8 @@
#ifndef CONFIG_USER_ONLY
#include "exec/address-spaces.h"
#include "hw/acpi/acpi_cpu_interface.h"
+#include "hw/acpi/aml-build.h"
#include "hw/boards.h"
-#include "hw/i386/pc.h"
#include "hw/i386/sgx-epc.h"
#endif
@@ -7108,6 +7108,39 @@ static const struct SysemuCPUOps i386_sysemu_ops = {
.write_elf64_qemunote = x86_cpu_write_elf64_qemunote,
.legacy_vmsd = &vmstate_x86_cpu,
};
+
+static void x86_madt_cpu_entry(int uid, const CPUArchIdList *apic_ids,
+ GArray *entry, bool force_enabled)
+{
+ uint32_t apic_id = apic_ids->cpus[uid].arch_id;
+ /* Flags – Local APIC Flags */
+ uint32_t flags = apic_ids->cpus[uid].cpu != NULL || force_enabled ?
+ 1 /* Enabled */ : 0;
+
+ /*
+ * ACPI spec says that LAPIC entry for non present
+ * CPU may be omitted from MADT or it must be marked
+ * as disabled. However omitting non present CPU from
+ * MADT breaks hotplug on linux. So possible CPUs
+ * should be put in MADT but kept disabled.
+ */
+ if (apic_id < 255) {
+ /* Rev 1.0b, Table 5-13 Processor Local APIC Structure */
+ build_append_int_noprefix(entry, 0, 1); /* Type */
+ build_append_int_noprefix(entry, 8, 1); /* Length */
+ build_append_int_noprefix(entry, uid, 1); /* ACPI Processor ID */
+ build_append_int_noprefix(entry, apic_id, 1); /* APIC ID */
+ build_append_int_noprefix(entry, flags, 4); /* Flags */
+ } else {
+ /* Rev 4.0, 5.2.12.12 Processor Local x2APIC Structure */
+ build_append_int_noprefix(entry, 9, 1); /* Type */
+ build_append_int_noprefix(entry, 16, 1); /* Length */
+ build_append_int_noprefix(entry, 0, 2); /* Reserved */
+ build_append_int_noprefix(entry, apic_id, 4); /* X2APIC ID */
+ build_append_int_noprefix(entry, flags, 4); /* Flags */
+ build_append_int_noprefix(entry, uid, 4); /* ACPI Processor UID */
+ }
+}
#endif
static void x86_cpu_common_class_init(ObjectClass *oc, void *data)
@@ -7143,7 +7176,7 @@ static void x86_cpu_common_class_init(ObjectClass *oc, void *data)
#ifndef CONFIG_USER_ONLY
cc->sysemu_ops = &i386_sysemu_ops;
- acpuac->madt_cpu = pc_madt_cpu_entry;
+ acpuac->madt_cpu = x86_madt_cpu_entry;
#endif /* !CONFIG_USER_ONLY */
cc->gdb_arch_name = x86_gdb_arch_name;
--
2.39.1
next prev parent reply other threads:[~2023-01-21 15:21 UTC|newest]
Thread overview: 12+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-01-21 15:19 [PATCH v4 0/7] AML Housekeeping Bernhard Beschow
2023-01-21 15:19 ` [PATCH v4 1/7] hw/i386/acpi-build: Remove unused attributes Bernhard Beschow
2023-01-21 15:19 ` [PATCH v4 2/7] hw/isa/isa-bus: Turn isa_build_aml() into qbus_build_aml() Bernhard Beschow
2023-01-21 15:19 ` [PATCH v4 3/7] hw/acpi/piix4: No need to #include "hw/southbridge/piix.h" Bernhard Beschow
2023-01-21 15:19 ` [PATCH v4 4/7] hw/acpi/acpi_dev_interface: Remove unused parameter from AcpiDeviceIfClass::madt_cpu Bernhard Beschow
2023-01-21 15:19 ` [PATCH v4 5/7] hw/acpi/acpi_dev_interface: Factor out TYPE_ACPI_CPU_AML_IF Bernhard Beschow
2023-01-25 16:48 ` Igor Mammedov
2023-01-21 15:19 ` [PATCH v4 6/7] hw/acpi/acpi_dev_interface: Remove now unused #include "hw/boards.h" Bernhard Beschow
2023-01-21 15:19 ` Bernhard Beschow [this message]
2023-01-25 16:52 ` [PATCH v4 0/7] AML Housekeeping Igor Mammedov
2023-01-26 10:42 ` Bernhard Beschow
2023-01-27 12:58 ` Michael S. Tsirkin
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20230121151941.24120-8-shentey@gmail.com \
--to=shentey@gmail.com \
--cc=ani@anisinha.ca \
--cc=armbru@redhat.com \
--cc=aurelien@aurel32.net \
--cc=eduardo@habkost.net \
--cc=imammedo@redhat.com \
--cc=marcel.apfelbaum@gmail.com \
--cc=mst@redhat.com \
--cc=pbonzini@redhat.com \
--cc=philmd@linaro.org \
--cc=qemu-devel@nongnu.org \
--cc=qemu-trivial@nongnu.org \
--cc=richard.henderson@linaro.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).