qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
From: Jan Kiszka <jan.kiszka@siemens.com>
To: Pavel Dovgaluk <Pavel.Dovgaluk@ispras.ru>
Cc: 'qemu-devel' <qemu-devel@nongnu.org>,
	"quintela@redhat.com" <quintela@redhat.com>
Subject: Re: [Qemu-devel] [PATCH] Fix serial interface vmstate
Date: Wed, 22 Jun 2011 18:14:16 +0200	[thread overview]
Message-ID: <4E0214D8.4060706@siemens.com> (raw)
In-Reply-To: <000101cc30c5$0dc1ff90$2945feb0$@Dovgaluk@ispras.ru>

On 2011-06-22 12:13, Pavel Dovgaluk wrote:
>> On 2011-06-22 11:15, Pavel Dovgaluk wrote:
>>>>>>>   What is the purpose of subsections?
>>>>>>
>>>>>> To skip the new fields whenever possible. That would allow to continue
>>>>>> saving a vmstate on a new version of qemu and then restoring it on an
>>>>>> older one.
>>>>>
>>>>>   Do you have an idea how to implement "needed" function for my case?
>>>>> Because I think, these fields should always be saved and loaded, because
>>>>> they are related to the main state of the interface, not the kind of
>>>>> optional substate.
>>>>
>>>> E.g., if the fifo is empty, you do not need to save its content. That
>>>> would be one part of the condition. Go through all fields and check if
>>>> they have states that could be ignored or if they could be ignored if
>>>> other already saved fields have specific values. If you find any new
>>>> field that must always be restored, let us discuss it. It may turn out
>>>> that a substate is unrealistic, then we need to go with a new version.
>>>
>>>   You mean, if FIFO is empty an will not be saved, we will have to clear
>>> it before loading every time?
>>
>> We (soon, patches posted) do a reset before every loadvm. We already do
>> this when starting a new machine. That sets all states that aren't
>> restored to defaults. In case of the fifo, they are all emptied.
>>
>>>   So there should be multiple subsections for every possible field?
>>>   E.g. timers are saved only if they are pending, thr_ipending is saved
>>> only when it is nonzero, and so on. Do you mean that?
>>
>> Nope, only a single subsection. Either we are able to avoid any new
>> field under certain circumstances or we have to break the legacy format
>> anyway.
> 
>   Fields added by my patch are not belong to single subsection.
>   Consider THR and TSR registers:
>   THR:
>       Bit 5 in the LSR, line status register can be used to check if new 
>       information must be written to THR. The value 1 indicates that the 
>       register is empty.
>   TSR:
>       Contains data, that should be shifted out. This register is
>       Interconnected with transmit_timer - when timer event occurs,
>       the data is shifted out.
>   There are also other fields, that describe the state of the serial
> interface, but cannot be directly derived from THR and TSR state.

Neither thr nor tsr are set to a specific value on reset. That indicates
that both depend on other states to be valid. Looks like tsr_retry > 0
would be the condition for a tsr worth saving e.g.

> 
>   So, there are the following ways, as I see it:
>   1. Make several subsections - one for every substate.

Again, that comes with no benefits.

>   2. Make one subsection with very complex "needed" condition,
>      which will be true, when any part of the subsection should be
>      written. I think, that such complex condition will be too hard
>      for testing.
>   3. Change version of the format.

I still don't think we have found the case that requires a version change.

Jan

-- 
Siemens AG, Corporate Technology, CT T DE IT 1
Corporate Competence Center Embedded Linux

  reply	other threads:[~2011-06-22 16:14 UTC|newest]

Thread overview: 11+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2011-06-21 12:23 [Qemu-devel] [PATCH] Fix serial interface vmstate Pavel Dovgaluk
2011-06-21 13:31 ` Juan Quintela
2011-06-22  6:19   ` Pavel Dovgaluk
     [not found]   ` <49270.9042774097$1308723700@news.gmane.org>
2011-06-22  8:12     ` Jan Kiszka
2011-06-22  8:58       ` Pavel Dovgaluk
2011-06-22  9:10         ` Jan Kiszka
2011-06-22  9:15           ` Pavel Dovgaluk
2011-06-22  9:22             ` Jan Kiszka
2011-06-22 10:13               ` Pavel Dovgaluk
2011-06-22 16:14                 ` Jan Kiszka [this message]
     [not found]       ` <4e01af43.ce4ee50a.60ee.3b47SMTPIN_ADDED@mx.google.com>
2011-06-23 10:11         ` Andreas Färber

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=4E0214D8.4060706@siemens.com \
    --to=jan.kiszka@siemens.com \
    --cc=Pavel.Dovgaluk@ispras.ru \
    --cc=qemu-devel@nongnu.org \
    --cc=quintela@redhat.com \
    /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).