LKML Archive on lore.kernel.org
help / color / mirror / Atom feed
From: Jiang Liu <jiang.liu@linux.intel.com>
To: "Rafael J. Wysocki" <rjw@rjwysocki.net>,
	Thomas Gleixner <tglx@linutronix.de>,
	Bjorn Helgaas <bhelgaas@google.com>,
	Yinghai Lu <yinghai@kernel.org>, Borislav Petkov <bp@alien8.de>,
	Lv Zheng <lv.zheng@intel.com>, Len Brown <lenb@kernel.org>
Cc: Tony Luck <tony.luck@intel.com>,
	x86@kernel.org, linux-kernel@vger.kernel.org,
	linux-pci@vger.kernel.org, linux-acpi@vger.kernel.org,
	Jiang Liu <jiang.liu@linux.intel.com>
Subject: [Patch v2 04/22] ACPI: Use the length check for io resources as well
Date: Wed, 28 Jan 2015 18:57:22 +0800	[thread overview]
Message-ID: <1422442660-455-5-git-send-email-jiang.liu@linux.intel.com> (raw)
In-Reply-To: <1422442660-455-1-git-send-email-jiang.liu@linux.intel.com>

From: Thomas Gleixner <tglx@linutronix.de>

Also apply length check to IO resources.

[Jiang] Remove enforcement that resource starting address must be
non-zero.

Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Signed-off-by: Jiang Liu <jiang.liu@linux.intel.com>
---
 drivers/acpi/resource.c |   44 +++++++++++++++++++-------------------------
 1 file changed, 19 insertions(+), 25 deletions(-)

diff --git a/drivers/acpi/resource.c b/drivers/acpi/resource.c
index 3e7d9f6eb875..16d291c60277 100644
--- a/drivers/acpi/resource.c
+++ b/drivers/acpi/resource.c
@@ -117,31 +117,30 @@ bool acpi_dev_resource_memory(struct acpi_resource *ares, struct resource *res)
 }
 EXPORT_SYMBOL_GPL(acpi_dev_resource_memory);
 
-static unsigned int acpi_dev_ioresource_flags(u64 start, u64 end, u8 io_decode,
-					      bool window)
+static void acpi_dev_ioresource_flags(struct resource *res, u64 len,
+				      u8 io_decode, bool window)
 {
-	int flags = IORESOURCE_IO;
+	res->flags = IORESOURCE_IO;
 
-	if (io_decode == ACPI_DECODE_16)
-		flags |= IORESOURCE_IO_16BIT_ADDR;
+	if (!acpi_dev_resource_len_valid(res->start, res->end, len, true))
+		res->flags |= IORESOURCE_DISABLED;
 
-	if (start > end || end >= 0x10003)
-		flags |= IORESOURCE_DISABLED;
+	if (res->end >= 0x10003)
+		res->flags |= IORESOURCE_DISABLED;
 
-	if (window)
-		flags |= IORESOURCE_WINDOW;
+	if (io_decode == ACPI_DECODE_16)
+		res->flags |= IORESOURCE_IO_16BIT_ADDR;
 
-	return flags;
+	if (window)
+		res->flags |= IORESOURCE_WINDOW;
 }
 
 static void acpi_dev_get_ioresource(struct resource *res, u64 start, u64 len,
 				    u8 io_decode)
 {
-	u64 end = start + len - 1;
-
 	res->start = start;
-	res->end = end;
-	res->flags = acpi_dev_ioresource_flags(start, end, io_decode, false);
+	res->end = start + len - 1;
+	acpi_dev_ioresource_flags(res, len, io_decode, false);
 }
 
 /**
@@ -161,16 +160,12 @@ bool acpi_dev_resource_io(struct acpi_resource *ares, struct resource *res)
 	switch (ares->type) {
 	case ACPI_RESOURCE_TYPE_IO:
 		io = &ares->data.io;
-		if (!io->minimum && !io->address_length)
-			return false;
 		acpi_dev_get_ioresource(res, io->minimum,
 					io->address_length,
 					io->io_decode);
 		break;
 	case ACPI_RESOURCE_TYPE_FIXED_IO:
 		fixed_io = &ares->data.fixed_io;
-		if (!fixed_io->address && !fixed_io->address_length)
-			return false;
 		acpi_dev_get_ioresource(res, fixed_io->address,
 					fixed_io->address_length,
 					ACPI_DECODE_10);
@@ -178,7 +173,8 @@ bool acpi_dev_resource_io(struct acpi_resource *ares, struct resource *res)
 	default:
 		return false;
 	}
-	return true;
+
+	return !(res->flags & IORESOURCE_DISABLED);
 }
 EXPORT_SYMBOL_GPL(acpi_dev_resource_io);
 
@@ -216,9 +212,8 @@ bool acpi_dev_resource_address_space(struct acpi_resource *ares,
 	case ACPI_IO_RANGE:
 		io_decode = addr.address.granularity == 0xfff ?
 				ACPI_DECODE_10 : ACPI_DECODE_16;
-		res->flags = acpi_dev_ioresource_flags(addr.address.minimum,
-						       addr.address.maximum,
-						       io_decode, window);
+		acpi_dev_ioresource_flags(res, addr.address.address_length,
+					  io_decode, window);
 		break;
 	case ACPI_BUS_NUMBER_RANGE:
 		res->flags = IORESOURCE_BUS;
@@ -266,9 +261,8 @@ bool acpi_dev_resource_ext_address_space(struct acpi_resource *ares,
 	case ACPI_IO_RANGE:
 		io_decode = ext_addr->address.granularity == 0xfff ?
 				ACPI_DECODE_10 : ACPI_DECODE_16;
-		res->flags = acpi_dev_ioresource_flags(ext_addr->address.minimum,
-						       ext_addr->address.maximum,
-						       io_decode, window);
+		acpi_dev_ioresource_flags(res, ext_addr->address.address_length,
+					  io_decode, window);
 		break;
 	case ACPI_BUS_NUMBER_RANGE:
 		res->flags = IORESOURCE_BUS;
-- 
1.7.10.4


  parent reply	other threads:[~2015-01-28 20:26 UTC|newest]

Thread overview: 32+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-01-28 10:57 [Patch v2 00/22] Improve ACPI resource parsing interfaces and enable IOAPIC hotplug Jiang Liu
2015-01-28 10:57 ` [Patch v2 01/22] ACPICA: Resources: Provide common part for struct acpi_resource_address structures Jiang Liu
2015-01-28 10:57 ` [Patch v2 02/22] ACPI: Remove redundant check in function acpi_dev_resource_address_space() Jiang Liu
2015-01-28 10:57 ` [Patch v2 03/22] ACPI: Implement proper length checks for mem resources Jiang Liu
2015-01-28 10:57 ` Jiang Liu [this message]
2015-01-28 10:57 ` [Patch v2 05/22] ACPI: Let the parser return false for disabled resources Jiang Liu
2015-01-28 10:57 ` [Patch v2 06/22] ACPI: Unify the parsing of address_space and ext_address_space Jiang Liu
2015-01-28 10:57 ` [Patch v2 07/22] ACPI: Move the window flag logic to the combined parser Jiang Liu
2015-01-28 10:57 ` [Patch v2 08/22] ACPI: Add prefetch decoding to the address space parser Jiang Liu
2015-01-28 10:57 ` [Patch v2 09/22] ACPI: Fix a bug in parsing ACPI Memroy24 resource Jiang Liu
2015-01-28 23:15   ` Bjorn Helgaas
2015-01-28 10:57 ` [Patch v2 10/22] ACPI: Normalize return value of resource parser functions Jiang Liu
2015-01-28 10:57 ` [Patch v2 11/22] ACPI: Set flag IORESOURCE_UNSET for unassigned resources Jiang Liu
2015-01-28 10:57 ` [Patch v2 12/22] ACPI: Enforce stricter checks for address space descriptors Jiang Liu
2015-01-28 10:57 ` [Patch v2 13/22] ACPI: Return translation offset when parsing ACPI address space resources Jiang Liu
2015-01-28 10:57 ` [Patch v2 14/22] ACPI: Translate resource into master side address for bridge window resources Jiang Liu
2015-01-28 10:57 ` [Patch v2 15/22] ACPI: Add field offset to struct resource_list_entry Jiang Liu
2015-01-28 10:57 ` [Patch v2 16/22] ACPI: Introduce helper function acpi_dev_filter_resource_type() Jiang Liu
2015-01-28 10:57 ` [Patch v2 17/22] resources: Move struct resource_list_entry from ACPI into resource core Jiang Liu
2015-02-05  1:56   ` Vinod Koul
2015-01-28 10:57 ` [Patch v2 18/22] PCI: Use common resource list management code instead of private implementation Jiang Liu
2015-01-28 13:46   ` Will Deacon
2015-01-28 23:34   ` Bjorn Helgaas
2015-01-28 10:57 ` [Patch v2 19/22] x86/PCI/ACPI: Use common ACPI resource interfaces to simplify implementation Jiang Liu
2015-01-28 23:37   ` Bjorn Helgaas
2015-01-29  3:00     ` Jiang Liu
2015-01-28 23:51   ` Bjorn Helgaas
2015-01-29  3:11     ` Jiang Liu
2015-01-28 10:57 ` [Patch v2 20/22] x86/PCI: Refine the way to release PCI IRQ resources Jiang Liu
2015-01-28 23:38   ` Bjorn Helgaas
2015-01-28 10:57 ` [Patch v2 21/22] ACPI: Add interfaces to parse IOAPIC ID for IOAPIC hotplug Jiang Liu
2015-01-28 10:57 ` [Patch v2 22/22] x86/irq, ACPI: Implement ACPI driver to support " Jiang Liu

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=1422442660-455-5-git-send-email-jiang.liu@linux.intel.com \
    --to=jiang.liu@linux.intel.com \
    --cc=bhelgaas@google.com \
    --cc=bp@alien8.de \
    --cc=lenb@kernel.org \
    --cc=linux-acpi@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-pci@vger.kernel.org \
    --cc=lv.zheng@intel.com \
    --cc=rjw@rjwysocki.net \
    --cc=tglx@linutronix.de \
    --cc=tony.luck@intel.com \
    --cc=x86@kernel.org \
    --cc=yinghai@kernel.org \
    --subject='Re: [Patch v2 04/22] ACPI: Use the length check for io resources as well' \
    /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

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).