From: Jan Kiszka <jan.kiszka@siemens.com>
To: "H. Peter Anvin" <hpa@linux.intel.com>
Cc: Anthony Liguori <anthony@codemonkey.ws>,
Avi Kivity <avi@redhat.com>,
Marcelo Tosatti <mtosatti@redhat.com>, kvm <kvm@vger.kernel.org>
Subject: Re: [PATCH 1/2] qemu-kvm: extboot: Keep variables in RAM
Date: Fri, 19 Feb 2010 11:06:06 +0100 [thread overview]
Message-ID: <4B7E628E.2050107@siemens.com> (raw)
In-Reply-To: <4B7DC5A5.5020500@linux.intel.com>
H. Peter Anvin wrote:
> On 02/18/2010 12:27 PM, Anthony Liguori wrote:
>> On 02/18/2010 10:13 AM, Jan Kiszka wrote:
>>> Instead of saving the old INT 0x13 and 0x19 handlers in ROM which fails
>>> under QEMU as it enforces protection, keep them in spare vectors of the
>>> interrupt table, namely INT 0x80 and 0x81.
>>>
>>> Signed-off-by: Jan Kiszka<jan.kiszka@siemens.com>
>>>
>> commit a4492b03932ea3c9762372f3e15e8c6526ee56c6
>> Author: H. Peter Anvin <hpa@zytor.com>
>> Date: Fri Jul 18 11:22:59 2008 -0700
>>
>> kvm: extboot: don't use interrupt vectors $0x2b and $0x2c
>>
>> extboot's use of interrupt vectors $0x2b and $0x2c is unsafe, as these
>> interrupt vectors fall in the OS-use range (0x20-0x3f). Furthermore,
>> it's unnecessary: we can keep a local pointer instead of hooking
>> another interrupt as long as we can write to our own segment.
>>
>> Make the extboot segment writable, and use local variables to hold the
>> old link pointers.
>>
>> If this turns out to cause problems, we should probably switch to
>> using vectors in the 0xc0-0xef range, and/or other BIOS-reserved
>> memory.
>>
>> Signed-off-by: H. Peter Anvin <hpa@zytor.com>
>> Signed-off-by: Avi Kivity <avi@qumranet.com>
>>
>> Sounds like 0x80/0x81 is probably not the best choice. hpa: any
>> suggestions?
>
> There aren't really any free memory that you can just use -- there are
> no free interrupt vectors which are safe to use. Furthermore, this
> implies that there is a bug in the Qemu BIOS in this respect: the PCI
> spec requires that the "ROM region" (upper memory area) that contains
> shadow ROM contents be writable until INT 19h is executed -- at *that*
> point it gets write protected.
Shall the protection start _before_ INT 19 or somewhere _while_ it is
processed? I'm asking as extboot redirect the handler and writes to some
variable in its own handler. If the protection is already active at this
point, we must move at least one of the variables out of the shadow ROM.
>
> However, as I did point out in the original comment, there are some
> BIOSes in the field which uses vectors 0xc0-0xdf as a scratch memory
> pool -- usually to have somewhere to stash a small stack -- so if you
> absolutely have to go down this route that range those probably be the
> safest. An alternative would be to use memory in the BDA in the range
> 0x4ac-0x4ff (absolute), which appears to be available for BIOS-specific
> uses.
No problem moving to 0xc0 vectors if we have to (though my PC interrupt
vector docs all state that already 0x80 is BIOS/BASIC domain).
>
>>> NEITHER OF THESE OPTIONS ARE SAFE ON REAL HARDWARE <<
> These are both BIOS-specific use areas.
>
Extboot is not targeting real hardware. It is built for a paravirtual
interface to QEMU.
Jan
--
Siemens AG, Corporate Technology, CT T DE IT 1
Corporate Competence Center Embedded Linux
next prev parent reply other threads:[~2010-02-19 10:07 UTC|newest]
Thread overview: 19+ messages / expand[flat|nested] mbox.gz Atom feed top
2010-02-18 16:13 [PATCH 1/2] qemu-kvm: extboot: Keep variables in RAM Jan Kiszka
2010-02-18 20:27 ` Anthony Liguori
2010-02-18 22:56 ` H. Peter Anvin
2010-02-19 10:06 ` Jan Kiszka [this message]
2010-02-19 16:50 ` H. Peter Anvin
2010-02-19 17:03 ` Jan Kiszka
2010-02-19 17:24 ` H. Peter Anvin
2010-02-19 17:44 ` Jan Kiszka
2010-02-19 18:10 ` Anthony Liguori
2010-02-19 18:17 ` Jan Kiszka
2010-02-19 19:37 ` H. Peter Anvin
2010-02-20 3:21 ` Kevin O'Connor
2010-02-22 10:03 ` Stefan Hajnoczi
[not found] ` <4B82DE3F.5090306@linux.intel.com>
2010-02-23 9:30 ` Stefan Hajnoczi
2010-02-22 9:40 ` Avi Kivity
2010-02-22 9:59 ` Jan Kiszka
2010-02-22 10:03 ` Jan Kiszka
2010-02-22 11:02 ` Avi Kivity
2010-04-06 8:50 ` Jan Kiszka
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=4B7E628E.2050107@siemens.com \
--to=jan.kiszka@siemens.com \
--cc=anthony@codemonkey.ws \
--cc=avi@redhat.com \
--cc=hpa@linux.intel.com \
--cc=kvm@vger.kernel.org \
--cc=mtosatti@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