target/ppc: Implement H_REGISTER_PROCESS_TABLE H_CALL
commitb4db54132ffeadafa9516cc553ba9548e42d42ad
authorSuraj Jitindar Singh <sjitindarsingh@gmail.com>
Sun, 19 Mar 2017 23:46:46 +0000 (20 10:46 +1100)
committerDavid Gibson <david@gibson.dropbear.id.au>
Wed, 26 Apr 2017 02:00:41 +0000 (26 12:00 +1000)
tree544fb256ef584f64751b16cb9d4a929971b434ce
parentd77a98b01575bbbeff87a83f6e7f5ca0ce3aefdb
target/ppc: Implement H_REGISTER_PROCESS_TABLE H_CALL

The H_REGISTER_PROCESS_TABLE H_CALL is used by a guest to indicate to the
hypervisor where in memory its process table is and how translation should
be performed using this process table.

Provide the implementation of this H_CALL for a guest.

We first check for invalid flags, then parse the flags to determine the
operation, and then check the other parameters for valid values based on
the operation (register new table/deregister table/maintain registration).
The process table is then stored in the appropriate location and registered
with the hypervisor (if running under KVM), and the LPCR_[UPRT/GTSE] bits
are updated as required.

Signed-off-by: Suraj Jitindar Singh <sjitindarsingh@gmail.com>
Signed-off-by: Sam Bobroff <sam.bobroff@au1.ibm.com>
[dwg: Correct missing prototype and uninitialized variable]
Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
hw/ppc/spapr.c
hw/ppc/spapr_hcall.c
include/hw/ppc/spapr.h
target/ppc/kvm.c
target/ppc/kvm_ppc.h