diff options
Diffstat (limited to 'arch/powerpc/platforms/iseries')
-rw-r--r-- | arch/powerpc/platforms/iseries/exception.S | 25 | ||||
-rw-r--r-- | arch/powerpc/platforms/iseries/htab.c | 8 | ||||
-rw-r--r-- | arch/powerpc/platforms/iseries/iommu.c | 1 | ||||
-rw-r--r-- | arch/powerpc/platforms/iseries/irq.c | 8 | ||||
-rw-r--r-- | arch/powerpc/platforms/iseries/mf.c | 148 | ||||
-rw-r--r-- | arch/powerpc/platforms/iseries/pci.c | 1 | ||||
-rw-r--r-- | arch/powerpc/platforms/iseries/proc.c | 2 | ||||
-rw-r--r-- | arch/powerpc/platforms/iseries/setup.c | 2 | ||||
-rw-r--r-- | arch/powerpc/platforms/iseries/vio.c | 4 | ||||
-rw-r--r-- | arch/powerpc/platforms/iseries/viopath.c | 3 |
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 */ |
58 | 1: mfspr r4,SPRN_CTRLF | 55 | 1: 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 | ||
88 | 2: | 85 | 2: |
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 | ||
22 | static spinlock_t iSeries_hlocks[64] __cacheline_aligned_in_smp = | 22 | static 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 | ||
246 | void __init hpte_init_iSeries(void) | 245 | void __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 | ||
275 | static struct irq_chip iseries_pic = { | 275 | static 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 | 859 | static int mf_cmdline_proc_show(struct seq_file *m, void *v) | |
859 | static 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 | |||
908 | static 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 | ||
965 | static int proc_mf_dump_side(char *page, char **start, off_t off, | 965 | static 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)) | 994 | static 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 | ||
1005 | static int proc_mf_change_side(struct file *file, const char __user *buffer, | 999 | static 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 | ||
1038 | static 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 |
1045 | static void mf_getSrcHistory(char *buffer, int size) | 1048 | static 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 | ||
1090 | static int proc_mf_dump_src(char *page, char **start, off_t off, | 1093 | static 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 | ||
1112 | static int proc_mf_change_src(struct file *file, const char __user *buffer, | 1114 | static 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 | |||
1119 | static 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 | ||
1138 | static int proc_mf_change_cmdline(struct file *file, const char __user *buffer, | 1145 | static 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 | |||
1154 | static 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 | ||
1192 | static 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 | |||
1175 | static ssize_t proc_mf_change_vmlinux(struct file *file, | 1201 | static 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 | ||