mirror of
https://github.com/projectacrn/acrn-hypervisor.git
synced 2025-05-03 14:06:54 +00:00
HV: fix MISRA issue in apicv_pending_intr()
Remove multi-return statement in apicv_pending_intr(). Tracked-On: #861 Signed-off-by: Chaohong guo <chaohong.guo@intel.com> Acked-by: Eddie Dong <eddie.dong@intel.com>
This commit is contained in:
parent
2ca218bfb8
commit
dc6d1d5fa7
@ -2291,32 +2291,37 @@ apicv_pending_intr(const struct acrn_vlapic *vlapic)
|
|||||||
const struct lapic_regs *lapic;
|
const struct lapic_regs *lapic;
|
||||||
uint64_t pending, pirval;
|
uint64_t pending, pirval;
|
||||||
uint32_t i, ppr, vpr;
|
uint32_t i, ppr, vpr;
|
||||||
|
int32_t ret = 0;
|
||||||
|
|
||||||
pir_desc = &(vlapic->pir_desc);
|
pir_desc = &(vlapic->pir_desc);
|
||||||
|
|
||||||
pending = atomic_load64(&pir_desc->pending);
|
pending = atomic_load64(&pir_desc->pending);
|
||||||
if (pending == 0U) {
|
if (pending != 0U) {
|
||||||
return 0;
|
lapic = &(vlapic->apic_page);
|
||||||
}
|
ppr = lapic->ppr.v & 0xF0U;
|
||||||
|
|
||||||
lapic = &(vlapic->apic_page);
|
if (ppr == 0U) {
|
||||||
ppr = lapic->ppr.v & 0xF0U;
|
ret = 1;
|
||||||
|
} else {
|
||||||
|
|
||||||
if (ppr == 0U) {
|
/* i ranges effectively from 3 to 0 */
|
||||||
return 1;
|
i = 4U;
|
||||||
}
|
while (i > 0U) {
|
||||||
|
i --;
|
||||||
|
if (pir_desc->pir[i] != 0U) {
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/* i ranges effectively from 3 to 0 */
|
pirval = pir_desc->pir[i];
|
||||||
for (i = 4U; i > 0U; ) {
|
if (pirval != 0U) {
|
||||||
i--;
|
vpr = (((i * 64U) + (uint32_t)fls64(pirval)) & 0xF0U);
|
||||||
pirval = pir_desc->pir[i];
|
ret = ((vpr > ppr) ? 1 : 0);
|
||||||
if (pirval != 0U) {
|
}
|
||||||
vpr = (((i * 64U) + (uint32_t)fls64(pirval)) & 0xF0U);
|
|
||||||
return (vpr > ppr) ? 1 : 0;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return 0;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Update the VMX_EOI_EXIT according to related tmr */
|
/* Update the VMX_EOI_EXIT according to related tmr */
|
||||||
|
Loading…
Reference in New Issue
Block a user