linux-watchdog.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Lyude Paul <lyude@redhat.com>
To: Guenter Roeck <linux@roeck-us.net>, Wim Van Sebroeck <wim@iguana.be>
Cc: linux-watchdog@vger.kernel.org, linux-kernel@vger.kernel.org,
	"Zoltán Böszörményi" <zboszor@pr.hu>
Subject: Re: [05/12] watchdog: sp5100_tco: Clean up sp5100_tco_setupdevice
Date: Tue, 16 Jan 2018 14:55:57 -0500	[thread overview]
Message-ID: <1516132557.18904.12.camel@redhat.com> (raw)
In-Reply-To: <1514149457-20273-6-git-send-email-linux@roeck-us.net>

Thank you for this cleanup, the gotos that were in this code are really
confusing to read through! I'd recommend one very small change described
below. Assuming you add that in the next version:

Reviewed-by: Lyude Paul <lyude@redhat.com>

On Sun, 2017-12-24 at 13:04 -0800, Guenter Roeck wrote:
> There are too many unnecessary goto statements in sp5100_tco_setupdevice().
> Rearrange the code and limit goto statements to error handling.
> 
> Cc: Zoltán Böszörményi <zboszor@pr.hu>
> Signed-off-by: Guenter Roeck <linux@roeck-us.net>
> ---
>  drivers/watchdog/sp5100_tco.c | 62 ++++++++++++++++++++------------------
> -----
>  1 file changed, 29 insertions(+), 33 deletions(-)
> 
> diff --git a/drivers/watchdog/sp5100_tco.c b/drivers/watchdog/sp5100_tco.c
> index 0e816f2cdb07..5a13ab483c50 100644
> --- a/drivers/watchdog/sp5100_tco.c
> +++ b/drivers/watchdog/sp5100_tco.c
> @@ -396,48 +396,44 @@ static int sp5100_tco_setupdevice(void)
>  	pr_debug("Got 0x%04x from indirect I/O\n", val);
>  
>  	/* Check MMIO address conflict */
> -	if (request_mem_region_exclusive(val, SP5100_WDT_MEM_MAP_SIZE,
> -								dev_name))
> -		goto setup_wdt;
> -	else
> +	if (!request_mem_region_exclusive(val, SP5100_WDT_MEM_MAP_SIZE,
> +					  dev_name)) {
>  		pr_debug("MMIO address 0x%04x already in use\n", val);
> +		/*
> +		 * Secondly, Find the watchdog timer MMIO address
> +		 * from SBResource_MMIO register.
> +		 */
> +		if (tco_has_sp5100_reg_layout(sp5100_tco_pci)) {
> +			/* Read SBResource_MMIO from PCI config(PCI_Reg:
> 9Ch) */
> +			pci_read_config_dword(sp5100_tco_pci,
> +					      SP5100_SB_RESOURCE_MMIO_BASE,
> +					      &val);
> +		} else {
> +			/* Read SBResource_MMIO from AcpiMmioEn(PM_Reg:
> 24h) */
> +			val =
> sp5100_tco_read_pm_reg32(SB800_PM_ACPI_MMIO_EN);
> +		}
>  
> -	/*
> -	 * Secondly, Find the watchdog timer MMIO address
> -	 * from SBResource_MMIO register.
> -	 */
> -	if (tco_has_sp5100_reg_layout(sp5100_tco_pci)) {
> -		/* Read SBResource_MMIO from PCI config(PCI_Reg: 9Ch) */
> -		pci_read_config_dword(sp5100_tco_pci,
> -				      SP5100_SB_RESOURCE_MMIO_BASE, &val);
> -	} else {
> -		/* Read SBResource_MMIO from AcpiMmioEn(PM_Reg: 24h) */
> -		val = sp5100_tco_read_pm_reg32(SB800_PM_ACPI_MMIO_EN);
> -	}
> -
> -	/* The SBResource_MMIO is enabled and mapped memory space? */
> -	if ((val & (SB800_ACPI_MMIO_DECODE_EN | SB800_ACPI_MMIO_SEL)) ==
> +		/* The SBResource_MMIO is enabled and mapped memory space?
> */
> +		if ((val & (SB800_ACPI_MMIO_DECODE_EN |
> SB800_ACPI_MMIO_SEL)) !=
>  						  SB800_ACPI_MMIO_DECODE_EN
Re-align this line since you're changing the code around here anyway

> ) {
> +			pr_notice("failed to find MMIO address, giving
> up.\n");
> +			ret = -ENODEV;
> +			goto unreg_region;
> +		}
>  		/* Clear unnecessary the low twelve bits */
>  		val &= ~0xFFF;
>  		/* Add the Watchdog Timer offset to base address. */
>  		val += SB800_PM_WDT_MMIO_OFFSET;
>  		/* Check MMIO address conflict */
> -		if (request_mem_region_exclusive(val,
> SP5100_WDT_MEM_MAP_SIZE,
> -								   dev_name
> )) {
> -			pr_debug("Got 0x%04x from SBResource_MMIO
> register\n",
> -				val);
> -			goto setup_wdt;
> -		} else
> +		if (!request_mem_region_exclusive(val,
> SP5100_WDT_MEM_MAP_SIZE,
> +						  dev_name)) {
>  			pr_debug("MMIO address 0x%04x already in use\n",
> val);
> -	} else
> -		pr_debug("SBResource_MMIO is disabled(0x%04x)\n", val);
> -
> -	pr_notice("failed to find MMIO address, giving up.\n");
> -	ret = -ENODEV;
> -	goto  unreg_region;
> +			ret = -EBUSY;
> +			goto unreg_region;
> +		}
> +		pr_debug("Got 0x%04x from SBResource_MMIO register\n",
> val);
> +	}
>  
> -setup_wdt:
>  	tcobase_phys = val;
>  
>  	tcobase = ioremap(val, SP5100_WDT_MEM_MAP_SIZE);
> @@ -472,7 +468,7 @@ static int sp5100_tco_setupdevice(void)
>  	tco_timer_stop();
>  
>  	release_region(SP5100_IO_PM_INDEX_REG, SP5100_PM_IOPORTS_SIZE);
> -	/* Done */
> +
>  	return 0;
>  
>  unreg_mem_region:
-- 
Cheers,
	Lyude Paul

  reply	other threads:[~2018-01-16 19:55 UTC|newest]

Thread overview: 36+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-12-24 21:04 [PATCH 00/12] watchdog: sp5100_tco: Various improvements Guenter Roeck
2017-12-24 21:04 ` [PATCH 01/12] watchdog: sp5100_tco: Always use SP5100_IO_PM_{INDEX_REG,DATA_REG} Guenter Roeck
2017-12-24 21:04 ` [PATCH 02/12] watchdog: sp5100_tco: Fix watchdog disable bit Guenter Roeck
2017-12-24 21:04 ` [PATCH 03/12] watchdog: sp5100_tco: Use request_muxed_region where possible Guenter Roeck
2018-01-16 19:44   ` [03/12] " Lyude Paul
2018-01-16 20:16     ` Guenter Roeck
2017-12-24 21:04 ` [PATCH 04/12] watchdog: sp5100_tco: Use standard error codes Guenter Roeck
2018-01-16 19:46   ` [04/12] " Lyude Paul
2017-12-24 21:04 ` [PATCH 05/12] watchdog: sp5100_tco: Clean up sp5100_tco_setupdevice Guenter Roeck
2018-01-16 19:55   ` Lyude Paul [this message]
2018-01-16 20:22     ` [05/12] " Guenter Roeck
2018-01-17  1:28       ` Guenter Roeck
2017-12-24 21:04 ` [PATCH 06/12] watchdog: sp5100_tco: Match PCI device early Guenter Roeck
2018-01-16 19:58   ` [06/12] " Lyude Paul
2017-12-24 21:04 ` [PATCH 07/12] watchdog: sp5100_tco: Use dev_ print functions where possible Guenter Roeck
2018-01-16 20:00   ` [07/12] " Lyude Paul
2017-12-24 21:04 ` [PATCH 08/12] watchdog: sp5100_tco: Clean up function and variable names Guenter Roeck
2018-01-16 20:05   ` [08/12] " Lyude Paul
2017-12-24 21:04 ` [PATCH 09/12] watchdog: sp5100_tco: Convert to use watchdog subsystem Guenter Roeck
2017-12-24 21:04 ` [PATCH 10/12] watchdog: sp5100_tco: Use bit operations Guenter Roeck
2017-12-24 21:04 ` [PATCH 11/12] watchdog: sp5100-tco: Abort if watchdog is disabled by hardware Guenter Roeck
2018-01-09 22:58   ` [11/12] " Lyude Paul
2018-01-09 23:37     ` Guenter Roeck
2018-01-09 23:58       ` Gabriel C
2018-01-10  0:05         ` Guenter Roeck
2018-01-10  1:26           ` Gabriel C
2018-01-10  2:09             ` Guenter Roeck
2018-01-10  2:41               ` Gabriel C
2018-01-10  5:02                 ` Guenter Roeck
2018-01-10  0:04       ` Lyude Paul
2018-01-10  0:11         ` Guenter Roeck
2018-01-10  0:30           ` Lyude Paul
2017-12-24 21:04 ` [PATCH 12/12] watchdog: sp5100_tco: Add support for recent FCH versions Guenter Roeck
2018-01-04 12:01   ` Boszormenyi Zoltan
2018-01-04 19:21     ` Guenter Roeck
2018-01-10  8:34       ` Boszormenyi Zoltan

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1516132557.18904.12.camel@redhat.com \
    --to=lyude@redhat.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-watchdog@vger.kernel.org \
    --cc=linux@roeck-us.net \
    --cc=wim@iguana.be \
    --cc=zboszor@pr.hu \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).