Re: [PATCH v1 07/17] xen/riscv: introduce vCPU AIA initialization

Oleksii Kurochko <[email protected]>
Newsgroups gmane.comp.emulators.xen.devel
Message-ID <[email protected]>

On 8/13/26 11:47 AM, Jan Beulich wrote:
> On 13.08.2026 11:24, Baptiste Le Duc wrote:
>>> --- a/xen/arch/riscv/aia.c
>>> +++ b/xen/arch/riscv/aia.c
>>> @@ -14,6 +14,7 @@
>>>   #include <asm/cpufeature.h>
>>>   #include <asm/csr.h>
>>>   #include <asm/current.h>
>>> +#include <asm/imsic.h>
>>>   
>>>   struct vgein_ctrl {
>>>       unsigned long bmp;
>>> @@ -36,6 +37,35 @@ bool aia_usable(void)
>>>       return _aia_usable;
>>>   }
>>>   
>>> +void vcpu_aia_init(struct vcpu *v)
>>> +{
>>> +    unsigned int new_vsfile_id;
>>> +    int rc;
>>> +
>>> +    if ( !aia_usable() )
>>> +        return;
>>> +
>>> +    new_vsfile_id = vgein_assign(v);
>>> +
>>> +    /*
>>> +     * vgein_assign() returns 0 when no free h/w guest interrupt file is
>>> +     * available (including GEILEN == 0); imsic_map_guest_file() maps nothing
>>> +     * in that case.
>>> +     */
>>> +    rc = imsic_map_guest_file(v, new_vsfile_id);
>>> +    if ( rc )
>>> +    {
>>> +        /* Can't continue w/o correctly mapped IMSIC interrupt file */
>>> +        domain_crash(v->domain);
>>
>> The vgein id assigned a few lines up is not released here. The domain is dying
>> anyway, but the guest interrupt file stays marked in use on that pCPU forever,
>> since nothing else ever calls vgein_release(). A vgein_release(v,
>> new_vsfile_id) before the domain_crash() would fix it.
> 
> Instead of (or in addition to) doing that here, wouldn't releasing better be part
> of the normal cleanup path? Whether "instead of" or "in addition to" depends on
> the implications of deferring the release. But to guarantee no leak, domain
> cleanup will want to either do the release, or have an explicit check that is was
> done.

I think vgein_release() should be here, as when the IMSIC software 
interrupt file is supported, it will mean that domain_crash() can 
generally be dropped (there is no need to call imsic_map_guest_file() 
for s/w IMSIC interrupt file) and the vCPU can use the software 
interrupt file instead of killing the domain.

~ Oleksii
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.