From: Avi Kivity <avi-atKUWr5tajBWk0Htik3J/w@public.gmane.org>
To: "Dong, Eddie" <eddie.dong-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org>
Cc: kvm-devel-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f@public.gmane.org
Subject: Re: In kernel PIC support: kernel patch
Date: Mon, 02 Jul 2007 16:53:10 -0700 [thread overview]
Message-ID: <46898FE6.7040709@qumranet.com> (raw)
In-Reply-To: <10EA09EFD8728347A513008B6B0DA77A01AE9255-wq7ZOvIWXbNpB2pF5aRoyrfspsVTdybXVpNB7YpNyf8@public.gmane.org>
Dong, Eddie wrote:
> Here is the updated patch with all comments fixed.
>
>
> Meanwhile I enabled SVM support by copying code from Xen and managed to
> find an AMD box to have a shoot, it works!
> Please also find the svm patch.
>
>
>
>
> drivers/kvm/kvm_irq.c | 59 ++++++
> drivers/kvm/kvm_irq.h | 64 ++++++
>
These can be named as irq.c and irq.h. No need for the kvm prefix.
> +void kvm_pic_set_irq_new(void *opaque, int irq, int level)
>
Remove _new from the name. It's just an artifact of qemu's development
history; we don't need it.
> +
> +int kvm_pic_read_irq(struct kvm_pic *s)
> +{
> + int irq, irq2, intno;
> +
> + irq = pic_get_irq(&s->pics[0]);
> + if (irq >= 0) {
> + pic_intack(&s->pics[0], irq);
> + if (irq == 2) {
> + irq2 = pic_get_irq(&s->pics[1]);
> + if (irq2 >= 0) {
> + pic_intack(&s->pics[1], irq2);
> + } else {
> + /*
> + * spurious IRQ on slave controller
> + */
> + irq2 = 7;
> + }
>
A few braces can be removed here.
> +
> +static uint32_t pic_poll_read(struct kvm_pic_state *s, uint32_t addr1)
>
u32
> +static uint32_t pic_ioport_read(void *opaque, uint32_t addr1)
>
here too, and a few other places.
> +
> +static void picdev_write(struct kvm_io_device *this,
> + gpa_t addr, int len, const void *val)
> +{
> + struct kvm_pic *s = this->private;
> + unsigned char data = *(unsigned char *)val;
> +
> + if (len != 1) {
> + printk(KERN_ERR "PIC: non byte write\n");
> + return;
> + }
>
This can be used to spam the host kernel log, if the guest issues lots
of nonbyte accesses. You can use printk_ratelimit() or something
similar. This goes for the read function too.
>
> +struct kvm_pic;
> struct kvm {
> spinlock_t lock; /* protects everything except vcpus */
> int naliases;
> @@ -456,8 +457,19 @@ struct kvm {
> struct file *filp;
> struct kvm_io_bus mmio_bus;
> struct kvm_io_bus pio_bus;
> + struct kvm_pic *vpic;
> };
>
Why not include it inline and avoid the pointer dereference?
>
> +static inline struct kvm_pic *pic_irqchip(struct kvm *kvm)
> +{
> + return kvm->vpic;
> +}
> +
> +static inline int irqchip_in_kernel(struct kvm *kvm)
> +{
> + return pic_irqchip(kvm) != 0;
> +}
>
That's why...
> }
> + case KVM_CREATE_PIC:
> + r = -ENOMEM;
> + kvm->vpic = kvm_create_pic(kvm);
> + if (kvm->vpic) {
> + r = 0;
> + }
>
braces. also, the usual logic is to 'goto out' if an error occured.
> };
>
> +/* for KVM_SET_IRQ_LEVEL */
> +struct kvm_irq_level {
> + __u32 irq;
> + __u32 level;
> +};
>
Please add an irqchip index, so this can be used for configurations with
multiple irqchips (likely ioapics). You'll also need to add padding so
the structure is 64-bit aligned.
Other than these minor issues, the patch looks fine.
-------------------------------------------------------------------------
This SF.net email is sponsored by DB2 Express
Download DB2 Express C - the FREE version of DB2 express and take
control of your XML. No limits. Just data. Click to get it now.
http://sourceforge.net/powerbar/db2/
next prev parent reply other threads:[~2007-07-02 23:53 UTC|newest]
Thread overview: 57+ messages / expand[flat|nested] mbox.gz Atom feed top
2007-06-20 7:43 In kernel PIC support: kernel patch Dong, Eddie
[not found] ` <10EA09EFD8728347A513008B6B0DA77A01A55F0A-wq7ZOvIWXbNpB2pF5aRoyrfspsVTdybXVpNB7YpNyf8@public.gmane.org>
2007-06-22 10:50 ` Avi Kivity
[not found] ` <467BA95A.704-atKUWr5tajBWk0Htik3J/w@public.gmane.org>
2007-06-22 14:21 ` Rusty Russell
[not found] ` <1182522074.17478.45.camel-bi+AKbBUZKY6gyzm1THtWbp2dZbC/Bob@public.gmane.org>
2007-06-23 7:50 ` Avi Kivity
2007-06-25 1:45 ` Dong, Eddie
[not found] ` <10EA09EFD8728347A513008B6B0DA77A01AA45AD-wq7ZOvIWXbNpB2pF5aRoyrfspsVTdybXVpNB7YpNyf8@public.gmane.org>
2007-06-25 3:28 ` Avi Kivity
2007-06-27 15:25 ` Dong, Eddie
[not found] ` <10EA09EFD8728347A513008B6B0DA77A01AE9255-wq7ZOvIWXbNpB2pF5aRoyrfspsVTdybXVpNB7YpNyf8@public.gmane.org>
2007-07-02 23:53 ` Avi Kivity [this message]
[not found] ` <46898FE6.7040709-atKUWr5tajBWk0Htik3J/w@public.gmane.org>
2007-07-03 4:45 ` Dong, Eddie
[not found] ` <10EA09EFD8728347A513008B6B0DA77A01B40B4A-wq7ZOvIWXbNpB2pF5aRoyrfspsVTdybXVpNB7YpNyf8@public.gmane.org>
2007-07-03 14:52 ` Avi Kivity
2007-07-03 7:19 ` Dong, Eddie
-- strict thread matches above, loose matches on Subject: below --
2007-06-21 12:36 Gregory Haskins
[not found] ` <467A38720200005A000262C8-Igcdv/6uVdMHoYOw/+koYqIwWpluYiW7@public.gmane.org>
2007-06-21 13:02 ` Dong, Eddie
2007-06-21 13:31 Gregory Haskins
[not found] ` <467A45690200005A000262F0-Igcdv/6uVdMHoYOw/+koYqIwWpluYiW7@public.gmane.org>
2007-06-21 14:28 ` Dong, Eddie
2007-06-21 14:01 Gregory Haskins
[not found] ` <467A4C970200005A000262FD-Igcdv/6uVdMHoYOw/+koYqIwWpluYiW7@public.gmane.org>
2007-06-21 14:57 ` Dong, Eddie
2007-06-21 15:10 Gregory Haskins
[not found] ` <467A5C8C0200005A00026321-Igcdv/6uVdMHoYOw/+koYqIwWpluYiW7@public.gmane.org>
2007-06-21 15:13 ` Dong, Eddie
2007-06-21 16:31 ` Avi Kivity
[not found] ` <467AA7FF.5000701-atKUWr5tajBWk0Htik3J/w@public.gmane.org>
2007-06-22 2:09 ` Dong, Eddie
[not found] ` <10EA09EFD8728347A513008B6B0DA77A01A56750-wq7ZOvIWXbNpB2pF5aRoyrfspsVTdybXVpNB7YpNyf8@public.gmane.org>
2007-06-22 10:32 ` Avi Kivity
2007-06-21 15:17 Gregory Haskins
2007-06-21 15:42 Gregory Haskins
2007-06-21 15:43 Gregory Haskins
2007-06-21 16:44 Gregory Haskins
[not found] ` <467A72970200005A00026354-Igcdv/6uVdMHoYOw/+koYqIwWpluYiW7@public.gmane.org>
2007-06-22 9:46 ` Avi Kivity
2007-06-22 3:49 Gregory Haskins
[not found] ` <467B0E7D0200005A000263E4-Igcdv/6uVdMHoYOw/+koYqIwWpluYiW7@public.gmane.org>
2007-06-22 7:25 ` Dong, Eddie
2007-06-22 9:57 ` Avi Kivity
2007-06-22 12:02 Gregory Haskins
2007-06-22 12:06 Gregory Haskins
[not found] ` <467B830B0200005A000263FB-Igcdv/6uVdMHoYOw/+koYqIwWpluYiW7@public.gmane.org>
2007-06-22 15:09 ` Dong, Eddie
[not found] ` <10EA09EFD8728347A513008B6B0DA77A014E8AC7-wq7ZOvIWXbNpB2pF5aRoyrfspsVTdybXVpNB7YpNyf8@public.gmane.org>
2007-06-23 17:41 ` Avi Kivity
[not found] ` <467D5B5B.9090702-atKUWr5tajBWk0Htik3J/w@public.gmane.org>
2007-06-25 3:32 ` Dong, Eddie
[not found] ` <10EA09EFD8728347A513008B6B0DA77A01AA46F5-wq7ZOvIWXbNpB2pF5aRoyrfspsVTdybXVpNB7YpNyf8@public.gmane.org>
2007-06-25 3:39 ` Avi Kivity
[not found] ` <467F38F7.9090101-atKUWr5tajBWk0Htik3J/w@public.gmane.org>
2007-06-25 4:11 ` Dong, Eddie
2007-06-22 12:14 Gregory Haskins
[not found] ` <467B84EF0200005A00026401-Igcdv/6uVdMHoYOw/+koYqIwWpluYiW7@public.gmane.org>
2007-06-23 7:53 ` Avi Kivity
2007-06-25 13:26 Gregory Haskins
[not found] ` <467F8A2D0200005A00026567-Igcdv/6uVdMHoYOw/+koYqIwWpluYiW7@public.gmane.org>
2007-06-25 22:00 ` Avi Kivity
2007-06-25 13:43 Gregory Haskins
[not found] ` <467F8E260200005A00026573-Igcdv/6uVdMHoYOw/+koYqIwWpluYiW7@public.gmane.org>
2007-06-25 13:54 ` Dong, Eddie
2007-06-25 22:08 ` Avi Kivity
2007-06-25 13:44 Gregory Haskins
2007-06-25 13:45 Gregory Haskins
2007-06-25 13:53 Gregory Haskins
2007-06-25 14:10 Gregory Haskins
[not found] ` <467F94850200005A00026595-Igcdv/6uVdMHoYOw/+koYqIwWpluYiW7@public.gmane.org>
2007-06-25 21:13 ` Dor Laor
[not found] ` <64F9B87B6B770947A9F8391472E032160C654F85-yEcIvxbTEBqsx+V+t5oei8rau4O3wl8o3fe8/T/H7NteoWH0uzbU5w@public.gmane.org>
2007-06-25 21:57 ` Avi Kivity
2007-06-25 22:23 Gregory Haskins
[not found] ` <468008090200005A00026619-Igcdv/6uVdMHoYOw/+koYqIwWpluYiW7@public.gmane.org>
2007-06-25 22:25 ` Avi Kivity
2007-06-26 0:30 ` Dong, Eddie
2007-06-27 15:50 ` Luca
2007-06-25 22:36 Gregory Haskins
[not found] <468E0FD2.2090305@qumranet.com>
[not found] ` <468E0FD2.2090305-atKUWr5tajBWk0Htik3J/w@public.gmane.org>
2007-07-06 17:46 ` Dong, Eddie
[not found] ` <10EA09EFD8728347A513008B6B0DA77A01B8F3C5-wq7ZOvIWXbNpB2pF5aRoyrfspsVTdybXVpNB7YpNyf8@public.gmane.org>
2007-07-08 8:18 ` Avi Kivity
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=46898FE6.7040709@qumranet.com \
--to=avi-atkuwr5tajbwk0htik3j/w@public.gmane.org \
--cc=eddie.dong-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org \
--cc=kvm-devel-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f@public.gmane.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.