Skip to content

Commit

Permalink
powerpc/ibmebus: Restore "name" sysfs attribute on ibmebus devices
Browse files Browse the repository at this point in the history
Recent of_platform changes made of_bus_type_init() overwrite the bus
type's .dev_attrs list, meaning that the "name" attribute that ibmebus
devices previously had is no longer present.  This is a user-visible
regression which breaks the userspace eHCA support, since the eHCA
userspace driver relies on the name attribute to check for valid
adapters.

This fixes it by providing the "name" attribute in the generic OF
device code instead.  Tested on POWER.

Signed-off-by: Joachim Fenkes <fenkes@de.ibm.com>
Signed-off-by: Paul Mackerras <paulus@samba.org>
  • Loading branch information
Joachim Fenkes authored and Paul Mackerras committed Aug 19, 2008
1 parent 7230ced commit 4589f1f
Show file tree
Hide file tree
Showing 2 changed files with 10 additions and 12 deletions.
12 changes: 0 additions & 12 deletions arch/powerpc/kernel/ibmebus.c
Original file line number Diff line number Diff line change
Expand Up @@ -233,17 +233,6 @@ void ibmebus_free_irq(u32 ist, void *dev_id)
}
EXPORT_SYMBOL(ibmebus_free_irq);

static ssize_t name_show(struct device *dev,
struct device_attribute *attr, char *buf)
{
return sprintf(buf, "%s\n", to_of_device(dev)->node->name);
}

static struct device_attribute ibmebus_dev_attrs[] = {
__ATTR_RO(name),
__ATTR_NULL
};

static char *ibmebus_chomp(const char *in, size_t count)
{
char *out = kmalloc(count + 1, GFP_KERNEL);
Expand Down Expand Up @@ -327,7 +316,6 @@ static struct bus_attribute ibmebus_bus_attrs[] = {

struct bus_type ibmebus_bus_type = {
.uevent = of_device_uevent,
.dev_attrs = ibmebus_dev_attrs,
.bus_attrs = ibmebus_bus_attrs
};
EXPORT_SYMBOL(ibmebus_bus_type);
Expand Down
10 changes: 10 additions & 0 deletions drivers/of/device.c
Original file line number Diff line number Diff line change
Expand Up @@ -57,6 +57,15 @@ static ssize_t devspec_show(struct device *dev,
return sprintf(buf, "%s\n", ofdev->node->full_name);
}

static ssize_t name_show(struct device *dev,
struct device_attribute *attr, char *buf)
{
struct of_device *ofdev;

ofdev = to_of_device(dev);
return sprintf(buf, "%s\n", ofdev->node->name);
}

static ssize_t modalias_show(struct device *dev,
struct device_attribute *attr, char *buf)
{
Expand All @@ -71,6 +80,7 @@ static ssize_t modalias_show(struct device *dev,

struct device_attribute of_platform_device_attrs[] = {
__ATTR_RO(devspec),
__ATTR_RO(name),
__ATTR_RO(modalias),
__ATTR_NULL
};
Expand Down

0 comments on commit 4589f1f

Please sign in to comment.