You're going to have to get gdb hooked up to gem5 and see where that
address is coming from and why its bad. With alpha all the kernel
addresses should start with ffffc, so some how something is going wrong.
You can also try sprinking printks or dprintks through the code to see
where the address is being generated. Once you track how it's computed,
you can see where it is loaded from and then go looking for who wrote
that last and why it was wrong. 

Ali 

On 15.05.2012 01:08, Pritha
Ghoshal wrote: 

> Hi, 
> 
> I am trying to use two e1000 drivers to
simulate an incoming port and an outgoing port. I have the iptables
setup in between to regulate traffic and let only some packets proceed
to the outgoing port. I have modified the networking part of the kernel
as follows: 
> 1. I added a virtual device driver which sits on top of
eth0 and eth1. 
> 2. This device calls the iptable functions by using
the NF_HOOK mechanism for all three hooks - PRE_ROUTING, FORWARD,
POST_ROUTING. 
> 3. I have removed the NF_HOOK calls from places like
ip_rcv, ip_forward and ip_output, the functions that were being called
through NF_HOOKS are being called directly now. 
> 
> When I try to run
packets through this setup, it works well till 1000 packets. In the
experiment where I try to send 10,000 packets, I get a kernel panic: 
>
Unable to handle kernel paging request at virtual address
0000074a7b000000^M
> CPU 0 ksoftirqd/0(4): Oops 0^M
> pc = [] ra = [] ps
= 0000 Tainted: G W^M
> pc is at put_page+0x28/0x190^M
> ra is at
skb_release_data+0xe8/0x120^M
> v0 = 0000000000000000 t0 =
fffffc001da7e350 t1 = 0000000000006000^M
> t2 = 0000000000000001 t3 =
0000000000000068 t4 = 0008000400000000^M
> t5 = 0000000000000000 t6 =
0000000000000002 t7 = fffffc001f04c000^M
> s0 = 0000074a7b000000 s1 =
fffffc001e40bbc0 s2 = 0000000000000069^M
> s3 = fffffc001f248000 s4 =
0000000000000068 s5 = fffffc001f37e680^M
> s6 = 0000000000000001^M
> a0
= 0000074a7b000000 a1 = 000000009da7e2d2 a2 = 0000000000000068^M
> a3 =
0000000000000001 a4 = fffffc001f2f6800 a5 = fffffc001da897c0^M
> t8 =
0000000000000000 t9 = 0000000000000000 t10= 0000000002000000^M
> t11=
ffffffffffffffff pv = fffffc000037ddc0 at = 0000000000000020^M
> gp =
fffffc000086fc60 sp = fffffc001f04fc38^M
> Trace:^M
> []
skb_release_data+0xe8/0x120^M
> [] __kfree_skb+0x1c/0x120^M
> []
dev_kfree_skb_any+0x40/0x70^M
> []
e1000_unmap_and_free_tx_resource+0x30/0x80^M
> []
e1000_clean+0xec/0x720^M
> [] net_rx_action+0x1d8/0x2c0^M
> []
__do_softirq+0x13c/0x170^M
> [] do_softirq+0x74/0x80^M
> []
kthread+0x0/0xc0^M
> [] ksoftirqd+0xb0/0x170^M
> []
kthread+0x70/0xc0^M
> [] ksoftirqd+0x0/0x170^M
> []
kernel_thread+0x28/0x90^M
> 
> It is giving an error in put_page call in
the skb_release_data function. Could someone help me in this? I am not
sure how to proceed to debug this.. 
> 
> Thanks,
> Pritha
> 
>
_______________________________________________
> gem5-users mailing
list
> gem5-users@gem5.org
>
http://m5sim.org/cgi-bin/mailman/listinfo/gem5-users

 
_______________________________________________
gem5-users mailing list
gem5-users@gem5.org
http://m5sim.org/cgi-bin/mailman/listinfo/gem5-users

Reply via email to