diff mbox

[v2,07/12] sparc64: refactor code to obtain cfg_handle property from MDESC

Message ID 3c2686467d44af744dea14258fb614c4006e8b0e.1498238657.git.jag.raman@oracle.com
State Accepted
Delegated to: David Miller
Headers show

Commit Message

Jag Raman June 23, 2017, 6:58 p.m. UTC
Refactors code to get the cfg_handle property of a node from Machine
Description (MDESC)

Signed-off-by: Jagannathan Raman <jag.raman@oracle.com>
Reviewed-by: Liam Merwick <liam.merwick@oracle.com>
Reviewed-by: Shannon Nelson <shannon.nelson@oracle.com>
---
 arch/sparc/kernel/vio.c |   30 +++++++++++++++++++-----------
 1 files changed, 19 insertions(+), 11 deletions(-)
diff mbox

Patch

diff --git a/arch/sparc/kernel/vio.c b/arch/sparc/kernel/vio.c
index f37937b..1ac5da1 100644
--- a/arch/sparc/kernel/vio.c
+++ b/arch/sparc/kernel/vio.c
@@ -181,6 +181,24 @@  static DEVICE_ATTR(obppath, S_IRUSR | S_IRGRP | S_IROTH,
 static struct vio_dev *root_vdev;
 static u64 cdev_cfg_handle;
 
+static const u64 *vio_cfg_handle(struct mdesc_handle *hp, u64 node)
+{
+	const u64 *cfg_handle = NULL;
+	u64 a;
+
+	mdesc_for_each_arc(a, hp, node, MDESC_ARC_TYPE_BACK) {
+		u64 target;
+
+		target = mdesc_arc_target(hp, a);
+		cfg_handle = mdesc_get_property(hp, target,
+						"cfg-handle", NULL);
+		if (cfg_handle)
+			break;
+	}
+
+	return cfg_handle;
+}
+
 static void vio_fill_channel_info(struct mdesc_handle *hp, u64 mp,
 				  struct vio_dev *vdev)
 {
@@ -227,7 +245,6 @@  int vio_set_intr(unsigned long dev_ino, int state)
 	struct vio_dev *vdev;
 	int err, tlen, clen;
 	const u64 *id, *cfg_handle;
-	u64 a;
 
 	type = mdesc_get_property(hp, mp, "device-type", &tlen);
 	if (!type) {
@@ -245,16 +262,7 @@  int vio_set_intr(unsigned long dev_ino, int state)
 
 	id = mdesc_get_property(hp, mp, "id", NULL);
 
-	cfg_handle = NULL;
-	mdesc_for_each_arc(a, hp, mp, MDESC_ARC_TYPE_BACK) {
-		u64 target;
-
-		target = mdesc_arc_target(hp, a);
-		cfg_handle = mdesc_get_property(hp, target,
-						"cfg-handle", NULL);
-		if (cfg_handle)
-			break;
-	}
+	cfg_handle = vio_cfg_handle(hp, mp);
 
 	bus_id_name = type;
 	if (!strcmp(type, "domain-services-port"))