From: "Michael S. Tsirkin" <mst@redhat.com>
To: Peter Xu <peterx@redhat.com>
Cc: qemu-devel@nongnu.org, peter.maydell@linaro.org, pbonzini@redhat.com
Subject: Re: [Qemu-devel] [PATCH] x86: ioapic: upgrade emulated IOAPIC to ver 0x20
Date: Tue, 26 Jul 2016 05:15:58 +0300 [thread overview]
Message-ID: <20160726051419-mutt-send-email-mst@kernel.org> (raw)
In-Reply-To: <1469446584-14478-1-git-send-email-peterx@redhat.com>
On Mon, Jul 25, 2016 at 07:36:24PM +0800, Peter Xu wrote:
> IOMMU IR and IOAPIC legacy devices (e.g., e1000) cannot work well
> together with some old Linux kernels (upstream before v4.0, or any
> released RHEL kernels). This patch fixes it.
>
> The problem is that: some old linux kernels (with IR enabled) only
> support IOAPIC chips with version 0x20. New kernels after commit d32932d
> ("x86/irq: Convert IOAPIC to use hierarchical irqdomain interfaces")
> fixed this problem. To make sure we can work with even old kernels,
> let's upgrade our IOAPIC to version 0x20.
>
> This patch is only useful when vIOMMU IR is enabled (which still do not
> support kernel IOAPIC). So here we are only upgrading QEMU IOAPIC chip
> to version 0x20. For kernel based IOAPIC, the version will still be
> 0x11.
>
> Signed-off-by: Peter Xu <peterx@redhat.com>
As a minimum, we need to make sure not to change this for
old machine types.
Given the timing, limiting this for when IR is enabled
would be a good idea I think.
> ---
> hw/intc/ioapic.c | 6 ++++++
> include/hw/i386/ioapic_internal.h | 3 ++-
> 2 files changed, 8 insertions(+), 1 deletion(-)
>
> diff --git a/hw/intc/ioapic.c b/hw/intc/ioapic.c
> index 2d3282a..361c37c 100644
> --- a/hw/intc/ioapic.c
> +++ b/hw/intc/ioapic.c
> @@ -354,6 +354,12 @@ ioapic_mem_write(void *opaque, hwaddr addr, uint64_t val,
> }
> }
> break;
> + case IOAPIC_EOI:
> + if (size != 4) {
> + break;
> + }
> + ioapic_eoi_broadcast(val);
> + break;
> }
>
> ioapic_update_kvm_routes(s);
I'd add a code comment saying this is for 0x20 only.
> diff --git a/include/hw/i386/ioapic_internal.h b/include/hw/i386/ioapic_internal.h
> index d89ea1b..9654a93 100644
> --- a/include/hw/i386/ioapic_internal.h
> +++ b/include/hw/i386/ioapic_internal.h
> @@ -29,7 +29,7 @@
>
> #define MAX_IOAPICS 1
>
> -#define IOAPIC_VERSION 0x11
> +#define IOAPIC_VERSION 0x20
>
> #define IOAPIC_LVT_DEST_SHIFT 56
> #define IOAPIC_LVT_DEST_IDX_SHIFT 48
> @@ -71,6 +71,7 @@
>
> #define IOAPIC_IOREGSEL 0x00
> #define IOAPIC_IOWIN 0x10
> +#define IOAPIC_EOI 0x40
>
> #define IOAPIC_REG_ID 0x00
> #define IOAPIC_REG_VER 0x01
> --
> 2.4.11
>
next prev parent reply other threads:[~2016-07-26 2:16 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-07-25 11:36 [Qemu-devel] [PATCH] x86: ioapic: upgrade emulated IOAPIC to ver 0x20 Peter Xu
2016-07-26 2:15 ` Michael S. Tsirkin [this message]
2016-07-26 2:56 ` Peter Xu
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=20160726051419-mutt-send-email-mst@kernel.org \
--to=mst@redhat.com \
--cc=pbonzini@redhat.com \
--cc=peter.maydell@linaro.org \
--cc=peterx@redhat.com \
--cc=qemu-devel@nongnu.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.