From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-7.3 required=3.0 tests=BAYES_00, HEADER_FROM_DIFFERENT_DOMAINS,HTML_MESSAGE,INCLUDES_PATCH,MAILING_LIST_MULTI, NICE_REPLY_A,SPF_HELO_NONE,SPF_PASS,USER_AGENT_SANE_1 autolearn=no autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id C82CFC433ED for ; Tue, 4 May 2021 14:46:38 +0000 (UTC) Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id EF01B60241 for ; Tue, 4 May 2021 14:46:37 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org EF01B60241 Authentication-Results: mail.kernel.org; dmarc=none (p=none dis=none) header.from=eldorado.org.br Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org Received: from localhost ([::1]:34346 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1ldwJo-0004c5-IL for qemu-devel@archiver.kernel.org; Tue, 04 May 2021 10:46:36 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:60500) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1ldwHC-0003ml-Md; Tue, 04 May 2021 10:43:54 -0400 Received: from [201.28.113.2] (port=50705 helo=outlook.eldorado.org.br) by eggs.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1ldwH9-0001im-VB; Tue, 04 May 2021 10:43:54 -0400 Received: from power9a ([10.10.71.235]) by outlook.eldorado.org.br with Microsoft SMTPSVC(8.5.9600.16384); Tue, 4 May 2021 11:43:47 -0300 Received: from [127.0.0.1] (unknown [10.10.71.235]) by power9a (Postfix) with ESMTPS id A839F8012B4; Tue, 4 May 2021 11:43:47 -0300 (-03) Subject: Re: [RFC PATCH v2 0/2] hw/ppc: code motion to compile without TCG To: Fabiano Rosas , "Lucas Mateus Castro (alqotel)" , qemu-devel@nongnu.org, qemu-ppc@nongnu.org References: <20210430184047.81653-1-lucas.araujo@eldorado.org.br> <87sg331mso.fsf@linux.ibm.com> From: Bruno Piazera Larsen Message-ID: <42879cce-dde6-144c-59b5-43a022f24100@eldorado.org.br> Date: Tue, 4 May 2021 11:43:47 -0300 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:78.0) Gecko/20100101 Thunderbird/78.7.1 MIME-Version: 1.0 In-Reply-To: <87sg331mso.fsf@linux.ibm.com> Content-Type: multipart/alternative; boundary="------------579B96839BA69B0A76DCBB53" Content-Language: en-US X-OriginalArrivalTime: 04 May 2021 14:43:47.0953 (UTC) FILETIME=[E4243E10:01D740F3] X-Host-Lookup-Failed: Reverse DNS lookup failed for 201.28.113.2 (failed) Received-SPF: pass client-ip=201.28.113.2; envelope-from=bruno.larsen@eldorado.org.br; helo=outlook.eldorado.org.br X-Spam_score_int: -10 X-Spam_score: -1.1 X-Spam_bar: - X-Spam_report: (-1.1 / 5.0 requ) BAYES_00=-1.9, HTML_MESSAGE=0.001, NICE_REPLY_A=-0.001, RDNS_NONE=0.793, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=no autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: david@gibson.dropbear.id.au Errors-To: qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org Sender: "Qemu-devel" This is a multi-part message in MIME format. --------------579B96839BA69B0A76DCBB53 Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 8bit On 03/05/2021 19:21, Fabiano Rosas wrote: > "Lucas Mateus Castro (alqotel)" writes: > >> After the feedback from v1 I reworked the patch with suggested ideas and >> this version has less duplicated code and is overall simpler. >> >> This patch series is still a WIP, there are still 2 main problems I am >> trying to solve, I'll mention them in their respective patches. >> >> The aim of these patches is to progress toward enabling disable-tcg on >> PPC by solving errors in hw/ppc with that option. >> >> As a WIP comments are welcome. >> >> Lucas Mateus Castro (alqotel) (2): >> target/ppc: Moved functions out of mmu-hash64 >> hw/ppc: Moved TCG code to spapr_hcall_tcg >> >> hw/ppc/meson.build | 3 + >> hw/ppc/spapr.c | 1 + >> hw/ppc/spapr_caps.c | 1 + >> hw/ppc/spapr_cpu_core.c | 1 + >> hw/ppc/spapr_hcall.c | 301 ++-------------------------------- >> hw/ppc/spapr_hcall_tcg.c | 343 +++++++++++++++++++++++++++++++++++++++ >> hw/ppc/spapr_rtas.c | 1 + >> target/ppc/meson.build | 1 + >> target/ppc/mmu-hash64.c | 81 +-------- >> target/ppc/mmu-hash64.h | 6 - >> target/ppc/mmu-misc.c | 86 ++++++++++ >> target/ppc/mmu-misc.h | 22 +++ >> 12 files changed, 478 insertions(+), 369 deletions(-) >> create mode 100644 hw/ppc/spapr_hcall_tcg.c >> create mode 100644 target/ppc/mmu-misc.c >> create mode 100644 target/ppc/mmu-misc.h > This is the list of hypercalls registered with spapr_register_hypercall > and whether they are implemented by KVM HV, KVM PR or none. I also list > whether the KVM hcall uses the QEMU implementation as a fallback. Maybe > it will be helpful to this discussion. > > (This is from just looking at the code, so take it with a grain of salt) > > H_ADD_LOGICAL_LAN_BUFFER - not impl. by KVM > H_CHANGE_LOGICAL_LAN_MAC - not impl. by KVM > H_ENABLE_CRQ - not impl. by KVM > H_FREE_CRQ - not impl. by KVM > H_FREE_LOGICAL_LAN - not impl. by KVM > H_GET_CPU_CHARACTERISTICS - not impl. by KVM > H_GET_TERM_CHAR - not impl. by KVM > H_HOME_NODE_ASSOCIATIVITY - not impl. by KVM > H_INT_ESB - not impl. by KVM > H_INT_GET_QUEUE_INFO - not impl. by KVM > H_INT_GET_SOURCE_CONFIG - not impl. by KVM > H_INT_GET_SOURCE_INFO - not impl. by KVM > H_INT_RESET - not impl. by KVM > H_INT_SET_QUEUE_CONFIG - not impl. by KVM > H_INT_SET_SOURCE_CONFIG - not impl. by KVM > H_INT_SYNC - not impl. by KVM > H_JOIN - not impl. by KVM > H_LOGICAL_CACHE_LOAD - not impl. by KVM > H_LOGICAL_CACHE_STORE - not impl. by KVM > H_LOGICAL_DCBF - not impl. by KVM > H_LOGICAL_ICBI - not impl. by KVM > H_MULTICAST_CTRL - not impl. by KVM > H_PUT_TERM_CHAR - not impl. by KVM > H_REGISTER_LOGICAL_LAN - not impl. by KVM > H_REGISTER_PROC_TBL - not impl. by KVM > H_REG_CRQ - not impl. by KVM > H_RESIZE_HPT_COMMIT - not impl. by KVM > H_RESIZE_HPT_PREPARE - not impl. by KVM > H_SCM_BIND_MEM - not impl. by KVM > H_SCM_READ_METADATA - not impl. by KVM > H_SCM_UNBIND_ALL - not impl. by KVM > H_SCM_WRITE_METADATA - not impl. by KVM > H_SEND_CRQ - not impl. by KVM > H_SEND_LOGICAL_LAN - not impl. by KVM > H_SET_SPRG0 - not impl. by KVM > H_SIGNAL_SYS_RESET - not impl. by KVM > H_VIO_SIGNAL - not impl. by KVM > > H_CAS - not impl. by KVM | called by SLOF only > H_LOGICAL_MEMOP - not impl. by KVM | called by SLOF only > H_TPM_COMM - not impl. by KVM | called by UV only > H_UPDATE_DT - not impl. by KVM | called by SLOF only > > H_INT_GET_OS_REPORTING_LINE - not impl. by KVM | not called by linux/SLOF/UV > H_INT_GET_QUEUE_CONFIG - not impl. by KVM | not called by linux/SLOF/UV > H_INT_SET_OS_REPORTING_LINE - not impl. by KVM | not called by linux/SLOF/UV > H_SCM_UNBIND_MEM - not impl. by KVM | not called by linux/SLOF/UV > > H_GET_TCE - HV | not impl. by PR | QEMU fallback > H_SET_MODE - HV | not impl. by PR | QEMU fallback > H_CONFER - HV | not impl. by PR > H_PAGE_INIT - HV | not impl. by PR > H_PROD - HV | not impl. by PR > H_RANDOM - HV | not impl. by PR > H_READ - HV | not impl. by PR > H_REGISTER_VPA - HV | not impl. by PR > H_SET_DABR - HV | not impl. by PR > H_SET_XDABR - HV | not impl. by PR > > H_CPPR - HV | PR | QEMU fallback > H_EOI - HV | PR | QEMU fallback > H_IPI - HV | PR | QEMU fallback > H_IPOLL - HV | PR | QEMU fallback > H_LOGICAL_CI_LOAD - HV | PR | QEMU fallback > H_LOGICAL_CI_STORE - HV | PR | QEMU fallback > H_PUT_TCE - HV | PR | QEMU fallback > H_PUT_TCE_INDIRECT - HV | PR | QEMU fallback > H_RTAS - HV | PR | QEMU fallback > H_STUFF_TCE - HV | PR | QEMU fallback > H_XIRR - HV | PR | QEMU fallback > H_XIRR_X - HV | PR | QEMU fallback > > H_BULK_REMOVE - HV | PR > H_CEDE - HV | PR > H_ENTER - HV | PR > H_PROTECT - HV | PR > H_REMOVE - HV | PR > > H_CLEAN_SLB - never called/implemented, added along with H_REGISTER_PROC_TBL > H_INVALIDATE_PID - never called/implemented, added along with H_REGISTER_PROC_TBL > > PS: we could perhaps use this information to annotate > qemu/include/spapr.h. I can send a patch if people find it useful. That would be very good, I think. I'm always in favor of more documentation -- Bruno Piazera Larsen Instituto de Pesquisas ELDORADO Departamento Computação Embarcada Analista de Software Trainee Aviso Legal - Disclaimer --------------579B96839BA69B0A76DCBB53 Content-Type: text/html; charset=utf-8 Content-Transfer-Encoding: 8bit


On 03/05/2021 19:21, Fabiano Rosas wrote:
"Lucas Mateus Castro (alqotel)" <lucas.araujo@eldorado.org.br> writes:

After the feedback from v1 I reworked the patch with suggested ideas and
this version has less duplicated code and is overall simpler.

This patch series is still a WIP, there are still 2 main problems I am
trying to solve, I'll mention them in their respective patches.

The aim of these patches is to progress toward enabling disable-tcg on
PPC by solving errors in hw/ppc with that option.

As a WIP comments are welcome.

Lucas Mateus Castro (alqotel) (2):
  target/ppc: Moved functions out of mmu-hash64
  hw/ppc: Moved TCG code to spapr_hcall_tcg

 hw/ppc/meson.build       |   3 +
 hw/ppc/spapr.c           |   1 +
 hw/ppc/spapr_caps.c      |   1 +
 hw/ppc/spapr_cpu_core.c  |   1 +
 hw/ppc/spapr_hcall.c     | 301 ++--------------------------------
 hw/ppc/spapr_hcall_tcg.c | 343 +++++++++++++++++++++++++++++++++++++++
 hw/ppc/spapr_rtas.c      |   1 +
 target/ppc/meson.build   |   1 +
 target/ppc/mmu-hash64.c  |  81 +--------
 target/ppc/mmu-hash64.h  |   6 -
 target/ppc/mmu-misc.c    |  86 ++++++++++
 target/ppc/mmu-misc.h    |  22 +++
 12 files changed, 478 insertions(+), 369 deletions(-)
 create mode 100644 hw/ppc/spapr_hcall_tcg.c
 create mode 100644 target/ppc/mmu-misc.c
 create mode 100644 target/ppc/mmu-misc.h
This is the list of hypercalls registered with spapr_register_hypercall
and whether they are implemented by KVM HV, KVM PR or none. I also list
whether the KVM hcall uses the QEMU implementation as a fallback. Maybe
it will be helpful to this discussion.

(This is from just looking at the code, so take it with a grain of salt)

H_ADD_LOGICAL_LAN_BUFFER  - not impl. by KVM
H_CHANGE_LOGICAL_LAN_MAC  - not impl. by KVM
H_ENABLE_CRQ              - not impl. by KVM
H_FREE_CRQ                - not impl. by KVM
H_FREE_LOGICAL_LAN        - not impl. by KVM
H_GET_CPU_CHARACTERISTICS - not impl. by KVM
H_GET_TERM_CHAR           - not impl. by KVM
H_HOME_NODE_ASSOCIATIVITY - not impl. by KVM
H_INT_ESB                 - not impl. by KVM
H_INT_GET_QUEUE_INFO      - not impl. by KVM
H_INT_GET_SOURCE_CONFIG   - not impl. by KVM
H_INT_GET_SOURCE_INFO     - not impl. by KVM
H_INT_RESET               - not impl. by KVM
H_INT_SET_QUEUE_CONFIG    - not impl. by KVM
H_INT_SET_SOURCE_CONFIG   - not impl. by KVM
H_INT_SYNC                - not impl. by KVM
H_JOIN                    - not impl. by KVM
H_LOGICAL_CACHE_LOAD      - not impl. by KVM
H_LOGICAL_CACHE_STORE     - not impl. by KVM
H_LOGICAL_DCBF            - not impl. by KVM
H_LOGICAL_ICBI            - not impl. by KVM
H_MULTICAST_CTRL          - not impl. by KVM
H_PUT_TERM_CHAR           - not impl. by KVM
H_REGISTER_LOGICAL_LAN    - not impl. by KVM
H_REGISTER_PROC_TBL       - not impl. by KVM
H_REG_CRQ                 - not impl. by KVM
H_RESIZE_HPT_COMMIT       - not impl. by KVM
H_RESIZE_HPT_PREPARE      - not impl. by KVM
H_SCM_BIND_MEM            - not impl. by KVM
H_SCM_READ_METADATA       - not impl. by KVM
H_SCM_UNBIND_ALL          - not impl. by KVM
H_SCM_WRITE_METADATA      - not impl. by KVM
H_SEND_CRQ                - not impl. by KVM
H_SEND_LOGICAL_LAN        - not impl. by KVM
H_SET_SPRG0               - not impl. by KVM
H_SIGNAL_SYS_RESET        - not impl. by KVM
H_VIO_SIGNAL              - not impl. by KVM

H_CAS                     - not impl. by KVM | called by SLOF only
H_LOGICAL_MEMOP           - not impl. by KVM | called by SLOF only
H_TPM_COMM                - not impl. by KVM | called by UV only
H_UPDATE_DT               - not impl. by KVM | called by SLOF only

H_INT_GET_OS_REPORTING_LINE - not impl. by KVM | not called by linux/SLOF/UV
H_INT_GET_QUEUE_CONFIG      - not impl. by KVM | not called by linux/SLOF/UV
H_INT_SET_OS_REPORTING_LINE - not impl. by KVM | not called by linux/SLOF/UV
H_SCM_UNBIND_MEM            - not impl. by KVM | not called by linux/SLOF/UV

H_GET_TCE      - HV | not impl. by PR | QEMU fallback
H_SET_MODE     - HV | not impl. by PR | QEMU fallback
H_CONFER       - HV | not impl. by PR
H_PAGE_INIT    - HV | not impl. by PR
H_PROD         - HV | not impl. by PR
H_RANDOM       - HV | not impl. by PR
H_READ         - HV | not impl. by PR
H_REGISTER_VPA - HV | not impl. by PR
H_SET_DABR     - HV | not impl. by PR
H_SET_XDABR    - HV | not impl. by PR

H_CPPR             - HV | PR | QEMU fallback
H_EOI              - HV | PR | QEMU fallback
H_IPI              - HV | PR | QEMU fallback
H_IPOLL            - HV | PR | QEMU fallback
H_LOGICAL_CI_LOAD  - HV | PR | QEMU fallback
H_LOGICAL_CI_STORE - HV | PR | QEMU fallback
H_PUT_TCE          - HV | PR | QEMU fallback
H_PUT_TCE_INDIRECT - HV | PR | QEMU fallback
H_RTAS             - HV | PR | QEMU fallback
H_STUFF_TCE        - HV | PR | QEMU fallback
H_XIRR             - HV | PR | QEMU fallback
H_XIRR_X           - HV | PR | QEMU fallback

H_BULK_REMOVE      - HV | PR
H_CEDE             - HV | PR
H_ENTER            - HV | PR
H_PROTECT          - HV | PR
H_REMOVE           - HV | PR

H_CLEAN_SLB      - never called/implemented, added along with H_REGISTER_PROC_TBL
H_INVALIDATE_PID - never called/implemented, added along with H_REGISTER_PROC_TBL

PS: we could perhaps use this information to annotate
qemu/include/spapr.h. I can send a patch if people find it useful.
That would be very good, I think. I'm always in favor of more documentation
--
Bruno Piazera Larsen
Departamento Computação Embarcada
Analista de Software Trainee
--------------579B96839BA69B0A76DCBB53--