Received: by 10.192.165.148 with SMTP id m20csp4930230imm; Tue, 1 May 2018 06:26:39 -0700 (PDT) X-Google-Smtp-Source: AB8JxZopzS5vjRD6VHEguEYymlxsErRkvIC09KSOv9zd2rYLj9+HoOwjcTlWg+EW4/d5EPYhuYgl X-Received: by 10.98.93.153 with SMTP id n25mr15689126pfj.143.1525181199045; Tue, 01 May 2018 06:26:39 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1525181199; cv=none; d=google.com; s=arc-20160816; b=UGv9sciFnS8KfWUx/n9EuTgjpDXTM136TnvgZv0ImOOH+U4Nqfxy5ECo63WjDmBlB+ RRCeOy7avmrfdevk53RgbPVj8lWUzdVsFftaITVwjbIydeLEEF5/OWpczzmMQYH42vGM 9gnM+6cwyM7xM2/h0XSY5H9ZMLBgY2rxxI6FQHKv6RyUeDNKWjMD5nX4bpueGYAbF40m LPfv7EOfs0+MNikubSgZqQ2KvkHArukr42yAg9JImeHiQK3MXBvx7sVIWk+DykqQhxK3 uIEFIb8E4mNEQxCvGZ7cjnV36U8QkshUc48w3uJODmfOi45R9dblVRewFyOyfj/A6GXB lQFg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:user-agent:in-reply-to :content-disposition:mime-version:references:message-id:subject:cc :to:from:date:dmarc-filter:arc-authentication-results; bh=2dsEiIWZ5X/JS+dnepRUG01q+hwMhaZYip1AnPdzuD8=; b=FttEQ2xInGue+JuQKm4JuWxW09sbOI/vO9/Clwbsmd1MFxI0PCyWTBpI9/QnP/PpWV ugFCux3LjQXRXk4E4925JXD6de2SyE2FrbKQcGimYDlBiP0xg9iNtQKX2oRrTjWb5rDi qDcVTsB/ew/Wy+lDpfgw1tt7JhNxE+PQEkkMPvOc1idmV6ZPvuVR0sRTldXGK0rKCKIO ly7hrGVzbzySL4alHsOESTFEhuSFm4EtBq55A7rqID4F9ArT+CPV9l1cjyE28vhpQIfj L1LvKXm+q/X9IwMQsdS7DzQmUiEC061KFFX2ei8hBjtW+mu4gpZEvFqrsqAibn9iF0pa 2yDQ== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id u9-v6si7680440pge.641.2018.05.01.06.26.24; Tue, 01 May 2018 06:26:39 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1755252AbeEANZ6 (ORCPT + 99 others); Tue, 1 May 2018 09:25:58 -0400 Received: from mail.kernel.org ([198.145.29.99]:48778 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1754841AbeEANZ4 (ORCPT ); Tue, 1 May 2018 09:25:56 -0400 Received: from localhost (173-24-247-213.client.mchsi.com [173.24.247.213]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPSA id C58DD2368C; Tue, 1 May 2018 13:25:55 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org C58DD2368C Authentication-Results: mail.kernel.org; dmarc=none (p=none dis=none) header.from=kernel.org Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=helgaas@kernel.org Date: Tue, 1 May 2018 08:25:54 -0500 From: Bjorn Helgaas To: Marc Zyngier Cc: Sinan Kaya , Paul Menzel , Dave Young , linux-pci@vger.kernel.org, kexec@lists.infradead.org, linux-kernel@vger.kernel.org, Lukas Wunner , Eric Biederman , Bjorn Helgaas , Vivek Goyal Subject: Re: pciehp 0000:00:1c.0:pcie004: Timeout on hotplug command 0x1038 (issued 65284 msec ago) Message-ID: <20180501132554.GA11698@bhelgaas-glaptop.roam.corp.google.com> References: <20180427211255.GI8199@bhelgaas-glaptop.roam.corp.google.com> <20180428005620.GB1675@dhcp-128-65.nay.redhat.com> <20180428011845.GC1675@dhcp-128-65.nay.redhat.com> <3ebc908fb196168bf0373875ffc5679e@codeaurora.org> <20180430211740.GG95643@bhelgaas-glaptop.roam.corp.google.com> <7285da70-2c3e-c3b7-62e1-fdbb55a77729@codeaurora.org> <3549ffe8-7605-d72c-5c09-1436a4288c7d@codeaurora.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: User-Agent: Mutt/1.9.2 (2017-12-15) Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Tue, May 01, 2018 at 01:59:20PM +0100, Marc Zyngier wrote: > On 01/05/18 13:38, Sinan Kaya wrote: > > +Marc, > > > > On 4/30/2018 5:27 PM, Sinan Kaya wrote: > >> On 4/30/2018 5:17 PM, Bjorn Helgaas wrote: > >>>> What should we do about this? > >>>> > >>>> Since there is an actual HW errata involved, should we quirk this > >>>> root port and not wait as if remove/shutdown doesn't exist? > >>> I was hoping to avoid a quirk because AFAIK all Intel parts have this > >>> issue so it will be an ongoing maintenance issue. I tried to avoid > >>> the timeout delays, e.g., with 40b960831cfa ("PCI: pciehp: Compute > >>> timeout from hotplug command start time"). > >>> > >>> But we still see the alarming messages, so we should probably add a > >>> quirk to get rid of those. > >>> > >>> But I haven't given up on the idea of getting rid of the > >>> pciehp_remove() path. I'm not convinced yet that we actually need to > >>> do anything to shut this device down. I don't like the assumption > >>> that kexec requires this. The kexec is fundamentally just a branch, > >>> and anything we do before the branch (i.e., in the old kernel), we > >>> should also be able to do after the branch (i.e., in the kexec-ed > >>> kernel). > >>> > >> > >> In my experience with kexec, MSI type edge interrupts are harmless. > >> You might just see a few unhandled interrupt messages during boot > >> if something is pending from the first kernel. > > Unfortunately, that's not always the case. > > A number of GICv3/v4 implementations (a very common interrupt controller > on ARM servers) cannot be disabled, which means they will keep writing > to their pending tables long after kexec will have started the new > kernel. And since we don't track memory allocation across kexec, you > end-up with significant chances of observing single bit corruption as > interrupts carry on being delivered. Oh, and you won't actually be able > to take MSIs because you can't even reprogram the damn thing. > > Yes, this can be considered a HW bug. > > >> It is the level interrupts that are more concerning. It remains pending > >> until the interrupt source is cleared. CPU never returns from the > >> interrupt handler to actually continue booting the second kernel. > > > > This makes me wonder why kexec doesn't disable all interrupt sources by > > itself instead of relying on the drivers shutdown routine. Some drivers > > don't even have a shutdown callback. Kexec could have done both as another > > example. Something like. > > > > 1. Call shutdown for all drivers if available. > > 2. Disable all interrupt sources in the interrupt controller > > 3. Start the new kernel. > > See above. Although you can shut off the end-point and to some extent > mask interrupts before jumping into the payload, it is not always > possible to go back to a reasonable state where you can take actually MSIs. This is exactly the sort of thing it would be nice to collect and document as part of the background of "why kexec works the way it does." It certainly helps explain things that are far from obvious if you don't have the background.