NAK. Lets leave /proc/acpi as alone as we can, and focus on getting the video driver properly supported in sysfs. thanks, -Len On Tuesday 31 July 2007 19:04, Zhang Rui wrote: > Use unique device names in procfs. > > Device name is not unique in /proc/acpi. > http://bugzilla.kernel.org/show_bug.cgi?id=8798 > > Use acpi_device->dev.bus_id instead of > acpi_device->pnp.bus_id, like what we've done in sysfs. > > ACPI proc I/F will change a lot with this patch applied. > But as /proc/acpi/... won't be removed in a short time, > I still think it's worth doing. > > Does this patch miss something? > Or are there any better ideas to make the ACPI device name > unique in procfs? > > Any comments are appreciated. Thanks. > > Signed-off-by: Zhang Rui <rui.zhang@xxxxxxxxx> > --- > drivers/acpi/bus.c | 29 +++++++++++++++-------------- > drivers/acpi/power.c | 10 +++++----- > drivers/acpi/sbs.c | 2 +- > drivers/acpi/scan.c | 2 +- > drivers/acpi/sleep/proc.c | 19 ++++++++++--------- > drivers/acpi/thermal.c | 6 +++--- > include/acpi/acpi_bus.h | 4 ++-- > 7 files changed, 37 insertions(+), 35 deletions(-) > > Index: linux-2.6.23-rc1/drivers/acpi/thermal.c > =================================================================== > --- linux-2.6.23-rc1.orig/drivers/acpi/thermal.c > +++ linux-2.6.23-rc1/drivers/acpi/thermal.c > @@ -834,7 +834,7 @@ static int acpi_thermal_trip_seq_show(st > for (j = 0; j < tz->trips.passive.devices.count; j++) { > status = acpi_bus_get_device(tz->trips.passive.devices. > handles[j], &device); > - seq_printf(seq, "%4.4s ", status ? "" : > + seq_printf(seq, "%s ", status ? "" : > acpi_device_bid(device)); > } > seq_puts(seq, "\n"); > @@ -850,7 +850,7 @@ static int acpi_thermal_trip_seq_show(st > status = acpi_bus_get_device(tz->trips.active[i]. > devices.handles[j], > &device); > - seq_printf(seq, "%4.4s ", status ? "" : > + seq_printf(seq, "%s", status ? "" : > acpi_device_bid(device)); > } > seq_puts(seq, "\n"); > @@ -1163,7 +1163,7 @@ static int acpi_thermal_add(struct acpi_ > return -ENOMEM; > > tz->device = device; > - strcpy(tz->name, device->pnp.bus_id); > + strcpy(tz->name, acpi_device_bid(device)); > strcpy(acpi_device_name(device), ACPI_THERMAL_DEVICE_NAME); > strcpy(acpi_device_class(device), ACPI_THERMAL_CLASS); > acpi_driver_data(device) = tz; > Index: linux-2.6.23-rc1/include/acpi/acpi_bus.h > =================================================================== > --- linux-2.6.23-rc1.orig/include/acpi/acpi_bus.h > +++ linux-2.6.23-rc1/include/acpi/acpi_bus.h > @@ -182,7 +182,7 @@ struct acpi_device_dir { > > /* Plug and Play */ > > -typedef char acpi_bus_id[5]; > +typedef char acpi_bus_id[BUS_ID_SIZE]; > typedef unsigned long acpi_bus_address; > typedef char acpi_hardware_id[15]; > typedef char acpi_unique_id[9]; > @@ -199,7 +199,7 @@ struct acpi_device_pnp { > acpi_device_class device_class; /* " */ > }; > > -#define acpi_device_bid(d) ((d)->pnp.bus_id) > +#define acpi_device_bid(d) ((d)->dev.bus_id) > #define acpi_device_adr(d) ((d)->pnp.bus_address) > #define acpi_device_hid(d) ((d)->pnp.hardware_id) > #define acpi_device_uid(d) ((d)->pnp.unique_id) > Index: linux-2.6.23-rc1/drivers/acpi/sbs.c > =================================================================== > --- linux-2.6.23-rc1.orig/drivers/acpi/sbs.c > +++ linux-2.6.23-rc1/drivers/acpi/sbs.c > @@ -424,7 +424,7 @@ static int acpi_check_update_proc(struct > static int acpi_sbs_generate_event(struct acpi_device *device, > int event, int state, char *bid, char *class) > { > - char bid_saved[5]; > + char bid_saved[BUS_ID_SIZE]; > char class_saved[20]; > int result = 0; > > Index: linux-2.6.23-rc1/drivers/acpi/bus.c > =================================================================== > --- linux-2.6.23-rc1.orig/drivers/acpi/bus.c > +++ linux-2.6.23-rc1/drivers/acpi/bus.c > @@ -110,12 +110,13 @@ int acpi_bus_get_status(struct acpi_devi > if (device->status.functional && !device->status.present) { > printk(KERN_WARNING PREFIX "Device [%s] status [%08x]: " > "functional but not present; setting present\n", > - device->pnp.bus_id, (u32) STRUCT_TO_INT(device->status)); > + acpi_device_bid(device), > + (u32) STRUCT_TO_INT(device->status)); > device->status.present = 1; > } > > ACPI_DEBUG_PRINT((ACPI_DB_INFO, "Device [%s] status [%08x]\n", > - device->pnp.bus_id, > + acpi_device_bid(device), > (u32) STRUCT_TO_INT(device->status))); > > return 0; > @@ -168,7 +169,7 @@ int acpi_bus_get_power(acpi_handle handl > } > > ACPI_DEBUG_PRINT((ACPI_DB_INFO, "Device [%s] power state is D%d\n", > - device->pnp.bus_id, device->power.state)); > + acpi_device_bid(device), device->power.state)); > > return 0; > } > @@ -261,11 +262,11 @@ int acpi_bus_set_power(acpi_handle handl > if (result) > printk(KERN_WARNING PREFIX > "Transitioning device [%s] to D%d\n", > - device->pnp.bus_id, state); > + acpi_device_bid(device), state); > else > ACPI_DEBUG_PRINT((ACPI_DB_INFO, > "Device [%s] transitioned to D%d\n", > - device->pnp.bus_id, state)); > + acpi_device_bid(device), state)); > > return result; > } > @@ -306,7 +307,7 @@ int acpi_bus_generate_event(struct acpi_ > return -ENOMEM; > > strcpy(event->device_class, device->pnp.device_class); > - strcpy(event->bus_id, device->pnp.bus_id); > + strcpy(event->bus_id, acpi_device_bid(device)); > event->type = type; > event->data = data; > > @@ -466,7 +467,7 @@ static void acpi_bus_notify(acpi_handle > case ACPI_NOTIFY_BUS_CHECK: > ACPI_DEBUG_PRINT((ACPI_DB_INFO, > "Received BUS CHECK notification for device [%s]\n", > - device->pnp.bus_id)); > + acpi_device_bid(device))); > result = acpi_bus_check_scope(device); > /* > * TBD: We'll need to outsource certain events to non-ACPI > @@ -477,7 +478,7 @@ static void acpi_bus_notify(acpi_handle > case ACPI_NOTIFY_DEVICE_CHECK: > ACPI_DEBUG_PRINT((ACPI_DB_INFO, > "Received DEVICE CHECK notification for device [%s]\n", > - device->pnp.bus_id)); > + acpi_device_bid(device))); > result = acpi_bus_check_device(device, NULL); > /* > * TBD: We'll need to outsource certain events to non-ACPI > @@ -488,42 +489,42 @@ static void acpi_bus_notify(acpi_handle > case ACPI_NOTIFY_DEVICE_WAKE: > ACPI_DEBUG_PRINT((ACPI_DB_INFO, > "Received DEVICE WAKE notification for device [%s]\n", > - device->pnp.bus_id)); > + acpi_device_bid(device))); > /* TBD */ > break; > > case ACPI_NOTIFY_EJECT_REQUEST: > ACPI_DEBUG_PRINT((ACPI_DB_INFO, > "Received EJECT REQUEST notification for device [%s]\n", > - device->pnp.bus_id)); > + acpi_device_bid(device))); > /* TBD */ > break; > > case ACPI_NOTIFY_DEVICE_CHECK_LIGHT: > ACPI_DEBUG_PRINT((ACPI_DB_INFO, > "Received DEVICE CHECK LIGHT notification for device [%s]\n", > - device->pnp.bus_id)); > + acpi_device_bid(device))); > /* TBD: Exactly what does 'light' mean? */ > break; > > case ACPI_NOTIFY_FREQUENCY_MISMATCH: > ACPI_DEBUG_PRINT((ACPI_DB_INFO, > "Received FREQUENCY MISMATCH notification for device [%s]\n", > - device->pnp.bus_id)); > + acpi_device_bid(device))); > /* TBD */ > break; > > case ACPI_NOTIFY_BUS_MODE_MISMATCH: > ACPI_DEBUG_PRINT((ACPI_DB_INFO, > "Received BUS MODE MISMATCH notification for device [%s]\n", > - device->pnp.bus_id)); > + acpi_device_bid(device))); > /* TBD */ > break; > > case ACPI_NOTIFY_POWER_FAULT: > ACPI_DEBUG_PRINT((ACPI_DB_INFO, > "Received POWER FAULT notification for device [%s]\n", > - device->pnp.bus_id)); > + acpi_device_bid(device))); > /* TBD */ > break; > > Index: linux-2.6.23-rc1/drivers/acpi/scan.c > =================================================================== > --- linux-2.6.23-rc1.orig/drivers/acpi/scan.c > +++ linux-2.6.23-rc1/drivers/acpi/scan.c > @@ -267,7 +267,7 @@ static int acpi_device_probe(struct devi > acpi_start_single_object(acpi_dev); > ACPI_DEBUG_PRINT((ACPI_DB_INFO, > "Found driver [%s] for device [%s]\n", > - acpi_drv->name, acpi_dev->pnp.bus_id)); > + acpi_drv->name, acpi_device_bid(acpi_dev))); > get_device(dev); > } > return ret; > Index: linux-2.6.23-rc1/drivers/acpi/power.c > =================================================================== > --- linux-2.6.23-rc1.orig/drivers/acpi/power.c > +++ linux-2.6.23-rc1/drivers/acpi/power.c > @@ -197,7 +197,7 @@ static int acpi_power_on(acpi_handle han > ref = container_of(node, struct acpi_power_reference, node); > if (dev->handle == ref->device->handle) { > ACPI_DEBUG_PRINT((ACPI_DB_INFO, "Device [%s] already referenced by resource [%s]\n", > - dev->pnp.bus_id, resource->name)); > + acpi_device_bid(dev), resource->name)); > found = 1; > break; > } > @@ -214,7 +214,7 @@ static int acpi_power_on(acpi_handle han > list_add_tail(&ref->node, &resource->reference); > ref->device = dev; > ACPI_DEBUG_PRINT((ACPI_DB_INFO, "Device [%s] added to resource [%s] references\n", > - dev->pnp.bus_id, resource->name)); > + acpi_device_bid(dev), resource->name)); > } > mutex_unlock(&resource->resource_lock); > > @@ -262,7 +262,7 @@ static int acpi_power_off_device(acpi_ha > list_del(&ref->node); > kfree(ref); > ACPI_DEBUG_PRINT((ACPI_DB_INFO, "Device [%s] removed from resource [%s] references\n", > - dev->pnp.bus_id, resource->name)); > + acpi_device_bid(dev), resource->name)); > break; > } > } > @@ -470,7 +470,7 @@ int acpi_power_transition(struct acpi_de > if (result) { > device->power.state = ACPI_STATE_UNKNOWN; > printk(KERN_WARNING PREFIX "Transitioning device [%s] to D%d\n", > - device->pnp.bus_id, state); > + acpi_device_bid(device), state); > } else { > /* We shouldn't change the state till all above operations succeed */ > device->power.state = state; > @@ -602,7 +602,7 @@ static int acpi_power_add(struct acpi_de > resource->device = device; > mutex_init(&resource->resource_lock); > INIT_LIST_HEAD(&resource->reference); > - strcpy(resource->name, device->pnp.bus_id); > + strcpy(resource->name, acpi_device_bid(device)); > strcpy(acpi_device_name(device), ACPI_POWER_DEVICE_NAME); > strcpy(acpi_device_class(device), ACPI_POWER_CLASS); > acpi_driver_data(device) = resource; > Index: linux-2.6.23-rc1/drivers/acpi/sleep/proc.c > =================================================================== > --- linux-2.6.23-rc1.orig/drivers/acpi/sleep/proc.c > +++ linux-2.6.23-rc1/drivers/acpi/sleep/proc.c > @@ -359,7 +359,7 @@ acpi_system_wakeup_device_seq_show(struc > { > struct list_head *node, *next; > > - seq_printf(seq, "Device\tS-state\t Status Sysfs node\n"); > + seq_printf(seq, "Device \tName\tS-state\t Status Sysfs node\n"); > > spin_lock(&acpi_device_lock); > list_for_each_safe(node, next, &acpi_wakeup_device_list) { > @@ -372,8 +372,8 @@ acpi_system_wakeup_device_seq_show(struc > spin_unlock(&acpi_device_lock); > > ldev = acpi_get_physical_device(dev->handle); > - seq_printf(seq, "%s\t S%d\t%c%-8s ", > - dev->pnp.bus_id, > + seq_printf(seq, "%.15s\t%4s\t S%d\t%c%-8s ", > + acpi_device_bid(dev), dev->pnp.bus_id, > (u32) dev->wakeup.sleep_state, > dev->wakeup.flags.run_wake ? '*' : ' ', > dev->wakeup.state.enabled ? "enabled" : "disabled"); > @@ -396,13 +396,13 @@ acpi_system_write_wakeup_device(struct f > size_t count, loff_t * ppos) > { > struct list_head *node, *next; > - char strbuf[5]; > - char str[5] = ""; > + char strbuf[BUS_ID_SIZE]; > + char str[BUS_ID_SIZE] = ""; > int len = count; > struct acpi_device *found_dev = NULL; > > - if (len > 4) > - len = 4; > + if (len > BUS_ID_SIZE) > + len = BUS_ID_SIZE; > > if (copy_from_user(strbuf, buffer, len)) > return -EFAULT; > @@ -416,7 +416,7 @@ acpi_system_write_wakeup_device(struct f > if (!dev->wakeup.flags.valid) > continue; > > - if (!strncmp(dev->pnp.bus_id, str, 4)) { > + if (!strncmp(acpi_device_bid(dev), str, BUS_ID_SIZE)) { > dev->wakeup.state.enabled = > dev->wakeup.state.enabled ? 0 : 1; > found_dev = dev; > @@ -438,7 +438,8 @@ acpi_system_write_wakeup_device(struct f > printk(KERN_WARNING > "ACPI: '%s' and '%s' have the same GPE, " > "can't disable/enable one seperately\n", > - dev->pnp.bus_id, found_dev->pnp.bus_id); > + acpi_device_bid(dev), > + acpi_device_bid(found_dev)); > dev->wakeup.state.enabled = > found_dev->wakeup.state.enabled; > } > - To unsubscribe from this list: send the line "unsubscribe linux-acpi" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html