qemu-commits
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Qemu-commits] [qemu/qemu] c8c14b: target-i386: x86_cpu_get_phys_page_de


From: GitHub
Subject: [Qemu-commits] [qemu/qemu] c8c14b: target-i386: x86_cpu_get_phys_page_debug(): suppor...
Date: Mon, 31 Mar 2014 12:00:05 -0700

  Branch: refs/heads/master
  Home:   https://github.com/qemu/qemu
  Commit: c8c14bcb72e436fb4aff99b4b2b92e44f2e715b5
      
https://github.com/qemu/qemu/commit/c8c14bcb72e436fb4aff99b4b2b92e44f2e715b5
  Author: Luiz Capitulino <address@hidden>
  Date:   2014-03-31 (Mon, 31 Mar 2014)

  Changed paths:
    M target-i386/helper.c

  Log Message:
  -----------
  target-i386: x86_cpu_get_phys_page_debug(): support 1GB page translation

Linux guests, when using more than 4GB of RAM, may end up using 1GB pages
to store (kernel) data. When this happens, we're unable to debug a running
Linux kernel with GDB:

(gdb) p node_data[0]->node_id
Cannot access memory at address 0xffff88013fffd3a0
(gdb)

GDB returns this error because x86_cpu_get_phys_page_debug() doesn't support
translating 1GB pages in IA-32e paging mode and returns an error to GDB.

This commit adds support for 1GB page translation for IA32e paging.

Signed-off-by: Luiz Capitulino <address@hidden>
Reviewed-by: Paolo Bonzini <address@hidden>
Reviewed-by: Jan Kiszka <address@hidden>
Signed-off-by: Andreas Färber <address@hidden>


  Commit: 0d6d1ab4990b6e8c6f24e9b1308801d657d411ad
      
https://github.com/qemu/qemu/commit/0d6d1ab4990b6e8c6f24e9b1308801d657d411ad
  Author: Andreas Färber <address@hidden>
  Date:   2014-03-31 (Mon, 31 Mar 2014)

  Changed paths:
    M include/qom/cpu.h

  Log Message:
  -----------
  cpu: Avoid QOM casts for CPU()

CPU address spaces touching load and store helpers as well as the
movement of (almost) all fields from CPU_COMMON to CPUState have led to
a noticeable increase of CPU() usage in "hot" paths for both TCG and KVM.

While CPU()'s OBJECT_CHECK() might help detect development errors, i.e.
in form of crashes due to QOM vs. non-QOM mismatches rather than QOM
type mismatches, it is not really needed at runtime since mostly used in
CPU-specific paths, coming from a target-specific CPU subtype. If that
pointer is damaged, other errors are highly likely to occur elsewhere
anyway.

Keep the CPU() macro for a consistent developer experience and for
flexibility to exchange its implementation, but turn it into a pure,
unchecked C cast for now.

Compare commit 6e42be7cd10260fd3a006d94f6c870692bf7a2c0.

Reported-by: Laurent Desnogues <address@hidden>
Suggested-by: Paolo Bonzini <address@hidden>
Signed-off-by: Andreas Färber <address@hidden>


  Commit: 7d4d7975e58b66de6a67ecb5aa9656653653a658
      
https://github.com/qemu/qemu/commit/7d4d7975e58b66de6a67ecb5aa9656653653a658
  Author: Peter Maydell <address@hidden>
  Date:   2014-03-31 (Mon, 31 Mar 2014)

  Changed paths:
    M include/qom/cpu.h
    M target-i386/helper.c

  Log Message:
  -----------
  Merge remote-tracking branch 'remotes/afaerber/tags/qom-cpu-for-2.0' into 
staging

QOM CPUState refactorings / X86CPU

* X86CPU IA32e 1GB paging support
* Performance quickfix for CPU() cast macro

# gpg: Signature made Mon 31 Mar 2014 18:33:27 BST using RSA key ID 3E7E013F
# gpg: Good signature from "Andreas Färber <address@hidden>"
# gpg:                 aka "Andreas Färber <address@hidden>"

* remotes/afaerber/tags/qom-cpu-for-2.0:
  cpu: Avoid QOM casts for CPU()
  target-i386: x86_cpu_get_phys_page_debug(): support 1GB page translation

Signed-off-by: Peter Maydell <address@hidden>


Compare: https://github.com/qemu/qemu/compare/8648fcd52a9b...7d4d7975e58b

reply via email to

[Prev in Thread] Current Thread [Next in Thread]