Re: [OpenWrt-Devel] [PATCH] replace CONFIG_PREEMPT_NONE with CONFIG_PREEMPT
Hello, On Friday 02 September 2011 00:55:54 Luka Perkov wrote: I also had this issue on my sx763 lantiq based board: https://dev.openwrt.org/ticket/9440 With symbol table I got this oops: Unhandled kernel unaligned access[#1]: ... bla bla bla (to keep it short) ... Call Trace: [80cb8968] nf_nat_setup_info+0x2e0/0x6e8 [nf_nat] [80d1e158] masquerade_tg+0xc0/0xe8 [ipt_MASQUERADE] [80c646a8] ipt_do_table+0x3e0/0x484 [ip_tables] [80dee0c0] nf_nat_rule_find+0x28/0x9c [iptable_nat] [80dee290] nf_nat_fn+0x120/0x1a0 [iptable_nat] [801baa34] nf_iterate+0x8c/0xfc [801bab34] nf_hook_slow+0x90/0x17c [801c76c8] ip_output+0xd8/0x104 [8019a224] __netif_receive_skb+0x4d4/0x578 [80210128] br_handle_frame+0x280/0x2b8 [80199f9c] __netif_receive_skb+0x24c/0x578 [8019a370] process_backlog+0xa8/0x188 [8019a778] net_rx_action+0x8c/0x1b8 [800215f0] __do_softirq+0xa8/0x154 [800217f0] do_softirq+0x48/0x68 [800031c0] plat_irq_dispatch+0xf4/0x164 [800059ec] ret_from_irq+0x0/0x4 [80005be0] r4k_wait+0x20/0x40 [80007690] cpu_idle+0x28/0x4c [802a58d0] start_kernel+0x35c/0x378 It's easy to reproduce with nmap: # nmap -sT -p 1-1 -T insane -Pn -n some.public.ip.address/24 After some time I discovered that the issue is in this lines: % sed -n '320,326p' linux-2.6.39.4/net/ipv4/netfilter/nf_nat_core.c spin_lock_bh(nf_nat_lock); /* nf_conntrack_alter_reply might re-allocate exntension aera */ nat = nfct_nat(ct); nat-ct = ct; hlist_add_head_rcu(nat-bysource, net-ipv4.nat_bysource[srchash]); spin_unlock_bh(nf_nat_lock); Long story short - enable CONFIG_PREEMPT to have functional spin locks: http://www.kernel.org/pub/linux/kernel/people/rusty/kernel-locking/x109.htm l Also in linux-2.6.39.4/kernel/Kconfig.preempt you will see for CONFIG_PREEMPT: Select this if you are building a kernel for a desktop or embedded system with latency requirements in the milliseconds range Because of that I made changes to all kernel config files. Signed-off-by: Luka Perkov openwrt --to-- lukaperkov.net I am not opposed to enabling CONFIG_PREEMPT on a global basis, but I am afraid this might reveal new locking problems that we have not had so far. At least trunk should be the place where to experiment this. -- Florian ___ openwrt-devel mailing list openwrt-devel@lists.openwrt.org https://lists.openwrt.org/mailman/listinfo/openwrt-devel
Re: [OpenWrt-Devel] [PATCH] replace CONFIG_PREEMPT_NONE with CONFIG_PREEMPT
Hi, On Fri, Sep 02, 2011 at 10:46:37AM +0200, Florian Fainelli wrote: On Friday 02 September 2011 00:55:54 Luka Perkov wrote: Also in linux-2.6.39.4/kernel/Kconfig.preempt you will see for CONFIG_PREEMPT: Select this if you are building a kernel for a desktop or embedded system with latency requirements in the milliseconds range Please look at the kernel config file above. You will see that CONFIG_PREEMPT should be used on embedded systems... I am not opposed to enabling CONFIG_PREEMPT on a global basis, but I am afraid this might reveal new locking problems that we have not had so far. At least trunk should be the place where to experiment this. I agree. If it causes new problems we can revert. Luka ___ openwrt-devel mailing list openwrt-devel@lists.openwrt.org https://lists.openwrt.org/mailman/listinfo/openwrt-devel
Re: [OpenWrt-Devel] [PATCH] replace CONFIG_PREEMPT_NONE with CONFIG_PREEMPT
On Fri, Sep 2, 2011 at 12:39, Luka Perkov open...@lukaperkov.net wrote: On Fri, Sep 02, 2011 at 10:46:37AM +0200, Florian Fainelli wrote: On Friday 02 September 2011 00:55:54 Luka Perkov wrote: Also in linux-2.6.39.4/kernel/Kconfig.preempt you will see for CONFIG_PREEMPT: Select this if you are building a kernel for a desktop or embedded system with latency requirements in the milliseconds range Please look at the kernel config file above. You will see that CONFIG_PREEMPT should be used on embedded systems... ... with latency requirements in the milliseconds range. Gr{oetje,eeting}s, Geert -- Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- ge...@linux-m68k.org In personal conversations with technical people, I call myself a hacker. But when I'm talking to journalists I just say programmer or something like that. -- Linus Torvalds ___ openwrt-devel mailing list openwrt-devel@lists.openwrt.org https://lists.openwrt.org/mailman/listinfo/openwrt-devel
Re: [OpenWrt-Devel] [PATCH] replace CONFIG_PREEMPT_NONE with CONFIG_PREEMPT
On 02.09.2011 12:39, Luka Perkov wrote: Hi, On Fri, Sep 02, 2011 at 10:46:37AM +0200, Florian Fainelli wrote: On Friday 02 September 2011 00:55:54 Luka Perkov wrote: Also in linux-2.6.39.4/kernel/Kconfig.preempt you will see for CONFIG_PREEMPT: Select this if you are building a kernel for a desktop or embedded system with latency requirements in the milliseconds range Please look at the kernel config file above. You will see that CONFIG_PREEMPT should be used on embedded systems... actually it says system with latency requirements in the milliseconds range ;9 .. but that's no reason not to use it if it might fix issues. ede ___ openwrt-devel mailing list openwrt-devel@lists.openwrt.org https://lists.openwrt.org/mailman/listinfo/openwrt-devel
Re: [OpenWrt-Devel] Image command line hack question
As promised, here is the official realtek bsp with documentation. http://d01.megashares.com/dl/abc0f5c/rtl819x-sdk-v2%5B1%5D.2.tar.gz Jason On Sat, Aug 27, 2011 at 9:51 PM, Florian Fainelli flor...@openwrt.orgwrote: Hello, On Saturday 27 August 2011 15:14:51 Andrew wrote: Hello again, I looked through the patches, and think of rebasing my current work on top of them. Still, one question persists: Is your work on RT856X abandoned? Why wasn't it included in the OpenWRT trunk. At the time it was written, it was not tested on enough hardware to be included. I'll try to forward-port your RT856X work, some things look similar. But since I do not have any RT865X board, it might be buggy. I have some RTL865x boards that I can test on. And what conserns those realtek's imgtools (cvimg and mgbin), will it be OK if I make a script that either downloads the official GPL sources from, say TRENDnet's site and rips the reuired stuff from it (or asks the user to do that manually). (I have a strange feeling it isn't worth the effort asking realtek for license clarification) Since the sourcecode was published, let's just say that we can use the version as-is, but a rewrite by someone else and with proper license would be better. -- Florian ___ openwrt-devel mailing list openwrt-devel@lists.openwrt.org https://lists.openwrt.org/mailman/listinfo/openwrt-devel ___ openwrt-devel mailing list openwrt-devel@lists.openwrt.org https://lists.openwrt.org/mailman/listinfo/openwrt-devel
Re: [OpenWrt-Devel] [PATCH] replace CONFIG_PREEMPT_NONE with CONFIG_PREEMPT
On Friday 02 September 2011 12:55:08 Geert Uytterhoeven wrote: On Fri, Sep 2, 2011 at 12:39, Luka Perkov open...@lukaperkov.net wrote: On Fri, Sep 02, 2011 at 10:46:37AM +0200, Florian Fainelli wrote: On Friday 02 September 2011 00:55:54 Luka Perkov wrote: Also in linux-2.6.39.4/kernel/Kconfig.preempt you will see for CONFIG_PREEMPT: Select this if you are building a kernel for a desktop or embedded system with latency requirements in the milliseconds range Please look at the kernel config file above. You will see that CONFIG_PREEMPT should be used on embedded systems... ... with latency requirements in the milliseconds range. Indeed, that's the part I am concerned with, along with the memory footprint. Any code should be able to work with and without Preemption enabled. Your patch remains a workaround for now. -- Florian ___ openwrt-devel mailing list openwrt-devel@lists.openwrt.org https://lists.openwrt.org/mailman/listinfo/openwrt-devel
Re: [OpenWrt-Devel] [PATCH] replace CONFIG_PREEMPT_NONE with CONFIG_PREEMPT
On Fri, Sep 02, 2011 at 01:32:18PM +0200, Florian Fainelli wrote: On Friday 02 September 2011 12:55:08 Geert Uytterhoeven wrote: On Fri, Sep 2, 2011 at 12:39, Luka Perkov open...@lukaperkov.net wrote: On Fri, Sep 02, 2011 at 10:46:37AM +0200, Florian Fainelli wrote: On Friday 02 September 2011 00:55:54 Luka Perkov wrote: Also in linux-2.6.39.4/kernel/Kconfig.preempt you will see for CONFIG_PREEMPT: Select this if you are building a kernel for a desktop or embedded system with latency requirements in the milliseconds range Please look at the kernel config file above. You will see that CONFIG_PREEMPT should be used on embedded systems... ... with latency requirements in the milliseconds range. Indeed, that's the part I am concerned with, along with the memory footprint. Any code should be able to work with and without Preemption enabled. Your patch remains a workaround for now. Please try to reproduce the issue with nmap on your devices. Run nmap like I wrote on your PC and see what will your router do (you are testing it's ability to handle many nat connections). Try it with and without my patch and post what happened. Luka ___ openwrt-devel mailing list openwrt-devel@lists.openwrt.org https://lists.openwrt.org/mailman/listinfo/openwrt-devel
Re: [OpenWrt-Devel] [PATCH] replace CONFIG_PREEMPT_NONE with CONFIG_PREEMPT
On Friday 02 September 2011 15:10:47 Luka Perkov wrote: On Fri, Sep 02, 2011 at 01:32:18PM +0200, Florian Fainelli wrote: On Friday 02 September 2011 12:55:08 Geert Uytterhoeven wrote: On Fri, Sep 2, 2011 at 12:39, Luka Perkov open...@lukaperkov.net wrote: On Fri, Sep 02, 2011 at 10:46:37AM +0200, Florian Fainelli wrote: On Friday 02 September 2011 00:55:54 Luka Perkov wrote: Also in linux-2.6.39.4/kernel/Kconfig.preempt you will see for CONFIG_PREEMPT: Select this if you are building a kernel for a desktop or embedded system with latency requirements in the milliseconds range Please look at the kernel config file above. You will see that CONFIG_PREEMPT should be used on embedded systems... ... with latency requirements in the milliseconds range. Indeed, that's the part I am concerned with, along with the memory footprint. Any code should be able to work with and without Preemption enabled. Your patch remains a workaround for now. Please try to reproduce the issue with nmap on your devices. Run nmap like I wrote on your PC and see what will your router do (you are testing it's ability to handle many nat connections). I will try to reproduce the error, but you cannot argue that code should be able to work fine with PREEMPT enabled or not, I have seen crappy drivers only working with preemption enabled too, but this is not an excuse. Try it with and without my patch and post what happened. This has a net impact on the resulting kernel size, here is what I get for ar7: - without preempt: 887 KB vmlinux.lzma - with preempt: 902 KB vmlinux.lzma this is quite a big increase. -- Florian ___ openwrt-devel mailing list openwrt-devel@lists.openwrt.org https://lists.openwrt.org/mailman/listinfo/openwrt-devel
Re: [OpenWrt-Devel] [PATCH] replace CONFIG_PREEMPT_NONE with CONFIG_PREEMPT
On Fri, Sep 02, 2011 at 12:39:38PM +0200, Luka Perkov wrote: Please look at the kernel config file above. You will see that CONFIG_PREEMPT should be used on embedded systems... Doesn't CONFIG_PREEMPT will add userspace scheduling overhead which in turn harm kernelspace workloads such as packet routing, firewalling, NAT, etc.? I had done some tests in the past with the scheduling priority of the hostapd daemon (with nice and schedtools) but never spot a gain in bandwith or latency with iperf. - Otto ___ openwrt-devel mailing list openwrt-devel@lists.openwrt.org https://lists.openwrt.org/mailman/listinfo/openwrt-devel