sparc64: Don't use devspec to determine the OBP path
authorEric Snowberg <eric.snowberg@oracle.com>
Thu, 18 May 2017 23:10:22 +0000 (17:10 -0600)
committerDaniel Kiper <daniel.kiper@oracle.com>
Mon, 29 May 2017 14:59:44 +0000 (16:59 +0200)
Don't use devspec to determine the OBP path on SPARC hardware.  Within all
versions of Linux on SPARC, the devspec returns one of three values:
"none", "vnet-port", or "vdisk".  Unlike on PPC, none of these values
are useful in determining the OBP path.

Before this patch grub-ofpathname always returned the wrong value
for a virtual disk. For example:

% grub-ofpathname /dev/vdiskc2
vdisk/disk@2:b

After this patch it now returns the correct value:

% grub-ofpathname /dev/vdiskc2
/virtual-devices@100/channel-devices@200/disk@2:b

Orabug: 24459765

Signed-off-by: Eric Snowberg <eric.snowberg@oracle.com>
Reviewed-by: Daniel Kiper <daniel.kiper@oracle.com>
grub-core/osdep/linux/ofpath.c

index a79682a..dce4e59 100644 (file)
@@ -120,6 +120,8 @@ find_obppath (const char *sysfs_path_orig)
 #endif
 
       fd = open(path, O_RDONLY);
+
+#ifndef __sparc__
       if (fd < 0 || fstat (fd, &st) < 0)
        {
          if (fd >= 0)
@@ -127,6 +129,7 @@ find_obppath (const char *sysfs_path_orig)
          snprintf(path, path_size, "%s/devspec", sysfs_path);
          fd = open(path, O_RDONLY);
        }
+#endif
 
       if (fd < 0 || fstat (fd, &st) < 0)
        {