#include <asm/system.h>
 #include <asm/uaccess.h>
+#include <asm/prom.h>
 #include <asm/iseries/hv_types.h>
-#include <asm/iseries/it_exp_vpd_panel.h>
 #include <asm/iseries/hv_lp_event.h>
 #include <asm/iseries/hv_lp_config.h>
 #include <asm/iseries/mf.h>
        dma_addr_t handle;
        HvLpEvent_Rc hvrc;
        DECLARE_MUTEX_LOCKED(Semaphore);
+       struct device_node *node;
 
        buf = kmalloc(HW_PAGE_SIZE, GFP_KERNEL);
        if (!buf)
 
        buf[HW_PAGE_SIZE-1] = '\0';
        seq_printf(m, "%s", buf);
-       seq_printf(m, "AVAILABLE_VETH=%x\n", vlanMap);
-       seq_printf(m, "SRLNBR=%c%c%c%c%c%c%c\n",
-                  e2a(xItExtVpdPanel.mfgID[2]),
-                  e2a(xItExtVpdPanel.mfgID[3]),
-                  e2a(xItExtVpdPanel.systemSerial[1]),
-                  e2a(xItExtVpdPanel.systemSerial[2]),
-                  e2a(xItExtVpdPanel.systemSerial[3]),
-                  e2a(xItExtVpdPanel.systemSerial[4]),
-                  e2a(xItExtVpdPanel.systemSerial[5]));
 
        dma_unmap_single(iSeries_vio_dev, handle, HW_PAGE_SIZE,
                         DMA_FROM_DEVICE);
        kfree(buf);
 
+       seq_printf(m, "AVAILABLE_VETH=%x\n", vlanMap);
+
+       node = of_find_node_by_path("/");
+       buf = NULL;
+       if (node != NULL)
+               buf = get_property(node, "system-id", NULL);
+
+       if (buf == NULL)
+               seq_printf(m, "SRLNBR=<UNKNOWN>\n");
+       else
+               /* Skip "IBM," on front of serial number, see dt.c */
+               seq_printf(m, "SRLNBR=%s\n", buf + 4);
+
+       of_node_put(node);
+
        return 0;
 }