linux/arch/i386/kernel/topology.c
<<
>>
Prefs
   1/*
   2 * arch/i386/kernel/topology.c - Populate sysfs with topology information
   3 *
   4 * Written by: Matthew Dobson, IBM Corporation
   5 * Original Code: Paul Dorwin, IBM Corporation, Patrick Mochel, OSDL
   6 *
   7 * Copyright (C) 2002, IBM Corp.
   8 *
   9 * All rights reserved.
  10 *
  11 * This program is free software; you can redistribute it and/or modify
  12 * it under the terms of the GNU General Public License as published by
  13 * the Free Software Foundation; either version 2 of the License, or
  14 * (at your option) any later version.
  15 *
  16 * This program is distributed in the hope that it will be useful, but
  17 * WITHOUT ANY WARRANTY; without even the implied warranty of
  18 * MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE, GOOD TITLE or
  19 * NON INFRINGEMENT.  See the GNU General Public License for more
  20 * details.
  21 *
  22 * You should have received a copy of the GNU General Public License
  23 * along with this program; if not, write to the Free Software
  24 * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
  25 *
  26 * Send feedback to <colpatch@us.ibm.com>
  27 */
  28#include <linux/init.h>
  29#include <linux/smp.h>
  30#include <linux/nodemask.h>
  31#include <linux/mmzone.h>
  32#include <asm/cpu.h>
  33
  34static struct i386_cpu cpu_devices[NR_CPUS];
  35
  36int arch_register_cpu(int num)
  37{
  38        /*
  39         * CPU0 cannot be offlined due to several
  40         * restrictions and assumptions in kernel. This basically
  41         * doesnt add a control file, one cannot attempt to offline
  42         * BSP.
  43         *
  44         * Also certain PCI quirks require not to enable hotplug control
  45         * for all CPU's.
  46         */
  47        if (num && enable_cpu_hotplug)
  48                cpu_devices[num].cpu.hotpluggable = 1;
  49
  50        return register_cpu(&cpu_devices[num].cpu, num);
  51}
  52
  53#ifdef CONFIG_HOTPLUG_CPU
  54int enable_cpu_hotplug = 1;
  55
  56void arch_unregister_cpu(int num) {
  57        return unregister_cpu(&cpu_devices[num].cpu);
  58}
  59EXPORT_SYMBOL(arch_register_cpu);
  60EXPORT_SYMBOL(arch_unregister_cpu);
  61#endif /*CONFIG_HOTPLUG_CPU*/
  62
  63static int __init topology_init(void)
  64{
  65        int i;
  66
  67#ifdef CONFIG_NUMA
  68        for_each_online_node(i)
  69                register_one_node(i);
  70#endif /* CONFIG_NUMA */
  71
  72        for_each_present_cpu(i)
  73                arch_register_cpu(i);
  74        return 0;
  75}
  76
  77subsys_initcall(topology_init);
  78
lxr.linux.no kindly hosted by Redpill Linpro AS, provider of Linux consulting and operations services since 1995.