OpenCores
URL https://opencores.org/ocsvn/or1k_soc_on_altera_embedded_dev_kit/or1k_soc_on_altera_embedded_dev_kit/trunk

Subversion Repositories or1k_soc_on_altera_embedded_dev_kit

[/] [or1k_soc_on_altera_embedded_dev_kit/] [trunk/] [linux-2.6/] [linux-2.6.24/] [arch/] [x86/] [kernel/] [numaq_32.c] - Blame information for rev 3

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 3 xianfeng
/*
2
 * Written by: Patricia Gaughen, IBM Corporation
3
 *
4
 * Copyright (C) 2002, IBM Corp.
5
 *
6
 * All rights reserved.
7
 *
8
 * This program is free software; you can redistribute it and/or modify
9
 * it under the terms of the GNU General Public License as published by
10
 * the Free Software Foundation; either version 2 of the License, or
11
 * (at your option) any later version.
12
 *
13
 * This program is distributed in the hope that it will be useful, but
14
 * WITHOUT ANY WARRANTY; without even the implied warranty of
15
 * MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE, GOOD TITLE or
16
 * NON INFRINGEMENT.  See the GNU General Public License for more
17
 * details.
18
 *
19
 * You should have received a copy of the GNU General Public License
20
 * along with this program; if not, write to the Free Software
21
 * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
22
 *
23
 * Send feedback to <gone@us.ibm.com>
24
 */
25
 
26
#include <linux/mm.h>
27
#include <linux/bootmem.h>
28
#include <linux/mmzone.h>
29
#include <linux/module.h>
30
#include <linux/nodemask.h>
31
#include <asm/numaq.h>
32
#include <asm/topology.h>
33
#include <asm/processor.h>
34
 
35
#define MB_TO_PAGES(addr) ((addr) << (20 - PAGE_SHIFT))
36
 
37
/*
38
 * Function: smp_dump_qct()
39
 *
40
 * Description: gets memory layout from the quad config table.  This
41
 * function also updates node_online_map with the nodes (quads) present.
42
 */
43
static void __init smp_dump_qct(void)
44
{
45
        int node;
46
        struct eachquadmem *eq;
47
        struct sys_cfg_data *scd =
48
                (struct sys_cfg_data *)__va(SYS_CFG_DATA_PRIV_ADDR);
49
 
50
        nodes_clear(node_online_map);
51
        for_each_node(node) {
52
                if (scd->quads_present31_0 & (1 << node)) {
53
                        node_set_online(node);
54
                        eq = &scd->eq[node];
55
                        /* Convert to pages */
56
                        node_start_pfn[node] = MB_TO_PAGES(
57
                                eq->hi_shrd_mem_start - eq->priv_mem_size);
58
                        node_end_pfn[node] = MB_TO_PAGES(
59
                                eq->hi_shrd_mem_start + eq->hi_shrd_mem_size);
60
 
61
                        memory_present(node,
62
                                node_start_pfn[node], node_end_pfn[node]);
63
                        node_remap_size[node] = node_memmap_size_bytes(node,
64
                                                        node_start_pfn[node],
65
                                                        node_end_pfn[node]);
66
                }
67
        }
68
}
69
 
70
/*
71
 * Unlike Summit, we don't really care to let the NUMA-Q
72
 * fall back to flat mode.  Don't compile for NUMA-Q
73
 * unless you really need it!
74
 */
75
int __init get_memcfg_numaq(void)
76
{
77
        smp_dump_qct();
78
        return 1;
79
}
80
 
81
static int __init numaq_tsc_disable(void)
82
{
83
        if (num_online_nodes() > 1) {
84
                printk(KERN_DEBUG "NUMAQ: disabling TSC\n");
85
                tsc_disable = 1;
86
        }
87
        return 0;
88
}
89
arch_initcall(numaq_tsc_disable);

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.