On Mon, Jan 20, 2020 at 11:49:33AM +0100, Cédric Le Goater wrote:
> Hello,
>
> The Processor Control facility for POWER8 processors and later
> provides a mechanism for the hypervisor to send messages to other
> threads in the system (msgsnd instruction) and cause hypervisor-level
> exceptions.
>
> Privileged non-hypervisor programs can also send messages (msgsndp
> instruction) but are restricted to the threads of the same
> subprocessor and cause privileged-level exceptions. The Directed
> Privileged Doorbell Exception State (DPDES) register reflects the
> state of pending privileged-level doorbell exceptions for all threads
> and can be used to modify that state.
>
> If the MSGP facility is not in the HFSCR, a hypervisor facility
> unavailable exception is generated when these instructions are used or
> when the DPDES register is accessed by the supervisor.
>
> Based on previous work from Suraj Jitindar Singh.
Applied to ppc-for-5.0, thanks.
>
> Thanks,
>
> C.
>
> Changes since v1:
>
> - removed DBELL_TIRTAG_MASK and simplified helpers as QEMU TCG
> doesn't support more than on thread per core
> - simplified book3s_dbell2irq() and renamed it to dbell_type_server()
> - replaced mask LOG_GUEST_ERROR by CPU_LOG_INT to track HV Facility
> errors
>
> Cédric Le Goater (2):
> target/ppc: Add privileged message send facilities
> target/ppc: add support for Hypervisor Facility Unavailable Exception
>
> target/ppc/cpu.h | 6 +++
> target/ppc/helper.h | 4 ++
> target/ppc/excp_helper.c | 79 ++++++++++++++++++++++++++-------
> target/ppc/misc_helper.c | 63 ++++++++++++++++++++++++++
> target/ppc/translate.c | 26 +++++++++++
> target/ppc/translate_init.inc.c | 20 +++++++--
> 6 files changed, 178 insertions(+), 20 deletions(-)
>
--
David Gibson | I'll have my music baroque, and my code
david AT gibson.dropbear.id.au | minimalist, thank you. NOT _the_ _other_
| _way_ _around_!
http://www.ozlabs.org/~dgibson