Powerdown with apm in newer kernels ##FIXED##
This is for everyone who has tried to compile a newer kernel than the
stock 2.4.18bf-2.4 and lost the ability to shut down your computer at
powerdown. The problem lies in new features in the newer kernels and the
default settings when you compile.
I found the problem. When you first untar the kernel source and run make
xconfig (or whatever means) in the Processor Type and Features section
the option for smp is enabled by default. You should select N here if
you have single processors. The help file provided states that with this
option selected the apm module will be disabled by default. So powerdown
will not work with apm if smp is enabled. Even using the append="apm=on"
or append="apm=powerdown" in lilo won't work.
BUT there's a catch. If you try to fix this with an alredy used
Linux-2.4.xx kernel directory it won't undo the settings. In other
words. If you've already compiled your own kernel, and the smp is
enabled and you just go back to the directory and run make xconfig and
disable the smp option it will still conflict. Specifically when you run
make bzImage. It will give error listings saying it can't find the smp
module in its former location (or something to that affect) So disabling
it isn't just the answer. What you should do is save your kernel config
to a file and copy that config file somewhere safe and then delete the
linux-2.4.xx directory and re-untar it and start from scratch, making
sure to move your kernel config file back into the new linux-2.4.xx
directory, loading it in make xconfig and first thing disabling the smp
option. This is just what I did and I got my powerdown to work finally
with my new custom kernel. Here are my options for my kernel config:
# Processor type and features
#
# CONFIG_M386 is not set
# CONFIG_M486 is not set
# CONFIG_M586 is not set
# CONFIG_M586TSC is not set
# CONFIG_M586MMX is not set
# CONFIG_M686 is not set
# CONFIG_MPENTIUMIII is not set
# CONFIG_MPENTIUM4 is not set
# CONFIG_MK6 is not set
CONFIG_MK7=y
# CONFIG_MK8 is not set
# CONFIG_MELAN is not set
# CONFIG_MCRUSOE is not set
# CONFIG_MWINCHIPC6 is not set
# CONFIG_MWINCHIP2 is not set
# CONFIG_MWINCHIP3D is not set
# CONFIG_MCYRIXIII is not set
# CONFIG_MVIAC3_2 is not set
CONFIG_X86_WP_WORKS_OK=y
CONFIG_X86_INVLPG=y
CONFIG_X86_CMPXCHG=y
CONFIG_X86_XADD=y
CONFIG_X86_BSWAP=y
CONFIG_X86_POPAD_OK=y
# CONFIG_RWSEM_GENERIC_SPINLOCK is not set
CONFIG_RWSEM_XCHGADD_ALGORITHM=y
CONFIG_X86_L1_CACHE_SHIFT=6
CONFIG_X86_HAS_TSC=y
CONFIG_X86_GOOD_APIC=y
CONFIG_X86_USE_3DNOW=y
CONFIG_X86_PGE=y
CONFIG_X86_USE_PPRO_CHECKSUM=y
CONFIG_X86_F00F_WORKS_OK=y
CONFIG_X86_MCE=y
# CONFIG_TOSHIBA is not set
# CONFIG_I8K is not set
# CONFIG_MICROCODE is not set
# CONFIG_X86_MSR is not set
# CONFIG_X86_CPUID is not set
CONFIG_NOHIGHMEM=y
# CONFIG_HIGHMEM4G is not set
# CONFIG_HIGHMEM64G is not set
# CONFIG_HIGHMEM is not set
# CONFIG_MATH_EMULATION is not set
# CONFIG_MTRR is not set
# CONFIG_SMP is not set <---here is the option to disable.
# CONFIG_X86_UP_APIC is not set
# CONFIG_X86_TSC_DISABLE is not set
CONFIG_X86_TSC=y
Reply to: