From: "H. Peter Anvin" <hpa@linux.intel.com>
To: Anthony Liguori <anthony@codemonkey.ws>
Cc: Jan Kiszka <jan.kiszka@siemens.com>, 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: Thu, 18 Feb 2010 14:56:37 -0800 [thread overview]
Message-ID: <4B7DC5A5.5020500@linux.intel.com> (raw)
In-Reply-To: <4B7DA2C4.9040207@codemonkey.ws>
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.
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.
>> NEITHER OF THESE OPTIONS ARE SAFE ON REAL HARDWARE <<
These are both BIOS-specific use areas.
-hpa
next prev parent reply other threads:[~2010-02-18 22:57 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 [this message]
2010-02-19 10:06 ` Jan Kiszka
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=4B7DC5A5.5020500@linux.intel.com \
--to=hpa@linux.intel.com \
--cc=anthony@codemonkey.ws \
--cc=avi@redhat.com \
--cc=jan.kiszka@siemens.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 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.