Linux clock framework development
 help / color / mirror / Atom feed
* [PATCH] clk: qcom: gdsc: treat optional supplies as optional
@ 2024-03-25  8:19 Johan Hovold
  2024-03-25 14:01 ` Mark Brown
  0 siblings, 1 reply; 12+ messages in thread
From: Johan Hovold @ 2024-03-25  8:19 UTC (permalink / raw)
  To: Bjorn Andersson
  Cc: Konrad Dybcio, Michael Turquette, Stephen Boyd, Liam Girdwood,
	Mark Brown, Dmitry Baryshkov, linux-arm-msm, linux-clk,
	linux-kernel, Johan Hovold

Since commit deebc79b28d6 ("clk: qcom: gpucc-sc8280xp: Add external
supply for GX gdsc") the GDSC supply must be treated as optional to
avoid warnings like:

	gpu_cc-sc8280xp 3d90000.clock-controller: supply vdd-gfx not found, using dummy regulator

on SC8280XP.

Fortunately, the driver is already prepared to handle this by checking
that the regulator pointer is non-NULL before use.

This also avoids triggering a potential deadlock on SC8280XP even if the
underlying issue still remains for the derivative platforms like SA8295P
that actually use the supply.

Fixes: deebc79b28d6 ("clk: qcom: gpucc-sc8280xp: Add external supply for GX gdsc")
Link: https://lore.kernel.org/lkml/Zf25Sv2x9WaCFuIH@hovoldconsulting.com/
Signed-off-by: Johan Hovold <johan+linaro@kernel.org>
---
 drivers/clk/qcom/gdsc.c | 11 ++++++++---
 1 file changed, 8 insertions(+), 3 deletions(-)

diff --git a/drivers/clk/qcom/gdsc.c b/drivers/clk/qcom/gdsc.c
index e7a4068b9f39..df9618ab7eea 100644
--- a/drivers/clk/qcom/gdsc.c
+++ b/drivers/clk/qcom/gdsc.c
@@ -487,9 +487,14 @@ int gdsc_register(struct gdsc_desc *desc,
 		if (!scs[i] || !scs[i]->supply)
 			continue;
 
-		scs[i]->rsupply = devm_regulator_get(dev, scs[i]->supply);
-		if (IS_ERR(scs[i]->rsupply))
-			return PTR_ERR(scs[i]->rsupply);
+		scs[i]->rsupply = devm_regulator_get_optional(dev, scs[i]->supply);
+		if (IS_ERR(scs[i]->rsupply)) {
+			ret = PTR_ERR(scs[i]->rsupply);
+			if (ret != -ENODEV)
+				return ret;
+
+			scs[i]->rsupply = NULL;
+		}
 	}
 
 	data->num_domains = num;
-- 
2.43.2


^ permalink raw reply related	[flat|nested] 12+ messages in thread

* [PATCH] clk: qcom: gdsc: treat optional supplies as optional
@ 2024-03-25  8:58 Johan Hovold
  2024-03-25 14:02 ` Bjorn Andersson
  2024-04-04 21:22 ` Bjorn Andersson
  0 siblings, 2 replies; 12+ messages in thread
From: Johan Hovold @ 2024-03-25  8:58 UTC (permalink / raw)
  To: Bjorn Andersson
  Cc: Konrad Dybcio, Michael Turquette, Stephen Boyd, Liam Girdwood,
	Mark Brown, Dmitry Baryshkov, linux-arm-msm, linux-clk,
	linux-kernel, Johan Hovold

Since commit deebc79b28d6 ("clk: qcom: gpucc-sc8280xp: Add external
supply for GX gdsc") the GDSC supply must be treated as optional to
avoid warnings like:

	gpu_cc-sc8280xp 3d90000.clock-controller: supply vdd-gfx not found, using dummy regulator

on SC8280XP.

Fortunately, the driver is already prepared to handle this by checking
that the regulator pointer is non-NULL before use.

This also avoids triggering a potential deadlock on SC8280XP even if the
underlying issue still remains for the derivative platforms like SA8295P
that actually use the supply.

Fixes: deebc79b28d6 ("clk: qcom: gpucc-sc8280xp: Add external supply for GX gdsc")
Link: https://lore.kernel.org/lkml/Zf25Sv2x9WaCFuIH@hovoldconsulting.com/
Signed-off-by: Johan Hovold <johan+linaro@kernel.org>
---
 drivers/clk/qcom/gdsc.c | 11 ++++++++---
 1 file changed, 8 insertions(+), 3 deletions(-)

diff --git a/drivers/clk/qcom/gdsc.c b/drivers/clk/qcom/gdsc.c
index e7a4068b9f39..df9618ab7eea 100644
--- a/drivers/clk/qcom/gdsc.c
+++ b/drivers/clk/qcom/gdsc.c
@@ -487,9 +487,14 @@ int gdsc_register(struct gdsc_desc *desc,
 		if (!scs[i] || !scs[i]->supply)
 			continue;
 
-		scs[i]->rsupply = devm_regulator_get(dev, scs[i]->supply);
-		if (IS_ERR(scs[i]->rsupply))
-			return PTR_ERR(scs[i]->rsupply);
+		scs[i]->rsupply = devm_regulator_get_optional(dev, scs[i]->supply);
+		if (IS_ERR(scs[i]->rsupply)) {
+			ret = PTR_ERR(scs[i]->rsupply);
+			if (ret != -ENODEV)
+				return ret;
+
+			scs[i]->rsupply = NULL;
+		}
 	}
 
 	data->num_domains = num;
-- 
2.43.0


^ permalink raw reply related	[flat|nested] 12+ messages in thread

* Re: [PATCH] clk: qcom: gdsc: treat optional supplies as optional
  2024-03-25  8:19 Johan Hovold
@ 2024-03-25 14:01 ` Mark Brown
  2024-03-25 14:10   ` Dmitry Baryshkov
  2024-03-26  7:16   ` Johan Hovold
  0 siblings, 2 replies; 12+ messages in thread
From: Mark Brown @ 2024-03-25 14:01 UTC (permalink / raw)
  To: Johan Hovold
  Cc: Bjorn Andersson, Konrad Dybcio, Michael Turquette, Stephen Boyd,
	Liam Girdwood, Dmitry Baryshkov, linux-arm-msm, linux-clk,
	linux-kernel

[-- Attachment #1: Type: text/plain, Size: 420 bytes --]

On Mon, Mar 25, 2024 at 09:19:57AM +0100, Johan Hovold wrote:
> Since commit deebc79b28d6 ("clk: qcom: gpucc-sc8280xp: Add external
> supply for GX gdsc") the GDSC supply must be treated as optional to
> avoid warnings like:
> 
> 	gpu_cc-sc8280xp 3d90000.clock-controller: supply vdd-gfx not found, using dummy regulator
> 
> on SC8280XP.

Can this device actually run with the supply physically disconnected?

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 488 bytes --]

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [PATCH] clk: qcom: gdsc: treat optional supplies as optional
  2024-03-25  8:58 [PATCH] clk: qcom: gdsc: treat optional supplies as optional Johan Hovold
@ 2024-03-25 14:02 ` Bjorn Andersson
  2024-04-04 21:22 ` Bjorn Andersson
  1 sibling, 0 replies; 12+ messages in thread
From: Bjorn Andersson @ 2024-03-25 14:02 UTC (permalink / raw)
  To: Johan Hovold
  Cc: Konrad Dybcio, Michael Turquette, Stephen Boyd, Liam Girdwood,
	Mark Brown, Dmitry Baryshkov, linux-arm-msm, linux-clk,
	linux-kernel

On Mon, Mar 25, 2024 at 09:58:35AM +0100, Johan Hovold wrote:
> Since commit deebc79b28d6 ("clk: qcom: gpucc-sc8280xp: Add external
> supply for GX gdsc") the GDSC supply must be treated as optional to
> avoid warnings like:
> 
> 	gpu_cc-sc8280xp 3d90000.clock-controller: supply vdd-gfx not found, using dummy regulator
> 
> on SC8280XP.
> 
> Fortunately, the driver is already prepared to handle this by checking
> that the regulator pointer is non-NULL before use.
> 
> This also avoids triggering a potential deadlock on SC8280XP even if the
> underlying issue still remains for the derivative platforms like SA8295P
> that actually use the supply.
> 
> Fixes: deebc79b28d6 ("clk: qcom: gpucc-sc8280xp: Add external supply for GX gdsc")
> Link: https://lore.kernel.org/lkml/Zf25Sv2x9WaCFuIH@hovoldconsulting.com/
> Signed-off-by: Johan Hovold <johan+linaro@kernel.org>

Thanks for fixing this, it never made it off my todo list...

Reviewed-by: Bjorn Andersson <andersson@kernel.org>

Regards,
Bjorn

> ---
>  drivers/clk/qcom/gdsc.c | 11 ++++++++---
>  1 file changed, 8 insertions(+), 3 deletions(-)
> 
> diff --git a/drivers/clk/qcom/gdsc.c b/drivers/clk/qcom/gdsc.c
> index e7a4068b9f39..df9618ab7eea 100644
> --- a/drivers/clk/qcom/gdsc.c
> +++ b/drivers/clk/qcom/gdsc.c
> @@ -487,9 +487,14 @@ int gdsc_register(struct gdsc_desc *desc,
>  		if (!scs[i] || !scs[i]->supply)
>  			continue;
>  
> -		scs[i]->rsupply = devm_regulator_get(dev, scs[i]->supply);
> -		if (IS_ERR(scs[i]->rsupply))
> -			return PTR_ERR(scs[i]->rsupply);
> +		scs[i]->rsupply = devm_regulator_get_optional(dev, scs[i]->supply);
> +		if (IS_ERR(scs[i]->rsupply)) {
> +			ret = PTR_ERR(scs[i]->rsupply);
> +			if (ret != -ENODEV)
> +				return ret;
> +
> +			scs[i]->rsupply = NULL;
> +		}
>  	}
>  
>  	data->num_domains = num;
> -- 
> 2.43.0
> 

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [PATCH] clk: qcom: gdsc: treat optional supplies as optional
  2024-03-25 14:01 ` Mark Brown
@ 2024-03-25 14:10   ` Dmitry Baryshkov
  2024-03-25 19:21     ` Konrad Dybcio
  2024-03-26  7:16   ` Johan Hovold
  1 sibling, 1 reply; 12+ messages in thread
From: Dmitry Baryshkov @ 2024-03-25 14:10 UTC (permalink / raw)
  To: Mark Brown
  Cc: Johan Hovold, Bjorn Andersson, Konrad Dybcio, Michael Turquette,
	Stephen Boyd, Liam Girdwood, linux-arm-msm, linux-clk,
	linux-kernel

On Mon, 25 Mar 2024 at 16:01, Mark Brown <broonie@kernel.org> wrote:
>
> On Mon, Mar 25, 2024 at 09:19:57AM +0100, Johan Hovold wrote:
> > Since commit deebc79b28d6 ("clk: qcom: gpucc-sc8280xp: Add external
> > supply for GX gdsc") the GDSC supply must be treated as optional to
> > avoid warnings like:
> >
> >       gpu_cc-sc8280xp 3d90000.clock-controller: supply vdd-gfx not found, using dummy regulator
> >
> > on SC8280XP.
>
> Can this device actually run with the supply physically disconnected?

On SC8280XP this is supplied via power-domain instead of the supply.

-- 
With best wishes
Dmitry

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [PATCH] clk: qcom: gdsc: treat optional supplies as optional
  2024-03-25 14:10   ` Dmitry Baryshkov
@ 2024-03-25 19:21     ` Konrad Dybcio
  2024-03-26  7:20       ` Johan Hovold
  0 siblings, 1 reply; 12+ messages in thread
From: Konrad Dybcio @ 2024-03-25 19:21 UTC (permalink / raw)
  To: Dmitry Baryshkov, Mark Brown
  Cc: Johan Hovold, Bjorn Andersson, Michael Turquette, Stephen Boyd,
	Liam Girdwood, linux-arm-msm, linux-clk, linux-kernel

On 25.03.2024 3:10 PM, Dmitry Baryshkov wrote:
> On Mon, 25 Mar 2024 at 16:01, Mark Brown <broonie@kernel.org> wrote:
>>
>> On Mon, Mar 25, 2024 at 09:19:57AM +0100, Johan Hovold wrote:
>>> Since commit deebc79b28d6 ("clk: qcom: gpucc-sc8280xp: Add external
>>> supply for GX gdsc") the GDSC supply must be treated as optional to
>>> avoid warnings like:
>>>
>>>       gpu_cc-sc8280xp 3d90000.clock-controller: supply vdd-gfx not found, using dummy regulator
>>>
>>> on SC8280XP.
>>
>> Can this device actually run with the supply physically disconnected?
> 
> On SC8280XP this is supplied via power-domain instead of the supply.

I think Dmitry is asking about this bit:

if (ret != -ENODEV)
	return ret;

which is basically repeating the difference that _optional makes

Konrad

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [PATCH] clk: qcom: gdsc: treat optional supplies as optional
  2024-03-25 14:01 ` Mark Brown
  2024-03-25 14:10   ` Dmitry Baryshkov
@ 2024-03-26  7:16   ` Johan Hovold
  2024-03-26 11:24     ` Mark Brown
  1 sibling, 1 reply; 12+ messages in thread
From: Johan Hovold @ 2024-03-26  7:16 UTC (permalink / raw)
  To: Mark Brown
  Cc: Johan Hovold, Bjorn Andersson, Konrad Dybcio, Michael Turquette,
	Stephen Boyd, Liam Girdwood, Dmitry Baryshkov, linux-arm-msm,
	linux-clk, linux-kernel

[-- Attachment #1: Type: text/plain, Size: 990 bytes --]

On Mon, Mar 25, 2024 at 02:01:16PM +0000, Mark Brown wrote:
> On Mon, Mar 25, 2024 at 09:19:57AM +0100, Johan Hovold wrote:
> > Since commit deebc79b28d6 ("clk: qcom: gpucc-sc8280xp: Add external
> > supply for GX gdsc") the GDSC supply must be treated as optional to
> > avoid warnings like:
> > 
> > 	gpu_cc-sc8280xp 3d90000.clock-controller: supply vdd-gfx not found, using dummy regulator
> > 
> > on SC8280XP.
> 
> Can this device actually run with the supply physically disconnected?

The gpucc-sc8280xp driver is used for both sc8280xp and a couple of
derivative platforms. AFAIU only the latter use this supply, but the
driver unfortunately currently cannot tell which platform it runs on and
requests the vdd-gfx unconditionally.

An alternative would have been to add new compatible strings for the
derivate platforms and only request the regulator for those as I
mentioned here:

	https://lore.kernel.org/all/ZgFGCGgbY-4Xd_2k@hovoldconsulting.com/

Johan

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 228 bytes --]

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [PATCH] clk: qcom: gdsc: treat optional supplies as optional
  2024-03-25 19:21     ` Konrad Dybcio
@ 2024-03-26  7:20       ` Johan Hovold
  0 siblings, 0 replies; 12+ messages in thread
From: Johan Hovold @ 2024-03-26  7:20 UTC (permalink / raw)
  To: Konrad Dybcio
  Cc: Dmitry Baryshkov, Mark Brown, Johan Hovold, Bjorn Andersson,
	Michael Turquette, Stephen Boyd, Liam Girdwood, linux-arm-msm,
	linux-clk, linux-kernel

On Mon, Mar 25, 2024 at 08:21:24PM +0100, Konrad Dybcio wrote:
> On 25.03.2024 3:10 PM, Dmitry Baryshkov wrote:
> > On Mon, 25 Mar 2024 at 16:01, Mark Brown <broonie@kernel.org> wrote:
> >>
> >> On Mon, Mar 25, 2024 at 09:19:57AM +0100, Johan Hovold wrote:
> >>> Since commit deebc79b28d6 ("clk: qcom: gpucc-sc8280xp: Add external
> >>> supply for GX gdsc") the GDSC supply must be treated as optional to
> >>> avoid warnings like:
> >>>
> >>>       gpu_cc-sc8280xp 3d90000.clock-controller: supply vdd-gfx not found, using dummy regulator
> >>>
> >>> on SC8280XP.
> >>
> >> Can this device actually run with the supply physically disconnected?
> > 
> > On SC8280XP this is supplied via power-domain instead of the supply.
> 
> I think Dmitry is asking about this bit:

AFAICT, Dmitry did not ask anything.

> if (ret != -ENODEV)
> 	return ret;
> 
> which is basically repeating the difference that _optional makes

Not sure what you meant by this either. This is how the regulator
subsystem works.

Johan

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [PATCH] clk: qcom: gdsc: treat optional supplies as optional
  2024-03-26  7:16   ` Johan Hovold
@ 2024-03-26 11:24     ` Mark Brown
  0 siblings, 0 replies; 12+ messages in thread
From: Mark Brown @ 2024-03-26 11:24 UTC (permalink / raw)
  To: Johan Hovold
  Cc: Johan Hovold, Bjorn Andersson, Konrad Dybcio, Michael Turquette,
	Stephen Boyd, Liam Girdwood, Dmitry Baryshkov, linux-arm-msm,
	linux-clk, linux-kernel

[-- Attachment #1: Type: text/plain, Size: 328 bytes --]

On Tue, Mar 26, 2024 at 08:16:16AM +0100, Johan Hovold wrote:

> An alternative would have been to add new compatible strings for the
> derivate platforms and only request the regulator for those as I
> mentioned here:

> 	https://lore.kernel.org/all/ZgFGCGgbY-4Xd_2k@hovoldconsulting.com/

Ah, yes - that would be much better.

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 488 bytes --]

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [PATCH] clk: qcom: gdsc: treat optional supplies as optional
  2024-03-25  8:58 [PATCH] clk: qcom: gdsc: treat optional supplies as optional Johan Hovold
  2024-03-25 14:02 ` Bjorn Andersson
@ 2024-04-04 21:22 ` Bjorn Andersson
  2024-04-22 10:31   ` Linux regression tracking (Thorsten Leemhuis)
  1 sibling, 1 reply; 12+ messages in thread
From: Bjorn Andersson @ 2024-04-04 21:22 UTC (permalink / raw)
  To: Johan Hovold
  Cc: Konrad Dybcio, Michael Turquette, Stephen Boyd, Liam Girdwood,
	Mark Brown, Dmitry Baryshkov, linux-arm-msm, linux-clk,
	linux-kernel


On Mon, 25 Mar 2024 09:58:35 +0100, Johan Hovold wrote:
> Since commit deebc79b28d6 ("clk: qcom: gpucc-sc8280xp: Add external
> supply for GX gdsc") the GDSC supply must be treated as optional to
> avoid warnings like:
> 
> 	gpu_cc-sc8280xp 3d90000.clock-controller: supply vdd-gfx not found, using dummy regulator
> 
> on SC8280XP.
> 
> [...]

Applied, thanks!

[1/1] clk: qcom: gdsc: treat optional supplies as optional
      commit: 6677196fb1932e60b88ad0794a7ae532df178654

Best regards,
-- 
Bjorn Andersson <andersson@kernel.org>

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [PATCH] clk: qcom: gdsc: treat optional supplies as optional
  2024-04-04 21:22 ` Bjorn Andersson
@ 2024-04-22 10:31   ` Linux regression tracking (Thorsten Leemhuis)
  2024-04-22 18:31     ` Bjorn Andersson
  0 siblings, 1 reply; 12+ messages in thread
From: Linux regression tracking (Thorsten Leemhuis) @ 2024-04-22 10:31 UTC (permalink / raw)
  To: Bjorn Andersson, Johan Hovold
  Cc: Konrad Dybcio, Michael Turquette, Stephen Boyd, Liam Girdwood,
	Mark Brown, Dmitry Baryshkov, linux-arm-msm, linux-clk,
	linux-kernel, Linux kernel regressions list

On 04.04.24 23:22, Bjorn Andersson wrote:
> 
> On Mon, 25 Mar 2024 09:58:35 +0100, Johan Hovold wrote:
>> Since commit deebc79b28d6 ("clk: qcom: gpucc-sc8280xp: Add external
>> supply for GX gdsc") the GDSC supply must be treated as optional to
>> avoid warnings like:
>>
>> 	gpu_cc-sc8280xp 3d90000.clock-controller: supply vdd-gfx not found, using dummy regulator
>>
>> on SC8280XP.
>>
>> [...]
> 
> Applied, thanks!
> 
> [1/1] clk: qcom: gdsc: treat optional supplies as optional
>       commit: 6677196fb1932e60b88ad0794a7ae532df178654

Bjorn, quick question: this regression fix after more than two and a
half weeks is not yet mainlined. Is there a reason? Or am I missing
something here?

Ciao, Thorsten (wearing his 'the Linux kernel's regression tracker' hat)
--
Everything you wanna know about Linux kernel regression tracking:
https://linux-regtracking.leemhuis.info/about/#tldr
If I did something stupid, please tell me, as explained on that page.

#regzbot poke

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [PATCH] clk: qcom: gdsc: treat optional supplies as optional
  2024-04-22 10:31   ` Linux regression tracking (Thorsten Leemhuis)
@ 2024-04-22 18:31     ` Bjorn Andersson
  0 siblings, 0 replies; 12+ messages in thread
From: Bjorn Andersson @ 2024-04-22 18:31 UTC (permalink / raw)
  To: Linux regressions mailing list
  Cc: Johan Hovold, Konrad Dybcio, Michael Turquette, Stephen Boyd,
	Liam Girdwood, Mark Brown, Dmitry Baryshkov, linux-arm-msm,
	linux-clk, linux-kernel

On Mon, Apr 22, 2024 at 12:31:37PM +0200, Linux regression tracking (Thorsten Leemhuis) wrote:
> On 04.04.24 23:22, Bjorn Andersson wrote:
> > 
> > On Mon, 25 Mar 2024 09:58:35 +0100, Johan Hovold wrote:
> >> Since commit deebc79b28d6 ("clk: qcom: gpucc-sc8280xp: Add external
> >> supply for GX gdsc") the GDSC supply must be treated as optional to
> >> avoid warnings like:
> >>
> >> 	gpu_cc-sc8280xp 3d90000.clock-controller: supply vdd-gfx not found, using dummy regulator
> >>
> >> on SC8280XP.
> >>
> >> [...]
> > 
> > Applied, thanks!
> > 
> > [1/1] clk: qcom: gdsc: treat optional supplies as optional
> >       commit: 6677196fb1932e60b88ad0794a7ae532df178654
> 
> Bjorn, quick question: this regression fix after more than two and a
> half weeks is not yet mainlined. Is there a reason? Or am I missing
> something here?
> 

I failed to propagate it, until only a few days back. It should show up
shortly.

Thanks,
Bjorn

> Ciao, Thorsten (wearing his 'the Linux kernel's regression tracker' hat)
> --
> Everything you wanna know about Linux kernel regression tracking:
> https://linux-regtracking.leemhuis.info/about/#tldr
> If I did something stupid, please tell me, as explained on that page.
> 
> #regzbot poke

^ permalink raw reply	[flat|nested] 12+ messages in thread

end of thread, other threads:[~2024-04-22 18:31 UTC | newest]

Thread overview: 12+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-03-25  8:58 [PATCH] clk: qcom: gdsc: treat optional supplies as optional Johan Hovold
2024-03-25 14:02 ` Bjorn Andersson
2024-04-04 21:22 ` Bjorn Andersson
2024-04-22 10:31   ` Linux regression tracking (Thorsten Leemhuis)
2024-04-22 18:31     ` Bjorn Andersson
  -- strict thread matches above, loose matches on Subject: below --
2024-03-25  8:19 Johan Hovold
2024-03-25 14:01 ` Mark Brown
2024-03-25 14:10   ` Dmitry Baryshkov
2024-03-25 19:21     ` Konrad Dybcio
2024-03-26  7:20       ` Johan Hovold
2024-03-26  7:16   ` Johan Hovold
2024-03-26 11:24     ` Mark Brown

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox