mirror of
https://github.com/projectacrn/acrn-hypervisor.git
synced 2026-01-04 15:14:27 +00:00
hv: vioapic init for SOS VM on platforms with multiple IO-APICs
For SOS VM, when the target platform has multiple IO-APICs, there should be equal number of virtual IO-APICs. This patch adds support for emulating multiple vIOAPICs per VM. Tracked-On: #4151 Signed-off-by: Sainath Grandhi <sainath.grandhi@intel.com> Acked-by: Eddie Dong <eddie.dong@Intel.com>
This commit is contained in:
committed by
wenlingz
parent
f67ac09141
commit
fe5a108c7b
@@ -1173,7 +1173,7 @@ static void get_vioapic_info(char *str_arg, size_t str_max, uint16_t vmid)
|
||||
uint32_t delmode, vector, dest;
|
||||
bool level, phys, remote_irr, mask;
|
||||
struct acrn_vm *vm = get_vm_from_vmid(vmid);
|
||||
uint32_t gsi, pincount;
|
||||
uint32_t gsi, gsi_count;
|
||||
|
||||
if (is_poweroff_vm(vm)) {
|
||||
len = snprintf(str, size, "\r\nvm is not exist for vmid %hu", vmid);
|
||||
@@ -1192,9 +1192,12 @@ static void get_vioapic_info(char *str_arg, size_t str_max, uint16_t vmid)
|
||||
size -= len;
|
||||
str += len;
|
||||
|
||||
pincount = vioapic_pincount(vm);
|
||||
gsi_count = get_vm_gsicount(vm);
|
||||
rte.full = 0UL;
|
||||
for (gsi = 0U; gsi < pincount; gsi++) {
|
||||
for (gsi = 0U; gsi < gsi_count; gsi++) {
|
||||
if (is_sos_vm(vm) && (!is_gsi_valid(gsi))) {
|
||||
continue;
|
||||
}
|
||||
vioapic_get_rte(vm, gsi, &rte);
|
||||
mask = (rte.bits.intr_mask == IOAPIC_RTE_MASK_SET);
|
||||
remote_irr = (rte.bits.remote_irr == IOAPIC_RTE_REM_IRR);
|
||||
|
||||
Reference in New Issue
Block a user