qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
From: Isaku Yamahata <yamahata@valinux.co.jp>
To: qemu-devel@nongnu.org
Cc: yamahata@valinux.co.jp, mst@redhat.com
Subject: [Qemu-devel] [PATCH v7 0/4] piix_pci: optimize irq data path
Date: Fri,  1 Apr 2011 20:43:20 +0900	[thread overview]
Message-ID: <cover.1301657711.git.yamahata@valinux.co.jp> (raw)

Here is v7 which are rebased to pci branch.

I tested this patch series as follows. please see the commit message
for details.
- 3/4 piix_pci: optimize set irq path
  Run linux as guest with 4 e1000 emulated devices.
  And confirmed that each PIRQ[A-D] are able to assert interrupts.
- 4/4 piix_pci: load path clean up
  Run linux as guest with one e1000 emulated device.
  savevm/loadvm guest with runing ping -f in guest.

To be honest, the patch, "4/4 piix_pci: load path clean up", needs more
extensive tests. For example live migration and stress test.
But for now I don't have plan to further testing in near future. Sorry.
So please feel free to pick or drop the last patch.

patch description:
This patch series optimizes irq data path of piix_pci.
So far piix3 tracks each pirq level and checks whether a given pic pins is
asserted by seeing if each pirq is mapped into the pic pin.
This is independent on irq routing, but data path is on slow path.

Given that irq routing is rarely changed and asserting pic pins is on
data path, the path that asserts pic pins should be optimized and
chainging irq routing should be on slow path.
The new behavior with this patch series is to use bitmap which is addressed
by pirq and pic pins with a given irq routing.
When pirq is asserted, the bitmap is set and see if the pic pins is
asserted by checking the bitmaps.
When irq routing is changed, rebuild the bitmap and re-assert pic pins.

Changes v6 -> v7:
- rebased to pci branch
- added how to test to the commit message

Changes v5 -> v6:
- fixed piix3_set_irq_pic()

Changes v4 -> v5:
- typo

Changes v3 -> v4:
- use pirq, pci_intx instead of irq_num in piix_pci.c
- use symbolic constant PIC_NUM_PINS
- introduced new patch 4/4 which cleans up a bit.

Changes v2 -> v3:
- s/dummy_for_save_load_compat/pci_irq_levels_vmstate/g
- move down unused member of pci_irq_levels_vmstate in the structure
  for cache efficiency

Changes v1 -> v2:
- addressed review comments.

Isaku Yamahata (4):
  pci: add accessor function to get irq levels
  piix_pci: eliminate PIIX3State::pci_irq_levels
  piix_pci: optimize set irq path
  piix_pci: load path clean up

 hw/pci.c      |    7 +++
 hw/pci.h      |    1 +
 hw/piix_pci.c |  129 ++++++++++++++++++++++++++++++++++++++++++++++-----------
 3 files changed, 112 insertions(+), 25 deletions(-)

             reply	other threads:[~2011-04-01 11:43 UTC|newest]

Thread overview: 8+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2011-04-01 11:43 Isaku Yamahata [this message]
2011-04-01 11:43 ` [Qemu-devel] [PATCH v7 1/4] pci: add accessor function to get irq levels Isaku Yamahata
2011-04-01 11:43 ` [Qemu-devel] [PATCH v7 2/4] piix_pci: eliminate PIIX3State::pci_irq_levels Isaku Yamahata
2011-04-01 11:43 ` [Qemu-devel] [PATCH v7 3/4] piix_pci: optimize set irq path Isaku Yamahata
2011-05-22 12:24   ` Stefan Weil
2011-05-22 12:52     ` TeLeMan
2011-04-01 11:43 ` [Qemu-devel] [PATCH v7 4/4] piix_pci: load path clean up Isaku Yamahata
2011-04-01 14:38 ` [Qemu-devel] Re: [PATCH v7 0/4] piix_pci: optimize irq data path Michael S. Tsirkin

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=cover.1301657711.git.yamahata@valinux.co.jp \
    --to=yamahata@valinux.co.jp \
    --cc=mst@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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).