[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH v2 12/18] apic: move MAX_APICS check to 'apic' class
From: |
Igor Mammedov |
Subject: |
[Qemu-devel] [PATCH v2 12/18] apic: move MAX_APICS check to 'apic' class |
Date: |
Fri, 24 Jun 2016 18:06:00 +0200 |
MAX_APICS is only used by child 'apic' class and not
by its parent TYPE_APIC_COMMON or any other derived
class.
Move check into end user 'apic' class so it won't
get in the way of other APIC implementations
if they support more then MAX_APICS.
Signed-off-by: Igor Mammedov <address@hidden>
---
hw/intc/apic.c | 10 ++++++++++
hw/intc/apic_common.c | 8 --------
include/hw/i386/apic_internal.h | 4 +---
3 files changed, 11 insertions(+), 11 deletions(-)
diff --git a/hw/intc/apic.c b/hw/intc/apic.c
index e1ab935..b0d237b 100644
--- a/hw/intc/apic.c
+++ b/hw/intc/apic.c
@@ -28,7 +28,9 @@
#include "trace.h"
#include "hw/i386/pc.h"
#include "hw/i386/apic-msidef.h"
+#include "qapi/error.h"
+#define MAX_APICS 255
#define MAX_APIC_WORDS 8
#define SYNC_FROM_VAPIC 0x1
@@ -869,6 +871,14 @@ static const MemoryRegionOps apic_io_ops = {
static void apic_realize(DeviceState *dev, Error **errp)
{
APICCommonState *s = APIC_COMMON(dev);
+ static int apic_no;
+
+ if (apic_no >= MAX_APICS) {
+ error_setg(errp, "%s initialization failed.",
+ object_get_typename(OBJECT(dev)));
+ return;
+ }
+ s->idx = apic_no++;
memory_region_init_io(&s->io_memory, OBJECT(s), &apic_io_ops, s,
"apic-msi",
APIC_SPACE_SIZE);
diff --git a/hw/intc/apic_common.c b/hw/intc/apic_common.c
index e6eb694..fd425d1 100644
--- a/hw/intc/apic_common.c
+++ b/hw/intc/apic_common.c
@@ -299,14 +299,6 @@ static void apic_common_realize(DeviceState *dev, Error
**errp)
APICCommonState *s = APIC_COMMON(dev);
APICCommonClass *info;
static DeviceState *vapic;
- static int apic_no;
-
- if (apic_no >= MAX_APICS) {
- error_setg(errp, "%s initialization failed.",
- object_get_typename(OBJECT(dev)));
- return;
- }
- s->idx = apic_no++;
info = APIC_COMMON_GET_CLASS(s);
info->realize(dev, errp);
diff --git a/include/hw/i386/apic_internal.h b/include/hw/i386/apic_internal.h
index 74fe935..5d3be9a 100644
--- a/include/hw/i386/apic_internal.h
+++ b/include/hw/i386/apic_internal.h
@@ -120,8 +120,6 @@
#define VAPIC_ENABLE_BIT 0
#define VAPIC_ENABLE_MASK (1 << VAPIC_ENABLE_BIT)
-#define MAX_APICS 255
-
typedef struct APICCommonState APICCommonState;
#define TYPE_APIC_COMMON "apic-common"
@@ -175,7 +173,7 @@ struct APICCommonState {
uint32_t initial_count;
int64_t initial_count_load_time;
int64_t next_time;
- int idx;
+ int idx; /* not actually common, used only by 'apic' derived class */
QEMUTimer *timer;
int64_t timer_expiry;
int sipi_vector;
--
1.8.3.1
- [Qemu-devel] [PATCH v2 03/18] pc: extract CPU lookup into a separate function, (continued)
- [Qemu-devel] [PATCH v2 03/18] pc: extract CPU lookup into a separate function, Igor Mammedov, 2016/06/24
- [Qemu-devel] [PATCH v2 01/18] target-i386: cpu: use uint32_t for X86CPU.apic_id, Igor Mammedov, 2016/06/24
- [Qemu-devel] [PATCH v2 06/18] target-i386: add socket/core/thread properties to X86CPU, Igor Mammedov, 2016/06/24
- [Qemu-devel] [PATCH v2 04/18] pc: cpu: consolidate apic-id validity checks in pc_cpu_pre_plug(), Igor Mammedov, 2016/06/24
- [Qemu-devel] [PATCH v2 07/18] pc: set APIC ID based on socket/core/thread ids if it's not been set yet, Igor Mammedov, 2016/06/24
- [Qemu-devel] [PATCH v2 05/18] target-i386: cpu: replace custom apic-id setter/getter with static property, Igor Mammedov, 2016/06/24
- [Qemu-devel] [PATCH v2 09/18] pc: delay setting number of boot CPUs to machine_done time, Igor Mammedov, 2016/06/24
- [Qemu-devel] [PATCH v2 11/18] pc: cpu: allow device_add to be used with x86 cpu, Igor Mammedov, 2016/06/24
- [Qemu-devel] [PATCH v2 10/18] pc: register created initial and hotpluged CPUs in one place pc_cpu_plug(), Igor Mammedov, 2016/06/24
- [Qemu-devel] [PATCH v2 12/18] apic: move MAX_APICS check to 'apic' class,
Igor Mammedov <=
- [Qemu-devel] [PATCH v2 08/18] pc: implement query-hotpluggable-cpus callback, Igor Mammedov, 2016/06/24
- [Qemu-devel] [PATCH v2 13/18] apic: drop APICCommonState.idx and use APIC ID as index in local_apics[], Igor Mammedov, 2016/06/24
- [Qemu-devel] [PATCH v2 14/18] (kvm)apic: add unrealize callbacks, Igor Mammedov, 2016/06/24
- [Qemu-devel] [PATCH v2 15/18] target-i386: do not ignore error and fix apic parent, Igor Mammedov, 2016/06/24
- [Qemu-devel] [PATCH v2 17/18] target-i386: add x86_cpu_unrealizefn(), Igor Mammedov, 2016/06/24
- [Qemu-devel] [PATCH v2 18/18] pc: make device_del CPU work for x86 CPUs, Igor Mammedov, 2016/06/24
- [Qemu-devel] [PATCH v2 16/18] target-i386: fix apic object leak when CPU is deleted, Igor Mammedov, 2016/06/24