All of lore.kernel.org
 help / color / mirror / Atom feed
From: Marcelo Tosatti <mtosatti@redhat.com>
To: Glauber Costa <glommer@redhat.com>
Cc: kvm@vger.kernel.org
Subject: Re: [PATCH 02/10] Provide ioapic-kvm
Date: Tue, 2 Mar 2010 01:28:22 -0300	[thread overview]
Message-ID: <20100302042822.GA11510@amt.cnet> (raw)
In-Reply-To: <1267215141-13629-3-git-send-email-glommer@redhat.com>

On Fri, Feb 26, 2010 at 05:12:13PM -0300, Glauber Costa wrote:
> This patch provides the file ioapic-kvm.c, which implements a schim over
> the kvm in-kernel IO APIC.
> 
> Signed-off-by: Glauber Costa <glommer@redhat.com>
> ---
>  Makefile.target |    2 +
>  hw/ioapic-kvm.c |   89 +++++++++++++++++++++++++++++++++++++++++++++++++++++++
>  hw/pc.c         |    7 ++++-
>  hw/pc.h         |    2 +
>  kvm-all.c       |   18 +++++++++++
>  kvm.h           |    4 ++
>  6 files changed, 121 insertions(+), 1 deletions(-)
>  create mode 100644 hw/ioapic-kvm.c
> 
> diff --git a/Makefile.target b/Makefile.target
> index 4c4d397..78aff3c 100644
> --- a/Makefile.target
> +++ b/Makefile.target
> @@ -213,6 +213,8 @@ obj-i386-y += usb-uhci.o vmmouse.o vmport.o vmware_vga.o hpet.o
>  obj-i386-y += device-hotplug.o pci-hotplug.o smbios.o wdt_ib700.o
>  obj-i386-y += ne2000-isa.o debugcon.o multiboot.o
>  
> +obj-i386-$(CONFIG_KVM) += ioapic-kvm.o
> +
>  # shared objects
>  obj-ppc-y = ppc.o ide/core.o ide/qdev.o ide/isa.o ide/pci.o ide/macio.o
>  obj-ppc-y += ide/cmd646.o
> diff --git a/hw/ioapic-kvm.c b/hw/ioapic-kvm.c
> new file mode 100644
> index 0000000..78e0984
> --- /dev/null
> +++ b/hw/ioapic-kvm.c
> @@ -0,0 +1,89 @@
> +#include "hw.h"
> +#include "pc.h"
> +#include "qemu-timer.h"
> +#include "host-utils.h"
> +#include "kvm.h"
> +
> +#define IOAPIC_NUM_PINS			0x18
> +#define IOAPIC_DEFAULT_BASE_ADDRESS  0xfec00000
> +
> +static void ioapic_reset(void *opaque)
> +{
> +    struct kvm_ioapic_state *s = opaque;
> +    struct kvm_irqchip *chip;
> +    int i;
> +
> +    chip = container_of(s, struct kvm_irqchip, chip.ioapic);
> +
> +    chip->chip_id = KVM_IRQCHIP_IOAPIC;
> +
> +    memset(s, 0, sizeof(*s));
> +    s->base_address = IOAPIC_DEFAULT_BASE_ADDRESS;
> +    for(i = 0; i < IOAPIC_NUM_PINS; i++)
> +        s->redirtbl[i].bits = 1 << 16; /* mask LVT */
> +
> +    kvm_set_irqchip(chip);
> +}
> +
> +static void ioapic_pre_save(void *opaque)
> +{
> +    struct kvm_ioapic_state *s = opaque;
> +    struct kvm_irqchip *chip;
> +
> +    chip = container_of(s, struct kvm_irqchip, chip.ioapic);
> +
> +    kvm_get_irqchip(chip);
> +}
> +
> +static int ioapic_post_load(void *opaque, int version_id)
> +{
> +    struct kvm_ioapic_state *s = opaque;
> +    struct kvm_irqchip *chip;
> +
> +    chip = container_of(s, struct kvm_irqchip, chip.ioapic);
> +
> +    return kvm_set_irqchip(chip);
> +}
> +
> +static const VMStateDescription vmstate_kvm_ioapic = {
> +    .name = "ioapic-kvm",
> +    .version_id = 1,
> +    .minimum_version_id = 1,
> +    .post_load = ioapic_post_load,
> +    .pre_save = ioapic_pre_save,
> +    .fields      = (VMStateField []) {
> +        /* Linux does not define __u64 the same as uint64_t */
> +        VMSTATE_U64(base_address, struct kvm_ioapic_state),
> +        VMSTATE_UINT32(id, struct kvm_ioapic_state),
> +        VMSTATE_UINT32(ioregsel, struct kvm_ioapic_state),
> +        VMSTATE_UINT32(irr, struct kvm_ioapic_state),
> +        VMSTATE_ARRAY_UNSAFE(redirtbl, struct kvm_ioapic_state, IOAPIC_NUM_PINS, 0, vmstate_info_u64, __u64),
> +        VMSTATE_END_OF_LIST()
> +    }
> +};
> +
> +
> +static void kvm_ioapic_set_irq(void *opaque, int vector, int level)
> +{
> +/*
> +    int pic_ret;
> +
> +    if (kvm_set_irq(vector, level, &pic_ret)) {
> +        if (pic_ret != 0)
> +            apic_set_irq_delivered();
> +        return;
> +    }
> +*/

Didnt you forget to uncomment this later?


  parent reply	other threads:[~2010-03-02  4:32 UTC|newest]

Thread overview: 31+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2010-02-26 20:12 [PATCH 00/10] uq/master: irqchip-in-kernel support Glauber Costa
2010-02-26 20:12 ` [PATCH 01/10] introduce VMSTATE_U64 Glauber Costa
2010-02-26 20:12   ` [PATCH 02/10] Provide ioapic-kvm Glauber Costa
2010-02-26 20:12     ` [PATCH 03/10] provide apic_set_irq_delivered Glauber Costa
2010-02-26 20:12       ` [PATCH 04/10] provide i8259-kvm Glauber Costa
2010-02-26 20:12         ` [PATCH 05/10] Don't call apic functions directly from kvm code Glauber Costa
2010-02-26 20:12           ` [PATCH 06/10] export kvm_put_mp_state Glauber Costa
2010-02-26 20:12             ` [PATCH 07/10] provide apic-kvm Glauber Costa
2010-02-26 20:12               ` [PATCH 08/10] Add -kvm option Glauber Costa
2010-02-26 20:12                 ` [PATCH 09/10] Initialize in-kernel irqchip Glauber Costa
2010-02-26 20:12                   ` [PATCH 10/10] Do GSI routing Glauber Costa
2010-03-02  4:31                   ` [PATCH 09/10] Initialize in-kernel irqchip Marcelo Tosatti
2010-03-02 18:25                     ` Glauber Costa
2010-03-09 13:21                       ` Avi Kivity
2010-02-27 10:35                 ` [PATCH 08/10] Add -kvm option Jan Kiszka
2010-03-04 16:20                   ` Jan Kiszka
2010-03-04 19:39                     ` Glauber Costa
2010-03-02  4:31                 ` Marcelo Tosatti
2010-03-02 18:25                   ` Glauber Costa
2010-03-04 19:41                     ` Anthony Liguori
2010-03-04 19:38                 ` Anthony Liguori
2010-03-04 16:49               ` [PATCH 07/10] provide apic-kvm Jan Kiszka
2010-03-09 13:27           ` [PATCH 05/10] Don't call apic functions directly from kvm code Avi Kivity
2010-03-17 14:00             ` Glauber Costa
2010-03-17 16:29               ` Avi Kivity
2010-03-02  4:28     ` Marcelo Tosatti [this message]
2010-03-02 18:26       ` [PATCH 02/10] Provide ioapic-kvm Glauber Costa
2010-02-27 10:28 ` [PATCH 00/10] uq/master: irqchip-in-kernel support Jan Kiszka
2010-03-01 15:19   ` Marcelo Tosatti
2010-03-04 16:33 ` Jan Kiszka
2010-03-08 20:56   ` Marcelo Tosatti

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=20100302042822.GA11510@amt.cnet \
    --to=mtosatti@redhat.com \
    --cc=glommer@redhat.com \
    --cc=kvm@vger.kernel.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 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.