On Thu, 26 Nov 2020 at 22:32, Alexander Gordeev agordeev@linux.ibm.com wrote:
The directed MSIs are delivered to CPUs whose address is written to the MSI message data. The current code assumes that a CPU logical number (as it is seen by the kernel) is also that CPU address.
The above assumption is not correct, as the CPU address is rather the value returned by STAP instruction. That value does not necessarily match the kernel logical CPU number.
Fixes: e979ce7bced2 ("s390/pci: provide support for CPU directed interrupts") Signed-off-by: Alexander Gordeev agordeev@linux.ibm.com
arch/s390/pci/pci_irq.c | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-)
diff --git a/arch/s390/pci/pci_irq.c b/arch/s390/pci/pci_irq.c index 743f257cf2cb..75217fb63d7b 100644 --- a/arch/s390/pci/pci_irq.c +++ b/arch/s390/pci/pci_irq.c @@ -103,9 +103,10 @@ static int zpci_set_irq_affinity(struct irq_data *data, const struct cpumask *de { struct msi_desc *entry = irq_get_msi_desc(data->irq); struct msi_msg msg = entry->msg;
int cpu_addr = smp_cpu_get_cpu_address(cpumask_first(dest));
While building S390 the following kernel warning / error noticed on stable -rc 5.4 branch with gcc-8, gcc-9 and gcc-10 and defconfig
make --silent --keep-going --jobs=8 O=/home/tuxbuild/.cache/tuxmake/builds/6/tmp ARCH=s390 CROSS_COMPILE=s390x-linux-gnu- 'CC=sccache s390x-linux-gnu-gcc' 'HOSTCC=sccache gcc' vmlinux arch/s390/pci/pci_irq.c: In function 'zpci_set_irq_affinity': arch/s390/pci/pci_irq.c:106:17: error: implicit declaration of function 'smp_cpu_get_cpu_address' [-Werror=implicit-function-declaration] 106 | int cpu_addr = smp_cpu_get_cpu_address(cpumask_first(dest)); | ^~~~~~~~~~~~~~~~~~~~~~~
Reported-by: Naresh Kamboju naresh.kamboju@linaro.org
steps to reproduce: -------------------------- # TuxMake is a command line tool and Python library that provides # portable and repeatable Linux kernel builds across a variety of # architectures, toolchains, kernel configurations, and make targets. # # TuxMake supports the concept of runtimes. # See https://docs.tuxmake.org/runtimes/, for that to work it requires # that you install podman or docker on your system. # # To install tuxmake on your system globally: # sudo pip3 install -U tuxmake # # See https://docs.tuxmake.org/ for complete documentation.
tuxmake --runtime docker --target-arch s390 --toolchain gcc-9 --kconfig defconfig
metadata: git_repo: https://gitlab.com/Linaro/lkft/mirrors/stable/linux-stable-rc target_arch: s390 toolchain: gcc-9 git_describe: v5.4.82-36-gc45075765dae kernel_version: 5.4.83-rc1
full build log link, https://gitlab.com/Linaro/lkft/mirrors/stable/linux-stable-rc/-/jobs/8992722...
linux-stable-mirror@lists.linaro.org