qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
From: Avi Kivity <avi@redhat.com>
To: Anthony Liguori <anthony@codemonkey.ws>
Cc: chrisw@redhat.com, kvm@vger.kernel.org, mst@redhat.com,
	qemu-devel@nongnu.org, blauwirbel@gmail.com,
	Alex Williamson <alex.williamson@redhat.com>,
	ddutile@redhat.com
Subject: Re: [Qemu-devel] [PATCH v2 2/2] RAM API: Make use of it for x86 PC
Date: Thu, 18 Nov 2010 17:57:08 +0200	[thread overview]
Message-ID: <4CE54CD4.3020103@redhat.com> (raw)
In-Reply-To: <4CE54A5D.1020405@codemonkey.ws>

On 11/18/2010 05:46 PM, Anthony Liguori wrote:
> On 11/18/2010 09:22 AM, Avi Kivity wrote:
>> On 11/18/2010 01:42 AM, Anthony Liguori wrote:
>>>> Gack.  For the benefit of those that want to join the fun without
>>>> digging up the spec, these magic flippable segments the i440fx can
>>>> toggle are 12 fixed 16k segments from 0xc0000 to 0xeffff and a single
>>>> 64k segment from 0xf0000 to 0xfffff.  There are read-enable and
>>>> write-enable bits for each, so the chipset can be configured to read
>>>> from the bios and write to memory (to setup BIOS-RAM caching), and 
>>>> read
>>>> from memory and write to the bios (to enable BIOS-RAM caching).  The
>>>> other bit combinations are also available.
>>>
>>> Yup.  As Gleb mentions, there's the SDRAM register which controls 
>>> whether 0xa0000 is mapped to PCI or whether it's mapped to RAM (but 
>>> KVM explicitly disabled SMM support).
>>
>> KVM not supporting SMM is a bug (albeit one that is likely to remain 
>> unresolved for a while).  Let's pretend that kvm smm support is not 
>> an issue.
>>
>> IIUC, SMM means that there two memory maps when the cpu accesses 
>> memory, one for SMM, one for non-SMM.
>
> No.  That's not what it means.  With the i440fx, when the CPU accesses 
> 0xa0000, it gets forwarded to the PCI bus no different than an access 
> to 0xe0000.
>
> If the CPU asserts the EXF4#/Ab7# signal, then the i440fx directs CPU 
> accesses to 0xa0000 to RAM instead of the PCI bus.

That's what "two memory maps" mean.  If you have one cpu in SMM and 
another outside SMM, then those two maps are active simultaneously.

>
> Alternatively, if the SMRAM register is activated, then the i440fx 
> will redirect 0xa0000 to RAM regardless of whether the CPU asserts 
> that signal.  That means that even without KVM supporting SMM, this 
> mode can happen.

That's a single memory map that is modified under hardware control, it's 
no different than BARs and such.

>> Things aren't that bad - a ram_addr_t and a physical address are 
>> already different things, so we already have one level of translation.
>
> Yeah, but ram_addr_t doesn't model anything meaningful IRL.  It's an 
> internal implementation detail.
>

Does it matter?  We can say those are addresses on the memory bus.  
Since they are not observable anyway, who cares if the correspond with 
reality or not?

-- 
error compiling committee.c: too many arguments to function

  reply	other threads:[~2010-11-18 15:57 UTC|newest]

Thread overview: 27+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2010-10-29 16:38 [Qemu-devel] [PATCH 0/2] Minimal RAM API support Alex Williamson
2010-10-29 16:39 ` [Qemu-devel] [PATCH 1/2] " Alex Williamson
2010-10-29 19:57   ` Blue Swirl
2010-10-29 20:15     ` Alex Williamson
2010-11-01  2:17   ` Isaku Yamahata
2010-11-01  2:32     ` Alex Williamson
2010-10-29 16:39 ` [Qemu-devel] [PATCH 2/2] RAM API: Make use of it for x86 PC Alex Williamson
2010-11-01 15:13 ` [Qemu-devel] [PATCH v2 0/2] Minimal RAM API support Alex Williamson
2010-11-01 15:14   ` [Qemu-devel] [PATCH v2 1/2] " Alex Williamson
2010-11-16 14:55     ` Anthony Liguori
2010-11-16 15:02       ` Alexander Graf
2010-11-16 15:08         ` Anthony Liguori
2010-11-01 15:14   ` [Qemu-devel] [PATCH v2 2/2] RAM API: Make use of it for x86 PC Alex Williamson
2010-11-16 14:58     ` Anthony Liguori
2010-11-16 21:24       ` Alex Williamson
2010-11-17  9:31         ` Gleb Natapov
2010-11-17 23:42         ` Anthony Liguori
2010-11-18 15:22           ` Avi Kivity
2010-11-18 15:46             ` Anthony Liguori
2010-11-18 15:57               ` Avi Kivity [this message]
2010-11-18 16:09                 ` Anthony Liguori
2010-11-18 16:18                   ` Avi Kivity
2010-11-18 16:35                     ` Michael S. Tsirkin
2010-11-18 15:51           ` Gleb Natapov
2010-11-18 21:41   ` [Qemu-devel] [PATCH v3 0/2] Minimal RAM API support Alex Williamson
2010-11-18 21:41     ` [Qemu-devel] [PATCH v3 1/2] " Alex Williamson
2010-11-18 21:41     ` [Qemu-devel] [PATCH v3 2/2] RAM API: Make use of it for x86 PC Alex Williamson

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=4CE54CD4.3020103@redhat.com \
    --to=avi@redhat.com \
    --cc=alex.williamson@redhat.com \
    --cc=anthony@codemonkey.ws \
    --cc=blauwirbel@gmail.com \
    --cc=chrisw@redhat.com \
    --cc=ddutile@redhat.com \
    --cc=kvm@vger.kernel.org \
    --cc=mst@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).