lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <27739836-bad2-6b3f-7f40-e84663fbbf24@kaod.org>
Date:   Fri, 10 Sep 2021 07:48:18 +0200
From:   Cédric Le Goater <clg@...d.org>
To:     Sasha Levin <sashal@...nel.org>, <linux-kernel@...r.kernel.org>,
        <stable@...r.kernel.org>
CC:     Michael Ellerman <mpe@...erman.id.au>, <kvm-ppc@...r.kernel.org>,
        <linuxppc-dev@...ts.ozlabs.org>
Subject: Re: [PATCH AUTOSEL 5.14 38/99] KVM: PPC: Book3S HV: XICS: Fix mapping
 of passthrough interrupts

On 9/10/21 2:14 AM, Sasha Levin wrote:
> From: Cédric Le Goater <clg@...d.org>
> 
> [ Upstream commit 1753081f2d445f9157550692fcc4221cd3ff0958 ]
> 
> PCI MSIs now live in an MSI domain but the underlying calls, which
> will EOI the interrupt in real mode, need an HW IRQ number mapped in
> the XICS IRQ domain. Grab it there.
> 
> Signed-off-by: Cédric Le Goater <clg@...d.org>
> Signed-off-by: Michael Ellerman <mpe@...erman.id.au>
> Link: https://lore.kernel.org/r/20210701132750.1475580-31-clg@kaod.org
> Signed-off-by: Sasha Levin <sashal@...nel.org>


Why are we backporting this patch in stable trees ?

It should be fine but to compile, we need a partial backport of commit
51be9e51a800 ("KVM: PPC: Book3S HV: XIVE: Fix mapping of passthrough 
interrupts") which exports irq_get_default_host().

Thanks,

C.


> ---
>  arch/powerpc/kvm/book3s_hv.c | 12 ++++++++++--
>  1 file changed, 10 insertions(+), 2 deletions(-)
> 
> diff --git a/arch/powerpc/kvm/book3s_hv.c b/arch/powerpc/kvm/book3s_hv.c
> index 085fb8ecbf68..1ca0a4f760bc 100644
> --- a/arch/powerpc/kvm/book3s_hv.c
> +++ b/arch/powerpc/kvm/book3s_hv.c
> @@ -5328,6 +5328,7 @@ static int kvmppc_set_passthru_irq(struct kvm *kvm, int host_irq, int guest_gsi)
>  	struct kvmppc_passthru_irqmap *pimap;
>  	struct irq_chip *chip;
>  	int i, rc = 0;
> +	struct irq_data *host_data;
>  
>  	if (!kvm_irq_bypass)
>  		return 1;
> @@ -5392,7 +5393,14 @@ static int kvmppc_set_passthru_irq(struct kvm *kvm, int host_irq, int guest_gsi)
>  	 * the KVM real mode handler.
>  	 */
>  	smp_wmb();
> -	irq_map->r_hwirq = desc->irq_data.hwirq;
> +
> +	/*
> +	 * The 'host_irq' number is mapped in the PCI-MSI domain but
> +	 * the underlying calls, which will EOI the interrupt in real
> +	 * mode, need an HW IRQ number mapped in the XICS IRQ domain.
> +	 */
> +	host_data = irq_domain_get_irq_data(irq_get_default_host(), host_irq);
> +	irq_map->r_hwirq = (unsigned int)irqd_to_hwirq(host_data);
>  
>  	if (i == pimap->n_mapped)
>  		pimap->n_mapped++;
> @@ -5400,7 +5408,7 @@ static int kvmppc_set_passthru_irq(struct kvm *kvm, int host_irq, int guest_gsi)
>  	if (xics_on_xive())
>  		rc = kvmppc_xive_set_mapped(kvm, guest_gsi, desc);
>  	else
> -		kvmppc_xics_set_mapped(kvm, guest_gsi, desc->irq_data.hwirq);
> +		kvmppc_xics_set_mapped(kvm, guest_gsi, irq_map->r_hwirq);
>  	if (rc)
>  		irq_map->r_hwirq = 0;
>  
> 

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ