Fedora kernel-2.6.17-1.2142_FC4 patched with stable patch-2.6.17.4-vs2.0.2-rc26.diff
[linux-2.6.git] / include / asm-x86_64 / mpspec.h
index cbe6058..14fc3dd 100644 (file)
@@ -14,9 +14,9 @@
 #define SMP_MAGIC_IDENT        (('_'<<24)|('P'<<16)|('M'<<8)|'_')
 
 /*
- * a maximum of 16 APICs with the current APIC ID architecture.
+ * A maximum of 255 APICs with the current APIC ID architecture.
  */
-#define MAX_APICS 16
+#define MAX_APICS 255
 
 struct intel_mp_floating
 {
@@ -76,7 +76,7 @@ struct mpc_config_bus
 {
        unsigned char mpc_type;
        unsigned char mpc_busid;
-       unsigned char mpc_bustype[6] __attribute((packed));
+       unsigned char mpc_bustype[6];
 };
 
 /* List of Bus Type string values, Intel MP Spec. */
@@ -156,8 +156,9 @@ struct mpc_config_lintsrc
  *     7       2 CPU MCA+PCI
  */
 
-#define MAX_IRQ_SOURCES 256
-#define MAX_MP_BUSSES 32
+#define MAX_MP_BUSSES 256
+/* Each PCI slot may be a combo card with its own bus.  4 IRQ pins per slot. */
+#define MAX_IRQ_SOURCES (MAX_MP_BUSSES * 4)
 enum mp_bustype {
        MP_BUS_ISA = 1,
        MP_BUS_EISA,
@@ -166,22 +167,20 @@ enum mp_bustype {
 };
 extern unsigned char mp_bus_id_to_type [MAX_MP_BUSSES];
 extern int mp_bus_id_to_pci_bus [MAX_MP_BUSSES];
-extern cpumask_t mp_bus_to_cpumask [MAX_MP_BUSSES];
 
 extern unsigned int boot_cpu_physical_apicid;
 extern int smp_found_config;
 extern void find_smp_config (void);
 extern void get_smp_config (void);
 extern int nr_ioapics;
-extern int apic_version [MAX_APICS];
+extern unsigned char apic_version [MAX_APICS];
 extern int mp_irq_entries;
 extern struct mpc_config_intsrc mp_irqs [MAX_IRQ_SOURCES];
 extern int mpc_default_type;
-extern int mp_current_pci_id;
 extern unsigned long mp_lapic_addr;
 extern int pic_mode;
 
-#ifdef CONFIG_ACPI_BOOT
+#ifdef CONFIG_ACPI
 extern void mp_register_lapic (u8 id, u8 enabled);
 extern void mp_register_lapic_address (u64 address);
 
@@ -189,7 +188,7 @@ extern void mp_register_lapic_address (u64 address);
 extern void mp_register_ioapic (u8 id, u32 address, u32 gsi_base);
 extern void mp_override_legacy_irq (u8 bus_irq, u8 polarity, u8 trigger, u32 gsi);
 extern void mp_config_acpi_legacy_irqs (void);
-extern void mp_parse_prt (void);
+extern int mp_register_gsi (u32 gsi, int triggering, int polarity);
 #endif /*CONFIG_X86_IO_APIC*/
 #endif
 
@@ -212,7 +211,7 @@ typedef struct physid_mask physid_mask_t;
 #define physids_and(dst, src1, src2)           bitmap_and((dst).mask, (src1).mask, (src2).mask, MAX_APICS)
 #define physids_or(dst, src1, src2)            bitmap_or((dst).mask, (src1).mask, (src2).mask, MAX_APICS)
 #define physids_clear(map)                     bitmap_zero((map).mask, MAX_APICS)
-#define physids_complement(map)                        bitmap_complement((map).mask, MAX_APICS)
+#define physids_complement(dst, src)           bitmap_complement((dst).mask, (src).mask, MAX_APICS)
 #define physids_empty(map)                     bitmap_empty((map).mask, MAX_APICS)
 #define physids_equal(map1, map2)              bitmap_equal((map1).mask, (map2).mask, MAX_APICS)
 #define physids_weight(map)                    bitmap_weight((map).mask, MAX_APICS)