|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [PATCH] vpci/msix: exit early if MSI-X is disabled
On 01.12.2020 18:40, Roger Pau Monne wrote:
> Do not attempt to mask an MSI-X entry if MSI-X is not enabled. Else it
> will lead to hitting the following assert on debug builds:
>
> (XEN) Panic on CPU 13:
> (XEN) Assertion 'entry->arch.pirq != INVALID_PIRQ' failed at vmsi.c:843
Since the line number is only of limited use, I'd like to see the
function name (vpci_msix_arch_mask_entry()) also added here; easily
done while committing, if the question further down can be resolved
without code change.
> --- a/xen/drivers/vpci/msix.c
> +++ b/xen/drivers/vpci/msix.c
> @@ -357,7 +357,11 @@ static int msix_write(struct vcpu *v, unsigned long
> addr, unsigned int len,
> * so that it picks the new state.
> */
> entry->masked = new_masked;
> - if ( !new_masked && msix->enabled && !msix->masked && entry->updated
> )
> +
> + if ( !msix->enabled )
> + break;
> +
> + if ( !new_masked && !msix->masked && entry->updated )
> {
> /*
> * If MSI-X is enabled, the function mask is not active, the
> entry
What about a "disabled" -> "enabled-but-masked" transition? This,
afaict, similarly won't trigger setting up of entries from
control_write(), and hence I'd expect the ASSERT() to similarly
trigger when subsequently an entry's mask bit gets altered.
I'd also be fine making this further adjustment, if you agree,
but the one thing I haven't been able to fully convince myself of
is that there's then still no need to set ->updated to true.
Jan
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |