Messages in this thread | | | Date | Tue, 22 Nov 2022 13:17:31 -0600 | Subject | Re: [RFC PATCH V2 16/18] x86/sev: Initialize #HV doorbell and handle interrupt requests | From | "Kalra, Ashish" <> |
| |
On 11/22/2022 7:46 AM, Tianyu Lan wrote: > On 11/21/2022 11:05 PM, Kalra, Ashish wrote: >>> +static void do_exc_hv(struct pt_regs *regs) >>> +{ >>> + union hv_pending_events pending_events; >>> + u8 vector; >>> + >>> + while (sev_hv_pending()) { >>> + asm volatile("cli" : : : "memory"); >>> + >> >> Do we really need to disable interrupts here, #HV exception will be >> dispatched via an interrupt gate in the IDT, so interrupts should be >> implicitly disabled, right ? >>> panic("Unexpected vector %d\n", vector); >>> + unreachable(); >>> + } >>> + } else { >>> + common_interrupt(regs, pending_events.vector); >>> + } >>> + >>> + asm volatile("sti" : : : "memory"); >> >> Again, why do we need to re-enable interrupts here (in this loop), >> interrupts will get re-enabled in the irqentry_exit() code path ? > > Hi Ashish: > Thanks for your review. check_hv_pending() is also called in the > native_irq_enable() to handle some pending interrupt requests after re > -enabling interrupt. For such case, disables irq when handle exception > or interrupt event. >
Then probably add the interrupt disable/enable in the caller function like native_irq_enable() which seems logical as check_hv_pending() is always called with interrupts disabled (either via HW or SW) and also interrupt disable/enable seems redundant in check_hv_pending().
Thanks, Ashish
| |