linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH 0/9] I2C ACPI operation region handler support
@ 2014-04-16 13:24 Lan Tianyu
  2014-04-16 13:24 ` [PATCH 1/9] ACPICA: Executer: Fix buffer allocation issue for generic_serial_bus region field accesses Lan Tianyu
                   ` (11 more replies)
  0 siblings, 12 replies; 79+ messages in thread
From: Lan Tianyu @ 2014-04-16 13:24 UTC (permalink / raw)
  To: wsa, rjw, lenb, mika.westerberg, awilliam, tianyu.lan
  Cc: linux-i2c, linux-kernel

ACPI 5.0 spec(5.5.2.4.5) defines GenericSerialBus(i2c, spi, uart) operation
region. It allows ACPI aml code able to access such kind of devices to
implement some ACPI standard method.

On the Asus T100TA, Bios use GenericSerialBus operation region to access
i2c device to get battery info. So battery function depends on the I2C
operation region support. Here is the bug link.
https://bugzilla.kernel.org/show_bug.cgi?id=69011

This patchset is to add I2C ACPI operation region handler support.

[PATCH 1/9] ACPICA: Executer: Fix buffer allocation issue for
[PATCH 2/9] ACPICA: Export acpi_buffer_to_resource symbol
[PATCH 3/9] ACPI: Add acpi_bus_attach_private_data() to facilitate to
[PATCH 4/9] ACPI/Thermal: Use acpi_bus_attach_private_data() to
[PATCH 5/9] I2C: Add smbus quick read/write helper function
[PATCH 6/9] I2C: Add smbus word/block process call helper function
[PATCH 7/9] I2C/ACPI: Add i2c ACPI operation region support
[PATCH 8/9] I2C/ACPI: Move ACPI related code to i2c-acpi.c
[PATCH 9/9] I2C/ACPI: Add CONFIG_I2C_ACPI config

^ permalink raw reply	[flat|nested] 79+ messages in thread

* [PATCH 1/9] ACPICA: Executer: Fix buffer allocation issue for generic_serial_bus region field accesses.
  2014-04-16 13:24 [PATCH 0/9] I2C ACPI operation region handler support Lan Tianyu
@ 2014-04-16 13:24 ` Lan Tianyu
  2014-04-21 21:38   ` Rafael J. Wysocki
  2014-04-16 13:24 ` [PATCH 2/9] ACPICA: Export acpi_buffer_to_resource symbol Lan Tianyu
                   ` (10 subsequent siblings)
  11 siblings, 1 reply; 79+ messages in thread
From: Lan Tianyu @ 2014-04-16 13:24 UTC (permalink / raw)
  To: wsa, rjw, lenb, mika.westerberg, awilliam, tianyu.lan,
	robert.moore, lv.zheng, rafael.j.wysocki
  Cc: linux-i2c, linux-kernel, linux-acpi, devel

From: Lv Zheng <lv.zheng@intel.com>

The size of the buffer allocated for generic_serial_bus region access
is not correct.  This patch introduces acpi_ex_get_serial_access_length()
to be invoked to obtain correct data buffer length.  Reported by
Lan Tianyu, Fixed by Lv Zheng.

Signed-off-by: Lv Zheng <lv.zheng@intel.com>
Signed-off-by: Lan Tianyu <tianyu.lan@intel.com>
---
 drivers/acpi/acpica/exfield.c | 104 +++++++++++++++++++++++++++++++++++++++---
 1 file changed, 97 insertions(+), 7 deletions(-)

diff --git a/drivers/acpi/acpica/exfield.c b/drivers/acpi/acpica/exfield.c
index 68d9744..12878e1 100644
--- a/drivers/acpi/acpica/exfield.c
+++ b/drivers/acpi/acpica/exfield.c
@@ -45,10 +45,71 @@
 #include "accommon.h"
 #include "acdispat.h"
 #include "acinterp.h"
+#include "amlcode.h"
 
 #define _COMPONENT          ACPI_EXECUTER
 ACPI_MODULE_NAME("exfield")
 
+/* Local prototypes */
+static u32
+acpi_ex_get_serial_access_length(u32 accessor_type, u32 access_length);
+
+/*******************************************************************************
+ *
+ * FUNCTION:    acpi_get_serial_access_bytes
+ *
+ * PARAMETERS:  accessor_type   - The type of the protocol indicated by region
+ *                                field access attributes
+ *              access_length   - The access length of the region field
+ *
+ * RETURN:      Decoded access length
+ *
+ * DESCRIPTION: This routine returns the length of the generic_serial_bus
+ *              protocol bytes
+ *
+ ******************************************************************************/
+
+static u32
+acpi_ex_get_serial_access_length(u32 accessor_type, u32 access_length)
+{
+	u32 length;
+
+	switch (accessor_type) {
+	case AML_FIELD_ATTRIB_QUICK:
+
+		length = 0;
+		break;
+
+	case AML_FIELD_ATTRIB_SEND_RCV:
+	case AML_FIELD_ATTRIB_BYTE:
+
+		length = 1;
+		break;
+
+	case AML_FIELD_ATTRIB_WORD:
+	case AML_FIELD_ATTRIB_WORD_CALL:
+
+		length = 2;
+		break;
+
+	case AML_FIELD_ATTRIB_MULTIBYTE:
+	case AML_FIELD_ATTRIB_RAW_BYTES:
+	case AML_FIELD_ATTRIB_RAW_PROCESS:
+
+		length = access_length;
+		break;
+
+	case AML_FIELD_ATTRIB_BLOCK:
+	case AML_FIELD_ATTRIB_BLOCK_CALL:
+	default:
+
+		length = ACPI_GSBUS_BUFFER_SIZE;
+		break;
+	}
+
+	return (length);
+}
+
 /*******************************************************************************
  *
  * FUNCTION:    acpi_ex_read_data_from_field
@@ -63,8 +124,9 @@ ACPI_MODULE_NAME("exfield")
  *              Buffer, depending on the size of the field.
  *
  ******************************************************************************/
+
 acpi_status
-acpi_ex_read_data_from_field(struct acpi_walk_state *walk_state,
+acpi_ex_read_data_from_field(struct acpi_walk_state * walk_state,
 			     union acpi_operand_object *obj_desc,
 			     union acpi_operand_object **ret_buffer_desc)
 {
@@ -73,6 +135,7 @@ acpi_ex_read_data_from_field(struct acpi_walk_state *walk_state,
 	acpi_size length;
 	void *buffer;
 	u32 function;
+	u16 accessor_type;
 
 	ACPI_FUNCTION_TRACE_PTR(ex_read_data_from_field, obj_desc);
 
@@ -116,9 +179,22 @@ acpi_ex_read_data_from_field(struct acpi_walk_state *walk_state,
 			    ACPI_READ | (obj_desc->field.attribute << 16);
 		} else if (obj_desc->field.region_obj->region.space_id ==
 			   ACPI_ADR_SPACE_GSBUS) {
-			length = ACPI_GSBUS_BUFFER_SIZE;
-			function =
-			    ACPI_READ | (obj_desc->field.attribute << 16);
+			accessor_type = obj_desc->field.attribute;
+			length = acpi_ex_get_serial_access_length(accessor_type,
+								  obj_desc->
+								  field.
+								  access_length);
+
+			/*
+			 * Add additional 2 bytes for modeled generic_serial_bus data buffer:
+			 * typedef struct {
+			 *     BYTEStatus; // Byte 0 of the data buffer
+			 *     BYTELength; // Byte 1 of the data buffer
+			 *     BYTE[x-1]Data; // Bytes 2-x of the arbitrary length data buffer,
+			 * }
+			 */
+			length += 2;
+			function = ACPI_READ | (accessor_type << 16);
 		} else {	/* IPMI */
 
 			length = ACPI_IPMI_BUFFER_SIZE;
@@ -231,6 +307,7 @@ acpi_ex_write_data_to_field(union acpi_operand_object *source_desc,
 	void *buffer;
 	union acpi_operand_object *buffer_desc;
 	u32 function;
+	u16 accessor_type;
 
 	ACPI_FUNCTION_TRACE_PTR(ex_write_data_to_field, obj_desc);
 
@@ -284,9 +361,22 @@ acpi_ex_write_data_to_field(union acpi_operand_object *source_desc,
 			    ACPI_WRITE | (obj_desc->field.attribute << 16);
 		} else if (obj_desc->field.region_obj->region.space_id ==
 			   ACPI_ADR_SPACE_GSBUS) {
-			length = ACPI_GSBUS_BUFFER_SIZE;
-			function =
-			    ACPI_WRITE | (obj_desc->field.attribute << 16);
+			accessor_type = obj_desc->field.attribute;
+			length = acpi_ex_get_serial_access_length(accessor_type,
+								  obj_desc->
+								  field.
+								  access_length);
+
+			/*
+			 * Add additional 2 bytes for modeled generic_serial_bus data buffer:
+			 * typedef struct {
+			 *     BYTEStatus; // Byte 0 of the data buffer
+			 *     BYTELength; // Byte 1 of the data buffer
+			 *     BYTE[x-1]Data; // Bytes 2-x of the arbitrary length data buffer,
+			 * }
+			 */
+			length += 2;
+			function = ACPI_WRITE | (accessor_type << 16);
 		} else {	/* IPMI */
 
 			length = ACPI_IPMI_BUFFER_SIZE;
-- 
1.8.4.rc0.1.g8f6a3e5.dirty


^ permalink raw reply related	[flat|nested] 79+ messages in thread

* [PATCH 2/9] ACPICA: Export acpi_buffer_to_resource symbol
  2014-04-16 13:24 [PATCH 0/9] I2C ACPI operation region handler support Lan Tianyu
  2014-04-16 13:24 ` [PATCH 1/9] ACPICA: Executer: Fix buffer allocation issue for generic_serial_bus region field accesses Lan Tianyu
@ 2014-04-16 13:24 ` Lan Tianyu
  2014-04-16 13:24 ` [PATCH 3/9] ACPI: Add acpi_bus_attach_private_data() to facilitate to attach data to ACPI handle Lan Tianyu
                   ` (9 subsequent siblings)
  11 siblings, 0 replies; 79+ messages in thread
From: Lan Tianyu @ 2014-04-16 13:24 UTC (permalink / raw)
  To: wsa, rjw, lenb, mika.westerberg, awilliam, tianyu.lan,
	robert.moore, lv.zheng, rafael.j.wysocki
  Cc: linux-i2c, linux-kernel, linux-acpi, devel

The acpi_buffer_to_resource is needed in i2c module
to convert aml buffer to struct acpi_resource

Signed-off-by: Lan Tianyu <tianyu.lan@intel.com>
---
 drivers/acpi/acpica/rscreate.c | 1 +
 1 file changed, 1 insertion(+)

diff --git a/drivers/acpi/acpica/rscreate.c b/drivers/acpi/acpica/rscreate.c
index 75d3690..5828649 100644
--- a/drivers/acpi/acpica/rscreate.c
+++ b/drivers/acpi/acpica/rscreate.c
@@ -112,6 +112,7 @@ acpi_buffer_to_resource(u8 *aml_buffer,
 
 	return (status);
 }
+ACPI_EXPORT_SYMBOL(acpi_buffer_to_resource);
 
 /*******************************************************************************
  *
-- 
1.8.4.rc0.1.g8f6a3e5.dirty


^ permalink raw reply related	[flat|nested] 79+ messages in thread

* [PATCH 3/9] ACPI: Add acpi_bus_attach_private_data() to facilitate to attach data to ACPI handle
  2014-04-16 13:24 [PATCH 0/9] I2C ACPI operation region handler support Lan Tianyu
  2014-04-16 13:24 ` [PATCH 1/9] ACPICA: Executer: Fix buffer allocation issue for generic_serial_bus region field accesses Lan Tianyu
  2014-04-16 13:24 ` [PATCH 2/9] ACPICA: Export acpi_buffer_to_resource symbol Lan Tianyu
@ 2014-04-16 13:24 ` Lan Tianyu
  2014-04-16 13:24 ` [PATCH 4/9] ACPI/Thermal: Use acpi_bus_attach_private_data() to attach private data Lan Tianyu
                   ` (8 subsequent siblings)
  11 siblings, 0 replies; 79+ messages in thread
From: Lan Tianyu @ 2014-04-16 13:24 UTC (permalink / raw)
  To: wsa, rjw, lenb, mika.westerberg, awilliam, tianyu.lan,
	robert.moore, lv.zheng
  Cc: linux-i2c, linux-kernel, linux-acpi, devel

There is already acpi_bus_get_private_data() to get ACPI handle data
which is associated with acpi_bus_private_data_handler(). This patch
is to add acpi_bus_attach_private_data() to make a pair and facilitate
to attach and get data to/from ACPI handle.

Signed-off-by: Lan Tianyu <tianyu.lan@intel.com>
---
 drivers/acpi/bus.c      | 18 +++++++++++++++++-
 include/acpi/acpi_bus.h |  1 +
 2 files changed, 18 insertions(+), 1 deletion(-)

diff --git a/drivers/acpi/bus.c b/drivers/acpi/bus.c
index e7e5844..4ed8d48 100644
--- a/drivers/acpi/bus.c
+++ b/drivers/acpi/bus.c
@@ -132,6 +132,22 @@ void acpi_bus_private_data_handler(acpi_handle handle,
 }
 EXPORT_SYMBOL(acpi_bus_private_data_handler);
 
+int acpi_bus_attach_private_data(acpi_handle handle, void *data)
+{
+	acpi_status status;
+
+	status = acpi_attach_data(handle,
+			acpi_bus_private_data_handler, data);
+	if (ACPI_FAILURE(status)) {
+		ACPI_ERROR((AE_INFO, "Error attaching device[%p] data\n",
+				handle));
+		return -ENODEV;
+	}
+
+	return 0;
+}
+EXPORT_SYMBOL(acpi_bus_attach_private_data);
+
 int acpi_bus_get_private_data(acpi_handle handle, void **data)
 {
 	acpi_status status;
@@ -141,7 +157,7 @@ int acpi_bus_get_private_data(acpi_handle handle, void **data)
 
 	status = acpi_get_data(handle, acpi_bus_private_data_handler, data);
 	if (ACPI_FAILURE(status) || !*data) {
-		ACPI_DEBUG_PRINT((ACPI_DB_INFO, "No context for object [%p]\n",
+		ACPI_ERROR((AE_INFO, "No context for object [%p]\n",
 				handle));
 		return -ENODEV;
 	}
diff --git a/include/acpi/acpi_bus.h b/include/acpi/acpi_bus.h
index 84a2e29..a1f6fec 100644
--- a/include/acpi/acpi_bus.h
+++ b/include/acpi/acpi_bus.h
@@ -406,6 +406,7 @@ extern struct kobject *acpi_kobj;
 extern int acpi_bus_generate_netlink_event(const char*, const char*, u8, int);
 void acpi_bus_private_data_handler(acpi_handle, void *);
 int acpi_bus_get_private_data(acpi_handle, void **);
+int acpi_bus_attach_private_data(acpi_handle, void *);
 void acpi_bus_no_hotplug(acpi_handle handle);
 extern int acpi_notifier_call_chain(struct acpi_device *, u32, u32);
 extern int register_acpi_notifier(struct notifier_block *);
-- 
1.8.4.rc0.1.g8f6a3e5.dirty


^ permalink raw reply related	[flat|nested] 79+ messages in thread

* [PATCH 4/9] ACPI/Thermal: Use acpi_bus_attach_private_data() to attach private data
  2014-04-16 13:24 [PATCH 0/9] I2C ACPI operation region handler support Lan Tianyu
                   ` (2 preceding siblings ...)
  2014-04-16 13:24 ` [PATCH 3/9] ACPI: Add acpi_bus_attach_private_data() to facilitate to attach data to ACPI handle Lan Tianyu
@ 2014-04-16 13:24 ` Lan Tianyu
  2014-04-16 13:24 ` [PATCH 5/9] I2C: Add smbus quick read/write helper function Lan Tianyu
                   ` (7 subsequent siblings)
  11 siblings, 0 replies; 79+ messages in thread
From: Lan Tianyu @ 2014-04-16 13:24 UTC (permalink / raw)
  To: wsa, rjw, lenb, mika.westerberg, awilliam, tianyu.lan, rui.zhang
  Cc: linux-i2c, linux-kernel, linux-acpi

Use acpi_bus_attach_private_data() to attach private data
instead of acpi_attach_data().

Signed-off-by: Lan Tianyu <tianyu.lan@intel.com>
---
 drivers/acpi/thermal.c | 9 +++------
 1 file changed, 3 insertions(+), 6 deletions(-)

diff --git a/drivers/acpi/thermal.c b/drivers/acpi/thermal.c
index c1e31a4..7ab9392 100644
--- a/drivers/acpi/thermal.c
+++ b/drivers/acpi/thermal.c
@@ -925,13 +925,10 @@ static int acpi_thermal_register_thermal_zone(struct acpi_thermal *tz)
 	if (result)
 		return result;
 
-	status = acpi_attach_data(tz->device->handle,
-				  acpi_bus_private_data_handler,
-				  tz->thermal_zone);
-	if (ACPI_FAILURE(status)) {
-		pr_err(PREFIX "Error attaching device data\n");
+	status =  acpi_bus_attach_private_data(tz->device->handle,
+					       tz->thermal_zone);
+	if (ACPI_FAILURE(status))
 		return -ENODEV;
-	}
 
 	tz->tz_enabled = 1;
 
-- 
1.8.4.rc0.1.g8f6a3e5.dirty


^ permalink raw reply related	[flat|nested] 79+ messages in thread

* [PATCH 5/9] I2C: Add smbus quick read/write helper function
  2014-04-16 13:24 [PATCH 0/9] I2C ACPI operation region handler support Lan Tianyu
                   ` (3 preceding siblings ...)
  2014-04-16 13:24 ` [PATCH 4/9] ACPI/Thermal: Use acpi_bus_attach_private_data() to attach private data Lan Tianyu
@ 2014-04-16 13:24 ` Lan Tianyu
  2014-04-16 13:24 ` [PATCH 6/9] I2C: Add smbus word/block process call " Lan Tianyu
                   ` (6 subsequent siblings)
  11 siblings, 0 replies; 79+ messages in thread
From: Lan Tianyu @ 2014-04-16 13:24 UTC (permalink / raw)
  To: wsa, rjw, lenb, mika.westerberg, awilliam, tianyu.lan
  Cc: linux-i2c, linux-kernel

Add i2c_smbus_quick_write/read() helper function. These will be used
in the implementation of i2c ACPI address space handler.

Signed-off-by: Lan Tianyu <tianyu.lan@intel.com>
---
 drivers/i2c/i2c-core.c | 30 ++++++++++++++++++++++++++++++
 include/linux/i2c.h    |  2 ++
 2 files changed, 32 insertions(+)

diff --git a/drivers/i2c/i2c-core.c b/drivers/i2c/i2c-core.c
index 7c7f4b8..3bf0048 100644
--- a/drivers/i2c/i2c-core.c
+++ b/drivers/i2c/i2c-core.c
@@ -2162,6 +2162,36 @@ static int i2c_smbus_check_pec(u8 cpec, struct i2c_msg *msg)
 }
 
 /**
+ * i2c_smbus_quick_write - SMBus "quick write" protocol
+ * @client: Handle to slave device
+ *
+ * This executes the SMBus "quick write" protocol, returning negative errno
+ * else zero on success.
+ */
+s32 i2c_smbus_quick_write(const struct i2c_client *client)
+{
+	return i2c_smbus_xfer(client->adapter, client->addr, client->flags,
+				I2C_SMBUS_WRITE, 0,
+				I2C_SMBUS_QUICK, NULL);
+}
+EXPORT_SYMBOL_GPL(i2c_smbus_quick_write);
+
+/**
+ * i2c_smbus_quick_read - SMBus "quick read" protocol
+ * @client: Handle to slave device
+ *
+ * This executes the SMBus "quick read" protocol, returning negative errno
+ * else zero on success.
+ */
+s32 i2c_smbus_quick_read(const struct i2c_client *client)
+{
+	return i2c_smbus_xfer(client->adapter, client->addr, client->flags,
+				I2C_SMBUS_READ, 0,
+				I2C_SMBUS_QUICK, NULL);
+}
+EXPORT_SYMBOL_GPL(i2c_smbus_quick_read);
+
+/**
  * i2c_smbus_read_byte - SMBus "receive byte" protocol
  * @client: Handle to slave device
  *
diff --git a/include/linux/i2c.h b/include/linux/i2c.h
index b556e0a..3e6ea90 100644
--- a/include/linux/i2c.h
+++ b/include/linux/i2c.h
@@ -82,6 +82,8 @@ extern s32 i2c_smbus_xfer(struct i2c_adapter *adapter, u16 addr,
 /* Now follow the 'nice' access routines. These also document the calling
    conventions of i2c_smbus_xfer. */
 
+extern s32 i2c_smbus_quick_write(const struct i2c_client *client);
+extern s32 i2c_smbus_quick_read(const struct i2c_client *client);
 extern s32 i2c_smbus_read_byte(const struct i2c_client *client);
 extern s32 i2c_smbus_write_byte(const struct i2c_client *client, u8 value);
 extern s32 i2c_smbus_read_byte_data(const struct i2c_client *client,
-- 
1.8.4.rc0.1.g8f6a3e5.dirty


^ permalink raw reply related	[flat|nested] 79+ messages in thread

* [PATCH 6/9] I2C: Add smbus word/block process call helper function
  2014-04-16 13:24 [PATCH 0/9] I2C ACPI operation region handler support Lan Tianyu
                   ` (4 preceding siblings ...)
  2014-04-16 13:24 ` [PATCH 5/9] I2C: Add smbus quick read/write helper function Lan Tianyu
@ 2014-04-16 13:24 ` Lan Tianyu
  2014-04-16 13:24 ` [PATCH 7/9] I2C/ACPI: Add i2c ACPI operation region support Lan Tianyu
                   ` (5 subsequent siblings)
  11 siblings, 0 replies; 79+ messages in thread
From: Lan Tianyu @ 2014-04-16 13:24 UTC (permalink / raw)
  To: wsa, rjw, lenb, mika.westerberg, awilliam, tianyu.lan
  Cc: linux-i2c, linux-kernel

Add i2c_smbus_word/block_proc_call() helper function. These will be used
in the implementation of i2c ACPI address space handler.

Signed-off-by: Lan Tianyu <tianyu.lan@intel.com>
---
 drivers/i2c/i2c-core.c | 56 ++++++++++++++++++++++++++++++++++++++++++++++++++
 include/linux/i2c.h    |  4 ++++
 2 files changed, 60 insertions(+)

diff --git a/drivers/i2c/i2c-core.c b/drivers/i2c/i2c-core.c
index 3bf0048..638befd 100644
--- a/drivers/i2c/i2c-core.c
+++ b/drivers/i2c/i2c-core.c
@@ -2306,6 +2306,30 @@ s32 i2c_smbus_write_word_data(const struct i2c_client *client, u8 command,
 EXPORT_SYMBOL(i2c_smbus_write_word_data);
 
 /**
+ * i2c_smbus_word_proc_call - SMBus "word proc call" protocol
+ * @client: Handle to slave device
+ * @command: Byte interpreted by slave
+ * @value: 16-bit "word" being written
+ *
+ * This executes the SMBus "word proc all" protocol, returning negative errno
+ * else a 16-bit unsigned "word" received from the device.
+ */
+s32 i2c_smbus_word_proc_call(const struct i2c_client *client, u8 command,
+			      u16 value)
+{
+	union i2c_smbus_data data;
+	int status;
+
+	data.word = value;
+	status = i2c_smbus_xfer(client->adapter, client->addr, client->flags,
+			      I2C_SMBUS_READ, command,
+			      I2C_SMBUS_PROC_CALL, &data);
+
+	return (status < 0) ? status : data.word;
+}
+EXPORT_SYMBOL(i2c_smbus_word_proc_call);
+
+/**
  * i2c_smbus_read_block_data - SMBus "block read" protocol
  * @client: Handle to slave device
  * @command: Byte interpreted by slave
@@ -2362,6 +2386,38 @@ s32 i2c_smbus_write_block_data(const struct i2c_client *client, u8 command,
 }
 EXPORT_SYMBOL(i2c_smbus_write_block_data);
 
+/**
+ * i2c_smbus_block_proc_call - SMBus "block write" protocol
+ * @client: Handle to slave device
+ * @command: Byte interpreted by slave
+ * @length: Size of data block; SMBus allows at most 32 bytes
+ * @values: Byte array which will be written.
+ *
+ * This executes the SMBus "block proc call" protocol, returning negative errno
+ * else the number of read bytes.
+ */
+s32 i2c_smbus_block_proc_call(const struct i2c_client *client, u8 command,
+			       u8 length, u8 *values)
+{
+	union i2c_smbus_data data;
+	int status;
+
+	if (length > I2C_SMBUS_BLOCK_MAX)
+		length = I2C_SMBUS_BLOCK_MAX;
+	data.block[0] = length;
+	memcpy(&data.block[1], values, length);
+	status = i2c_smbus_xfer(client->adapter, client->addr, client->flags,
+			      I2C_SMBUS_READ, command,
+			      I2C_SMBUS_BLOCK_PROC_CALL, &data);
+
+	if (status < 0)
+		return status;
+
+	memcpy(values, &data.block[1], data.block[0]);
+	return data.block[0];
+}
+EXPORT_SYMBOL(i2c_smbus_block_proc_call);
+
 /* Returns the number of read bytes */
 s32 i2c_smbus_read_i2c_block_data(const struct i2c_client *client, u8 command,
 				  u8 length, u8 *values)
diff --git a/include/linux/i2c.h b/include/linux/i2c.h
index 3e6ea90..724440a 100644
--- a/include/linux/i2c.h
+++ b/include/linux/i2c.h
@@ -94,6 +94,10 @@ extern s32 i2c_smbus_read_word_data(const struct i2c_client *client,
 				    u8 command);
 extern s32 i2c_smbus_write_word_data(const struct i2c_client *client,
 				     u8 command, u16 value);
+extern s32 i2c_smbus_word_proc_call(const struct i2c_client *client,
+				    u8 command, u16 value);
+extern s32 i2c_smbus_block_proc_call(const struct i2c_client *client,
+				u8 command, u8 length, u8 *values);
 
 static inline s32
 i2c_smbus_read_word_swapped(const struct i2c_client *client, u8 command)
-- 
1.8.4.rc0.1.g8f6a3e5.dirty


^ permalink raw reply related	[flat|nested] 79+ messages in thread

* [PATCH 7/9] I2C/ACPI: Add i2c ACPI operation region support
  2014-04-16 13:24 [PATCH 0/9] I2C ACPI operation region handler support Lan Tianyu
                   ` (5 preceding siblings ...)
  2014-04-16 13:24 ` [PATCH 6/9] I2C: Add smbus word/block process call " Lan Tianyu
@ 2014-04-16 13:24 ` Lan Tianyu
  2014-04-16 13:24 ` [PATCH 8/9] I2C/ACPI: Move ACPI related code to i2c-acpi.c Lan Tianyu
                   ` (4 subsequent siblings)
  11 siblings, 0 replies; 79+ messages in thread
From: Lan Tianyu @ 2014-04-16 13:24 UTC (permalink / raw)
  To: wsa, rjw, lenb, mika.westerberg, awilliam, tianyu.lan
  Cc: linux-i2c, linux-kernel, linux-acpi

ACPI 5.0 spec(5.5.2.4.5) defines GenericSerialBus(i2c, spi, uart) operation region.
It allows ACPI aml code able to access such kind of devices to implement
some ACPI standard method.

ACPI Spec defines some access attribute to associate with i2c protocol.
AttribQuick 	       	       		Read/Write Quick Protocol
AttribSendReceive			Send/Receive Byte Protocol
AttribByte 			 	Read/Write Byte Protocol
AttribWord				Read/Write Word Protocol
AttribBlock				Read/Write Block Protocol
AttribBytes				Read/Write N-Bytes Protocol
AttribProcessCall			Process Call Protocol
AttribBlockProcessCall			Write Block-Read Block Process Call Protocol
AttribRawBytes 				Raw Read/Write N-BytesProtocol
AttribRawProcessBytes			Raw Process Call Protocol

On the Asus T100TA, Bios use GenericSerialBus operation region to access
i2c device to get battery info.

Sample code From Asus T100TA

    Scope (_SB.I2C1)
    {
        Name (UMPC, ResourceTemplate ()
        {
            I2cSerialBus (0x0066, ControllerInitiated, 0x00061A80,
                AddressingMode7Bit, "\\_SB.I2C1",
                0x00, ResourceConsumer, ,
                )
        })

	...

        OperationRegion (DVUM, GenericSerialBus, Zero, 0x0100)
        Field (DVUM, BufferAcc, NoLock, Preserve)
        {
            Connection (UMPC),
            Offset (0x81),
            AccessAs (BufferAcc, AttribBytes (0x3E)),
            FGC0,   8
        }
	...
     }

     Device (BATC)
     {
         Name (_HID, EisaId ("PNP0C0A"))  // _HID: Hardware ID
         Name (_UID, One)  // _UID: Unique ID
	 ...

            Method (_BST, 0, NotSerialized)  // _BST: Battery Status
            {
                If (LEqual (AVBL, One))
                {
                    Store (FGC0, BFFG)
                    If (LNotEqual (STAT, One))
                    {
                        ShiftRight (CHST, 0x04, Local0)
                        And (Local0, 0x03, Local0)
                        If (LOr (LEqual (Local0, One), LEqual (Local0, 0x02)))
                        {
                            Store (0x02, Local1)
                        }
	...

    }

The i2c operation region is defined under I2C1 scope. _BST method under
battery device BATC read battery status from the field "FCG0". The request
would be sent to i2c operation region handler.

This patch is to add i2c ACPI operation region support. Due to there are
only "Byte" and "N-Bytes" protocol access on the Asus T100TA, other protocols
have not been tested.

About RawBytes and RawProcessBytes protocol, they needs specific drivers to interpret
reference data from AML code according ACPI 5.0 SPEC(5.5.2.4.5.3.9 and 5.5.2.4.5.3.10).
So far, not found such case and will add when find real case.

Signed-off-by: Lan Tianyu <tianyu.lan@intel.com>
---
 drivers/i2c/Makefile   |   5 +-
 drivers/i2c/i2c-acpi.c | 282 +++++++++++++++++++++++++++++++++++++++++++++++++
 drivers/i2c/i2c-core.c |   2 +
 include/linux/acpi.h   |  11 ++
 include/linux/i2c.h    |  10 ++
 5 files changed, 309 insertions(+), 1 deletion(-)
 create mode 100644 drivers/i2c/i2c-acpi.c

diff --git a/drivers/i2c/Makefile b/drivers/i2c/Makefile
index 1722f50..80db307 100644
--- a/drivers/i2c/Makefile
+++ b/drivers/i2c/Makefile
@@ -2,8 +2,11 @@
 # Makefile for the i2c core.
 #
 
+i2ccore-y := i2c-core.o
+i2ccore-$(CONFIG_ACPI)		+= i2c-acpi.o
+
 obj-$(CONFIG_I2C_BOARDINFO)	+= i2c-boardinfo.o
-obj-$(CONFIG_I2C)		+= i2c-core.o
+obj-$(CONFIG_I2C)		+= i2ccore.o
 obj-$(CONFIG_I2C_SMBUS)		+= i2c-smbus.o
 obj-$(CONFIG_I2C_CHARDEV)	+= i2c-dev.o
 obj-$(CONFIG_I2C_MUX)		+= i2c-mux.o
diff --git a/drivers/i2c/i2c-acpi.c b/drivers/i2c/i2c-acpi.c
new file mode 100644
index 0000000..942abdf
--- /dev/null
+++ b/drivers/i2c/i2c-acpi.c
@@ -0,0 +1,282 @@
+/*
+ * I2C ACPI code
+ *
+ * Copyright (C) 2014 Intel Corp
+ *
+ * Author: Lan Tianyu <tianyu.lan@intel.com>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+ * or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * for more details.
+ */
+#define pr_fmt(fmt) "I2C/ACPI : " fmt
+
+#include <linux/kernel.h>
+#include <linux/errno.h>
+#include <linux/err.h>
+#include <linux/i2c.h>
+#include <linux/acpi.h>
+
+struct acpi_i2c_handler_data {
+	struct acpi_connection_info info;
+	struct i2c_adapter *adapter;
+} __packed;
+
+struct gsb_buffer {
+	u8	status;
+	u8	len;
+	union {
+		u16	wdata;
+		u8	bdata;
+		u8	data[0];
+	};
+} __packed;
+
+static int acpi_gsb_i2c_read_bytes(struct i2c_client *client,
+		u8 cmd, u8 *data, u8 data_len)
+{
+
+	struct i2c_msg msgs[2];
+	int ret;
+	u8  *buffer;
+
+	buffer = kzalloc(data_len, GFP_KERNEL);
+	if (!buffer)
+		return AE_NO_MEMORY;
+
+	msgs[0].addr = client->addr;
+	msgs[0].flags = client->flags;
+	msgs[0].len = 1;
+	msgs[0].buf = &cmd;
+
+	msgs[1].addr = client->addr;
+	msgs[1].flags = client->flags | I2C_M_RD;
+	msgs[1].len = data_len;
+	msgs[1].buf = buffer;
+
+	ret = i2c_transfer(client->adapter, msgs, ARRAY_SIZE(msgs));
+	if (ret < 0)
+		pr_err("i2c read failed\n");
+	else
+		memcpy(data, buffer, data_len);
+
+	kfree(buffer);
+	return ret;
+}
+
+static int acpi_gsb_i2c_write_bytes(struct i2c_client *client,
+		u8 cmd, u8 *data, u8 data_len)
+{
+
+	struct i2c_msg msgs[1];
+	u8  *buffer;
+	int ret = AE_OK;
+
+	buffer = kzalloc(data_len + 1, GFP_KERNEL);
+	if (!buffer)
+		return AE_NO_MEMORY;
+
+	buffer[0] = cmd;
+	memcpy(buffer + 1, data, data_len);
+
+	msgs[0].addr = client->addr;
+	msgs[0].flags = client->flags;
+	msgs[0].len = data_len + 1;
+	msgs[0].buf = buffer;
+
+	ret = i2c_transfer(client->adapter, msgs, ARRAY_SIZE(msgs));
+	if (ret < 0)
+		pr_err("i2c write failed\n");
+
+	kfree(buffer);
+	return ret;
+}
+
+static acpi_status
+acpi_i2c_space_handler(u32 function, acpi_physical_address command,
+			u32 bits, u64 *value64,
+			void *handler_context, void *region_context)
+{
+	struct gsb_buffer *gsb = (struct gsb_buffer *)value64;
+	struct acpi_i2c_handler_data *data = handler_context;
+	struct acpi_connection_info *info = &data->info;
+	struct acpi_resource_i2c_serialbus *sb;
+	struct i2c_adapter *adapter = data->adapter;
+	struct i2c_client client;
+	struct acpi_resource *ares;
+	u32 accessor_type = function >> 16;
+	u8 action = function & ACPI_IO_MASK;
+	int status;
+
+	acpi_buffer_to_resource(info->connection, info->length, &ares);
+	if (!value64 || ares->type != ACPI_RESOURCE_TYPE_SERIAL_BUS)
+		return AE_BAD_PARAMETER;
+
+	sb = &ares->data.i2c_serial_bus;
+	if (sb->type != ACPI_RESOURCE_SERIAL_TYPE_I2C)
+		return AE_BAD_PARAMETER;
+
+	client.adapter = adapter;
+	client.addr = sb->slave_address;
+	client.flags = 0;
+
+	if (sb->access_mode == ACPI_I2C_10BIT_MODE)
+		client.flags |= I2C_CLIENT_TEN;
+
+	switch (accessor_type) {
+	case ACPI_GSB_ACCESS_ATTRIB_QUICK:
+		if (action == ACPI_READ)
+			status = i2c_smbus_quick_read(&client);
+		else
+			status = i2c_smbus_quick_write(&client);
+		break;
+
+	case ACPI_GSB_ACCESS_ATTRIB_SEND_RCV:
+		if (action == ACPI_READ) {
+			status = i2c_smbus_read_byte(&client);
+			if (status >= 0) {
+				gsb->bdata = status;
+				status = 0;
+			}
+		} else {
+			status = i2c_smbus_write_byte(&client, gsb->bdata);
+		}
+		break;
+
+	case ACPI_GSB_ACCESS_ATTRIB_BYTE:
+		if (action == ACPI_READ) {
+			status = i2c_smbus_read_byte_data(&client, command);
+			if (status >= 0) {
+				gsb->bdata = status;
+				status = 0;
+			}
+		} else {
+			status = i2c_smbus_write_byte_data(&client, command,
+					gsb->bdata);
+		}
+		break;
+
+	case ACPI_GSB_ACCESS_ATTRIB_WORD:
+		if (action == ACPI_READ) {
+			status = i2c_smbus_read_word_data(&client, command);
+			if (status >= 0) {
+				gsb->wdata = status;
+				status = 0;
+			}
+		} else {
+			status = i2c_smbus_write_word_data(&client, command,
+					gsb->wdata);
+		}
+		break;
+
+	case ACPI_GSB_ACCESS_ATTRIB_BLOCK:
+		if (action == ACPI_READ) {
+			status = i2c_smbus_read_block_data(&client, command,
+					gsb->data);
+			if (status >= 0) {
+				gsb->len = status;
+				status = 0;
+			}
+		} else {
+			status = i2c_smbus_write_block_data(&client, command,
+					gsb->len, gsb->data);
+		}
+		break;
+
+	case ACPI_GSB_ACCESS_ATTRIB_MULTIBYTE:
+		if (action == ACPI_READ) {
+			status = acpi_gsb_i2c_read_bytes(&client, command,
+					gsb->data, info->access_length);
+			if (status > 0)
+				status = 0;
+		} else {
+			status = acpi_gsb_i2c_write_bytes(&client, command,
+					gsb->data, info->access_length);
+		}
+		break;
+
+	case ACPI_GSB_ACCESS_ATTRIB_WORD_CALL:
+		status = i2c_smbus_word_proc_call(&client, command, gsb->wdata);
+		if (status >= 0) {
+			gsb->wdata = status;
+			status = 0;
+		}
+		break;
+
+	case ACPI_GSB_ACCESS_ATTRIB_BLOCK_CALL:
+		status = i2c_smbus_block_proc_call(&client, command, gsb->len,
+				gsb->data);
+		if (status > 0) {
+			gsb->len = status;
+			status = 0;
+		}
+		break;
+
+	default:
+		pr_info("protocl(0x%02x) is not supported.\n", accessor_type);
+		return AE_BAD_PARAMETER;
+	}
+
+	gsb->status = status;
+	return AE_OK;
+}
+
+
+int acpi_i2c_install_space_handler(struct i2c_adapter *adapter)
+{
+	acpi_handle handle = ACPI_HANDLE(adapter->dev.parent);
+	struct acpi_i2c_handler_data *data;
+	acpi_status status;
+
+	if (!handle)
+		return -ENODEV;
+
+	data = kzalloc(sizeof(struct acpi_i2c_handler_data),
+			    GFP_KERNEL);
+	if (!data)
+		return -ENOMEM;
+
+	data->adapter = adapter;
+	status = acpi_bus_attach_private_data(handle, (void *)data);
+	if (ACPI_FAILURE(status)) {
+		kfree(data);
+		return -ENOMEM;
+	}
+
+	status = acpi_install_address_space_handler(handle,
+				ACPI_ADR_SPACE_GSBUS,
+				&acpi_i2c_space_handler,
+				NULL,
+				data);
+	if (ACPI_FAILURE(status)) {
+		pr_err("Error installing i2c space handler\n");
+		acpi_bus_attach_private_data(handle, NULL);
+		kfree(data);
+		return -ENOMEM;
+	}
+
+	return 0;
+}
+
+void acpi_i2c_remove_space_handler(struct i2c_adapter *adapter)
+{
+	acpi_handle handle = ACPI_HANDLE(adapter->dev.parent);
+	struct acpi_i2c_handler_data *data;
+	acpi_status status;
+
+	if (!handle)
+		return;
+
+	acpi_remove_address_space_handler(handle,
+				ACPI_ADR_SPACE_GSBUS,
+				&acpi_i2c_space_handler);
+
+	status = acpi_bus_get_private_data(handle, (void **)&data);
+	if (ACPI_SUCCESS(status))
+		kfree(data);
+}
diff --git a/drivers/i2c/i2c-core.c b/drivers/i2c/i2c-core.c
index 638befd..bb9dc56 100644
--- a/drivers/i2c/i2c-core.c
+++ b/drivers/i2c/i2c-core.c
@@ -1293,6 +1293,7 @@ exit_recovery:
 	/* create pre-declared device nodes */
 	of_i2c_register_devices(adap);
 	acpi_i2c_register_devices(adap);
+	acpi_i2c_install_space_handler(adap);
 
 	if (adap->nr < __i2c_first_dynamic_bus_num)
 		i2c_scan_static_board_info(adap);
@@ -1466,6 +1467,7 @@ void i2c_del_adapter(struct i2c_adapter *adap)
 		return;
 	}
 
+	acpi_i2c_remove_space_handler(adap);
 	/* Tell drivers about this removal */
 	mutex_lock(&core_lock);
 	bus_for_each_drv(&i2c_bus_type, NULL, adap,
diff --git a/include/linux/acpi.h b/include/linux/acpi.h
index 7a8f2cd..ea53b9b 100644
--- a/include/linux/acpi.h
+++ b/include/linux/acpi.h
@@ -361,6 +361,17 @@ extern bool osc_sb_apei_support_acked;
 #define OSC_PCI_EXPRESS_CAPABILITY_CONTROL	0x00000010
 #define OSC_PCI_CONTROL_MASKS			0x0000001f
 
+#define ACPI_GSB_ACCESS_ATTRIB_QUICK		0x00000002
+#define ACPI_GSB_ACCESS_ATTRIB_SEND_RCV         0x00000004
+#define ACPI_GSB_ACCESS_ATTRIB_BYTE		0x00000006
+#define ACPI_GSB_ACCESS_ATTRIB_WORD		0x00000008
+#define ACPI_GSB_ACCESS_ATTRIB_BLOCK		0x0000000A
+#define ACPI_GSB_ACCESS_ATTRIB_MULTIBYTE	0x0000000B
+#define ACPI_GSB_ACCESS_ATTRIB_WORD_CALL	0x0000000C
+#define ACPI_GSB_ACCESS_ATTRIB_BLOCK_CALL	0x0000000D
+#define ACPI_GSB_ACCESS_ATTRIB_RAW_BYTES	0x0000000E
+#define ACPI_GSB_ACCESS_ATTRIB_RAW_PROCESS	0x0000000F
+
 extern acpi_status acpi_pci_osc_control_set(acpi_handle handle,
 					     u32 *mask, u32 req);
 
diff --git a/include/linux/i2c.h b/include/linux/i2c.h
index 724440a..681e689 100644
--- a/include/linux/i2c.h
+++ b/include/linux/i2c.h
@@ -583,4 +583,14 @@ static inline struct i2c_adapter *of_find_i2c_adapter_by_node(struct device_node
 }
 #endif /* CONFIG_OF */
 
+#ifdef CONFIG_ACPI
+int acpi_i2c_install_space_handler(struct i2c_adapter *adapter);
+void acpi_i2c_remove_space_handler(struct i2c_adapter *adapter);
+#else
+static inline void acpi_i2c_remove_space_handler(struct i2c_adapter *adapter)
+{ }
+static inline int acpi_i2c_install_space_handler(struct i2c_adapter *adapter)
+{ return 0; }
+#endif
+
 #endif /* _LINUX_I2C_H */
-- 
1.8.4.rc0.1.g8f6a3e5.dirty


^ permalink raw reply related	[flat|nested] 79+ messages in thread

* [PATCH 8/9] I2C/ACPI: Move ACPI related code to i2c-acpi.c
  2014-04-16 13:24 [PATCH 0/9] I2C ACPI operation region handler support Lan Tianyu
                   ` (6 preceding siblings ...)
  2014-04-16 13:24 ` [PATCH 7/9] I2C/ACPI: Add i2c ACPI operation region support Lan Tianyu
@ 2014-04-16 13:24 ` Lan Tianyu
  2014-04-16 13:24 ` [PATCH 9/9] I2C/ACPI: Add CONFIG_I2C_ACPI config Lan Tianyu
                   ` (3 subsequent siblings)
  11 siblings, 0 replies; 79+ messages in thread
From: Lan Tianyu @ 2014-04-16 13:24 UTC (permalink / raw)
  To: wsa, rjw, lenb, mika.westerberg, awilliam, tianyu.lan
  Cc: linux-i2c, linux-kernel

Clean up ACPI related code in the i2c core.

Signed-off-by: Lan Tianyu <tianyu.lan@intel.com>
---
 drivers/i2c/i2c-acpi.c | 89 ++++++++++++++++++++++++++++++++++++++++++++++
 drivers/i2c/i2c-core.c | 95 --------------------------------------------------
 include/linux/i2c.h    |  3 ++
 3 files changed, 92 insertions(+), 95 deletions(-)

diff --git a/drivers/i2c/i2c-acpi.c b/drivers/i2c/i2c-acpi.c
index 942abdf..a0ae867 100644
--- a/drivers/i2c/i2c-acpi.c
+++ b/drivers/i2c/i2c-acpi.c
@@ -37,6 +37,95 @@ struct gsb_buffer {
 	};
 } __packed;
 
+static int acpi_i2c_add_resource(struct acpi_resource *ares, void *data)
+{
+	struct i2c_board_info *info = data;
+
+	if (ares->type == ACPI_RESOURCE_TYPE_SERIAL_BUS) {
+		struct acpi_resource_i2c_serialbus *sb;
+
+		sb = &ares->data.i2c_serial_bus;
+		if (sb->type == ACPI_RESOURCE_SERIAL_TYPE_I2C) {
+			info->addr = sb->slave_address;
+			if (sb->access_mode == ACPI_I2C_10BIT_MODE)
+				info->flags |= I2C_CLIENT_TEN;
+		}
+	} else if (info->irq < 0) {
+		struct resource r;
+
+		if (acpi_dev_resource_interrupt(ares, 0, &r))
+			info->irq = r.start;
+	}
+
+	/* Tell the ACPI core to skip this resource */
+	return 1;
+}
+
+static acpi_status acpi_i2c_add_device(acpi_handle handle, u32 level,
+				       void *data, void **return_value)
+{
+	struct i2c_adapter *adapter = data;
+	struct list_head resource_list;
+	struct i2c_board_info info;
+	struct acpi_device *adev;
+	int ret;
+
+	if (acpi_bus_get_device(handle, &adev))
+		return AE_OK;
+	if (acpi_bus_get_status(adev) || !adev->status.present)
+		return AE_OK;
+
+	memset(&info, 0, sizeof(info));
+	info.acpi_node.companion = adev;
+	info.irq = -1;
+
+	INIT_LIST_HEAD(&resource_list);
+	ret = acpi_dev_get_resources(adev, &resource_list,
+				     acpi_i2c_add_resource, &info);
+	acpi_dev_free_resource_list(&resource_list);
+
+	if (ret < 0 || !info.addr)
+		return AE_OK;
+
+	adev->power.flags.ignore_parent = true;
+	strlcpy(info.type, dev_name(&adev->dev), sizeof(info.type));
+	if (!i2c_new_device(adapter, &info)) {
+		adev->power.flags.ignore_parent = false;
+		dev_err(&adapter->dev,
+			"failed to add I2C device %s from ACPI\n",
+			dev_name(&adev->dev));
+	}
+
+	return AE_OK;
+}
+
+/**
+ * acpi_i2c_register_devices - enumerate I2C slave devices behind adapter
+ * @adap: pointer to adapter
+ *
+ * Enumerate all I2C slave devices behind this adapter by walking the ACPI
+ * namespace. When a device is found it will be added to the Linux device
+ * model and bound to the corresponding ACPI handle.
+ */
+void acpi_i2c_register_devices(struct i2c_adapter *adap)
+{
+	acpi_handle handle;
+	acpi_status status;
+
+	if (!adap->dev.parent)
+		return;
+
+	handle = ACPI_HANDLE(adap->dev.parent);
+	if (!handle)
+		return;
+
+	status = acpi_walk_namespace(ACPI_TYPE_DEVICE, handle, 1,
+				     acpi_i2c_add_device, NULL,
+				     adap, NULL);
+	if (ACPI_FAILURE(status))
+		dev_warn(&adap->dev, "failed to enumerate I2C slaves\n");
+}
+
 static int acpi_gsb_i2c_read_bytes(struct i2c_client *client,
 		u8 cmd, u8 *data, u8 data_len)
 {
diff --git a/drivers/i2c/i2c-core.c b/drivers/i2c/i2c-core.c
index bb9dc56..9ca50c8 100644
--- a/drivers/i2c/i2c-core.c
+++ b/drivers/i2c/i2c-core.c
@@ -1092,101 +1092,6 @@ EXPORT_SYMBOL(of_find_i2c_adapter_by_node);
 static void of_i2c_register_devices(struct i2c_adapter *adap) { }
 #endif /* CONFIG_OF */
 
-/* ACPI support code */
-
-#if IS_ENABLED(CONFIG_ACPI)
-static int acpi_i2c_add_resource(struct acpi_resource *ares, void *data)
-{
-	struct i2c_board_info *info = data;
-
-	if (ares->type == ACPI_RESOURCE_TYPE_SERIAL_BUS) {
-		struct acpi_resource_i2c_serialbus *sb;
-
-		sb = &ares->data.i2c_serial_bus;
-		if (sb->type == ACPI_RESOURCE_SERIAL_TYPE_I2C) {
-			info->addr = sb->slave_address;
-			if (sb->access_mode == ACPI_I2C_10BIT_MODE)
-				info->flags |= I2C_CLIENT_TEN;
-		}
-	} else if (info->irq < 0) {
-		struct resource r;
-
-		if (acpi_dev_resource_interrupt(ares, 0, &r))
-			info->irq = r.start;
-	}
-
-	/* Tell the ACPI core to skip this resource */
-	return 1;
-}
-
-static acpi_status acpi_i2c_add_device(acpi_handle handle, u32 level,
-				       void *data, void **return_value)
-{
-	struct i2c_adapter *adapter = data;
-	struct list_head resource_list;
-	struct i2c_board_info info;
-	struct acpi_device *adev;
-	int ret;
-
-	if (acpi_bus_get_device(handle, &adev))
-		return AE_OK;
-	if (acpi_bus_get_status(adev) || !adev->status.present)
-		return AE_OK;
-
-	memset(&info, 0, sizeof(info));
-	info.acpi_node.companion = adev;
-	info.irq = -1;
-
-	INIT_LIST_HEAD(&resource_list);
-	ret = acpi_dev_get_resources(adev, &resource_list,
-				     acpi_i2c_add_resource, &info);
-	acpi_dev_free_resource_list(&resource_list);
-
-	if (ret < 0 || !info.addr)
-		return AE_OK;
-
-	adev->power.flags.ignore_parent = true;
-	strlcpy(info.type, dev_name(&adev->dev), sizeof(info.type));
-	if (!i2c_new_device(adapter, &info)) {
-		adev->power.flags.ignore_parent = false;
-		dev_err(&adapter->dev,
-			"failed to add I2C device %s from ACPI\n",
-			dev_name(&adev->dev));
-	}
-
-	return AE_OK;
-}
-
-/**
- * acpi_i2c_register_devices - enumerate I2C slave devices behind adapter
- * @adap: pointer to adapter
- *
- * Enumerate all I2C slave devices behind this adapter by walking the ACPI
- * namespace. When a device is found it will be added to the Linux device
- * model and bound to the corresponding ACPI handle.
- */
-static void acpi_i2c_register_devices(struct i2c_adapter *adap)
-{
-	acpi_handle handle;
-	acpi_status status;
-
-	if (!adap->dev.parent)
-		return;
-
-	handle = ACPI_HANDLE(adap->dev.parent);
-	if (!handle)
-		return;
-
-	status = acpi_walk_namespace(ACPI_TYPE_DEVICE, handle, 1,
-				     acpi_i2c_add_device, NULL,
-				     adap, NULL);
-	if (ACPI_FAILURE(status))
-		dev_warn(&adap->dev, "failed to enumerate I2C slaves\n");
-}
-#else
-static inline void acpi_i2c_register_devices(struct i2c_adapter *adap) {}
-#endif /* CONFIG_ACPI */
-
 static int i2c_do_add_adapter(struct i2c_driver *driver,
 			      struct i2c_adapter *adap)
 {
diff --git a/include/linux/i2c.h b/include/linux/i2c.h
index 681e689..fc1ef42 100644
--- a/include/linux/i2c.h
+++ b/include/linux/i2c.h
@@ -586,7 +586,10 @@ static inline struct i2c_adapter *of_find_i2c_adapter_by_node(struct device_node
 #ifdef CONFIG_ACPI
 int acpi_i2c_install_space_handler(struct i2c_adapter *adapter);
 void acpi_i2c_remove_space_handler(struct i2c_adapter *adapter);
+void acpi_i2c_register_devices(struct i2c_adapter *adap);
 #else
+static inline void acpi_i2c_register_devices(struct i2c_adapter *adap) {};
+
 static inline void acpi_i2c_remove_space_handler(struct i2c_adapter *adapter)
 { }
 static inline int acpi_i2c_install_space_handler(struct i2c_adapter *adapter)
-- 
1.8.4.rc0.1.g8f6a3e5.dirty


^ permalink raw reply related	[flat|nested] 79+ messages in thread

* [PATCH 9/9] I2C/ACPI: Add CONFIG_I2C_ACPI config
  2014-04-16 13:24 [PATCH 0/9] I2C ACPI operation region handler support Lan Tianyu
                   ` (7 preceding siblings ...)
  2014-04-16 13:24 ` [PATCH 8/9] I2C/ACPI: Move ACPI related code to i2c-acpi.c Lan Tianyu
@ 2014-04-16 13:24 ` Lan Tianyu
  2014-04-16 13:33 ` [PATCH 0/9] I2C ACPI operation region handler support Lan Tianyu
                   ` (2 subsequent siblings)
  11 siblings, 0 replies; 79+ messages in thread
From: Lan Tianyu @ 2014-04-16 13:24 UTC (permalink / raw)
  To: wsa, rjw, lenb, mika.westerberg, awilliam, tianyu.lan
  Cc: linux-i2c, linux-kernel

This patch is to add CONFIG_I2C_ACPI. Current there is a race between
removing I2C ACPI operation region and ACPI AML code accessing.
So make i2c core built-in if CONFIG_I2C_ACPI is set. The race will
be fixed later in the ACPICA.

Signed-off-by: Lan Tianyu <tianyu.lan@intel.com>
---
 drivers/i2c/Kconfig  | 16 +++++++++++++++-
 drivers/i2c/Makefile |  2 +-
 include/linux/i2c.h  |  2 +-
 3 files changed, 17 insertions(+), 3 deletions(-)

diff --git a/drivers/i2c/Kconfig b/drivers/i2c/Kconfig
index 7b7ea32..15d782e 100644
--- a/drivers/i2c/Kconfig
+++ b/drivers/i2c/Kconfig
@@ -2,7 +2,9 @@
 # I2C subsystem configuration
 #
 
-menuconfig I2C
+menu "I2C support"
+
+config I2C
 	tristate "I2C support"
 	select RT_MUTEXES
 	---help---
@@ -21,6 +23,16 @@ menuconfig I2C
 	  This I2C support can also be built as a module.  If so, the module
 	  will be called i2c-core.
 
+config I2C_ACPI
+	bool "I2C ACPI support"
+	select I2C
+	depends on ACPI
+	help
+	  Say Y here if you want to enable I2C ACPI function. ACPI table
+	  provides I2C slave devices' information to enumerate these devices.
+	  This option also allows ACPI AML code to access I2C slave devices
+	  via I2C ACPI operation region to fulfill ACPI method.
+
 if I2C
 
 config I2C_BOARDINFO
@@ -124,3 +136,5 @@ config I2C_DEBUG_BUS
 	  on.
 
 endif # I2C
+
+endmenu
diff --git a/drivers/i2c/Makefile b/drivers/i2c/Makefile
index 80db307..37464ee 100644
--- a/drivers/i2c/Makefile
+++ b/drivers/i2c/Makefile
@@ -3,7 +3,7 @@
 #
 
 i2ccore-y := i2c-core.o
-i2ccore-$(CONFIG_ACPI)		+= i2c-acpi.o
+i2ccore-$(CONFIG_I2C_ACPI)		+= i2c-acpi.o
 
 obj-$(CONFIG_I2C_BOARDINFO)	+= i2c-boardinfo.o
 obj-$(CONFIG_I2C)		+= i2ccore.o
diff --git a/include/linux/i2c.h b/include/linux/i2c.h
index fc1ef42..d0ece9f 100644
--- a/include/linux/i2c.h
+++ b/include/linux/i2c.h
@@ -583,7 +583,7 @@ static inline struct i2c_adapter *of_find_i2c_adapter_by_node(struct device_node
 }
 #endif /* CONFIG_OF */
 
-#ifdef CONFIG_ACPI
+#ifdef CONFIG_I2C_ACPI
 int acpi_i2c_install_space_handler(struct i2c_adapter *adapter);
 void acpi_i2c_remove_space_handler(struct i2c_adapter *adapter);
 void acpi_i2c_register_devices(struct i2c_adapter *adap);
-- 
1.8.4.rc0.1.g8f6a3e5.dirty


^ permalink raw reply related	[flat|nested] 79+ messages in thread

* Re: [PATCH 0/9] I2C ACPI operation region handler support
  2014-04-16 13:24 [PATCH 0/9] I2C ACPI operation region handler support Lan Tianyu
                   ` (8 preceding siblings ...)
  2014-04-16 13:24 ` [PATCH 9/9] I2C/ACPI: Add CONFIG_I2C_ACPI config Lan Tianyu
@ 2014-04-16 13:33 ` Lan Tianyu
  2014-04-16 16:35 ` Adam Williamson
  2014-04-22  6:24 ` [Resend Patch " Lan Tianyu
  11 siblings, 0 replies; 79+ messages in thread
From: Lan Tianyu @ 2014-04-16 13:33 UTC (permalink / raw)
  To: wsa, rjw, lenb, mika.westerberg, awilliam; +Cc: linux-i2c, linux-kernel

[-- Attachment #1: Type: text/plain, Size: 1278 bytes --]

On 04/16/2014 09:24 PM, Lan Tianyu wrote:
> ACPI 5.0 spec(5.5.2.4.5) defines GenericSerialBus(i2c, spi, uart) operation
> region. It allows ACPI aml code able to access such kind of devices to
> implement some ACPI standard method.
>
> On the Asus T100TA, Bios use GenericSerialBus operation region to access
> i2c device to get battery info. So battery function depends on the I2C
> operation region support. Here is the bug link.
> https://bugzilla.kernel.org/show_bug.cgi?id=69011

Completely fixing battery issue on the Asus T100TA also needs ACPI _DEP
support. The feature is under developing. Attach a temporary patch
for test.

>
> This patchset is to add I2C ACPI operation region handler support.
>
> [PATCH 1/9] ACPICA: Executer: Fix buffer allocation issue for
> [PATCH 2/9] ACPICA: Export acpi_buffer_to_resource symbol
> [PATCH 3/9] ACPI: Add acpi_bus_attach_private_data() to facilitate to
> [PATCH 4/9] ACPI/Thermal: Use acpi_bus_attach_private_data() to
> [PATCH 5/9] I2C: Add smbus quick read/write helper function
> [PATCH 6/9] I2C: Add smbus word/block process call helper function
> [PATCH 7/9] I2C/ACPI: Add i2c ACPI operation region support
> [PATCH 8/9] I2C/ACPI: Move ACPI related code to i2c-acpi.c
> [PATCH 9/9] I2C/ACPI: Add CONFIG_I2C_ACPI config
>


[-- Attachment #2: 0001-ACPI-temporary-dep-solution-for-battery-support.patch --]
[-- Type: text/x-patch, Size: 4184 bytes --]

>From bbadbc67de278123e28dd6f9ee7e88b6ada56ce4 Mon Sep 17 00:00:00 2001
From: Lan Tianyu <tianyu.lan@intel.com>
Date: Fri, 21 Mar 2014 16:42:12 +0800
Subject: [PATCH] ACPI: temporary dep solution for battery support

This is a dep workaround for battery support on Asus T100TA and the formal
dep solution is under developing. This patch is just for test and will
not be upstreamed.
---
 drivers/acpi/scan.c    | 64 +++++++++++++++++++++++++++++++++++++++++++++++---
 drivers/i2c/i2c-acpi.c |  1 +
 include/linux/acpi.h   |  1 +
 3 files changed, 63 insertions(+), 3 deletions(-)

diff --git a/drivers/acpi/scan.c b/drivers/acpi/scan.c
index 7efe546..254afb7 100644
--- a/drivers/acpi/scan.c
+++ b/drivers/acpi/scan.c
@@ -36,6 +36,7 @@ bool acpi_force_hot_remove;
 
 static const char *dummy_hid = "device";
 
+static LIST_HEAD(acpi_bus_dep_device_list);
 static LIST_HEAD(acpi_bus_id_list);
 static DEFINE_MUTEX(acpi_scan_lock);
 static LIST_HEAD(acpi_scan_handlers_list);
@@ -43,6 +44,12 @@ DEFINE_MUTEX(acpi_device_lock);
 LIST_HEAD(acpi_wakeup_device_list);
 static DEFINE_MUTEX(acpi_hp_context_lock);
 
+
+struct acpi_dep_handle {
+	struct list_head node;
+	acpi_handle handle;
+};
+
 struct acpi_device_bus_id{
 	char bus_id[15];
 	unsigned int instance_no;
@@ -2027,10 +2034,22 @@ static void acpi_scan_init_hotplug(struct acpi_device *adev)
 	}
 }
 
+
+static int acpi_dep_device_check(acpi_handle handle)
+{
+	struct acpi_dep_handle *dep;
+
+	list_for_each_entry(dep, &acpi_bus_dep_device_list, node)
+		if (dep->handle == handle)
+			return -EEXIST;
+	return 0;
+}
+
 static acpi_status acpi_bus_check_add(acpi_handle handle, u32 lvl_not_used,
 				      void *not_used, void **return_value)
 {
 	struct acpi_device *device = NULL;
+	struct acpi_dep_handle *dep = NULL;
 	int type;
 	unsigned long long sta;
 	int result;
@@ -2048,9 +2067,24 @@ static acpi_status acpi_bus_check_add(acpi_handle handle, u32 lvl_not_used,
 		return AE_OK;
 	}
 
-	acpi_add_single_object(&device, handle, type, sta);
-	if (!device)
-		return AE_CTRL_DEPTH;
+	if (!acpi_dep_device_check(handle)
+	   && acpi_has_method(handle, "_BIX")
+	   && acpi_has_method(handle, "_DEP")) {
+		dep = kmalloc(sizeof(struct acpi_dep_handle), GFP_KERNEL);
+		if (!dep)
+			return AE_CTRL_DEPTH;
+		dep->handle = handle;
+		list_add_tail(&dep->node , &acpi_bus_dep_device_list);
+
+		acpi_handle_info(dep->handle,
+				"is added to dep device list.\n");
+
+		return AE_OK;
+	} else {
+		acpi_add_single_object(&device, handle, type, sta);
+		if (!device)
+			return AE_CTRL_DEPTH;
+	}
 
 	acpi_scan_init_hotplug(device);
 
@@ -2061,6 +2095,30 @@ static acpi_status acpi_bus_check_add(acpi_handle handle, u32 lvl_not_used,
 	return AE_OK;
 }
 
+int acpi_walk_dep_device_list(void)
+{
+	struct acpi_dep_handle *dep, *tmp;
+	acpi_status status;
+	unsigned long long sta;
+
+	list_for_each_entry_safe(dep, tmp, &acpi_bus_dep_device_list, node) {
+		status = acpi_evaluate_integer(dep->handle, "_STA", NULL, &sta);
+
+		if (ACPI_FAILURE(status)) {
+			acpi_handle_warn(dep->handle,
+				"Status check failed (0x%x)\n", status);
+		} else if (sta & ACPI_STA_DEVICE_ENABLED) {
+			acpi_bus_scan(dep->handle);
+			acpi_handle_info(dep->handle,
+				"Device is readly\n");
+			list_del(&dep->node);
+			kfree(dep);
+		}
+	}
+	return 0;
+}
+EXPORT_SYMBOL_GPL(acpi_walk_dep_device_list);
+
 static int acpi_scan_attach_handler(struct acpi_device *device)
 {
 	struct acpi_hardware_id *hwid;
diff --git a/drivers/i2c/i2c-acpi.c b/drivers/i2c/i2c-acpi.c
index a0ae867..471490a 100644
--- a/drivers/i2c/i2c-acpi.c
+++ b/drivers/i2c/i2c-acpi.c
@@ -349,6 +349,7 @@ int acpi_i2c_install_space_handler(struct i2c_adapter *adapter)
 		return -ENOMEM;
 	}
 
+	acpi_walk_dep_device_list();
 	return 0;
 }
 
diff --git a/include/linux/acpi.h b/include/linux/acpi.h
index 667204c..66ad0dd 100644
--- a/include/linux/acpi.h
+++ b/include/linux/acpi.h
@@ -115,6 +115,7 @@ int acpi_boot_init (void);
 void acpi_boot_table_init (void);
 int acpi_mps_check (void);
 int acpi_numa_init (void);
+int acpi_walk_dep_device_list(void);
 
 int acpi_table_init (void);
 int acpi_table_parse(char *id, acpi_tbl_table_handler handler);
-- 
1.8.3.1


^ permalink raw reply related	[flat|nested] 79+ messages in thread

* Re: [PATCH 0/9] I2C ACPI operation region handler support
  2014-04-16 13:24 [PATCH 0/9] I2C ACPI operation region handler support Lan Tianyu
                   ` (9 preceding siblings ...)
  2014-04-16 13:33 ` [PATCH 0/9] I2C ACPI operation region handler support Lan Tianyu
@ 2014-04-16 16:35 ` Adam Williamson
  2014-04-22  6:24 ` [Resend Patch " Lan Tianyu
  11 siblings, 0 replies; 79+ messages in thread
From: Adam Williamson @ 2014-04-16 16:35 UTC (permalink / raw)
  To: Lan Tianyu; +Cc: wsa, rjw, lenb, mika.westerberg, linux-i2c, linux-kernel

On Wed, 2014-04-16 at 21:24 +0800, Lan Tianyu wrote:
> ACPI 5.0 spec(5.5.2.4.5) defines GenericSerialBus(i2c, spi, uart) operation
> region. It allows ACPI aml code able to access such kind of devices to
> implement some ACPI standard method.
> 
> On the Asus T100TA, Bios use GenericSerialBus operation region to access
> i2c device to get battery info. So battery function depends on the I2C
> operation region support. Here is the bug link.
> https://bugzilla.kernel.org/show_bug.cgi?id=69011
> 
> This patchset is to add I2C ACPI operation region handler support.
> 
> [PATCH 1/9] ACPICA: Executer: Fix buffer allocation issue for
> [PATCH 2/9] ACPICA: Export acpi_buffer_to_resource symbol
> [PATCH 3/9] ACPI: Add acpi_bus_attach_private_data() to facilitate to
> [PATCH 4/9] ACPI/Thermal: Use acpi_bus_attach_private_data() to
> [PATCH 5/9] I2C: Add smbus quick read/write helper function
> [PATCH 6/9] I2C: Add smbus word/block process call helper function
> [PATCH 7/9] I2C/ACPI: Add i2c ACPI operation region support
> [PATCH 8/9] I2C/ACPI: Move ACPI related code to i2c-acpi.c
> [PATCH 9/9] I2C/ACPI: Add CONFIG_I2C_ACPI config

I've tested the version of these changes that's available as
https://bugzilla.kernel.org/attachment.cgi?id=131321 on my Venue 8 Pro
and found it gives apparently accurate battery stats (and doesn't seem
to make anything else explode). I'll try this form of the change out
today if I can.
-- 
Adam Williamson
Fedora QA Community Monkey
IRC: adamw | Twitter: AdamW_Fedora | XMPP: adamw AT happyassassin . net
http://www.happyassassin.net


^ permalink raw reply	[flat|nested] 79+ messages in thread

* Re: [PATCH 1/9] ACPICA: Executer: Fix buffer allocation issue for generic_serial_bus region field accesses.
  2014-04-16 13:24 ` [PATCH 1/9] ACPICA: Executer: Fix buffer allocation issue for generic_serial_bus region field accesses Lan Tianyu
@ 2014-04-21 21:38   ` Rafael J. Wysocki
  2014-04-22  1:14     ` Lan Tianyu
  0 siblings, 1 reply; 79+ messages in thread
From: Rafael J. Wysocki @ 2014-04-21 21:38 UTC (permalink / raw)
  To: Lan Tianyu
  Cc: wsa, lenb, mika.westerberg, awilliam, robert.moore, lv.zheng,
	rafael.j.wysocki, linux-i2c, linux-kernel, linux-acpi, devel

Hi,

On Wednesday, April 16, 2014 09:24:34 PM Lan Tianyu wrote:
> From: Lv Zheng <lv.zheng@intel.com>
> 
> The size of the buffer allocated for generic_serial_bus region access
> is not correct.  This patch introduces acpi_ex_get_serial_access_length()
> to be invoked to obtain correct data buffer length.  Reported by
> Lan Tianyu, Fixed by Lv Zheng.
> 
> Signed-off-by: Lv Zheng <lv.zheng@intel.com>
> Signed-off-by: Lan Tianyu <tianyu.lan@intel.com>

I'm queueing up this patch as a fix for 3.15, but can you please resend the
whole series with a CC to linux-acpi?


> ---
>  drivers/acpi/acpica/exfield.c | 104 +++++++++++++++++++++++++++++++++++++++---
>  1 file changed, 97 insertions(+), 7 deletions(-)
> 
> diff --git a/drivers/acpi/acpica/exfield.c b/drivers/acpi/acpica/exfield.c
> index 68d9744..12878e1 100644
> --- a/drivers/acpi/acpica/exfield.c
> +++ b/drivers/acpi/acpica/exfield.c
> @@ -45,10 +45,71 @@
>  #include "accommon.h"
>  #include "acdispat.h"
>  #include "acinterp.h"
> +#include "amlcode.h"
>  
>  #define _COMPONENT          ACPI_EXECUTER
>  ACPI_MODULE_NAME("exfield")
>  
> +/* Local prototypes */
> +static u32
> +acpi_ex_get_serial_access_length(u32 accessor_type, u32 access_length);
> +
> +/*******************************************************************************
> + *
> + * FUNCTION:    acpi_get_serial_access_bytes
> + *
> + * PARAMETERS:  accessor_type   - The type of the protocol indicated by region
> + *                                field access attributes
> + *              access_length   - The access length of the region field
> + *
> + * RETURN:      Decoded access length
> + *
> + * DESCRIPTION: This routine returns the length of the generic_serial_bus
> + *              protocol bytes
> + *
> + ******************************************************************************/
> +
> +static u32
> +acpi_ex_get_serial_access_length(u32 accessor_type, u32 access_length)
> +{
> +	u32 length;
> +
> +	switch (accessor_type) {
> +	case AML_FIELD_ATTRIB_QUICK:
> +
> +		length = 0;
> +		break;
> +
> +	case AML_FIELD_ATTRIB_SEND_RCV:
> +	case AML_FIELD_ATTRIB_BYTE:
> +
> +		length = 1;
> +		break;
> +
> +	case AML_FIELD_ATTRIB_WORD:
> +	case AML_FIELD_ATTRIB_WORD_CALL:
> +
> +		length = 2;
> +		break;
> +
> +	case AML_FIELD_ATTRIB_MULTIBYTE:
> +	case AML_FIELD_ATTRIB_RAW_BYTES:
> +	case AML_FIELD_ATTRIB_RAW_PROCESS:
> +
> +		length = access_length;
> +		break;
> +
> +	case AML_FIELD_ATTRIB_BLOCK:
> +	case AML_FIELD_ATTRIB_BLOCK_CALL:
> +	default:
> +
> +		length = ACPI_GSBUS_BUFFER_SIZE;
> +		break;
> +	}
> +
> +	return (length);
> +}
> +
>  /*******************************************************************************
>   *
>   * FUNCTION:    acpi_ex_read_data_from_field
> @@ -63,8 +124,9 @@ ACPI_MODULE_NAME("exfield")
>   *              Buffer, depending on the size of the field.
>   *
>   ******************************************************************************/
> +
>  acpi_status
> -acpi_ex_read_data_from_field(struct acpi_walk_state *walk_state,
> +acpi_ex_read_data_from_field(struct acpi_walk_state * walk_state,
>  			     union acpi_operand_object *obj_desc,
>  			     union acpi_operand_object **ret_buffer_desc)
>  {
> @@ -73,6 +135,7 @@ acpi_ex_read_data_from_field(struct acpi_walk_state *walk_state,
>  	acpi_size length;
>  	void *buffer;
>  	u32 function;
> +	u16 accessor_type;
>  
>  	ACPI_FUNCTION_TRACE_PTR(ex_read_data_from_field, obj_desc);
>  
> @@ -116,9 +179,22 @@ acpi_ex_read_data_from_field(struct acpi_walk_state *walk_state,
>  			    ACPI_READ | (obj_desc->field.attribute << 16);
>  		} else if (obj_desc->field.region_obj->region.space_id ==
>  			   ACPI_ADR_SPACE_GSBUS) {
> -			length = ACPI_GSBUS_BUFFER_SIZE;
> -			function =
> -			    ACPI_READ | (obj_desc->field.attribute << 16);
> +			accessor_type = obj_desc->field.attribute;
> +			length = acpi_ex_get_serial_access_length(accessor_type,
> +								  obj_desc->
> +								  field.
> +								  access_length);
> +
> +			/*
> +			 * Add additional 2 bytes for modeled generic_serial_bus data buffer:
> +			 * typedef struct {
> +			 *     BYTEStatus; // Byte 0 of the data buffer
> +			 *     BYTELength; // Byte 1 of the data buffer
> +			 *     BYTE[x-1]Data; // Bytes 2-x of the arbitrary length data buffer,
> +			 * }
> +			 */
> +			length += 2;
> +			function = ACPI_READ | (accessor_type << 16);
>  		} else {	/* IPMI */
>  
>  			length = ACPI_IPMI_BUFFER_SIZE;
> @@ -231,6 +307,7 @@ acpi_ex_write_data_to_field(union acpi_operand_object *source_desc,
>  	void *buffer;
>  	union acpi_operand_object *buffer_desc;
>  	u32 function;
> +	u16 accessor_type;
>  
>  	ACPI_FUNCTION_TRACE_PTR(ex_write_data_to_field, obj_desc);
>  
> @@ -284,9 +361,22 @@ acpi_ex_write_data_to_field(union acpi_operand_object *source_desc,
>  			    ACPI_WRITE | (obj_desc->field.attribute << 16);
>  		} else if (obj_desc->field.region_obj->region.space_id ==
>  			   ACPI_ADR_SPACE_GSBUS) {
> -			length = ACPI_GSBUS_BUFFER_SIZE;
> -			function =
> -			    ACPI_WRITE | (obj_desc->field.attribute << 16);
> +			accessor_type = obj_desc->field.attribute;
> +			length = acpi_ex_get_serial_access_length(accessor_type,
> +								  obj_desc->
> +								  field.
> +								  access_length);
> +
> +			/*
> +			 * Add additional 2 bytes for modeled generic_serial_bus data buffer:
> +			 * typedef struct {
> +			 *     BYTEStatus; // Byte 0 of the data buffer
> +			 *     BYTELength; // Byte 1 of the data buffer
> +			 *     BYTE[x-1]Data; // Bytes 2-x of the arbitrary length data buffer,
> +			 * }
> +			 */
> +			length += 2;
> +			function = ACPI_WRITE | (accessor_type << 16);
>  		} else {	/* IPMI */
>  
>  			length = ACPI_IPMI_BUFFER_SIZE;
> 

-- 
I speak only for myself.
Rafael J. Wysocki, Intel Open Source Technology Center.

^ permalink raw reply	[flat|nested] 79+ messages in thread

* Re: [PATCH 1/9] ACPICA: Executer: Fix buffer allocation issue for generic_serial_bus region field accesses.
  2014-04-21 21:38   ` Rafael J. Wysocki
@ 2014-04-22  1:14     ` Lan Tianyu
  0 siblings, 0 replies; 79+ messages in thread
From: Lan Tianyu @ 2014-04-22  1:14 UTC (permalink / raw)
  To: Rafael J. Wysocki
  Cc: wsa, lenb, mika.westerberg, awilliam, robert.moore, lv.zheng,
	rafael.j.wysocki, linux-i2c, linux-kernel, linux-acpi, devel

On 2014年04月22日 05:38, Rafael J. Wysocki wrote:
> Hi,
> 
> On Wednesday, April 16, 2014 09:24:34 PM Lan Tianyu wrote:
>> From: Lv Zheng <lv.zheng@intel.com>
>>
>> The size of the buffer allocated for generic_serial_bus region access
>> is not correct.  This patch introduces acpi_ex_get_serial_access_length()
>> to be invoked to obtain correct data buffer length.  Reported by
>> Lan Tianyu, Fixed by Lv Zheng.
>>
>> Signed-off-by: Lv Zheng <lv.zheng@intel.com>
>> Signed-off-by: Lan Tianyu <tianyu.lan@intel.com>
> 
> I'm queueing up this patch as a fix for 3.15, but can you please resend the
> whole series with a CC to linux-acpi?
> 

Ok. I will do that.

> 
>> ---
>>  drivers/acpi/acpica/exfield.c | 104 +++++++++++++++++++++++++++++++++++++++---
>>  1 file changed, 97 insertions(+), 7 deletions(-)
>>
>> diff --git a/drivers/acpi/acpica/exfield.c b/drivers/acpi/acpica/exfield.c
>> index 68d9744..12878e1 100644
>> --- a/drivers/acpi/acpica/exfield.c
>> +++ b/drivers/acpi/acpica/exfield.c
>> @@ -45,10 +45,71 @@
>>  #include "accommon.h"
>>  #include "acdispat.h"
>>  #include "acinterp.h"
>> +#include "amlcode.h"
>>  
>>  #define _COMPONENT          ACPI_EXECUTER
>>  ACPI_MODULE_NAME("exfield")
>>  
>> +/* Local prototypes */
>> +static u32
>> +acpi_ex_get_serial_access_length(u32 accessor_type, u32 access_length);
>> +
>> +/*******************************************************************************
>> + *
>> + * FUNCTION:    acpi_get_serial_access_bytes
>> + *
>> + * PARAMETERS:  accessor_type   - The type of the protocol indicated by region
>> + *                                field access attributes
>> + *              access_length   - The access length of the region field
>> + *
>> + * RETURN:      Decoded access length
>> + *
>> + * DESCRIPTION: This routine returns the length of the generic_serial_bus
>> + *              protocol bytes
>> + *
>> + ******************************************************************************/
>> +
>> +static u32
>> +acpi_ex_get_serial_access_length(u32 accessor_type, u32 access_length)
>> +{
>> +	u32 length;
>> +
>> +	switch (accessor_type) {
>> +	case AML_FIELD_ATTRIB_QUICK:
>> +
>> +		length = 0;
>> +		break;
>> +
>> +	case AML_FIELD_ATTRIB_SEND_RCV:
>> +	case AML_FIELD_ATTRIB_BYTE:
>> +
>> +		length = 1;
>> +		break;
>> +
>> +	case AML_FIELD_ATTRIB_WORD:
>> +	case AML_FIELD_ATTRIB_WORD_CALL:
>> +
>> +		length = 2;
>> +		break;
>> +
>> +	case AML_FIELD_ATTRIB_MULTIBYTE:
>> +	case AML_FIELD_ATTRIB_RAW_BYTES:
>> +	case AML_FIELD_ATTRIB_RAW_PROCESS:
>> +
>> +		length = access_length;
>> +		break;
>> +
>> +	case AML_FIELD_ATTRIB_BLOCK:
>> +	case AML_FIELD_ATTRIB_BLOCK_CALL:
>> +	default:
>> +
>> +		length = ACPI_GSBUS_BUFFER_SIZE;
>> +		break;
>> +	}
>> +
>> +	return (length);
>> +}
>> +
>>  /*******************************************************************************
>>   *
>>   * FUNCTION:    acpi_ex_read_data_from_field
>> @@ -63,8 +124,9 @@ ACPI_MODULE_NAME("exfield")
>>   *              Buffer, depending on the size of the field.
>>   *
>>   ******************************************************************************/
>> +
>>  acpi_status
>> -acpi_ex_read_data_from_field(struct acpi_walk_state *walk_state,
>> +acpi_ex_read_data_from_field(struct acpi_walk_state * walk_state,
>>  			     union acpi_operand_object *obj_desc,
>>  			     union acpi_operand_object **ret_buffer_desc)
>>  {
>> @@ -73,6 +135,7 @@ acpi_ex_read_data_from_field(struct acpi_walk_state *walk_state,
>>  	acpi_size length;
>>  	void *buffer;
>>  	u32 function;
>> +	u16 accessor_type;
>>  
>>  	ACPI_FUNCTION_TRACE_PTR(ex_read_data_from_field, obj_desc);
>>  
>> @@ -116,9 +179,22 @@ acpi_ex_read_data_from_field(struct acpi_walk_state *walk_state,
>>  			    ACPI_READ | (obj_desc->field.attribute << 16);
>>  		} else if (obj_desc->field.region_obj->region.space_id ==
>>  			   ACPI_ADR_SPACE_GSBUS) {
>> -			length = ACPI_GSBUS_BUFFER_SIZE;
>> -			function =
>> -			    ACPI_READ | (obj_desc->field.attribute << 16);
>> +			accessor_type = obj_desc->field.attribute;
>> +			length = acpi_ex_get_serial_access_length(accessor_type,
>> +								  obj_desc->
>> +								  field.
>> +								  access_length);
>> +
>> +			/*
>> +			 * Add additional 2 bytes for modeled generic_serial_bus data buffer:
>> +			 * typedef struct {
>> +			 *     BYTEStatus; // Byte 0 of the data buffer
>> +			 *     BYTELength; // Byte 1 of the data buffer
>> +			 *     BYTE[x-1]Data; // Bytes 2-x of the arbitrary length data buffer,
>> +			 * }
>> +			 */
>> +			length += 2;
>> +			function = ACPI_READ | (accessor_type << 16);
>>  		} else {	/* IPMI */
>>  
>>  			length = ACPI_IPMI_BUFFER_SIZE;
>> @@ -231,6 +307,7 @@ acpi_ex_write_data_to_field(union acpi_operand_object *source_desc,
>>  	void *buffer;
>>  	union acpi_operand_object *buffer_desc;
>>  	u32 function;
>> +	u16 accessor_type;
>>  
>>  	ACPI_FUNCTION_TRACE_PTR(ex_write_data_to_field, obj_desc);
>>  
>> @@ -284,9 +361,22 @@ acpi_ex_write_data_to_field(union acpi_operand_object *source_desc,
>>  			    ACPI_WRITE | (obj_desc->field.attribute << 16);
>>  		} else if (obj_desc->field.region_obj->region.space_id ==
>>  			   ACPI_ADR_SPACE_GSBUS) {
>> -			length = ACPI_GSBUS_BUFFER_SIZE;
>> -			function =
>> -			    ACPI_WRITE | (obj_desc->field.attribute << 16);
>> +			accessor_type = obj_desc->field.attribute;
>> +			length = acpi_ex_get_serial_access_length(accessor_type,
>> +								  obj_desc->
>> +								  field.
>> +								  access_length);
>> +
>> +			/*
>> +			 * Add additional 2 bytes for modeled generic_serial_bus data buffer:
>> +			 * typedef struct {
>> +			 *     BYTEStatus; // Byte 0 of the data buffer
>> +			 *     BYTELength; // Byte 1 of the data buffer
>> +			 *     BYTE[x-1]Data; // Bytes 2-x of the arbitrary length data buffer,
>> +			 * }
>> +			 */
>> +			length += 2;
>> +			function = ACPI_WRITE | (accessor_type << 16);
>>  		} else {	/* IPMI */
>>  
>>  			length = ACPI_IPMI_BUFFER_SIZE;
>>
> 


-- 
Best regards
Tianyu Lan

^ permalink raw reply	[flat|nested] 79+ messages in thread

* [Resend Patch 0/9] I2C ACPI operation region handler support
  2014-04-16 13:24 [PATCH 0/9] I2C ACPI operation region handler support Lan Tianyu
                   ` (10 preceding siblings ...)
  2014-04-16 16:35 ` Adam Williamson
@ 2014-04-22  6:24 ` Lan Tianyu
  2014-04-22  6:24   ` [Resend Patch 1/9] ACPICA: Executer: Fix buffer allocation issue for generic_serial_bus region field accesses Lan Tianyu
                     ` (10 more replies)
  11 siblings, 11 replies; 79+ messages in thread
From: Lan Tianyu @ 2014-04-22  6:24 UTC (permalink / raw)
  To: wsa, rjw, mika.westerberg, awilliam, lenb
  Cc: linux-i2c, linux-kernel, linux-acpi, tianyu.lan

ACPI 5.0 spec(5.5.2.4.5) defines GenericSerialBus(i2c, spi, uart) operation
region. It allows ACPI aml code able to access such kind of devices to
implement some ACPI standard method.

On the Asus T100TA, Bios use GenericSerialBus operation region to access
i2c device to get battery info. So battery function depends on the I2C
operation region support. Here is the bug link.
https://bugzilla.kernel.org/show_bug.cgi?id=69011

This patchset is to add I2C ACPI operation region handler support.

[Resend Patch 1/9] ACPICA: Executer: Fix buffer allocation issue for
[Resend Patch 2/9] ACPICA: Export acpi_buffer_to_resource symbol
[Resend Patch 3/9] ACPI: Add acpi_bus_attach_private_data() to
[Resend Patch 4/9] ACPI/Thermal: Use acpi_bus_attach_private_data()
[Resend Patch 5/9] I2C: Add smbus quick read/write helper function
[Resend Patch 6/9] I2C: Add smbus word/block process call helper
[Resend Patch 7/9] I2C/ACPI: Add i2c ACPI operation region support
[Resend Patch 8/9] I2C/ACPI: Move ACPI related code to i2c-acpi.c
[Resend Patch 9/9] I2C/ACPI: Add CONFIG_I2C_ACPI config

 drivers/acpi/acpica/exfield.c  | 104 +++++++++++++++++++++++++++++++++++++++++++++----
 drivers/acpi/acpica/rscreate.c |   1 +
 drivers/acpi/bus.c             |  18 ++++++++-
 drivers/acpi/thermal.c         |   9 ++---
 drivers/i2c/Kconfig            |  17 +++++++-
 drivers/i2c/Makefile           |   5 ++-
 drivers/i2c/i2c-acpi.c         | 371 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 drivers/i2c/i2c-core.c         | 183 +++++++++++++++++++++++++++++++++++++++++--------------------------------------------
 include/acpi/acpi_bus.h        |   1 +
 include/linux/acpi.h           |  11 ++++++
 include/linux/i2c.h            |  19 +++++++++
 11 files changed, 628 insertions(+), 111 deletions(-)

^ permalink raw reply	[flat|nested] 79+ messages in thread

* [Resend Patch 1/9] ACPICA: Executer: Fix buffer allocation issue for generic_serial_bus region field accesses.
  2014-04-22  6:24 ` [Resend Patch " Lan Tianyu
@ 2014-04-22  6:24   ` Lan Tianyu
  2014-04-22 11:21     ` Mika Westerberg
  2014-04-22  6:24   ` [Resend Patch 2/9] ACPICA: Export acpi_buffer_to_resource symbol Lan Tianyu
                     ` (9 subsequent siblings)
  10 siblings, 1 reply; 79+ messages in thread
From: Lan Tianyu @ 2014-04-22  6:24 UTC (permalink / raw)
  To: wsa, rjw, mika.westerberg, awilliam, lenb
  Cc: linux-i2c, linux-kernel, linux-acpi, tianyu.lan, Lv Zheng

From: Lv Zheng <lv.zheng@intel.com>

The size of the buffer allocated for generic_serial_bus region access
is not correct.  This patch introduces acpi_ex_get_serial_access_length()
to be invoked to obtain correct data buffer length.  Reported by
Lan Tianyu, Fixed by Lv Zheng.

Signed-off-by: Lv Zheng <lv.zheng@intel.com>
Signed-off-by: Lan Tianyu <tianyu.lan@intel.com>
---
 drivers/acpi/acpica/exfield.c | 104 +++++++++++++++++++++++++++++++++++++++---
 1 file changed, 97 insertions(+), 7 deletions(-)

diff --git a/drivers/acpi/acpica/exfield.c b/drivers/acpi/acpica/exfield.c
index 68d9744..12878e1 100644
--- a/drivers/acpi/acpica/exfield.c
+++ b/drivers/acpi/acpica/exfield.c
@@ -45,10 +45,71 @@
 #include "accommon.h"
 #include "acdispat.h"
 #include "acinterp.h"
+#include "amlcode.h"
 
 #define _COMPONENT          ACPI_EXECUTER
 ACPI_MODULE_NAME("exfield")
 
+/* Local prototypes */
+static u32
+acpi_ex_get_serial_access_length(u32 accessor_type, u32 access_length);
+
+/*******************************************************************************
+ *
+ * FUNCTION:    acpi_get_serial_access_bytes
+ *
+ * PARAMETERS:  accessor_type   - The type of the protocol indicated by region
+ *                                field access attributes
+ *              access_length   - The access length of the region field
+ *
+ * RETURN:      Decoded access length
+ *
+ * DESCRIPTION: This routine returns the length of the generic_serial_bus
+ *              protocol bytes
+ *
+ ******************************************************************************/
+
+static u32
+acpi_ex_get_serial_access_length(u32 accessor_type, u32 access_length)
+{
+	u32 length;
+
+	switch (accessor_type) {
+	case AML_FIELD_ATTRIB_QUICK:
+
+		length = 0;
+		break;
+
+	case AML_FIELD_ATTRIB_SEND_RCV:
+	case AML_FIELD_ATTRIB_BYTE:
+
+		length = 1;
+		break;
+
+	case AML_FIELD_ATTRIB_WORD:
+	case AML_FIELD_ATTRIB_WORD_CALL:
+
+		length = 2;
+		break;
+
+	case AML_FIELD_ATTRIB_MULTIBYTE:
+	case AML_FIELD_ATTRIB_RAW_BYTES:
+	case AML_FIELD_ATTRIB_RAW_PROCESS:
+
+		length = access_length;
+		break;
+
+	case AML_FIELD_ATTRIB_BLOCK:
+	case AML_FIELD_ATTRIB_BLOCK_CALL:
+	default:
+
+		length = ACPI_GSBUS_BUFFER_SIZE;
+		break;
+	}
+
+	return (length);
+}
+
 /*******************************************************************************
  *
  * FUNCTION:    acpi_ex_read_data_from_field
@@ -63,8 +124,9 @@ ACPI_MODULE_NAME("exfield")
  *              Buffer, depending on the size of the field.
  *
  ******************************************************************************/
+
 acpi_status
-acpi_ex_read_data_from_field(struct acpi_walk_state *walk_state,
+acpi_ex_read_data_from_field(struct acpi_walk_state * walk_state,
 			     union acpi_operand_object *obj_desc,
 			     union acpi_operand_object **ret_buffer_desc)
 {
@@ -73,6 +135,7 @@ acpi_ex_read_data_from_field(struct acpi_walk_state *walk_state,
 	acpi_size length;
 	void *buffer;
 	u32 function;
+	u16 accessor_type;
 
 	ACPI_FUNCTION_TRACE_PTR(ex_read_data_from_field, obj_desc);
 
@@ -116,9 +179,22 @@ acpi_ex_read_data_from_field(struct acpi_walk_state *walk_state,
 			    ACPI_READ | (obj_desc->field.attribute << 16);
 		} else if (obj_desc->field.region_obj->region.space_id ==
 			   ACPI_ADR_SPACE_GSBUS) {
-			length = ACPI_GSBUS_BUFFER_SIZE;
-			function =
-			    ACPI_READ | (obj_desc->field.attribute << 16);
+			accessor_type = obj_desc->field.attribute;
+			length = acpi_ex_get_serial_access_length(accessor_type,
+								  obj_desc->
+								  field.
+								  access_length);
+
+			/*
+			 * Add additional 2 bytes for modeled generic_serial_bus data buffer:
+			 * typedef struct {
+			 *     BYTEStatus; // Byte 0 of the data buffer
+			 *     BYTELength; // Byte 1 of the data buffer
+			 *     BYTE[x-1]Data; // Bytes 2-x of the arbitrary length data buffer,
+			 * }
+			 */
+			length += 2;
+			function = ACPI_READ | (accessor_type << 16);
 		} else {	/* IPMI */
 
 			length = ACPI_IPMI_BUFFER_SIZE;
@@ -231,6 +307,7 @@ acpi_ex_write_data_to_field(union acpi_operand_object *source_desc,
 	void *buffer;
 	union acpi_operand_object *buffer_desc;
 	u32 function;
+	u16 accessor_type;
 
 	ACPI_FUNCTION_TRACE_PTR(ex_write_data_to_field, obj_desc);
 
@@ -284,9 +361,22 @@ acpi_ex_write_data_to_field(union acpi_operand_object *source_desc,
 			    ACPI_WRITE | (obj_desc->field.attribute << 16);
 		} else if (obj_desc->field.region_obj->region.space_id ==
 			   ACPI_ADR_SPACE_GSBUS) {
-			length = ACPI_GSBUS_BUFFER_SIZE;
-			function =
-			    ACPI_WRITE | (obj_desc->field.attribute << 16);
+			accessor_type = obj_desc->field.attribute;
+			length = acpi_ex_get_serial_access_length(accessor_type,
+								  obj_desc->
+								  field.
+								  access_length);
+
+			/*
+			 * Add additional 2 bytes for modeled generic_serial_bus data buffer:
+			 * typedef struct {
+			 *     BYTEStatus; // Byte 0 of the data buffer
+			 *     BYTELength; // Byte 1 of the data buffer
+			 *     BYTE[x-1]Data; // Bytes 2-x of the arbitrary length data buffer,
+			 * }
+			 */
+			length += 2;
+			function = ACPI_WRITE | (accessor_type << 16);
 		} else {	/* IPMI */
 
 			length = ACPI_IPMI_BUFFER_SIZE;
-- 
1.8.4.rc0.1.g8f6a3e5.dirty


^ permalink raw reply related	[flat|nested] 79+ messages in thread

* [Resend Patch 2/9] ACPICA: Export acpi_buffer_to_resource symbol
  2014-04-22  6:24 ` [Resend Patch " Lan Tianyu
  2014-04-22  6:24   ` [Resend Patch 1/9] ACPICA: Executer: Fix buffer allocation issue for generic_serial_bus region field accesses Lan Tianyu
@ 2014-04-22  6:24   ` Lan Tianyu
  2014-04-22 11:21     ` Mika Westerberg
  2014-04-22  6:24   ` [Resend Patch 3/9] ACPI: Add acpi_bus_attach_private_data() to facilitate to attach data to ACPI handle Lan Tianyu
                     ` (8 subsequent siblings)
  10 siblings, 1 reply; 79+ messages in thread
From: Lan Tianyu @ 2014-04-22  6:24 UTC (permalink / raw)
  To: wsa, rjw, mika.westerberg, awilliam, lenb
  Cc: linux-i2c, linux-kernel, linux-acpi, tianyu.lan

The acpi_buffer_to_resource is needed in i2c module
to convert aml buffer to struct acpi_resource

Signed-off-by: Lan Tianyu <tianyu.lan@intel.com>
---
 drivers/acpi/acpica/rscreate.c | 1 +
 1 file changed, 1 insertion(+)

diff --git a/drivers/acpi/acpica/rscreate.c b/drivers/acpi/acpica/rscreate.c
index 75d3690..5828649 100644
--- a/drivers/acpi/acpica/rscreate.c
+++ b/drivers/acpi/acpica/rscreate.c
@@ -112,6 +112,7 @@ acpi_buffer_to_resource(u8 *aml_buffer,
 
 	return (status);
 }
+ACPI_EXPORT_SYMBOL(acpi_buffer_to_resource);
 
 /*******************************************************************************
  *
-- 
1.8.4.rc0.1.g8f6a3e5.dirty


^ permalink raw reply related	[flat|nested] 79+ messages in thread

* [Resend Patch 3/9] ACPI: Add acpi_bus_attach_private_data() to facilitate to attach data to ACPI handle
  2014-04-22  6:24 ` [Resend Patch " Lan Tianyu
  2014-04-22  6:24   ` [Resend Patch 1/9] ACPICA: Executer: Fix buffer allocation issue for generic_serial_bus region field accesses Lan Tianyu
  2014-04-22  6:24   ` [Resend Patch 2/9] ACPICA: Export acpi_buffer_to_resource symbol Lan Tianyu
@ 2014-04-22  6:24   ` Lan Tianyu
  2014-04-22 11:23     ` Mika Westerberg
  2014-04-22  6:24   ` [Resend Patch 4/9] ACPI/Thermal: Use acpi_bus_attach_private_data() to attach private data Lan Tianyu
                     ` (7 subsequent siblings)
  10 siblings, 1 reply; 79+ messages in thread
From: Lan Tianyu @ 2014-04-22  6:24 UTC (permalink / raw)
  To: wsa, rjw, mika.westerberg, awilliam, lenb
  Cc: linux-i2c, linux-kernel, linux-acpi, tianyu.lan

There is already acpi_bus_get_private_data() to get ACPI handle data
which is associated with acpi_bus_private_data_handler(). This patch
is to add acpi_bus_attach_private_data() to make a pair and facilitate
to attach and get data to/from ACPI handle.

Signed-off-by: Lan Tianyu <tianyu.lan@intel.com>
---
 drivers/acpi/bus.c      | 18 +++++++++++++++++-
 include/acpi/acpi_bus.h |  1 +
 2 files changed, 18 insertions(+), 1 deletion(-)

diff --git a/drivers/acpi/bus.c b/drivers/acpi/bus.c
index e7e5844..4ed8d48 100644
--- a/drivers/acpi/bus.c
+++ b/drivers/acpi/bus.c
@@ -132,6 +132,22 @@ void acpi_bus_private_data_handler(acpi_handle handle,
 }
 EXPORT_SYMBOL(acpi_bus_private_data_handler);
 
+int acpi_bus_attach_private_data(acpi_handle handle, void *data)
+{
+	acpi_status status;
+
+	status = acpi_attach_data(handle,
+			acpi_bus_private_data_handler, data);
+	if (ACPI_FAILURE(status)) {
+		ACPI_ERROR((AE_INFO, "Error attaching device[%p] data\n",
+				handle));
+		return -ENODEV;
+	}
+
+	return 0;
+}
+EXPORT_SYMBOL(acpi_bus_attach_private_data);
+
 int acpi_bus_get_private_data(acpi_handle handle, void **data)
 {
 	acpi_status status;
@@ -141,7 +157,7 @@ int acpi_bus_get_private_data(acpi_handle handle, void **data)
 
 	status = acpi_get_data(handle, acpi_bus_private_data_handler, data);
 	if (ACPI_FAILURE(status) || !*data) {
-		ACPI_DEBUG_PRINT((ACPI_DB_INFO, "No context for object [%p]\n",
+		ACPI_ERROR((AE_INFO, "No context for object [%p]\n",
 				handle));
 		return -ENODEV;
 	}
diff --git a/include/acpi/acpi_bus.h b/include/acpi/acpi_bus.h
index 84a2e29..a1f6fec 100644
--- a/include/acpi/acpi_bus.h
+++ b/include/acpi/acpi_bus.h
@@ -406,6 +406,7 @@ extern struct kobject *acpi_kobj;
 extern int acpi_bus_generate_netlink_event(const char*, const char*, u8, int);
 void acpi_bus_private_data_handler(acpi_handle, void *);
 int acpi_bus_get_private_data(acpi_handle, void **);
+int acpi_bus_attach_private_data(acpi_handle, void *);
 void acpi_bus_no_hotplug(acpi_handle handle);
 extern int acpi_notifier_call_chain(struct acpi_device *, u32, u32);
 extern int register_acpi_notifier(struct notifier_block *);
-- 
1.8.4.rc0.1.g8f6a3e5.dirty


^ permalink raw reply related	[flat|nested] 79+ messages in thread

* [Resend Patch 4/9] ACPI/Thermal: Use acpi_bus_attach_private_data() to attach private data
  2014-04-22  6:24 ` [Resend Patch " Lan Tianyu
                     ` (2 preceding siblings ...)
  2014-04-22  6:24   ` [Resend Patch 3/9] ACPI: Add acpi_bus_attach_private_data() to facilitate to attach data to ACPI handle Lan Tianyu
@ 2014-04-22  6:24   ` Lan Tianyu
  2014-04-22 11:24     ` Mika Westerberg
  2014-04-22  6:24   ` [Resend Patch 5/9] I2C: Add smbus quick read/write helper function Lan Tianyu
                     ` (6 subsequent siblings)
  10 siblings, 1 reply; 79+ messages in thread
From: Lan Tianyu @ 2014-04-22  6:24 UTC (permalink / raw)
  To: wsa, rjw, mika.westerberg, awilliam, lenb
  Cc: linux-i2c, linux-kernel, linux-acpi, tianyu.lan

Use acpi_bus_attach_private_data() to attach private data
instead of acpi_attach_data().

Signed-off-by: Lan Tianyu <tianyu.lan@intel.com>
---
 drivers/acpi/thermal.c | 9 +++------
 1 file changed, 3 insertions(+), 6 deletions(-)

diff --git a/drivers/acpi/thermal.c b/drivers/acpi/thermal.c
index c1e31a4..7ab9392 100644
--- a/drivers/acpi/thermal.c
+++ b/drivers/acpi/thermal.c
@@ -925,13 +925,10 @@ static int acpi_thermal_register_thermal_zone(struct acpi_thermal *tz)
 	if (result)
 		return result;
 
-	status = acpi_attach_data(tz->device->handle,
-				  acpi_bus_private_data_handler,
-				  tz->thermal_zone);
-	if (ACPI_FAILURE(status)) {
-		pr_err(PREFIX "Error attaching device data\n");
+	status =  acpi_bus_attach_private_data(tz->device->handle,
+					       tz->thermal_zone);
+	if (ACPI_FAILURE(status))
 		return -ENODEV;
-	}
 
 	tz->tz_enabled = 1;
 
-- 
1.8.4.rc0.1.g8f6a3e5.dirty


^ permalink raw reply related	[flat|nested] 79+ messages in thread

* [Resend Patch 5/9] I2C: Add smbus quick read/write helper function
  2014-04-22  6:24 ` [Resend Patch " Lan Tianyu
                     ` (3 preceding siblings ...)
  2014-04-22  6:24   ` [Resend Patch 4/9] ACPI/Thermal: Use acpi_bus_attach_private_data() to attach private data Lan Tianyu
@ 2014-04-22  6:24   ` Lan Tianyu
  2014-04-22 11:24     ` Mika Westerberg
  2014-04-22  6:24   ` [Resend Patch 6/9] I2C: Add smbus word/block process call " Lan Tianyu
                     ` (5 subsequent siblings)
  10 siblings, 1 reply; 79+ messages in thread
From: Lan Tianyu @ 2014-04-22  6:24 UTC (permalink / raw)
  To: wsa, rjw, mika.westerberg, awilliam, lenb
  Cc: linux-i2c, linux-kernel, linux-acpi, tianyu.lan

Add i2c_smbus_quick_write/read() helper function. These will be used
in the implementation of i2c ACPI address space handler.

Signed-off-by: Lan Tianyu <tianyu.lan@intel.com>
---
 drivers/i2c/i2c-core.c | 30 ++++++++++++++++++++++++++++++
 include/linux/i2c.h    |  2 ++
 2 files changed, 32 insertions(+)

diff --git a/drivers/i2c/i2c-core.c b/drivers/i2c/i2c-core.c
index 7c7f4b8..3bf0048 100644
--- a/drivers/i2c/i2c-core.c
+++ b/drivers/i2c/i2c-core.c
@@ -2162,6 +2162,36 @@ static int i2c_smbus_check_pec(u8 cpec, struct i2c_msg *msg)
 }
 
 /**
+ * i2c_smbus_quick_write - SMBus "quick write" protocol
+ * @client: Handle to slave device
+ *
+ * This executes the SMBus "quick write" protocol, returning negative errno
+ * else zero on success.
+ */
+s32 i2c_smbus_quick_write(const struct i2c_client *client)
+{
+	return i2c_smbus_xfer(client->adapter, client->addr, client->flags,
+				I2C_SMBUS_WRITE, 0,
+				I2C_SMBUS_QUICK, NULL);
+}
+EXPORT_SYMBOL_GPL(i2c_smbus_quick_write);
+
+/**
+ * i2c_smbus_quick_read - SMBus "quick read" protocol
+ * @client: Handle to slave device
+ *
+ * This executes the SMBus "quick read" protocol, returning negative errno
+ * else zero on success.
+ */
+s32 i2c_smbus_quick_read(const struct i2c_client *client)
+{
+	return i2c_smbus_xfer(client->adapter, client->addr, client->flags,
+				I2C_SMBUS_READ, 0,
+				I2C_SMBUS_QUICK, NULL);
+}
+EXPORT_SYMBOL_GPL(i2c_smbus_quick_read);
+
+/**
  * i2c_smbus_read_byte - SMBus "receive byte" protocol
  * @client: Handle to slave device
  *
diff --git a/include/linux/i2c.h b/include/linux/i2c.h
index b556e0a..3e6ea90 100644
--- a/include/linux/i2c.h
+++ b/include/linux/i2c.h
@@ -82,6 +82,8 @@ extern s32 i2c_smbus_xfer(struct i2c_adapter *adapter, u16 addr,
 /* Now follow the 'nice' access routines. These also document the calling
    conventions of i2c_smbus_xfer. */
 
+extern s32 i2c_smbus_quick_write(const struct i2c_client *client);
+extern s32 i2c_smbus_quick_read(const struct i2c_client *client);
 extern s32 i2c_smbus_read_byte(const struct i2c_client *client);
 extern s32 i2c_smbus_write_byte(const struct i2c_client *client, u8 value);
 extern s32 i2c_smbus_read_byte_data(const struct i2c_client *client,
-- 
1.8.4.rc0.1.g8f6a3e5.dirty


^ permalink raw reply related	[flat|nested] 79+ messages in thread

* [Resend Patch 6/9] I2C: Add smbus word/block process call helper function
  2014-04-22  6:24 ` [Resend Patch " Lan Tianyu
                     ` (4 preceding siblings ...)
  2014-04-22  6:24   ` [Resend Patch 5/9] I2C: Add smbus quick read/write helper function Lan Tianyu
@ 2014-04-22  6:24   ` Lan Tianyu
  2014-04-22 11:26     ` Mika Westerberg
  2014-04-22  6:24   ` [Resend Patch 7/9] I2C/ACPI: Add i2c ACPI operation region support Lan Tianyu
                     ` (4 subsequent siblings)
  10 siblings, 1 reply; 79+ messages in thread
From: Lan Tianyu @ 2014-04-22  6:24 UTC (permalink / raw)
  To: wsa, rjw, mika.westerberg, awilliam, lenb
  Cc: linux-i2c, linux-kernel, linux-acpi, tianyu.lan

Add i2c_smbus_word/block_proc_call() helper function. These will be used
in the implementation of i2c ACPI address space handler.

Signed-off-by: Lan Tianyu <tianyu.lan@intel.com>
---
 drivers/i2c/i2c-core.c | 56 ++++++++++++++++++++++++++++++++++++++++++++++++++
 include/linux/i2c.h    |  4 ++++
 2 files changed, 60 insertions(+)

diff --git a/drivers/i2c/i2c-core.c b/drivers/i2c/i2c-core.c
index 3bf0048..638befd 100644
--- a/drivers/i2c/i2c-core.c
+++ b/drivers/i2c/i2c-core.c
@@ -2306,6 +2306,30 @@ s32 i2c_smbus_write_word_data(const struct i2c_client *client, u8 command,
 EXPORT_SYMBOL(i2c_smbus_write_word_data);
 
 /**
+ * i2c_smbus_word_proc_call - SMBus "word proc call" protocol
+ * @client: Handle to slave device
+ * @command: Byte interpreted by slave
+ * @value: 16-bit "word" being written
+ *
+ * This executes the SMBus "word proc all" protocol, returning negative errno
+ * else a 16-bit unsigned "word" received from the device.
+ */
+s32 i2c_smbus_word_proc_call(const struct i2c_client *client, u8 command,
+			      u16 value)
+{
+	union i2c_smbus_data data;
+	int status;
+
+	data.word = value;
+	status = i2c_smbus_xfer(client->adapter, client->addr, client->flags,
+			      I2C_SMBUS_READ, command,
+			      I2C_SMBUS_PROC_CALL, &data);
+
+	return (status < 0) ? status : data.word;
+}
+EXPORT_SYMBOL(i2c_smbus_word_proc_call);
+
+/**
  * i2c_smbus_read_block_data - SMBus "block read" protocol
  * @client: Handle to slave device
  * @command: Byte interpreted by slave
@@ -2362,6 +2386,38 @@ s32 i2c_smbus_write_block_data(const struct i2c_client *client, u8 command,
 }
 EXPORT_SYMBOL(i2c_smbus_write_block_data);
 
+/**
+ * i2c_smbus_block_proc_call - SMBus "block write" protocol
+ * @client: Handle to slave device
+ * @command: Byte interpreted by slave
+ * @length: Size of data block; SMBus allows at most 32 bytes
+ * @values: Byte array which will be written.
+ *
+ * This executes the SMBus "block proc call" protocol, returning negative errno
+ * else the number of read bytes.
+ */
+s32 i2c_smbus_block_proc_call(const struct i2c_client *client, u8 command,
+			       u8 length, u8 *values)
+{
+	union i2c_smbus_data data;
+	int status;
+
+	if (length > I2C_SMBUS_BLOCK_MAX)
+		length = I2C_SMBUS_BLOCK_MAX;
+	data.block[0] = length;
+	memcpy(&data.block[1], values, length);
+	status = i2c_smbus_xfer(client->adapter, client->addr, client->flags,
+			      I2C_SMBUS_READ, command,
+			      I2C_SMBUS_BLOCK_PROC_CALL, &data);
+
+	if (status < 0)
+		return status;
+
+	memcpy(values, &data.block[1], data.block[0]);
+	return data.block[0];
+}
+EXPORT_SYMBOL(i2c_smbus_block_proc_call);
+
 /* Returns the number of read bytes */
 s32 i2c_smbus_read_i2c_block_data(const struct i2c_client *client, u8 command,
 				  u8 length, u8 *values)
diff --git a/include/linux/i2c.h b/include/linux/i2c.h
index 3e6ea90..724440a 100644
--- a/include/linux/i2c.h
+++ b/include/linux/i2c.h
@@ -94,6 +94,10 @@ extern s32 i2c_smbus_read_word_data(const struct i2c_client *client,
 				    u8 command);
 extern s32 i2c_smbus_write_word_data(const struct i2c_client *client,
 				     u8 command, u16 value);
+extern s32 i2c_smbus_word_proc_call(const struct i2c_client *client,
+				    u8 command, u16 value);
+extern s32 i2c_smbus_block_proc_call(const struct i2c_client *client,
+				u8 command, u8 length, u8 *values);
 
 static inline s32
 i2c_smbus_read_word_swapped(const struct i2c_client *client, u8 command)
-- 
1.8.4.rc0.1.g8f6a3e5.dirty


^ permalink raw reply related	[flat|nested] 79+ messages in thread

* [Resend Patch 7/9] I2C/ACPI: Add i2c ACPI operation region support
  2014-04-22  6:24 ` [Resend Patch " Lan Tianyu
                     ` (5 preceding siblings ...)
  2014-04-22  6:24   ` [Resend Patch 6/9] I2C: Add smbus word/block process call " Lan Tianyu
@ 2014-04-22  6:24   ` Lan Tianyu
  2014-04-22 11:36     ` Mika Westerberg
  2014-04-22  6:24   ` [Resend Patch 8/9] I2C/ACPI: Move ACPI related code to i2c-acpi.c Lan Tianyu
                     ` (3 subsequent siblings)
  10 siblings, 1 reply; 79+ messages in thread
From: Lan Tianyu @ 2014-04-22  6:24 UTC (permalink / raw)
  To: wsa, rjw, mika.westerberg, awilliam, lenb
  Cc: linux-i2c, linux-kernel, linux-acpi, tianyu.lan

ACPI 5.0 spec(5.5.2.4.5) defines GenericSerialBus(i2c, spi, uart) operation region.
It allows ACPI aml code able to access such kind of devices to implement
some ACPI standard method.

ACPI Spec defines some access attribute to associate with i2c protocol.
AttribQuick 	       	       		Read/Write Quick Protocol
AttribSendReceive			Send/Receive Byte Protocol
AttribByte 			 	Read/Write Byte Protocol
AttribWord				Read/Write Word Protocol
AttribBlock				Read/Write Block Protocol
AttribBytes				Read/Write N-Bytes Protocol
AttribProcessCall			Process Call Protocol
AttribBlockProcessCall			Write Block-Read Block Process Call Protocol
AttribRawBytes 				Raw Read/Write N-BytesProtocol
AttribRawProcessBytes			Raw Process Call Protocol

On the Asus T100TA, Bios use GenericSerialBus operation region to access
i2c device to get battery info.

Sample code From Asus T100TA

    Scope (_SB.I2C1)
    {
        Name (UMPC, ResourceTemplate ()
        {
            I2cSerialBus (0x0066, ControllerInitiated, 0x00061A80,
                AddressingMode7Bit, "\\_SB.I2C1",
                0x00, ResourceConsumer, ,
                )
        })

	...

        OperationRegion (DVUM, GenericSerialBus, Zero, 0x0100)
        Field (DVUM, BufferAcc, NoLock, Preserve)
        {
            Connection (UMPC),
            Offset (0x81),
            AccessAs (BufferAcc, AttribBytes (0x3E)),
            FGC0,   8
        }
	...
     }

     Device (BATC)
     {
         Name (_HID, EisaId ("PNP0C0A"))  // _HID: Hardware ID
         Name (_UID, One)  // _UID: Unique ID
	 ...

            Method (_BST, 0, NotSerialized)  // _BST: Battery Status
            {
                If (LEqual (AVBL, One))
                {
                    Store (FGC0, BFFG)
                    If (LNotEqual (STAT, One))
                    {
                        ShiftRight (CHST, 0x04, Local0)
                        And (Local0, 0x03, Local0)
                        If (LOr (LEqual (Local0, One), LEqual (Local0, 0x02)))
                        {
                            Store (0x02, Local1)
                        }
	...

    }

The i2c operation region is defined under I2C1 scope. _BST method under
battery device BATC read battery status from the field "FCG0". The request
would be sent to i2c operation region handler.

This patch is to add i2c ACPI operation region support. Due to there are
only "Byte" and "Bytes" protocol access on the Asus T100TA, other protocols
have not been tested.

About RawBytes and RawProcessBytes protocol, they needs specific drivers to interpret
reference data from AML code according ACPI 5.0 SPEC(5.5.2.4.5.3.9 and 5.5.2.4.5.3.10).
So far, not found such case and will add when find real case.

Signed-off-by: Lan Tianyu <tianyu.lan@intel.com>
---
 drivers/i2c/Makefile   |   5 +-
 drivers/i2c/i2c-acpi.c | 282 +++++++++++++++++++++++++++++++++++++++++++++++++
 drivers/i2c/i2c-core.c |   2 +
 include/linux/acpi.h   |  11 ++
 include/linux/i2c.h    |  10 ++
 5 files changed, 309 insertions(+), 1 deletion(-)
 create mode 100644 drivers/i2c/i2c-acpi.c

diff --git a/drivers/i2c/Makefile b/drivers/i2c/Makefile
index 1722f50..80db307 100644
--- a/drivers/i2c/Makefile
+++ b/drivers/i2c/Makefile
@@ -2,8 +2,11 @@
 # Makefile for the i2c core.
 #
 
+i2ccore-y := i2c-core.o
+i2ccore-$(CONFIG_ACPI)		+= i2c-acpi.o
+
 obj-$(CONFIG_I2C_BOARDINFO)	+= i2c-boardinfo.o
-obj-$(CONFIG_I2C)		+= i2c-core.o
+obj-$(CONFIG_I2C)		+= i2ccore.o
 obj-$(CONFIG_I2C_SMBUS)		+= i2c-smbus.o
 obj-$(CONFIG_I2C_CHARDEV)	+= i2c-dev.o
 obj-$(CONFIG_I2C_MUX)		+= i2c-mux.o
diff --git a/drivers/i2c/i2c-acpi.c b/drivers/i2c/i2c-acpi.c
new file mode 100644
index 0000000..942abdf
--- /dev/null
+++ b/drivers/i2c/i2c-acpi.c
@@ -0,0 +1,282 @@
+/*
+ * I2C ACPI code
+ *
+ * Copyright (C) 2014 Intel Corp
+ *
+ * Author: Lan Tianyu <tianyu.lan@intel.com>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+ * or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * for more details.
+ */
+#define pr_fmt(fmt) "I2C/ACPI : " fmt
+
+#include <linux/kernel.h>
+#include <linux/errno.h>
+#include <linux/err.h>
+#include <linux/i2c.h>
+#include <linux/acpi.h>
+
+struct acpi_i2c_handler_data {
+	struct acpi_connection_info info;
+	struct i2c_adapter *adapter;
+} __packed;
+
+struct gsb_buffer {
+	u8	status;
+	u8	len;
+	union {
+		u16	wdata;
+		u8	bdata;
+		u8	data[0];
+	};
+} __packed;
+
+static int acpi_gsb_i2c_read_bytes(struct i2c_client *client,
+		u8 cmd, u8 *data, u8 data_len)
+{
+
+	struct i2c_msg msgs[2];
+	int ret;
+	u8  *buffer;
+
+	buffer = kzalloc(data_len, GFP_KERNEL);
+	if (!buffer)
+		return AE_NO_MEMORY;
+
+	msgs[0].addr = client->addr;
+	msgs[0].flags = client->flags;
+	msgs[0].len = 1;
+	msgs[0].buf = &cmd;
+
+	msgs[1].addr = client->addr;
+	msgs[1].flags = client->flags | I2C_M_RD;
+	msgs[1].len = data_len;
+	msgs[1].buf = buffer;
+
+	ret = i2c_transfer(client->adapter, msgs, ARRAY_SIZE(msgs));
+	if (ret < 0)
+		pr_err("i2c read failed\n");
+	else
+		memcpy(data, buffer, data_len);
+
+	kfree(buffer);
+	return ret;
+}
+
+static int acpi_gsb_i2c_write_bytes(struct i2c_client *client,
+		u8 cmd, u8 *data, u8 data_len)
+{
+
+	struct i2c_msg msgs[1];
+	u8  *buffer;
+	int ret = AE_OK;
+
+	buffer = kzalloc(data_len + 1, GFP_KERNEL);
+	if (!buffer)
+		return AE_NO_MEMORY;
+
+	buffer[0] = cmd;
+	memcpy(buffer + 1, data, data_len);
+
+	msgs[0].addr = client->addr;
+	msgs[0].flags = client->flags;
+	msgs[0].len = data_len + 1;
+	msgs[0].buf = buffer;
+
+	ret = i2c_transfer(client->adapter, msgs, ARRAY_SIZE(msgs));
+	if (ret < 0)
+		pr_err("i2c write failed\n");
+
+	kfree(buffer);
+	return ret;
+}
+
+static acpi_status
+acpi_i2c_space_handler(u32 function, acpi_physical_address command,
+			u32 bits, u64 *value64,
+			void *handler_context, void *region_context)
+{
+	struct gsb_buffer *gsb = (struct gsb_buffer *)value64;
+	struct acpi_i2c_handler_data *data = handler_context;
+	struct acpi_connection_info *info = &data->info;
+	struct acpi_resource_i2c_serialbus *sb;
+	struct i2c_adapter *adapter = data->adapter;
+	struct i2c_client client;
+	struct acpi_resource *ares;
+	u32 accessor_type = function >> 16;
+	u8 action = function & ACPI_IO_MASK;
+	int status;
+
+	acpi_buffer_to_resource(info->connection, info->length, &ares);
+	if (!value64 || ares->type != ACPI_RESOURCE_TYPE_SERIAL_BUS)
+		return AE_BAD_PARAMETER;
+
+	sb = &ares->data.i2c_serial_bus;
+	if (sb->type != ACPI_RESOURCE_SERIAL_TYPE_I2C)
+		return AE_BAD_PARAMETER;
+
+	client.adapter = adapter;
+	client.addr = sb->slave_address;
+	client.flags = 0;
+
+	if (sb->access_mode == ACPI_I2C_10BIT_MODE)
+		client.flags |= I2C_CLIENT_TEN;
+
+	switch (accessor_type) {
+	case ACPI_GSB_ACCESS_ATTRIB_QUICK:
+		if (action == ACPI_READ)
+			status = i2c_smbus_quick_read(&client);
+		else
+			status = i2c_smbus_quick_write(&client);
+		break;
+
+	case ACPI_GSB_ACCESS_ATTRIB_SEND_RCV:
+		if (action == ACPI_READ) {
+			status = i2c_smbus_read_byte(&client);
+			if (status >= 0) {
+				gsb->bdata = status;
+				status = 0;
+			}
+		} else {
+			status = i2c_smbus_write_byte(&client, gsb->bdata);
+		}
+		break;
+
+	case ACPI_GSB_ACCESS_ATTRIB_BYTE:
+		if (action == ACPI_READ) {
+			status = i2c_smbus_read_byte_data(&client, command);
+			if (status >= 0) {
+				gsb->bdata = status;
+				status = 0;
+			}
+		} else {
+			status = i2c_smbus_write_byte_data(&client, command,
+					gsb->bdata);
+		}
+		break;
+
+	case ACPI_GSB_ACCESS_ATTRIB_WORD:
+		if (action == ACPI_READ) {
+			status = i2c_smbus_read_word_data(&client, command);
+			if (status >= 0) {
+				gsb->wdata = status;
+				status = 0;
+			}
+		} else {
+			status = i2c_smbus_write_word_data(&client, command,
+					gsb->wdata);
+		}
+		break;
+
+	case ACPI_GSB_ACCESS_ATTRIB_BLOCK:
+		if (action == ACPI_READ) {
+			status = i2c_smbus_read_block_data(&client, command,
+					gsb->data);
+			if (status >= 0) {
+				gsb->len = status;
+				status = 0;
+			}
+		} else {
+			status = i2c_smbus_write_block_data(&client, command,
+					gsb->len, gsb->data);
+		}
+		break;
+
+	case ACPI_GSB_ACCESS_ATTRIB_MULTIBYTE:
+		if (action == ACPI_READ) {
+			status = acpi_gsb_i2c_read_bytes(&client, command,
+					gsb->data, info->access_length);
+			if (status > 0)
+				status = 0;
+		} else {
+			status = acpi_gsb_i2c_write_bytes(&client, command,
+					gsb->data, info->access_length);
+		}
+		break;
+
+	case ACPI_GSB_ACCESS_ATTRIB_WORD_CALL:
+		status = i2c_smbus_word_proc_call(&client, command, gsb->wdata);
+		if (status >= 0) {
+			gsb->wdata = status;
+			status = 0;
+		}
+		break;
+
+	case ACPI_GSB_ACCESS_ATTRIB_BLOCK_CALL:
+		status = i2c_smbus_block_proc_call(&client, command, gsb->len,
+				gsb->data);
+		if (status > 0) {
+			gsb->len = status;
+			status = 0;
+		}
+		break;
+
+	default:
+		pr_info("protocl(0x%02x) is not supported.\n", accessor_type);
+		return AE_BAD_PARAMETER;
+	}
+
+	gsb->status = status;
+	return AE_OK;
+}
+
+
+int acpi_i2c_install_space_handler(struct i2c_adapter *adapter)
+{
+	acpi_handle handle = ACPI_HANDLE(adapter->dev.parent);
+	struct acpi_i2c_handler_data *data;
+	acpi_status status;
+
+	if (!handle)
+		return -ENODEV;
+
+	data = kzalloc(sizeof(struct acpi_i2c_handler_data),
+			    GFP_KERNEL);
+	if (!data)
+		return -ENOMEM;
+
+	data->adapter = adapter;
+	status = acpi_bus_attach_private_data(handle, (void *)data);
+	if (ACPI_FAILURE(status)) {
+		kfree(data);
+		return -ENOMEM;
+	}
+
+	status = acpi_install_address_space_handler(handle,
+				ACPI_ADR_SPACE_GSBUS,
+				&acpi_i2c_space_handler,
+				NULL,
+				data);
+	if (ACPI_FAILURE(status)) {
+		pr_err("Error installing i2c space handler\n");
+		acpi_bus_attach_private_data(handle, NULL);
+		kfree(data);
+		return -ENOMEM;
+	}
+
+	return 0;
+}
+
+void acpi_i2c_remove_space_handler(struct i2c_adapter *adapter)
+{
+	acpi_handle handle = ACPI_HANDLE(adapter->dev.parent);
+	struct acpi_i2c_handler_data *data;
+	acpi_status status;
+
+	if (!handle)
+		return;
+
+	acpi_remove_address_space_handler(handle,
+				ACPI_ADR_SPACE_GSBUS,
+				&acpi_i2c_space_handler);
+
+	status = acpi_bus_get_private_data(handle, (void **)&data);
+	if (ACPI_SUCCESS(status))
+		kfree(data);
+}
diff --git a/drivers/i2c/i2c-core.c b/drivers/i2c/i2c-core.c
index 638befd..bb9dc56 100644
--- a/drivers/i2c/i2c-core.c
+++ b/drivers/i2c/i2c-core.c
@@ -1293,6 +1293,7 @@ exit_recovery:
 	/* create pre-declared device nodes */
 	of_i2c_register_devices(adap);
 	acpi_i2c_register_devices(adap);
+	acpi_i2c_install_space_handler(adap);
 
 	if (adap->nr < __i2c_first_dynamic_bus_num)
 		i2c_scan_static_board_info(adap);
@@ -1466,6 +1467,7 @@ void i2c_del_adapter(struct i2c_adapter *adap)
 		return;
 	}
 
+	acpi_i2c_remove_space_handler(adap);
 	/* Tell drivers about this removal */
 	mutex_lock(&core_lock);
 	bus_for_each_drv(&i2c_bus_type, NULL, adap,
diff --git a/include/linux/acpi.h b/include/linux/acpi.h
index 7a8f2cd..ea53b9b 100644
--- a/include/linux/acpi.h
+++ b/include/linux/acpi.h
@@ -361,6 +361,17 @@ extern bool osc_sb_apei_support_acked;
 #define OSC_PCI_EXPRESS_CAPABILITY_CONTROL	0x00000010
 #define OSC_PCI_CONTROL_MASKS			0x0000001f
 
+#define ACPI_GSB_ACCESS_ATTRIB_QUICK		0x00000002
+#define ACPI_GSB_ACCESS_ATTRIB_SEND_RCV         0x00000004
+#define ACPI_GSB_ACCESS_ATTRIB_BYTE		0x00000006
+#define ACPI_GSB_ACCESS_ATTRIB_WORD		0x00000008
+#define ACPI_GSB_ACCESS_ATTRIB_BLOCK		0x0000000A
+#define ACPI_GSB_ACCESS_ATTRIB_MULTIBYTE	0x0000000B
+#define ACPI_GSB_ACCESS_ATTRIB_WORD_CALL	0x0000000C
+#define ACPI_GSB_ACCESS_ATTRIB_BLOCK_CALL	0x0000000D
+#define ACPI_GSB_ACCESS_ATTRIB_RAW_BYTES	0x0000000E
+#define ACPI_GSB_ACCESS_ATTRIB_RAW_PROCESS	0x0000000F
+
 extern acpi_status acpi_pci_osc_control_set(acpi_handle handle,
 					     u32 *mask, u32 req);
 
diff --git a/include/linux/i2c.h b/include/linux/i2c.h
index 724440a..681e689 100644
--- a/include/linux/i2c.h
+++ b/include/linux/i2c.h
@@ -583,4 +583,14 @@ static inline struct i2c_adapter *of_find_i2c_adapter_by_node(struct device_node
 }
 #endif /* CONFIG_OF */
 
+#ifdef CONFIG_ACPI
+int acpi_i2c_install_space_handler(struct i2c_adapter *adapter);
+void acpi_i2c_remove_space_handler(struct i2c_adapter *adapter);
+#else
+static inline void acpi_i2c_remove_space_handler(struct i2c_adapter *adapter)
+{ }
+static inline int acpi_i2c_install_space_handler(struct i2c_adapter *adapter)
+{ return 0; }
+#endif
+
 #endif /* _LINUX_I2C_H */
-- 
1.8.4.rc0.1.g8f6a3e5.dirty


^ permalink raw reply related	[flat|nested] 79+ messages in thread

* [Resend Patch 8/9] I2C/ACPI: Move ACPI related code to i2c-acpi.c
  2014-04-22  6:24 ` [Resend Patch " Lan Tianyu
                     ` (6 preceding siblings ...)
  2014-04-22  6:24   ` [Resend Patch 7/9] I2C/ACPI: Add i2c ACPI operation region support Lan Tianyu
@ 2014-04-22  6:24   ` Lan Tianyu
  2014-04-22 11:38     ` Mika Westerberg
  2014-04-22  6:24   ` [Resend Patch 9/9] I2C/ACPI: Add CONFIG_I2C_ACPI config Lan Tianyu
                     ` (2 subsequent siblings)
  10 siblings, 1 reply; 79+ messages in thread
From: Lan Tianyu @ 2014-04-22  6:24 UTC (permalink / raw)
  To: wsa, rjw, mika.westerberg, awilliam, lenb
  Cc: linux-i2c, linux-kernel, linux-acpi, tianyu.lan

Clean up ACPI related code in the i2c core.

Signed-off-by: Lan Tianyu <tianyu.lan@intel.com>
---
 drivers/i2c/i2c-acpi.c | 89 ++++++++++++++++++++++++++++++++++++++++++++++
 drivers/i2c/i2c-core.c | 95 --------------------------------------------------
 include/linux/i2c.h    |  3 ++
 3 files changed, 92 insertions(+), 95 deletions(-)

diff --git a/drivers/i2c/i2c-acpi.c b/drivers/i2c/i2c-acpi.c
index 942abdf..a0ae867 100644
--- a/drivers/i2c/i2c-acpi.c
+++ b/drivers/i2c/i2c-acpi.c
@@ -37,6 +37,95 @@ struct gsb_buffer {
 	};
 } __packed;
 
+static int acpi_i2c_add_resource(struct acpi_resource *ares, void *data)
+{
+	struct i2c_board_info *info = data;
+
+	if (ares->type == ACPI_RESOURCE_TYPE_SERIAL_BUS) {
+		struct acpi_resource_i2c_serialbus *sb;
+
+		sb = &ares->data.i2c_serial_bus;
+		if (sb->type == ACPI_RESOURCE_SERIAL_TYPE_I2C) {
+			info->addr = sb->slave_address;
+			if (sb->access_mode == ACPI_I2C_10BIT_MODE)
+				info->flags |= I2C_CLIENT_TEN;
+		}
+	} else if (info->irq < 0) {
+		struct resource r;
+
+		if (acpi_dev_resource_interrupt(ares, 0, &r))
+			info->irq = r.start;
+	}
+
+	/* Tell the ACPI core to skip this resource */
+	return 1;
+}
+
+static acpi_status acpi_i2c_add_device(acpi_handle handle, u32 level,
+				       void *data, void **return_value)
+{
+	struct i2c_adapter *adapter = data;
+	struct list_head resource_list;
+	struct i2c_board_info info;
+	struct acpi_device *adev;
+	int ret;
+
+	if (acpi_bus_get_device(handle, &adev))
+		return AE_OK;
+	if (acpi_bus_get_status(adev) || !adev->status.present)
+		return AE_OK;
+
+	memset(&info, 0, sizeof(info));
+	info.acpi_node.companion = adev;
+	info.irq = -1;
+
+	INIT_LIST_HEAD(&resource_list);
+	ret = acpi_dev_get_resources(adev, &resource_list,
+				     acpi_i2c_add_resource, &info);
+	acpi_dev_free_resource_list(&resource_list);
+
+	if (ret < 0 || !info.addr)
+		return AE_OK;
+
+	adev->power.flags.ignore_parent = true;
+	strlcpy(info.type, dev_name(&adev->dev), sizeof(info.type));
+	if (!i2c_new_device(adapter, &info)) {
+		adev->power.flags.ignore_parent = false;
+		dev_err(&adapter->dev,
+			"failed to add I2C device %s from ACPI\n",
+			dev_name(&adev->dev));
+	}
+
+	return AE_OK;
+}
+
+/**
+ * acpi_i2c_register_devices - enumerate I2C slave devices behind adapter
+ * @adap: pointer to adapter
+ *
+ * Enumerate all I2C slave devices behind this adapter by walking the ACPI
+ * namespace. When a device is found it will be added to the Linux device
+ * model and bound to the corresponding ACPI handle.
+ */
+void acpi_i2c_register_devices(struct i2c_adapter *adap)
+{
+	acpi_handle handle;
+	acpi_status status;
+
+	if (!adap->dev.parent)
+		return;
+
+	handle = ACPI_HANDLE(adap->dev.parent);
+	if (!handle)
+		return;
+
+	status = acpi_walk_namespace(ACPI_TYPE_DEVICE, handle, 1,
+				     acpi_i2c_add_device, NULL,
+				     adap, NULL);
+	if (ACPI_FAILURE(status))
+		dev_warn(&adap->dev, "failed to enumerate I2C slaves\n");
+}
+
 static int acpi_gsb_i2c_read_bytes(struct i2c_client *client,
 		u8 cmd, u8 *data, u8 data_len)
 {
diff --git a/drivers/i2c/i2c-core.c b/drivers/i2c/i2c-core.c
index bb9dc56..9ca50c8 100644
--- a/drivers/i2c/i2c-core.c
+++ b/drivers/i2c/i2c-core.c
@@ -1092,101 +1092,6 @@ EXPORT_SYMBOL(of_find_i2c_adapter_by_node);
 static void of_i2c_register_devices(struct i2c_adapter *adap) { }
 #endif /* CONFIG_OF */
 
-/* ACPI support code */
-
-#if IS_ENABLED(CONFIG_ACPI)
-static int acpi_i2c_add_resource(struct acpi_resource *ares, void *data)
-{
-	struct i2c_board_info *info = data;
-
-	if (ares->type == ACPI_RESOURCE_TYPE_SERIAL_BUS) {
-		struct acpi_resource_i2c_serialbus *sb;
-
-		sb = &ares->data.i2c_serial_bus;
-		if (sb->type == ACPI_RESOURCE_SERIAL_TYPE_I2C) {
-			info->addr = sb->slave_address;
-			if (sb->access_mode == ACPI_I2C_10BIT_MODE)
-				info->flags |= I2C_CLIENT_TEN;
-		}
-	} else if (info->irq < 0) {
-		struct resource r;
-
-		if (acpi_dev_resource_interrupt(ares, 0, &r))
-			info->irq = r.start;
-	}
-
-	/* Tell the ACPI core to skip this resource */
-	return 1;
-}
-
-static acpi_status acpi_i2c_add_device(acpi_handle handle, u32 level,
-				       void *data, void **return_value)
-{
-	struct i2c_adapter *adapter = data;
-	struct list_head resource_list;
-	struct i2c_board_info info;
-	struct acpi_device *adev;
-	int ret;
-
-	if (acpi_bus_get_device(handle, &adev))
-		return AE_OK;
-	if (acpi_bus_get_status(adev) || !adev->status.present)
-		return AE_OK;
-
-	memset(&info, 0, sizeof(info));
-	info.acpi_node.companion = adev;
-	info.irq = -1;
-
-	INIT_LIST_HEAD(&resource_list);
-	ret = acpi_dev_get_resources(adev, &resource_list,
-				     acpi_i2c_add_resource, &info);
-	acpi_dev_free_resource_list(&resource_list);
-
-	if (ret < 0 || !info.addr)
-		return AE_OK;
-
-	adev->power.flags.ignore_parent = true;
-	strlcpy(info.type, dev_name(&adev->dev), sizeof(info.type));
-	if (!i2c_new_device(adapter, &info)) {
-		adev->power.flags.ignore_parent = false;
-		dev_err(&adapter->dev,
-			"failed to add I2C device %s from ACPI\n",
-			dev_name(&adev->dev));
-	}
-
-	return AE_OK;
-}
-
-/**
- * acpi_i2c_register_devices - enumerate I2C slave devices behind adapter
- * @adap: pointer to adapter
- *
- * Enumerate all I2C slave devices behind this adapter by walking the ACPI
- * namespace. When a device is found it will be added to the Linux device
- * model and bound to the corresponding ACPI handle.
- */
-static void acpi_i2c_register_devices(struct i2c_adapter *adap)
-{
-	acpi_handle handle;
-	acpi_status status;
-
-	if (!adap->dev.parent)
-		return;
-
-	handle = ACPI_HANDLE(adap->dev.parent);
-	if (!handle)
-		return;
-
-	status = acpi_walk_namespace(ACPI_TYPE_DEVICE, handle, 1,
-				     acpi_i2c_add_device, NULL,
-				     adap, NULL);
-	if (ACPI_FAILURE(status))
-		dev_warn(&adap->dev, "failed to enumerate I2C slaves\n");
-}
-#else
-static inline void acpi_i2c_register_devices(struct i2c_adapter *adap) {}
-#endif /* CONFIG_ACPI */
-
 static int i2c_do_add_adapter(struct i2c_driver *driver,
 			      struct i2c_adapter *adap)
 {
diff --git a/include/linux/i2c.h b/include/linux/i2c.h
index 681e689..fc1ef42 100644
--- a/include/linux/i2c.h
+++ b/include/linux/i2c.h
@@ -586,7 +586,10 @@ static inline struct i2c_adapter *of_find_i2c_adapter_by_node(struct device_node
 #ifdef CONFIG_ACPI
 int acpi_i2c_install_space_handler(struct i2c_adapter *adapter);
 void acpi_i2c_remove_space_handler(struct i2c_adapter *adapter);
+void acpi_i2c_register_devices(struct i2c_adapter *adap);
 #else
+static inline void acpi_i2c_register_devices(struct i2c_adapter *adap) {};
+
 static inline void acpi_i2c_remove_space_handler(struct i2c_adapter *adapter)
 { }
 static inline int acpi_i2c_install_space_handler(struct i2c_adapter *adapter)
-- 
1.8.4.rc0.1.g8f6a3e5.dirty


^ permalink raw reply related	[flat|nested] 79+ messages in thread

* [Resend Patch 9/9] I2C/ACPI: Add CONFIG_I2C_ACPI config
  2014-04-22  6:24 ` [Resend Patch " Lan Tianyu
                     ` (7 preceding siblings ...)
  2014-04-22  6:24   ` [Resend Patch 8/9] I2C/ACPI: Move ACPI related code to i2c-acpi.c Lan Tianyu
@ 2014-04-22  6:24   ` Lan Tianyu
  2014-04-22 11:45     ` Mika Westerberg
  2014-04-23 23:03   ` [Resend Patch 0/9] I2C ACPI operation region handler support Adam Williamson
  2014-04-28 14:27   ` [Patch V2 " Lan Tianyu
  10 siblings, 1 reply; 79+ messages in thread
From: Lan Tianyu @ 2014-04-22  6:24 UTC (permalink / raw)
  To: wsa, rjw, mika.westerberg, awilliam, lenb
  Cc: linux-i2c, linux-kernel, linux-acpi, tianyu.lan

This patch is to add CONFIG_I2C_ACPI. Current there is a race between
removing I2C ACPI operation region and ACPI AML code accessing.
So make i2c core built-in if CONFIG_I2C_ACPI is set.

Signed-off-by: Lan Tianyu <tianyu.lan@intel.com>
---
 drivers/i2c/Kconfig  | 17 ++++++++++++++++-
 drivers/i2c/Makefile |  2 +-
 include/linux/i2c.h  |  2 +-
 3 files changed, 18 insertions(+), 3 deletions(-)

diff --git a/drivers/i2c/Kconfig b/drivers/i2c/Kconfig
index 7b7ea32..c670d49 100644
--- a/drivers/i2c/Kconfig
+++ b/drivers/i2c/Kconfig
@@ -2,7 +2,9 @@
 # I2C subsystem configuration
 #
 
-menuconfig I2C
+menu "I2C support"
+
+config I2C
 	tristate "I2C support"
 	select RT_MUTEXES
 	---help---
@@ -21,6 +23,17 @@ menuconfig I2C
 	  This I2C support can also be built as a module.  If so, the module
 	  will be called i2c-core.
 
+config I2C_ACPI
+	bool "I2C ACPI support"
+	select I2C
+	depends on ACPI
+	default y
+	help
+	  Say Y here if you want to enable I2C ACPI function. ACPI table
+	  provides I2C slave devices' information to enumerate these devices.
+	  This option also allows ACPI AML code to access I2C slave devices
+	  via I2C ACPI operation region to fulfill ACPI method.
+
 if I2C
 
 config I2C_BOARDINFO
@@ -124,3 +137,5 @@ config I2C_DEBUG_BUS
 	  on.
 
 endif # I2C
+
+endmenu
diff --git a/drivers/i2c/Makefile b/drivers/i2c/Makefile
index 80db307..37464ee 100644
--- a/drivers/i2c/Makefile
+++ b/drivers/i2c/Makefile
@@ -3,7 +3,7 @@
 #
 
 i2ccore-y := i2c-core.o
-i2ccore-$(CONFIG_ACPI)		+= i2c-acpi.o
+i2ccore-$(CONFIG_I2C_ACPI)		+= i2c-acpi.o
 
 obj-$(CONFIG_I2C_BOARDINFO)	+= i2c-boardinfo.o
 obj-$(CONFIG_I2C)		+= i2ccore.o
diff --git a/include/linux/i2c.h b/include/linux/i2c.h
index fc1ef42..d0ece9f 100644
--- a/include/linux/i2c.h
+++ b/include/linux/i2c.h
@@ -583,7 +583,7 @@ static inline struct i2c_adapter *of_find_i2c_adapter_by_node(struct device_node
 }
 #endif /* CONFIG_OF */
 
-#ifdef CONFIG_ACPI
+#ifdef CONFIG_I2C_ACPI
 int acpi_i2c_install_space_handler(struct i2c_adapter *adapter);
 void acpi_i2c_remove_space_handler(struct i2c_adapter *adapter);
 void acpi_i2c_register_devices(struct i2c_adapter *adap);
-- 
1.8.4.rc0.1.g8f6a3e5.dirty


^ permalink raw reply related	[flat|nested] 79+ messages in thread

* Re: [Resend Patch 1/9] ACPICA: Executer: Fix buffer allocation issue for generic_serial_bus region field accesses.
  2014-04-22  6:24   ` [Resend Patch 1/9] ACPICA: Executer: Fix buffer allocation issue for generic_serial_bus region field accesses Lan Tianyu
@ 2014-04-22 11:21     ` Mika Westerberg
  0 siblings, 0 replies; 79+ messages in thread
From: Mika Westerberg @ 2014-04-22 11:21 UTC (permalink / raw)
  To: Lan Tianyu
  Cc: wsa, rjw, awilliam, lenb, linux-i2c, linux-kernel, linux-acpi, Lv Zheng

On Tue, Apr 22, 2014 at 02:24:07PM +0800, Lan Tianyu wrote:
> From: Lv Zheng <lv.zheng@intel.com>
> 
> The size of the buffer allocated for generic_serial_bus region access
> is not correct.  This patch introduces acpi_ex_get_serial_access_length()
> to be invoked to obtain correct data buffer length.  Reported by
> Lan Tianyu, Fixed by Lv Zheng.
> 
> Signed-off-by: Lv Zheng <lv.zheng@intel.com>
> Signed-off-by: Lan Tianyu <tianyu.lan@intel.com>

Reviewed-by: Mika Westerberg <mika.westerberg@linux.intel.com>

^ permalink raw reply	[flat|nested] 79+ messages in thread

* Re: [Resend Patch 2/9] ACPICA: Export acpi_buffer_to_resource symbol
  2014-04-22  6:24   ` [Resend Patch 2/9] ACPICA: Export acpi_buffer_to_resource symbol Lan Tianyu
@ 2014-04-22 11:21     ` Mika Westerberg
  0 siblings, 0 replies; 79+ messages in thread
From: Mika Westerberg @ 2014-04-22 11:21 UTC (permalink / raw)
  To: Lan Tianyu; +Cc: wsa, rjw, awilliam, lenb, linux-i2c, linux-kernel, linux-acpi

On Tue, Apr 22, 2014 at 02:24:08PM +0800, Lan Tianyu wrote:
> The acpi_buffer_to_resource is needed in i2c module
> to convert aml buffer to struct acpi_resource
> 
> Signed-off-by: Lan Tianyu <tianyu.lan@intel.com>

Reviewed-by: Mika Westerberg <mika.westerberg@linux.intel.com>

^ permalink raw reply	[flat|nested] 79+ messages in thread

* Re: [Resend Patch 3/9] ACPI: Add acpi_bus_attach_private_data() to facilitate to attach data to ACPI handle
  2014-04-22  6:24   ` [Resend Patch 3/9] ACPI: Add acpi_bus_attach_private_data() to facilitate to attach data to ACPI handle Lan Tianyu
@ 2014-04-22 11:23     ` Mika Westerberg
  0 siblings, 0 replies; 79+ messages in thread
From: Mika Westerberg @ 2014-04-22 11:23 UTC (permalink / raw)
  To: Lan Tianyu; +Cc: wsa, rjw, awilliam, lenb, linux-i2c, linux-kernel, linux-acpi

On Tue, Apr 22, 2014 at 02:24:09PM +0800, Lan Tianyu wrote:
> There is already acpi_bus_get_private_data() to get ACPI handle data
> which is associated with acpi_bus_private_data_handler(). This patch
> is to add acpi_bus_attach_private_data() to make a pair and facilitate
> to attach and get data to/from ACPI handle.
> 
> Signed-off-by: Lan Tianyu <tianyu.lan@intel.com>
> ---
>  drivers/acpi/bus.c      | 18 +++++++++++++++++-
>  include/acpi/acpi_bus.h |  1 +
>  2 files changed, 18 insertions(+), 1 deletion(-)
> 
> diff --git a/drivers/acpi/bus.c b/drivers/acpi/bus.c
> index e7e5844..4ed8d48 100644
> --- a/drivers/acpi/bus.c
> +++ b/drivers/acpi/bus.c
> @@ -132,6 +132,22 @@ void acpi_bus_private_data_handler(acpi_handle handle,
>  }
>  EXPORT_SYMBOL(acpi_bus_private_data_handler);
>  
> +int acpi_bus_attach_private_data(acpi_handle handle, void *data)
> +{
> +	acpi_status status;
> +
> +	status = acpi_attach_data(handle,
> +			acpi_bus_private_data_handler, data);
> +	if (ACPI_FAILURE(status)) {
> +		ACPI_ERROR((AE_INFO, "Error attaching device[%p] data\n",
> +				handle));
> +		return -ENODEV;
> +	}
> +
> +	return 0;
> +}
> +EXPORT_SYMBOL(acpi_bus_attach_private_data);

When I added GPIO operation region support, Rafael mentioned that we might
want to add this private data to the struct acpi_device instead.

Either way, looks good to me,

Reviewed-by: Mika Westerberg <mika.westerberg@linux.intel.com>

^ permalink raw reply	[flat|nested] 79+ messages in thread

* Re: [Resend Patch 4/9] ACPI/Thermal: Use acpi_bus_attach_private_data() to attach private data
  2014-04-22  6:24   ` [Resend Patch 4/9] ACPI/Thermal: Use acpi_bus_attach_private_data() to attach private data Lan Tianyu
@ 2014-04-22 11:24     ` Mika Westerberg
  0 siblings, 0 replies; 79+ messages in thread
From: Mika Westerberg @ 2014-04-22 11:24 UTC (permalink / raw)
  To: Lan Tianyu; +Cc: wsa, rjw, awilliam, lenb, linux-i2c, linux-kernel, linux-acpi

On Tue, Apr 22, 2014 at 02:24:10PM +0800, Lan Tianyu wrote:
> Use acpi_bus_attach_private_data() to attach private data
> instead of acpi_attach_data().
> 
> Signed-off-by: Lan Tianyu <tianyu.lan@intel.com>

Reviewed-by: Mika Westerberg <mika.westerberg@linux.intel.com>

^ permalink raw reply	[flat|nested] 79+ messages in thread

* Re: [Resend Patch 5/9] I2C: Add smbus quick read/write helper function
  2014-04-22  6:24   ` [Resend Patch 5/9] I2C: Add smbus quick read/write helper function Lan Tianyu
@ 2014-04-22 11:24     ` Mika Westerberg
  0 siblings, 0 replies; 79+ messages in thread
From: Mika Westerberg @ 2014-04-22 11:24 UTC (permalink / raw)
  To: Lan Tianyu; +Cc: wsa, rjw, awilliam, lenb, linux-i2c, linux-kernel, linux-acpi

On Tue, Apr 22, 2014 at 02:24:11PM +0800, Lan Tianyu wrote:
> Add i2c_smbus_quick_write/read() helper function. These will be used
> in the implementation of i2c ACPI address space handler.
> 
> Signed-off-by: Lan Tianyu <tianyu.lan@intel.com>

Reviewed-by: Mika Westerberg <mika.westerberg@linux.intel.com>

^ permalink raw reply	[flat|nested] 79+ messages in thread

* Re: [Resend Patch 6/9] I2C: Add smbus word/block process call helper function
  2014-04-22  6:24   ` [Resend Patch 6/9] I2C: Add smbus word/block process call " Lan Tianyu
@ 2014-04-22 11:26     ` Mika Westerberg
  0 siblings, 0 replies; 79+ messages in thread
From: Mika Westerberg @ 2014-04-22 11:26 UTC (permalink / raw)
  To: Lan Tianyu; +Cc: wsa, rjw, awilliam, lenb, linux-i2c, linux-kernel, linux-acpi

On Tue, Apr 22, 2014 at 02:24:12PM +0800, Lan Tianyu wrote:
> Add i2c_smbus_word/block_proc_call() helper function. These will be used
> in the implementation of i2c ACPI address space handler.
> 
> Signed-off-by: Lan Tianyu <tianyu.lan@intel.com>

Reviewed-by: Mika Westerberg <mika.westerberg@linux.intel.com>

^ permalink raw reply	[flat|nested] 79+ messages in thread

* Re: [Resend Patch 7/9] I2C/ACPI: Add i2c ACPI operation region support
  2014-04-22  6:24   ` [Resend Patch 7/9] I2C/ACPI: Add i2c ACPI operation region support Lan Tianyu
@ 2014-04-22 11:36     ` Mika Westerberg
  2014-04-23  1:53       ` Lan Tianyu
  0 siblings, 1 reply; 79+ messages in thread
From: Mika Westerberg @ 2014-04-22 11:36 UTC (permalink / raw)
  To: Lan Tianyu; +Cc: wsa, rjw, awilliam, lenb, linux-i2c, linux-kernel, linux-acpi

On Tue, Apr 22, 2014 at 02:24:13PM +0800, Lan Tianyu wrote:
> diff --git a/drivers/i2c/i2c-acpi.c b/drivers/i2c/i2c-acpi.c
> new file mode 100644
> index 0000000..942abdf
> --- /dev/null
> +++ b/drivers/i2c/i2c-acpi.c
> @@ -0,0 +1,282 @@
> +/*
> + * I2C ACPI code
> + *
> + * Copyright (C) 2014 Intel Corp
> + *
> + * Author: Lan Tianyu <tianyu.lan@intel.com>
> + *
> + * This program is free software; you can redistribute it and/or modify
> + * it under the terms of the GNU General Public License version 2 as
> + * published by the Free Software Foundation.
> + *
> + * This program is distributed in the hope that it will be useful, but
> + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
> + * or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
> + * for more details.
> + */
> +#define pr_fmt(fmt) "I2C/ACPI : " fmt
> +
> +#include <linux/kernel.h>
> +#include <linux/errno.h>
> +#include <linux/err.h>
> +#include <linux/i2c.h>
> +#include <linux/acpi.h>
> +
> +struct acpi_i2c_handler_data {
> +	struct acpi_connection_info info;
> +	struct i2c_adapter *adapter;
> +} __packed;

Why __packed?

> +
> +struct gsb_buffer {
> +	u8	status;
> +	u8	len;
> +	union {
> +		u16	wdata;
> +		u8	bdata;
> +		u8	data[0];
> +	};
> +} __packed;
> +
> +static int acpi_gsb_i2c_read_bytes(struct i2c_client *client,
> +		u8 cmd, u8 *data, u8 data_len)
> +{
> +
> +	struct i2c_msg msgs[2];
> +	int ret;
> +	u8  *buffer;

You seem to have two spaces here.

> +
> +	buffer = kzalloc(data_len, GFP_KERNEL);
> +	if (!buffer)
> +		return AE_NO_MEMORY;
> +
> +	msgs[0].addr = client->addr;
> +	msgs[0].flags = client->flags;
> +	msgs[0].len = 1;
> +	msgs[0].buf = &cmd;
> +
> +	msgs[1].addr = client->addr;
> +	msgs[1].flags = client->flags | I2C_M_RD;
> +	msgs[1].len = data_len;
> +	msgs[1].buf = buffer;
> +
> +	ret = i2c_transfer(client->adapter, msgs, ARRAY_SIZE(msgs));
> +	if (ret < 0)
> +		pr_err("i2c read failed\n");
> +	else
> +		memcpy(data, buffer, data_len);
> +
> +	kfree(buffer);
> +	return ret;
> +}
> +
> +static int acpi_gsb_i2c_write_bytes(struct i2c_client *client,
> +		u8 cmd, u8 *data, u8 data_len)
> +{
> +
> +	struct i2c_msg msgs[1];
> +	u8  *buffer;

Ditto.

> +	int ret = AE_OK;
> +
> +	buffer = kzalloc(data_len + 1, GFP_KERNEL);
> +	if (!buffer)
> +		return AE_NO_MEMORY;
> +
> +	buffer[0] = cmd;
> +	memcpy(buffer + 1, data, data_len);
> +
> +	msgs[0].addr = client->addr;
> +	msgs[0].flags = client->flags;
> +	msgs[0].len = data_len + 1;
> +	msgs[0].buf = buffer;
> +
> +	ret = i2c_transfer(client->adapter, msgs, ARRAY_SIZE(msgs));
> +	if (ret < 0)
> +		pr_err("i2c write failed\n");

Since you have pointer to the adapter, can't you use dev_err() instead?

> +
> +	kfree(buffer);
> +	return ret;
> +}
> +
> +static acpi_status
> +acpi_i2c_space_handler(u32 function, acpi_physical_address command,
> +			u32 bits, u64 *value64,
> +			void *handler_context, void *region_context)
> +{
> +	struct gsb_buffer *gsb = (struct gsb_buffer *)value64;
> +	struct acpi_i2c_handler_data *data = handler_context;
> +	struct acpi_connection_info *info = &data->info;
> +	struct acpi_resource_i2c_serialbus *sb;
> +	struct i2c_adapter *adapter = data->adapter;
> +	struct i2c_client client;
> +	struct acpi_resource *ares;
> +	u32 accessor_type = function >> 16;
> +	u8 action = function & ACPI_IO_MASK;
> +	int status;
> +
> +	acpi_buffer_to_resource(info->connection, info->length, &ares);
> +	if (!value64 || ares->type != ACPI_RESOURCE_TYPE_SERIAL_BUS)
> +		return AE_BAD_PARAMETER;
> +
> +	sb = &ares->data.i2c_serial_bus;
> +	if (sb->type != ACPI_RESOURCE_SERIAL_TYPE_I2C)
> +		return AE_BAD_PARAMETER;

Do you leak the resource buffer here?

> +
> +	client.adapter = adapter;
> +	client.addr = sb->slave_address;
> +	client.flags = 0;

I'm not sure if this is the correct way to use struct i2c_client
(allocating it from stack and passing forward to functions that might
expect a real i2c_client structure). It has ->dev and all.

I'm wondering if you can use i2c_transfer() and i2c_smbus_xfer() here
instead, passing just the adapter pointer?

> +
> +	if (sb->access_mode == ACPI_I2C_10BIT_MODE)
> +		client.flags |= I2C_CLIENT_TEN;
> +
> +	switch (accessor_type) {
> +	case ACPI_GSB_ACCESS_ATTRIB_QUICK:
> +		if (action == ACPI_READ)
> +			status = i2c_smbus_quick_read(&client);
> +		else
> +			status = i2c_smbus_quick_write(&client);
> +		break;
> +
> +	case ACPI_GSB_ACCESS_ATTRIB_SEND_RCV:
> +		if (action == ACPI_READ) {
> +			status = i2c_smbus_read_byte(&client);
> +			if (status >= 0) {
> +				gsb->bdata = status;
> +				status = 0;
> +			}
> +		} else {
> +			status = i2c_smbus_write_byte(&client, gsb->bdata);
> +		}
> +		break;
> +
> +	case ACPI_GSB_ACCESS_ATTRIB_BYTE:
> +		if (action == ACPI_READ) {
> +			status = i2c_smbus_read_byte_data(&client, command);
> +			if (status >= 0) {
> +				gsb->bdata = status;
> +				status = 0;
> +			}
> +		} else {
> +			status = i2c_smbus_write_byte_data(&client, command,
> +					gsb->bdata);
> +		}
> +		break;
> +
> +	case ACPI_GSB_ACCESS_ATTRIB_WORD:
> +		if (action == ACPI_READ) {
> +			status = i2c_smbus_read_word_data(&client, command);
> +			if (status >= 0) {
> +				gsb->wdata = status;
> +				status = 0;
> +			}
> +		} else {
> +			status = i2c_smbus_write_word_data(&client, command,
> +					gsb->wdata);
> +		}
> +		break;
> +
> +	case ACPI_GSB_ACCESS_ATTRIB_BLOCK:
> +		if (action == ACPI_READ) {
> +			status = i2c_smbus_read_block_data(&client, command,
> +					gsb->data);
> +			if (status >= 0) {
> +				gsb->len = status;
> +				status = 0;
> +			}
> +		} else {
> +			status = i2c_smbus_write_block_data(&client, command,
> +					gsb->len, gsb->data);
> +		}
> +		break;
> +
> +	case ACPI_GSB_ACCESS_ATTRIB_MULTIBYTE:
> +		if (action == ACPI_READ) {
> +			status = acpi_gsb_i2c_read_bytes(&client, command,
> +					gsb->data, info->access_length);
> +			if (status > 0)
> +				status = 0;
> +		} else {
> +			status = acpi_gsb_i2c_write_bytes(&client, command,
> +					gsb->data, info->access_length);
> +		}
> +		break;
> +
> +	case ACPI_GSB_ACCESS_ATTRIB_WORD_CALL:
> +		status = i2c_smbus_word_proc_call(&client, command, gsb->wdata);
> +		if (status >= 0) {
> +			gsb->wdata = status;
> +			status = 0;
> +		}
> +		break;
> +
> +	case ACPI_GSB_ACCESS_ATTRIB_BLOCK_CALL:
> +		status = i2c_smbus_block_proc_call(&client, command, gsb->len,
> +				gsb->data);
> +		if (status > 0) {
> +			gsb->len = status;
> +			status = 0;
> +		}
> +		break;
> +
> +	default:
> +		pr_info("protocl(0x%02x) is not supported.\n", accessor_type);

protocl -> protocol

> +		return AE_BAD_PARAMETER;
> +	}
> +
> +	gsb->status = status;
> +	return AE_OK;
> +}

^ permalink raw reply	[flat|nested] 79+ messages in thread

* Re: [Resend Patch 8/9] I2C/ACPI: Move ACPI related code to i2c-acpi.c
  2014-04-22  6:24   ` [Resend Patch 8/9] I2C/ACPI: Move ACPI related code to i2c-acpi.c Lan Tianyu
@ 2014-04-22 11:38     ` Mika Westerberg
  0 siblings, 0 replies; 79+ messages in thread
From: Mika Westerberg @ 2014-04-22 11:38 UTC (permalink / raw)
  To: Lan Tianyu; +Cc: wsa, rjw, awilliam, lenb, linux-i2c, linux-kernel, linux-acpi

On Tue, Apr 22, 2014 at 02:24:14PM +0800, Lan Tianyu wrote:
> diff --git a/include/linux/i2c.h b/include/linux/i2c.h
> index 681e689..fc1ef42 100644
> --- a/include/linux/i2c.h
> +++ b/include/linux/i2c.h
> @@ -586,7 +586,10 @@ static inline struct i2c_adapter *of_find_i2c_adapter_by_node(struct device_node
>  #ifdef CONFIG_ACPI
>  int acpi_i2c_install_space_handler(struct i2c_adapter *adapter);
>  void acpi_i2c_remove_space_handler(struct i2c_adapter *adapter);
> +void acpi_i2c_register_devices(struct i2c_adapter *adap);
>  #else
> +static inline void acpi_i2c_register_devices(struct i2c_adapter *adap) {};

Semicolon is not needed here.

Apart from that,

Reviewed-by: Mika Westerberg <mika.westerberg@linux.intel.com>

^ permalink raw reply	[flat|nested] 79+ messages in thread

* Re: [Resend Patch 9/9] I2C/ACPI: Add CONFIG_I2C_ACPI config
  2014-04-22  6:24   ` [Resend Patch 9/9] I2C/ACPI: Add CONFIG_I2C_ACPI config Lan Tianyu
@ 2014-04-22 11:45     ` Mika Westerberg
  2014-04-23  5:39       ` Lan Tianyu
  0 siblings, 1 reply; 79+ messages in thread
From: Mika Westerberg @ 2014-04-22 11:45 UTC (permalink / raw)
  To: Lan Tianyu; +Cc: wsa, rjw, awilliam, lenb, linux-i2c, linux-kernel, linux-acpi

On Tue, Apr 22, 2014 at 02:24:15PM +0800, Lan Tianyu wrote:
> This patch is to add CONFIG_I2C_ACPI. Current there is a race between
> removing I2C ACPI operation region and ACPI AML code accessing.
> So make i2c core built-in if CONFIG_I2C_ACPI is set.
> 
> Signed-off-by: Lan Tianyu <tianyu.lan@intel.com>
> ---
>  drivers/i2c/Kconfig  | 17 ++++++++++++++++-
>  drivers/i2c/Makefile |  2 +-
>  include/linux/i2c.h  |  2 +-
>  3 files changed, 18 insertions(+), 3 deletions(-)
> 
> diff --git a/drivers/i2c/Kconfig b/drivers/i2c/Kconfig
> index 7b7ea32..c670d49 100644
> --- a/drivers/i2c/Kconfig
> +++ b/drivers/i2c/Kconfig
> @@ -2,7 +2,9 @@
>  # I2C subsystem configuration
>  #
>  
> -menuconfig I2C
> +menu "I2C support"
> +
> +config I2C
>  	tristate "I2C support"
>  	select RT_MUTEXES
>  	---help---
> @@ -21,6 +23,17 @@ menuconfig I2C
>  	  This I2C support can also be built as a module.  If so, the module
>  	  will be called i2c-core.
>  
> +config I2C_ACPI
> +	bool "I2C ACPI support"
> +	select I2C
> +	depends on ACPI
> +	default y
> +	help
> +	  Say Y here if you want to enable I2C ACPI function. ACPI table
> +	  provides I2C slave devices' information to enumerate these devices.
> +	  This option also allows ACPI AML code to access I2C slave devices
> +	  via I2C ACPI operation region to fulfill ACPI method.
> +

I'm wondering, can we provide some sort of wrapper function from ACPI core
that is guaranteed to be built in to the kernel image and use it instead of
adding new Kconfig options?

^ permalink raw reply	[flat|nested] 79+ messages in thread

* Re: [Resend Patch 7/9] I2C/ACPI: Add i2c ACPI operation region support
  2014-04-22 11:36     ` Mika Westerberg
@ 2014-04-23  1:53       ` Lan Tianyu
  2014-04-23  7:28         ` Mika Westerberg
  0 siblings, 1 reply; 79+ messages in thread
From: Lan Tianyu @ 2014-04-23  1:53 UTC (permalink / raw)
  To: Mika Westerberg
  Cc: wsa, rjw, awilliam, lenb, linux-i2c, linux-kernel, linux-acpi

Hi Mika:
	Thanks a lot for your review.

On 2014年04月22日 19:36, Mika Westerberg wrote:
>> > +
>> > +	client.adapter = adapter;
>> > +	client.addr = sb->slave_address;
>> > +	client.flags = 0;
> I'm not sure if this is the correct way to use struct i2c_client
> (allocating it from stack and passing forward to functions that might
> expect a real i2c_client structure). It has ->dev and all.

I check all i2c_smbus_xxx helper functions and they are simple wrappers
of i2c_smbus_xfer(). Only adapter, addr and flags of struct client are
used in these functions.

> 
> I'm wondering if you can use i2c_transfer() and i2c_smbus_xfer() here
> instead, passing just the adapter pointer?
> 

Yes, I can do that but this needs to copy all codes of i2c_smbus_xxx
helper function in the i2c-core.c here. This seems duplicated?

-- 
Best regards
Tianyu Lan

^ permalink raw reply	[flat|nested] 79+ messages in thread

* Re: [Resend Patch 9/9] I2C/ACPI: Add CONFIG_I2C_ACPI config
  2014-04-22 11:45     ` Mika Westerberg
@ 2014-04-23  5:39       ` Lan Tianyu
  2014-04-23  6:47         ` Zheng, Lv
  0 siblings, 1 reply; 79+ messages in thread
From: Lan Tianyu @ 2014-04-23  5:39 UTC (permalink / raw)
  To: Mika Westerberg
  Cc: wsa, rjw, awilliam, lenb, linux-i2c, linux-kernel, linux-acpi, Zheng, Lv

On 2014年04月22日 19:45, Mika Westerberg wrote:
> On Tue, Apr 22, 2014 at 02:24:15PM +0800, Lan Tianyu wrote:
>> This patch is to add CONFIG_I2C_ACPI. Current there is a race between
>> removing I2C ACPI operation region and ACPI AML code accessing.
>> So make i2c core built-in if CONFIG_I2C_ACPI is set.
>>
>> Signed-off-by: Lan Tianyu <tianyu.lan@intel.com>
>> ---
>>  drivers/i2c/Kconfig  | 17 ++++++++++++++++-
>>  drivers/i2c/Makefile |  2 +-
>>  include/linux/i2c.h  |  2 +-
>>  3 files changed, 18 insertions(+), 3 deletions(-)
>>
>> diff --git a/drivers/i2c/Kconfig b/drivers/i2c/Kconfig
>> index 7b7ea32..c670d49 100644
>> --- a/drivers/i2c/Kconfig
>> +++ b/drivers/i2c/Kconfig
>> @@ -2,7 +2,9 @@
>>  # I2C subsystem configuration
>>  #
>>  
>> -menuconfig I2C
>> +menu "I2C support"
>> +
>> +config I2C
>>  	tristate "I2C support"
>>  	select RT_MUTEXES
>>  	---help---
>> @@ -21,6 +23,17 @@ menuconfig I2C
>>  	  This I2C support can also be built as a module.  If so, the module
>>  	  will be called i2c-core.
>>  
>> +config I2C_ACPI
>> +	bool "I2C ACPI support"
>> +	select I2C
>> +	depends on ACPI
>> +	default y
>> +	help
>> +	  Say Y here if you want to enable I2C ACPI function. ACPI table
>> +	  provides I2C slave devices' information to enumerate these devices.
>> +	  This option also allows ACPI AML code to access I2C slave devices
>> +	  via I2C ACPI operation region to fulfill ACPI method.
>> +
> 
> I'm wondering, can we provide some sort of wrapper function from ACPI core
> that is guaranteed to be built in to the kernel image and use it instead of
> adding new Kconfig options?
> 
Cc: LV

LV tried to fix the issue via wrapper solution in the ACPI code before.
https://lkml.org/lkml/2013/7/23/87

He has a plan to resolve the issue in ACPICA later.

Other choice is to increase the i2c-core module count to prevent it
being unloaded when i2c operation region handler is installed. Remove
the code When LV finish his job.

-- 
Best regards
Tianyu Lan

^ permalink raw reply	[flat|nested] 79+ messages in thread

* RE: [Resend Patch 9/9] I2C/ACPI: Add CONFIG_I2C_ACPI config
  2014-04-23  5:39       ` Lan Tianyu
@ 2014-04-23  6:47         ` Zheng, Lv
  2014-04-23  7:40           ` Mika Westerberg
  0 siblings, 1 reply; 79+ messages in thread
From: Zheng, Lv @ 2014-04-23  6:47 UTC (permalink / raw)
  To: Lan, Tianyu, Mika Westerberg
  Cc: wsa, rjw, awilliam, lenb, linux-i2c, linux-kernel, linux-acpi

[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #1: Type: text/plain; charset="utf-8", Size: 2997 bytes --]

Hi, Tianyu

> From: Lan, Tianyu
> Sent: Wednesday, April 23, 2014 1:40 PM
> 
> On 2014年04月22日 19:45, Mika Westerberg wrote:
> > On Tue, Apr 22, 2014 at 02:24:15PM +0800, Lan Tianyu wrote:
> >> This patch is to add CONFIG_I2C_ACPI. Current there is a race between
> >> removing I2C ACPI operation region and ACPI AML code accessing.
> >> So make i2c core built-in if CONFIG_I2C_ACPI is set.
> >>
> >> Signed-off-by: Lan Tianyu <tianyu.lan@intel.com>
> >> ---
> >>  drivers/i2c/Kconfig  | 17 ++++++++++++++++-
> >>  drivers/i2c/Makefile |  2 +-
> >>  include/linux/i2c.h  |  2 +-
> >>  3 files changed, 18 insertions(+), 3 deletions(-)
> >>
> >> diff --git a/drivers/i2c/Kconfig b/drivers/i2c/Kconfig
> >> index 7b7ea32..c670d49 100644
> >> --- a/drivers/i2c/Kconfig
> >> +++ b/drivers/i2c/Kconfig
> >> @@ -2,7 +2,9 @@
> >>  # I2C subsystem configuration
> >>  #
> >>
> >> -menuconfig I2C
> >> +menu "I2C support"
> >> +
> >> +config I2C
> >>  	tristate "I2C support"
> >>  	select RT_MUTEXES
> >>  	---help---
> >> @@ -21,6 +23,17 @@ menuconfig I2C
> >>  	  This I2C support can also be built as a module.  If so, the module
> >>  	  will be called i2c-core.
> >>
> >> +config I2C_ACPI
> >> +	bool "I2C ACPI support"
> >> +	select I2C
> >> +	depends on ACPI
> >> +	default y
> >> +	help
> >> +	  Say Y here if you want to enable I2C ACPI function. ACPI table
> >> +	  provides I2C slave devices' information to enumerate these devices.
> >> +	  This option also allows ACPI AML code to access I2C slave devices
> >> +	  via I2C ACPI operation region to fulfill ACPI method.
> >> +
> >
> > I'm wondering, can we provide some sort of wrapper function from ACPI core
> > that is guaranteed to be built in to the kernel image and use it instead of
> > adding new Kconfig options?
> >
> Cc: LV
> 
> LV tried to fix the issue via wrapper solution in the ACPI code before.
> https://lkml.org/lkml/2013/7/23/87
> 
> He has a plan to resolve the issue in ACPICA later.
> 
> Other choice is to increase the i2c-core module count to prevent it
> being unloaded when i2c operation region handler is installed. Remove
> the code When LV finish his job.

You may see it implemented in ACPICA after several release.
If you need a fix for now, you can use the patch pointed to by the link you've provided,
Or you could find an updated one here:
 acpi-ipmi13.patch archived in (https://bugzilla.kernel.org/attachment.cgi?id=112611)

I think the solution you've provided in this patch is also reasonable for now.
IPMI also uses a similar solution to solve this issue.
Please refer to the CONFIG_ACPI_IPMI.

The story can be found at:
http://www.spinics.net/lists/linux-acpi/msg49044.html
And the similar solution can be found at:
http://www.spinics.net/lists/linux-acpi/msg49184.html

Thanks and best regards
-Lv

> 
> --
> Best regards
> Tianyu Lan
ÿôèº{.nÇ+‰·Ÿ®‰­†+%ŠËÿ±éݶ\x17¥Šwÿº{.nÇ+‰·¥Š{±þG«éÿŠ{ayº\x1dʇڙë,j\a­¢f£¢·hšïêÿ‘êçz_è®\x03(­éšŽŠÝ¢j"ú\x1a¶^[m§ÿÿ¾\a«þG«éÿ¢¸?™¨è­Ú&£ø§~á¶iO•æ¬z·švØ^\x14\x04\x1a¶^[m§ÿÿÃ\fÿ¶ìÿ¢¸?–I¥

^ permalink raw reply	[flat|nested] 79+ messages in thread

* Re: [Resend Patch 7/9] I2C/ACPI: Add i2c ACPI operation region support
  2014-04-23  7:28         ` Mika Westerberg
@ 2014-04-23  7:17           ` Lan Tianyu
  0 siblings, 0 replies; 79+ messages in thread
From: Lan Tianyu @ 2014-04-23  7:17 UTC (permalink / raw)
  To: Mika Westerberg
  Cc: wsa, rjw, awilliam, lenb, linux-i2c, linux-kernel, linux-acpi

On 2014年04月23日 15:28, Mika Westerberg wrote:
> On Wed, Apr 23, 2014 at 09:53:21AM +0800, Lan Tianyu wrote:
>> Hi Mika:
>> 	Thanks a lot for your review.
>>
>> On 2014年04月22日 19:36, Mika Westerberg wrote:
>>>>> +
>>>>> +	client.adapter = adapter;
>>>>> +	client.addr = sb->slave_address;
>>>>> +	client.flags = 0;
>>> I'm not sure if this is the correct way to use struct i2c_client
>>> (allocating it from stack and passing forward to functions that might
>>> expect a real i2c_client structure). It has ->dev and all.
>>
>> I check all i2c_smbus_xxx helper functions and they are simple wrappers
>> of i2c_smbus_xfer(). Only adapter, addr and flags of struct client are
>> used in these functions.
> 
> In that case I suppose it is OK to (ab)use the client structure like this.
> 
> I think you still want to initialize the whole structure (unused fields
> with zero) before passing it to the wrappers.
> 

Ok. I will do that.

-- 
Best regards
Tianyu Lan

^ permalink raw reply	[flat|nested] 79+ messages in thread

* Re: [Resend Patch 7/9] I2C/ACPI: Add i2c ACPI operation region support
  2014-04-23  1:53       ` Lan Tianyu
@ 2014-04-23  7:28         ` Mika Westerberg
  2014-04-23  7:17           ` Lan Tianyu
  0 siblings, 1 reply; 79+ messages in thread
From: Mika Westerberg @ 2014-04-23  7:28 UTC (permalink / raw)
  To: Lan Tianyu; +Cc: wsa, rjw, awilliam, lenb, linux-i2c, linux-kernel, linux-acpi

On Wed, Apr 23, 2014 at 09:53:21AM +0800, Lan Tianyu wrote:
> Hi Mika:
> 	Thanks a lot for your review.
> 
> On 2014年04月22日 19:36, Mika Westerberg wrote:
> >> > +
> >> > +	client.adapter = adapter;
> >> > +	client.addr = sb->slave_address;
> >> > +	client.flags = 0;
> > I'm not sure if this is the correct way to use struct i2c_client
> > (allocating it from stack and passing forward to functions that might
> > expect a real i2c_client structure). It has ->dev and all.
> 
> I check all i2c_smbus_xxx helper functions and they are simple wrappers
> of i2c_smbus_xfer(). Only adapter, addr and flags of struct client are
> used in these functions.

In that case I suppose it is OK to (ab)use the client structure like this.

I think you still want to initialize the whole structure (unused fields
with zero) before passing it to the wrappers.

^ permalink raw reply	[flat|nested] 79+ messages in thread

* Re: [Resend Patch 9/9] I2C/ACPI: Add CONFIG_I2C_ACPI config
  2014-04-23  6:47         ` Zheng, Lv
@ 2014-04-23  7:40           ` Mika Westerberg
  0 siblings, 0 replies; 79+ messages in thread
From: Mika Westerberg @ 2014-04-23  7:40 UTC (permalink / raw)
  To: Zheng, Lv
  Cc: Lan, Tianyu, wsa, rjw, awilliam, lenb, linux-i2c, linux-kernel,
	linux-acpi

On Wed, Apr 23, 2014 at 06:47:05AM +0000, Zheng, Lv wrote:
> Hi, Tianyu
> 
> > From: Lan, Tianyu
> > Sent: Wednesday, April 23, 2014 1:40 PM
> > 
> > On 2014年04月22日 19:45, Mika Westerberg wrote:
> > > On Tue, Apr 22, 2014 at 02:24:15PM +0800, Lan Tianyu wrote:
> > >> This patch is to add CONFIG_I2C_ACPI. Current there is a race between
> > >> removing I2C ACPI operation region and ACPI AML code accessing.
> > >> So make i2c core built-in if CONFIG_I2C_ACPI is set.
> > >>
> > >> Signed-off-by: Lan Tianyu <tianyu.lan@intel.com>
> > >> ---
> > >>  drivers/i2c/Kconfig  | 17 ++++++++++++++++-
> > >>  drivers/i2c/Makefile |  2 +-
> > >>  include/linux/i2c.h  |  2 +-
> > >>  3 files changed, 18 insertions(+), 3 deletions(-)
> > >>
> > >> diff --git a/drivers/i2c/Kconfig b/drivers/i2c/Kconfig
> > >> index 7b7ea32..c670d49 100644
> > >> --- a/drivers/i2c/Kconfig
> > >> +++ b/drivers/i2c/Kconfig
> > >> @@ -2,7 +2,9 @@
> > >>  # I2C subsystem configuration
> > >>  #
> > >>
> > >> -menuconfig I2C
> > >> +menu "I2C support"
> > >> +
> > >> +config I2C
> > >>  	tristate "I2C support"
> > >>  	select RT_MUTEXES
> > >>  	---help---
> > >> @@ -21,6 +23,17 @@ menuconfig I2C
> > >>  	  This I2C support can also be built as a module.  If so, the module
> > >>  	  will be called i2c-core.
> > >>
> > >> +config I2C_ACPI
> > >> +	bool "I2C ACPI support"
> > >> +	select I2C
> > >> +	depends on ACPI
> > >> +	default y
> > >> +	help
> > >> +	  Say Y here if you want to enable I2C ACPI function. ACPI table
> > >> +	  provides I2C slave devices' information to enumerate these devices.
> > >> +	  This option also allows ACPI AML code to access I2C slave devices
> > >> +	  via I2C ACPI operation region to fulfill ACPI method.
> > >> +
> > >
> > > I'm wondering, can we provide some sort of wrapper function from ACPI core
> > > that is guaranteed to be built in to the kernel image and use it instead of
> > > adding new Kconfig options?
> > >
> > Cc: LV
> > 
> > LV tried to fix the issue via wrapper solution in the ACPI code before.
> > https://lkml.org/lkml/2013/7/23/87
> > 
> > He has a plan to resolve the issue in ACPICA later.
> > 
> > Other choice is to increase the i2c-core module count to prevent it
> > being unloaded when i2c operation region handler is installed. Remove
> > the code When LV finish his job.
> 
> You may see it implemented in ACPICA after several release.
> If you need a fix for now, you can use the patch pointed to by the link you've provided,
> Or you could find an updated one here:
>  acpi-ipmi13.patch archived in (https://bugzilla.kernel.org/attachment.cgi?id=112611)
> 
> I think the solution you've provided in this patch is also reasonable for now.
> IPMI also uses a similar solution to solve this issue.
> Please refer to the CONFIG_ACPI_IPMI.
> 
> The story can be found at:
> http://www.spinics.net/lists/linux-acpi/msg49044.html
> And the similar solution can be found at:
> http://www.spinics.net/lists/linux-acpi/msg49184.html

Thanks for the pointers.

Given that the IPMI problem was solved like this I guess I2C operation
regions can follow the same pattern if there is no better solution
available.

Out of curiousity: how did you plan to fix this in ACPICA?

^ permalink raw reply	[flat|nested] 79+ messages in thread

* Re: [Resend Patch 0/9] I2C ACPI operation region handler support
  2014-04-22  6:24 ` [Resend Patch " Lan Tianyu
                     ` (8 preceding siblings ...)
  2014-04-22  6:24   ` [Resend Patch 9/9] I2C/ACPI: Add CONFIG_I2C_ACPI config Lan Tianyu
@ 2014-04-23 23:03   ` Adam Williamson
  2014-04-28 14:27   ` [Patch V2 " Lan Tianyu
  10 siblings, 0 replies; 79+ messages in thread
From: Adam Williamson @ 2014-04-23 23:03 UTC (permalink / raw)
  To: Lan Tianyu
  Cc: wsa, rjw, mika.westerberg, lenb, linux-i2c, linux-kernel, linux-acpi

On Tue, 2014-04-22 at 14:24 +0800, Lan Tianyu wrote:
> ACPI 5.0 spec(5.5.2.4.5) defines GenericSerialBus(i2c, spi, uart) operation
> region. It allows ACPI aml code able to access such kind of devices to
> implement some ACPI standard method.
> 
> On the Asus T100TA, Bios use GenericSerialBus operation region to access
> i2c device to get battery info. So battery function depends on the I2C
> operation region support. Here is the bug link.
> https://bugzilla.kernel.org/show_bug.cgi?id=69011
> 
> This patchset is to add I2C ACPI operation region handler support.

For what it's worth, I've tested this patchset with the exception of
patch 9/9 - which I leave out because it would require annoying fiddling
with my kernel builds - and it gives apparently-accurate battery/AC
information on my Venue 8 Pro.

It doesn't *obviously* cause any other problems, though there are a few
other issues I'm dealing with ATM. If any of them turn out to be related
to this patch set, I'll send a follow-up.
-- 
Adam Williamson
Fedora QA Community Monkey
IRC: adamw | Twitter: AdamW_Fedora | XMPP: adamw AT happyassassin . net
http://www.happyassassin.net


^ permalink raw reply	[flat|nested] 79+ messages in thread

* [Patch V2 0/9] I2C ACPI operation region handler support
  2014-04-22  6:24 ` [Resend Patch " Lan Tianyu
                     ` (9 preceding siblings ...)
  2014-04-23 23:03   ` [Resend Patch 0/9] I2C ACPI operation region handler support Adam Williamson
@ 2014-04-28 14:27   ` Lan Tianyu
  2014-04-28 14:27     ` [Patch V2 1/9] ACPICA: Executer: Fix buffer allocation issue for generic_serial_bus region field accesses Lan Tianyu
                       ` (10 more replies)
  10 siblings, 11 replies; 79+ messages in thread
From: Lan Tianyu @ 2014-04-28 14:27 UTC (permalink / raw)
  To: wsa, rjw, mika.westerberg, awilliam, lenb
  Cc: linux-i2c, linux-kernel, linux-acpi, tianyu.lan

ACPI 5.0 spec(5.5.2.4.5) defines GenericSerialBus(i2c, spi, uart) operation
region. It allows ACPI aml code able to access such kind of devices to
implement some ACPI standard method.

On the Asus T100TA, Bios use GenericSerialBus operation region to access
i2c device to get battery info. So battery function depends on the I2C
operation region support. Here is the bug link.
https://bugzilla.kernel.org/show_bug.cgi?id=69011

This patchset is to add I2C ACPI operation region handler support.

Change Since V1:
       Fix some code style and memory leak issues in Patch 7

[Patch V2 1/9] ACPICA: Executer: Fix buffer allocation issue for
[Patch V2 2/9] ACPICA: Export acpi_buffer_to_resource symbol
[Patch V2 3/9] ACPI: Add acpi_bus_attach_private_data() to facilitate
[Patch V2 4/9] ACPI/Thermal: Use acpi_bus_attach_private_data() to
[Patch V2 5/9] I2C: Add smbus quick read/write helper function
[Patch V2 6/9] I2C: Add smbus word/block process call helper function
[Patch V2 7/9] I2C/ACPI: Add i2c ACPI operation region support
[Patch V2 8/9] I2C/ACPI: Move ACPI related code to i2c-acpi.c
[Patch V2 9/9] I2C/ACPI: Add CONFIG_I2C_ACPI config

 drivers/acpi/acpica/exfield.c  | 104 ++++++++++++++++++++++++++++++++++---
 drivers/acpi/acpica/rscreate.c |   1 +
 drivers/acpi/bus.c             |  18 ++++++-
 drivers/acpi/thermal.c         |   9 ++--
 drivers/i2c/Kconfig            |  17 ++++++-
 drivers/i2c/Makefile           |   5 +-
 drivers/i2c/i2c-acpi.c         | 384 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 drivers/i2c/i2c-core.c         | 183 ++++++++++++++++++++++++++++++++---------------------------------
 include/acpi/acpi_bus.h        |   1 +
 include/linux/acpi.h           |  11 ++++
 include/linux/i2c.h            |  18 +++++++
 11 files changed, 640 insertions(+), 111 deletions(-)

^ permalink raw reply	[flat|nested] 79+ messages in thread

* [Patch V2 1/9] ACPICA: Executer: Fix buffer allocation issue for generic_serial_bus region field accesses.
  2014-04-28 14:27   ` [Patch V2 " Lan Tianyu
@ 2014-04-28 14:27     ` Lan Tianyu
  2014-04-28 17:52       ` Adam Williamson
  2014-04-28 14:27     ` [Patch V2 2/9] ACPICA: Export acpi_buffer_to_resource symbol Lan Tianyu
                       ` (9 subsequent siblings)
  10 siblings, 1 reply; 79+ messages in thread
From: Lan Tianyu @ 2014-04-28 14:27 UTC (permalink / raw)
  To: wsa, rjw, mika.westerberg, awilliam, lenb
  Cc: linux-i2c, linux-kernel, linux-acpi, tianyu.lan, Lv Zheng

From: Lv Zheng <lv.zheng@intel.com>

The size of the buffer allocated for generic_serial_bus region access
is not correct.  This patch introduces acpi_ex_get_serial_access_length()
to be invoked to obtain correct data buffer length.  Reported by
Lan Tianyu, Fixed by Lv Zheng.

Reviewed-by: Mika Westerberg <mika.westerberg@linux.intel.com>
Signed-off-by: Lv Zheng <lv.zheng@intel.com>
Signed-off-by: Lan Tianyu <tianyu.lan@intel.com>
---
 drivers/acpi/acpica/exfield.c | 104 +++++++++++++++++++++++++++++++++++++++---
 1 file changed, 97 insertions(+), 7 deletions(-)

diff --git a/drivers/acpi/acpica/exfield.c b/drivers/acpi/acpica/exfield.c
index 68d9744..12878e1 100644
--- a/drivers/acpi/acpica/exfield.c
+++ b/drivers/acpi/acpica/exfield.c
@@ -45,10 +45,71 @@
 #include "accommon.h"
 #include "acdispat.h"
 #include "acinterp.h"
+#include "amlcode.h"
 
 #define _COMPONENT          ACPI_EXECUTER
 ACPI_MODULE_NAME("exfield")
 
+/* Local prototypes */
+static u32
+acpi_ex_get_serial_access_length(u32 accessor_type, u32 access_length);
+
+/*******************************************************************************
+ *
+ * FUNCTION:    acpi_get_serial_access_bytes
+ *
+ * PARAMETERS:  accessor_type   - The type of the protocol indicated by region
+ *                                field access attributes
+ *              access_length   - The access length of the region field
+ *
+ * RETURN:      Decoded access length
+ *
+ * DESCRIPTION: This routine returns the length of the generic_serial_bus
+ *              protocol bytes
+ *
+ ******************************************************************************/
+
+static u32
+acpi_ex_get_serial_access_length(u32 accessor_type, u32 access_length)
+{
+	u32 length;
+
+	switch (accessor_type) {
+	case AML_FIELD_ATTRIB_QUICK:
+
+		length = 0;
+		break;
+
+	case AML_FIELD_ATTRIB_SEND_RCV:
+	case AML_FIELD_ATTRIB_BYTE:
+
+		length = 1;
+		break;
+
+	case AML_FIELD_ATTRIB_WORD:
+	case AML_FIELD_ATTRIB_WORD_CALL:
+
+		length = 2;
+		break;
+
+	case AML_FIELD_ATTRIB_MULTIBYTE:
+	case AML_FIELD_ATTRIB_RAW_BYTES:
+	case AML_FIELD_ATTRIB_RAW_PROCESS:
+
+		length = access_length;
+		break;
+
+	case AML_FIELD_ATTRIB_BLOCK:
+	case AML_FIELD_ATTRIB_BLOCK_CALL:
+	default:
+
+		length = ACPI_GSBUS_BUFFER_SIZE;
+		break;
+	}
+
+	return (length);
+}
+
 /*******************************************************************************
  *
  * FUNCTION:    acpi_ex_read_data_from_field
@@ -63,8 +124,9 @@ ACPI_MODULE_NAME("exfield")
  *              Buffer, depending on the size of the field.
  *
  ******************************************************************************/
+
 acpi_status
-acpi_ex_read_data_from_field(struct acpi_walk_state *walk_state,
+acpi_ex_read_data_from_field(struct acpi_walk_state * walk_state,
 			     union acpi_operand_object *obj_desc,
 			     union acpi_operand_object **ret_buffer_desc)
 {
@@ -73,6 +135,7 @@ acpi_ex_read_data_from_field(struct acpi_walk_state *walk_state,
 	acpi_size length;
 	void *buffer;
 	u32 function;
+	u16 accessor_type;
 
 	ACPI_FUNCTION_TRACE_PTR(ex_read_data_from_field, obj_desc);
 
@@ -116,9 +179,22 @@ acpi_ex_read_data_from_field(struct acpi_walk_state *walk_state,
 			    ACPI_READ | (obj_desc->field.attribute << 16);
 		} else if (obj_desc->field.region_obj->region.space_id ==
 			   ACPI_ADR_SPACE_GSBUS) {
-			length = ACPI_GSBUS_BUFFER_SIZE;
-			function =
-			    ACPI_READ | (obj_desc->field.attribute << 16);
+			accessor_type = obj_desc->field.attribute;
+			length = acpi_ex_get_serial_access_length(accessor_type,
+								  obj_desc->
+								  field.
+								  access_length);
+
+			/*
+			 * Add additional 2 bytes for modeled generic_serial_bus data buffer:
+			 * typedef struct {
+			 *     BYTEStatus; // Byte 0 of the data buffer
+			 *     BYTELength; // Byte 1 of the data buffer
+			 *     BYTE[x-1]Data; // Bytes 2-x of the arbitrary length data buffer,
+			 * }
+			 */
+			length += 2;
+			function = ACPI_READ | (accessor_type << 16);
 		} else {	/* IPMI */
 
 			length = ACPI_IPMI_BUFFER_SIZE;
@@ -231,6 +307,7 @@ acpi_ex_write_data_to_field(union acpi_operand_object *source_desc,
 	void *buffer;
 	union acpi_operand_object *buffer_desc;
 	u32 function;
+	u16 accessor_type;
 
 	ACPI_FUNCTION_TRACE_PTR(ex_write_data_to_field, obj_desc);
 
@@ -284,9 +361,22 @@ acpi_ex_write_data_to_field(union acpi_operand_object *source_desc,
 			    ACPI_WRITE | (obj_desc->field.attribute << 16);
 		} else if (obj_desc->field.region_obj->region.space_id ==
 			   ACPI_ADR_SPACE_GSBUS) {
-			length = ACPI_GSBUS_BUFFER_SIZE;
-			function =
-			    ACPI_WRITE | (obj_desc->field.attribute << 16);
+			accessor_type = obj_desc->field.attribute;
+			length = acpi_ex_get_serial_access_length(accessor_type,
+								  obj_desc->
+								  field.
+								  access_length);
+
+			/*
+			 * Add additional 2 bytes for modeled generic_serial_bus data buffer:
+			 * typedef struct {
+			 *     BYTEStatus; // Byte 0 of the data buffer
+			 *     BYTELength; // Byte 1 of the data buffer
+			 *     BYTE[x-1]Data; // Bytes 2-x of the arbitrary length data buffer,
+			 * }
+			 */
+			length += 2;
+			function = ACPI_WRITE | (accessor_type << 16);
 		} else {	/* IPMI */
 
 			length = ACPI_IPMI_BUFFER_SIZE;
-- 
1.8.3.1


^ permalink raw reply related	[flat|nested] 79+ messages in thread

* [Patch V2 2/9] ACPICA: Export acpi_buffer_to_resource symbol
  2014-04-28 14:27   ` [Patch V2 " Lan Tianyu
  2014-04-28 14:27     ` [Patch V2 1/9] ACPICA: Executer: Fix buffer allocation issue for generic_serial_bus region field accesses Lan Tianyu
@ 2014-04-28 14:27     ` Lan Tianyu
  2014-04-28 14:27     ` [Patch V2 3/9] ACPI: Add acpi_bus_attach_private_data() to facilitate to attach data to ACPI handle Lan Tianyu
                       ` (8 subsequent siblings)
  10 siblings, 0 replies; 79+ messages in thread
From: Lan Tianyu @ 2014-04-28 14:27 UTC (permalink / raw)
  To: wsa, rjw, mika.westerberg, awilliam, lenb
  Cc: linux-i2c, linux-kernel, linux-acpi, tianyu.lan

The acpi_buffer_to_resource is needed in i2c module
to convert aml buffer to struct acpi_resource

Reviewed-by: Mika Westerberg <mika.westerberg@linux.intel.com>
Signed-off-by: Lan Tianyu <tianyu.lan@intel.com>
---
 drivers/acpi/acpica/rscreate.c | 1 +
 1 file changed, 1 insertion(+)

diff --git a/drivers/acpi/acpica/rscreate.c b/drivers/acpi/acpica/rscreate.c
index 75d3690..5828649 100644
--- a/drivers/acpi/acpica/rscreate.c
+++ b/drivers/acpi/acpica/rscreate.c
@@ -112,6 +112,7 @@ acpi_buffer_to_resource(u8 *aml_buffer,
 
 	return (status);
 }
+ACPI_EXPORT_SYMBOL(acpi_buffer_to_resource);
 
 /*******************************************************************************
  *
-- 
1.8.3.1


^ permalink raw reply related	[flat|nested] 79+ messages in thread

* [Patch V2 3/9] ACPI: Add acpi_bus_attach_private_data() to facilitate to attach data to ACPI handle
  2014-04-28 14:27   ` [Patch V2 " Lan Tianyu
  2014-04-28 14:27     ` [Patch V2 1/9] ACPICA: Executer: Fix buffer allocation issue for generic_serial_bus region field accesses Lan Tianyu
  2014-04-28 14:27     ` [Patch V2 2/9] ACPICA: Export acpi_buffer_to_resource symbol Lan Tianyu
@ 2014-04-28 14:27     ` Lan Tianyu
  2014-04-28 14:27     ` [Patch V2 4/9] ACPI/Thermal: Use acpi_bus_attach_private_data() to attach private data Lan Tianyu
                       ` (7 subsequent siblings)
  10 siblings, 0 replies; 79+ messages in thread
From: Lan Tianyu @ 2014-04-28 14:27 UTC (permalink / raw)
  To: wsa, rjw, mika.westerberg, awilliam, lenb
  Cc: linux-i2c, linux-kernel, linux-acpi, tianyu.lan

There is already acpi_bus_get_private_data() to get ACPI handle data
which is associated with acpi_bus_private_data_handler(). This patch
is to add acpi_bus_attach_private_data() to make a pair and facilitate
to attach and get data to/from ACPI handle.

Reviewed-by: Mika Westerberg <mika.westerberg@linux.intel.com>
Signed-off-by: Lan Tianyu <tianyu.lan@intel.com>
---
 drivers/acpi/bus.c      | 18 +++++++++++++++++-
 include/acpi/acpi_bus.h |  1 +
 2 files changed, 18 insertions(+), 1 deletion(-)

diff --git a/drivers/acpi/bus.c b/drivers/acpi/bus.c
index e7e5844..4ed8d48 100644
--- a/drivers/acpi/bus.c
+++ b/drivers/acpi/bus.c
@@ -132,6 +132,22 @@ void acpi_bus_private_data_handler(acpi_handle handle,
 }
 EXPORT_SYMBOL(acpi_bus_private_data_handler);
 
+int acpi_bus_attach_private_data(acpi_handle handle, void *data)
+{
+	acpi_status status;
+
+	status = acpi_attach_data(handle,
+			acpi_bus_private_data_handler, data);
+	if (ACPI_FAILURE(status)) {
+		ACPI_ERROR((AE_INFO, "Error attaching device[%p] data\n",
+				handle));
+		return -ENODEV;
+	}
+
+	return 0;
+}
+EXPORT_SYMBOL(acpi_bus_attach_private_data);
+
 int acpi_bus_get_private_data(acpi_handle handle, void **data)
 {
 	acpi_status status;
@@ -141,7 +157,7 @@ int acpi_bus_get_private_data(acpi_handle handle, void **data)
 
 	status = acpi_get_data(handle, acpi_bus_private_data_handler, data);
 	if (ACPI_FAILURE(status) || !*data) {
-		ACPI_DEBUG_PRINT((ACPI_DB_INFO, "No context for object [%p]\n",
+		ACPI_ERROR((AE_INFO, "No context for object [%p]\n",
 				handle));
 		return -ENODEV;
 	}
diff --git a/include/acpi/acpi_bus.h b/include/acpi/acpi_bus.h
index 84a2e29..a1f6fec 100644
--- a/include/acpi/acpi_bus.h
+++ b/include/acpi/acpi_bus.h
@@ -406,6 +406,7 @@ extern struct kobject *acpi_kobj;
 extern int acpi_bus_generate_netlink_event(const char*, const char*, u8, int);
 void acpi_bus_private_data_handler(acpi_handle, void *);
 int acpi_bus_get_private_data(acpi_handle, void **);
+int acpi_bus_attach_private_data(acpi_handle, void *);
 void acpi_bus_no_hotplug(acpi_handle handle);
 extern int acpi_notifier_call_chain(struct acpi_device *, u32, u32);
 extern int register_acpi_notifier(struct notifier_block *);
-- 
1.8.3.1


^ permalink raw reply related	[flat|nested] 79+ messages in thread

* [Patch V2 4/9] ACPI/Thermal: Use acpi_bus_attach_private_data() to attach private data
  2014-04-28 14:27   ` [Patch V2 " Lan Tianyu
                       ` (2 preceding siblings ...)
  2014-04-28 14:27     ` [Patch V2 3/9] ACPI: Add acpi_bus_attach_private_data() to facilitate to attach data to ACPI handle Lan Tianyu
@ 2014-04-28 14:27     ` Lan Tianyu
  2014-04-28 14:27     ` [Patch V2 5/9] I2C: Add smbus quick read/write helper function Lan Tianyu
                       ` (6 subsequent siblings)
  10 siblings, 0 replies; 79+ messages in thread
From: Lan Tianyu @ 2014-04-28 14:27 UTC (permalink / raw)
  To: wsa, rjw, mika.westerberg, awilliam, lenb
  Cc: linux-i2c, linux-kernel, linux-acpi, tianyu.lan

Use acpi_bus_attach_private_data() to attach private data
instead of acpi_attach_data().

Reviewed-by: Mika Westerberg <mika.westerberg@linux.intel.com>
Signed-off-by: Lan Tianyu <tianyu.lan@intel.com>
---
 drivers/acpi/thermal.c | 9 +++------
 1 file changed, 3 insertions(+), 6 deletions(-)

diff --git a/drivers/acpi/thermal.c b/drivers/acpi/thermal.c
index c1e31a4..7ab9392 100644
--- a/drivers/acpi/thermal.c
+++ b/drivers/acpi/thermal.c
@@ -925,13 +925,10 @@ static int acpi_thermal_register_thermal_zone(struct acpi_thermal *tz)
 	if (result)
 		return result;
 
-	status = acpi_attach_data(tz->device->handle,
-				  acpi_bus_private_data_handler,
-				  tz->thermal_zone);
-	if (ACPI_FAILURE(status)) {
-		pr_err(PREFIX "Error attaching device data\n");
+	status =  acpi_bus_attach_private_data(tz->device->handle,
+					       tz->thermal_zone);
+	if (ACPI_FAILURE(status))
 		return -ENODEV;
-	}
 
 	tz->tz_enabled = 1;
 
-- 
1.8.3.1


^ permalink raw reply related	[flat|nested] 79+ messages in thread

* [Patch V2 5/9] I2C: Add smbus quick read/write helper function
  2014-04-28 14:27   ` [Patch V2 " Lan Tianyu
                       ` (3 preceding siblings ...)
  2014-04-28 14:27     ` [Patch V2 4/9] ACPI/Thermal: Use acpi_bus_attach_private_data() to attach private data Lan Tianyu
@ 2014-04-28 14:27     ` Lan Tianyu
  2014-05-17  9:41       ` Wolfram Sang
  2014-04-28 14:27     ` [Patch V2 6/9] I2C: Add smbus word/block process call " Lan Tianyu
                       ` (5 subsequent siblings)
  10 siblings, 1 reply; 79+ messages in thread
From: Lan Tianyu @ 2014-04-28 14:27 UTC (permalink / raw)
  To: wsa, rjw, mika.westerberg, awilliam, lenb
  Cc: linux-i2c, linux-kernel, linux-acpi, tianyu.lan

Add i2c_smbus_quick_write/read() helper function. These will be used
in the implementation of i2c ACPI address space handler.

Reviewed-by: Mika Westerberg <mika.westerberg@linux.intel.com>
Signed-off-by: Lan Tianyu <tianyu.lan@intel.com>
---
 drivers/i2c/i2c-core.c | 30 ++++++++++++++++++++++++++++++
 include/linux/i2c.h    |  2 ++
 2 files changed, 32 insertions(+)

diff --git a/drivers/i2c/i2c-core.c b/drivers/i2c/i2c-core.c
index 7c7f4b8..3bf0048 100644
--- a/drivers/i2c/i2c-core.c
+++ b/drivers/i2c/i2c-core.c
@@ -2162,6 +2162,36 @@ static int i2c_smbus_check_pec(u8 cpec, struct i2c_msg *msg)
 }
 
 /**
+ * i2c_smbus_quick_write - SMBus "quick write" protocol
+ * @client: Handle to slave device
+ *
+ * This executes the SMBus "quick write" protocol, returning negative errno
+ * else zero on success.
+ */
+s32 i2c_smbus_quick_write(const struct i2c_client *client)
+{
+	return i2c_smbus_xfer(client->adapter, client->addr, client->flags,
+				I2C_SMBUS_WRITE, 0,
+				I2C_SMBUS_QUICK, NULL);
+}
+EXPORT_SYMBOL_GPL(i2c_smbus_quick_write);
+
+/**
+ * i2c_smbus_quick_read - SMBus "quick read" protocol
+ * @client: Handle to slave device
+ *
+ * This executes the SMBus "quick read" protocol, returning negative errno
+ * else zero on success.
+ */
+s32 i2c_smbus_quick_read(const struct i2c_client *client)
+{
+	return i2c_smbus_xfer(client->adapter, client->addr, client->flags,
+				I2C_SMBUS_READ, 0,
+				I2C_SMBUS_QUICK, NULL);
+}
+EXPORT_SYMBOL_GPL(i2c_smbus_quick_read);
+
+/**
  * i2c_smbus_read_byte - SMBus "receive byte" protocol
  * @client: Handle to slave device
  *
diff --git a/include/linux/i2c.h b/include/linux/i2c.h
index b556e0a..3e6ea90 100644
--- a/include/linux/i2c.h
+++ b/include/linux/i2c.h
@@ -82,6 +82,8 @@ extern s32 i2c_smbus_xfer(struct i2c_adapter *adapter, u16 addr,
 /* Now follow the 'nice' access routines. These also document the calling
    conventions of i2c_smbus_xfer. */
 
+extern s32 i2c_smbus_quick_write(const struct i2c_client *client);
+extern s32 i2c_smbus_quick_read(const struct i2c_client *client);
 extern s32 i2c_smbus_read_byte(const struct i2c_client *client);
 extern s32 i2c_smbus_write_byte(const struct i2c_client *client, u8 value);
 extern s32 i2c_smbus_read_byte_data(const struct i2c_client *client,
-- 
1.8.3.1


^ permalink raw reply related	[flat|nested] 79+ messages in thread

* [Patch V2 6/9] I2C: Add smbus word/block process call helper function
  2014-04-28 14:27   ` [Patch V2 " Lan Tianyu
                       ` (4 preceding siblings ...)
  2014-04-28 14:27     ` [Patch V2 5/9] I2C: Add smbus quick read/write helper function Lan Tianyu
@ 2014-04-28 14:27     ` Lan Tianyu
  2014-05-17 10:21       ` Wolfram Sang
  2014-04-28 14:27     ` [Patch V2 7/9] I2C/ACPI: Add i2c ACPI operation region support Lan Tianyu
                       ` (4 subsequent siblings)
  10 siblings, 1 reply; 79+ messages in thread
From: Lan Tianyu @ 2014-04-28 14:27 UTC (permalink / raw)
  To: wsa, rjw, mika.westerberg, awilliam, lenb
  Cc: linux-i2c, linux-kernel, linux-acpi, tianyu.lan

Add i2c_smbus_word/block_proc_call() helper function. These will be used
in the implementation of i2c ACPI address space handler.

Reviewed-by: Mika Westerberg <mika.westerberg@linux.intel.com>
Signed-off-by: Lan Tianyu <tianyu.lan@intel.com>
---
 drivers/i2c/i2c-core.c | 56 ++++++++++++++++++++++++++++++++++++++++++++++++++
 include/linux/i2c.h    |  4 ++++
 2 files changed, 60 insertions(+)

diff --git a/drivers/i2c/i2c-core.c b/drivers/i2c/i2c-core.c
index 3bf0048..638befd 100644
--- a/drivers/i2c/i2c-core.c
+++ b/drivers/i2c/i2c-core.c
@@ -2306,6 +2306,30 @@ s32 i2c_smbus_write_word_data(const struct i2c_client *client, u8 command,
 EXPORT_SYMBOL(i2c_smbus_write_word_data);
 
 /**
+ * i2c_smbus_word_proc_call - SMBus "word proc call" protocol
+ * @client: Handle to slave device
+ * @command: Byte interpreted by slave
+ * @value: 16-bit "word" being written
+ *
+ * This executes the SMBus "word proc all" protocol, returning negative errno
+ * else a 16-bit unsigned "word" received from the device.
+ */
+s32 i2c_smbus_word_proc_call(const struct i2c_client *client, u8 command,
+			      u16 value)
+{
+	union i2c_smbus_data data;
+	int status;
+
+	data.word = value;
+	status = i2c_smbus_xfer(client->adapter, client->addr, client->flags,
+			      I2C_SMBUS_READ, command,
+			      I2C_SMBUS_PROC_CALL, &data);
+
+	return (status < 0) ? status : data.word;
+}
+EXPORT_SYMBOL(i2c_smbus_word_proc_call);
+
+/**
  * i2c_smbus_read_block_data - SMBus "block read" protocol
  * @client: Handle to slave device
  * @command: Byte interpreted by slave
@@ -2362,6 +2386,38 @@ s32 i2c_smbus_write_block_data(const struct i2c_client *client, u8 command,
 }
 EXPORT_SYMBOL(i2c_smbus_write_block_data);
 
+/**
+ * i2c_smbus_block_proc_call - SMBus "block write" protocol
+ * @client: Handle to slave device
+ * @command: Byte interpreted by slave
+ * @length: Size of data block; SMBus allows at most 32 bytes
+ * @values: Byte array which will be written.
+ *
+ * This executes the SMBus "block proc call" protocol, returning negative errno
+ * else the number of read bytes.
+ */
+s32 i2c_smbus_block_proc_call(const struct i2c_client *client, u8 command,
+			       u8 length, u8 *values)
+{
+	union i2c_smbus_data data;
+	int status;
+
+	if (length > I2C_SMBUS_BLOCK_MAX)
+		length = I2C_SMBUS_BLOCK_MAX;
+	data.block[0] = length;
+	memcpy(&data.block[1], values, length);
+	status = i2c_smbus_xfer(client->adapter, client->addr, client->flags,
+			      I2C_SMBUS_READ, command,
+			      I2C_SMBUS_BLOCK_PROC_CALL, &data);
+
+	if (status < 0)
+		return status;
+
+	memcpy(values, &data.block[1], data.block[0]);
+	return data.block[0];
+}
+EXPORT_SYMBOL(i2c_smbus_block_proc_call);
+
 /* Returns the number of read bytes */
 s32 i2c_smbus_read_i2c_block_data(const struct i2c_client *client, u8 command,
 				  u8 length, u8 *values)
diff --git a/include/linux/i2c.h b/include/linux/i2c.h
index 3e6ea90..724440a 100644
--- a/include/linux/i2c.h
+++ b/include/linux/i2c.h
@@ -94,6 +94,10 @@ extern s32 i2c_smbus_read_word_data(const struct i2c_client *client,
 				    u8 command);
 extern s32 i2c_smbus_write_word_data(const struct i2c_client *client,
 				     u8 command, u16 value);
+extern s32 i2c_smbus_word_proc_call(const struct i2c_client *client,
+				    u8 command, u16 value);
+extern s32 i2c_smbus_block_proc_call(const struct i2c_client *client,
+				u8 command, u8 length, u8 *values);
 
 static inline s32
 i2c_smbus_read_word_swapped(const struct i2c_client *client, u8 command)
-- 
1.8.3.1


^ permalink raw reply related	[flat|nested] 79+ messages in thread

* [Patch V2 7/9] I2C/ACPI: Add i2c ACPI operation region support
  2014-04-28 14:27   ` [Patch V2 " Lan Tianyu
                       ` (5 preceding siblings ...)
  2014-04-28 14:27     ` [Patch V2 6/9] I2C: Add smbus word/block process call " Lan Tianyu
@ 2014-04-28 14:27     ` Lan Tianyu
  2014-04-29  8:02       ` Mika Westerberg
  2014-04-28 14:27     ` [Patch V2 8/9] I2C/ACPI: Move ACPI related code to i2c-acpi.c Lan Tianyu
                       ` (3 subsequent siblings)
  10 siblings, 1 reply; 79+ messages in thread
From: Lan Tianyu @ 2014-04-28 14:27 UTC (permalink / raw)
  To: wsa, rjw, mika.westerberg, awilliam, lenb
  Cc: linux-i2c, linux-kernel, linux-acpi, tianyu.lan

ACPI 5.0 spec(5.5.2.4.5) defines GenericSerialBus(i2c, spi, uart) operation region.
It allows ACPI aml code able to access such kind of devices to implement
some ACPI standard method.

ACPI Spec defines some access attribute to associate with i2c protocol.
AttribQuick 	       	       		Read/Write Quick Protocol
AttribSendReceive			Send/Receive Byte Protocol
AttribByte 			 	Read/Write Byte Protocol
AttribWord				Read/Write Word Protocol
AttribBlock				Read/Write Block Protocol
AttribBytes				Read/Write N-Bytes Protocol
AttribProcessCall			Process Call Protocol
AttribBlockProcessCall			Write Block-Read Block Process Call Protocol
AttribRawBytes 				Raw Read/Write N-BytesProtocol
AttribRawProcessBytes			Raw Process Call Protocol

On the Asus T100TA, Bios use GenericSerialBus operation region to access
i2c device to get battery info.

Sample code From Asus T100TA

    Scope (_SB.I2C1)
    {
        Name (UMPC, ResourceTemplate ()
        {
            I2cSerialBus (0x0066, ControllerInitiated, 0x00061A80,
                AddressingMode7Bit, "\\_SB.I2C1",
                0x00, ResourceConsumer, ,
                )
        })

	...

        OperationRegion (DVUM, GenericSerialBus, Zero, 0x0100)
        Field (DVUM, BufferAcc, NoLock, Preserve)
        {
            Connection (UMPC),
            Offset (0x81),
            AccessAs (BufferAcc, AttribBytes (0x3E)),
            FGC0,   8
        }
	...
     }

     Device (BATC)
     {
         Name (_HID, EisaId ("PNP0C0A"))  // _HID: Hardware ID
         Name (_UID, One)  // _UID: Unique ID
	 ...

            Method (_BST, 0, NotSerialized)  // _BST: Battery Status
            {
                If (LEqual (AVBL, One))
                {
                    Store (FGC0, BFFG)
                    If (LNotEqual (STAT, One))
                    {
                        ShiftRight (CHST, 0x04, Local0)
                        And (Local0, 0x03, Local0)
                        If (LOr (LEqual (Local0, One), LEqual (Local0, 0x02)))
                        {
                            Store (0x02, Local1)
                        }
	...

    }

The i2c operation region is defined under I2C1 scope. _BST method under
battery device BATC read battery status from the field "FCG0". The request
would be sent to i2c operation region handler.

This patch is to add i2c ACPI operation region support. Due to there are
only "Byte" and "Bytes" protocol access on the Asus T100TA, other protocols
have not been tested.

About RawBytes and RawProcessBytes protocol, they needs specific drivers to interpret
reference data from AML code according ACPI 5.0 SPEC(5.5.2.4.5.3.9 and 5.5.2.4.5.3.10).
So far, not found such case and will add when find real case.

Signed-off-by: Lan Tianyu <tianyu.lan@intel.com>
---
 drivers/i2c/Makefile   |   5 +-
 drivers/i2c/i2c-acpi.c | 295 +++++++++++++++++++++++++++++++++++++++++++++++++
 drivers/i2c/i2c-core.c |   2 +
 include/linux/acpi.h   |  11 ++
 include/linux/i2c.h    |  10 ++
 5 files changed, 322 insertions(+), 1 deletion(-)
 create mode 100644 drivers/i2c/i2c-acpi.c

diff --git a/drivers/i2c/Makefile b/drivers/i2c/Makefile
index 1722f50..80db307 100644
--- a/drivers/i2c/Makefile
+++ b/drivers/i2c/Makefile
@@ -2,8 +2,11 @@
 # Makefile for the i2c core.
 #
 
+i2ccore-y := i2c-core.o
+i2ccore-$(CONFIG_ACPI)		+= i2c-acpi.o
+
 obj-$(CONFIG_I2C_BOARDINFO)	+= i2c-boardinfo.o
-obj-$(CONFIG_I2C)		+= i2c-core.o
+obj-$(CONFIG_I2C)		+= i2ccore.o
 obj-$(CONFIG_I2C_SMBUS)		+= i2c-smbus.o
 obj-$(CONFIG_I2C_CHARDEV)	+= i2c-dev.o
 obj-$(CONFIG_I2C_MUX)		+= i2c-mux.o
diff --git a/drivers/i2c/i2c-acpi.c b/drivers/i2c/i2c-acpi.c
new file mode 100644
index 0000000..ab0272e
--- /dev/null
+++ b/drivers/i2c/i2c-acpi.c
@@ -0,0 +1,295 @@
+/*
+ * I2C ACPI code
+ *
+ * Copyright (C) 2014 Intel Corp
+ *
+ * Author: Lan Tianyu <tianyu.lan@intel.com>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+ * or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * for more details.
+ */
+#define pr_fmt(fmt) "I2C/ACPI : " fmt
+
+#include <linux/kernel.h>
+#include <linux/errno.h>
+#include <linux/err.h>
+#include <linux/i2c.h>
+#include <linux/acpi.h>
+
+struct acpi_i2c_handler_data {
+	struct acpi_connection_info info;
+	struct i2c_adapter *adapter;
+};
+
+struct gsb_buffer {
+	u8	status;
+	u8	len;
+	union {
+		u16	wdata;
+		u8	bdata;
+		u8	data[0];
+	};
+} __packed;
+
+static int acpi_gsb_i2c_read_bytes(struct i2c_client *client,
+		u8 cmd, u8 *data, u8 data_len)
+{
+
+	struct i2c_msg msgs[2];
+	int ret;
+	u8 *buffer;
+
+	buffer = kzalloc(data_len, GFP_KERNEL);
+	if (!buffer)
+		return AE_NO_MEMORY;
+
+	msgs[0].addr = client->addr;
+	msgs[0].flags = client->flags;
+	msgs[0].len = 1;
+	msgs[0].buf = &cmd;
+
+	msgs[1].addr = client->addr;
+	msgs[1].flags = client->flags | I2C_M_RD;
+	msgs[1].len = data_len;
+	msgs[1].buf = buffer;
+
+	ret = i2c_transfer(client->adapter, msgs, ARRAY_SIZE(msgs));
+	if (ret < 0)
+		dev_err(&client->adapter->dev, "i2c read failed\n");
+	else
+		memcpy(data, buffer, data_len);
+
+	kfree(buffer);
+	return ret;
+}
+
+static int acpi_gsb_i2c_write_bytes(struct i2c_client *client,
+		u8 cmd, u8 *data, u8 data_len)
+{
+
+	struct i2c_msg msgs[1];
+	u8 *buffer;
+	int ret = AE_OK;
+
+	buffer = kzalloc(data_len + 1, GFP_KERNEL);
+	if (!buffer)
+		return AE_NO_MEMORY;
+
+	buffer[0] = cmd;
+	memcpy(buffer + 1, data, data_len);
+
+	msgs[0].addr = client->addr;
+	msgs[0].flags = client->flags;
+	msgs[0].len = data_len + 1;
+	msgs[0].buf = buffer;
+
+	ret = i2c_transfer(client->adapter, msgs, ARRAY_SIZE(msgs));
+	if (ret < 0)
+		dev_err(&client->adapter->dev, "i2c write failed\n");
+
+	kfree(buffer);
+	return ret;
+}
+
+static acpi_status
+acpi_i2c_space_handler(u32 function, acpi_physical_address command,
+			u32 bits, u64 *value64,
+			void *handler_context, void *region_context)
+{
+	struct gsb_buffer *gsb = (struct gsb_buffer *)value64;
+	struct acpi_i2c_handler_data *data = handler_context;
+	struct acpi_connection_info *info = &data->info;
+	struct acpi_resource_i2c_serialbus *sb;
+	struct i2c_adapter *adapter = data->adapter;
+	struct i2c_client client;
+	struct acpi_resource *ares;
+	u32 accessor_type = function >> 16;
+	u8 action = function & ACPI_IO_MASK;
+	acpi_status ret = AE_OK;
+	int status;
+
+	ret = acpi_buffer_to_resource(info->connection, info->length, &ares);
+	if (ACPI_FAILURE(ret))
+		return ret;
+
+	if (!value64 || ares->type != ACPI_RESOURCE_TYPE_SERIAL_BUS) {
+		ret = AE_BAD_PARAMETER;
+		goto err;
+	}
+
+	sb = &ares->data.i2c_serial_bus;
+	if (sb->type != ACPI_RESOURCE_SERIAL_TYPE_I2C) {
+		ret = AE_BAD_PARAMETER;
+		goto err;
+	}
+
+	memset(&client, 0, sizeof(client));
+	client.adapter = adapter;
+	client.addr = sb->slave_address;
+	client.flags = 0;
+
+	if (sb->access_mode == ACPI_I2C_10BIT_MODE)
+		client.flags |= I2C_CLIENT_TEN;
+
+	switch (accessor_type) {
+	case ACPI_GSB_ACCESS_ATTRIB_QUICK:
+		if (action == ACPI_READ)
+			status = i2c_smbus_quick_read(&client);
+		else
+			status = i2c_smbus_quick_write(&client);
+		break;
+
+	case ACPI_GSB_ACCESS_ATTRIB_SEND_RCV:
+		if (action == ACPI_READ) {
+			status = i2c_smbus_read_byte(&client);
+			if (status >= 0) {
+				gsb->bdata = status;
+				status = 0;
+			}
+		} else {
+			status = i2c_smbus_write_byte(&client, gsb->bdata);
+		}
+		break;
+
+	case ACPI_GSB_ACCESS_ATTRIB_BYTE:
+		if (action == ACPI_READ) {
+			status = i2c_smbus_read_byte_data(&client, command);
+			if (status >= 0) {
+				gsb->bdata = status;
+				status = 0;
+			}
+		} else {
+			status = i2c_smbus_write_byte_data(&client, command,
+					gsb->bdata);
+		}
+		break;
+
+	case ACPI_GSB_ACCESS_ATTRIB_WORD:
+		if (action == ACPI_READ) {
+			status = i2c_smbus_read_word_data(&client, command);
+			if (status >= 0) {
+				gsb->wdata = status;
+				status = 0;
+			}
+		} else {
+			status = i2c_smbus_write_word_data(&client, command,
+					gsb->wdata);
+		}
+		break;
+
+	case ACPI_GSB_ACCESS_ATTRIB_BLOCK:
+		if (action == ACPI_READ) {
+			status = i2c_smbus_read_block_data(&client, command,
+					gsb->data);
+			if (status >= 0) {
+				gsb->len = status;
+				status = 0;
+			}
+		} else {
+			status = i2c_smbus_write_block_data(&client, command,
+					gsb->len, gsb->data);
+		}
+		break;
+
+	case ACPI_GSB_ACCESS_ATTRIB_MULTIBYTE:
+		if (action == ACPI_READ) {
+			status = acpi_gsb_i2c_read_bytes(&client, command,
+					gsb->data, info->access_length);
+			if (status > 0)
+				status = 0;
+		} else {
+			status = acpi_gsb_i2c_write_bytes(&client, command,
+					gsb->data, info->access_length);
+		}
+		break;
+
+	case ACPI_GSB_ACCESS_ATTRIB_WORD_CALL:
+		status = i2c_smbus_word_proc_call(&client, command, gsb->wdata);
+		if (status >= 0) {
+			gsb->wdata = status;
+			status = 0;
+		}
+		break;
+
+	case ACPI_GSB_ACCESS_ATTRIB_BLOCK_CALL:
+		status = i2c_smbus_block_proc_call(&client, command, gsb->len,
+				gsb->data);
+		if (status > 0) {
+			gsb->len = status;
+			status = 0;
+		}
+		break;
+
+	default:
+		pr_info("protocol(0x%02x) is not supported.\n", accessor_type);
+		ret = AE_BAD_PARAMETER;
+		goto err;
+	}
+
+	gsb->status = status;
+
+ err:
+	ACPI_FREE(ares);
+	return ret;
+}
+
+
+int acpi_i2c_install_space_handler(struct i2c_adapter *adapter)
+{
+	acpi_handle handle = ACPI_HANDLE(adapter->dev.parent);
+	struct acpi_i2c_handler_data *data;
+	acpi_status status;
+
+	if (!handle)
+		return -ENODEV;
+
+	data = kzalloc(sizeof(struct acpi_i2c_handler_data),
+			    GFP_KERNEL);
+	if (!data)
+		return -ENOMEM;
+
+	data->adapter = adapter;
+	status = acpi_bus_attach_private_data(handle, (void *)data);
+	if (ACPI_FAILURE(status)) {
+		kfree(data);
+		return -ENOMEM;
+	}
+
+	status = acpi_install_address_space_handler(handle,
+				ACPI_ADR_SPACE_GSBUS,
+				&acpi_i2c_space_handler,
+				NULL,
+				data);
+	if (ACPI_FAILURE(status)) {
+		dev_err(&adapter->dev, "Error installing i2c space handler\n");
+		acpi_bus_attach_private_data(handle, NULL);
+		kfree(data);
+		return -ENOMEM;
+	}
+
+	return 0;
+}
+
+void acpi_i2c_remove_space_handler(struct i2c_adapter *adapter)
+{
+	acpi_handle handle = ACPI_HANDLE(adapter->dev.parent);
+	struct acpi_i2c_handler_data *data;
+	acpi_status status;
+
+	if (!handle)
+		return;
+
+	acpi_remove_address_space_handler(handle,
+				ACPI_ADR_SPACE_GSBUS,
+				&acpi_i2c_space_handler);
+
+	status = acpi_bus_get_private_data(handle, (void **)&data);
+	if (ACPI_SUCCESS(status))
+		kfree(data);
+}
diff --git a/drivers/i2c/i2c-core.c b/drivers/i2c/i2c-core.c
index 638befd..bb9dc56 100644
--- a/drivers/i2c/i2c-core.c
+++ b/drivers/i2c/i2c-core.c
@@ -1293,6 +1293,7 @@ exit_recovery:
 	/* create pre-declared device nodes */
 	of_i2c_register_devices(adap);
 	acpi_i2c_register_devices(adap);
+	acpi_i2c_install_space_handler(adap);
 
 	if (adap->nr < __i2c_first_dynamic_bus_num)
 		i2c_scan_static_board_info(adap);
@@ -1466,6 +1467,7 @@ void i2c_del_adapter(struct i2c_adapter *adap)
 		return;
 	}
 
+	acpi_i2c_remove_space_handler(adap);
 	/* Tell drivers about this removal */
 	mutex_lock(&core_lock);
 	bus_for_each_drv(&i2c_bus_type, NULL, adap,
diff --git a/include/linux/acpi.h b/include/linux/acpi.h
index 7a8f2cd..ea53b9b 100644
--- a/include/linux/acpi.h
+++ b/include/linux/acpi.h
@@ -361,6 +361,17 @@ extern bool osc_sb_apei_support_acked;
 #define OSC_PCI_EXPRESS_CAPABILITY_CONTROL	0x00000010
 #define OSC_PCI_CONTROL_MASKS			0x0000001f
 
+#define ACPI_GSB_ACCESS_ATTRIB_QUICK		0x00000002
+#define ACPI_GSB_ACCESS_ATTRIB_SEND_RCV         0x00000004
+#define ACPI_GSB_ACCESS_ATTRIB_BYTE		0x00000006
+#define ACPI_GSB_ACCESS_ATTRIB_WORD		0x00000008
+#define ACPI_GSB_ACCESS_ATTRIB_BLOCK		0x0000000A
+#define ACPI_GSB_ACCESS_ATTRIB_MULTIBYTE	0x0000000B
+#define ACPI_GSB_ACCESS_ATTRIB_WORD_CALL	0x0000000C
+#define ACPI_GSB_ACCESS_ATTRIB_BLOCK_CALL	0x0000000D
+#define ACPI_GSB_ACCESS_ATTRIB_RAW_BYTES	0x0000000E
+#define ACPI_GSB_ACCESS_ATTRIB_RAW_PROCESS	0x0000000F
+
 extern acpi_status acpi_pci_osc_control_set(acpi_handle handle,
 					     u32 *mask, u32 req);
 
diff --git a/include/linux/i2c.h b/include/linux/i2c.h
index 724440a..681e689 100644
--- a/include/linux/i2c.h
+++ b/include/linux/i2c.h
@@ -583,4 +583,14 @@ static inline struct i2c_adapter *of_find_i2c_adapter_by_node(struct device_node
 }
 #endif /* CONFIG_OF */
 
+#ifdef CONFIG_ACPI
+int acpi_i2c_install_space_handler(struct i2c_adapter *adapter);
+void acpi_i2c_remove_space_handler(struct i2c_adapter *adapter);
+#else
+static inline void acpi_i2c_remove_space_handler(struct i2c_adapter *adapter)
+{ }
+static inline int acpi_i2c_install_space_handler(struct i2c_adapter *adapter)
+{ return 0; }
+#endif
+
 #endif /* _LINUX_I2C_H */
-- 
1.8.3.1


^ permalink raw reply related	[flat|nested] 79+ messages in thread

* [Patch V2 8/9] I2C/ACPI: Move ACPI related code to i2c-acpi.c
  2014-04-28 14:27   ` [Patch V2 " Lan Tianyu
                       ` (6 preceding siblings ...)
  2014-04-28 14:27     ` [Patch V2 7/9] I2C/ACPI: Add i2c ACPI operation region support Lan Tianyu
@ 2014-04-28 14:27     ` Lan Tianyu
  2014-04-28 14:27     ` [Patch V2 9/9] I2C/ACPI: Add CONFIG_I2C_ACPI config Lan Tianyu
                       ` (2 subsequent siblings)
  10 siblings, 0 replies; 79+ messages in thread
From: Lan Tianyu @ 2014-04-28 14:27 UTC (permalink / raw)
  To: wsa, rjw, mika.westerberg, awilliam, lenb
  Cc: linux-i2c, linux-kernel, linux-acpi, tianyu.lan

Clean up ACPI related code in the i2c core.

Reviewed-by: Mika Westerberg <mika.westerberg@linux.intel.com>
Signed-off-by: Lan Tianyu <tianyu.lan@intel.com>
---
 drivers/i2c/i2c-acpi.c | 89 ++++++++++++++++++++++++++++++++++++++++++++++
 drivers/i2c/i2c-core.c | 95 --------------------------------------------------
 include/linux/i2c.h    |  2 ++
 3 files changed, 91 insertions(+), 95 deletions(-)

diff --git a/drivers/i2c/i2c-acpi.c b/drivers/i2c/i2c-acpi.c
index ab0272e..e2ad72d 100644
--- a/drivers/i2c/i2c-acpi.c
+++ b/drivers/i2c/i2c-acpi.c
@@ -37,6 +37,95 @@ struct gsb_buffer {
 	};
 } __packed;
 
+static int acpi_i2c_add_resource(struct acpi_resource *ares, void *data)
+{
+	struct i2c_board_info *info = data;
+
+	if (ares->type == ACPI_RESOURCE_TYPE_SERIAL_BUS) {
+		struct acpi_resource_i2c_serialbus *sb;
+
+		sb = &ares->data.i2c_serial_bus;
+		if (sb->type == ACPI_RESOURCE_SERIAL_TYPE_I2C) {
+			info->addr = sb->slave_address;
+			if (sb->access_mode == ACPI_I2C_10BIT_MODE)
+				info->flags |= I2C_CLIENT_TEN;
+		}
+	} else if (info->irq < 0) {
+		struct resource r;
+
+		if (acpi_dev_resource_interrupt(ares, 0, &r))
+			info->irq = r.start;
+	}
+
+	/* Tell the ACPI core to skip this resource */
+	return 1;
+}
+
+static acpi_status acpi_i2c_add_device(acpi_handle handle, u32 level,
+				       void *data, void **return_value)
+{
+	struct i2c_adapter *adapter = data;
+	struct list_head resource_list;
+	struct i2c_board_info info;
+	struct acpi_device *adev;
+	int ret;
+
+	if (acpi_bus_get_device(handle, &adev))
+		return AE_OK;
+	if (acpi_bus_get_status(adev) || !adev->status.present)
+		return AE_OK;
+
+	memset(&info, 0, sizeof(info));
+	info.acpi_node.companion = adev;
+	info.irq = -1;
+
+	INIT_LIST_HEAD(&resource_list);
+	ret = acpi_dev_get_resources(adev, &resource_list,
+				     acpi_i2c_add_resource, &info);
+	acpi_dev_free_resource_list(&resource_list);
+
+	if (ret < 0 || !info.addr)
+		return AE_OK;
+
+	adev->power.flags.ignore_parent = true;
+	strlcpy(info.type, dev_name(&adev->dev), sizeof(info.type));
+	if (!i2c_new_device(adapter, &info)) {
+		adev->power.flags.ignore_parent = false;
+		dev_err(&adapter->dev,
+			"failed to add I2C device %s from ACPI\n",
+			dev_name(&adev->dev));
+	}
+
+	return AE_OK;
+}
+
+/**
+ * acpi_i2c_register_devices - enumerate I2C slave devices behind adapter
+ * @adap: pointer to adapter
+ *
+ * Enumerate all I2C slave devices behind this adapter by walking the ACPI
+ * namespace. When a device is found it will be added to the Linux device
+ * model and bound to the corresponding ACPI handle.
+ */
+void acpi_i2c_register_devices(struct i2c_adapter *adap)
+{
+	acpi_handle handle;
+	acpi_status status;
+
+	if (!adap->dev.parent)
+		return;
+
+	handle = ACPI_HANDLE(adap->dev.parent);
+	if (!handle)
+		return;
+
+	status = acpi_walk_namespace(ACPI_TYPE_DEVICE, handle, 1,
+				     acpi_i2c_add_device, NULL,
+				     adap, NULL);
+	if (ACPI_FAILURE(status))
+		dev_warn(&adap->dev, "failed to enumerate I2C slaves\n");
+}
+
 static int acpi_gsb_i2c_read_bytes(struct i2c_client *client,
 		u8 cmd, u8 *data, u8 data_len)
 {
diff --git a/drivers/i2c/i2c-core.c b/drivers/i2c/i2c-core.c
index bb9dc56..9ca50c8 100644
--- a/drivers/i2c/i2c-core.c
+++ b/drivers/i2c/i2c-core.c
@@ -1092,101 +1092,6 @@ EXPORT_SYMBOL(of_find_i2c_adapter_by_node);
 static void of_i2c_register_devices(struct i2c_adapter *adap) { }
 #endif /* CONFIG_OF */
 
-/* ACPI support code */
-
-#if IS_ENABLED(CONFIG_ACPI)
-static int acpi_i2c_add_resource(struct acpi_resource *ares, void *data)
-{
-	struct i2c_board_info *info = data;
-
-	if (ares->type == ACPI_RESOURCE_TYPE_SERIAL_BUS) {
-		struct acpi_resource_i2c_serialbus *sb;
-
-		sb = &ares->data.i2c_serial_bus;
-		if (sb->type == ACPI_RESOURCE_SERIAL_TYPE_I2C) {
-			info->addr = sb->slave_address;
-			if (sb->access_mode == ACPI_I2C_10BIT_MODE)
-				info->flags |= I2C_CLIENT_TEN;
-		}
-	} else if (info->irq < 0) {
-		struct resource r;
-
-		if (acpi_dev_resource_interrupt(ares, 0, &r))
-			info->irq = r.start;
-	}
-
-	/* Tell the ACPI core to skip this resource */
-	return 1;
-}
-
-static acpi_status acpi_i2c_add_device(acpi_handle handle, u32 level,
-				       void *data, void **return_value)
-{
-	struct i2c_adapter *adapter = data;
-	struct list_head resource_list;
-	struct i2c_board_info info;
-	struct acpi_device *adev;
-	int ret;
-
-	if (acpi_bus_get_device(handle, &adev))
-		return AE_OK;
-	if (acpi_bus_get_status(adev) || !adev->status.present)
-		return AE_OK;
-
-	memset(&info, 0, sizeof(info));
-	info.acpi_node.companion = adev;
-	info.irq = -1;
-
-	INIT_LIST_HEAD(&resource_list);
-	ret = acpi_dev_get_resources(adev, &resource_list,
-				     acpi_i2c_add_resource, &info);
-	acpi_dev_free_resource_list(&resource_list);
-
-	if (ret < 0 || !info.addr)
-		return AE_OK;
-
-	adev->power.flags.ignore_parent = true;
-	strlcpy(info.type, dev_name(&adev->dev), sizeof(info.type));
-	if (!i2c_new_device(adapter, &info)) {
-		adev->power.flags.ignore_parent = false;
-		dev_err(&adapter->dev,
-			"failed to add I2C device %s from ACPI\n",
-			dev_name(&adev->dev));
-	}
-
-	return AE_OK;
-}
-
-/**
- * acpi_i2c_register_devices - enumerate I2C slave devices behind adapter
- * @adap: pointer to adapter
- *
- * Enumerate all I2C slave devices behind this adapter by walking the ACPI
- * namespace. When a device is found it will be added to the Linux device
- * model and bound to the corresponding ACPI handle.
- */
-static void acpi_i2c_register_devices(struct i2c_adapter *adap)
-{
-	acpi_handle handle;
-	acpi_status status;
-
-	if (!adap->dev.parent)
-		return;
-
-	handle = ACPI_HANDLE(adap->dev.parent);
-	if (!handle)
-		return;
-
-	status = acpi_walk_namespace(ACPI_TYPE_DEVICE, handle, 1,
-				     acpi_i2c_add_device, NULL,
-				     adap, NULL);
-	if (ACPI_FAILURE(status))
-		dev_warn(&adap->dev, "failed to enumerate I2C slaves\n");
-}
-#else
-static inline void acpi_i2c_register_devices(struct i2c_adapter *adap) {}
-#endif /* CONFIG_ACPI */
-
 static int i2c_do_add_adapter(struct i2c_driver *driver,
 			      struct i2c_adapter *adap)
 {
diff --git a/include/linux/i2c.h b/include/linux/i2c.h
index 681e689..4b6fcdb 100644
--- a/include/linux/i2c.h
+++ b/include/linux/i2c.h
@@ -586,7 +586,9 @@ static inline struct i2c_adapter *of_find_i2c_adapter_by_node(struct device_node
 #ifdef CONFIG_ACPI
 int acpi_i2c_install_space_handler(struct i2c_adapter *adapter);
 void acpi_i2c_remove_space_handler(struct i2c_adapter *adapter);
+void acpi_i2c_register_devices(struct i2c_adapter *adap);
 #else
+static inline void acpi_i2c_register_devices(struct i2c_adapter *adap) { }
 static inline void acpi_i2c_remove_space_handler(struct i2c_adapter *adapter)
 { }
 static inline int acpi_i2c_install_space_handler(struct i2c_adapter *adapter)
-- 
1.8.3.1


^ permalink raw reply related	[flat|nested] 79+ messages in thread

* [Patch V2 9/9] I2C/ACPI: Add CONFIG_I2C_ACPI config
  2014-04-28 14:27   ` [Patch V2 " Lan Tianyu
                       ` (7 preceding siblings ...)
  2014-04-28 14:27     ` [Patch V2 8/9] I2C/ACPI: Move ACPI related code to i2c-acpi.c Lan Tianyu
@ 2014-04-28 14:27     ` Lan Tianyu
  2014-04-29  8:16       ` Mika Westerberg
  2014-04-28 22:51     ` [Patch V2 0/9] I2C ACPI operation region handler support Rafael J. Wysocki
  2014-05-13 13:09     ` Rolf Eike Beer
  10 siblings, 1 reply; 79+ messages in thread
From: Lan Tianyu @ 2014-04-28 14:27 UTC (permalink / raw)
  To: wsa, rjw, mika.westerberg, awilliam, lenb
  Cc: linux-i2c, linux-kernel, linux-acpi, tianyu.lan

This patch is to add CONFIG_I2C_ACPI. Current there is a race between
removing I2C ACPI operation region and ACPI AML code accessing.
So make i2c core built-in if CONFIG_I2C_ACPI is set.

Signed-off-by: Lan Tianyu <tianyu.lan@intel.com>
---
 drivers/i2c/Kconfig  | 17 ++++++++++++++++-
 drivers/i2c/Makefile |  2 +-
 include/linux/i2c.h  |  2 +-
 3 files changed, 18 insertions(+), 3 deletions(-)

diff --git a/drivers/i2c/Kconfig b/drivers/i2c/Kconfig
index 7b7ea32..c670d49 100644
--- a/drivers/i2c/Kconfig
+++ b/drivers/i2c/Kconfig
@@ -2,7 +2,9 @@
 # I2C subsystem configuration
 #
 
-menuconfig I2C
+menu "I2C support"
+
+config I2C
 	tristate "I2C support"
 	select RT_MUTEXES
 	---help---
@@ -21,6 +23,17 @@ menuconfig I2C
 	  This I2C support can also be built as a module.  If so, the module
 	  will be called i2c-core.
 
+config I2C_ACPI
+	bool "I2C ACPI support"
+	select I2C
+	depends on ACPI
+	default y
+	help
+	  Say Y here if you want to enable I2C ACPI function. ACPI table
+	  provides I2C slave devices' information to enumerate these devices.
+	  This option also allows ACPI AML code to access I2C slave devices
+	  via I2C ACPI operation region to fulfill ACPI method.
+
 if I2C
 
 config I2C_BOARDINFO
@@ -124,3 +137,5 @@ config I2C_DEBUG_BUS
 	  on.
 
 endif # I2C
+
+endmenu
diff --git a/drivers/i2c/Makefile b/drivers/i2c/Makefile
index 80db307..37464ee 100644
--- a/drivers/i2c/Makefile
+++ b/drivers/i2c/Makefile
@@ -3,7 +3,7 @@
 #
 
 i2ccore-y := i2c-core.o
-i2ccore-$(CONFIG_ACPI)		+= i2c-acpi.o
+i2ccore-$(CONFIG_I2C_ACPI)		+= i2c-acpi.o
 
 obj-$(CONFIG_I2C_BOARDINFO)	+= i2c-boardinfo.o
 obj-$(CONFIG_I2C)		+= i2ccore.o
diff --git a/include/linux/i2c.h b/include/linux/i2c.h
index 4b6fcdb..8c2d9b5 100644
--- a/include/linux/i2c.h
+++ b/include/linux/i2c.h
@@ -583,7 +583,7 @@ static inline struct i2c_adapter *of_find_i2c_adapter_by_node(struct device_node
 }
 #endif /* CONFIG_OF */
 
-#ifdef CONFIG_ACPI
+#ifdef CONFIG_I2C_ACPI
 int acpi_i2c_install_space_handler(struct i2c_adapter *adapter);
 void acpi_i2c_remove_space_handler(struct i2c_adapter *adapter);
 void acpi_i2c_register_devices(struct i2c_adapter *adap);
-- 
1.8.3.1


^ permalink raw reply related	[flat|nested] 79+ messages in thread

* Re: [Patch V2 1/9] ACPICA: Executer: Fix buffer allocation issue for generic_serial_bus region field accesses.
  2014-04-28 14:27     ` [Patch V2 1/9] ACPICA: Executer: Fix buffer allocation issue for generic_serial_bus region field accesses Lan Tianyu
@ 2014-04-28 17:52       ` Adam Williamson
  2014-04-28 18:08         ` Adam Williamson
  0 siblings, 1 reply; 79+ messages in thread
From: Adam Williamson @ 2014-04-28 17:52 UTC (permalink / raw)
  To: Lan Tianyu
  Cc: wsa, rjw, mika.westerberg, lenb, linux-i2c, linux-kernel,
	linux-acpi, Lv Zheng

On Mon, 2014-04-28 at 22:27 +0800, Lan Tianyu wrote:
> From: Lv Zheng <lv.zheng@intel.com>
> 
> The size of the buffer allocated for generic_serial_bus region access
> is not correct.  This patch introduces acpi_ex_get_serial_access_length()
> to be invoked to obtain correct data buffer length.  Reported by
> Lan Tianyu, Fixed by Lv Zheng.
> 
> Reviewed-by: Mika Westerberg <mika.westerberg@linux.intel.com>
> Signed-off-by: Lv Zheng <lv.zheng@intel.com>
> Signed-off-by: Lan Tianyu <tianyu.lan@intel.com>

Very superficial issue, and sorry I forgot to mention it for v1, but the
summary line for this patch (1/9) ends with a period - "...region field
accesses." - which I think is not the correct style?
-- 
Adam Williamson
Fedora QA Community Monkey
IRC: adamw | Twitter: AdamW_Fedora | XMPP: adamw AT happyassassin . net
http://www.happyassassin.net


^ permalink raw reply	[flat|nested] 79+ messages in thread

* Re: [Patch V2 1/9] ACPICA: Executer: Fix buffer allocation issue for generic_serial_bus region field accesses.
  2014-04-28 17:52       ` Adam Williamson
@ 2014-04-28 18:08         ` Adam Williamson
  2014-04-28 22:50           ` Rafael J. Wysocki
  0 siblings, 1 reply; 79+ messages in thread
From: Adam Williamson @ 2014-04-28 18:08 UTC (permalink / raw)
  To: Lan Tianyu
  Cc: wsa, rjw, mika.westerberg, lenb, linux-i2c, linux-kernel,
	linux-acpi, Lv Zheng

On Mon, 2014-04-28 at 10:52 -0700, Adam Williamson wrote:
> On Mon, 2014-04-28 at 22:27 +0800, Lan Tianyu wrote:
> > From: Lv Zheng <lv.zheng@intel.com>
> > 
> > The size of the buffer allocated for generic_serial_bus region access
> > is not correct.  This patch introduces acpi_ex_get_serial_access_length()
> > to be invoked to obtain correct data buffer length.  Reported by
> > Lan Tianyu, Fixed by Lv Zheng.
> > 
> > Reviewed-by: Mika Westerberg <mika.westerberg@linux.intel.com>
> > Signed-off-by: Lv Zheng <lv.zheng@intel.com>
> > Signed-off-by: Lan Tianyu <tianyu.lan@intel.com>
> 
> Very superficial issue, and sorry I forgot to mention it for v1, but the
> summary line for this patch (1/9) ends with a period - "...region field
> accesses." - which I think is not the correct style?

In fact, it seems this patch already got merged into Linus' tree
somehow:

https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/drivers/acpi/acpica/exfield.c?id=6273f00e6ecbd60494a979033b7e5271a29a0436

the others do not seem to have been merged yet.
-- 
Adam Williamson
Fedora QA Community Monkey
IRC: adamw | Twitter: AdamW_Fedora | XMPP: adamw AT happyassassin . net
http://www.happyassassin.net


^ permalink raw reply	[flat|nested] 79+ messages in thread

* Re: [Patch V2 1/9] ACPICA: Executer: Fix buffer allocation issue for generic_serial_bus region field accesses.
  2014-04-28 18:08         ` Adam Williamson
@ 2014-04-28 22:50           ` Rafael J. Wysocki
  2014-04-29 11:31             ` Wolfram Sang
  0 siblings, 1 reply; 79+ messages in thread
From: Rafael J. Wysocki @ 2014-04-28 22:50 UTC (permalink / raw)
  To: Adam Williamson
  Cc: Lan Tianyu, wsa, mika.westerberg, lenb, linux-i2c, linux-kernel,
	linux-acpi, Lv Zheng

On Monday, April 28, 2014 11:08:25 AM Adam Williamson wrote:
> On Mon, 2014-04-28 at 10:52 -0700, Adam Williamson wrote:
> > On Mon, 2014-04-28 at 22:27 +0800, Lan Tianyu wrote:
> > > From: Lv Zheng <lv.zheng@intel.com>
> > > 
> > > The size of the buffer allocated for generic_serial_bus region access
> > > is not correct.  This patch introduces acpi_ex_get_serial_access_length()
> > > to be invoked to obtain correct data buffer length.  Reported by
> > > Lan Tianyu, Fixed by Lv Zheng.
> > > 
> > > Reviewed-by: Mika Westerberg <mika.westerberg@linux.intel.com>
> > > Signed-off-by: Lv Zheng <lv.zheng@intel.com>
> > > Signed-off-by: Lan Tianyu <tianyu.lan@intel.com>
> > 
> > Very superficial issue, and sorry I forgot to mention it for v1, but the
> > summary line for this patch (1/9) ends with a period - "...region field
> > accesses." - which I think is not the correct style?

Well, some people do that, but is it really a problem?

> In fact, it seems this patch already got merged into Linus' tree
> somehow:
> 
> https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/drivers/acpi/acpica/exfield.c?id=6273f00e6ecbd60494a979033b7e5271a29a0436

Yes, I wanted to have it in there now.

> the others do not seem to have been merged yet.

The rest has been queued up for 3.16.

-- 
I speak only for myself.
Rafael J. Wysocki, Intel Open Source Technology Center.

^ permalink raw reply	[flat|nested] 79+ messages in thread

* Re: [Patch V2 0/9] I2C ACPI operation region handler support
  2014-04-28 14:27   ` [Patch V2 " Lan Tianyu
                       ` (8 preceding siblings ...)
  2014-04-28 14:27     ` [Patch V2 9/9] I2C/ACPI: Add CONFIG_I2C_ACPI config Lan Tianyu
@ 2014-04-28 22:51     ` Rafael J. Wysocki
  2014-04-29  1:54       ` Lan Tianyu
  2014-05-13 13:09     ` Rolf Eike Beer
  10 siblings, 1 reply; 79+ messages in thread
From: Rafael J. Wysocki @ 2014-04-28 22:51 UTC (permalink / raw)
  To: Lan Tianyu
  Cc: wsa, mika.westerberg, awilliam, lenb, linux-i2c, linux-kernel,
	linux-acpi

On Monday, April 28, 2014 10:27:39 PM Lan Tianyu wrote:
> ACPI 5.0 spec(5.5.2.4.5) defines GenericSerialBus(i2c, spi, uart) operation
> region. It allows ACPI aml code able to access such kind of devices to
> implement some ACPI standard method.
> 
> On the Asus T100TA, Bios use GenericSerialBus operation region to access
> i2c device to get battery info. So battery function depends on the I2C
> operation region support. Here is the bug link.
> https://bugzilla.kernel.org/show_bug.cgi?id=69011
> 
> This patchset is to add I2C ACPI operation region handler support.
> 
> Change Since V1:
>        Fix some code style and memory leak issues in Patch 7

Is it the only patch that has changed from v1?

Rafael


^ permalink raw reply	[flat|nested] 79+ messages in thread

* Re: [Patch V2 0/9] I2C ACPI operation region handler support
  2014-04-28 22:51     ` [Patch V2 0/9] I2C ACPI operation region handler support Rafael J. Wysocki
@ 2014-04-29  1:54       ` Lan Tianyu
  2014-04-29 15:47         ` Rafael J. Wysocki
  0 siblings, 1 reply; 79+ messages in thread
From: Lan Tianyu @ 2014-04-29  1:54 UTC (permalink / raw)
  To: Rafael J. Wysocki
  Cc: wsa, mika.westerberg, awilliam, lenb, linux-i2c, linux-kernel,
	linux-acpi

On 2014年04月29日 06:51, Rafael J. Wysocki wrote:
> On Monday, April 28, 2014 10:27:39 PM Lan Tianyu wrote:
>> ACPI 5.0 spec(5.5.2.4.5) defines GenericSerialBus(i2c, spi, uart) operation
>> region. It allows ACPI aml code able to access such kind of devices to
>> implement some ACPI standard method.
>>
>> On the Asus T100TA, Bios use GenericSerialBus operation region to access
>> i2c device to get battery info. So battery function depends on the I2C
>> operation region support. Here is the bug link.
>> https://bugzilla.kernel.org/show_bug.cgi?id=69011
>>
>> This patchset is to add I2C ACPI operation region handler support.
>>
>> Change Since V1:
>>        Fix some code style and memory leak issues in Patch 7
> 
> Is it the only patch that has changed from v1?


I also remove a redundant semicolon in the PATCH 8. Sorry. I didn't
notice these patches are already in your tree. I will produce divergence
patches based on your bleeding-edge branch.


> 
> Rafael
> 


-- 
Best regards
Tianyu Lan

^ permalink raw reply	[flat|nested] 79+ messages in thread

* Re: [Patch V2 7/9] I2C/ACPI: Add i2c ACPI operation region support
  2014-04-28 14:27     ` [Patch V2 7/9] I2C/ACPI: Add i2c ACPI operation region support Lan Tianyu
@ 2014-04-29  8:02       ` Mika Westerberg
  0 siblings, 0 replies; 79+ messages in thread
From: Mika Westerberg @ 2014-04-29  8:02 UTC (permalink / raw)
  To: Lan Tianyu; +Cc: wsa, rjw, awilliam, lenb, linux-i2c, linux-kernel, linux-acpi

On Mon, Apr 28, 2014 at 10:27:46PM +0800, Lan Tianyu wrote:
> ACPI 5.0 spec(5.5.2.4.5) defines GenericSerialBus(i2c, spi, uart) operation region.
> It allows ACPI aml code able to access such kind of devices to implement
> some ACPI standard method.

Looks good to me now,

Reviewed-by: Mika Westerberg <mika.westerberg@linux.intel.com>

^ permalink raw reply	[flat|nested] 79+ messages in thread

* Re: [Patch V2 9/9] I2C/ACPI: Add CONFIG_I2C_ACPI config
  2014-04-28 14:27     ` [Patch V2 9/9] I2C/ACPI: Add CONFIG_I2C_ACPI config Lan Tianyu
@ 2014-04-29  8:16       ` Mika Westerberg
  2014-05-17 17:48         ` Wolfram Sang
  0 siblings, 1 reply; 79+ messages in thread
From: Mika Westerberg @ 2014-04-29  8:16 UTC (permalink / raw)
  To: Lan Tianyu; +Cc: wsa, rjw, awilliam, lenb, linux-i2c, linux-kernel, linux-acpi

On Mon, Apr 28, 2014 at 10:27:48PM +0800, Lan Tianyu wrote:
> This patch is to add CONFIG_I2C_ACPI. Current there is a race between
> removing I2C ACPI operation region and ACPI AML code accessing.
> So make i2c core built-in if CONFIG_I2C_ACPI is set.
> 
> Signed-off-by: Lan Tianyu <tianyu.lan@intel.com>
> ---
>  drivers/i2c/Kconfig  | 17 ++++++++++++++++-
>  drivers/i2c/Makefile |  2 +-
>  include/linux/i2c.h  |  2 +-
>  3 files changed, 18 insertions(+), 3 deletions(-)
> 
> diff --git a/drivers/i2c/Kconfig b/drivers/i2c/Kconfig
> index 7b7ea32..c670d49 100644
> --- a/drivers/i2c/Kconfig
> +++ b/drivers/i2c/Kconfig
> @@ -2,7 +2,9 @@
>  # I2C subsystem configuration
>  #
>  
> -menuconfig I2C
> +menu "I2C support"
> +
> +config I2C
>  	tristate "I2C support"
>  	select RT_MUTEXES
>  	---help---
> @@ -21,6 +23,17 @@ menuconfig I2C
>  	  This I2C support can also be built as a module.  If so, the module
>  	  will be called i2c-core.
>  
> +config I2C_ACPI
> +	bool "I2C ACPI support"
> +	select I2C
> +	depends on ACPI
> +	default y
> +	help
> +	  Say Y here if you want to enable I2C ACPI function. ACPI table
> +	  provides I2C slave devices' information to enumerate these devices.
> +	  This option also allows ACPI AML code to access I2C slave devices
> +	  via I2C ACPI operation region to fulfill ACPI method.

I would prefer something like:

Say Y here if you want to enable ACPI I2C support. This includes support
for automatic enumeration of I2C slave devices and support for ACPI I2C
Operation Regions. Operation Regions allow firmware (BIOS) code to
access I2C slave devices, such as smart batteries through an I2C host
controller driver.

But it is really up to you so,

Reviewed-by: Mika Westerberg <mika.westerberg@linux.intel.com>

^ permalink raw reply	[flat|nested] 79+ messages in thread

* Re: [Patch V2 1/9] ACPICA: Executer: Fix buffer allocation issue for generic_serial_bus region field accesses.
  2014-04-28 22:50           ` Rafael J. Wysocki
@ 2014-04-29 11:31             ` Wolfram Sang
  2014-04-29 21:37               ` Rafael J. Wysocki
  0 siblings, 1 reply; 79+ messages in thread
From: Wolfram Sang @ 2014-04-29 11:31 UTC (permalink / raw)
  To: Rafael J. Wysocki
  Cc: Adam Williamson, Lan Tianyu, mika.westerberg, lenb, linux-i2c,
	linux-kernel, linux-acpi, Lv Zheng

[-- Attachment #1: Type: text/plain, Size: 158 bytes --]


> The rest has been queued up for 3.16.

I also aim for 3.16, yet it may take 1 or 2 weeks more until I'll be
able to review the I2C part of those patches.


[-- Attachment #2: Digital signature --]
[-- Type: application/pgp-signature, Size: 836 bytes --]

^ permalink raw reply	[flat|nested] 79+ messages in thread

* Re: [Patch V2 0/9] I2C ACPI operation region handler support
  2014-04-29  1:54       ` Lan Tianyu
@ 2014-04-29 15:47         ` Rafael J. Wysocki
  0 siblings, 0 replies; 79+ messages in thread
From: Rafael J. Wysocki @ 2014-04-29 15:47 UTC (permalink / raw)
  To: Lan Tianyu
  Cc: wsa, mika.westerberg, awilliam, lenb, linux-i2c, linux-kernel,
	linux-acpi

On Tuesday, April 29, 2014 09:54:46 AM Lan Tianyu wrote:
> On 2014年04月29日 06:51, Rafael J. Wysocki wrote:
> > On Monday, April 28, 2014 10:27:39 PM Lan Tianyu wrote:
> >> ACPI 5.0 spec(5.5.2.4.5) defines GenericSerialBus(i2c, spi, uart) operation
> >> region. It allows ACPI aml code able to access such kind of devices to
> >> implement some ACPI standard method.
> >>
> >> On the Asus T100TA, Bios use GenericSerialBus operation region to access
> >> i2c device to get battery info. So battery function depends on the I2C
> >> operation region support. Here is the bug link.
> >> https://bugzilla.kernel.org/show_bug.cgi?id=69011
> >>
> >> This patchset is to add I2C ACPI operation region handler support.
> >>
> >> Change Since V1:
> >>        Fix some code style and memory leak issues in Patch 7
> > 
> > Is it the only patch that has changed from v1?
> 
> 
> I also remove a redundant semicolon in the PATCH 8. Sorry. I didn't
> notice these patches are already in your tree. I will produce divergence
> patches based on your bleeding-edge branch.

No need for that, I'll use the new versions.

-- 
I speak only for myself.
Rafael J. Wysocki, Intel Open Source Technology Center.

^ permalink raw reply	[flat|nested] 79+ messages in thread

* Re: [Patch V2 1/9] ACPICA: Executer: Fix buffer allocation issue for generic_serial_bus region field accesses.
  2014-04-29 11:31             ` Wolfram Sang
@ 2014-04-29 21:37               ` Rafael J. Wysocki
  0 siblings, 0 replies; 79+ messages in thread
From: Rafael J. Wysocki @ 2014-04-29 21:37 UTC (permalink / raw)
  To: Wolfram Sang
  Cc: Adam Williamson, Lan Tianyu, mika.westerberg, lenb, linux-i2c,
	linux-kernel, linux-acpi, Lv Zheng

On Tuesday, April 29, 2014 01:31:28 PM Wolfram Sang wrote:
> 
> --3MwIy2ne0vdjdPXF
> Content-Type: text/plain; charset=us-ascii
> Content-Disposition: inline
> 
> 
> > The rest has been queued up for 3.16.
> 
> I also aim for 3.16, yet it may take 1 or 2 weeks more until I'll be
> able to review the I2C part of those patches.

That's fine, they can stay in my bleeding-edge branch till then.

-- 
I speak only for myself.
Rafael J. Wysocki, Intel Open Source Technology Center.

^ permalink raw reply	[flat|nested] 79+ messages in thread

* Re: [Patch V2 0/9] I2C ACPI operation region handler support
  2014-04-28 14:27   ` [Patch V2 " Lan Tianyu
                       ` (9 preceding siblings ...)
  2014-04-28 22:51     ` [Patch V2 0/9] I2C ACPI operation region handler support Rafael J. Wysocki
@ 2014-05-13 13:09     ` Rolf Eike Beer
  2014-05-13 14:06       ` Lan Tianyu
  10 siblings, 1 reply; 79+ messages in thread
From: Rolf Eike Beer @ 2014-05-13 13:09 UTC (permalink / raw)
  To: Lan Tianyu
  Cc: wsa, rjw, mika.westerberg, awilliam, lenb, linux-i2c,
	linux-kernel, linux-acpi

[-- Attachment #1: Type: text/plain, Size: 2659 bytes --]

Am Montag, 28. April 2014, 22:27:39 schrieb Lan Tianyu:
> ACPI 5.0 spec(5.5.2.4.5) defines GenericSerialBus(i2c, spi, uart) operation
> region. It allows ACPI aml code able to access such kind of devices to
> implement some ACPI standard method.
> 
> On the Asus T100TA, Bios use GenericSerialBus operation region to access
> i2c device to get battery info. So battery function depends on the I2C
> operation region support. Here is the bug link.
> https://bugzilla.kernel.org/show_bug.cgi?id=69011

Hi all,

I have tested this series and got some errors, but no additional functionality:

[    0.607442] ACPI Error: Error attaching device[f60238a0] data
[    0.607460]  (20140214/bus-143)
[    0.607708] ACPI Error: Error attaching device[f60238a0] data
[    0.607724]  (20140214/bus-143)
[    0.607987] ACPI Error: Error attaching device[f60238a0] data
[    0.608003]  (20140214/bus-143)
[    0.608251] ACPI Error: Error attaching device[f60238a0] data
[    0.608267]  (20140214/bus-143)
[    0.608515] ACPI Error: Error attaching device[f60238a0] data
[    0.608531]  (20140214/bus-143)

A bit more output, e.g. the error code if such is present or the device path,
could probably help when identifyint the device in question.

Also this still looks incomplete, as on other places one still gets those
warnings:

[    0.314944] pnp 00:08: Plug and Play ACPI device, IDs INT33fc (active)
[    0.316122] pnp 00:09: unknown resource type 19 in _CRS
[    0.316136] pnp 00:09: can't evaluate _CRS: 1

I don't know if looking on them at this place has any value, maybe something
like this is correct?

commit 52e2822c4c8b09180e5eb3dd94e4e9aea0d25eff
Author: Rolf Eike Beer <eb@emlix.com>
Date:   Tue Feb 18 11:11:10 2014 +0100

    ACPI: ignore GPIO and SERIAL_BUS resources in PNP init code

diff --git a/drivers/pnp/pnpacpi/rsparser.c b/drivers/pnp/pnpacpi/rsparser.c
index 167f3d0..5b8459b 100644
--- a/drivers/pnp/pnpacpi/rsparser.c
+++ b/drivers/pnp/pnpacpi/rsparser.c
@@ -240,6 +240,8 @@ static acpi_status pnpacpi_allocated_resource(struct acpi_resource *res,
                break;
 
        case ACPI_RESOURCE_TYPE_GENERIC_REGISTER:
+       case ACPI_RESOURCE_TYPE_GPIO:
+       case ACPI_RESOURCE_TYPE_SERIAL_BUS:
                break;
 
        default:

Greetings,

Eike
-- 
Rolf Eike Beer, emlix GmbH, http://www.emlix.com
Fon +49 551 30664-0, Fax +49 551 30664-11
Bertha-von-Suttner-Str. 9, 37085 Göttingen, Germany
Sitz der Gesellschaft: Göttingen, Amtsgericht Göttingen HR B 3160
Geschäftsführung: Dr. Uwe Kracke, Ust-IdNr.: DE 205 198 055

emlix - smart embedded open source

[-- Attachment #2: This is a digitally signed message part. --]
[-- Type: application/pgp-signature, Size: 316 bytes --]

^ permalink raw reply related	[flat|nested] 79+ messages in thread

* Re: [Patch V2 0/9] I2C ACPI operation region handler support
  2014-05-13 13:09     ` Rolf Eike Beer
@ 2014-05-13 14:06       ` Lan Tianyu
  2014-05-15  7:50         ` Rolf Eike Beer
  0 siblings, 1 reply; 79+ messages in thread
From: Lan Tianyu @ 2014-05-13 14:06 UTC (permalink / raw)
  To: Rolf Eike Beer
  Cc: wsa, rjw, mika.westerberg, awilliam, lenb, linux-i2c,
	linux-kernel, linux-acpi

On 05/13/2014 09:09 PM, Rolf Eike Beer wrote:
> Am Montag, 28. April 2014, 22:27:39 schrieb Lan Tianyu:
>> ACPI 5.0 spec(5.5.2.4.5) defines GenericSerialBus(i2c, spi, uart) operation
>> region. It allows ACPI aml code able to access such kind of devices to
>> implement some ACPI standard method.
>>
>> On the Asus T100TA, Bios use GenericSerialBus operation region to access
>> i2c device to get battery info. So battery function depends on the I2C
>> operation region support. Here is the bug link.
>> https://bugzilla.kernel.org/show_bug.cgi?id=69011
>
> Hi all,
>
> I have tested this series and got some errors, but no additional functionality:
>

Hi Rolf:
	Thanks for test. Could you attach the output of dmesg and acpidump?
Which machine you are testing on?

> [    0.607442] ACPI Error: Error attaching device[f60238a0] data
> [    0.607460]  (20140214/bus-143)
> [    0.607708] ACPI Error: Error attaching device[f60238a0] data
> [    0.607724]  (20140214/bus-143)
> [    0.607987] ACPI Error: Error attaching device[f60238a0] data
> [    0.608003]  (20140214/bus-143)
> [    0.608251] ACPI Error: Error attaching device[f60238a0] data
> [    0.608267]  (20140214/bus-143)
> [    0.608515] ACPI Error: Error attaching device[f60238a0] data
> [    0.608531]  (20140214/bus-143)
>
> A bit more output, e.g. the error code if such is present or the device path,
> could probably help when identifyint the device in question.
>
> Also this still looks incomplete, as on other places one still gets those
> warnings:
>
> [    0.314944] pnp 00:08: Plug and Play ACPI device, IDs INT33fc (active)
> [    0.316122] pnp 00:09: unknown resource type 19 in _CRS
> [    0.316136] pnp 00:09: can't evaluate _CRS: 1
>
> I don't know if looking on them at this place has any value, maybe something
> like this is correct?
>
> commit 52e2822c4c8b09180e5eb3dd94e4e9aea0d25eff
> Author: Rolf Eike Beer <eb@emlix.com>
> Date:   Tue Feb 18 11:11:10 2014 +0100
>
>      ACPI: ignore GPIO and SERIAL_BUS resources in PNP init code
>
> diff --git a/drivers/pnp/pnpacpi/rsparser.c b/drivers/pnp/pnpacpi/rsparser.c
> index 167f3d0..5b8459b 100644
> --- a/drivers/pnp/pnpacpi/rsparser.c
> +++ b/drivers/pnp/pnpacpi/rsparser.c
> @@ -240,6 +240,8 @@ static acpi_status pnpacpi_allocated_resource(struct acpi_resource *res,
>                  break;
>
>          case ACPI_RESOURCE_TYPE_GENERIC_REGISTER:
> +       case ACPI_RESOURCE_TYPE_GPIO:
> +       case ACPI_RESOURCE_TYPE_SERIAL_BUS:
>                  break;
>
>          default:
>
> Greetings,
>
> Eike
>


^ permalink raw reply	[flat|nested] 79+ messages in thread

* Re: [Patch V2 0/9] I2C ACPI operation region handler support
  2014-05-13 14:06       ` Lan Tianyu
@ 2014-05-15  7:50         ` Rolf Eike Beer
  2014-05-15 14:49           ` Lan Tianyu
  2014-05-20 14:17           ` Rolf Eike Beer
  0 siblings, 2 replies; 79+ messages in thread
From: Rolf Eike Beer @ 2014-05-15  7:50 UTC (permalink / raw)
  To: Lan Tianyu
  Cc: wsa, rjw, mika.westerberg, awilliam, lenb, linux-i2c,
	linux-kernel, linux-acpi


[-- Attachment #1.1: Type: text/plain, Size: 113973 bytes --]

=2D-nextPart1435871.THQkheyNVN
Content-Transfer-Encoding: quoted-printable
Content-Type: text/plain; charset="iso-8859-1"

Lan Tianyu wrote:
> On 05/13/2014 09:09 PM, Rolf Eike Beer wrote:
> > Am Montag, 28. April 2014, 22:27:39 schrieb Lan Tianyu:
> >> ACPI 5.0 spec(5.5.2.4.5) defines GenericSerialBus(i2c, spi, uart)
> >> operation
> >> region. It allows ACPI aml code able to access such kind of device=
s to
> >> implement some ACPI standard method.
> >>=20
> >> On the Asus T100TA, Bios use GenericSerialBus operation region to =
access
> >> i2c device to get battery info. So battery function depends on the=
 I2C
> >> operation region support. Here is the bug link.
> >> https://bugzilla.kernel.org/show_bug.cgi?id=3D69011
> >=20
> > Hi all,
>=20
> > I have tested this series and got some errors, but no additional=20=

functionality:
> Hi Rolf:
> =09Thanks for test. Could you attach the output of dmesg and acpidump=
?
> Which machine you are testing on?

Hi,

this is an Aava Inari 8 tablet (pre-release hardware). Please find the =
DSDT=20
and the dmesg.log attached.

In case of any further questions don't hesitate to ask, I'll try to be =
more=20
responsible.

Regards,

Eike
=2D-=20
Rolf Eike Beer, emlix GmbH, http://www.emlix.com
Fon +49 551 30664-0, Fax +49 551 30664-11
Bertha-von-Suttner-Str. 9, 37085 G=F6ttingen, Germany
Sitz der Gesellschaft: G=F6ttingen, Amtsgericht G=F6ttingen HR B 3160
Gesch=E4ftsf=FChrung: Dr. Uwe Kracke, Ust-IdNr.: DE 205 198 055

emlix - smart embedded open source

=2D-nextPart1435871.THQkheyNVN
Content-Disposition: attachment; filename="dsdt.dat"
Content-Transfer-Encoding: base64
Content-Type: application/octet-stream; name="dsdt.dat"

RFNEVOy6AAACIUlOU1lERUlOU1lERQAAAwAAAEFDUEkAAAQAFAhBREJHCaQACFNQM08KLghJTzRC
CyAKCElPNEwKIAhTUDFPCk4IUE1CUwsABAhTTUlQCrIIR1BCUwsABQhBUENCDAAAwP4IQVBDTAsA
EAhQRkRSDDQw0P4IUE1DQgwAMND+CFBDTEsMYDDQ/ghQVU5CDABQ0P4ISUJBUwwAgND+CFNSQ0IM
AMDR/ghTUkNMCwAQCEhQVEIMAADQ/ghNQ0hCDABA0f4ITUNITAsAQAhFR1BCDACQ0f4IRUdQTAsA
EAhETUlCDACA0f4IRE1JTAsAEAhJRlBCDABA0f4ISUZQTAsAEAhQRUJTDAAAAOAIUEVMTgwAAAAQ
CEZNQkwBCEZEVFAKAghHQ0REAQhEU1RBCgoIRFNMTwoCCERTTEMKAwhQSVRTChAIU0JDUwoSCFNB
TFMKEwhMU1NTCioIUFNTUwpnCFNPT1QKNQhFU0NTCmoIU0RHVgocCEFDUEgK3ghBU1NCAAhBT1RC
AAhBQVhCAAhQRUhQAQhTSFBDAAhQRVBNAQhQRUVSAQhQRUNTAQhJVEtFAAhGVEJMCgRbgEdOVlMA
DJCKz3gLOwNbgUVaR05WUxBPU1lTEFNNSUYIUFJNMAhQUk0xCFNDSUYIUFJNMghQUk0zCExDS0YI
UFJNNAhQUk01CFA4MEQgTElEUwhQV1JTCERCR1MIVEhPRghBQ1QxCEFDVFQIUFNWVAhUQzFWCFRD
MlYIVFNQVghDUlRUCERUU0UIRFRTMQhEVFMyCERUU0YIQk5VTQhCMFNDCEIxU0MIQjJTQwhCMFNT
CEIxU1MIQjJTUwgAGEFQSUMITVBFTghQQ1AwCFBDUDEIUFBDTQhQUE1GIAAITkFUUAhDTUFQCENN
QlAITFBUUAhGRENQCENNQ1AIQ0lSUAhXMzgxCE5QQ0UIAAhJR0RTCFRMU1QIQ0FETAhQQURMCENT
VEUQTlNURRBTU1RFEE5ESUQIRElEMSBESUQyIERJRDMgRElENCBESUQ1IEtTVjAgS1NWMQgAOEJM
Q1MIQlJUTAhBTFNFCEFMQUYITExPVwhMSElICAAIRU1BRQhFTUFQEEVNQUwQAAhNRUZFCERTVFMI
ABBUUE1QCFRQTUUITU9SRAhUQ0dQCFBQUlAgUFBSUQhMUFBSCEdURjA4R1RGMjhJREVNCEdURjE4
AEAEAEAFQVNMQiBJQlRUCElQQVQISVRWRghJVFZNCElQU0MISUJMQwhJQklBCElTU0MISTQwOQhJ
NTA5CEk2MDkISTcwOQhJRE1NCElETVMISUYxRQhIVkNPCE5YRDEgTlhEMiBOWEQzIE5YRDQgTlhE
NSBOWEQ2IE5YRDcgTlhEOCBHU01JCFBBVlAIAAhPU0NDCE5FWFAIAAgACAAwRFNFTghFQ09OCEdQ
SUMIQ1RZUAhMMDFDCFZGTjAIVkZOMQgAQAdOVkdBIE5WSEEgQU1EQSBESUQ2IERJRDcgRElEOCAA
IAAgACAAIAAgACAAIAAgACAAIAAgACAAIFVTRUwIUFUxRQhQVTJFCExQRTAgTFBFMSBMUEUyIEFD
U1QIQlRTVAhQRkxWCAAIQU9BQwhYSENJCFBNRU4ITFBFRQhJU1BBIElTUEQIUENJQiBQQ0lUIEQx
MEEgRDEwTCBEMTFBIEQxMUwgUDEwQSBQMTBMIFAxMUEgUDExTCBQMjBBIFAyMEwgUDIxQSBQMjFM
IFUxMEEgVTEwTCBVMTFBIFUxMUwgVTIwQSBVMjBMIFUyMUEgVTIxTCBTUDBBIFNQMEwgU1AxQSBT
UDFMIEQyMEEgRDIwTCBEMjFBIEQyMUwgSTEwQSBJMTBMIEkxMUEgSTExTCBJMjBBIEkyMEwgSTIx
QSBJMjFMIEkzMEEgSTMwTCBJMzFBIEkzMUwgSTQwQSBJNDBMIEk0MUEgSTQxTCBJNTBBIEk1MEwg
STUxQSBJNTFMIEk2MEEgSTYwTCBJNjFBIEk2MUwgSTcwQSBJNzBMIEk3MUEgSTcxTCBFTTBBIEVN
MEwgRU0xQSBFTTFMIFNJMEEgU0kwTCBTSTFBIFNJMUwgU0QwQSBTRDBMIFNEMUEgU0QxTCBNSDBB
IE1IMEwgTUgxQSBNSDFMIE9TU0wIABhEUFRFCFRITTAIVEhNMQhUSE0yCFRITTMIVEhNNAhDSEdS
CEREU1AIRFNPQwhEUFNSCERQQ1QgRFBQVCBER0MwIERHUDAgREdDMSBER1AxIERHQzIgREdQMiBE
R0MzIERHUDMgREdDNCBER1A0IERMUE0IRFNDMCBEU0MxIERTQzIgRFNDMyBEU0M0IEREQkcITFBP
RSBMUFBTIExQU1QgTFBQQyBMUFBGIERQTUUIQkNTTAhORkNTCAAIVFBNQSBUUE1MIElUU0EIUzBJ
WAhTRE1ECEVNVlIIQk1CRCBGU0FTCEJESUQIRkJJRAhPVEdNCFNURVAIU09DUwhBTVRFCFNDUEUI
U0FSRQhQU1NECEVEUFYIRElEWCBURldTCEFCSUQIEIMtAV9TQl9bgiJSVENfCF9ISUQMQdALAAhf
Q1JTEQ0KCkcBcABwAAEIeQBbgkwESFBFVAhfSElEDEHQAQMIX1VJRAAUCV9TVEEApAoPFCtfQ1JT
CAhSQlVGERoKF4YJAAEAAND+AAQAAIkGAAEBCAAAAHkApFJCVUYIUFIwMBJDEBISDQQM//8QAABM
TktBABINBAz//xEAAExOS0IAEg0EDP//EgAATE5LQwASDQQM//8UAABMTktFABINBAz//xUAAExO
S0YAEg0EDP//FgAATE5LRwASDQQM//8XAABMTktIABINBAz//xgAAExOS0IAEg4EDP//GAAKAkxO
S0QAEg4EDP//GAAKA0xOS0MAEg0EDP//GAABTE5LQQASDQQM//8aAABMTktGABINBAz//x0AAExO
S0gAEg0EDP//HgAATE5LRAASDgQM//8eAAoDTE5LQQASDQQM//8eAAFMTktCABIOBAz//x4ACgJM
TktDABINBAz//wIAAExOS0EACEFSMDASQw0REgsEDP//EAAAAAoQEgsEDP//EQAAAAoREgsEDP//
EgAAAAoSEgsEDP//FAAAAAoUEgsEDP//FQAAAAoVEgsEDP//FgAAAAoWEgsEDP//GAAAAAoREgwE
DP//GAAKAgAKExIMBAz//xgACgMAChISCwQM//8YAAEAChASCwQM//8aAAAAChUSCwQM//8dAAAA
ChcSCwQM//8eAAAAChMSDAQM//8eAAoDAAoQEgsEDP//HgABAAoREgwEDP//HgAKAgAKEhILBAz/
/wIAAAAKEAhQUjA0EjQEEgsEC///AExOS0EAEgsEC///AUxOS0IAEgwEC///CgJMTktDABIMBAv/
/woDTE5LRAAIQVIwNBIsBBIJBAv//wAAChASCQQL//8BAAoREgoEC///CgIAChISCgQL//8KAwAK
EwhQUjA1EjQEEgsEC///AExOS0IAEgsEC///AUxOS0MAEgwEC///CgJMTktEABIMBAv//woDTE5L
QQAIQVIwNRIsBBIJBAv//wAAChESCQQL//8BAAoSEgoEC///CgIAChMSCgQL//8KAwAKEAhQUjA2
EjQEEgsEC///AExOS0MAEgsEC///AUxOS0QAEgwEC///CgJMTktBABIMBAv//woDTE5LQgAIQVIw
NhIsBBIJBAv//wAAChISCQQL//8BAAoTEgoEC///CgIAChASCgQL//8KAwAKEQhQUjA3EjQEEgsE
C///AExOS0QAEgsEC///AUxOS0EAEgwEC///CgJMTktCABIMBAv//woDTE5LQwAIQVIwNxIsBBIJ
BAv//wAAChMSCQQL//8BAAoQEgoEC///CgIAChESCgQL//8KAwAKEghQUjAxEkMOEBILBAv//wBM
TktGABILBAv//wFMTktHABIMBAv//woCTE5LSAASDAQL//8KA0xOS0UAEg0EDP//AQAATE5LRwAS
DQQM//8BAAFMTktGABIOBAz//wEACgJMTktFABIOBAz//wEACgNMTktIABINBAz//wIAAExOS0MA
Eg0EDP//AgABTE5LRAASDgQM//8CAAoCTE5LQgASDgQM//8CAAoDTE5LQQASDQQM//8DAABMTktE
ABINBAz//wMAAUxOS0MAEg4EDP//AwAKAkxOS0YAEg4EDP//AwAKA0xOS0cACEFSMDESQwwQEgkE
C///AAAKFRIJBAv//wEAChYSCgQL//8KAgAKFxIKBAv//woDAAoUEgsEDP//AQAAAAoWEgsEDP//
AQABAAoVEgwEDP//AQAKAgAKFBIMBAz//wEACgMAChcSCwQM//8CAAAAChISCwQM//8CAAEAChMS
DAQM//8CAAoCAAoREgwEDP//AgAKAwAKEBILBAz//wMAAAAKExILBAz//wMAAQAKEhIMBAz//wMA
CgIAChUSDAQM//8DAAoDAAoWCFBSU0ERCQoGI3jcGHkABlBSU0FQUlNCBlBSU0FQUlNDBlBSU0FQ
UlNEBlBSU0FQUlNFBlBSU0FQUlNGBlBSU0FQUlNHBlBSU0FQUlNIW4JGzFBDSTAIX0hJRAxB0AoI
CF9DSUQMQdAKAwhfQURSABQJXkJOMDAApAAUC19CQk4ApEJOMDAIX1VJRAAIX0RFUBIGAVBFUEQU
Fl9QUlQAoApQSUNNpEFSMDCkUFIwMFuCRwdWTFZDCF9BRFIAW4BIQlVTAgAK/1uBGEhCVVMDAEBo
U01DUiBTTURSIE1DUlggFCJSTUJSCn15aAoQAHlpCggAYH0M8AAAEGBTTUNSpFNNRFIUI1dNQlIL
cGpTTURSfXloChAAeWkKCABgfQzwAAARYFNNQ1IUTRJfQ1JTCKAZVFBNUIpSRVMwCwIBVFBNTHAL
ABBUUE1MilJFUzAKqElTTU6KUkVTMAqsSVNNWIpSRVMwCrRJU0xOoCeTSVNQRAFwSVNQQUlTTU5y
SVNNTklTTE5JU01YdElTTVgBSVNNWKETcABJU01OcABJU01YcABJU0xOilJFUzAK3E0xTU6KUkVT
MArgTTFNWIpSRVMwCuhNMUxOe0JNQkQMAAAA/00xTU5wUENJVE0xTVhydE0xTVhNMU1OAAFNMUxO
dE0xTVgBTTFNWIpSRVMwCsJHU01OilJFUzAKxkdTTViKUkVTMArOR1NMTnBeLkdGWDBHU1RNR1NN
TnleLkdGWDBHVU1BChlHU0xOckdTTU5HU0xOR1NNWHRHU01YAUdTTVikUkVTMAhSRVMwEU0QCwgB
iA0AAgwAAAAAAP8AAAAAAUcBcAB3AAEIRwH4DPgMAQiIDQABDAMAAAAAbwAAAHAAiA0AAQwDAAB4
APcMAACADIgNAAEMAwAAAA3//wAAAPOHFwAADAMAAAAAAAAKAP//CwAAAAAAAAACAIcXAAAMAwAA
AAAAAAwA//8NAAAAAAAAAAIAhxcAAAwDAAAAAAAADgD//w8AAAAAAAAAAgCHFwAADAMAAAAAAAAA
ev//P3oAAAAAAABAAIcXAAAMAwAAAAAAAAB8////fwAAAAAAAAAEhxcAAAwDAAAAAAAAAID////f
AAAAAAAAAGCHFwAADAMAAAAAAADU/v8P1P4AAAAAABAAAHkACEdVSUQREwoQW03bM/cfHECWV3RB
wD3XZghTVVBQAAhDVFJMABRDC19PU0MMcGtgimAAQ0RXMYpgCgRDRFcyimAKCENEVzOgQgiQk2hH
VUlETkVYUHBDRFcyU1VQUHBDRFczQ1RSTKAmgHtDRFcxAQAAoA17Q1RSTAoCAE5IUEegDXtDVFJM
CgQATlBNRaAQkpNpAX1DRFcxCghDRFcxoBaSk0NEVzNDVFJMfUNEVzEKEENEVzFwQ1RSTENEVzNw
Q1RSTE9TQ0OkYKEOfUNEVzEKBENEVzGkYFuCQo1MUENCCF9BRFIMAAAfABBOV1xfU0JfW4BJTEJS
AElCQVMKjFuBQQRJTEJSAABABFBBUkMIUEJSQwhQQ1JDCFBEUkMIUEVSQwhQRlJDCFBHUkMIUEhS
QwgAQDwAA1VJM0UBVUk0RQFbgkIKTE5LQQhfSElEDEHQDA8IX1VJRAEUEV9ESVMIfVBBUkMKgFBB
UkMUC19QUlMIpFBSU0EUOF9DUlMICFJUTEERCQoGIwAAGHkAi1JUTEEBSVJRMHAASVJRMHkBe1BB
UkMKDwBJUlEwpFJUTEEUG19TUlMJi2gBSVJRMIJJUlEwYHZgcGBQQVJDFBhfU1RBCKAMe1BBUkMK
gACkCgmhBKQKC1uCQwpMTktCCF9ISUQMQdAMDwhfVUlECgIUEV9ESVMIfVBCUkMKgFBCUkMUC19Q
UlMIpFBSU0IUOF9DUlMICFJUTEIRCQoGIwAAGHkAi1JUTEIBSVJRMHAASVJRMHkBe1BCUkMKDwBJ
UlEwpFJUTEIUG19TUlMJi2gBSVJRMIJJUlEwYHZgcGBQQlJDFBhfU1RBCKAMe1BCUkMKgACkCgmh
BKQKC1uCQwpMTktDCF9ISUQMQdAMDwhfVUlECgMUEV9ESVMIfVBDUkMKgFBDUkMUC19QUlMIpFBS
U0MUOF9DUlMICFJUTEMRCQoGIwAAGHkAi1JUTEMBSVJRMHAASVJRMHkBe1BDUkMKDwBJUlEwpFJU
TEMUG19TUlMJi2gBSVJRMIJJUlEwYHZgcGBQQ1JDFBhfU1RBCKAMe1BDUkMKgACkCgmhBKQKC1uC
QwpMTktECF9ISUQMQdAMDwhfVUlECgQUEV9ESVMIfVBEUkMKgFBEUkMUC19QUlMIpFBSU0QUOF9D
UlMICFJUTEQRCQoGIwAAGHkAi1JUTEQBSVJRMHAASVJRMHkBe1BEUkMKDwBJUlEwpFJUTEQUG19T
UlMJi2gBSVJRMIJJUlEwYHZgcGBQRFJDFBhfU1RBCKAMe1BEUkMKgACkCgmhBKQKC1uCQwpMTktF
CF9ISUQMQdAMDwhfVUlECgUUEV9ESVMIfVBFUkMKgFBFUkMUC19QUlMIpFBSU0UUOF9DUlMICFJU
TEURCQoGIwAAGHkAi1JUTEUBSVJRMHAASVJRMHkBe1BFUkMKDwBJUlEwpFJUTEUUG19TUlMJi2gB
SVJRMIJJUlEwYHZgcGBQRVJDFBhfU1RBCKAMe1BFUkMKgACkCgmhBKQKC1uCQwpMTktGCF9ISUQM
QdAMDwhfVUlECgYUEV9ESVMIfVBGUkMKgFBGUkMUC19QUlMIpFBSU0YUOF9DUlMICFJUTEYRCQoG
IwAAGHkAi1JUTEYBSVJRMHAASVJRMHkBe1BGUkMKDwBJUlEwpFJUTEYUG19TUlMJi2gBSVJRMIJJ
UlEwYHZgcGBQRlJDFBhfU1RBCKAMe1BGUkMKgACkCgmhBKQKC1uCQwpMTktHCF9ISUQMQdAMDwhf
VUlECgcUEV9ESVMIfVBHUkMKgFBHUkMUC19QUlMIpFBSU0cUOF9DUlMICFJUTEcRCQoGIwAAGHkA
i1JUTEcBSVJRMHAASVJRMHkBe1BHUkMKDwBJUlEwpFJUTEcUG19TUlMJi2gBSVJRMIJJUlEwYHZg
cGBQR1JDFBhfU1RBCKAMe1BHUkMKgACkCgmhBKQKC1uCQwpMTktICF9ISUQMQdAMDwhfVUlECggU
EV9ESVMIfVBIUkMKgFBIUkMUC19QUlMIpFBSU0gUOF9DUlMICFJUTEgRCQoGIwAAGHkAi1JUTEgB
SVJRMHAASVJRMHkBe1BIUkMKDwBJUlEwpFJUTEgUG19TUlMJi2gBSVJRMIJJUlEwYHZgcGBQSFJD
FBhfU1RBCKAMe1BIUkMKgACkCgmhBKQKC1uATFBDMAIACsBbgRhMUEMwAABABFNSSUQIAEg7QzFF
TgEAH1uCJkZXSEQIX0hJRAwl1AgACF9DUlMREQoOhgkAAAAAAP8AAAABeQBbgkUKSVBJQwhfSElE
C0HQCF9DUlMRQQkKjUcBIAAgAAECRwEkACQAAQJHASgAKAABAkcBLAAsAAECRwEwADAAAQJHATQA
NAABAkcBOAA4AAECRwE8ADwAAQJHAaAAoAABAkcBpACkAAECRwGoAKgAAQJHAawArAABAkcBsACw
AAECRwG0ALQAAQJHAbgAuAABAkcBvAC8AAECRwHQBNAEAQIiBAB5AFuCSwlMRFJDCF9ISUQMQdAM
AghfVUlECgIIX0NSUxFOBwp6RwEuAC4AAQJHAU4ATgABAkcBYQBhAAEBRwFjAGMAAQFHAWUAZQAB
AUcBZwBnAAEBRwFwAHAAAQFHAYAAgAABEEcBkgCSAAEBRwGyALIAAQJHAYAGgAYBIEcBAAQABAGA
RwEABQAFAf9HAQAGAAYBIEcBThZOFgECeQBbgi1USU1SCF9ISUQMQdABAAhfQ1JTERgKFUcBQABA
AAEERwFQAFAAEAQiAQB5AFuCRwpJVVIzCF9ISUQMQdAFAQhfVUlEARQtX1NUQQigJJNVU0VMAKAc
k1BVMUUBcAFVSTNFcAFVSTRFcAFDMUVOpAoPpAAUGF9ESVMIcABVSTNFcABVSTRFcABDMUVOFEkE
X0NSUwgIQlVGMBEQCg1HAfgD+AMBCCIIAHkACEJVRjEREAoNRwH4A/gDAQgiEAB5AKAOkpRTUklE
CgSkQlVGMKEGpEJVRjFbgFBLQlMBCmAKBVuBFlBLQlMRUEtCRAgACAAIAAhQS0JDCFuCRgZQUzJL
CF9ISUQMQdADAxQdX1NUQQCgE3uTUEtCRAr/k1BLQkMK/wCkAKQKDwhfQ1JTERkKFkcBYABgAAEB
RwFkAGQAAQEjAgABeQAIX1BSUxETChAxAEtgAAFLZAABIgIAOHkAW4JOBFBTMk0IX0hJRAxB0A8T
FB1fU1RBAKATe5NQS0JECv+TUEtCQwr/AKQApAoPCF9DUlMRCQoGIwAQAXkACF9QUlMRCwoIMQAi
ABA4eQAQRRRcAFuAUE1JTwFQTUJTCkZbgSFQTUlPAQAIUFdCUwEARw8ADVBNRUIBAEIQAAFHUEVD
AVuBFVBNSU9BAEAQAARQU0NJAVNDSVMBW4BQTUNSAFBGRFIKBFuBTQhQTUNSE0wxMEQBTDExRAFM
MTJEAUwxM0QBTDE0RAFMMTVEAQACU0QxRAFTRDJEAVNEM0QBSFNJRAEAAUxQRUQBT1RHRAEAAQAB
AAEAAQABUlAxRAFSUDJEAVJQM0QBUlA0RAFMMjBEAUwyMUQBTDIyRAFMMjNEAUwyNEQBTDI1RAFM
MjZEAUwyN0QBW4BDTEtDAFBDTEsKGFuBTwRDTEtDE0NLQzACQ0tGMAEAHUNLQzECQ0tGMQEAHUNL
QzICQ0tGMgEAHUNLQzMCQ0tGMwEAHUNLQzQCQ0tGNAEAHUNLQzUCQ0tGNQEAHRBDRF9TQl9bgkQf
TFBFQQhfQURSAAhfSElEDTgwODYwRjI4AAhfQ0lEDTgwODYwRjI4AAhfRERODUludGVsKFIpIExv
dyBQb3dlciBBdWRpbyBDb250cm9sbGVyIC0gODA4NjBGMjgACF9TVUINODA4NjcyNzAACF9VSUQB
CF9ERVASDAFeLkkyQzJSVEVLCF9QUjASBgFQTFBFFBtfU1RBAKASkJNMUEVFCgKTTFBFRACkCg+k
ABQGX0RJUwAIUkJVRhFDCAp/hgkAAQAAQP4AACAAhgkAAQAAg/4AEAAAhgkAAapVqlUAABAAiQYA
BQEYAAAAiQYABQEZAAAAiQYABQEaAAAAiQYABQEbAAAAiQYABQEcAAAAiQYABQEdAAAAjCAAAQAB
ABUAAwAAAAAXAAAZACMAAAAcAFxfU0IuR1BPMgB5ABRIBF9DUlMAilJCVUYKBEIwQkFwTFBFMEIw
QkGKUkJVRgoQQjFCQXBMUEUxQjFCQYpSQlVGChxCMkJBcExQRTJCMkJBpFJCVUZbgEtFWVMATFBF
MQsAAVuBDktFWVNDAEBCUFNBVCBbhE0EUExQRQUAABQIX1NUQQCkARQeX09OXwB7UFNBVAz8////
UFNBVH1QU0FUAFBTQVQUG19PRkYAfVBTQVQKA1BTQVR9UFNBVABQU0FUW4JIClZJQlIIX0FEUgAI
X0hJRA1WSUI4NjAxAAhfQ0lEDVZJQjg2MDEACF9ERE4NSW50ZWwoUikgVmlicmEgRHJpdmVyIC0g
VklCODYwMQAIX1VJRAEUPl9DUlMACFJCVUYRLQoqjCUAAQEBAAIAAAAAAAAXAAAZACgAAAAEAFxf
U0IuSTJDNy5QTUlDAHkApFJCVUYUFF9TVEEAoAuTQkRJRAoDpAoPpABbgkwQQU1DUghfQURSAAhf
SElEDUFNQ1IwRjI4AAhfQ0lEDUFNQ1IwRjI4AAhfRERODUludGVsKFIpIEF1ZGlvIE1hY2hpbmUg
RHJpdmVyIC0gQU1DUjBGMjgACF9VSUQBCF9ERVASEAJHUE8yXi5JMkMyUlRFSxRBCF9DUlMACFJC
VUYRTwYKa4wgAAEAAQARAAMAAAAAFwAAGQAjAAAABABcX1NCLkdQTzIAjCAAAQABABEAAwAAAAAX
AAAZACMAAAAbAFxfU0IuR1BPMgCMIAABAAEAEQADAAAAABcAABkAIwAAABwAXF9TQi5HUE8yAHkA
pFJCVUYUFF9TVEEAoAuTQkRJRAoDpAoPpABbgk0ISEFEXwhfQURSAAhfSElEDUhBRDBGMjgACF9D
SUQNSEFEMEYyOAAIX0RETg1JbnRlbChSKSBIRE1JIEF1ZGlvIERyaXZlciAtIEhBRAAIX1VJRAEU
Il9DUlMACFJCVUYREQoOhgkAAQBYBgBAAQAAeQCkUkJVRhQUX1NUQQCgC5NCRElECgOkCg+kABCH
dAEuX1NCX1BDSTBbgoUMAVhIQzEIX0FEUgwAABQACF9ERE4NQmF5dHJhaWwgWEhDSSBjb250cm9s
bGVyIChDQ0cgY29yZS9Ib3N0IG9ubHkpAAhfREVQEgYBUEVQRAhfU1RSEUAGClxCAGEAeQB0AHIA
YQBpAGwAIABYAEgAQwBJACAAYwBvAG4AdAByAG8AbABsAGUAcgAgACgAQwBDAEcAIABjAG8AcgBl
AC8ASABvAHMAdAAgAG8AbgBsAHkAKQAAAAhfUzBXCgMITVNFVAAIRERTVABbgFBDU0wADHQACuAB
W4ELUENTTEFQTVBTAluAUENTSAAMdQAK4AFbgQtQQ1NIAVBNQ0gIW4BYTVNFAAwAAArgCwABW4E3
WE1TRQAAIAABQ01TRQEATgVCQVIwIABAMFBNQ1MQAEAdAA1QSFkyAgANVVNIUAEAAVNDRkcBFBNQ
V09GCFA4WEgACqpwAVNDRkcUE1BXT04IUDhYSAAKu3AAU0NGR1uAWFBSVAByUEVCUwwAAAoAAAsA
AVuBSgRYUFJUAERWSUQQAEA5RDBEMwIABlBNRUUBAAZQTUVTAQBAHQANTUIxMwFNQjE0AQARAEAO
UFIyXyBQUjJNIFBSM18gUFIzTSBbgFhIQ1AAclBFQlMMAAAKAAALAAFbgRVYSENQEAAgUERCTRAA
QAVNRU1CIAhQQ0hTAAhTUk1CDAAAgJAUS0NfUFMwCEFEQkcNWEhDIEQwAFA4WEgACqCgC5NEVklE
C///pAB7TUVNQgzw////U1JNQnBNRU1CYnBQREJNYXtQREJNDvn/////////UERCTXBTUk1CTUVN
Qn1QREJNCgJQREJNW4BNQ0ExAFNSTUILAJBbgU4QTUNBMRMAgIgCUjUxMCAAQAZSNTIwIABABlI1
MzAgAEAGUjU0MCAAgIo9AAhDREVTAQAHU1RTUAEAA0NGRUMBACsAGUVQUkUBAEYYAA5DTU1GAQAG
RVNTUAEAAURBUEEBAEgkAA9BWDE1AQBADQAZUFBMMQEARggAAUNSTkMBAAZFUFREAQACSFRQUAEA
CFRSTUMBAEsWTUlEUwxBV1BDDEVJSFIIAAZTU0lJAVNTSU8BSFNJSQEARwcAH0NMSzIBAEAGRVRC
QwFFUkJDAUVTQUkBRVRNQQFFT0FJAUVJQUkBVFRFQQFFQ01BAQA4AAJDTEswAQALQ0xLMQEAQQ0A
GEZJREQBAAFGVFNTAXBEMEQzY6APk2MKA3AARDBEM1siCgqgIJNQQ0hTCgJwAE1CMTNwAE1CMTRw
AENMSzBwAENMSzFwAUNMSzJwAUNERVNwAVNUU1BwAENGRUNwAUVQUkVwAURBUEFwAUVTU1BwAUNN
TUZwAVBQTDFwAENSTkNwAEVQVERwAUhUUFBwAVRSTUNwCjxNSURTcAoPQVdQQ3AK/0VJSFJwAVNT
SUlwAVNTSU9wAUhTSUlwAUVSQkNwAUVUQkNwAUVTQUlwAUVUTUFwAUVPQUlwAUVJQUlwAVRURUFw
AUVDTUFwAUZJRERwAUZUU1NwAFVTSFCgQBiTUENIUwoCojyRkZN7UjUxMAv7AwAL4AKTe1I1MjAL
+wMAC+ACkZN7UjUzMAv7AwAL4AKTe1I1NDAL+wMAC+ACWyEKMnBSNTEwYKBGBJN7YAz7AwIAAAug
An1gDAAAAIBSNTEwohKTe1I1MTAMAAAYAAAAWyEKMntSNTEwDv3/////////YH1gDAAA/gBSNTEw
cFI1MjBgoEYEk3tgDPsDAgAAC6ACfWAMAAAAgFI1MjCiEpN7UjUyMAwAABgAAABbIQoye1I1MjAO
/f////////9gfWAMAAD+AFI1MjBwUjUzMGCgRgSTe2AM+wMCAAALoAJ9YAwAAACAUjUzMKISk3tS
NTMwDAAAGAAAAFshCjJ7UjUzMA79/////////2B9YAwAAP4AUjUzMHBSNTQwYKBGBJN7YAz7AwIA
AAugAn1gDAAAAIBSNTQwohKTe1I1NDAMAAAYAAAAWyEKMntSNTQwDv3/////////YH1gDAAA/gBS
NTQwcAFBWDE1oCCTYwoDQURCRw1QUzAtPkQzAFA4WEgACqFwCgNEMEQzoQhQOFhIAAqie1BEQk0O
/f////////9QREJNcGJNRU1CcGFQREJNFEIUX1BTMwhBREJHDVhIQyBEMwBQOFhIAAqwoAuTRFZJ
RAv//6QAe01FTUIM8P///1NSTUJwTUVNQmJwUERCTWF7UERCTQ75/////////1BEQk1wU1JNQk1F
TUJ9UERCTQoCUERCTVuATUNBMQBTUk1CCwCQW4EuTUNBMRMAgHBAAA9BWDE1AQBAOQAfQ0xLMgEA
QAoAAkNMSzABAAtDTEsxAQARcEQwRDNjoAuTYwoDcABEMEQzoCCTUENIUwoCcAFNQjEzcAFNQjE0
cAFDTEswcAFDTEsxcABDTEsyoA6TUENIUwoCcABBWDE1oA2TUE1FRQFwAVVTSFCgIJNjCgNBREJH
DVBTMy0+RDMAUDhYSAAKsXAKA0QwRDOhCFA4WEgACrJ7UERCTQ79/////////1BEQk1wYk1FTUJw
YVBEQk0UBl9EU1cDFAhfUk1WAKQAFA5fUFIzAKQSBgFVU0JDFBZfU1RBAKALkpNYSENJAKQKD6ED
pABbgkOQUkhVQghfQURSAFuCQBFTU1AxCF9BRFIKBxQZX1VQQwgIVVBDUBIIBAr/CgYAAKRVUENQ
FCtfUExECAhQTERQEhoBERcKFIIAAAAAAAAASxkAAAMAAAD/////pFBMRFAUTAtfRFNNBEFEQkcN
RFNNMTEAoEMKk2gREwoQheMuzuYAy0ifBS7bknxImUFEQkcNRFNNMTIAoE8Hk2kAQURCRw1EU00x
MwCgOJNqAEFEQkcNU1NQMSBRVUVSWQBwDU1ldGhvZCBfRFNNIEZ1bmN0aW9uIFF1ZXJ5AFsxpBED
AQWgNZNqCgJBREJHDVNTUDEgRFNNAHANTWV0aG9kIF9EU00gRnVuY3Rpb24gSW5kZXgyAFsxpACh
A6QApABbgk8QSFMwMQhfQURSARQZX1VQQwgIVVBDUBIIBAr/CgYAAKRVUENQFCtfUExECAhQTERQ
EhoBERcKFIIAAAAAAAAASxkAAAMAAAD/////pFBMRFAUTAtfRFNNBEFEQkcNRFNNMjEAoEMKk2gR
EwoQheMuzuYAy0ifBS7bknxImUFEQkcNRFNNMjIAoE8Hk2kAQURCRw1EU00yMwCgOJNqAEFEQkcN
SFMwMSBRVUVSWQBwDU1ldGhvZCBfRFNNIEZ1bmN0aW9uIFF1ZXJ5AFsxpBEDAQWgNZNqCgJBREJH
DUhTMDEgRFNNAHANTWV0aG9kIF9EU00gRnVuY3Rpb24gSW5kZXgyAFsxpAChA6QApABbgk4VSFMw
MghfQURSCgIUNl9VUEMICFVQQ1ASCAQK/wr/AAAIVVBDUhIHBAr/AAAAoA2TQkRJRAoCpFVQQ1Kh
BqRVUENQFEwFX1BMRAgIUExEUBIaAREXChSCAAAAAAAAAEAIAAAAAAAA/////whQTERSEhoBERcK
FIIAAAAAAAAAQQgAAAAAAAD/////oA2TQkRJRAoCpFBMRFKhBqRQTERQFEwLX0RTTQRBREJHDURT
TTMxAKBDCpNoERMKEIXjLs7mAMtInwUu25J8SJlBREJHDURTTTMyAKBPB5NpAEFEQkcNRFNNMzMA
oDiTagBBREJHDUhTMDIgUVVFUlkAcA1NZXRob2QgX0RTTSBGdW5jdGlvbiBRdWVyeQBbMaQRAwEF
oDWTagoCQURCRw1IUzAyIERTTQBwDU1ldGhvZCBfRFNNIEZ1bmN0aW9uIEluZGV4MgBbMaQAoQOk
AKQAW4JBI0hTMDMIX0FEUgoDCF9ERVASBgFHUE8yCFBTVFMAW4RAC1dXUFIAAAAIX0RFUBIGAUdQ
TzIUK19TVEEAoCKTXC8DX1NCX0dQTzJBVkJMAaRcLwNfU0JfR1BPMldXRDOkABQ9X09OXwCgNpNQ
U1RTAKAuk1wvA19TQl9HUE8yQVZCTAFbIgsAAnABXC8DX1NCX0dQTzJXV0QzcAFQU1RTFDBfT0ZG
AKApk1wvA19TQl9HUE8yQVZCTAFwAFwvA19TQl9HUE8yV1dEM3AAUFNUUwhfUzBXCgIIX1BSMBIG
AVdXUFIIX1BSMhIGAVdXUFIIX1BSMxIGAVdXUFIUGV9VUEMICFVQQ1ASCAQK/wr/AACkVVBDUBQr
X1BMRAgIUExEUBIaAREXChSCAAAAAAAAADAIAAAAAAAA/////6RQTERQFEwLX0RTTQRBREJHDURT
TTQxAKBDCpNoERMKEIXjLs7mAMtInwUu25J8SJlBREJHDURTTTQyAKBPB5NpAEFEQkcNRFNNNDMA
oDiTagBBREJHDUhTMDMgUVVFUlkAcA1NZXRob2QgX0RTTSBGdW5jdGlvbiBRdWVyeQBbMaQRAwEF
oDWTagoCQURCRw1IUzAzIERTTQBwDU1ldGhvZCBfRFNNIEZ1bmN0aW9uIEluZGV4MgBbMaQAoQOk
AKQAW4IwTU9ETQhfQURSCgMIX1BSMBIGAVdXUFIIX1BSMhIGAVdXUFIIX1BSMxIGAVdXUFJbgkAR
SFMwNAhfQURSCgQUGV9VUEMICFVQQ1ASCAQK/wr/AACkVVBDUBQrX1BMRAgIUExEUBIaAREXChSC
AAAAAAAAADAIAAAAAAAA/////6RQTERQFEwLX0RTTQRBREJHDURTTTUxAKBDCpNoERMKEIXjLs7m
AMtInwUu25J8SJlBREJHDURTTTUyAKBPB5NpAEFEQkcNRFNNNTMAoDiTagBBREJHDUhTMDQgUVVF
UlkAcA1NZXRob2QgX0RTTSBGdW5jdGlvbiBRdWVyeQBbMaQRAwEFoDWTagoCQURCRw1IUzA0IERT
TQBwDU1ldGhvZCBfRFNNIEZ1bmN0aW9uIEluZGV4MgBbMaQAoQOkAKQAW4JCEUhTQzEIX0FEUgoF
FBlfVVBDCAhVUENQEggECv8K/wAApFVQQ1AUK19QTEQICFBMRFASGgERFwoUggAAAAAAAAAwCAAA
AAAAAP////+kUExEUBROC19EU00EQURCRw1EU002MQCgRQqTaBETChCF4y7O5gDLSJ8FLtuSfEiZ
QURCRw1EU002MgCgQQiTaQBBREJHDURTTTYzAKA5k2oAQURCRw1IU0lDMSBRVUVSWQBwDU1ldGhv
ZCBfRFNNIEZ1bmN0aW9uIFF1ZXJ5AFsxpBEDAQWgNpNqCgJBREJHDUhTSUMxIERTTQBwDU1ldGhv
ZCBfRFNNIEZ1bmN0aW9uIEluZGV4MgBbMaQBoQOkAKQAW4JJEUhTQzIIX0FEUgoGFBlfVVBDCAhV
UENQEggECv8K/wAApFVQQ1AUK19QTEQICFBMRFASGgERFwoUggAAAAAAAAAwCAAAAAAAAP////+k
UExEUBRFDF9EU00EQURCRw1EU003MQCgTAqTaBETChCF4y7O5gDLSJ8FLtuSfEiZQURCRw1EU003
MgCgSAiTaQBBREJHDURTTTczAKA5k2oAQURCRw1IU0lDMiBRVUVSWQBwDU1ldGhvZCBfRFNNIEZ1
bmN0aW9uIFF1ZXJ5AFsxpBEDAQWgPZNqCgJBREJHDUhTSUMyIERTTSBjYWxsZWQAcA1NZXRob2Qg
X0RTTSBGdW5jdGlvbiBJbmRleDIAWzGkAaEDpACkAFuCSxVPVEcxCF9BRFIMAAAWAAhfRERODUJh
eXRyYWlsIFhIQ0kgY29udHJvbGxlciAoU3lub3BzeXMgY29yZS9PVEcpAAhfU1RSEU4FClpCAGEA
eQB0AHIAYQBpAGwAIABYAEgAQwBJACAAYwBvAG4AdAByAG8AbABsAGUAcgAgACgAUwB5AG4AbwBw
AHMAeQBzACAAYwBvAHIAZQAvAE8AVABHACkAAAAIX1MwVwoDW4BQTUVCAgqECgRbgRRQTUVCAgAI
UE1FRQEABlBNRVMBW4BHRU5SAgqgChBbgRdHRU5SAgASQ1BNRQFVMkVOAVUzRU4BFBhfUFMzAHAB
Q1BNRXABVTJFTnABVTNFThQYX1BTMABwAENQTUVwAFUyRU5wAFUzRU4UBl9EU1cDFAhfUk1WAKQA
FA5fUFIzAKQSBgFVU0JDFBZfU1RBAKALkpNPVEdNAKQKD6EDpAAQKFxfU0JfW4QgVVNCQwAAABQJ
X1NUQQCkCg8UBl9PTl8AFAZfT0ZGAFuCT0lFSEMxCF9BRFIMAAAdAAhfREVQEgYBUEVQRFuAUFdL
RQIKYgoEW4ENUFdLRQMAAVBXVUMIFBdfUFNXAaAIaHD/UFdVQ6EHcABQV1VDW4JGPkhVQk4IX0FE
UgBbgkg9UFIwMQhfQURSAQhfVVBDEgcECv8AAAAIX1BMRBIWARETChCBAAAAAAAAADAcAAAAAAAA
W4I1UFIxMQhfQURSAQhfVVBDEggECv8K/wAACF9QTEQSFgEREwoQgQAAAAAAAADhHAAAAAAAAFuC
NlBSMTIIX0FEUgoCCF9VUEMSCAQK/wr/AAAIX1BMRBIWARETChCBAAAAAAAAAOEdAAAAAAAAW4I2
UFIxMwhfQURSCgMIX1VQQxIIBAr/Cv8AAAhfUExEEhYBERMKEIEAAAAAAAAA4R0AAAAAAABbgk8K
UFIxNAhfQURSCgQIX1VQQxIIBAr/Cv8AAAhfUExEEhYBERMKEIEAAAAAAAAA4R4AAAAAAAAURwdf
RFNNDAhfVF8wAKBHBpNoERMKEI9w/KV1h6ZLvQy6kKHscviiTgQBcJlqAF9UXzCgGJNfVF8wAKAJ
k2kBpBEDAQehBqQRAwEAoSigFpNfVF8wAaAKk1NER1YK/6QAoQOkAaEPoA2TX1RfMAoCpFNER1al
pABbgk8KUFIxNQhfQURSCgUIX1VQQxIIBAr/Cv8AAAhfUExEEhYBERMKEIEAAAAAAAAAsR4AAAAA
AAAURwdfRFNNDAhfVF8wAKBHBpNoERMKEI9w/KV1h6ZLvQy6kKHscviiTgQBcJlqAF9UXzCgGJNf
VF8wAKAJk2kBpBEDAQehBqQRAwEAoSigFpNfVF8wAaAKk1NER1YK/6QAoQOkAaEPoA2TX1RfMAoC
pFNER1alpABbgk8KUFIxNghfQURSCgYIX1VQQxIIBAr/Cv8AAAhfUExEEhYBERMKEIEAAAAAAAAA
sR4AAAAAAAAURwdfRFNNDAhfVF8wAKBHBpNoERMKEI9w/KV1h6ZLvQy6kKHscviiTgQBcJlqAF9U
XzCgGJNfVF8wAKAJk2kBpBEDAQehBqQRAwEAoSigFpNfVF8wAaAKk1NER1YK/6QAoQOkAaEPoA2T
X1RfMAoCpFNER1alpABbgk8KUFIxNwhfQURSCgcIX1VQQxIIBAr/Cv8AAAhfUExEEhYBERMKEIEA
AAAAAAAAsR4AAAAAAAAURwdfRFNNDAhfVF8wAKBHBpNoERMKEI9w/KV1h6ZLvQy6kKHscviiTgQB
cJlqAF9UXzCgGJNfVF8wAKAJk2kBpBEDAQehBqQRAwEAoSigFpNfVF8wAaAKk1NER1YK/6QAoQOk
AaEPoA2TX1RfMAoCpFNER1alpABbgjZQUjE4CF9BRFIKCAhfVVBDEggECv8K/wAACF9QTEQSFgER
EwoQgQAAAAAAAACxHgAAAAAAAAhfUFJXEgYCCg0KAwhfUzBXCgNbgFVTQlICClQKBFuBFFVTQlIC
AAhQTUVFAQAGUE1FUwEUFV9TVEEAoAqTWEhDSQCkCg+hA6QAFAZfRFNXAxQIX1JNVgCkABQOX1BS
MwCkEgYBVVNCQ1uCSwRTRUMwCF9BRFIMAAAaAAhfREVQEgYBUEVQRAhfUzBXCgNbgFBNRUICCoQK
BFuBFFBNRUICAAhQTUVFAQAGUE1FUwEUBl9EU1cDEIZrAS5fU0JfUENJMFuCiGoBR0ZYMAhfQURS
DAAAAgAIX0RFUBIVA1BFUERJMkM3Xl4uSTJDN1BNSUMIUERFUBIGAVBFUEQIX1MwVwoDFBBfRE9T
AXB7aAoHAERTRU4USDVfRE9EAHAATkRJRKAVkpNESURMAHBTRERMRElETERJRDGgFZKTRERMMgBw
U0RETERETDJESUQyoBWSk0RETDMAcFNERExEREwzRElEM6AVkpNEREw0AHBTRERMRERMNERJRDSg
FZKTRERMNQBwU0RETERETDVESUQ1oEcFk05ESUQBCFRNUDESDAIM/////wz/////cH0MAAABAERJ
RDEAiFRNUDEAAKAVlVNPQ1MKAnAMOQ8CAIhUTVAxAQChDnAMOA8CAIhUTVAxAQCkVE1QMaBCB5NO
RElECgIIVE1QMhIRAwz/////DP////8M/////3B9DAAAAQBESUQxAIhUTVAyAABwfQwAAAEARElE
MgCIVE1QMgEAoBaVU09DUwoCcAw5DwIAiFRNUDIKAgChD3AMOA8CAIhUTVAyCgIApFRNUDKgSwiT
TkRJRAoDCFRNUDMSFgQM/////wz/////DP////8M/////3B9DAAAAQBESUQxAIhUTVAzAABwfQwA
AAEARElEMgCIVE1QMwEAcH0MAAABAERJRDMAiFRNUDMKAgCgFpVTT0NTCgJwDDkPAgCIVE1QMwoD
AKEPcAw4DwIAiFRNUDMKAwCkVE1QM6BECpNORElECgQIVE1QNBIbBQz/////DP////8M/////wz/
////DP////9wfQwAAAEARElEMQCIVE1QNAAAcH0MAAABAERJRDIAiFRNUDQBAHB9DAAAAQBESUQz
AIhUTVA0CgIAcH0MAAABAERJRDQAiFRNUDQKAwCgFpVTT0NTCgJwDDkPAgCIVE1QNAoEAKEPcAw4
DwIAiFRNUDQKBACkVE1QNKBNC5RORElECgQIVE1QNRIgBgz/////DP////8M/////wz/////DP//
//8M/////3B9DAAAAQBESUQxAIhUTVA1AABwfQwAAAEARElEMgCIVE1QNQEAcH0MAAABAERJRDMA
iFRNUDUKAgBwfQwAAAEARElENACIVE1QNQoDAHB9DAAAAQBESUQ1AIhUTVA1CgQAoBaVU09DUwoC
cAw5DwIAiFRNUDUKBQChD3AMOA8CAIhUTVA1CgUApFRNUDWgFJVTT0NTCgKkEgoCCwAEDDkPAgCh
DaQSCgILAAQMOA8CAFuCQwhERDAxFDxfQURSCKAfk3sLAA9ESUQxAAsABHABRURQVnBESUQxRElE
WKQBoAmTRElEMQCkAaELpHsL//9ESUQxABQPX0RDUwCkQ0REU0RJRDEUD19ER1MApE5ERFNESUQx
FB9fRFNTAaAYk3toDAAAAMAADAAAAMBwTlNURUNTVEVbgkoYREQwMhQ/X0FEUgigIZN7CwAPRElE
MgALAARwCgJFRFBWcERJRDJESURYpAoCoAqTRElEMgCkCgKhC6R7C///RElEMgAUD19EQ1MApENE
RFNESUQyFA9fREdTAKRORERTRElEMhQfX0RTUwGgGJN7aAwAAADAAAwAAADAcE5TVEVDU1RFFEgN
X0JDTACkEk8MZwpQCjIAAQoCCgMKBAoFCgYKBwoICgkKCgoLCgwKDQoOCg8KEAoRChIKEwoUChUK
FgoXChgKGQoaChsKHAodCh4KHwogCiEKIgojCiQKJQomCicKKAopCioKKwosCi0KLgovCjAKMQoy
CjMKNAo1CjYKNwo4CjkKOgo7CjwKPQo+Cj8KQApBCkIKQwpECkUKRgpHCkgKSQpKCksKTApNCk4K
TwpQClEKUgpTClQKVQpWClcKWApZCloKWwpcCl0KXgpfCmAKYQpiCmMKZBQeX0JDTQGgF5CSlWgA
kpRoCmRBSU5UAWhwaEJSVEwUC19CUUMApEJSVExbgkMJREQwMxQ/X0FEUgigIZN7CwAPRElEMwAL
AARwCgNFRFBWcERJRDNESURYpAoDoAqTRElEMwCkCgOhC6R7C///RElEMwAUHF9EQ1MAoAqTRElE
MwCkCguhCqRDRERTRElEMxQPX0RHUwCkTkREU0RJRDMUH19EU1MBoBiTe2gMAAAAwAAMAAAAwHBO
U1RFQ1NURVuCQwlERDA0FD9fQURSCKAhk3sLAA9ESUQ0AAsABHAKBEVEUFZwRElENERJRFikCgSg
CpNESUQ0AKQKBKELpHsL//9ESUQ0ABQcX0RDUwCgCpNESUQ0AKQKC6EKpENERFNESUQ0FA9fREdT
AKRORERTRElENBQfX0RTUwGgGJN7aAwAAADAAAwAAADAcE5TVEVDU1RFW4JDCUREMDUUP19BRFII
oCGTewsAD0RJRDUACwAEcAoFRURQVnBESUQ1RElEWKQKBaAKk0RJRDUApAoFoQukewv//0RJRDUA
FBxfRENTAKAKk0RJRDUApAoLoQqkQ0REU0RJRDUUD19ER1MApE5ERFNESUQ1FB9fRFNTAaAYk3to
DAAAAMAADAAAAMBwTlNURUNTVEVbgkMJREQwNhQ/X0FEUgigIZN7CwAPRElENgALAARwCgZFRFBW
cERJRDZESURYpAoGoAqTRElENgCkCgahC6R7C///RElENgAUHF9EQ1MAoAqTRElENgCkCguhCqRD
RERTRElENhQPX0RHUwCkTkREU0RJRDYUH19EU1MBoBiTe2gMAAAAwAAMAAAAwHBOU1RFQ1NURVuC
QwlERDA3FD9fQURSCKAhk3sLAA9ESUQ3AAsABHAKB0VEUFZwRElEN0RJRFikCgegCpNESUQ3AKQK
B6ELpHsL//9ESUQ3ABQcX0RDUwCgCpNESUQ3AKQKC6EKpENERFNESUQ3FA9fREdTAKRORERTRElE
NxQfX0RTUwGgGJN7aAwAAADAAAwAAADAcE5TVEVDU1RFW4JDCUREMDgUP19BRFIIoCGTewsAD0RJ
RDgACwAEcAoIRURQVnBESUQ4RElEWKQKCKAKk0RJRDgApAoIoQukewv//0RJRDgAFBxfRENTAKAK
k0RJRDgApAoLoQqkQ0REU0RJRDgUD19ER1MApE5ERFNESUQ4FB9fRFNTAaAYk3toDAAAAMAADAAA
AMBwTlNURUNTVEVbgkQXREQxRhQdX0FEUgigCpNFRFBWAKQKH6ELpHsL//9ESURYABQbX0RDUwCg
CZNFRFBWAKQAoQqkQ0REU0RJRFgUD19ER1MApE5ERFNESURYFB9fRFNTAaAYk3toDAAAAMAADAAA
AMBwTlNURUNTVEUUSA1fQkNMAKQSTwxnClAKMgABCgIKAwoECgUKBgoHCggKCQoKCgsKDAoNCg4K
DwoQChEKEgoTChQKFQoWChcKGAoZChoKGwocCh0KHgofCiAKIQoiCiMKJAolCiYKJwooCikKKgor
CiwKLQouCi8KMAoxCjIKMwo0CjUKNgo3CjgKOQo6CjsKPAo9Cj4KPwpACkEKQgpDCkQKRQpGCkcK
SApJCkoKSwpMCk0KTgpPClAKUQpSClMKVApVClYKVwpYClkKWgpbClwKXQpeCl8KYAphCmIKYwpk
FB5fQkNNAaAXkJKVaACSlGgKZEFJTlQBaHBoQlJUTBQLX0JRQwCkQlJUTBROBlNEREwBdU5ESURw
e2gLDw8AYH0MAAAAgGBhoAmTRElETGCkYaAJk0RETDJgpGGgCZNEREwzYKRhoAmTRERMNGCkYaAJ
k0RETDVgpGGgCZNEREw2YKRhoAmTRERMN2CkYaAJk0RETDhgpGGkABRCB0NERFMBcHtoCw8PAGCg
B5MAYKQKHaAKk0NBRExgpAofoAqTQ0FMMmCkCh+gCpNDQUwzYKQKH6AKk0NBTDRgpAofoAqTQ0FM
NWCkCh+gCpNDQUw2YKQKH6AKk0NBTDdgpAofoAqTQ0FMOGCkCh+kCh0USAZORERTAXB7aAsPDwBg
oAaTAGCkAKAJk05BRExgpAGgCZNOREwyYKQBoAmTTkRMM2CkAaAJk05ETDRgpAGgCZNOREw1YKQB
oAmTTkRMNmCkAaAJk05ETDdgpAGgCZNOREw4YKQBpABbgElHRFACAAsAAVuBRwVJR0RQAABACE1B
RFIgAEAeAAFHSVZEAQABR1VNQQUACAAQAARHTUZOAQAbACBHU1RNIABAQEdTU0UBR1NTQg5HU0VT
AQAQQVNMRQgAGABACkFTTFMgW4BJR01NAE1BRFILADBbgRFJR01NAACAZBAABERDRkUEW4BJR0RN
AEFTTEILACBbgUgZSUdETQBTSUdOQAhTSVpFIE9WRVIgU1ZFUkAQVlZFUkAIR1ZFUkAITUJPWCBE
TU9EIABAUERSRFkgQ1NUUyBDRVZUIABACkRJREwgRERMMiBEREwzIERETDQgRERMNSBEREw2IERE
TDcgRERMOCBDUERMIENQTDIgQ1BMMyBDUEw0IENQTDUgQ1BMNiBDUEw3IENQTDggQ0FEMSBDQUwy
IENBTDMgQ0FMNCBDQUw1IENBTDYgQ0FMNyBDQUw4IE5BREwgTkRMMiBOREwzIE5ETDQgTkRMNSBO
REw2IE5ETDcgTkRMOCBBU0xQIFRJRFggQ0hQRCBDTElEIENEQ0sgU1hTVyBFVlRTIENOT1QgTlJE
WSAAQB5TQ0lFAUdFRkMER1hGQwNHRVNGCAAQUEFSTSBEU0xQIABAekFSRFkgQVNMQyBUQ0hFIEFM
U0kgQkNMUCBQRklUIENCTFYgQkNMTUAUQ1BGTSBFUEZNIFBMVVRAJVBGTUIgQ0NEViBQQ0ZUIABA
L0dWRDGAAAxQSEVEIEJERENAgAhEQlRCEjIVAAoHCjgLwAELAA4KPwvHAQsHDgv4AQs4DgvADwAA
AAAACwBwCwdwCzhwC8BxCwB+CENEQ1QSJAYSBAEKoBIEAQrIEgUBCwsBEgUBC0ABEgUBC2QBEgUB
C5ABCFNVQ0MBCE5WTEQKAghDUklUCgQITkNSVAoGFE9PR1NDSQgUQh1HQkRBCKAak0dFU0YAcAt5
AlBBUk1wAEdFU0akU1VDQ6Aak0dFU0YBcAtAAlBBUk1wAEdFU0akU1VDQ6BHBJNHRVNGCgR7UEFS
TQwAAP/vUEFSTXtQQVJNeYOIREJUQklCVFQAChAAUEFSTX1JQlRUUEFSTVBBUk1wAEdFU0akU1VD
Q6BLB5NHRVNGCgVwSVBTQ1BBUk19UEFSTXlJUEFUCggAUEFSTXJQQVJNCwABUEFSTX1QQVJNeUxJ
RFMKEABQQVJNclBBUk0MAAABAFBBUk19UEFSTXlJQkxDChIAUEFSTX1QQVJNeUlCSUEKFABQQVJN
cABHRVNGpFNVQ0OgLZNHRVNGCgZwSVRWRlBBUk19UEFSTXlJVFZNCgQAUEFSTXAAR0VTRqRTVUND
oEwGk0dFU0YKB3BHSVZEUEFSTX9QQVJNAVBBUk19UEFSTXlHTUZOAQBQQVJNfVBBUk0LABhQQVJN
fVBBUk15SURNUwoRAFBBUk19eYOIQ0RDVERDRkUAChUAUEFSTVBBUk1wAUdFU0akU1VDQ6Aqk0dF
U0YKCnAAUEFSTaAQSVNTQ31QQVJNCgNQQVJNcABHRVNGpFNVQ0NwAEdFU0akQ1JJVBRGLlNCQ0II
oEMEk0dFU0YAcABQQVJNoBSTUEZMVkZNQkxwDP2HDwBQQVJNoBSTUEZMVkZEVFBwDL2HDwBQQVJN
cABHRVNGpFNVQ0OgGJNHRVNGAXAAR0VTRnAAUEFSTaRTVUNDoBmTR0VTRgoDcABHRVNGcABQQVJN
pFNVQ0OgGZNHRVNGCgRwAEdFU0ZwAFBBUk2kU1VDQ6AZk0dFU0YKBXAAR0VTRnAAUEFSTaRTVUND
oDeTR0VTRgoGcHtQQVJNCg8ASVRWRnB6e1BBUk0K8AAKBABJVFZNcABHRVNGcABQQVJNpFNVQ0Og
RQSTR0VTRgoHoCqTUEFSTQBwQ0xJRGCgHHsMAAAAgGAAe0NMSUQKD0NMSURHTElEQ0xJRHAAR0VT
RnAAUEFSTaRTVUNDoBmTR0VTRgoIcABHRVNGcABQQVJNpFNVQ0OgJJNHRVNGCgl7UEFSTQr/SUJU
VHAAR0VTRnAAUEFSTaRTVUNDoEUGk0dFU0YKCntQQVJNCv9JUFNDoCF7elBBUk0KCAAK/wB7elBB
Uk0KCAAK/0lQQVR2SVBBVHt6UEFSTQoSAAoDSUJMQ3t6UEFSTQoUAAoHSUJJQXAAR0VTRnAAUEFS
TaRTVUNDoDWTR0VTRgoLe3pQQVJNAQABSUYxRXt6UEFSTQoRAAoPSURNU3AAR0VTRnAAUEFSTaRT
VUNDoBmTR0VTRgoQcABHRVNGcABQQVJNpFNVQ0OgLJNHRVNGChFweUxJRFMKCABQQVJNclBBUk0L
AAFQQVJNcABHRVNGpFNVQ0OgSQSTR0VTRgoSoCZ7UEFSTQEAoBCTelBBUk0BAAFwAUlTU0OhDHAA
R0VTRqRDUklUoQdwAElTU0NwAEdFU0ZwAFBBUk2kU1VDQ6AZk0dFU0YKE3AAR0VTRnAAUEFSTaRT
VUNDoCSTR0VTRgoUe1BBUk0KD1BBVlBwAEdFU0ZwAFBBUk2kU1VDQ3AAR0VTRqRTVUNDoBGTR0VG
QwoEcEdCREFHWEZDoBGTR0VGQwoGcFNCQ0JHWEZDcABHRUZDcAFTQ0lTcABHU1NFcABTQ0lFpAAU
GVBEUkQAoAySRFJEWVsiQVNMUKSSRFJEWRQdUFNUUwCgDpRDU1RTCgJbIkFTTFCkk0NTVFMKAxRC
BUdOT1QCoAdQRFJEpAFwaENFVlRwCgNDU1RToCyQk0NIUEQAk2kAoBiRlE9TWVML0AeVT1NZUwvW
B4ZQQ0kwaaEHhkdGWDBphkdGWDAKgKQAFBNHSERTAXBoVElEWKRHTk9UAQAUFEdMSUQBcGhDTElE
pEdOT1QKAgAUFEdEQ0sBcGhDRENLpEdOT1QKBAAUGVBBUkQAoAySQVJEWVsiQVNMUKSSQVJEWRRK
EkFJTlQCoA6Se1RDSEV5AWgAAKQBoAdQQVJEpAGgQAyTaAoCoEcJQ1BGTXtDUEZNCg9ge0VQRk0K
D2GgKpNgAaANe2EKBgBwCgZQRklUoRegDXthCggAcAoIUEZJVKEHcAFQRklUoCqTYAoGoA17YQoI
AHAKCFBGSVShFqALe2EBAHABUEZJVKEIcAoGUEZJVKAqk2AKCKALe2EBAHABUEZJVKEYoA17YQoG
AHAKBlBGSVShCHAKCFBGSVShDH9QRklUCgdQRklUfVBGSVQMAAAAgFBGSVRwCgRBU0xDoUIEoCiT
aAFweHdpCv8ACmQAAEJDTFB9QkNMUAwAAACAQkNMUHAKAkFTTEOhFqAQk2gAcGlBTFNJcAFBU0xD
oQOkAXABQVNMRaQAFBdTQ0lQAKAOkpNPVkVSAKSSR1NNSaQAW4JNDUlTUDAIX0FEUgs4DwhfRERO
DVZMVjIgSVNQIC0gODA4NjBGMzgACF9VSUQBCF9ERVASBgFQRVBEFEMFX1NUQQCgGJKVU09DUwoC
oAqTSVNQRAGkCg+hA6QAoTJwCzkPX0FEUnANVkxWMiBJU1AgLSA4MDg2MEYzOQBfREROoAqTSVNQ
RAGkCg+hA6QACFNCVUYREQoOhgkAAQAAwJAAAEAAeQAUC19DUlMApFNCVUYUBl9TUlMBFAZfRElT
ABQdX0RTTQSgBpNoAaQBoQ+gCJNoCgKkCgKhBKQKDxA5X1BSX1uDC0NQVTABAAAAAABbgwtDUFUx
AgAAAAAAW4MLQ1BVMgMAAAAAAFuDC0NQVTMEAAAAAABbAU1VVFgAW4BQUlQwAQqACgRbgQtQUlQw
E1A4MEggFE4HUDhYSAqgF5NoAHB9e1A4MEQMAP///wBpAFA4MESgG5NoAXB9e1A4MEQM/wD//wB5
aQoIAABQODBEoByTaAoCcH17UDgwRAz//wD/AHlpChAAAFA4MESgHJNoCgNwfXtQODBEDP///wAA
eWkKGAAAUDgwRHBQODBEUDgwSFuAU1BSVAEKsgoCW4ELU1BSVBFTU01QCBQSX1BJQwFwaEdQSUNw
aFBJQ01bgFNXQzABCxAGCg9bgR5TV0MwAUcxU18IABhHMUVfCAAoRzFTMghHMVMzCFuAU1dDMQFQ
TUJTCixbgRVTV0MxAwBAEEcwU18gACBHMEVOIBRCBV9QVFMBcABQODBEUDhYSABocP9HMVMzcP9H
MVMycAFHMVNfcAFHMUVfcP9HMFNfoCBbElRDR00AXC8FX1NCX1BDSTBMUENCVFBNX1BUU19oFEYT
X1dBSwlQOFhIAQqroDdORVhQoBh7T1NDQwoCAFwvA19TQl9QQ0kwTkhQR6AYe09TQ0MKBABcLwNf
U0JfUENJME5QTUWgSQ6Rk2gKA5NoCgSgFJNQRkxWRk1CTKAJk2gKBFBOT1SgDHtDRkdEDAAAAAEA
oEsLk09TWVML0gegQAt7Q0ZHRAEAoEsFlFwvA19QUl9DUFUwX1BQQwB0XC8DX1BSX0NQVTBfUFBD
AVwvA19QUl9DUFUwX1BQQ1BOT1RyXC8DX1BSX0NQVTBfUFBDAVwvA19QUl9DUFUwX1BQQ1BOT1Sh
SgRyXC8DX1BSX0NQVTBfUFBDAVwvA19QUl9DUFUwX1BQQ1BOT1R0XC8DX1BSX0NQVTBfUFBDAVwv
A19QUl9DUFUwX1BQQ1BOT1SkEgQCAAAURg9QTk9UCKBODE1QRU6gMXtQREMwCggAhlwuX1BSX0NQ
VTAKgKAae1BEQzAKEABbIgpkhlwuX1BSX0NQVTAKgaAxe1BEQzEKCACGXC5fUFJfQ1BVMQqAoBp7
UERDMQoQAFsiCmSGXC5fUFJfQ1BVMQqBoDF7UERDMgoIAIZcLl9QUl9DUFUyCoCgGntQREMyChAA
WyIKZIZcLl9QUl9DUFUyCoGgMXtQREMzCggAhlwuX1BSX0NQVTMKgKAae1BEQzMKEABbIgpkhlwu
X1BSX0NQVTMKgaEfhlwuX1BSX0NQVTAKgFsiCmSGXC5fUFJfQ1BVMAqBEI2hBV9TQl8IQ1JUVApu
CEFDVFQKVQhTQ1IwCwIBCFNDUjELAgEIU0NSMgsCAQhTQ1IzCwIBCEdDUjAKRghHQ1IxCkYIR0NS
MgpGCEdDUjMKRghHQ1I0CkYIUFNUMAo8CFBTVDEKPAhQU1QyCjwIUFNUMwo8CFBTVDQKPAhMUE1W
CgMIUERCRwAIUERQTQEIUERCUAEIRExQTxIJBgEBAQoZAQEIQlJRRAAIUFNDMQAIUFNDMgAIUFND
MwAIUFNBMQAIUFNBMgAIUFNBMwAUQg9fSU5JAHBEUENUQ1JUVHBEUFBUQUNUVHBER0MwR0NSMHBE
R0MxR0NSMXBER0MyR0NSMnBER0MzR0NSM3BER0M0R0NSNHBER1AwUFNUMHBER1AxUFNUMXBER1Ay
UFNUMnBER1AzUFNUM3BER1A0UFNUNHBEU0MwU0NSMHBEU0MxU0NSMXBEU0MyU0NSMnBEU0MzU0NS
M3BETFBNTFBNVnBEREJHUERCR3BMUE9FiERMUE8BAHBMUFBTiERMUE8KAgBwTFBTVIhETFBPCgMA
cExQUEOIRExQTwoEAHBMUFBGiERMUE8KBQBwRFBNRVBEUE0QSw9QQ0kwFEYOX0lOSQBwC9AHT1NZ
U6BGDVsSXF9PU0lgoBtfT1NJDVdpbmRvd3MgMjAwMQBwC9EHT1NZU6AfX09TSQ1XaW5kb3dzIDIw
MDEgU1AxAHAL0QdPU1lToB9fT1NJDVdpbmRvd3MgMjAwMSBTUDIAcAvSB09TWVOgG19PU0kNV2lu
ZG93cyAyMDA2AHAL1gdPU1lToBtfT1NJDVdpbmRvd3MgMjAwOQBwC9kHT1NZU6AbX09TSQ1XaW5k
b3dzIDIwMTIAcAvcB09TWVOgG19PU0kNV2luZG93cyAyMDEzAHAL3QdPU1lTFAZOSFBHCBQGTlBN
RQhbgkM8R1BFRAhfQURSAAhfSElEDUlOVDAwMDIACF9DSUQNSU5UMDAwMgAIX0RETg1WaXJ0dWFs
IEdQSU8gY29udHJvbGxlcgAIX1VJRAEISU5TVAEIWFRNUABbgFNDSVMADMAw0P4KBFuBQwRTQ0lT
A0xHQkUBTEhBRAFMQVRBAUxESU8BTEFSRAFMSU8xAUxDRVABTEFOQgFMSENJAUxPVEcBTEVDSQFM
SFNJARQLX0hSVgCkU09DUxRFBF9EU00EoDaTaBETChBptDiLlW8IS5sCLe/MLSw1oA6TagCgCZNp
AaQRAwEDoA2TagGkclBNQlMKIACkAKEGpBEDAQAUH19DUlMACFJCVUYRDgoLiQYAAQEJAAAAeQCk
UkJVRhQJX1NUQQCkCg8UOV9BRUkACFJCVUYRKAoljCAAAQABABAAAgAAAAAXAAAZACMAAAACAFxf
U0IuR1BFRAB5AKRSQlVGFEEmX0wwMgCgTwSTWEhDSQCgRgSTXl4vA1BDSTBFSEMxUE1FUwFwAF5e
LwNQQ0kwRUhDMVBNRUVwXl4vA1BDSTBFSEMxUE1FRWCGXl4uUENJMEVIQzEKAqFPE6A4lFNPQ1MK
BXteXi8DUENJMFhIQzFQTUNTCwCAWFRNUKAXk1hUTVALAICGXl4uUENJMFhIQzEKAqFDEKBMBJRT
T0NTCgJ7Xl4vA1BDSTBYSEMxUE1DUwsAgFhUTVCgKpNYVE1QCwCAcAqBXl4vA1BDSTBYSEMxUE1D
SIZeXi5QQ0kwWEhDMQoCoUMLe15eLwNQQ0kwWEhDMVBNQ1MLAwFYVE1QoE8Hk1hUTVALAwFwCwAB
Xl4vA1BDSTBYSEMxUE1DU1siCgp7Xl4vA1BDSTBYSEMxUE1DUwsAgFhUTVCgHJNYVE1QCwCAcAqB
Xl4vA1BDSTBYSEMxUE1DSKEVcAsDAV5eLwNQQ0kwWEhDMVBNQ1NbIgoKhl5eLlBDSTBYSEMxCgKh
GHAKgV5eLwNQQ0kwWEhDMVBNQ0hbIgoKoEIIkpNPVEdNAKBIB5NeXi8DUENJME9URzFQTUVTAUFE
QkcNT1RHIHdha2UAcABeXi8DUENJME9URzFQTUVFcABeXi8DUENJME9URzFDUE1FcABeXi8DUENJ
ME9URzFVMkVOcABeXi8DUENJME9URzFVM0VOhl5eLlBDSTBPVEcxCgKgRgSTXl4vA1BDSTBTRUMw
UE1FUwFwAF5eLwNQQ0kwU0VDMFBNRUVwXl4vA1BDSTBTRUMwUE1FRWCGXl4uUENJMFNFQzAKAluC
RBhHUE8wCF9BRFIACF9ISUQNSU5UMzNGQwAIX0NJRA1JTlQzM0ZDAAhfRERODVZhbGxleVZpZXcg
R2VuZXJhbCBQdXJwb3NlIElucHV0L091dHB1dCAoR1BJTykgY29udHJvbGxlcgAIX1VJRAEUK19D
UlMACFJCVUYRGgoXhgkAAQDA0P4AEAAAiQYADQExAAAAeQCkUkJVRhQJX1NUQQCkCg8IQVZCTAAU
El9SRUcCoAuTaAoIcGlBVkJMW4BHUE9QCAAKDFuBSwtHUE9QAQIRJgojjCAAAQEBAAIAAAAAAAAX
AAAZACMAAAA1AFxfU0IuR1BPMABCVEQzAQIRJgojjCAAAQEBAAIAAAAAAAAXAAAZACMAAAA6AFxf
U0IuR1BPMABTVVNCAQIRJgojjCAAAQEBAAIAAAAAAAAXAAAZACMAAAA7AFxfU0IuR1BPMABTSEQz
AQIRJgojjCAAAQEBAAIAAAAAAAAXAAAZACMAAAA8AFxfU0IuR1BPMABUQ0QzAVuCSQhHUE8xCF9B
RFIACF9ISUQNSU5UMzNGQwAIX0NJRA1JTlQzM0ZDAAhfRERODVZhbGxleVZpZXcgR1BOQ09SRSBj
b250cm9sbGVyAAhfVUlECgIUK19DUlMACFJCVUYRGgoXhgkAAQDQ0P4AEAAAiQYADQEwAAAAeQCk
UkJVRhQJX1NUQQCkCg9bgkp2R1BPMghfQURSAAhfSElEDUlOVDMzRkMACF9DSUQNSU5UMzNGQwAI
X0RETg1WYWxsZXlWaWV3IEdQU1VTIGNvbnRyb2xsZXIACF9VSUQKAxQrX0NSUwAIUkJVRhEaCheG
CQABAODQ/gAQAACJBgANATIAAAB5AKRSQlVGFAlfU1RBAKQKDxRJCV9BRUkACFJCVUYRKAoljCAA
AQABABIAAQAAAAAXAAAZACMAAAASAFxfU0IuR1BPMgB5AAhGQlVGEUwECkiMIAABAAEAEgABAAAA
ABcAABkAIwAAAAYAXF9TQi5HUE8yAIwgAAEAAQASAAEAAAAAFwAAGQAjAAAAEgBcX1NCLkdQTzIA
eQCgDJNGU0FTAaRGQlVGpFJCVUYIQkZTQREGCgMAAQCMQkZTQQBCWVlZjEJGU0EKAkRBVFQIQkZT
QhEGCgMAAQCMQkZTQgBZWVlZjEJGU0IKAkRUVFQUSzxfTDA2AKBDPJCTXl4uSTJDM0FWQkwBkJNe
Xi8DSTJDN1BNSUNBVkJMAZNeXi8DSTJDN1BNSUNBVkJHAXBeXi5JMkMzRlNSQ0JGU0F7REFUVAof
REFUVHBeXi5JMkMzRlNEVEJGU0J7RFRUVAFEVFRUoBeTREFUVABeXi8DUENJMFhIQzFQV09GoRFe
Xi8DUENJMFhIQzFQV09OoEoOk0RBVFQKFqBJBZNEVFRUAKBABZNeXi8DSTJDN1BNSUNBVkJMAXAB
Xl4vA0kyQzdQTUlDVkJVU6Apk15eLwNJMkM3UE1JQ0FWQkcBcAFeXi8DSTJDN1BNSUNHQlVTWyIK
HnBeXi5JMkMzRlNJTUJGU0J9RFRUVAFEVFRUcEJGU0JeXi5JMkMzRlNJTXtEVFRUCv5EVFRUWyIK
ZHBCRlNCXl4uSTJDM0ZTSU1wXl4uSTJDM0ZTSU5CRlNCoC2TQkRJRAoEoCSTRkJJRAoDoBuTXl4u
R1BPMEFWQkwBcABeXi5HUE8wU1VTQqBHBZGRk0RBVFQKEZNEQVRUCg2TREFUVAoKcF5eLkkyQzNG
U0lOQkZTQqAtk0JESUQKBKAkk0ZCSUQKA6Abk15eLkdQTzBBVkJMAXAAXl4uR1BPMFNVU0KhSx6g
QwqTREFUVAoMcF5eLkkyQzNGU01TQkZTQntEVFRUCgNEVFRUoDCTQkRJRAoEoBOTRkJJRAoCfURU
VFQKbERUVFSgE5NGQklECgN9RFRUVApIRFRUVHBCRlNCXl4uSTJDM0ZTTVNwXl4uSTJDM0ZTSU5C
RlNCoC2TQkRJRAoEoCSTRkJJRAoDoBuTXl4uR1BPMEFWQkwBcABeXi5HUE8wU1VTQqFEFKBNB5NE
QVRUCgVwXl4uSTJDM0ZTTVNCRlNCe0RUVFQKA0RUVFR9RFRUVApIRFRUVHBCRlNCXl4uSTJDM0ZT
TVNwXl4uSTJDM0ZTSU5CRlNCoC2TQkRJRAoEoCSTRkJJRAoDoBuTXl4uR1BPMEFWQkwBcABeXi5H
UE8wU1VTQqFDDKBOCpNEQVRUAKBABZNeXi8DSTJDN1BNSUNBVkJMAXAAXl4vA0kyQzdQTUlDVkJV
U6Apk15eLwNJMkM3UE1JQ0FWQkcBcAFeXi8DSTJDN1BNSUNHQlVTWyIKHqAtk0JESUQKBKAkk0ZC
SUQKA6Abk15eLkdQTzBBVkJMAXABXl4uR1BPMFNVU0JwCidEVFRUcEJGU0JeXi5JMkMzRlNNU3Be
Xi5JMkMzRlNJTkJGU0KhEXBeXi5JMkMzRlNJTkJGU0IIQlVGRhEECgf/jEJVRkYAU1RBVIxCVUZG
AUxFTl+MQlVGRgoCVE1QMIxCVUZGCgNBWDAwjEJVRkYKBEFYMDGMQlVGRgoFQVgxMIxCVUZGCgZB
WDExFEITX0wxMgBwAGCgTwdbElwvA19TQl9JMkMxQkFUQ2FwXl4vA0kyQzFCQVRDSU5UUmCgGZMK
/2BBREJHDUlOVFIgUkQgRkFJTACkAKAGkwBgpABBREJHDVVMUE1DIElOVFIAQURCR2CGQURQMQqA
hl5eLkkyQzFCQVRDCoCGXl4uSTJDMUJBVEMKgaBHBpNgCg6GU1RSMwqQoEkFk15eLkkyQzFBVkJM
AXBeXi5JMkMxVEhSTUJVRkagOZNTVEFUAHBBWDAxZHtkCu9kcEFYMTFle2UK72VwZEFYMDFwZUFY
MTFwQlVGRl5eLkkyQzFUSFJNoD9bElwuX1NCX0RQVEZjoBeRk2ABk2AKAoZEUFRGCoaGVENIRwqA
oBiRk2AKB5NgCgiGRFBURgqGhlRDSEcKgAhBVkJMABQSX1JFRwKgC5NoCghwaUFWQkxbgEdQT1AI
AAoMW4FOCEdQT1ABAhEmCiOMIAABAQEAAgAAAAAAABcAABkAIwAAABQAXF9TQi5HUE8yAFdGRDMB
AhEmCiOMIAABAQEAAgAAAAAAABcAABkAIwAAABYAXF9TQi5HUE8yAFdXRDMBAhEmCiOMIAABAQEA
AgAAAAAAABcAABkAIwAAAB0AXF9TQi5HUE8yAFdXUjMBW4JCYFBFUEQIX0hJRA1JTlQzMzk2AAhf
Q0lEDEHQDYAIX1VJRAEIUEVQUAAIREVWUxIDAQAIREVWWBJPEhISEwINXF9TQi5QQ0kwLlhIQzEA
ARITAg1cX1NCLlBDSTAuRUhDMQABEhMCDVxfU0IuUENJMC5HRlgwAAESGAINXF9TQi5QQ0kwLkdG
WDAuSVNQMAABEhMCDVxfU0IuUENJMC5TRUMwAAESDgINXF9TQi5JMkMxAAESDgINXF9TQi5JMkMy
AAESDgINXF9TQi5JMkMzAAESDgINXF9TQi5JMkM0AAESDgINXF9TQi5JMkM1AAESDgINXF9TQi5J
MkM2AAESDgINXF9TQi5JMkM3AAESDgINXF9TQi5TREhBAAESDgINXF9TQi5TREhCAAESDgINXF9T
Qi5TREhDAAESDgINXF9TQi5TUEkxAAESDgINXF9TQi5VUlQxAAESDgINXF9TQi5VUlQyAAEIQ0RN
UBICAghERVZZEkQ3FhIYAw1cX1BSLkNQVTAAARIJAgASBQIK/wASGAMNXF9QUi5DUFUxAAESCQIA
EgUCCv8AEhgDDVxfUFIuQ1BVMgABEgkCABIFAgr/ABIYAw1cX1BSLkNQVTMAARIJAgASBQIK/wAS
HgMNXF9TQi5QQ0kwLkdGWDAAARIKAgASBgIK/woDEiMDDVxfU0IuUENJMC5HRlgwLklTUDAAARIK
AgASBgIK/woDEisDDVxfU0IuSTJDMQABEhwFABIEAgAAEgUCAQoDEgYCCgIKAxIGAgoDCgMSKwMN
XF9TQi5JMkMyAAESHAUAEgQCAAASBQIBCgMSBgIKAgoDEgYCCgMKAxIrAw1cX1NCLkkyQzMAARIc
BQASBAIAABIFAgEKAxIGAgoCCgMSBgIKAwoDEisDDVxfU0IuSTJDNAABEhwFABIEAgAAEgUCAQoD
EgYCCgIKAxIGAgoDCgMSKwMNXF9TQi5JMkM1AAESHAUAEgQCAAASBQIBCgMSBgIKAgoDEgYCCgMK
AxIrAw1cX1NCLkkyQzYAARIcBQASBAIAABIFAgEKAxIGAgoCCgMSBgIKAwoDEisDDVxfU0IuSTJD
NwABEhwFABIEAgAAEgUCAQoDEgYCCgIKAxIGAgoDCgMSMQMNXF9TQi5QQ0kwLlhIQzEAARIdBQAS
BQIACgMSBQIBCgMSBgIKAgoDEgYCCgMKAxIwAw1cX1NCLlBDSTAuU0VDMAABEhwFABIEAgAAEgUC
AQoDEgYCCgIKAxIGAgoDCgMSKgMNXF9TQi5MUEVBAAESGwUAEgQCAAASBAIBABIGAgoCCgMSBgIK
AwoDEisDDVxfU0IuU0RIQQABEhwFABIEAgAAEgUCAQoDEgYCCgIKAxIGAgoDCgMSKwMNXF9TQi5T
REhCAAESHAUAEgQCAAASBQIBCgMSBgIKAgoDEgYCCgMKAxIrAw1cX1NCLlNESEMAARIcBQASBAIA
ABIFAgEKAxIGAgoCCgMSBgIKAwoDEisDDVxfU0IuU1BJMQABEhwFABIEAgAAEgUCAQoDEgYCCgIK
AxIGAgoDCgMSKwMNXF9TQi5VUlQxAAESHAUAEgQCAAASBQIBCgMSBgIKAgoDEgYCCgMKAxIrAw1c
X1NCLlVSVDIAARIcBQASBAIAABIFAgEKAxIGAgoCCgMSBgIKAwoDCEJDQ0QSLAESKQINXF9TQi5T
REhBABIbARIYAxIJBQAKIAAKA/8SCgMM/P///wAKBAAUCV9TVEEApAoPFEsNX0RTTQygRAeTaBET
ChDgv/64+LpLRa7NSfuRE3shoAmTagCkEQMBD6ANk2oBcAFQRVBQpAoPoBmTagoCoAmTaQCkREVW
U6AJk2kBpERFVligKZNqCgNwDVxfU0IuU0RIQQCIQ0RNUAAAcEVNMUGIQ0RNUAEApENETVCgTAWT
aBETChCgQOvE0mziEbz9CAAgDJpmoAmTagCkEQMBB6AJk2oBpERFVlmgL5NqCgJwRU0xQWByYAqE
YHBgiIOIg4iDiIOIQkNDRAAAAQAAAAAACgQApEJDQ0SkAVuCSBxTREhBCF9BRFIACF9ISUQNODA4
NjBGMTQACF9DSUQNUE5QMEQ0MAAIX0RETg1JbnRlbChSKSBlTU1DIENvbnRyb2xsZXIgLSA4MDg2
MEYxNAAIX1VJRAEIX0RFUBIGAVBFUEQIUkJGMREaCheGCQABAAAAAAAQAACJBgAFAS0AAAB5AAhS
QkYyERoKF4YJAAEAAAAAABAAAIkGAAUBLAAAAHkAFEkGX0NSUwCKUkJGMQoEQjBCMYpSQkYxCghC
MEwxcEVNMEFCMEIxcEVNMExCMEwxilJCRjIKBEIwQjKKUkJGMgoIQjBMMnBFTTBBQjBCMnBFTTBM
QjBMMqAMk0VNVlIBpFJCRjKkUkJGMRQJX1NUQQCkCg8UN19QUzMAfVBTQVQKA1BTQVR9UFNBVABQ
U0FUoBuRlVNPQ1MKApCTU09DUwoCk0VNVlIBWyIKAhQ6X1BTMAB7UFNBVAz8////UFNBVH1QU0FU
AFBTQVSgG5GVU09DUwoCkJNTT0NTCgKTRU1WUgFbIgoCW4BLRVlTAEVNMUELAAFbgQ5LRVlTQwBA
QlBTQVQgFAZfRElTAFuCFUVNTUQIX0FEUgoIFAhfUk1WAKQAW4JKQlNESEIIX0FEUgAIX0hJRA1J
TlQzM0JCAAhfQ0lEDVBOUDBENDAACF9ERE4NSW50ZWwoUikgU0RJTyBDb250cm9sbGVyIC0gODA4
NjBGMTUACF9VSUQKAghfSFJWCgIIX0RFUBIKAlBFUERHUE8yCFBTVFMACFJCVUYRGgoXhgkAAQAA
AAAAEAAAiQYABQEuAAAAeQAUM19DUlMAilJCVUYKBEIwQkGKUkJVRgoIQjBMTnBTSTBBQjBCQXBT
STBMQjBMTqRSQlVGFC1fU1RBAKASkpRTVEVQCgRwU0RNRF9IUlagEJGTU0kwQQCTU0QyRAGkAKQK
DxQGX0RJUwAUG19QUzMAfVBTQVQKA1BTQVR9UFNBVABQU0FUFEkEX1BTMAB7UFNBVAz8////UFNB
VH1QU0FUAFBTQVSgKZNQU1RTAKAhk15eLkdQTzJBVkJMAXABXl4uR1BPMldGRDNwAVBTVFNbgEtF
WVMAU0kxQQsAAVuBDktFWVNDAEBCUFNBVCBbgkwMQlJDTQhfQURSAQhfREVQEgYBR1BPMhQUX1NU
QQCgCpNCRElECgOkAKQKDxQIX1JNVgCkAAhfUFJXEgQCAAAIX1M0VwoCCF9TMFcKAhQfX0NSUwAI
UkJVRhEOCguJBgATAUkAAAB5AKRSQlVGFCpfUFMzAKAjk15eXi5HUE8yQVZCTAFwAF5eXi5HUE8y
V0ZEM3AAUFNUUxQyX1BTMACgK5NQU1RTAKAjk15eXi5HUE8yQVZCTAFwAV5eXi5HUE8yV0ZEM3AB
UFNUU1uCTgdCUkMyCF9BRFIKAhQUX1NUQQCgCpNCRElECgOkAKQKDxQIX1JNVgCkABRCBV9DUlMA
CE5BTV8REgoPXF9TQi5TREhCLkJSQ00ACFNQQl8RDwoMjhgAAQDAAgAAAQAACEVORF8RBQoCeQBz
U1BCX05BTV9gc2BFTkRfYaRhW4JHFUJSQzMIX0FEUgEIX0RFUBIGAUdQTzIIX0hJRA1CQ000MzIx
AAhfQ0lEDUJDTTQzMjQxAAhHTU9EESgKJYwgAAEBAQACAAAAAAAAFwAAGQAjAAAAFABcX1NCLkdQ
TzIAeQBbgEdQT1AIAAoMW4EQR1BPUAECR01PRFdGRDMBFBRfU1RBAKALk0JESUQKA6QKD6QAFAhf
Uk1WAKQACF9QUlcSBAIAAAhfUzRXCgIIX1MwVwoCFEMEX0NSUwAIUkJVRhExCi6MIAABAQEAAgAA
AAAAABcAABkAIwAAAA8AXF9TQi5HUE8yAIkGABMBSQAAAHkApFJCVUYUKl9QUzMAoCOTXl5eLkdQ
TzJBVkJMAXAAXl5eLkdQTzJXRkQzcABQU1RTFDJfUFMwAKArk1BTVFMAoCOTXl5eLkdQTzJBVkJM
AXABXl5eLkdQTzJXRkQzcAFQU1RTW4JMF1NESEMIX0FEUgAIX0hJRA04MDg2MEYxNAAIX0NJRA1Q
TlAwRDQwAAhfRERODUludGVsKFIpIFNEIENhcmQgQ29udHJvbGxlciAtIDgwODYwRjE2AAhfVUlE
CgMIX0RFUBIKAlBFUERHUE8wCFJCVUYRQQYKXYYJAAEAAAAAABAAAIkGAAUBLwAAAIwgAAEAAQAd
AAMAABAnFwAAGQAjAAAAJgBcX1NCLkdQTzAAjCAAAQEBAAkAAAAAAAAXAAAZACMAAAAmAFxfU0Iu
R1BPMAB5ABQzX0NSUwCKUkJVRgoEQjBCQYpSQlVGCghCMExOcFNEMEFCMEJBcFNEMExCMExOpFJC
VUYUGl9TVEEAoBCRk1NEMEEAk1NEM0QBpACkCg8UG19QUzMAfVBTQVQKA1BTQVR9UFNBVABQU0FU
FB5fUFMwAHtQU0FUDPz///9QU0FUfVBTQVQAUFNBVFuAS0VZUwBTRDFBCwABW4EOS0VZU0MAQEJQ
U0FUIFuCRgtHRE0xCF9ISUQNSU5UTDlDNjAACF9ERE4NSW50ZWwoUikgRE1BIENvbnRyb2xsZXIg
IzEgLSBJTlRMOUM2MAAIX1VJRAEIUkJVRhEaCheGCQABAAAAAABAAACJBgAFASoAAAB5ABQzX0NS
UwCKUkJVRgoEQjBCQYpSQlVGCghCMExOcEQxMEFCMEJBcEQxMExCMExOpFJCVUYUGl9TVEEAoBCR
k0QxMEEAk0wxMEQBpACkCg9bgkcLR0RNMghfSElEDUlOVEw5QzYwAAhfRERODUludGVsKFIpIERN
QSBDb250cm9sbGVyICMyIC0gSU5UTDlDNjAACF9VSUQKAghSQlVGERoKF4YJAAEAAAAAAEAAAIkG
AAUBKwAAAHkAFDNfQ1JTAIpSQlVGCgRCMEJBilJCVUYKCEIwTE5wRDIwQUIwQkFwRDIwTEIwTE6k
UkJVRhQaX1NUQQCgEJGTRDIwQQCTTDIwRAGkAKQKD1uCQgxQV00xCF9BRFIACF9ISUQNODA4NjBG
MDkACF9DSUQNODA4NjBGMDkACF9ERE4NSW50ZWwoUikgUFdNIENvbnRyb2xsZXIgIzEgLSA4MDg2
MEYwOAAIX1VJRAEIUkJVRhERCg6GCQABAAAAAAAQAAB5ABQzX0NSUwCKUkJVRgoEQjBCQYpSQlVG
CghCMExOcFAxMEFCMEJBcFAxMExCMExOpFJCVUYUGl9TVEEAoBCRk1AxMEEAk0wxMUQBpACkCg9b
gkMMUFdNMghfQURSAAhfSElEDTgwODYwRjA5AAhfQ0lEDTgwODYwRjA5AAhfRERODUludGVsKFIp
IFBXTSBDb250cm9sbGVyICMyIC0gODA4NjBGMDkACF9VSUQKAghSQlVGEREKDoYJAAEAAAAAABAA
AHkAFDNfQ1JTAIpSQlVGCgRCMEJBilJCVUYKCEIwTE5wUDIwQUIwQkFwUDIwTEIwTE6kUkJVRhQa
X1NUQQCgEJGTUDIwQQCTTDEyRAGkAKQKD1uCQEJVUlQxCF9BRFIACF9ISUQNODA4NjBGMEEACF9D
SUQNODA4NjBGMEEACF9ERE4NSW50ZWwoUikgSFMtVUFSVCBDb250cm9sbGVyICMxIC0gODA4NjBG
MEEACF9VSUQBCF9ERVASBgFQRVBECFJCVUYRJgojhgkAAQAAAAAAEAAAiQYABQEnAAAAVQIAAgAC
VQMAAwACeQAUC19IUlYApFNPQ1MUM19DUlMAilJCVUYKBEIwQkGKUkJVRgoIQjBMTnBVMTBBQjBC
QXBVMTBMQjBMTqRSQlVGFBpfU1RBAKAQkZNVMTBBAJNMMTNEAaQApAoPFBtfUFMzAH1QU0FUCgNQ
U0FUfVBTQVQAUFNBVBQeX1BTMAB7UFNBVAz8////UFNBVH1QU0FUAFBTQVRbgEtFWVMAVTExQQsA
AVuBDktFWVNDAEBCUFNBVCBbgkIUQlRIMAhfSElEDUJDTTJFM0EAFBRfU1RBAKAKk0JESUQKA6QA
pAoPFEgRX0NSUwAIVUJVRhFFBwpxjh0AAQADAjQAAQoAAMIBACAAIAAA/FxfU0IuVVJUMQCJBgAT
AUYAAACMIAABAQEAAgAAAAAAABcAABkAIwAAADQAXF9TQi5HUE8wAIwgAAEBAQACAAAAAAAAFwAA
GQAjAAAANQBcX1NCLkdQTzAAeQAIUEJVRhFFBwpxjh0AAQADAjQAAQoAAMIBACAAIAAA/FxfU0Iu
VVJUMQCJBgATAUYAAACMIAABAQEAAgAAAAAAABcAABkAIwAAADUAXF9TQi5HUE8wAIwgAAEBAQAC
AAAAAAAAFwAAGQAjAAAANABcX1NCLkdQTzAAeQCgFZNCRElECgSgDJNGQklEAKRQQlVGpFVCVUZb
gk4YQlRIMQhfSElEDUJDTTJFMUEACFVBUlQAFE4VX0NSUwAIVUJVRhFICQqUjh0AAQADAjQAAQoA
AMIBACAAIAAA/FxfU0IuVVJUMQCJBgATAUYAAACMIAABAQEAAgAAAAAAABcAABkAIwAAADQAXF9T
Qi5HUE8wAIwgAAEBAQACAAAAAAAAFwAAGQAjAAAANQBcX1NCLkdQTzAAjCAAAQEBAAEAAAAAAAAX
AAAZACMAAACTAFxfU0IuR1BPMAB5AAhQQlVGEUgJCpSOHQABAAMCNAABCgAAwgEAIAAgAAD8XF9T
Qi5VUlQxAIkGABMBRgAAAIwgAAEBAQACAAAAAAAAFwAAGQAjAAAANABcX1NCLkdQTzAAjCAAAQEB
AAIAAAAAAAAXAAAZACMAAAA1AFxfU0IuR1BPMACMIAABAQEAAQAAAAAAABcAABkAIwAAAJMAXF9T
Qi5HUE8wAHkAoBWTQkRJRAoEoAyTRkJJRACkUEJVRqRVQlVGFBRfU1RBAKALk0JESUQKA6QKD6QA
W4JEKFVSVDIIX0FEUgAIX0hJRA04MDg2MEYwQQAIX0NJRA04MDg2MEYwQQAIX0RETg1JbnRlbChS
KSBIUy1VQVJUIENvbnRyb2xsZXIgIzIgLSA4MDg2MEYwQwAIX1VJRAoCCF9ERVASBgFQRVBECFJC
VUYRJgojhgkAAQAAAAAAEAAAiQYABQEoAAAAVQQABAACVQUABQACeQAUC19IUlYApFNPQ1MUM19D
UlMAilJCVUYKBEIwQkGKUkJVRgoIQjBMTnBVMjBBQjBCQXBVMjBMQjBMTqRSQlVGFBpfU1RBAKAQ
kZNVMjBBAJNMMTREAaQApAoPFBtfUFMzAH1QU0FUCgNQU0FUfVBTQVQAUFNBVBQeX1BTMAB7UFNB
VAz8////UFNBVH1QU0FUAFBTQVRbgEtFWVMAVTIxQQsAAVuBDktFWVNDAEBCUFNBVCBbgksIR1BT
MAhfSElEDUFBTTQ3NTIACF9IUlYAFEsFX0NSUwAIVUJVRhFJBApFjh0AAQADAjUAAQoAAMIBACAA
IAAA/FxfU0IuVVJUMgCMIAABAQEAAgAAAAAAABcAABkAIwAAAAEAXF9TQi5HUE8wAHkApFVCVUYU
FF9TVEEAoAqTQkRJRAoDpACkCg9bgkgKR1BTMQhfSElEDUJDTTQ3NTIAFE4HX0NSUwAIVUJVRhFM
Bgpojh0AAQADAjUAAQoAAMIBACAAIAAA/FxfU0IuVVJUMgCMIAABAQEAAgAAAAAAABcAABkAIwAA
ADMAXF9TQi5HUE8wAIwgAAEBAQACAAAAAAAAFwAAGQAjAAAAAQBcX1NCLkdQTzAAeQCkVUJVRhQU
X1NUQQCgC5NCRElECgOkCg+kAFuCRhtTUEkxCF9BRFIACF9ISUQNODA4NjBGMEUACF9DSUQNODA4
NjBGMEUACF9ERVASBgFQRVBECF9ERE4NSW50ZWwoUikgU1BJIENvbnRyb2xsZXIgLSA4MDg2MEYw
RQAIUkJVRhEmCiOGCQABAAAAAAAQAACJBgAFASkAAABVAAAAAAJVAQABAAJ5ABQLX0hSVgCkU09D
UxQzX0NSUwCKUkJVRgoEQjBCQYpSQlVGCghCMExOcFNQMEFCMEJBcFNQMExCMExOpFJCVUYUGl9T
VEEAoBCRk1NQMEEAk0wxNUQBpACkCg8UG19QUzMAfVBTQVQKA1BTQVR9UFNBVABQU0FUFB5fUFMw
AHtQU0FUDPz///9QU0FUfVBTQVQAUFNBVFuAS0VZUwBTUDFBCwABW4EOS0VZU0MAQEJQU0FUIFuC
RQdGUE5UCF9ISUQNQVVUSDI3NTAACF9ERE4NQXV0aGVuVGVjIEFFUzI3NTAAFD5fQ1JTAAhVQlVG
ES0KKo4cAAEAAgIAAAEJAAASegAIAQABAFxfU0IuU1BJMQCJBgADAUgAAAB5AKRVQlVGFAhfU1RB
AKQAW4JBBU5GQzIIX0FEUgAIX0hJRA1OWFA1NDQyAAhfQ0lEDU5YUDU0NDIACF9ERE4NTlhQIE5G
QwAIX1VJRAEUFF9TVEEAoAuTTkZDUwoCpAoPpABbgkgUSTJDMQhfQURSAAhfSElEDTgwODYwRjQx
AAhfQ0lEDTgwODYwRjQxAAhfREVQEgYBUEVQRAhfRERODUludGVsKFIpIEkyQyBDb250cm9sbGVy
ICMxIC0gODA4NjBGNDEACF9VSUQBCFJCVUYRJgojhgkAAQAAAAAAEAAAiQYABQEgAAAAVRAAAAAC
VREAAQACeQAUC19IUlYApFNPQ1MUM19DUlMAilJCVUYKBEIwQkGKUkJVRgoIQjBMTnBJMTBBQjBC
QXBJMTBMQjBMTqRSQlVGFBpfU1RBAKAQkZNJMTBBAJNMMjFEAaQApAoPFBtfUFMzAH1QU0FUCgNQ
U0FUfVBTQVQAUFNBVBQeX1BTMAB7UFNBVAz8////UFNBVH1QU0FUAFBTQVRbgEtFWVMASTExQQsA
AVuBDktFWVNDAEBCUFNBVCBbgkshSTJDMghfQURSAAhfSElEDTgwODYwRjQxAAhfQ0lEDTgwODYw
RjQxAAhfREVQEgYBUEVQRAhfRERODUludGVsKFIpIEkyQyBDb250cm9sbGVyICMyIC0gODA4NjBG
NDIACF9VSUQKAghSQlVGESYKI4YJAAEAAAAAABAAAIkGAAUBIQAAAFUSAAIAAlUTAAMAAnkAFAtf
SFJWAKRTT0NTFDNfQ1JTAIpSQlVGCgRCMEJBilJCVUYKCEIwTE5wSTIwQUIwQkFwSTIwTEIwTE6k
UkJVRhQaX1NUQQCgEJGTSTIwQQCTTDIyRAGkAKQKDxQbX1BTMwB9UFNBVAoDUFNBVH1QU0FUAFBT
QVQUHl9QUzAAe1BTQVQM/P///1BTQVR9UFNBVABQU0FUW4BLRVlTAEkyMUELAAFbgQ5LRVlTQwBA
QlBTQVQgW4JADVJURUsIX0FEUgAIX0hJRA0xMEVDNTY0MAAIX0NJRA0xMEVDNTY0MAAIX0RETg1S
VEVLIENvZGVjIENvbnRyb2xsZXIgAAhfVUlEARRHBV9DUlMACFNCVUYRRQQKQY4ZAAEAAQIAAAEG
AIAaBgAcAFxfU0IuSTJDMgCMIAABAAEAEQADAAAAABcAABkAIwAAAAQAXF9TQi5HUE8yAHkApFNC
VUYUCV9TVEEApAoPFAxfUFMzAHAAQ0tDMxQMX1BTMABwAUNLQzMUBl9ESVMAW4JJFEkyQzMIX0FE
UgAIX0hJRA04MDg2MEY0MQAIX0NJRA04MDg2MEY0MQAIX0RETg1JbnRlbChSKSBJMkMgQ29udHJv
bGxlciAjMyAtIDgwODYwRjQzAAhfVUlECgMIX0RFUBIGAVBFUEQIUkJVRhEmCiOGCQABAAAAAAAQ
AACJBgAFASIAAABVFAAEAAJVFQAFAAJ5ABQLX0hSVgCkU09DUxQzX0NSUwCKUkJVRgoEQjBCQYpS
QlVGCghCMExOcEkzMEFCMEJBcEkzMExCMExOpFJCVUYUGl9TVEEAoBCRk0kzMEEAk0wyM0QBpACk
Cg8UG19QUzMAfVBTQVQKA1BTQVR9UFNBVABQU0FUFB5fUFMwAHtQU0FUDPz///9QU0FUfVBTQVQA
UFNBVFuAS0VZUwBJMzFBCwABW4EOS0VZU0MAQEJQU0FUIFuCQN5JMkM0CF9BRFIACF9ISUQNODA4
NjBGNDEACF9DSUQNODA4NjBGNDEACF9ERE4NSW50ZWwoUikgSTJDIENvbnRyb2xsZXIgIzQgLSA4
MDg2MEY0NAAIX1VJRAoECF9ERVASBgFQRVBECFJCVUYRJgojhgkAAQAAAAAAEAAAiQYABQEjAAAA
VRYABgACVRcABwACeQAUC19IUlYApFNPQ1MUM19DUlMAilJCVUYKBEIwQkGKUkJVRgoIQjBMTnBJ
NDBBQjBCQXBJNDBMQjBMTqRSQlVGFBpfU1RBAKAQkZNJNDBBAJNMMjREAaQApAoPFBtfUFMzAH1Q
U0FUCgNQU0FUfVBTQVQAUFNBVBQeX1BTMAB7UFNBVAz8////UFNBVH1QU0FUAFBTQVRbgEtFWVMA
STQxQQsAAVuBDktFWVNDAEBCUFNBVCBbhDlDTEswAAAAFAtfU1RBAKRDS0MwFBZfT05fAHABQ0tD
MHABQ0tGMFsiCiAUDV9PRkYAcAoCQ0tDMFuEOUNMSzEAAAAUC19TVEEApENLQzEUFl9PTl8AcAFD
S0MxcAFDS0YxWyIKIBQNX09GRgBwCgJDS0MxW4JONENBTTEIX0FEUgAIX0hJRA1JTlRDRjFBAAhf
Q0lEDUlOVENGMUEACF9TVUINSU5UTDAwMDAACF9ERE4NU29ueSBJTVgxNzUACF9VSUQBCF9ERVAS
EQJJMkM3Xl4uSTJDN1BNSUMIX1BSMBIOA1AyOFhQMThYQ0xLMAhQTERCEhoBERcKFIIAAAAAAAAA
aQwAAAMAAAD/////FAtfUExECKRQTERCFBRfU1RBAKAKk0JESUQKA6QApAoPFE8IX0NSUwAIU0JV
RhFNBwp5jCAAAQEBAAIAAAAAAAAXAAAZACMAAAAYAFxfU0IuR1BPMQCOGQABAAECAAABBgCAGgYA
EABcX1NCLkkyQzQAjhkAAQABAgAAAQYAgBoGAAwAXF9TQi5JMkM0AI4ZAAEAAQIAAAEGAIAaBgBU
AFxfU0IuSTJDNAB5AKRTQlVGFEIgX0RTTQSgIZNoERMKEGqnezeQ8/9KqzibG/M6MBWkDUlOVENG
MUEAoCCTaBETChCqqmI84NgaQITD/AVlb6KMpA1JTVgxNzUAoCOTaBETChCPziqCFCh0QaVrXwKf
4HnupA0xM1AyQkE4MDcAoEkFk2gREwoQKlFZKYwCRka3PU0bVnL62KA0k0JESUQKBKAVk0ZCSUQK
AqQNSU5URUxfRkZSRACgFZNGQklECgOkDUlOVEVMX0ZGUkQApA1JTlRFTF9SVlAAoBuTaBETChBC
soqRfMMKRZ0P9Hq5fD3qpAsEAaAZk2gREwoQ2Hs76pvgOUKtbu1SXz8mq6QBoCiTaBETChCSxFq2
MJ5gTbWy9JfHkNnPe0FCSUQKBGCgBpNgAKQBpACgGpNoERMKEA+rcOdEJqtLhijWLxaD+52kCgKg
GZNoERMKELJKpR6EzcxIndR/WU7DsBWkAKAZk2gREwoQUSa+jcFwb0ysh6N8tG5K9qQAoBmTaBET
ChA5psl1ilwASp9IqcO12nifpACgRASTaBETChBJdSUmcZKkTLtDxImdWkiBoAeTagGkCgOgC5Nq
CgKkDAAQAASgC5NqCgOkDAEMAASgC5NqCgSkDAJUAASgKpNoERMKEEBGI3kQnupPpcG1qosZdW+g
BpNqAaQBoAuTagoCpAwAGAABpABbgk8zQ0FNMwhfQURSAAhfSElEDUlOVENGMUIACF9DSUQNSU5U
Q0YxQgAIX1NVQg1JTlRMMDAwMAAIX0RETg1Tb255IElNWDEzNAAIX1VJRAEIX0RFUBIRAkkyQzde
Xi5JMkM3UE1JQwhfUFIwEg4DUDI4WFAxOFhDTEswCFBMREISGgERFwoUggAAAAAAAABpDAAAAwAA
AP////8UC19QTEQIpFBMREIUFF9TVEEAoAuTQkRJRAoDpAoPpAAUTwhfQ1JTAAhTQlVGEU0HCnmM
IAABAQEAAgAAAAAAABcAABkAIwAAABgAXF9TQi5HUE8xAI4ZAAEAAQIAAAEGAIAaBgAQAFxfU0Iu
STJDNACOGQABAAECAAABBgCAGgYADABcX1NCLkkyQzQAjhkAAQABAgAAAQYAgBoGAFQAXF9TQi5J
MkM0AHkApFNCVUYUQx9fRFNNBKAhk2gREwoQaqd7N5Dz/0qrOJsb8zowFaQNSU5UQ0YxQQCgIJNo
ERMKEKqqYjzg2BpAhMP8BWVvooykDUlNWDE3NQCgI5NoERMKEI/OKoIUKHRBpWtfAp/gee6kDTEz
UDJCQTgwNwCgSQWTaBETChAqUVkpjAJGRrc9TRtWcvrYoDSTQkRJRAoEoBWTRkJJRAoCpA1JTlRF
TF9GRlJEAKAVk0ZCSUQKA6QNSU5URUxfRkZSRACkDUlOVEVMX1JWUACgG5NoERMKEEKyipF8wwpF
nQ/0erl8PeqkCwQBoBmTaBETChDYezvqm+A5Qq1u7VJfPyarpAGgGZNoERMKEJLEWrYwnmBNtbL0
l8eQ2c+kAKAak2gREwoQD6tw50Qmq0uGKNYvFoP7naQKAqAZk2gREwoQskqlHoTNzEid1H9ZTsOw
FaQAoBmTaBETChBRJr6NwXBvTKyHo3y0bkr2pACgGZNoERMKEDmmyXWKXABKn0ipw7XaeJ+kAKBE
BJNoERMKEEl1JSZxkqRMu0PEiZ1aSIGgB5NqAaQKA6ALk2oKAqQMABAABKALk2oKA6QMAQwABKAL
k2oKBKQMAlQABKAqk2gREwoQQEYjeRCe6k+lwbWqixl1b6AGk2oBpAGgC5NqCgKkDAAYAAGkAFuC
RDNDQU0yCF9BRFIACF9ISUQNSU5UMzNGQgAIX0NJRA1JTlQzM0ZCAAhfU1VCDUlOVEwwMDAwAAhf
RERODU9WMjcyMgAIX1VJRAEIX0RFUBIRAkkyQzdeXi5JMkM3UE1JQwhfUFIwEg4DUDI4WFAxOFhD
TEsxCFBMREISGgERFwoUggAAAAAAAABhDAAAAwAAAP////8UC19QTEQIpFBMREIUFF9TVEEAoAqT
QkRJRAoDpACkCg8USgdfQ1JTAAhTQlVGEUgGCmSMIAABAQEAAgAAAAAAABcAABkAIwAAABYAXF9T
Qi5HUE8xAIwgAAEBAQACAAAAAAAAFwAAGQAjAAAAGQBcX1NCLkdQTzEAjhkAAQABAgAAAQYAgBoG
ADYAXF9TQi5JMkM0AHkApFNCVUYUQiBfRFNNBKAhk2gREwoQaqd7N5Dz/0qrOJsb8zowFaQNSU5U
MzNGQgCgIJNoERMKEKqqYjzg2BpAhMP8BWVvooykDU9WMjcyMgCgI5NoERMKEI/OKoIUKHRBpWtf
Ap/gee6kDTEzUDJTRjIwNgCgSQWTaBETChAqUVkpjAJGRrc9TRtWcvrYoDSTQkRJRAoEoBWTRkJJ
RAoCpA1JTlRFTF9GRlJEAKAVk0ZCSUQKA6QNSU5URUxfRkZSRACkDUlOVEVMX1JWUACgG5NoERMK
EEKyipF8wwpFnQ/0erl8PeqkCwEBoBmTaBETChDYezvqm+A5Qq1u7VJfPyarpACgKJNoERMKEJLE
WrYwnmBNtbL0l8eQ2c97QUJJRAoEYKAGk2AApAGkAKAZk2gREwoQD6tw50Qmq0uGKNYvFoP7naQA
oBmTaBETChCySqUehM3MSJ3Uf1lOw7AVpACgGZNoERMKEFEmvo3BcG9MrIejfLRuSvakAaAZk2gR
EwoQOabJdYpcAEqfSKnDtdp4n6QAoCqTaBETChBJdSUmcZKkTLtDxImdWkiBoAaTagGkAaALk2oK
AqQMADYABKBFBJNoERMKEEBGI3kQnupPpcG1qosZdW+gB5NqAaQKAqALk2oKAqQMABYAAaAYk2oK
A6AMk0JESUQKA6QLARmkDAEZAAGkAFuCSCVTVFJBCF9BRFIACF9ISUQNSU5UQ0YxQwAIX0NJRA1J
TlRDRjFDAAhfU1VCDUlOVEwwMDAwAAhfRERODUZsYXNoIExNMzU1NAAIX1VJRAEUCV9TVEEApAoP
FEAMX0NSUwAIU0JVRhFOCgqqjCAAAQEBAAIAAAAAAAAXAAAZACMAAAATAFxfU0IuR1BPMQCMIAAB
AQEAAgAAAAAAABcAABkAIwAAABQAXF9TQi5HUE8xAIwgAAEBAQACAAAAAAAAFwAAGQAjAAAAEABc
X1NCLkdQTzEAjCAAAQEBAAIAAAAAAAAXAAAZACMAAAARAFxfU0IuR1BPMQCOGQABAAECAAABBgCA
GgYAUwBcX1NCLkkyQzQAeQCkU0JVRhRME19EU00EoCGTaBETChBqp3s3kPP/Sqs4mxvzOjAVpA1J
TlRDRjFDAKAgk2gREwoQj84qghQodEGla18Cn+B57qQNTE0zNTU0AKBJBZNoERMKECpRWSmMAkZG
tz1NG1Zy+tigNJNCRElECgSgFZNGQklECgKkDUlOVEVMX0ZGUkQAoBWTRkJJRAoDpA1JTlRFTF9G
RlJEAKQNSU5URUxfUlZQAKAZk2gREwoQOabJdYpcAEqfSKnDtdp4n6QAoCqTaBETChBJdSUmcZKk
TLtDxImdWkiBoAaTagGkAaALk2oKAqQMAFMABKBABZNoERMKEEBGI3kQnupPpcG1qosZdW+gB5Nq
AaQKBKALk2oKAqQMAhMAAaALk2oKA6QMAxQAAaALk2oKBKQMARAAAaALk2oKBaQMBBEAAaQAW4JD
MUkyQzUIX0FEUgAIX0hJRA04MDg2MEY0MQAIX0NJRA04MDg2MEY0MQAIX0RETg1JbnRlbChSKSBJ
MkMgQ29udHJvbGxlciAjNSAtIDgwODYwRjQ1AAhfVUlECgUIX0RFUBIGAVBFUEQIUkJVRhEmCiOG
CQABAAAAAAAQAACJBgAFASQAAABVGAAAAAJVGQABAAJ5ABQLX0hSVgCkU09DUxQzX0NSUwCKUkJV
RgoEQjBCQYpSQlVGCghCMExOcEk1MEFCMEJBcEk1MExCMExOpFJCVUYUGl9TVEEAoBCRk0k1MEEA
k0wyNUQBpACkCg8UG19QUzMAfVBTQVQKA1BTQVR9UFNBVABQU0FUFB5fUFMwAHtQU0FUDPz///9Q
U0FUfVBTQVQAUFNBVFuAS0VZUwBJNTFBCwABW4EOS0VZU0MAQEJQU0FUIFuCSBRTSFVCCF9BRFIA
CF9ISUQNU01POTFEMAAIX0NJRA1QTlAwQzUwAAhfVUlEARQ9X0RTTQSgL5NoERMKEPf23zxnQlVF
rQWzCj2JON6gDpNqAKAJk2kBpBEDAQOgBpNqAaQBpAChBqQRAwEAFAlfU1RBAKQKDxQkX1BTMwig
HZNeXl4uR1BPMEFWQkwBcABeXl4uR1BPMFNIRDMUKF9QUzAIoCGTXl5eLkdQTzBBVkJMAXABXl5e
LkdQTzBTSEQzWyIKMhRDCF9DUlMACFNCVUYRQQcKbY4ZAAEAAQIAAAEGAIAaBgBAAFxfU0IuSTJD
NQCJBgABAUQAAACMIAABAQEAAgAAAAAAABcAABkAIwAAAF8AXF9TQi5HUE8wAIwgAAEBAQACAAAA
AAAAFwAAGQAjAAAAOwBcX1NCLkdQTzAAeQCkU0JVRluCTgdTQVIxCF9BRFIACF9ISUQNSU5UOTkx
OAAIX0NJRA1JTlQ5OTE4AAhfVUlEARQVX1NUQQCgCpNTQVJFAaQKD6EDpAAUOV9DUlMACFJCVUYR
KAoljCAAAQABAAUAAgAAAAAXAAAZACMAAABeAFxfU0IuR1BPMAB5AKRSQlVGW4JDUkkyQzYIX0FE
UgAIX0hJRA04MDg2MEY0MQAIX0NJRA04MDg2MEY0MQAIX0RETg1JbnRlbChSKSBJMkMgQ29udHJv
bGxlciAjNiAtIDgwODYwRjQ2AAhfVUlECgYIX0RFUBIGAVBFUEQIUkJVRhEmCiOGCQABAAAAAAAQ
AACJBgAFASUAAABVGgACAAJVGwADAAJ5ABQLX0hSVgCkU09DUxQzX0NSUwCKUkJVRgoEQjBCQYpS
QlVGCghCMExOcEk2MEFCMEJBcEk2MExCMExOpFJCVUYUGl9TVEEAoBCRk0k2MEEAk0wyNkQBpACk
Cg8UG19QUzMAfVBTQVQKA1BTQVR9UFNBVABQU0FUFB5fUFMwAHtQU0FUDPz///9QU0FUfVBTQVQA
UFNBVFuAS0VZUwBJNjFBCwABW4EOS0VZU0MAQEJQU0FUIFuERw9UQ1BSAAAACF9ERVASEQJJMkM3
Xl4uSTJDN1BNSUMUL19TVEEAoCaTXl5eLwNJMkM3UE1JQ0FWQkwBpF5eXi8DSTJDN1BNSUNUQ09O
pAAURwdfT05fAKAdk15eXi5HUE8wQVZCTAFwAF5eXi5HUE8wVENEM1siCgWgJ5NeXl4vA0kyQzdQ
TUlDQVZCRwFwAV5eXi8DSTJDN1BNSUNUQ09OWyIKCqAdk15eXi5HUE8wQVZCTAFwAV5eXi5HUE8w
VENEM1siClAULl9PRkYAoCeTXl5eLwNJMkM3UE1JQ0FWQkcBcABeXl4vA0kyQzdQTUlDVENPTluC
QShUQ1MwCF9BRFIACF9ISUQNQVRNTDEwMDAACF9DSUQNUE5QMEM1MAAIX1MwVwAIX0RFUBIKAkdQ
TzBJMkM3FC5fUFMzCKAnk15eXi8DSTJDN1BNSUNBVkJHAXAAXl5eLwNJMkM3UE1JQ1RDT04URwdf
UFMwCKAdk15eXi5HUE8wQVZCTAFwAF5eXi5HUE8wVENEM1siCgWgJ5NeXl4vA0kyQzdQTUlDQVZC
RwFwAV5eXi8DSTJDN1BNSUNUQ09OWyIKHqAdk15eXi5HUE8wQVZCTAFwAV5eXi5HUE8wVENEM1si
CngURAxfQ1JTAAhSQlVGEU4ECkqOGQABAAECAAABBgCg8BkASgBcX1NCLkkyQzYAiQYAAQFFAAAA
jCAAAQEBAAIAAAAAAAAXAAAZACMAAAA8AFxfU0IuR1BPMAB5AAhQQlVGEU4ECkqOGQABAAECAAAB
BgCg8BkASwBcX1NCLkkyQzYAiQYAAQFFAAAAjCAAAQEBAAIAAAAAAAAXAAAZACMAAAA8AFxfU0Iu
R1BPMAB5AKANk0lUU0EKS6RQQlVGoQakUkJVRhRLDF9EU00MCF9UXzEACF9UXzAAcA1NZXRob2Qg
X0RTTSBiZWdpbgBbMaBKCZNoERMKEPf23zxnQlVFrQWzCj2JON6iQQgBcJlqAF9UXzCgRwSTX1Rf
MACiPgFwmWkAX1RfMaArk19UXzEBcA1NZXRob2QgX0RTTSBGdW5jdGlvbiBRdWVyeQBbMaQRAwED
oQakEQMBAKWhLKAmk19UXzABcA1NZXRob2QgX0RTTSBGdW5jdGlvbiBISUQAWzGkAKEDpACloQak
EQMBABQJX1NUQQCkCg9bgkwFVENGVwhfSElEDUFUTUwyMDAwABQyX0NSUwAIUkJVRhEhCh6OGQAB
AAECAAABBgCAGgYAJwBcX1NCLkkyQzYAeQCkUkJVRhQTX1NUQQCgCpNURldTAaQKD6QAW4JJFEky
QzcIX0FEUgAIX0hJRA04MDg2MEY0MQAIX0NJRA04MDg2MEY0MQAIX0RETg1JbnRlbChSKSBJMkMg
Q29udHJvbGxlciAjNyAtIDgwODYwRjQ3AAhfVUlECgcIX0RFUBIGAVBFUEQIUkJVRhEmCiOGCQAB
AAAAAAAQAACJBgAFASYAAABVHAAEAAJVHQAFAAJ5ABQLX0hSVgCkU09DUxQzX0NSUwCKUkJVRgoE
QjBCQYpSQlVGCghCMExOcEk3MEFCMEJBcEk3MExCMExOpFJCVUYUGl9TVEEAoBCRk0k3MEEAk0wy
N0QBpACkCg8UG19QUzMAfVBTQVQKA1BTQVR9UFNBVABQU0FUFB5fUFMwAHtQU0FUDPz///9QU0FU
fVBTQVQAUFNBVFuAS0VZUwBJNzFBCwABW4EOS0VZU0MAQEJQU0FUIBBFz0kyQzdbgk3OUE1JQwhf
QURSAAhfSElEDUlOVDMzRkQACF9DSUQNSU5UMzNGRAAIX0RETg1QTUlDIEdQSU8gQ29udHJvbGxl
cgAIX0hSVgoCCF9VSUQBCF9ERVASBgFJMkM3FE4EX0NSUwAIU0JVRhE8CjmOGQABAAECAAABBgBA
Qg8AbgBcX1NCLkkyQzcAiQYACQFDAAAAiQYACQFDAAAAiQYACQFDAAAAeQCkU0JVRhQTX1NUQQCg
CZNQTUVOAKQApAoPW4BEUFRGjAALAAFbgU8HRFBURgNUTVAwIEFYMDAgQVgwMSBUTVAxIEFYMTAg
QVgxMSBUTVAyIEFYMjAgQVgyMSBUTVAzIEFYMzAgQVgzMSBUTVA0IEFYNDAgQVg0MSBUTVA1IEFY
NTAgQVg1MSBQRU4wIFBFTjEgUEVOMiBQRU4zIFBFTjQgUEVONSBbgFBNT1CNAAsAAVuBSQhQTU9Q
A1ZTWVMgU1lTWCBTWVNVIFNZU1MgVjUwUyBIT1NUIFZCVVMgSERNSSBTMjg1IFgyODUgVjMzQSBW
MzNTIFYzM1UgVjMzSSBWMThBIFJFRlEgVjEyQSBWMThTIFYxOFggVjE4VSBWMTJYIFYxMlMgVjEw
QSBWMTBTIFYxMFggVjEwNSBbgEdQT1AIAAsAAVuBT6JHUE9QAQIRKwoojCUAAQEBAAIAAAAAAAAX
AAAZACgAAAAgAFxfU0IuSTJDNy5QTUlDAEdNUDABAhErCiiMJQABAQEAAgAAAAAAABcAABkAKAAA
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
QzFbgkcHSU1QMQhfQURSAAhfSElEDUlNUEowMDAxAAhfQ0lEDUlNUEowMDAxAAhfVUlEARQTX1NU
QQCgCpNQU1NEAaQKD6QAFDJfQ1JTAAhTQlVGESEKHo4ZAAEAAQIAAAEGAKCGAQBuAFxfU0IuSTJD
MQB5AKRTQlVGW4JHB0lNUDIIX0FEUgAIX0hJRA1JTVBKMDAwMgAIX0NJRA1JTVBKMDAwMgAIX1VJ
RAEUE19TVEEAoAqTUFNTRAGkCg+kABQyX0NSUwAIU0JVRhEhCh6OGQABAAECAAABBgCghgEAbwBc
X1NCLkkyQzEAeQCkU0JVRluCSAdJTVAzCF9BRFIACF9ISUQNSU1QSjAwMDMACF9DSUQNSU1QSjAw
MDMACF9VSUQBFBRfU1RBAKALk1BTU0QKAqQKD6QAFDJfQ1JTAAhTQlVGESEKHo4ZAAEAAQIAAAEG
AKCGAQBuAFxfU0IuSTJDMQB5AKRTQlVGW4RHElAyOFgFAAAIX0RFUBIQAkkyQzdeLkkyQzdQTUlD
FEUFX1NUQQCgSwSTXl4vA0kyQzdQTUlDQVZCRwFwAF5eLwNJMkM3UE1JQ0cyOFigJJNeXi8DSTJD
N1BNSUNBVkJMAaReXi8DSTJDN1BNSUNYMjg1pAAUSAVfT05fAKBABZNeXi8DSTJDN1BNSUNBVkJM
AXABXl4vA0kyQzdQTUlDWDI4NaApk15eLwNJMkM3UE1JQ0FWQkcBcAFeXi8DSTJDN1BNSUNHMjhY
WyIKHhRIBV9PRkYAoEAFk15eLwNJMkM3UE1JQ0FWQkwBcABeXi8DSTJDN1BNSUNYMjg1oCmTXl4v
A0kyQzdQTUlDQVZCRwFwAV5eLwNJMkM3UE1JQ0cyOFhbIgoeW4RHElAxOFgFAAAIX0RFUBIQAkky
QzdeLkkyQzdQTUlDFEUFX1NUQQCgSwSTXl4vA0kyQzdQTUlDQVZCRwFwAF5eLwNJMkM3UE1JQ0cx
OFigJJNeXi8DSTJDN1BNSUNBVkJMAaReXi8DSTJDN1BNSUNWMThYpAAUSAVfT05fAKBABZNeXi8D
STJDN1BNSUNBVkJMAXABXl4vA0kyQzdQTUlDVjE4WKApk15eLwNJMkM3UE1JQ0FWQkcBcAFeXi8D
STJDN1BNSUNHMThYWyIKHhRIBV9PRkYAoEAFk15eLwNJMkM3UE1JQ0FWQkwBcABeXi8DSTJDN1BN
SUNWMThYoCmTXl4vA0kyQzdQTUlDQVZCRwFwAV5eLwNJMkM3UE1JQ0cxOFhbIgoeW4JHKFRCQUQI
X0hJRA1JTlRDRkQ5AAhfQ0lEDVBOUDBDNDAACF9ERE4NS2V5Ym9hcmQgbGVzcyBzeXN0ZW0gLSA1
IEJ1dHRvbiBBcnJheSBEZXZpY2UACF9ERVASGARHUE8wR1BPMkkyQzdeLkkyQzdQTUlDFEQYX0NS
UwAIUkJVRhFMCQqYjCAAAQABABUAAAAAAAAXAAAZACMAAAAQAFxfU0IuR1BPMgCMIAABAAEAFQAA
AAAAABcAABkAIwAAAAYAXF9TQi5HUE8wAIwlAAEAAQAFAAAAAAAAFwAAGQAoAAAAAABcX1NCLkky
QzcuUE1JQwCMJQABAAEABQAAAAAAABcAABkAKAAAAAEAXF9TQi5JMkM3LlBNSUMAeQAIUEJVRhFC
CQqOjCAAAQABABUAAAAAAAAXAAAZACMAAAAQAFxfU0IuR1BPMgCMIAABAAEAFQAAAAAAABcAABkA
IwAAAAYAXF9TQi5HUE8wAIwgAAEAAQAFAAAAAAAAFwAAGQAjAAAABQBcX1NCLkdQTzAAjCAAAQAB
AAUAAAAAAAAXAAAZACMAAAAEAFxfU0IuR1BPMAB5AKAkk0JESUQKBKANk0ZCSUQKAqRQQlVGoA2T
RkJJRAoDpFBCVUahGKAWk0JESUQKAqANk0ZCSUQKAqRQQlVGpFJCVUYUCV9TVEEApAoPFEQIX0RT
TQwIX1RfMACgG5NPU1lTC90HcAFeXi8DSTJDN1BNSUNGQ09UoRNwAF5eLwNJMkM3UE1JQ0ZDT1Sg
PZNoERMKEMXzvN+l5+ZEnB8px29uBZyiJQFwmWoAX1RfMKAMk19UXzAApBEDAQOhDKAKk19UXzAB
pAoHpaEGpBEDAQCkAFuCQhNNQklECF9ISUQNSU5UMzNCRAAIX0NJRA1JTlQzM0JEAAhfSFJWCgII
X1VJRAEUIl9DUlMICFJCVUYREQoOhgkAAdAAAOAMAAAAeQCkUkJVRluAUkVHU4cACjBbgSRSRUdT
A1BPUlQgUkVHXyBEQVRBIE1BU0sgQkVfXyBPUF9fIAhBVkJMABQSX1JFRwKgC5NoCodwaUFWQkwU
NVJFQUQLcAz/////YKAlk0FWQkwBcABPUF9fcGhQT1JUcGlSRUdfcGpCRV9fcERBVEFgpGAULFdS
SVQMoCWTQVZCTAFwAU9QX19waFBPUlRwaVJFR19wakJFX19wa0RBVEEUM01PREkNoCyTQVZCTAFw
CgJPUF9fcGhQT1JUcGlSRUdfcGpCRV9fcGtEQVRBcGxNQVNLW4JHBlBBR0QIX0hJRA1BQ1BJMDAw
QwAIX0NJRA1BQ1BJMDAwQwAISURDTgAIUFVSUBIEAgEAFBdfUFVSCHBJRENOiFBVUlABAKRQVVJQ
FBpfT1NUC3ANX09TVCBpcyBpbnZva2VkAFsxCFBJQ00AW4JBEU1ETV8IX0hJRAw0ZAABCF9DSUQN
TUNEMDAwMQAIQ1BVXw1WYWxsZXlWaWV3MgAITURNTg1YTU1fNzE2MAAUFF9TVEEAoAuTQkRJRAoD
pAoPpAAURApfQ1JTAAhVQlVGEUIJCo6MIAABAQEAAgAAAAAAABcAABkAIwAAABoAXF9TQi5HUE8x
AIwgAAEBAQABAAAAAAAAFwAAGQAjAAAAHgBcX1NCLkdQTzIAjCAAAQEBAAEAAAAAAAAXAAAZACMA
AAAcAFxfU0IuR1BPMgCMIAABAQEAAgAAAAAAABcAABkAIwAAAB0AXF9TQi5HUE8yAHkApFVCVUYI
UE1JQxIIBAopAQAK/AhFUFdSEgQCAAEQQwlfVFpfW4VLCFRaMDAIX0RFUBIbAlwuX1NCX0kyQzdc
LwNfU0JfSTJDN1BNSUMUQwZfVE1QCKBHBZNcLwRfU0JfSTJDN1BNSUNBVkJHAXAAXC8EX1NCX0ky
QzdQTUlDR01QMqAqk1wvBF9TQl9JMkM3UE1JQ0FWQkQBpFwvBF9TQl9JMkM3UE1JQ1RNUDKkC6wK
EEsJLl9TQl9QQ0kwW4JOCFBEUkMIX0hJRAxB0AwCCF9VSUQBCEJVRjARQgcKboYJAAEAAADgAAAA
EIYJAAEAEND+ABAAAIYJAAEAMND+ABAAAIYJAAEAQND+ABAAAIYJAAEAwND+AEAAAIYJAAEAgND+
ABAAAIYJAAEAwNH+ABAAAIYJAAAAAOD+AAAQAIYJAAEAAPD+AAAQAHkAFEkMQlJUTgmgI5N7RElE
MQsADwALAASGXC8EX1NCX1BDSTBHRlgwREQwMWigI5N7RElEMgsADwALAASGXC8EX1NCX1BDSTBH
RlgwREQwMmigI5N7RElEMwsADwALAASGXC8EX1NCX1BDSTBHRlgwREQwM2igI5N7RElENAsADwAL
AASGXC8EX1NCX1BDSTBHRlgwREQwNGigI5N7RElENQsADwALAASGXC8EX1NCX1BDSTBHRlgwREQw
NWigDVsSTkROMwBORE4zaBBEIi5fU0JfSTJDMwhBVkJMABQSX1JFRwKgC5NoCglwaUFWQkwIRlNB
VxEhCh6OGQABAAECAAABBgCAGgYAJQBcX1NCLkkyQzMAeQBbgEZTQU8JAAsAAVuBFUZTQU8FAkZT
QVcAEAEFBkZTSU0IW4EVRlNBTwUCRlNBVwAYAQUGRlNJTghbgRVGU0FPBQJGU0FXADgBBQZGU1JD
CFuBFkZTQU8FAkZTQVcAQAUBBQZGU0RUCFuBFkZTQU8FAkZTQVcASAkBBQZGU01TCFuCRxVTRlNB
CF9BRFIACF9ISUQNU0ZTQTkyODUACF9DSUQNU0ZTQTkyODUACF9ERE4NRlNBIFVTQiBTV0lUQ0gA
CF9ERVASBgFJMkMzFEYPX0NSUwAIQlVGMBFFBApBjhkAAQABAgAAAQYAgBoGACUAXF9TQi5JMkMz
AIwgAAEAAQARAAMAAAAAFwAAGQAjAAAAAQBcX1NCLkdQTzIAeQAIQlVGMRFLCAqHjhkAAQABAgAA
AQYAgBoGACUAXF9TQi5JMkMzAIwgAAEAAQARAAMAAAAAFwAAGQAjAAAABgBcX1NCLkdQTzIAjCAA
AQEBAAIAAAAAAAAXAAAZACMAAAADAFxfU0IuR1BPMgCMIAABAQEAAgAAAAAAABcAABkAIwAAADoA
XF9TQi5HUE8yAHkAoA2TQkRJRAoDpEJVRjCkQlVGMRQUX1NUQQCgC5NCRElECgOkCg+kABBJmC5f
U0JfSTJDMVuCTApTTUZHCF9ISUQNTUFYMTcwNDcACF9DSUQNTUFYMTcwNDcACF9ERE4NRnVlbCBH
YXVnZSBDb250cm9sbGVyAAhSQlVGEUUECkGOGQABAAECAAABBgCghgEANgBcX1NCLkkyQzEAjCAA
AQABABEAAAAAAAAXAAAZACMAAAASAFxfU0IuR1BPMgB5ABQLX0NSUwCkUkJVRhQUX1NUQQCgC5NC
RElECgOkCg+kAFuCTAlTTUNHCF9ISUQNU01CMDM0OQAIX0NJRA1TTUIwMzQ5AAhfRERODUNoYXJn
ZXIACFJCVUYRRQQKQY4ZAAEAAQIAAAEGAKCGAQA1AFxfU0IuSTJDMQCMIAABAAEAEQAAAAAAABcA
ABkAIwAAAAIAXF9TQi5HUE8yAHkAFAtfQ1JTAKRSQlVGFBRfU1RBAKALk0JESUQKA6QKD6QACFVN
UEMRIQoejhkAAQABAgAAAQYAoIYBAHgAXF9TQi5JMkMxAHkACEFWQkwAFBJfUkVHAqALk2gKCXBp
QVZCTFuARFZVTQkACwABW4EURFZVTQUCVU1QQwMFCzlGR0MwCFuBFkRWVU0FAlVNUEMASBcBBQZG
TDJGCFuBF0RWVU0FAlVNUEMAQBgDBQsERkwzMAhbgRZEVlVNBQJVTVBDAEAnAQUGRkw0RQhbgRZE
VlVNBQJVTVBDAEgnAQUGRkw0RghbgSVEVlVNBQJVTVBDAEAoAQUGRkw1MAhGTDUxCEZMNTIIRkw1
MwhbgRdEVlVNBQJVTVBDAEAaAwULBVRIUk0IW4JOckJBVEMIX0hJRAxB0AwKCF9VSUQBCEJDQ0MK
gAhCQ0NFAQhCQ0NWCjcIQkNDTAz/////CEJDTFALBBAIRFNDUAsEEAhEU1ZPC6YOCEJUUEMACFNP
Q0MACF9ERVASBgFJMkMxCEJGRkcRBApA/4xCRkZHAFNUQVSMQkZGRwFMRU5fi0JGRkcKAkNOVEyL
QkZGRwoEQVRSQYtCRkZHCgZBUlRFi0JGRkcKCFRFTVCLQkZGRwoKVk9MVItCRkZHCgxGTEFHi0JG
RkcKDk5BQ1SLQkZGRwoQRkFDVItCRkZHChJSRUNUi0JGRkcKFEZDQ1SLQkZGRwoWQVZSQ4tCRkZH
ChhUVEVUi0JGRkcKGlRURkyLQkZGRwocU1REQ4tCRkZHCh5TVFRFi0JGRkcKIE1BTEOLQkZGRwoi
TUxURYtCRkZHCiRBVkVFi0JGRkcKJkFWRVCLQkZGRwooVEVDUItCRkZHCipEU1NQi0JGRkcKLENZ
TEOLQkZGRwouU09DSIxCRkZHCjBDSFNUjEJGRkcKMUNIQ1WKQkZGRwoyQlRSUIxCRkZHCjZTS1Qw
i0JGRkcKN1NUMDCLQkZGRwo5U1QwMQhCVUZGEQYKAwABAIxCVUZGAEJZQVSMQlVGRgoCREFUQQhC
VUYxEQkKBgAAAAAAAIxCVUYxAEJTVEGMQlVGMQFCTEVOikJVRjEKAkRBVDEIQklYUBJPBRQAAQz/
////DP////8BDP////8KCgoEAAwYcwEADP////8M/////wu4iAuoYQEBDVNSIFJlYWwgQmF0dGVy
eQANMTIzNDU2Nzg5AA1MSU9OAA1JbnRlbCBTUiAxAAhCU1RQEhIEAAz/////DP////8M/////xRC
C19CSVgAoEUGk0FWQkwBcEZHQzBCRkZHoEEEkpNTVEFUAaAdkpNDWUxDQkNDTHBDWUxDQkNDTHBG
Q0NUQkNMUHBCQ0xQiEJJWFAKAwBwQ1lMQ4hCSVhQCggAoBGSk0RTU1AAcERTU1BEU0NQcERTQ1CI
QklYUAoCAHBEU1ZPiEJJWFAKBQB4RFNDUAoKYGFwYYhCSVhQCgYAeERTQ1AKFGBhcGGIQklYUAoH
AKRCSVhQFEIPX0JTVACgRQ6TQVZCTAFwRkdDMEJGRkegQw2Sk1NUQVQBekNIU1QKBGB7YAoDYKAN
kZNgAZNgCgJwCgJhoAeTYABwAWGgCJNgCgNwAGFwYYhCU1RQAABwQVZSQ2GgDXthCwCAAHQL//9h
YXBhiEJTVFABAHBSRUNUiEJTVFAKAgBwVk9MVIhCU1RQCgMAcFNPQ0hTT0NDcEZMNTNCVUZGoDmS
k0JZQVQBoBqTQkNDRQF9REFUQQFEQVRBcEJVRkZGTDUzoRV7REFUQQr+REFUQXBCVUZGRkw1M3BC
Q0NDREFUQXBCVUZGRkwyRqRCU1RQFCtJTlRSAKAhk0FWQkwBcEZMNEZCVUZGoA2Sk0JZQVQBpERB
VEGkCv+kCv8USgRfQlRQAXBoQlRQQ0FEQkcNQlRQAEFEQkdooB2TQVZCTAFwaERBVDFwCgRCTEVO
cEJVRjFGTDMwcEZHQzBCRkZHQURCR1JFQ1QUTwRfQlRNAaAIlGgLMHWkAKA4k0FWQkwBcEZHQzBC
RkZHoCeSk1NUQVQBoA6TaAB3VFRFVAo8YKRgd1JFQ1QLEA5geGBoYWKkYqQM/////xRJBl9CQ1QB
oAuRlGgKZJVoAaQAoE8Ek0FWQkwBcEZHQzBCRkZHoD2Sk1NUQVQBoAmVaFJFQ1SkAHBBVlJDYaAJ
e2ELAIAApAB3QkNMUGhgdGBSRUNUYHdgCxAOYHhgYWJjpGOkDP////8UMF9EU00EoCeTaBETChDj
ZyBMfYhcR5cgSvHT7WAuoA+TagoCoAmTaQCkEQMBAKQAFEwFX1NUQQCgQgWTQVZCTAFwRkdDMEJG
RkegCpKTU1RBVACkAKAUk0JESUQKBKALlUZCSUQKAqQKH3BGTDRFQlVGRqAVk0JZQVQAoAuTREFU
QQoCpAofpACkAKQAFAtfUENMAKRfU0JfFAtQU09DAKRTT0NDFD9QTUFYAKA2k0FWQkwBcEZHQzBC
RkZHoCWSk1NUQVQBcE1BTENhoA17YQsAgAB0C///YWF3RFNWT2FhpGGkABQKVk1JTgCkC6wNFAxB
UFdSAKQMQMBlAxRKBE5QV1IAcEFQV1JgoDqTQVZCTAFwRkdDMEJGRkegKZKTU1RBVAFwQVZSQ2Gg
DXthCwCAAHQL//9hYXdWT0xUYWJ0YGJgpGCkYBRJBlBTUkMAoE8Fk0FWQkwBcEZHQzBCRkZHoE0E
kpNTVEFUAXBDSFNUYEFEQkcNQkFUQy5QU1JDAEFEQkdgemAKBmB7YAoDYKAGk2AApACgB5NgCgKk
AaAHk2ABpAoCoAiTYAoDpAoEpAEUCUNUWVAApAoCFAxBUlRHAKQMQMBlAxBDBl9TQl9bgksFQURQ
MQhfSElEDUFDUEkwMDAzABQ5X1BTUgCgMFsSXC8DX1NCX0kyQzFCQVRDYXBeXi8DSTJDMUJBVENQ
U1JDYKAGk2ABpAGhA6QApAEUC19QQ0wApF9TQl8=

=2D-nextPart1435871.THQkheyNVN
Content-Disposition: attachment; filename="dmesg.log-3.15-rc5-inari"
Content-Transfer-Encoding: 7Bit
Content-Type: text/plain; charset="UTF-8"; name="dmesg.log-3.15-rc5-inari"

[    0.000000] Initializing cgroup subsys cpuset
[    0.000000] Initializing cgroup subsys cpu
[    0.000000] Initializing cgroup subsys cpuacct
[    0.000000] Linux version 3.15.0-rc5-Inari (root@devpool02) (gcc version 4.6.4 (Emlix Linux Inari) ) #1 SMP Tue May 13 08:40:31 UTC 2014
[    0.000000] e820: BIOS-provided physical RAM map:
[    0.000000] BIOS-e820: [mem 0x0000000000000000-0x000000000008efff] usable
[    0.000000] BIOS-e820: [mem 0x000000000008f000-0x000000000008ffff] ACPI NVS
[    0.000000] BIOS-e820: [mem 0x0000000000090000-0x000000000009dfff] usable
[    0.000000] BIOS-e820: [mem 0x000000000009e000-0x000000000009ffff] reserved
[    0.000000] BIOS-e820: [mem 0x0000000000100000-0x000000001fffffff] usable
[    0.000000] BIOS-e820: [mem 0x0000000020000000-0x00000000200fffff] reserved
[    0.000000] BIOS-e820: [mem 0x0000000020100000-0x0000000078345fff] usable
[    0.000000] BIOS-e820: [mem 0x0000000078346000-0x0000000078c45fff] reserved
[    0.000000] BIOS-e820: [mem 0x0000000078c46000-0x0000000078d45fff] ACPI NVS
[    0.000000] BIOS-e820: [mem 0x0000000078d46000-0x0000000078d85fff] ACPI data
[    0.000000] BIOS-e820: [mem 0x0000000078d86000-0x00000000794c7fff] usable
[    0.000000] BIOS-e820: [mem 0x00000000794c8000-0x0000000079dc7fff] ACPI NVS
[    0.000000] BIOS-e820: [mem 0x0000000079dc8000-0x0000000079ffffff] usable
[    0.000000] BIOS-e820: [mem 0x00000000e00f8000-0x00000000e00f8fff] reserved
[    0.000000] BIOS-e820: [mem 0x00000000fed01000-0x00000000fed01fff] reserved
[    0.000000] BIOS-e820: [mem 0x00000000ffd00000-0x00000000ffffffff] reserved
[    0.000000] Notice: NX (Execute Disable) protection cannot be enabled: non-PAE kernel!
[    0.000000] efi: EFI v2.31 by INSYDE Corp.
[    0.000000] efi:  ACPI 2.0=0x78d85014  SMBIOS=0x78c45000 
[    0.000000] efi: mem00: type=7, attr=0xf, range=[0x0000000000000000-0x0000000000001000) (0MB)
[    0.000000] efi: mem01: type=2, attr=0xf, range=[0x0000000000001000-0x0000000000007000) (0MB)
[    0.000000] efi: mem02: type=7, attr=0xf, range=[0x0000000000007000-0x000000000008f000) (0MB)
[    0.000000] efi: mem03: type=10, attr=0xf, range=[0x000000000008f000-0x0000000000090000) (0MB)
[    0.000000] efi: mem04: type=7, attr=0xf, range=[0x0000000000090000-0x000000000009e000) (0MB)
[    0.000000] efi: mem05: type=0, attr=0xf, range=[0x000000000009e000-0x00000000000a0000) (0MB)
[    0.000000] efi: mem06: type=7, attr=0xf, range=[0x0000000000100000-0x0000000001000000) (15MB)
[    0.000000] efi: mem07: type=2, attr=0xf, range=[0x0000000001000000-0x0000000001ded000) (13MB)
[    0.000000] efi: mem08: type=7, attr=0xf, range=[0x0000000001ded000-0x0000000020000000) (482MB)
[    0.000000] efi: mem09: type=0, attr=0xf, range=[0x0000000020000000-0x0000000020100000) (1MB)
[    0.000000] efi: mem10: type=7, attr=0xf, range=[0x0000000020100000-0x0000000071dc0000) (1308MB)
[    0.000000] efi: mem11: type=4, attr=0xf, range=[0x0000000071dc0000-0x0000000071de0000) (0MB)
[    0.000000] efi: mem12: type=7, attr=0xf, range=[0x0000000071de0000-0x0000000073356000) (21MB)
[    0.000000] efi: mem13: type=2, attr=0xf, range=[0x0000000073356000-0x0000000073358000) (0MB)
[    0.000000] efi: mem14: type=1, attr=0xf, range=[0x0000000073358000-0x0000000073b46000) (7MB)
[    0.000000] efi: mem15: type=7, attr=0xf, range=[0x0000000073b46000-0x0000000076a92000) (47MB)
[    0.000000] efi: mem16: type=4, attr=0xf, range=[0x0000000076a92000-0x00000000774ec000) (10MB)
[    0.000000] efi: mem17: type=7, attr=0xf, range=[0x00000000774ec000-0x00000000774f9000) (0MB)
[    0.000000] efi: mem18: type=4, attr=0xf, range=[0x00000000774f9000-0x0000000077d46000) (8MB)
[    0.000000] efi: mem19: type=7, attr=0xf, range=[0x0000000077d46000-0x0000000078161000) (4MB)
[    0.000000] efi: mem20: type=3, attr=0xf, range=[0x0000000078161000-0x0000000078346000) (1MB)
[    0.000000] efi: mem21: type=5, attr=0x800000000000000f, range=[0x0000000078346000-0x0000000078546000) (2MB)
[    0.000000] efi: mem22: type=6, attr=0x800000000000000f, range=[0x0000000078546000-0x0000000078846000) (3MB)
[    0.000000] efi: mem23: type=0, attr=0xf, range=[0x0000000078846000-0x0000000078c46000) (4MB)
[    0.000000] efi: mem24: type=10, attr=0xf, range=[0x0000000078c46000-0x0000000078d46000) (1MB)
[    0.000000] efi: mem25: type=9, attr=0xf, range=[0x0000000078d46000-0x0000000078d86000) (0MB)
[    0.000000] efi: mem26: type=4, attr=0xf, range=[0x0000000078d86000-0x00000000794c8000) (7MB)
[    0.000000] efi: mem27: type=10, attr=0xf, range=[0x00000000794c8000-0x0000000079dc8000) (9MB)
[    0.000000] efi: mem28: type=4, attr=0xf, range=[0x0000000079dc8000-0x000000007a000000) (2MB)
[    0.000000] efi: mem29: type=11, attr=0x8000000000000001, range=[0x00000000e00f8000-0x00000000e00f9000) (0MB)
[    0.000000] efi: mem30: type=11, attr=0x8000000000000000, range=[0x00000000fed01000-0x00000000fed02000) (0MB)
[    0.000000] efi: mem31: type=11, attr=0x8000000000000000, range=[0x00000000ffd00000-0x0000000100000000) (3MB)
[    0.000000] SMBIOS 2.7 present.
[    0.000000] DMI: Aava Mobile Oy Inari 8 2GB/Type2 - Board Product Name, BIOS BYT.5.03.47.0033-022 01/16/2014
[    0.000000] e820: update [mem 0x00000000-0x00000fff] usable ==> reserved
[    0.000000] e820: remove [mem 0x000a0000-0x000fffff] usable
[    0.000000] e820: last_pfn = 0x7a000 max_arch_pfn = 0x100000
[    0.000000] MTRR default type: uncachable
[    0.000000] MTRR fixed ranges enabled:
[    0.000000]   00000-9FFFF write-back
[    0.000000]   A0000-FFFFF write-protect
[    0.000000] MTRR variable ranges enabled:
[    0.000000]   0 base 0FFD00000 mask FFFC00000 write-protect
[    0.000000]   1 base 000000000 mask FC0000000 write-back
[    0.000000]   2 base 040000000 mask FE0000000 write-back
[    0.000000]   3 base 060000000 mask FF0000000 write-back
[    0.000000]   4 base 070000000 mask FF8000000 write-back
[    0.000000]   5 base 078000000 mask FFC000000 write-back
[    0.000000]   6 base 07B000000 mask FFF000000 uncachable
[    0.000000]   7 base 07AE00000 mask FFFE00000 uncachable
[    0.000000] x86 PAT enabled: cpu 0, old 0x7040600070406, new 0x7010600070106
[    0.000000] Scanning 1 areas for low memory corruption
[    0.000000] initial memory mapped: [mem 0x00000000-0x01ffffff]
[    0.000000] Base memory trampoline at [c009a000] 9a000 size 16384
[    0.000000] init_memory_mapping: [mem 0x00000000-0x000fffff]
[    0.000000]  [mem 0x00000000-0x000fffff] page 4k
[    0.000000] init_memory_mapping: [mem 0x37000000-0x373fffff]
[    0.000000]  [mem 0x37000000-0x373fffff] page 2M
[    0.000000] init_memory_mapping: [mem 0x30000000-0x36ffffff]
[    0.000000]  [mem 0x30000000-0x36ffffff] page 2M
[    0.000000] init_memory_mapping: [mem 0x00100000-0x1fffffff]
[    0.000000]  [mem 0x00100000-0x003fffff] page 4k
[    0.000000]  [mem 0x00400000-0x1fffffff] page 2M
[    0.000000] init_memory_mapping: [mem 0x20100000-0x2fffffff]
[    0.000000]  [mem 0x20100000-0x203fffff] page 4k
[    0.000000]  [mem 0x20400000-0x2fffffff] page 2M
[    0.000000] BRK [0x01cd0000, 0x01cd0fff] PGTABLE
[    0.000000] init_memory_mapping: [mem 0x37400000-0x377fdfff]
[    0.000000]  [mem 0x37400000-0x377fdfff] page 4k
[    0.000000] BRK [0x01cd1000, 0x01cd1fff] PGTABLE
[    0.000000] ACPI: RSDP 0x78D85014 000024 (v02 INSYDE)
[    0.000000] ACPI: XSDT 0x78D61188 0000D4 (v01 INSYDE INSYDE   00000003      01000013)
[    0.000000] ACPI: FACP 0x78D7F000 00010C (v05 INSYDE INSYDE   00000003 ACPI 00040000)
[    0.000000] ACPI: DSDT 0x78D6E000 00BAEC (v02 INSYDE INSYDE   00000003 ACPI 00040000)
[    0.000000] ACPI: UEFI 0x78D84000 000236 (v01 INSYDE INSYDE   00000001 ACPI 00040000)
[    0.000000] ACPI: TCPA 0x78D83000 000032 (v02 INSYDE INSYDE   00000000 ACPI 00040000)
[    0.000000] ACPI: UEFI 0x78D81000 000042 (v01 INSYDE INSYDE   00000000 ACPI 00040000)
[    0.000000] ACPI: DBG2 0x78D80000 000072 (v00 INSYDE INSYDE   00000003 ACPI 00040000)
[    0.000000] ACPI: HPET 0x78D7E000 000038 (v01 INSYDE INSYDE   00000003 ACPI 00040000)
[    0.000000] ACPI: LPIT 0x78D7D000 000104 (v01 INSYDE INSYDE   00000003 ACPI 00040000)
[    0.000000] ACPI: APIC 0x78D7C000 00006C (v03 INSYDE INSYDE   00000003 ACPI 00040000)
[    0.000000] ACPI: MCFG 0x78D7B000 00003C (v01 INSYDE INSYDE   00000003 ACPI 00040000)
[    0.000000] ACPI: SLIC 0x78D7A000 000176 (v01 INSYDE INSYDE   00000003 ACPI 00040000)
[    0.000000] ACPI: SSDT 0x78D6D000 0005FB (v01 INSYDE CpuDptf  00000003 ACPI 00040000)
[    0.000000] ACPI: SSDT 0x78D6B000 0018C2 (v01 INSYDE DptfTab  00000003 ACPI 00040000)
[    0.000000] ACPI: SSDT 0x78D6A000 000058 (v01 INSYDE LowPwrM  00000003 ACPI 00040000)
[    0.000000] ACPI: SSDT 0x78D69000 0000FF (v01 INSYDE SoCDptf  00000003 ACPI 00040000)
[    0.000000] ACPI: SSDT 0x78D68000 00043A (v01 INSYDE Tpm2Tabl 00001000 ACPI 00040000)
[    0.000000] ACPI: TPM2 0x78D67000 000034 (v03 INSYDE INSYDE   00000000 ACPI 00040000)
[    0.000000] ACPI: SSDT 0x78D66000 000763 (v01 INSYDE CpuPm    00003000 ACPI 00040000)
[    0.000000] ACPI: SSDT 0x78D65000 000290 (v01 INSYDE Cpu0Tst  00003000 ACPI 00040000)
[    0.000000] ACPI: SSDT 0x78D64000 00017A (v01 INSYDE ApTst    00003000 ACPI 00040000)
[    0.000000] ACPI: FPDT 0x78D63000 000044 (v01 INSYDE INSYDE   00000001 ACPI 00040000)
[    0.000000] ACPI: CSRT 0x78D62000 00014C (v00 INSYDE INSYDE   00000005 ACPI 00040000)
[    0.000000] ACPI: BGRT 0x78D60000 000038 (v01 INSYDE INSYDE   00000001 ACPI 00040000)
[    0.000000] ACPI: Local APIC address 0xfee00000
[    0.000000] 1064MB HIGHMEM available.
[    0.000000] 887MB LOWMEM available.
[    0.000000]   mapped low ram: 0 - 377fe000
[    0.000000]   low ram: 0 - 377fe000
[    0.000000] BRK [0x01cd2000, 0x01cd2fff] PGTABLE
[    0.000000] Zone ranges:
[    0.000000]   DMA      [mem 0x00001000-0x00ffffff]
[    0.000000]   Normal   [mem 0x01000000-0x377fdfff]
[    0.000000]   HighMem  [mem 0x377fe000-0x79ffffff]
[    0.000000] Movable zone start for each node
[    0.000000] Early memory node ranges
[    0.000000]   node   0: [mem 0x00001000-0x0008efff]
[    0.000000]   node   0: [mem 0x00090000-0x0009dfff]
[    0.000000]   node   0: [mem 0x00100000-0x1fffffff]
[    0.000000]   node   0: [mem 0x20100000-0x78345fff]
[    0.000000]   node   0: [mem 0x78d86000-0x794c7fff]
[    0.000000]   node   0: [mem 0x79dc8000-0x79ffffff]
[    0.000000] On node 0 totalpages: 494428
[    0.000000] free_area_init_node: node 0, pgdat c17500c0, node_mem_map f68be020
[    0.000000]   DMA zone: 32 pages used for memmap
[    0.000000]   DMA zone: 0 pages reserved
[    0.000000]   DMA zone: 3996 pages, LIFO batch:0
[    0.000000]   Normal zone: 1744 pages used for memmap
[    0.000000]   Normal zone: 222974 pages, LIFO batch:31
[    0.000000]   HighMem zone: 2129 pages used for memmap
[    0.000000]   HighMem zone: 267458 pages, LIFO batch:31
[    0.000000] Using APIC driver default
[    0.000000] x86/hpet: Will disable the HPET for this platform because it's not reliable
[    0.000000] Reserving Intel graphics stolen memory at 0x7af00000-0x7eefffff
[    0.000000] ACPI: Local APIC address 0xfee00000
[    0.000000] ACPI: LAPIC (acpi_id[0x01] lapic_id[0x00] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0x02] lapic_id[0x02] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0x03] lapic_id[0x04] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0x04] lapic_id[0x06] enabled)
[    0.000000] ACPI: IOAPIC (id[0x02] address[0xfec00000] gsi_base[0])
[    0.000000] IOAPIC[0]: apic_id 2, version 32, address 0xfec00000, GSI 0-86
[    0.000000] ACPI: INT_SRC_OVR (bus 0 bus_irq 0 global_irq 2 dfl dfl)
[    0.000000] ACPI: INT_SRC_OVR (bus 0 bus_irq 9 global_irq 9 high level)
[    0.000000] ACPI: IRQ0 used by override.
[    0.000000] ACPI: IRQ2 used by override.
[    0.000000] ACPI: IRQ9 used by override.
[    0.000000] Using ACPI (MADT) for SMP configuration information
[    0.000000] ACPI: HPET id: 0x8086a201 base: 0xfed00000
[    0.000000] smpboot: Allowing 4 CPUs, 0 hotplug CPUs
[    0.000000] nr_irqs_gsi: 103
[    0.000000] PM: Registered nosave memory: [mem 0x0008f000-0x0008ffff]
[    0.000000] PM: Registered nosave memory: [mem 0x0009e000-0x0009ffff]
[    0.000000] PM: Registered nosave memory: [mem 0x000a0000-0x000fffff]
[    0.000000] PM: Registered nosave memory: [mem 0x20000000-0x200fffff]
[    0.000000] e820: [mem 0x7ef00000-0xe00f7fff] available for PCI devices
[    0.000000] setup_percpu: NR_CPUS:4 nr_cpumask_bits:4 nr_cpu_ids:4 nr_node_ids:1
[    0.000000] PERCPU: Embedded 12 pages/cpu @f6882000 s27200 r0 d21952 u49152
[    0.000000] pcpu-alloc: s27200 r0 d21952 u49152 alloc=12*4096
[    0.000000] pcpu-alloc: [0] 0 [0] 1 [0] 2 [0] 3 
[    0.000000] Built 1 zonelists in Zone order, mobility grouping on.  Total pages: 492652
[    0.000000] Kernel command line: root=/dev/sda2 video=HDMI-A-1:1200x1920e drm_kms_helper.edid_firmware=HDMI-A-1:edid/1200x1920.bin 
[    0.000000] PID hash table entries: 4096 (order: 2, 16384 bytes)
[    0.000000] Dentry cache hash table entries: 131072 (order: 7, 524288 bytes)
[    0.000000] Inode-cache hash table entries: 65536 (order: 6, 262144 bytes)
[    0.000000] Initializing CPU#0
[    0.000000] Initializing HighMem for node 0 (000377fe:0007a000)
[    0.000000] Initializing Movable for node 0 (00000000:00000000)
[    0.000000] Memory: 1916980K/1977712K available (5569K kernel code, 331K rwdata, 1640K rodata, 4280K init, 1232K bss, 60732K reserved, 1038956K highmem)
[    0.000000] virtual kernel memory layout:
[    0.000000]     fixmap  : 0xfff66000 - 0xfffff000   ( 612 kB)
[    0.000000]     pkmap   : 0xff800000 - 0xffc00000   (4096 kB)
[    0.000000]     vmalloc : 0xf7ffe000 - 0xff7fe000   ( 120 MB)
[    0.000000]     lowmem  : 0xc0000000 - 0xf77fe000   ( 887 MB)
[    0.000000]       .init : 0xc1760000 - 0xc1b8e000   (4280 kB)
[    0.000000]       .data : 0xc1570a99 - 0xc175eec0   (1977 kB)
[    0.000000]       .text : 0xc1000000 - 0xc1570a99   (5570 kB)
[    0.000000] Checking if this processor honours the WP bit even in supervisor mode...Ok.
[    0.000000] SLUB: HWalign=64, Order=0-3, MinObjects=0, CPUs=4, Nodes=1
[    0.000000] Hierarchical RCU implementation.
[    0.000000] NR_IRQS:2304 nr_irqs:1024 16
[    0.000000] CPU 0 irqstacks, hard=f600c000 soft=f600e000
[    0.000000] Console: colour dummy device 80x25
[    0.000000] console [tty0] enabled
[    0.000000] Maximum core-clock to bus-clock ratio: 0xa
[    0.000000] Resolved frequency ID: 2, frequency: 133200 KHz
[    0.000000] TSC runs at 1332000 KHz
[    0.000000] lapic_timer_frequency = 133200
[    0.000000] tsc: Detected 1332.000 MHz processor
[    0.000038] Calibrating delay loop (skipped), value calculated using timer frequency.. 2664.00 BogoMIPS (lpj=1332000)
[    0.000056] pid_max: default: 32768 minimum: 301
[    0.000073] ACPI: Core revision 20140214
[    0.045134] ACPI: All ACPI Tables successfully acquired
[    0.048115] Mount-cache hash table entries: 2048 (order: 1, 8192 bytes)
[    0.048134] Mountpoint-cache hash table entries: 2048 (order: 1, 8192 bytes)
[    0.048462] Initializing cgroup subsys freezer
[    0.048505] CPU: Physical Processor ID: 0
[    0.048515] CPU: Processor Core ID: 0
[    0.048525] ENERGY_PERF_BIAS: Set to 'normal', was 'performance'
[    0.048525] ENERGY_PERF_BIAS: View and update with x86_energy_perf_policy(8)
[    0.060656] mce: CPU supports 6 MCE banks
[    0.060675] CPU0: Thermal monitoring enabled (TM1)
[    0.060696] Last level iTLB entries: 4KB 48, 2MB 0, 4MB 0
[    0.060696] Last level dTLB entries: 4KB 128, 2MB 16, 4MB 16, 1GB 0
[    0.060696] tlb_flushall_shift: 6
[    0.060903] Freeing SMP alternatives memory: 20K (c1b8e000 - c1b93000)
[    0.060940] ------------[ cut here ]------------
[    0.060959] WARNING: CPU: 0 PID: 0 at /tmp/e2/build/linux-git/mm/early_ioremap.c:136 __early_ioremap+0xbe/0x1c2()
[    0.060972] Modules linked in:
[    0.060985] CPU: 0 PID: 0 Comm: swapper/0 Not tainted 3.15.0-rc5-Inari #1
[    0.060995] Hardware name: Aava Mobile Oy Inari 8 2GB/Type2 - Board Product Name, BIOS BYT.5.03.47.0033-022 01/16/2014
[    0.061009]  00000000 00000000 c170df00 c1564914 c16631ec c170df30 c103e4aa c165b654
[    0.061047]  00000000 00000000 c16631ec 00000088 c177cdf5 c177cdf5 00041ee6 00005800
[    0.061069]  c1b97800 c170df40 c103e4ed 00000009 00000000 c170df98 c177cdf5 00000000
[    0.061090] Call Trace:
[    0.061105]  [<c1564914>] dump_stack+0x41/0x52
[    0.061119]  [<c103e4aa>] warn_slowpath_common+0x7a/0xa0
[    0.061132]  [<c177cdf5>] ? __early_ioremap+0xbe/0x1c2
[    0.061144]  [<c177cdf5>] ? __early_ioremap+0xbe/0x1c2
[    0.061156]  [<c103e4ed>] warn_slowpath_null+0x1d/0x20
[    0.061168]  [<c177cdf5>] __early_ioremap+0xbe/0x1c2
[    0.061182]  [<c10c4b42>] ? __get_free_pages+0x22/0x30
[    0.061196]  [<c10f217a>] ? __kmalloc+0xea/0xf0
[    0.061209]  [<c177d0b8>] early_memremap+0xd/0xf
[    0.061221]  [<c1773828>] efi_bgrt_init+0xf0/0x135
[    0.061234]  [<c1773150>] efi_late_init+0x8/0xa
[    0.061247]  [<c1760a34>] start_kernel+0x34f/0x35f
[    0.061259]  [<c1760520>] ? repair_env_string+0x51/0x51
[    0.061272]  [<c176036b>] i386_start_kernel+0x139/0x13c
[    0.061294] ---[ end trace d7b23e2954b99569 ]---
[    0.064345] Enabling APIC mode:  Flat.  Using 1 I/O APICs
[    0.065379] ..TIMER: vector=0x30 apic1=0 pin1=2 apic2=-1 pin2=-1
[    0.075406] ..MP-BIOS bug: 8254 timer not connected to IO-APIC
[    0.075416] ...trying to set up timer (IRQ0) through the 8259A ...
[    0.075425] ..... (found apic 0 pin 2) ...
[    0.085441] ....... works.
[    0.085450] smpboot: CPU0: Intel(R) Atom(TM) CPU  Z3745  @ 1.33GHz (fam: 06, model: 37, stepping: 08)
[    0.085489] TSC deadline timer enabled
[    0.085505] Performance Events: PEBS fmt2+, 8-deep LBR, Silvermont events, full-width counters, Intel PMU driver.
[    0.085531] ... version:                3
[    0.085539] ... bit width:              40
[    0.085547] ... generic registers:      2
[    0.085555] ... value mask:             000000ffffffffff
[    0.085563] ... max period:             000000ffffffffff
[    0.085571] ... fixed-purpose events:   3
[    0.085579] ... event mask:             0000000700000003
[    0.087178] CPU 1 irqstacks, hard=f60a6000 soft=f60b0000
[    0.087184] x86: Booting SMP configuration:
[    0.087195] .... node  #0, CPUs:      #1
[    0.097309] Initializing CPU#1
[    0.112526] CPU 2 irqstacks, hard=f60ba000 soft=f60bc000
[    0.112545]  #2
[    0.122597] Initializing CPU#2
[    0.137915] CPU 3 irqstacks, hard=f60c6000 soft=f60c8000
[    0.137929]  #3
[    0.147984] Initializing CPU#3
[    0.163166] x86: Booted up 1 node, 4 CPUs
[    0.163186] smpboot: Total of 4 processors activated (10656.00 BogoMIPS)
[    0.164201] devtmpfs: initialized
[    0.164699] PM: Registering ACPI NVS region [mem 0x0008f000-0x0008ffff] (4096 bytes)
[    0.164716] PM: Registering ACPI NVS region [mem 0x78c46000-0x78d45fff] (1048576 bytes)
[    0.164769] PM: Registering ACPI NVS region [mem 0x794c8000-0x79dc7fff] (9437184 bytes)
[    0.165321] pinctrl core: initialized pinctrl subsystem
[    0.165383] RTC time:  2:41:48, date: 05/13/14
[    0.165472] NET: Registered protocol family 16
[    0.165800] cpuidle: using governor ladder
[    0.165812] cpuidle: using governor menu
[    0.165887] ACPI: bus type PCI registered
[    0.166044] PCI: MMCONFIG for domain 0000 [bus 00-3f] at [mem 0xe0000000-0xe3ffffff] (base 0xe0000000)
[    0.166062] PCI: not using MMCONFIG
[    0.166410] PCI: Using configuration type 1 for base access
[    0.171661] ACPI: Added _OSI(Module Device)
[    0.171676] ACPI: Added _OSI(Processor Device)
[    0.171686] ACPI: Added _OSI(3.0 _SCP Extensions)
[    0.171695] ACPI: Added _OSI(Processor Aggregator Device)
[    0.207365] ACPI: SSDT 0x78BCAA90 000353 (v01 PmRef  Cpu0Ist  00003000 INTL 20130117)
[    0.208929] ACPI: Dynamic OEM Table Load:
[    0.208943] ACPI: SSDT 0x00000000 000353 (v01 PmRef  Cpu0Ist  00003000 INTL 20130117)
[    0.209485] ACPI: SSDT 0x78BC9910 000433 (v01 PmRef  Cpu0Cst  00003001 INTL 20130117)
[    0.211341] ACPI: Dynamic OEM Table Load:
[    0.211354] ACPI: SSDT 0x00000000 000433 (v01 PmRef  Cpu0Cst  00003001 INTL 20130117)
[    0.219899] ACPI: SSDT 0x78BCBD90 00015F (v01 PmRef  ApIst    00003000 INTL 20130117)
[    0.221480] ACPI: Dynamic OEM Table Load:
[    0.221494] ACPI: SSDT 0x00000000 00015F (v01 PmRef  ApIst    00003000 INTL 20130117)
[    0.224032] ACPI: SSDT 0x78BCBF10 00008D (v01 PmRef  ApCst    00003000 INTL 20130117)
[    0.225433] ACPI: Dynamic OEM Table Load:
[    0.225447] ACPI: SSDT 0x00000000 00008D (v01 PmRef  ApCst    00003000 INTL 20130117)
[    0.231309] ACPI: Interpreter enabled
[    0.231344] ACPI Exception: AE_NOT_FOUND, While evaluating Sleep State [\_S1_] (20140214/hwxface-580)
[    0.231369] ACPI Exception: AE_NOT_FOUND, While evaluating Sleep State [\_S2_] (20140214/hwxface-580)
[    0.231391] ACPI Exception: AE_NOT_FOUND, While evaluating Sleep State [\_S3_] (20140214/hwxface-580)
[    0.231413] ACPI Exception: AE_NOT_FOUND, While evaluating Sleep State [\_S4_] (20140214/hwxface-580)
[    0.231434] ACPI Exception: AE_NOT_FOUND, While evaluating Sleep State [\_S5_] (20140214/hwxface-580)
[    0.231452] ACPI: (supports S0)
[    0.231461] ACPI: Using IOAPIC for interrupt routing
[    0.231553] PCI: MMCONFIG for domain 0000 [bus 00-3f] at [mem 0xe0000000-0xe3ffffff] (base 0xe0000000)
[    0.239081] [Firmware Info]: PCI: MMCONFIG at [mem 0xe0000000-0xe3ffffff] not reserved in ACPI motherboard resources
[    0.239099] PCI: not using MMCONFIG
[    0.239157] PCI: Using host bridge windows from ACPI; if necessary, use "pci=nocrs" and report a bug
[    0.242534] ACPI: Power Resource [USBC] (on)
[    0.246624] ACPI: Power Resource [WWPR] (off)
[    0.257294] ACPI: Power Resource [PLPE] (on)
[    0.269398] ACPI: Power Resource [CLK0] (on)
[    0.269544] ACPI: Power Resource [CLK1] (on)
[    0.269912] ACPI: Power Resource [P28X] (off)
[    0.270071] ACPI: Power Resource [P18X] (off)
[    0.272628] ACPI: Power Resource [TCPR] (off)
[    0.279832] ACPI: PCI Root Bridge [PCI0] (domain 0000 [bus 00-ff])
[    0.279860] acpi PNP0A08:00: _OSC: OS supports [ASPM ClockPM Segments MSI]
[    0.280083] \_SB_.PCI0:_OSC invalid UUID
[    0.280088] _OSC request data:1 1e 0 
[    0.280100] acpi PNP0A08:00: _OSC failed (AE_ERROR); disabling ASPM
[    0.281420] acpi PNP0A08:00: fail to add MMCONFIG information, can't access extended PCI configuration space under this bridge.
[    0.281505] PCI host bridge to bus 0000:00
[    0.281520] pci_bus 0000:00: root bus resource [bus 00-ff]
[    0.281533] pci_bus 0000:00: root bus resource [io  0x0000-0x006f]
[    0.281545] pci_bus 0000:00: root bus resource [io  0x0078-0x0cf7]
[    0.281557] pci_bus 0000:00: root bus resource [io  0x0d00-0xffff]
[    0.281569] pci_bus 0000:00: root bus resource [mem 0x000a0000-0x000bffff]
[    0.281581] pci_bus 0000:00: root bus resource [mem 0x000c0000-0x000dffff]
[    0.281593] pci_bus 0000:00: root bus resource [mem 0x000e0000-0x000fffff]
[    0.281606] pci_bus 0000:00: root bus resource [mem 0x90c00000-0x90ffffff]
[    0.281618] pci_bus 0000:00: root bus resource [mem 0x7af00001-0x7ef00000]
[    0.281630] pci_bus 0000:00: root bus resource [mem 0x80000000-0x908ffffe]
[    0.281642] pci_bus 0000:00: root bus resource [mem 0xfed40000-0xfed40fff]
[    0.281667] pci 0000:00:00.0: [8086:0f00] type 00 class 0x060000
[    0.281861] pci 0000:00:02.0: [8086:0f31] type 00 class 0x030000
[    0.281886] pci 0000:00:02.0: reg 0x10: [mem 0x90000000-0x903fffff]
[    0.281906] pci 0000:00:02.0: reg 0x18: [mem 0x80000000-0x8fffffff pref]
[    0.281924] pci 0000:00:02.0: reg 0x20: [io  0x1000-0x1007]
[    0.282151] pci 0000:00:14.0: [8086:0f35] type 00 class 0x0c0330
[    0.282182] pci 0000:00:14.0: reg 0x10: [mem 0x90800000-0x9080ffff 64bit]
[    0.282262] pci 0000:00:14.0: PME# supported from D3hot D3cold
[    0.282440] pci 0000:00:1a.0: [8086:0f18] type 00 class 0x108000
[    0.282472] pci 0000:00:1a.0: reg 0x10: [mem 0x90700000-0x907fffff]
[    0.282489] pci 0000:00:1a.0: reg 0x14: [mem 0x90600000-0x906fffff]
[    0.282590] pci 0000:00:1a.0: PME# supported from D0 D3hot
[    0.282765] pci 0000:00:1f.0: [8086:0f1c] type 00 class 0x060100
[    0.282991] pci_bus 0000:00: on NUMA node 0
[    0.284118] ACPI: PCI Interrupt Link [LNKA] (IRQs 3 4 5 6 10 11 12 14 15) *0, disabled.
[    0.284441] ACPI: PCI Interrupt Link [LNKB] (IRQs 3 4 5 6 10 11 12 14 15) *0, disabled.
[    0.284761] ACPI: PCI Interrupt Link [LNKC] (IRQs 3 4 5 6 10 11 12 14 15) *0, disabled.
[    0.285090] ACPI: PCI Interrupt Link [LNKD] (IRQs 3 4 5 6 10 11 12 14 15) *0, disabled.
[    0.285410] ACPI: PCI Interrupt Link [LNKE] (IRQs 3 4 5 6 10 11 12 14 15) *0, disabled.
[    0.285730] ACPI: PCI Interrupt Link [LNKF] (IRQs 3 4 5 6 10 11 12 14 15) *0, disabled.
[    0.286050] ACPI: PCI Interrupt Link [LNKG] (IRQs 3 4 5 6 10 11 12 14 15) *0, disabled.
[    0.286379] ACPI: PCI Interrupt Link [LNKH] (IRQs 3 4 5 6 10 11 12 14 15) *0, disabled.
[    0.298870] dw_dmac INTL9C60:00: DesignWare DMA Controller, 8 channels
[    0.299585] dw_dmac INTL9C60:01: DesignWare DMA Controller, 8 channels
[    0.300369] vgaarb: device added: PCI:0000:00:02.0,decodes=io+mem,owns=io+mem,locks=none
[    0.300387] vgaarb: loaded
[    0.300394] vgaarb: bridge control possible 0000:00:02.0
[    0.300615] SCSI subsystem initialized
[    0.300634] ACPI: bus type USB registered
[    0.300722] usbcore: registered new interface driver usbfs
[    0.300766] usbcore: registered new interface driver hub
[    0.300847] usbcore: registered new device driver usb
[    0.310724] pps_core: LinuxPPS API ver. 1 registered
[    0.310737] pps_core: Software ver. 5.3.6 - Copyright 2005-2007 Rodolfo Giometti <giometti@linux.it>
[    0.310766] PTP clock support registered
[    0.311025] Advanced Linux Sound Architecture Driver Initialized.
[    0.311037] PCI: Using ACPI for IRQ routing
[    0.311047] PCI: pci_cache_line_size set to 64 bytes
[    0.311072] Expanded resource reserved due to conflict with PCI Bus 0000:00
[    0.311085] e820: reserve RAM buffer [mem 0x0008f000-0x0008ffff]
[    0.311090] e820: reserve RAM buffer [mem 0x0009e000-0x0009ffff]
[    0.311095] e820: reserve RAM buffer [mem 0x78346000-0x7bffffff]
[    0.311100] e820: reserve RAM buffer [mem 0x794c8000-0x7bffffff]
[    0.311105] e820: reserve RAM buffer [mem 0x7a000000-0x7bffffff]
[    0.311559] cfg80211: Calling CRDA to update world regulatory domain
[    0.311786] Switched to clocksource refined-jiffies
[    0.311915] pnp: PnP ACPI init
[    0.311939] ACPI: bus type PNP registered
[    0.312056] pnp 00:00: Plug and Play ACPI device, IDs PNP0b00 (active)
[    0.312247] pnp 00:01: Plug and Play ACPI device, IDs PNP0103 (active)
[    0.312343] pnp 00:02: Plug and Play ACPI device, IDs INT0800 (active)
[    0.312471] system 00:03: [io  0x0680-0x069f] has been reserved
[    0.312487] system 00:03: [io  0x0400-0x047f] has been reserved
[    0.312500] system 00:03: [io  0x0500-0x05fe] has been reserved
[    0.312513] system 00:03: [io  0x0600-0x061f] has been reserved
[    0.312525] system 00:03: [io  0x164e-0x164f] has been reserved
[    0.312539] system 00:03: Plug and Play ACPI device, IDs PNP0c02 (active)
[    0.312898] pnp 00:04: Plug and Play ACPI device, IDs PNP0501 (active)
[    0.314419] pnp 00:05: Plug and Play ACPI device, IDs INT0002 (active)
[    0.314596] pnp 00:06: Plug and Play ACPI device, IDs INT33fc (active)
[    0.314770] pnp 00:07: Plug and Play ACPI device, IDs INT33fc (active)
[    0.314944] pnp 00:08: Plug and Play ACPI device, IDs INT33fc (active)
[    0.316122] pnp 00:09: unknown resource type 19 in _CRS
[    0.316136] pnp 00:09: can't evaluate _CRS: 1
[    0.316211] pnp 00:09: Plug and Play ACPI device, IDs BCM2e3a (active)
[    0.323337] pnp 00:0a: unknown resource type 17 in _CRS
[    0.323352] pnp 00:0a: can't evaluate _CRS: 1
[    0.323447] pnp 00:0a: Plug and Play ACPI device, IDs INTcfd9 PNP0c40 (active)
[    0.323599] pnp 00:0b: Plug and Play ACPI device, IDs INT33bd (active)
[    0.323947] pnp 00:0c: Plug and Play ACPI device, IDs INT3401 (active)
[    0.324267] pnp 00:0d: unknown resource type 17 in _CRS
[    0.324281] pnp 00:0d: can't evaluate _CRS: 1
[    0.324361] pnp 00:0d: Plug and Play ACPI device, IDs INT3403 (active)
[    0.324502] pnp 00:0e: unknown resource type 17 in _CRS
[    0.324515] pnp 00:0e: can't evaluate _CRS: 1
[    0.324594] pnp 00:0e: Plug and Play ACPI device, IDs INT3403 (active)
[    0.324790] pnp 00:0f: unknown resource type 17 in _CRS
[    0.324804] pnp 00:0f: can't evaluate _CRS: 1
[    0.324888] pnp 00:0f: Plug and Play ACPI device, IDs INT3409 (active)
[    0.325189] pnp: PnP ACPI: found 16 devices
[    0.325200] ACPI: bus type PNP unregistered
[    0.330327] pci_bus 0000:00: resource 4 [io  0x0000-0x006f]
[    0.330335] pci_bus 0000:00: resource 5 [io  0x0078-0x0cf7]
[    0.330342] pci_bus 0000:00: resource 6 [io  0x0d00-0xffff]
[    0.330348] pci_bus 0000:00: resource 7 [mem 0x000a0000-0x000bffff]
[    0.330354] pci_bus 0000:00: resource 8 [mem 0x000c0000-0x000dffff]
[    0.330361] pci_bus 0000:00: resource 9 [mem 0x000e0000-0x000fffff]
[    0.330367] pci_bus 0000:00: resource 10 [mem 0x90c00000-0x90ffffff]
[    0.330373] pci_bus 0000:00: resource 11 [mem 0x7af00001-0x7ef00000]
[    0.330379] pci_bus 0000:00: resource 12 [mem 0x80000000-0x908ffffe]
[    0.330386] pci_bus 0000:00: resource 13 [mem 0xfed40000-0xfed40fff]
[    0.330439] NET: Registered protocol family 2
[    0.330776] TCP established hash table entries: 8192 (order: 3, 32768 bytes)
[    0.330825] TCP bind hash table entries: 8192 (order: 4, 65536 bytes)
[    0.330892] TCP: Hash tables configured (established 8192 bind 8192)
[    0.330933] TCP: reno registered
[    0.330945] UDP hash table entries: 512 (order: 2, 16384 bytes)
[    0.330967] UDP-Lite hash table entries: 512 (order: 2, 16384 bytes)
[    0.331076] NET: Registered protocol family 1
[    0.331114] pci 0000:00:02.0: Boot video device
[    0.331512] PCI: CLS 0 bytes, default 64
[    0.514091] microcode: CPU0 sig=0x30678, pf=0x2, revision=0x808
[    0.514123] microcode: CPU1 sig=0x30678, pf=0x2, revision=0x808
[    0.514152] microcode: CPU2 sig=0x30678, pf=0x2, revision=0x808
[    0.514181] microcode: CPU3 sig=0x30678, pf=0x2, revision=0x808
[    0.514325] microcode: Microcode Update Driver: v2.00 <tigran@aivazian.fsnet.co.uk>, Peter Oruba
[    0.515032] Scanning for low memory corruption every 60 seconds
[    0.515717] futex hash table entries: 1024 (order: 4, 65536 bytes)
[    0.515772] audit: initializing netlink subsys (disabled)
[    0.515816] audit: type=2000 audit(1399948908.496:1): initialized
[    0.553602] bounce pool size: 64 pages
[    0.553620] HugeTLB registered 4 MB page size, pre-allocated 0 pages
[    0.559083] msgmni has been set to 1775
[    0.559837] Block layer SCSI generic (bsg) driver version 0.4 loaded (major 251)
[    0.559853] io scheduler noop registered
[    0.559862] io scheduler deadline registered
[    0.560024] io scheduler cfq registered (default)
[    0.560385] intel_idle: MWAIT substates: 0x33000020
[    0.560391] intel_idle: v0.4 model 0x37
[    0.560395] intel_idle: lapic_timer_reliable_states 0xffffffff
[    0.567555] ACPI: AC Adapter [ADP1] (on-line)
[    0.567897] input: Power Button as /devices/LNXSYSTM:00/LNXPWRBN:00/input/input0
[    0.567919] ACPI: Power Button [PWRF]
[    0.567932] ACPI Warning: Could not enable fixed event - PowerButton (2) (20140214/evxface-628)
[    0.571549] button: probe of LNXPWRBN:00 failed with error -22
[    0.577570] [Firmware Bug]: No valid trip found
[    0.577864] Serial: 8250/16550 driver, 4 ports, IRQ sharing enabled
[    0.598273] 00:04: ttyS0 at I/O 0x3f8 (irq = 4, base_baud = 115200) is a 16550A
[    0.599334] 80860F0A:00: ttyS1 at MMIO 0x9091d000 (irq = 39, base_baud = 2764800) is a 16550A
[    0.599604] 80860F0A:01: ttyS2 at MMIO 0x9091f000 (irq = 40, base_baud = 2764800) is a 16550A
[    0.599962] hpet: number irqs doesn't agree with number of timers
[    0.600113] Non-volatile memory driver v1.3
[    0.600193] [drm] Initialized drm 1.1.0 20060810
[    0.602197] [drm] Memory usable by graphics device = 2048M
[    0.607442] ACPI Error: Error attaching device[f60238a0] data
[    0.607460]  (20140214/bus-143)
[    0.607708] ACPI Error: Error attaching device[f60238a0] data
[    0.607724]  (20140214/bus-143)
[    0.607987] ACPI Error: Error attaching device[f60238a0] data
[    0.608003]  (20140214/bus-143)
[    0.608251] ACPI Error: Error attaching device[f60238a0] data
[    0.608267]  (20140214/bus-143)
[    0.608515] ACPI Error: Error attaching device[f60238a0] data
[    0.608531]  (20140214/bus-143)
[    0.610972] i915 0000:00:02.0: irq 103 for MSI/MSI-X
[    0.610990] [drm] Supports vblank timestamp caching Rev 2 (21.10.2013).
[    0.611001] [drm] Driver supports precise vblank timestamp query.
[    0.661459] vgaarb: device changed decodes: PCI:0000:00:02.0,olddecodes=io+mem,decodes=io+mem:owns=io+mem
[    0.662265] ACPI Error: Error attaching device[f60238a0] data
[    0.662282]  (20140214/bus-143)
[    0.662679] ACPI Error: Error attaching device[f60238a0] data
[    0.662696]  (20140214/bus-143)
[    1.172920] [drm] forcing HDMI-A-1 connector ON
[    1.246457] [drm] GMBUS [i915 gmbus vga] timed out, falling back to bit banging on pin 2
[    1.267084] [drm] Got external EDID base block and 0 extensions from "edid/1200x1920.bin" for connector "HDMI-A-1"
[    1.408227] [drm] GMBUS [i915 gmbus dpc] timed out, falling back to bit banging on pin 4
[    1.501620] fbcon: inteldrmfb (fb0) is primary device
[    1.624664] Switched to clocksource tsc
[    2.012203] Console: switching to colour frame buffer device 150x120
[    2.041805] i915 0000:00:02.0: fb0: inteldrmfb frame buffer device
[    2.041936] i915 0000:00:02.0: registered panic notifier
[    2.046235] ACPI: Video Device [GFX0] (multi-head: yes  rom: no  post: no)
[    2.048005] acpi device:1a: registered as cooling_device4
[    2.049449] acpi device:21: registered as cooling_device5
[    2.049750] input: Video Bus as /devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A08:00/LNXVIDEO:00/input/input1
[    2.050029] [drm] Initialized i915 1.6.0 20080730 for 0000:00:02.0 on minor 0
[    2.050526] brd: module loaded
[    2.051083] loop: module loaded
[    2.051814] xhci_hcd 0000:00:14.0: xHCI Host Controller
[    2.052059] xhci_hcd 0000:00:14.0: new USB bus registered, assigned bus number 1
[    2.052384] xhci_hcd 0000:00:14.0: cache line size of 64 is not supported
[    2.052427] xhci_hcd 0000:00:14.0: irq 104 for MSI/MSI-X
[    2.052569] usb usb1: New USB device found, idVendor=1d6b, idProduct=0002
[    2.052718] usb usb1: New USB device strings: Mfr=3, Product=2, SerialNumber=1
[    2.052870] usb usb1: Product: xHCI Host Controller
[    2.052985] usb usb1: Manufacturer: Linux 3.15.0-rc5-Inari xhci_hcd
[    2.053119] usb usb1: SerialNumber: 0000:00:14.0
[    2.053529] hub 1-0:1.0: USB hub found
[    2.053640] hub 1-0:1.0: 6 ports detected
[    2.055344] xhci_hcd 0000:00:14.0: xHCI Host Controller
[    2.055551] xhci_hcd 0000:00:14.0: new USB bus registered, assigned bus number 2
[    2.055801] usb usb2: New USB device found, idVendor=1d6b, idProduct=0003
[    2.055948] usb usb2: New USB device strings: Mfr=3, Product=2, SerialNumber=1
[    2.056173] usb usb2: Product: xHCI Host Controller
[    2.056281] usb usb2: Manufacturer: Linux 3.15.0-rc5-Inari xhci_hcd
[    2.056414] usb usb2: SerialNumber: 0000:00:14.0
[    2.056825] hub 2-0:1.0: USB hub found
[    2.056928] hub 2-0:1.0: 1 port detected
[    2.057430] usbcore: registered new interface driver usb-storage
[    2.057694] i8042: PNP: No PS/2 controller found. Probing ports directly.
[    2.825230] [drm] Enabling RC6 states: RC6 off, RC6p off, RC6pp off
[    3.101867] i8042: No controller found
[    3.102091] mousedev: PS/2 mouse device common for all mice
[    3.102390] ACPI Warning: Could not enable fixed event - RealTimeClock (4) (20140214/evxface-628)
[    3.102794] rtc_cmos 00:00: rtc core: registered rtc_cmos as rtc0
[    3.102963] rtc_cmos 00:00: alarms up to one day, 242 bytes nvram
[    3.103164] i2c /dev entries driver
[    3.104656] Intel P-state driver initializing.
[    3.104782] Intel pstate controlling: cpu 0
[    3.104913] Intel pstate controlling: cpu 1
[    3.105039] Intel pstate controlling: cpu 2
[    3.105167] Intel pstate controlling: cpu 3
[    3.105381] sdhci: Secure Digital Host Controller Interface driver
[    3.105514] sdhci: Copyright(c) Pierre Ossman
[    3.106808] mmc0: no vqmmc regulator found
[    3.106900] mmc0: no vmmc regulator found
[    3.108138] mmc0: SDHCI controller on ACPI [80860F14:00] using ADMA
[    3.109672] mmc1: no vqmmc regulator found
[    3.109765] mmc1: no vmmc regulator found
[    3.111002] mmc1: SDHCI controller on ACPI [INT33BB:00] using ADMA
[    3.111624] sdhci-acpi 80860F14:01: failed to setup card detect gpio
[    3.112767] mmc2: no vqmmc regulator found
[    3.112857] mmc2: no vmmc regulator found
[    3.114086] mmc2: SDHCI controller on ACPI [80860F14:01] using ADMA
[    3.114270] sdhci-pltfm: SDHCI platform and OF driver helper
[    3.114403] EFI Variables Facility v0.08 2004-May-17
[    3.124197] hidraw: raw HID events driver (C) Jiri Kosina
[    3.124699] usbcore: registered new interface driver usbhid
[    3.124801] usbhid: USB HID core driver
[    3.125249] TCP: cubic registered
[    3.125328] Initializing XFRM netlink socket
[    3.125678] NET: Registered protocol family 10
[    3.126149] sit: IPv6 over IPv4 tunneling driver
[    3.126519] NET: Registered protocol family 17
[    3.128471] Using IPI No-Shortcut mode
[    3.128835] registered taskstats version 1
[    3.129457]   Magic number: 14:311:662
[    3.129606] console [netcon0] enabled
[    3.129673] netconsole: network logging started
[    3.129949] PM: Hibernation image not present or could not be loaded.
[    3.129958] ALSA device list:
[    3.130014]   No soundcards found.
[    3.130135] Warning: unable to open an initial console.
[    3.132093] Freeing unused kernel memory: 4280K (c1760000 - c1b8e000)
[    3.152787] udevd[950]: starting version 173
[    3.221479] mmc0: BKOPS_EN bit is not set
[    3.291604] mmc0: new HS200 MMC card at address 0001
[    3.293171] mmcblk0: mmc0:0001 HCG8e\x04 58.2 GiB 
[    3.299431] mmcblk0boot0: mmc0:0001 HCG8e\x04 partition 1 4.00 MiB
[    3.306618] mmcblk0boot1: mmc0:0001 HCG8e\x04 partition 2 4.00 MiB
[    3.308595] mmcblk0rpmb: mmc0:0001 HCG8e\x04 partition 3 4.00 MiB
[    3.310774]  mmcblk0: p1 p2
[    3.314502] usb 2-1: new SuperSpeed USB device number 2 using xhci_hcd
[    3.315181]  mmcblk0boot1: unknown partition table
[    3.318619]  mmcblk0boot0:
[    3.325628] usb 2-1: New USB device found, idVendor=0451, idProduct=8046
[    3.325736] usb 2-1: New USB device strings: Mfr=0, Product=0, SerialNumber=0
[    3.326706] hub 2-1:1.0: USB hub found
[    3.326807] hub 2-1:1.0: 4 ports detected
[    3.457397] usb 1-1: new high-speed USB device number 2 using xhci_hcd
[    3.614821] usb 1-1: New USB device found, idVendor=0451, idProduct=8044
[    3.638906] usb 1-1: New USB device strings: Mfr=0, Product=0, SerialNumber=1
[    3.662978] usb 1-1: SerialNumber: 420208698DA1
[    3.687826] hub 1-1:1.0: USB hub found
[    3.711486] Clocksource tsc unstable (delta = 86056090 ns)
[    3.735632] Switched to clocksource refined-jiffies
[    3.735695] hub 1-1:1.0: 4 ports detected
[    3.871722] usb 1-3: new high-speed USB device number 3 using xhci_hcd
[    4.046409] usb 1-3: New USB device found, idVendor=12d1, idProduct=1570
[    4.070299] usb 1-3: New USB device strings: Mfr=5, Product=4, SerialNumber=0
[    4.094161] usb 1-3: Product: HUAWEI Mobile Broadband Module
[    4.117914] usb 1-3: Manufacturer: Huawei Technologies Co., Ltd.
[    4.287085] usb 1-4: new high-speed USB device number 4 using xhci_hcd
[    4.469915] usb 1-4: New USB device found, idVendor=0951, idProduct=1603
[    4.493603] usb 1-4: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[    4.517281] usb 1-4: Product: DataTraveler 2.0
[    4.540866] usb 1-4: Manufacturer: Kingston
[    4.564397] usb 1-4: SerialNumber: 89900000000000000000017E
[    4.588912] usb-storage 1-4:1.0: USB Mass Storage device detected
[    4.612720] scsi0 : usb-storage 1-4:1.0
[    4.707537] usb 1-1.2: new high-speed USB device number 5 using xhci_hcd
[    4.814374] usb 1-1.2: New USB device found, idVendor=0424, idProduct=7500
[    4.837670] usb 1-1.2: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[    4.860860] usb 1-1.2: Product: LAN7500
[    4.883907] usb 1-1.2: Manufacturer: SMSC
[    4.906875] usb 1-1.2: SerialNumber: 00800f11700e
[    5.005944] usb 1-1.3: new low-speed USB device number 6 using xhci_hcd
[    5.120893] usb 1-1.3: New USB device found, idVendor=046d, idProduct=c312
[    5.143940] usb 1-1.3: New USB device strings: Mfr=1, Product=2, SerialNumber=0
[    5.166934] usb 1-1.3: Product: USB Multimedia Keyboard
[    5.189795] usb 1-1.3: Manufacturer: LITEON Technology
[    5.213180] usb 1-1.3: ep 0x81 - rounding interval to 128 microframes, ep desc says 192 microframes
[    5.240839] input: LITEON Technology USB Multimedia Keyboard as /devices/pci0000:00/0000:00:14.0/usb1/1-1/1-1.3/1-1.3:1.0/0003:046D:C312.0001/input/input2
[    5.288118] hid-generic 0003:046D:C312.0001: input,hidraw0: USB HID v1.10 Keyboard [LITEON Technology USB Multimedia Keyboard] on usb-0000:00:14.0-1.3/input0
[    6.046665] scsi 0:0:0:0: Direct-Access     Kingston DataTraveler 2.0 1.00 PQ: 0 ANSI: 2
[    6.072550] sd 0:0:0:0: Attached scsi generic sg0 type 0
[    6.097262] sd 0:0:0:0: [sda] 7856128 512-byte logical blocks: (4.02 GB/3.74 GiB)
[    6.122493] sd 0:0:0:0: [sda] Write Protect is off
[    6.147054] sd 0:0:0:0: [sda] Mode Sense: 23 00 00 00
[    6.147419] sd 0:0:0:0: [sda] No Caching mode page found
[    6.171970] sd 0:0:0:0: [sda] Assuming drive cache: write through
[    6.199476]  sda: sda1 sda2
[    6.234277] sd 0:0:0:0: [sda] Attached SCSI removable disk
[    6.565533] EXT4-fs (sda2): couldn't mount as ext3 due to feature incompatibilities
[    6.594874] EXT4-fs (sda2): couldn't mount as ext2 due to feature incompatibilities
[    6.633506] EXT4-fs (sda2): mounted filesystem with ordered data mode. Opts: (null)
[    6.912041] random: nonblocking pool is initialized
[    7.850402] udevd[1663]: starting version 173
[    7.985774] sst-acpi 80860F28:00: Direct firmware load failed with error -2
[    7.996052] sst-acpi 80860F28:00: Falling back to user helper
[    8.073790] smsc75xx v1.0.0
[    8.088302] sst-acpi 80860F28:00: Cannot load firmware intel/fw_sst_0f28.bin-i2s_master
[    8.088802] byt-rt5640 byt-rt5640: ASoC: CPU DAI Front-cpu-dai not registered
[    8.088820] platform byt-rt5640: Driver byt-rt5640 requests probe deferral
[    8.097125] byt-rt5640 byt-rt5640: ASoC: CPU DAI Front-cpu-dai not registered
[    8.097140] platform byt-rt5640: Driver byt-rt5640 requests probe deferral
[    8.136577] smsc75xx 1-1.2:1.0 eth0: register 'smsc75xx' at usb-0000:00:14.0-1.2, smsc75xx USB 2.0 Gigabit Ethernet, 70:2f:97:00:22:4f
[    8.145263] usbcore: registered new interface driver smsc75xx
[    8.145392] byt-rt5640 byt-rt5640: ASoC: CPU DAI Front-cpu-dai not registered
[    8.145429] platform byt-rt5640: Driver byt-rt5640 requests probe deferral
[   16.314692] mmc0: Got data interrupt 0x00000002 even though no data operation was in progress.
[   16.343169] mmcblk0rpmb: error -110 transferring data, sector 8064, nr 8, cmd response 0x900, card status 0xb00
[   16.369905] mmcblk0rpmb: retrying using single block read
[   16.398887] mmcblk0rpmb: timed out sending r/w cmd command, card status 0x400900
[   16.428174] mmcblk0rpmb: timed out sending r/w cmd command, card status 0x400900
[   16.457259] mmcblk0rpmb: timed out sending r/w cmd command, card status 0x400900
[   16.486166] mmcblk0rpmb: timed out sending r/w cmd command, card status 0x400900
[   16.514941] mmcblk0rpmb: timed out sending r/w cmd command, card status 0x400900
[   16.543616] mmcblk0rpmb: timed out sending r/w cmd command, card status 0x400900
[   16.569984] end_request: I/O error, dev mmcblk0rpmb, sector 8064
[   16.596349] Buffer I/O error on device mmcblk0rpmb, logical block 1008
[   24.832319] mmc0: Got data interrupt 0x00000002 even though no data operation was in progress.
[   24.861222] mmcblk0rpmb: error -110 transferring data, sector 8064, nr 8, cmd response 0x900, card status 0xb00
[   24.888253] mmcblk0rpmb: retrying using single block read
[   24.917282] mmcblk0rpmb: timed out sending r/w cmd command, card status 0x400900
[   24.946559] mmcblk0rpmb: timed out sending r/w cmd command, card status 0x400900
[   24.975652] mmcblk0rpmb: timed out sending r/w cmd command, card status 0x400900
[   25.004522] mmcblk0rpmb: timed out sending r/w cmd command, card status 0x400900
[   25.033198] mmcblk0rpmb: timed out sending r/w cmd command, card status 0x400900
[   25.061704] mmcblk0rpmb: timed out sending r/w cmd command, card status 0x400900
[   25.087896] end_request: I/O error, dev mmcblk0rpmb, sector 8064
[   25.114126] Buffer I/O error on device mmcblk0rpmb, logical block 1008
[   33.349878] mmc0: Got data interrupt 0x00000002 even though no data operation was in progress.
[   33.378699] mmcblk0rpmb: error -110 transferring data, sector 0, nr 16, cmd response 0x900, card status 0xb00
[   33.405713] mmcblk0rpmb: retrying using single block read
[   33.434832] mmcblk0rpmb: timed out sending r/w cmd command, card status 0x400900
[   33.464123] mmcblk0rpmb: timed out sending r/w cmd command, card status 0x400900
[   33.493276] mmcblk0rpmb: timed out sending r/w cmd command, card status 0x400900
[   33.522318] mmcblk0rpmb: timed out sending r/w cmd command, card status 0x400900
[   33.551240] mmcblk0rpmb: timed out sending r/w cmd command, card status 0x400900
[   33.580067] mmcblk0rpmb: timed out sending r/w cmd command, card status 0x400900
[   33.606641] end_request: I/O error, dev mmcblk0rpmb, sector 0
[   33.633265] Buffer I/O error on device mmcblk0rpmb, logical block 0
[   33.660054] end_request: I/O error, dev mmcblk0rpmb, sector 8
[   33.686867] Buffer I/O error on device mmcblk0rpmb, logical block 1
[   41.927437] mmc0: Got data interrupt 0x00000002 even though no data operation was in progress.
[   41.956639] mmcblk0rpmb: error -110 transferring data, sector 0, nr 8, cmd response 0x900, card status 0xb00
[   41.984021] mmcblk0rpmb: retrying using single block read
[   42.013480] mmcblk0rpmb: timed out sending r/w cmd command, card status 0x400900
[   42.043118] mmcblk0rpmb: timed out sending r/w cmd command, card status 0x400900
[   42.072609] mmcblk0rpmb: timed out sending r/w cmd command, card status 0x400900
[   42.102063] mmcblk0rpmb: timed out sending r/w cmd command, card status 0x400900
[   42.131355] mmcblk0rpmb: timed out sending r/w cmd command, card status 0x400900
[   42.160452] mmcblk0rpmb: timed out sending r/w cmd command, card status 0x400900
[   42.187206] end_request: I/O error, dev mmcblk0rpmb, sector 0
[   42.213908] Buffer I/O error on device mmcblk0rpmb, logical block 0
[   46.035190] IPv6: ADDRCONF(NETDEV_UP): eth0: link is not ready
[   47.575941] IPv6: ADDRCONF(NETDEV_CHANGE): eth0: link becomes ready
[   47.602582] smsc75xx 1-1.2:1.0 eth0: link up, 100Mbps, full-duplex, lpa 0x45E1
[   47.633581] smsc75xx 1-1.2:1.0 eth0: link up, 100Mbps, full-duplex, lpa 0x45E1

=2D-nextPart1435871.THQkheyNVN--
This is a multi-part message in MIME format.

[-- Attachment #1.2: Type: text/plain, Size: 1388 bytes --]

Lan Tianyu wrote:
> On 05/13/2014 09:09 PM, Rolf Eike Beer wrote:
> > Am Montag, 28. April 2014, 22:27:39 schrieb Lan Tianyu:
> >> ACPI 5.0 spec(5.5.2.4.5) defines GenericSerialBus(i2c, spi, uart)
> >> operation
> >> region. It allows ACPI aml code able to access such kind of devices to
> >> implement some ACPI standard method.
> >> 
> >> On the Asus T100TA, Bios use GenericSerialBus operation region to access
> >> i2c device to get battery info. So battery function depends on the I2C
> >> operation region support. Here is the bug link.
> >> https://bugzilla.kernel.org/show_bug.cgi?id=69011
> > 
> > Hi all,
> 
> > I have tested this series and got some errors, but no additional 
functionality:
> Hi Rolf:
> 	Thanks for test. Could you attach the output of dmesg and acpidump?
> Which machine you are testing on?

Hi,

this is an Aava Inari 8 tablet (pre-release hardware). Please find the DSDT 
and the dmesg.log attached.

In case of any further questions don't hesitate to ask, I'll try to be more 
responsible.

Regards,

Eike
-- 
Rolf Eike Beer, emlix GmbH, http://www.emlix.com
Fon +49 551 30664-0, Fax +49 551 30664-11
Bertha-von-Suttner-Str. 9, 37085 Göttingen, Germany
Sitz der Gesellschaft: Göttingen, Amtsgericht Göttingen HR B 3160
Geschäftsführung: Dr. Uwe Kracke, Ust-IdNr.: DE 205 198 055

emlix - smart embedded open source

[-- Attachment #1.3: dsdt.dat --]
[-- Type: application/octet-stream, Size: 47852 bytes --]

[-- Attachment #1.4: dmesg.log-3.15-rc5-inari --]
[-- Type: text/plain, Size: 47350 bytes --]

[    0.000000] Initializing cgroup subsys cpuset
[    0.000000] Initializing cgroup subsys cpu
[    0.000000] Initializing cgroup subsys cpuacct
[    0.000000] Linux version 3.15.0-rc5-Inari (root@devpool02) (gcc version 4.6.4 (Emlix Linux Inari) ) #1 SMP Tue May 13 08:40:31 UTC 2014
[    0.000000] e820: BIOS-provided physical RAM map:
[    0.000000] BIOS-e820: [mem 0x0000000000000000-0x000000000008efff] usable
[    0.000000] BIOS-e820: [mem 0x000000000008f000-0x000000000008ffff] ACPI NVS
[    0.000000] BIOS-e820: [mem 0x0000000000090000-0x000000000009dfff] usable
[    0.000000] BIOS-e820: [mem 0x000000000009e000-0x000000000009ffff] reserved
[    0.000000] BIOS-e820: [mem 0x0000000000100000-0x000000001fffffff] usable
[    0.000000] BIOS-e820: [mem 0x0000000020000000-0x00000000200fffff] reserved
[    0.000000] BIOS-e820: [mem 0x0000000020100000-0x0000000078345fff] usable
[    0.000000] BIOS-e820: [mem 0x0000000078346000-0x0000000078c45fff] reserved
[    0.000000] BIOS-e820: [mem 0x0000000078c46000-0x0000000078d45fff] ACPI NVS
[    0.000000] BIOS-e820: [mem 0x0000000078d46000-0x0000000078d85fff] ACPI data
[    0.000000] BIOS-e820: [mem 0x0000000078d86000-0x00000000794c7fff] usable
[    0.000000] BIOS-e820: [mem 0x00000000794c8000-0x0000000079dc7fff] ACPI NVS
[    0.000000] BIOS-e820: [mem 0x0000000079dc8000-0x0000000079ffffff] usable
[    0.000000] BIOS-e820: [mem 0x00000000e00f8000-0x00000000e00f8fff] reserved
[    0.000000] BIOS-e820: [mem 0x00000000fed01000-0x00000000fed01fff] reserved
[    0.000000] BIOS-e820: [mem 0x00000000ffd00000-0x00000000ffffffff] reserved
[    0.000000] Notice: NX (Execute Disable) protection cannot be enabled: non-PAE kernel!
[    0.000000] efi: EFI v2.31 by INSYDE Corp.
[    0.000000] efi:  ACPI 2.0=0x78d85014  SMBIOS=0x78c45000 
[    0.000000] efi: mem00: type=7, attr=0xf, range=[0x0000000000000000-0x0000000000001000) (0MB)
[    0.000000] efi: mem01: type=2, attr=0xf, range=[0x0000000000001000-0x0000000000007000) (0MB)
[    0.000000] efi: mem02: type=7, attr=0xf, range=[0x0000000000007000-0x000000000008f000) (0MB)
[    0.000000] efi: mem03: type=10, attr=0xf, range=[0x000000000008f000-0x0000000000090000) (0MB)
[    0.000000] efi: mem04: type=7, attr=0xf, range=[0x0000000000090000-0x000000000009e000) (0MB)
[    0.000000] efi: mem05: type=0, attr=0xf, range=[0x000000000009e000-0x00000000000a0000) (0MB)
[    0.000000] efi: mem06: type=7, attr=0xf, range=[0x0000000000100000-0x0000000001000000) (15MB)
[    0.000000] efi: mem07: type=2, attr=0xf, range=[0x0000000001000000-0x0000000001ded000) (13MB)
[    0.000000] efi: mem08: type=7, attr=0xf, range=[0x0000000001ded000-0x0000000020000000) (482MB)
[    0.000000] efi: mem09: type=0, attr=0xf, range=[0x0000000020000000-0x0000000020100000) (1MB)
[    0.000000] efi: mem10: type=7, attr=0xf, range=[0x0000000020100000-0x0000000071dc0000) (1308MB)
[    0.000000] efi: mem11: type=4, attr=0xf, range=[0x0000000071dc0000-0x0000000071de0000) (0MB)
[    0.000000] efi: mem12: type=7, attr=0xf, range=[0x0000000071de0000-0x0000000073356000) (21MB)
[    0.000000] efi: mem13: type=2, attr=0xf, range=[0x0000000073356000-0x0000000073358000) (0MB)
[    0.000000] efi: mem14: type=1, attr=0xf, range=[0x0000000073358000-0x0000000073b46000) (7MB)
[    0.000000] efi: mem15: type=7, attr=0xf, range=[0x0000000073b46000-0x0000000076a92000) (47MB)
[    0.000000] efi: mem16: type=4, attr=0xf, range=[0x0000000076a92000-0x00000000774ec000) (10MB)
[    0.000000] efi: mem17: type=7, attr=0xf, range=[0x00000000774ec000-0x00000000774f9000) (0MB)
[    0.000000] efi: mem18: type=4, attr=0xf, range=[0x00000000774f9000-0x0000000077d46000) (8MB)
[    0.000000] efi: mem19: type=7, attr=0xf, range=[0x0000000077d46000-0x0000000078161000) (4MB)
[    0.000000] efi: mem20: type=3, attr=0xf, range=[0x0000000078161000-0x0000000078346000) (1MB)
[    0.000000] efi: mem21: type=5, attr=0x800000000000000f, range=[0x0000000078346000-0x0000000078546000) (2MB)
[    0.000000] efi: mem22: type=6, attr=0x800000000000000f, range=[0x0000000078546000-0x0000000078846000) (3MB)
[    0.000000] efi: mem23: type=0, attr=0xf, range=[0x0000000078846000-0x0000000078c46000) (4MB)
[    0.000000] efi: mem24: type=10, attr=0xf, range=[0x0000000078c46000-0x0000000078d46000) (1MB)
[    0.000000] efi: mem25: type=9, attr=0xf, range=[0x0000000078d46000-0x0000000078d86000) (0MB)
[    0.000000] efi: mem26: type=4, attr=0xf, range=[0x0000000078d86000-0x00000000794c8000) (7MB)
[    0.000000] efi: mem27: type=10, attr=0xf, range=[0x00000000794c8000-0x0000000079dc8000) (9MB)
[    0.000000] efi: mem28: type=4, attr=0xf, range=[0x0000000079dc8000-0x000000007a000000) (2MB)
[    0.000000] efi: mem29: type=11, attr=0x8000000000000001, range=[0x00000000e00f8000-0x00000000e00f9000) (0MB)
[    0.000000] efi: mem30: type=11, attr=0x8000000000000000, range=[0x00000000fed01000-0x00000000fed02000) (0MB)
[    0.000000] efi: mem31: type=11, attr=0x8000000000000000, range=[0x00000000ffd00000-0x0000000100000000) (3MB)
[    0.000000] SMBIOS 2.7 present.
[    0.000000] DMI: Aava Mobile Oy Inari 8 2GB/Type2 - Board Product Name, BIOS BYT.5.03.47.0033-022 01/16/2014
[    0.000000] e820: update [mem 0x00000000-0x00000fff] usable ==> reserved
[    0.000000] e820: remove [mem 0x000a0000-0x000fffff] usable
[    0.000000] e820: last_pfn = 0x7a000 max_arch_pfn = 0x100000
[    0.000000] MTRR default type: uncachable
[    0.000000] MTRR fixed ranges enabled:
[    0.000000]   00000-9FFFF write-back
[    0.000000]   A0000-FFFFF write-protect
[    0.000000] MTRR variable ranges enabled:
[    0.000000]   0 base 0FFD00000 mask FFFC00000 write-protect
[    0.000000]   1 base 000000000 mask FC0000000 write-back
[    0.000000]   2 base 040000000 mask FE0000000 write-back
[    0.000000]   3 base 060000000 mask FF0000000 write-back
[    0.000000]   4 base 070000000 mask FF8000000 write-back
[    0.000000]   5 base 078000000 mask FFC000000 write-back
[    0.000000]   6 base 07B000000 mask FFF000000 uncachable
[    0.000000]   7 base 07AE00000 mask FFFE00000 uncachable
[    0.000000] x86 PAT enabled: cpu 0, old 0x7040600070406, new 0x7010600070106
[    0.000000] Scanning 1 areas for low memory corruption
[    0.000000] initial memory mapped: [mem 0x00000000-0x01ffffff]
[    0.000000] Base memory trampoline at [c009a000] 9a000 size 16384
[    0.000000] init_memory_mapping: [mem 0x00000000-0x000fffff]
[    0.000000]  [mem 0x00000000-0x000fffff] page 4k
[    0.000000] init_memory_mapping: [mem 0x37000000-0x373fffff]
[    0.000000]  [mem 0x37000000-0x373fffff] page 2M
[    0.000000] init_memory_mapping: [mem 0x30000000-0x36ffffff]
[    0.000000]  [mem 0x30000000-0x36ffffff] page 2M
[    0.000000] init_memory_mapping: [mem 0x00100000-0x1fffffff]
[    0.000000]  [mem 0x00100000-0x003fffff] page 4k
[    0.000000]  [mem 0x00400000-0x1fffffff] page 2M
[    0.000000] init_memory_mapping: [mem 0x20100000-0x2fffffff]
[    0.000000]  [mem 0x20100000-0x203fffff] page 4k
[    0.000000]  [mem 0x20400000-0x2fffffff] page 2M
[    0.000000] BRK [0x01cd0000, 0x01cd0fff] PGTABLE
[    0.000000] init_memory_mapping: [mem 0x37400000-0x377fdfff]
[    0.000000]  [mem 0x37400000-0x377fdfff] page 4k
[    0.000000] BRK [0x01cd1000, 0x01cd1fff] PGTABLE
[    0.000000] ACPI: RSDP 0x78D85014 000024 (v02 INSYDE)
[    0.000000] ACPI: XSDT 0x78D61188 0000D4 (v01 INSYDE INSYDE   00000003      01000013)
[    0.000000] ACPI: FACP 0x78D7F000 00010C (v05 INSYDE INSYDE   00000003 ACPI 00040000)
[    0.000000] ACPI: DSDT 0x78D6E000 00BAEC (v02 INSYDE INSYDE   00000003 ACPI 00040000)
[    0.000000] ACPI: UEFI 0x78D84000 000236 (v01 INSYDE INSYDE   00000001 ACPI 00040000)
[    0.000000] ACPI: TCPA 0x78D83000 000032 (v02 INSYDE INSYDE   00000000 ACPI 00040000)
[    0.000000] ACPI: UEFI 0x78D81000 000042 (v01 INSYDE INSYDE   00000000 ACPI 00040000)
[    0.000000] ACPI: DBG2 0x78D80000 000072 (v00 INSYDE INSYDE   00000003 ACPI 00040000)
[    0.000000] ACPI: HPET 0x78D7E000 000038 (v01 INSYDE INSYDE   00000003 ACPI 00040000)
[    0.000000] ACPI: LPIT 0x78D7D000 000104 (v01 INSYDE INSYDE   00000003 ACPI 00040000)
[    0.000000] ACPI: APIC 0x78D7C000 00006C (v03 INSYDE INSYDE   00000003 ACPI 00040000)
[    0.000000] ACPI: MCFG 0x78D7B000 00003C (v01 INSYDE INSYDE   00000003 ACPI 00040000)
[    0.000000] ACPI: SLIC 0x78D7A000 000176 (v01 INSYDE INSYDE   00000003 ACPI 00040000)
[    0.000000] ACPI: SSDT 0x78D6D000 0005FB (v01 INSYDE CpuDptf  00000003 ACPI 00040000)
[    0.000000] ACPI: SSDT 0x78D6B000 0018C2 (v01 INSYDE DptfTab  00000003 ACPI 00040000)
[    0.000000] ACPI: SSDT 0x78D6A000 000058 (v01 INSYDE LowPwrM  00000003 ACPI 00040000)
[    0.000000] ACPI: SSDT 0x78D69000 0000FF (v01 INSYDE SoCDptf  00000003 ACPI 00040000)
[    0.000000] ACPI: SSDT 0x78D68000 00043A (v01 INSYDE Tpm2Tabl 00001000 ACPI 00040000)
[    0.000000] ACPI: TPM2 0x78D67000 000034 (v03 INSYDE INSYDE   00000000 ACPI 00040000)
[    0.000000] ACPI: SSDT 0x78D66000 000763 (v01 INSYDE CpuPm    00003000 ACPI 00040000)
[    0.000000] ACPI: SSDT 0x78D65000 000290 (v01 INSYDE Cpu0Tst  00003000 ACPI 00040000)
[    0.000000] ACPI: SSDT 0x78D64000 00017A (v01 INSYDE ApTst    00003000 ACPI 00040000)
[    0.000000] ACPI: FPDT 0x78D63000 000044 (v01 INSYDE INSYDE   00000001 ACPI 00040000)
[    0.000000] ACPI: CSRT 0x78D62000 00014C (v00 INSYDE INSYDE   00000005 ACPI 00040000)
[    0.000000] ACPI: BGRT 0x78D60000 000038 (v01 INSYDE INSYDE   00000001 ACPI 00040000)
[    0.000000] ACPI: Local APIC address 0xfee00000
[    0.000000] 1064MB HIGHMEM available.
[    0.000000] 887MB LOWMEM available.
[    0.000000]   mapped low ram: 0 - 377fe000
[    0.000000]   low ram: 0 - 377fe000
[    0.000000] BRK [0x01cd2000, 0x01cd2fff] PGTABLE
[    0.000000] Zone ranges:
[    0.000000]   DMA      [mem 0x00001000-0x00ffffff]
[    0.000000]   Normal   [mem 0x01000000-0x377fdfff]
[    0.000000]   HighMem  [mem 0x377fe000-0x79ffffff]
[    0.000000] Movable zone start for each node
[    0.000000] Early memory node ranges
[    0.000000]   node   0: [mem 0x00001000-0x0008efff]
[    0.000000]   node   0: [mem 0x00090000-0x0009dfff]
[    0.000000]   node   0: [mem 0x00100000-0x1fffffff]
[    0.000000]   node   0: [mem 0x20100000-0x78345fff]
[    0.000000]   node   0: [mem 0x78d86000-0x794c7fff]
[    0.000000]   node   0: [mem 0x79dc8000-0x79ffffff]
[    0.000000] On node 0 totalpages: 494428
[    0.000000] free_area_init_node: node 0, pgdat c17500c0, node_mem_map f68be020
[    0.000000]   DMA zone: 32 pages used for memmap
[    0.000000]   DMA zone: 0 pages reserved
[    0.000000]   DMA zone: 3996 pages, LIFO batch:0
[    0.000000]   Normal zone: 1744 pages used for memmap
[    0.000000]   Normal zone: 222974 pages, LIFO batch:31
[    0.000000]   HighMem zone: 2129 pages used for memmap
[    0.000000]   HighMem zone: 267458 pages, LIFO batch:31
[    0.000000] Using APIC driver default
[    0.000000] x86/hpet: Will disable the HPET for this platform because it's not reliable
[    0.000000] Reserving Intel graphics stolen memory at 0x7af00000-0x7eefffff
[    0.000000] ACPI: Local APIC address 0xfee00000
[    0.000000] ACPI: LAPIC (acpi_id[0x01] lapic_id[0x00] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0x02] lapic_id[0x02] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0x03] lapic_id[0x04] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0x04] lapic_id[0x06] enabled)
[    0.000000] ACPI: IOAPIC (id[0x02] address[0xfec00000] gsi_base[0])
[    0.000000] IOAPIC[0]: apic_id 2, version 32, address 0xfec00000, GSI 0-86
[    0.000000] ACPI: INT_SRC_OVR (bus 0 bus_irq 0 global_irq 2 dfl dfl)
[    0.000000] ACPI: INT_SRC_OVR (bus 0 bus_irq 9 global_irq 9 high level)
[    0.000000] ACPI: IRQ0 used by override.
[    0.000000] ACPI: IRQ2 used by override.
[    0.000000] ACPI: IRQ9 used by override.
[    0.000000] Using ACPI (MADT) for SMP configuration information
[    0.000000] ACPI: HPET id: 0x8086a201 base: 0xfed00000
[    0.000000] smpboot: Allowing 4 CPUs, 0 hotplug CPUs
[    0.000000] nr_irqs_gsi: 103
[    0.000000] PM: Registered nosave memory: [mem 0x0008f000-0x0008ffff]
[    0.000000] PM: Registered nosave memory: [mem 0x0009e000-0x0009ffff]
[    0.000000] PM: Registered nosave memory: [mem 0x000a0000-0x000fffff]
[    0.000000] PM: Registered nosave memory: [mem 0x20000000-0x200fffff]
[    0.000000] e820: [mem 0x7ef00000-0xe00f7fff] available for PCI devices
[    0.000000] setup_percpu: NR_CPUS:4 nr_cpumask_bits:4 nr_cpu_ids:4 nr_node_ids:1
[    0.000000] PERCPU: Embedded 12 pages/cpu @f6882000 s27200 r0 d21952 u49152
[    0.000000] pcpu-alloc: s27200 r0 d21952 u49152 alloc=12*4096
[    0.000000] pcpu-alloc: [0] 0 [0] 1 [0] 2 [0] 3 
[    0.000000] Built 1 zonelists in Zone order, mobility grouping on.  Total pages: 492652
[    0.000000] Kernel command line: root=/dev/sda2 video=HDMI-A-1:1200x1920e drm_kms_helper.edid_firmware=HDMI-A-1:edid/1200x1920.bin 
[    0.000000] PID hash table entries: 4096 (order: 2, 16384 bytes)
[    0.000000] Dentry cache hash table entries: 131072 (order: 7, 524288 bytes)
[    0.000000] Inode-cache hash table entries: 65536 (order: 6, 262144 bytes)
[    0.000000] Initializing CPU#0
[    0.000000] Initializing HighMem for node 0 (000377fe:0007a000)
[    0.000000] Initializing Movable for node 0 (00000000:00000000)
[    0.000000] Memory: 1916980K/1977712K available (5569K kernel code, 331K rwdata, 1640K rodata, 4280K init, 1232K bss, 60732K reserved, 1038956K highmem)
[    0.000000] virtual kernel memory layout:
[    0.000000]     fixmap  : 0xfff66000 - 0xfffff000   ( 612 kB)
[    0.000000]     pkmap   : 0xff800000 - 0xffc00000   (4096 kB)
[    0.000000]     vmalloc : 0xf7ffe000 - 0xff7fe000   ( 120 MB)
[    0.000000]     lowmem  : 0xc0000000 - 0xf77fe000   ( 887 MB)
[    0.000000]       .init : 0xc1760000 - 0xc1b8e000   (4280 kB)
[    0.000000]       .data : 0xc1570a99 - 0xc175eec0   (1977 kB)
[    0.000000]       .text : 0xc1000000 - 0xc1570a99   (5570 kB)
[    0.000000] Checking if this processor honours the WP bit even in supervisor mode...Ok.
[    0.000000] SLUB: HWalign=64, Order=0-3, MinObjects=0, CPUs=4, Nodes=1
[    0.000000] Hierarchical RCU implementation.
[    0.000000] NR_IRQS:2304 nr_irqs:1024 16
[    0.000000] CPU 0 irqstacks, hard=f600c000 soft=f600e000
[    0.000000] Console: colour dummy device 80x25
[    0.000000] console [tty0] enabled
[    0.000000] Maximum core-clock to bus-clock ratio: 0xa
[    0.000000] Resolved frequency ID: 2, frequency: 133200 KHz
[    0.000000] TSC runs at 1332000 KHz
[    0.000000] lapic_timer_frequency = 133200
[    0.000000] tsc: Detected 1332.000 MHz processor
[    0.000038] Calibrating delay loop (skipped), value calculated using timer frequency.. 2664.00 BogoMIPS (lpj=1332000)
[    0.000056] pid_max: default: 32768 minimum: 301
[    0.000073] ACPI: Core revision 20140214
[    0.045134] ACPI: All ACPI Tables successfully acquired
[    0.048115] Mount-cache hash table entries: 2048 (order: 1, 8192 bytes)
[    0.048134] Mountpoint-cache hash table entries: 2048 (order: 1, 8192 bytes)
[    0.048462] Initializing cgroup subsys freezer
[    0.048505] CPU: Physical Processor ID: 0
[    0.048515] CPU: Processor Core ID: 0
[    0.048525] ENERGY_PERF_BIAS: Set to 'normal', was 'performance'
[    0.048525] ENERGY_PERF_BIAS: View and update with x86_energy_perf_policy(8)
[    0.060656] mce: CPU supports 6 MCE banks
[    0.060675] CPU0: Thermal monitoring enabled (TM1)
[    0.060696] Last level iTLB entries: 4KB 48, 2MB 0, 4MB 0
[    0.060696] Last level dTLB entries: 4KB 128, 2MB 16, 4MB 16, 1GB 0
[    0.060696] tlb_flushall_shift: 6
[    0.060903] Freeing SMP alternatives memory: 20K (c1b8e000 - c1b93000)
[    0.060940] ------------[ cut here ]------------
[    0.060959] WARNING: CPU: 0 PID: 0 at /tmp/e2/build/linux-git/mm/early_ioremap.c:136 __early_ioremap+0xbe/0x1c2()
[    0.060972] Modules linked in:
[    0.060985] CPU: 0 PID: 0 Comm: swapper/0 Not tainted 3.15.0-rc5-Inari #1
[    0.060995] Hardware name: Aava Mobile Oy Inari 8 2GB/Type2 - Board Product Name, BIOS BYT.5.03.47.0033-022 01/16/2014
[    0.061009]  00000000 00000000 c170df00 c1564914 c16631ec c170df30 c103e4aa c165b654
[    0.061047]  00000000 00000000 c16631ec 00000088 c177cdf5 c177cdf5 00041ee6 00005800
[    0.061069]  c1b97800 c170df40 c103e4ed 00000009 00000000 c170df98 c177cdf5 00000000
[    0.061090] Call Trace:
[    0.061105]  [<c1564914>] dump_stack+0x41/0x52
[    0.061119]  [<c103e4aa>] warn_slowpath_common+0x7a/0xa0
[    0.061132]  [<c177cdf5>] ? __early_ioremap+0xbe/0x1c2
[    0.061144]  [<c177cdf5>] ? __early_ioremap+0xbe/0x1c2
[    0.061156]  [<c103e4ed>] warn_slowpath_null+0x1d/0x20
[    0.061168]  [<c177cdf5>] __early_ioremap+0xbe/0x1c2
[    0.061182]  [<c10c4b42>] ? __get_free_pages+0x22/0x30
[    0.061196]  [<c10f217a>] ? __kmalloc+0xea/0xf0
[    0.061209]  [<c177d0b8>] early_memremap+0xd/0xf
[    0.061221]  [<c1773828>] efi_bgrt_init+0xf0/0x135
[    0.061234]  [<c1773150>] efi_late_init+0x8/0xa
[    0.061247]  [<c1760a34>] start_kernel+0x34f/0x35f
[    0.061259]  [<c1760520>] ? repair_env_string+0x51/0x51
[    0.061272]  [<c176036b>] i386_start_kernel+0x139/0x13c
[    0.061294] ---[ end trace d7b23e2954b99569 ]---
[    0.064345] Enabling APIC mode:  Flat.  Using 1 I/O APICs
[    0.065379] ..TIMER: vector=0x30 apic1=0 pin1=2 apic2=-1 pin2=-1
[    0.075406] ..MP-BIOS bug: 8254 timer not connected to IO-APIC
[    0.075416] ...trying to set up timer (IRQ0) through the 8259A ...
[    0.075425] ..... (found apic 0 pin 2) ...
[    0.085441] ....... works.
[    0.085450] smpboot: CPU0: Intel(R) Atom(TM) CPU  Z3745  @ 1.33GHz (fam: 06, model: 37, stepping: 08)
[    0.085489] TSC deadline timer enabled
[    0.085505] Performance Events: PEBS fmt2+, 8-deep LBR, Silvermont events, full-width counters, Intel PMU driver.
[    0.085531] ... version:                3
[    0.085539] ... bit width:              40
[    0.085547] ... generic registers:      2
[    0.085555] ... value mask:             000000ffffffffff
[    0.085563] ... max period:             000000ffffffffff
[    0.085571] ... fixed-purpose events:   3
[    0.085579] ... event mask:             0000000700000003
[    0.087178] CPU 1 irqstacks, hard=f60a6000 soft=f60b0000
[    0.087184] x86: Booting SMP configuration:
[    0.087195] .... node  #0, CPUs:      #1
[    0.097309] Initializing CPU#1
[    0.112526] CPU 2 irqstacks, hard=f60ba000 soft=f60bc000
[    0.112545]  #2
[    0.122597] Initializing CPU#2
[    0.137915] CPU 3 irqstacks, hard=f60c6000 soft=f60c8000
[    0.137929]  #3
[    0.147984] Initializing CPU#3
[    0.163166] x86: Booted up 1 node, 4 CPUs
[    0.163186] smpboot: Total of 4 processors activated (10656.00 BogoMIPS)
[    0.164201] devtmpfs: initialized
[    0.164699] PM: Registering ACPI NVS region [mem 0x0008f000-0x0008ffff] (4096 bytes)
[    0.164716] PM: Registering ACPI NVS region [mem 0x78c46000-0x78d45fff] (1048576 bytes)
[    0.164769] PM: Registering ACPI NVS region [mem 0x794c8000-0x79dc7fff] (9437184 bytes)
[    0.165321] pinctrl core: initialized pinctrl subsystem
[    0.165383] RTC time:  2:41:48, date: 05/13/14
[    0.165472] NET: Registered protocol family 16
[    0.165800] cpuidle: using governor ladder
[    0.165812] cpuidle: using governor menu
[    0.165887] ACPI: bus type PCI registered
[    0.166044] PCI: MMCONFIG for domain 0000 [bus 00-3f] at [mem 0xe0000000-0xe3ffffff] (base 0xe0000000)
[    0.166062] PCI: not using MMCONFIG
[    0.166410] PCI: Using configuration type 1 for base access
[    0.171661] ACPI: Added _OSI(Module Device)
[    0.171676] ACPI: Added _OSI(Processor Device)
[    0.171686] ACPI: Added _OSI(3.0 _SCP Extensions)
[    0.171695] ACPI: Added _OSI(Processor Aggregator Device)
[    0.207365] ACPI: SSDT 0x78BCAA90 000353 (v01 PmRef  Cpu0Ist  00003000 INTL 20130117)
[    0.208929] ACPI: Dynamic OEM Table Load:
[    0.208943] ACPI: SSDT 0x00000000 000353 (v01 PmRef  Cpu0Ist  00003000 INTL 20130117)
[    0.209485] ACPI: SSDT 0x78BC9910 000433 (v01 PmRef  Cpu0Cst  00003001 INTL 20130117)
[    0.211341] ACPI: Dynamic OEM Table Load:
[    0.211354] ACPI: SSDT 0x00000000 000433 (v01 PmRef  Cpu0Cst  00003001 INTL 20130117)
[    0.219899] ACPI: SSDT 0x78BCBD90 00015F (v01 PmRef  ApIst    00003000 INTL 20130117)
[    0.221480] ACPI: Dynamic OEM Table Load:
[    0.221494] ACPI: SSDT 0x00000000 00015F (v01 PmRef  ApIst    00003000 INTL 20130117)
[    0.224032] ACPI: SSDT 0x78BCBF10 00008D (v01 PmRef  ApCst    00003000 INTL 20130117)
[    0.225433] ACPI: Dynamic OEM Table Load:
[    0.225447] ACPI: SSDT 0x00000000 00008D (v01 PmRef  ApCst    00003000 INTL 20130117)
[    0.231309] ACPI: Interpreter enabled
[    0.231344] ACPI Exception: AE_NOT_FOUND, While evaluating Sleep State [\_S1_] (20140214/hwxface-580)
[    0.231369] ACPI Exception: AE_NOT_FOUND, While evaluating Sleep State [\_S2_] (20140214/hwxface-580)
[    0.231391] ACPI Exception: AE_NOT_FOUND, While evaluating Sleep State [\_S3_] (20140214/hwxface-580)
[    0.231413] ACPI Exception: AE_NOT_FOUND, While evaluating Sleep State [\_S4_] (20140214/hwxface-580)
[    0.231434] ACPI Exception: AE_NOT_FOUND, While evaluating Sleep State [\_S5_] (20140214/hwxface-580)
[    0.231452] ACPI: (supports S0)
[    0.231461] ACPI: Using IOAPIC for interrupt routing
[    0.231553] PCI: MMCONFIG for domain 0000 [bus 00-3f] at [mem 0xe0000000-0xe3ffffff] (base 0xe0000000)
[    0.239081] [Firmware Info]: PCI: MMCONFIG at [mem 0xe0000000-0xe3ffffff] not reserved in ACPI motherboard resources
[    0.239099] PCI: not using MMCONFIG
[    0.239157] PCI: Using host bridge windows from ACPI; if necessary, use "pci=nocrs" and report a bug
[    0.242534] ACPI: Power Resource [USBC] (on)
[    0.246624] ACPI: Power Resource [WWPR] (off)
[    0.257294] ACPI: Power Resource [PLPE] (on)
[    0.269398] ACPI: Power Resource [CLK0] (on)
[    0.269544] ACPI: Power Resource [CLK1] (on)
[    0.269912] ACPI: Power Resource [P28X] (off)
[    0.270071] ACPI: Power Resource [P18X] (off)
[    0.272628] ACPI: Power Resource [TCPR] (off)
[    0.279832] ACPI: PCI Root Bridge [PCI0] (domain 0000 [bus 00-ff])
[    0.279860] acpi PNP0A08:00: _OSC: OS supports [ASPM ClockPM Segments MSI]
[    0.280083] \_SB_.PCI0:_OSC invalid UUID
[    0.280088] _OSC request data:1 1e 0 
[    0.280100] acpi PNP0A08:00: _OSC failed (AE_ERROR); disabling ASPM
[    0.281420] acpi PNP0A08:00: fail to add MMCONFIG information, can't access extended PCI configuration space under this bridge.
[    0.281505] PCI host bridge to bus 0000:00
[    0.281520] pci_bus 0000:00: root bus resource [bus 00-ff]
[    0.281533] pci_bus 0000:00: root bus resource [io  0x0000-0x006f]
[    0.281545] pci_bus 0000:00: root bus resource [io  0x0078-0x0cf7]
[    0.281557] pci_bus 0000:00: root bus resource [io  0x0d00-0xffff]
[    0.281569] pci_bus 0000:00: root bus resource [mem 0x000a0000-0x000bffff]
[    0.281581] pci_bus 0000:00: root bus resource [mem 0x000c0000-0x000dffff]
[    0.281593] pci_bus 0000:00: root bus resource [mem 0x000e0000-0x000fffff]
[    0.281606] pci_bus 0000:00: root bus resource [mem 0x90c00000-0x90ffffff]
[    0.281618] pci_bus 0000:00: root bus resource [mem 0x7af00001-0x7ef00000]
[    0.281630] pci_bus 0000:00: root bus resource [mem 0x80000000-0x908ffffe]
[    0.281642] pci_bus 0000:00: root bus resource [mem 0xfed40000-0xfed40fff]
[    0.281667] pci 0000:00:00.0: [8086:0f00] type 00 class 0x060000
[    0.281861] pci 0000:00:02.0: [8086:0f31] type 00 class 0x030000
[    0.281886] pci 0000:00:02.0: reg 0x10: [mem 0x90000000-0x903fffff]
[    0.281906] pci 0000:00:02.0: reg 0x18: [mem 0x80000000-0x8fffffff pref]
[    0.281924] pci 0000:00:02.0: reg 0x20: [io  0x1000-0x1007]
[    0.282151] pci 0000:00:14.0: [8086:0f35] type 00 class 0x0c0330
[    0.282182] pci 0000:00:14.0: reg 0x10: [mem 0x90800000-0x9080ffff 64bit]
[    0.282262] pci 0000:00:14.0: PME# supported from D3hot D3cold
[    0.282440] pci 0000:00:1a.0: [8086:0f18] type 00 class 0x108000
[    0.282472] pci 0000:00:1a.0: reg 0x10: [mem 0x90700000-0x907fffff]
[    0.282489] pci 0000:00:1a.0: reg 0x14: [mem 0x90600000-0x906fffff]
[    0.282590] pci 0000:00:1a.0: PME# supported from D0 D3hot
[    0.282765] pci 0000:00:1f.0: [8086:0f1c] type 00 class 0x060100
[    0.282991] pci_bus 0000:00: on NUMA node 0
[    0.284118] ACPI: PCI Interrupt Link [LNKA] (IRQs 3 4 5 6 10 11 12 14 15) *0, disabled.
[    0.284441] ACPI: PCI Interrupt Link [LNKB] (IRQs 3 4 5 6 10 11 12 14 15) *0, disabled.
[    0.284761] ACPI: PCI Interrupt Link [LNKC] (IRQs 3 4 5 6 10 11 12 14 15) *0, disabled.
[    0.285090] ACPI: PCI Interrupt Link [LNKD] (IRQs 3 4 5 6 10 11 12 14 15) *0, disabled.
[    0.285410] ACPI: PCI Interrupt Link [LNKE] (IRQs 3 4 5 6 10 11 12 14 15) *0, disabled.
[    0.285730] ACPI: PCI Interrupt Link [LNKF] (IRQs 3 4 5 6 10 11 12 14 15) *0, disabled.
[    0.286050] ACPI: PCI Interrupt Link [LNKG] (IRQs 3 4 5 6 10 11 12 14 15) *0, disabled.
[    0.286379] ACPI: PCI Interrupt Link [LNKH] (IRQs 3 4 5 6 10 11 12 14 15) *0, disabled.
[    0.298870] dw_dmac INTL9C60:00: DesignWare DMA Controller, 8 channels
[    0.299585] dw_dmac INTL9C60:01: DesignWare DMA Controller, 8 channels
[    0.300369] vgaarb: device added: PCI:0000:00:02.0,decodes=io+mem,owns=io+mem,locks=none
[    0.300387] vgaarb: loaded
[    0.300394] vgaarb: bridge control possible 0000:00:02.0
[    0.300615] SCSI subsystem initialized
[    0.300634] ACPI: bus type USB registered
[    0.300722] usbcore: registered new interface driver usbfs
[    0.300766] usbcore: registered new interface driver hub
[    0.300847] usbcore: registered new device driver usb
[    0.310724] pps_core: LinuxPPS API ver. 1 registered
[    0.310737] pps_core: Software ver. 5.3.6 - Copyright 2005-2007 Rodolfo Giometti <giometti@linux.it>
[    0.310766] PTP clock support registered
[    0.311025] Advanced Linux Sound Architecture Driver Initialized.
[    0.311037] PCI: Using ACPI for IRQ routing
[    0.311047] PCI: pci_cache_line_size set to 64 bytes
[    0.311072] Expanded resource reserved due to conflict with PCI Bus 0000:00
[    0.311085] e820: reserve RAM buffer [mem 0x0008f000-0x0008ffff]
[    0.311090] e820: reserve RAM buffer [mem 0x0009e000-0x0009ffff]
[    0.311095] e820: reserve RAM buffer [mem 0x78346000-0x7bffffff]
[    0.311100] e820: reserve RAM buffer [mem 0x794c8000-0x7bffffff]
[    0.311105] e820: reserve RAM buffer [mem 0x7a000000-0x7bffffff]
[    0.311559] cfg80211: Calling CRDA to update world regulatory domain
[    0.311786] Switched to clocksource refined-jiffies
[    0.311915] pnp: PnP ACPI init
[    0.311939] ACPI: bus type PNP registered
[    0.312056] pnp 00:00: Plug and Play ACPI device, IDs PNP0b00 (active)
[    0.312247] pnp 00:01: Plug and Play ACPI device, IDs PNP0103 (active)
[    0.312343] pnp 00:02: Plug and Play ACPI device, IDs INT0800 (active)
[    0.312471] system 00:03: [io  0x0680-0x069f] has been reserved
[    0.312487] system 00:03: [io  0x0400-0x047f] has been reserved
[    0.312500] system 00:03: [io  0x0500-0x05fe] has been reserved
[    0.312513] system 00:03: [io  0x0600-0x061f] has been reserved
[    0.312525] system 00:03: [io  0x164e-0x164f] has been reserved
[    0.312539] system 00:03: Plug and Play ACPI device, IDs PNP0c02 (active)
[    0.312898] pnp 00:04: Plug and Play ACPI device, IDs PNP0501 (active)
[    0.314419] pnp 00:05: Plug and Play ACPI device, IDs INT0002 (active)
[    0.314596] pnp 00:06: Plug and Play ACPI device, IDs INT33fc (active)
[    0.314770] pnp 00:07: Plug and Play ACPI device, IDs INT33fc (active)
[    0.314944] pnp 00:08: Plug and Play ACPI device, IDs INT33fc (active)
[    0.316122] pnp 00:09: unknown resource type 19 in _CRS
[    0.316136] pnp 00:09: can't evaluate _CRS: 1
[    0.316211] pnp 00:09: Plug and Play ACPI device, IDs BCM2e3a (active)
[    0.323337] pnp 00:0a: unknown resource type 17 in _CRS
[    0.323352] pnp 00:0a: can't evaluate _CRS: 1
[    0.323447] pnp 00:0a: Plug and Play ACPI device, IDs INTcfd9 PNP0c40 (active)
[    0.323599] pnp 00:0b: Plug and Play ACPI device, IDs INT33bd (active)
[    0.323947] pnp 00:0c: Plug and Play ACPI device, IDs INT3401 (active)
[    0.324267] pnp 00:0d: unknown resource type 17 in _CRS
[    0.324281] pnp 00:0d: can't evaluate _CRS: 1
[    0.324361] pnp 00:0d: Plug and Play ACPI device, IDs INT3403 (active)
[    0.324502] pnp 00:0e: unknown resource type 17 in _CRS
[    0.324515] pnp 00:0e: can't evaluate _CRS: 1
[    0.324594] pnp 00:0e: Plug and Play ACPI device, IDs INT3403 (active)
[    0.324790] pnp 00:0f: unknown resource type 17 in _CRS
[    0.324804] pnp 00:0f: can't evaluate _CRS: 1
[    0.324888] pnp 00:0f: Plug and Play ACPI device, IDs INT3409 (active)
[    0.325189] pnp: PnP ACPI: found 16 devices
[    0.325200] ACPI: bus type PNP unregistered
[    0.330327] pci_bus 0000:00: resource 4 [io  0x0000-0x006f]
[    0.330335] pci_bus 0000:00: resource 5 [io  0x0078-0x0cf7]
[    0.330342] pci_bus 0000:00: resource 6 [io  0x0d00-0xffff]
[    0.330348] pci_bus 0000:00: resource 7 [mem 0x000a0000-0x000bffff]
[    0.330354] pci_bus 0000:00: resource 8 [mem 0x000c0000-0x000dffff]
[    0.330361] pci_bus 0000:00: resource 9 [mem 0x000e0000-0x000fffff]
[    0.330367] pci_bus 0000:00: resource 10 [mem 0x90c00000-0x90ffffff]
[    0.330373] pci_bus 0000:00: resource 11 [mem 0x7af00001-0x7ef00000]
[    0.330379] pci_bus 0000:00: resource 12 [mem 0x80000000-0x908ffffe]
[    0.330386] pci_bus 0000:00: resource 13 [mem 0xfed40000-0xfed40fff]
[    0.330439] NET: Registered protocol family 2
[    0.330776] TCP established hash table entries: 8192 (order: 3, 32768 bytes)
[    0.330825] TCP bind hash table entries: 8192 (order: 4, 65536 bytes)
[    0.330892] TCP: Hash tables configured (established 8192 bind 8192)
[    0.330933] TCP: reno registered
[    0.330945] UDP hash table entries: 512 (order: 2, 16384 bytes)
[    0.330967] UDP-Lite hash table entries: 512 (order: 2, 16384 bytes)
[    0.331076] NET: Registered protocol family 1
[    0.331114] pci 0000:00:02.0: Boot video device
[    0.331512] PCI: CLS 0 bytes, default 64
[    0.514091] microcode: CPU0 sig=0x30678, pf=0x2, revision=0x808
[    0.514123] microcode: CPU1 sig=0x30678, pf=0x2, revision=0x808
[    0.514152] microcode: CPU2 sig=0x30678, pf=0x2, revision=0x808
[    0.514181] microcode: CPU3 sig=0x30678, pf=0x2, revision=0x808
[    0.514325] microcode: Microcode Update Driver: v2.00 <tigran@aivazian.fsnet.co.uk>, Peter Oruba
[    0.515032] Scanning for low memory corruption every 60 seconds
[    0.515717] futex hash table entries: 1024 (order: 4, 65536 bytes)
[    0.515772] audit: initializing netlink subsys (disabled)
[    0.515816] audit: type=2000 audit(1399948908.496:1): initialized
[    0.553602] bounce pool size: 64 pages
[    0.553620] HugeTLB registered 4 MB page size, pre-allocated 0 pages
[    0.559083] msgmni has been set to 1775
[    0.559837] Block layer SCSI generic (bsg) driver version 0.4 loaded (major 251)
[    0.559853] io scheduler noop registered
[    0.559862] io scheduler deadline registered
[    0.560024] io scheduler cfq registered (default)
[    0.560385] intel_idle: MWAIT substates: 0x33000020
[    0.560391] intel_idle: v0.4 model 0x37
[    0.560395] intel_idle: lapic_timer_reliable_states 0xffffffff
[    0.567555] ACPI: AC Adapter [ADP1] (on-line)
[    0.567897] input: Power Button as /devices/LNXSYSTM:00/LNXPWRBN:00/input/input0
[    0.567919] ACPI: Power Button [PWRF]
[    0.567932] ACPI Warning: Could not enable fixed event - PowerButton (2) (20140214/evxface-628)
[    0.571549] button: probe of LNXPWRBN:00 failed with error -22
[    0.577570] [Firmware Bug]: No valid trip found
[    0.577864] Serial: 8250/16550 driver, 4 ports, IRQ sharing enabled
[    0.598273] 00:04: ttyS0 at I/O 0x3f8 (irq = 4, base_baud = 115200) is a 16550A
[    0.599334] 80860F0A:00: ttyS1 at MMIO 0x9091d000 (irq = 39, base_baud = 2764800) is a 16550A
[    0.599604] 80860F0A:01: ttyS2 at MMIO 0x9091f000 (irq = 40, base_baud = 2764800) is a 16550A
[    0.599962] hpet: number irqs doesn't agree with number of timers
[    0.600113] Non-volatile memory driver v1.3
[    0.600193] [drm] Initialized drm 1.1.0 20060810
[    0.602197] [drm] Memory usable by graphics device = 2048M
[    0.607442] ACPI Error: Error attaching device[f60238a0] data
[    0.607460]  (20140214/bus-143)
[    0.607708] ACPI Error: Error attaching device[f60238a0] data
[    0.607724]  (20140214/bus-143)
[    0.607987] ACPI Error: Error attaching device[f60238a0] data
[    0.608003]  (20140214/bus-143)
[    0.608251] ACPI Error: Error attaching device[f60238a0] data
[    0.608267]  (20140214/bus-143)
[    0.608515] ACPI Error: Error attaching device[f60238a0] data
[    0.608531]  (20140214/bus-143)
[    0.610972] i915 0000:00:02.0: irq 103 for MSI/MSI-X
[    0.610990] [drm] Supports vblank timestamp caching Rev 2 (21.10.2013).
[    0.611001] [drm] Driver supports precise vblank timestamp query.
[    0.661459] vgaarb: device changed decodes: PCI:0000:00:02.0,olddecodes=io+mem,decodes=io+mem:owns=io+mem
[    0.662265] ACPI Error: Error attaching device[f60238a0] data
[    0.662282]  (20140214/bus-143)
[    0.662679] ACPI Error: Error attaching device[f60238a0] data
[    0.662696]  (20140214/bus-143)
[    1.172920] [drm] forcing HDMI-A-1 connector ON
[    1.246457] [drm] GMBUS [i915 gmbus vga] timed out, falling back to bit banging on pin 2
[    1.267084] [drm] Got external EDID base block and 0 extensions from "edid/1200x1920.bin" for connector "HDMI-A-1"
[    1.408227] [drm] GMBUS [i915 gmbus dpc] timed out, falling back to bit banging on pin 4
[    1.501620] fbcon: inteldrmfb (fb0) is primary device
[    1.624664] Switched to clocksource tsc
[    2.012203] Console: switching to colour frame buffer device 150x120
[    2.041805] i915 0000:00:02.0: fb0: inteldrmfb frame buffer device
[    2.041936] i915 0000:00:02.0: registered panic notifier
[    2.046235] ACPI: Video Device [GFX0] (multi-head: yes  rom: no  post: no)
[    2.048005] acpi device:1a: registered as cooling_device4
[    2.049449] acpi device:21: registered as cooling_device5
[    2.049750] input: Video Bus as /devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A08:00/LNXVIDEO:00/input/input1
[    2.050029] [drm] Initialized i915 1.6.0 20080730 for 0000:00:02.0 on minor 0
[    2.050526] brd: module loaded
[    2.051083] loop: module loaded
[    2.051814] xhci_hcd 0000:00:14.0: xHCI Host Controller
[    2.052059] xhci_hcd 0000:00:14.0: new USB bus registered, assigned bus number 1
[    2.052384] xhci_hcd 0000:00:14.0: cache line size of 64 is not supported
[    2.052427] xhci_hcd 0000:00:14.0: irq 104 for MSI/MSI-X
[    2.052569] usb usb1: New USB device found, idVendor=1d6b, idProduct=0002
[    2.052718] usb usb1: New USB device strings: Mfr=3, Product=2, SerialNumber=1
[    2.052870] usb usb1: Product: xHCI Host Controller
[    2.052985] usb usb1: Manufacturer: Linux 3.15.0-rc5-Inari xhci_hcd
[    2.053119] usb usb1: SerialNumber: 0000:00:14.0
[    2.053529] hub 1-0:1.0: USB hub found
[    2.053640] hub 1-0:1.0: 6 ports detected
[    2.055344] xhci_hcd 0000:00:14.0: xHCI Host Controller
[    2.055551] xhci_hcd 0000:00:14.0: new USB bus registered, assigned bus number 2
[    2.055801] usb usb2: New USB device found, idVendor=1d6b, idProduct=0003
[    2.055948] usb usb2: New USB device strings: Mfr=3, Product=2, SerialNumber=1
[    2.056173] usb usb2: Product: xHCI Host Controller
[    2.056281] usb usb2: Manufacturer: Linux 3.15.0-rc5-Inari xhci_hcd
[    2.056414] usb usb2: SerialNumber: 0000:00:14.0
[    2.056825] hub 2-0:1.0: USB hub found
[    2.056928] hub 2-0:1.0: 1 port detected
[    2.057430] usbcore: registered new interface driver usb-storage
[    2.057694] i8042: PNP: No PS/2 controller found. Probing ports directly.
[    2.825230] [drm] Enabling RC6 states: RC6 off, RC6p off, RC6pp off
[    3.101867] i8042: No controller found
[    3.102091] mousedev: PS/2 mouse device common for all mice
[    3.102390] ACPI Warning: Could not enable fixed event - RealTimeClock (4) (20140214/evxface-628)
[    3.102794] rtc_cmos 00:00: rtc core: registered rtc_cmos as rtc0
[    3.102963] rtc_cmos 00:00: alarms up to one day, 242 bytes nvram
[    3.103164] i2c /dev entries driver
[    3.104656] Intel P-state driver initializing.
[    3.104782] Intel pstate controlling: cpu 0
[    3.104913] Intel pstate controlling: cpu 1
[    3.105039] Intel pstate controlling: cpu 2
[    3.105167] Intel pstate controlling: cpu 3
[    3.105381] sdhci: Secure Digital Host Controller Interface driver
[    3.105514] sdhci: Copyright(c) Pierre Ossman
[    3.106808] mmc0: no vqmmc regulator found
[    3.106900] mmc0: no vmmc regulator found
[    3.108138] mmc0: SDHCI controller on ACPI [80860F14:00] using ADMA
[    3.109672] mmc1: no vqmmc regulator found
[    3.109765] mmc1: no vmmc regulator found
[    3.111002] mmc1: SDHCI controller on ACPI [INT33BB:00] using ADMA
[    3.111624] sdhci-acpi 80860F14:01: failed to setup card detect gpio
[    3.112767] mmc2: no vqmmc regulator found
[    3.112857] mmc2: no vmmc regulator found
[    3.114086] mmc2: SDHCI controller on ACPI [80860F14:01] using ADMA
[    3.114270] sdhci-pltfm: SDHCI platform and OF driver helper
[    3.114403] EFI Variables Facility v0.08 2004-May-17
[    3.124197] hidraw: raw HID events driver (C) Jiri Kosina
[    3.124699] usbcore: registered new interface driver usbhid
[    3.124801] usbhid: USB HID core driver
[    3.125249] TCP: cubic registered
[    3.125328] Initializing XFRM netlink socket
[    3.125678] NET: Registered protocol family 10
[    3.126149] sit: IPv6 over IPv4 tunneling driver
[    3.126519] NET: Registered protocol family 17
[    3.128471] Using IPI No-Shortcut mode
[    3.128835] registered taskstats version 1
[    3.129457]   Magic number: 14:311:662
[    3.129606] console [netcon0] enabled
[    3.129673] netconsole: network logging started
[    3.129949] PM: Hibernation image not present or could not be loaded.
[    3.129958] ALSA device list:
[    3.130014]   No soundcards found.
[    3.130135] Warning: unable to open an initial console.
[    3.132093] Freeing unused kernel memory: 4280K (c1760000 - c1b8e000)
[    3.152787] udevd[950]: starting version 173
[    3.221479] mmc0: BKOPS_EN bit is not set
[    3.291604] mmc0: new HS200 MMC card at address 0001
[    3.293171] mmcblk0: mmc0:0001 HCG8e\x04 58.2 GiB 
[    3.299431] mmcblk0boot0: mmc0:0001 HCG8e\x04 partition 1 4.00 MiB
[    3.306618] mmcblk0boot1: mmc0:0001 HCG8e\x04 partition 2 4.00 MiB
[    3.308595] mmcblk0rpmb: mmc0:0001 HCG8e\x04 partition 3 4.00 MiB
[    3.310774]  mmcblk0: p1 p2
[    3.314502] usb 2-1: new SuperSpeed USB device number 2 using xhci_hcd
[    3.315181]  mmcblk0boot1: unknown partition table
[    3.318619]  mmcblk0boot0:
[    3.325628] usb 2-1: New USB device found, idVendor=0451, idProduct=8046
[    3.325736] usb 2-1: New USB device strings: Mfr=0, Product=0, SerialNumber=0
[    3.326706] hub 2-1:1.0: USB hub found
[    3.326807] hub 2-1:1.0: 4 ports detected
[    3.457397] usb 1-1: new high-speed USB device number 2 using xhci_hcd
[    3.614821] usb 1-1: New USB device found, idVendor=0451, idProduct=8044
[    3.638906] usb 1-1: New USB device strings: Mfr=0, Product=0, SerialNumber=1
[    3.662978] usb 1-1: SerialNumber: 420208698DA1
[    3.687826] hub 1-1:1.0: USB hub found
[    3.711486] Clocksource tsc unstable (delta = 86056090 ns)
[    3.735632] Switched to clocksource refined-jiffies
[    3.735695] hub 1-1:1.0: 4 ports detected
[    3.871722] usb 1-3: new high-speed USB device number 3 using xhci_hcd
[    4.046409] usb 1-3: New USB device found, idVendor=12d1, idProduct=1570
[    4.070299] usb 1-3: New USB device strings: Mfr=5, Product=4, SerialNumber=0
[    4.094161] usb 1-3: Product: HUAWEI Mobile Broadband Module
[    4.117914] usb 1-3: Manufacturer: Huawei Technologies Co., Ltd.
[    4.287085] usb 1-4: new high-speed USB device number 4 using xhci_hcd
[    4.469915] usb 1-4: New USB device found, idVendor=0951, idProduct=1603
[    4.493603] usb 1-4: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[    4.517281] usb 1-4: Product: DataTraveler 2.0
[    4.540866] usb 1-4: Manufacturer: Kingston
[    4.564397] usb 1-4: SerialNumber: 89900000000000000000017E
[    4.588912] usb-storage 1-4:1.0: USB Mass Storage device detected
[    4.612720] scsi0 : usb-storage 1-4:1.0
[    4.707537] usb 1-1.2: new high-speed USB device number 5 using xhci_hcd
[    4.814374] usb 1-1.2: New USB device found, idVendor=0424, idProduct=7500
[    4.837670] usb 1-1.2: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[    4.860860] usb 1-1.2: Product: LAN7500
[    4.883907] usb 1-1.2: Manufacturer: SMSC
[    4.906875] usb 1-1.2: SerialNumber: 00800f11700e
[    5.005944] usb 1-1.3: new low-speed USB device number 6 using xhci_hcd
[    5.120893] usb 1-1.3: New USB device found, idVendor=046d, idProduct=c312
[    5.143940] usb 1-1.3: New USB device strings: Mfr=1, Product=2, SerialNumber=0
[    5.166934] usb 1-1.3: Product: USB Multimedia Keyboard
[    5.189795] usb 1-1.3: Manufacturer: LITEON Technology
[    5.213180] usb 1-1.3: ep 0x81 - rounding interval to 128 microframes, ep desc says 192 microframes
[    5.240839] input: LITEON Technology USB Multimedia Keyboard as /devices/pci0000:00/0000:00:14.0/usb1/1-1/1-1.3/1-1.3:1.0/0003:046D:C312.0001/input/input2
[    5.288118] hid-generic 0003:046D:C312.0001: input,hidraw0: USB HID v1.10 Keyboard [LITEON Technology USB Multimedia Keyboard] on usb-0000:00:14.0-1.3/input0
[    6.046665] scsi 0:0:0:0: Direct-Access     Kingston DataTraveler 2.0 1.00 PQ: 0 ANSI: 2
[    6.072550] sd 0:0:0:0: Attached scsi generic sg0 type 0
[    6.097262] sd 0:0:0:0: [sda] 7856128 512-byte logical blocks: (4.02 GB/3.74 GiB)
[    6.122493] sd 0:0:0:0: [sda] Write Protect is off
[    6.147054] sd 0:0:0:0: [sda] Mode Sense: 23 00 00 00
[    6.147419] sd 0:0:0:0: [sda] No Caching mode page found
[    6.171970] sd 0:0:0:0: [sda] Assuming drive cache: write through
[    6.199476]  sda: sda1 sda2
[    6.234277] sd 0:0:0:0: [sda] Attached SCSI removable disk
[    6.565533] EXT4-fs (sda2): couldn't mount as ext3 due to feature incompatibilities
[    6.594874] EXT4-fs (sda2): couldn't mount as ext2 due to feature incompatibilities
[    6.633506] EXT4-fs (sda2): mounted filesystem with ordered data mode. Opts: (null)
[    6.912041] random: nonblocking pool is initialized
[    7.850402] udevd[1663]: starting version 173
[    7.985774] sst-acpi 80860F28:00: Direct firmware load failed with error -2
[    7.996052] sst-acpi 80860F28:00: Falling back to user helper
[    8.073790] smsc75xx v1.0.0
[    8.088302] sst-acpi 80860F28:00: Cannot load firmware intel/fw_sst_0f28.bin-i2s_master
[    8.088802] byt-rt5640 byt-rt5640: ASoC: CPU DAI Front-cpu-dai not registered
[    8.088820] platform byt-rt5640: Driver byt-rt5640 requests probe deferral
[    8.097125] byt-rt5640 byt-rt5640: ASoC: CPU DAI Front-cpu-dai not registered
[    8.097140] platform byt-rt5640: Driver byt-rt5640 requests probe deferral
[    8.136577] smsc75xx 1-1.2:1.0 eth0: register 'smsc75xx' at usb-0000:00:14.0-1.2, smsc75xx USB 2.0 Gigabit Ethernet, 70:2f:97:00:22:4f
[    8.145263] usbcore: registered new interface driver smsc75xx
[    8.145392] byt-rt5640 byt-rt5640: ASoC: CPU DAI Front-cpu-dai not registered
[    8.145429] platform byt-rt5640: Driver byt-rt5640 requests probe deferral
[   16.314692] mmc0: Got data interrupt 0x00000002 even though no data operation was in progress.
[   16.343169] mmcblk0rpmb: error -110 transferring data, sector 8064, nr 8, cmd response 0x900, card status 0xb00
[   16.369905] mmcblk0rpmb: retrying using single block read
[   16.398887] mmcblk0rpmb: timed out sending r/w cmd command, card status 0x400900
[   16.428174] mmcblk0rpmb: timed out sending r/w cmd command, card status 0x400900
[   16.457259] mmcblk0rpmb: timed out sending r/w cmd command, card status 0x400900
[   16.486166] mmcblk0rpmb: timed out sending r/w cmd command, card status 0x400900
[   16.514941] mmcblk0rpmb: timed out sending r/w cmd command, card status 0x400900
[   16.543616] mmcblk0rpmb: timed out sending r/w cmd command, card status 0x400900
[   16.569984] end_request: I/O error, dev mmcblk0rpmb, sector 8064
[   16.596349] Buffer I/O error on device mmcblk0rpmb, logical block 1008
[   24.832319] mmc0: Got data interrupt 0x00000002 even though no data operation was in progress.
[   24.861222] mmcblk0rpmb: error -110 transferring data, sector 8064, nr 8, cmd response 0x900, card status 0xb00
[   24.888253] mmcblk0rpmb: retrying using single block read
[   24.917282] mmcblk0rpmb: timed out sending r/w cmd command, card status 0x400900
[   24.946559] mmcblk0rpmb: timed out sending r/w cmd command, card status 0x400900
[   24.975652] mmcblk0rpmb: timed out sending r/w cmd command, card status 0x400900
[   25.004522] mmcblk0rpmb: timed out sending r/w cmd command, card status 0x400900
[   25.033198] mmcblk0rpmb: timed out sending r/w cmd command, card status 0x400900
[   25.061704] mmcblk0rpmb: timed out sending r/w cmd command, card status 0x400900
[   25.087896] end_request: I/O error, dev mmcblk0rpmb, sector 8064
[   25.114126] Buffer I/O error on device mmcblk0rpmb, logical block 1008
[   33.349878] mmc0: Got data interrupt 0x00000002 even though no data operation was in progress.
[   33.378699] mmcblk0rpmb: error -110 transferring data, sector 0, nr 16, cmd response 0x900, card status 0xb00
[   33.405713] mmcblk0rpmb: retrying using single block read
[   33.434832] mmcblk0rpmb: timed out sending r/w cmd command, card status 0x400900
[   33.464123] mmcblk0rpmb: timed out sending r/w cmd command, card status 0x400900
[   33.493276] mmcblk0rpmb: timed out sending r/w cmd command, card status 0x400900
[   33.522318] mmcblk0rpmb: timed out sending r/w cmd command, card status 0x400900
[   33.551240] mmcblk0rpmb: timed out sending r/w cmd command, card status 0x400900
[   33.580067] mmcblk0rpmb: timed out sending r/w cmd command, card status 0x400900
[   33.606641] end_request: I/O error, dev mmcblk0rpmb, sector 0
[   33.633265] Buffer I/O error on device mmcblk0rpmb, logical block 0
[   33.660054] end_request: I/O error, dev mmcblk0rpmb, sector 8
[   33.686867] Buffer I/O error on device mmcblk0rpmb, logical block 1
[   41.927437] mmc0: Got data interrupt 0x00000002 even though no data operation was in progress.
[   41.956639] mmcblk0rpmb: error -110 transferring data, sector 0, nr 8, cmd response 0x900, card status 0xb00
[   41.984021] mmcblk0rpmb: retrying using single block read
[   42.013480] mmcblk0rpmb: timed out sending r/w cmd command, card status 0x400900
[   42.043118] mmcblk0rpmb: timed out sending r/w cmd command, card status 0x400900
[   42.072609] mmcblk0rpmb: timed out sending r/w cmd command, card status 0x400900
[   42.102063] mmcblk0rpmb: timed out sending r/w cmd command, card status 0x400900
[   42.131355] mmcblk0rpmb: timed out sending r/w cmd command, card status 0x400900
[   42.160452] mmcblk0rpmb: timed out sending r/w cmd command, card status 0x400900
[   42.187206] end_request: I/O error, dev mmcblk0rpmb, sector 0
[   42.213908] Buffer I/O error on device mmcblk0rpmb, logical block 0
[   46.035190] IPv6: ADDRCONF(NETDEV_UP): eth0: link is not ready
[   47.575941] IPv6: ADDRCONF(NETDEV_CHANGE): eth0: link becomes ready
[   47.602582] smsc75xx 1-1.2:1.0 eth0: link up, 100Mbps, full-duplex, lpa 0x45E1
[   47.633581] smsc75xx 1-1.2:1.0 eth0: link up, 100Mbps, full-duplex, lpa 0x45E1

[-- Attachment #2: This is a digitally signed message part. --]
[-- Type: application/pgp-signature, Size: 316 bytes --]

^ permalink raw reply	[flat|nested] 79+ messages in thread

* Re: [Patch V2 0/9] I2C ACPI operation region handler support
  2014-05-15  7:50         ` Rolf Eike Beer
@ 2014-05-15 14:49           ` Lan Tianyu
  2014-05-16  8:43             ` Rolf Eike Beer
  2014-05-20 14:17           ` Rolf Eike Beer
  1 sibling, 1 reply; 79+ messages in thread
From: Lan Tianyu @ 2014-05-15 14:49 UTC (permalink / raw)
  To: Rolf Eike Beer
  Cc: wsa, rjw, mika.westerberg, awilliam, lenb, linux-i2c,
	linux-kernel, linux-acpi

[-- Attachment #1: Type: text/plain, Size: 1206 bytes --]

On 05/15/2014 03:50 PM, Rolf Eike Beer wrote:
> Lan Tianyu wrote:
>> On 05/13/2014 09:09 PM, Rolf Eike Beer wrote:
>>> Am Montag, 28. April 2014, 22:27:39 schrieb Lan Tianyu:
>>>> ACPI 5.0 spec(5.5.2.4.5) defines GenericSerialBus(i2c, spi, uart)
>>>> operation
>>>> region. It allows ACPI aml code able to access such kind of devices to
>>>> implement some ACPI standard method.
>>>>
>>>> On the Asus T100TA, Bios use GenericSerialBus operation region to access
>>>> i2c device to get battery info. So battery function depends on the I2C
>>>> operation region support. Here is the bug link.
>>>> https://bugzilla.kernel.org/show_bug.cgi?id=69011
>>>
>>> Hi all,
>>
>>> I have tested this series and got some errors, but no additional
> functionality:
>> Hi Rolf:
>> 	Thanks for test. Could you attach the output of dmesg and acpidump?
>> Which machine you are testing on?
>
> Hi,
>
> this is an Aava Inari 8 tablet (pre-release hardware). Please find the DSDT
> and the dmesg.log attached.
>
> In case of any further questions don't hesitate to ask, I'll try to be more
> responsible.
>

Hi Eike:
	Could you apply the patch in the attachment and attach the output of 	dmesg?
					


> Regards,
>
> Eike
>


[-- Attachment #2: debug.patch --]
[-- Type: text/x-patch, Size: 499 bytes --]

diff --git a/drivers/acpi/bus.c b/drivers/acpi/bus.c
index 4ed8d48..cc8c132 100644
--- a/drivers/acpi/bus.c
+++ b/drivers/acpi/bus.c
@@ -139,8 +139,7 @@ int acpi_bus_attach_private_data(acpi_handle handle, void *data)
 	status = acpi_attach_data(handle,
 			acpi_bus_private_data_handler, data);
 	if (ACPI_FAILURE(status)) {
-		ACPI_ERROR((AE_INFO, "Error attaching device[%p] data\n",
-				handle));
+		acpi_handle_err(handle, "Error attaching device data %d\n", status);
 		return -ENODEV;
 	}
 

^ permalink raw reply related	[flat|nested] 79+ messages in thread

* Re: [Patch V2 0/9] I2C ACPI operation region handler support
  2014-05-15 14:49           ` Lan Tianyu
@ 2014-05-16  8:43             ` Rolf Eike Beer
  0 siblings, 0 replies; 79+ messages in thread
From: Rolf Eike Beer @ 2014-05-16  8:43 UTC (permalink / raw)
  To: Lan Tianyu
  Cc: wsa, rjw, mika.westerberg, awilliam, lenb, linux-i2c,
	linux-kernel, linux-acpi


[-- Attachment #1.1: Type: text/plain, Size: 49779 bytes --]

=2D-nextPart9796051.zhVmkHVF2l
Content-Transfer-Encoding: quoted-printable
Content-Type: text/plain; charset="iso-8859-1"

Am Donnerstag, 15. Mai 2014, 22:49:37 schrieb Lan Tianyu:
> On 05/15/2014 03:50 PM, Rolf Eike Beer wrote:
> > Lan Tianyu wrote:
> >> On 05/13/2014 09:09 PM, Rolf Eike Beer wrote:
> >>> Am Montag, 28. April 2014, 22:27:39 schrieb Lan Tianyu:
> >>>> ACPI 5.0 spec(5.5.2.4.5) defines GenericSerialBus(i2c, spi, uart=
)
> >>>> operation
> >>>> region. It allows ACPI aml code able to access such kind of devi=
ces to
> >>>> implement some ACPI standard method.
> >>>>=20
> >>>> On the Asus T100TA, Bios use GenericSerialBus operation region t=
o
> >>>> access
> >>>> i2c device to get battery info. So battery function depends on t=
he I2C
> >>>> operation region support. Here is the bug link.
> >>>> https://bugzilla.kernel.org/show_bug.cgi?id=3D69011
> >>>=20
> >>> Hi all,
> >>>=20
> >>> I have tested this series and got some errors, but no additional
> >=20
> > functionality:
> >> Hi Rolf:
> >> =09Thanks for test. Could you attach the output of dmesg and acpid=
ump?
> >>=20
> >> Which machine you are testing on?
> >=20
> > Hi,
> >=20
> > this is an Aava Inari 8 tablet (pre-release hardware). Please find =
the
> > DSDT
> > and the dmesg.log attached.
> >=20
> > In case of any further questions don't hesitate to ask, I'll try to=
 be
> > more
> > responsible.
>=20
> Hi Eike:
> =09Could you apply the patch in the attachment and attach the output =
of
> =09dmesg?

Sure, here it is.

Regards,

Eike
=2D-=20
Rolf Eike Beer, emlix GmbH, http://www.emlix.com
Fon +49 551 30664-0, Fax +49 551 30664-11
Bertha-von-Suttner-Str. 9, 37085 G=F6ttingen, Germany
Sitz der Gesellschaft: G=F6ttingen, Amtsgericht G=F6ttingen HR B 3160
Gesch=E4ftsf=FChrung: Dr. Uwe Kracke, Ust-IdNr.: DE 205 198 055

emlix - smart embedded open source

=2D-nextPart9796051.zhVmkHVF2l
Content-Disposition: attachment; filename="dmesg.debug"
Content-Transfer-Encoding: 7Bit
Content-Type: text/plain; charset="UTF-8"; name="dmesg.debug"

[    0.000000] Initializing cgroup subsys cpuset
[    0.000000] Initializing cgroup subsys cpu
[    0.000000] Initializing cgroup subsys cpuacct
[    0.000000] Linux version 3.15.0-rc5-Inari (root@devpool02) (gcc version 4.8.2 (Emlix Linux Inari) ) #1 SMP Fri May 16 08:25:11 UTC 2014
[    0.000000] e820: BIOS-provided physical RAM map:
[    0.000000] BIOS-e820: [mem 0x0000000000000000-0x000000000008efff] usable
[    0.000000] BIOS-e820: [mem 0x000000000008f000-0x000000000008ffff] ACPI NVS
[    0.000000] BIOS-e820: [mem 0x0000000000090000-0x000000000009dfff] usable
[    0.000000] BIOS-e820: [mem 0x000000000009e000-0x000000000009ffff] reserved
[    0.000000] BIOS-e820: [mem 0x0000000000100000-0x000000001fffffff] usable
[    0.000000] BIOS-e820: [mem 0x0000000020000000-0x00000000200fffff] reserved
[    0.000000] BIOS-e820: [mem 0x0000000020100000-0x0000000078345fff] usable
[    0.000000] BIOS-e820: [mem 0x0000000078346000-0x0000000078c45fff] reserved
[    0.000000] BIOS-e820: [mem 0x0000000078c46000-0x0000000078d45fff] ACPI NVS
[    0.000000] BIOS-e820: [mem 0x0000000078d46000-0x0000000078d85fff] ACPI data
[    0.000000] BIOS-e820: [mem 0x0000000078d86000-0x00000000794c7fff] usable
[    0.000000] BIOS-e820: [mem 0x00000000794c8000-0x0000000079dc7fff] ACPI NVS
[    0.000000] BIOS-e820: [mem 0x0000000079dc8000-0x0000000079ffffff] usable
[    0.000000] BIOS-e820: [mem 0x00000000e00f8000-0x00000000e00f8fff] reserved
[    0.000000] BIOS-e820: [mem 0x00000000fed01000-0x00000000fed01fff] reserved
[    0.000000] BIOS-e820: [mem 0x00000000ffd00000-0x00000000ffffffff] reserved
[    0.000000] Notice: NX (Execute Disable) protection cannot be enabled: non-PAE kernel!
[    0.000000] efi: EFI v2.31 by INSYDE Corp.
[    0.000000] efi:  ACPI 2.0=0x78d85014  SMBIOS=0x78c45000 
[    0.000000] efi: mem00: type=7, attr=0xf, range=[0x0000000000000000-0x0000000000001000) (0MB)
[    0.000000] efi: mem01: type=2, attr=0xf, range=[0x0000000000001000-0x0000000000007000) (0MB)
[    0.000000] efi: mem02: type=7, attr=0xf, range=[0x0000000000007000-0x000000000008f000) (0MB)
[    0.000000] efi: mem03: type=10, attr=0xf, range=[0x000000000008f000-0x0000000000090000) (0MB)
[    0.000000] efi: mem04: type=7, attr=0xf, range=[0x0000000000090000-0x000000000009e000) (0MB)
[    0.000000] efi: mem05: type=0, attr=0xf, range=[0x000000000009e000-0x00000000000a0000) (0MB)
[    0.000000] efi: mem06: type=7, attr=0xf, range=[0x0000000000100000-0x0000000001000000) (15MB)
[    0.000000] efi: mem07: type=2, attr=0xf, range=[0x0000000001000000-0x000000000257f000) (21MB)
[    0.000000] efi: mem08: type=7, attr=0xf, range=[0x000000000257f000-0x0000000020000000) (474MB)
[    0.000000] efi: mem09: type=0, attr=0xf, range=[0x0000000020000000-0x0000000020100000) (1MB)
[    0.000000] efi: mem10: type=7, attr=0xf, range=[0x0000000020100000-0x0000000071dc0000) (1308MB)
[    0.000000] efi: mem11: type=4, attr=0xf, range=[0x0000000071dc0000-0x0000000071de0000) (0MB)
[    0.000000] efi: mem12: type=7, attr=0xf, range=[0x0000000071de0000-0x0000000072bca000) (13MB)
[    0.000000] efi: mem13: type=2, attr=0xf, range=[0x0000000072bca000-0x0000000072bcc000) (0MB)
[    0.000000] efi: mem14: type=1, attr=0xf, range=[0x0000000072bcc000-0x0000000073b46000) (15MB)
[    0.000000] efi: mem15: type=7, attr=0xf, range=[0x0000000073b46000-0x0000000076a92000) (47MB)
[    0.000000] efi: mem16: type=4, attr=0xf, range=[0x0000000076a92000-0x00000000774ec000) (10MB)
[    0.000000] efi: mem17: type=7, attr=0xf, range=[0x00000000774ec000-0x00000000774f9000) (0MB)
[    0.000000] efi: mem18: type=4, attr=0xf, range=[0x00000000774f9000-0x0000000077d46000) (8MB)
[    0.000000] efi: mem19: type=7, attr=0xf, range=[0x0000000077d46000-0x0000000078161000) (4MB)
[    0.000000] efi: mem20: type=3, attr=0xf, range=[0x0000000078161000-0x0000000078346000) (1MB)
[    0.000000] efi: mem21: type=5, attr=0x800000000000000f, range=[0x0000000078346000-0x0000000078546000) (2MB)
[    0.000000] efi: mem22: type=6, attr=0x800000000000000f, range=[0x0000000078546000-0x0000000078846000) (3MB)
[    0.000000] efi: mem23: type=0, attr=0xf, range=[0x0000000078846000-0x0000000078c46000) (4MB)
[    0.000000] efi: mem24: type=10, attr=0xf, range=[0x0000000078c46000-0x0000000078d46000) (1MB)
[    0.000000] efi: mem25: type=9, attr=0xf, range=[0x0000000078d46000-0x0000000078d86000) (0MB)
[    0.000000] efi: mem26: type=4, attr=0xf, range=[0x0000000078d86000-0x00000000794c8000) (7MB)
[    0.000000] efi: mem27: type=10, attr=0xf, range=[0x00000000794c8000-0x0000000079dc8000) (9MB)
[    0.000000] efi: mem28: type=4, attr=0xf, range=[0x0000000079dc8000-0x000000007a000000) (2MB)
[    0.000000] efi: mem29: type=11, attr=0x8000000000000001, range=[0x00000000e00f8000-0x00000000e00f9000) (0MB)
[    0.000000] efi: mem30: type=11, attr=0x8000000000000000, range=[0x00000000fed01000-0x00000000fed02000) (0MB)
[    0.000000] efi: mem31: type=11, attr=0x8000000000000000, range=[0x00000000ffd00000-0x0000000100000000) (3MB)
[    0.000000] SMBIOS 2.7 present.
[    0.000000] DMI: Aava Mobile Oy Inari 8 2GB/Type2 - Board Product Name, BIOS BYT.5.03.47.0033-022 01/16/2014
[    0.000000] e820: update [mem 0x00000000-0x00000fff] usable ==> reserved
[    0.000000] e820: remove [mem 0x000a0000-0x000fffff] usable
[    0.000000] e820: last_pfn = 0x7a000 max_arch_pfn = 0x100000
[    0.000000] MTRR default type: uncachable
[    0.000000] MTRR fixed ranges enabled:
[    0.000000]   00000-9FFFF write-back
[    0.000000]   A0000-FFFFF write-protect
[    0.000000] MTRR variable ranges enabled:
[    0.000000]   0 base 0FFD00000 mask FFFC00000 write-protect
[    0.000000]   1 base 000000000 mask FC0000000 write-back
[    0.000000]   2 base 040000000 mask FE0000000 write-back
[    0.000000]   3 base 060000000 mask FF0000000 write-back
[    0.000000]   4 base 070000000 mask FF8000000 write-back
[    0.000000]   5 base 078000000 mask FFC000000 write-back
[    0.000000]   6 base 07B000000 mask FFF000000 uncachable
[    0.000000]   7 base 07AE00000 mask FFFE00000 uncachable
[    0.000000] x86 PAT enabled: cpu 0, old 0x7040600070406, new 0x7010600070106
[    0.000000] Scanning 1 areas for low memory corruption
[    0.000000] initial memory mapped: [mem 0x00000000-0x027fffff]
[    0.000000] Base memory trampoline at [c009a000] 9a000 size 16384
[    0.000000] init_memory_mapping: [mem 0x00000000-0x000fffff]
[    0.000000]  [mem 0x00000000-0x000fffff] page 4k
[    0.000000] init_memory_mapping: [mem 0x37000000-0x373fffff]
[    0.000000]  [mem 0x37000000-0x373fffff] page 2M
[    0.000000] init_memory_mapping: [mem 0x30000000-0x36ffffff]
[    0.000000]  [mem 0x30000000-0x36ffffff] page 2M
[    0.000000] init_memory_mapping: [mem 0x00100000-0x1fffffff]
[    0.000000]  [mem 0x00100000-0x003fffff] page 4k
[    0.000000]  [mem 0x00400000-0x1fffffff] page 2M
[    0.000000] init_memory_mapping: [mem 0x20100000-0x2fffffff]
[    0.000000]  [mem 0x20100000-0x203fffff] page 4k
[    0.000000]  [mem 0x20400000-0x2fffffff] page 2M
[    0.000000] BRK [0x02464000, 0x02464fff] PGTABLE
[    0.000000] init_memory_mapping: [mem 0x37400000-0x377fdfff]
[    0.000000]  [mem 0x37400000-0x377fdfff] page 4k
[    0.000000] BRK [0x02465000, 0x02465fff] PGTABLE
[    0.000000] ACPI: RSDP 0x78D85014 000024 (v02 INSYDE)
[    0.000000] ACPI: XSDT 0x78D61188 0000D4 (v01 INSYDE INSYDE   00000003      01000013)
[    0.000000] ACPI: FACP 0x78D7F000 00010C (v05 INSYDE INSYDE   00000003 ACPI 00040000)
[    0.000000] ACPI: DSDT 0x78D6E000 00BAEC (v02 INSYDE INSYDE   00000003 ACPI 00040000)
[    0.000000] ACPI: UEFI 0x78D84000 000236 (v01 INSYDE INSYDE   00000001 ACPI 00040000)
[    0.000000] ACPI: TCPA 0x78D83000 000032 (v02 INSYDE INSYDE   00000000 ACPI 00040000)
[    0.000000] ACPI: UEFI 0x78D81000 000042 (v01 INSYDE INSYDE   00000000 ACPI 00040000)
[    0.000000] ACPI: DBG2 0x78D80000 000072 (v00 INSYDE INSYDE   00000003 ACPI 00040000)
[    0.000000] ACPI: HPET 0x78D7E000 000038 (v01 INSYDE INSYDE   00000003 ACPI 00040000)
[    0.000000] ACPI: LPIT 0x78D7D000 000104 (v01 INSYDE INSYDE   00000003 ACPI 00040000)
[    0.000000] ACPI: APIC 0x78D7C000 00006C (v03 INSYDE INSYDE   00000003 ACPI 00040000)
[    0.000000] ACPI: MCFG 0x78D7B000 00003C (v01 INSYDE INSYDE   00000003 ACPI 00040000)
[    0.000000] ACPI: SLIC 0x78D7A000 000176 (v01 INSYDE INSYDE   00000003 ACPI 00040000)
[    0.000000] ACPI: SSDT 0x78D6D000 0005FB (v01 INSYDE CpuDptf  00000003 ACPI 00040000)
[    0.000000] ACPI: SSDT 0x78D6B000 0018C2 (v01 INSYDE DptfTab  00000003 ACPI 00040000)
[    0.000000] ACPI: SSDT 0x78D6A000 000058 (v01 INSYDE LowPwrM  00000003 ACPI 00040000)
[    0.000000] ACPI: SSDT 0x78D69000 0000FF (v01 INSYDE SoCDptf  00000003 ACPI 00040000)
[    0.000000] ACPI: SSDT 0x78D68000 00043A (v01 INSYDE Tpm2Tabl 00001000 ACPI 00040000)
[    0.000000] ACPI: TPM2 0x78D67000 000034 (v03 INSYDE INSYDE   00000000 ACPI 00040000)
[    0.000000] ACPI: SSDT 0x78D66000 000763 (v01 INSYDE CpuPm    00003000 ACPI 00040000)
[    0.000000] ACPI: SSDT 0x78D65000 000290 (v01 INSYDE Cpu0Tst  00003000 ACPI 00040000)
[    0.000000] ACPI: SSDT 0x78D64000 00017A (v01 INSYDE ApTst    00003000 ACPI 00040000)
[    0.000000] ACPI: FPDT 0x78D63000 000044 (v01 INSYDE INSYDE   00000001 ACPI 00040000)
[    0.000000] ACPI: CSRT 0x78D62000 00014C (v00 INSYDE INSYDE   00000005 ACPI 00040000)
[    0.000000] ACPI: BGRT 0x78D60000 000038 (v01 INSYDE INSYDE   00000001 ACPI 00040000)
[    0.000000] ACPI: Local APIC address 0xfee00000
[    0.000000] 1064MB HIGHMEM available.
[    0.000000] 887MB LOWMEM available.
[    0.000000]   mapped low ram: 0 - 377fe000
[    0.000000]   low ram: 0 - 377fe000
[    0.000000] BRK [0x02466000, 0x02466fff] PGTABLE
[    0.000000] Zone ranges:
[    0.000000]   DMA      [mem 0x00001000-0x00ffffff]
[    0.000000]   Normal   [mem 0x01000000-0x377fdfff]
[    0.000000]   HighMem  [mem 0x377fe000-0x79ffffff]
[    0.000000] Movable zone start for each node
[    0.000000] Early memory node ranges
[    0.000000]   node   0: [mem 0x00001000-0x0008efff]
[    0.000000]   node   0: [mem 0x00090000-0x0009dfff]
[    0.000000]   node   0: [mem 0x00100000-0x1fffffff]
[    0.000000]   node   0: [mem 0x20100000-0x78345fff]
[    0.000000]   node   0: [mem 0x78d86000-0x794c7fff]
[    0.000000]   node   0: [mem 0x79dc8000-0x79ffffff]
[    0.000000] On node 0 totalpages: 494428
[    0.000000] free_area_init_node: node 0, pgdat c17401c0, node_mem_map f68be020
[    0.000000]   DMA zone: 32 pages used for memmap
[    0.000000]   DMA zone: 0 pages reserved
[    0.000000]   DMA zone: 3996 pages, LIFO batch:0
[    0.000000]   Normal zone: 1744 pages used for memmap
[    0.000000]   Normal zone: 222974 pages, LIFO batch:31
[    0.000000]   HighMem zone: 2129 pages used for memmap
[    0.000000]   HighMem zone: 267458 pages, LIFO batch:31
[    0.000000] Using APIC driver default
[    0.000000] x86/hpet: Will disable the HPET for this platform because it's not reliable
[    0.000000] Reserving Intel graphics stolen memory at 0x7af00000-0x7eefffff
[    0.000000] ACPI: Local APIC address 0xfee00000
[    0.000000] ACPI: LAPIC (acpi_id[0x01] lapic_id[0x00] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0x02] lapic_id[0x02] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0x03] lapic_id[0x04] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0x04] lapic_id[0x06] enabled)
[    0.000000] ACPI: IOAPIC (id[0x02] address[0xfec00000] gsi_base[0])
[    0.000000] IOAPIC[0]: apic_id 2, version 32, address 0xfec00000, GSI 0-86
[    0.000000] ACPI: INT_SRC_OVR (bus 0 bus_irq 0 global_irq 2 dfl dfl)
[    0.000000] ACPI: INT_SRC_OVR (bus 0 bus_irq 9 global_irq 9 high level)
[    0.000000] ACPI: IRQ0 used by override.
[    0.000000] ACPI: IRQ2 used by override.
[    0.000000] ACPI: IRQ9 used by override.
[    0.000000] Using ACPI (MADT) for SMP configuration information
[    0.000000] ACPI: HPET id: 0x8086a201 base: 0xfed00000
[    0.000000] smpboot: Allowing 4 CPUs, 0 hotplug CPUs
[    0.000000] nr_irqs_gsi: 103
[    0.000000] PM: Registered nosave memory: [mem 0x0008f000-0x0008ffff]
[    0.000000] PM: Registered nosave memory: [mem 0x0009e000-0x0009ffff]
[    0.000000] PM: Registered nosave memory: [mem 0x000a0000-0x000fffff]
[    0.000000] PM: Registered nosave memory: [mem 0x20000000-0x200fffff]
[    0.000000] e820: [mem 0x7ef00000-0xe00f7fff] available for PCI devices
[    0.000000] setup_percpu: NR_CPUS:4 nr_cpumask_bits:4 nr_cpu_ids:4 nr_node_ids:1
[    0.000000] PERCPU: Embedded 12 pages/cpu @f6882000 s27264 r0 d21888 u49152
[    0.000000] pcpu-alloc: s27264 r0 d21888 u49152 alloc=12*4096
[    0.000000] pcpu-alloc: [0] 0 [0] 1 [0] 2 [0] 3 
[    0.000000] Built 1 zonelists in Zone order, mobility grouping on.  Total pages: 492652
[    0.000000] Kernel command line: root=/dev/sda2 video=HDMI-A-1:1200x1920e drm_kms_helper.edid_firmware=HDMI-A-1:edid/1200x1920.bin 
[    0.000000] PID hash table entries: 4096 (order: 2, 16384 bytes)
[    0.000000] Dentry cache hash table entries: 131072 (order: 7, 524288 bytes)
[    0.000000] Inode-cache hash table entries: 65536 (order: 6, 262144 bytes)
[    0.000000] Initializing CPU#0
[    0.000000] Initializing HighMem for node 0 (000377fe:0007a000)
[    0.000000] Initializing Movable for node 0 (00000000:00000000)
[    0.000000] Memory: 1909220K/1977712K available (5505K kernel code, 331K rwdata, 1640K rodata, 12092K init, 1236K bss, 68492K reserved, 1038956K highmem)
[    0.000000] virtual kernel memory layout:
[    0.000000]     fixmap  : 0xfff66000 - 0xfffff000   ( 612 kB)
[    0.000000]     pkmap   : 0xff800000 - 0xffc00000   (4096 kB)
[    0.000000]     vmalloc : 0xf7ffe000 - 0xff7fe000   ( 120 MB)
[    0.000000]     lowmem  : 0xc0000000 - 0xf77fe000   ( 887 MB)
[    0.000000]       .init : 0xc1750000 - 0xc231f000   (12092 kB)
[    0.000000]       .data : 0xc1560b12 - 0xc174efc0   (1977 kB)
[    0.000000]       .text : 0xc1000000 - 0xc1560b12   (5506 kB)
[    0.000000] Checking if this processor honours the WP bit even in supervisor mode...Ok.
[    0.000000] SLUB: HWalign=64, Order=0-3, MinObjects=0, CPUs=4, Nodes=1
[    0.000000] Hierarchical RCU implementation.
[    0.000000] NR_IRQS:2304 nr_irqs:1024 16
[    0.000000] CPU 0 irqstacks, hard=f600c000 soft=f600e000
[    0.000000] Console: colour dummy device 80x25
[    0.000000] console [tty0] enabled
[    0.000000] Maximum core-clock to bus-clock ratio: 0xa
[    0.000000] Resolved frequency ID: 2, frequency: 133200 KHz
[    0.000000] TSC runs at 1332000 KHz
[    0.000000] lapic_timer_frequency = 133200
[    0.000000] tsc: Detected 1332.000 MHz processor
[    0.000037] Calibrating delay loop (skipped), value calculated using timer frequency.. 2664.00 BogoMIPS (lpj=1332000)
[    0.000054] pid_max: default: 32768 minimum: 301
[    0.000071] ACPI: Core revision 20140214
[    0.044032] ACPI: All ACPI Tables successfully acquired
[    0.046878] Mount-cache hash table entries: 2048 (order: 1, 8192 bytes)
[    0.046898] Mountpoint-cache hash table entries: 2048 (order: 1, 8192 bytes)
[    0.047248] Initializing cgroup subsys freezer
[    0.047290] CPU: Physical Processor ID: 0
[    0.047300] CPU: Processor Core ID: 0
[    0.047311] ENERGY_PERF_BIAS: Set to 'normal', was 'performance'
[    0.047311] ENERGY_PERF_BIAS: View and update with x86_energy_perf_policy(8)
[    0.059441] mce: CPU supports 6 MCE banks
[    0.059460] CPU0: Thermal monitoring enabled (TM1)
[    0.059480] Last level iTLB entries: 4KB 48, 2MB 0, 4MB 0
[    0.059480] Last level dTLB entries: 4KB 128, 2MB 16, 4MB 16, 1GB 0
[    0.059480] tlb_flushall_shift: 6
[    0.059673] Freeing SMP alternatives memory: 20K (c231f000 - c2324000)
[    0.059708] ------------[ cut here ]------------
[    0.059727] WARNING: CPU: 0 PID: 0 at /tmp/e2/build/linux-git/mm/early_ioremap.c:136 __early_ioremap+0xee/0x1a6()
[    0.059739] Modules linked in:
[    0.059752] CPU: 0 PID: 0 Comm: swapper/0 Not tainted 3.15.0-rc5-Inari #1
[    0.059762] Hardware name: Aava Mobile Oy Inari 8 2GB/Type2 - Board Product Name, BIOS BYT.5.03.47.0033-022 01/16/2014
[    0.059775]  00000000 00000000 c16fdf0c c155483e 00000000 c16fdf3c c103d194 c164be20
[    0.059797]  00000000 00000000 c16539b8 00000088 c176cc03 c176cc03 00000042 77526000
[    0.059819]  00000000 c16fdf4c c103d22d 00000009 00000000 c16fdfa0 c176cc03 c1740ec0
[    0.059840] Call Trace:
[    0.059854]  [<c155483e>] dump_stack+0x41/0x52
[    0.059867]  [<c103d194>] warn_slowpath_common+0x74/0x90
[    0.059880]  [<c176cc03>] ? __early_ioremap+0xee/0x1a6
[    0.059892]  [<c176cc03>] ? __early_ioremap+0xee/0x1a6
[    0.059903]  [<c103d22d>] warn_slowpath_null+0x1d/0x20
[    0.059915]  [<c176cc03>] __early_ioremap+0xee/0x1a6
[    0.059928]  [<c10368df>] ? __native_set_fixmap+0x1f/0x30
[    0.059941]  [<c176ce70>] early_memremap+0xd/0xf
[    0.059953]  [<c1763743>] efi_bgrt_init+0xe6/0x129
[    0.059965]  [<c1763067>] efi_late_init+0x8/0xa
[    0.059978]  [<c1750a3b>] start_kernel+0x34f/0x35f
[    0.059990]  [<c1750523>] ? repair_env_string+0x51/0x51
[    0.060003]  [<c1750369>] i386_start_kernel+0x137/0x13a
[    0.060040] ---[ end trace 27ffb688a5381019 ]---
[    0.062989] Enabling APIC mode:  Flat.  Using 1 I/O APICs
[    0.064018] ..TIMER: vector=0x30 apic1=0 pin1=2 apic2=-1 pin2=-1
[    0.074045] ..MP-BIOS bug: 8254 timer not connected to IO-APIC
[    0.074054] ...trying to set up timer (IRQ0) through the 8259A ...
[    0.074063] ..... (found apic 0 pin 2) ...
[    0.084079] ....... works.
[    0.084087] smpboot: CPU0: Intel(R) Atom(TM) CPU  Z3745  @ 1.33GHz (fam: 06, model: 37, stepping: 08)
[    0.084126] TSC deadline timer enabled
[    0.084141] Performance Events: PEBS fmt2+, 8-deep LBR, Silvermont events, full-width counters, Intel PMU driver.
[    0.084168] ... version:                3
[    0.084176] ... bit width:              40
[    0.084183] ... generic registers:      2
[    0.084191] ... value mask:             000000ffffffffff
[    0.084199] ... max period:             000000ffffffffff
[    0.084207] ... fixed-purpose events:   3
[    0.084214] ... event mask:             0000000700000003
[    0.085792] CPU 1 irqstacks, hard=f60a6000 soft=f60b0000
[    0.085798] x86: Booting SMP configuration:
[    0.085809] .... node  #0, CPUs:      #1
[    0.095924] Initializing CPU#1
[    0.111134] CPU 2 irqstacks, hard=f60ba000 soft=f60bc000
[    0.111153]  #2
[    0.121206] Initializing CPU#2
[    0.136519] CPU 3 irqstacks, hard=f60c6000 soft=f60c8000
[    0.136533]  #3
[    0.146587] Initializing CPU#3
[    0.161772] x86: Booted up 1 node, 4 CPUs
[    0.161791] smpboot: Total of 4 processors activated (10656.00 BogoMIPS)
[    0.162741] devtmpfs: initialized
[    0.163227] PM: Registering ACPI NVS region [mem 0x0008f000-0x0008ffff] (4096 bytes)
[    0.163242] PM: Registering ACPI NVS region [mem 0x78c46000-0x78d45fff] (1048576 bytes)
[    0.163294] PM: Registering ACPI NVS region [mem 0x794c8000-0x79dc7fff] (9437184 bytes)
[    0.163841] pinctrl core: initialized pinctrl subsystem
[    0.163902] RTC time:  0:40:53, date: 05/16/14
[    0.163989] NET: Registered protocol family 16
[    0.164313] cpuidle: using governor ladder
[    0.164324] cpuidle: using governor menu
[    0.164398] ACPI: bus type PCI registered
[    0.164551] PCI: MMCONFIG for domain 0000 [bus 00-3f] at [mem 0xe0000000-0xe3ffffff] (base 0xe0000000)
[    0.164568] PCI: not using MMCONFIG
[    0.164920] PCI: Using configuration type 1 for base access
[    0.170069] ACPI: Added _OSI(Module Device)
[    0.170084] ACPI: Added _OSI(Processor Device)
[    0.170094] ACPI: Added _OSI(3.0 _SCP Extensions)
[    0.170103] ACPI: Added _OSI(Processor Aggregator Device)
[    0.204674] ACPI: SSDT 0x78BCAA90 000353 (v01 PmRef  Cpu0Ist  00003000 INTL 20130117)
[    0.206249] ACPI: Dynamic OEM Table Load:
[    0.206264] ACPI: SSDT 0x00000000 000353 (v01 PmRef  Cpu0Ist  00003000 INTL 20130117)
[    0.206799] ACPI: SSDT 0x78BC9910 000433 (v01 PmRef  Cpu0Cst  00003001 INTL 20130117)
[    0.208647] ACPI: Dynamic OEM Table Load:
[    0.208661] ACPI: SSDT 0x00000000 000433 (v01 PmRef  Cpu0Cst  00003001 INTL 20130117)
[    0.215236] ACPI: SSDT 0x78BCBD90 00015F (v01 PmRef  ApIst    00003000 INTL 20130117)
[    0.216837] ACPI: Dynamic OEM Table Load:
[    0.216851] ACPI: SSDT 0x00000000 00015F (v01 PmRef  ApIst    00003000 INTL 20130117)
[    0.219400] ACPI: SSDT 0x78BCBF10 00008D (v01 PmRef  ApCst    00003000 INTL 20130117)
[    0.220819] ACPI: Dynamic OEM Table Load:
[    0.220832] ACPI: SSDT 0x00000000 00008D (v01 PmRef  ApCst    00003000 INTL 20130117)
[    0.226624] ACPI: Interpreter enabled
[    0.226659] ACPI Exception: AE_NOT_FOUND, While evaluating Sleep State [\_S1_] (20140214/hwxface-580)
[    0.226683] ACPI Exception: AE_NOT_FOUND, While evaluating Sleep State [\_S2_] (20140214/hwxface-580)
[    0.226705] ACPI Exception: AE_NOT_FOUND, While evaluating Sleep State [\_S3_] (20140214/hwxface-580)
[    0.226726] ACPI Exception: AE_NOT_FOUND, While evaluating Sleep State [\_S4_] (20140214/hwxface-580)
[    0.226746] ACPI Exception: AE_NOT_FOUND, While evaluating Sleep State [\_S5_] (20140214/hwxface-580)
[    0.226764] ACPI: (supports S0)
[    0.226773] ACPI: Using IOAPIC for interrupt routing
[    0.226862] PCI: MMCONFIG for domain 0000 [bus 00-3f] at [mem 0xe0000000-0xe3ffffff] (base 0xe0000000)
[    0.234470] [Firmware Info]: PCI: MMCONFIG at [mem 0xe0000000-0xe3ffffff] not reserved in ACPI motherboard resources
[    0.234487] PCI: not using MMCONFIG
[    0.234540] PCI: Using host bridge windows from ACPI; if necessary, use "pci=nocrs" and report a bug
[    0.237741] ACPI: Power Resource [USBC] (on)
[    0.241990] ACPI: Power Resource [WWPR] (off)
[    0.252641] ACPI: Power Resource [PLPE] (on)
[    0.264429] ACPI: Power Resource [CLK0] (on)
[    0.264566] ACPI: Power Resource [CLK1] (on)
[    0.264924] ACPI: Power Resource [P28X] (off)
[    0.265067] ACPI: Power Resource [P18X] (off)
[    0.267582] ACPI: Power Resource [TCPR] (off)
[    0.274577] ACPI: PCI Root Bridge [PCI0] (domain 0000 [bus 00-ff])
[    0.274601] acpi PNP0A08:00: _OSC: OS supports [ASPM ClockPM Segments MSI]
[    0.274806] \_SB_.PCI0:_OSC invalid UUID
[    0.274811] _OSC request data:1 1e 0 
[    0.274824] acpi PNP0A08:00: _OSC failed (AE_ERROR); disabling ASPM
[    0.276129] acpi PNP0A08:00: fail to add MMCONFIG information, can't access extended PCI configuration space under this bridge.
[    0.276204] PCI host bridge to bus 0000:00
[    0.276218] pci_bus 0000:00: root bus resource [bus 00-ff]
[    0.276231] pci_bus 0000:00: root bus resource [io  0x0000-0x006f]
[    0.276242] pci_bus 0000:00: root bus resource [io  0x0078-0x0cf7]
[    0.276254] pci_bus 0000:00: root bus resource [io  0x0d00-0xffff]
[    0.276266] pci_bus 0000:00: root bus resource [mem 0x000a0000-0x000bffff]
[    0.276277] pci_bus 0000:00: root bus resource [mem 0x000c0000-0x000dffff]
[    0.276289] pci_bus 0000:00: root bus resource [mem 0x000e0000-0x000fffff]
[    0.276301] pci_bus 0000:00: root bus resource [mem 0x90c00000-0x90ffffff]
[    0.276313] pci_bus 0000:00: root bus resource [mem 0x7af00001-0x7ef00000]
[    0.276325] pci_bus 0000:00: root bus resource [mem 0x80000000-0x908ffffe]
[    0.276337] pci_bus 0000:00: root bus resource [mem 0xfed40000-0xfed40fff]
[    0.276361] pci 0000:00:00.0: [8086:0f00] type 00 class 0x060000
[    0.276562] pci 0000:00:02.0: [8086:0f31] type 00 class 0x030000
[    0.276588] pci 0000:00:02.0: reg 0x10: [mem 0x90000000-0x903fffff]
[    0.276607] pci 0000:00:02.0: reg 0x18: [mem 0x80000000-0x8fffffff pref]
[    0.276625] pci 0000:00:02.0: reg 0x20: [io  0x1000-0x1007]
[    0.276833] pci 0000:00:14.0: [8086:0f35] type 00 class 0x0c0330
[    0.276864] pci 0000:00:14.0: reg 0x10: [mem 0x90800000-0x9080ffff 64bit]
[    0.276943] pci 0000:00:14.0: PME# supported from D3hot D3cold
[    0.277123] pci 0000:00:1a.0: [8086:0f18] type 00 class 0x108000
[    0.277154] pci 0000:00:1a.0: reg 0x10: [mem 0x90700000-0x907fffff]
[    0.277171] pci 0000:00:1a.0: reg 0x14: [mem 0x90600000-0x906fffff]
[    0.277272] pci 0000:00:1a.0: PME# supported from D0 D3hot
[    0.277437] pci 0000:00:1f.0: [8086:0f1c] type 00 class 0x060100
[    0.277671] pci_bus 0000:00: on NUMA node 0
[    0.278783] ACPI: PCI Interrupt Link [LNKA] (IRQs 3 4 5 6 10 11 12 14 15) *0, disabled.
[    0.279101] ACPI: PCI Interrupt Link [LNKB] (IRQs 3 4 5 6 10 11 12 14 15) *0, disabled.
[    0.279417] ACPI: PCI Interrupt Link [LNKC] (IRQs 3 4 5 6 10 11 12 14 15) *0, disabled.
[    0.279746] ACPI: PCI Interrupt Link [LNKD] (IRQs 3 4 5 6 10 11 12 14 15) *0, disabled.
[    0.280062] ACPI: PCI Interrupt Link [LNKE] (IRQs 3 4 5 6 10 11 12 14 15) *0, disabled.
[    0.280378] ACPI: PCI Interrupt Link [LNKF] (IRQs 3 4 5 6 10 11 12 14 15) *0, disabled.
[    0.280706] ACPI: PCI Interrupt Link [LNKG] (IRQs 3 4 5 6 10 11 12 14 15) *0, disabled.
[    0.281031] ACPI: PCI Interrupt Link [LNKH] (IRQs 3 4 5 6 10 11 12 14 15) *0, disabled.
[    0.293311] dw_dmac INTL9C60:00: DesignWare DMA Controller, 8 channels
[    0.294019] dw_dmac INTL9C60:01: DesignWare DMA Controller, 8 channels
[    0.294793] vgaarb: device added: PCI:0000:00:02.0,decodes=io+mem,owns=io+mem,locks=none
[    0.294809] vgaarb: loaded
[    0.294817] vgaarb: bridge control possible 0000:00:02.0
[    0.295019] SCSI subsystem initialized
[    0.295037] ACPI: bus type USB registered
[    0.295110] usbcore: registered new interface driver usbfs
[    0.295156] usbcore: registered new interface driver hub
[    0.295258] usbcore: registered new device driver usb
[    0.302206] pps_core: LinuxPPS API ver. 1 registered
[    0.302219] pps_core: Software ver. 5.3.6 - Copyright 2005-2007 Rodolfo Giometti <giometti@linux.it>
[    0.302246] PTP clock support registered
[    0.302485] Advanced Linux Sound Architecture Driver Initialized.
[    0.302497] PCI: Using ACPI for IRQ routing
[    0.302507] PCI: pci_cache_line_size set to 64 bytes
[    0.302532] Expanded resource reserved due to conflict with PCI Bus 0000:00
[    0.302544] e820: reserve RAM buffer [mem 0x0008f000-0x0008ffff]
[    0.302549] e820: reserve RAM buffer [mem 0x0009e000-0x0009ffff]
[    0.302554] e820: reserve RAM buffer [mem 0x78346000-0x7bffffff]
[    0.302559] e820: reserve RAM buffer [mem 0x794c8000-0x7bffffff]
[    0.302564] e820: reserve RAM buffer [mem 0x7a000000-0x7bffffff]
[    0.303000] cfg80211: Calling CRDA to update world regulatory domain
[    0.303235] Switched to clocksource refined-jiffies
[    0.303367] pnp: PnP ACPI init
[    0.303389] ACPI: bus type PNP registered
[    0.303499] pnp 00:00: Plug and Play ACPI device, IDs PNP0b00 (active)
[    0.303670] pnp 00:01: Plug and Play ACPI device, IDs PNP0103 (active)
[    0.303776] pnp 00:02: Plug and Play ACPI device, IDs INT0800 (active)
[    0.303895] system 00:03: [io  0x0680-0x069f] has been reserved
[    0.303911] system 00:03: [io  0x0400-0x047f] has been reserved
[    0.303923] system 00:03: [io  0x0500-0x05fe] has been reserved
[    0.303935] system 00:03: [io  0x0600-0x061f] has been reserved
[    0.303947] system 00:03: [io  0x164e-0x164f] has been reserved
[    0.303961] system 00:03: Plug and Play ACPI device, IDs PNP0c02 (active)
[    0.304307] pnp 00:04: Plug and Play ACPI device, IDs PNP0501 (active)
[    0.305812] pnp 00:05: Plug and Play ACPI device, IDs INT0002 (active)
[    0.305988] pnp 00:06: Plug and Play ACPI device, IDs INT33fc (active)
[    0.306155] pnp 00:07: Plug and Play ACPI device, IDs INT33fc (active)
[    0.306328] pnp 00:08: Plug and Play ACPI device, IDs INT33fc (active)
[    0.307495] pnp 00:09: unknown resource type 19 in _CRS
[    0.307509] pnp 00:09: can't evaluate _CRS: 1
[    0.307579] pnp 00:09: Plug and Play ACPI device, IDs BCM2e3a (active)
[    0.314223] pnp 00:0a: unknown resource type 17 in _CRS
[    0.314237] pnp 00:0a: can't evaluate _CRS: 1
[    0.314321] pnp 00:0a: Plug and Play ACPI device, IDs INTcfd9 PNP0c40 (active)
[    0.314481] pnp 00:0b: Plug and Play ACPI device, IDs INT33bd (active)
[    0.314809] pnp 00:0c: Plug and Play ACPI device, IDs INT3401 (active)
[    0.315136] pnp 00:0d: unknown resource type 17 in _CRS
[    0.315150] pnp 00:0d: can't evaluate _CRS: 1
[    0.315224] pnp 00:0d: Plug and Play ACPI device, IDs INT3403 (active)
[    0.315362] pnp 00:0e: unknown resource type 17 in _CRS
[    0.315375] pnp 00:0e: can't evaluate _CRS: 1
[    0.315448] pnp 00:0e: Plug and Play ACPI device, IDs INT3403 (active)
[    0.315643] pnp 00:0f: unknown resource type 17 in _CRS
[    0.315656] pnp 00:0f: can't evaluate _CRS: 1
[    0.315730] pnp 00:0f: Plug and Play ACPI device, IDs INT3409 (active)
[    0.316029] pnp: PnP ACPI: found 16 devices
[    0.316040] ACPI: bus type PNP unregistered
[    0.321422] pci_bus 0000:00: resource 4 [io  0x0000-0x006f]
[    0.321433] pci_bus 0000:00: resource 5 [io  0x0078-0x0cf7]
[    0.321440] pci_bus 0000:00: resource 6 [io  0x0d00-0xffff]
[    0.321446] pci_bus 0000:00: resource 7 [mem 0x000a0000-0x000bffff]
[    0.321453] pci_bus 0000:00: resource 8 [mem 0x000c0000-0x000dffff]
[    0.321459] pci_bus 0000:00: resource 9 [mem 0x000e0000-0x000fffff]
[    0.321466] pci_bus 0000:00: resource 10 [mem 0x90c00000-0x90ffffff]
[    0.321472] pci_bus 0000:00: resource 11 [mem 0x7af00001-0x7ef00000]
[    0.321479] pci_bus 0000:00: resource 12 [mem 0x80000000-0x908ffffe]
[    0.321485] pci_bus 0000:00: resource 13 [mem 0xfed40000-0xfed40fff]
[    0.321549] NET: Registered protocol family 2
[    0.321890] TCP established hash table entries: 8192 (order: 3, 32768 bytes)
[    0.321938] TCP bind hash table entries: 8192 (order: 4, 65536 bytes)
[    0.322013] TCP: Hash tables configured (established 8192 bind 8192)
[    0.322056] TCP: reno registered
[    0.322068] UDP hash table entries: 512 (order: 2, 16384 bytes)
[    0.322090] UDP-Lite hash table entries: 512 (order: 2, 16384 bytes)
[    0.322183] NET: Registered protocol family 1
[    0.322218] pci 0000:00:02.0: Boot video device
[    0.322632] PCI: CLS 0 bytes, default 64
[    0.800023] microcode: CPU0 sig=0x30678, pf=0x2, revision=0x808
[    0.800048] microcode: CPU1 sig=0x30678, pf=0x2, revision=0x808
[    0.800075] microcode: CPU2 sig=0x30678, pf=0x2, revision=0x808
[    0.800104] microcode: CPU3 sig=0x30678, pf=0x2, revision=0x808
[    0.800208] microcode: Microcode Update Driver: v2.00 <tigran@aivazian.fsnet.co.uk>, Peter Oruba
[    0.800940] Scanning for low memory corruption every 60 seconds
[    0.801569] futex hash table entries: 1024 (order: 4, 65536 bytes)
[    0.801616] audit: initializing netlink subsys (disabled)
[    0.801648] audit: type=2000 audit(1400200853.766:1): initialized
[    0.837558] bounce pool size: 64 pages
[    0.837578] HugeTLB registered 4 MB page size, pre-allocated 0 pages
[    0.843189] msgmni has been set to 1760
[    0.843903] Block layer SCSI generic (bsg) driver version 0.4 loaded (major 251)
[    0.843919] io scheduler noop registered
[    0.843928] io scheduler deadline registered
[    0.844106] io scheduler cfq registered (default)
[    0.844447] intel_idle: MWAIT substates: 0x33000020
[    0.844452] intel_idle: v0.4 model 0x37
[    0.844457] intel_idle: lapic_timer_reliable_states 0xffffffff
[    0.852001] ACPI: AC Adapter [ADP1] (on-line)
[    0.852326] input: Power Button as /devices/LNXSYSTM:00/LNXPWRBN:00/input/input0
[    0.852347] ACPI: Power Button [PWRF]
[    0.852359] ACPI Warning: Could not enable fixed event - PowerButton (2) (20140214/evxface-628)
[    0.858350] button: probe of LNXPWRBN:00 failed with error -22
[    0.864025] [Firmware Bug]: No valid trip found
[    0.864273] Serial: 8250/16550 driver, 4 ports, IRQ sharing enabled
[    0.884668] 00:04: ttyS0 at I/O 0x3f8 (irq = 4, base_baud = 115200) is a 16550A
[    0.885698] 80860F0A:00: ttyS1 at MMIO 0x9091d000 (irq = 39, base_baud = 2764800) is a 16550A
[    0.885954] 80860F0A:01: ttyS2 at MMIO 0x9091f000 (irq = 40, base_baud = 2764800) is a 16550A
[    0.886308] hpet: number irqs doesn't agree with number of timers
[    0.886438] Non-volatile memory driver v1.3
[    0.886514] [drm] Initialized drm 1.1.0 20060810
[    0.888432] [drm] Memory usable by graphics device = 2048M
[    0.893120] ACPI: \_SB_.PCI0.GFX0: Error attaching device data 7
[    0.893372] ACPI: \_SB_.PCI0.GFX0: Error attaching device data 7
[    0.893636] ACPI: \_SB_.PCI0.GFX0: Error attaching device data 7
[    0.893887] ACPI: \_SB_.PCI0.GFX0: Error attaching device data 7
[    0.894138] ACPI: \_SB_.PCI0.GFX0: Error attaching device data 7
[    0.896821] i915 0000:00:02.0: irq 103 for MSI/MSI-X
[    0.896839] [drm] Supports vblank timestamp caching Rev 2 (21.10.2013).
[    0.896849] [drm] Driver supports precise vblank timestamp query.
[    0.949327] vgaarb: device changed decodes: PCI:0000:00:02.0,olddecodes=io+mem,decodes=io+mem:owns=io+mem
[    0.950125] ACPI: \_SB_.PCI0.GFX0: Error attaching device data 7
[    0.950523] ACPI: \_SB_.PCI0.GFX0: Error attaching device data 7
[    1.478205] [drm] forcing HDMI-A-1 connector ON
[    1.554441] [drm] GMBUS [i915 gmbus vga] timed out, falling back to bit banging on pin 2
[    1.575805] [drm] Got external EDID base block and 0 extensions from "edid/1200x1920.bin" for connector "HDMI-A-1"
[    1.722033] [drm] GMBUS [i915 gmbus dpc] timed out, falling back to bit banging on pin 4
[    1.818338] fbcon: inteldrmfb (fb0) is primary device
[    1.955080] Switched to clocksource tsc
[    2.331727] Console: switching to colour frame buffer device 150x120
[    2.365253] i915 0000:00:02.0: fb0: inteldrmfb frame buffer device
[    2.365400] i915 0000:00:02.0: registered panic notifier
[    2.369617] ACPI: Video Device [GFX0] (multi-head: yes  rom: no  post: no)
[    2.371353] acpi device:1a: registered as cooling_device4
[    2.372792] acpi device:21: registered as cooling_device5
[    2.373108] input: Video Bus as /devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A08:00/LNXVIDEO:00/input/input1
[    2.373395] [drm] Initialized i915 1.6.0 20080730 for 0000:00:02.0 on minor 0
[    2.373911] brd: module loaded
[    2.374464] loop: module loaded
[    2.375205] xhci_hcd 0000:00:14.0: xHCI Host Controller
[    2.375451] xhci_hcd 0000:00:14.0: new USB bus registered, assigned bus number 1
[    2.375778] xhci_hcd 0000:00:14.0: cache line size of 64 is not supported
[    2.375815] xhci_hcd 0000:00:14.0: irq 104 for MSI/MSI-X
[    2.375961] usb usb1: New USB device found, idVendor=1d6b, idProduct=0002
[    2.376124] usb usb1: New USB device strings: Mfr=3, Product=2, SerialNumber=1
[    2.376295] usb usb1: Product: xHCI Host Controller
[    2.376412] usb usb1: Manufacturer: Linux 3.15.0-rc5-Inari xhci_hcd
[    2.376568] usb usb1: SerialNumber: 0000:00:14.0
[    2.376973] hub 1-0:1.0: USB hub found
[    2.377087] hub 1-0:1.0: 6 ports detected
[    2.378757] xhci_hcd 0000:00:14.0: xHCI Host Controller
[    2.378979] xhci_hcd 0000:00:14.0: new USB bus registered, assigned bus number 2
[    2.379241] usb usb2: New USB device found, idVendor=1d6b, idProduct=0003
[    2.379405] usb usb2: New USB device strings: Mfr=3, Product=2, SerialNumber=1
[    2.379583] usb usb2: Product: xHCI Host Controller
[    2.379702] usb usb2: Manufacturer: Linux 3.15.0-rc5-Inari xhci_hcd
[    2.379850] usb usb2: SerialNumber: 0000:00:14.0
[    2.380239] hub 2-0:1.0: USB hub found
[    2.380351] hub 2-0:1.0: 1 port detected
[    2.380860] usbcore: registered new interface driver usb-storage
[    2.381142] i8042: PNP: No PS/2 controller found. Probing ports directly.
[    3.425347] i8042: No controller found
[    3.425565] mousedev: PS/2 mouse device common for all mice
[    3.425675] [drm] Enabling RC6 states: RC6 off, RC6p off, RC6pp off
[    3.426041] ACPI Warning: Could not enable fixed event - RealTimeClock (4) (20140214/evxface-628)
[    3.426464] rtc_cmos 00:00: rtc core: registered rtc_cmos as rtc0
[    3.426649] rtc_cmos 00:00: alarms up to one day, 242 bytes nvram
[    3.426883] i2c /dev entries driver
[    3.428313] Intel P-state driver initializing.
[    3.428446] Intel pstate controlling: cpu 0
[    3.428587] Intel pstate controlling: cpu 1
[    3.428725] Intel pstate controlling: cpu 2
[    3.428886] Intel pstate controlling: cpu 3
[    3.429124] sdhci: Secure Digital Host Controller Interface driver
[    3.429272] sdhci: Copyright(c) Pierre Ossman
[    3.430578] mmc0: no vqmmc regulator found
[    3.430681] mmc0: no vmmc regulator found
[    3.431936] mmc0: SDHCI controller on ACPI [80860F14:00] using ADMA
[    3.433476] mmc1: no vqmmc regulator found
[    3.433579] mmc1: no vmmc regulator found
[    3.434830] mmc1: SDHCI controller on ACPI [INT33BB:00] using ADMA
[    3.435453] sdhci-acpi 80860F14:01: failed to setup card detect gpio
[    3.436623] mmc2: no vqmmc regulator found
[    3.436724] mmc2: no vmmc regulator found
[    3.437966] mmc2: SDHCI controller on ACPI [80860F14:01] using ADMA
[    3.438148] sdhci-pltfm: SDHCI platform and OF driver helper
[    3.438273] EFI Variables Facility v0.08 2004-May-17
[    3.448100] hidraw: raw HID events driver (C) Jiri Kosina
[    3.448546] usbcore: registered new interface driver usbhid
[    3.448660] usbhid: USB HID core driver
[    3.449146] TCP: cubic registered
[    3.449218] Initializing XFRM netlink socket
[    3.449576] NET: Registered protocol family 10
[    3.450087] sit: IPv6 over IPv4 tunneling driver
[    3.450438] NET: Registered protocol family 17
[    3.450890] Using IPI No-Shortcut mode
[    3.451197] registered taskstats version 1
[    3.451596]   Magic number: 14:324:658
[    3.451761] console [netcon0] enabled
[    3.451837] netconsole: network logging started
[    3.452124] PM: Hibernation image not present or could not be loaded.
[    3.452133] ALSA device list:
[    3.452195]   No soundcards found.
[    3.452325] Warning: unable to open an initial console.
[    3.458742] Freeing unused kernel memory: 12092K (c1750000 - c231f000)
[    3.472576] udevd[949]: starting version 173
[    3.545752] mmc0: BKOPS_EN bit is not set
[    3.622230] mmc0: new HS200 MMC card at address 0001
[    3.624057] mmcblk0: mmc0:0001 HCG8e\x04 58.2 GiB 
[    3.624598] mmcblk0boot0: mmc0:0001 HCG8e\x04 partition 1 4.00 MiB
[    3.624750] mmcblk0boot1: mmc0:0001 HCG8e\x04 partition 2 4.00 MiB
[    3.625057] mmcblk0rpmb: mmc0:0001 HCG8e\x04 partition 3 4.00 MiB
[    3.625994]  mmcblk0: p1 p2
[    3.630611]  mmcblk0boot1: unknown partition table
[    3.633735]  mmcblk0boot0:
[    3.640096] usb 2-1: new SuperSpeed USB device number 2 using xhci_hcd
[    3.651068] usb 2-1: New USB device found, idVendor=0451, idProduct=8046
[    3.651186] usb 2-1: New USB device strings: Mfr=0, Product=0, SerialNumber=0
[    3.651671] hub 2-1:1.0: USB hub found
[    3.651758] hub 2-1:1.0: 4 ports detected
[    3.779948] usb 1-1: new high-speed USB device number 2 using xhci_hcd
[    3.943266] usb 1-1: New USB device found, idVendor=0451, idProduct=8044
[    3.969159] usb 1-1: New USB device strings: Mfr=0, Product=0, SerialNumber=1
[    3.994984] usb 1-1: SerialNumber: 420208698DA1
[    4.021771] hub 1-1:1.0: USB hub found
[    4.047612] hub 1-1:1.0: 4 ports detected
[    4.094961] Clocksource tsc unstable (delta = 139070527 ns)
[    4.120773] Switched to clocksource refined-jiffies
[    4.143425] usb 1-3: new high-speed USB device number 3 using xhci_hcd
[    4.235688] usb 1-3: New USB device found, idVendor=12d1, idProduct=1570
[    4.262187] usb 1-3: New USB device strings: Mfr=5, Product=4, SerialNumber=0
[    4.288823] usb 1-3: Product: HUAWEI Mobile Broadband Module
[    4.315372] usb 1-3: Manufacturer: Huawei Technologies Co., Ltd.
[    4.454809] usb 1-4: new high-speed USB device number 4 using xhci_hcd
[    4.615088] usb 1-4: New USB device found, idVendor=0951, idProduct=1603
[    4.641469] usb 1-4: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[    4.667779] usb 1-4: Product: DataTraveler 2.0
[    4.694205] usb 1-4: Manufacturer: Kingston
[    4.720492] usb 1-4: SerialNumber: 89900000000000000000017E
[    4.747830] usb-storage 1-4:1.0: USB Mass Storage device detected
[    4.774449] scsi0 : usb-storage 1-4:1.0
[    4.833239] usb 1-1.1: new low-speed USB device number 5 using xhci_hcd
[    4.904523] usb 1-1.1: New USB device found, idVendor=046d, idProduct=c03e
[    4.930590] usb 1-1.1: New USB device strings: Mfr=1, Product=2, SerialNumber=0
[    4.956550] usb 1-1.1: Product: USB-PS/2 Optical Mouse
[    4.982418] usb 1-1.1: Manufacturer: Logitech
[    5.008663] usb 1-1.1: ep 0x81 - rounding interval to 64 microframes, ep desc says 80 microframes
[    5.039453] input: Logitech USB-PS/2 Optical Mouse as /devices/pci0000:00/0000:00:14.0/usb1/1-1/1-1.1/1-1.1:1.0/0003:046D:C03E.0001/input/input2
[    5.067114] hid-generic 0003:046D:C03E.0001: input,hidraw0: USB HID v1.10 Mouse [Logitech USB-PS/2 Optical Mouse] on usb-0000:00:14.0-1.1/input0
[    5.132430] usb 1-1.2: new high-speed USB device number 6 using xhci_hcd
[    5.203734] usb 1-1.2: New USB device found, idVendor=0424, idProduct=7500
[    5.230739] usb 1-1.2: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[    5.257917] usb 1-1.2: Product: LAN7500
[    5.284761] usb 1-1.2: Manufacturer: SMSC
[    5.311315] usb 1-1.2: SerialNumber: 00800f11700e
[    5.381679] usb 1-1.3: new low-speed USB device number 7 using xhci_hcd
[    5.462341] usb 1-1.3: New USB device found, idVendor=046d, idProduct=c312
[    5.489081] usb 1-1.3: New USB device strings: Mfr=1, Product=2, SerialNumber=0
[    5.515839] usb 1-1.3: Product: USB Multimedia Keyboard
[    5.542443] usb 1-1.3: Manufacturer: LITEON Technology
[    5.569572] usb 1-1.3: ep 0x81 - rounding interval to 128 microframes, ep desc says 192 microframes
[    5.600996] input: LITEON Technology USB Multimedia Keyboard as /devices/pci0000:00/0000:00:14.0/usb1/1-1/1-1.3/1-1.3:1.0/0003:046D:C312.0002/input/input3
[    5.656590] hid-generic 0003:046D:C312.0002: input,hidraw1: USB HID v1.10 Keyboard [LITEON Technology USB Multimedia Keyboard] on usb-0000:00:14.0-1.3/input0
[    5.768892] scsi 0:0:0:0: Direct-Access     Kingston DataTraveler 2.0 1.00 PQ: 0 ANSI: 2
[    5.799079] sd 0:0:0:0: [sda] 7856128 512-byte logical blocks: (4.02 GB/3.74 GiB)
[    5.799096] sd 0:0:0:0: Attached scsi generic sg0 type 0
[    5.857532] sd 0:0:0:0: [sda] Write Protect is off
[    5.886444] sd 0:0:0:0: [sda] Mode Sense: 23 00 00 00
[    5.886816] sd 0:0:0:0: [sda] No Caching mode page found
[    5.915622] sd 0:0:0:0: [sda] Assuming drive cache: write through
[    5.947408]  sda: sda1 sda2
[    5.986433] sd 0:0:0:0: [sda] Attached SCSI removable disk
[    6.043333] EXT4-fs (sda2): couldn't mount as ext3 due to feature incompatibilities
[    6.076814] EXT4-fs (sda2): couldn't mount as ext2 due to feature incompatibilities
[    6.119661] EXT4-fs (sda2): mounted filesystem with ordered data mode. Opts: (null)
[    6.280069] random: nonblocking pool is initialized
[    7.357011] udevd[1689]: starting version 173
[    7.477008] sst-acpi 80860F28:00: Direct firmware load failed with error -2
[    7.484948] sst-acpi 80860F28:00: Falling back to user helper
[    7.577743] sst-acpi 80860F28:00: Cannot load firmware intel/fw_sst_0f28.bin-i2s_master
[    7.586076] byt-rt5640 byt-rt5640: ASoC: CPU DAI Front-cpu-dai not registered
[    7.592798] smsc75xx v1.0.0
[    7.601973] platform byt-rt5640: Driver byt-rt5640 requests probe deferral
[    7.629938] smsc75xx 1-1.2:1.0 eth0: register 'smsc75xx' at usb-0000:00:14.0-1.2, smsc75xx USB 2.0 Gigabit Ethernet, 70:2f:97:00:22:4f
[    7.660544] usbcore: registered new interface driver smsc75xx
[    7.660554] byt-rt5640 byt-rt5640: ASoC: CPU DAI Front-cpu-dai not registered
[    7.660598] platform byt-rt5640: Driver byt-rt5640 requests probe deferral
[   15.786357] mmc0: Got data interrupt 0x00000002 even though no data operation was in progress.
[   15.819492] mmcblk0rpmb: error -110 transferring data, sector 8064, nr 8, cmd response 0x900, card status 0xb00
[   15.850882] mmcblk0rpmb: retrying using single block read
[   15.884298] mmcblk0rpmb: timed out sending r/w cmd command, card status 0x400900
[   15.917928] mmcblk0rpmb: timed out sending r/w cmd command, card status 0x400900
[   15.951471] mmcblk0rpmb: timed out sending r/w cmd command, card status 0x400900
[   15.984802] mmcblk0rpmb: timed out sending r/w cmd command, card status 0x400900
[   16.017890] mmcblk0rpmb: timed out sending r/w cmd command, card status 0x400900
[   16.050737] mmcblk0rpmb: timed out sending r/w cmd command, card status 0x400900
[   16.081372] end_request: I/O error, dev mmcblk0rpmb, sector 8064
[   16.112006] Buffer I/O error on device mmcblk0rpmb, logical block 1008
[   24.373945] mmc0: Got data interrupt 0x00000002 even though no data operation was in progress.
[   24.407032] mmcblk0rpmb: error -110 transferring data, sector 8064, nr 8, cmd response 0x900, card status 0xb00
[   24.438318] mmcblk0rpmb: retrying using single block read
[   24.471644] mmcblk0rpmb: timed out sending r/w cmd command, card status 0x400900
[   24.505126] mmcblk0rpmb: timed out sending r/w cmd command, card status 0x400900
[   24.538515] mmcblk0rpmb: timed out sending r/w cmd command, card status 0x400900
[   24.571758] mmcblk0rpmb: timed out sending r/w cmd command, card status 0x400900
[   24.604838] mmcblk0rpmb: timed out sending r/w cmd command, card status 0x400900
[   24.637751] mmcblk0rpmb: timed out sending r/w cmd command, card status 0x400900
[   24.668398] end_request: I/O error, dev mmcblk0rpmb, sector 8064
[   24.699120] Buffer I/O error on device mmcblk0rpmb, logical block 1008
[   32.940422] mmc0: Got data interrupt 0x00000002 even though no data operation was in progress.
[   32.973781] mmcblk0rpmb: error -110 transferring data, sector 0, nr 16, cmd response 0x900, card status 0xb00
[   33.005431] mmcblk0rpmb: retrying using single block read
[   33.039167] mmcblk0rpmb: timed out sending r/w cmd command, card status 0x400900
[   33.073116] mmcblk0rpmb: timed out sending r/w cmd command, card status 0x400900
[   33.106965] mmcblk0rpmb: timed out sending r/w cmd command, card status 0x400900
[   33.140652] mmcblk0rpmb: timed out sending r/w cmd command, card status 0x400900
[   33.174081] mmcblk0rpmb: timed out sending r/w cmd command, card status 0x400900
[   33.207244] mmcblk0rpmb: timed out sending r/w cmd command, card status 0x400900
[   33.238143] end_request: I/O error, dev mmcblk0rpmb, sector 0
[   33.269079] Buffer I/O error on device mmcblk0rpmb, logical block 0
[   33.300138] end_request: I/O error, dev mmcblk0rpmb, sector 8
[   33.331221] Buffer I/O error on device mmcblk0rpmb, logical block 1
[   41.566672] mmc0: Got data interrupt 0x00000002 even though no data operation was in progress.
[   41.600468] mmcblk0rpmb: error -110 transferring data, sector 0, nr 8, cmd response 0x900, card status 0xb00
[   41.632451] mmcblk0rpmb: retrying using single block read
[   41.666526] mmcblk0rpmb: timed out sending r/w cmd command, card status 0x400900
[   41.700864] mmcblk0rpmb: timed out sending r/w cmd command, card status 0x400900
[   41.734945] mmcblk0rpmb: timed out sending r/w cmd command, card status 0x400900
[   41.768811] mmcblk0rpmb: timed out sending r/w cmd command, card status 0x400900
[   41.802498] mmcblk0rpmb: timed out sending r/w cmd command, card status 0x400900
[   41.835947] mmcblk0rpmb: timed out sending r/w cmd command, card status 0x400900
[   41.867201] end_request: I/O error, dev mmcblk0rpmb, sector 0
[   41.898423] Buffer I/O error on device mmcblk0rpmb, logical block 0
[   45.972615] IPv6: ADDRCONF(NETDEV_UP): eth0: link is not ready
[   47.603164] IPv6: ADDRCONF(NETDEV_CHANGE): eth0: link becomes ready
[   47.634111] smsc75xx 1-1.2:1.0 eth0: link up, 100Mbps, full-duplex, lpa 0x45E1
[   47.668901] smsc75xx 1-1.2:1.0 eth0: link up, 100Mbps, full-duplex, lpa 0x45E1

=2D-nextPart9796051.zhVmkHVF2l--
This is a multi-part message in MIME format.

[-- Attachment #1.2: Type: text/plain, Size: 1727 bytes --]

Am Donnerstag, 15. Mai 2014, 22:49:37 schrieb Lan Tianyu:
> On 05/15/2014 03:50 PM, Rolf Eike Beer wrote:
> > Lan Tianyu wrote:
> >> On 05/13/2014 09:09 PM, Rolf Eike Beer wrote:
> >>> Am Montag, 28. April 2014, 22:27:39 schrieb Lan Tianyu:
> >>>> ACPI 5.0 spec(5.5.2.4.5) defines GenericSerialBus(i2c, spi, uart)
> >>>> operation
> >>>> region. It allows ACPI aml code able to access such kind of devices to
> >>>> implement some ACPI standard method.
> >>>> 
> >>>> On the Asus T100TA, Bios use GenericSerialBus operation region to
> >>>> access
> >>>> i2c device to get battery info. So battery function depends on the I2C
> >>>> operation region support. Here is the bug link.
> >>>> https://bugzilla.kernel.org/show_bug.cgi?id=69011
> >>> 
> >>> Hi all,
> >>> 
> >>> I have tested this series and got some errors, but no additional
> > 
> > functionality:
> >> Hi Rolf:
> >> 	Thanks for test. Could you attach the output of dmesg and acpidump?
> >> 
> >> Which machine you are testing on?
> > 
> > Hi,
> > 
> > this is an Aava Inari 8 tablet (pre-release hardware). Please find the
> > DSDT
> > and the dmesg.log attached.
> > 
> > In case of any further questions don't hesitate to ask, I'll try to be
> > more
> > responsible.
> 
> Hi Eike:
> 	Could you apply the patch in the attachment and attach the output of
> 	dmesg?

Sure, here it is.

Regards,

Eike
-- 
Rolf Eike Beer, emlix GmbH, http://www.emlix.com
Fon +49 551 30664-0, Fax +49 551 30664-11
Bertha-von-Suttner-Str. 9, 37085 Göttingen, Germany
Sitz der Gesellschaft: Göttingen, Amtsgericht Göttingen HR B 3160
Geschäftsführung: Dr. Uwe Kracke, Ust-IdNr.: DE 205 198 055

emlix - smart embedded open source

[-- Attachment #1.3: dmesg.debug --]
[-- Type: text/plain, Size: 47664 bytes --]

[    0.000000] Initializing cgroup subsys cpuset
[    0.000000] Initializing cgroup subsys cpu
[    0.000000] Initializing cgroup subsys cpuacct
[    0.000000] Linux version 3.15.0-rc5-Inari (root@devpool02) (gcc version 4.8.2 (Emlix Linux Inari) ) #1 SMP Fri May 16 08:25:11 UTC 2014
[    0.000000] e820: BIOS-provided physical RAM map:
[    0.000000] BIOS-e820: [mem 0x0000000000000000-0x000000000008efff] usable
[    0.000000] BIOS-e820: [mem 0x000000000008f000-0x000000000008ffff] ACPI NVS
[    0.000000] BIOS-e820: [mem 0x0000000000090000-0x000000000009dfff] usable
[    0.000000] BIOS-e820: [mem 0x000000000009e000-0x000000000009ffff] reserved
[    0.000000] BIOS-e820: [mem 0x0000000000100000-0x000000001fffffff] usable
[    0.000000] BIOS-e820: [mem 0x0000000020000000-0x00000000200fffff] reserved
[    0.000000] BIOS-e820: [mem 0x0000000020100000-0x0000000078345fff] usable
[    0.000000] BIOS-e820: [mem 0x0000000078346000-0x0000000078c45fff] reserved
[    0.000000] BIOS-e820: [mem 0x0000000078c46000-0x0000000078d45fff] ACPI NVS
[    0.000000] BIOS-e820: [mem 0x0000000078d46000-0x0000000078d85fff] ACPI data
[    0.000000] BIOS-e820: [mem 0x0000000078d86000-0x00000000794c7fff] usable
[    0.000000] BIOS-e820: [mem 0x00000000794c8000-0x0000000079dc7fff] ACPI NVS
[    0.000000] BIOS-e820: [mem 0x0000000079dc8000-0x0000000079ffffff] usable
[    0.000000] BIOS-e820: [mem 0x00000000e00f8000-0x00000000e00f8fff] reserved
[    0.000000] BIOS-e820: [mem 0x00000000fed01000-0x00000000fed01fff] reserved
[    0.000000] BIOS-e820: [mem 0x00000000ffd00000-0x00000000ffffffff] reserved
[    0.000000] Notice: NX (Execute Disable) protection cannot be enabled: non-PAE kernel!
[    0.000000] efi: EFI v2.31 by INSYDE Corp.
[    0.000000] efi:  ACPI 2.0=0x78d85014  SMBIOS=0x78c45000 
[    0.000000] efi: mem00: type=7, attr=0xf, range=[0x0000000000000000-0x0000000000001000) (0MB)
[    0.000000] efi: mem01: type=2, attr=0xf, range=[0x0000000000001000-0x0000000000007000) (0MB)
[    0.000000] efi: mem02: type=7, attr=0xf, range=[0x0000000000007000-0x000000000008f000) (0MB)
[    0.000000] efi: mem03: type=10, attr=0xf, range=[0x000000000008f000-0x0000000000090000) (0MB)
[    0.000000] efi: mem04: type=7, attr=0xf, range=[0x0000000000090000-0x000000000009e000) (0MB)
[    0.000000] efi: mem05: type=0, attr=0xf, range=[0x000000000009e000-0x00000000000a0000) (0MB)
[    0.000000] efi: mem06: type=7, attr=0xf, range=[0x0000000000100000-0x0000000001000000) (15MB)
[    0.000000] efi: mem07: type=2, attr=0xf, range=[0x0000000001000000-0x000000000257f000) (21MB)
[    0.000000] efi: mem08: type=7, attr=0xf, range=[0x000000000257f000-0x0000000020000000) (474MB)
[    0.000000] efi: mem09: type=0, attr=0xf, range=[0x0000000020000000-0x0000000020100000) (1MB)
[    0.000000] efi: mem10: type=7, attr=0xf, range=[0x0000000020100000-0x0000000071dc0000) (1308MB)
[    0.000000] efi: mem11: type=4, attr=0xf, range=[0x0000000071dc0000-0x0000000071de0000) (0MB)
[    0.000000] efi: mem12: type=7, attr=0xf, range=[0x0000000071de0000-0x0000000072bca000) (13MB)
[    0.000000] efi: mem13: type=2, attr=0xf, range=[0x0000000072bca000-0x0000000072bcc000) (0MB)
[    0.000000] efi: mem14: type=1, attr=0xf, range=[0x0000000072bcc000-0x0000000073b46000) (15MB)
[    0.000000] efi: mem15: type=7, attr=0xf, range=[0x0000000073b46000-0x0000000076a92000) (47MB)
[    0.000000] efi: mem16: type=4, attr=0xf, range=[0x0000000076a92000-0x00000000774ec000) (10MB)
[    0.000000] efi: mem17: type=7, attr=0xf, range=[0x00000000774ec000-0x00000000774f9000) (0MB)
[    0.000000] efi: mem18: type=4, attr=0xf, range=[0x00000000774f9000-0x0000000077d46000) (8MB)
[    0.000000] efi: mem19: type=7, attr=0xf, range=[0x0000000077d46000-0x0000000078161000) (4MB)
[    0.000000] efi: mem20: type=3, attr=0xf, range=[0x0000000078161000-0x0000000078346000) (1MB)
[    0.000000] efi: mem21: type=5, attr=0x800000000000000f, range=[0x0000000078346000-0x0000000078546000) (2MB)
[    0.000000] efi: mem22: type=6, attr=0x800000000000000f, range=[0x0000000078546000-0x0000000078846000) (3MB)
[    0.000000] efi: mem23: type=0, attr=0xf, range=[0x0000000078846000-0x0000000078c46000) (4MB)
[    0.000000] efi: mem24: type=10, attr=0xf, range=[0x0000000078c46000-0x0000000078d46000) (1MB)
[    0.000000] efi: mem25: type=9, attr=0xf, range=[0x0000000078d46000-0x0000000078d86000) (0MB)
[    0.000000] efi: mem26: type=4, attr=0xf, range=[0x0000000078d86000-0x00000000794c8000) (7MB)
[    0.000000] efi: mem27: type=10, attr=0xf, range=[0x00000000794c8000-0x0000000079dc8000) (9MB)
[    0.000000] efi: mem28: type=4, attr=0xf, range=[0x0000000079dc8000-0x000000007a000000) (2MB)
[    0.000000] efi: mem29: type=11, attr=0x8000000000000001, range=[0x00000000e00f8000-0x00000000e00f9000) (0MB)
[    0.000000] efi: mem30: type=11, attr=0x8000000000000000, range=[0x00000000fed01000-0x00000000fed02000) (0MB)
[    0.000000] efi: mem31: type=11, attr=0x8000000000000000, range=[0x00000000ffd00000-0x0000000100000000) (3MB)
[    0.000000] SMBIOS 2.7 present.
[    0.000000] DMI: Aava Mobile Oy Inari 8 2GB/Type2 - Board Product Name, BIOS BYT.5.03.47.0033-022 01/16/2014
[    0.000000] e820: update [mem 0x00000000-0x00000fff] usable ==> reserved
[    0.000000] e820: remove [mem 0x000a0000-0x000fffff] usable
[    0.000000] e820: last_pfn = 0x7a000 max_arch_pfn = 0x100000
[    0.000000] MTRR default type: uncachable
[    0.000000] MTRR fixed ranges enabled:
[    0.000000]   00000-9FFFF write-back
[    0.000000]   A0000-FFFFF write-protect
[    0.000000] MTRR variable ranges enabled:
[    0.000000]   0 base 0FFD00000 mask FFFC00000 write-protect
[    0.000000]   1 base 000000000 mask FC0000000 write-back
[    0.000000]   2 base 040000000 mask FE0000000 write-back
[    0.000000]   3 base 060000000 mask FF0000000 write-back
[    0.000000]   4 base 070000000 mask FF8000000 write-back
[    0.000000]   5 base 078000000 mask FFC000000 write-back
[    0.000000]   6 base 07B000000 mask FFF000000 uncachable
[    0.000000]   7 base 07AE00000 mask FFFE00000 uncachable
[    0.000000] x86 PAT enabled: cpu 0, old 0x7040600070406, new 0x7010600070106
[    0.000000] Scanning 1 areas for low memory corruption
[    0.000000] initial memory mapped: [mem 0x00000000-0x027fffff]
[    0.000000] Base memory trampoline at [c009a000] 9a000 size 16384
[    0.000000] init_memory_mapping: [mem 0x00000000-0x000fffff]
[    0.000000]  [mem 0x00000000-0x000fffff] page 4k
[    0.000000] init_memory_mapping: [mem 0x37000000-0x373fffff]
[    0.000000]  [mem 0x37000000-0x373fffff] page 2M
[    0.000000] init_memory_mapping: [mem 0x30000000-0x36ffffff]
[    0.000000]  [mem 0x30000000-0x36ffffff] page 2M
[    0.000000] init_memory_mapping: [mem 0x00100000-0x1fffffff]
[    0.000000]  [mem 0x00100000-0x003fffff] page 4k
[    0.000000]  [mem 0x00400000-0x1fffffff] page 2M
[    0.000000] init_memory_mapping: [mem 0x20100000-0x2fffffff]
[    0.000000]  [mem 0x20100000-0x203fffff] page 4k
[    0.000000]  [mem 0x20400000-0x2fffffff] page 2M
[    0.000000] BRK [0x02464000, 0x02464fff] PGTABLE
[    0.000000] init_memory_mapping: [mem 0x37400000-0x377fdfff]
[    0.000000]  [mem 0x37400000-0x377fdfff] page 4k
[    0.000000] BRK [0x02465000, 0x02465fff] PGTABLE
[    0.000000] ACPI: RSDP 0x78D85014 000024 (v02 INSYDE)
[    0.000000] ACPI: XSDT 0x78D61188 0000D4 (v01 INSYDE INSYDE   00000003      01000013)
[    0.000000] ACPI: FACP 0x78D7F000 00010C (v05 INSYDE INSYDE   00000003 ACPI 00040000)
[    0.000000] ACPI: DSDT 0x78D6E000 00BAEC (v02 INSYDE INSYDE   00000003 ACPI 00040000)
[    0.000000] ACPI: UEFI 0x78D84000 000236 (v01 INSYDE INSYDE   00000001 ACPI 00040000)
[    0.000000] ACPI: TCPA 0x78D83000 000032 (v02 INSYDE INSYDE   00000000 ACPI 00040000)
[    0.000000] ACPI: UEFI 0x78D81000 000042 (v01 INSYDE INSYDE   00000000 ACPI 00040000)
[    0.000000] ACPI: DBG2 0x78D80000 000072 (v00 INSYDE INSYDE   00000003 ACPI 00040000)
[    0.000000] ACPI: HPET 0x78D7E000 000038 (v01 INSYDE INSYDE   00000003 ACPI 00040000)
[    0.000000] ACPI: LPIT 0x78D7D000 000104 (v01 INSYDE INSYDE   00000003 ACPI 00040000)
[    0.000000] ACPI: APIC 0x78D7C000 00006C (v03 INSYDE INSYDE   00000003 ACPI 00040000)
[    0.000000] ACPI: MCFG 0x78D7B000 00003C (v01 INSYDE INSYDE   00000003 ACPI 00040000)
[    0.000000] ACPI: SLIC 0x78D7A000 000176 (v01 INSYDE INSYDE   00000003 ACPI 00040000)
[    0.000000] ACPI: SSDT 0x78D6D000 0005FB (v01 INSYDE CpuDptf  00000003 ACPI 00040000)
[    0.000000] ACPI: SSDT 0x78D6B000 0018C2 (v01 INSYDE DptfTab  00000003 ACPI 00040000)
[    0.000000] ACPI: SSDT 0x78D6A000 000058 (v01 INSYDE LowPwrM  00000003 ACPI 00040000)
[    0.000000] ACPI: SSDT 0x78D69000 0000FF (v01 INSYDE SoCDptf  00000003 ACPI 00040000)
[    0.000000] ACPI: SSDT 0x78D68000 00043A (v01 INSYDE Tpm2Tabl 00001000 ACPI 00040000)
[    0.000000] ACPI: TPM2 0x78D67000 000034 (v03 INSYDE INSYDE   00000000 ACPI 00040000)
[    0.000000] ACPI: SSDT 0x78D66000 000763 (v01 INSYDE CpuPm    00003000 ACPI 00040000)
[    0.000000] ACPI: SSDT 0x78D65000 000290 (v01 INSYDE Cpu0Tst  00003000 ACPI 00040000)
[    0.000000] ACPI: SSDT 0x78D64000 00017A (v01 INSYDE ApTst    00003000 ACPI 00040000)
[    0.000000] ACPI: FPDT 0x78D63000 000044 (v01 INSYDE INSYDE   00000001 ACPI 00040000)
[    0.000000] ACPI: CSRT 0x78D62000 00014C (v00 INSYDE INSYDE   00000005 ACPI 00040000)
[    0.000000] ACPI: BGRT 0x78D60000 000038 (v01 INSYDE INSYDE   00000001 ACPI 00040000)
[    0.000000] ACPI: Local APIC address 0xfee00000
[    0.000000] 1064MB HIGHMEM available.
[    0.000000] 887MB LOWMEM available.
[    0.000000]   mapped low ram: 0 - 377fe000
[    0.000000]   low ram: 0 - 377fe000
[    0.000000] BRK [0x02466000, 0x02466fff] PGTABLE
[    0.000000] Zone ranges:
[    0.000000]   DMA      [mem 0x00001000-0x00ffffff]
[    0.000000]   Normal   [mem 0x01000000-0x377fdfff]
[    0.000000]   HighMem  [mem 0x377fe000-0x79ffffff]
[    0.000000] Movable zone start for each node
[    0.000000] Early memory node ranges
[    0.000000]   node   0: [mem 0x00001000-0x0008efff]
[    0.000000]   node   0: [mem 0x00090000-0x0009dfff]
[    0.000000]   node   0: [mem 0x00100000-0x1fffffff]
[    0.000000]   node   0: [mem 0x20100000-0x78345fff]
[    0.000000]   node   0: [mem 0x78d86000-0x794c7fff]
[    0.000000]   node   0: [mem 0x79dc8000-0x79ffffff]
[    0.000000] On node 0 totalpages: 494428
[    0.000000] free_area_init_node: node 0, pgdat c17401c0, node_mem_map f68be020
[    0.000000]   DMA zone: 32 pages used for memmap
[    0.000000]   DMA zone: 0 pages reserved
[    0.000000]   DMA zone: 3996 pages, LIFO batch:0
[    0.000000]   Normal zone: 1744 pages used for memmap
[    0.000000]   Normal zone: 222974 pages, LIFO batch:31
[    0.000000]   HighMem zone: 2129 pages used for memmap
[    0.000000]   HighMem zone: 267458 pages, LIFO batch:31
[    0.000000] Using APIC driver default
[    0.000000] x86/hpet: Will disable the HPET for this platform because it's not reliable
[    0.000000] Reserving Intel graphics stolen memory at 0x7af00000-0x7eefffff
[    0.000000] ACPI: Local APIC address 0xfee00000
[    0.000000] ACPI: LAPIC (acpi_id[0x01] lapic_id[0x00] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0x02] lapic_id[0x02] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0x03] lapic_id[0x04] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0x04] lapic_id[0x06] enabled)
[    0.000000] ACPI: IOAPIC (id[0x02] address[0xfec00000] gsi_base[0])
[    0.000000] IOAPIC[0]: apic_id 2, version 32, address 0xfec00000, GSI 0-86
[    0.000000] ACPI: INT_SRC_OVR (bus 0 bus_irq 0 global_irq 2 dfl dfl)
[    0.000000] ACPI: INT_SRC_OVR (bus 0 bus_irq 9 global_irq 9 high level)
[    0.000000] ACPI: IRQ0 used by override.
[    0.000000] ACPI: IRQ2 used by override.
[    0.000000] ACPI: IRQ9 used by override.
[    0.000000] Using ACPI (MADT) for SMP configuration information
[    0.000000] ACPI: HPET id: 0x8086a201 base: 0xfed00000
[    0.000000] smpboot: Allowing 4 CPUs, 0 hotplug CPUs
[    0.000000] nr_irqs_gsi: 103
[    0.000000] PM: Registered nosave memory: [mem 0x0008f000-0x0008ffff]
[    0.000000] PM: Registered nosave memory: [mem 0x0009e000-0x0009ffff]
[    0.000000] PM: Registered nosave memory: [mem 0x000a0000-0x000fffff]
[    0.000000] PM: Registered nosave memory: [mem 0x20000000-0x200fffff]
[    0.000000] e820: [mem 0x7ef00000-0xe00f7fff] available for PCI devices
[    0.000000] setup_percpu: NR_CPUS:4 nr_cpumask_bits:4 nr_cpu_ids:4 nr_node_ids:1
[    0.000000] PERCPU: Embedded 12 pages/cpu @f6882000 s27264 r0 d21888 u49152
[    0.000000] pcpu-alloc: s27264 r0 d21888 u49152 alloc=12*4096
[    0.000000] pcpu-alloc: [0] 0 [0] 1 [0] 2 [0] 3 
[    0.000000] Built 1 zonelists in Zone order, mobility grouping on.  Total pages: 492652
[    0.000000] Kernel command line: root=/dev/sda2 video=HDMI-A-1:1200x1920e drm_kms_helper.edid_firmware=HDMI-A-1:edid/1200x1920.bin 
[    0.000000] PID hash table entries: 4096 (order: 2, 16384 bytes)
[    0.000000] Dentry cache hash table entries: 131072 (order: 7, 524288 bytes)
[    0.000000] Inode-cache hash table entries: 65536 (order: 6, 262144 bytes)
[    0.000000] Initializing CPU#0
[    0.000000] Initializing HighMem for node 0 (000377fe:0007a000)
[    0.000000] Initializing Movable for node 0 (00000000:00000000)
[    0.000000] Memory: 1909220K/1977712K available (5505K kernel code, 331K rwdata, 1640K rodata, 12092K init, 1236K bss, 68492K reserved, 1038956K highmem)
[    0.000000] virtual kernel memory layout:
[    0.000000]     fixmap  : 0xfff66000 - 0xfffff000   ( 612 kB)
[    0.000000]     pkmap   : 0xff800000 - 0xffc00000   (4096 kB)
[    0.000000]     vmalloc : 0xf7ffe000 - 0xff7fe000   ( 120 MB)
[    0.000000]     lowmem  : 0xc0000000 - 0xf77fe000   ( 887 MB)
[    0.000000]       .init : 0xc1750000 - 0xc231f000   (12092 kB)
[    0.000000]       .data : 0xc1560b12 - 0xc174efc0   (1977 kB)
[    0.000000]       .text : 0xc1000000 - 0xc1560b12   (5506 kB)
[    0.000000] Checking if this processor honours the WP bit even in supervisor mode...Ok.
[    0.000000] SLUB: HWalign=64, Order=0-3, MinObjects=0, CPUs=4, Nodes=1
[    0.000000] Hierarchical RCU implementation.
[    0.000000] NR_IRQS:2304 nr_irqs:1024 16
[    0.000000] CPU 0 irqstacks, hard=f600c000 soft=f600e000
[    0.000000] Console: colour dummy device 80x25
[    0.000000] console [tty0] enabled
[    0.000000] Maximum core-clock to bus-clock ratio: 0xa
[    0.000000] Resolved frequency ID: 2, frequency: 133200 KHz
[    0.000000] TSC runs at 1332000 KHz
[    0.000000] lapic_timer_frequency = 133200
[    0.000000] tsc: Detected 1332.000 MHz processor
[    0.000037] Calibrating delay loop (skipped), value calculated using timer frequency.. 2664.00 BogoMIPS (lpj=1332000)
[    0.000054] pid_max: default: 32768 minimum: 301
[    0.000071] ACPI: Core revision 20140214
[    0.044032] ACPI: All ACPI Tables successfully acquired
[    0.046878] Mount-cache hash table entries: 2048 (order: 1, 8192 bytes)
[    0.046898] Mountpoint-cache hash table entries: 2048 (order: 1, 8192 bytes)
[    0.047248] Initializing cgroup subsys freezer
[    0.047290] CPU: Physical Processor ID: 0
[    0.047300] CPU: Processor Core ID: 0
[    0.047311] ENERGY_PERF_BIAS: Set to 'normal', was 'performance'
[    0.047311] ENERGY_PERF_BIAS: View and update with x86_energy_perf_policy(8)
[    0.059441] mce: CPU supports 6 MCE banks
[    0.059460] CPU0: Thermal monitoring enabled (TM1)
[    0.059480] Last level iTLB entries: 4KB 48, 2MB 0, 4MB 0
[    0.059480] Last level dTLB entries: 4KB 128, 2MB 16, 4MB 16, 1GB 0
[    0.059480] tlb_flushall_shift: 6
[    0.059673] Freeing SMP alternatives memory: 20K (c231f000 - c2324000)
[    0.059708] ------------[ cut here ]------------
[    0.059727] WARNING: CPU: 0 PID: 0 at /tmp/e2/build/linux-git/mm/early_ioremap.c:136 __early_ioremap+0xee/0x1a6()
[    0.059739] Modules linked in:
[    0.059752] CPU: 0 PID: 0 Comm: swapper/0 Not tainted 3.15.0-rc5-Inari #1
[    0.059762] Hardware name: Aava Mobile Oy Inari 8 2GB/Type2 - Board Product Name, BIOS BYT.5.03.47.0033-022 01/16/2014
[    0.059775]  00000000 00000000 c16fdf0c c155483e 00000000 c16fdf3c c103d194 c164be20
[    0.059797]  00000000 00000000 c16539b8 00000088 c176cc03 c176cc03 00000042 77526000
[    0.059819]  00000000 c16fdf4c c103d22d 00000009 00000000 c16fdfa0 c176cc03 c1740ec0
[    0.059840] Call Trace:
[    0.059854]  [<c155483e>] dump_stack+0x41/0x52
[    0.059867]  [<c103d194>] warn_slowpath_common+0x74/0x90
[    0.059880]  [<c176cc03>] ? __early_ioremap+0xee/0x1a6
[    0.059892]  [<c176cc03>] ? __early_ioremap+0xee/0x1a6
[    0.059903]  [<c103d22d>] warn_slowpath_null+0x1d/0x20
[    0.059915]  [<c176cc03>] __early_ioremap+0xee/0x1a6
[    0.059928]  [<c10368df>] ? __native_set_fixmap+0x1f/0x30
[    0.059941]  [<c176ce70>] early_memremap+0xd/0xf
[    0.059953]  [<c1763743>] efi_bgrt_init+0xe6/0x129
[    0.059965]  [<c1763067>] efi_late_init+0x8/0xa
[    0.059978]  [<c1750a3b>] start_kernel+0x34f/0x35f
[    0.059990]  [<c1750523>] ? repair_env_string+0x51/0x51
[    0.060003]  [<c1750369>] i386_start_kernel+0x137/0x13a
[    0.060040] ---[ end trace 27ffb688a5381019 ]---
[    0.062989] Enabling APIC mode:  Flat.  Using 1 I/O APICs
[    0.064018] ..TIMER: vector=0x30 apic1=0 pin1=2 apic2=-1 pin2=-1
[    0.074045] ..MP-BIOS bug: 8254 timer not connected to IO-APIC
[    0.074054] ...trying to set up timer (IRQ0) through the 8259A ...
[    0.074063] ..... (found apic 0 pin 2) ...
[    0.084079] ....... works.
[    0.084087] smpboot: CPU0: Intel(R) Atom(TM) CPU  Z3745  @ 1.33GHz (fam: 06, model: 37, stepping: 08)
[    0.084126] TSC deadline timer enabled
[    0.084141] Performance Events: PEBS fmt2+, 8-deep LBR, Silvermont events, full-width counters, Intel PMU driver.
[    0.084168] ... version:                3
[    0.084176] ... bit width:              40
[    0.084183] ... generic registers:      2
[    0.084191] ... value mask:             000000ffffffffff
[    0.084199] ... max period:             000000ffffffffff
[    0.084207] ... fixed-purpose events:   3
[    0.084214] ... event mask:             0000000700000003
[    0.085792] CPU 1 irqstacks, hard=f60a6000 soft=f60b0000
[    0.085798] x86: Booting SMP configuration:
[    0.085809] .... node  #0, CPUs:      #1
[    0.095924] Initializing CPU#1
[    0.111134] CPU 2 irqstacks, hard=f60ba000 soft=f60bc000
[    0.111153]  #2
[    0.121206] Initializing CPU#2
[    0.136519] CPU 3 irqstacks, hard=f60c6000 soft=f60c8000
[    0.136533]  #3
[    0.146587] Initializing CPU#3
[    0.161772] x86: Booted up 1 node, 4 CPUs
[    0.161791] smpboot: Total of 4 processors activated (10656.00 BogoMIPS)
[    0.162741] devtmpfs: initialized
[    0.163227] PM: Registering ACPI NVS region [mem 0x0008f000-0x0008ffff] (4096 bytes)
[    0.163242] PM: Registering ACPI NVS region [mem 0x78c46000-0x78d45fff] (1048576 bytes)
[    0.163294] PM: Registering ACPI NVS region [mem 0x794c8000-0x79dc7fff] (9437184 bytes)
[    0.163841] pinctrl core: initialized pinctrl subsystem
[    0.163902] RTC time:  0:40:53, date: 05/16/14
[    0.163989] NET: Registered protocol family 16
[    0.164313] cpuidle: using governor ladder
[    0.164324] cpuidle: using governor menu
[    0.164398] ACPI: bus type PCI registered
[    0.164551] PCI: MMCONFIG for domain 0000 [bus 00-3f] at [mem 0xe0000000-0xe3ffffff] (base 0xe0000000)
[    0.164568] PCI: not using MMCONFIG
[    0.164920] PCI: Using configuration type 1 for base access
[    0.170069] ACPI: Added _OSI(Module Device)
[    0.170084] ACPI: Added _OSI(Processor Device)
[    0.170094] ACPI: Added _OSI(3.0 _SCP Extensions)
[    0.170103] ACPI: Added _OSI(Processor Aggregator Device)
[    0.204674] ACPI: SSDT 0x78BCAA90 000353 (v01 PmRef  Cpu0Ist  00003000 INTL 20130117)
[    0.206249] ACPI: Dynamic OEM Table Load:
[    0.206264] ACPI: SSDT 0x00000000 000353 (v01 PmRef  Cpu0Ist  00003000 INTL 20130117)
[    0.206799] ACPI: SSDT 0x78BC9910 000433 (v01 PmRef  Cpu0Cst  00003001 INTL 20130117)
[    0.208647] ACPI: Dynamic OEM Table Load:
[    0.208661] ACPI: SSDT 0x00000000 000433 (v01 PmRef  Cpu0Cst  00003001 INTL 20130117)
[    0.215236] ACPI: SSDT 0x78BCBD90 00015F (v01 PmRef  ApIst    00003000 INTL 20130117)
[    0.216837] ACPI: Dynamic OEM Table Load:
[    0.216851] ACPI: SSDT 0x00000000 00015F (v01 PmRef  ApIst    00003000 INTL 20130117)
[    0.219400] ACPI: SSDT 0x78BCBF10 00008D (v01 PmRef  ApCst    00003000 INTL 20130117)
[    0.220819] ACPI: Dynamic OEM Table Load:
[    0.220832] ACPI: SSDT 0x00000000 00008D (v01 PmRef  ApCst    00003000 INTL 20130117)
[    0.226624] ACPI: Interpreter enabled
[    0.226659] ACPI Exception: AE_NOT_FOUND, While evaluating Sleep State [\_S1_] (20140214/hwxface-580)
[    0.226683] ACPI Exception: AE_NOT_FOUND, While evaluating Sleep State [\_S2_] (20140214/hwxface-580)
[    0.226705] ACPI Exception: AE_NOT_FOUND, While evaluating Sleep State [\_S3_] (20140214/hwxface-580)
[    0.226726] ACPI Exception: AE_NOT_FOUND, While evaluating Sleep State [\_S4_] (20140214/hwxface-580)
[    0.226746] ACPI Exception: AE_NOT_FOUND, While evaluating Sleep State [\_S5_] (20140214/hwxface-580)
[    0.226764] ACPI: (supports S0)
[    0.226773] ACPI: Using IOAPIC for interrupt routing
[    0.226862] PCI: MMCONFIG for domain 0000 [bus 00-3f] at [mem 0xe0000000-0xe3ffffff] (base 0xe0000000)
[    0.234470] [Firmware Info]: PCI: MMCONFIG at [mem 0xe0000000-0xe3ffffff] not reserved in ACPI motherboard resources
[    0.234487] PCI: not using MMCONFIG
[    0.234540] PCI: Using host bridge windows from ACPI; if necessary, use "pci=nocrs" and report a bug
[    0.237741] ACPI: Power Resource [USBC] (on)
[    0.241990] ACPI: Power Resource [WWPR] (off)
[    0.252641] ACPI: Power Resource [PLPE] (on)
[    0.264429] ACPI: Power Resource [CLK0] (on)
[    0.264566] ACPI: Power Resource [CLK1] (on)
[    0.264924] ACPI: Power Resource [P28X] (off)
[    0.265067] ACPI: Power Resource [P18X] (off)
[    0.267582] ACPI: Power Resource [TCPR] (off)
[    0.274577] ACPI: PCI Root Bridge [PCI0] (domain 0000 [bus 00-ff])
[    0.274601] acpi PNP0A08:00: _OSC: OS supports [ASPM ClockPM Segments MSI]
[    0.274806] \_SB_.PCI0:_OSC invalid UUID
[    0.274811] _OSC request data:1 1e 0 
[    0.274824] acpi PNP0A08:00: _OSC failed (AE_ERROR); disabling ASPM
[    0.276129] acpi PNP0A08:00: fail to add MMCONFIG information, can't access extended PCI configuration space under this bridge.
[    0.276204] PCI host bridge to bus 0000:00
[    0.276218] pci_bus 0000:00: root bus resource [bus 00-ff]
[    0.276231] pci_bus 0000:00: root bus resource [io  0x0000-0x006f]
[    0.276242] pci_bus 0000:00: root bus resource [io  0x0078-0x0cf7]
[    0.276254] pci_bus 0000:00: root bus resource [io  0x0d00-0xffff]
[    0.276266] pci_bus 0000:00: root bus resource [mem 0x000a0000-0x000bffff]
[    0.276277] pci_bus 0000:00: root bus resource [mem 0x000c0000-0x000dffff]
[    0.276289] pci_bus 0000:00: root bus resource [mem 0x000e0000-0x000fffff]
[    0.276301] pci_bus 0000:00: root bus resource [mem 0x90c00000-0x90ffffff]
[    0.276313] pci_bus 0000:00: root bus resource [mem 0x7af00001-0x7ef00000]
[    0.276325] pci_bus 0000:00: root bus resource [mem 0x80000000-0x908ffffe]
[    0.276337] pci_bus 0000:00: root bus resource [mem 0xfed40000-0xfed40fff]
[    0.276361] pci 0000:00:00.0: [8086:0f00] type 00 class 0x060000
[    0.276562] pci 0000:00:02.0: [8086:0f31] type 00 class 0x030000
[    0.276588] pci 0000:00:02.0: reg 0x10: [mem 0x90000000-0x903fffff]
[    0.276607] pci 0000:00:02.0: reg 0x18: [mem 0x80000000-0x8fffffff pref]
[    0.276625] pci 0000:00:02.0: reg 0x20: [io  0x1000-0x1007]
[    0.276833] pci 0000:00:14.0: [8086:0f35] type 00 class 0x0c0330
[    0.276864] pci 0000:00:14.0: reg 0x10: [mem 0x90800000-0x9080ffff 64bit]
[    0.276943] pci 0000:00:14.0: PME# supported from D3hot D3cold
[    0.277123] pci 0000:00:1a.0: [8086:0f18] type 00 class 0x108000
[    0.277154] pci 0000:00:1a.0: reg 0x10: [mem 0x90700000-0x907fffff]
[    0.277171] pci 0000:00:1a.0: reg 0x14: [mem 0x90600000-0x906fffff]
[    0.277272] pci 0000:00:1a.0: PME# supported from D0 D3hot
[    0.277437] pci 0000:00:1f.0: [8086:0f1c] type 00 class 0x060100
[    0.277671] pci_bus 0000:00: on NUMA node 0
[    0.278783] ACPI: PCI Interrupt Link [LNKA] (IRQs 3 4 5 6 10 11 12 14 15) *0, disabled.
[    0.279101] ACPI: PCI Interrupt Link [LNKB] (IRQs 3 4 5 6 10 11 12 14 15) *0, disabled.
[    0.279417] ACPI: PCI Interrupt Link [LNKC] (IRQs 3 4 5 6 10 11 12 14 15) *0, disabled.
[    0.279746] ACPI: PCI Interrupt Link [LNKD] (IRQs 3 4 5 6 10 11 12 14 15) *0, disabled.
[    0.280062] ACPI: PCI Interrupt Link [LNKE] (IRQs 3 4 5 6 10 11 12 14 15) *0, disabled.
[    0.280378] ACPI: PCI Interrupt Link [LNKF] (IRQs 3 4 5 6 10 11 12 14 15) *0, disabled.
[    0.280706] ACPI: PCI Interrupt Link [LNKG] (IRQs 3 4 5 6 10 11 12 14 15) *0, disabled.
[    0.281031] ACPI: PCI Interrupt Link [LNKH] (IRQs 3 4 5 6 10 11 12 14 15) *0, disabled.
[    0.293311] dw_dmac INTL9C60:00: DesignWare DMA Controller, 8 channels
[    0.294019] dw_dmac INTL9C60:01: DesignWare DMA Controller, 8 channels
[    0.294793] vgaarb: device added: PCI:0000:00:02.0,decodes=io+mem,owns=io+mem,locks=none
[    0.294809] vgaarb: loaded
[    0.294817] vgaarb: bridge control possible 0000:00:02.0
[    0.295019] SCSI subsystem initialized
[    0.295037] ACPI: bus type USB registered
[    0.295110] usbcore: registered new interface driver usbfs
[    0.295156] usbcore: registered new interface driver hub
[    0.295258] usbcore: registered new device driver usb
[    0.302206] pps_core: LinuxPPS API ver. 1 registered
[    0.302219] pps_core: Software ver. 5.3.6 - Copyright 2005-2007 Rodolfo Giometti <giometti@linux.it>
[    0.302246] PTP clock support registered
[    0.302485] Advanced Linux Sound Architecture Driver Initialized.
[    0.302497] PCI: Using ACPI for IRQ routing
[    0.302507] PCI: pci_cache_line_size set to 64 bytes
[    0.302532] Expanded resource reserved due to conflict with PCI Bus 0000:00
[    0.302544] e820: reserve RAM buffer [mem 0x0008f000-0x0008ffff]
[    0.302549] e820: reserve RAM buffer [mem 0x0009e000-0x0009ffff]
[    0.302554] e820: reserve RAM buffer [mem 0x78346000-0x7bffffff]
[    0.302559] e820: reserve RAM buffer [mem 0x794c8000-0x7bffffff]
[    0.302564] e820: reserve RAM buffer [mem 0x7a000000-0x7bffffff]
[    0.303000] cfg80211: Calling CRDA to update world regulatory domain
[    0.303235] Switched to clocksource refined-jiffies
[    0.303367] pnp: PnP ACPI init
[    0.303389] ACPI: bus type PNP registered
[    0.303499] pnp 00:00: Plug and Play ACPI device, IDs PNP0b00 (active)
[    0.303670] pnp 00:01: Plug and Play ACPI device, IDs PNP0103 (active)
[    0.303776] pnp 00:02: Plug and Play ACPI device, IDs INT0800 (active)
[    0.303895] system 00:03: [io  0x0680-0x069f] has been reserved
[    0.303911] system 00:03: [io  0x0400-0x047f] has been reserved
[    0.303923] system 00:03: [io  0x0500-0x05fe] has been reserved
[    0.303935] system 00:03: [io  0x0600-0x061f] has been reserved
[    0.303947] system 00:03: [io  0x164e-0x164f] has been reserved
[    0.303961] system 00:03: Plug and Play ACPI device, IDs PNP0c02 (active)
[    0.304307] pnp 00:04: Plug and Play ACPI device, IDs PNP0501 (active)
[    0.305812] pnp 00:05: Plug and Play ACPI device, IDs INT0002 (active)
[    0.305988] pnp 00:06: Plug and Play ACPI device, IDs INT33fc (active)
[    0.306155] pnp 00:07: Plug and Play ACPI device, IDs INT33fc (active)
[    0.306328] pnp 00:08: Plug and Play ACPI device, IDs INT33fc (active)
[    0.307495] pnp 00:09: unknown resource type 19 in _CRS
[    0.307509] pnp 00:09: can't evaluate _CRS: 1
[    0.307579] pnp 00:09: Plug and Play ACPI device, IDs BCM2e3a (active)
[    0.314223] pnp 00:0a: unknown resource type 17 in _CRS
[    0.314237] pnp 00:0a: can't evaluate _CRS: 1
[    0.314321] pnp 00:0a: Plug and Play ACPI device, IDs INTcfd9 PNP0c40 (active)
[    0.314481] pnp 00:0b: Plug and Play ACPI device, IDs INT33bd (active)
[    0.314809] pnp 00:0c: Plug and Play ACPI device, IDs INT3401 (active)
[    0.315136] pnp 00:0d: unknown resource type 17 in _CRS
[    0.315150] pnp 00:0d: can't evaluate _CRS: 1
[    0.315224] pnp 00:0d: Plug and Play ACPI device, IDs INT3403 (active)
[    0.315362] pnp 00:0e: unknown resource type 17 in _CRS
[    0.315375] pnp 00:0e: can't evaluate _CRS: 1
[    0.315448] pnp 00:0e: Plug and Play ACPI device, IDs INT3403 (active)
[    0.315643] pnp 00:0f: unknown resource type 17 in _CRS
[    0.315656] pnp 00:0f: can't evaluate _CRS: 1
[    0.315730] pnp 00:0f: Plug and Play ACPI device, IDs INT3409 (active)
[    0.316029] pnp: PnP ACPI: found 16 devices
[    0.316040] ACPI: bus type PNP unregistered
[    0.321422] pci_bus 0000:00: resource 4 [io  0x0000-0x006f]
[    0.321433] pci_bus 0000:00: resource 5 [io  0x0078-0x0cf7]
[    0.321440] pci_bus 0000:00: resource 6 [io  0x0d00-0xffff]
[    0.321446] pci_bus 0000:00: resource 7 [mem 0x000a0000-0x000bffff]
[    0.321453] pci_bus 0000:00: resource 8 [mem 0x000c0000-0x000dffff]
[    0.321459] pci_bus 0000:00: resource 9 [mem 0x000e0000-0x000fffff]
[    0.321466] pci_bus 0000:00: resource 10 [mem 0x90c00000-0x90ffffff]
[    0.321472] pci_bus 0000:00: resource 11 [mem 0x7af00001-0x7ef00000]
[    0.321479] pci_bus 0000:00: resource 12 [mem 0x80000000-0x908ffffe]
[    0.321485] pci_bus 0000:00: resource 13 [mem 0xfed40000-0xfed40fff]
[    0.321549] NET: Registered protocol family 2
[    0.321890] TCP established hash table entries: 8192 (order: 3, 32768 bytes)
[    0.321938] TCP bind hash table entries: 8192 (order: 4, 65536 bytes)
[    0.322013] TCP: Hash tables configured (established 8192 bind 8192)
[    0.322056] TCP: reno registered
[    0.322068] UDP hash table entries: 512 (order: 2, 16384 bytes)
[    0.322090] UDP-Lite hash table entries: 512 (order: 2, 16384 bytes)
[    0.322183] NET: Registered protocol family 1
[    0.322218] pci 0000:00:02.0: Boot video device
[    0.322632] PCI: CLS 0 bytes, default 64
[    0.800023] microcode: CPU0 sig=0x30678, pf=0x2, revision=0x808
[    0.800048] microcode: CPU1 sig=0x30678, pf=0x2, revision=0x808
[    0.800075] microcode: CPU2 sig=0x30678, pf=0x2, revision=0x808
[    0.800104] microcode: CPU3 sig=0x30678, pf=0x2, revision=0x808
[    0.800208] microcode: Microcode Update Driver: v2.00 <tigran@aivazian.fsnet.co.uk>, Peter Oruba
[    0.800940] Scanning for low memory corruption every 60 seconds
[    0.801569] futex hash table entries: 1024 (order: 4, 65536 bytes)
[    0.801616] audit: initializing netlink subsys (disabled)
[    0.801648] audit: type=2000 audit(1400200853.766:1): initialized
[    0.837558] bounce pool size: 64 pages
[    0.837578] HugeTLB registered 4 MB page size, pre-allocated 0 pages
[    0.843189] msgmni has been set to 1760
[    0.843903] Block layer SCSI generic (bsg) driver version 0.4 loaded (major 251)
[    0.843919] io scheduler noop registered
[    0.843928] io scheduler deadline registered
[    0.844106] io scheduler cfq registered (default)
[    0.844447] intel_idle: MWAIT substates: 0x33000020
[    0.844452] intel_idle: v0.4 model 0x37
[    0.844457] intel_idle: lapic_timer_reliable_states 0xffffffff
[    0.852001] ACPI: AC Adapter [ADP1] (on-line)
[    0.852326] input: Power Button as /devices/LNXSYSTM:00/LNXPWRBN:00/input/input0
[    0.852347] ACPI: Power Button [PWRF]
[    0.852359] ACPI Warning: Could not enable fixed event - PowerButton (2) (20140214/evxface-628)
[    0.858350] button: probe of LNXPWRBN:00 failed with error -22
[    0.864025] [Firmware Bug]: No valid trip found
[    0.864273] Serial: 8250/16550 driver, 4 ports, IRQ sharing enabled
[    0.884668] 00:04: ttyS0 at I/O 0x3f8 (irq = 4, base_baud = 115200) is a 16550A
[    0.885698] 80860F0A:00: ttyS1 at MMIO 0x9091d000 (irq = 39, base_baud = 2764800) is a 16550A
[    0.885954] 80860F0A:01: ttyS2 at MMIO 0x9091f000 (irq = 40, base_baud = 2764800) is a 16550A
[    0.886308] hpet: number irqs doesn't agree with number of timers
[    0.886438] Non-volatile memory driver v1.3
[    0.886514] [drm] Initialized drm 1.1.0 20060810
[    0.888432] [drm] Memory usable by graphics device = 2048M
[    0.893120] ACPI: \_SB_.PCI0.GFX0: Error attaching device data 7
[    0.893372] ACPI: \_SB_.PCI0.GFX0: Error attaching device data 7
[    0.893636] ACPI: \_SB_.PCI0.GFX0: Error attaching device data 7
[    0.893887] ACPI: \_SB_.PCI0.GFX0: Error attaching device data 7
[    0.894138] ACPI: \_SB_.PCI0.GFX0: Error attaching device data 7
[    0.896821] i915 0000:00:02.0: irq 103 for MSI/MSI-X
[    0.896839] [drm] Supports vblank timestamp caching Rev 2 (21.10.2013).
[    0.896849] [drm] Driver supports precise vblank timestamp query.
[    0.949327] vgaarb: device changed decodes: PCI:0000:00:02.0,olddecodes=io+mem,decodes=io+mem:owns=io+mem
[    0.950125] ACPI: \_SB_.PCI0.GFX0: Error attaching device data 7
[    0.950523] ACPI: \_SB_.PCI0.GFX0: Error attaching device data 7
[    1.478205] [drm] forcing HDMI-A-1 connector ON
[    1.554441] [drm] GMBUS [i915 gmbus vga] timed out, falling back to bit banging on pin 2
[    1.575805] [drm] Got external EDID base block and 0 extensions from "edid/1200x1920.bin" for connector "HDMI-A-1"
[    1.722033] [drm] GMBUS [i915 gmbus dpc] timed out, falling back to bit banging on pin 4
[    1.818338] fbcon: inteldrmfb (fb0) is primary device
[    1.955080] Switched to clocksource tsc
[    2.331727] Console: switching to colour frame buffer device 150x120
[    2.365253] i915 0000:00:02.0: fb0: inteldrmfb frame buffer device
[    2.365400] i915 0000:00:02.0: registered panic notifier
[    2.369617] ACPI: Video Device [GFX0] (multi-head: yes  rom: no  post: no)
[    2.371353] acpi device:1a: registered as cooling_device4
[    2.372792] acpi device:21: registered as cooling_device5
[    2.373108] input: Video Bus as /devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A08:00/LNXVIDEO:00/input/input1
[    2.373395] [drm] Initialized i915 1.6.0 20080730 for 0000:00:02.0 on minor 0
[    2.373911] brd: module loaded
[    2.374464] loop: module loaded
[    2.375205] xhci_hcd 0000:00:14.0: xHCI Host Controller
[    2.375451] xhci_hcd 0000:00:14.0: new USB bus registered, assigned bus number 1
[    2.375778] xhci_hcd 0000:00:14.0: cache line size of 64 is not supported
[    2.375815] xhci_hcd 0000:00:14.0: irq 104 for MSI/MSI-X
[    2.375961] usb usb1: New USB device found, idVendor=1d6b, idProduct=0002
[    2.376124] usb usb1: New USB device strings: Mfr=3, Product=2, SerialNumber=1
[    2.376295] usb usb1: Product: xHCI Host Controller
[    2.376412] usb usb1: Manufacturer: Linux 3.15.0-rc5-Inari xhci_hcd
[    2.376568] usb usb1: SerialNumber: 0000:00:14.0
[    2.376973] hub 1-0:1.0: USB hub found
[    2.377087] hub 1-0:1.0: 6 ports detected
[    2.378757] xhci_hcd 0000:00:14.0: xHCI Host Controller
[    2.378979] xhci_hcd 0000:00:14.0: new USB bus registered, assigned bus number 2
[    2.379241] usb usb2: New USB device found, idVendor=1d6b, idProduct=0003
[    2.379405] usb usb2: New USB device strings: Mfr=3, Product=2, SerialNumber=1
[    2.379583] usb usb2: Product: xHCI Host Controller
[    2.379702] usb usb2: Manufacturer: Linux 3.15.0-rc5-Inari xhci_hcd
[    2.379850] usb usb2: SerialNumber: 0000:00:14.0
[    2.380239] hub 2-0:1.0: USB hub found
[    2.380351] hub 2-0:1.0: 1 port detected
[    2.380860] usbcore: registered new interface driver usb-storage
[    2.381142] i8042: PNP: No PS/2 controller found. Probing ports directly.
[    3.425347] i8042: No controller found
[    3.425565] mousedev: PS/2 mouse device common for all mice
[    3.425675] [drm] Enabling RC6 states: RC6 off, RC6p off, RC6pp off
[    3.426041] ACPI Warning: Could not enable fixed event - RealTimeClock (4) (20140214/evxface-628)
[    3.426464] rtc_cmos 00:00: rtc core: registered rtc_cmos as rtc0
[    3.426649] rtc_cmos 00:00: alarms up to one day, 242 bytes nvram
[    3.426883] i2c /dev entries driver
[    3.428313] Intel P-state driver initializing.
[    3.428446] Intel pstate controlling: cpu 0
[    3.428587] Intel pstate controlling: cpu 1
[    3.428725] Intel pstate controlling: cpu 2
[    3.428886] Intel pstate controlling: cpu 3
[    3.429124] sdhci: Secure Digital Host Controller Interface driver
[    3.429272] sdhci: Copyright(c) Pierre Ossman
[    3.430578] mmc0: no vqmmc regulator found
[    3.430681] mmc0: no vmmc regulator found
[    3.431936] mmc0: SDHCI controller on ACPI [80860F14:00] using ADMA
[    3.433476] mmc1: no vqmmc regulator found
[    3.433579] mmc1: no vmmc regulator found
[    3.434830] mmc1: SDHCI controller on ACPI [INT33BB:00] using ADMA
[    3.435453] sdhci-acpi 80860F14:01: failed to setup card detect gpio
[    3.436623] mmc2: no vqmmc regulator found
[    3.436724] mmc2: no vmmc regulator found
[    3.437966] mmc2: SDHCI controller on ACPI [80860F14:01] using ADMA
[    3.438148] sdhci-pltfm: SDHCI platform and OF driver helper
[    3.438273] EFI Variables Facility v0.08 2004-May-17
[    3.448100] hidraw: raw HID events driver (C) Jiri Kosina
[    3.448546] usbcore: registered new interface driver usbhid
[    3.448660] usbhid: USB HID core driver
[    3.449146] TCP: cubic registered
[    3.449218] Initializing XFRM netlink socket
[    3.449576] NET: Registered protocol family 10
[    3.450087] sit: IPv6 over IPv4 tunneling driver
[    3.450438] NET: Registered protocol family 17
[    3.450890] Using IPI No-Shortcut mode
[    3.451197] registered taskstats version 1
[    3.451596]   Magic number: 14:324:658
[    3.451761] console [netcon0] enabled
[    3.451837] netconsole: network logging started
[    3.452124] PM: Hibernation image not present or could not be loaded.
[    3.452133] ALSA device list:
[    3.452195]   No soundcards found.
[    3.452325] Warning: unable to open an initial console.
[    3.458742] Freeing unused kernel memory: 12092K (c1750000 - c231f000)
[    3.472576] udevd[949]: starting version 173
[    3.545752] mmc0: BKOPS_EN bit is not set
[    3.622230] mmc0: new HS200 MMC card at address 0001
[    3.624057] mmcblk0: mmc0:0001 HCG8e\x04 58.2 GiB 
[    3.624598] mmcblk0boot0: mmc0:0001 HCG8e\x04 partition 1 4.00 MiB
[    3.624750] mmcblk0boot1: mmc0:0001 HCG8e\x04 partition 2 4.00 MiB
[    3.625057] mmcblk0rpmb: mmc0:0001 HCG8e\x04 partition 3 4.00 MiB
[    3.625994]  mmcblk0: p1 p2
[    3.630611]  mmcblk0boot1: unknown partition table
[    3.633735]  mmcblk0boot0:
[    3.640096] usb 2-1: new SuperSpeed USB device number 2 using xhci_hcd
[    3.651068] usb 2-1: New USB device found, idVendor=0451, idProduct=8046
[    3.651186] usb 2-1: New USB device strings: Mfr=0, Product=0, SerialNumber=0
[    3.651671] hub 2-1:1.0: USB hub found
[    3.651758] hub 2-1:1.0: 4 ports detected
[    3.779948] usb 1-1: new high-speed USB device number 2 using xhci_hcd
[    3.943266] usb 1-1: New USB device found, idVendor=0451, idProduct=8044
[    3.969159] usb 1-1: New USB device strings: Mfr=0, Product=0, SerialNumber=1
[    3.994984] usb 1-1: SerialNumber: 420208698DA1
[    4.021771] hub 1-1:1.0: USB hub found
[    4.047612] hub 1-1:1.0: 4 ports detected
[    4.094961] Clocksource tsc unstable (delta = 139070527 ns)
[    4.120773] Switched to clocksource refined-jiffies
[    4.143425] usb 1-3: new high-speed USB device number 3 using xhci_hcd
[    4.235688] usb 1-3: New USB device found, idVendor=12d1, idProduct=1570
[    4.262187] usb 1-3: New USB device strings: Mfr=5, Product=4, SerialNumber=0
[    4.288823] usb 1-3: Product: HUAWEI Mobile Broadband Module
[    4.315372] usb 1-3: Manufacturer: Huawei Technologies Co., Ltd.
[    4.454809] usb 1-4: new high-speed USB device number 4 using xhci_hcd
[    4.615088] usb 1-4: New USB device found, idVendor=0951, idProduct=1603
[    4.641469] usb 1-4: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[    4.667779] usb 1-4: Product: DataTraveler 2.0
[    4.694205] usb 1-4: Manufacturer: Kingston
[    4.720492] usb 1-4: SerialNumber: 89900000000000000000017E
[    4.747830] usb-storage 1-4:1.0: USB Mass Storage device detected
[    4.774449] scsi0 : usb-storage 1-4:1.0
[    4.833239] usb 1-1.1: new low-speed USB device number 5 using xhci_hcd
[    4.904523] usb 1-1.1: New USB device found, idVendor=046d, idProduct=c03e
[    4.930590] usb 1-1.1: New USB device strings: Mfr=1, Product=2, SerialNumber=0
[    4.956550] usb 1-1.1: Product: USB-PS/2 Optical Mouse
[    4.982418] usb 1-1.1: Manufacturer: Logitech
[    5.008663] usb 1-1.1: ep 0x81 - rounding interval to 64 microframes, ep desc says 80 microframes
[    5.039453] input: Logitech USB-PS/2 Optical Mouse as /devices/pci0000:00/0000:00:14.0/usb1/1-1/1-1.1/1-1.1:1.0/0003:046D:C03E.0001/input/input2
[    5.067114] hid-generic 0003:046D:C03E.0001: input,hidraw0: USB HID v1.10 Mouse [Logitech USB-PS/2 Optical Mouse] on usb-0000:00:14.0-1.1/input0
[    5.132430] usb 1-1.2: new high-speed USB device number 6 using xhci_hcd
[    5.203734] usb 1-1.2: New USB device found, idVendor=0424, idProduct=7500
[    5.230739] usb 1-1.2: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[    5.257917] usb 1-1.2: Product: LAN7500
[    5.284761] usb 1-1.2: Manufacturer: SMSC
[    5.311315] usb 1-1.2: SerialNumber: 00800f11700e
[    5.381679] usb 1-1.3: new low-speed USB device number 7 using xhci_hcd
[    5.462341] usb 1-1.3: New USB device found, idVendor=046d, idProduct=c312
[    5.489081] usb 1-1.3: New USB device strings: Mfr=1, Product=2, SerialNumber=0
[    5.515839] usb 1-1.3: Product: USB Multimedia Keyboard
[    5.542443] usb 1-1.3: Manufacturer: LITEON Technology
[    5.569572] usb 1-1.3: ep 0x81 - rounding interval to 128 microframes, ep desc says 192 microframes
[    5.600996] input: LITEON Technology USB Multimedia Keyboard as /devices/pci0000:00/0000:00:14.0/usb1/1-1/1-1.3/1-1.3:1.0/0003:046D:C312.0002/input/input3
[    5.656590] hid-generic 0003:046D:C312.0002: input,hidraw1: USB HID v1.10 Keyboard [LITEON Technology USB Multimedia Keyboard] on usb-0000:00:14.0-1.3/input0
[    5.768892] scsi 0:0:0:0: Direct-Access     Kingston DataTraveler 2.0 1.00 PQ: 0 ANSI: 2
[    5.799079] sd 0:0:0:0: [sda] 7856128 512-byte logical blocks: (4.02 GB/3.74 GiB)
[    5.799096] sd 0:0:0:0: Attached scsi generic sg0 type 0
[    5.857532] sd 0:0:0:0: [sda] Write Protect is off
[    5.886444] sd 0:0:0:0: [sda] Mode Sense: 23 00 00 00
[    5.886816] sd 0:0:0:0: [sda] No Caching mode page found
[    5.915622] sd 0:0:0:0: [sda] Assuming drive cache: write through
[    5.947408]  sda: sda1 sda2
[    5.986433] sd 0:0:0:0: [sda] Attached SCSI removable disk
[    6.043333] EXT4-fs (sda2): couldn't mount as ext3 due to feature incompatibilities
[    6.076814] EXT4-fs (sda2): couldn't mount as ext2 due to feature incompatibilities
[    6.119661] EXT4-fs (sda2): mounted filesystem with ordered data mode. Opts: (null)
[    6.280069] random: nonblocking pool is initialized
[    7.357011] udevd[1689]: starting version 173
[    7.477008] sst-acpi 80860F28:00: Direct firmware load failed with error -2
[    7.484948] sst-acpi 80860F28:00: Falling back to user helper
[    7.577743] sst-acpi 80860F28:00: Cannot load firmware intel/fw_sst_0f28.bin-i2s_master
[    7.586076] byt-rt5640 byt-rt5640: ASoC: CPU DAI Front-cpu-dai not registered
[    7.592798] smsc75xx v1.0.0
[    7.601973] platform byt-rt5640: Driver byt-rt5640 requests probe deferral
[    7.629938] smsc75xx 1-1.2:1.0 eth0: register 'smsc75xx' at usb-0000:00:14.0-1.2, smsc75xx USB 2.0 Gigabit Ethernet, 70:2f:97:00:22:4f
[    7.660544] usbcore: registered new interface driver smsc75xx
[    7.660554] byt-rt5640 byt-rt5640: ASoC: CPU DAI Front-cpu-dai not registered
[    7.660598] platform byt-rt5640: Driver byt-rt5640 requests probe deferral
[   15.786357] mmc0: Got data interrupt 0x00000002 even though no data operation was in progress.
[   15.819492] mmcblk0rpmb: error -110 transferring data, sector 8064, nr 8, cmd response 0x900, card status 0xb00
[   15.850882] mmcblk0rpmb: retrying using single block read
[   15.884298] mmcblk0rpmb: timed out sending r/w cmd command, card status 0x400900
[   15.917928] mmcblk0rpmb: timed out sending r/w cmd command, card status 0x400900
[   15.951471] mmcblk0rpmb: timed out sending r/w cmd command, card status 0x400900
[   15.984802] mmcblk0rpmb: timed out sending r/w cmd command, card status 0x400900
[   16.017890] mmcblk0rpmb: timed out sending r/w cmd command, card status 0x400900
[   16.050737] mmcblk0rpmb: timed out sending r/w cmd command, card status 0x400900
[   16.081372] end_request: I/O error, dev mmcblk0rpmb, sector 8064
[   16.112006] Buffer I/O error on device mmcblk0rpmb, logical block 1008
[   24.373945] mmc0: Got data interrupt 0x00000002 even though no data operation was in progress.
[   24.407032] mmcblk0rpmb: error -110 transferring data, sector 8064, nr 8, cmd response 0x900, card status 0xb00
[   24.438318] mmcblk0rpmb: retrying using single block read
[   24.471644] mmcblk0rpmb: timed out sending r/w cmd command, card status 0x400900
[   24.505126] mmcblk0rpmb: timed out sending r/w cmd command, card status 0x400900
[   24.538515] mmcblk0rpmb: timed out sending r/w cmd command, card status 0x400900
[   24.571758] mmcblk0rpmb: timed out sending r/w cmd command, card status 0x400900
[   24.604838] mmcblk0rpmb: timed out sending r/w cmd command, card status 0x400900
[   24.637751] mmcblk0rpmb: timed out sending r/w cmd command, card status 0x400900
[   24.668398] end_request: I/O error, dev mmcblk0rpmb, sector 8064
[   24.699120] Buffer I/O error on device mmcblk0rpmb, logical block 1008
[   32.940422] mmc0: Got data interrupt 0x00000002 even though no data operation was in progress.
[   32.973781] mmcblk0rpmb: error -110 transferring data, sector 0, nr 16, cmd response 0x900, card status 0xb00
[   33.005431] mmcblk0rpmb: retrying using single block read
[   33.039167] mmcblk0rpmb: timed out sending r/w cmd command, card status 0x400900
[   33.073116] mmcblk0rpmb: timed out sending r/w cmd command, card status 0x400900
[   33.106965] mmcblk0rpmb: timed out sending r/w cmd command, card status 0x400900
[   33.140652] mmcblk0rpmb: timed out sending r/w cmd command, card status 0x400900
[   33.174081] mmcblk0rpmb: timed out sending r/w cmd command, card status 0x400900
[   33.207244] mmcblk0rpmb: timed out sending r/w cmd command, card status 0x400900
[   33.238143] end_request: I/O error, dev mmcblk0rpmb, sector 0
[   33.269079] Buffer I/O error on device mmcblk0rpmb, logical block 0
[   33.300138] end_request: I/O error, dev mmcblk0rpmb, sector 8
[   33.331221] Buffer I/O error on device mmcblk0rpmb, logical block 1
[   41.566672] mmc0: Got data interrupt 0x00000002 even though no data operation was in progress.
[   41.600468] mmcblk0rpmb: error -110 transferring data, sector 0, nr 8, cmd response 0x900, card status 0xb00
[   41.632451] mmcblk0rpmb: retrying using single block read
[   41.666526] mmcblk0rpmb: timed out sending r/w cmd command, card status 0x400900
[   41.700864] mmcblk0rpmb: timed out sending r/w cmd command, card status 0x400900
[   41.734945] mmcblk0rpmb: timed out sending r/w cmd command, card status 0x400900
[   41.768811] mmcblk0rpmb: timed out sending r/w cmd command, card status 0x400900
[   41.802498] mmcblk0rpmb: timed out sending r/w cmd command, card status 0x400900
[   41.835947] mmcblk0rpmb: timed out sending r/w cmd command, card status 0x400900
[   41.867201] end_request: I/O error, dev mmcblk0rpmb, sector 0
[   41.898423] Buffer I/O error on device mmcblk0rpmb, logical block 0
[   45.972615] IPv6: ADDRCONF(NETDEV_UP): eth0: link is not ready
[   47.603164] IPv6: ADDRCONF(NETDEV_CHANGE): eth0: link becomes ready
[   47.634111] smsc75xx 1-1.2:1.0 eth0: link up, 100Mbps, full-duplex, lpa 0x45E1
[   47.668901] smsc75xx 1-1.2:1.0 eth0: link up, 100Mbps, full-duplex, lpa 0x45E1

[-- Attachment #2: This is a digitally signed message part. --]
[-- Type: application/pgp-signature, Size: 316 bytes --]

^ permalink raw reply	[flat|nested] 79+ messages in thread

* Re: [Patch V2 5/9] I2C: Add smbus quick read/write helper function
  2014-04-28 14:27     ` [Patch V2 5/9] I2C: Add smbus quick read/write helper function Lan Tianyu
@ 2014-05-17  9:41       ` Wolfram Sang
  2014-05-17 13:13         ` Lan Tianyu
  0 siblings, 1 reply; 79+ messages in thread
From: Wolfram Sang @ 2014-05-17  9:41 UTC (permalink / raw)
  To: Lan Tianyu
  Cc: rjw, mika.westerberg, awilliam, lenb, linux-i2c, linux-kernel,
	linux-acpi

[-- Attachment #1: Type: text/plain, Size: 907 bytes --]

On Mon, Apr 28, 2014 at 10:27:44PM +0800, Lan Tianyu wrote:
> Add i2c_smbus_quick_write/read() helper function. These will be used
> in the implementation of i2c ACPI address space handler.
> 
> Reviewed-by: Mika Westerberg <mika.westerberg@linux.intel.com>
> Signed-off-by: Lan Tianyu <tianyu.lan@intel.com>

We had such a function once but removed because of no users. Please
check 67c2e66571c383404a5acd08189194da660da942 what it takes to bring
them back. Especially missing are documentation updates...

> +s32 i2c_smbus_quick_write(const struct i2c_client *client)

... and I like the original function much better.

1) It is named *_write_quick which follows other function name patterns
2) It uses a parameter for the r/w bit. Make sense to me, since this bit
is the information we send to the device. quick_read doesn't make sense
to me. We don't receive a bit from the device.


[-- Attachment #2: Digital signature --]
[-- Type: application/pgp-signature, Size: 836 bytes --]

^ permalink raw reply	[flat|nested] 79+ messages in thread

* Re: [Patch V2 6/9] I2C: Add smbus word/block process call helper function
  2014-04-28 14:27     ` [Patch V2 6/9] I2C: Add smbus word/block process call " Lan Tianyu
@ 2014-05-17 10:21       ` Wolfram Sang
  2014-05-17 13:59         ` Lan Tianyu
  0 siblings, 1 reply; 79+ messages in thread
From: Wolfram Sang @ 2014-05-17 10:21 UTC (permalink / raw)
  To: Lan Tianyu
  Cc: rjw, mika.westerberg, awilliam, lenb, linux-i2c, linux-kernel,
	linux-acpi

[-- Attachment #1: Type: text/plain, Size: 3076 bytes --]

On Mon, Apr 28, 2014 at 10:27:45PM +0800, Lan Tianyu wrote:
> Add i2c_smbus_word/block_proc_call() helper function. These will be used
> in the implementation of i2c ACPI address space handler.
> 
> Reviewed-by: Mika Westerberg <mika.westerberg@linux.intel.com>
> Signed-off-by: Lan Tianyu <tianyu.lan@intel.com>
> ---
>  drivers/i2c/i2c-core.c | 56 ++++++++++++++++++++++++++++++++++++++++++++++++++
>  include/linux/i2c.h    |  4 ++++
>  2 files changed, 60 insertions(+)
> 
> diff --git a/drivers/i2c/i2c-core.c b/drivers/i2c/i2c-core.c
> index 3bf0048..638befd 100644
> --- a/drivers/i2c/i2c-core.c
> +++ b/drivers/i2c/i2c-core.c
> @@ -2306,6 +2306,30 @@ s32 i2c_smbus_write_word_data(const struct i2c_client *client, u8 command,
>  EXPORT_SYMBOL(i2c_smbus_write_word_data);
>  
>  /**
> + * i2c_smbus_word_proc_call - SMBus "word proc call" protocol
> + * @client: Handle to slave device
> + * @command: Byte interpreted by slave
> + * @value: 16-bit "word" being written
> + *
> + * This executes the SMBus "word proc all" protocol, returning negative errno
> + * else a 16-bit unsigned "word" received from the device.
> + */
> +s32 i2c_smbus_word_proc_call(const struct i2c_client *client, u8 command,
> +			      u16 value)
> +{
> +	union i2c_smbus_data data;
> +	int status;
> +
> +	data.word = value;
> +	status = i2c_smbus_xfer(client->adapter, client->addr, client->flags,
> +			      I2C_SMBUS_READ, command,
> +			      I2C_SMBUS_PROC_CALL, &data);
> +
> +	return (status < 0) ? status : data.word;
> +}
> +EXPORT_SYMBOL(i2c_smbus_word_proc_call);
> +
> +/**

Same as smbus_quick function before, documentation updates are missing.
Also similar, we had such a function before which was removed due to no
users? It looks very much like the function here, so we should stick to
the old naming IMO. Is it the old one? Such information would be nice
since it affects reviewing.

>   * i2c_smbus_read_block_data - SMBus "block read" protocol
>   * @client: Handle to slave device
>   * @command: Byte interpreted by slave
> @@ -2362,6 +2386,38 @@ s32 i2c_smbus_write_block_data(const struct i2c_client *client, u8 command,
>  }
>  EXPORT_SYMBOL(i2c_smbus_write_block_data);
>  
> +/**
> + * i2c_smbus_block_proc_call - SMBus "block write" protocol
> + * @client: Handle to slave device
> + * @command: Byte interpreted by slave
> + * @length: Size of data block; SMBus allows at most 32 bytes
> + * @values: Byte array which will be written.
> + *
> + * This executes the SMBus "block proc call" protocol, returning negative errno
> + * else the number of read bytes.
> + */
> +s32 i2c_smbus_block_proc_call(const struct i2c_client *client, u8 command,
> +			       u8 length, u8 *values)

Please rename to "i2c_smbus_block_process_call" as the old function was
named. Needs documentation updates.

> +	if (length > I2C_SMBUS_BLOCK_MAX)
> +		length = I2C_SMBUS_BLOCK_MAX;

I think we should return an error here.

BTW what were your test scenarios for these functions and smbus quick?


[-- Attachment #2: Digital signature --]
[-- Type: application/pgp-signature, Size: 836 bytes --]

^ permalink raw reply	[flat|nested] 79+ messages in thread

* Re: [Patch V2 5/9] I2C: Add smbus quick read/write helper function
  2014-05-17  9:41       ` Wolfram Sang
@ 2014-05-17 13:13         ` Lan Tianyu
  2014-05-17 17:15           ` Wolfram Sang
  0 siblings, 1 reply; 79+ messages in thread
From: Lan Tianyu @ 2014-05-17 13:13 UTC (permalink / raw)
  To: Wolfram Sang
  Cc: rjw, mika.westerberg, awilliam, lenb, linux-i2c, linux-kernel,
	linux-acpi

On 05/17/2014 05:41 PM, Wolfram Sang wrote:
> On Mon, Apr 28, 2014 at 10:27:44PM +0800, Lan Tianyu wrote:
>> Add i2c_smbus_quick_write/read() helper function. These will be used
>> in the implementation of i2c ACPI address space handler.
>>
>> Reviewed-by: Mika Westerberg <mika.westerberg@linux.intel.com>
>> Signed-off-by: Lan Tianyu <tianyu.lan@intel.com>
>
> We had such a function once but removed because of no users. Please
> check 67c2e66571c383404a5acd08189194da660da942 what it takes to bring
> them back. Especially missing are documentation updates...
>
>> +s32 i2c_smbus_quick_write(const struct i2c_client *client)
>
> ... and I like the original function much better.
>
> 1) It is named *_write_quick which follows other function name patterns
> 2) It uses a parameter for the r/w bit. Make sense to me, since this bit
> is the information we send to the device. quick_read doesn't make sense
> to me. We don't receive a bit from the device.
>

Hi Wolfram:
	Great thanks for your review. Ok. I will follow commit 67c2e665 to bring 
i2c_smbus_write_quick(struct i2c_client *client, u8 value) back.

BTW, how about i2c_probe_func_quick_read()? Should we replace it with the 
original i2c_smbus_write_quick()?

	


^ permalink raw reply	[flat|nested] 79+ messages in thread

* Re: [Patch V2 6/9] I2C: Add smbus word/block process call helper function
  2014-05-17 10:21       ` Wolfram Sang
@ 2014-05-17 13:59         ` Lan Tianyu
  2014-05-17 17:17           ` Wolfram Sang
  0 siblings, 1 reply; 79+ messages in thread
From: Lan Tianyu @ 2014-05-17 13:59 UTC (permalink / raw)
  To: Wolfram Sang
  Cc: rjw, mika.westerberg, awilliam, lenb, linux-i2c, linux-kernel,
	linux-acpi

On 05/17/2014 06:21 PM, Wolfram Sang wrote:
> On Mon, Apr 28, 2014 at 10:27:45PM +0800, Lan Tianyu wrote:
>> Add i2c_smbus_word/block_proc_call() helper function. These will be used
>> in the implementation of i2c ACPI address space handler.
>>
>> Reviewed-by: Mika Westerberg <mika.westerberg@linux.intel.com>
>> Signed-off-by: Lan Tianyu <tianyu.lan@intel.com>
>> ---
>>   drivers/i2c/i2c-core.c | 56 ++++++++++++++++++++++++++++++++++++++++++++++++++
>>   include/linux/i2c.h    |  4 ++++
>>   2 files changed, 60 insertions(+)
>>
>> diff --git a/drivers/i2c/i2c-core.c b/drivers/i2c/i2c-core.c
>> index 3bf0048..638befd 100644
>> --- a/drivers/i2c/i2c-core.c
>> +++ b/drivers/i2c/i2c-core.c
>> @@ -2306,6 +2306,30 @@ s32 i2c_smbus_write_word_data(const struct i2c_client *client, u8 command,
>>   EXPORT_SYMBOL(i2c_smbus_write_word_data);
>>
>>   /**
>> + * i2c_smbus_word_proc_call - SMBus "word proc call" protocol
>> + * @client: Handle to slave device
>> + * @command: Byte interpreted by slave
>> + * @value: 16-bit "word" being written
>> + *
>> + * This executes the SMBus "word proc all" protocol, returning negative errno
>> + * else a 16-bit unsigned "word" received from the device.
>> + */
>> +s32 i2c_smbus_word_proc_call(const struct i2c_client *client, u8 command,
>> +			      u16 value)
>> +{
>> +	union i2c_smbus_data data;
>> +	int status;
>> +
>> +	data.word = value;
>> +	status = i2c_smbus_xfer(client->adapter, client->addr, client->flags,
>> +			      I2C_SMBUS_READ, command,
>> +			      I2C_SMBUS_PROC_CALL, &data);
>> +
>> +	return (status < 0) ? status : data.word;
>> +}
>> +EXPORT_SYMBOL(i2c_smbus_word_proc_call);
>> +
>> +/**
>
> Same as smbus_quick function before, documentation updates are missing.
> Also similar, we had such a function before which was removed due to no
> users? It looks very much like the function here, so we should stick to
> the old naming IMO. Is it the old one? Such information would be nice
> since it affects reviewing.

Yes, there was an old function and commit c8110933 removed it. Sorry, I didn't 
that before. I will bring the old one back.

>
>>    * i2c_smbus_read_block_data - SMBus "block read" protocol
>>    * @client: Handle to slave device
>>    * @command: Byte interpreted by slave
>> @@ -2362,6 +2386,38 @@ s32 i2c_smbus_write_block_data(const struct i2c_client *client, u8 command,
>>   }
>>   EXPORT_SYMBOL(i2c_smbus_write_block_data);
>>
>> +/**
>> + * i2c_smbus_block_proc_call - SMBus "block write" protocol
>> + * @client: Handle to slave device
>> + * @command: Byte interpreted by slave
>> + * @length: Size of data block; SMBus allows at most 32 bytes
>> + * @values: Byte array which will be written.
>> + *
>> + * This executes the SMBus "block proc call" protocol, returning negative errno
>> + * else the number of read bytes.
>> + */
>> +s32 i2c_smbus_block_proc_call(const struct i2c_client *client, u8 command,
>> +			       u8 length, u8 *values)
>
> Please rename to "i2c_smbus_block_process_call" as the old function was
> named. Needs documentation updates.
>
>> +	if (length > I2C_SMBUS_BLOCK_MAX)
>> +		length = I2C_SMBUS_BLOCK_MAX;
>
> I think we should return an error here.

Ok.

>
> BTW what were your test scenarios for these functions and smbus quick?
>

 From ACPI spec, Read/Write quick and Word/Block process call protocol will be 
used by Bios ACPI code. But so far, I don't find such machines. So these 
functions has not been tested.





^ permalink raw reply	[flat|nested] 79+ messages in thread

* Re: [Patch V2 5/9] I2C: Add smbus quick read/write helper function
  2014-05-17 13:13         ` Lan Tianyu
@ 2014-05-17 17:15           ` Wolfram Sang
  0 siblings, 0 replies; 79+ messages in thread
From: Wolfram Sang @ 2014-05-17 17:15 UTC (permalink / raw)
  To: Lan Tianyu
  Cc: rjw, mika.westerberg, awilliam, lenb, linux-i2c, linux-kernel,
	linux-acpi

[-- Attachment #1: Type: text/plain, Size: 658 bytes --]


> >2) It uses a parameter for the r/w bit. Make sense to me, since this bit
> >is the information we send to the device. quick_read doesn't make sense
> >to me. We don't receive a bit from the device.
> >
> 
> Hi Wolfram:
> 	Great thanks for your review. Ok. I will follow commit 67c2e665 to
> bring i2c_smbus_write_quick(struct i2c_client *client, u8 value)
> back.
> 
> BTW, how about i2c_probe_func_quick_read()? Should we replace it
> with the original i2c_smbus_write_quick()?

As said above "quick_read doesn't make sense to me. We don't receive a
bit from the device."

Start implementing and you will see why we don't need it :)


[-- Attachment #2: Digital signature --]
[-- Type: application/pgp-signature, Size: 836 bytes --]

^ permalink raw reply	[flat|nested] 79+ messages in thread

* Re: [Patch V2 6/9] I2C: Add smbus word/block process call helper function
  2014-05-17 13:59         ` Lan Tianyu
@ 2014-05-17 17:17           ` Wolfram Sang
  2014-05-19  9:23             ` Lan Tianyu
  0 siblings, 1 reply; 79+ messages in thread
From: Wolfram Sang @ 2014-05-17 17:17 UTC (permalink / raw)
  To: Lan Tianyu
  Cc: rjw, mika.westerberg, awilliam, lenb, linux-i2c, linux-kernel,
	linux-acpi

[-- Attachment #1: Type: text/plain, Size: 474 bytes --]


> >BTW what were your test scenarios for these functions and smbus quick?
> >
> 
> From ACPI spec, Read/Write quick and Word/Block process call
> protocol will be used by Bios ACPI code. But so far, I don't find
> such machines. So these functions has not been tested.

Uh oh, I have some trouble adding untested code. Can't we add until we
have a user to verify it?

BTW I have to review the other patches later, so please wait before
resending the series.


[-- Attachment #2: Digital signature --]
[-- Type: application/pgp-signature, Size: 836 bytes --]

^ permalink raw reply	[flat|nested] 79+ messages in thread

* Re: [Patch V2 9/9] I2C/ACPI: Add CONFIG_I2C_ACPI config
  2014-04-29  8:16       ` Mika Westerberg
@ 2014-05-17 17:48         ` Wolfram Sang
  2014-05-19  8:49           ` Mika Westerberg
  0 siblings, 1 reply; 79+ messages in thread
From: Wolfram Sang @ 2014-05-17 17:48 UTC (permalink / raw)
  To: Mika Westerberg
  Cc: Lan Tianyu, rjw, awilliam, lenb, linux-i2c, linux-kernel, linux-acpi

[-- Attachment #1: Type: text/plain, Size: 2114 bytes --]

On Tue, Apr 29, 2014 at 11:16:09AM +0300, Mika Westerberg wrote:
> On Mon, Apr 28, 2014 at 10:27:48PM +0800, Lan Tianyu wrote:
> > This patch is to add CONFIG_I2C_ACPI. Current there is a race between
> > removing I2C ACPI operation region and ACPI AML code accessing.
> > So make i2c core built-in if CONFIG_I2C_ACPI is set.
> > 
> > Signed-off-by: Lan Tianyu <tianyu.lan@intel.com>
> > ---
> >  drivers/i2c/Kconfig  | 17 ++++++++++++++++-
> >  drivers/i2c/Makefile |  2 +-
> >  include/linux/i2c.h  |  2 +-
> >  3 files changed, 18 insertions(+), 3 deletions(-)
> > 
> > diff --git a/drivers/i2c/Kconfig b/drivers/i2c/Kconfig
> > index 7b7ea32..c670d49 100644
> > --- a/drivers/i2c/Kconfig
> > +++ b/drivers/i2c/Kconfig
> > @@ -2,7 +2,9 @@
> >  # I2C subsystem configuration
> >  #
> >  
> > -menuconfig I2C
> > +menu "I2C support"
> > +
> > +config I2C
> >  	tristate "I2C support"
> >  	select RT_MUTEXES
> >  	---help---
> > @@ -21,6 +23,17 @@ menuconfig I2C
> >  	  This I2C support can also be built as a module.  If so, the module
> >  	  will be called i2c-core.
> >  
> > +config I2C_ACPI
> > +	bool "I2C ACPI support"
> > +	select I2C
> > +	depends on ACPI
> > +	default y
> > +	help
> > +	  Say Y here if you want to enable I2C ACPI function. ACPI table
> > +	  provides I2C slave devices' information to enumerate these devices.
> > +	  This option also allows ACPI AML code to access I2C slave devices
> > +	  via I2C ACPI operation region to fulfill ACPI method.
> 
> I would prefer something like:
> 
> Say Y here if you want to enable ACPI I2C support. This includes support
> for automatic enumeration of I2C slave devices and support for ACPI I2C
> Operation Regions. Operation Regions allow firmware (BIOS) code to
> access I2C slave devices, such as smart batteries through an I2C host
> controller driver.
> 
> But it is really up to you so,
> 
> Reviewed-by: Mika Westerberg <mika.westerberg@linux.intel.com>

How does this fit into the context of
55e71edb81b2b45273e7b284cce13ff24bde846f ("i2c: move ACPI helpers into
the core")?


[-- Attachment #2: Digital signature --]
[-- Type: application/pgp-signature, Size: 836 bytes --]

^ permalink raw reply	[flat|nested] 79+ messages in thread

* Re: [Patch V2 9/9] I2C/ACPI: Add CONFIG_I2C_ACPI config
  2014-05-17 17:48         ` Wolfram Sang
@ 2014-05-19  8:49           ` Mika Westerberg
  2014-05-19  9:44             ` Lan Tianyu
  0 siblings, 1 reply; 79+ messages in thread
From: Mika Westerberg @ 2014-05-19  8:49 UTC (permalink / raw)
  To: Wolfram Sang
  Cc: Lan Tianyu, rjw, awilliam, lenb, linux-i2c, linux-kernel, linux-acpi

On Sat, May 17, 2014 at 07:48:34PM +0200, Wolfram Sang wrote:
> On Tue, Apr 29, 2014 at 11:16:09AM +0300, Mika Westerberg wrote:
> > On Mon, Apr 28, 2014 at 10:27:48PM +0800, Lan Tianyu wrote:
> > > This patch is to add CONFIG_I2C_ACPI. Current there is a race between
> > > removing I2C ACPI operation region and ACPI AML code accessing.
> > > So make i2c core built-in if CONFIG_I2C_ACPI is set.
> > > 
> > > Signed-off-by: Lan Tianyu <tianyu.lan@intel.com>
> > > ---
> > >  drivers/i2c/Kconfig  | 17 ++++++++++++++++-
> > >  drivers/i2c/Makefile |  2 +-
> > >  include/linux/i2c.h  |  2 +-
> > >  3 files changed, 18 insertions(+), 3 deletions(-)
> > > 
> > > diff --git a/drivers/i2c/Kconfig b/drivers/i2c/Kconfig
> > > index 7b7ea32..c670d49 100644
> > > --- a/drivers/i2c/Kconfig
> > > +++ b/drivers/i2c/Kconfig
> > > @@ -2,7 +2,9 @@
> > >  # I2C subsystem configuration
> > >  #
> > >  
> > > -menuconfig I2C
> > > +menu "I2C support"
> > > +
> > > +config I2C
> > >  	tristate "I2C support"
> > >  	select RT_MUTEXES
> > >  	---help---
> > > @@ -21,6 +23,17 @@ menuconfig I2C
> > >  	  This I2C support can also be built as a module.  If so, the module
> > >  	  will be called i2c-core.
> > >  
> > > +config I2C_ACPI
> > > +	bool "I2C ACPI support"
> > > +	select I2C
> > > +	depends on ACPI
> > > +	default y
> > > +	help
> > > +	  Say Y here if you want to enable I2C ACPI function. ACPI table
> > > +	  provides I2C slave devices' information to enumerate these devices.
> > > +	  This option also allows ACPI AML code to access I2C slave devices
> > > +	  via I2C ACPI operation region to fulfill ACPI method.
> > 
> > I would prefer something like:
> > 
> > Say Y here if you want to enable ACPI I2C support. This includes support
> > for automatic enumeration of I2C slave devices and support for ACPI I2C
> > Operation Regions. Operation Regions allow firmware (BIOS) code to
> > access I2C slave devices, such as smart batteries through an I2C host
> > controller driver.
> > 
> > But it is really up to you so,
> > 
> > Reviewed-by: Mika Westerberg <mika.westerberg@linux.intel.com>
> 
> How does this fit into the context of
> 55e71edb81b2b45273e7b284cce13ff24bde846f ("i2c: move ACPI helpers into
> the core")?

With that commit we moved ACPI code to live inside I2C module (given
that it was compiled as a module). However, you still can remove that
module from userspace.

With this patch we make sure that the I2C core can't be removed if you
have ACPI enabled. This prevents the potential race.

^ permalink raw reply	[flat|nested] 79+ messages in thread

* Re: [Patch V2 6/9] I2C: Add smbus word/block process call helper function
  2014-05-17 17:17           ` Wolfram Sang
@ 2014-05-19  9:23             ` Lan Tianyu
  0 siblings, 0 replies; 79+ messages in thread
From: Lan Tianyu @ 2014-05-19  9:23 UTC (permalink / raw)
  To: Wolfram Sang
  Cc: rjw, mika.westerberg, awilliam, lenb, linux-i2c, linux-kernel,
	linux-acpi

On 05/18/2014 01:17 AM, Wolfram Sang wrote:
>
>>> BTW what were your test scenarios for these functions and smbus quick?
>>>
>>
>>  From ACPI spec, Read/Write quick and Word/Block process call
>> protocol will be used by Bios ACPI code. But so far, I don't find
>> such machines. So these functions has not been tested.
>
> Uh oh, I have some trouble adding untested code. Can't we add until we
> have a user to verify it?

Ok. I will remove these patches from this patchset since currently there are no 
users.

>
> BTW I have to review the other patches later, so please wait before
> resending the series.
>


^ permalink raw reply	[flat|nested] 79+ messages in thread

* Re: [Patch V2 9/9] I2C/ACPI: Add CONFIG_I2C_ACPI config
  2014-05-19  8:49           ` Mika Westerberg
@ 2014-05-19  9:44             ` Lan Tianyu
  2014-05-19 20:23               ` Rafael J. Wysocki
  0 siblings, 1 reply; 79+ messages in thread
From: Lan Tianyu @ 2014-05-19  9:44 UTC (permalink / raw)
  To: Mika Westerberg, Wolfram Sang
  Cc: rjw, awilliam, lenb, linux-i2c, linux-kernel, linux-acpi

On 05/19/2014 04:49 PM, Mika Westerberg wrote:
> On Sat, May 17, 2014 at 07:48:34PM +0200, Wolfram Sang wrote:
>> On Tue, Apr 29, 2014 at 11:16:09AM +0300, Mika Westerberg wrote:
>>> On Mon, Apr 28, 2014 at 10:27:48PM +0800, Lan Tianyu wrote:
>>>> This patch is to add CONFIG_I2C_ACPI. Current there is a race between
>>>> removing I2C ACPI operation region and ACPI AML code accessing.
>>>> So make i2c core built-in if CONFIG_I2C_ACPI is set.
>>>>
>>>> Signed-off-by: Lan Tianyu <tianyu.lan@intel.com>
>>>> ---
>>>>   drivers/i2c/Kconfig  | 17 ++++++++++++++++-
>>>>   drivers/i2c/Makefile |  2 +-
>>>>   include/linux/i2c.h  |  2 +-
>>>>   3 files changed, 18 insertions(+), 3 deletions(-)
>>>>
>>>> diff --git a/drivers/i2c/Kconfig b/drivers/i2c/Kconfig
>>>> index 7b7ea32..c670d49 100644
>>>> --- a/drivers/i2c/Kconfig
>>>> +++ b/drivers/i2c/Kconfig
>>>> @@ -2,7 +2,9 @@
>>>>   # I2C subsystem configuration
>>>>   #
>>>>
>>>> -menuconfig I2C
>>>> +menu "I2C support"
>>>> +
>>>> +config I2C
>>>>   	tristate "I2C support"
>>>>   	select RT_MUTEXES
>>>>   	---help---
>>>> @@ -21,6 +23,17 @@ menuconfig I2C
>>>>   	  This I2C support can also be built as a module.  If so, the module
>>>>   	  will be called i2c-core.
>>>>
>>>> +config I2C_ACPI
>>>> +	bool "I2C ACPI support"
>>>> +	select I2C
>>>> +	depends on ACPI
>>>> +	default y
>>>> +	help
>>>> +	  Say Y here if you want to enable I2C ACPI function. ACPI table
>>>> +	  provides I2C slave devices' information to enumerate these devices.
>>>> +	  This option also allows ACPI AML code to access I2C slave devices
>>>> +	  via I2C ACPI operation region to fulfill ACPI method.
>>>
>>> I would prefer something like:
>>>
>>> Say Y here if you want to enable ACPI I2C support. This includes support
>>> for automatic enumeration of I2C slave devices and support for ACPI I2C
>>> Operation Regions. Operation Regions allow firmware (BIOS) code to
>>> access I2C slave devices, such as smart batteries through an I2C host
>>> controller driver.
>>>
>>> But it is really up to you so,
>>>
>>> Reviewed-by: Mika Westerberg <mika.westerberg@linux.intel.com>
>>
>> How does this fit into the context of
>> 55e71edb81b2b45273e7b284cce13ff24bde846f ("i2c: move ACPI helpers into
>> the core")?
>
> With that commit we moved ACPI code to live inside I2C module (given
> that it was compiled as a module). However, you still can remove that
> module from userspace.
>
> With this patch we make sure that the I2C core can't be removed if you
> have ACPI enabled. This prevents the potential race.
>

Yes, these are the two patches' purposes. Thanks Mika's explanation. If you 
like, I can merge them into one patch.


^ permalink raw reply	[flat|nested] 79+ messages in thread

* Re: [Patch V2 9/9] I2C/ACPI: Add CONFIG_I2C_ACPI config
  2014-05-19  9:44             ` Lan Tianyu
@ 2014-05-19 20:23               ` Rafael J. Wysocki
  0 siblings, 0 replies; 79+ messages in thread
From: Rafael J. Wysocki @ 2014-05-19 20:23 UTC (permalink / raw)
  To: Lan Tianyu
  Cc: Mika Westerberg, Wolfram Sang, awilliam, lenb, linux-i2c,
	linux-kernel, linux-acpi

On Monday, May 19, 2014 05:44:47 PM Lan Tianyu wrote:
> On 05/19/2014 04:49 PM, Mika Westerberg wrote:
> > On Sat, May 17, 2014 at 07:48:34PM +0200, Wolfram Sang wrote:
> >> On Tue, Apr 29, 2014 at 11:16:09AM +0300, Mika Westerberg wrote:
> >>> On Mon, Apr 28, 2014 at 10:27:48PM +0800, Lan Tianyu wrote:
> >>>> This patch is to add CONFIG_I2C_ACPI. Current there is a race between
> >>>> removing I2C ACPI operation region and ACPI AML code accessing.
> >>>> So make i2c core built-in if CONFIG_I2C_ACPI is set.
> >>>>
> >>>> Signed-off-by: Lan Tianyu <tianyu.lan@intel.com>
> >>>> ---
> >>>>   drivers/i2c/Kconfig  | 17 ++++++++++++++++-
> >>>>   drivers/i2c/Makefile |  2 +-
> >>>>   include/linux/i2c.h  |  2 +-
> >>>>   3 files changed, 18 insertions(+), 3 deletions(-)
> >>>>
> >>>> diff --git a/drivers/i2c/Kconfig b/drivers/i2c/Kconfig
> >>>> index 7b7ea32..c670d49 100644
> >>>> --- a/drivers/i2c/Kconfig
> >>>> +++ b/drivers/i2c/Kconfig
> >>>> @@ -2,7 +2,9 @@
> >>>>   # I2C subsystem configuration
> >>>>   #
> >>>>
> >>>> -menuconfig I2C
> >>>> +menu "I2C support"
> >>>> +
> >>>> +config I2C
> >>>>   	tristate "I2C support"
> >>>>   	select RT_MUTEXES
> >>>>   	---help---
> >>>> @@ -21,6 +23,17 @@ menuconfig I2C
> >>>>   	  This I2C support can also be built as a module.  If so, the module
> >>>>   	  will be called i2c-core.
> >>>>
> >>>> +config I2C_ACPI
> >>>> +	bool "I2C ACPI support"
> >>>> +	select I2C
> >>>> +	depends on ACPI
> >>>> +	default y
> >>>> +	help
> >>>> +	  Say Y here if you want to enable I2C ACPI function. ACPI table
> >>>> +	  provides I2C slave devices' information to enumerate these devices.
> >>>> +	  This option also allows ACPI AML code to access I2C slave devices
> >>>> +	  via I2C ACPI operation region to fulfill ACPI method.
> >>>
> >>> I would prefer something like:
> >>>
> >>> Say Y here if you want to enable ACPI I2C support. This includes support
> >>> for automatic enumeration of I2C slave devices and support for ACPI I2C
> >>> Operation Regions. Operation Regions allow firmware (BIOS) code to
> >>> access I2C slave devices, such as smart batteries through an I2C host
> >>> controller driver.
> >>>
> >>> But it is really up to you so,
> >>>
> >>> Reviewed-by: Mika Westerberg <mika.westerberg@linux.intel.com>
> >>
> >> How does this fit into the context of
> >> 55e71edb81b2b45273e7b284cce13ff24bde846f ("i2c: move ACPI helpers into
> >> the core")?
> >
> > With that commit we moved ACPI code to live inside I2C module (given
> > that it was compiled as a module). However, you still can remove that
> > module from userspace.
> >
> > With this patch we make sure that the I2C core can't be removed if you
> > have ACPI enabled. This prevents the potential race.
> >
> 
> Yes, these are the two patches' purposes. Thanks Mika's explanation. If you 
> like, I can merge them into one patch.

I think that would be easier to follow.

Thanks!

-- 
I speak only for myself.
Rafael J. Wysocki, Intel Open Source Technology Center.

^ permalink raw reply	[flat|nested] 79+ messages in thread

* Re: [Patch V2 0/9] I2C ACPI operation region handler support
  2014-05-15  7:50         ` Rolf Eike Beer
  2014-05-15 14:49           ` Lan Tianyu
@ 2014-05-20 14:17           ` Rolf Eike Beer
  2014-05-22 15:14             ` Lan Tianyu
  1 sibling, 1 reply; 79+ messages in thread
From: Rolf Eike Beer @ 2014-05-20 14:17 UTC (permalink / raw)
  To: Lan Tianyu
  Cc: wsa, rjw, mika.westerberg, awilliam, lenb, linux-i2c,
	linux-kernel, linux-acpi


[-- Attachment #1.1: Type: text/plain, Size: 155843 bytes --]

=2D-nextPart3540697.JozLVkjM1S
Content-Transfer-Encoding: quoted-printable
Content-Type: text/plain; charset="iso-8859-1"

Rolf Eike Beer wrote:
> Lan Tianyu wrote:
> > On 05/13/2014 09:09 PM, Rolf Eike Beer wrote:
> > > Am Montag, 28. April 2014, 22:27:39 schrieb Lan Tianyu:
> > >> ACPI 5.0 spec(5.5.2.4.5) defines GenericSerialBus(i2c, spi, uart=
)
> > >> operation
> > >> region. It allows ACPI aml code able to access such kind of devi=
ces to
> > >> implement some ACPI standard method.
> > >>=20
> > >> On the Asus T100TA, Bios use GenericSerialBus operation region t=
o
> > >> access
> > >> i2c device to get battery info. So battery function depends on t=
he I2C
> > >> operation region support. Here is the bug link.
> > >> https://bugzilla.kernel.org/show_bug.cgi?id=3D69011

> > > I have tested this series and got some errors, but no additional
> > > functionality:

> this is an Aava Inari 8 tablet (pre-release hardware). Please find th=
e DSDT
> and the dmesg.log attached.

It may be that I have taken the wrong ACPI files. This is the result of=
 a=20
fresh run of acpidump, together with the most recent dmesg.log, just in=
 case=20
I messed it up.

Kernel now is at 60b5f90+some patches:

8e7bd6f pinctrl: baytrail: Register GPIO chip after chip->to_irq is set=

c4b2230 pinctrl: baytrail: Add back Baytrail-T ACPI ID
32f3364 gpio: Add support for Intel SoC PMIC (Crystal Cove)
088ee81 mfd: intel_soc_pmic: Build files
5315135 mfd: intel_soc_pmic: Crystal Cove support
8b5ed0b mfd: intel_soc_pmic: I2C interface
b18979f mfd: intel_soc_pmic: Core driver
5200b75 add debugging
  (This is the debug patch Lan Tianyu sent as reply to the previous mai=
l)
bd3e6c6 I2C/ACPI: Add CONFIG_I2C_ACPI config
947f0a1 I2C/ACPI: Move ACPI related code to i2c-acpi.c
534f182 I2C/ACPI: Add i2c ACPI operation region support
32384d4 I2C: Add smbus word/block process call helper function
aa6459e I2C: Add smbus quick read/write helper function
51825ed ACPI/Thermal: Use acpi_bus_attach_private_data() to attach priv=
ate data
95e9e92 ACPI: Add acpi_bus_attach_private_data() to facilitate to attac=
h data to ACPI handle
cc6fecb ACPICA: Export acpi_buffer_to_resource symbol
ad38de6 ACPI / LPSS: custom power domain for LPSS
b0caadf ACPI / PM: Export rest of the subsys functions
22a7210 ACPI / platform: add another ID for Broadcom Bluetooth and GPS =
chips
 (this just adds AAM4752 as another platform id)
000627d ACPI / platform: add IDs for Broadcom Bluetooth and GPS chips

Eike
=2D-=20
Rolf Eike Beer, emlix GmbH, http://www.emlix.com
Fon +49 551 30664-0, Fax +49 551 30664-11
Bertha-von-Suttner-Str. 9, 37085 G=F6ttingen, Germany
Sitz der Gesellschaft: G=F6ttingen, Amtsgericht G=F6ttingen HR B 3160
Gesch=E4ftsf=FChrung: Dr. Uwe Kracke, Ust-IdNr.: DE 205 198 055

emlix - smart embedded open source

=2D-nextPart3540697.JozLVkjM1S
Content-Disposition: attachment; filename="acpi_fw10.dat.gz"
Content-Transfer-Encoding: base64
Content-Type: application/x-gzip; name="acpi_fw10.dat.gz"

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

=2D-nextPart3540697.JozLVkjM1S
Content-Disposition: attachment; filename="dmesg.log-3.15-rc5-inari2"
Content-Transfer-Encoding: 7Bit
Content-Type: text/plain; charset="UTF-8"; name="dmesg.log-3.15-rc5-inari2"

[    0.000000] Initializing cgroup subsys cpuset
[    0.000000] Initializing cgroup subsys cpu
[    0.000000] Initializing cgroup subsys cpuacct
[    0.000000] Linux version 3.15.0-rc5-Inari (root@devpool02) (gcc version 4.8.2 (Emlix Linux Inari) ) #1 SMP Tue May 20 13:33:31 UTC 2014
[    0.000000] e820: BIOS-provided physical RAM map:
[    0.000000] BIOS-e820: [mem 0x0000000000000000-0x000000000008efff] usable
[    0.000000] BIOS-e820: [mem 0x000000000008f000-0x000000000008ffff] ACPI NVS
[    0.000000] BIOS-e820: [mem 0x0000000000090000-0x000000000009dfff] usable
[    0.000000] BIOS-e820: [mem 0x000000000009e000-0x000000000009ffff] reserved
[    0.000000] BIOS-e820: [mem 0x0000000000100000-0x000000001fffffff] usable
[    0.000000] BIOS-e820: [mem 0x0000000020000000-0x00000000200fffff] reserved
[    0.000000] BIOS-e820: [mem 0x0000000020100000-0x0000000078345fff] usable
[    0.000000] BIOS-e820: [mem 0x0000000078346000-0x0000000078c45fff] reserved
[    0.000000] BIOS-e820: [mem 0x0000000078c46000-0x0000000078d45fff] ACPI NVS
[    0.000000] BIOS-e820: [mem 0x0000000078d46000-0x0000000078d85fff] ACPI data
[    0.000000] BIOS-e820: [mem 0x0000000078d86000-0x00000000794c7fff] usable
[    0.000000] BIOS-e820: [mem 0x00000000794c8000-0x0000000079dc7fff] ACPI NVS
[    0.000000] BIOS-e820: [mem 0x0000000079dc8000-0x0000000079ffffff] usable
[    0.000000] BIOS-e820: [mem 0x00000000e00f8000-0x00000000e00f8fff] reserved
[    0.000000] BIOS-e820: [mem 0x00000000fed01000-0x00000000fed01fff] reserved
[    0.000000] BIOS-e820: [mem 0x00000000ffd00000-0x00000000ffffffff] reserved
[    0.000000] Notice: NX (Execute Disable) protection cannot be enabled: non-PAE kernel!
[    0.000000] efi: EFI v2.31 by INSYDE Corp.
[    0.000000] efi:  ACPI 2.0=0x78d85014  SMBIOS=0x78c45000 
[    0.000000] efi: mem00: type=7, attr=0xf, range=[0x0000000000000000-0x0000000000001000) (0MB)
[    0.000000] efi: mem01: type=2, attr=0xf, range=[0x0000000000001000-0x0000000000007000) (0MB)
[    0.000000] efi: mem02: type=7, attr=0xf, range=[0x0000000000007000-0x000000000008f000) (0MB)
[    0.000000] efi: mem03: type=10, attr=0xf, range=[0x000000000008f000-0x0000000000090000) (0MB)
[    0.000000] efi: mem04: type=7, attr=0xf, range=[0x0000000000090000-0x000000000009e000) (0MB)
[    0.000000] efi: mem05: type=0, attr=0xf, range=[0x000000000009e000-0x00000000000a0000) (0MB)
[    0.000000] efi: mem06: type=7, attr=0xf, range=[0x0000000000100000-0x0000000001000000) (15MB)
[    0.000000] efi: mem07: type=2, attr=0xf, range=[0x0000000001000000-0x0000000002585000) (21MB)
[    0.000000] efi: mem08: type=7, attr=0xf, range=[0x0000000002585000-0x0000000020000000) (474MB)
[    0.000000] efi: mem09: type=0, attr=0xf, range=[0x0000000020000000-0x0000000020100000) (1MB)
[    0.000000] efi: mem10: type=7, attr=0xf, range=[0x0000000020100000-0x0000000071dc0000) (1308MB)
[    0.000000] efi: mem11: type=4, attr=0xf, range=[0x0000000071dc0000-0x0000000071de0000) (0MB)
[    0.000000] efi: mem12: type=7, attr=0xf, range=[0x0000000071de0000-0x0000000072bc7000) (13MB)
[    0.000000] efi: mem13: type=2, attr=0xf, range=[0x0000000072bc7000-0x0000000072bc9000) (0MB)
[    0.000000] efi: mem14: type=1, attr=0xf, range=[0x0000000072bc9000-0x0000000073b46000) (15MB)
[    0.000000] efi: mem15: type=7, attr=0xf, range=[0x0000000073b46000-0x0000000076a92000) (47MB)
[    0.000000] efi: mem16: type=4, attr=0xf, range=[0x0000000076a92000-0x00000000774ec000) (10MB)
[    0.000000] efi: mem17: type=7, attr=0xf, range=[0x00000000774ec000-0x00000000774f9000) (0MB)
[    0.000000] efi: mem18: type=4, attr=0xf, range=[0x00000000774f9000-0x0000000077d46000) (8MB)
[    0.000000] efi: mem19: type=7, attr=0xf, range=[0x0000000077d46000-0x0000000078161000) (4MB)
[    0.000000] efi: mem20: type=3, attr=0xf, range=[0x0000000078161000-0x0000000078346000) (1MB)
[    0.000000] efi: mem21: type=5, attr=0x800000000000000f, range=[0x0000000078346000-0x0000000078546000) (2MB)
[    0.000000] efi: mem22: type=6, attr=0x800000000000000f, range=[0x0000000078546000-0x0000000078846000) (3MB)
[    0.000000] efi: mem23: type=0, attr=0xf, range=[0x0000000078846000-0x0000000078c46000) (4MB)
[    0.000000] efi: mem24: type=10, attr=0xf, range=[0x0000000078c46000-0x0000000078d46000) (1MB)
[    0.000000] efi: mem25: type=9, attr=0xf, range=[0x0000000078d46000-0x0000000078d86000) (0MB)
[    0.000000] efi: mem26: type=4, attr=0xf, range=[0x0000000078d86000-0x00000000794c8000) (7MB)
[    0.000000] efi: mem27: type=10, attr=0xf, range=[0x00000000794c8000-0x0000000079dc8000) (9MB)
[    0.000000] efi: mem28: type=4, attr=0xf, range=[0x0000000079dc8000-0x000000007a000000) (2MB)
[    0.000000] efi: mem29: type=11, attr=0x8000000000000001, range=[0x00000000e00f8000-0x00000000e00f9000) (0MB)
[    0.000000] efi: mem30: type=11, attr=0x8000000000000000, range=[0x00000000fed01000-0x00000000fed02000) (0MB)
[    0.000000] efi: mem31: type=11, attr=0x8000000000000000, range=[0x00000000ffd00000-0x0000000100000000) (3MB)
[    0.000000] SMBIOS 2.7 present.
[    0.000000] DMI: Aava Mobile Oy Inari 8 2GB/Type2 - Board Product Name, BIOS BYT.5.03.47.0033-022 01/16/2014
[    0.000000] e820: update [mem 0x00000000-0x00000fff] usable ==> reserved
[    0.000000] e820: remove [mem 0x000a0000-0x000fffff] usable
[    0.000000] e820: last_pfn = 0x7a000 max_arch_pfn = 0x100000
[    0.000000] MTRR default type: uncachable
[    0.000000] MTRR fixed ranges enabled:
[    0.000000]   00000-9FFFF write-back
[    0.000000]   A0000-FFFFF write-protect
[    0.000000] MTRR variable ranges enabled:
[    0.000000]   0 base 0FFD00000 mask FFFC00000 write-protect
[    0.000000]   1 base 000000000 mask FC0000000 write-back
[    0.000000]   2 base 040000000 mask FE0000000 write-back
[    0.000000]   3 base 060000000 mask FF0000000 write-back
[    0.000000]   4 base 070000000 mask FF8000000 write-back
[    0.000000]   5 base 078000000 mask FFC000000 write-back
[    0.000000]   6 base 07B000000 mask FFF000000 uncachable
[    0.000000]   7 base 07AE00000 mask FFFE00000 uncachable
[    0.000000] x86 PAT enabled: cpu 0, old 0x7040600070406, new 0x7010600070106
[    0.000000] Scanning 1 areas for low memory corruption
[    0.000000] initial memory mapped: [mem 0x00000000-0x027fffff]
[    0.000000] Base memory trampoline at [c009a000] 9a000 size 16384
[    0.000000] init_memory_mapping: [mem 0x00000000-0x000fffff]
[    0.000000]  [mem 0x00000000-0x000fffff] page 4k
[    0.000000] init_memory_mapping: [mem 0x37000000-0x373fffff]
[    0.000000]  [mem 0x37000000-0x373fffff] page 2M
[    0.000000] init_memory_mapping: [mem 0x30000000-0x36ffffff]
[    0.000000]  [mem 0x30000000-0x36ffffff] page 2M
[    0.000000] init_memory_mapping: [mem 0x00100000-0x1fffffff]
[    0.000000]  [mem 0x00100000-0x003fffff] page 4k
[    0.000000]  [mem 0x00400000-0x1fffffff] page 2M
[    0.000000] init_memory_mapping: [mem 0x20100000-0x2fffffff]
[    0.000000]  [mem 0x20100000-0x203fffff] page 4k
[    0.000000]  [mem 0x20400000-0x2fffffff] page 2M
[    0.000000] BRK [0x0246a000, 0x0246afff] PGTABLE
[    0.000000] init_memory_mapping: [mem 0x37400000-0x377fdfff]
[    0.000000]  [mem 0x37400000-0x377fdfff] page 4k
[    0.000000] BRK [0x0246b000, 0x0246bfff] PGTABLE
[    0.000000] ACPI: RSDP 0x78D85014 000024 (v02 INSYDE)
[    0.000000] ACPI: XSDT 0x78D61188 0000D4 (v01 INSYDE INSYDE   00000003      01000013)
[    0.000000] ACPI: FACP 0x78D7F000 00010C (v05 INSYDE INSYDE   00000003 ACPI 00040000)
[    0.000000] ACPI: DSDT 0x78D6E000 00BAEC (v02 INSYDE INSYDE   00000003 ACPI 00040000)
[    0.000000] ACPI: UEFI 0x78D84000 000236 (v01 INSYDE INSYDE   00000001 ACPI 00040000)
[    0.000000] ACPI: TCPA 0x78D83000 000032 (v02 INSYDE INSYDE   00000000 ACPI 00040000)
[    0.000000] ACPI: UEFI 0x78D81000 000042 (v01 INSYDE INSYDE   00000000 ACPI 00040000)
[    0.000000] ACPI: DBG2 0x78D80000 000072 (v00 INSYDE INSYDE   00000003 ACPI 00040000)
[    0.000000] ACPI: HPET 0x78D7E000 000038 (v01 INSYDE INSYDE   00000003 ACPI 00040000)
[    0.000000] ACPI: LPIT 0x78D7D000 000104 (v01 INSYDE INSYDE   00000003 ACPI 00040000)
[    0.000000] ACPI: APIC 0x78D7C000 00006C (v03 INSYDE INSYDE   00000003 ACPI 00040000)
[    0.000000] ACPI: MCFG 0x78D7B000 00003C (v01 INSYDE INSYDE   00000003 ACPI 00040000)
[    0.000000] ACPI: SLIC 0x78D7A000 000176 (v01 INSYDE INSYDE   00000003 ACPI 00040000)
[    0.000000] ACPI: SSDT 0x78D6D000 0005FB (v01 INSYDE CpuDptf  00000003 ACPI 00040000)
[    0.000000] ACPI: SSDT 0x78D6B000 0018C2 (v01 INSYDE DptfTab  00000003 ACPI 00040000)
[    0.000000] ACPI: SSDT 0x78D6A000 000058 (v01 INSYDE LowPwrM  00000003 ACPI 00040000)
[    0.000000] ACPI: SSDT 0x78D69000 0000FF (v01 INSYDE SoCDptf  00000003 ACPI 00040000)
[    0.000000] ACPI: SSDT 0x78D68000 00043A (v01 INSYDE Tpm2Tabl 00001000 ACPI 00040000)
[    0.000000] ACPI: TPM2 0x78D67000 000034 (v03 INSYDE INSYDE   00000000 ACPI 00040000)
[    0.000000] ACPI: SSDT 0x78D66000 000763 (v01 INSYDE CpuPm    00003000 ACPI 00040000)
[    0.000000] ACPI: SSDT 0x78D65000 000290 (v01 INSYDE Cpu0Tst  00003000 ACPI 00040000)
[    0.000000] ACPI: SSDT 0x78D64000 00017A (v01 INSYDE ApTst    00003000 ACPI 00040000)
[    0.000000] ACPI: FPDT 0x78D63000 000044 (v01 INSYDE INSYDE   00000001 ACPI 00040000)
[    0.000000] ACPI: CSRT 0x78D62000 00014C (v00 INSYDE INSYDE   00000005 ACPI 00040000)
[    0.000000] ACPI: BGRT 0x78D60000 000038 (v01 INSYDE INSYDE   00000001 ACPI 00040000)
[    0.000000] ACPI: Local APIC address 0xfee00000
[    0.000000] 1064MB HIGHMEM available.
[    0.000000] 887MB LOWMEM available.
[    0.000000]   mapped low ram: 0 - 377fe000
[    0.000000]   low ram: 0 - 377fe000
[    0.000000] BRK [0x0246c000, 0x0246cfff] PGTABLE
[    0.000000] Zone ranges:
[    0.000000]   DMA      [mem 0x00001000-0x00ffffff]
[    0.000000]   Normal   [mem 0x01000000-0x377fdfff]
[    0.000000]   HighMem  [mem 0x377fe000-0x79ffffff]
[    0.000000] Movable zone start for each node
[    0.000000] Early memory node ranges
[    0.000000]   node   0: [mem 0x00001000-0x0008efff]
[    0.000000]   node   0: [mem 0x00090000-0x0009dfff]
[    0.000000]   node   0: [mem 0x00100000-0x1fffffff]
[    0.000000]   node   0: [mem 0x20100000-0x78345fff]
[    0.000000]   node   0: [mem 0x78d86000-0x794c7fff]
[    0.000000]   node   0: [mem 0x79dc8000-0x79ffffff]
[    0.000000] On node 0 totalpages: 494428
[    0.000000] free_area_init_node: node 0, pgdat c17447c0, node_mem_map f68be020
[    0.000000]   DMA zone: 32 pages used for memmap
[    0.000000]   DMA zone: 0 pages reserved
[    0.000000]   DMA zone: 3996 pages, LIFO batch:0
[    0.000000]   Normal zone: 1744 pages used for memmap
[    0.000000]   Normal zone: 222974 pages, LIFO batch:31
[    0.000000]   HighMem zone: 2129 pages used for memmap
[    0.000000]   HighMem zone: 267458 pages, LIFO batch:31
[    0.000000] Using APIC driver default
[    0.000000] x86/hpet: Will disable the HPET for this platform because it's not reliable
[    0.000000] Reserving Intel graphics stolen memory at 0x7af00000-0x7eefffff
[    0.000000] ACPI: Local APIC address 0xfee00000
[    0.000000] ACPI: LAPIC (acpi_id[0x01] lapic_id[0x00] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0x02] lapic_id[0x02] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0x03] lapic_id[0x04] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0x04] lapic_id[0x06] enabled)
[    0.000000] ACPI: IOAPIC (id[0x02] address[0xfec00000] gsi_base[0])
[    0.000000] IOAPIC[0]: apic_id 2, version 32, address 0xfec00000, GSI 0-86
[    0.000000] ACPI: INT_SRC_OVR (bus 0 bus_irq 0 global_irq 2 dfl dfl)
[    0.000000] ACPI: INT_SRC_OVR (bus 0 bus_irq 9 global_irq 9 high level)
[    0.000000] ACPI: IRQ0 used by override.
[    0.000000] ACPI: IRQ2 used by override.
[    0.000000] ACPI: IRQ9 used by override.
[    0.000000] Using ACPI (MADT) for SMP configuration information
[    0.000000] ACPI: HPET id: 0x8086a201 base: 0xfed00000
[    0.000000] smpboot: Allowing 4 CPUs, 0 hotplug CPUs
[    0.000000] nr_irqs_gsi: 103
[    0.000000] PM: Registered nosave memory: [mem 0x0008f000-0x0008ffff]
[    0.000000] PM: Registered nosave memory: [mem 0x0009e000-0x0009ffff]
[    0.000000] PM: Registered nosave memory: [mem 0x000a0000-0x000fffff]
[    0.000000] PM: Registered nosave memory: [mem 0x20000000-0x200fffff]
[    0.000000] e820: [mem 0x7ef00000-0xe00f7fff] available for PCI devices
[    0.000000] setup_percpu: NR_CPUS:4 nr_cpumask_bits:4 nr_cpu_ids:4 nr_node_ids:1
[    0.000000] PERCPU: Embedded 12 pages/cpu @f6882000 s27264 r0 d21888 u49152
[    0.000000] pcpu-alloc: s27264 r0 d21888 u49152 alloc=12*4096
[    0.000000] pcpu-alloc: [0] 0 [0] 1 [0] 2 [0] 3 
[    0.000000] Built 1 zonelists in Zone order, mobility grouping on.  Total pages: 492652
[    0.000000] Kernel command line: root=/dev/sda2 video=HDMI-A-1:1200x1920e drm_kms_helper.edid_firmware=HDMI-A-1:edid/1200x1920.bin 
[    0.000000] PID hash table entries: 4096 (order: 2, 16384 bytes)
[    0.000000] Dentry cache hash table entries: 131072 (order: 7, 524288 bytes)
[    0.000000] Inode-cache hash table entries: 65536 (order: 6, 262144 bytes)
[    0.000000] Initializing CPU#0
[    0.000000] Initializing HighMem for node 0 (000377fe:0007a000)
[    0.000000] Initializing Movable for node 0 (00000000:00000000)
[    0.000000] Memory: 1909196K/1977712K available (5512K kernel code, 337K rwdata, 1644K rodata, 12096K init, 1236K bss, 68516K reserved, 1038956K highmem)
[    0.000000] virtual kernel memory layout:
[    0.000000]     fixmap  : 0xfff66000 - 0xfffff000   ( 612 kB)
[    0.000000]     pkmap   : 0xff800000 - 0xffc00000   (4096 kB)
[    0.000000]     vmalloc : 0xf7ffe000 - 0xff7fe000   ( 120 MB)
[    0.000000]     lowmem  : 0xc0000000 - 0xf77fe000   ( 887 MB)
[    0.000000]       .init : 0xc1755000 - 0xc2325000   (12096 kB)
[    0.000000]       .data : 0xc1562492 - 0xc1753640   (1988 kB)
[    0.000000]       .text : 0xc1000000 - 0xc1562492   (5513 kB)
[    0.000000] Checking if this processor honours the WP bit even in supervisor mode...Ok.
[    0.000000] SLUB: HWalign=64, Order=0-3, MinObjects=0, CPUs=4, Nodes=1
[    0.000000] Hierarchical RCU implementation.
[    0.000000] NR_IRQS:2304 nr_irqs:1024 16
[    0.000000] CPU 0 irqstacks, hard=f600c000 soft=f600e000
[    0.000000] Console: colour dummy device 80x25
[    0.000000] console [tty0] enabled
[    0.000000] Maximum core-clock to bus-clock ratio: 0xa
[    0.000000] Resolved frequency ID: 2, frequency: 133200 KHz
[    0.000000] TSC runs at 1332000 KHz
[    0.000000] lapic_timer_frequency = 133200
[    0.000000] tsc: Detected 1332.000 MHz processor
[    0.000037] Calibrating delay loop (skipped), value calculated using timer frequency.. 2664.00 BogoMIPS (lpj=1332000)
[    0.000055] pid_max: default: 32768 minimum: 301
[    0.000071] ACPI: Core revision 20140214
[    0.044283] ACPI: All ACPI Tables successfully acquired
[    0.046946] Mount-cache hash table entries: 2048 (order: 1, 8192 bytes)
[    0.046966] Mountpoint-cache hash table entries: 2048 (order: 1, 8192 bytes)
[    0.047312] Initializing cgroup subsys freezer
[    0.047355] CPU: Physical Processor ID: 0
[    0.047365] CPU: Processor Core ID: 0
[    0.047376] ENERGY_PERF_BIAS: Set to 'normal', was 'performance'
[    0.047376] ENERGY_PERF_BIAS: View and update with x86_energy_perf_policy(8)
[    0.059505] mce: CPU supports 6 MCE banks
[    0.059523] CPU0: Thermal monitoring enabled (TM1)
[    0.059544] Last level iTLB entries: 4KB 48, 2MB 0, 4MB 0
[    0.059544] Last level dTLB entries: 4KB 128, 2MB 16, 4MB 16, 1GB 0
[    0.059544] tlb_flushall_shift: 6
[    0.059737] Freeing SMP alternatives memory: 20K (c2325000 - c232a000)
[    0.059772] ------------[ cut here ]------------
[    0.059792] WARNING: CPU: 0 PID: 0 at /tmp/e2/build/linux-git/mm/early_ioremap.c:136 __early_ioremap+0xee/0x1a6()
[    0.059804] Modules linked in:
[    0.059817] CPU: 0 PID: 0 Comm: swapper/0 Not tainted 3.15.0-rc5-Inari #1
[    0.059827] Hardware name: Aava Mobile Oy Inari 8 2GB/Type2 - Board Product Name, BIOS BYT.5.03.47.0033-022 01/16/2014
[    0.059840]  00000000 00000000 c1701f0c c15561be 00000000 c1701f3c c103d194 c164e24c
[    0.059862]  00000000 00000000 c1655de4 00000088 c1771c13 c1771c13 00000042 77526000
[    0.059883]  00000000 c1701f4c c103d22d 00000009 00000000 c1701fa0 c1771c13 c17454c0
[    0.059904] Call Trace:
[    0.059919]  [<c15561be>] dump_stack+0x41/0x52
[    0.059932]  [<c103d194>] warn_slowpath_common+0x74/0x90
[    0.059945]  [<c1771c13>] ? __early_ioremap+0xee/0x1a6
[    0.059957]  [<c1771c13>] ? __early_ioremap+0xee/0x1a6
[    0.059968]  [<c103d22d>] warn_slowpath_null+0x1d/0x20
[    0.059981]  [<c1771c13>] __early_ioremap+0xee/0x1a6
[    0.059993]  [<c10368df>] ? __native_set_fixmap+0x1f/0x30
[    0.060021]  [<c1771e80>] early_memremap+0xd/0xf
[    0.060034]  [<c1768753>] efi_bgrt_init+0xe6/0x129
[    0.060046]  [<c1768077>] efi_late_init+0x8/0xa
[    0.060058]  [<c1755a3b>] start_kernel+0x34f/0x35f
[    0.060070]  [<c1755523>] ? repair_env_string+0x51/0x51
[    0.060081]  [<c1755369>] i386_start_kernel+0x137/0x13a
[    0.060104] ---[ end trace 840e1cff9080aa63 ]---
[    0.063071] Enabling APIC mode:  Flat.  Using 1 I/O APICs
[    0.064118] ..TIMER: vector=0x30 apic1=0 pin1=2 apic2=-1 pin2=-1
[    0.074144] ..MP-BIOS bug: 8254 timer not connected to IO-APIC
[    0.074153] ...trying to set up timer (IRQ0) through the 8259A ...
[    0.074162] ..... (found apic 0 pin 2) ...
[    0.084178] ....... works.
[    0.084186] smpboot: CPU0: Intel(R) Atom(TM) CPU  Z3745  @ 1.33GHz (fam: 06, model: 37, stepping: 08)
[    0.084226] TSC deadline timer enabled
[    0.084241] Performance Events: PEBS fmt2+, 8-deep LBR, Silvermont events, full-width counters, Intel PMU driver.
[    0.084267] ... version:                3
[    0.084275] ... bit width:              40
[    0.084283] ... generic registers:      2
[    0.084290] ... value mask:             000000ffffffffff
[    0.084299] ... max period:             000000ffffffffff
[    0.084306] ... fixed-purpose events:   3
[    0.084314] ... event mask:             0000000700000003
[    0.085895] CPU 1 irqstacks, hard=f60a6000 soft=f60b0000
[    0.085901] x86: Booting SMP configuration:
[    0.085911] .... node  #0, CPUs:      #1
[    0.096027] Initializing CPU#1
[    0.111238] CPU 2 irqstacks, hard=f60ba000 soft=f60bc000
[    0.111257]  #2
[    0.121310] Initializing CPU#2
[    0.136523] CPU 3 irqstacks, hard=f60c6000 soft=f60c8000
[    0.136537]  #3
[    0.146591] Initializing CPU#3
[    0.161676] x86: Booted up 1 node, 4 CPUs
[    0.161696] smpboot: Total of 4 processors activated (10656.00 BogoMIPS)
[    0.162646] devtmpfs: initialized
[    0.163134] PM: Registering ACPI NVS region [mem 0x0008f000-0x0008ffff] (4096 bytes)
[    0.163150] PM: Registering ACPI NVS region [mem 0x78c46000-0x78d45fff] (1048576 bytes)
[    0.163202] PM: Registering ACPI NVS region [mem 0x794c8000-0x79dc7fff] (9437184 bytes)
[    0.163750] pinctrl core: initialized pinctrl subsystem
[    0.163810] RTC time:  6:00:32, date: 05/20/14
[    0.163897] NET: Registered protocol family 16
[    0.164225] cpuidle: using governor ladder
[    0.164236] cpuidle: using governor menu
[    0.164310] ACPI: bus type PCI registered
[    0.164463] PCI: MMCONFIG for domain 0000 [bus 00-3f] at [mem 0xe0000000-0xe3ffffff] (base 0xe0000000)
[    0.164480] PCI: not using MMCONFIG
[    0.164835] PCI: Using configuration type 1 for base access
[    0.169934] ACPI: Added _OSI(Module Device)
[    0.169949] ACPI: Added _OSI(Processor Device)
[    0.169958] ACPI: Added _OSI(3.0 _SCP Extensions)
[    0.169967] ACPI: Added _OSI(Processor Aggregator Device)
[    0.205576] ACPI: SSDT 0x78BCAA90 000353 (v01 PmRef  Cpu0Ist  00003000 INTL 20130117)
[    0.207151] ACPI: Dynamic OEM Table Load:
[    0.207166] ACPI: SSDT 0x00000000 000353 (v01 PmRef  Cpu0Ist  00003000 INTL 20130117)
[    0.207698] ACPI: SSDT 0x78BC9910 000433 (v01 PmRef  Cpu0Cst  00003001 INTL 20130117)
[    0.209556] ACPI: Dynamic OEM Table Load:
[    0.209570] ACPI: SSDT 0x00000000 000433 (v01 PmRef  Cpu0Cst  00003001 INTL 20130117)
[    0.216146] ACPI: SSDT 0x78BCBD90 00015F (v01 PmRef  ApIst    00003000 INTL 20130117)
[    0.217742] ACPI: Dynamic OEM Table Load:
[    0.217756] ACPI: SSDT 0x00000000 00015F (v01 PmRef  ApIst    00003000 INTL 20130117)
[    0.220317] ACPI: SSDT 0x78BCBF10 00008D (v01 PmRef  ApCst    00003000 INTL 20130117)
[    0.221740] ACPI: Dynamic OEM Table Load:
[    0.221754] ACPI: SSDT 0x00000000 00008D (v01 PmRef  ApCst    00003000 INTL 20130117)
[    0.227520] ACPI: Interpreter enabled
[    0.227556] ACPI Exception: AE_NOT_FOUND, While evaluating Sleep State [\_S1_] (20140214/hwxface-580)
[    0.227580] ACPI Exception: AE_NOT_FOUND, While evaluating Sleep State [\_S2_] (20140214/hwxface-580)
[    0.227601] ACPI Exception: AE_NOT_FOUND, While evaluating Sleep State [\_S3_] (20140214/hwxface-580)
[    0.227622] ACPI Exception: AE_NOT_FOUND, While evaluating Sleep State [\_S4_] (20140214/hwxface-580)
[    0.227642] ACPI Exception: AE_NOT_FOUND, While evaluating Sleep State [\_S5_] (20140214/hwxface-580)
[    0.227660] ACPI: (supports S0)
[    0.227668] ACPI: Using IOAPIC for interrupt routing
[    0.227757] PCI: MMCONFIG for domain 0000 [bus 00-3f] at [mem 0xe0000000-0xe3ffffff] (base 0xe0000000)
[    0.235389] [Firmware Info]: PCI: MMCONFIG at [mem 0xe0000000-0xe3ffffff] not reserved in ACPI motherboard resources
[    0.235406] PCI: not using MMCONFIG
[    0.235464] PCI: Using host bridge windows from ACPI; if necessary, use "pci=nocrs" and report a bug
[    0.238750] ACPI: Power Resource [USBC] (on)
[    0.242935] ACPI: Power Resource [WWPR] (off)
[    0.253593] ACPI: Power Resource [PLPE] (on)
[    0.265552] ACPI: Power Resource [CLK0] (on)
[    0.265698] ACPI: Power Resource [CLK1] (on)
[    0.266063] ACPI: Power Resource [P28X] (off)
[    0.266206] ACPI: Power Resource [P18X] (off)
[    0.268756] ACPI: Power Resource [TCPR] (off)
[    0.275852] ACPI: PCI Root Bridge [PCI0] (domain 0000 [bus 00-ff])
[    0.275877] acpi PNP0A08:00: _OSC: OS supports [ASPM ClockPM Segments MSI]
[    0.276078] \_SB_.PCI0:_OSC invalid UUID
[    0.276083] _OSC request data:1 1e 0 
[    0.276096] acpi PNP0A08:00: _OSC failed (AE_ERROR); disabling ASPM
[    0.277397] acpi PNP0A08:00: fail to add MMCONFIG information, can't access extended PCI configuration space under this bridge.
[    0.277495] PCI host bridge to bus 0000:00
[    0.277510] pci_bus 0000:00: root bus resource [bus 00-ff]
[    0.277522] pci_bus 0000:00: root bus resource [io  0x0000-0x006f]
[    0.277534] pci_bus 0000:00: root bus resource [io  0x0078-0x0cf7]
[    0.277545] pci_bus 0000:00: root bus resource [io  0x0d00-0xffff]
[    0.277557] pci_bus 0000:00: root bus resource [mem 0x000a0000-0x000bffff]
[    0.277569] pci_bus 0000:00: root bus resource [mem 0x000c0000-0x000dffff]
[    0.277581] pci_bus 0000:00: root bus resource [mem 0x000e0000-0x000fffff]
[    0.277593] pci_bus 0000:00: root bus resource [mem 0x90c00000-0x90ffffff]
[    0.277604] pci_bus 0000:00: root bus resource [mem 0x7af00001-0x7ef00000]
[    0.277616] pci_bus 0000:00: root bus resource [mem 0x80000000-0x908ffffe]
[    0.277628] pci_bus 0000:00: root bus resource [mem 0xfed40000-0xfed40fff]
[    0.277652] pci 0000:00:00.0: [8086:0f00] type 00 class 0x060000
[    0.277844] pci 0000:00:02.0: [8086:0f31] type 00 class 0x030000
[    0.277870] pci 0000:00:02.0: reg 0x10: [mem 0x90000000-0x903fffff]
[    0.277889] pci 0000:00:02.0: reg 0x18: [mem 0x80000000-0x8fffffff pref]
[    0.277907] pci 0000:00:02.0: reg 0x20: [io  0x1000-0x1007]
[    0.278123] pci 0000:00:14.0: [8086:0f35] type 00 class 0x0c0330
[    0.278154] pci 0000:00:14.0: reg 0x10: [mem 0x90800000-0x9080ffff 64bit]
[    0.278234] pci 0000:00:14.0: PME# supported from D3hot D3cold
[    0.278409] pci 0000:00:1a.0: [8086:0f18] type 00 class 0x108000
[    0.278451] pci 0000:00:1a.0: reg 0x10: [mem 0x90700000-0x907fffff]
[    0.278469] pci 0000:00:1a.0: reg 0x14: [mem 0x90600000-0x906fffff]
[    0.278570] pci 0000:00:1a.0: PME# supported from D0 D3hot
[    0.278744] pci 0000:00:1f.0: [8086:0f1c] type 00 class 0x060100
[    0.278969] pci_bus 0000:00: on NUMA node 0
[    0.280068] ACPI: PCI Interrupt Link [LNKA] (IRQs 3 4 5 6 10 11 12 14 15) *0, disabled.
[    0.280384] ACPI: PCI Interrupt Link [LNKB] (IRQs 3 4 5 6 10 11 12 14 15) *0, disabled.
[    0.280709] ACPI: PCI Interrupt Link [LNKC] (IRQs 3 4 5 6 10 11 12 14 15) *0, disabled.
[    0.281023] ACPI: PCI Interrupt Link [LNKD] (IRQs 3 4 5 6 10 11 12 14 15) *0, disabled.
[    0.281343] ACPI: PCI Interrupt Link [LNKE] (IRQs 3 4 5 6 10 11 12 14 15) *0, disabled.
[    0.281666] ACPI: PCI Interrupt Link [LNKF] (IRQs 3 4 5 6 10 11 12 14 15) *0, disabled.
[    0.281977] ACPI: PCI Interrupt Link [LNKG] (IRQs 3 4 5 6 10 11 12 14 15) *0, disabled.
[    0.282289] ACPI: PCI Interrupt Link [LNKH] (IRQs 3 4 5 6 10 11 12 14 15) *0, disabled.
[    0.296031] dw_dmac INTL9C60:00: DesignWare DMA Controller, 8 channels
[    0.296777] dw_dmac INTL9C60:01: DesignWare DMA Controller, 8 channels
[    0.297560] vgaarb: device added: PCI:0000:00:02.0,decodes=io+mem,owns=io+mem,locks=none
[    0.297576] vgaarb: loaded
[    0.297584] vgaarb: bridge control possible 0000:00:02.0
[    0.297838] SCSI subsystem initialized
[    0.297856] ACPI: bus type USB registered
[    0.297942] usbcore: registered new interface driver usbfs
[    0.297987] usbcore: registered new interface driver hub
[    0.298068] usbcore: registered new device driver usb
[    0.308808] intel_soc_pmic_i2c i2c-INT33FD:00: Can't enable IRQ as wake source: -6
[    0.309261] pps_core: LinuxPPS API ver. 1 registered
[    0.309273] pps_core: Software ver. 5.3.6 - Copyright 2005-2007 Rodolfo Giometti <giometti@linux.it>
[    0.309301] PTP clock support registered
[    0.309569] Advanced Linux Sound Architecture Driver Initialized.
[    0.309581] PCI: Using ACPI for IRQ routing
[    0.309591] PCI: pci_cache_line_size set to 64 bytes
[    0.309617] Expanded resource reserved due to conflict with PCI Bus 0000:00
[    0.309630] e820: reserve RAM buffer [mem 0x0008f000-0x0008ffff]
[    0.309635] e820: reserve RAM buffer [mem 0x0009e000-0x0009ffff]
[    0.309640] e820: reserve RAM buffer [mem 0x78346000-0x7bffffff]
[    0.309645] e820: reserve RAM buffer [mem 0x794c8000-0x7bffffff]
[    0.309650] e820: reserve RAM buffer [mem 0x7a000000-0x7bffffff]
[    0.310156] cfg80211: Calling CRDA to update world regulatory domain
[    0.310342] Switched to clocksource refined-jiffies
[    0.310498] pnp: PnP ACPI init
[    0.310525] ACPI: bus type PNP registered
[    0.310655] pnp 00:00: Plug and Play ACPI device, IDs PNP0b00 (active)
[    0.310880] pnp 00:01: Plug and Play ACPI device, IDs PNP0103 (active)
[    0.310971] pnp 00:02: Plug and Play ACPI device, IDs INT0800 (active)
[    0.311091] system 00:03: [io  0x0680-0x069f] has been reserved
[    0.311106] system 00:03: [io  0x0400-0x047f] has been reserved
[    0.311118] system 00:03: [io  0x0500-0x05fe] has been reserved
[    0.311130] system 00:03: [io  0x0600-0x061f] has been reserved
[    0.311142] system 00:03: [io  0x164e-0x164f] has been reserved
[    0.311156] system 00:03: Plug and Play ACPI device, IDs PNP0c02 (active)
[    0.311511] pnp 00:04: Plug and Play ACPI device, IDs PNP0501 (active)
[    0.313011] pnp 00:05: Plug and Play ACPI device, IDs INT0002 (active)
[    0.314238] pnp 00:06: unknown resource type 19 in _CRS
[    0.314252] pnp 00:06: can't evaluate _CRS: 1
[    0.314322] pnp 00:06: Plug and Play ACPI device, IDs BCM2e3a (active)
[    0.321212] pnp 00:07: unknown resource type 17 in _CRS
[    0.321227] pnp 00:07: can't evaluate _CRS: 1
[    0.321349] pnp 00:07: Plug and Play ACPI device, IDs INTcfd9 PNP0c40 (active)
[    0.321500] pnp 00:08: Plug and Play ACPI device, IDs INT33bd (active)
[    0.321847] pnp 00:09: Plug and Play ACPI device, IDs INT3401 (active)
[    0.322163] pnp 00:0a: unknown resource type 17 in _CRS
[    0.322176] pnp 00:0a: can't evaluate _CRS: 1
[    0.322254] pnp 00:0a: Plug and Play ACPI device, IDs INT3403 (active)
[    0.322393] pnp 00:0b: unknown resource type 17 in _CRS
[    0.322405] pnp 00:0b: can't evaluate _CRS: 1
[    0.322482] pnp 00:0b: Plug and Play ACPI device, IDs INT3403 (active)
[    0.322677] pnp 00:0c: unknown resource type 17 in _CRS
[    0.322690] pnp 00:0c: can't evaluate _CRS: 1
[    0.322768] pnp 00:0c: Plug and Play ACPI device, IDs INT3409 (active)
[    0.323066] pnp: PnP ACPI: found 13 devices
[    0.323077] ACPI: bus type PNP unregistered
[    0.328160] pci_bus 0000:00: resource 4 [io  0x0000-0x006f]
[    0.328169] pci_bus 0000:00: resource 5 [io  0x0078-0x0cf7]
[    0.328175] pci_bus 0000:00: resource 6 [io  0x0d00-0xffff]
[    0.328182] pci_bus 0000:00: resource 7 [mem 0x000a0000-0x000bffff]
[    0.328188] pci_bus 0000:00: resource 8 [mem 0x000c0000-0x000dffff]
[    0.328195] pci_bus 0000:00: resource 9 [mem 0x000e0000-0x000fffff]
[    0.328201] pci_bus 0000:00: resource 10 [mem 0x90c00000-0x90ffffff]
[    0.328208] pci_bus 0000:00: resource 11 [mem 0x7af00001-0x7ef00000]
[    0.328214] pci_bus 0000:00: resource 12 [mem 0x80000000-0x908ffffe]
[    0.328221] pci_bus 0000:00: resource 13 [mem 0xfed40000-0xfed40fff]
[    0.328276] NET: Registered protocol family 2
[    0.328574] TCP established hash table entries: 8192 (order: 3, 32768 bytes)
[    0.328622] TCP bind hash table entries: 8192 (order: 4, 65536 bytes)
[    0.328689] TCP: Hash tables configured (established 8192 bind 8192)
[    0.328729] TCP: reno registered
[    0.328741] UDP hash table entries: 512 (order: 2, 16384 bytes)
[    0.328763] UDP-Lite hash table entries: 512 (order: 2, 16384 bytes)
[    0.328859] NET: Registered protocol family 1
[    0.328905] pci 0000:00:02.0: Boot video device
[    0.329302] PCI: CLS 0 bytes, default 64
[    0.603872] byt_gpio INT33FC:02: Gpio 18 interrupt flood, disabling
[    0.809288] microcode: CPU0 sig=0x30678, pf=0x2, revision=0x808
[    0.809323] microcode: CPU1 sig=0x30678, pf=0x2, revision=0x808
[    0.809351] microcode: CPU2 sig=0x30678, pf=0x2, revision=0x808
[    0.809379] microcode: CPU3 sig=0x30678, pf=0x2, revision=0x808
[    0.809501] microcode: Microcode Update Driver: v2.00 <tigran@aivazian.fsnet.co.uk>, Peter Oruba
[    0.810143] Scanning for low memory corruption every 60 seconds
[    0.810759] futex hash table entries: 1024 (order: 4, 65536 bytes)
[    0.810811] audit: initializing netlink subsys (disabled)
[    0.810853] audit: type=2000 audit(1400565632.776:1): initialized
[    0.846786] bounce pool size: 64 pages
[    0.846804] HugeTLB registered 4 MB page size, pre-allocated 0 pages
[    0.852277] msgmni has been set to 1760
[    0.852992] Block layer SCSI generic (bsg) driver version 0.4 loaded (major 251)
[    0.853007] io scheduler noop registered
[    0.853016] io scheduler deadline registered
[    0.853177] io scheduler cfq registered (default)
[    0.857446] intel_idle: MWAIT substates: 0x33000020
[    0.857452] intel_idle: v0.4 model 0x37
[    0.857457] intel_idle: lapic_timer_reliable_states 0xffffffff
[    0.863915] ACPI: AC Adapter [ADP1] (on-line)
[    0.864239] input: Power Button as /devices/LNXSYSTM:00/LNXPWRBN:00/input/input0
[    0.864260] ACPI: Power Button [PWRF]
[    0.864272] ACPI Warning: Could not enable fixed event - PowerButton (2) (20140214/evxface-628)
[    0.868088] button: probe of LNXPWRBN:00 failed with error -22
[    0.873934] ACPI Exception: AE_ERROR, Returned by Handler for [GeneralPurposeIo] (20140214/evregion-282)
[    0.873966] ACPI Error: Method parse/execution failed [\_TZ_.TZ00._TMP] (Node f602ae40), AE_ERROR (20140214/psparse-536)
[    0.874012] [Firmware Bug]: No valid trip found
[    0.874275] Serial: 8250/16550 driver, 4 ports, IRQ sharing enabled
[    0.894687] 00:04: ttyS0 at I/O 0x3f8 (irq = 4, base_baud = 115200) is a 16550A
[    0.895709] 80860F0A:00: ttyS1 at MMIO 0x9091d000 (irq = 39, base_baud = 2764800) is a 16550A
[    0.895963] 80860F0A:01: ttyS2 at MMIO 0x9091f000 (irq = 40, base_baud = 2764800) is a 16550A
[    0.896298] hpet: number irqs doesn't agree with number of timers
[    0.896437] Non-volatile memory driver v1.3
[    0.896509] [drm] Initialized drm 1.1.0 20060810
[    0.898464] [drm] Memory usable by graphics device = 2048M
[    0.904214] ACPI: \_SB_.PCI0.GFX0: Error attaching device data 7
[    0.904467] ACPI: \_SB_.PCI0.GFX0: Error attaching device data 7
[    0.904726] ACPI: \_SB_.PCI0.GFX0: Error attaching device data 7
[    0.904973] ACPI: \_SB_.PCI0.GFX0: Error attaching device data 7
[    0.905220] ACPI: \_SB_.PCI0.GFX0: Error attaching device data 7
[    0.907934] i915 0000:00:02.0: irq 128 for MSI/MSI-X
[    0.907951] [drm] Supports vblank timestamp caching Rev 2 (21.10.2013).
[    0.907962] [drm] Driver supports precise vblank timestamp query.
[    0.960460] vgaarb: device changed decodes: PCI:0000:00:02.0,olddecodes=io+mem,decodes=io+mem:owns=io+mem
[    0.961250] ACPI: \_SB_.PCI0.GFX0: Error attaching device data 7
[    0.961636] ACPI: \_SB_.PCI0.GFX0: Error attaching device data 7
[    1.489394] [drm] forcing HDMI-A-1 connector ON
[    1.565640] [drm] GMBUS [i915 gmbus vga] timed out, falling back to bit banging on pin 2
[    1.587008] [drm] Got external EDID base block and 0 extensions from "edid/1200x1920.bin" for connector "HDMI-A-1"
[    1.733267] [drm] GMBUS [i915 gmbus dpc] timed out, falling back to bit banging on pin 4
[    1.829666] fbcon: inteldrmfb (fb0) is primary device
[    1.962432] Switched to clocksource tsc
[    2.342020] Console: switching to colour frame buffer device 150x120
[    2.375486] i915 0000:00:02.0: fb0: inteldrmfb frame buffer device
[    2.375632] i915 0000:00:02.0: registered panic notifier
[    2.379824] ACPI: Video Device [GFX0] (multi-head: yes  rom: no  post: no)
[    2.381561] acpi device:1a: registered as cooling_device4
[    2.382998] acpi device:21: registered as cooling_device5
[    2.383305] input: Video Bus as /devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A08:00/LNXVIDEO:00/input/input1
[    2.383597] [drm] Initialized i915 1.6.0 20080730 for 0000:00:02.0 on minor 0
[    2.384114] brd: module loaded
[    2.384656] loop: module loaded
[    2.385372] xhci_hcd 0000:00:14.0: xHCI Host Controller
[    2.385595] xhci_hcd 0000:00:14.0: new USB bus registered, assigned bus number 1
[    2.385935] xhci_hcd 0000:00:14.0: cache line size of 64 is not supported
[    2.385972] xhci_hcd 0000:00:14.0: irq 129 for MSI/MSI-X
[    2.386111] usb usb1: New USB device found, idVendor=1d6b, idProduct=0002
[    2.386275] usb usb1: New USB device strings: Mfr=3, Product=2, SerialNumber=1
[    2.386445] usb usb1: Product: xHCI Host Controller
[    2.386562] usb usb1: Manufacturer: Linux 3.15.0-rc5-Inari xhci_hcd
[    2.386709] usb usb1: SerialNumber: 0000:00:14.0
[    2.387133] hub 1-0:1.0: USB hub found
[    2.387248] hub 1-0:1.0: 6 ports detected
[    2.882952] [drm] Enabling RC6 states: RC6 off, RC6p off, RC6pp off
[    2.902145] xhci_hcd 0000:00:14.0: xHCI Host Controller
[    2.902373] xhci_hcd 0000:00:14.0: new USB bus registered, assigned bus number 2
[    2.902645] usb usb2: New USB device found, idVendor=1d6b, idProduct=0003
[    2.902808] usb usb2: New USB device strings: Mfr=3, Product=2, SerialNumber=1
[    2.902986] usb usb2: Product: xHCI Host Controller
[    2.903106] usb usb2: Manufacturer: Linux 3.15.0-rc5-Inari xhci_hcd
[    2.903253] usb usb2: SerialNumber: 0000:00:14.0
[    2.903648] hub 2-0:1.0: USB hub found
[    2.903759] hub 2-0:1.0: 1 port detected
[    2.904266] usbcore: registered new interface driver usb-storage
[    2.904542] i8042: PNP: No PS/2 controller found. Probing ports directly.
[    3.948735] i8042: No controller found
[    3.948957] mousedev: PS/2 mouse device common for all mice
[    3.949282] ACPI Warning: Could not enable fixed event - RealTimeClock (4) (20140214/evxface-628)
[    3.949709] rtc_cmos 00:00: rtc core: registered rtc_cmos as rtc0
[    3.949891] rtc_cmos 00:00: alarms up to one day, 242 bytes nvram
[    3.950106] i2c /dev entries driver
[    3.951549] Intel P-state driver initializing.
[    3.951683] Intel pstate controlling: cpu 0
[    3.951828] Intel pstate controlling: cpu 1
[    3.951964] Intel pstate controlling: cpu 2
[    3.952098] Intel pstate controlling: cpu 3
[    3.952325] sdhci: Secure Digital Host Controller Interface driver
[    3.952472] sdhci: Copyright(c) Pierre Ossman
[    3.953782] mmc0: no vqmmc regulator found
[    3.953884] mmc0: no vmmc regulator found
[    3.955125] mmc0: SDHCI controller on ACPI [80860F14:00] using ADMA
[    3.956666] mmc1: no vqmmc regulator found
[    3.956769] mmc1: no vmmc regulator found
[    3.958012] mmc1: SDHCI controller on ACPI [INT33BB:00] using ADMA
[    3.959650] mmc2: no vqmmc regulator found
[    3.959753] mmc2: no vmmc regulator found
[    3.961088] mmc2: SDHCI controller on ACPI [80860F14:01] using ADMA
[    3.961302] sdhci-pltfm: SDHCI platform and OF driver helper
[    3.961404] EFI Variables Facility v0.08 2004-May-17
[    3.970815] hidraw: raw HID events driver (C) Jiri Kosina
[    3.971281] usbcore: registered new interface driver usbhid
[    3.971409] usbhid: USB HID core driver
[    3.971909] TCP: cubic registered
[    3.971966] Initializing XFRM netlink socket
[    3.972273] NET: Registered protocol family 10
[    3.972656] sit: IPv6 over IPv4 tunneling driver
[    3.972948] NET: Registered protocol family 17
[    3.973305] Using IPI No-Shortcut mode
[    3.973521] registered taskstats version 1
[    3.973853]   Magic number: 14:92:14
[    3.973984] console [netcon0] enabled
[    3.974044] netconsole: network logging started
[    3.974282] PM: Hibernation image not present or could not be loaded.
[    3.974290] ALSA device list:
[    3.974340]   No soundcards found.
[    3.974452] Warning: unable to open an initial console.
[    3.981024] Freeing unused kernel memory: 12096K (c1755000 - c2325000)
[    4.001010] udevd[966]: starting version 173
[    4.071412] mmc0: BKOPS_EN bit is not set
[    4.149730] mmc0: new HS200 MMC card at address 0001
[    4.151250] mmcblk0: mmc0:0001 HCG8e\x04 58.2 GiB 
[    4.151465] mmcblk0boot0: mmc0:0001 HCG8e\x04 partition 1 4.00 MiB
[    4.151620] mmcblk0boot1: mmc0:0001 HCG8e\x04 partition 2 4.00 MiB
[    4.151925] mmcblk0rpmb: mmc0:0001 HCG8e\x04 partition 3 4.00 MiB
[    4.152736]  mmcblk0: p1 p2
[    4.157969]  mmcblk0boot1: unknown partition table
[    4.161515] usb 2-1: new SuperSpeed USB device number 2 using xhci_hcd
[    4.161749]  mmcblk0boot0:
[    4.174061] usb 2-1: New USB device found, idVendor=0451, idProduct=8046
[    4.174187] usb 2-1: New USB device strings: Mfr=0, Product=0, SerialNumber=0
[    4.174928] hub 2-1:1.0: USB hub found
[    4.175026] hub 2-1:1.0: 4 ports detected
[    4.304448] usb 1-1: new high-speed USB device number 2 using xhci_hcd
[    4.445836] usb 1-1: New USB device found, idVendor=0451, idProduct=8044
[    4.472022] usb 1-1: New USB device strings: Mfr=0, Product=0, SerialNumber=1
[    4.498081] usb 1-1: SerialNumber: 420208698DA1
[    4.524922] hub 1-1:1.0: USB hub found
[    4.527445] Clocksource tsc unstable (delta = 64078296 ns)
[    4.575235] Switched to clocksource refined-jiffies
[    4.575303] hub 1-1:1.0: 4 ports detected
[    4.665948] usb 1-3: new high-speed USB device number 3 using xhci_hcd
[    4.812017] usb 1-3: New USB device found, idVendor=12d1, idProduct=1570
[    4.838515] usb 1-3: New USB device strings: Mfr=5, Product=4, SerialNumber=0
[    4.865162] usb 1-3: Product: HUAWEI Mobile Broadband Module
[    4.891982] usb 1-3: Manufacturer: Huawei Technologies Co., Ltd.
[    5.057359] usb 1-4: new high-speed USB device number 4 using xhci_hcd
[    5.244834] usb 1-4: New USB device found, idVendor=0951, idProduct=1603
[    5.271614] usb 1-4: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[    5.298249] usb 1-4: Product: DataTraveler 2.0
[    5.324706] usb 1-4: Manufacturer: Kingston
[    5.351290] usb 1-4: SerialNumber: 89900000000000000000017E
[    5.379013] usb-storage 1-4:1.0: USB Mass Storage device detected
[    5.405930] scsi0 : usb-storage 1-4:1.0
[    5.472462] usb 1-1.2: new high-speed USB device number 5 using xhci_hcd
[    5.546109] usb 1-1.2: New USB device found, idVendor=0424, idProduct=7500
[    5.572517] usb 1-1.2: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[    5.598796] usb 1-1.2: Product: LAN7500
[    5.624817] usb 1-1.2: Manufacturer: SMSC
[    5.650709] usb 1-1.2: SerialNumber: 00800f11700e
[    5.722888] usb 1-1.3: new low-speed USB device number 6 using xhci_hcd
[    5.799500] usb 1-1.3: New USB device found, idVendor=046d, idProduct=c312
[    5.825439] usb 1-1.3: New USB device strings: Mfr=1, Product=2, SerialNumber=0
[    5.851433] usb 1-1.3: Product: USB Multimedia Keyboard
[    5.877277] usb 1-1.3: Manufacturer: LITEON Technology
[    5.903455] usb 1-1.3: ep 0x81 - rounding interval to 128 microframes, ep desc says 192 microframes
[    5.934342] input: LITEON Technology USB Multimedia Keyboard as /devices/pci0000:00/0000:00:14.0/usb1/1-1/1-1.3/1-1.3:1.0/0003:046D:C312.0001/input/input2
[    5.987841] hid-generic 0003:046D:C312.0001: input,hidraw0: USB HID v1.10 Keyboard [LITEON Technology USB Multimedia Keyboard] on usb-0000:00:14.0-1.3/input0
[    6.283845] scsi 0:0:0:0: Direct-Access     Kingston DataTraveler 2.0 1.00 PQ: 0 ANSI: 2
[    6.312670] sd 0:0:0:0: Attached scsi generic sg0 type 0
[    6.340500] sd 0:0:0:0: [sda] 7856128 512-byte logical blocks: (4.02 GB/3.74 GiB)
[    6.368763] sd 0:0:0:0: [sda] Write Protect is off
[    6.396559] sd 0:0:0:0: [sda] Mode Sense: 23 00 00 00
[    6.396951] sd 0:0:0:0: [sda] No Caching mode page found
[    6.424634] sd 0:0:0:0: [sda] Assuming drive cache: write through
[    6.455250]  sda: sda1 sda2
[    6.493244] sd 0:0:0:0: [sda] Attached SCSI removable disk
[    7.133143] EXT4-fs (sda2): couldn't mount as ext3 due to feature incompatibilities
[    7.165576] EXT4-fs (sda2): couldn't mount as ext2 due to feature incompatibilities
[    7.377686] random: nonblocking pool is initialized
[    8.465142] EXT4-fs (sda2): recovery complete
[    8.498270] EXT4-fs (sda2): mounted filesystem with ordered data mode. Opts: (null)
[    9.397075] udevd[1685]: starting version 173
[    9.575548] sst-acpi 80860F28:00: Direct firmware load failed with error -2
[    9.586011] sst-acpi 80860F28:00: Falling back to user helper
[    9.659046] smsc75xx v1.0.0
[    9.663697] byt-rt5640 byt-rt5640: ASoC: CPU DAI Front-cpu-dai not registered
[    9.663727] platform byt-rt5640: Driver byt-rt5640 requests probe deferral
[    9.665590] input: gpio-keys as /devices/platform/gpio-keys.0.auto/input/input3
[    9.665813] byt-rt5640 byt-rt5640: ASoC: CPU DAI Front-cpu-dai not registered
[    9.665830] platform byt-rt5640: Driver byt-rt5640 requests probe deferral
[    9.665963] input: gpio-keys as /devices/platform/gpio-keys.1.auto/input/input4
[    9.666173] byt-rt5640 byt-rt5640: ASoC: CPU DAI Front-cpu-dai not registered
[    9.666201] platform byt-rt5640: Driver byt-rt5640 requests probe deferral
[    9.687821] sst-acpi 80860F28:00: Cannot load firmware intel/fw_sst_0f28.bin-i2s_master
[    9.740744] byt-rt5640 byt-rt5640: ASoC: CPU DAI Front-cpu-dai not registered
[    9.748565] platform byt-rt5640: Driver byt-rt5640 requests probe deferral
[    9.802203] smsc75xx 1-1.2:1.0 eth0: register 'smsc75xx' at usb-0000:00:14.0-1.2, smsc75xx USB 2.0 Gigabit Ethernet, 70:2f:97:00:22:4f
[    9.832548] byt-rt5640 byt-rt5640: ASoC: CPU DAI Front-cpu-dai not registered
[    9.832576] usbcore: registered new interface driver smsc75xx
[    9.893278] platform byt-rt5640: Driver byt-rt5640 requests probe deferral
[   17.848198] mmc0: Got data interrupt 0x00000002 even though no data operation was in progress.
[   17.881105] mmcblk0rpmb: error -110 transferring data, sector 8064, nr 8, cmd response 0x900, card status 0xb00
[   17.912406] mmcblk0rpmb: retrying using single block read
[   17.945754] mmcblk0rpmb: timed out sending r/w cmd command, card status 0x400900
[   17.979175] mmcblk0rpmb: timed out sending r/w cmd command, card status 0x400900
[   18.012512] mmcblk0rpmb: timed out sending r/w cmd command, card status 0x400900
[   18.045642] mmcblk0rpmb: timed out sending r/w cmd command, card status 0x400900
[   18.078551] mmcblk0rpmb: timed out sending r/w cmd command, card status 0x400900
[   18.111376] mmcblk0rpmb: timed out sending r/w cmd command, card status 0x400900
[   18.141842] end_request: I/O error, dev mmcblk0rpmb, sector 8064
[   18.172280] Buffer I/O error on device mmcblk0rpmb, logical block 1008
[   26.412192] mmc0: Got data interrupt 0x00000002 even though no data operation was in progress.
[   26.445097] mmcblk0rpmb: error -110 transferring data, sector 8064, nr 8, cmd response 0x900, card status 0xb00
[   26.476216] mmcblk0rpmb: retrying using single block read
[   26.509384] mmcblk0rpmb: timed out sending r/w cmd command, card status 0x400900
[   26.542804] mmcblk0rpmb: timed out sending r/w cmd command, card status 0x400900
[   26.576088] mmcblk0rpmb: timed out sending r/w cmd command, card status 0x400900
[   26.609213] mmcblk0rpmb: timed out sending r/w cmd command, card status 0x400900
[   26.642197] mmcblk0rpmb: timed out sending r/w cmd command, card status 0x400900
[   26.675018] mmcblk0rpmb: timed out sending r/w cmd command, card status 0x400900
[   26.705569] end_request: I/O error, dev mmcblk0rpmb, sector 8064
[   26.736209] Buffer I/O error on device mmcblk0rpmb, logical block 1008
[   34.976372] mmc0: Got data interrupt 0x00000002 even though no data operation was in progress.
[   35.009672] mmcblk0rpmb: error -110 transferring data, sector 0, nr 16, cmd response 0x900, card status 0xb00
[   35.041225] mmcblk0rpmb: retrying using single block read
[   35.074866] mmcblk0rpmb: timed out sending r/w cmd command, card status 0x400900
[   35.108774] mmcblk0rpmb: timed out sending r/w cmd command, card status 0x400900
[   35.142514] mmcblk0rpmb: timed out sending r/w cmd command, card status 0x400900
[   35.175989] mmcblk0rpmb: timed out sending r/w cmd command, card status 0x400900
[   35.209198] mmcblk0rpmb: timed out sending r/w cmd command, card status 0x400900
[   35.242265] mmcblk0rpmb: timed out sending r/w cmd command, card status 0x400900
[   35.273048] end_request: I/O error, dev mmcblk0rpmb, sector 0
[   35.303872] Buffer I/O error on device mmcblk0rpmb, logical block 0
[   35.334799] end_request: I/O error, dev mmcblk0rpmb, sector 8
[   35.365938] Buffer I/O error on device mmcblk0rpmb, logical block 1
[   43.617294] mmc0: Got data interrupt 0x00000002 even though no data operation was in progress.
[   43.650980] mmcblk0rpmb: error -110 transferring data, sector 0, nr 8, cmd response 0x900, card status 0xb00
[   43.682898] mmcblk0rpmb: retrying using single block read
[   43.716786] mmcblk0rpmb: timed out sending r/w cmd command, card status 0x400900
[   43.750783] mmcblk0rpmb: timed out sending r/w cmd command, card status 0x400900
[   43.784503] mmcblk0rpmb: timed out sending r/w cmd command, card status 0x400900
[   43.818029] mmcblk0rpmb: timed out sending r/w cmd command, card status 0x400900
[   43.851320] mmcblk0rpmb: timed out sending r/w cmd command, card status 0x400900
[   43.884543] mmcblk0rpmb: timed out sending r/w cmd command, card status 0x400900
[   43.915400] end_request: I/O error, dev mmcblk0rpmb, sector 0
[   43.946246] Buffer I/O error on device mmcblk0rpmb, logical block 0
[   48.209694] IPv6: ADDRCONF(NETDEV_UP): eth0: link is not ready
[   49.750189] IPv6: ADDRCONF(NETDEV_CHANGE): eth0: link becomes ready
[   49.780667] smsc75xx 1-1.2:1.0 eth0: link up, 100Mbps, full-duplex, lpa 0x45E1
[   49.815109] smsc75xx 1-1.2:1.0 eth0: link up, 100Mbps, full-duplex, lpa 0x45E1

=2D-nextPart3540697.JozLVkjM1S--
This is a multi-part message in MIME format.

[-- Attachment #1.2: Type: text/plain, Size: 2699 bytes --]

Rolf Eike Beer wrote:
> Lan Tianyu wrote:
> > On 05/13/2014 09:09 PM, Rolf Eike Beer wrote:
> > > Am Montag, 28. April 2014, 22:27:39 schrieb Lan Tianyu:
> > >> ACPI 5.0 spec(5.5.2.4.5) defines GenericSerialBus(i2c, spi, uart)
> > >> operation
> > >> region. It allows ACPI aml code able to access such kind of devices to
> > >> implement some ACPI standard method.
> > >> 
> > >> On the Asus T100TA, Bios use GenericSerialBus operation region to
> > >> access
> > >> i2c device to get battery info. So battery function depends on the I2C
> > >> operation region support. Here is the bug link.
> > >> https://bugzilla.kernel.org/show_bug.cgi?id=69011

> > > I have tested this series and got some errors, but no additional
> > > functionality:

> this is an Aava Inari 8 tablet (pre-release hardware). Please find the DSDT
> and the dmesg.log attached.

It may be that I have taken the wrong ACPI files. This is the result of a 
fresh run of acpidump, together with the most recent dmesg.log, just in case 
I messed it up.

Kernel now is at 60b5f90+some patches:

8e7bd6f pinctrl: baytrail: Register GPIO chip after chip->to_irq is set
c4b2230 pinctrl: baytrail: Add back Baytrail-T ACPI ID
32f3364 gpio: Add support for Intel SoC PMIC (Crystal Cove)
088ee81 mfd: intel_soc_pmic: Build files
5315135 mfd: intel_soc_pmic: Crystal Cove support
8b5ed0b mfd: intel_soc_pmic: I2C interface
b18979f mfd: intel_soc_pmic: Core driver
5200b75 add debugging
  (This is the debug patch Lan Tianyu sent as reply to the previous mail)
bd3e6c6 I2C/ACPI: Add CONFIG_I2C_ACPI config
947f0a1 I2C/ACPI: Move ACPI related code to i2c-acpi.c
534f182 I2C/ACPI: Add i2c ACPI operation region support
32384d4 I2C: Add smbus word/block process call helper function
aa6459e I2C: Add smbus quick read/write helper function
51825ed ACPI/Thermal: Use acpi_bus_attach_private_data() to attach private data
95e9e92 ACPI: Add acpi_bus_attach_private_data() to facilitate to attach data to ACPI handle
cc6fecb ACPICA: Export acpi_buffer_to_resource symbol
ad38de6 ACPI / LPSS: custom power domain for LPSS
b0caadf ACPI / PM: Export rest of the subsys functions
22a7210 ACPI / platform: add another ID for Broadcom Bluetooth and GPS chips
 (this just adds AAM4752 as another platform id)
000627d ACPI / platform: add IDs for Broadcom Bluetooth and GPS chips

Eike
-- 
Rolf Eike Beer, emlix GmbH, http://www.emlix.com
Fon +49 551 30664-0, Fax +49 551 30664-11
Bertha-von-Suttner-Str. 9, 37085 Göttingen, Germany
Sitz der Gesellschaft: Göttingen, Amtsgericht Göttingen HR B 3160
Geschäftsführung: Dr. Uwe Kracke, Ust-IdNr.: DE 205 198 055

emlix - smart embedded open source

[-- Attachment #1.3: acpi_fw10.dat.gz --]
[-- Type: application/x-gzip, Size: 77616 bytes --]

[-- Attachment #1.4: dmesg.log-3.15-rc5-inari2 --]
[-- Type: text/plain, Size: 47708 bytes --]

[    0.000000] Initializing cgroup subsys cpuset
[    0.000000] Initializing cgroup subsys cpu
[    0.000000] Initializing cgroup subsys cpuacct
[    0.000000] Linux version 3.15.0-rc5-Inari (root@devpool02) (gcc version 4.8.2 (Emlix Linux Inari) ) #1 SMP Tue May 20 13:33:31 UTC 2014
[    0.000000] e820: BIOS-provided physical RAM map:
[    0.000000] BIOS-e820: [mem 0x0000000000000000-0x000000000008efff] usable
[    0.000000] BIOS-e820: [mem 0x000000000008f000-0x000000000008ffff] ACPI NVS
[    0.000000] BIOS-e820: [mem 0x0000000000090000-0x000000000009dfff] usable
[    0.000000] BIOS-e820: [mem 0x000000000009e000-0x000000000009ffff] reserved
[    0.000000] BIOS-e820: [mem 0x0000000000100000-0x000000001fffffff] usable
[    0.000000] BIOS-e820: [mem 0x0000000020000000-0x00000000200fffff] reserved
[    0.000000] BIOS-e820: [mem 0x0000000020100000-0x0000000078345fff] usable
[    0.000000] BIOS-e820: [mem 0x0000000078346000-0x0000000078c45fff] reserved
[    0.000000] BIOS-e820: [mem 0x0000000078c46000-0x0000000078d45fff] ACPI NVS
[    0.000000] BIOS-e820: [mem 0x0000000078d46000-0x0000000078d85fff] ACPI data
[    0.000000] BIOS-e820: [mem 0x0000000078d86000-0x00000000794c7fff] usable
[    0.000000] BIOS-e820: [mem 0x00000000794c8000-0x0000000079dc7fff] ACPI NVS
[    0.000000] BIOS-e820: [mem 0x0000000079dc8000-0x0000000079ffffff] usable
[    0.000000] BIOS-e820: [mem 0x00000000e00f8000-0x00000000e00f8fff] reserved
[    0.000000] BIOS-e820: [mem 0x00000000fed01000-0x00000000fed01fff] reserved
[    0.000000] BIOS-e820: [mem 0x00000000ffd00000-0x00000000ffffffff] reserved
[    0.000000] Notice: NX (Execute Disable) protection cannot be enabled: non-PAE kernel!
[    0.000000] efi: EFI v2.31 by INSYDE Corp.
[    0.000000] efi:  ACPI 2.0=0x78d85014  SMBIOS=0x78c45000 
[    0.000000] efi: mem00: type=7, attr=0xf, range=[0x0000000000000000-0x0000000000001000) (0MB)
[    0.000000] efi: mem01: type=2, attr=0xf, range=[0x0000000000001000-0x0000000000007000) (0MB)
[    0.000000] efi: mem02: type=7, attr=0xf, range=[0x0000000000007000-0x000000000008f000) (0MB)
[    0.000000] efi: mem03: type=10, attr=0xf, range=[0x000000000008f000-0x0000000000090000) (0MB)
[    0.000000] efi: mem04: type=7, attr=0xf, range=[0x0000000000090000-0x000000000009e000) (0MB)
[    0.000000] efi: mem05: type=0, attr=0xf, range=[0x000000000009e000-0x00000000000a0000) (0MB)
[    0.000000] efi: mem06: type=7, attr=0xf, range=[0x0000000000100000-0x0000000001000000) (15MB)
[    0.000000] efi: mem07: type=2, attr=0xf, range=[0x0000000001000000-0x0000000002585000) (21MB)
[    0.000000] efi: mem08: type=7, attr=0xf, range=[0x0000000002585000-0x0000000020000000) (474MB)
[    0.000000] efi: mem09: type=0, attr=0xf, range=[0x0000000020000000-0x0000000020100000) (1MB)
[    0.000000] efi: mem10: type=7, attr=0xf, range=[0x0000000020100000-0x0000000071dc0000) (1308MB)
[    0.000000] efi: mem11: type=4, attr=0xf, range=[0x0000000071dc0000-0x0000000071de0000) (0MB)
[    0.000000] efi: mem12: type=7, attr=0xf, range=[0x0000000071de0000-0x0000000072bc7000) (13MB)
[    0.000000] efi: mem13: type=2, attr=0xf, range=[0x0000000072bc7000-0x0000000072bc9000) (0MB)
[    0.000000] efi: mem14: type=1, attr=0xf, range=[0x0000000072bc9000-0x0000000073b46000) (15MB)
[    0.000000] efi: mem15: type=7, attr=0xf, range=[0x0000000073b46000-0x0000000076a92000) (47MB)
[    0.000000] efi: mem16: type=4, attr=0xf, range=[0x0000000076a92000-0x00000000774ec000) (10MB)
[    0.000000] efi: mem17: type=7, attr=0xf, range=[0x00000000774ec000-0x00000000774f9000) (0MB)
[    0.000000] efi: mem18: type=4, attr=0xf, range=[0x00000000774f9000-0x0000000077d46000) (8MB)
[    0.000000] efi: mem19: type=7, attr=0xf, range=[0x0000000077d46000-0x0000000078161000) (4MB)
[    0.000000] efi: mem20: type=3, attr=0xf, range=[0x0000000078161000-0x0000000078346000) (1MB)
[    0.000000] efi: mem21: type=5, attr=0x800000000000000f, range=[0x0000000078346000-0x0000000078546000) (2MB)
[    0.000000] efi: mem22: type=6, attr=0x800000000000000f, range=[0x0000000078546000-0x0000000078846000) (3MB)
[    0.000000] efi: mem23: type=0, attr=0xf, range=[0x0000000078846000-0x0000000078c46000) (4MB)
[    0.000000] efi: mem24: type=10, attr=0xf, range=[0x0000000078c46000-0x0000000078d46000) (1MB)
[    0.000000] efi: mem25: type=9, attr=0xf, range=[0x0000000078d46000-0x0000000078d86000) (0MB)
[    0.000000] efi: mem26: type=4, attr=0xf, range=[0x0000000078d86000-0x00000000794c8000) (7MB)
[    0.000000] efi: mem27: type=10, attr=0xf, range=[0x00000000794c8000-0x0000000079dc8000) (9MB)
[    0.000000] efi: mem28: type=4, attr=0xf, range=[0x0000000079dc8000-0x000000007a000000) (2MB)
[    0.000000] efi: mem29: type=11, attr=0x8000000000000001, range=[0x00000000e00f8000-0x00000000e00f9000) (0MB)
[    0.000000] efi: mem30: type=11, attr=0x8000000000000000, range=[0x00000000fed01000-0x00000000fed02000) (0MB)
[    0.000000] efi: mem31: type=11, attr=0x8000000000000000, range=[0x00000000ffd00000-0x0000000100000000) (3MB)
[    0.000000] SMBIOS 2.7 present.
[    0.000000] DMI: Aava Mobile Oy Inari 8 2GB/Type2 - Board Product Name, BIOS BYT.5.03.47.0033-022 01/16/2014
[    0.000000] e820: update [mem 0x00000000-0x00000fff] usable ==> reserved
[    0.000000] e820: remove [mem 0x000a0000-0x000fffff] usable
[    0.000000] e820: last_pfn = 0x7a000 max_arch_pfn = 0x100000
[    0.000000] MTRR default type: uncachable
[    0.000000] MTRR fixed ranges enabled:
[    0.000000]   00000-9FFFF write-back
[    0.000000]   A0000-FFFFF write-protect
[    0.000000] MTRR variable ranges enabled:
[    0.000000]   0 base 0FFD00000 mask FFFC00000 write-protect
[    0.000000]   1 base 000000000 mask FC0000000 write-back
[    0.000000]   2 base 040000000 mask FE0000000 write-back
[    0.000000]   3 base 060000000 mask FF0000000 write-back
[    0.000000]   4 base 070000000 mask FF8000000 write-back
[    0.000000]   5 base 078000000 mask FFC000000 write-back
[    0.000000]   6 base 07B000000 mask FFF000000 uncachable
[    0.000000]   7 base 07AE00000 mask FFFE00000 uncachable
[    0.000000] x86 PAT enabled: cpu 0, old 0x7040600070406, new 0x7010600070106
[    0.000000] Scanning 1 areas for low memory corruption
[    0.000000] initial memory mapped: [mem 0x00000000-0x027fffff]
[    0.000000] Base memory trampoline at [c009a000] 9a000 size 16384
[    0.000000] init_memory_mapping: [mem 0x00000000-0x000fffff]
[    0.000000]  [mem 0x00000000-0x000fffff] page 4k
[    0.000000] init_memory_mapping: [mem 0x37000000-0x373fffff]
[    0.000000]  [mem 0x37000000-0x373fffff] page 2M
[    0.000000] init_memory_mapping: [mem 0x30000000-0x36ffffff]
[    0.000000]  [mem 0x30000000-0x36ffffff] page 2M
[    0.000000] init_memory_mapping: [mem 0x00100000-0x1fffffff]
[    0.000000]  [mem 0x00100000-0x003fffff] page 4k
[    0.000000]  [mem 0x00400000-0x1fffffff] page 2M
[    0.000000] init_memory_mapping: [mem 0x20100000-0x2fffffff]
[    0.000000]  [mem 0x20100000-0x203fffff] page 4k
[    0.000000]  [mem 0x20400000-0x2fffffff] page 2M
[    0.000000] BRK [0x0246a000, 0x0246afff] PGTABLE
[    0.000000] init_memory_mapping: [mem 0x37400000-0x377fdfff]
[    0.000000]  [mem 0x37400000-0x377fdfff] page 4k
[    0.000000] BRK [0x0246b000, 0x0246bfff] PGTABLE
[    0.000000] ACPI: RSDP 0x78D85014 000024 (v02 INSYDE)
[    0.000000] ACPI: XSDT 0x78D61188 0000D4 (v01 INSYDE INSYDE   00000003      01000013)
[    0.000000] ACPI: FACP 0x78D7F000 00010C (v05 INSYDE INSYDE   00000003 ACPI 00040000)
[    0.000000] ACPI: DSDT 0x78D6E000 00BAEC (v02 INSYDE INSYDE   00000003 ACPI 00040000)
[    0.000000] ACPI: UEFI 0x78D84000 000236 (v01 INSYDE INSYDE   00000001 ACPI 00040000)
[    0.000000] ACPI: TCPA 0x78D83000 000032 (v02 INSYDE INSYDE   00000000 ACPI 00040000)
[    0.000000] ACPI: UEFI 0x78D81000 000042 (v01 INSYDE INSYDE   00000000 ACPI 00040000)
[    0.000000] ACPI: DBG2 0x78D80000 000072 (v00 INSYDE INSYDE   00000003 ACPI 00040000)
[    0.000000] ACPI: HPET 0x78D7E000 000038 (v01 INSYDE INSYDE   00000003 ACPI 00040000)
[    0.000000] ACPI: LPIT 0x78D7D000 000104 (v01 INSYDE INSYDE   00000003 ACPI 00040000)
[    0.000000] ACPI: APIC 0x78D7C000 00006C (v03 INSYDE INSYDE   00000003 ACPI 00040000)
[    0.000000] ACPI: MCFG 0x78D7B000 00003C (v01 INSYDE INSYDE   00000003 ACPI 00040000)
[    0.000000] ACPI: SLIC 0x78D7A000 000176 (v01 INSYDE INSYDE   00000003 ACPI 00040000)
[    0.000000] ACPI: SSDT 0x78D6D000 0005FB (v01 INSYDE CpuDptf  00000003 ACPI 00040000)
[    0.000000] ACPI: SSDT 0x78D6B000 0018C2 (v01 INSYDE DptfTab  00000003 ACPI 00040000)
[    0.000000] ACPI: SSDT 0x78D6A000 000058 (v01 INSYDE LowPwrM  00000003 ACPI 00040000)
[    0.000000] ACPI: SSDT 0x78D69000 0000FF (v01 INSYDE SoCDptf  00000003 ACPI 00040000)
[    0.000000] ACPI: SSDT 0x78D68000 00043A (v01 INSYDE Tpm2Tabl 00001000 ACPI 00040000)
[    0.000000] ACPI: TPM2 0x78D67000 000034 (v03 INSYDE INSYDE   00000000 ACPI 00040000)
[    0.000000] ACPI: SSDT 0x78D66000 000763 (v01 INSYDE CpuPm    00003000 ACPI 00040000)
[    0.000000] ACPI: SSDT 0x78D65000 000290 (v01 INSYDE Cpu0Tst  00003000 ACPI 00040000)
[    0.000000] ACPI: SSDT 0x78D64000 00017A (v01 INSYDE ApTst    00003000 ACPI 00040000)
[    0.000000] ACPI: FPDT 0x78D63000 000044 (v01 INSYDE INSYDE   00000001 ACPI 00040000)
[    0.000000] ACPI: CSRT 0x78D62000 00014C (v00 INSYDE INSYDE   00000005 ACPI 00040000)
[    0.000000] ACPI: BGRT 0x78D60000 000038 (v01 INSYDE INSYDE   00000001 ACPI 00040000)
[    0.000000] ACPI: Local APIC address 0xfee00000
[    0.000000] 1064MB HIGHMEM available.
[    0.000000] 887MB LOWMEM available.
[    0.000000]   mapped low ram: 0 - 377fe000
[    0.000000]   low ram: 0 - 377fe000
[    0.000000] BRK [0x0246c000, 0x0246cfff] PGTABLE
[    0.000000] Zone ranges:
[    0.000000]   DMA      [mem 0x00001000-0x00ffffff]
[    0.000000]   Normal   [mem 0x01000000-0x377fdfff]
[    0.000000]   HighMem  [mem 0x377fe000-0x79ffffff]
[    0.000000] Movable zone start for each node
[    0.000000] Early memory node ranges
[    0.000000]   node   0: [mem 0x00001000-0x0008efff]
[    0.000000]   node   0: [mem 0x00090000-0x0009dfff]
[    0.000000]   node   0: [mem 0x00100000-0x1fffffff]
[    0.000000]   node   0: [mem 0x20100000-0x78345fff]
[    0.000000]   node   0: [mem 0x78d86000-0x794c7fff]
[    0.000000]   node   0: [mem 0x79dc8000-0x79ffffff]
[    0.000000] On node 0 totalpages: 494428
[    0.000000] free_area_init_node: node 0, pgdat c17447c0, node_mem_map f68be020
[    0.000000]   DMA zone: 32 pages used for memmap
[    0.000000]   DMA zone: 0 pages reserved
[    0.000000]   DMA zone: 3996 pages, LIFO batch:0
[    0.000000]   Normal zone: 1744 pages used for memmap
[    0.000000]   Normal zone: 222974 pages, LIFO batch:31
[    0.000000]   HighMem zone: 2129 pages used for memmap
[    0.000000]   HighMem zone: 267458 pages, LIFO batch:31
[    0.000000] Using APIC driver default
[    0.000000] x86/hpet: Will disable the HPET for this platform because it's not reliable
[    0.000000] Reserving Intel graphics stolen memory at 0x7af00000-0x7eefffff
[    0.000000] ACPI: Local APIC address 0xfee00000
[    0.000000] ACPI: LAPIC (acpi_id[0x01] lapic_id[0x00] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0x02] lapic_id[0x02] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0x03] lapic_id[0x04] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0x04] lapic_id[0x06] enabled)
[    0.000000] ACPI: IOAPIC (id[0x02] address[0xfec00000] gsi_base[0])
[    0.000000] IOAPIC[0]: apic_id 2, version 32, address 0xfec00000, GSI 0-86
[    0.000000] ACPI: INT_SRC_OVR (bus 0 bus_irq 0 global_irq 2 dfl dfl)
[    0.000000] ACPI: INT_SRC_OVR (bus 0 bus_irq 9 global_irq 9 high level)
[    0.000000] ACPI: IRQ0 used by override.
[    0.000000] ACPI: IRQ2 used by override.
[    0.000000] ACPI: IRQ9 used by override.
[    0.000000] Using ACPI (MADT) for SMP configuration information
[    0.000000] ACPI: HPET id: 0x8086a201 base: 0xfed00000
[    0.000000] smpboot: Allowing 4 CPUs, 0 hotplug CPUs
[    0.000000] nr_irqs_gsi: 103
[    0.000000] PM: Registered nosave memory: [mem 0x0008f000-0x0008ffff]
[    0.000000] PM: Registered nosave memory: [mem 0x0009e000-0x0009ffff]
[    0.000000] PM: Registered nosave memory: [mem 0x000a0000-0x000fffff]
[    0.000000] PM: Registered nosave memory: [mem 0x20000000-0x200fffff]
[    0.000000] e820: [mem 0x7ef00000-0xe00f7fff] available for PCI devices
[    0.000000] setup_percpu: NR_CPUS:4 nr_cpumask_bits:4 nr_cpu_ids:4 nr_node_ids:1
[    0.000000] PERCPU: Embedded 12 pages/cpu @f6882000 s27264 r0 d21888 u49152
[    0.000000] pcpu-alloc: s27264 r0 d21888 u49152 alloc=12*4096
[    0.000000] pcpu-alloc: [0] 0 [0] 1 [0] 2 [0] 3 
[    0.000000] Built 1 zonelists in Zone order, mobility grouping on.  Total pages: 492652
[    0.000000] Kernel command line: root=/dev/sda2 video=HDMI-A-1:1200x1920e drm_kms_helper.edid_firmware=HDMI-A-1:edid/1200x1920.bin 
[    0.000000] PID hash table entries: 4096 (order: 2, 16384 bytes)
[    0.000000] Dentry cache hash table entries: 131072 (order: 7, 524288 bytes)
[    0.000000] Inode-cache hash table entries: 65536 (order: 6, 262144 bytes)
[    0.000000] Initializing CPU#0
[    0.000000] Initializing HighMem for node 0 (000377fe:0007a000)
[    0.000000] Initializing Movable for node 0 (00000000:00000000)
[    0.000000] Memory: 1909196K/1977712K available (5512K kernel code, 337K rwdata, 1644K rodata, 12096K init, 1236K bss, 68516K reserved, 1038956K highmem)
[    0.000000] virtual kernel memory layout:
[    0.000000]     fixmap  : 0xfff66000 - 0xfffff000   ( 612 kB)
[    0.000000]     pkmap   : 0xff800000 - 0xffc00000   (4096 kB)
[    0.000000]     vmalloc : 0xf7ffe000 - 0xff7fe000   ( 120 MB)
[    0.000000]     lowmem  : 0xc0000000 - 0xf77fe000   ( 887 MB)
[    0.000000]       .init : 0xc1755000 - 0xc2325000   (12096 kB)
[    0.000000]       .data : 0xc1562492 - 0xc1753640   (1988 kB)
[    0.000000]       .text : 0xc1000000 - 0xc1562492   (5513 kB)
[    0.000000] Checking if this processor honours the WP bit even in supervisor mode...Ok.
[    0.000000] SLUB: HWalign=64, Order=0-3, MinObjects=0, CPUs=4, Nodes=1
[    0.000000] Hierarchical RCU implementation.
[    0.000000] NR_IRQS:2304 nr_irqs:1024 16
[    0.000000] CPU 0 irqstacks, hard=f600c000 soft=f600e000
[    0.000000] Console: colour dummy device 80x25
[    0.000000] console [tty0] enabled
[    0.000000] Maximum core-clock to bus-clock ratio: 0xa
[    0.000000] Resolved frequency ID: 2, frequency: 133200 KHz
[    0.000000] TSC runs at 1332000 KHz
[    0.000000] lapic_timer_frequency = 133200
[    0.000000] tsc: Detected 1332.000 MHz processor
[    0.000037] Calibrating delay loop (skipped), value calculated using timer frequency.. 2664.00 BogoMIPS (lpj=1332000)
[    0.000055] pid_max: default: 32768 minimum: 301
[    0.000071] ACPI: Core revision 20140214
[    0.044283] ACPI: All ACPI Tables successfully acquired
[    0.046946] Mount-cache hash table entries: 2048 (order: 1, 8192 bytes)
[    0.046966] Mountpoint-cache hash table entries: 2048 (order: 1, 8192 bytes)
[    0.047312] Initializing cgroup subsys freezer
[    0.047355] CPU: Physical Processor ID: 0
[    0.047365] CPU: Processor Core ID: 0
[    0.047376] ENERGY_PERF_BIAS: Set to 'normal', was 'performance'
[    0.047376] ENERGY_PERF_BIAS: View and update with x86_energy_perf_policy(8)
[    0.059505] mce: CPU supports 6 MCE banks
[    0.059523] CPU0: Thermal monitoring enabled (TM1)
[    0.059544] Last level iTLB entries: 4KB 48, 2MB 0, 4MB 0
[    0.059544] Last level dTLB entries: 4KB 128, 2MB 16, 4MB 16, 1GB 0
[    0.059544] tlb_flushall_shift: 6
[    0.059737] Freeing SMP alternatives memory: 20K (c2325000 - c232a000)
[    0.059772] ------------[ cut here ]------------
[    0.059792] WARNING: CPU: 0 PID: 0 at /tmp/e2/build/linux-git/mm/early_ioremap.c:136 __early_ioremap+0xee/0x1a6()
[    0.059804] Modules linked in:
[    0.059817] CPU: 0 PID: 0 Comm: swapper/0 Not tainted 3.15.0-rc5-Inari #1
[    0.059827] Hardware name: Aava Mobile Oy Inari 8 2GB/Type2 - Board Product Name, BIOS BYT.5.03.47.0033-022 01/16/2014
[    0.059840]  00000000 00000000 c1701f0c c15561be 00000000 c1701f3c c103d194 c164e24c
[    0.059862]  00000000 00000000 c1655de4 00000088 c1771c13 c1771c13 00000042 77526000
[    0.059883]  00000000 c1701f4c c103d22d 00000009 00000000 c1701fa0 c1771c13 c17454c0
[    0.059904] Call Trace:
[    0.059919]  [<c15561be>] dump_stack+0x41/0x52
[    0.059932]  [<c103d194>] warn_slowpath_common+0x74/0x90
[    0.059945]  [<c1771c13>] ? __early_ioremap+0xee/0x1a6
[    0.059957]  [<c1771c13>] ? __early_ioremap+0xee/0x1a6
[    0.059968]  [<c103d22d>] warn_slowpath_null+0x1d/0x20
[    0.059981]  [<c1771c13>] __early_ioremap+0xee/0x1a6
[    0.059993]  [<c10368df>] ? __native_set_fixmap+0x1f/0x30
[    0.060021]  [<c1771e80>] early_memremap+0xd/0xf
[    0.060034]  [<c1768753>] efi_bgrt_init+0xe6/0x129
[    0.060046]  [<c1768077>] efi_late_init+0x8/0xa
[    0.060058]  [<c1755a3b>] start_kernel+0x34f/0x35f
[    0.060070]  [<c1755523>] ? repair_env_string+0x51/0x51
[    0.060081]  [<c1755369>] i386_start_kernel+0x137/0x13a
[    0.060104] ---[ end trace 840e1cff9080aa63 ]---
[    0.063071] Enabling APIC mode:  Flat.  Using 1 I/O APICs
[    0.064118] ..TIMER: vector=0x30 apic1=0 pin1=2 apic2=-1 pin2=-1
[    0.074144] ..MP-BIOS bug: 8254 timer not connected to IO-APIC
[    0.074153] ...trying to set up timer (IRQ0) through the 8259A ...
[    0.074162] ..... (found apic 0 pin 2) ...
[    0.084178] ....... works.
[    0.084186] smpboot: CPU0: Intel(R) Atom(TM) CPU  Z3745  @ 1.33GHz (fam: 06, model: 37, stepping: 08)
[    0.084226] TSC deadline timer enabled
[    0.084241] Performance Events: PEBS fmt2+, 8-deep LBR, Silvermont events, full-width counters, Intel PMU driver.
[    0.084267] ... version:                3
[    0.084275] ... bit width:              40
[    0.084283] ... generic registers:      2
[    0.084290] ... value mask:             000000ffffffffff
[    0.084299] ... max period:             000000ffffffffff
[    0.084306] ... fixed-purpose events:   3
[    0.084314] ... event mask:             0000000700000003
[    0.085895] CPU 1 irqstacks, hard=f60a6000 soft=f60b0000
[    0.085901] x86: Booting SMP configuration:
[    0.085911] .... node  #0, CPUs:      #1
[    0.096027] Initializing CPU#1
[    0.111238] CPU 2 irqstacks, hard=f60ba000 soft=f60bc000
[    0.111257]  #2
[    0.121310] Initializing CPU#2
[    0.136523] CPU 3 irqstacks, hard=f60c6000 soft=f60c8000
[    0.136537]  #3
[    0.146591] Initializing CPU#3
[    0.161676] x86: Booted up 1 node, 4 CPUs
[    0.161696] smpboot: Total of 4 processors activated (10656.00 BogoMIPS)
[    0.162646] devtmpfs: initialized
[    0.163134] PM: Registering ACPI NVS region [mem 0x0008f000-0x0008ffff] (4096 bytes)
[    0.163150] PM: Registering ACPI NVS region [mem 0x78c46000-0x78d45fff] (1048576 bytes)
[    0.163202] PM: Registering ACPI NVS region [mem 0x794c8000-0x79dc7fff] (9437184 bytes)
[    0.163750] pinctrl core: initialized pinctrl subsystem
[    0.163810] RTC time:  6:00:32, date: 05/20/14
[    0.163897] NET: Registered protocol family 16
[    0.164225] cpuidle: using governor ladder
[    0.164236] cpuidle: using governor menu
[    0.164310] ACPI: bus type PCI registered
[    0.164463] PCI: MMCONFIG for domain 0000 [bus 00-3f] at [mem 0xe0000000-0xe3ffffff] (base 0xe0000000)
[    0.164480] PCI: not using MMCONFIG
[    0.164835] PCI: Using configuration type 1 for base access
[    0.169934] ACPI: Added _OSI(Module Device)
[    0.169949] ACPI: Added _OSI(Processor Device)
[    0.169958] ACPI: Added _OSI(3.0 _SCP Extensions)
[    0.169967] ACPI: Added _OSI(Processor Aggregator Device)
[    0.205576] ACPI: SSDT 0x78BCAA90 000353 (v01 PmRef  Cpu0Ist  00003000 INTL 20130117)
[    0.207151] ACPI: Dynamic OEM Table Load:
[    0.207166] ACPI: SSDT 0x00000000 000353 (v01 PmRef  Cpu0Ist  00003000 INTL 20130117)
[    0.207698] ACPI: SSDT 0x78BC9910 000433 (v01 PmRef  Cpu0Cst  00003001 INTL 20130117)
[    0.209556] ACPI: Dynamic OEM Table Load:
[    0.209570] ACPI: SSDT 0x00000000 000433 (v01 PmRef  Cpu0Cst  00003001 INTL 20130117)
[    0.216146] ACPI: SSDT 0x78BCBD90 00015F (v01 PmRef  ApIst    00003000 INTL 20130117)
[    0.217742] ACPI: Dynamic OEM Table Load:
[    0.217756] ACPI: SSDT 0x00000000 00015F (v01 PmRef  ApIst    00003000 INTL 20130117)
[    0.220317] ACPI: SSDT 0x78BCBF10 00008D (v01 PmRef  ApCst    00003000 INTL 20130117)
[    0.221740] ACPI: Dynamic OEM Table Load:
[    0.221754] ACPI: SSDT 0x00000000 00008D (v01 PmRef  ApCst    00003000 INTL 20130117)
[    0.227520] ACPI: Interpreter enabled
[    0.227556] ACPI Exception: AE_NOT_FOUND, While evaluating Sleep State [\_S1_] (20140214/hwxface-580)
[    0.227580] ACPI Exception: AE_NOT_FOUND, While evaluating Sleep State [\_S2_] (20140214/hwxface-580)
[    0.227601] ACPI Exception: AE_NOT_FOUND, While evaluating Sleep State [\_S3_] (20140214/hwxface-580)
[    0.227622] ACPI Exception: AE_NOT_FOUND, While evaluating Sleep State [\_S4_] (20140214/hwxface-580)
[    0.227642] ACPI Exception: AE_NOT_FOUND, While evaluating Sleep State [\_S5_] (20140214/hwxface-580)
[    0.227660] ACPI: (supports S0)
[    0.227668] ACPI: Using IOAPIC for interrupt routing
[    0.227757] PCI: MMCONFIG for domain 0000 [bus 00-3f] at [mem 0xe0000000-0xe3ffffff] (base 0xe0000000)
[    0.235389] [Firmware Info]: PCI: MMCONFIG at [mem 0xe0000000-0xe3ffffff] not reserved in ACPI motherboard resources
[    0.235406] PCI: not using MMCONFIG
[    0.235464] PCI: Using host bridge windows from ACPI; if necessary, use "pci=nocrs" and report a bug
[    0.238750] ACPI: Power Resource [USBC] (on)
[    0.242935] ACPI: Power Resource [WWPR] (off)
[    0.253593] ACPI: Power Resource [PLPE] (on)
[    0.265552] ACPI: Power Resource [CLK0] (on)
[    0.265698] ACPI: Power Resource [CLK1] (on)
[    0.266063] ACPI: Power Resource [P28X] (off)
[    0.266206] ACPI: Power Resource [P18X] (off)
[    0.268756] ACPI: Power Resource [TCPR] (off)
[    0.275852] ACPI: PCI Root Bridge [PCI0] (domain 0000 [bus 00-ff])
[    0.275877] acpi PNP0A08:00: _OSC: OS supports [ASPM ClockPM Segments MSI]
[    0.276078] \_SB_.PCI0:_OSC invalid UUID
[    0.276083] _OSC request data:1 1e 0 
[    0.276096] acpi PNP0A08:00: _OSC failed (AE_ERROR); disabling ASPM
[    0.277397] acpi PNP0A08:00: fail to add MMCONFIG information, can't access extended PCI configuration space under this bridge.
[    0.277495] PCI host bridge to bus 0000:00
[    0.277510] pci_bus 0000:00: root bus resource [bus 00-ff]
[    0.277522] pci_bus 0000:00: root bus resource [io  0x0000-0x006f]
[    0.277534] pci_bus 0000:00: root bus resource [io  0x0078-0x0cf7]
[    0.277545] pci_bus 0000:00: root bus resource [io  0x0d00-0xffff]
[    0.277557] pci_bus 0000:00: root bus resource [mem 0x000a0000-0x000bffff]
[    0.277569] pci_bus 0000:00: root bus resource [mem 0x000c0000-0x000dffff]
[    0.277581] pci_bus 0000:00: root bus resource [mem 0x000e0000-0x000fffff]
[    0.277593] pci_bus 0000:00: root bus resource [mem 0x90c00000-0x90ffffff]
[    0.277604] pci_bus 0000:00: root bus resource [mem 0x7af00001-0x7ef00000]
[    0.277616] pci_bus 0000:00: root bus resource [mem 0x80000000-0x908ffffe]
[    0.277628] pci_bus 0000:00: root bus resource [mem 0xfed40000-0xfed40fff]
[    0.277652] pci 0000:00:00.0: [8086:0f00] type 00 class 0x060000
[    0.277844] pci 0000:00:02.0: [8086:0f31] type 00 class 0x030000
[    0.277870] pci 0000:00:02.0: reg 0x10: [mem 0x90000000-0x903fffff]
[    0.277889] pci 0000:00:02.0: reg 0x18: [mem 0x80000000-0x8fffffff pref]
[    0.277907] pci 0000:00:02.0: reg 0x20: [io  0x1000-0x1007]
[    0.278123] pci 0000:00:14.0: [8086:0f35] type 00 class 0x0c0330
[    0.278154] pci 0000:00:14.0: reg 0x10: [mem 0x90800000-0x9080ffff 64bit]
[    0.278234] pci 0000:00:14.0: PME# supported from D3hot D3cold
[    0.278409] pci 0000:00:1a.0: [8086:0f18] type 00 class 0x108000
[    0.278451] pci 0000:00:1a.0: reg 0x10: [mem 0x90700000-0x907fffff]
[    0.278469] pci 0000:00:1a.0: reg 0x14: [mem 0x90600000-0x906fffff]
[    0.278570] pci 0000:00:1a.0: PME# supported from D0 D3hot
[    0.278744] pci 0000:00:1f.0: [8086:0f1c] type 00 class 0x060100
[    0.278969] pci_bus 0000:00: on NUMA node 0
[    0.280068] ACPI: PCI Interrupt Link [LNKA] (IRQs 3 4 5 6 10 11 12 14 15) *0, disabled.
[    0.280384] ACPI: PCI Interrupt Link [LNKB] (IRQs 3 4 5 6 10 11 12 14 15) *0, disabled.
[    0.280709] ACPI: PCI Interrupt Link [LNKC] (IRQs 3 4 5 6 10 11 12 14 15) *0, disabled.
[    0.281023] ACPI: PCI Interrupt Link [LNKD] (IRQs 3 4 5 6 10 11 12 14 15) *0, disabled.
[    0.281343] ACPI: PCI Interrupt Link [LNKE] (IRQs 3 4 5 6 10 11 12 14 15) *0, disabled.
[    0.281666] ACPI: PCI Interrupt Link [LNKF] (IRQs 3 4 5 6 10 11 12 14 15) *0, disabled.
[    0.281977] ACPI: PCI Interrupt Link [LNKG] (IRQs 3 4 5 6 10 11 12 14 15) *0, disabled.
[    0.282289] ACPI: PCI Interrupt Link [LNKH] (IRQs 3 4 5 6 10 11 12 14 15) *0, disabled.
[    0.296031] dw_dmac INTL9C60:00: DesignWare DMA Controller, 8 channels
[    0.296777] dw_dmac INTL9C60:01: DesignWare DMA Controller, 8 channels
[    0.297560] vgaarb: device added: PCI:0000:00:02.0,decodes=io+mem,owns=io+mem,locks=none
[    0.297576] vgaarb: loaded
[    0.297584] vgaarb: bridge control possible 0000:00:02.0
[    0.297838] SCSI subsystem initialized
[    0.297856] ACPI: bus type USB registered
[    0.297942] usbcore: registered new interface driver usbfs
[    0.297987] usbcore: registered new interface driver hub
[    0.298068] usbcore: registered new device driver usb
[    0.308808] intel_soc_pmic_i2c i2c-INT33FD:00: Can't enable IRQ as wake source: -6
[    0.309261] pps_core: LinuxPPS API ver. 1 registered
[    0.309273] pps_core: Software ver. 5.3.6 - Copyright 2005-2007 Rodolfo Giometti <giometti@linux.it>
[    0.309301] PTP clock support registered
[    0.309569] Advanced Linux Sound Architecture Driver Initialized.
[    0.309581] PCI: Using ACPI for IRQ routing
[    0.309591] PCI: pci_cache_line_size set to 64 bytes
[    0.309617] Expanded resource reserved due to conflict with PCI Bus 0000:00
[    0.309630] e820: reserve RAM buffer [mem 0x0008f000-0x0008ffff]
[    0.309635] e820: reserve RAM buffer [mem 0x0009e000-0x0009ffff]
[    0.309640] e820: reserve RAM buffer [mem 0x78346000-0x7bffffff]
[    0.309645] e820: reserve RAM buffer [mem 0x794c8000-0x7bffffff]
[    0.309650] e820: reserve RAM buffer [mem 0x7a000000-0x7bffffff]
[    0.310156] cfg80211: Calling CRDA to update world regulatory domain
[    0.310342] Switched to clocksource refined-jiffies
[    0.310498] pnp: PnP ACPI init
[    0.310525] ACPI: bus type PNP registered
[    0.310655] pnp 00:00: Plug and Play ACPI device, IDs PNP0b00 (active)
[    0.310880] pnp 00:01: Plug and Play ACPI device, IDs PNP0103 (active)
[    0.310971] pnp 00:02: Plug and Play ACPI device, IDs INT0800 (active)
[    0.311091] system 00:03: [io  0x0680-0x069f] has been reserved
[    0.311106] system 00:03: [io  0x0400-0x047f] has been reserved
[    0.311118] system 00:03: [io  0x0500-0x05fe] has been reserved
[    0.311130] system 00:03: [io  0x0600-0x061f] has been reserved
[    0.311142] system 00:03: [io  0x164e-0x164f] has been reserved
[    0.311156] system 00:03: Plug and Play ACPI device, IDs PNP0c02 (active)
[    0.311511] pnp 00:04: Plug and Play ACPI device, IDs PNP0501 (active)
[    0.313011] pnp 00:05: Plug and Play ACPI device, IDs INT0002 (active)
[    0.314238] pnp 00:06: unknown resource type 19 in _CRS
[    0.314252] pnp 00:06: can't evaluate _CRS: 1
[    0.314322] pnp 00:06: Plug and Play ACPI device, IDs BCM2e3a (active)
[    0.321212] pnp 00:07: unknown resource type 17 in _CRS
[    0.321227] pnp 00:07: can't evaluate _CRS: 1
[    0.321349] pnp 00:07: Plug and Play ACPI device, IDs INTcfd9 PNP0c40 (active)
[    0.321500] pnp 00:08: Plug and Play ACPI device, IDs INT33bd (active)
[    0.321847] pnp 00:09: Plug and Play ACPI device, IDs INT3401 (active)
[    0.322163] pnp 00:0a: unknown resource type 17 in _CRS
[    0.322176] pnp 00:0a: can't evaluate _CRS: 1
[    0.322254] pnp 00:0a: Plug and Play ACPI device, IDs INT3403 (active)
[    0.322393] pnp 00:0b: unknown resource type 17 in _CRS
[    0.322405] pnp 00:0b: can't evaluate _CRS: 1
[    0.322482] pnp 00:0b: Plug and Play ACPI device, IDs INT3403 (active)
[    0.322677] pnp 00:0c: unknown resource type 17 in _CRS
[    0.322690] pnp 00:0c: can't evaluate _CRS: 1
[    0.322768] pnp 00:0c: Plug and Play ACPI device, IDs INT3409 (active)
[    0.323066] pnp: PnP ACPI: found 13 devices
[    0.323077] ACPI: bus type PNP unregistered
[    0.328160] pci_bus 0000:00: resource 4 [io  0x0000-0x006f]
[    0.328169] pci_bus 0000:00: resource 5 [io  0x0078-0x0cf7]
[    0.328175] pci_bus 0000:00: resource 6 [io  0x0d00-0xffff]
[    0.328182] pci_bus 0000:00: resource 7 [mem 0x000a0000-0x000bffff]
[    0.328188] pci_bus 0000:00: resource 8 [mem 0x000c0000-0x000dffff]
[    0.328195] pci_bus 0000:00: resource 9 [mem 0x000e0000-0x000fffff]
[    0.328201] pci_bus 0000:00: resource 10 [mem 0x90c00000-0x90ffffff]
[    0.328208] pci_bus 0000:00: resource 11 [mem 0x7af00001-0x7ef00000]
[    0.328214] pci_bus 0000:00: resource 12 [mem 0x80000000-0x908ffffe]
[    0.328221] pci_bus 0000:00: resource 13 [mem 0xfed40000-0xfed40fff]
[    0.328276] NET: Registered protocol family 2
[    0.328574] TCP established hash table entries: 8192 (order: 3, 32768 bytes)
[    0.328622] TCP bind hash table entries: 8192 (order: 4, 65536 bytes)
[    0.328689] TCP: Hash tables configured (established 8192 bind 8192)
[    0.328729] TCP: reno registered
[    0.328741] UDP hash table entries: 512 (order: 2, 16384 bytes)
[    0.328763] UDP-Lite hash table entries: 512 (order: 2, 16384 bytes)
[    0.328859] NET: Registered protocol family 1
[    0.328905] pci 0000:00:02.0: Boot video device
[    0.329302] PCI: CLS 0 bytes, default 64
[    0.603872] byt_gpio INT33FC:02: Gpio 18 interrupt flood, disabling
[    0.809288] microcode: CPU0 sig=0x30678, pf=0x2, revision=0x808
[    0.809323] microcode: CPU1 sig=0x30678, pf=0x2, revision=0x808
[    0.809351] microcode: CPU2 sig=0x30678, pf=0x2, revision=0x808
[    0.809379] microcode: CPU3 sig=0x30678, pf=0x2, revision=0x808
[    0.809501] microcode: Microcode Update Driver: v2.00 <tigran@aivazian.fsnet.co.uk>, Peter Oruba
[    0.810143] Scanning for low memory corruption every 60 seconds
[    0.810759] futex hash table entries: 1024 (order: 4, 65536 bytes)
[    0.810811] audit: initializing netlink subsys (disabled)
[    0.810853] audit: type=2000 audit(1400565632.776:1): initialized
[    0.846786] bounce pool size: 64 pages
[    0.846804] HugeTLB registered 4 MB page size, pre-allocated 0 pages
[    0.852277] msgmni has been set to 1760
[    0.852992] Block layer SCSI generic (bsg) driver version 0.4 loaded (major 251)
[    0.853007] io scheduler noop registered
[    0.853016] io scheduler deadline registered
[    0.853177] io scheduler cfq registered (default)
[    0.857446] intel_idle: MWAIT substates: 0x33000020
[    0.857452] intel_idle: v0.4 model 0x37
[    0.857457] intel_idle: lapic_timer_reliable_states 0xffffffff
[    0.863915] ACPI: AC Adapter [ADP1] (on-line)
[    0.864239] input: Power Button as /devices/LNXSYSTM:00/LNXPWRBN:00/input/input0
[    0.864260] ACPI: Power Button [PWRF]
[    0.864272] ACPI Warning: Could not enable fixed event - PowerButton (2) (20140214/evxface-628)
[    0.868088] button: probe of LNXPWRBN:00 failed with error -22
[    0.873934] ACPI Exception: AE_ERROR, Returned by Handler for [GeneralPurposeIo] (20140214/evregion-282)
[    0.873966] ACPI Error: Method parse/execution failed [\_TZ_.TZ00._TMP] (Node f602ae40), AE_ERROR (20140214/psparse-536)
[    0.874012] [Firmware Bug]: No valid trip found
[    0.874275] Serial: 8250/16550 driver, 4 ports, IRQ sharing enabled
[    0.894687] 00:04: ttyS0 at I/O 0x3f8 (irq = 4, base_baud = 115200) is a 16550A
[    0.895709] 80860F0A:00: ttyS1 at MMIO 0x9091d000 (irq = 39, base_baud = 2764800) is a 16550A
[    0.895963] 80860F0A:01: ttyS2 at MMIO 0x9091f000 (irq = 40, base_baud = 2764800) is a 16550A
[    0.896298] hpet: number irqs doesn't agree with number of timers
[    0.896437] Non-volatile memory driver v1.3
[    0.896509] [drm] Initialized drm 1.1.0 20060810
[    0.898464] [drm] Memory usable by graphics device = 2048M
[    0.904214] ACPI: \_SB_.PCI0.GFX0: Error attaching device data 7
[    0.904467] ACPI: \_SB_.PCI0.GFX0: Error attaching device data 7
[    0.904726] ACPI: \_SB_.PCI0.GFX0: Error attaching device data 7
[    0.904973] ACPI: \_SB_.PCI0.GFX0: Error attaching device data 7
[    0.905220] ACPI: \_SB_.PCI0.GFX0: Error attaching device data 7
[    0.907934] i915 0000:00:02.0: irq 128 for MSI/MSI-X
[    0.907951] [drm] Supports vblank timestamp caching Rev 2 (21.10.2013).
[    0.907962] [drm] Driver supports precise vblank timestamp query.
[    0.960460] vgaarb: device changed decodes: PCI:0000:00:02.0,olddecodes=io+mem,decodes=io+mem:owns=io+mem
[    0.961250] ACPI: \_SB_.PCI0.GFX0: Error attaching device data 7
[    0.961636] ACPI: \_SB_.PCI0.GFX0: Error attaching device data 7
[    1.489394] [drm] forcing HDMI-A-1 connector ON
[    1.565640] [drm] GMBUS [i915 gmbus vga] timed out, falling back to bit banging on pin 2
[    1.587008] [drm] Got external EDID base block and 0 extensions from "edid/1200x1920.bin" for connector "HDMI-A-1"
[    1.733267] [drm] GMBUS [i915 gmbus dpc] timed out, falling back to bit banging on pin 4
[    1.829666] fbcon: inteldrmfb (fb0) is primary device
[    1.962432] Switched to clocksource tsc
[    2.342020] Console: switching to colour frame buffer device 150x120
[    2.375486] i915 0000:00:02.0: fb0: inteldrmfb frame buffer device
[    2.375632] i915 0000:00:02.0: registered panic notifier
[    2.379824] ACPI: Video Device [GFX0] (multi-head: yes  rom: no  post: no)
[    2.381561] acpi device:1a: registered as cooling_device4
[    2.382998] acpi device:21: registered as cooling_device5
[    2.383305] input: Video Bus as /devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A08:00/LNXVIDEO:00/input/input1
[    2.383597] [drm] Initialized i915 1.6.0 20080730 for 0000:00:02.0 on minor 0
[    2.384114] brd: module loaded
[    2.384656] loop: module loaded
[    2.385372] xhci_hcd 0000:00:14.0: xHCI Host Controller
[    2.385595] xhci_hcd 0000:00:14.0: new USB bus registered, assigned bus number 1
[    2.385935] xhci_hcd 0000:00:14.0: cache line size of 64 is not supported
[    2.385972] xhci_hcd 0000:00:14.0: irq 129 for MSI/MSI-X
[    2.386111] usb usb1: New USB device found, idVendor=1d6b, idProduct=0002
[    2.386275] usb usb1: New USB device strings: Mfr=3, Product=2, SerialNumber=1
[    2.386445] usb usb1: Product: xHCI Host Controller
[    2.386562] usb usb1: Manufacturer: Linux 3.15.0-rc5-Inari xhci_hcd
[    2.386709] usb usb1: SerialNumber: 0000:00:14.0
[    2.387133] hub 1-0:1.0: USB hub found
[    2.387248] hub 1-0:1.0: 6 ports detected
[    2.882952] [drm] Enabling RC6 states: RC6 off, RC6p off, RC6pp off
[    2.902145] xhci_hcd 0000:00:14.0: xHCI Host Controller
[    2.902373] xhci_hcd 0000:00:14.0: new USB bus registered, assigned bus number 2
[    2.902645] usb usb2: New USB device found, idVendor=1d6b, idProduct=0003
[    2.902808] usb usb2: New USB device strings: Mfr=3, Product=2, SerialNumber=1
[    2.902986] usb usb2: Product: xHCI Host Controller
[    2.903106] usb usb2: Manufacturer: Linux 3.15.0-rc5-Inari xhci_hcd
[    2.903253] usb usb2: SerialNumber: 0000:00:14.0
[    2.903648] hub 2-0:1.0: USB hub found
[    2.903759] hub 2-0:1.0: 1 port detected
[    2.904266] usbcore: registered new interface driver usb-storage
[    2.904542] i8042: PNP: No PS/2 controller found. Probing ports directly.
[    3.948735] i8042: No controller found
[    3.948957] mousedev: PS/2 mouse device common for all mice
[    3.949282] ACPI Warning: Could not enable fixed event - RealTimeClock (4) (20140214/evxface-628)
[    3.949709] rtc_cmos 00:00: rtc core: registered rtc_cmos as rtc0
[    3.949891] rtc_cmos 00:00: alarms up to one day, 242 bytes nvram
[    3.950106] i2c /dev entries driver
[    3.951549] Intel P-state driver initializing.
[    3.951683] Intel pstate controlling: cpu 0
[    3.951828] Intel pstate controlling: cpu 1
[    3.951964] Intel pstate controlling: cpu 2
[    3.952098] Intel pstate controlling: cpu 3
[    3.952325] sdhci: Secure Digital Host Controller Interface driver
[    3.952472] sdhci: Copyright(c) Pierre Ossman
[    3.953782] mmc0: no vqmmc regulator found
[    3.953884] mmc0: no vmmc regulator found
[    3.955125] mmc0: SDHCI controller on ACPI [80860F14:00] using ADMA
[    3.956666] mmc1: no vqmmc regulator found
[    3.956769] mmc1: no vmmc regulator found
[    3.958012] mmc1: SDHCI controller on ACPI [INT33BB:00] using ADMA
[    3.959650] mmc2: no vqmmc regulator found
[    3.959753] mmc2: no vmmc regulator found
[    3.961088] mmc2: SDHCI controller on ACPI [80860F14:01] using ADMA
[    3.961302] sdhci-pltfm: SDHCI platform and OF driver helper
[    3.961404] EFI Variables Facility v0.08 2004-May-17
[    3.970815] hidraw: raw HID events driver (C) Jiri Kosina
[    3.971281] usbcore: registered new interface driver usbhid
[    3.971409] usbhid: USB HID core driver
[    3.971909] TCP: cubic registered
[    3.971966] Initializing XFRM netlink socket
[    3.972273] NET: Registered protocol family 10
[    3.972656] sit: IPv6 over IPv4 tunneling driver
[    3.972948] NET: Registered protocol family 17
[    3.973305] Using IPI No-Shortcut mode
[    3.973521] registered taskstats version 1
[    3.973853]   Magic number: 14:92:14
[    3.973984] console [netcon0] enabled
[    3.974044] netconsole: network logging started
[    3.974282] PM: Hibernation image not present or could not be loaded.
[    3.974290] ALSA device list:
[    3.974340]   No soundcards found.
[    3.974452] Warning: unable to open an initial console.
[    3.981024] Freeing unused kernel memory: 12096K (c1755000 - c2325000)
[    4.001010] udevd[966]: starting version 173
[    4.071412] mmc0: BKOPS_EN bit is not set
[    4.149730] mmc0: new HS200 MMC card at address 0001
[    4.151250] mmcblk0: mmc0:0001 HCG8e\x04 58.2 GiB 
[    4.151465] mmcblk0boot0: mmc0:0001 HCG8e\x04 partition 1 4.00 MiB
[    4.151620] mmcblk0boot1: mmc0:0001 HCG8e\x04 partition 2 4.00 MiB
[    4.151925] mmcblk0rpmb: mmc0:0001 HCG8e\x04 partition 3 4.00 MiB
[    4.152736]  mmcblk0: p1 p2
[    4.157969]  mmcblk0boot1: unknown partition table
[    4.161515] usb 2-1: new SuperSpeed USB device number 2 using xhci_hcd
[    4.161749]  mmcblk0boot0:
[    4.174061] usb 2-1: New USB device found, idVendor=0451, idProduct=8046
[    4.174187] usb 2-1: New USB device strings: Mfr=0, Product=0, SerialNumber=0
[    4.174928] hub 2-1:1.0: USB hub found
[    4.175026] hub 2-1:1.0: 4 ports detected
[    4.304448] usb 1-1: new high-speed USB device number 2 using xhci_hcd
[    4.445836] usb 1-1: New USB device found, idVendor=0451, idProduct=8044
[    4.472022] usb 1-1: New USB device strings: Mfr=0, Product=0, SerialNumber=1
[    4.498081] usb 1-1: SerialNumber: 420208698DA1
[    4.524922] hub 1-1:1.0: USB hub found
[    4.527445] Clocksource tsc unstable (delta = 64078296 ns)
[    4.575235] Switched to clocksource refined-jiffies
[    4.575303] hub 1-1:1.0: 4 ports detected
[    4.665948] usb 1-3: new high-speed USB device number 3 using xhci_hcd
[    4.812017] usb 1-3: New USB device found, idVendor=12d1, idProduct=1570
[    4.838515] usb 1-3: New USB device strings: Mfr=5, Product=4, SerialNumber=0
[    4.865162] usb 1-3: Product: HUAWEI Mobile Broadband Module
[    4.891982] usb 1-3: Manufacturer: Huawei Technologies Co., Ltd.
[    5.057359] usb 1-4: new high-speed USB device number 4 using xhci_hcd
[    5.244834] usb 1-4: New USB device found, idVendor=0951, idProduct=1603
[    5.271614] usb 1-4: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[    5.298249] usb 1-4: Product: DataTraveler 2.0
[    5.324706] usb 1-4: Manufacturer: Kingston
[    5.351290] usb 1-4: SerialNumber: 89900000000000000000017E
[    5.379013] usb-storage 1-4:1.0: USB Mass Storage device detected
[    5.405930] scsi0 : usb-storage 1-4:1.0
[    5.472462] usb 1-1.2: new high-speed USB device number 5 using xhci_hcd
[    5.546109] usb 1-1.2: New USB device found, idVendor=0424, idProduct=7500
[    5.572517] usb 1-1.2: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[    5.598796] usb 1-1.2: Product: LAN7500
[    5.624817] usb 1-1.2: Manufacturer: SMSC
[    5.650709] usb 1-1.2: SerialNumber: 00800f11700e
[    5.722888] usb 1-1.3: new low-speed USB device number 6 using xhci_hcd
[    5.799500] usb 1-1.3: New USB device found, idVendor=046d, idProduct=c312
[    5.825439] usb 1-1.3: New USB device strings: Mfr=1, Product=2, SerialNumber=0
[    5.851433] usb 1-1.3: Product: USB Multimedia Keyboard
[    5.877277] usb 1-1.3: Manufacturer: LITEON Technology
[    5.903455] usb 1-1.3: ep 0x81 - rounding interval to 128 microframes, ep desc says 192 microframes
[    5.934342] input: LITEON Technology USB Multimedia Keyboard as /devices/pci0000:00/0000:00:14.0/usb1/1-1/1-1.3/1-1.3:1.0/0003:046D:C312.0001/input/input2
[    5.987841] hid-generic 0003:046D:C312.0001: input,hidraw0: USB HID v1.10 Keyboard [LITEON Technology USB Multimedia Keyboard] on usb-0000:00:14.0-1.3/input0
[    6.283845] scsi 0:0:0:0: Direct-Access     Kingston DataTraveler 2.0 1.00 PQ: 0 ANSI: 2
[    6.312670] sd 0:0:0:0: Attached scsi generic sg0 type 0
[    6.340500] sd 0:0:0:0: [sda] 7856128 512-byte logical blocks: (4.02 GB/3.74 GiB)
[    6.368763] sd 0:0:0:0: [sda] Write Protect is off
[    6.396559] sd 0:0:0:0: [sda] Mode Sense: 23 00 00 00
[    6.396951] sd 0:0:0:0: [sda] No Caching mode page found
[    6.424634] sd 0:0:0:0: [sda] Assuming drive cache: write through
[    6.455250]  sda: sda1 sda2
[    6.493244] sd 0:0:0:0: [sda] Attached SCSI removable disk
[    7.133143] EXT4-fs (sda2): couldn't mount as ext3 due to feature incompatibilities
[    7.165576] EXT4-fs (sda2): couldn't mount as ext2 due to feature incompatibilities
[    7.377686] random: nonblocking pool is initialized
[    8.465142] EXT4-fs (sda2): recovery complete
[    8.498270] EXT4-fs (sda2): mounted filesystem with ordered data mode. Opts: (null)
[    9.397075] udevd[1685]: starting version 173
[    9.575548] sst-acpi 80860F28:00: Direct firmware load failed with error -2
[    9.586011] sst-acpi 80860F28:00: Falling back to user helper
[    9.659046] smsc75xx v1.0.0
[    9.663697] byt-rt5640 byt-rt5640: ASoC: CPU DAI Front-cpu-dai not registered
[    9.663727] platform byt-rt5640: Driver byt-rt5640 requests probe deferral
[    9.665590] input: gpio-keys as /devices/platform/gpio-keys.0.auto/input/input3
[    9.665813] byt-rt5640 byt-rt5640: ASoC: CPU DAI Front-cpu-dai not registered
[    9.665830] platform byt-rt5640: Driver byt-rt5640 requests probe deferral
[    9.665963] input: gpio-keys as /devices/platform/gpio-keys.1.auto/input/input4
[    9.666173] byt-rt5640 byt-rt5640: ASoC: CPU DAI Front-cpu-dai not registered
[    9.666201] platform byt-rt5640: Driver byt-rt5640 requests probe deferral
[    9.687821] sst-acpi 80860F28:00: Cannot load firmware intel/fw_sst_0f28.bin-i2s_master
[    9.740744] byt-rt5640 byt-rt5640: ASoC: CPU DAI Front-cpu-dai not registered
[    9.748565] platform byt-rt5640: Driver byt-rt5640 requests probe deferral
[    9.802203] smsc75xx 1-1.2:1.0 eth0: register 'smsc75xx' at usb-0000:00:14.0-1.2, smsc75xx USB 2.0 Gigabit Ethernet, 70:2f:97:00:22:4f
[    9.832548] byt-rt5640 byt-rt5640: ASoC: CPU DAI Front-cpu-dai not registered
[    9.832576] usbcore: registered new interface driver smsc75xx
[    9.893278] platform byt-rt5640: Driver byt-rt5640 requests probe deferral
[   17.848198] mmc0: Got data interrupt 0x00000002 even though no data operation was in progress.
[   17.881105] mmcblk0rpmb: error -110 transferring data, sector 8064, nr 8, cmd response 0x900, card status 0xb00
[   17.912406] mmcblk0rpmb: retrying using single block read
[   17.945754] mmcblk0rpmb: timed out sending r/w cmd command, card status 0x400900
[   17.979175] mmcblk0rpmb: timed out sending r/w cmd command, card status 0x400900
[   18.012512] mmcblk0rpmb: timed out sending r/w cmd command, card status 0x400900
[   18.045642] mmcblk0rpmb: timed out sending r/w cmd command, card status 0x400900
[   18.078551] mmcblk0rpmb: timed out sending r/w cmd command, card status 0x400900
[   18.111376] mmcblk0rpmb: timed out sending r/w cmd command, card status 0x400900
[   18.141842] end_request: I/O error, dev mmcblk0rpmb, sector 8064
[   18.172280] Buffer I/O error on device mmcblk0rpmb, logical block 1008
[   26.412192] mmc0: Got data interrupt 0x00000002 even though no data operation was in progress.
[   26.445097] mmcblk0rpmb: error -110 transferring data, sector 8064, nr 8, cmd response 0x900, card status 0xb00
[   26.476216] mmcblk0rpmb: retrying using single block read
[   26.509384] mmcblk0rpmb: timed out sending r/w cmd command, card status 0x400900
[   26.542804] mmcblk0rpmb: timed out sending r/w cmd command, card status 0x400900
[   26.576088] mmcblk0rpmb: timed out sending r/w cmd command, card status 0x400900
[   26.609213] mmcblk0rpmb: timed out sending r/w cmd command, card status 0x400900
[   26.642197] mmcblk0rpmb: timed out sending r/w cmd command, card status 0x400900
[   26.675018] mmcblk0rpmb: timed out sending r/w cmd command, card status 0x400900
[   26.705569] end_request: I/O error, dev mmcblk0rpmb, sector 8064
[   26.736209] Buffer I/O error on device mmcblk0rpmb, logical block 1008
[   34.976372] mmc0: Got data interrupt 0x00000002 even though no data operation was in progress.
[   35.009672] mmcblk0rpmb: error -110 transferring data, sector 0, nr 16, cmd response 0x900, card status 0xb00
[   35.041225] mmcblk0rpmb: retrying using single block read
[   35.074866] mmcblk0rpmb: timed out sending r/w cmd command, card status 0x400900
[   35.108774] mmcblk0rpmb: timed out sending r/w cmd command, card status 0x400900
[   35.142514] mmcblk0rpmb: timed out sending r/w cmd command, card status 0x400900
[   35.175989] mmcblk0rpmb: timed out sending r/w cmd command, card status 0x400900
[   35.209198] mmcblk0rpmb: timed out sending r/w cmd command, card status 0x400900
[   35.242265] mmcblk0rpmb: timed out sending r/w cmd command, card status 0x400900
[   35.273048] end_request: I/O error, dev mmcblk0rpmb, sector 0
[   35.303872] Buffer I/O error on device mmcblk0rpmb, logical block 0
[   35.334799] end_request: I/O error, dev mmcblk0rpmb, sector 8
[   35.365938] Buffer I/O error on device mmcblk0rpmb, logical block 1
[   43.617294] mmc0: Got data interrupt 0x00000002 even though no data operation was in progress.
[   43.650980] mmcblk0rpmb: error -110 transferring data, sector 0, nr 8, cmd response 0x900, card status 0xb00
[   43.682898] mmcblk0rpmb: retrying using single block read
[   43.716786] mmcblk0rpmb: timed out sending r/w cmd command, card status 0x400900
[   43.750783] mmcblk0rpmb: timed out sending r/w cmd command, card status 0x400900
[   43.784503] mmcblk0rpmb: timed out sending r/w cmd command, card status 0x400900
[   43.818029] mmcblk0rpmb: timed out sending r/w cmd command, card status 0x400900
[   43.851320] mmcblk0rpmb: timed out sending r/w cmd command, card status 0x400900
[   43.884543] mmcblk0rpmb: timed out sending r/w cmd command, card status 0x400900
[   43.915400] end_request: I/O error, dev mmcblk0rpmb, sector 0
[   43.946246] Buffer I/O error on device mmcblk0rpmb, logical block 0
[   48.209694] IPv6: ADDRCONF(NETDEV_UP): eth0: link is not ready
[   49.750189] IPv6: ADDRCONF(NETDEV_CHANGE): eth0: link becomes ready
[   49.780667] smsc75xx 1-1.2:1.0 eth0: link up, 100Mbps, full-duplex, lpa 0x45E1
[   49.815109] smsc75xx 1-1.2:1.0 eth0: link up, 100Mbps, full-duplex, lpa 0x45E1

[-- Attachment #2: This is a digitally signed message part. --]
[-- Type: application/pgp-signature, Size: 316 bytes --]

^ permalink raw reply	[flat|nested] 79+ messages in thread

* Re: [Patch V2 0/9] I2C ACPI operation region handler support
  2014-05-20 14:17           ` Rolf Eike Beer
@ 2014-05-22 15:14             ` Lan Tianyu
  2014-05-23  6:55               ` Rolf Eike Beer
  0 siblings, 1 reply; 79+ messages in thread
From: Lan Tianyu @ 2014-05-22 15:14 UTC (permalink / raw)
  To: Rolf Eike Beer
  Cc: wsa, rjw, mika.westerberg, awilliam, lenb, linux-i2c,
	linux-kernel, linux-acpi

On 05/20/2014 10:17 PM, Rolf Eike Beer wrote:
> Rolf Eike Beer wrote:
>> Lan Tianyu wrote:
>>> On 05/13/2014 09:09 PM, Rolf Eike Beer wrote:
>>>> Am Montag, 28. April 2014, 22:27:39 schrieb Lan Tianyu:
>>>>> ACPI 5.0 spec(5.5.2.4.5) defines GenericSerialBus(i2c, spi, uart)
>>>>> operation
>>>>> region. It allows ACPI aml code able to access such kind of devices to
>>>>> implement some ACPI standard method.
>>>>>
>>>>> On the Asus T100TA, Bios use GenericSerialBus operation region to
>>>>> access
>>>>> i2c device to get battery info. So battery function depends on the I2C
>>>>> operation region support. Here is the bug link.
>>>>> https://bugzilla.kernel.org/show_bug.cgi?id=69011
>
>>>> I have tested this series and got some errors, but no additional
>>>> functionality:
>
>> this is an Aava Inari 8 tablet (pre-release hardware). Please find the DSDT
>> and the dmesg.log attached.
>
> It may be that I have taken the wrong ACPI files. This is the result of a
> fresh run of acpidump, together with the most recent dmesg.log, just in case
> I messed it up.

Hi Rolf:
	I have check the log. I2C ACPI operation region targets to I2C controller which 
has one ACPI node in the ACPI table and is associated with one I2C adapter. 
Graphic with one ACPI handle registers several I2C adapters. This causes attach 
data to the ACPI handle with the same handler several time. The ACPICA function 
will return ALREADY EXIST error code and causes the log you mentioned. There is 
no I2C ACPI operation region under graphic device node and so not break 
function. To avoid these noise logs, I make them only appear under dynamic debug 
mode in the my V3 patchset.


>
> Kernel now is at 60b5f90+some patches:
>
> 8e7bd6f pinctrl: baytrail: Register GPIO chip after chip->to_irq is set
> c4b2230 pinctrl: baytrail: Add back Baytrail-T ACPI ID
> 32f3364 gpio: Add support for Intel SoC PMIC (Crystal Cove)
> 088ee81 mfd: intel_soc_pmic: Build files
> 5315135 mfd: intel_soc_pmic: Crystal Cove support
> 8b5ed0b mfd: intel_soc_pmic: I2C interface
> b18979f mfd: intel_soc_pmic: Core driver
> 5200b75 add debugging
>    (This is the debug patch Lan Tianyu sent as reply to the previous mail)
> bd3e6c6 I2C/ACPI: Add CONFIG_I2C_ACPI config
> 947f0a1 I2C/ACPI: Move ACPI related code to i2c-acpi.c
> 534f182 I2C/ACPI: Add i2c ACPI operation region support
> 32384d4 I2C: Add smbus word/block process call helper function
> aa6459e I2C: Add smbus quick read/write helper function
> 51825ed ACPI/Thermal: Use acpi_bus_attach_private_data() to attach private data
> 95e9e92 ACPI: Add acpi_bus_attach_private_data() to facilitate to attach data to ACPI handle
> cc6fecb ACPICA: Export acpi_buffer_to_resource symbol
> ad38de6 ACPI / LPSS: custom power domain for LPSS
> b0caadf ACPI / PM: Export rest of the subsys functions
> 22a7210 ACPI / platform: add another ID for Broadcom Bluetooth and GPS chips
>   (this just adds AAM4752 as another platform id)
> 000627d ACPI / platform: add IDs for Broadcom Bluetooth and GPS chips
>
> Eike
>


^ permalink raw reply	[flat|nested] 79+ messages in thread

* Re: [Patch V2 0/9] I2C ACPI operation region handler support
  2014-05-22 15:14             ` Lan Tianyu
@ 2014-05-23  6:55               ` Rolf Eike Beer
  0 siblings, 0 replies; 79+ messages in thread
From: Rolf Eike Beer @ 2014-05-23  6:55 UTC (permalink / raw)
  To: Lan Tianyu
  Cc: wsa, rjw, mika.westerberg, awilliam, lenb, linux-i2c,
	linux-kernel, linux-acpi

[-- Attachment #1: Type: text/plain, Size: 1237 bytes --]

Lan Tianyu wrote:
> On 05/20/2014 10:17 PM, Rolf Eike Beer wrote:

> > It may be that I have taken the wrong ACPI files. This is the result of a
> > fresh run of acpidump, together with the most recent dmesg.log, just in
> > case I messed it up.
> 
> 	I have check the log. I2C ACPI operation region targets to I2C controller
> which has one ACPI node in the ACPI table and is associated with one I2C
> adapter. Graphic with one ACPI handle registers several I2C adapters. This
> causes attach data to the ACPI handle with the same handler several time.
> The ACPICA function will return ALREADY EXIST error code and causes the log
> you mentioned. There is no I2C ACPI operation region under graphic device
> node and so not break function. To avoid these noise logs, I make them only
> appear under dynamic debug mode in the my V3 patchset.

Hi,

thanks for the clarification.

Greetings,

Eike
-- 
Rolf Eike Beer, emlix GmbH, http://www.emlix.com
Fon +49 551 30664-0, Fax +49 551 30664-11
Bertha-von-Suttner-Str. 9, 37085 Göttingen, Germany
Sitz der Gesellschaft: Göttingen, Amtsgericht Göttingen HR B 3160
Geschäftsführung: Dr. Uwe Kracke, Ust-IdNr.: DE 205 198 055

emlix - smart embedded open source

[-- Attachment #2: This is a digitally signed message part. --]
[-- Type: application/pgp-signature, Size: 316 bytes --]

^ permalink raw reply	[flat|nested] 79+ messages in thread

end of thread, other threads:[~2014-05-23  6:56 UTC | newest]

Thread overview: 79+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2014-04-16 13:24 [PATCH 0/9] I2C ACPI operation region handler support Lan Tianyu
2014-04-16 13:24 ` [PATCH 1/9] ACPICA: Executer: Fix buffer allocation issue for generic_serial_bus region field accesses Lan Tianyu
2014-04-21 21:38   ` Rafael J. Wysocki
2014-04-22  1:14     ` Lan Tianyu
2014-04-16 13:24 ` [PATCH 2/9] ACPICA: Export acpi_buffer_to_resource symbol Lan Tianyu
2014-04-16 13:24 ` [PATCH 3/9] ACPI: Add acpi_bus_attach_private_data() to facilitate to attach data to ACPI handle Lan Tianyu
2014-04-16 13:24 ` [PATCH 4/9] ACPI/Thermal: Use acpi_bus_attach_private_data() to attach private data Lan Tianyu
2014-04-16 13:24 ` [PATCH 5/9] I2C: Add smbus quick read/write helper function Lan Tianyu
2014-04-16 13:24 ` [PATCH 6/9] I2C: Add smbus word/block process call " Lan Tianyu
2014-04-16 13:24 ` [PATCH 7/9] I2C/ACPI: Add i2c ACPI operation region support Lan Tianyu
2014-04-16 13:24 ` [PATCH 8/9] I2C/ACPI: Move ACPI related code to i2c-acpi.c Lan Tianyu
2014-04-16 13:24 ` [PATCH 9/9] I2C/ACPI: Add CONFIG_I2C_ACPI config Lan Tianyu
2014-04-16 13:33 ` [PATCH 0/9] I2C ACPI operation region handler support Lan Tianyu
2014-04-16 16:35 ` Adam Williamson
2014-04-22  6:24 ` [Resend Patch " Lan Tianyu
2014-04-22  6:24   ` [Resend Patch 1/9] ACPICA: Executer: Fix buffer allocation issue for generic_serial_bus region field accesses Lan Tianyu
2014-04-22 11:21     ` Mika Westerberg
2014-04-22  6:24   ` [Resend Patch 2/9] ACPICA: Export acpi_buffer_to_resource symbol Lan Tianyu
2014-04-22 11:21     ` Mika Westerberg
2014-04-22  6:24   ` [Resend Patch 3/9] ACPI: Add acpi_bus_attach_private_data() to facilitate to attach data to ACPI handle Lan Tianyu
2014-04-22 11:23     ` Mika Westerberg
2014-04-22  6:24   ` [Resend Patch 4/9] ACPI/Thermal: Use acpi_bus_attach_private_data() to attach private data Lan Tianyu
2014-04-22 11:24     ` Mika Westerberg
2014-04-22  6:24   ` [Resend Patch 5/9] I2C: Add smbus quick read/write helper function Lan Tianyu
2014-04-22 11:24     ` Mika Westerberg
2014-04-22  6:24   ` [Resend Patch 6/9] I2C: Add smbus word/block process call " Lan Tianyu
2014-04-22 11:26     ` Mika Westerberg
2014-04-22  6:24   ` [Resend Patch 7/9] I2C/ACPI: Add i2c ACPI operation region support Lan Tianyu
2014-04-22 11:36     ` Mika Westerberg
2014-04-23  1:53       ` Lan Tianyu
2014-04-23  7:28         ` Mika Westerberg
2014-04-23  7:17           ` Lan Tianyu
2014-04-22  6:24   ` [Resend Patch 8/9] I2C/ACPI: Move ACPI related code to i2c-acpi.c Lan Tianyu
2014-04-22 11:38     ` Mika Westerberg
2014-04-22  6:24   ` [Resend Patch 9/9] I2C/ACPI: Add CONFIG_I2C_ACPI config Lan Tianyu
2014-04-22 11:45     ` Mika Westerberg
2014-04-23  5:39       ` Lan Tianyu
2014-04-23  6:47         ` Zheng, Lv
2014-04-23  7:40           ` Mika Westerberg
2014-04-23 23:03   ` [Resend Patch 0/9] I2C ACPI operation region handler support Adam Williamson
2014-04-28 14:27   ` [Patch V2 " Lan Tianyu
2014-04-28 14:27     ` [Patch V2 1/9] ACPICA: Executer: Fix buffer allocation issue for generic_serial_bus region field accesses Lan Tianyu
2014-04-28 17:52       ` Adam Williamson
2014-04-28 18:08         ` Adam Williamson
2014-04-28 22:50           ` Rafael J. Wysocki
2014-04-29 11:31             ` Wolfram Sang
2014-04-29 21:37               ` Rafael J. Wysocki
2014-04-28 14:27     ` [Patch V2 2/9] ACPICA: Export acpi_buffer_to_resource symbol Lan Tianyu
2014-04-28 14:27     ` [Patch V2 3/9] ACPI: Add acpi_bus_attach_private_data() to facilitate to attach data to ACPI handle Lan Tianyu
2014-04-28 14:27     ` [Patch V2 4/9] ACPI/Thermal: Use acpi_bus_attach_private_data() to attach private data Lan Tianyu
2014-04-28 14:27     ` [Patch V2 5/9] I2C: Add smbus quick read/write helper function Lan Tianyu
2014-05-17  9:41       ` Wolfram Sang
2014-05-17 13:13         ` Lan Tianyu
2014-05-17 17:15           ` Wolfram Sang
2014-04-28 14:27     ` [Patch V2 6/9] I2C: Add smbus word/block process call " Lan Tianyu
2014-05-17 10:21       ` Wolfram Sang
2014-05-17 13:59         ` Lan Tianyu
2014-05-17 17:17           ` Wolfram Sang
2014-05-19  9:23             ` Lan Tianyu
2014-04-28 14:27     ` [Patch V2 7/9] I2C/ACPI: Add i2c ACPI operation region support Lan Tianyu
2014-04-29  8:02       ` Mika Westerberg
2014-04-28 14:27     ` [Patch V2 8/9] I2C/ACPI: Move ACPI related code to i2c-acpi.c Lan Tianyu
2014-04-28 14:27     ` [Patch V2 9/9] I2C/ACPI: Add CONFIG_I2C_ACPI config Lan Tianyu
2014-04-29  8:16       ` Mika Westerberg
2014-05-17 17:48         ` Wolfram Sang
2014-05-19  8:49           ` Mika Westerberg
2014-05-19  9:44             ` Lan Tianyu
2014-05-19 20:23               ` Rafael J. Wysocki
2014-04-28 22:51     ` [Patch V2 0/9] I2C ACPI operation region handler support Rafael J. Wysocki
2014-04-29  1:54       ` Lan Tianyu
2014-04-29 15:47         ` Rafael J. Wysocki
2014-05-13 13:09     ` Rolf Eike Beer
2014-05-13 14:06       ` Lan Tianyu
2014-05-15  7:50         ` Rolf Eike Beer
2014-05-15 14:49           ` Lan Tianyu
2014-05-16  8:43             ` Rolf Eike Beer
2014-05-20 14:17           ` Rolf Eike Beer
2014-05-22 15:14             ` Lan Tianyu
2014-05-23  6:55               ` Rolf Eike Beer

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