Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752468AbdLGJU1 (ORCPT ); Thu, 7 Dec 2017 04:20:27 -0500 Received: from mx0a-001b2d01.pphosted.com ([148.163.156.1]:42842 "EHLO mx0a-001b2d01.pphosted.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1750857AbdLGJUW (ORCPT ); Thu, 7 Dec 2017 04:20:22 -0500 Subject: Re: 4.14: WARNING: CPU: 4 PID: 2895 at block/blk-mq.c:1144 with virtio-blk (also 4.12 stable) To: Christoph Hellwig Cc: Jens Axboe , Bart Van Assche , "linux-block@vger.kernel.org" , "linux-kernel@vger.kernel.org" , Thomas Gleixner , Stefan Haberland , linux-s390 , Martin Schwidefsky References: <20171123182542.GA2680@lst.de> <899f1638-cca4-28e6-3225-51505a053d45@de.ibm.com> <20171123183232.GA2845@lst.de> <92ef1aae-90b5-f14f-390e-bfab97899431@de.ibm.com> <419d8565-9cbe-16ac-3d5d-5945098694bc@de.ibm.com> <20171127155409.GA6937@lst.de> <20171204162108.GA12482@lst.de> <5ab91c56-b117-f4fa-3049-a4f8a5493155@de.ibm.com> <20171206232924.GA16584@lst.de> From: Christian Borntraeger Date: Thu, 7 Dec 2017 10:20:13 +0100 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Thunderbird/52.4.0 MIME-Version: 1.0 In-Reply-To: <20171206232924.GA16584@lst.de> Content-Type: text/plain; charset=utf-8 Content-Language: en-US Content-Transfer-Encoding: 7bit X-TM-AS-GCONF: 00 x-cbid: 17120709-0020-0000-0000-000003D5505E X-IBM-AV-DETECTION: SAVI=unused REMOTE=unused XFE=unused x-cbparentid: 17120709-0021-0000-0000-0000426ADB2E Message-Id: <2257859e-dad6-3356-93a7-e87f02104969@de.ibm.com> X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10432:,, definitions=2017-12-07_02:,, signatures=0 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 priorityscore=1501 malwarescore=0 suspectscore=0 phishscore=0 bulkscore=0 spamscore=0 clxscore=1015 lowpriorityscore=0 impostorscore=0 adultscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.0.1-1709140000 definitions=main-1712070143 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 1959 Lines: 51 On 12/07/2017 12:29 AM, Christoph Hellwig wrote: > On Wed, Dec 06, 2017 at 01:25:11PM +0100, Christian Borntraeger wrote: > t > commit 11b2025c3326f7096ceb588c3117c7883850c068 -> bad >> blk-mq: create a blk_mq_ctx for each possible CPU >> does not boot on DASD and >> commit 9c6ae239e01ae9a9f8657f05c55c4372e9fc8bcc -> good >> genirq/affinity: assign vectors to all possible CPUs >> does boot with DASD disks. >> >> Also adding Stefan Haberland if he has an idea why this fails on DASD and adding Martin (for the >> s390 irq handling code). > > That is interesting as it really isn't related to interrupts at all, > it just ensures that possible CPUs are set in ->cpumask. > > I guess we'd really want: > > e005655c389e3d25bf3e43f71611ec12f3012de0 > "blk-mq: only select online CPUs in blk_mq_hctx_next_cpu" > > before this commit, but it seems like the whole stack didn't work for > your either. > > I wonder if there is some weird thing about nr_cpu_ids in s390? The problem starts as soon as NR_CPUS is larger than the number of real CPUs. Aquestions Wouldnt your change in blk_mq_hctx_next_cpu fail if there is more than 1 non-online cpu: e.g. dont we need something like (whitespace and indent damaged) @@ -1241,11 +1241,11 @@ static int blk_mq_hctx_next_cpu(struct blk_mq_hw_ctx *hctx) if (--hctx->next_cpu_batch <= 0) { int next_cpu; + do { next_cpu = cpumask_next(hctx->next_cpu, hctx->cpumask); - if (!cpu_online(next_cpu)) - next_cpu = cpumask_next(next_cpu, hctx->cpumask); if (next_cpu >= nr_cpu_ids) next_cpu = cpumask_first(hctx->cpumask); + } while (!cpu_online(next_cpu)); hctx->next_cpu = next_cpu; hctx->next_cpu_batch = BLK_MQ_CPU_WORK_BATCH; it does not fix the issue, though (and it would be pretty inefficient for large NR_CPUS)