Hi,

I came across a few things in latest 2.6.19-i386-1.6-01 patch:

The usage of __ipipe_pipelock in __ipipe_common_info_proc is broken (raw lock 
used as
Linux lock here), and I do not see any volatile data it could protect anyway. 
So let's
remove it.

--- linux-2.6.19-ipipe.orig/kernel/ipipe/core.c
+++ linux-2.6.19-ipipe/kernel/ipipe/core.c
@@ -1251,8 +1251,6 @@ static int __ipipe_common_info_proc(char
        unsigned irq;
        int len;
 
-       spin_lock(&__ipipe_pipelock);
-
        p += sprintf(p, "       +----- Handling ([A]ccepted, [G]rabbed, 
[W]ired, [D]iscarded)\n");
        p += sprintf(p, "       |+---- Sticky\n");
        p += sprintf(p, "       ||+--- Locked\n");
@@ -1336,8 +1334,6 @@ static int __ipipe_common_info_proc(char
        else
                p += sprintf(p, "priority=%d\n", ipd->priority);
 
-       spin_unlock(&__ipipe_pipelock);
-
        len = p - page;
 
        if (len <= off + count)



The hard IRQ state of the tracer output got inverted during recent 
restructuring. This
fixes it (and indents a few labels correctly).

--- linux-2.6.19-ipipe.orig/kernel/ipipe/tracer.c
+++ linux-2.6.19-ipipe/kernel/ipipe/tracer.c
@@ -279,7 +279,7 @@ __ipipe_trace(enum ipipe_trace_type type
        local_irq_save_hw_notrace(flags);
 
        cpu_id = ipipe_processor_id();
-restart:
+ restart:
        tp = old_tp = &trace_paths[cpu_id][active_path[cpu_id]];
 
        /* here starts a race window with NMIs - catched below */
@@ -322,7 +322,7 @@ restart:
 
        /* store all trace point data */
        point->type = type;
-       point->flags = raw_irqs_disabled_flags(flags) ? 0 : 
IPIPE_TFLG_HWIRQ_OFF;
+       point->flags = raw_irqs_disabled_flags(flags) ? IPIPE_TFLG_HWIRQ_OFF : 
0;
        point->eip = eip;
        point->parent_eip = parent_eip;
        point->v = v;
@@ -367,7 +367,7 @@ restart:
                /* store the path's end (i.e. excluding post-trace) */
                tp->end = WRAP_POINT_NO(pos - post_trace + tp->post_trace);
 
-enforce_end:
+ enforce_end:
                if (tp->flags & IPIPE_TFLG_FREEZING)
                        tp = __ipipe_trace_freeze(cpu_id, tp, pos);
                else
@@ -411,7 +411,7 @@ static unsigned long __ipipe_global_path
        spin_lock_irqsave(&global_path_lock, flags);
 
        cpu_id = ipipe_processor_id();
-restart:
+ restart:
        tp = &trace_paths[cpu_id][active_path[cpu_id]];
 
        /* here is small race window with NMIs - catched below */



And finally, ipipe_init_proc can be moved to the __init section.

--- linux-2.6.19-ipipe.orig/kernel/ipipe/core.c
+++ linux-2.6.19-ipipe/kernel/ipipe/core.c
@@ -1362,7 +1362,7 @@ void __ipipe_remove_domain_proc(struct i
        remove_proc_entry(ipd->name,ipipe_proc_root);
 }
 
-void ipipe_init_proc(void)
+void __init ipipe_init_proc(void)
 {
        ipipe_proc_root = create_proc_entry("ipipe",S_IFDIR, 0);
        
create_proc_read_entry("version",0444,ipipe_proc_root,&__ipipe_version_info_proc,NULL);



There is more cleanup stuff in my pipe, one of it (type-based spinlock 
selection)
could be helpful for follow-up work on other archs. It's almost done, I will 
try to
prepare patch series over the next days.

Jan


Attachment: signature.asc
Description: OpenPGP digital signature

_______________________________________________
Adeos-main mailing list
[email protected]
https://mail.gna.org/listinfo/adeos-main

Reply via email to