From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752068AbbJCJfn (ORCPT ); Sat, 3 Oct 2015 05:35:43 -0400 Received: from mail.skyhub.de ([78.46.96.112]:42908 "EHLO mail.skyhub.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751894AbbJCJfl (ORCPT ); Sat, 3 Oct 2015 05:35:41 -0400 Date: Sat, 3 Oct 2015 11:35:38 +0200 From: Borislav Petkov To: Jiang Liu Cc: Joerg Roedel , Daniel Vetter , Thomas Gleixner , Bjorn Helgaas , Alex Deucher , Alex Deucher , Christian =?utf-8?B?S8O2bmln?= , Maling list - DRI developers , lkml Subject: Re: WARNING: CPU: 4 PID: 863 at include/drm/drm_crtc.h:1577 drm_helper_choose_encoder_dpms+0x88/0x90() - evildoer found and neutralized Message-ID: <20151003093538.GA3786@pd.tnic> References: <20150923160621.GA3446@pd.tnic> <20150923161839.GB3446@pd.tnic> <20150926164651.GA3640@pd.tnic> <560A50DC.1040505@linux.intel.com> <20150929105138.GA12037@nazgul.tnic> <560B9323.6000309@linux.intel.com> <20150930124432.GS3036@8bytes.org> <560C153C.10600@linux.intel.com> <20150930173619.GA3826@pd.tnic> <560F8583.2010403@linux.intel.com> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline In-Reply-To: <560F8583.2010403@linux.intel.com> User-Agent: Mutt/1.5.23 (2014-03-12) Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Sat, Oct 03, 2015 at 03:36:35PM +0800, Jiang Liu wrote: > The above change is not needed, pcibios_disable_irq() will > first check !pci_has_managed_irq(dev) before actually freeing > PCI irq. pci_has_managed_irq(dev) only returns true if > pcibios_alloc_irq() succeeds. > > So to summary, I think we only need following change to fix the > regression: > int pcibios_alloc_irq(struct pci_dev *dev) > { > + if (pci_dev_msi_enabled(dev)) > + return -EBUSY; > > What do you think? Yap, that works too. I've got only this ontop of 4.3+tip: --- diff --git a/arch/x86/pci/common.c b/arch/x86/pci/common.c index dc78a4a9a466..a4687aa6c1fb 100644 --- a/arch/x86/pci/common.c +++ b/arch/x86/pci/common.c @@ -675,6 +675,9 @@ int pcibios_add_device(struct pci_dev *dev) int pcibios_alloc_irq(struct pci_dev *dev) { + if (pci_dev_msi_enabled(dev)) + return -EBUSY; + return pcibios_enable_irq(dev); } --- and it suspend+resumed fine. I guess it is time for Joerg to write a proper patch. :-) Thanks. -- Regards/Gruss, Boris. ECO tip #101: Trim your mails when you reply.