add support for smp and non-smp kernel