Received: by 2002:a05:6a10:a0d1:0:0:0:0 with SMTP id j17csp158603pxa; Tue, 4 Aug 2020 02:11:40 -0700 (PDT) X-Google-Smtp-Source: ABdhPJy8hyZ//R0VXaZkQlFatoL9IsHvog0UmdWZzYFC+8AUUFu67xqgnlK6SDrcVIKfdEkdAztQ X-Received: by 2002:a17:906:a182:: with SMTP id s2mr13903007ejy.526.1596532300571; Tue, 04 Aug 2020 02:11:40 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1596532300; cv=none; d=google.com; s=arc-20160816; b=azYwz+d7KLGtjDjp62Ssk5b9Qa0Ly9KVvAnjzpAvIPSj1w691EVwsbFOgTZXmTqn35 36lJ977c7dKfOZ+msUF0RvzN5sQMY9suimvCYv9wRgsow07IdsJJ1tZntwLdygw3l58i xvlQA5RoLtKhsvgzaGAOpeQw9hHQkKG83WcC8qvGTycFfj1fTl96uI+U6JdhGIqgTjQJ 3jjxfXzOvtNIA0f5mqsggxfzqOEtWKcFRAJoHGPSsHaJltmGo8cyJ3R7D1VykvNL94+K 2W8l0FLOBON8rllgunzMbHOPWPlqMkacO65uS2Wcrr7eUY+PewpGO7t9CapM/mIhxssT NsLw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding :content-language:in-reply-to:mime-version:user-agent:date :message-id:from:references:cc:to:subject; bh=Vv/PENGpnFipzXUD82BKVNZ0yXx3IGGstA9SHJw9QNg=; b=ePbI4MTOM+um5XLi1hLSz8CXnRid10z5Pci1WmOy+LaBbNxWe8VAenVD/GvsdL5GiN D/S1gxKiM4PqldcO883y/M/zeyDgSy94JEqEk3rawiXvPvTyoyHqe/J3KGCXaWzO2iGz uLxccMdzwlSAAmPfiThnW8yz3XXO4AzkJh/xGnot1qh6QI/Jcxz1yxuLie4Hi8Yl5wWw 1DuVyUUmVQPxgBxpfKncGoRWqvHdriHkR3JgrBa4YriXKnSc0PgL5lIVKAZYtmRjzh1g YY4AiZPSGry0YjUlWqQGjwNZOEDPTjOn/aKSbLKgRjkSRx9ObowXjSx9ULc834+yR+hk iliA== ARC-Authentication-Results: i=1; mx.google.com; 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 Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id y21si12311933edt.483.2020.08.04.02.11.17; Tue, 04 Aug 2020 02:11:40 -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; 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 Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1725932AbgHDJLJ (ORCPT + 99 others); Tue, 4 Aug 2020 05:11:09 -0400 Received: from foss.arm.com ([217.140.110.172]:41630 "EHLO foss.arm.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1725811AbgHDJLJ (ORCPT ); Tue, 4 Aug 2020 05:11:09 -0400 Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.121.207.14]) by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id 2337B1FB; Tue, 4 Aug 2020 02:11:08 -0700 (PDT) Received: from [10.37.12.45] (unknown [10.37.12.45]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id 777193F718; Tue, 4 Aug 2020 02:11:06 -0700 (PDT) Subject: Re: [PATCH] memory: samsung: exynos5422-dmc: propagate error from exynos5_counters_get() To: Marek Szyprowski , linux-kernel@vger.kernel.org, linux-pm@vger.kernel.org Cc: Bartlomiej Zolnierkiewicz , Krzysztof Kozlowski , linux-samsung-soc@vger.kernel.org, Chanwoo Choi References: <20200804061210.5415-1-m.szyprowski@samsung.com> From: Lukasz Luba Message-ID: <24675559-b807-5b80-1318-805c1530ffb3@arm.com> Date: Tue, 4 Aug 2020 10:11:03 +0100 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101 Thunderbird/60.9.0 MIME-Version: 1.0 In-Reply-To: <20200804061210.5415-1-m.szyprowski@samsung.com> Content-Type: text/plain; charset=utf-8; format=flowed Content-Language: en-US Content-Transfer-Encoding: 7bit Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Hi Marek, On 8/4/20 7:12 AM, Marek Szyprowski wrote: > exynos5_counters_get() might fail with -EPROBE_DEFER if the driver for > devfreq event counter is not yet probed. Propagate that error value to > the caller to ensure that the exynos5422-dmc driver will be probed again > when devfreq event contuner is available. > > This fixes boot hang if both exynos5422-dmc and exynos-ppmu drivers are > compiled as modules. > > Signed-off-by: Marek Szyprowski > --- > drivers/memory/samsung/exynos5422-dmc.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/drivers/memory/samsung/exynos5422-dmc.c b/drivers/memory/samsung/exynos5422-dmc.c > index b9c7956e5031..639811a3eecb 100644 > --- a/drivers/memory/samsung/exynos5422-dmc.c > +++ b/drivers/memory/samsung/exynos5422-dmc.c > @@ -914,7 +914,7 @@ static int exynos5_dmc_get_status(struct device *dev, > } else { > ret = exynos5_counters_get(dmc, &load, &total); > if (ret < 0) > - return -EINVAL; > + return ret; > > /* To protect from overflow, divide by 1024 */ > stat->busy_time = load >> 10; > Thank you for the patch, LGTM. Some questions are still there, though. The function exynos5_performance_counters_init() should capture that the counters couldn't be enabled or set. So the functions: exynos5_counters_enable_edev() and exynos5_counters_set_event() must pass gently because devfreq device is registered. Then devfreq checks device status, and reaches the state when counters 'get' function returns that they are not ready... If that is a kind of 2-stage initialization, maybe we should add another 'check' in the exynos5_performance_counters_init() and call the devfreq_event_get_event() to make sure that we are ready to go, otherwise return ret from that function (which is probably EPROBE_DEFER) and not register the devfreq device. Marek do want to submit such patch or I should bake it and submit on top of this patch? Could you tell me how I can reproduce this? Do you simply load one module after another (exynos-ppmu than exynos5422-dmc) or in parallel? Regards, Lukasz