public inbox for kvm@vger.kernel.org
 help / color / mirror / Atom feed
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

  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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox