RE: [PATCH] ACPI: Ignore the upper bits of SystemIO addresses

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Ok, will backport to ACPICA.
Thanks,
Bob


>-----Original Message-----
>From: Matthew Garrett [mailto:mjg@xxxxxxxxxx]
>Sent: Tuesday, May 18, 2010 11:07 AM
>To: linux-acpi@xxxxxxxxxxxxxxx
>Cc: Moore, Robert; lenb@xxxxxxxxxx; Matthew Garrett
>Subject: [PATCH] ACPI: Ignore the upper bits of SystemIO addresses
>
>Various machines (https://bugzilla.redhat.com/show_bug.cgi?id=585756 for
>instance) contain SystemIO spaces with addresses > 16 bits. acpica throws
>an error for this, while Windows silently ignores the upper 16 bits and
>carries on happily. Implement the latter behaviour for bug compatibility.
>
>Signed-off-by: Matthew Garrett <mjg@xxxxxxxxxx>
>---
> drivers/acpi/acpica/hwvalid.c |   17 ++++++++---------
> 1 files changed, 8 insertions(+), 9 deletions(-)
>
>diff --git a/drivers/acpi/acpica/hwvalid.c b/drivers/acpi/acpica/hwvalid.c
>index e26c17d..ddfb4f1 100644
>--- a/drivers/acpi/acpica/hwvalid.c
>+++ b/drivers/acpi/acpica/hwvalid.c
>@@ -146,15 +146,6 @@ acpi_hw_validate_io_request(acpi_io_address address,
>u32 bit_width)
> 								      last_address),
> 			  byte_width));
>
>-	/* Maximum 16-bit address in I/O space */
>-
>-	if (last_address > ACPI_UINT16_MAX) {
>-		ACPI_ERROR((AE_INFO,
>-			    "Illegal I/O port address/length above 64K: 0x%p/%X",
>-			    ACPI_CAST_PTR(void, address), byte_width));
>-		return_ACPI_STATUS(AE_LIMIT);
>-	}
>-
> 	/* Exit if requested address is not within the protected port table
>*/
>
> 	if (address > acpi_protected_ports[ACPI_PORT_INFO_ENTRIES - 1].end) {
>@@ -222,6 +213,10 @@ acpi_status acpi_hw_read_port(acpi_io_address address,
>u32 *value, u32 width)
> 	u32 one_byte;
> 	u32 i;
>
>+	/* Windows only uses the lower 16 bits of an address. Emulate that */
>+
>+	address &= 0xffff;
>+
> 	/* Validate the entire request and perform the I/O */
>
> 	status = acpi_hw_validate_io_request(address, width);
>@@ -279,6 +274,10 @@ acpi_status acpi_hw_write_port(acpi_io_address
>address, u32 value, u32 width)
> 	acpi_status status;
> 	u32 i;
>
>+	/* Windows only uses the lower 16 bits of an address. Emulate that */
>+
>+	address &= 0xffff;
>+
> 	/* Validate the entire request and perform the I/O */
>
> 	status = acpi_hw_validate_io_request(address, width);
>--
>1.7.0.1

--
To unsubscribe from this list: send the line "unsubscribe linux-acpi" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html

[Index of Archives]     [Linux IBM ACPI]     [Linux Power Management]     [Linux Kernel]     [Linux Laptop]     [Kernel Newbies]     [Share Photos]     [Security]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Samba]     [Video 4 Linux]     [Device Mapper]     [Linux Resources]

  Powered by Linux