From: Avi Kivity <avi-atKUWr5tajBWk0Htik3J/w@public.gmane.org>
To: Gregory Haskins <ghaskins-Et1tbQHTxzrQT0dZR+AlfA@public.gmane.org>
Cc: kvm-devel-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f@public.gmane.org
Subject: Re: [PATCH 4/5] KVM: Local-APIC interface cleanup
Date: Tue, 24 Apr 2007 12:26:09 +0300 [thread overview]
Message-ID: <462DCD31.4030108@qumranet.com> (raw)
In-Reply-To: <462C9EAE.BA47.005A.0-Et1tbQHTxzrQT0dZR+AlfA@public.gmane.org>
Gregory Haskins wrote:
>>>> On Sun, Apr 22, 2007 at 4:54 AM, in message <462B22AE.4090108-atKUWr5tajBWk0Htik3J/w@public.gmane.org>,
>>>>
> Avi Kivity <avi-atKUWr5tajBWk0Htik3J/w@public.gmane.org> wrote:
>
>> Gregory Haskins wrote:
>>
>>> Adds an abstraction to the LAPIC logic so that we can later substitute it
>>> for an in- kernel model.
>>>
>>>
>>>
>> This is overly abstracted. It's not like you can (on real hardware)
>> wire your own lapic and plug it into the processor.
>>
>
> Agreed, but the key point is that under KVM, you *can* plug in more that one LAPIC (e.g. userint and kernint). Notice that I did not try to completely abstract an LAPIC. Rather, I tried to identify the common touchpoints between the userspace and kernel version. In short, that basically came down to CR8/TPR and the APIC_BASE_MSR handling. The other functions of the APIC (e.g. kvm_apicbus_send()) which were not common between the two I simply defined as non-virtuals. I figured that my minimalist abstraction was preferable to doing this all over the place:
>
> if (!vcpu->kvm->enable_kernel_pic)
> vcpu->cr8 = cr8;
> else
> apic_set_tpr(cr8)
>
> Instead, you can just do:
>
> kvm_lapic_set_tpr(&vcpu->apic, cr8)
>
You can put the if statement into kvm_lapic_set_tpr().
And please keep cr8 in the vcpu, people may want to read it.
> and let the model figure out the right action. This is easily reversible if you prefer. I just figured mine was a cleaner way of accomplishing the same thing. Perhaps I am a bit overzealous ;)
>
>
>> The differentiation can be made by installing or not installing the mmio
>> handler and the irqdevice stuff.
>>
>
> Well, it's actually a bit more complicated than that. Per my previous example, handing TPR is simple in the userspace case (just save it as part of the VCPU state), where its complex in the in-kernel state (if lowering TPR unmasks pending vectors, inject them). However, the core code doesn't have to care. It simply notes that TPR changed and the model handles the rest.
>
#include "diatribes/complexity.h"
--
Do not meddle in the internals of kernels, for they are subtle and quick to panic.
-------------------------------------------------------------------------
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-04-24 9:26 UTC|newest]
Thread overview: 22+ messages / expand[flat|nested] mbox.gz Atom feed top
2007-04-20 3:09 KVM: Patch series for in-kernel APIC support Gregory Haskins
[not found] ` <20070420030905.12408.40403.stgit-5CR4LY5GPkvLDviKLk5550HKjMygAv58XqFh9Ls21Oc@public.gmane.org>
2007-04-20 3:09 ` [PATCH 1/5] Adds support for in-kernel mmio handlers Gregory Haskins
2007-04-20 3:09 ` [PATCH 2/5] KVM: Add irqdevice object Gregory Haskins
[not found] ` <20070420030916.12408.80159.stgit-5CR4LY5GPkvLDviKLk5550HKjMygAv58XqFh9Ls21Oc@public.gmane.org>
2007-04-22 8:42 ` Avi Kivity
[not found] ` <462B1FD8.4080004-atKUWr5tajBWk0Htik3J/w@public.gmane.org>
2007-04-23 13:58 ` Gregory Haskins
[not found] ` <462C8333.BA47.005A.0-Et1tbQHTxzrQT0dZR+AlfA@public.gmane.org>
2007-04-24 9:09 ` Avi Kivity
[not found] ` <462DC954.1020400-atKUWr5tajBWk0Htik3J/w@public.gmane.org>
2007-04-26 14:37 ` Gregory Haskins
[not found] ` <463080C8.BA47.005A.0-Et1tbQHTxzrQT0dZR+AlfA@public.gmane.org>
2007-04-26 16:26 ` Avi Kivity
2007-04-20 3:09 ` [PATCH 3/5] KVM: Adds ability to preepmt an executing VCPU Gregory Haskins
[not found] ` <20070420030921.12408.97321.stgit-5CR4LY5GPkvLDviKLk5550HKjMygAv58XqFh9Ls21Oc@public.gmane.org>
2007-04-22 8:50 ` Avi Kivity
[not found] ` <462B21C7.2060007-atKUWr5tajBWk0Htik3J/w@public.gmane.org>
2007-04-23 15:42 ` Gregory Haskins
[not found] ` <462C9B94.BA47.005A.0-Et1tbQHTxzrQT0dZR+AlfA@public.gmane.org>
2007-04-24 9:17 ` Avi Kivity
[not found] ` <462DCB3E.6070802-atKUWr5tajBWk0Htik3J/w@public.gmane.org>
2007-04-26 14:40 ` Gregory Haskins
2007-04-20 3:09 ` [PATCH 4/5] KVM: Local-APIC interface cleanup Gregory Haskins
[not found] ` <20070420030926.12408.27637.stgit-5CR4LY5GPkvLDviKLk5550HKjMygAv58XqFh9Ls21Oc@public.gmane.org>
2007-04-22 8:54 ` Avi Kivity
[not found] ` <462B22AE.4090108-atKUWr5tajBWk0Htik3J/w@public.gmane.org>
2007-04-23 15:55 ` Gregory Haskins
[not found] ` <462C9EAE.BA47.005A.0-Et1tbQHTxzrQT0dZR+AlfA@public.gmane.org>
2007-04-24 9:26 ` Avi Kivity [this message]
[not found] ` <462DCD31.4030108-atKUWr5tajBWk0Htik3J/w@public.gmane.org>
2007-04-26 14:43 ` Gregory Haskins
2007-04-20 3:09 ` [PATCH 5/5] KVM: Add support for in-kernel LAPIC model Gregory Haskins
[not found] ` <20070420030931.12408.88158.stgit-5CR4LY5GPkvLDviKLk5550HKjMygAv58XqFh9Ls21Oc@public.gmane.org>
2007-04-22 9:04 ` Avi Kivity
[not found] ` <462B250E.6050603-atKUWr5tajBWk0Htik3J/w@public.gmane.org>
2007-04-23 15:57 ` Gregory Haskins
2007-04-22 9:06 ` KVM: Patch series for in-kernel APIC support 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=462DCD31.4030108@qumranet.com \
--to=avi-atkuwr5tajbwk0htik3j/w@public.gmane.org \
--cc=ghaskins-Et1tbQHTxzrQT0dZR+AlfA@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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox