socsvn commit: r299444 - soc2015/mihai/bhyve-on-arm-head/sys/arm/vmm
mihai at FreeBSD.org
mihai at FreeBSD.org
Wed Mar 2 17:02:44 UTC 2016
Author: mihai
Date: Wed Mar 2 17:02:42 2016
New Revision: 299444
URL: http://svnweb.FreeBSD.org/socsvn/?view=rev&rev=299444
Log:
sys: arm: vmm: vgic.h: add vars to save the state of the distributor
Modified:
soc2015/mihai/bhyve-on-arm-head/sys/arm/vmm/vgic.h
Modified: soc2015/mihai/bhyve-on-arm-head/sys/arm/vmm/vgic.h
==============================================================================
--- soc2015/mihai/bhyve-on-arm-head/sys/arm/vmm/vgic.h Wed Mar 2 16:36:24 2016 (r299443)
+++ soc2015/mihai/bhyve-on-arm-head/sys/arm/vmm/vgic.h Wed Mar 2 17:02:42 2016 (r299444)
@@ -1,18 +1,48 @@
#ifndef _VMM_VGIC_H_
#define _VMM_VGIC_H_
+
+#define VGIC_NR_IRQ 128
+#define VGIC_NR_SGI 16
+#define VGIC_NR_PPI 16
+#define VGIC_NR_PRV_IRQ (VGIC_NR_SGI + VGIC_NR_PPI)
+#define VGIC_NR_SHR_IRQ (VGIC_NR_IRQ - VGIC_NR_PRV_IRQ)
+#define VGIC_MAXCPU VM_MAXCPU
#define VGIC_LR_NUM 64
+
+
struct vm;
struct vm_exit;
struct vgic_distributor {
- uint64_t distributor_base;
- uint64_t cpu_int_base;
+ uint64_t distributor_base;
+ uint64_t cpu_int_base;
+
+ /* Bitmaps for IRQ state in the distributor*/
+
+ /* Interrupt enabled */
+ uint32_t irq_enabled_prv[VGIC_MAXCPU][VGIC_NR_PRV_IRQ / sizeof(uint32_t)];
+ uint32_t irq_enabled_shr[VGIC_NR_SHR_IRQ / sizeof(uint32_t)];
+
+ /* Interrupt level */
+ uint32_t irq_state_prv[VGIC_MAXCPU][VGIC_NR_PRV_IRQ / sizeof(uint32_t)];
+ uint32_t irq_state_shr[VGIC_NR_SHR_IRQ / sizeof(uint32_t)];
+
+ /* Level interrupts in progress */
+ uint32_t irq_active_prv[VGIC_MAXCPU][VGIC_NR_PRV_IRQ / sizeof(uint32_t)];
+ uint32_t irq_active_shr[VGIC_NR_SHR_IRQ / sizeof(uint32_t)];
+
+ /* Configure type of IRQ: level or edge triggered */
+ uint32_t irq_conf_prv[VGIC_MAXCPU][VGIC_NR_PRV_IRQ / sizeof(uint32_t)];
+ uint32_t irq_conf_shr[VGIC_NR_SHR_IRQ / sizeof(uint32_t)];
- int nr_irqs;
};
struct vgic_cpu_int {
+ /* Bitmaps for pending IRQs */
+ uint32_t pending_prv[VGIC_NR_PRV_IRQ / sizeof(uint32_t)];
+ uint32_t pending_shr[VGIC_NR_SHR_IRQ / sizeof(uint32_t)];
+
uint64_t virtual_int_ctrl;
uint32_t lr_num;
uint32_t hcr;
@@ -22,6 +52,8 @@
uint64_t elsr;
uint32_t apr;
uint32_t lr[VGIC_LR_NUM];
+ uint8_t lr_used[VGIC_LR_NUM];
+ uint8_t irq_to_lr[VGIC_NR_IRQ];
};
int vgic_hyp_init(void);
More information about the svn-soc-all
mailing list