ip_die_entry
struct ip_die_entry *ip_die_entry,
ip_hw_id->hw_id_kset.kobj.kset = &ip_die_entry->ip_kset;
res = sysfs_create_link(&ip_die_entry->ip_kset.kobj,
kobject_name(&ip_die_entry->ip_kset.kobj));
struct ip_die_entry *ip_die_entry;
ip_die_entry = kzalloc(sizeof(*ip_die_entry), GFP_KERNEL);
if (!ip_die_entry)
ip_die_entry->num_ips = num_ips;
kobject_set_name(&ip_die_entry->ip_kset.kobj, "%d", le16_to_cpu(dhdr->die_id));
ip_die_entry->ip_kset.kobj.kset = die_kset;
ip_die_entry->ip_kset.kobj.ktype = &ip_die_entry_ktype;
res = kset_register(&ip_die_entry->ip_kset);
kfree(ip_die_entry);
amdgpu_discovery_sysfs_ips(adev, ip_die_entry, ip_offset, num_ips, !!ihdr->base_addr_64_bit);
static void amdgpu_discovery_sysfs_die_free(struct ip_die_entry *ip_die_entry)
ip_kset = &ip_die_entry->ip_kset;
kobject_put(&ip_die_entry->ip_kset.kobj);
ssize_t (*show)(struct ip_die_entry *ip_die_entry, char *buf);
static ssize_t num_ips_show(struct ip_die_entry *ip_die_entry, char *buf)
return sysfs_emit(buf, "%d\n", ip_die_entry->num_ips);
ATTRIBUTE_GROUPS(ip_die_entry); /* ip_die_entry_groups */
#define to_ip_die_entry(x) container_of(to_kset(x), struct ip_die_entry, ip_kset)
struct ip_die_entry *ip_die_entry = to_ip_die_entry(kobj);
return ip_die_entry_attr->show(ip_die_entry, buf);
struct ip_die_entry *ip_die_entry = to_ip_die_entry(kobj);
if (!list_empty(&ip_die_entry->ip_kset.list))
kfree(ip_die_entry);