Changeset View
Changeset View
Standalone View
Standalone View
sys/amd64/vmm/io/vatpic.c
Show All 23 Lines | |||||
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY | * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY | ||||
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF | * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF | ||||
* SUCH DAMAGE. | * SUCH DAMAGE. | ||||
*/ | */ | ||||
#include <sys/cdefs.h> | #include <sys/cdefs.h> | ||||
__FBSDID("$FreeBSD$"); | __FBSDID("$FreeBSD$"); | ||||
#include "opt_bhyve_snapshot.h" | |||||
#include <sys/param.h> | #include <sys/param.h> | ||||
#include <sys/types.h> | #include <sys/types.h> | ||||
#include <sys/queue.h> | #include <sys/queue.h> | ||||
#include <sys/kernel.h> | #include <sys/kernel.h> | ||||
#include <sys/lock.h> | #include <sys/lock.h> | ||||
#include <sys/malloc.h> | #include <sys/malloc.h> | ||||
#include <sys/mutex.h> | #include <sys/mutex.h> | ||||
#include <sys/systm.h> | #include <sys/systm.h> | ||||
#include <x86/apicreg.h> | #include <x86/apicreg.h> | ||||
#include <dev/ic/i8259.h> | #include <dev/ic/i8259.h> | ||||
#include <machine/vmm.h> | #include <machine/vmm.h> | ||||
#include <machine/vmm_snapshot.h> | |||||
#include "vmm_ktr.h" | #include "vmm_ktr.h" | ||||
#include "vmm_lapic.h" | #include "vmm_lapic.h" | ||||
#include "vioapic.h" | #include "vioapic.h" | ||||
#include "vatpic.h" | #include "vatpic.h" | ||||
static MALLOC_DEFINE(M_VATPIC, "atpic", "bhyve virtual atpic (8259)"); | static MALLOC_DEFINE(M_VATPIC, "atpic", "bhyve virtual atpic (8259)"); | ||||
▲ Show 20 Lines • Show All 750 Lines • ▼ Show 20 Lines | vatpic_init(struct vm *vm) | ||||
return (vatpic); | return (vatpic); | ||||
} | } | ||||
void | void | ||||
vatpic_cleanup(struct vatpic *vatpic) | vatpic_cleanup(struct vatpic *vatpic) | ||||
{ | { | ||||
free(vatpic, M_VATPIC); | free(vatpic, M_VATPIC); | ||||
} | } | ||||
#ifdef BHYVE_SNAPSHOT | |||||
int | |||||
vatpic_snapshot(struct vatpic *vatpic, struct vm_snapshot_meta *meta) | |||||
{ | |||||
int ret; | |||||
int i; | |||||
struct atpic *atpic; | |||||
for (i = 0; i < nitems(vatpic->atpic); i++) { | |||||
atpic = &vatpic->atpic[i]; | |||||
SNAPSHOT_VAR_OR_LEAVE(atpic->ready, meta, ret, done); | |||||
SNAPSHOT_VAR_OR_LEAVE(atpic->icw_num, meta, ret, done); | |||||
SNAPSHOT_VAR_OR_LEAVE(atpic->rd_cmd_reg, meta, ret, done); | |||||
SNAPSHOT_VAR_OR_LEAVE(atpic->aeoi, meta, ret, done); | |||||
SNAPSHOT_VAR_OR_LEAVE(atpic->poll, meta, ret, done); | |||||
SNAPSHOT_VAR_OR_LEAVE(atpic->rotate, meta, ret, done); | |||||
SNAPSHOT_VAR_OR_LEAVE(atpic->sfn, meta, ret, done); | |||||
SNAPSHOT_VAR_OR_LEAVE(atpic->irq_base, meta, ret, done); | |||||
SNAPSHOT_VAR_OR_LEAVE(atpic->request, meta, ret, done); | |||||
SNAPSHOT_VAR_OR_LEAVE(atpic->service, meta, ret, done); | |||||
SNAPSHOT_VAR_OR_LEAVE(atpic->mask, meta, ret, done); | |||||
SNAPSHOT_VAR_OR_LEAVE(atpic->smm, meta, ret, done); | |||||
SNAPSHOT_BUF_OR_LEAVE(atpic->acnt, sizeof(atpic->acnt), | |||||
meta, ret, done); | |||||
SNAPSHOT_VAR_OR_LEAVE(atpic->lowprio, meta, ret, done); | |||||
SNAPSHOT_VAR_OR_LEAVE(atpic->intr_raised, meta, ret, done); | |||||
} | |||||
SNAPSHOT_BUF_OR_LEAVE(vatpic->elc, sizeof(vatpic->elc), | |||||
meta, ret, done); | |||||
done: | |||||
return (ret); | |||||
} | |||||
#endif |