[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH 09/17] rtc: add qc annotations
From: |
Avi Kivity |
Subject: |
Re: [Qemu-devel] [PATCH 09/17] rtc: add qc annotations |
Date: |
Tue, 05 Jun 2012 15:42:30 +0300 |
User-agent: |
Mozilla/5.0 (X11; Linux x86_64; rv:12.0) Gecko/20120430 Thunderbird/12.0.1 |
On 06/05/2012 01:40 PM, Jan Kiszka wrote:
> On 2012-06-05 12:25, Avi Kivity wrote:
>> On 06/05/2012 04:00 AM, Michael Roth wrote:
>>> Add our annotations according to QIDL documentation.
>>>
>>> +qc_declaration typedef struct RTCState {
>>> + ISADevice _immutable dev;
>>> + MemoryRegion _immutable io;
>>> uint8_t cmos_data[128];
>>> uint8_t cmos_index;
>>> struct tm current_tm;
>>> int32_t base_year;
>>> - qemu_irq irq;
>>> - qemu_irq sqw_irq;
>>> - int it_shift;
>>> + qemu_irq _immutable irq;
>>> + qemu_irq _immutable sqw_irq;
>>
>> How is qemu_irq immutable? We're raising and lowering it many times a
>> second. It's _derived, perhaps, but not immutable.
>
> No, IRQState in its current form is immutable, doesn't contain any
> volatile state.
Good point. So it's just like any pointer: it depends on the pointed-to
type. If it saves its state, then great, but if the pointed-to type
doesn't, then it's broken.
>
>>
>>> + int32_t _immutable it_shift;
>>> /* periodic timer */
>>> QEMUTimer *periodic_timer;
>>> int64_t next_periodic_time;
>>> /* second update */
>>> int64_t next_second_time;
>>> - uint16_t irq_reinject_on_ack_count;
>>> + uint16_t _derived irq_reinject_on_ack_count;
>>
>> It's not derived from anything. It's _host, maybe.
>
> I think it is _broken.
I think it's _complicated. Migration involves downtime and so lost
ticks. In the case of RTC we probably need to trigger compensation code
that will try to handle it according to policy.
>>> + LostTickPolicy _immutable lost_tick_policy;
>>
>> _host; nothign prevents us from changing it dynamically in theory.
>
> _host makes no sense to me. Either it is _immutable or _broken - or is
> properly saved/restored. What should be the semantic of _host?
An emulated device manages some state, and also talks to a host device,
often through an interface like BlockDriverState or CharState. _host is
anything related to the host device that we should be able to
reconstruct on resume.
Example of host state is a CharDriverState filename. Even if we allow
it to change, there is no point in migrating it since it belongs to the
source namespace, not destination.
--
error compiling committee.c: too many arguments to function
[Qemu-devel] [PATCH 06/17] qapi: qapi-visit.py, add gen support for existing types, Michael Roth, 2012/06/04
[Qemu-devel] [PATCH 05/17] qapi: qapi-visit.py, support arrays and complex qapi definitions, Michael Roth, 2012/06/04
[Qemu-devel] [PATCH 07/17] qapi: add open-coded visitors for QEMUTimer/struct tm types, Michael Roth, 2012/06/04
[Qemu-devel] [PATCH 08/17] rtc: move RTCState declaration to header, Michael Roth, 2012/06/04
[Qemu-devel] [PATCH 09/17] rtc: add qc annotations, Michael Roth, 2012/06/04
[Qemu-devel] [PATCH 10/17] Makefile: add infrastructure to incorporate qidl-generated files, Michael Roth, 2012/06/04
[Qemu-devel] [PATCH 15/17] Makefile: add qidl-generation of vmstate field descriptions, Michael Roth, 2012/06/04
[Qemu-devel] [PATCH 14/17] qidl: add qidl-based generation of vmstate field bindings, Michael Roth, 2012/06/04
[Qemu-devel] [PATCH 11/17] qapi: add qidl-generated qapi schema for rtc, Michael Roth, 2012/06/04
Re: [Qemu-devel] [PATCH 11/17] qapi: add qidl-generated qapi schema for rtc, Avi Kivity, 2012/06/05