"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