mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2025-01-05 21:35:04 +08:00
powerpc/pseries/svm: Allow IOMMU to work in SVM
H_PUT_TCE_INDIRECT uses a shared page to send up to 512 TCE to a hypervisor in a single hypercall. This does not work for secure VMs as the page needs to be shared or the VM should use H_PUT_TCE instead. This disables H_PUT_TCE_INDIRECT by clearing the FW_FEATURE_PUT_TCE_IND feature bit so SVMs will map TCEs using H_PUT_TCE. This is not a part of init_svm() as it is called too late after FW patching is done and may result in a warning like this: [ 3.727716] Firmware features changed after feature patching! [ 3.727965] WARNING: CPU: 0 PID: 1 at (...)arch/powerpc/lib/feature-fixups.c:466 check_features+0xa4/0xc0 Signed-off-by: Alexey Kardashevskiy <aik@ozlabs.ru> Reviewed-by: Thiago Jung Bauermann <bauerman@linux.ibm.com> Tested-by: Thiago Jung Bauermann <bauerman@linux.ibm.com> Signed-off-by: Michael Ellerman <mpe@ellerman.id.au> Link: https://lore.kernel.org/r/20191216041924.42318-5-aik@ozlabs.ru
This commit is contained in:
parent
17a0364cb0
commit
978bff4e52
@ -22,6 +22,7 @@
|
||||
#include <asm/firmware.h>
|
||||
#include <asm/prom.h>
|
||||
#include <asm/udbg.h>
|
||||
#include <asm/svm.h>
|
||||
|
||||
#include "pseries.h"
|
||||
|
||||
@ -101,6 +102,12 @@ static void __init fw_hypertas_feature_init(const char *hypertas,
|
||||
}
|
||||
}
|
||||
|
||||
if (is_secure_guest() &&
|
||||
(powerpc_firmware_features & FW_FEATURE_PUT_TCE_IND)) {
|
||||
powerpc_firmware_features &= ~FW_FEATURE_PUT_TCE_IND;
|
||||
pr_debug("SVM: disabling PUT_TCE_IND firmware feature\n");
|
||||
}
|
||||
|
||||
pr_debug(" <- fw_hypertas_feature_init()\n");
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user