Commit 8e9f9a37 authored by Anton Blanchard's avatar Anton Blanchard

ppc64: updates for 2.5.7-pre2

parent 976e84b0
...@@ -523,10 +523,11 @@ void make_pte_LPAR(HPTE *htab, ...@@ -523,10 +523,11 @@ void make_pte_LPAR(HPTE *htab,
local_hpte.dw0.dword0 = 0; local_hpte.dw0.dword0 = 0;
local_hpte.dw0.dw0.avpn = va >> 23; local_hpte.dw0.dw0.avpn = va >> 23;
local_hpte.dw0.dw0.bolted = 1; /* bolted */ local_hpte.dw0.dw0.bolted = 1; /* bolted */
if (large)
local_hpte.dw0.dw0.l = 1; /* large page */
local_hpte.dw0.dw0.v = 1; local_hpte.dw0.dw0.v = 1;
/* Set CEC cookie to 0 */ /* Set CEC cookie to 0 */
/* Large page = 0 */
/* Zero page = 0 */ /* Zero page = 0 */
/* I-cache Invalidate = 0 */ /* I-cache Invalidate = 0 */
/* I-cache synchronize = 0 */ /* I-cache synchronize = 0 */
......
...@@ -676,8 +676,8 @@ int do_signal(sigset_t *oldset, struct pt_regs *regs) ...@@ -676,8 +676,8 @@ int do_signal(sigset_t *oldset, struct pt_regs *regs)
info.si_signo = signr; info.si_signo = signr;
info.si_errno = 0; info.si_errno = 0;
info.si_code = SI_USER; info.si_code = SI_USER;
info.si_pid = current->p_pptr->pid; info.si_pid = current->parent->pid;
info.si_uid = current->p_pptr->uid; info.si_uid = current->parent->uid;
} }
/* If the (new) signal is now blocked, requeue it. */ /* If the (new) signal is now blocked, requeue it. */
...@@ -722,7 +722,7 @@ int do_signal(sigset_t *oldset, struct pt_regs *regs) ...@@ -722,7 +722,7 @@ int do_signal(sigset_t *oldset, struct pt_regs *regs)
case SIGSTOP: case SIGSTOP:
current->state = TASK_STOPPED; current->state = TASK_STOPPED;
current->exit_code = signr; current->exit_code = signr;
if (!(current->p_pptr->sig->action[SIGCHLD-1].sa.sa_flags & SA_NOCLDSTOP)) if (!(current->parent->sig->action[SIGCHLD-1].sa.sa_flags & SA_NOCLDSTOP))
notify_parent(current, SIGCHLD); notify_parent(current, SIGCHLD);
schedule(); schedule();
continue; continue;
......
...@@ -1375,8 +1375,8 @@ int do_signal32(sigset_t *oldset, struct pt_regs *regs) ...@@ -1375,8 +1375,8 @@ int do_signal32(sigset_t *oldset, struct pt_regs *regs)
info.si_signo = signr; info.si_signo = signr;
info.si_errno = 0; info.si_errno = 0;
info.si_code = SI_USER; info.si_code = SI_USER;
info.si_pid = current->p_pptr->pid; info.si_pid = current->parent->pid;
info.si_uid = current->p_pptr->uid; info.si_uid = current->parent->uid;
} }
/* If the (new) signal is now blocked, requeue it. */ /* If the (new) signal is now blocked, requeue it. */
...@@ -1416,7 +1416,7 @@ int do_signal32(sigset_t *oldset, struct pt_regs *regs) ...@@ -1416,7 +1416,7 @@ int do_signal32(sigset_t *oldset, struct pt_regs *regs)
case SIGSTOP: case SIGSTOP:
current->state = TASK_STOPPED; current->state = TASK_STOPPED;
current->exit_code = signr; current->exit_code = signr;
if (!(current->p_pptr->sig->action[SIGCHLD-1].sa.sa_flags & SA_NOCLDSTOP)) if (!(current->parent->sig->action[SIGCHLD-1].sa.sa_flags & SA_NOCLDSTOP))
notify_parent(current, SIGCHLD); notify_parent(current, SIGCHLD);
schedule(); schedule();
continue; continue;
......
...@@ -132,8 +132,7 @@ static void mem_map_check_slab(void); ...@@ -132,8 +132,7 @@ static void mem_map_check_slab(void);
static void mem_map_lock_pages(void); static void mem_map_lock_pages(void);
static void mem_map_check_hash(void); static void mem_map_check_hash(void);
static void mem_check_dup_rpn (void); static void mem_check_dup_rpn (void);
static void show_task(struct task_struct * p); static void show_state(void);
static void xmon_show_state(void);
static void debug_trace(void); static void debug_trace(void);
extern int print_insn_big_powerpc(FILE *, unsigned long, unsigned long); extern int print_insn_big_powerpc(FILE *, unsigned long, unsigned long);
...@@ -716,7 +715,7 @@ cmds(struct pt_regs *excp) ...@@ -716,7 +715,7 @@ cmds(struct pt_regs *excp)
printf(help_string); printf(help_string);
break; break;
case 'p': case 'p':
xmon_show_state(); show_state();
break; break;
case 'b': case 'b':
bpt_cmds(); bpt_cmds();
...@@ -2805,111 +2804,6 @@ void mem_check_full_group() ...@@ -2805,111 +2804,6 @@ void mem_check_full_group()
printf("\nDone -------------------\n"); printf("\nDone -------------------\n");
} }
static void show_task(struct task_struct * p)
{
/* unsigned long free = 0; --Unused */
int state;
static const char * stat_nam[] = { "R", "S", "D", "Z", "T", "W" };
printf("--------------------------------------------------------------------------\n");
printf("%-11.11s pid: %5.5lx ppid: %5.5lx state: ",
p->comm, p->pid, p->p_pptr->pid);
state = p->state ? ffz(~p->state) + 1 : 0;
if (((unsigned) state) < sizeof(stat_nam)/sizeof(char *))
printf(stat_nam[state]);
else
printf(" ");
if (p == current)
printf(" pc: current task ");
else
printf(" pc: 0x%16.16lx ", thread_saved_pc(&p->thread));
if (p->p_cptr)
printf("%5d ", p->p_cptr->pid);
else
printf(" ");
if (!p->mm)
printf(" (L-TLB) ");
else
printf(" (NOTLB) ");
if (p->p_ysptr)
printf("%7d", p->p_ysptr->pid);
else
printf(" ");
if (p->p_osptr)
printf(" %5d\n", p->p_osptr->pid);
else
printf("\n");
{
struct sigqueue *q;
char s[sizeof(sigset_t)*2+1], b[sizeof(sigset_t)*2+1];
render_sigset_t(&p->pending.signal, s);
render_sigset_t(&p->blocked, b);
printf(" sig: %d %s %s :", signal_pending(p), s, b);
for (q = p->pending.head; q ; q = q->next)
printf(" %d", q->info.si_signo);
printf(" X\n");
}
printf(" pers : %lx current : %lx",
p->personality, p);
printf("\n");
printf(" thread : 0x%16.16lx ksp : 0x%16.16lx\n",
&(p->thread), (p->thread.ksp));
printf(" pgdir : 0x%16.16lx\n", (p->thread.pgdir));
printf(" regs : 0x%16.16lx sysc : 0x%16.16lx\n",
(p->thread.regs), (p->thread.last_syscall));
if(p->thread.regs) {
printf(" nip : 0x%16.16lx msr : 0x%16.16lx\n",
((p->thread.regs)->nip), ((p->thread.regs)->msr));
printf(" ctr : 0x%16.16lx link : 0x%16.16lx\n",
((p->thread.regs)->ctr), ((p->thread.regs)->link));
printf(" xer : 0x%16.16lx ccr : 0x%16.16lx\n",
((p->thread.regs)->xer), ((p->thread.regs)->ccr));
printf(" trap : 0x%16.16lx\n",
((p->thread.regs)->trap));
printf(" dar : 0x%16.16lx dsis : 0x%16.16lx\n",
((p->thread.regs)->dar), ((p->thread.regs)->dsisr));
printf(" rslt : 0x%16.16lx org3 : 0x%16.16lx\n",
((p->thread.regs)->result), (p->thread.regs->orig_gpr3));
}
if(p->mm) {
struct mm_struct *mm = p->mm;
printf(" mm : 0x%16.16lx pgd : 0x%16.16lx\n",
mm, mm->pgd);
printf(" context: 0x%16.16lx mmap : 0x%16.16lx\n",
mm->context, mm->mmap);
printf("\n");
}
}
static void xmon_show_state(void)
{
struct task_struct *p;
#if (BITS_PER_LONG == 32)
printf("\n"
" free sibling\n");
printf("task name st PC stack pid father child younger older\n");
#else
printf("\n"
" free sibling\n");
printf(" task PC stack pid father child younger older\n");
#endif
read_lock(&tasklist_lock);
for_each_task(p)
show_task(p);
read_unlock(&tasklist_lock);
}
static void debug_trace(void) { static void debug_trace(void) {
unsigned long val, cmd, on; unsigned long val, cmd, on;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment