diff mbox series

[v2,2/4] x86/PCI: Simplify code by using the new dmi_get_bios_year() helper

Message ID 20180301180220.11333-3-andriy.shevchenko@linux.intel.com
State Not Applicable
Headers show
Series x86, dmi: introduce and use dmi_get_bios_year() | expand

Commit Message

Andy Shevchenko March 1, 2018, 6:02 p.m. UTC
Use new dmi_get_bios_year() helper instead of open-coding its
functionality.

No changes in functionality.

Acked-by: Bjorn Helgaas <bhelgaas@google.com>
Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
---
 arch/x86/pci/acpi.c            | 10 +++++-----
 arch/x86/pci/direct.c          |  5 ++---
 arch/x86/pci/mmconfig-shared.c |  9 ++-------
 3 files changed, 9 insertions(+), 15 deletions(-)

Comments

Jean Delvare March 13, 2018, 10:45 a.m. UTC | #1
Hi Andy,

On Thu,  1 Mar 2018 20:02:18 +0200, Andy Shevchenko wrote:
> Use new dmi_get_bios_year() helper instead of open-coding its
> functionality.
> 
> No changes in functionality.
> 
> Acked-by: Bjorn Helgaas <bhelgaas@google.com>
> Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
> ---
>  arch/x86/pci/acpi.c            | 10 +++++-----
>  arch/x86/pci/direct.c          |  5 ++---
>  arch/x86/pci/mmconfig-shared.c |  9 ++-------
>  3 files changed, 9 insertions(+), 15 deletions(-)
> 
> diff --git a/arch/x86/pci/acpi.c b/arch/x86/pci/acpi.c
> index 7df49c40665e..52b22137243f 100644
> --- a/arch/x86/pci/acpi.c
> +++ b/arch/x86/pci/acpi.c
> @@ -138,14 +138,14 @@ static const struct dmi_system_id pci_crs_quirks[] __initconst = {
>  	{}
>  };
>  
> +#define in_range(b, first, len) ((b) >= (first) && (b) <= (first) + (len) - 1)
> +
>  void __init pci_acpi_crs_quirks(void)
>  {
> -	int year;
> +	int year = dmi_get_bios_year();
>  
> -	if (dmi_get_date(DMI_BIOS_DATE, &year, NULL, NULL) && year < 2008) {
> -		if (iomem_resource.end <= 0xffffffff)
> -			pci_use_crs = false;
> -	}
> +	if (in_range(year, 0, 2008) && iomem_resource.end <= 0xffffffff)

I don't like this, sorry. I find "in_range" confusing, there are many
definitions of it throughout the kernel which differ in the details
(some take a length as 3rd parameter, others take upper boundary, some
include the boundaries, some do not...) The following:

	if (year >= 0 && year < 2008 && iomem_resource.end <= 0xffffffff)

is a lot more readable in my opinion. No need to look-up a tricky macro
definition to figure what happens if year is 2008.

> +		pci_use_crs = false;
>  
>  	dmi_check_system(pci_crs_quirks);
diff mbox series

Patch

diff --git a/arch/x86/pci/acpi.c b/arch/x86/pci/acpi.c
index 7df49c40665e..52b22137243f 100644
--- a/arch/x86/pci/acpi.c
+++ b/arch/x86/pci/acpi.c
@@ -138,14 +138,14 @@  static const struct dmi_system_id pci_crs_quirks[] __initconst = {
 	{}
 };
 
+#define in_range(b, first, len) ((b) >= (first) && (b) <= (first) + (len) - 1)
+
 void __init pci_acpi_crs_quirks(void)
 {
-	int year;
+	int year = dmi_get_bios_year();
 
-	if (dmi_get_date(DMI_BIOS_DATE, &year, NULL, NULL) && year < 2008) {
-		if (iomem_resource.end <= 0xffffffff)
-			pci_use_crs = false;
-	}
+	if (in_range(year, 0, 2008) && iomem_resource.end <= 0xffffffff)
+		pci_use_crs = false;
 
 	dmi_check_system(pci_crs_quirks);
 
diff --git a/arch/x86/pci/direct.c b/arch/x86/pci/direct.c
index 2d9503323d10..a51074c55982 100644
--- a/arch/x86/pci/direct.c
+++ b/arch/x86/pci/direct.c
@@ -195,14 +195,13 @@  static const struct pci_raw_ops pci_direct_conf2 = {
 static int __init pci_sanity_check(const struct pci_raw_ops *o)
 {
 	u32 x = 0;
-	int year, devfn;
+	int devfn;
 
 	if (pci_probe & PCI_NO_CHECKS)
 		return 1;
 	/* Assume Type 1 works for newer systems.
 	   This handles machines that don't have anything on PCI Bus 0. */
-	dmi_get_date(DMI_BIOS_DATE, &year, NULL, NULL);
-	if (year >= 2001)
+	if (dmi_get_bios_year() >= 2001)
 		return 1;
 
 	for (devfn = 0; devfn < 0x100; devfn++) {
diff --git a/arch/x86/pci/mmconfig-shared.c b/arch/x86/pci/mmconfig-shared.c
index 96684d0adcf9..5b93f9933562 100644
--- a/arch/x86/pci/mmconfig-shared.c
+++ b/arch/x86/pci/mmconfig-shared.c
@@ -547,19 +547,14 @@  static void __init pci_mmcfg_reject_broken(int early)
 static int __init acpi_mcfg_check_entry(struct acpi_table_mcfg *mcfg,
 					struct acpi_mcfg_allocation *cfg)
 {
-	int year;
-
 	if (cfg->address < 0xFFFFFFFF)
 		return 0;
 
 	if (!strncmp(mcfg->header.oem_id, "SGI", 3))
 		return 0;
 
-	if (mcfg->header.revision >= 1) {
-		if (dmi_get_date(DMI_BIOS_DATE, &year, NULL, NULL) &&
-		    year >= 2010)
-			return 0;
-	}
+	if (mcfg->header.revision >= 1 && dmi_get_bios_year() >= 2010)
+		return 0;
 
 	pr_err(PREFIX "MCFG region for %04x [bus %02x-%02x] at %#llx "
 	       "is above 4GB, ignored\n", cfg->pci_segment,