Received: by 2002:a05:6a10:a0d1:0:0:0:0 with SMTP id j17csp1580484pxa; Thu, 6 Aug 2020 10:45:28 -0700 (PDT) X-Google-Smtp-Source: ABdhPJyqZ0sK1dRTemxmppDUvSWHU6KuuVHzXaiKwyfsCwplrF0Gz0Sg5Sx/WKvw54+1dgGiI+R2 X-Received: by 2002:a17:906:38c7:: with SMTP id r7mr5729534ejd.118.1596735928285; Thu, 06 Aug 2020 10:45:28 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1596735928; cv=none; d=google.com; s=arc-20160816; b=VMYIy21yXWjRR3DY6Asv4USf7HT9mz29AoXmWhVdTFaO6udyo4R5WYlk96lJHNY3YQ EqKWZPEKzx93krJwUVCy8rBGk5+prVcLFby+mL9AZmH7qwpuXDG4Ocf/MflvLsTKberh c+H08alHuR8s8CIByt6ApeQK9Jr9sPNksxcxkgw9CR0aKf3a/Xts/24II3iywScnLI6L ApihMq2lUl/u1eHnbWu+D9j6GgxfmtojZmWziIbxQVGrGIZYBxP//VQ1jW8RR/bXKlDz XgpvUR3tLsC9yf9bS0gkdzBPjJVz24Ermtb26XJJKSPabcOE7Y0MPE2d0J4lkJ+NWt0g chnA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:message-id:user-agent:references :in-reply-to:subject:cc:to:from:date:content-transfer-encoding :mime-version:dkim-signature; bh=dp9s5xgH9MN71q8sh8xTvoiTWoLWQGfLy+Q4iywUBkk=; b=ySVtexU/JuLLBShROGTyke75KvHOY1sD4pCSDJTSbOh/YyJsx6JwY2wxUPBIDDux6w 7yLmwNhcQqvx+tp7TidE0L9Sru606HtIliRNSQLdjSoy/Oqb5AqoXQCFfC1ji+bKgVhD 0raL38gSWVQ7SZLD2wRQKEYKLcXW+X0/CUaIAsRMCYkEDP9lFAGQJWKL3C8QBJpT9+dH xJ4M/HxQimblmQQgtqdZK2nygywvSM7PY0AXvh6/QTc4RHRjNZFrxqQxOdG+tfTUk/ou 4QAuws9QjYau5F679D16k6ItUZ/InJQHOwv3iofrKpj6b9oUXQO6OcxDujN3WoMC9iFN ZDVw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=IRZhR4rj; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id h24si3707671ejq.296.2020.08.06.10.45.06; Thu, 06 Aug 2020 10:45:28 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=IRZhR4rj; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1729610AbgHFRmk (ORCPT + 99 others); Thu, 6 Aug 2020 13:42:40 -0400 Received: from mail.kernel.org ([198.145.29.99]:54824 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1729642AbgHFRbn (ORCPT ); Thu, 6 Aug 2020 13:31:43 -0400 Received: from disco-boy.misterjones.org (disco-boy.misterjones.org [51.254.78.96]) (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 CF96B22CF6; Thu, 6 Aug 2020 12:25:37 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1596716738; bh=jpYTCCwR4fZP8SyH14e+ACdHwa6e8RH80YNL1hLi6L8=; h=Date:From:To:Cc:Subject:In-Reply-To:References:From; b=IRZhR4rjAD9KvhCFxHEGYa6XFLYelDK0rOrJrpXDwilVmtTt1wRyxDSC4Wswclshs B9Q7GB075Ei7Z37D1jXxrm1iIYpDK/dls9Z2XQoCLXwexQHnOD9Fobkp8o7ddWlAJ0 IUPhOkDgbXgI0PhArND5uIY0mRYirezqMMpSjl2A= Received: from disco-boy.misterjones.org ([51.254.78.96] helo=www.loen.fr) by disco-boy.misterjones.org with esmtpsa (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.92) (envelope-from ) id 1k3exk-000Gxu-7i; Thu, 06 Aug 2020 13:25:36 +0100 MIME-Version: 1.0 Content-Type: text/plain; charset=US-ASCII; format=flowed Content-Transfer-Encoding: 7bit Date: Thu, 06 Aug 2020 13:25:35 +0100 From: Marc Zyngier To: Jason Liu Cc: Sudeep Holla , catalin.marinas@arm.com, will@kernel.org, sashal@kernel.org, linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org Subject: Re: [PATCH 1/1] arm64: kexec: no need to do irq_chip->irq_mask if it already masked In-Reply-To: References: <20200804085657.10776-1-jason.hui.liu@nxp.com> <20200804113850.GB15199@bogus> <3c63ae0cc3a7b5bad5d4638a9870340e@kernel.org> User-Agent: Roundcube Webmail/1.4.5 Message-ID: <1e4496c263e486be3438f2797630164a@kernel.org> X-Sender: maz@kernel.org X-SA-Exim-Connect-IP: 51.254.78.96 X-SA-Exim-Rcpt-To: jason.hui.liu@nxp.com, sudeep.holla@arm.com, catalin.marinas@arm.com, will@kernel.org, sashal@kernel.org, linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org X-SA-Exim-Mail-From: maz@kernel.org X-SA-Exim-Scanned: No (on disco-boy.misterjones.org); SAEximRunCond expanded to false Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On 2020-08-06 11:05, Jason Liu wrote: >> -----Original Message----- >> From: Marc Zyngier [...] >> > No, this patch is not papering over a much deeper issue in the driver. >> > This is just to make things better for the ARM64 kexec. >> >> Yes, I'm sure it is... However: >> >> request_irq() >> > clock off> >> if (chip->irq_mask && !irqd_irq_masked(&desc->irq_data)) >> >> >> This is because the PM in the irqsteer driver is completely busted: >> request_irq() should get a reference on the driver to prevent it from >> being >> suspended. Since you don't implement it correctly, this doesn't happen >> and >> your "improvement" doesn't help at all. > > The request_irq will get a reference to prevent the irqchip from being > suspended due to it call > irq_chip_pm_get(). I am pretty sure we have implemented correctly and > that is also the common Linux code. Then it seems you cannot read your own driver. At no point do you set the parent_device that would give you a fighting chance to get the device clocked and powered on. How does it work? Magic? > In order to save power and let the irqchip enter into runtime SUSPEND > mode, the driver will call free_irq() > When it was not used(idle). Then free_irq() will decrease the > reference and let the irqchip enter suspend state. The reference count on *what*? There is nothing to take a reference on. So yes, you understand how the core kernel works. But you don't seem to notice that there is no link between the irq and the device that implements the controller. > So, when the irqchip entered suspend, which means there is no user for > the irqchip and all the irqs were DISABLED + MASKED. > Due to the runtimePM support for the irqchip, when kexec runs, it will > sometimes meet the situation that the irqchip is suspend due to > no users for it. So from either the performance(time cost) or coding > logic, the machine_kexec_mask_interrupts() should not do > double mask for the irqs which already masked. I strongly suggest you start by fixing the damn driver first. In the meantime, NAK to this patch. M. -- Jazz is not dead. It just smells funny...