aboutsummaryrefslogtreecommitdiffstats
path: root/arch/powerpc/platforms/iseries
diff options
context:
space:
mode:
Diffstat (limited to 'arch/powerpc/platforms/iseries')
-rw-r--r--arch/powerpc/platforms/iseries/exception.S25
-rw-r--r--arch/powerpc/platforms/iseries/htab.c8
-rw-r--r--arch/powerpc/platforms/iseries/iommu.c1
-rw-r--r--arch/powerpc/platforms/iseries/irq.c8
-rw-r--r--arch/powerpc/platforms/iseries/mf.c148
-rw-r--r--arch/powerpc/platforms/iseries/pci.c1
-rw-r--r--arch/powerpc/platforms/iseries/proc.c2
-rw-r--r--arch/powerpc/platforms/iseries/setup.c2
-rw-r--r--arch/powerpc/platforms/iseries/vio.c4
-rw-r--r--arch/powerpc/platforms/iseries/viopath.c3
10 files changed, 119 insertions, 83 deletions
diff --git a/arch/powerpc/platforms/iseries/exception.S b/arch/powerpc/platforms/iseries/exception.S
index 5369653dcf6a..fba5bf915073 100644
--- a/arch/powerpc/platforms/iseries/exception.S
+++ b/arch/powerpc/platforms/iseries/exception.S
@@ -43,17 +43,14 @@ system_reset_iSeries:
43 LOAD_REG_ADDR(r23, alpaca) 43 LOAD_REG_ADDR(r23, alpaca)
44 li r0,ALPACA_SIZE 44 li r0,ALPACA_SIZE
45 sub r23,r13,r23 45 sub r23,r13,r23
46 divdu r23,r23,r0 /* r23 has cpu number */ 46 divdu r24,r23,r0 /* r24 has cpu number */
47 LOAD_REG_ADDR(r13, paca)
48 mulli r0,r23,PACA_SIZE
49 add r13,r13,r0
50 mtspr SPRN_SPRG_PACA,r13 /* Save it away for the future */
51 mfmsr r24
52 ori r24,r24,MSR_RI
53 mtmsrd r24 /* RI on */
54 mr r24,r23
55 cmpwi 0,r24,0 /* Are we processor 0? */ 47 cmpwi 0,r24,0 /* Are we processor 0? */
56 bne 1f 48 bne 1f
49 LOAD_REG_ADDR(r13, boot_paca)
50 mtspr SPRN_SPRG_PACA,r13 /* Save it away for the future */
51 mfmsr r23
52 ori r23,r23,MSR_RI
53 mtmsrd r23 /* RI on */
57 b .__start_initialization_iSeries /* Start up the first processor */ 54 b .__start_initialization_iSeries /* Start up the first processor */
581: mfspr r4,SPRN_CTRLF 551: mfspr r4,SPRN_CTRLF
59 li r5,CTRL_RUNLATCH /* Turn off the run light */ 56 li r5,CTRL_RUNLATCH /* Turn off the run light */
@@ -86,6 +83,16 @@ system_reset_iSeries:
86#endif 83#endif
87 84
882: 852:
86 /* Load our paca now that it's been allocated */
87 LOAD_REG_ADDR(r13, paca)
88 ld r13,0(r13)
89 mulli r0,r24,PACA_SIZE
90 add r13,r13,r0
91 mtspr SPRN_SPRG_PACA,r13 /* Save it away for the future */
92 mfmsr r23
93 ori r23,r23,MSR_RI
94 mtmsrd r23 /* RI on */
95
89 HMT_LOW 96 HMT_LOW
90#ifdef CONFIG_SMP 97#ifdef CONFIG_SMP
91 lbz r23,PACAPROCSTART(r13) /* Test if this processor 98 lbz r23,PACAPROCSTART(r13) /* Test if this processor
diff --git a/arch/powerpc/platforms/iseries/htab.c b/arch/powerpc/platforms/iseries/htab.c
index f99c6c4b6985..3ae66ab9d5e7 100644
--- a/arch/powerpc/platforms/iseries/htab.c
+++ b/arch/powerpc/platforms/iseries/htab.c
@@ -19,8 +19,7 @@
19 19
20#include "call_hpt.h" 20#include "call_hpt.h"
21 21
22static spinlock_t iSeries_hlocks[64] __cacheline_aligned_in_smp = 22static spinlock_t iSeries_hlocks[64] __cacheline_aligned_in_smp;
23 { [0 ... 63] = SPIN_LOCK_UNLOCKED};
24 23
25/* 24/*
26 * Very primitive algorithm for picking up a lock 25 * Very primitive algorithm for picking up a lock
@@ -245,6 +244,11 @@ static void iSeries_hpte_invalidate(unsigned long slot, unsigned long va,
245 244
246void __init hpte_init_iSeries(void) 245void __init hpte_init_iSeries(void)
247{ 246{
247 int i;
248
249 for (i = 0; i < ARRAY_SIZE(iSeries_hlocks); i++)
250 spin_lock_init(&iSeries_hlocks[i]);
251
248 ppc_md.hpte_invalidate = iSeries_hpte_invalidate; 252 ppc_md.hpte_invalidate = iSeries_hpte_invalidate;
249 ppc_md.hpte_updatepp = iSeries_hpte_updatepp; 253 ppc_md.hpte_updatepp = iSeries_hpte_updatepp;
250 ppc_md.hpte_updateboltedpp = iSeries_hpte_updateboltedpp; 254 ppc_md.hpte_updateboltedpp = iSeries_hpte_updateboltedpp;
diff --git a/arch/powerpc/platforms/iseries/iommu.c b/arch/powerpc/platforms/iseries/iommu.c
index 9d53cb481a7c..ce61cea0afb5 100644
--- a/arch/powerpc/platforms/iseries/iommu.c
+++ b/arch/powerpc/platforms/iseries/iommu.c
@@ -29,6 +29,7 @@
29#include <linux/list.h> 29#include <linux/list.h>
30#include <linux/pci.h> 30#include <linux/pci.h>
31#include <linux/module.h> 31#include <linux/module.h>
32#include <linux/slab.h>
32 33
33#include <asm/iommu.h> 34#include <asm/iommu.h>
34#include <asm/vio.h> 35#include <asm/vio.h>
diff --git a/arch/powerpc/platforms/iseries/irq.c b/arch/powerpc/platforms/iseries/irq.c
index 94f444758836..ba446bf355a9 100644
--- a/arch/powerpc/platforms/iseries/irq.c
+++ b/arch/powerpc/platforms/iseries/irq.c
@@ -214,12 +214,12 @@ void __init iSeries_activate_IRQs()
214 unsigned long flags; 214 unsigned long flags;
215 215
216 for_each_irq (irq) { 216 for_each_irq (irq) {
217 struct irq_desc *desc = get_irq_desc(irq); 217 struct irq_desc *desc = irq_to_desc(irq);
218 218
219 if (desc && desc->chip && desc->chip->startup) { 219 if (desc && desc->chip && desc->chip->startup) {
220 spin_lock_irqsave(&desc->lock, flags); 220 raw_spin_lock_irqsave(&desc->lock, flags);
221 desc->chip->startup(irq); 221 desc->chip->startup(irq);
222 spin_unlock_irqrestore(&desc->lock, flags); 222 raw_spin_unlock_irqrestore(&desc->lock, flags);
223 } 223 }
224 } 224 }
225} 225}
@@ -273,7 +273,7 @@ static void iseries_end_IRQ(unsigned int irq)
273} 273}
274 274
275static struct irq_chip iseries_pic = { 275static struct irq_chip iseries_pic = {
276 .typename = "iSeries irq controller", 276 .name = "iSeries",
277 .startup = iseries_startup_IRQ, 277 .startup = iseries_startup_IRQ,
278 .shutdown = iseries_shutdown_IRQ, 278 .shutdown = iseries_shutdown_IRQ,
279 .unmask = iseries_enable_IRQ, 279 .unmask = iseries_enable_IRQ,
diff --git a/arch/powerpc/platforms/iseries/mf.c b/arch/powerpc/platforms/iseries/mf.c
index 0d9343df35bc..d2c1d497846e 100644
--- a/arch/powerpc/platforms/iseries/mf.c
+++ b/arch/powerpc/platforms/iseries/mf.c
@@ -33,6 +33,7 @@
33#include <linux/dma-mapping.h> 33#include <linux/dma-mapping.h>
34#include <linux/bcd.h> 34#include <linux/bcd.h>
35#include <linux/rtc.h> 35#include <linux/rtc.h>
36#include <linux/slab.h>
36 37
37#include <asm/time.h> 38#include <asm/time.h>
38#include <asm/uaccess.h> 39#include <asm/uaccess.h>
@@ -855,59 +856,58 @@ static int mf_get_boot_rtc(struct rtc_time *tm)
855} 856}
856 857
857#ifdef CONFIG_PROC_FS 858#ifdef CONFIG_PROC_FS
858 859static int mf_cmdline_proc_show(struct seq_file *m, void *v)
859static int proc_mf_dump_cmdline(char *page, char **start, off_t off,
860 int count, int *eof, void *data)
861{ 860{
862 int len; 861 char *page, *p;
863 char *p;
864 struct vsp_cmd_data vsp_cmd; 862 struct vsp_cmd_data vsp_cmd;
865 int rc; 863 int rc;
866 dma_addr_t dma_addr; 864 dma_addr_t dma_addr;
867 865
868 /* The HV appears to return no more than 256 bytes of command line */ 866 /* The HV appears to return no more than 256 bytes of command line */
869 if (off >= 256) 867 page = kmalloc(256, GFP_KERNEL);
870 return 0; 868 if (!page)
871 if ((off + count) > 256) 869 return -ENOMEM;
872 count = 256 - off;
873 870
874 dma_addr = iseries_hv_map(page, off + count, DMA_FROM_DEVICE); 871 dma_addr = iseries_hv_map(page, 256, DMA_FROM_DEVICE);
875 if (dma_addr == DMA_ERROR_CODE) 872 if (dma_addr == DMA_ERROR_CODE) {
873 kfree(page);
876 return -ENOMEM; 874 return -ENOMEM;
877 memset(page, 0, off + count); 875 }
876 memset(page, 0, 256);
878 memset(&vsp_cmd, 0, sizeof(vsp_cmd)); 877 memset(&vsp_cmd, 0, sizeof(vsp_cmd));
879 vsp_cmd.cmd = 33; 878 vsp_cmd.cmd = 33;
880 vsp_cmd.sub_data.kern.token = dma_addr; 879 vsp_cmd.sub_data.kern.token = dma_addr;
881 vsp_cmd.sub_data.kern.address_type = HvLpDma_AddressType_TceIndex; 880 vsp_cmd.sub_data.kern.address_type = HvLpDma_AddressType_TceIndex;
882 vsp_cmd.sub_data.kern.side = (u64)data; 881 vsp_cmd.sub_data.kern.side = (u64)m->private;
883 vsp_cmd.sub_data.kern.length = off + count; 882 vsp_cmd.sub_data.kern.length = 256;
884 mb(); 883 mb();
885 rc = signal_vsp_instruction(&vsp_cmd); 884 rc = signal_vsp_instruction(&vsp_cmd);
886 iseries_hv_unmap(dma_addr, off + count, DMA_FROM_DEVICE); 885 iseries_hv_unmap(dma_addr, 256, DMA_FROM_DEVICE);
887 if (rc) 886 if (rc) {
887 kfree(page);
888 return rc; 888 return rc;
889 if (vsp_cmd.result_code != 0) 889 }
890 if (vsp_cmd.result_code != 0) {
891 kfree(page);
890 return -ENOMEM; 892 return -ENOMEM;
893 }
891 p = page; 894 p = page;
892 len = 0; 895 while (p - page < 256) {
893 while (len < (off + count)) { 896 if (*p == '\0' || *p == '\n') {
894 if ((*p == '\0') || (*p == '\n')) { 897 *p = '\n';
895 if (*p == '\0')
896 *p = '\n';
897 p++;
898 len++;
899 *eof = 1;
900 break; 898 break;
901 } 899 }
902 p++; 900 p++;
903 len++;
904 }
905 901
906 if (len < off) {
907 *eof = 1;
908 len = 0;
909 } 902 }
910 return len; 903 seq_write(m, page, p - page);
904 kfree(page);
905 return 0;
906}
907
908static int mf_cmdline_proc_open(struct inode *inode, struct file *file)
909{
910 return single_open(file, mf_cmdline_proc_show, PDE(inode)->data);
911} 911}
912 912
913#if 0 913#if 0
@@ -962,10 +962,8 @@ static int proc_mf_dump_vmlinux(char *page, char **start, off_t off,
962} 962}
963#endif 963#endif
964 964
965static int proc_mf_dump_side(char *page, char **start, off_t off, 965static int mf_side_proc_show(struct seq_file *m, void *v)
966 int count, int *eof, void *data)
967{ 966{
968 int len;
969 char mf_current_side = ' '; 967 char mf_current_side = ' ';
970 struct vsp_cmd_data vsp_cmd; 968 struct vsp_cmd_data vsp_cmd;
971 969
@@ -989,21 +987,17 @@ static int proc_mf_dump_side(char *page, char **start, off_t off,
989 } 987 }
990 } 988 }
991 989
992 len = sprintf(page, "%c\n", mf_current_side); 990 seq_printf(m, "%c\n", mf_current_side);
991 return 0;
992}
993 993
994 if (len <= (off + count)) 994static int mf_side_proc_open(struct inode *inode, struct file *file)
995 *eof = 1; 995{
996 *start = page + off; 996 return single_open(file, mf_side_proc_show, NULL);
997 len -= off;
998 if (len > count)
999 len = count;
1000 if (len < 0)
1001 len = 0;
1002 return len;
1003} 997}
1004 998
1005static int proc_mf_change_side(struct file *file, const char __user *buffer, 999static ssize_t mf_side_proc_write(struct file *file, const char __user *buffer,
1006 unsigned long count, void *data) 1000 size_t count, loff_t *pos)
1007{ 1001{
1008 char side; 1002 char side;
1009 u64 newSide; 1003 u64 newSide;
@@ -1041,6 +1035,15 @@ static int proc_mf_change_side(struct file *file, const char __user *buffer,
1041 return count; 1035 return count;
1042} 1036}
1043 1037
1038static const struct file_operations mf_side_proc_fops = {
1039 .owner = THIS_MODULE,
1040 .open = mf_side_proc_open,
1041 .read = seq_read,
1042 .llseek = seq_lseek,
1043 .release = single_release,
1044 .write = mf_side_proc_write,
1045};
1046
1044#if 0 1047#if 0
1045static void mf_getSrcHistory(char *buffer, int size) 1048static void mf_getSrcHistory(char *buffer, int size)
1046{ 1049{
@@ -1087,8 +1090,7 @@ static void mf_getSrcHistory(char *buffer, int size)
1087} 1090}
1088#endif 1091#endif
1089 1092
1090static int proc_mf_dump_src(char *page, char **start, off_t off, 1093static int mf_src_proc_show(struct seq_file *m, void *v)
1091 int count, int *eof, void *data)
1092{ 1094{
1093#if 0 1095#if 0
1094 int len; 1096 int len;
@@ -1109,8 +1111,13 @@ static int proc_mf_dump_src(char *page, char **start, off_t off,
1109#endif 1111#endif
1110} 1112}
1111 1113
1112static int proc_mf_change_src(struct file *file, const char __user *buffer, 1114static int mf_src_proc_open(struct inode *inode, struct file *file)
1113 unsigned long count, void *data) 1115{
1116 return single_open(file, mf_src_proc_show, NULL);
1117}
1118
1119static ssize_t mf_src_proc_write(struct file *file, const char __user *buffer,
1120 size_t count, loff_t *pos)
1114{ 1121{
1115 char stkbuf[10]; 1122 char stkbuf[10];
1116 1123
@@ -1135,9 +1142,19 @@ static int proc_mf_change_src(struct file *file, const char __user *buffer,
1135 return count; 1142 return count;
1136} 1143}
1137 1144
1138static int proc_mf_change_cmdline(struct file *file, const char __user *buffer, 1145static const struct file_operations mf_src_proc_fops = {
1139 unsigned long count, void *data) 1146 .owner = THIS_MODULE,
1147 .open = mf_src_proc_open,
1148 .read = seq_read,
1149 .llseek = seq_lseek,
1150 .release = single_release,
1151 .write = mf_src_proc_write,
1152};
1153
1154static ssize_t mf_cmdline_proc_write(struct file *file, const char __user *buffer,
1155 size_t count, loff_t *pos)
1140{ 1156{
1157 void *data = PDE(file->f_path.dentry->d_inode)->data;
1141 struct vsp_cmd_data vsp_cmd; 1158 struct vsp_cmd_data vsp_cmd;
1142 dma_addr_t dma_addr; 1159 dma_addr_t dma_addr;
1143 char *page; 1160 char *page;
@@ -1172,6 +1189,15 @@ out:
1172 return ret; 1189 return ret;
1173} 1190}
1174 1191
1192static const struct file_operations mf_cmdline_proc_fops = {
1193 .owner = THIS_MODULE,
1194 .open = mf_cmdline_proc_open,
1195 .read = seq_read,
1196 .llseek = seq_lseek,
1197 .release = single_release,
1198 .write = mf_cmdline_proc_write,
1199};
1200
1175static ssize_t proc_mf_change_vmlinux(struct file *file, 1201static ssize_t proc_mf_change_vmlinux(struct file *file,
1176 const char __user *buf, 1202 const char __user *buf,
1177 size_t count, loff_t *ppos) 1203 size_t count, loff_t *ppos)
@@ -1246,12 +1272,10 @@ static int __init mf_proc_init(void)
1246 if (!mf) 1272 if (!mf)
1247 return 1; 1273 return 1;
1248 1274
1249 ent = create_proc_entry("cmdline", S_IFREG|S_IRUSR|S_IWUSR, mf); 1275 ent = proc_create_data("cmdline", S_IRUSR|S_IWUSR, mf,
1276 &mf_cmdline_proc_fops, (void *)(long)i);
1250 if (!ent) 1277 if (!ent)
1251 return 1; 1278 return 1;
1252 ent->data = (void *)(long)i;
1253 ent->read_proc = proc_mf_dump_cmdline;
1254 ent->write_proc = proc_mf_change_cmdline;
1255 1279
1256 if (i == 3) /* no vmlinux entry for 'D' */ 1280 if (i == 3) /* no vmlinux entry for 'D' */
1257 continue; 1281 continue;
@@ -1263,19 +1287,15 @@ static int __init mf_proc_init(void)
1263 return 1; 1287 return 1;
1264 } 1288 }
1265 1289
1266 ent = create_proc_entry("side", S_IFREG|S_IRUSR|S_IWUSR, mf_proc_root); 1290 ent = proc_create("side", S_IFREG|S_IRUSR|S_IWUSR, mf_proc_root,
1291 &mf_side_proc_fops);
1267 if (!ent) 1292 if (!ent)
1268 return 1; 1293 return 1;
1269 ent->data = (void *)0;
1270 ent->read_proc = proc_mf_dump_side;
1271 ent->write_proc = proc_mf_change_side;
1272 1294
1273 ent = create_proc_entry("src", S_IFREG|S_IRUSR|S_IWUSR, mf_proc_root); 1295 ent = proc_create("src", S_IFREG|S_IRUSR|S_IWUSR, mf_proc_root,
1296 &mf_src_proc_fops);
1274 if (!ent) 1297 if (!ent)
1275 return 1; 1298 return 1;
1276 ent->data = (void *)0;
1277 ent->read_proc = proc_mf_dump_src;
1278 ent->write_proc = proc_mf_change_src;
1279 1299
1280 return 0; 1300 return 0;
1281} 1301}
diff --git a/arch/powerpc/platforms/iseries/pci.c b/arch/powerpc/platforms/iseries/pci.c
index 175aac8ca7e5..b841c9a9db87 100644
--- a/arch/powerpc/platforms/iseries/pci.c
+++ b/arch/powerpc/platforms/iseries/pci.c
@@ -27,6 +27,7 @@
27#include <linux/kernel.h> 27#include <linux/kernel.h>
28#include <linux/list.h> 28#include <linux/list.h>
29#include <linux/string.h> 29#include <linux/string.h>
30#include <linux/slab.h>
30#include <linux/init.h> 31#include <linux/init.h>
31#include <linux/module.h> 32#include <linux/module.h>
32#include <linux/pci.h> 33#include <linux/pci.h>
diff --git a/arch/powerpc/platforms/iseries/proc.c b/arch/powerpc/platforms/iseries/proc.c
index 91f4c6cd4b99..06763682db47 100644
--- a/arch/powerpc/platforms/iseries/proc.c
+++ b/arch/powerpc/platforms/iseries/proc.c
@@ -85,7 +85,7 @@ static int proc_titantod_show(struct seq_file *m, void *v)
85 85
86 seq_printf(m, " titan elapsed = %lu uSec\n", titan_usec); 86 seq_printf(m, " titan elapsed = %lu uSec\n", titan_usec);
87 seq_printf(m, " tb elapsed = %lu ticks\n", tb_ticks); 87 seq_printf(m, " tb elapsed = %lu ticks\n", tb_ticks);
88 seq_printf(m, " titan jiffies = %lu.%04lu \n", titan_jiffies, 88 seq_printf(m, " titan jiffies = %lu.%04lu\n", titan_jiffies,
89 titan_jiff_rem_usec); 89 titan_jiff_rem_usec);
90 seq_printf(m, " tb jiffies = %lu.%04lu\n", tb_jiffies, 90 seq_printf(m, " tb jiffies = %lu.%04lu\n", tb_jiffies,
91 tb_jiff_rem_usec); 91 tb_jiff_rem_usec);
diff --git a/arch/powerpc/platforms/iseries/setup.c b/arch/powerpc/platforms/iseries/setup.c
index a6cd3394feaa..b0863410517f 100644
--- a/arch/powerpc/platforms/iseries/setup.c
+++ b/arch/powerpc/platforms/iseries/setup.c
@@ -256,7 +256,7 @@ static unsigned long iSeries_process_mainstore_vpd(struct MemoryBlock *mb_array,
256 mem_blocks = iSeries_process_Condor_mainstore_vpd(mb_array, 256 mem_blocks = iSeries_process_Condor_mainstore_vpd(mb_array,
257 max_entries); 257 max_entries);
258 258
259 printk("Mainstore_VPD: numMemoryBlocks = %ld \n", mem_blocks); 259 printk("Mainstore_VPD: numMemoryBlocks = %ld\n", mem_blocks);
260 for (i = 0; i < mem_blocks; ++i) { 260 for (i = 0; i < mem_blocks; ++i) {
261 printk("Mainstore_VPD: block %3ld logical chunks %016lx - %016lx\n" 261 printk("Mainstore_VPD: block %3ld logical chunks %016lx - %016lx\n"
262 " abs chunks %016lx - %016lx\n", 262 " abs chunks %016lx - %016lx\n",
diff --git a/arch/powerpc/platforms/iseries/vio.c b/arch/powerpc/platforms/iseries/vio.c
index 657b72f68493..00b6730bc48f 100644
--- a/arch/powerpc/platforms/iseries/vio.c
+++ b/arch/powerpc/platforms/iseries/vio.c
@@ -22,7 +22,7 @@
22 */ 22 */
23#include <linux/of.h> 23#include <linux/of.h>
24#include <linux/init.h> 24#include <linux/init.h>
25#include <linux/gfp.h> 25#include <linux/slab.h>
26#include <linux/completion.h> 26#include <linux/completion.h>
27#include <linux/proc_fs.h> 27#include <linux/proc_fs.h>
28#include <linux/module.h> 28#include <linux/module.h>
@@ -474,6 +474,8 @@ static void __init get_viotape_info(struct device_node *vio_root)
474 struct vio_waitevent we; 474 struct vio_waitevent we;
475 int ret; 475 int ret;
476 476
477 init_completion(&we.com);
478
477 ret = viopath_open(viopath_hostLp, viomajorsubtype_tape, 2); 479 ret = viopath_open(viopath_hostLp, viomajorsubtype_tape, 2);
478 if (ret) { 480 if (ret) {
479 printk(KERN_WARNING "get_viotape_info: " 481 printk(KERN_WARNING "get_viotape_info: "
diff --git a/arch/powerpc/platforms/iseries/viopath.c b/arch/powerpc/platforms/iseries/viopath.c
index 49ff4dc422b7..b5f05d943a90 100644
--- a/arch/powerpc/platforms/iseries/viopath.c
+++ b/arch/powerpc/platforms/iseries/viopath.c
@@ -29,6 +29,7 @@
29 */ 29 */
30#include <linux/module.h> 30#include <linux/module.h>
31#include <linux/kernel.h> 31#include <linux/kernel.h>
32#include <linux/slab.h>
32#include <linux/errno.h> 33#include <linux/errno.h>
33#include <linux/vmalloc.h> 34#include <linux/vmalloc.h>
34#include <linux/string.h> 35#include <linux/string.h>
@@ -116,7 +117,7 @@ static int proc_viopath_show(struct seq_file *m, void *v)
116 u16 vlanMap; 117 u16 vlanMap;
117 dma_addr_t handle; 118 dma_addr_t handle;
118 HvLpEvent_Rc hvrc; 119 HvLpEvent_Rc hvrc;
119 DECLARE_COMPLETION(done); 120 DECLARE_COMPLETION_ONSTACK(done);
120 struct device_node *node; 121 struct device_node *node;
121 const char *sysid; 122 const char *sysid;
122 123