LKML Archive on lore.kernel.org help / color / mirror / Atom feed
* [PATCH 2/5] Provide acpi_check_{mem_}region. @ 2007-10-24 14:32 Thomas Renninger 2008-02-08 7:40 ` Andrew Morton 0 siblings, 1 reply; 7+ messages in thread From: Thomas Renninger @ 2007-10-24 14:32 UTC (permalink / raw) To: linux-acpi; +Cc: linux-kernel, Len Brown, Andrew Morton, Jean Delvare Provide acpi_check_{mem_}region. Drivers can additionally check against possible ACPI interference by also invoking this shortly before they call request_region. If -EBUSY is returned, the driver must not load. Use acpi_enforce_resources=strict/lax/no options to: - strict: let conflicting drivers fail to load with an error message - lax: let conflicting driver work normal with a warning message - no: no functional change at all Signed-off-by: Thomas Renninger <trenn@suse.de> --- drivers/acpi/osl.c | 175 ++++++++++++++++++++++++++++++++++++++++++++++++++- include/linux/acpi.h | 13 +++ 2 files changed, 186 insertions(+), 2 deletions(-) Index: lenb/drivers/acpi/osl.c =================================================================== --- lenb.orig/drivers/acpi/osl.c +++ lenb/drivers/acpi/osl.c @@ -44,6 +44,8 @@ #include <asm/uaccess.h> #include <linux/efi.h> +#include <linux/ioport.h> +#include <linux/list.h> #define _COMPONENT ACPI_OS_SERVICES ACPI_MODULE_NAME("osl"); @@ -74,6 +76,18 @@ static void *acpi_irq_context; static struct workqueue_struct *kacpid_wq; static struct workqueue_struct *kacpi_notify_wq; +struct acpi_res_list { + resource_size_t start; + resource_size_t end; + acpi_adr_space_type resource_type; /* IO port, System memory, ...*/ + char name[5]; /* only can have a length of 4 chars, make use of this + one instead of res->name, no need to kalloc then */ + struct list_head resource_list; +}; + +static LIST_HEAD(resource_list_head); +static DEFINE_SPINLOCK(acpi_res_lock); + #define OSI_STRING_LENGTH_MAX 64 /* arbitrary */ static char osi_additional_string[OSI_STRING_LENGTH_MAX]; @@ -1042,6 +1056,127 @@ static int __init acpi_wake_gpes_always_ __setup("acpi_wake_gpes_always_on", acpi_wake_gpes_always_on_setup); +/* Check of resource interference between native drivers and ACPI + * OperationRegions (SystemIO and System Memory only). + * IO ports and memory declared in ACPI might be used by the ACPI subsystem + * in arbitrary AML code and can interfere with legacy drivers. + * acpi_enforce_resources= can be set to: + * + * - strict (2) + * -> further driver trying to access the resources will not load + * - lax (default) (1) + * -> further driver trying to access the resources will load, but you + * get a system message that something might go wrong... + * + * - no (0) + * -> ACPI Operation Region resources will not be registered + * + */ +#define ENFORCE_RESOURCES_STRICT 2 +#define ENFORCE_RESOURCES_LAX 1 +#define ENFORCE_RESOURCES_NO 0 + +static unsigned int acpi_enforce_resources = ENFORCE_RESOURCES_LAX; + +static int __init acpi_enforce_resources_setup(char *str) +{ + if (str == NULL || *str == '\0') + return 0; + + if (!strcmp("strict", str)) + acpi_enforce_resources = ENFORCE_RESOURCES_STRICT; + else if (!strcmp("lax", str)) + acpi_enforce_resources = ENFORCE_RESOURCES_LAX; + else if (!strcmp("no", str)) + acpi_enforce_resources = ENFORCE_RESOURCES_NO; + + return 1; +} + +__setup("acpi_enforce_resources=", acpi_enforce_resources_setup); + +/* Check for resource conflicts between ACPI OperationRegions and native + * drivers */ +static int acpi_check_resource_conflict(struct resource *res) +{ + struct acpi_res_list *res_list_elem; + int ioport; + int clash = 0; + + if (acpi_enforce_resources == ENFORCE_RESOURCES_NO) + return 0; + if (!(res->flags & IORESOURCE_IO) && !(res->flags & IORESOURCE_MEM)) + return 0; + + ioport = res->flags & IORESOURCE_IO; + + spin_lock(&acpi_res_lock); + list_for_each_entry(res_list_elem, &resource_list_head, + resource_list) { + if (ioport && (res_list_elem->resource_type + != ACPI_ADR_SPACE_SYSTEM_IO)) + continue; + if (!ioport && (res_list_elem->resource_type + != ACPI_ADR_SPACE_SYSTEM_MEMORY)) + continue; + + if (res->end < res_list_elem->start + || res_list_elem->end < res->start) + continue; + clash = 1; + break; + } + spin_unlock(&acpi_res_lock); + + if (clash) { + if (acpi_enforce_resources != ENFORCE_RESOURCES_NO) { + printk("%sACPI: %s resource %s [0x%llx-0x%llx]" + " conflicts with ACPI region %s" + " [0x%llx-0x%llx]\n", + acpi_enforce_resources == ENFORCE_RESOURCES_LAX + ? KERN_WARNING : KERN_ERR, + ioport ? "I/O" : "Memory", res->name, + (long long) res->start, (long long) res->end, + res_list_elem->name, + (long long) res_list_elem->start, + (long long) res_list_elem->end); + printk(KERN_INFO "ACPI: Device needs an ACPI driver\n"); + } + if (acpi_enforce_resources == ENFORCE_RESOURCES_STRICT) + return -EBUSY; + } + return 0; +} + +int acpi_check_region(resource_size_t start, resource_size_t n, + const char *name) +{ + struct resource res = { + .start = start, + .end = start + n - 1, + .name = name, + .flags = IORESOURCE_IO, + }; + + return acpi_check_resource_conflict(&res); +} +EXPORT_SYMBOL(acpi_check_region); + +int acpi_check_mem_region(resource_size_t start, resource_size_t n, + const char *name) +{ + struct resource res = { + .start = start, + .end = start + n - 1, + .name = name, + .flags = IORESOURCE_MEM, + }; + + return acpi_check_resource_conflict(&res); + +} +EXPORT_SYMBOL(acpi_check_mem_region); + /* * Acquire a spinlock. * @@ -1199,10 +1334,46 @@ acpi_status acpi_os_validate_address ( u8 space_id, acpi_physical_address address, - acpi_size length) + acpi_size length, + char *name) { + struct acpi_res_list *res; + if (acpi_enforce_resources == ENFORCE_RESOURCES_NO) + return AE_OK; - return AE_OK; + switch (space_id) { + case ACPI_ADR_SPACE_SYSTEM_IO: + case ACPI_ADR_SPACE_SYSTEM_MEMORY: + /* Only interference checks against SystemIO and SytemMemory + are needed */ + res = kzalloc(sizeof(struct acpi_res_list), GFP_KERNEL); + if (!res) + return AE_OK; + /* ACPI names are fixed to 4 bytes, still better use strlcpy */ + strlcpy(res->name, name, 5); + res->start = address; + res->end = address + length - 1; + res->resource_type = space_id; + spin_lock(&acpi_res_lock); + list_add(&res->resource_list, &resource_list_head); + spin_unlock(&acpi_res_lock); + pr_debug("Added %s resource: start: 0x%llx, end: 0x%llx, " + "name: %s\n", (space_id == ACPI_ADR_SPACE_SYSTEM_IO) + ? "SystemIO" : "System Memory", + res->start, + (unsigned long)res->end, + (unsigned long)res->name); + break; + case ACPI_ADR_SPACE_PCI_CONFIG: + case ACPI_ADR_SPACE_EC: + case ACPI_ADR_SPACE_SMBUS: + case ACPI_ADR_SPACE_CMOS: + case ACPI_ADR_SPACE_PCI_BAR_TARGET: + case ACPI_ADR_SPACE_DATA_TABLE: + case ACPI_ADR_SPACE_FIXED_HARDWARE: + break; + } + return AE_OK; } #ifdef CONFIG_DMI Index: lenb/include/linux/acpi.h =================================================================== --- lenb.orig/include/linux/acpi.h +++ lenb/include/linux/acpi.h @@ -123,10 +123,23 @@ extern int pci_mmcfg_config_num; extern int sbf_port; extern unsigned long acpi_realmode_flags; +int acpi_check_region(resource_size_t start, resource_size_t n, + const char *name); +int acpi_check_mem_region(resource_size_t start, resource_size_t n, + const char *name); + #else /* !CONFIG_ACPI */ #define acpi_mp_config 0 +static inline int acpi_check_region(resource_size_t start, resource_size_t n, + const char *name) +{ return 0; } + +static inline int acpi_check_mem_region(resource_size_t start, + resource_size_t n, const char *name) +{ return 0; } + #endif /* !CONFIG_ACPI */ int acpi_register_gsi (u32 gsi, int triggering, int polarity); ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH 2/5] Provide acpi_check_{mem_}region. 2007-10-24 14:32 [PATCH 2/5] Provide acpi_check_{mem_}region Thomas Renninger @ 2008-02-08 7:40 ` Andrew Morton 2008-02-08 9:11 ` Thomas Renninger 2008-02-10 12:25 ` Jean Delvare 0 siblings, 2 replies; 7+ messages in thread From: Andrew Morton @ 2008-02-08 7:40 UTC (permalink / raw) To: trenn; +Cc: linux-acpi, linux-kernel, Len Brown, Jean Delvare, Mark M. Hoffman On Wed, 24 Oct 2007 16:32:59 +0200 Thomas Renninger <trenn@suse.de> wrote: > Provide acpi_check_{mem_}region. > > Drivers can additionally check against possible ACPI interference by also > invoking this shortly before they call request_region. > If -EBUSY is returned, the driver must not load. > Use acpi_enforce_resources=strict/lax/no options to: > - strict: let conflicting drivers fail to load with an error message > - lax: let conflicting driver work normal with a warning message > - no: no functional change at all > > OK, so Len has merged these into the acpi test tree. My understanding is that once this work hits mainline, we can then merge check-for-acpi-resource-conflicts-in-hwmon-drivers.patch. My normal approach would be to send check-for-acpi-resource-conflicts-in-hwmon-drivers.patch to Mark for inclusion in git-hwmon one Len has merged the prerequisites into mainline. Problem is, if Len merges late in the 2.6.26 merge window, Mark might not have time to gets these changes into mainline before 2.6.27. Which is all getting a bit dumb considering I first merged everything in October. Fortunately things aren't mormally _this_ inefficient when one follows the rules - this was an unusual patchset. But still, I think we could afford to speed things up a bit more than that. We could ask Len to consider merging this work into 2.6.25 and then if Mark can ack check-for-acpi-resource-conflicts-in-hwmon-drivers.patch (below) for an akpm-merge, we're good to go. But I do recall that people were a bit uncertain about it all back in October. Please share your thoughts with us. From: Jean Delvare <jdelvare@suse.de> Check for ACPI resource conflicts in hwmon drivers. I've included all Super-I/O and PCI drivers. I've voluntarily left out: * Laptop specific and vendor-specific drivers: if they conflicted on any system, this would pretty much mean that they conflict on all systems, and we would know by now. * Legacy ISA drivers (lm78 and w83781d): they only support chips found on old designs were ACPI either wasn't supported or didn't deal with thermal management. * Drivers accessing the I/O resources indirectly (e.g. through SMBus): the check will be added where it belongs, i.e. in the bus drivers. Signed-off-by: Jean Delvare <jdelvare@suse.de> Signed-off-by: Thomas Renninger <trenn@suse.de> Cc: "Mark M. Hoffman" <mhoffman@lightlink.com> Cc: Len Brown <lenb@kernel.org> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> --- drivers/hwmon/dme1737.c | 5 +++++ drivers/hwmon/f71805f.c | 5 +++++ drivers/hwmon/f71882fg.c | 5 +++++ drivers/hwmon/it87.c | 5 +++++ drivers/hwmon/pc87360.c | 6 ++++++ drivers/hwmon/pc87427.c | 5 +++++ drivers/hwmon/sis5595.c | 5 +++++ drivers/hwmon/smsc47b397.c | 5 +++++ drivers/hwmon/smsc47m1.c | 5 +++++ drivers/hwmon/via686a.c | 5 +++++ drivers/hwmon/vt1211.c | 5 +++++ drivers/hwmon/vt8231.c | 5 +++++ drivers/hwmon/w83627ehf.c | 6 ++++++ drivers/hwmon/w83627hf.c | 5 +++++ 14 files changed, 72 insertions(+) diff -puN drivers/hwmon/dme1737.c~check-for-acpi-resource-conflicts-in-hwmon-drivers drivers/hwmon/dme1737.c --- a/drivers/hwmon/dme1737.c~check-for-acpi-resource-conflicts-in-hwmon-drivers +++ a/drivers/hwmon/dme1737.c @@ -34,6 +34,7 @@ #include <linux/hwmon-vid.h> #include <linux/err.h> #include <linux/mutex.h> +#include <linux/acpi.h> #include <asm/io.h> /* ISA device, if found */ @@ -2238,6 +2239,10 @@ static int __init dme1737_isa_device_add }; int err; + err = acpi_check_resource_conflict(&res); + if (err) + goto exit; + if (!(pdev = platform_device_alloc("dme1737", addr))) { printk(KERN_ERR "dme1737: Failed to allocate device.\n"); err = -ENOMEM; diff -puN drivers/hwmon/f71805f.c~check-for-acpi-resource-conflicts-in-hwmon-drivers drivers/hwmon/f71805f.c --- a/drivers/hwmon/f71805f.c~check-for-acpi-resource-conflicts-in-hwmon-drivers +++ a/drivers/hwmon/f71805f.c @@ -39,6 +39,7 @@ #include <linux/mutex.h> #include <linux/sysfs.h> #include <linux/ioport.h> +#include <linux/acpi.h> #include <asm/io.h> static unsigned short force_id; @@ -1455,6 +1456,10 @@ static int __init f71805f_device_add(uns } res.name = pdev->name; + err = acpi_check_resource_conflict(&res); + if (err) + goto exit_device_put; + err = platform_device_add_resources(pdev, &res, 1); if (err) { printk(KERN_ERR DRVNAME ": Device resource addition failed " diff -puN drivers/hwmon/f71882fg.c~check-for-acpi-resource-conflicts-in-hwmon-drivers drivers/hwmon/f71882fg.c --- a/drivers/hwmon/f71882fg.c~check-for-acpi-resource-conflicts-in-hwmon-drivers +++ a/drivers/hwmon/f71882fg.c @@ -27,6 +27,7 @@ #include <linux/hwmon-sysfs.h> #include <linux/err.h> #include <linux/mutex.h> +#include <linux/acpi.h> #include <asm/io.h> #define DRVNAME "f71882fg" @@ -898,6 +899,10 @@ static int __init f71882fg_device_add(un return -ENOMEM; res.name = f71882fg_pdev->name; + err = acpi_check_resource_conflict(&res); + if (err) + return err; + err = platform_device_add_resources(f71882fg_pdev, &res, 1); if (err) { printk(KERN_ERR DRVNAME ": Device resource addition failed\n"); diff -puN drivers/hwmon/it87.c~check-for-acpi-resource-conflicts-in-hwmon-drivers drivers/hwmon/it87.c --- a/drivers/hwmon/it87.c~check-for-acpi-resource-conflicts-in-hwmon-drivers +++ a/drivers/hwmon/it87.c @@ -46,6 +46,7 @@ #include <linux/err.h> #include <linux/mutex.h> #include <linux/sysfs.h> +#include <linux/acpi.h> #include <asm/io.h> #define DRVNAME "it87" @@ -1487,6 +1488,10 @@ static int __init it87_device_add(unsign }; int err; + err = acpi_check_resource_conflict(&res); + if (err) + goto exit; + pdev = platform_device_alloc(DRVNAME, address); if (!pdev) { err = -ENOMEM; diff -puN drivers/hwmon/pc87360.c~check-for-acpi-resource-conflicts-in-hwmon-drivers drivers/hwmon/pc87360.c --- a/drivers/hwmon/pc87360.c~check-for-acpi-resource-conflicts-in-hwmon-drivers +++ a/drivers/hwmon/pc87360.c @@ -43,6 +43,7 @@ #include <linux/hwmon-vid.h> #include <linux/err.h> #include <linux/mutex.h> +#include <linux/acpi.h> #include <asm/io.h> static u8 devid; @@ -1425,6 +1426,11 @@ static int __init pc87360_device_add(uns continue; res.start = extra_isa[i]; res.end = extra_isa[i] + PC87360_EXTENT - 1; + + err = acpi_check_resource_conflict(&res); + if (err) + goto exit_device_put; + err = platform_device_add_resources(pdev, &res, 1); if (err) { printk(KERN_ERR "pc87360: Device resource[%d] " diff -puN drivers/hwmon/pc87427.c~check-for-acpi-resource-conflicts-in-hwmon-drivers drivers/hwmon/pc87427.c --- a/drivers/hwmon/pc87427.c~check-for-acpi-resource-conflicts-in-hwmon-drivers +++ a/drivers/hwmon/pc87427.c @@ -32,6 +32,7 @@ #include <linux/mutex.h> #include <linux/sysfs.h> #include <linux/ioport.h> +#include <linux/acpi.h> #include <asm/io.h> static unsigned short force_id; @@ -524,6 +525,10 @@ static int __init pc87427_device_add(uns }; int err; + err = acpi_check_resource_conflict(&res); + if (err) + goto exit; + pdev = platform_device_alloc(DRVNAME, address); if (!pdev) { err = -ENOMEM; diff -puN drivers/hwmon/sis5595.c~check-for-acpi-resource-conflicts-in-hwmon-drivers drivers/hwmon/sis5595.c --- a/drivers/hwmon/sis5595.c~check-for-acpi-resource-conflicts-in-hwmon-drivers +++ a/drivers/hwmon/sis5595.c @@ -62,6 +62,7 @@ #include <linux/jiffies.h> #include <linux/mutex.h> #include <linux/sysfs.h> +#include <linux/acpi.h> #include <asm/io.h> @@ -727,6 +728,10 @@ static int __devinit sis5595_device_add( }; int err; + err = acpi_check_resource_conflict(&res); + if (err) + goto exit; + pdev = platform_device_alloc("sis5595", address); if (!pdev) { err = -ENOMEM; diff -puN drivers/hwmon/smsc47b397.c~check-for-acpi-resource-conflicts-in-hwmon-drivers drivers/hwmon/smsc47b397.c --- a/drivers/hwmon/smsc47b397.c~check-for-acpi-resource-conflicts-in-hwmon-drivers +++ a/drivers/hwmon/smsc47b397.c @@ -36,6 +36,7 @@ #include <linux/err.h> #include <linux/init.h> #include <linux/mutex.h> +#include <linux/acpi.h> #include <asm/io.h> static unsigned short force_id; @@ -303,6 +304,10 @@ static int __init smsc47b397_device_add( }; int err; + err = acpi_check_resource_conflict(&res); + if (err) + goto exit; + pdev = platform_device_alloc(DRVNAME, address); if (!pdev) { err = -ENOMEM; diff -puN drivers/hwmon/smsc47m1.c~check-for-acpi-resource-conflicts-in-hwmon-drivers drivers/hwmon/smsc47m1.c --- a/drivers/hwmon/smsc47m1.c~check-for-acpi-resource-conflicts-in-hwmon-drivers +++ a/drivers/hwmon/smsc47m1.c @@ -37,6 +37,7 @@ #include <linux/init.h> #include <linux/mutex.h> #include <linux/sysfs.h> +#include <linux/acpi.h> #include <asm/io.h> static unsigned short force_id; @@ -686,6 +687,10 @@ static int __init smsc47m1_device_add(un }; int err; + err = acpi_check_resource_conflict(&res); + if (err) + goto exit; + pdev = platform_device_alloc(DRVNAME, address); if (!pdev) { err = -ENOMEM; diff -puN drivers/hwmon/via686a.c~check-for-acpi-resource-conflicts-in-hwmon-drivers drivers/hwmon/via686a.c --- a/drivers/hwmon/via686a.c~check-for-acpi-resource-conflicts-in-hwmon-drivers +++ a/drivers/hwmon/via686a.c @@ -41,6 +41,7 @@ #include <linux/init.h> #include <linux/mutex.h> #include <linux/sysfs.h> +#include <linux/acpi.h> #include <asm/io.h> @@ -755,6 +756,10 @@ static int __devinit via686a_device_add( }; int err; + err = acpi_check_resource_conflict(&res); + if (err) + goto exit; + pdev = platform_device_alloc("via686a", address); if (!pdev) { err = -ENOMEM; diff -puN drivers/hwmon/vt1211.c~check-for-acpi-resource-conflicts-in-hwmon-drivers drivers/hwmon/vt1211.c --- a/drivers/hwmon/vt1211.c~check-for-acpi-resource-conflicts-in-hwmon-drivers +++ a/drivers/hwmon/vt1211.c @@ -32,6 +32,7 @@ #include <linux/err.h> #include <linux/mutex.h> #include <linux/ioport.h> +#include <linux/acpi.h> #include <asm/io.h> static int uch_config = -1; @@ -1259,6 +1260,10 @@ static int __init vt1211_device_add(unsi } res.name = pdev->name; + err = acpi_check_resource_conflict(&res); + if (err) + goto EXIT; + err = platform_device_add_resources(pdev, &res, 1); if (err) { printk(KERN_ERR DRVNAME ": Device resource addition failed " diff -puN drivers/hwmon/vt8231.c~check-for-acpi-resource-conflicts-in-hwmon-drivers drivers/hwmon/vt8231.c --- a/drivers/hwmon/vt8231.c~check-for-acpi-resource-conflicts-in-hwmon-drivers +++ a/drivers/hwmon/vt8231.c @@ -35,6 +35,7 @@ #include <linux/hwmon-vid.h> #include <linux/err.h> #include <linux/mutex.h> +#include <linux/acpi.h> #include <asm/io.h> static int force_addr; @@ -858,6 +859,10 @@ static int __devinit vt8231_device_add(u }; int err; + err = acpi_check_resource_conflict(&res); + if (err) + goto exit; + pdev = platform_device_alloc("vt8231", address); if (!pdev) { err = -ENOMEM; diff -puN drivers/hwmon/w83627ehf.c~check-for-acpi-resource-conflicts-in-hwmon-drivers drivers/hwmon/w83627ehf.c --- a/drivers/hwmon/w83627ehf.c~check-for-acpi-resource-conflicts-in-hwmon-drivers +++ a/drivers/hwmon/w83627ehf.c @@ -48,6 +48,7 @@ #include <linux/hwmon-vid.h> #include <linux/err.h> #include <linux/mutex.h> +#include <linux/acpi.h> #include <asm/io.h> #include "lm75.h" @@ -1544,6 +1545,11 @@ static int __init sensors_w83627ehf_init res.start = address + IOREGION_OFFSET; res.end = address + IOREGION_OFFSET + IOREGION_LENGTH - 1; res.flags = IORESOURCE_IO; + + err = acpi_check_resource_conflict(&res); + if (err) + goto exit; + err = platform_device_add_resources(pdev, &res, 1); if (err) { printk(KERN_ERR DRVNAME ": Device resource addition failed " diff -puN drivers/hwmon/w83627hf.c~check-for-acpi-resource-conflicts-in-hwmon-drivers drivers/hwmon/w83627hf.c --- a/drivers/hwmon/w83627hf.c~check-for-acpi-resource-conflicts-in-hwmon-drivers +++ a/drivers/hwmon/w83627hf.c @@ -50,6 +50,7 @@ #include <linux/err.h> #include <linux/mutex.h> #include <linux/ioport.h> +#include <linux/acpi.h> #include <asm/io.h> #include "lm75.h" @@ -1746,6 +1747,10 @@ static int __init w83627hf_device_add(un }; int err; + err = acpi_check_resource_conflict(&res); + if (err) + goto exit; + pdev = platform_device_alloc(DRVNAME, address); if (!pdev) { err = -ENOMEM; _ ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH 2/5] Provide acpi_check_{mem_}region. 2008-02-08 7:40 ` Andrew Morton @ 2008-02-08 9:11 ` Thomas Renninger 2008-02-10 12:25 ` Jean Delvare 1 sibling, 0 replies; 7+ messages in thread From: Thomas Renninger @ 2008-02-08 9:11 UTC (permalink / raw) To: Andrew Morton Cc: linux-acpi, linux-kernel, Len Brown, Jean Delvare, Mark M. Hoffman, Bjorn Helgaas On Thu, 2008-02-07 at 23:40 -0800, Andrew Morton wrote: > On Wed, 24 Oct 2007 16:32:59 +0200 Thomas Renninger <trenn@suse.de> wrote: > > > Provide acpi_check_{mem_}region. > > > > Drivers can additionally check against possible ACPI interference by also > > invoking this shortly before they call request_region. > > If -EBUSY is returned, the driver must not load. > > Use acpi_enforce_resources=strict/lax/no options to: > > - strict: let conflicting drivers fail to load with an error message > > - lax: let conflicting driver work normal with a warning message > > - no: no functional change at all > > > > > > OK, so Len has merged these into the acpi test tree. My understanding is > that once this work hits mainline, we can then merge > check-for-acpi-resource-conflicts-in-hwmon-drivers.patch. > > My normal approach would be to send > check-for-acpi-resource-conflicts-in-hwmon-drivers.patch to Mark for > inclusion in git-hwmon one Len has merged the prerequisites into mainline. > > Problem is, if Len merges late in the 2.6.26 merge window, Mark might not > have time to gets these changes into mainline before 2.6.27. Which is all > getting a bit dumb considering I first merged everything in October. > Fortunately things aren't mormally _this_ inefficient when one follows the > rules - this was an unusual patchset. > > But still, I think we could afford to speed things up a bit more than that. > We could ask Len to consider merging this work into 2.6.25 and then if > Mark can ack check-for-acpi-resource-conflicts-in-hwmon-drivers.patch > (below) for an akpm-merge, we're good to go. But I do recall that people > were a bit uncertain about it all back in October. The patch is totally unrisky, beside of an overseen typo that always can slip in (if this should be a concern)... About the mechanism and the fact that there is another instance to check IO port and system memory resources? IIRC Bjorn did not like that, but also wanted to integrated that into pnp layer somehow. But I expect after fighting already that hard with mainboard/system pnp resource conflicts and BIOS weirdness the last weeks..., he also agrees that it makes not much sense that the OperationRegion port/memory checks should get integrated into the pnp layer now or at all (which could conflict as a third instance (driver resources vs pnp resources vs ACPI OperationRegion declarations) depending on how broken the BIOS is, even with overlapping!) Thomas > Please share your thoughts with us. > > > > From: Jean Delvare <jdelvare@suse.de> > > Check for ACPI resource conflicts in hwmon drivers. I've included > all Super-I/O and PCI drivers. > > I've voluntarily left out: > * Laptop specific and vendor-specific drivers: if they conflicted > on any system, this would pretty much mean that they conflict on all > systems, and we would know by now. > * Legacy ISA drivers (lm78 and w83781d): they only support chips found > on old designs were ACPI either wasn't supported or didn't deal with > thermal management. > * Drivers accessing the I/O resources indirectly (e.g. through SMBus): > the check will be added where it belongs, i.e. in the bus drivers. > > Signed-off-by: Jean Delvare <jdelvare@suse.de> > Signed-off-by: Thomas Renninger <trenn@suse.de> > Cc: "Mark M. Hoffman" <mhoffman@lightlink.com> > Cc: Len Brown <lenb@kernel.org> > Signed-off-by: Andrew Morton <akpm@linux-foundation.org> > --- > > drivers/hwmon/dme1737.c | 5 +++++ > drivers/hwmon/f71805f.c | 5 +++++ > drivers/hwmon/f71882fg.c | 5 +++++ > drivers/hwmon/it87.c | 5 +++++ > drivers/hwmon/pc87360.c | 6 ++++++ > drivers/hwmon/pc87427.c | 5 +++++ > drivers/hwmon/sis5595.c | 5 +++++ > drivers/hwmon/smsc47b397.c | 5 +++++ > drivers/hwmon/smsc47m1.c | 5 +++++ > drivers/hwmon/via686a.c | 5 +++++ > drivers/hwmon/vt1211.c | 5 +++++ > drivers/hwmon/vt8231.c | 5 +++++ > drivers/hwmon/w83627ehf.c | 6 ++++++ > drivers/hwmon/w83627hf.c | 5 +++++ > 14 files changed, 72 insertions(+) > > diff -puN drivers/hwmon/dme1737.c~check-for-acpi-resource-conflicts-in-hwmon-drivers drivers/hwmon/dme1737.c > --- a/drivers/hwmon/dme1737.c~check-for-acpi-resource-conflicts-in-hwmon-drivers > +++ a/drivers/hwmon/dme1737.c > @@ -34,6 +34,7 @@ > #include <linux/hwmon-vid.h> > #include <linux/err.h> > #include <linux/mutex.h> > +#include <linux/acpi.h> > #include <asm/io.h> > > /* ISA device, if found */ > @@ -2238,6 +2239,10 @@ static int __init dme1737_isa_device_add > }; > int err; > > + err = acpi_check_resource_conflict(&res); > + if (err) > + goto exit; > + > if (!(pdev = platform_device_alloc("dme1737", addr))) { > printk(KERN_ERR "dme1737: Failed to allocate device.\n"); > err = -ENOMEM; > diff -puN drivers/hwmon/f71805f.c~check-for-acpi-resource-conflicts-in-hwmon-drivers drivers/hwmon/f71805f.c > --- a/drivers/hwmon/f71805f.c~check-for-acpi-resource-conflicts-in-hwmon-drivers > +++ a/drivers/hwmon/f71805f.c > @@ -39,6 +39,7 @@ > #include <linux/mutex.h> > #include <linux/sysfs.h> > #include <linux/ioport.h> > +#include <linux/acpi.h> > #include <asm/io.h> > > static unsigned short force_id; > @@ -1455,6 +1456,10 @@ static int __init f71805f_device_add(uns > } > > res.name = pdev->name; > + err = acpi_check_resource_conflict(&res); > + if (err) > + goto exit_device_put; > + > err = platform_device_add_resources(pdev, &res, 1); > if (err) { > printk(KERN_ERR DRVNAME ": Device resource addition failed " > diff -puN drivers/hwmon/f71882fg.c~check-for-acpi-resource-conflicts-in-hwmon-drivers drivers/hwmon/f71882fg.c > --- a/drivers/hwmon/f71882fg.c~check-for-acpi-resource-conflicts-in-hwmon-drivers > +++ a/drivers/hwmon/f71882fg.c > @@ -27,6 +27,7 @@ > #include <linux/hwmon-sysfs.h> > #include <linux/err.h> > #include <linux/mutex.h> > +#include <linux/acpi.h> > #include <asm/io.h> > > #define DRVNAME "f71882fg" > @@ -898,6 +899,10 @@ static int __init f71882fg_device_add(un > return -ENOMEM; > > res.name = f71882fg_pdev->name; > + err = acpi_check_resource_conflict(&res); > + if (err) > + return err; > + > err = platform_device_add_resources(f71882fg_pdev, &res, 1); > if (err) { > printk(KERN_ERR DRVNAME ": Device resource addition failed\n"); > diff -puN drivers/hwmon/it87.c~check-for-acpi-resource-conflicts-in-hwmon-drivers drivers/hwmon/it87.c > --- a/drivers/hwmon/it87.c~check-for-acpi-resource-conflicts-in-hwmon-drivers > +++ a/drivers/hwmon/it87.c > @@ -46,6 +46,7 @@ > #include <linux/err.h> > #include <linux/mutex.h> > #include <linux/sysfs.h> > +#include <linux/acpi.h> > #include <asm/io.h> > > #define DRVNAME "it87" > @@ -1487,6 +1488,10 @@ static int __init it87_device_add(unsign > }; > int err; > > + err = acpi_check_resource_conflict(&res); > + if (err) > + goto exit; > + > pdev = platform_device_alloc(DRVNAME, address); > if (!pdev) { > err = -ENOMEM; > diff -puN drivers/hwmon/pc87360.c~check-for-acpi-resource-conflicts-in-hwmon-drivers drivers/hwmon/pc87360.c > --- a/drivers/hwmon/pc87360.c~check-for-acpi-resource-conflicts-in-hwmon-drivers > +++ a/drivers/hwmon/pc87360.c > @@ -43,6 +43,7 @@ > #include <linux/hwmon-vid.h> > #include <linux/err.h> > #include <linux/mutex.h> > +#include <linux/acpi.h> > #include <asm/io.h> > > static u8 devid; > @@ -1425,6 +1426,11 @@ static int __init pc87360_device_add(uns > continue; > res.start = extra_isa[i]; > res.end = extra_isa[i] + PC87360_EXTENT - 1; > + > + err = acpi_check_resource_conflict(&res); > + if (err) > + goto exit_device_put; > + > err = platform_device_add_resources(pdev, &res, 1); > if (err) { > printk(KERN_ERR "pc87360: Device resource[%d] " > diff -puN drivers/hwmon/pc87427.c~check-for-acpi-resource-conflicts-in-hwmon-drivers drivers/hwmon/pc87427.c > --- a/drivers/hwmon/pc87427.c~check-for-acpi-resource-conflicts-in-hwmon-drivers > +++ a/drivers/hwmon/pc87427.c > @@ -32,6 +32,7 @@ > #include <linux/mutex.h> > #include <linux/sysfs.h> > #include <linux/ioport.h> > +#include <linux/acpi.h> > #include <asm/io.h> > > static unsigned short force_id; > @@ -524,6 +525,10 @@ static int __init pc87427_device_add(uns > }; > int err; > > + err = acpi_check_resource_conflict(&res); > + if (err) > + goto exit; > + > pdev = platform_device_alloc(DRVNAME, address); > if (!pdev) { > err = -ENOMEM; > diff -puN drivers/hwmon/sis5595.c~check-for-acpi-resource-conflicts-in-hwmon-drivers drivers/hwmon/sis5595.c > --- a/drivers/hwmon/sis5595.c~check-for-acpi-resource-conflicts-in-hwmon-drivers > +++ a/drivers/hwmon/sis5595.c > @@ -62,6 +62,7 @@ > #include <linux/jiffies.h> > #include <linux/mutex.h> > #include <linux/sysfs.h> > +#include <linux/acpi.h> > #include <asm/io.h> > > > @@ -727,6 +728,10 @@ static int __devinit sis5595_device_add( > }; > int err; > > + err = acpi_check_resource_conflict(&res); > + if (err) > + goto exit; > + > pdev = platform_device_alloc("sis5595", address); > if (!pdev) { > err = -ENOMEM; > diff -puN drivers/hwmon/smsc47b397.c~check-for-acpi-resource-conflicts-in-hwmon-drivers drivers/hwmon/smsc47b397.c > --- a/drivers/hwmon/smsc47b397.c~check-for-acpi-resource-conflicts-in-hwmon-drivers > +++ a/drivers/hwmon/smsc47b397.c > @@ -36,6 +36,7 @@ > #include <linux/err.h> > #include <linux/init.h> > #include <linux/mutex.h> > +#include <linux/acpi.h> > #include <asm/io.h> > > static unsigned short force_id; > @@ -303,6 +304,10 @@ static int __init smsc47b397_device_add( > }; > int err; > > + err = acpi_check_resource_conflict(&res); > + if (err) > + goto exit; > + > pdev = platform_device_alloc(DRVNAME, address); > if (!pdev) { > err = -ENOMEM; > diff -puN drivers/hwmon/smsc47m1.c~check-for-acpi-resource-conflicts-in-hwmon-drivers drivers/hwmon/smsc47m1.c > --- a/drivers/hwmon/smsc47m1.c~check-for-acpi-resource-conflicts-in-hwmon-drivers > +++ a/drivers/hwmon/smsc47m1.c > @@ -37,6 +37,7 @@ > #include <linux/init.h> > #include <linux/mutex.h> > #include <linux/sysfs.h> > +#include <linux/acpi.h> > #include <asm/io.h> > > static unsigned short force_id; > @@ -686,6 +687,10 @@ static int __init smsc47m1_device_add(un > }; > int err; > > + err = acpi_check_resource_conflict(&res); > + if (err) > + goto exit; > + > pdev = platform_device_alloc(DRVNAME, address); > if (!pdev) { > err = -ENOMEM; > diff -puN drivers/hwmon/via686a.c~check-for-acpi-resource-conflicts-in-hwmon-drivers drivers/hwmon/via686a.c > --- a/drivers/hwmon/via686a.c~check-for-acpi-resource-conflicts-in-hwmon-drivers > +++ a/drivers/hwmon/via686a.c > @@ -41,6 +41,7 @@ > #include <linux/init.h> > #include <linux/mutex.h> > #include <linux/sysfs.h> > +#include <linux/acpi.h> > #include <asm/io.h> > > > @@ -755,6 +756,10 @@ static int __devinit via686a_device_add( > }; > int err; > > + err = acpi_check_resource_conflict(&res); > + if (err) > + goto exit; > + > pdev = platform_device_alloc("via686a", address); > if (!pdev) { > err = -ENOMEM; > diff -puN drivers/hwmon/vt1211.c~check-for-acpi-resource-conflicts-in-hwmon-drivers drivers/hwmon/vt1211.c > --- a/drivers/hwmon/vt1211.c~check-for-acpi-resource-conflicts-in-hwmon-drivers > +++ a/drivers/hwmon/vt1211.c > @@ -32,6 +32,7 @@ > #include <linux/err.h> > #include <linux/mutex.h> > #include <linux/ioport.h> > +#include <linux/acpi.h> > #include <asm/io.h> > > static int uch_config = -1; > @@ -1259,6 +1260,10 @@ static int __init vt1211_device_add(unsi > } > > res.name = pdev->name; > + err = acpi_check_resource_conflict(&res); > + if (err) > + goto EXIT; > + > err = platform_device_add_resources(pdev, &res, 1); > if (err) { > printk(KERN_ERR DRVNAME ": Device resource addition failed " > diff -puN drivers/hwmon/vt8231.c~check-for-acpi-resource-conflicts-in-hwmon-drivers drivers/hwmon/vt8231.c > --- a/drivers/hwmon/vt8231.c~check-for-acpi-resource-conflicts-in-hwmon-drivers > +++ a/drivers/hwmon/vt8231.c > @@ -35,6 +35,7 @@ > #include <linux/hwmon-vid.h> > #include <linux/err.h> > #include <linux/mutex.h> > +#include <linux/acpi.h> > #include <asm/io.h> > > static int force_addr; > @@ -858,6 +859,10 @@ static int __devinit vt8231_device_add(u > }; > int err; > > + err = acpi_check_resource_conflict(&res); > + if (err) > + goto exit; > + > pdev = platform_device_alloc("vt8231", address); > if (!pdev) { > err = -ENOMEM; > diff -puN drivers/hwmon/w83627ehf.c~check-for-acpi-resource-conflicts-in-hwmon-drivers drivers/hwmon/w83627ehf.c > --- a/drivers/hwmon/w83627ehf.c~check-for-acpi-resource-conflicts-in-hwmon-drivers > +++ a/drivers/hwmon/w83627ehf.c > @@ -48,6 +48,7 @@ > #include <linux/hwmon-vid.h> > #include <linux/err.h> > #include <linux/mutex.h> > +#include <linux/acpi.h> > #include <asm/io.h> > #include "lm75.h" > > @@ -1544,6 +1545,11 @@ static int __init sensors_w83627ehf_init > res.start = address + IOREGION_OFFSET; > res.end = address + IOREGION_OFFSET + IOREGION_LENGTH - 1; > res.flags = IORESOURCE_IO; > + > + err = acpi_check_resource_conflict(&res); > + if (err) > + goto exit; > + > err = platform_device_add_resources(pdev, &res, 1); > if (err) { > printk(KERN_ERR DRVNAME ": Device resource addition failed " > diff -puN drivers/hwmon/w83627hf.c~check-for-acpi-resource-conflicts-in-hwmon-drivers drivers/hwmon/w83627hf.c > --- a/drivers/hwmon/w83627hf.c~check-for-acpi-resource-conflicts-in-hwmon-drivers > +++ a/drivers/hwmon/w83627hf.c > @@ -50,6 +50,7 @@ > #include <linux/err.h> > #include <linux/mutex.h> > #include <linux/ioport.h> > +#include <linux/acpi.h> > #include <asm/io.h> > #include "lm75.h" > > @@ -1746,6 +1747,10 @@ static int __init w83627hf_device_add(un > }; > int err; > > + err = acpi_check_resource_conflict(&res); > + if (err) > + goto exit; > + > pdev = platform_device_alloc(DRVNAME, address); > if (!pdev) { > err = -ENOMEM; > _ > ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH 2/5] Provide acpi_check_{mem_}region. 2008-02-08 7:40 ` Andrew Morton 2008-02-08 9:11 ` Thomas Renninger @ 2008-02-10 12:25 ` Jean Delvare 2008-02-11 19:55 ` Andrew Morton 1 sibling, 1 reply; 7+ messages in thread From: Jean Delvare @ 2008-02-10 12:25 UTC (permalink / raw) To: Andrew Morton; +Cc: trenn, linux-acpi, linux-kernel, Len Brown, Mark M. Hoffman Hi Andrew, On Thu, 7 Feb 2008 23:40:02 -0800, Andrew Morton wrote: > On Wed, 24 Oct 2007 16:32:59 +0200 Thomas Renninger <trenn@suse.de> wrote: > > > Provide acpi_check_{mem_}region. > > > > Drivers can additionally check against possible ACPI interference by also > > invoking this shortly before they call request_region. > > If -EBUSY is returned, the driver must not load. > > Use acpi_enforce_resources=strict/lax/no options to: > > - strict: let conflicting drivers fail to load with an error message > > - lax: let conflicting driver work normal with a warning message > > - no: no functional change at all > > > > > > OK, so Len has merged these into the acpi test tree. My understanding is > that once this work hits mainline, we can then merge > check-for-acpi-resource-conflicts-in-hwmon-drivers.patch. Correct. Same applies to a second patch: check-for-acpi-resource-conflicts-in-i2c-bus-drivers.patch Both patches should be merged upstream at the same time. > My normal approach would be to send > check-for-acpi-resource-conflicts-in-hwmon-drivers.patch to Mark for > inclusion in git-hwmon one Len has merged the prerequisites into mainline. > > Problem is, if Len merges late in the 2.6.26 merge window, Mark might not > have time to gets these changes into mainline before 2.6.27. Which is all > getting a bit dumb considering I first merged everything in October. > Fortunately things aren't mormally _this_ inefficient when one follows the > rules - this was an unusual patchset. > > But still, I think we could afford to speed things up a bit more than that. > We could ask Len to consider merging this work into 2.6.25 and then if > Mark can ack check-for-acpi-resource-conflicts-in-hwmon-drivers.patch > (below) for an akpm-merge, we're good to go. But I do recall that people > were a bit uncertain about it all back in October. > > Please share your thoughts with us. Len already merged all the acpi bits for 2.6.25 as far as I can see, so all that is missing now is these two patches: check-for-acpi-resource-conflicts-in-hwmon-drivers.patch check-for-acpi-resource-conflicts-in-i2c-bus-drivers.patch Both have been in -mm for quite some time. In the default mode (acpi_enforce_resources=lax) these patches simply print warnings but still let the drivers load, so they are safe to merge, and the sooner, the better. The idea is to get feedback on how many systems out there have ACPI resource conflicts. Then we'll see how we can address them (if at all.) I don't remember anyone objecting to these patches, and anyway the problem has been there for years and nobody took care, so if anyone really isn't happy with the solution designed by Thomas, that person will have to do the work and submit something better later. That shouldn't delay the merge of what we have now. Andrew, both patches are Acked-by: Jean Delvare <khali@linux-fr.org> and I am totally fine with you pushing them to Linus now. But of course having Mark's ack would be good too. Thanks, -- Jean Delvare ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH 2/5] Provide acpi_check_{mem_}region. 2008-02-10 12:25 ` Jean Delvare @ 2008-02-11 19:55 ` Andrew Morton 2008-02-11 21:18 ` Jean Delvare 0 siblings, 1 reply; 7+ messages in thread From: Andrew Morton @ 2008-02-11 19:55 UTC (permalink / raw) To: Jean Delvare; +Cc: trenn, linux-acpi, linux-kernel, lenb, mhoffman On Sun, 10 Feb 2008 13:25:36 +0100 Jean Delvare <khali@linux-fr.org> wrote: > Hi Andrew, > > On Thu, 7 Feb 2008 23:40:02 -0800, Andrew Morton wrote: > > On Wed, 24 Oct 2007 16:32:59 +0200 Thomas Renninger <trenn@suse.de> wrote: > > > > > Provide acpi_check_{mem_}region. > > > > > > Drivers can additionally check against possible ACPI interference by also > > > invoking this shortly before they call request_region. > > > If -EBUSY is returned, the driver must not load. > > > Use acpi_enforce_resources=strict/lax/no options to: > > > - strict: let conflicting drivers fail to load with an error message > > > - lax: let conflicting driver work normal with a warning message > > > - no: no functional change at all > > > > > > > > > > OK, so Len has merged these into the acpi test tree. My understanding is > > that once this work hits mainline, we can then merge > > check-for-acpi-resource-conflicts-in-hwmon-drivers.patch. > > Correct. Same applies to a second patch: > check-for-acpi-resource-conflicts-in-i2c-bus-drivers.patch > Both patches should be merged upstream at the same time. > > > My normal approach would be to send > > check-for-acpi-resource-conflicts-in-hwmon-drivers.patch to Mark for > > inclusion in git-hwmon one Len has merged the prerequisites into mainline. > > > > Problem is, if Len merges late in the 2.6.26 merge window, Mark might not > > have time to gets these changes into mainline before 2.6.27. Which is all > > getting a bit dumb considering I first merged everything in October. > > Fortunately things aren't mormally _this_ inefficient when one follows the > > rules - this was an unusual patchset. > > > > But still, I think we could afford to speed things up a bit more than that. > > We could ask Len to consider merging this work into 2.6.25 and then if > > Mark can ack check-for-acpi-resource-conflicts-in-hwmon-drivers.patch > > (below) for an akpm-merge, we're good to go. But I do recall that people > > were a bit uncertain about it all back in October. > > > > Please share your thoughts with us. > > Len already merged all the acpi bits for 2.6.25 as far as I can see, so > all that is missing now is these two patches: > check-for-acpi-resource-conflicts-in-hwmon-drivers.patch > check-for-acpi-resource-conflicts-in-i2c-bus-drivers.patch > Both have been in -mm for quite some time. Yup, the prerequisites appear to be in mainline now. > In the default mode (acpi_enforce_resources=lax) these patches simply > print warnings but still let the drivers load, so they are safe to > merge, and the sooner, the better. The idea is to get feedback on how > many systems out there have ACPI resource conflicts. Then we'll see how > we can address them (if at all.) > > I don't remember anyone objecting to these patches, and anyway the > problem has been there for years and nobody took care, so if anyone > really isn't happy with the solution designed by Thomas, that person > will have to do the work and submit something better later. That > shouldn't delay the merge of what we have now. > > Andrew, both patches are > > Acked-by: Jean Delvare <khali@linux-fr.org> We already have Signed-off-by:you, which I figure outranks acked-by: ;) > and I am totally fine with you pushing them to Linus now. But of course > having Mark's ack would be good too. That would be nice. But I'll merge them mid-week anyway unless Mark actually nacks them: http://userweb.kernel.org/~akpm/mmotm/broken-out/check-for-acpi-resource-conflicts-in-hwmon-drivers.patch http://userweb.kernel.org/~akpm/mmotm/broken-out/check-for-acpi-resource-conflicts-in-i2c-bus-drivers.patch Thanks. ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH 2/5] Provide acpi_check_{mem_}region. 2008-02-11 19:55 ` Andrew Morton @ 2008-02-11 21:18 ` Jean Delvare 2008-02-13 13:45 ` Mark M. Hoffman 0 siblings, 1 reply; 7+ messages in thread From: Jean Delvare @ 2008-02-11 21:18 UTC (permalink / raw) To: Andrew Morton; +Cc: trenn, linux-acpi, linux-kernel, lenb, mhoffman On Mon, 11 Feb 2008 11:55:46 -0800, Andrew Morton wrote: > On Sun, 10 Feb 2008 13:25:36 +0100 Jean Delvare wrote: > > Andrew, both patches are > > > > Acked-by: Jean Delvare <khali@linux-fr.org> > > We already have Signed-off-by:you, which I figure outranks acked-by: ;) Yeah but that wasn't the same me. That was me-developer-at-suse, who doesn't yet have the same aura as me-maintainer-of-i2c-and-former-maintainer-of-hwmon ;) > > and I am totally fine with you pushing them to Linus now. But of course > > having Mark's ack would be good too. > > That would be nice. But I'll merge them mid-week anyway unless Mark actually > nacks them: > > http://userweb.kernel.org/~akpm/mmotm/broken-out/check-for-acpi-resource-conflicts-in-hwmon-drivers.patch > > http://userweb.kernel.org/~akpm/mmotm/broken-out/check-for-acpi-resource-conflicts-in-i2c-bus-drivers.patch Yeah, sounds like a good plan, thanks for taking care. -- Jean Delvare ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH 2/5] Provide acpi_check_{mem_}region. 2008-02-11 21:18 ` Jean Delvare @ 2008-02-13 13:45 ` Mark M. Hoffman 0 siblings, 0 replies; 7+ messages in thread From: Mark M. Hoffman @ 2008-02-13 13:45 UTC (permalink / raw) To: Jean Delvare; +Cc: Andrew Morton, trenn, linux-acpi, linux-kernel, lenb Hi Andrew, Jean: * Jean Delvare <khali@linux-fr.org> [2008-02-11 22:18:29 +0100]: > On Mon, 11 Feb 2008 11:55:46 -0800, Andrew Morton wrote: > > On Sun, 10 Feb 2008 13:25:36 +0100 Jean Delvare wrote: > > > Andrew, both patches are > > > > > > Acked-by: Jean Delvare <khali@linux-fr.org> > > > > We already have Signed-off-by:you, which I figure outranks acked-by: ;) > > Yeah but that wasn't the same me. That was me-developer-at-suse, > who doesn't yet have the same aura as > me-maintainer-of-i2c-and-former-maintainer-of-hwmon ;) > > > > and I am totally fine with you pushing them to Linus now. But of course > > > having Mark's ack would be good too. > > > > That would be nice. But I'll merge them mid-week anyway unless Mark actually > > nacks them: > > > > http://userweb.kernel.org/~akpm/mmotm/broken-out/check-for-acpi-resource-conflicts-in-hwmon-drivers.patch > > > > http://userweb.kernel.org/~akpm/mmotm/broken-out/check-for-acpi-resource-conflicts-in-i2c-bus-drivers.patch > > Yeah, sounds like a good plan, thanks for taking care. OK, I pulled the first of those into my hwmon testing tree and merged it, since there are trivial conflicts with some of the other patches already there. I'll send it to Linus before -rc2. Andrew: hopefully that makes your life .001% easier. ;) Regards, -- Mark M. Hoffman mhoffman@lightlink.com ^ permalink raw reply [flat|nested] 7+ messages in thread
end of thread, other threads:[~2008-02-13 13:45 UTC | newest] Thread overview: 7+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- 2007-10-24 14:32 [PATCH 2/5] Provide acpi_check_{mem_}region Thomas Renninger 2008-02-08 7:40 ` Andrew Morton 2008-02-08 9:11 ` Thomas Renninger 2008-02-10 12:25 ` Jean Delvare 2008-02-11 19:55 ` Andrew Morton 2008-02-11 21:18 ` Jean Delvare 2008-02-13 13:45 ` Mark M. Hoffman
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).