qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
From: David Gibson <david@gibson.dropbear.id.au>
To: agraf@suse.de
Cc: qemu-devel@nongnu.org
Subject: [Qemu-devel] [PATCH 2/3] pseries: Add device tree properties for VMX/VSX and DFP under kvm
Date: Fri, 30 Sep 2011 17:50:39 +1000	[thread overview]
Message-ID: <1317369040-30437-3-git-send-email-david@gibson.dropbear.id.au> (raw)
In-Reply-To: <1317369040-30437-1-git-send-email-david@gibson.dropbear.id.au>

Sufficiently recent PAPR specifications define properties "ibm,vmx"
and "ibm,dfp" on the CPU node which advertise whether the VMX vector
extensions (or the later VSX version) and/or the Decimal Floating
Point operations from IBM's recent POWER CPUs are available.

Currently we do not put these in the guest device tree and the guest
kernel will consequently assume they are not available.  This is good,
because they are not supported under TCG.  VMX is similar enough to
Altivec that it might be trivial to support, but VSX and DFP would
both require significant work to support in TCG.

However, when running under kvm on a host which supports these
instructions, there's no reason not to let the guest use them.  This
patch, therefore, checks for the relevant support on the host CPU
and, if present, advertises them to the guest as well.

Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
---
 hw/spapr.c |   11 +++++++++--
 1 files changed, 9 insertions(+), 2 deletions(-)

diff --git a/hw/spapr.c b/hw/spapr.c
index ea5690e..8089d83 100644
--- a/hw/spapr.c
+++ b/hw/spapr.c
@@ -187,6 +187,8 @@ static void *spapr_create_fdt_skel(const char *cpu_model,
         uint32_t tbfreq = kvm_enabled() ? kvmppc_get_tbfreq() : TIMEBASE_FREQ;
         uint32_t cpufreq = kvm_enabled() ?
             kvmppc_read_int_cpu_dt("clock-frequency") : 1000000000;
+        uint32_t vmx = kvm_enabled() ? kvmppc_read_int_cpu_dt("ibm,vmx") : 0;
+        uint32_t dfp = kvm_enabled() ? kvmppc_read_int_cpu_dt("ibm,dfp") : 0;
 
         if ((index % smt) != 0) {
             continue;
@@ -234,12 +236,17 @@ static void *spapr_create_fdt_skel(const char *cpu_model,
                                segs, sizeof(segs))));
         }
 
-        /* Advertise VMX/VSX (vector extensions) if available */
+        /* Advertise VMX/VSX (vector extensions) if available
+         *   0 / no property == no vector extensions
+         *   1               == VMX / Altivec available
+         *   2               == VSX available */
         if (vmx) {
             _FDT((fdt_property_cell(fdt, "ibm,vmx", vmx)));
         }
 
-        /* Advertise DFP (Decimal Floating Point) if available */
+        /* Advertise DFP (Decimal Floating Point) if available
+         *   0 / no property == no DFP
+         *   1               == DFP available */
         if (dfp) {
             _FDT((fdt_property_cell(fdt, "ibm,dfp", dfp)));
         }
-- 
1.7.6.3

  parent reply	other threads:[~2011-09-30  7:50 UTC|newest]

Thread overview: 9+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2011-09-30  7:50 [Qemu-devel] [0/3] pseries: RFC: Advertise host CPU capabilties to guest David Gibson
2011-09-30  7:50 ` [Qemu-devel] [PATCH 1/3] ppc: Generalize the kvmppc_get_clockfreq() function David Gibson
2011-09-30 18:06   ` Alexander Graf
2011-10-11  4:29     ` David Gibson
2011-09-30  7:50 ` David Gibson [this message]
2011-09-30  7:50 ` [Qemu-devel] [PATCH 3/3] pseries: Correctly create ibm, segment-page-sizes property David Gibson
2011-10-07  7:20   ` Alexander Graf
2011-09-30  8:20 ` [Qemu-devel] [0/3] pseries: RFC: Advertise host CPU capabilties to guest Alexander Graf
2011-09-30  9:00   ` David Gibson

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=1317369040-30437-3-git-send-email-david@gibson.dropbear.id.au \
    --to=david@gibson.dropbear.id.au \
    --cc=agraf@suse.de \
    --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).