hc
2024-05-10 37f49e37ab4cb5d0bc4c60eb5c6d4dd57db767bb
kernel/arch/powerpc/include/uapi/asm/kvm.h
....@@ -463,10 +463,12 @@
463463 #define KVM_PPC_CPU_CHAR_BR_HINT_HONOURED (1ULL << 58)
464464 #define KVM_PPC_CPU_CHAR_MTTRIG_THR_RECONF (1ULL << 57)
465465 #define KVM_PPC_CPU_CHAR_COUNT_CACHE_DIS (1ULL << 56)
466
+#define KVM_PPC_CPU_CHAR_BCCTR_FLUSH_ASSIST (1ull << 54)
466467
467468 #define KVM_PPC_CPU_BEHAV_FAVOUR_SECURITY (1ULL << 63)
468469 #define KVM_PPC_CPU_BEHAV_L1D_FLUSH_PR (1ULL << 62)
469470 #define KVM_PPC_CPU_BEHAV_BNDS_CHK_SPEC_BAR (1ULL << 61)
471
+#define KVM_PPC_CPU_BEHAV_FLUSH_COUNT_CACHE (1ull << 58)
470472
471473 /* Per-vcpu XICS interrupt controller state */
472474 #define KVM_REG_PPC_ICP_STATE (KVM_REG_PPC | KVM_REG_SIZE_U64 | 0x8c)
....@@ -479,6 +481,8 @@
479481 #define KVM_REG_PPC_ICP_MFRR_MASK 0xff
480482 #define KVM_REG_PPC_ICP_PPRI_SHIFT 16 /* pending irq priority */
481483 #define KVM_REG_PPC_ICP_PPRI_MASK 0xff
484
+
485
+#define KVM_REG_PPC_VP_STATE (KVM_REG_PPC | KVM_REG_SIZE_U128 | 0x8d)
482486
483487 /* Device control API: PPC-specific devices */
484488 #define KVM_DEV_MPIC_GRP_MISC 1
....@@ -634,6 +638,12 @@
634638
635639 #define KVM_REG_PPC_DEC_EXPIRY (KVM_REG_PPC | KVM_REG_SIZE_U64 | 0xbe)
636640 #define KVM_REG_PPC_ONLINE (KVM_REG_PPC | KVM_REG_SIZE_U32 | 0xbf)
641
+#define KVM_REG_PPC_PTCR (KVM_REG_PPC | KVM_REG_SIZE_U64 | 0xc0)
642
+
643
+/* POWER10 registers */
644
+#define KVM_REG_PPC_MMCR3 (KVM_REG_PPC | KVM_REG_SIZE_U64 | 0xc1)
645
+#define KVM_REG_PPC_SIER2 (KVM_REG_PPC | KVM_REG_SIZE_U64 | 0xc2)
646
+#define KVM_REG_PPC_SIER3 (KVM_REG_PPC | KVM_REG_SIZE_U64 | 0xc3)
637647
638648 /* Transactional Memory checkpointed state:
639649 * This is all GPRs, all VSX regs and a subset of SPRs
....@@ -662,6 +672,8 @@
662672
663673 /* PPC64 eXternal Interrupt Controller Specification */
664674 #define KVM_DEV_XICS_GRP_SOURCES 1 /* 64-bit source attributes */
675
+#define KVM_DEV_XICS_GRP_CTRL 2
676
+#define KVM_DEV_XICS_NR_SERVERS 1
665677
666678 /* Layout of 64-bit source attribute values */
667679 #define KVM_XICS_DESTINATION_SHIFT 0
....@@ -674,4 +686,49 @@
674686 #define KVM_XICS_PRESENTED (1ULL << 43)
675687 #define KVM_XICS_QUEUED (1ULL << 44)
676688
689
+/* POWER9 XIVE Native Interrupt Controller */
690
+#define KVM_DEV_XIVE_GRP_CTRL 1
691
+#define KVM_DEV_XIVE_RESET 1
692
+#define KVM_DEV_XIVE_EQ_SYNC 2
693
+#define KVM_DEV_XIVE_NR_SERVERS 3
694
+#define KVM_DEV_XIVE_GRP_SOURCE 2 /* 64-bit source identifier */
695
+#define KVM_DEV_XIVE_GRP_SOURCE_CONFIG 3 /* 64-bit source identifier */
696
+#define KVM_DEV_XIVE_GRP_EQ_CONFIG 4 /* 64-bit EQ identifier */
697
+#define KVM_DEV_XIVE_GRP_SOURCE_SYNC 5 /* 64-bit source identifier */
698
+
699
+/* Layout of 64-bit XIVE source attribute values */
700
+#define KVM_XIVE_LEVEL_SENSITIVE (1ULL << 0)
701
+#define KVM_XIVE_LEVEL_ASSERTED (1ULL << 1)
702
+
703
+/* Layout of 64-bit XIVE source configuration attribute values */
704
+#define KVM_XIVE_SOURCE_PRIORITY_SHIFT 0
705
+#define KVM_XIVE_SOURCE_PRIORITY_MASK 0x7
706
+#define KVM_XIVE_SOURCE_SERVER_SHIFT 3
707
+#define KVM_XIVE_SOURCE_SERVER_MASK 0xfffffff8ULL
708
+#define KVM_XIVE_SOURCE_MASKED_SHIFT 32
709
+#define KVM_XIVE_SOURCE_MASKED_MASK 0x100000000ULL
710
+#define KVM_XIVE_SOURCE_EISN_SHIFT 33
711
+#define KVM_XIVE_SOURCE_EISN_MASK 0xfffffffe00000000ULL
712
+
713
+/* Layout of 64-bit EQ identifier */
714
+#define KVM_XIVE_EQ_PRIORITY_SHIFT 0
715
+#define KVM_XIVE_EQ_PRIORITY_MASK 0x7
716
+#define KVM_XIVE_EQ_SERVER_SHIFT 3
717
+#define KVM_XIVE_EQ_SERVER_MASK 0xfffffff8ULL
718
+
719
+/* Layout of EQ configuration values (64 bytes) */
720
+struct kvm_ppc_xive_eq {
721
+ __u32 flags;
722
+ __u32 qshift;
723
+ __u64 qaddr;
724
+ __u32 qtoggle;
725
+ __u32 qindex;
726
+ __u8 pad[40];
727
+};
728
+
729
+#define KVM_XIVE_EQ_ALWAYS_NOTIFY 0x00000001
730
+
731
+#define KVM_XIVE_TIMA_PAGE_OFFSET 0
732
+#define KVM_XIVE_ESB_PAGE_OFFSET 4
733
+
677734 #endif /* __LINUX_KVM_POWERPC_H */