Skip to contentSkip to conversation

A comment on the 2.5.29 patch

Linux-ia64 David Mosberger 2 participants 2 messages Aug 8, 2002

lore
Share & tools
lore
#0 lore raw
Quoted 1 line
Quoted 1 line
Quoted 1 line
Quoted 1 line
Quoted 1 line · Peter Chubb

Peter> Hi David,

Peter> The change to drivers/char/mem.c doesn't look right --- it forces a Peter> successful system call even when there's been an error.

  Peter> --- a/drivers/char/mem.c	Thu Aug  1 01:08:13 2002
  Peter> +++ b/drivers/char/mem.c	Thu Aug  1 01:08:13 2002
  Peter> @@ -518,6 +518,7 @@
  Peter> default:
  Peter> ret = -EINVAL;
  Peter> }
  Peter> +	force_successful_syscall_return();
  Peter> unlock_kernel();
  Peter> return ret;
  Peter> }

Peter> Surely that should only be when ret != -EINVAL ??? You could move it Peter> inside the switch, although that's ugly.

Yes, that's a bug, probably due to a bad merge. Please understand that the 2.5.29 is works-in-progress; there really is a large number of outstanding things, so don't expect everything to be all-right.

Peter> I can't see the point of moving the declaration of extern irq_desc_t Peter> irq_desc [NR_IRQS]; from include/linux/irq.h into asm-i386/hw_irq.,

The idea is simple: remove irq_desc[] and replace it with an irq_desc() macro, so that platforms have the option to implement the table any way they see fit (e.g., distributed across NUMA nodes).

Peter> And my remaining comment is that I'm not sure why the changes to the Peter> softirq() names were made. A rose by any name would smell as sweet...

Specifics please? There are no just-for-fun renames, but again, it could be a bad merge or something along those lines.

	--david
#1 lore raw
Quoted 3 lines
Quoted 3 lines
Quoted 3 lines
Quoted 3 lines
Quoted 3 lines

"David" = David Mosberger <[email protected]> writes:

On Thu, 8 Aug 2002 13:38:03 +1000, Peter Chubb <[email protected]> said:

Peter> Hi David,

Peter> I can't see the point of moving the declaration of extern Peter> irq_desc_t irq_desc [NR_IRQS]; from include/linux/irq.h into Peter> asm-i386/hw_irq.,

David> The idea is simple: remove irq_desc[] and replace it with an David> irq_desc() macro, so that platforms have the option to David> implement the table any way they see fit (e.g., distributed David> across NUMA nodes).

I see... but then the change is more pervasive than here

Peter> And my remaining comment is that I'm not sure why the changes Peter> to the softirq() names were made. A rose by any name would Peter> smell as sweet...

David> Specifics please? There are no just-for-fun renames, but David> again, it could be a bad merge or something along those lines.

sorry, I meant changes in softirq.c to yhe
softirq_pending(cpu)->local_softirq_pending().

include/linux/irq_cpustat.h +7 -1
diff -Nru a/include/linux/irq_cpustat.h b/include/linux/irq_cpustat.h
@@ -33,5 +33,12 @@
 #define ksoftirqd_task(cpu)	__IRQ_STAT((cpu), __ksoftirqd_task)
   /* arch dependent irq_stat fields */
 #define nmi_count(cpu)		__IRQ_STAT((cpu), __nmi_count)		/* i386, ia64 */
+
+#define local_hardirq_trylock()	hardirq_trylock(smp_processor_id())
+#define local_hardirq_endlock()	hardirq_trylock(smp_processor_id())
+#define local_irq_enter(irq)	irq_enter(smp_processor_id(), (irq))
+#define local_irq_exit(irq)	irq_exit(smp_processor_id(), (irq))
+#define local_softirq_pending()	softirq_pending(smp_processor_id())
+#define local_ksoftirqd_task()	ksoftirqd_task(smp_processor_id())
 
----

* local_hardirq_{end,try}lock() are not used anywhere (yet) although they used to be.
* local_irq_{enter,exit}() is not used anywhere I could find.
* In kernel/softirq.c smp_processor_id() is already assigned to a local variable

@@ -69,7 +72,7 @@
local_irq_save(flags);
cpu = smp_processor_id();

- pending = softirq_pending(cpu);
+ pending = local_softirq_pending();

if (pending) {
struct softirq_action *h;

etc.

There's another definition of local_softirq_pending() at

./include/asm-ia64/hardirq.h:24:#define local_softirq_pending() \
         (local_cpu_data->softirq_pending)

likewise for local_ksoftirqd_task().

There's a chance that the vesion in hardirq.h could be more efficient, but it won't necessarily work on other architectures.

Anyway, I *know* that the patch is WIP -- that's why I thought it was worth giving some feedback early (before the kernel has moved on another 10 versions, and the patch is no longer relevant)

--
Dr Peter Chubb [email protected]
You are lost in a maze of BitKeeper repositories, all almost the same.