2001-12-16 13:19:50

by Aneesh Kumar KV

[permalink] [raw]
Subject: Alpha - how to fill the PC

Hi,

I am trying to do process migration between nodes using alpha
architecture. For explaining what is happening I will take the process
getting migrated from node1 to node2. I am using struct pt_regs for
rebuilding the process on node2.I am getting the same value of struct
pt_regs on node1 and on node2 ( I print is using dik_show_regs) Now I
want to set the value of registers including the program counter with
the value i got from node1. Right now I am doing
ret_from_sys_call(&regs). But then i am getting a Oops . The Oops
message contain all the register values same as that I got from node1
except pc and ra

Any idea where I went wrong ?

-aneesh




2001-12-16 22:32:06

by Tyler BIRD

[permalink] [raw]
Subject: Re: Alpha - how to fill the PC

One thing I thought of is the process on lets say node2 have exactly the same
address space as on node 1 when it is migrated. You could be trying to return from a syscall
to an address space of a process that doesn't exist on the node or hasn't migrated yet.

Just a thought

>>> "Aneesh Kumar K.V" <[email protected]> 12/16/01 06:19AM >>>
Hi,

I am trying to do process migration between nodes using alpha
architecture. For explaining what is happening I will take the process
getting migrated from node1 to node2. I am using struct pt_regs for
rebuilding the process on node2.I am getting the same value of struct
pt_regs on node1 and on node2 ( I print is using dik_show_regs) Now I
want to set the value of registers including the program counter with
the value i got from node1. Right now I am doing
ret_from_sys_call(&regs). But then i am getting a Oops . The Oops
message contain all the register values same as that I got from node1
except pc and ra

Any idea where I went wrong ?

-aneesh



2001-12-17 04:03:37

by Aneesh Kumar KV

[permalink] [raw]
Subject: Re: Alpha - how to fill the PC

Hi,

No, I have the full address space rebuilt on node2. I validated it
checking /proc/<pid>/maps

-aneesh




On Mon, 2001-12-17 at 01:17, Tyler BIRD wrote:
> One thing I thought of is the process on lets say node2 have exactly the same
> address space as on node 1 when it is migrated. You could be trying to return from a syscall
> to an address space of a process that doesn't exist on the node or hasn't migrated yet.
>
> Just a thought
>
> >>> "Aneesh Kumar K.V" <[email protected]> 12/16/01 06:19AM >>>
> Hi,
>
> I am trying to do process migration between nodes using alpha
> architecture. For explaining what is happening I will take the process
> getting migrated from node1 to node2. I am using struct pt_regs for
> rebuilding the process on node2.I am getting the same value of struct
> pt_regs on node1 and on node2 ( I print is using dik_show_regs) Now I
> want to set the value of registers including the program counter with
> the value i got from node1. Right now I am doing
> ret_from_sys_call(&regs). But then i am getting a Oops . The Oops
> message contain all the register values same as that I got from node1
> except pc and ra
>
> Any idea where I went wrong ?
>
> -aneesh
>
>
>
> -
> To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
> the body of a message to [email protected]
> More majordomo info at http://vger.kernel.org/majordomo-info.html
> Please read the FAQ at http://www.tux.org/lkml/


2001-12-28 23:59:33

by Richard Henderson

[permalink] [raw]
Subject: Re: Alpha - how to fill the PC

On Sun, Dec 16, 2001 at 06:49:56PM +0530, Aneesh Kumar K.V wrote:
> Right now I am doing ret_from_sys_call(&regs).

Err, ret_from_sys_call is not a function that can be called in
any normal method. Supposing that you get there, the stack
must be set up properly, and the stack is whence the register
values are fetched.


r~