All of lore.kernel.org
 help / color / mirror / Atom feed
From: Prerna Saxena <prerna@linux.vnet.ibm.com>
To: "Andreas Färber" <afaerber@suse.de>
Cc: qemu-ppc <qemu-ppc@nongnu.org>,
	qemu-devel@nongnu.org, Alexander Graf <agraf@suse.de>
Subject: Re: [Qemu-devel] [PATCH 18/19] target-ppc: Enhance the CPU node labels for the guest device tree for pseries.
Date: Wed, 10 Jul 2013 12:08:55 +0530	[thread overview]
Message-ID: <51DD017F.8010304@linux.vnet.ibm.com> (raw)
In-Reply-To: <51DAECA7.2090405@suse.de>

Hi Andreas,
Thanks for the response.

On 07/08/2013 10:15 PM, Andreas Färber wrote:
> Hi,
> 
> Am 08.07.2013 17:49, schrieb Prerna Saxena:
>> On 07/08/2013 02:32 PM, Andreas Färber wrote:
>>> -----BEGIN PGP SIGNED MESSAGE-----
>>> Hash: SHA1
>>>
>>> Am 08.07.2013 03:09, schrieb David Gibson:
>>>> On Sat, Jul 06, 2013 at 11:54:15PM +1000, Alexey Kardashevskiy
>>>> wrote:
>>>>> @@ -1342,6 +1346,13 @@ static void
>>>>> ppc_spapr_init(QEMUMachineInitArgs *args) 
>>>>> register_savevm_live(NULL, "spapr/htab", -1, 1, 
>>>>> &savevm_htab_handlers, spapr);
>>>>>
>>>>> +    /* Ensure that cpu_model is correctly reflected for a KVM
>>>>> guest */ +    if (kvm_enabled() && !strcmp(cpu_model, "host")) { 
>>>>> +        asm ("mfpvr %0" +            : "=r"(pvr)); +
>>>>> cpu_model = ppc_cpu_alias_by_pvr(pvr);
>>>>
>>>> This needs to be protected by an ifdef CONFIG_KVM or similar.  If
>>>> the compiler optimization level is turned down, so that it doesn't 
>>>> recognize that the kvm_enabled() is always false, then this could 
>>>> attempt to compile the ppc asm instructions on an x86 (or
>>>> whatever) host.
>>>
>>> This hunk can be completely replaced by QOM mechanisms - just didn't
>>> get to replying yet...
>>
>> Sorry I already sent out a v2, and only then saw your message. Could you
>> pls explain how I could use QOM to replace this code block ?
> 
> Well, in short the thing is it has not much to do with KVM. The
> KVM-specific host-powerpc64-cpu type is derived from the one you're
> looking for and thus you can use object_class_get_parent() to obtain the
> parent type and look at its name - stripping "-" TYPE_POWERPC_CPU from
> it should be much more efficient but will give you the detailed name
> including revision. I was planning to propose an alternative patch for that.

This is what my patch does :-)

+const char *ppc_cpu_alias_by_pvr(uint32_t pvr)
+{
+    int i;
+    const char *cpu_alias;
+    char *offset, *model;
+
+    cpu_alias  = object_class_get_name(OBJECT_CLASS
+                            (ppc_cpu_class_by_pvr(pvr)));
+ ....[snip]

> 
> Replacing a concrete model name with its simpler alias is a secondary
> issue (separate patch) that is not specific to KVM or -cpu host. Compare
> -cpu POWER8_v1.0 printing .../POWER8_v1.0@0/... presumably.
> 

Agree that this is not specific to KVM. That is the reason I have set it
in a separate function, which can be called otherwise as well.

Just to clarify your response, you want the function I coded to be split
into 2 different pieces, to cater to the two specific requirements you
mention ? That can be done, but not sure if it is too much code bloat.

> Further, Alex has already applied a patch of his working around the
> alias table being a rather archaic construct, not intended for frequent
> use. Instead of adding even more functions that iterate it, we should
> turn it into a hashtable for efficient lookup.
> 

Can you / Alexander Graf point me to the fix ? I can rework my patch to
consume it ?

> (Note that the cpu_model_str field may contain more than just the model
> name, it is otherwise unused in softmmu and I was therefore preparing a
> patch to ban its use to linux-user solely, so the type name seems the
> most reliable indicator we have and as a bonus no PVR needed for it.)
> 

Hmm, maybe obsoleting PVR check is not such a great idea.
I'm not sure if my earlier email clearly outlined the use-case this
patch was attempting to fix. Here is a detailed explanation :

We will still need PVR based lookups for cases such as the one I have
described. As an illustration, consider running in a KVM environment
where QEMU hasnt been started with a specific CPU type via "-CPU
PPC_MODEL". In this case, we will be required to do a PVR_based lookup
only -- to make sure the guest gets initialized with the same CPU as
host. The notion of _same_cpu_model_ can only be built over a PVR check.

Regards,
-- 
Prerna Saxena

Linux Technology Centre,
IBM Systems and Technology Lab,
Bangalore, India

  reply	other threads:[~2013-07-10  6:44 UTC|newest]

Thread overview: 30+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-07-06 13:53 [Qemu-devel] [PATCH 00/19 v4] spapr: migration, pci, msi, power8 Alexey Kardashevskiy
2013-07-06 13:53 ` [Qemu-devel] [PATCH 01/19] pseries: move interrupt controllers to hw/intc/ Alexey Kardashevskiy
2013-07-06 13:53 ` [Qemu-devel] [PATCH 02/19] pseries: rework XICS Alexey Kardashevskiy
2013-07-06 13:54 ` [Qemu-devel] [PATCH 03/19] savevm: Implement VMS_DIVIDE flag Alexey Kardashevskiy
2013-07-06 13:54 ` [Qemu-devel] [PATCH 04/19] target-ppc: Convert ppc cpu savevm to VMStateDescription Alexey Kardashevskiy
2013-07-06 13:54 ` [Qemu-devel] [PATCH 05/19] pseries: savevm support for XICS interrupt controller Alexey Kardashevskiy
2013-07-06 13:54 ` [Qemu-devel] [PATCH 06/19] pseries: savevm support for VIO devices Alexey Kardashevskiy
2013-07-06 13:54 ` [Qemu-devel] [PATCH 07/19] pseries: savevm support for PAPR VIO logical lan Alexey Kardashevskiy
2013-07-06 13:54 ` [Qemu-devel] [PATCH 08/19] pseries: savevm support for PAPR VIO logical tty Alexey Kardashevskiy
2013-07-06 13:54 ` [Qemu-devel] [PATCH 09/19] pseries: savevm support for PAPR TCE tables Alexey Kardashevskiy
2013-07-06 13:54 ` [Qemu-devel] [PATCH 10/19] pseries: rework PAPR virtual SCSI Alexey Kardashevskiy
2013-07-08 11:57   ` [Qemu-devel] [PATCH v2] " Alexey Kardashevskiy
2013-07-06 13:54 ` [Qemu-devel] [PATCH 11/19] pseries: savevm support for " Alexey Kardashevskiy
2013-07-06 13:54 ` [Qemu-devel] [PATCH 12/19] pseries: savevm support for pseries machine Alexey Kardashevskiy
2013-07-06 13:54 ` [Qemu-devel] [PATCH 13/19] pseries: savevm support for PCI host bridge Alexey Kardashevskiy
2013-07-07 23:33   ` David Gibson
2013-07-06 13:54 ` [Qemu-devel] [PATCH 14/19] target-ppc: Add helper for KVM_PPC_RTAS_DEFINE_TOKEN Alexey Kardashevskiy
2013-07-06 13:54 ` [Qemu-devel] [PATCH 15/19] pseries: Support for in-kernel XICS interrupt controller Alexey Kardashevskiy
2013-07-06 13:54 ` [Qemu-devel] [PATCH 16/19] pseries: savevm support with KVM Alexey Kardashevskiy
2013-07-06 13:54 ` [Qemu-devel] [PATCH 17/19] target-ppc: Add POWER8 v1.0 CPU model Alexey Kardashevskiy
2013-07-06 13:54 ` [Qemu-devel] [PATCH 18/19] target-ppc: Enhance the CPU node labels for the guest device tree for pseries Alexey Kardashevskiy
2013-07-08  1:09   ` David Gibson
2013-07-08  9:02     ` Andreas Färber
2013-07-08 15:49       ` Prerna Saxena
2013-07-08 16:45         ` Andreas Färber
2013-07-10  6:38           ` Prerna Saxena [this message]
2013-07-10  9:11             ` Andreas Färber
2013-07-08 15:45     ` [Qemu-devel] [PATCH v2 " Prerna Saxena
2013-07-06 13:54 ` [Qemu-devel] [PATCH 19/19] spapr-pci: rework MSI/MSIX Alexey Kardashevskiy
2013-07-29 20:24 ` [Qemu-devel] [PATCH 00/19 v4] spapr: migration, pci, msi, power8 Anthony Liguori

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=51DD017F.8010304@linux.vnet.ibm.com \
    --to=prerna@linux.vnet.ibm.com \
    --cc=afaerber@suse.de \
    --cc=agraf@suse.de \
    --cc=qemu-devel@nongnu.org \
    --cc=qemu-ppc@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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.