mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-08-22 00:40:03 +00:00
![Benjamin Herrenschmidt](/assets/img/avatar_default.png)
This patch makes KVM capable of using the XIVE interrupt controller to provide the standard PAPR "XICS" style hypercalls. It is necessary for proper operations when the host uses XIVE natively. This has been lightly tested on an actual system, including PCI pass-through with a TG3 device. Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org> [mpe: Cleanup pr_xxx(), unsplit pr_xxx() strings, etc., fix build failures by adding KVM_XIVE which depends on KVM_XICS and XIVE, and adding empty stubs for the kvm_xive_xxx() routines, fixup subject, integrate fixes from Paul for building PR=y HV=n] Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
47 lines
1.1 KiB
C
47 lines
1.1 KiB
C
#include <linux/kernel.h>
|
|
#include <linux/kvm_host.h>
|
|
#include <linux/err.h>
|
|
#include <linux/kernel_stat.h>
|
|
|
|
#include <asm/kvm_book3s.h>
|
|
#include <asm/kvm_ppc.h>
|
|
#include <asm/hvcall.h>
|
|
#include <asm/xics.h>
|
|
#include <asm/debug.h>
|
|
#include <asm/synch.h>
|
|
#include <asm/cputhreads.h>
|
|
#include <asm/pgtable.h>
|
|
#include <asm/ppc-opcode.h>
|
|
#include <asm/pnv-pci.h>
|
|
#include <asm/opal.h>
|
|
#include <asm/smp.h>
|
|
#include <asm/asm-prototypes.h>
|
|
#include <asm/xive.h>
|
|
#include <asm/xive-regs.h>
|
|
|
|
#include "book3s_xive.h"
|
|
|
|
/* XXX */
|
|
#include <asm/udbg.h>
|
|
//#define DBG(fmt...) udbg_printf(fmt)
|
|
#define DBG(fmt...) do { } while(0)
|
|
|
|
static inline void __iomem *get_tima_phys(void)
|
|
{
|
|
return local_paca->kvm_hstate.xive_tima_phys;
|
|
}
|
|
|
|
#undef XIVE_RUNTIME_CHECKS
|
|
#define X_PFX xive_rm_
|
|
#define X_STATIC
|
|
#define X_STAT_PFX stat_rm_
|
|
#define __x_tima get_tima_phys()
|
|
#define __x_eoi_page(xd) ((void __iomem *)((xd)->eoi_page))
|
|
#define __x_trig_page(xd) ((void __iomem *)((xd)->trig_page))
|
|
#define __x_readb __raw_rm_readb
|
|
#define __x_writeb __raw_rm_writeb
|
|
#define __x_readw __raw_rm_readw
|
|
#define __x_readq __raw_rm_readq
|
|
#define __x_writeq __raw_rm_writeq
|
|
|
|
#include "book3s_xive_template.c"
|