No description
Find a file
Avi Kivity ae0a54664c 440fx: fix PAM, PCI holes
The current implementation of PAM and the PCI holes is broken in several
ways:

  - PCI BARs are not restricted to the PCI hole (a BAR may hide memory)
  - PCI devices do not respect PAM (if a PCI device maps a region while
    PAM maps the region to RAM, the request will be honored)

This patch fixes things by introducing a pci address space, and using
memory region aliases to represent PAM regions, SMRAM, and PCI holes.

The memory hierarchy looks something like

system_memory
 |
 +--- low memory alias (0-0xe0000000)
 |      |
 |      +-- ram@0
 |
 +--- high memory alias (0x100000000-EOM)
 |      |
 |      +-- ram@0xe0000000
 |
 +--- pci hole alias (end of low memory-0x100000000)
 |      |
 |      +-- pci@end-of-low-memory
 |
 |
 +--- pam[n] (0xc0000-0xc3fff etc) (when set to pci, priority 1)
 |      |
 |      +-- pci@0xc4000 etc
 |
 +--- smram (0xa0000-0xbffff) (when set to pci/vga, priority 1)
        |
        +-- pci@0xa0000 etc

ram (simple ram region)

pci
 |
 +--- BARn
 |
 +--- VGA 0xa0000-0xbffff
 |
 +--- ROMs

Signed-off-by: Avi Kivity <avi@redhat.com>
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
2011-08-22 10:47:49 -05:00
audio
block w32: Fix qemu_ftruncate64 2011-08-22 10:19:00 -05:00
bsd-user
darwin-user
default-configs
docs
fpu
fsdev
gdb-xml
hw 440fx: fix PAM, PCI holes 2011-08-22 10:47:49 -05:00
libcacard Improvements to libtool support. 2011-08-22 10:20:10 -05:00
linux-headers
linux-user
net char: rename qemu_chr_open() -> qemu_chr_new() 2011-08-22 10:17:43 -05:00
pc-bios
qapi
qga
QMP
roms
scripts
slirp char: rename qemu_chr_write() -> qemu_chr_fe_write() 2011-08-22 10:17:15 -05:00
sysconfigs/target
target-alpha
target-arm
target-cris
target-i386
target-lm32
target-m68k
target-microblaze
target-mips
target-ppc
target-s390x
target-sh4
target-sparc
target-unicore32
tcg tcg/ppc64: fix 16/32 mixup 2011-08-22 18:26:15 +04:00
tests
ui Convert last qemu_free and qemu_malloc uses 2011-08-21 18:42:08 +00:00
.gitignore
.gitmodules
a.out.h
acl.c
acl.h
aes.c
aes.h
aio.c
alpha-dis.c
alpha.ld
arch_init.c
arch_init.h
arm-dis.c
arm-semi.c
arm.ld
async.c
balloon.c
balloon.h
bitmap.c
bitmap.h
bitops.c
bitops.h
block-migration.c
block-migration.h
block.c fix code format 2011-08-22 10:17:52 -05:00
block.h
block_int.h
blockdev.c
blockdev.h
bswap.h
bt-host.c
bt-host.h
bt-vhci.c
buffered_file.c
buffered_file.h
cache-utils.c
cache-utils.h
Changelog
check-qdict.c
check-qfloat.c
check-qint.c
check-qjson.c
check-qlist.c
check-qstring.c
cmd.c
cmd.h
CODING_STYLE
compatfd.c
compatfd.h
compiler.h
config.h
configure Improvements to libtool support. 2011-08-22 10:20:10 -05:00
console.c char: remove qemu_chr_send_event() 2011-08-22 10:17:44 -05:00
console.h
COPYING
COPYING.LIB
coroutine-gthread.c Convert last qemu_free and qemu_malloc uses 2011-08-21 18:42:08 +00:00
coroutine-ucontext.c
coroutine-win32.c
cpu-all.h
cpu-common.h
cpu-defs.h
cpu-exec.c
cpus.c
cpus.h
cris-dis.c
cursor.c
cursor_hidden.xpm
cursor_left_ptr.xpm
cutils.c
def-helper.h
device_tree.c
device_tree.h
dis-asm.h
disas.c
disas.h
dma-helpers.c
dma.h
dyngen-exec.h
elf.h
envlist.c
envlist.h
error.c
error.h
error_int.h
exec-all.h
exec-memory.h
exec.c
gdbstub.c char: rename qemu_chr_close() -> qemu_chr_delete() 2011-08-22 10:17:43 -05:00
gdbstub.h
gen-icount.h
HACKING Convert last qemu_free and qemu_malloc uses 2011-08-21 18:42:08 +00:00
hmp-commands.hx
host-utils.c
host-utils.h
hpet.h
hppa-dis.c
hppa.ld
i386-dis.c
i386.ld
ia64-dis.c
ia64.ld
input.c
iohandler.c
ioport-user.c
ioport.c
ioport.h
iorange.h
iov.c
iov.h
json-lexer.c
json-lexer.h
json-parser.c
json-parser.h
json-streamer.c
json-streamer.h
kvm-all.c
kvm-stub.c
kvm.h
libfdt_env.h
LICENSE
linux-aio.c
m68k-dis.c
m68k-semi.c
m68k.ld
MAINTAINERS
Makefile guest agent: remove uneeded dependencies 2011-08-21 18:27:34 -05:00
Makefile.dis
Makefile.hw
Makefile.objs Improvements to libtool support. 2011-08-22 10:20:10 -05:00
Makefile.target
Makefile.user
memory.c memory: crack wide ioport accesses into smaller ones when needed 2011-08-21 18:27:33 -05:00
memory.h
microblaze-dis.c
migration-exec.c
migration-fd.c
migration-tcp.c
migration-unix.c
migration.c
migration.h
mips-dis.c
mips.ld
module.c
module.h
monitor.c char: rename qemu_chr_get_msgfd() -> qemu_chr_fe_get_msgfd() 2011-08-22 10:17:44 -05:00
monitor.h
nbd.c
nbd.h
net.c
net.h
notify.c
notify.h
os-posix.c
os-win32.c w32: Fix format string regression 2011-08-21 15:33:33 +00:00
osdep.c
osdep.h
oslib-posix.c
oslib-win32.c
path.c
pci-ids.txt
pflib.c
pflib.h
poison.h
posix-aio-compat.c
ppc-dis.c
ppc.ld
ppc64.ld
qapi-schema-guest.json
qapi-schema-test.json
qbool.c
qbool.h
qdict-test-data.txt
qdict.c
qdict.h
qemu-aio.h
qemu-barrier.h
qemu-char.c char: remove qemu_chr_send_event() 2011-08-22 10:17:44 -05:00
qemu-char.h char: document the functions that will be the public interface 2011-08-22 10:17:44 -05:00
qemu-common.h
qemu-config.c
qemu-config.h
qemu-coroutine-int.h
qemu-coroutine-lock.c
qemu-coroutine.c
qemu-coroutine.h
qemu-doc.texi
qemu-error.c
qemu-error.h
qemu-ga.c guest agent: remove g_strcmp0 usage 2011-08-21 18:27:34 -05:00
qemu-img-cmds.hx
qemu-img.c
qemu-img.texi
qemu-io.c
qemu-lock.h
qemu-log.h
qemu-nbd.c
qemu-nbd.texi
qemu-objects.h
qemu-option.c
qemu-option.h
qemu-options.h
qemu-options.hx
qemu-os-posix.h
qemu-os-win32.h
qemu-progress.c
qemu-queue.h
qemu-sockets.c
qemu-tech.texi
qemu-thread-posix.c
qemu-thread-posix.h
qemu-thread-win32.c
qemu-thread-win32.h
qemu-thread.h
qemu-timer-common.c
qemu-timer.c
qemu-timer.h
qemu-tool.c
qemu-x509.h
qemu.sasl
qemu_socket.h
qerror.c
qerror.h
qfloat.c
qfloat.h
qint.c
qint.h
qjson.c
qjson.h
qlist.c
qlist.h
qmp-commands.hx
qobject.h
qstring.c
qstring.h
range.h
readline.c
readline.h
README
rules.mak Improvements to libtool support. 2011-08-22 10:20:10 -05:00
rwhandler.c
rwhandler.h
s390-dis.c
s390.ld
savevm.c
sh4-dis.c
simpletrace.c
simpletrace.h
softmmu-semi.h
softmmu_defs.h
softmmu_exec.h
softmmu_header.h
softmmu_template.h
sparc-dis.c
sparc.ld
sparc64.ld
spice-qemu-char.c char: rename qemu_chr_can_read() -> qemu_chr_be_can_read() 2011-08-22 10:17:16 -05:00
sysemu.h
targphys.h
tcg-runtime.c
test-coroutine.c
test-qmp-commands.c
test-visitor.c
thunk.c
thunk.h
TODO
trace-events escc: replace DPRINTFs with tracepoints 2011-08-21 20:02:02 +00:00
translate-all.c
uboot_image.h
usb-bsd.c
usb-linux.c
usb-redir.c char: rename qemu_chr_close() -> qemu_chr_delete() 2011-08-22 10:17:43 -05:00
usb-stub.c
user-exec.c
VERSION
version.rc
vgafont.h
vl.c char: qemu_chr_open_opts() -> qemu_chr_new_from_opts() 2011-08-22 10:17:43 -05:00
x86_64.ld
xen-all.c
xen-mapcache.c
xen-mapcache.h
xen-stub.c

Read the documentation in qemu-doc.html.

Fabrice Bellard.