|
@@ -66,6 +66,31 @@ static void setup_apic_flat_routing(void)
|
|
|
#endif
|
|
|
}
|
|
|
|
|
|
+static int default_apic_id_registered(void)
|
|
|
+{
|
|
|
+ return physid_isset(read_apic_id(), phys_cpu_present_map);
|
|
|
+}
|
|
|
+
|
|
|
+/*
|
|
|
+ * Set up the logical destination ID. Intel recommends to set DFR, LDR and
|
|
|
+ * TPR before enabling an APIC. See e.g. "AP-388 82489DX User's Manual"
|
|
|
+ * (Intel document number 292116).
|
|
|
+ */
|
|
|
+static void default_init_apic_ldr(void)
|
|
|
+{
|
|
|
+ unsigned long val;
|
|
|
+
|
|
|
+ apic_write(APIC_DFR, APIC_DFR_VALUE);
|
|
|
+ val = apic_read(APIC_LDR) & ~APIC_LDR_MASK;
|
|
|
+ val |= SET_APIC_LOGICAL_ID(1UL << smp_processor_id());
|
|
|
+ apic_write(APIC_LDR, val);
|
|
|
+}
|
|
|
+
|
|
|
+static int default_phys_pkg_id(int cpuid_apic, int index_msb)
|
|
|
+{
|
|
|
+ return cpuid_apic >> index_msb;
|
|
|
+}
|
|
|
+
|
|
|
/* should be called last. */
|
|
|
static int probe_default(void)
|
|
|
{
|