diff for duplicates of <45EB01E8.5080003@assembler.cz> diff --git a/a/1.txt b/N1/1.txt index c1b1332..16c6059 100644 --- a/a/1.txt +++ b/N1/1.txt @@ -50,3 +50,12 @@ relation... Thanks, Rudolf + + +-------------- next part -------------- +A non-text attachment was scrubbed... +Name: acpi-io-sync.patch +Type: text/x-diff +Size: 7824 bytes +Desc: not available +Url : http://lists.lm-sensors.org/pipermail/lm-sensors/attachments/20070304/8d85322d/attachment.bin diff --git a/a/2.hdr b/a/2.hdr deleted file mode 100644 index e252004..0000000 --- a/a/2.hdr +++ /dev/null @@ -1,5 +0,0 @@ -Content-Type: text/x-diff; - name="acpi-io-sync.patch" -Content-Transfer-Encoding: 7bit -Content-Disposition: inline; - filename="acpi-io-sync.patch" diff --git a/a/2.txt b/a/2.txt deleted file mode 100644 index 9036813..0000000 --- a/a/2.txt +++ /dev/null @@ -1,280 +0,0 @@ -Index: linux-2.6.20/include/linux/ioport.h -=================================================================== ---- linux-2.6.20.orig/include/linux/ioport.h 2007-03-04 10:31:03.457166952 +0100 -+++ linux-2.6.20/include/linux/ioport.h 2007-03-04 15:55:03.458260761 +0100 -@@ -14,10 +14,19 @@ - * Resources are tree-like, allowing - * nesting etc.. - */ -+ -+struct resource_ops { -+ int (*read_io)(u32 size, u32 port, u32 *where, void *priv); -+ int (*write_io)(u32 size, u32 port, u32 val, void *priv); -+ void *priv_data; -+}; -+ - struct resource { - resource_size_t start; - resource_size_t end; - const char *name; -+ //void *resource_data; -+ struct resource_ops *res_ops; - unsigned long flags; - struct resource *parent, *sibling, *child; - }; -Index: linux-2.6.20/drivers/acpi/osl.c -=================================================================== ---- linux-2.6.20.orig/drivers/acpi/osl.c 2007-03-04 10:31:30.626715256 +0100 -+++ linux-2.6.20/drivers/acpi/osl.c 2007-03-04 16:18:29.958412636 +0100 -@@ -36,6 +36,7 @@ - #include <linux/delay.h> - #include <linux/workqueue.h> - #include <linux/nmi.h> -+#include <linux/ioport.h> - #include <acpi/acpi.h> - #include <asm/io.h> - #include <acpi/acpi_bus.h> -@@ -331,13 +332,8 @@ - return ++t; - } - --acpi_status acpi_os_read_port(acpi_io_address port, u32 * value, u32 width) -+static acpi_status acpi_os_read_port_raw(acpi_io_address port, u32 * value, u32 width) - { -- u32 dummy; -- -- if (!value) -- value = &dummy; -- - switch (width) { - case 8: - *(u8 *) value = inb(port); -@@ -355,10 +351,51 @@ - return AE_OK; - } - -+acpi_status acpi_os_read_port(acpi_io_address port, u32 * value, u32 width) -+{ -+ acpi_status ret = AE_OK; -+ struct resource *conflict, res; -+ u32 dummy; -+ int retval; -+ -+ if (!value) -+ value = &dummy; -+ -+ printk("%s: Port %x\n", __FUNCTION__ , (int) port); -+ res.flags = 0; -+ res.name = "ACPI Access"; -+ res.start = port; -+ res.end = port + width/8 - 1; -+ -+ conflict = ____request_resource(&ioport_resource, &res); -+ -+ while ((conflict) && (conflict->child)) -+ conflict = ____request_resource(conflict, &res); -+ -+ if ((conflict) && (conflict->res_ops) && (conflict->res_ops->write_io)) { -+ printk("Redir called\n"); -+ retval = conflict->res_ops->read_io(width, port, value, conflict->res_ops->priv_data); -+ -+ //this needs coding fix -+ if (retval < 0) { -+ ret = acpi_os_read_port_raw(port, value, width); -+ } else { -+ ret = AE_OK; -+ } -+ } else { -+ printk("Ordinary job\n"); -+ ret = acpi_os_read_port_raw(port, value, width); -+ if (conflict == NULL) -+ release_resource(&res); -+ } -+ -+ return ret; -+} -+ - EXPORT_SYMBOL(acpi_os_read_port); - --acpi_status acpi_os_write_port(acpi_io_address port, u32 value, u32 width) --{ -+static acpi_status acpi_os_write_port_raw(acpi_io_address port, u32 value, u32 width) { -+ - switch (width) { - case 8: - outb(value, port); -@@ -376,6 +413,41 @@ - return AE_OK; - } - -+acpi_status acpi_os_write_port(acpi_io_address port, u32 value, u32 width) -+{ -+ struct resource *conflict, res; -+ acpi_status ret = AE_OK; -+ int retval; -+ res.flags = 0; -+ res.start = port; -+ res.end = port + width/8 - 1; -+ res.name = "ACPI Access"; -+ printk("%s: Port %x\n", __FUNCTION__ , (int) port); -+ -+ conflict = ____request_resource(&ioport_resource, &res); -+ -+ while ((conflict) && (conflict->child)) -+ conflict = ____request_resource(conflict, &res); -+ -+ if ((conflict) && (conflict->res_ops) && (conflict->res_ops->write_io)) { -+ printk("Redir called\n"); -+ retval = conflict->res_ops->write_io(width, port, value, -+ conflict->res_ops->priv_data); -+ //this needs coding fix -+ if (retval < 0) { -+ ret = acpi_os_write_port_raw(port, value, width); -+ } else { -+ ret = AE_OK; -+ } -+ } else { -+ printk("Ordinary job\n"); -+ ret = acpi_os_write_port_raw(port, value, width); -+ if (conflict == NULL) -+ release_resource(&res); -+ } -+ return ret; -+} -+ - EXPORT_SYMBOL(acpi_os_write_port); - - acpi_status -Index: linux-2.6.20/drivers/hwmon/w83627ehf.c -=================================================================== ---- linux-2.6.20.orig/drivers/hwmon/w83627ehf.c 2007-03-04 10:31:03.689180173 +0100 -+++ linux-2.6.20/drivers/hwmon/w83627ehf.c 2007-03-04 15:51:23.737739602 +0100 -@@ -245,6 +245,9 @@ - char valid; /* !=0 if following fields are valid */ - unsigned long last_updated; /* In jiffies */ - -+ u8 reg_pointer; -+ u8 reg_bank; -+ - /* Register values */ - u8 in[10]; /* Register value */ - u8 in_max[10]; /* Register value */ -@@ -270,6 +273,7 @@ - - u8 fan_min_output[4]; /* minimum fan speed */ - u8 fan_stop_time[4]; -+ struct resource_ops res_ops; - }; - - static inline int is_word_sized(u16 reg) -@@ -344,6 +348,74 @@ - return 0; - } - -+ -+//we may return error/unsuppored and legacy acpi outb/inb stuff might take a chance -+ -+static int acpi_emul_read(u32 size, u32 port, u32 *where, void *priv_data) { -+ struct i2c_client *client = (struct i2c_client *) priv_data; -+ struct w83627ehf_data *data = i2c_get_clientdata(client); -+ u16 tmp, reg = (data->reg_bank << 8) | data->reg_pointer; -+ -+ if (size != 8) { -+ printk("this io port size is not emulated\n"); -+ return -EINVAL; -+ } -+ -+ if (port != (client->addr + DATA_REG_OFFSET)) { -+ printk("this port %x is not emulated\n", port); -+ return -EINVAL; -+ } -+ -+ printk("%s: client addr %x port: %x \n", __FUNCTION__ , client->addr, port); -+ printk("Calling read with bank %x reg %x (%x)\n", -+ data->reg_bank, data->reg_pointer,reg); -+ -+ tmp = w83627ehf_read_value(client, reg); -+ *((u8 *) where) = (is_word_sized(reg)) ? tmp >> 8 : tmp; -+ return 0; -+} -+ -+static int acpi_emul_write(u32 size, u32 port, u32 val, void *priv_data) { -+ struct i2c_client *client = (struct i2c_client *) priv_data; -+ struct w83627ehf_data *data = i2c_get_clientdata(client); -+ u16 reg; -+ -+ if (size != 8) { -+ printk("this io port size is not emulated\n"); -+ return -EINVAL; -+ } -+ -+ printk("%s client addr %x port %x\n", __FUNCTION__ , client->addr, port); -+ -+ if (port == (client->addr + ADDR_REG_OFFSET)) { -+ data->reg_pointer = val; -+ } else if (port == (client->addr + DATA_REG_OFFSET)) { -+ -+ if (data->reg_pointer == W83627EHF_REG_BANK) { -+ data->reg_bank = val & 0x3; -+ printk("REG bank changed %x\n", data->reg_bank); -+ } else { -+ reg = (data->reg_bank << 8) | data->reg_pointer; -+ printk("Calling write with bank %x reg %x value %x\n", -+ data->reg_bank, data->reg_pointer, val); -+ -+ if (is_word_sized(reg)) { -+ u16 tmp = w83627ehf_read_value(client, reg); -+ tmp &= 0xff; -+ w83627ehf_write_value(client, reg, (val << 8) | tmp); -+ } else { -+ w83627ehf_write_value(client, reg, val); -+ } -+ data->valid = 0; /* invalidate cache */ -+ } -+ } else { -+ printk("this port %x is not emulated\n", port); -+ return -EINVAL; -+ } -+ return 0; -+} -+ -+ - /* This function assumes that the caller holds data->update_lock */ - static void w83627ehf_write_fan_div(struct i2c_client *client, int nr) - { -@@ -1173,11 +1245,12 @@ - struct i2c_client *client; - struct w83627ehf_data *data; - struct device *dev; -+ struct resource *res; - u8 fan4pin, fan5pin; - int i, err = 0; - -- if (!request_region(address + REGION_OFFSET, REGION_LENGTH, -- w83627ehf_driver.driver.name)) { -+ if (!(res = request_region(address + REGION_OFFSET, REGION_LENGTH, -+ w83627ehf_driver.driver.name))) { - err = -EBUSY; - goto exit; - } -@@ -1292,6 +1365,13 @@ - goto exit_remove; - } - -+ /* there is race condition right now */ -+ -+ printk("RES %p res->res_ops %p client %p\n",res, res->res_ops, client); -+ data->res_ops.write_io = &acpi_emul_write; -+ data->res_ops.read_io = &acpi_emul_read; -+ data->res_ops.priv_data = client; -+ res->res_ops=&data->res_ops; - return 0; - - exit_remove: -@@ -1315,6 +1395,7 @@ - - if ((err = i2c_detach_client(client))) - return err; -+ - release_region(client->addr + REGION_OFFSET, REGION_LENGTH); - kfree(data); diff --git a/a/content_digest b/N1/content_digest index 0f31db3..f624fd6 100644 --- a/a/content_digest +++ b/N1/content_digest @@ -10,16 +10,16 @@ "ref\04dfa50520703030747g3c887f5bxe25caefd1723c635@mail.gmail.com\0" "ref\020070303155048.GA22755@srcf.ucam.org\0" "ref\045E9AB8B.1070804@assembler.cz\0" - "From\0Rudolf Marek <r.marek@assembler.cz>\0" - "Subject\0Re: [lm-sensors] Could the k8temp driver be interfering with ACPI?\0" - "Date\0Sun, 04 Mar 2007 18:29:12 +0100\0" + "From\0r.marek@assembler.cz (Rudolf Marek)\0" + "Subject\0[lm-sensors] Could the k8temp driver be interfering with ACPI?\0" + "Date\0Sun, 04 Mar 2007 17:29:12 +0000\0" "To\0Matthew Garrett <mjg59@srcf.ucam.org>\0" "Cc\0Chuck Ebbert <cebbert@redhat.com>" linux-kernel <linux-kernel@vger.kernel.org> lm-sensors@lm-sensors.org linux-acpi@vger.kernel.org " Pavel Machek <pavel@ucw.cz>\0" - "\01:1\0" + "\00:1\0" "b\0" "Hello again,\n" "\n" @@ -72,289 +72,15 @@ "relation...\n" "\n" "Thanks,\n" - Rudolf - "\01:2\0" - "fn\0acpi-io-sync.patch\0" - "b\0" - "Index: linux-2.6.20/include/linux/ioport.h\n" - "===================================================================\n" - "--- linux-2.6.20.orig/include/linux/ioport.h\t2007-03-04 10:31:03.457166952 +0100\n" - "+++ linux-2.6.20/include/linux/ioport.h\t2007-03-04 15:55:03.458260761 +0100\n" - "@@ -14,10 +14,19 @@\n" - " * Resources are tree-like, allowing\n" - " * nesting etc..\n" - " */\n" - "+\n" - "+struct resource_ops {\n" - "+\tint (*read_io)(u32 size, u32 port, u32 *where, void *priv);\n" - "+\tint (*write_io)(u32 size, u32 port, u32 val, void *priv);\n" - "+\tvoid *priv_data;\n" - "+};\n" - "+\n" - " struct resource {\n" - " \tresource_size_t start;\n" - " \tresource_size_t end;\n" - " \tconst char *name;\n" - "+\t//void *resource_data;\n" - "+\tstruct resource_ops *res_ops;\n" - " \tunsigned long flags;\n" - " \tstruct resource *parent, *sibling, *child;\n" - " };\n" - "Index: linux-2.6.20/drivers/acpi/osl.c\n" - "===================================================================\n" - "--- linux-2.6.20.orig/drivers/acpi/osl.c\t2007-03-04 10:31:30.626715256 +0100\n" - "+++ linux-2.6.20/drivers/acpi/osl.c\t2007-03-04 16:18:29.958412636 +0100\n" - "@@ -36,6 +36,7 @@\n" - " #include <linux/delay.h>\n" - " #include <linux/workqueue.h>\n" - " #include <linux/nmi.h>\n" - "+#include <linux/ioport.h>\n" - " #include <acpi/acpi.h>\n" - " #include <asm/io.h>\n" - " #include <acpi/acpi_bus.h>\n" - "@@ -331,13 +332,8 @@\n" - " \treturn ++t;\n" - " }\n" - " \n" - "-acpi_status acpi_os_read_port(acpi_io_address port, u32 * value, u32 width)\n" - "+static acpi_status acpi_os_read_port_raw(acpi_io_address port, u32 * value, u32 width)\n" - " {\n" - "-\tu32 dummy;\n" - "-\n" - "-\tif (!value)\n" - "-\t\tvalue = &dummy;\n" - "-\n" - " \tswitch (width) {\n" - " \tcase 8:\n" - " \t\t*(u8 *) value = inb(port);\n" - "@@ -355,10 +351,51 @@\n" - " \treturn AE_OK;\n" - " }\n" - " \n" - "+acpi_status acpi_os_read_port(acpi_io_address port, u32 * value, u32 width)\n" - "+{\n" - "+\tacpi_status ret = AE_OK;\n" - "+\tstruct resource *conflict, res;\n" - "+\tu32 dummy;\n" - "+\tint retval;\n" - "+\n" - "+\tif (!value)\n" - "+\t\tvalue = &dummy;\n" - "+\n" - "+\tprintk(\"%s: Port %x\\n\", __FUNCTION__ , (int) port);\n" - "+\tres.flags = 0;\n" - "+\tres.name = \"ACPI Access\";\n" - "+\tres.start = port;\n" - "+\tres.end = port + width/8 - 1;\n" - "+\t\n" - "+\tconflict = ____request_resource(&ioport_resource, &res);\n" - "+\n" - "+\twhile ((conflict) && (conflict->child))\n" - "+\t\tconflict = ____request_resource(conflict, &res);\n" - "+\n" - "+\tif ((conflict) && (conflict->res_ops) && (conflict->res_ops->write_io)) {\n" - "+\t\tprintk(\"Redir called\\n\");\n" - "+\t\tretval = conflict->res_ops->read_io(width, port, value, conflict->res_ops->priv_data);\n" - "+\n" - "+\t\t//this needs coding fix\n" - "+\t\tif (retval < 0) {\n" - "+\t\t\tret = acpi_os_read_port_raw(port, value, width);\n" - "+\t\t} else {\n" - "+\t\t\tret = AE_OK;\n" - "+\t\t}\n" - "+\t} else {\n" - "+\t\tprintk(\"Ordinary job\\n\");\n" - "+\t\tret = acpi_os_read_port_raw(port, value, width);\n" - "+\t\tif (conflict == NULL)\n" - "+\t\t\trelease_resource(&res);\n" - "+\t}\n" - "+\n" - "+\treturn ret;\n" - "+}\n" - "+\n" - " EXPORT_SYMBOL(acpi_os_read_port);\n" - " \n" - "-acpi_status acpi_os_write_port(acpi_io_address port, u32 value, u32 width)\n" - "-{\n" - "+static acpi_status acpi_os_write_port_raw(acpi_io_address port, u32 value, u32 width) {\n" - "+\n" - " \tswitch (width) {\n" - " \tcase 8:\n" - " \t\toutb(value, port);\n" - "@@ -376,6 +413,41 @@\n" - " \treturn AE_OK;\n" - " }\n" - " \n" - "+acpi_status acpi_os_write_port(acpi_io_address port, u32 value, u32 width)\n" - "+{\n" - "+\tstruct resource *conflict, res;\n" - "+\tacpi_status ret = AE_OK;\n" - "+\tint retval;\n" - "+\tres.flags = 0;\n" - "+\tres.start = port;\n" - "+\tres.end = port + width/8 - 1;\n" - "+\tres.name = \"ACPI Access\";\n" - "+\tprintk(\"%s: Port %x\\n\", __FUNCTION__ , (int) port);\n" - "+\t\n" - "+\tconflict = ____request_resource(&ioport_resource, &res);\n" - "+\n" - "+\twhile ((conflict) && (conflict->child))\n" - "+\t\tconflict = ____request_resource(conflict, &res);\n" - "+\n" - "+\tif ((conflict) && (conflict->res_ops) && (conflict->res_ops->write_io)) {\n" - "+\t\tprintk(\"Redir called\\n\");\n" - "+\t\tretval = conflict->res_ops->write_io(width, port, value,\n" - "+\t\t\t\t\t\t\tconflict->res_ops->priv_data);\n" - "+\t\t//this needs coding fix\n" - "+\t\tif (retval < 0) {\n" - "+\t\t\tret = acpi_os_write_port_raw(port, value, width);\n" - "+\t\t} else {\n" - "+\t\t\tret = AE_OK;\n" - "+\t\t}\n" - "+\t} else {\n" - "+\t\tprintk(\"Ordinary job\\n\");\n" - "+\t\tret = acpi_os_write_port_raw(port, value, width);\n" - "+\t\tif (conflict == NULL)\n" - "+\t\t\trelease_resource(&res);\n" - "+\t}\n" - "+\treturn ret;\n" - "+}\n" - "+\n" - " EXPORT_SYMBOL(acpi_os_write_port);\n" - " \n" - " acpi_status\n" - "Index: linux-2.6.20/drivers/hwmon/w83627ehf.c\n" - "===================================================================\n" - "--- linux-2.6.20.orig/drivers/hwmon/w83627ehf.c\t2007-03-04 10:31:03.689180173 +0100\n" - "+++ linux-2.6.20/drivers/hwmon/w83627ehf.c\t2007-03-04 15:51:23.737739602 +0100\n" - "@@ -245,6 +245,9 @@\n" - " \tchar valid;\t\t/* !=0 if following fields are valid */\n" - " \tunsigned long last_updated;\t/* In jiffies */\n" - " \n" - "+\tu8 reg_pointer;\n" - "+\tu8 reg_bank;\n" - "+\n" - " \t/* Register values */\n" - " \tu8 in[10];\t\t/* Register value */\n" - " \tu8 in_max[10];\t\t/* Register value */\n" - "@@ -270,6 +273,7 @@\n" - " \n" - " \tu8 fan_min_output[4]; /* minimum fan speed */\n" - " \tu8 fan_stop_time[4];\n" - "+\tstruct resource_ops res_ops;\n" - " };\n" - " \n" - " static inline int is_word_sized(u16 reg)\n" - "@@ -344,6 +348,74 @@\n" - " \treturn 0;\n" - " }\n" - " \n" - "+\n" - "+//we may return error/unsuppored and legacy acpi outb/inb stuff might take a chance\n" - "+\n" - "+static int acpi_emul_read(u32 size, u32 port, u32 *where, void *priv_data) {\n" - "+\tstruct i2c_client *client = (struct i2c_client *) priv_data;\n" - "+\tstruct w83627ehf_data *data = i2c_get_clientdata(client);\n" - "+\tu16 tmp, reg = (data->reg_bank << 8) | data->reg_pointer;\n" - "+\n" - "+\tif (size != 8) {\n" - "+\t\tprintk(\"this io port size is not emulated\\n\");\n" - "+\t\treturn -EINVAL;\n" - "+\t}\n" - "+\n" - "+\tif (port != (client->addr + DATA_REG_OFFSET)) {\n" - "+\t\tprintk(\"this port %x is not emulated\\n\", port);\n" - "+\t\treturn -EINVAL;\n" - "+\t}\n" - "+\n" - "+\tprintk(\"%s: client addr %x port: %x \\n\", __FUNCTION__ , client->addr, port);\n" - "+\tprintk(\"Calling read with bank %x reg %x (%x)\\n\",\n" - "+\t\t\tdata->reg_bank, data->reg_pointer,reg);\n" - "+\n" - "+\ttmp = w83627ehf_read_value(client, reg);\n" - "+\t*((u8 *) where) = (is_word_sized(reg)) ? tmp >> 8 : tmp;\n" - "+\treturn 0;\n" - "+}\n" - "+\n" - "+static int acpi_emul_write(u32 size, u32 port, u32 val, void *priv_data) {\n" - "+\tstruct i2c_client *client = (struct i2c_client *) priv_data;\n" - "+\tstruct w83627ehf_data *data = i2c_get_clientdata(client);\n" - "+\tu16 reg;\n" - "+\n" - "+\tif (size != 8) {\n" - "+\t\tprintk(\"this io port size is not emulated\\n\");\n" - "+\t\treturn -EINVAL;\n" - "+\t}\n" - "+\n" - "+\tprintk(\"%s client addr %x port %x\\n\", __FUNCTION__ , client->addr, port);\n" - "+\n" - "+\tif (port == (client->addr + ADDR_REG_OFFSET)) {\n" - "+\t\tdata->reg_pointer = val;\n" - "+\t} else if (port == (client->addr + DATA_REG_OFFSET)) {\n" - "+\n" - "+\t\tif (data->reg_pointer == W83627EHF_REG_BANK) {\n" - "+\t\t\tdata->reg_bank = val & 0x3;\n" - "+\t\t\tprintk(\"REG bank changed %x\\n\", data->reg_bank);\n" - "+\t\t} else { \n" - "+\t\t\treg = (data->reg_bank << 8) | data->reg_pointer;\n" - "+\t\t\tprintk(\"Calling write with bank %x reg %x value %x\\n\",\n" - "+\t\t\t\tdata->reg_bank, data->reg_pointer, val);\n" - "+\t\t\t\n" - "+\t\t\tif (is_word_sized(reg)) {\n" - "+\t\t\t\tu16 tmp = w83627ehf_read_value(client, reg);\n" - "+\t\t\t\ttmp &= 0xff;\n" - "+\t\t\t\tw83627ehf_write_value(client, reg, (val << 8) | tmp);\n" - "+\t\t\t} else {\n" - "+\t\t\t\tw83627ehf_write_value(client, reg, val);\n" - "+\t\t\t}\n" - "+\t\t\tdata->valid = 0; /* invalidate cache */\n" - "+\t\t}\n" - "+\t} else {\n" - "+\t\tprintk(\"this port %x is not emulated\\n\", port);\n" - "+\t\treturn -EINVAL;\t\n" - "+\t}\n" - "+\treturn 0;\n" - "+}\n" - "+\n" - "+\n" - " /* This function assumes that the caller holds data->update_lock */\n" - " static void w83627ehf_write_fan_div(struct i2c_client *client, int nr)\n" - " {\n" - "@@ -1173,11 +1245,12 @@\n" - " \tstruct i2c_client *client;\n" - " \tstruct w83627ehf_data *data;\n" - " \tstruct device *dev;\n" - "+\tstruct resource *res;\n" - " \tu8 fan4pin, fan5pin;\n" - " \tint i, err = 0;\n" - " \n" - "-\tif (!request_region(address + REGION_OFFSET, REGION_LENGTH,\n" - "-\t w83627ehf_driver.driver.name)) {\n" - "+\tif (!(res = request_region(address + REGION_OFFSET, REGION_LENGTH,\n" - "+\t w83627ehf_driver.driver.name))) {\n" - " \t\terr = -EBUSY;\n" - " \t\tgoto exit;\n" - " \t}\n" - "@@ -1292,6 +1365,13 @@\n" - " \t\tgoto exit_remove;\n" - " \t}\n" - " \n" - "+\t/* there is race condition right now */\n" - "+\t\n" - "+\tprintk(\"RES %p res->res_ops %p client %p\\n\",res, res->res_ops, client);\n" - "+\tdata->res_ops.write_io = &acpi_emul_write;\n" - "+\tdata->res_ops.read_io = &acpi_emul_read;\n" - "+\tdata->res_ops.priv_data = client;\n" - "+\tres->res_ops=&data->res_ops;\n" - " \treturn 0;\n" - " \n" - " exit_remove:\n" - "@@ -1315,6 +1395,7 @@\n" - " \n" - " \tif ((err = i2c_detach_client(client)))\n" - " \t\treturn err;\n" - "+\n" - " \trelease_region(client->addr + REGION_OFFSET, REGION_LENGTH);\n" - " \tkfree(data);" + "Rudolf\n" + "\n" + "\n" + "-------------- next part --------------\n" + "A non-text attachment was scrubbed...\n" + "Name: acpi-io-sync.patch\n" + "Type: text/x-diff\n" + "Size: 7824 bytes\n" + "Desc: not available\n" + Url : http://lists.lm-sensors.org/pipermail/lm-sensors/attachments/20070304/8d85322d/attachment.bin -5ab3d4677dee9d45fab9496202472ea1a4c23b188ea53376aae023262e5ee00a +70ce4a4748c27127196165c569c308fd445d1e14d9a501694ae30871b208a520
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.