Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 7b46ecd5 authored by Len Brown's avatar Len Brown
Browse files

Revert "ACPI: make some IO ports off-limits to AML"

This reverts commit 5ec5d38a.
because it caused spurious dmesg warmings.
We'll implement the check for off-limit ports
in a more clever way in the future.

http://bugzilla.kernel.org/show_bug.cgi?id=12758



Signed-off-by: default avatarLen Brown <len.brown@intel.com>
parent a1404495
Loading
Loading
Loading
Loading
+0 −50
Original line number Original line Diff line number Diff line
@@ -1317,54 +1317,6 @@ acpi_os_validate_interface (char *interface)
	return AE_SUPPORT;
	return AE_SUPPORT;
}
}


#ifdef	CONFIG_X86

struct aml_port_desc {
	uint	start;
	uint	end;
	char*   name;
	char	warned;
};

static struct aml_port_desc aml_invalid_port_list[] = {
	{0x20, 0x21, "PIC0", 0},
	{0xA0, 0xA1, "PIC1", 0},
	{0x4D0, 0x4D1, "ELCR", 0}
};

/*
 * valid_aml_io_address()
 *
 * if valid, return true
 * else invalid, warn once, return false
 */
static bool valid_aml_io_address(uint address, uint length)
{
	int i;
	int entries = sizeof(aml_invalid_port_list) / sizeof(struct aml_port_desc);

	for (i = 0; i < entries; ++i) {
		if ((address >= aml_invalid_port_list[i].start &&
			address <= aml_invalid_port_list[i].end) ||
			(address + length >= aml_invalid_port_list[i].start &&
			address  + length <= aml_invalid_port_list[i].end))
		{
			if (!aml_invalid_port_list[i].warned)
			{
				printk(KERN_ERR "ACPI: Denied BIOS AML access"
					" to invalid port 0x%x+0x%x (%s)\n",
					address, length,
					aml_invalid_port_list[i].name);
				aml_invalid_port_list[i].warned = 1;
			}
			return false;	/* invalid */
		}
	}
	return true;	/* valid */
}
#else
static inline bool valid_aml_io_address(uint address, uint length) { return true; }
#endif
/******************************************************************************
/******************************************************************************
 *
 *
 * FUNCTION:    acpi_os_validate_address
 * FUNCTION:    acpi_os_validate_address
@@ -1394,8 +1346,6 @@ acpi_os_validate_address (


	switch (space_id) {
	switch (space_id) {
	case ACPI_ADR_SPACE_SYSTEM_IO:
	case ACPI_ADR_SPACE_SYSTEM_IO:
		if (!valid_aml_io_address(address, length))
			return AE_AML_ILLEGAL_ADDRESS;
	case ACPI_ADR_SPACE_SYSTEM_MEMORY:
	case ACPI_ADR_SPACE_SYSTEM_MEMORY:
		/* Only interference checks against SystemIO and SytemMemory
		/* Only interference checks against SystemIO and SytemMemory
		   are needed */
		   are needed */