Re: [patch] Real-Time Preemption, -RT-2.6.12-rc6-V0.7.48-00

From: Michal Schmidt
Date: Thu Jun 09 2005 - 07:52:26 EST


Ingo Molnar wrote:
indeed - new patch uploaded.

The attached patch against V0.7.48-04 replaces some more local_irq_* operation with their raw variants on x86_64. It should be the equivalent of your changes done for i386 in -V0.7.48-02.

Michal diff -Nurp -X linux-RT/Documentation/dontdiff linux-RT/arch/x86_64/kernel/io_apic.c linux-RT.mich/arch/x86_64/kernel/io_apic.c
--- linux-RT/arch/x86_64/kernel/io_apic.c 2005-06-09 14:16:53.563982208 +0200
+++ linux-RT.mich/arch/x86_64/kernel/io_apic.c 2005-06-09 14:22:20.326306784 +0200
@@ -1218,7 +1218,7 @@ static int __init timer_irq_works(void)
{
unsigned long t1 = jiffies;

- local_irq_enable();
+ raw_local_irq_enable();
/* Let ten ticks pass... */
mdelay((10 * 1000) / HZ);

diff -Nurp -X linux-RT/Documentation/dontdiff linux-RT/arch/x86_64/kernel/nmi.c linux-RT.mich/arch/x86_64/kernel/nmi.c
--- linux-RT/arch/x86_64/kernel/nmi.c 2005-06-09 14:16:53.566981752 +0200
+++ linux-RT.mich/arch/x86_64/kernel/nmi.c 2005-06-09 14:25:17.092434248 +0200
@@ -128,7 +128,7 @@ void __init nmi_watchdog_default(void)
static __init void nmi_cpu_busy(void *data)
{
volatile int *endflag = data;
- local_irq_enable();
+ raw_local_irq_enable();
/* Intentionally don't use cpu_relax here. This is
to make sure that the performance counter really ticks,
even if there is a simulator or similar that catches the
@@ -157,7 +157,7 @@ int __init check_nmi_watchdog (void)

for (cpu = 0; cpu < NR_CPUS; cpu++)
counts[cpu] = cpu_pda[cpu].__nmi_count;
- local_irq_enable();
+ raw_local_irq_enable();
mdelay((10*1000)/nmi_hz); // wait 10 ticks

for (cpu = 0; cpu < NR_CPUS; cpu++) {
diff -Nurp -X linux-RT/Documentation/dontdiff linux-RT/arch/x86_64/kernel/reboot.c linux-RT.mich/arch/x86_64/kernel/reboot.c
--- linux-RT/arch/x86_64/kernel/reboot.c 2005-03-02 08:38:25.000000000 +0100
+++ linux-RT.mich/arch/x86_64/kernel/reboot.c 2005-06-09 14:29:06.181607400 +0200
@@ -114,12 +114,12 @@ void machine_restart(char * __unused)
#endif

if (!reboot_force) {
- local_irq_disable();
+ raw_local_irq_disable();
#ifndef CONFIG_SMP
disable_local_APIC();
#endif
disable_IO_APIC();
- local_irq_enable();
+ raw_local_irq_enable();
}

/* Tell the BIOS if we want cold or warm reboot */