You've already forked linux-apfs
mirror of
https://github.com/linux-apfs/linux-apfs.git
synced 2026-05-01 15:00:59 -07:00
[PATCH] ppc64: SMU partition recovery
This patch adds the ability to the SMU driver to recover missing calibration partitions from the SMU chip itself. It also adds some dynamic mecanism to /proc/device-tree so that new properties are visible to userland. Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org> Signed-off-by: Paul Mackerras <paulus@samba.org>
This commit is contained in:
committed by
Paul Mackerras
parent
4350147a81
commit
183d020258
@@ -1974,14 +1974,29 @@ EXPORT_SYMBOL(get_property);
|
||||
/*
|
||||
* Add a property to a node
|
||||
*/
|
||||
void prom_add_property(struct device_node* np, struct property* prop)
|
||||
int prom_add_property(struct device_node* np, struct property* prop)
|
||||
{
|
||||
struct property **next = &np->properties;
|
||||
struct property **next;
|
||||
|
||||
prop->next = NULL;
|
||||
while (*next)
|
||||
write_lock(&devtree_lock);
|
||||
next = &np->properties;
|
||||
while (*next) {
|
||||
if (strcmp(prop->name, (*next)->name) == 0) {
|
||||
/* duplicate ! don't insert it */
|
||||
write_unlock(&devtree_lock);
|
||||
return -1;
|
||||
}
|
||||
next = &(*next)->next;
|
||||
}
|
||||
*next = prop;
|
||||
write_unlock(&devtree_lock);
|
||||
|
||||
/* try to add to proc as well if it was initialized */
|
||||
if (np->pde)
|
||||
proc_device_tree_add_prop(np->pde, prop);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
/* I quickly hacked that one, check against spec ! */
|
||||
|
||||
@@ -1165,7 +1165,7 @@ get_property(struct device_node *np, const char *name, int *lenp)
|
||||
/*
|
||||
* Add a property to a node
|
||||
*/
|
||||
void
|
||||
int
|
||||
prom_add_property(struct device_node* np, struct property* prop)
|
||||
{
|
||||
struct property **next = &np->properties;
|
||||
@@ -1174,6 +1174,8 @@ prom_add_property(struct device_node* np, struct property* prop)
|
||||
while (*next)
|
||||
next = &(*next)->next;
|
||||
*next = prop;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
/* I quickly hacked that one, check against spec ! */
|
||||
|
||||
@@ -31,6 +31,7 @@
|
||||
#include <linux/initrd.h>
|
||||
#include <linux/bitops.h>
|
||||
#include <linux/module.h>
|
||||
#include <linux/module.h>
|
||||
|
||||
#include <asm/prom.h>
|
||||
#include <asm/rtas.h>
|
||||
@@ -1865,17 +1866,32 @@ get_property(struct device_node *np, const char *name, int *lenp)
|
||||
EXPORT_SYMBOL(get_property);
|
||||
|
||||
/*
|
||||
* Add a property to a node
|
||||
* Add a property to a node.
|
||||
*/
|
||||
void
|
||||
int
|
||||
prom_add_property(struct device_node* np, struct property* prop)
|
||||
{
|
||||
struct property **next = &np->properties;
|
||||
struct property **next;
|
||||
|
||||
prop->next = NULL;
|
||||
while (*next)
|
||||
write_lock(&devtree_lock);
|
||||
next = &np->properties;
|
||||
while (*next) {
|
||||
if (strcmp(prop->name, (*next)->name) == 0) {
|
||||
/* duplicate ! don't insert it */
|
||||
write_unlock(&devtree_lock);
|
||||
return -1;
|
||||
}
|
||||
next = &(*next)->next;
|
||||
}
|
||||
*next = prop;
|
||||
write_unlock(&devtree_lock);
|
||||
|
||||
/* try to add to proc as well if it was initialized */
|
||||
if (np->pde)
|
||||
proc_device_tree_add_prop(np->pde, prop);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
#if 0
|
||||
|
||||
Reference in New Issue
Block a user