Re: 2.4.20-pre1-ac1: apm.c non SMP compile error

Tomas Szepe (szepe@pinerecords.com)
Wed, 7 Aug 2002 17:15:08 +0200


> apm_save_cpus() is defined without parameters for non-SMP, breaks
> compile.
>
> --
> Eyal Lebedinsky (eyal@eyal.emu.id.au) <http://samba.org/eyal/>
> --- linux/arch/i386/kernel/apm.c.orig Wed Aug 7 22:59:06 2002
> +++ linux/arch/i386/kernel/apm.c Wed Aug 7 22:56:55 2002
> @@ -524,7 +524,7 @@
> * No CPU lockdown needed on a uniprocessor
> */
>
> -#define apm_save_cpus 0
> +#define apm_save_cpus() 0
> #define apm_restore_cpus(x)
>
> #endif

or alternatively the following, which for the cost of a couple ifdefs
also removes the unused variable 'cpus' on UP:

diff -urN linux-2.4.20-pre1-ac1/arch/i386/kernel/apm.c linux-2.4.20-pre1-ac1.n/arch/i386/kernel/apm.c
--- linux-2.4.20-pre1-ac1/arch/i386/kernel/apm.c 2002-08-07 17:11:09.000000000 +0200
+++ linux-2.4.20-pre1-ac1.n/arch/i386/kernel/apm.c 2002-08-07 17:08:10.000000000 +0200
@@ -496,9 +496,9 @@
}

/*
- * Lock APM functionality to physical CPU 0
+ * Lock APM functionality to physical CPU 0 in SMP kernels
*/
-
+
#ifdef CONFIG_SMP

static unsigned long apm_save_cpus(void)
@@ -518,15 +518,6 @@
set_cpus_allowed(current, mask);
}

-#else
-
-/*
- * No CPU lockdown needed on a uniprocessor
- */
-
-#define apm_save_cpus 0
-#define apm_restore_cpus(x)
-
#endif

/*
@@ -602,8 +593,10 @@
{
APM_DECL_SEGS
unsigned long flags;
+#ifdef CONFIG_SMP
unsigned long cpus = apm_save_cpus();
-
+#endif
+
__save_flags(flags);
APM_DO_CLI;
APM_DO_SAVE_SEGS;
@@ -625,9 +618,11 @@
: "memory", "cc");
APM_DO_RESTORE_SEGS;
__restore_flags(flags);
-
+
+#ifdef CONFIG_SMP
apm_restore_cpus(cpus);
-
+#endif
+
return *eax & 0xff;
}

@@ -651,8 +646,10 @@
APM_DECL_SEGS
unsigned long flags;

+#ifdef CONFIG_SMP
unsigned long cpus = apm_save_cpus();
-
+#endif
+
__save_flags(flags);
APM_DO_CLI;
APM_DO_SAVE_SEGS;
@@ -679,8 +676,10 @@
APM_DO_RESTORE_SEGS;
__restore_flags(flags);

+#ifdef CONFIG_SMP
apm_restore_cpus(cpus);
-
+#endif
+
return error;
}

@@ -935,7 +934,9 @@
*/
if (apm_info.realmode_power_off)
{
+#ifdef CONFIG_SMP
apm_save_cpus();
+#endif
machine_real_restart(po_bios_call, sizeof(po_bios_call));
/* Never returns */
}
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/