From: Jan Kiszka <jan.kiszka@web.de>
To: Gleb Natapov <gleb@redhat.com>
Cc: qemu-devel <qemu-devel@nongnu.org>
Subject: Re: [Qemu-devel] Re: [PATCH] hpet: Clean up initial hpet counter
Date: Thu, 17 Jun 2010 10:30:15 +0200 [thread overview]
Message-ID: <4C19DD17.3000408@web.de> (raw)
In-Reply-To: <20100617080758.GK523@redhat.com>
[-- Attachment #1: Type: text/plain, Size: 3501 bytes --]
Gleb Natapov wrote:
> On Thu, Jun 17, 2010 at 09:17:51AM +0200, Jan Kiszka wrote:
>> Gleb Natapov wrote:
>>> On Wed, Jun 16, 2010 at 06:00:56PM +0200, Jan Kiszka wrote:
>>>> Gleb Natapov wrote:
>>>>> On Wed, Jun 16, 2010 at 12:35:16PM +0300, Gleb Natapov wrote:
>>>>>> On Wed, Jun 16, 2010 at 11:33:13AM +0200, Jan Kiszka wrote:
>>>>>>> Gleb Natapov wrote:
>>>>>>>> On Wed, Jun 16, 2010 at 09:57:35AM +0200, Jan Kiszka wrote:
>>>>>>>>> Gleb Natapov wrote:
>>>>>>>>>> On Wed, Jun 16, 2010 at 09:51:14AM +0200, Jan Kiszka wrote:
>>>>>>>>>>> Gleb Natapov wrote:
>>>>>>>>>>>> On Wed, Jun 16, 2010 at 09:03:01AM +0200, Jan Kiszka wrote:
>>>>>>>>>>>>> Gleb Natapov wrote:
>>>>>>>>>>>>>> On Wed, Jun 16, 2010 at 12:40:28AM +0200, Jan Kiszka wrote:
>>>>>>>>>>>>>>> From: Jan Kiszka <jan.kiszka@siemens.com>
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> There is no need starting with the special value for hpet_cfg.count.
>>>>>>>>>>>>>>> Either Seabios is aware of the new firmware interface and properly
>>>>>>>>>>>>>>> interprets the counter or it simply ignores it anyway.
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>> I want seabios to be able to distinguish between old qemu and new one.
>>>>>>>>>>>>> I see now. But isn't it a good chance to introduce a proper generic
>>>>>>>>>>>>> interface for exploring supported fw-cfg keys?
>>>>>>>>>>>>>
>>>>>>>>>>>> Having such interface would be nice. Pity we haven't introduced it from
>>>>>>>>>>>> the start. If we do it now seabios will have to find out somehow that
>>>>>>>>>>>> qemu support such interface. Chicken and egg ;)
>>>>>>>>>>> That is easy: Add a key the describes the highest supported key value
>>>>>>>>>>> (looks like this is monotonously increasing). Older qemu versions will
>>>>>>>>>>> return 0.
>>>>>>>>>>>
>>>>>>>>>> That will not support holes in key space, and our key space is already
>>>>>>>>>> sparse.
>>>>>>>>> Then add a service to obtain a bitmap of supported keys. If that bitmap
>>>>>>>>> is empty...
>>>>>>>>>
>>>>>>>> Bitmap will be 2k long. We can add read capability to control port. To
>>>>>>>> check if key is present you select it (write its value to control port)
>>>>>>>> and then read control port back. If values is non-zero the key is valid.
>>>>>>>> But how to detect qemu that does not support that?
>>>>>>> Isn't there some key that was always there and will always be?
>>>>>>>
>>>>>> FW_CFG_SIGNATURE
>>>>>>
>>>>> So any ideas? Or did I misunderstood your hint? ;)
>>>> I thought you found the answer yourself:
>>>>
>>>> Seabios could select FW_CFG_SIGNATURE and then perform a read-back on
>>>> the control register. Older QEMUs will return -1, versions that support
>>>> the read-back 0. Problem solved, no?
>>>>
>>> AFAIK QEMU returns 0 if io read was done from non-used port or mmio
>>> address, but can we rely on this? If we can then problem solved, if
>>> we can't then no.
>> It works for IO-based fw-cfg, but not for MMIO-based. So the firmware
>> should probably pick a non-zero key for this check, e.g. FW_CFG_ID.
>>
> Sorry, I lost you here. What "works for IO-based fw-cfg, but not for
> MMIO-based".
Undefined IO ports return -1, undefined (/wrt read access) MMIO 0. So
you need to select a key that is different from both.
> Can you write pseudo logic of how you think it
> all should work?
The firmware should do this:
write(CTL_BASE, FW_CFG_ID);
if (read(CTL_BASE) != FW_CFG_ID)
deal_with_old_qemu();
else
check_for_supported_keys();
Jan
[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 257 bytes --]
next prev parent reply other threads:[~2010-06-17 8:30 UTC|newest]
Thread overview: 21+ messages / expand[flat|nested] mbox.gz Atom feed top
2010-06-15 22:40 [Qemu-devel] [PATCH] hpet: Clean up initial hpet counter Jan Kiszka
2010-06-16 4:40 ` [Qemu-devel] " Gleb Natapov
2010-06-16 7:03 ` Jan Kiszka
2010-06-16 7:33 ` Gleb Natapov
2010-06-16 7:51 ` Jan Kiszka
2010-06-16 7:52 ` Gleb Natapov
2010-06-16 7:57 ` Jan Kiszka
2010-06-16 9:06 ` Gleb Natapov
2010-06-16 9:33 ` Jan Kiszka
2010-06-16 9:35 ` Gleb Natapov
2010-06-16 15:36 ` Gleb Natapov
2010-06-16 16:00 ` Jan Kiszka
2010-06-17 5:48 ` Gleb Natapov
2010-06-17 7:17 ` Jan Kiszka
2010-06-17 8:07 ` Gleb Natapov
2010-06-17 8:30 ` Jan Kiszka [this message]
2010-06-17 8:36 ` Gleb Natapov
2010-06-17 8:42 ` Jan Kiszka
2010-06-17 8:46 ` Gleb Natapov
2010-06-17 8:59 ` Jan Kiszka
2010-06-17 9:01 ` Gleb Natapov
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=4C19DD17.3000408@web.de \
--to=jan.kiszka@web.de \
--cc=gleb@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 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).