All of lore.kernel.org
 help / color / mirror / Atom feed
From: Jan Kiszka <jan.kiszka@web.de>
To: Anthony Liguori <anthony@codemonkey.ws>
Cc: kvm@vger.kernel.org, "Michael S. Tsirkin" <mst@redhat.com>,
	Marcelo Tosatti <mtosatti@redhat.com>,
	qemu-devel <qemu-devel@nongnu.org>,
	Blue Swirl <blauwirbel@gmail.com>, Avi Kivity <avi@redhat.com>
Subject: Re: [PATCH v5 07/16] apic: Open-code timer save/restore
Date: Tue, 20 Dec 2011 02:24:40 +0100	[thread overview]
Message-ID: <4EEFE3D8.5010704@web.de> (raw)
In-Reply-To: <4EEFDC7C.3020606@codemonkey.ws>

[-- Attachment #1: Type: text/plain, Size: 2392 bytes --]

On 2011-12-20 01:53, Anthony Liguori wrote:
> On 12/19/2011 06:34 PM, Jan Kiszka wrote:
>> On 2011-12-20 01:31, Anthony Liguori wrote:
>>> On 12/19/2011 05:45 PM, Jan Kiszka wrote:
>>>> On 2011-12-19 23:21, Anthony Liguori wrote:
>>>>> On 12/15/2011 06:33 AM, Jan Kiszka wrote:
>>>>>> To enable migration between accelerated and non-accelerated APIC
>>>>>> models,
>>>>>> we will need to handle the timer saving and restoring specially
>>>>>> and can
>>>>>> no longer rely on the automatics of VMSTATE_TIMER. Specifically,
>>>>>> accelerated model will not start any QEMUTimer.
>>>>>>
>>>>>> This patch therefore factors out the generic bits into
>>>>>> apic_next_timer
>>>>>> and introduces a post-load callback that can be implemented
>>>>>> differently
>>>>>> by both models.
>>>>>>
>>>>>> Signed-off-by: Jan Kiszka<jan.kiszka@siemens.com>
>>>>>
>>>>> So you basically want the timer to be a dummy field for the in-kernel
>>>>> apic?
>>>>>
>>>>> Can you fix this up in a pre-save routine (put QEMUTimer into a state
>>>>> where there isn't an event pending)?
>>>>
>>>> It is not a dummy field, it contains the proper state in both cases. We
>>>> just need to convert it to an open-coded state to avoid the QEMUTimer
>>>> restoration magic in the in-kernel case (where there must be no
>>>> QEMUTimer).
>>>
>>> So the state gets fed into the kernel instead of userspace?
>>
>> Nope. It's kept for eventual use by a user space model.
> 
> I think you misunderstood my comments.
> 
> When you are using the in-kernel APIC, the is no implementation for the
> post_load hook.  As far as I can tell, the state isn't used.

Correct, it's just kept up to date.

> 
> I know it's used by the user space model but from what I can tell, the
> value is essentially sync with the in-kernel APIC almost immediately as
> it happens during KVM_RUN.
> 
> So it's a QEMUTimer in the userspace model, but it's just an integer
> when used in the in-kernel APIC as the timer never fires.  It is just
> saved/restored from and to the kernel.
> 
> Is this correct?

Almost. timer_expiry is calculated on get_apic_state based on the APIC
registers. And it is initialized on reset. But it is never saved into
the kernel nor does it otherwise affect the in-kernel model. It is
really just a compatibility field for potential user space apic usage.

Jan


[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 262 bytes --]

WARNING: multiple messages have this Message-ID (diff)
From: Jan Kiszka <jan.kiszka@web.de>
To: Anthony Liguori <anthony@codemonkey.ws>
Cc: kvm@vger.kernel.org, "Michael S. Tsirkin" <mst@redhat.com>,
	Marcelo Tosatti <mtosatti@redhat.com>,
	qemu-devel <qemu-devel@nongnu.org>,
	Blue Swirl <blauwirbel@gmail.com>, Avi Kivity <avi@redhat.com>
Subject: Re: [Qemu-devel] [PATCH v5 07/16] apic: Open-code timer save/restore
Date: Tue, 20 Dec 2011 02:24:40 +0100	[thread overview]
Message-ID: <4EEFE3D8.5010704@web.de> (raw)
In-Reply-To: <4EEFDC7C.3020606@codemonkey.ws>

[-- Attachment #1: Type: text/plain, Size: 2392 bytes --]

On 2011-12-20 01:53, Anthony Liguori wrote:
> On 12/19/2011 06:34 PM, Jan Kiszka wrote:
>> On 2011-12-20 01:31, Anthony Liguori wrote:
>>> On 12/19/2011 05:45 PM, Jan Kiszka wrote:
>>>> On 2011-12-19 23:21, Anthony Liguori wrote:
>>>>> On 12/15/2011 06:33 AM, Jan Kiszka wrote:
>>>>>> To enable migration between accelerated and non-accelerated APIC
>>>>>> models,
>>>>>> we will need to handle the timer saving and restoring specially
>>>>>> and can
>>>>>> no longer rely on the automatics of VMSTATE_TIMER. Specifically,
>>>>>> accelerated model will not start any QEMUTimer.
>>>>>>
>>>>>> This patch therefore factors out the generic bits into
>>>>>> apic_next_timer
>>>>>> and introduces a post-load callback that can be implemented
>>>>>> differently
>>>>>> by both models.
>>>>>>
>>>>>> Signed-off-by: Jan Kiszka<jan.kiszka@siemens.com>
>>>>>
>>>>> So you basically want the timer to be a dummy field for the in-kernel
>>>>> apic?
>>>>>
>>>>> Can you fix this up in a pre-save routine (put QEMUTimer into a state
>>>>> where there isn't an event pending)?
>>>>
>>>> It is not a dummy field, it contains the proper state in both cases. We
>>>> just need to convert it to an open-coded state to avoid the QEMUTimer
>>>> restoration magic in the in-kernel case (where there must be no
>>>> QEMUTimer).
>>>
>>> So the state gets fed into the kernel instead of userspace?
>>
>> Nope. It's kept for eventual use by a user space model.
> 
> I think you misunderstood my comments.
> 
> When you are using the in-kernel APIC, the is no implementation for the
> post_load hook.  As far as I can tell, the state isn't used.

Correct, it's just kept up to date.

> 
> I know it's used by the user space model but from what I can tell, the
> value is essentially sync with the in-kernel APIC almost immediately as
> it happens during KVM_RUN.
> 
> So it's a QEMUTimer in the userspace model, but it's just an integer
> when used in the in-kernel APIC as the timer never fires.  It is just
> saved/restored from and to the kernel.
> 
> Is this correct?

Almost. timer_expiry is calculated on get_apic_state based on the APIC
registers. And it is initialized on reset. But it is never saved into
the kernel nor does it otherwise affect the in-kernel model. It is
really just a compatibility field for potential user space apic usage.

Jan


[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 262 bytes --]

  reply	other threads:[~2011-12-20  1:24 UTC|newest]

Thread overview: 99+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2011-12-15 12:33 [PATCH v5 00/16] uq/master: Introduce basic irqchip support Jan Kiszka
2011-12-15 12:33 ` [Qemu-devel] " Jan Kiszka
2011-12-15 12:33 ` [PATCH v5 01/16] msi: Generalize msix_supported to msi_supported Jan Kiszka
2011-12-15 12:33   ` [Qemu-devel] " Jan Kiszka
2011-12-15 12:33 ` [PATCH v5 02/16] kvm: Move kvmclock into hw/kvm folder Jan Kiszka
2011-12-15 12:33   ` [Qemu-devel] " Jan Kiszka
2011-12-15 12:33 ` [PATCH v5 03/16] apic: Stop timer on reset Jan Kiszka
2011-12-15 12:33   ` [Qemu-devel] " Jan Kiszka
2011-12-15 12:33 ` [PATCH v5 04/16] apic: Inject external NMI events via LINT1 Jan Kiszka
2011-12-15 12:33   ` [Qemu-devel] " Jan Kiszka
2011-12-15 12:33 ` [PATCH v5 05/16] apic: Introduce apic_report_irq_delivered Jan Kiszka
2011-12-15 12:33   ` [Qemu-devel] " Jan Kiszka
2011-12-15 12:33 ` [PATCH v5 06/16] apic: Introduce backend/frontend infrastructure for KVM reuse Jan Kiszka
2011-12-15 12:33   ` [Qemu-devel] " Jan Kiszka
2011-12-19 22:14   ` Anthony Liguori
2011-12-19 22:14     ` Anthony Liguori
2011-12-19 23:32     ` Jan Kiszka
2011-12-19 23:32       ` Jan Kiszka
2011-12-20  0:28       ` Anthony Liguori
2011-12-20  0:32         ` Jan Kiszka
2011-12-20  0:38           ` Anthony Liguori
2011-12-20  9:56             ` Avi Kivity
2011-12-20  9:56               ` Avi Kivity
2011-12-20 13:41               ` Anthony Liguori
2011-12-20 13:51                 ` Paolo Bonzini
2011-12-20 13:51                   ` Paolo Bonzini
2011-12-20 13:54                   ` Anthony Liguori
2011-12-20 13:57                     ` Paolo Bonzini
2011-12-20 14:07                       ` Anthony Liguori
2011-12-20 17:02                         ` Jan Kiszka
2011-12-20 17:02                           ` Jan Kiszka
2011-12-20 19:14                           ` Anthony Liguori
2011-12-20 21:23                             ` Jan Kiszka
2011-12-20 21:38                               ` Anthony Liguori
2011-12-20 21:45                                 ` Jan Kiszka
2011-12-20 21:55                                   ` Anthony Liguori
2011-12-20 22:20                                     ` Jan Kiszka
2011-12-20 22:20                                       ` [Qemu-devel] " Jan Kiszka
2011-12-20 23:41                                       ` Anthony Liguori
2011-12-20 23:45                                         ` Jan Kiszka
2011-12-20 14:07                   ` Avi Kivity
2011-12-20 14:07                     ` Avi Kivity
2011-12-15 12:33 ` [PATCH v5 07/16] apic: Open-code timer save/restore Jan Kiszka
2011-12-15 12:33   ` [Qemu-devel] " Jan Kiszka
2011-12-19 22:21   ` Anthony Liguori
2011-12-19 22:21     ` [Qemu-devel] " Anthony Liguori
2011-12-19 23:45     ` Jan Kiszka
2011-12-19 23:45       ` [Qemu-devel] " Jan Kiszka
2011-12-20  0:31       ` Anthony Liguori
2011-12-20  0:34         ` Jan Kiszka
2011-12-20  0:34           ` [Qemu-devel] " Jan Kiszka
2011-12-20  0:53           ` Anthony Liguori
2011-12-20  0:53             ` [Qemu-devel] " Anthony Liguori
2011-12-20  1:24             ` Jan Kiszka [this message]
2011-12-20  1:24               ` Jan Kiszka
2011-12-15 12:33 ` [PATCH v5 08/16] i8259: Introduce backend/frontend infrastructure for KVM reuse Jan Kiszka
2011-12-15 12:33   ` [Qemu-devel] " Jan Kiszka
2011-12-15 12:33 ` [PATCH v5 09/16] ioapic: " Jan Kiszka
2011-12-15 12:33   ` [Qemu-devel] " Jan Kiszka
2011-12-15 12:33 ` [PATCH v5 10/16] memory: Introduce memory_region_init_reservation Jan Kiszka
2011-12-15 12:33   ` [Qemu-devel] " Jan Kiszka
2011-12-15 12:33 ` [PATCH v5 11/16] kvm: Introduce core services for in-kernel irqchip support Jan Kiszka
2011-12-15 12:33   ` [Qemu-devel] " Jan Kiszka
2011-12-15 12:33 ` [PATCH v5 12/16] kvm: x86: Establish IRQ0 override control Jan Kiszka
2011-12-15 12:33   ` [Qemu-devel] " Jan Kiszka
2011-12-15 12:33 ` [PATCH v5 13/16] kvm: x86: Add user space part for in-kernel APIC Jan Kiszka
2011-12-15 12:33   ` [Qemu-devel] " Jan Kiszka
2011-12-15 12:33 ` [PATCH v5 14/16] kvm: x86: Add user space part for in-kernel i8259 Jan Kiszka
2011-12-15 12:33   ` [Qemu-devel] " Jan Kiszka
2011-12-15 12:33 ` [PATCH v5 15/16] kvm: x86: Add user space part for in-kernel IOAPIC Jan Kiszka
2011-12-15 12:33   ` [Qemu-devel] " Jan Kiszka
2011-12-15 12:33 ` [PATCH v5 16/16] kvm: Arm in-kernel irqchip support Jan Kiszka
2011-12-15 12:33   ` [Qemu-devel] " Jan Kiszka
2011-12-19 21:17 ` [PATCH v5 00/16] uq/master: Introduce basic " Marcelo Tosatti
2011-12-19 21:17   ` [Qemu-devel] " Marcelo Tosatti
2011-12-19 22:24   ` Anthony Liguori
2011-12-19 22:24     ` Anthony Liguori
2011-12-19 23:49     ` Jan Kiszka
2011-12-19 23:49       ` [Qemu-devel] " Jan Kiszka
2011-12-20  0:32       ` Anthony Liguori
2011-12-20  0:37         ` Jan Kiszka
2011-12-20  0:42           ` Anthony Liguori
2011-12-20  0:42             ` [Qemu-devel] " Anthony Liguori
2011-12-20 10:01             ` Avi Kivity
2011-12-20 10:01               ` Avi Kivity
2011-12-20  1:08           ` Anthony Liguori
2011-12-20  1:19             ` Jan Kiszka
2011-12-20  1:19               ` [Qemu-devel] " Jan Kiszka
2011-12-20  1:28               ` Jan Kiszka
2011-12-20  1:28                 ` [Qemu-devel] " Jan Kiszka
2011-12-20  2:46               ` Anthony Liguori
2011-12-20  3:10                 ` Anthony Liguori
2011-12-20  8:34                   ` Jan Kiszka
2011-12-20  8:34                     ` [Qemu-devel] " Jan Kiszka
2011-12-20 10:03                 ` Avi Kivity
2011-12-20 10:03                   ` [Qemu-devel] " Avi Kivity
2011-12-20 10:08                   ` Avi Kivity
2011-12-20 10:08                     ` Avi Kivity
2011-12-20 13:45                     ` Anthony Liguori

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=4EEFE3D8.5010704@web.de \
    --to=jan.kiszka@web.de \
    --cc=anthony@codemonkey.ws \
    --cc=avi@redhat.com \
    --cc=blauwirbel@gmail.com \
    --cc=kvm@vger.kernel.org \
    --cc=mst@redhat.com \
    --cc=mtosatti@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.