Re: Linux from scratch
On Wed, Apr 10, 2013 at 8:01 PM, Pietro Paolini wrote: > Did you achieve in compile and run the 1.0 Linux kernel on your system ? I am > really curios ! > Best Regards > Pietro . > > > > I haven't tested that by myself. IIRC I only tried to run the provided disk image inside Qemu, but that's all. -- regards, Mulyadi Santosa Freelance Linux trainer and consultant blog: the-hydra.blogspot.com training: mulyaditraining.blogspot.com ___ Kernelnewbies mailing list Kernelnewbies@kernelnewbies.org http://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies
Re: Forum for asking questions related to block device drivers
Hi, On Thu, Apr 11, 2013 at 2:23 AM, neha naik wrote: > Hi All, >Nobody has replied to my query here. So i am just wondering if there is a > forum for block device driver where i can post my query. > Please tell me if there is any such forum. > > Thanks, > Neha > > -- Forwarded message -- > From: neha naik > Date: Tue, Apr 9, 2013 at 10:18 AM > Subject: Passthrough device driver performance is low on reads compared to > writes > To: kernelnewbies@kernelnewbies.org > > > Hi All, > I have written a passthrough block device driver using 'make_request' > call. This block device driver simply passes any request that comes to it > down to lvm. > > However, the read performance for my passthrough driver is around 65MB/s > (measured through dd) and write performance is around 140MB/s for dd block > size 4096. > The write performance matches with lvm's write performance more or less but, > the read performance on lvm is around 365MB/s. > > I am posting snippets of code which i think are relevant here: > > static int passthrough_make_request( > struct request_queue * queue, struct bio * bio) > { > > passthrough_device_t * passdev = queue->queuedata; > bio->bi_bdev = passdev->bdev_backing; > generic_make_request(bio); > return 0; > } > > For initializing the queue i am using following: > > blk_queue_make_request(passdev->queue, passthrough_make_request); > passdev->queue->queuedata = sbd; > passdev->queue->unplug_fn = NULL; > bdev_backing = passdev->bdev_backing; > blk_queue_stack_limits(passdev->queue, bdev_get_queue(bdev_backing)); > if ((bdev_get_queue(bdev_backing))->merge_bvec_fn) { > blk_queue_merge_bvec(sbd->queue, sbd_merge_bvec_fn); > } > What is the implementation for sbd_merge_bvec_fn? Please debug through it to check requests are merging or not? May be that is the cause of lower performance? > Now, I browsed through dm code in kernel to see if there is some flag or > something which i am not using which is causing this huge performance > penalty. > But, I have not found anything. > > If you have any ideas about what i am possibly doing wrong then please tell > me. > > Thanks in advance. > > Regards, > Neha > -Rajat > > ___ > Kernelnewbies mailing list > Kernelnewbies@kernelnewbies.org > http://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies > ___ Kernelnewbies mailing list Kernelnewbies@kernelnewbies.org http://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies
Forum for asking questions related to block device drivers
Hi All, Nobody has replied to my query here. So i am just wondering if there is a forum for block device driver where i can post my query. Please tell me if there is any such forum. Thanks, Neha -- Forwarded message -- From: neha naik Date: Tue, Apr 9, 2013 at 10:18 AM Subject: Passthrough device driver performance is low on reads compared to writes To: kernelnewbies@kernelnewbies.org Hi All, I have written a passthrough block device driver using 'make_request' call. This block device driver simply passes any request that comes to it down to lvm. However, the read performance for my passthrough driver is around 65MB/s (measured through dd) and write performance is around 140MB/s for dd block size 4096. The write performance matches with lvm's write performance more or less but, the read performance on lvm is around 365MB/s. I am posting snippets of code which i think are relevant here: static int passthrough_make_request( struct request_queue * queue, struct bio * bio) { passthrough_device_t * passdev = queue->queuedata; bio->bi_bdev = passdev->bdev_backing; generic_make_request(bio); return 0; } For initializing the queue i am using following: blk_queue_make_request(passdev->queue, passthrough_make_request); passdev->queue->queuedata = sbd; passdev->queue->unplug_fn = NULL; bdev_backing = passdev->bdev_backing; blk_queue_stack_limits(passdev->queue, bdev_get_queue(bdev_backing)); if ((bdev_get_queue(bdev_backing))->merge_bvec_fn) { blk_queue_merge_bvec(sbd->queue, sbd_merge_bvec_fn); } Now, I browsed through dm code in kernel to see if there is some flag or something which i am not using which is causing this huge performance penalty. But, I have not found anything. If you have any ideas about what i am possibly doing wrong then please tell me. Thanks in advance. Regards, Neha ___ Kernelnewbies mailing list Kernelnewbies@kernelnewbies.org http://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies
Kexec sys call code
Hi, I'm working in a project and there I need use kexec code to do somethings. I read a lot of the kexec-tools code (user-land) and kexec-sys call (k-land) and I'd like to be sure about some arguments there. In kexec we have that kexec_image and into it that nr_segments and the segments itself. I know that kernel image passed by kexec in user land (bzImage) is copy in a buffer and in kexe_load it receives the entry point for this new kernel (bzImage) and the start position where (I'm supposing ) start the kernel image. So , my question is, using that nr_segments or segemtns by itself can I determine the size of the bzImage/image in kexec-sys call? And these guesses about entry point and the address of start kernel image, is it correct? This is the kexec.c file (where we have the sys call and a bunch of another code). http://lxr.free-electrons.com/source/kernel/kexec.c -- -- Leônidas S. Barbosa (Kirotawa) ___ Kernelnewbies mailing list Kernelnewbies@kernelnewbies.org http://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies
Re: the github repo, and bugzilla.kernel.org
On Wed, Apr 10, 2013 at 08:12:46PM +0430, Haix64 wrote: > Hi. > > I was wondering how the "torvalds/linux" github repo, and the Linus created the github repo during the kernel.org security breach of 2011. (see http://www.linuxfoundation.org/news-media/blogs/browse/2011/08/cracking-kernelorg) I think he planned to always push all changes to both repositories. HTH, Jonathan Neuschäfer ___ Kernelnewbies mailing list Kernelnewbies@kernelnewbies.org http://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies
the github repo, and bugzilla.kernel.org
Hi. I was wondering how the "torvalds/linux" github repo, and the bugzilla.kernel.org are involved, if we can simply clone the repo from kernel.org and discuss things in the mailing lists. thank you. ___ Kernelnewbies mailing list Kernelnewbies@kernelnewbies.org http://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies
Re: open_softirq do?
Hi, This is simply a registration of the software interrupt TX method (net_tx_action). The net_tx_action() is invoked in general when transmission was finished: look in : http://lxr.free-electrons.com/source/net/core/dev.c void dev_kfree_skb_irq(struct sk_buff *skb) ... raise_softirq_irqoff(NET_TX_SOFTIRQ); ... whereas the dev_kfree_skb_irq() is called from the driver TX path for freeing the skb. There are other case; look in __netif_reschedule(), and in dev_cpu_callback(), in net/core/dev.c regards, Rami Rosen http://ramirose.wix.com/ramirosen On Wed, Apr 10, 2013 at 3:18 PM, Robert Clove wrote: > Hello All, > > I am clear all that the softirq is a software interrupt : > Whenever a system call is about to return to the user space or h/w interrupt > exit,ant s/w interrupt which are marked pending are run. > > Now in networking code i found > > open_softirq(NET_TX_SOFTIRQ, net_tx_action, NULL); > > What does this do? > > Thanks > > > ___ > Kernelnewbies mailing list > Kernelnewbies@kernelnewbies.org > http://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies > ___ Kernelnewbies mailing list Kernelnewbies@kernelnewbies.org http://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies
open_softirq do?
Hello All, I am clear all that the softirq is a software interrupt : Whenever a system call is about to return to the user space or h/w interrupt exit,ant s/w interrupt which are marked pending are run. Now in networking code i found open_softirq(NET_TX_SOFTIRQ, net_tx_action, NULL); What does this do? Thanks ___ Kernelnewbies mailing list Kernelnewbies@kernelnewbies.org http://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies
Re: At which Network Layer
? 2013?04?10? 16:42, Robert Clove ??: Hello All, There is a field in sk_buff structure name clone which tell whether the sk_buff structure has been cloned or not? I want to know at which layer does this clonning happen at L2,L3 or L4. any layer when it is needed. you can check function: net/core/sk_buff.c: skb_clone(), it is called in drivers, L3(like ip), and L4(like tcp). Thanks ___ Kernelnewbies mailing list Kernelnewbies@kernelnewbies.org http://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies ___ Kernelnewbies mailing list Kernelnewbies@kernelnewbies.org http://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies
At which Network Layer
Hello All, There is a field in sk_buff structure name clone which tell whether the sk_buff structure has been cloned or not? I want to know at which layer does this clonning happen at L2,L3 or L4. Thanks ___ Kernelnewbies mailing list Kernelnewbies@kernelnewbies.org http://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies