mirror of
https://github.com/freebsd/freebsd-src
synced 2024-10-02 22:54:52 +00:00
libvmmapi: Make vm_raise_msi() a common function
Currently, bhyve PCI emulation uses vm_lapic_msi() to raise an MSI in the guest. The arm64 port has a similar function, vm_raise_msi(). Add vm_raise_msi() on amd64 as well and have it simply call vm_lapic_msi() so that bhyve can use a common, generically named function. Reviewed by: corvink, andrew, jhb MFC after: 2 weeks Sponsored by: Innovate UK Differential Revision: https://reviews.freebsd.org/D41752
This commit is contained in:
parent
5ec6c3007e
commit
1855002ddf
|
@ -99,8 +99,8 @@ vm_deassert_irq(struct vmctx *ctx, uint32_t irq)
|
|||
}
|
||||
|
||||
int
|
||||
vm_raise_msi(struct vmctx *ctx, uint64_t addr, uint64_t msg, int bus, int slot,
|
||||
int func)
|
||||
vm_raise_msi(struct vmctx *ctx, uint64_t addr, uint64_t msg,
|
||||
int bus, int slot, int func)
|
||||
{
|
||||
struct vm_msi vmsi;
|
||||
|
||||
|
|
|
@ -166,6 +166,13 @@ vm_lapic_msi(struct vmctx *ctx, uint64_t addr, uint64_t msg)
|
|||
return (ioctl(ctx->fd, VM_LAPIC_MSI, &vmmsi));
|
||||
}
|
||||
|
||||
int
|
||||
vm_raise_msi(struct vmctx *ctx, uint64_t addr, uint64_t msg,
|
||||
int bus __unused, int slot __unused, int func __unused)
|
||||
{
|
||||
return (vm_lapic_msi(ctx, addr, msg));
|
||||
}
|
||||
|
||||
int
|
||||
vm_apicid2vcpu(struct vmctx *ctx __unused, int apicid)
|
||||
{
|
||||
|
|
|
@ -157,17 +157,17 @@ int vm_get_register_set(struct vcpu *vcpu, unsigned int count,
|
|||
int vm_run(struct vcpu *vcpu, struct vm_run *vmrun);
|
||||
int vm_suspend(struct vmctx *ctx, enum vm_suspend_how how);
|
||||
int vm_reinit(struct vmctx *ctx);
|
||||
int vm_apicid2vcpu(struct vmctx *ctx, int apicid);
|
||||
int vm_raise_msi(struct vmctx *ctx, uint64_t addr, uint64_t msg,
|
||||
int bus, int slot, int func);
|
||||
#ifdef __aarch64__
|
||||
int vm_attach_vgic(struct vmctx *ctx, uint64_t dist_start, size_t dist_size,
|
||||
uint64_t redist_start, size_t redist_size);
|
||||
int vm_assert_irq(struct vmctx *ctx, uint32_t irq);
|
||||
int vm_deassert_irq(struct vmctx *ctx, uint32_t irq);
|
||||
int vm_raise_msi(struct vmctx *ctx, uint64_t addr, uint64_t msg, int bus,
|
||||
int slot, int func);
|
||||
int vm_inject_exception(struct vcpu *vcpu, uint64_t esr, uint64_t far);
|
||||
#endif
|
||||
#ifdef __amd64__
|
||||
int vm_apicid2vcpu(struct vmctx *ctx, int apicid);
|
||||
int vm_inject_exception(struct vcpu *vcpu, int vector,
|
||||
int errcode_valid, uint32_t errcode, int restart_instruction);
|
||||
int vm_lapic_irq(struct vcpu *vcpu, int vector);
|
||||
|
|
Loading…
Reference in a new issue