125 lines
4.5 KiB
Diff
125 lines
4.5 KiB
Diff
From 56deb8f0db72858985ba077cb0f678f2dbc13bba Mon Sep 17 00:00:00 2001
|
|
From: Greg Kurz <groug@kaod.org>
|
|
Date: Mon, 5 Aug 2019 15:56:58 +0800
|
|
Subject: [PATCH] hw: Nuke hw_compat_4_0_1 and pc_compat_4_0_1
|
|
|
|
Commit c87759ce876a fixed a regression affecting pc-q35 machines by
|
|
introducing a new pc-q35-4.0.1 machine version to be used instead
|
|
of pc-q35-4.0. The only purpose was to revert the default behaviour
|
|
of not using split irqchip, but the change also introduced the usual
|
|
hw_compat and pc_compat bits, and wired them for pc-q35 only.
|
|
|
|
This raises questions when it comes to add new compat properties for
|
|
4.0* machine versions of any architecture. Where to add them ? In
|
|
4.0, 4.0.1 or both ? Error prone. Another possibility would be to teach
|
|
all other architectures about 4.0.1. This solution isn't satisfying,
|
|
especially since this is a pc-q35 specific issue.
|
|
|
|
It turns out that the split irqchip default is handled in the machine
|
|
option function and doesn't involve compat lists at all.
|
|
|
|
Drop all the 4.0.1 compat lists and use the 4.0 ones instead in the 4.0.1
|
|
machine option function.
|
|
|
|
Move the compat props that were added to the 4.0.1 since c87759ce876a to
|
|
4.0.
|
|
|
|
Even if only hw_compat_4_0_1 had an impact on other architectures,
|
|
drop pc_compat_4_0_1 as well for consistency.
|
|
|
|
Fixes: c87759ce876a "q35: Revert to kernel irqchip"
|
|
Suggested-by: Dr. David Alan Gilbert <dgilbert@redhat.com>
|
|
Signed-off-by: Greg Kurz <groug@kaod.org>
|
|
Reviewed-by: Dr. David Alan Gilbert <dgilbert@redhat.com>
|
|
Reviewed-by: Michael S. Tsirkin <mst@redhat.com>
|
|
Message-Id: <156051774276.244890.8660277280145466396.stgit@bahia.lan>
|
|
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
|
|
(cherry-picked from commit 8e8cbed09ad9d577955691b4c061b61b602406d1)
|
|
---
|
|
hw/core/machine.c | 3 ---
|
|
hw/i386/pc.c | 3 ---
|
|
hw/i386/pc_q35.c | 9 +++++++--
|
|
include/hw/boards.h | 3 ---
|
|
include/hw/i386/pc.h | 3 ---
|
|
5 files changed, 7 insertions(+), 14 deletions(-)
|
|
|
|
diff --git a/hw/core/machine.c b/hw/core/machine.c
|
|
index e41e6698..5d046a43 100644
|
|
--- a/hw/core/machine.c
|
|
+++ b/hw/core/machine.c
|
|
@@ -24,9 +24,6 @@
|
|
#include "hw/pci/pci.h"
|
|
#include "hw/mem/nvdimm.h"
|
|
|
|
-GlobalProperty hw_compat_4_0_1[] = {};
|
|
-const size_t hw_compat_4_0_1_len = G_N_ELEMENTS(hw_compat_4_0_1);
|
|
-
|
|
GlobalProperty hw_compat_4_0[] = {};
|
|
const size_t hw_compat_4_0_len = G_N_ELEMENTS(hw_compat_4_0);
|
|
|
|
diff --git a/hw/i386/pc.c b/hw/i386/pc.c
|
|
index b5311e7e..d98b737b 100644
|
|
--- a/hw/i386/pc.c
|
|
+++ b/hw/i386/pc.c
|
|
@@ -115,9 +115,6 @@ struct hpet_fw_config hpet_cfg = {.count = UINT8_MAX};
|
|
/* Physical Address of PVH entry point read from kernel ELF NOTE */
|
|
static size_t pvh_start_addr;
|
|
|
|
-GlobalProperty pc_compat_4_0_1[] = {};
|
|
-const size_t pc_compat_4_0_1_len = G_N_ELEMENTS(pc_compat_4_0_1);
|
|
-
|
|
GlobalProperty pc_compat_4_0[] = {};
|
|
const size_t pc_compat_4_0_len = G_N_ELEMENTS(pc_compat_4_0);
|
|
|
|
diff --git a/hw/i386/pc_q35.c b/hw/i386/pc_q35.c
|
|
index dcddc646..e3498a45 100644
|
|
--- a/hw/i386/pc_q35.c
|
|
+++ b/hw/i386/pc_q35.c
|
|
@@ -378,8 +378,13 @@ static void pc_q35_4_0_1_machine_options(MachineClass *m)
|
|
{
|
|
pc_q35_4_1_machine_options(m);
|
|
m->alias = NULL;
|
|
- compat_props_add(m->compat_props, hw_compat_4_0_1, hw_compat_4_0_1_len);
|
|
- compat_props_add(m->compat_props, pc_compat_4_0_1, pc_compat_4_0_1_len);
|
|
+ /*
|
|
+ * This is the default machine for the 4.0-stable branch. It is basically
|
|
+ * a 4.0 that doesn't use split irqchip by default. It MUST hence apply the
|
|
+ * 4.0 compat props.
|
|
+ */
|
|
+ compat_props_add(m->compat_props, hw_compat_4_0, hw_compat_4_0_len);
|
|
+ compat_props_add(m->compat_props, pc_compat_4_0, pc_compat_4_0_len);
|
|
}
|
|
|
|
DEFINE_Q35_MACHINE(v4_0_1, "pc-q35-4.0.1", NULL,
|
|
diff --git a/include/hw/boards.h b/include/hw/boards.h
|
|
index ad3950d3..fe1885cb 100644
|
|
--- a/include/hw/boards.h
|
|
+++ b/include/hw/boards.h
|
|
@@ -293,9 +293,6 @@ struct MachineState {
|
|
} \
|
|
type_init(machine_initfn##_register_types)
|
|
|
|
-extern GlobalProperty hw_compat_4_0_1[];
|
|
-extern const size_t hw_compat_4_0_1_len;
|
|
-
|
|
extern GlobalProperty hw_compat_4_0[];
|
|
extern const size_t hw_compat_4_0_len;
|
|
|
|
diff --git a/include/hw/i386/pc.h b/include/hw/i386/pc.h
|
|
index 5d563624..43df7230 100644
|
|
--- a/include/hw/i386/pc.h
|
|
+++ b/include/hw/i386/pc.h
|
|
@@ -293,9 +293,6 @@ int e820_add_entry(uint64_t, uint64_t, uint32_t);
|
|
int e820_get_num_entries(void);
|
|
bool e820_get_entry(int, uint32_t, uint64_t *, uint64_t *);
|
|
|
|
-extern GlobalProperty pc_compat_4_0_1[];
|
|
-extern const size_t pc_compat_4_0_1_len;
|
|
-
|
|
extern GlobalProperty pc_compat_4_0[];
|
|
extern const size_t pc_compat_4_0_len;
|
|
|
|
--
|
|
2.19.1
|
|
|