* [PATCH] pc: apic: introduce APIC macro
@ 2016-09-15 0:43 ` Wanpeng Li
0 siblings, 0 replies; 8+ messages in thread
From: Wanpeng Li @ 2016-09-15 0:43 UTC (permalink / raw)
To: kvm, qemu-devel
Cc: Wanpeng Li, Paolo Bonzini, Radim Krčmář,
Michael S. Tsirkin, Eduardo Habkost
From: Wanpeng Li <wanpeng.li@hotmail.com>
Introduce a new APIC macro to replace APIC_COMMON macro in
hw/intc/apic.c in order to capture access LAPIC in qemu
even if LAPIC is emulated in kvm.
Suggested-by: Paolo Bonzini <pbonzini@redhat.com>
Cc: Paolo Bonzini <pbonzini@redhat.com>
Cc: Radim Krčmář <rkrcmar@redhat.com>
Cc: Michael S. Tsirkin <mst@redhat.com>
Cc: Eduardo Habkost <ehabkost@redhat.com>
Signed-off-by: Wanpeng Li <wanpeng.li@hotmail.com>
---
hw/intc/apic.c | 20 ++++++++++----------
include/hw/i386/apic_internal.h | 4 ++++
2 files changed, 14 insertions(+), 10 deletions(-)
diff --git a/hw/intc/apic.c b/hw/intc/apic.c
index 45887d9..577f095 100644
--- a/hw/intc/apic.c
+++ b/hw/intc/apic.c
@@ -163,7 +163,7 @@ static void apic_local_deliver(APICCommonState *s, int vector)
void apic_deliver_pic_intr(DeviceState *dev, int level)
{
- APICCommonState *s = APIC_COMMON(dev);
+ APICCommonState *s = APIC(dev);
if (level) {
apic_local_deliver(s, APIC_LVT_LINT0);
@@ -373,7 +373,7 @@ static void apic_update_irq(APICCommonState *s)
void apic_poll_irq(DeviceState *dev)
{
- APICCommonState *s = APIC_COMMON(dev);
+ APICCommonState *s = APIC(dev);
apic_sync_vapic(s, SYNC_FROM_VAPIC);
apic_update_irq(s);
@@ -479,7 +479,7 @@ static void apic_startup(APICCommonState *s, int vector_num)
void apic_sipi(DeviceState *dev)
{
- APICCommonState *s = APIC_COMMON(dev);
+ APICCommonState *s = APIC(dev);
cpu_reset_interrupt(CPU(s->cpu), CPU_INTERRUPT_SIPI);
@@ -493,7 +493,7 @@ static void apic_deliver(DeviceState *dev, uint8_t dest, uint8_t dest_mode,
uint8_t delivery_mode, uint8_t vector_num,
uint8_t trigger_mode)
{
- APICCommonState *s = APIC_COMMON(dev);
+ APICCommonState *s = APIC(dev);
uint32_t deliver_bitmask[MAX_APIC_WORDS];
int dest_shorthand = (s->icr[0] >> 18) & 3;
APICCommonState *apic_iter;
@@ -550,7 +550,7 @@ static bool apic_check_pic(APICCommonState *s)
int apic_get_interrupt(DeviceState *dev)
{
- APICCommonState *s = APIC_COMMON(dev);
+ APICCommonState *s = APIC(dev);
int intno;
/* if the APIC is installed or enabled, we let the 8259 handle the
@@ -584,7 +584,7 @@ int apic_get_interrupt(DeviceState *dev)
int apic_accept_pic_intr(DeviceState *dev)
{
- APICCommonState *s = APIC_COMMON(dev);
+ APICCommonState *s = APIC(dev);
uint32_t lvt0;
if (!s)
@@ -663,7 +663,7 @@ static uint32_t apic_mem_readl(void *opaque, hwaddr addr)
if (!dev) {
return 0;
}
- s = APIC_COMMON(dev);
+ s = APIC(dev);
index = (addr >> 4) & 0xff;
switch(index) {
@@ -766,7 +766,7 @@ static void apic_mem_writel(void *opaque, hwaddr addr, uint32_t val)
if (!dev) {
return;
}
- s = APIC_COMMON(dev);
+ s = APIC(dev);
trace_apic_mem_writel(addr, val);
@@ -870,7 +870,7 @@ static const MemoryRegionOps apic_io_ops = {
static void apic_realize(DeviceState *dev, Error **errp)
{
- APICCommonState *s = APIC_COMMON(dev);
+ APICCommonState *s = APIC(dev);
if (s->id >= MAX_APICS) {
error_setg(errp, "%s initialization failed. APIC ID %d is invalid",
@@ -889,7 +889,7 @@ static void apic_realize(DeviceState *dev, Error **errp)
static void apic_unrealize(DeviceState *dev, Error **errp)
{
- APICCommonState *s = APIC_COMMON(dev);
+ APICCommonState *s = APIC(dev);
timer_del(s->timer);
timer_free(s->timer);
diff --git a/include/hw/i386/apic_internal.h b/include/hw/i386/apic_internal.h
index 06c4e9f..5e36016 100644
--- a/include/hw/i386/apic_internal.h
+++ b/include/hw/i386/apic_internal.h
@@ -131,6 +131,10 @@ typedef struct APICCommonState APICCommonState;
#define APIC_COMMON_GET_CLASS(obj) \
OBJECT_GET_CLASS(APICCommonClass, (obj), TYPE_APIC_COMMON)
+#define TYPE_APIC "apic"
+#define APIC(obj) \
+ OBJECT_CHECK(APICCommonState, (obj), TYPE_APIC)
+
typedef struct APICCommonClass
{
DeviceClass parent_class;
--
1.9.1
^ permalink raw reply related [flat|nested] 8+ messages in thread
* [Qemu-devel] [PATCH] pc: apic: introduce APIC macro
@ 2016-09-15 0:43 ` Wanpeng Li
0 siblings, 0 replies; 8+ messages in thread
From: Wanpeng Li @ 2016-09-15 0:43 UTC (permalink / raw)
To: kvm, qemu-devel
Cc: Wanpeng Li, Paolo Bonzini, Radim Krčmář,
Michael S. Tsirkin, Eduardo Habkost
From: Wanpeng Li <wanpeng.li@hotmail.com>
Introduce a new APIC macro to replace APIC_COMMON macro in
hw/intc/apic.c in order to capture access LAPIC in qemu
even if LAPIC is emulated in kvm.
Suggested-by: Paolo Bonzini <pbonzini@redhat.com>
Cc: Paolo Bonzini <pbonzini@redhat.com>
Cc: Radim Krčmář <rkrcmar@redhat.com>
Cc: Michael S. Tsirkin <mst@redhat.com>
Cc: Eduardo Habkost <ehabkost@redhat.com>
Signed-off-by: Wanpeng Li <wanpeng.li@hotmail.com>
---
hw/intc/apic.c | 20 ++++++++++----------
include/hw/i386/apic_internal.h | 4 ++++
2 files changed, 14 insertions(+), 10 deletions(-)
diff --git a/hw/intc/apic.c b/hw/intc/apic.c
index 45887d9..577f095 100644
--- a/hw/intc/apic.c
+++ b/hw/intc/apic.c
@@ -163,7 +163,7 @@ static void apic_local_deliver(APICCommonState *s, int vector)
void apic_deliver_pic_intr(DeviceState *dev, int level)
{
- APICCommonState *s = APIC_COMMON(dev);
+ APICCommonState *s = APIC(dev);
if (level) {
apic_local_deliver(s, APIC_LVT_LINT0);
@@ -373,7 +373,7 @@ static void apic_update_irq(APICCommonState *s)
void apic_poll_irq(DeviceState *dev)
{
- APICCommonState *s = APIC_COMMON(dev);
+ APICCommonState *s = APIC(dev);
apic_sync_vapic(s, SYNC_FROM_VAPIC);
apic_update_irq(s);
@@ -479,7 +479,7 @@ static void apic_startup(APICCommonState *s, int vector_num)
void apic_sipi(DeviceState *dev)
{
- APICCommonState *s = APIC_COMMON(dev);
+ APICCommonState *s = APIC(dev);
cpu_reset_interrupt(CPU(s->cpu), CPU_INTERRUPT_SIPI);
@@ -493,7 +493,7 @@ static void apic_deliver(DeviceState *dev, uint8_t dest, uint8_t dest_mode,
uint8_t delivery_mode, uint8_t vector_num,
uint8_t trigger_mode)
{
- APICCommonState *s = APIC_COMMON(dev);
+ APICCommonState *s = APIC(dev);
uint32_t deliver_bitmask[MAX_APIC_WORDS];
int dest_shorthand = (s->icr[0] >> 18) & 3;
APICCommonState *apic_iter;
@@ -550,7 +550,7 @@ static bool apic_check_pic(APICCommonState *s)
int apic_get_interrupt(DeviceState *dev)
{
- APICCommonState *s = APIC_COMMON(dev);
+ APICCommonState *s = APIC(dev);
int intno;
/* if the APIC is installed or enabled, we let the 8259 handle the
@@ -584,7 +584,7 @@ int apic_get_interrupt(DeviceState *dev)
int apic_accept_pic_intr(DeviceState *dev)
{
- APICCommonState *s = APIC_COMMON(dev);
+ APICCommonState *s = APIC(dev);
uint32_t lvt0;
if (!s)
@@ -663,7 +663,7 @@ static uint32_t apic_mem_readl(void *opaque, hwaddr addr)
if (!dev) {
return 0;
}
- s = APIC_COMMON(dev);
+ s = APIC(dev);
index = (addr >> 4) & 0xff;
switch(index) {
@@ -766,7 +766,7 @@ static void apic_mem_writel(void *opaque, hwaddr addr, uint32_t val)
if (!dev) {
return;
}
- s = APIC_COMMON(dev);
+ s = APIC(dev);
trace_apic_mem_writel(addr, val);
@@ -870,7 +870,7 @@ static const MemoryRegionOps apic_io_ops = {
static void apic_realize(DeviceState *dev, Error **errp)
{
- APICCommonState *s = APIC_COMMON(dev);
+ APICCommonState *s = APIC(dev);
if (s->id >= MAX_APICS) {
error_setg(errp, "%s initialization failed. APIC ID %d is invalid",
@@ -889,7 +889,7 @@ static void apic_realize(DeviceState *dev, Error **errp)
static void apic_unrealize(DeviceState *dev, Error **errp)
{
- APICCommonState *s = APIC_COMMON(dev);
+ APICCommonState *s = APIC(dev);
timer_del(s->timer);
timer_free(s->timer);
diff --git a/include/hw/i386/apic_internal.h b/include/hw/i386/apic_internal.h
index 06c4e9f..5e36016 100644
--- a/include/hw/i386/apic_internal.h
+++ b/include/hw/i386/apic_internal.h
@@ -131,6 +131,10 @@ typedef struct APICCommonState APICCommonState;
#define APIC_COMMON_GET_CLASS(obj) \
OBJECT_GET_CLASS(APICCommonClass, (obj), TYPE_APIC_COMMON)
+#define TYPE_APIC "apic"
+#define APIC(obj) \
+ OBJECT_CHECK(APICCommonState, (obj), TYPE_APIC)
+
typedef struct APICCommonClass
{
DeviceClass parent_class;
--
1.9.1
^ permalink raw reply related [flat|nested] 8+ messages in thread
* Re: [PATCH] pc: apic: introduce APIC macro
2016-09-15 0:43 ` [Qemu-devel] " Wanpeng Li
@ 2016-09-15 1:33 ` Michael S. Tsirkin
-1 siblings, 0 replies; 8+ messages in thread
From: Michael S. Tsirkin @ 2016-09-15 1:33 UTC (permalink / raw)
To: Wanpeng Li
Cc: kvm, qemu-devel, Wanpeng Li, Paolo Bonzini,
Radim Krčmář,
Eduardo Habkost
On Thu, Sep 15, 2016 at 08:43:33AM +0800, Wanpeng Li wrote:
> From: Wanpeng Li <wanpeng.li@hotmail.com>
>
> Introduce a new APIC macro to replace APIC_COMMON macro in
> hw/intc/apic.c in order to capture access LAPIC in qemu
> even if LAPIC is emulated in kvm.
>
> Suggested-by: Paolo Bonzini <pbonzini@redhat.com>
> Cc: Paolo Bonzini <pbonzini@redhat.com>
> Cc: Radim Krčmář <rkrcmar@redhat.com>
> Cc: Michael S. Tsirkin <mst@redhat.com>
> Cc: Eduardo Habkost <ehabkost@redhat.com>
> Signed-off-by: Wanpeng Li <wanpeng.li@hotmail.com>
Reviewed-by: Michael S. Tsirkin <mst@redhat.com>
> ---
> hw/intc/apic.c | 20 ++++++++++----------
> include/hw/i386/apic_internal.h | 4 ++++
> 2 files changed, 14 insertions(+), 10 deletions(-)
>
> diff --git a/hw/intc/apic.c b/hw/intc/apic.c
> index 45887d9..577f095 100644
> --- a/hw/intc/apic.c
> +++ b/hw/intc/apic.c
> @@ -163,7 +163,7 @@ static void apic_local_deliver(APICCommonState *s, int vector)
>
> void apic_deliver_pic_intr(DeviceState *dev, int level)
> {
> - APICCommonState *s = APIC_COMMON(dev);
> + APICCommonState *s = APIC(dev);
>
> if (level) {
> apic_local_deliver(s, APIC_LVT_LINT0);
> @@ -373,7 +373,7 @@ static void apic_update_irq(APICCommonState *s)
>
> void apic_poll_irq(DeviceState *dev)
> {
> - APICCommonState *s = APIC_COMMON(dev);
> + APICCommonState *s = APIC(dev);
>
> apic_sync_vapic(s, SYNC_FROM_VAPIC);
> apic_update_irq(s);
> @@ -479,7 +479,7 @@ static void apic_startup(APICCommonState *s, int vector_num)
>
> void apic_sipi(DeviceState *dev)
> {
> - APICCommonState *s = APIC_COMMON(dev);
> + APICCommonState *s = APIC(dev);
>
> cpu_reset_interrupt(CPU(s->cpu), CPU_INTERRUPT_SIPI);
>
> @@ -493,7 +493,7 @@ static void apic_deliver(DeviceState *dev, uint8_t dest, uint8_t dest_mode,
> uint8_t delivery_mode, uint8_t vector_num,
> uint8_t trigger_mode)
> {
> - APICCommonState *s = APIC_COMMON(dev);
> + APICCommonState *s = APIC(dev);
> uint32_t deliver_bitmask[MAX_APIC_WORDS];
> int dest_shorthand = (s->icr[0] >> 18) & 3;
> APICCommonState *apic_iter;
> @@ -550,7 +550,7 @@ static bool apic_check_pic(APICCommonState *s)
>
> int apic_get_interrupt(DeviceState *dev)
> {
> - APICCommonState *s = APIC_COMMON(dev);
> + APICCommonState *s = APIC(dev);
> int intno;
>
> /* if the APIC is installed or enabled, we let the 8259 handle the
> @@ -584,7 +584,7 @@ int apic_get_interrupt(DeviceState *dev)
>
> int apic_accept_pic_intr(DeviceState *dev)
> {
> - APICCommonState *s = APIC_COMMON(dev);
> + APICCommonState *s = APIC(dev);
> uint32_t lvt0;
>
> if (!s)
> @@ -663,7 +663,7 @@ static uint32_t apic_mem_readl(void *opaque, hwaddr addr)
> if (!dev) {
> return 0;
> }
> - s = APIC_COMMON(dev);
> + s = APIC(dev);
>
> index = (addr >> 4) & 0xff;
> switch(index) {
> @@ -766,7 +766,7 @@ static void apic_mem_writel(void *opaque, hwaddr addr, uint32_t val)
> if (!dev) {
> return;
> }
> - s = APIC_COMMON(dev);
> + s = APIC(dev);
>
> trace_apic_mem_writel(addr, val);
>
> @@ -870,7 +870,7 @@ static const MemoryRegionOps apic_io_ops = {
>
> static void apic_realize(DeviceState *dev, Error **errp)
> {
> - APICCommonState *s = APIC_COMMON(dev);
> + APICCommonState *s = APIC(dev);
>
> if (s->id >= MAX_APICS) {
> error_setg(errp, "%s initialization failed. APIC ID %d is invalid",
> @@ -889,7 +889,7 @@ static void apic_realize(DeviceState *dev, Error **errp)
>
> static void apic_unrealize(DeviceState *dev, Error **errp)
> {
> - APICCommonState *s = APIC_COMMON(dev);
> + APICCommonState *s = APIC(dev);
>
> timer_del(s->timer);
> timer_free(s->timer);
> diff --git a/include/hw/i386/apic_internal.h b/include/hw/i386/apic_internal.h
> index 06c4e9f..5e36016 100644
> --- a/include/hw/i386/apic_internal.h
> +++ b/include/hw/i386/apic_internal.h
> @@ -131,6 +131,10 @@ typedef struct APICCommonState APICCommonState;
> #define APIC_COMMON_GET_CLASS(obj) \
> OBJECT_GET_CLASS(APICCommonClass, (obj), TYPE_APIC_COMMON)
>
> +#define TYPE_APIC "apic"
> +#define APIC(obj) \
> + OBJECT_CHECK(APICCommonState, (obj), TYPE_APIC)
> +
> typedef struct APICCommonClass
> {
> DeviceClass parent_class;
> --
> 1.9.1
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [Qemu-devel] [PATCH] pc: apic: introduce APIC macro
@ 2016-09-15 1:33 ` Michael S. Tsirkin
0 siblings, 0 replies; 8+ messages in thread
From: Michael S. Tsirkin @ 2016-09-15 1:33 UTC (permalink / raw)
To: Wanpeng Li
Cc: kvm, qemu-devel, Wanpeng Li, Paolo Bonzini,
Radim Krčmář,
Eduardo Habkost
On Thu, Sep 15, 2016 at 08:43:33AM +0800, Wanpeng Li wrote:
> From: Wanpeng Li <wanpeng.li@hotmail.com>
>
> Introduce a new APIC macro to replace APIC_COMMON macro in
> hw/intc/apic.c in order to capture access LAPIC in qemu
> even if LAPIC is emulated in kvm.
>
> Suggested-by: Paolo Bonzini <pbonzini@redhat.com>
> Cc: Paolo Bonzini <pbonzini@redhat.com>
> Cc: Radim Krčmář <rkrcmar@redhat.com>
> Cc: Michael S. Tsirkin <mst@redhat.com>
> Cc: Eduardo Habkost <ehabkost@redhat.com>
> Signed-off-by: Wanpeng Li <wanpeng.li@hotmail.com>
Reviewed-by: Michael S. Tsirkin <mst@redhat.com>
> ---
> hw/intc/apic.c | 20 ++++++++++----------
> include/hw/i386/apic_internal.h | 4 ++++
> 2 files changed, 14 insertions(+), 10 deletions(-)
>
> diff --git a/hw/intc/apic.c b/hw/intc/apic.c
> index 45887d9..577f095 100644
> --- a/hw/intc/apic.c
> +++ b/hw/intc/apic.c
> @@ -163,7 +163,7 @@ static void apic_local_deliver(APICCommonState *s, int vector)
>
> void apic_deliver_pic_intr(DeviceState *dev, int level)
> {
> - APICCommonState *s = APIC_COMMON(dev);
> + APICCommonState *s = APIC(dev);
>
> if (level) {
> apic_local_deliver(s, APIC_LVT_LINT0);
> @@ -373,7 +373,7 @@ static void apic_update_irq(APICCommonState *s)
>
> void apic_poll_irq(DeviceState *dev)
> {
> - APICCommonState *s = APIC_COMMON(dev);
> + APICCommonState *s = APIC(dev);
>
> apic_sync_vapic(s, SYNC_FROM_VAPIC);
> apic_update_irq(s);
> @@ -479,7 +479,7 @@ static void apic_startup(APICCommonState *s, int vector_num)
>
> void apic_sipi(DeviceState *dev)
> {
> - APICCommonState *s = APIC_COMMON(dev);
> + APICCommonState *s = APIC(dev);
>
> cpu_reset_interrupt(CPU(s->cpu), CPU_INTERRUPT_SIPI);
>
> @@ -493,7 +493,7 @@ static void apic_deliver(DeviceState *dev, uint8_t dest, uint8_t dest_mode,
> uint8_t delivery_mode, uint8_t vector_num,
> uint8_t trigger_mode)
> {
> - APICCommonState *s = APIC_COMMON(dev);
> + APICCommonState *s = APIC(dev);
> uint32_t deliver_bitmask[MAX_APIC_WORDS];
> int dest_shorthand = (s->icr[0] >> 18) & 3;
> APICCommonState *apic_iter;
> @@ -550,7 +550,7 @@ static bool apic_check_pic(APICCommonState *s)
>
> int apic_get_interrupt(DeviceState *dev)
> {
> - APICCommonState *s = APIC_COMMON(dev);
> + APICCommonState *s = APIC(dev);
> int intno;
>
> /* if the APIC is installed or enabled, we let the 8259 handle the
> @@ -584,7 +584,7 @@ int apic_get_interrupt(DeviceState *dev)
>
> int apic_accept_pic_intr(DeviceState *dev)
> {
> - APICCommonState *s = APIC_COMMON(dev);
> + APICCommonState *s = APIC(dev);
> uint32_t lvt0;
>
> if (!s)
> @@ -663,7 +663,7 @@ static uint32_t apic_mem_readl(void *opaque, hwaddr addr)
> if (!dev) {
> return 0;
> }
> - s = APIC_COMMON(dev);
> + s = APIC(dev);
>
> index = (addr >> 4) & 0xff;
> switch(index) {
> @@ -766,7 +766,7 @@ static void apic_mem_writel(void *opaque, hwaddr addr, uint32_t val)
> if (!dev) {
> return;
> }
> - s = APIC_COMMON(dev);
> + s = APIC(dev);
>
> trace_apic_mem_writel(addr, val);
>
> @@ -870,7 +870,7 @@ static const MemoryRegionOps apic_io_ops = {
>
> static void apic_realize(DeviceState *dev, Error **errp)
> {
> - APICCommonState *s = APIC_COMMON(dev);
> + APICCommonState *s = APIC(dev);
>
> if (s->id >= MAX_APICS) {
> error_setg(errp, "%s initialization failed. APIC ID %d is invalid",
> @@ -889,7 +889,7 @@ static void apic_realize(DeviceState *dev, Error **errp)
>
> static void apic_unrealize(DeviceState *dev, Error **errp)
> {
> - APICCommonState *s = APIC_COMMON(dev);
> + APICCommonState *s = APIC(dev);
>
> timer_del(s->timer);
> timer_free(s->timer);
> diff --git a/include/hw/i386/apic_internal.h b/include/hw/i386/apic_internal.h
> index 06c4e9f..5e36016 100644
> --- a/include/hw/i386/apic_internal.h
> +++ b/include/hw/i386/apic_internal.h
> @@ -131,6 +131,10 @@ typedef struct APICCommonState APICCommonState;
> #define APIC_COMMON_GET_CLASS(obj) \
> OBJECT_GET_CLASS(APICCommonClass, (obj), TYPE_APIC_COMMON)
>
> +#define TYPE_APIC "apic"
> +#define APIC(obj) \
> + OBJECT_CHECK(APICCommonState, (obj), TYPE_APIC)
> +
> typedef struct APICCommonClass
> {
> DeviceClass parent_class;
> --
> 1.9.1
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH] pc: apic: introduce APIC macro
2016-09-15 0:43 ` [Qemu-devel] " Wanpeng Li
@ 2016-09-15 6:27 ` Paolo Bonzini
-1 siblings, 0 replies; 8+ messages in thread
From: Paolo Bonzini @ 2016-09-15 6:27 UTC (permalink / raw)
To: Wanpeng Li, kvm, qemu-devel
Cc: Wanpeng Li, Radim Krčmář,
Michael S. Tsirkin, Eduardo Habkost
On 15/09/2016 02:43, Wanpeng Li wrote:
> From: Wanpeng Li <wanpeng.li@hotmail.com>
>
> Introduce a new APIC macro to replace APIC_COMMON macro in
> hw/intc/apic.c in order to capture access LAPIC in qemu
> even if LAPIC is emulated in kvm.
>
> Suggested-by: Paolo Bonzini <pbonzini@redhat.com>
> Cc: Paolo Bonzini <pbonzini@redhat.com>
> Cc: Radim Krčmář <rkrcmar@redhat.com>
> Cc: Michael S. Tsirkin <mst@redhat.com>
> Cc: Eduardo Habkost <ehabkost@redhat.com>
> Signed-off-by: Wanpeng Li <wanpeng.li@hotmail.com>
> ---
> hw/intc/apic.c | 20 ++++++++++----------
> include/hw/i386/apic_internal.h | 4 ++++
> 2 files changed, 14 insertions(+), 10 deletions(-)
>
> diff --git a/hw/intc/apic.c b/hw/intc/apic.c
> index 45887d9..577f095 100644
> --- a/hw/intc/apic.c
> +++ b/hw/intc/apic.c
> @@ -163,7 +163,7 @@ static void apic_local_deliver(APICCommonState *s, int vector)
>
> void apic_deliver_pic_intr(DeviceState *dev, int level)
> {
> - APICCommonState *s = APIC_COMMON(dev);
> + APICCommonState *s = APIC(dev);
>
> if (level) {
> apic_local_deliver(s, APIC_LVT_LINT0);
> @@ -373,7 +373,7 @@ static void apic_update_irq(APICCommonState *s)
>
> void apic_poll_irq(DeviceState *dev)
> {
> - APICCommonState *s = APIC_COMMON(dev);
> + APICCommonState *s = APIC(dev);
>
> apic_sync_vapic(s, SYNC_FROM_VAPIC);
> apic_update_irq(s);
> @@ -479,7 +479,7 @@ static void apic_startup(APICCommonState *s, int vector_num)
>
> void apic_sipi(DeviceState *dev)
> {
> - APICCommonState *s = APIC_COMMON(dev);
> + APICCommonState *s = APIC(dev);
>
> cpu_reset_interrupt(CPU(s->cpu), CPU_INTERRUPT_SIPI);
>
> @@ -493,7 +493,7 @@ static void apic_deliver(DeviceState *dev, uint8_t dest, uint8_t dest_mode,
> uint8_t delivery_mode, uint8_t vector_num,
> uint8_t trigger_mode)
> {
> - APICCommonState *s = APIC_COMMON(dev);
> + APICCommonState *s = APIC(dev);
> uint32_t deliver_bitmask[MAX_APIC_WORDS];
> int dest_shorthand = (s->icr[0] >> 18) & 3;
> APICCommonState *apic_iter;
> @@ -550,7 +550,7 @@ static bool apic_check_pic(APICCommonState *s)
>
> int apic_get_interrupt(DeviceState *dev)
> {
> - APICCommonState *s = APIC_COMMON(dev);
> + APICCommonState *s = APIC(dev);
> int intno;
>
> /* if the APIC is installed or enabled, we let the 8259 handle the
> @@ -584,7 +584,7 @@ int apic_get_interrupt(DeviceState *dev)
>
> int apic_accept_pic_intr(DeviceState *dev)
> {
> - APICCommonState *s = APIC_COMMON(dev);
> + APICCommonState *s = APIC(dev);
> uint32_t lvt0;
>
> if (!s)
> @@ -663,7 +663,7 @@ static uint32_t apic_mem_readl(void *opaque, hwaddr addr)
> if (!dev) {
> return 0;
> }
> - s = APIC_COMMON(dev);
> + s = APIC(dev);
>
> index = (addr >> 4) & 0xff;
> switch(index) {
> @@ -766,7 +766,7 @@ static void apic_mem_writel(void *opaque, hwaddr addr, uint32_t val)
> if (!dev) {
> return;
> }
> - s = APIC_COMMON(dev);
> + s = APIC(dev);
>
> trace_apic_mem_writel(addr, val);
>
> @@ -870,7 +870,7 @@ static const MemoryRegionOps apic_io_ops = {
>
> static void apic_realize(DeviceState *dev, Error **errp)
> {
> - APICCommonState *s = APIC_COMMON(dev);
> + APICCommonState *s = APIC(dev);
>
> if (s->id >= MAX_APICS) {
> error_setg(errp, "%s initialization failed. APIC ID %d is invalid",
> @@ -889,7 +889,7 @@ static void apic_realize(DeviceState *dev, Error **errp)
>
> static void apic_unrealize(DeviceState *dev, Error **errp)
> {
> - APICCommonState *s = APIC_COMMON(dev);
> + APICCommonState *s = APIC(dev);
>
> timer_del(s->timer);
> timer_free(s->timer);
> diff --git a/include/hw/i386/apic_internal.h b/include/hw/i386/apic_internal.h
> index 06c4e9f..5e36016 100644
> --- a/include/hw/i386/apic_internal.h
> +++ b/include/hw/i386/apic_internal.h
> @@ -131,6 +131,10 @@ typedef struct APICCommonState APICCommonState;
> #define APIC_COMMON_GET_CLASS(obj) \
> OBJECT_GET_CLASS(APICCommonClass, (obj), TYPE_APIC_COMMON)
>
> +#define TYPE_APIC "apic"
> +#define APIC(obj) \
> + OBJECT_CHECK(APICCommonState, (obj), TYPE_APIC)
This should be in apic.c. Also please replace the other occurrence of
"apic" in apic.c by TYPE_APIC.
Thanks,
Paolo
> typedef struct APICCommonClass
> {
> DeviceClass parent_class;
>
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [Qemu-devel] [PATCH] pc: apic: introduce APIC macro
@ 2016-09-15 6:27 ` Paolo Bonzini
0 siblings, 0 replies; 8+ messages in thread
From: Paolo Bonzini @ 2016-09-15 6:27 UTC (permalink / raw)
To: Wanpeng Li, kvm, qemu-devel
Cc: Wanpeng Li, Radim Krčmář,
Michael S. Tsirkin, Eduardo Habkost
On 15/09/2016 02:43, Wanpeng Li wrote:
> From: Wanpeng Li <wanpeng.li@hotmail.com>
>
> Introduce a new APIC macro to replace APIC_COMMON macro in
> hw/intc/apic.c in order to capture access LAPIC in qemu
> even if LAPIC is emulated in kvm.
>
> Suggested-by: Paolo Bonzini <pbonzini@redhat.com>
> Cc: Paolo Bonzini <pbonzini@redhat.com>
> Cc: Radim Krčmář <rkrcmar@redhat.com>
> Cc: Michael S. Tsirkin <mst@redhat.com>
> Cc: Eduardo Habkost <ehabkost@redhat.com>
> Signed-off-by: Wanpeng Li <wanpeng.li@hotmail.com>
> ---
> hw/intc/apic.c | 20 ++++++++++----------
> include/hw/i386/apic_internal.h | 4 ++++
> 2 files changed, 14 insertions(+), 10 deletions(-)
>
> diff --git a/hw/intc/apic.c b/hw/intc/apic.c
> index 45887d9..577f095 100644
> --- a/hw/intc/apic.c
> +++ b/hw/intc/apic.c
> @@ -163,7 +163,7 @@ static void apic_local_deliver(APICCommonState *s, int vector)
>
> void apic_deliver_pic_intr(DeviceState *dev, int level)
> {
> - APICCommonState *s = APIC_COMMON(dev);
> + APICCommonState *s = APIC(dev);
>
> if (level) {
> apic_local_deliver(s, APIC_LVT_LINT0);
> @@ -373,7 +373,7 @@ static void apic_update_irq(APICCommonState *s)
>
> void apic_poll_irq(DeviceState *dev)
> {
> - APICCommonState *s = APIC_COMMON(dev);
> + APICCommonState *s = APIC(dev);
>
> apic_sync_vapic(s, SYNC_FROM_VAPIC);
> apic_update_irq(s);
> @@ -479,7 +479,7 @@ static void apic_startup(APICCommonState *s, int vector_num)
>
> void apic_sipi(DeviceState *dev)
> {
> - APICCommonState *s = APIC_COMMON(dev);
> + APICCommonState *s = APIC(dev);
>
> cpu_reset_interrupt(CPU(s->cpu), CPU_INTERRUPT_SIPI);
>
> @@ -493,7 +493,7 @@ static void apic_deliver(DeviceState *dev, uint8_t dest, uint8_t dest_mode,
> uint8_t delivery_mode, uint8_t vector_num,
> uint8_t trigger_mode)
> {
> - APICCommonState *s = APIC_COMMON(dev);
> + APICCommonState *s = APIC(dev);
> uint32_t deliver_bitmask[MAX_APIC_WORDS];
> int dest_shorthand = (s->icr[0] >> 18) & 3;
> APICCommonState *apic_iter;
> @@ -550,7 +550,7 @@ static bool apic_check_pic(APICCommonState *s)
>
> int apic_get_interrupt(DeviceState *dev)
> {
> - APICCommonState *s = APIC_COMMON(dev);
> + APICCommonState *s = APIC(dev);
> int intno;
>
> /* if the APIC is installed or enabled, we let the 8259 handle the
> @@ -584,7 +584,7 @@ int apic_get_interrupt(DeviceState *dev)
>
> int apic_accept_pic_intr(DeviceState *dev)
> {
> - APICCommonState *s = APIC_COMMON(dev);
> + APICCommonState *s = APIC(dev);
> uint32_t lvt0;
>
> if (!s)
> @@ -663,7 +663,7 @@ static uint32_t apic_mem_readl(void *opaque, hwaddr addr)
> if (!dev) {
> return 0;
> }
> - s = APIC_COMMON(dev);
> + s = APIC(dev);
>
> index = (addr >> 4) & 0xff;
> switch(index) {
> @@ -766,7 +766,7 @@ static void apic_mem_writel(void *opaque, hwaddr addr, uint32_t val)
> if (!dev) {
> return;
> }
> - s = APIC_COMMON(dev);
> + s = APIC(dev);
>
> trace_apic_mem_writel(addr, val);
>
> @@ -870,7 +870,7 @@ static const MemoryRegionOps apic_io_ops = {
>
> static void apic_realize(DeviceState *dev, Error **errp)
> {
> - APICCommonState *s = APIC_COMMON(dev);
> + APICCommonState *s = APIC(dev);
>
> if (s->id >= MAX_APICS) {
> error_setg(errp, "%s initialization failed. APIC ID %d is invalid",
> @@ -889,7 +889,7 @@ static void apic_realize(DeviceState *dev, Error **errp)
>
> static void apic_unrealize(DeviceState *dev, Error **errp)
> {
> - APICCommonState *s = APIC_COMMON(dev);
> + APICCommonState *s = APIC(dev);
>
> timer_del(s->timer);
> timer_free(s->timer);
> diff --git a/include/hw/i386/apic_internal.h b/include/hw/i386/apic_internal.h
> index 06c4e9f..5e36016 100644
> --- a/include/hw/i386/apic_internal.h
> +++ b/include/hw/i386/apic_internal.h
> @@ -131,6 +131,10 @@ typedef struct APICCommonState APICCommonState;
> #define APIC_COMMON_GET_CLASS(obj) \
> OBJECT_GET_CLASS(APICCommonClass, (obj), TYPE_APIC_COMMON)
>
> +#define TYPE_APIC "apic"
> +#define APIC(obj) \
> + OBJECT_CHECK(APICCommonState, (obj), TYPE_APIC)
This should be in apic.c. Also please replace the other occurrence of
"apic" in apic.c by TYPE_APIC.
Thanks,
Paolo
> typedef struct APICCommonClass
> {
> DeviceClass parent_class;
>
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH] pc: apic: introduce APIC macro
2016-09-15 6:27 ` [Qemu-devel] " Paolo Bonzini
@ 2016-09-15 6:32 ` Wanpeng Li
-1 siblings, 0 replies; 8+ messages in thread
From: Wanpeng Li @ 2016-09-15 6:32 UTC (permalink / raw)
To: Paolo Bonzini
Cc: kvm, qemu-devel@nongnu.org Developers, Wanpeng Li,
Radim Krčmář,
Michael S. Tsirkin, Eduardo Habkost
2016-09-15 14:27 GMT+08:00 Paolo Bonzini <pbonzini@redhat.com>:
[...]
>> +#define TYPE_APIC "apic"
>> +#define APIC(obj) \
>> + OBJECT_CHECK(APICCommonState, (obj), TYPE_APIC)
>
> This should be in apic.c. Also please replace the other occurrence of
> "apic" in apic.c by TYPE_APIC.
Will do, thanks for your review.
Regards,
Wanpeng Li
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [Qemu-devel] [PATCH] pc: apic: introduce APIC macro
@ 2016-09-15 6:32 ` Wanpeng Li
0 siblings, 0 replies; 8+ messages in thread
From: Wanpeng Li @ 2016-09-15 6:32 UTC (permalink / raw)
To: Paolo Bonzini
Cc: kvm, qemu-devel@nongnu.org Developers, Wanpeng Li,
Radim Krčmář,
Michael S. Tsirkin, Eduardo Habkost
2016-09-15 14:27 GMT+08:00 Paolo Bonzini <pbonzini@redhat.com>:
[...]
>> +#define TYPE_APIC "apic"
>> +#define APIC(obj) \
>> + OBJECT_CHECK(APICCommonState, (obj), TYPE_APIC)
>
> This should be in apic.c. Also please replace the other occurrence of
> "apic" in apic.c by TYPE_APIC.
Will do, thanks for your review.
Regards,
Wanpeng Li
^ permalink raw reply [flat|nested] 8+ messages in thread
end of thread, other threads:[~2016-09-15 6:34 UTC | newest]
Thread overview: 8+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2016-09-15 0:43 [PATCH] pc: apic: introduce APIC macro Wanpeng Li
2016-09-15 0:43 ` [Qemu-devel] " Wanpeng Li
2016-09-15 1:33 ` Michael S. Tsirkin
2016-09-15 1:33 ` [Qemu-devel] " Michael S. Tsirkin
2016-09-15 6:27 ` Paolo Bonzini
2016-09-15 6:27 ` [Qemu-devel] " Paolo Bonzini
2016-09-15 6:32 ` Wanpeng Li
2016-09-15 6:32 ` [Qemu-devel] " Wanpeng Li
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.