hc
2024-01-03 2f7c68cb55ecb7331f2381deb497c27155f32faf
kernel/arch/powerpc/platforms/pseries/lparcfg.c
....@@ -205,7 +205,7 @@
205205 ppp_data.active_system_procs);
206206
207207 /* pool related entries are appropriate for shared configs */
208
- if (lppaca_shared_proc(get_lppaca())) {
208
+ if (lppaca_shared_proc()) {
209209 unsigned long pool_idle_time, pool_procs;
210210
211211 seq_printf(m, "pool=%d\n", ppp_data.pool_num);
....@@ -322,6 +322,7 @@
322322 */
323323 static void parse_system_parameter_string(struct seq_file *m)
324324 {
325
+ const s32 token = rtas_token("ibm,get-system-parameter");
325326 int call_status;
326327
327328 unsigned char *local_buffer = kmalloc(SPLPAR_MAXLENGTH, GFP_KERNEL);
....@@ -331,16 +332,15 @@
331332 return;
332333 }
333334
334
- spin_lock(&rtas_data_buf_lock);
335
- memset(rtas_data_buf, 0, SPLPAR_MAXLENGTH);
336
- call_status = rtas_call(rtas_token("ibm,get-system-parameter"), 3, 1,
337
- NULL,
338
- SPLPAR_CHARACTERISTICS_TOKEN,
339
- __pa(rtas_data_buf),
340
- RTAS_DATA_BUF_SIZE);
341
- memcpy(local_buffer, rtas_data_buf, SPLPAR_MAXLENGTH);
342
- local_buffer[SPLPAR_MAXLENGTH - 1] = '\0';
343
- spin_unlock(&rtas_data_buf_lock);
335
+ do {
336
+ spin_lock(&rtas_data_buf_lock);
337
+ memset(rtas_data_buf, 0, SPLPAR_MAXLENGTH);
338
+ call_status = rtas_call(token, 3, 1, NULL, SPLPAR_CHARACTERISTICS_TOKEN,
339
+ __pa(rtas_data_buf), RTAS_DATA_BUF_SIZE);
340
+ memcpy(local_buffer, rtas_data_buf, SPLPAR_MAXLENGTH);
341
+ local_buffer[SPLPAR_MAXLENGTH - 1] = '\0';
342
+ spin_unlock(&rtas_data_buf_lock);
343
+ } while (rtas_busy_delay(call_status));
344344
345345 if (call_status != 0) {
346346 printk(KERN_INFO
....@@ -529,7 +529,7 @@
529529 partition_potential_processors);
530530
531531 seq_printf(m, "shared_processor_mode=%d\n",
532
- lppaca_shared_proc(get_lppaca()));
532
+ lppaca_shared_proc());
533533
534534 #ifdef CONFIG_PPC_BOOK3S_64
535535 seq_printf(m, "slb_size=%d\n", mmu_slb_size);