powerpc/mm/book3s64/radix: Off-load TLB invalidations to host when !GTSE
When platform doesn't support GTSE, let TLB invalidation requests for radix guests be off-loaded to the host using H_RPT_INVALIDATE hcall. [hcall wrapper, error path handling and renames] Signed-off-by: Nicholas Piggin <npiggin@gmail.com> Signed-off-by: Bharata B Rao <bharata@linux.ibm.com> Signed-off-by: Michael Ellerman <mpe@ellerman.id.au> Link: https://lore.kernel.org/r/20200703053608.12884-4-bharata@linux.ibm.com
This commit is contained in:

committed by
Michael Ellerman

parent
b6c8417507
commit
dd3d9aa558
@@ -305,7 +305,8 @@
|
||||
#define H_SCM_UNBIND_ALL 0x3FC
|
||||
#define H_SCM_HEALTH 0x400
|
||||
#define H_SCM_PERFORMANCE_STATS 0x418
|
||||
#define MAX_HCALL_OPCODE H_SCM_PERFORMANCE_STATS
|
||||
#define H_RPT_INVALIDATE 0x448
|
||||
#define MAX_HCALL_OPCODE H_RPT_INVALIDATE
|
||||
|
||||
/* Scope args for H_SCM_UNBIND_ALL */
|
||||
#define H_UNBIND_SCOPE_ALL (0x1)
|
||||
@@ -389,6 +390,37 @@
|
||||
#define PROC_TABLE_RADIX 0x04
|
||||
#define PROC_TABLE_GTSE 0x01
|
||||
|
||||
/*
|
||||
* Defines for
|
||||
* H_RPT_INVALIDATE - Invalidate RPT translation lookaside information.
|
||||
*/
|
||||
|
||||
/* Type of translation to invalidate (type) */
|
||||
#define H_RPTI_TYPE_NESTED 0x0001 /* Invalidate nested guest partition-scope */
|
||||
#define H_RPTI_TYPE_TLB 0x0002 /* Invalidate TLB */
|
||||
#define H_RPTI_TYPE_PWC 0x0004 /* Invalidate Page Walk Cache */
|
||||
/* Invalidate Process Table Entries if H_RPTI_TYPE_NESTED is clear */
|
||||
#define H_RPTI_TYPE_PRT 0x0008
|
||||
/* Invalidate Partition Table Entries if H_RPTI_TYPE_NESTED is set */
|
||||
#define H_RPTI_TYPE_PAT 0x0008
|
||||
#define H_RPTI_TYPE_ALL (H_RPTI_TYPE_TLB | H_RPTI_TYPE_PWC | \
|
||||
H_RPTI_TYPE_PRT)
|
||||
#define H_RPTI_TYPE_NESTED_ALL (H_RPTI_TYPE_TLB | H_RPTI_TYPE_PWC | \
|
||||
H_RPTI_TYPE_PAT)
|
||||
|
||||
/* Invalidation targets (target) */
|
||||
#define H_RPTI_TARGET_CMMU 0x01 /* All virtual processors in the partition */
|
||||
#define H_RPTI_TARGET_CMMU_LOCAL 0x02 /* Current virtual processor */
|
||||
/* All nest/accelerator agents in use by the partition */
|
||||
#define H_RPTI_TARGET_NMMU 0x04
|
||||
|
||||
/* Page size mask (page sizes) */
|
||||
#define H_RPTI_PAGE_4K 0x01
|
||||
#define H_RPTI_PAGE_64K 0x02
|
||||
#define H_RPTI_PAGE_2M 0x04
|
||||
#define H_RPTI_PAGE_1G 0x08
|
||||
#define H_RPTI_PAGE_ALL (-1UL)
|
||||
|
||||
#ifndef __ASSEMBLY__
|
||||
#include <linux/types.h>
|
||||
|
||||
|
Reference in New Issue
Block a user