Commit 6c231b7b authored by Ravikiran G Thirumalai's avatar Ravikiran G Thirumalai Committed by Linus Torvalds

[PATCH] Additions to .data.read_mostly section

Mark variables which are usually accessed for reads with __readmostly.
Signed-off-by: default avatarAlok N Kataria <alokk@calsoftinc.com>
Signed-off-by: default avatarShai Fultheim <shai@scalex86.org>
Signed-off-by: default avatarRavikiran Thirumalai <kiran@scalex86.org>
Signed-off-by: default avatarAndrew Morton <akpm@osdl.org>
Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
parent 39ed3fde
...@@ -78,7 +78,7 @@ static struct irq_pin_list { ...@@ -78,7 +78,7 @@ static struct irq_pin_list {
int apic, pin, next; int apic, pin, next;
} irq_2_pin[PIN_MAP_SIZE]; } irq_2_pin[PIN_MAP_SIZE];
int vector_irq[NR_VECTORS] = { [0 ... NR_VECTORS - 1] = -1}; int vector_irq[NR_VECTORS] __read_mostly = { [0 ... NR_VECTORS - 1] = -1};
#ifdef CONFIG_PCI_MSI #ifdef CONFIG_PCI_MSI
#define vector_to_irq(vector) \ #define vector_to_irq(vector) \
(platform_legacy_irq(vector) ? vector : vector_irq[vector]) (platform_legacy_irq(vector) ? vector : vector_irq[vector])
...@@ -1119,7 +1119,7 @@ static inline int IO_APIC_irq_trigger(int irq) ...@@ -1119,7 +1119,7 @@ static inline int IO_APIC_irq_trigger(int irq)
} }
/* irq_vectors is indexed by the sum of all RTEs in all I/O APICs. */ /* irq_vectors is indexed by the sum of all RTEs in all I/O APICs. */
u8 irq_vector[NR_IRQ_VECTORS] = { FIRST_DEVICE_VECTOR , 0 }; u8 irq_vector[NR_IRQ_VECTORS] __read_mostly = { FIRST_DEVICE_VECTOR , 0 };
int assign_irq_vector(int irq) int assign_irq_vector(int irq)
{ {
...@@ -1990,7 +1990,7 @@ static void set_ioapic_affinity_vector (unsigned int vector, ...@@ -1990,7 +1990,7 @@ static void set_ioapic_affinity_vector (unsigned int vector,
* edge-triggered handler, without risking IRQ storms and other ugly * edge-triggered handler, without risking IRQ storms and other ugly
* races. * races.
*/ */
static struct hw_interrupt_type ioapic_edge_type = { static struct hw_interrupt_type ioapic_edge_type __read_mostly = {
.typename = "IO-APIC-edge", .typename = "IO-APIC-edge",
.startup = startup_edge_ioapic, .startup = startup_edge_ioapic,
.shutdown = shutdown_edge_ioapic, .shutdown = shutdown_edge_ioapic,
...@@ -2003,7 +2003,7 @@ static struct hw_interrupt_type ioapic_edge_type = { ...@@ -2003,7 +2003,7 @@ static struct hw_interrupt_type ioapic_edge_type = {
#endif #endif
}; };
static struct hw_interrupt_type ioapic_level_type = { static struct hw_interrupt_type ioapic_level_type __read_mostly = {
.typename = "IO-APIC-level", .typename = "IO-APIC-level",
.startup = startup_level_ioapic, .startup = startup_level_ioapic,
.shutdown = shutdown_level_ioapic, .shutdown = shutdown_level_ioapic,
...@@ -2076,7 +2076,7 @@ static void ack_lapic_irq (unsigned int irq) ...@@ -2076,7 +2076,7 @@ static void ack_lapic_irq (unsigned int irq)
static void end_lapic_irq (unsigned int i) { /* nothing */ } static void end_lapic_irq (unsigned int i) { /* nothing */ }
static struct hw_interrupt_type lapic_irq_type = { static struct hw_interrupt_type lapic_irq_type __read_mostly = {
.typename = "local-APIC-edge", .typename = "local-APIC-edge",
.startup = NULL, /* startup_irq() not used for IRQ0 */ .startup = NULL, /* startup_irq() not used for IRQ0 */
.shutdown = NULL, /* shutdown_irq() not used for IRQ0 */ .shutdown = NULL, /* shutdown_irq() not used for IRQ0 */
......
...@@ -19,7 +19,7 @@ ...@@ -19,7 +19,7 @@
#include <asm/hpet.h> #include <asm/hpet.h>
static unsigned long hpet_usec_quotient __read_mostly; /* convert hpet clks to usec */ static unsigned long hpet_usec_quotient __read_mostly; /* convert hpet clks to usec */
static unsigned long tsc_hpet_quotient; /* convert tsc to hpet clks */ static unsigned long tsc_hpet_quotient __read_mostly; /* convert tsc to hpet clks */
static unsigned long hpet_last; /* hpet counter value at last tick*/ static unsigned long hpet_last; /* hpet counter value at last tick*/
static unsigned long last_tsc_low; /* lsb 32 bits of Time Stamp Counter */ static unsigned long last_tsc_low; /* lsb 32 bits of Time Stamp Counter */
static unsigned long last_tsc_high; /* msb 32 bits of Time Stamp Counter */ static unsigned long last_tsc_high; /* msb 32 bits of Time Stamp Counter */
......
...@@ -37,7 +37,7 @@ ...@@ -37,7 +37,7 @@
#include <asm/mmzone.h> #include <asm/mmzone.h>
#include <bios_ebda.h> #include <bios_ebda.h>
struct pglist_data *node_data[MAX_NUMNODES]; struct pglist_data *node_data[MAX_NUMNODES] __read_mostly;
EXPORT_SYMBOL(node_data); EXPORT_SYMBOL(node_data);
bootmem_data_t node0_bdata; bootmem_data_t node0_bdata;
...@@ -49,8 +49,8 @@ bootmem_data_t node0_bdata; ...@@ -49,8 +49,8 @@ bootmem_data_t node0_bdata;
* 2) node_start_pfn - the starting page frame number for a node * 2) node_start_pfn - the starting page frame number for a node
* 3) node_end_pfn - the ending page fram number for a node * 3) node_end_pfn - the ending page fram number for a node
*/ */
unsigned long node_start_pfn[MAX_NUMNODES]; unsigned long node_start_pfn[MAX_NUMNODES] __read_mostly;
unsigned long node_end_pfn[MAX_NUMNODES]; unsigned long node_end_pfn[MAX_NUMNODES] __read_mostly;
#ifdef CONFIG_DISCONTIGMEM #ifdef CONFIG_DISCONTIGMEM
...@@ -66,7 +66,7 @@ unsigned long node_end_pfn[MAX_NUMNODES]; ...@@ -66,7 +66,7 @@ unsigned long node_end_pfn[MAX_NUMNODES];
* physnode_map[4-7] = 1; * physnode_map[4-7] = 1;
* physnode_map[8- ] = -1; * physnode_map[8- ] = -1;
*/ */
s8 physnode_map[MAX_ELEMENTS] = { [0 ... (MAX_ELEMENTS - 1)] = -1}; s8 physnode_map[MAX_ELEMENTS] __read_mostly = { [0 ... (MAX_ELEMENTS - 1)] = -1};
EXPORT_SYMBOL(physnode_map); EXPORT_SYMBOL(physnode_map);
void memory_present(int nid, unsigned long start, unsigned long end) void memory_present(int nid, unsigned long start, unsigned long end)
......
...@@ -393,7 +393,7 @@ void zap_low_mappings (void) ...@@ -393,7 +393,7 @@ void zap_low_mappings (void)
} }
static int disable_nx __initdata = 0; static int disable_nx __initdata = 0;
u64 __supported_pte_mask = ~_PAGE_NX; u64 __supported_pte_mask __read_mostly = ~_PAGE_NX;
/* /*
* noexec = on|off * noexec = on|off
......
...@@ -25,7 +25,7 @@ ...@@ -25,7 +25,7 @@
#endif #endif
/* which logical CPU number maps to which CPU (physical APIC ID) */ /* which logical CPU number maps to which CPU (physical APIC ID) */
u8 x86_cpu_to_apicid[NR_CPUS] = { [0 ... NR_CPUS-1] = BAD_APICID }; u8 x86_cpu_to_apicid[NR_CPUS] __read_mostly = { [0 ... NR_CPUS-1] = BAD_APICID };
EXPORT_SYMBOL(x86_cpu_to_apicid); EXPORT_SYMBOL(x86_cpu_to_apicid);
u8 x86_cpu_to_log_apicid[NR_CPUS] = { [0 ... NR_CPUS-1] = BAD_APICID }; u8 x86_cpu_to_log_apicid[NR_CPUS] = { [0 ... NR_CPUS-1] = BAD_APICID };
......
...@@ -70,7 +70,7 @@ static struct irq_pin_list { ...@@ -70,7 +70,7 @@ static struct irq_pin_list {
short apic, pin, next; short apic, pin, next;
} irq_2_pin[PIN_MAP_SIZE]; } irq_2_pin[PIN_MAP_SIZE];
int vector_irq[NR_VECTORS] = { [0 ... NR_VECTORS - 1] = -1}; int vector_irq[NR_VECTORS] __read_mostly = { [0 ... NR_VECTORS - 1] = -1};
#ifdef CONFIG_PCI_MSI #ifdef CONFIG_PCI_MSI
#define vector_to_irq(vector) \ #define vector_to_irq(vector) \
(platform_legacy_irq(vector) ? vector : vector_irq[vector]) (platform_legacy_irq(vector) ? vector : vector_irq[vector])
...@@ -683,7 +683,7 @@ static inline int IO_APIC_irq_trigger(int irq) ...@@ -683,7 +683,7 @@ static inline int IO_APIC_irq_trigger(int irq)
} }
/* irq_vectors is indexed by the sum of all RTEs in all I/O APICs. */ /* irq_vectors is indexed by the sum of all RTEs in all I/O APICs. */
u8 irq_vector[NR_IRQ_VECTORS] = { FIRST_DEVICE_VECTOR , 0 }; u8 irq_vector[NR_IRQ_VECTORS] __read_mostly = { FIRST_DEVICE_VECTOR , 0 };
int assign_irq_vector(int irq) int assign_irq_vector(int irq)
{ {
...@@ -1443,7 +1443,7 @@ static void set_ioapic_affinity_vector (unsigned int vector, ...@@ -1443,7 +1443,7 @@ static void set_ioapic_affinity_vector (unsigned int vector,
* races. * races.
*/ */
static struct hw_interrupt_type ioapic_edge_type = { static struct hw_interrupt_type ioapic_edge_type __read_mostly = {
.typename = "IO-APIC-edge", .typename = "IO-APIC-edge",
.startup = startup_edge_ioapic, .startup = startup_edge_ioapic,
.shutdown = shutdown_edge_ioapic, .shutdown = shutdown_edge_ioapic,
...@@ -1456,7 +1456,7 @@ static struct hw_interrupt_type ioapic_edge_type = { ...@@ -1456,7 +1456,7 @@ static struct hw_interrupt_type ioapic_edge_type = {
#endif #endif
}; };
static struct hw_interrupt_type ioapic_level_type = { static struct hw_interrupt_type ioapic_level_type __read_mostly = {
.typename = "IO-APIC-level", .typename = "IO-APIC-level",
.startup = startup_level_ioapic, .startup = startup_level_ioapic,
.shutdown = shutdown_level_ioapic, .shutdown = shutdown_level_ioapic,
...@@ -1529,7 +1529,7 @@ static void ack_lapic_irq (unsigned int irq) ...@@ -1529,7 +1529,7 @@ static void ack_lapic_irq (unsigned int irq)
static void end_lapic_irq (unsigned int i) { /* nothing */ } static void end_lapic_irq (unsigned int i) { /* nothing */ }
static struct hw_interrupt_type lapic_irq_type = { static struct hw_interrupt_type lapic_irq_type __read_mostly = {
.typename = "local-APIC-edge", .typename = "local-APIC-edge",
.startup = NULL, /* startup_irq() not used for IRQ0 */ .startup = NULL, /* startup_irq() not used for IRQ0 */
.shutdown = NULL, /* shutdown_irq() not used for IRQ0 */ .shutdown = NULL, /* shutdown_irq() not used for IRQ0 */
......
...@@ -65,7 +65,7 @@ ...@@ -65,7 +65,7 @@
* Machine setup.. * Machine setup..
*/ */
struct cpuinfo_x86 boot_cpu_data; struct cpuinfo_x86 boot_cpu_data __read_mostly;
unsigned long mmu_cr4_features; unsigned long mmu_cr4_features;
......
...@@ -36,7 +36,7 @@ struct desc_ptr idt_descr = { 256 * 16, (unsigned long) idt_table }; ...@@ -36,7 +36,7 @@ struct desc_ptr idt_descr = { 256 * 16, (unsigned long) idt_table };
char boot_cpu_stack[IRQSTACKSIZE] __attribute__((section(".bss.page_aligned"))); char boot_cpu_stack[IRQSTACKSIZE] __attribute__((section(".bss.page_aligned")));
unsigned long __supported_pte_mask = ~0UL; unsigned long __supported_pte_mask __read_mostly = ~0UL;
static int do_not_nx __initdata = 0; static int do_not_nx __initdata = 0;
/* noexec=on|off /* noexec=on|off
......
...@@ -62,13 +62,13 @@ ...@@ -62,13 +62,13 @@
/* Number of siblings per CPU package */ /* Number of siblings per CPU package */
int smp_num_siblings = 1; int smp_num_siblings = 1;
/* Package ID of each logical CPU */ /* Package ID of each logical CPU */
u8 phys_proc_id[NR_CPUS] = { [0 ... NR_CPUS-1] = BAD_APICID }; u8 phys_proc_id[NR_CPUS] __read_mostly = { [0 ... NR_CPUS-1] = BAD_APICID };
u8 cpu_core_id[NR_CPUS] = { [0 ... NR_CPUS-1] = BAD_APICID }; u8 cpu_core_id[NR_CPUS] __read_mostly = { [0 ... NR_CPUS-1] = BAD_APICID };
EXPORT_SYMBOL(phys_proc_id); EXPORT_SYMBOL(phys_proc_id);
EXPORT_SYMBOL(cpu_core_id); EXPORT_SYMBOL(cpu_core_id);
/* Bitmask of currently online CPUs */ /* Bitmask of currently online CPUs */
cpumask_t cpu_online_map; cpumask_t cpu_online_map __read_mostly;
EXPORT_SYMBOL(cpu_online_map); EXPORT_SYMBOL(cpu_online_map);
...@@ -88,8 +88,8 @@ struct cpuinfo_x86 cpu_data[NR_CPUS] __cacheline_aligned; ...@@ -88,8 +88,8 @@ struct cpuinfo_x86 cpu_data[NR_CPUS] __cacheline_aligned;
/* Set when the idlers are all forked */ /* Set when the idlers are all forked */
int smp_threads_ready; int smp_threads_ready;
cpumask_t cpu_sibling_map[NR_CPUS] __cacheline_aligned; cpumask_t cpu_sibling_map[NR_CPUS] __read_mostly;
cpumask_t cpu_core_map[NR_CPUS] __cacheline_aligned; cpumask_t cpu_core_map[NR_CPUS] __read_mostly;
EXPORT_SYMBOL(cpu_core_map); EXPORT_SYMBOL(cpu_core_map);
/* /*
......
...@@ -22,14 +22,14 @@ ...@@ -22,14 +22,14 @@
#define Dprintk(x...) #define Dprintk(x...)
#endif #endif
struct pglist_data *node_data[MAX_NUMNODES]; struct pglist_data *node_data[MAX_NUMNODES] __read_mostly;
bootmem_data_t plat_node_bdata[MAX_NUMNODES]; bootmem_data_t plat_node_bdata[MAX_NUMNODES];
int memnode_shift; int memnode_shift;
u8 memnodemap[NODEMAPSIZE]; u8 memnodemap[NODEMAPSIZE];
unsigned char cpu_to_node[NR_CPUS] = { [0 ... NR_CPUS-1] = NUMA_NO_NODE }; unsigned char cpu_to_node[NR_CPUS] __read_mostly = { [0 ... NR_CPUS-1] = NUMA_NO_NODE };
cpumask_t node_to_cpumask[MAX_NUMNODES]; cpumask_t node_to_cpumask[MAX_NUMNODES] __read_mostly;
int numa_off __initdata; int numa_off __initdata;
......
...@@ -40,7 +40,7 @@ static inline int sysfs_init(void) ...@@ -40,7 +40,7 @@ static inline int sysfs_init(void)
__cacheline_aligned_in_smp DEFINE_SPINLOCK(vfsmount_lock); __cacheline_aligned_in_smp DEFINE_SPINLOCK(vfsmount_lock);
static struct list_head *mount_hashtable; static struct list_head *mount_hashtable;
static int hash_mask, hash_bits; static int hash_mask __read_mostly, hash_bits __read_mostly;
static kmem_cache_t *mnt_cache; static kmem_cache_t *mnt_cache;
static inline unsigned long hash(struct vfsmount *mnt, struct dentry *dentry) static inline unsigned long hash(struct vfsmount *mnt, struct dentry *dentry)
......
...@@ -47,8 +47,8 @@ EXPORT_SYMBOL(node_online_map); ...@@ -47,8 +47,8 @@ EXPORT_SYMBOL(node_online_map);
nodemask_t node_possible_map __read_mostly = NODE_MASK_ALL; nodemask_t node_possible_map __read_mostly = NODE_MASK_ALL;
EXPORT_SYMBOL(node_possible_map); EXPORT_SYMBOL(node_possible_map);
struct pglist_data *pgdat_list __read_mostly; struct pglist_data *pgdat_list __read_mostly;
unsigned long totalram_pages; unsigned long totalram_pages __read_mostly;
unsigned long totalhigh_pages; unsigned long totalhigh_pages __read_mostly;
long nr_swap_pages; long nr_swap_pages;
/* /*
......
...@@ -180,7 +180,7 @@ static struct inode_operations shmem_inode_operations; ...@@ -180,7 +180,7 @@ static struct inode_operations shmem_inode_operations;
static struct inode_operations shmem_dir_inode_operations; static struct inode_operations shmem_dir_inode_operations;
static struct vm_operations_struct shmem_vm_ops; static struct vm_operations_struct shmem_vm_ops;
static struct backing_dev_info shmem_backing_dev_info = { static struct backing_dev_info shmem_backing_dev_info __read_mostly = {
.ra_pages = 0, /* No readahead */ .ra_pages = 0, /* No readahead */
.capabilities = BDI_CAP_NO_ACCT_DIRTY | BDI_CAP_NO_WRITEBACK, .capabilities = BDI_CAP_NO_ACCT_DIRTY | BDI_CAP_NO_WRITEBACK,
.unplug_io_fn = default_unplug_io_fn, .unplug_io_fn = default_unplug_io_fn,
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment