.. | .. |
---|
463 | 463 | #define KVM_PPC_CPU_CHAR_BR_HINT_HONOURED (1ULL << 58) |
---|
464 | 464 | #define KVM_PPC_CPU_CHAR_MTTRIG_THR_RECONF (1ULL << 57) |
---|
465 | 465 | #define KVM_PPC_CPU_CHAR_COUNT_CACHE_DIS (1ULL << 56) |
---|
| 466 | +#define KVM_PPC_CPU_CHAR_BCCTR_FLUSH_ASSIST (1ull << 54) |
---|
466 | 467 | |
---|
467 | 468 | #define KVM_PPC_CPU_BEHAV_FAVOUR_SECURITY (1ULL << 63) |
---|
468 | 469 | #define KVM_PPC_CPU_BEHAV_L1D_FLUSH_PR (1ULL << 62) |
---|
469 | 470 | #define KVM_PPC_CPU_BEHAV_BNDS_CHK_SPEC_BAR (1ULL << 61) |
---|
| 471 | +#define KVM_PPC_CPU_BEHAV_FLUSH_COUNT_CACHE (1ull << 58) |
---|
470 | 472 | |
---|
471 | 473 | /* Per-vcpu XICS interrupt controller state */ |
---|
472 | 474 | #define KVM_REG_PPC_ICP_STATE (KVM_REG_PPC | KVM_REG_SIZE_U64 | 0x8c) |
---|
.. | .. |
---|
479 | 481 | #define KVM_REG_PPC_ICP_MFRR_MASK 0xff |
---|
480 | 482 | #define KVM_REG_PPC_ICP_PPRI_SHIFT 16 /* pending irq priority */ |
---|
481 | 483 | #define KVM_REG_PPC_ICP_PPRI_MASK 0xff |
---|
| 484 | + |
---|
| 485 | +#define KVM_REG_PPC_VP_STATE (KVM_REG_PPC | KVM_REG_SIZE_U128 | 0x8d) |
---|
482 | 486 | |
---|
483 | 487 | /* Device control API: PPC-specific devices */ |
---|
484 | 488 | #define KVM_DEV_MPIC_GRP_MISC 1 |
---|
.. | .. |
---|
634 | 638 | |
---|
635 | 639 | #define KVM_REG_PPC_DEC_EXPIRY (KVM_REG_PPC | KVM_REG_SIZE_U64 | 0xbe) |
---|
636 | 640 | #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) |
---|
637 | 647 | |
---|
638 | 648 | /* Transactional Memory checkpointed state: |
---|
639 | 649 | * This is all GPRs, all VSX regs and a subset of SPRs |
---|
.. | .. |
---|
662 | 672 | |
---|
663 | 673 | /* PPC64 eXternal Interrupt Controller Specification */ |
---|
664 | 674 | #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 |
---|
665 | 677 | |
---|
666 | 678 | /* Layout of 64-bit source attribute values */ |
---|
667 | 679 | #define KVM_XICS_DESTINATION_SHIFT 0 |
---|
.. | .. |
---|
674 | 686 | #define KVM_XICS_PRESENTED (1ULL << 43) |
---|
675 | 687 | #define KVM_XICS_QUEUED (1ULL << 44) |
---|
676 | 688 | |
---|
| 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 | + |
---|
677 | 734 | #endif /* __LINUX_KVM_POWERPC_H */ |
---|