debuggers.hg

view xen/include/asm-x86/mpspec.h @ 22855:1d1eec7e1fb4

xl: Perform minimal validation of virtual disk file while parsing config file

This patch performs some very basic validation on the virtual disk
file passed through the config file. This validation ensures that we
don't go too far with the initialization like spawn qemu and more
while there could be some potentially fundamental issues.

[ Patch fixed up to work with PHYSTYPE_EMPTY 22808:6ec61438713a -iwj ]

Signed-off-by: Kamala Narasimhan <kamala.narasimhan@citrix.com>
Acked-by: Ian Jackson <ian.jackson@eu.citrix.com>
Signed-off-by: Ian Jackson <ian.jackson@eu.citrix.com>
Committed-by: Ian Jackson <ian.jackson@eu.citrix.com>
author Kamala Narasimhan <kamala.narasimhan@gmail.com>
date Tue Jan 25 18:09:49 2011 +0000 (2011-01-25)
parents 16673224c1cc
children
line source
1 #ifndef __ASM_MPSPEC_H
2 #define __ASM_MPSPEC_H
4 #include <xen/cpumask.h>
5 #include <asm/mpspec_def.h>
6 #include <mach_mpspec.h>
8 extern int mp_bus_id_to_type [MAX_MP_BUSSES];
9 extern int mp_bus_id_to_node [MAX_MP_BUSSES];
10 extern int mp_bus_id_to_local [MAX_MP_BUSSES];
11 extern int mp_bus_id_to_pci_bus [MAX_MP_BUSSES];
13 extern unsigned int def_to_bigsmp;
14 extern unsigned int boot_cpu_physical_apicid;
15 extern int smp_found_config;
16 extern void find_smp_config (void);
17 extern void get_smp_config (void);
18 extern int apic_version [MAX_APICS];
19 extern int mp_irq_entries;
20 extern struct mpc_config_intsrc mp_irqs [MAX_IRQ_SOURCES];
21 extern int mpc_default_type;
22 extern unsigned long mp_lapic_addr;
23 extern int pic_mode;
25 #ifdef CONFIG_ACPI
26 extern int mp_register_lapic (u32 id, u8 enabled);
27 extern void mp_unregister_lapic(uint32_t apic_id, uint32_t cpu);
28 extern void mp_register_lapic_address (u64 address);
29 extern void mp_register_ioapic (u8 id, u32 address, u32 gsi_base);
30 extern void mp_override_legacy_irq (u8 bus_irq, u8 polarity, u8 trigger, u32 gsi);
31 extern void mp_config_acpi_legacy_irqs (void);
32 extern int mp_register_gsi (u32 gsi, int edge_level, int active_high_low);
33 #endif /* CONFIG_ACPI */
35 #define PHYSID_ARRAY_SIZE BITS_TO_LONGS(MAX_APICS)
37 struct physid_mask
38 {
39 unsigned long mask[PHYSID_ARRAY_SIZE];
40 };
42 typedef struct physid_mask physid_mask_t;
44 #define physid_set(physid, map) set_bit(physid, (map).mask)
45 #define physid_clear(physid, map) clear_bit(physid, (map).mask)
46 #define physid_isset(physid, map) test_bit(physid, (map).mask)
47 #define physid_test_and_set(physid, map) test_and_set_bit(physid, (map).mask)
49 #define physids_and(dst, src1, src2) bitmap_and((dst).mask, (src1).mask, (src2).mask, MAX_APICS)
50 #define physids_or(dst, src1, src2) bitmap_or((dst).mask, (src1).mask, (src2).mask, MAX_APICS)
51 #define physids_clear(map) bitmap_zero((map).mask, MAX_APICS)
52 #define physids_complement(dst, src) bitmap_complement((dst).mask,(src).mask, MAX_APICS)
53 #define physids_empty(map) bitmap_empty((map).mask, MAX_APICS)
54 #define physids_equal(map1, map2) bitmap_equal((map1).mask, (map2).mask, MAX_APICS)
55 #define physids_weight(map) bitmap_weight((map).mask, MAX_APICS)
56 #define physids_shift_right(d, s, n) bitmap_shift_right((d).mask, (s).mask, n, MAX_APICS)
57 #define physids_shift_left(d, s, n) bitmap_shift_left((d).mask, (s).mask, n, MAX_APICS)
58 #define physids_coerce(map) ((map).mask[0])
60 #define physids_promote(physids) \
61 ({ \
62 physid_mask_t __physid_mask = PHYSID_MASK_NONE; \
63 __physid_mask.mask[0] = physids; \
64 __physid_mask; \
65 })
67 #define physid_mask_of_physid(physid) \
68 ({ \
69 physid_mask_t __physid_mask = PHYSID_MASK_NONE; \
70 physid_set(physid, __physid_mask); \
71 __physid_mask; \
72 })
74 #define PHYSID_MASK_ALL { {[0 ... PHYSID_ARRAY_SIZE-1] = ~0UL} }
75 #define PHYSID_MASK_NONE { {[0 ... PHYSID_ARRAY_SIZE-1] = 0UL} }
77 extern physid_mask_t phys_cpu_present_map;
79 #endif