Example #1
0
/*
 * Attach the mainbus.
 */
void
mainbus_attach(struct device *parent, struct device *self, void *aux)
{
	union mainbus_attach_args	mba;
	extern void			(*setperf_setup)(struct cpu_info *);
	extern void			(*cpusensors_setup)(struct cpu_info *);

	printf("\n");

#if NBIOS > 0
	{
		mba.mba_bios.ba_name = "bios";
		mba.mba_bios.ba_iot = I386_BUS_SPACE_IO;
		mba.mba_bios.ba_memt = I386_BUS_SPACE_MEM;
		config_found(self, &mba.mba_bios, mainbus_print);
	}
#endif

#if NIPMI > 0
	{
		memset(&mba.mba_iaa, 0, sizeof(mba.mba_iaa));
		mba.mba_iaa.iaa_name = "ipmi";
		mba.mba_iaa.iaa_iot  = I386_BUS_SPACE_IO;
		mba.mba_iaa.iaa_memt = I386_BUS_SPACE_MEM;
		if (ipmi_probe(&mba.mba_iaa))
			config_found(self, &mba.mba_iaa, mainbus_print);
	}
#endif

#if NVMT > 0
	if (vmt_probe()) {
		mba.mba_busname = "vmware";
		config_found(self, &mba.mba_busname, mainbus_print);
	}
#endif

#if NMPBIOS > 0
	if (mpbios_probe(self))
		mpbios_scan(self);
#endif

	if ((cpu_info_primary.ci_flags & CPUF_PRESENT) == 0) {
		struct cpu_attach_args caa;

		memset(&caa, 0, sizeof(caa));
		caa.caa_name = "cpu";
		caa.cpu_number = 0;
		caa.cpu_role = CPU_ROLE_SP;
		caa.cpu_func = 0;
		caa.cpu_signature = cpu_id;
		caa.feature_flags = cpu_feature;

		config_found(self, &caa, mainbus_print);
	}
#if NAMDMSR > 0
	if (amdmsr_probe()) {
		mba.mba_busname = "amdmsr";
		config_found(self, &mba.mba_busname, mainbus_print);
	}
#endif

#if NACPI > 0
	if (!acpi_hasprocfvs)
#endif
	{
		if (setperf_setup != NULL)
			setperf_setup(&cpu_info_primary);
	}

#ifdef MULTIPROCESSOR
	mp_setperf_init();
#endif

	if (cpusensors_setup != NULL)
		cpusensors_setup(&cpu_info_primary);

#if NVESABIOS > 0
	if (vbeprobe())	{
		mba.mba_busname = "vesabios";
		config_found(self, &mba.mba_busname, NULL);
	}
#endif

#if NESM > 0
	{
		memset(&mba.mba_eaa, 0, sizeof(mba.mba_eaa));
		mba.mba_eaa.eaa_name = "esm";
		mba.mba_eaa.eaa_iot  = I386_BUS_SPACE_IO;
		mba.mba_eaa.eaa_memt = I386_BUS_SPACE_MEM;
		if (esm_probe(&mba.mba_eaa))
			config_found(self, &mba.mba_eaa, mainbus_print);
	}
#endif

	/*
	 * XXX Note also that the presence of a PCI bus should
	 * XXX _always_ be checked, and if present the bus should be
	 * XXX 'found'.  However, because of the structure of the code,
	 * XXX that's not currently possible.
	 */
#if NPCI > 0
	if (pci_mode_detect() != 0) {
		mba.mba_pba.pba_busname = "pci";
		mba.mba_pba.pba_iot = I386_BUS_SPACE_IO;
		mba.mba_pba.pba_memt = I386_BUS_SPACE_MEM;
		mba.mba_pba.pba_dmat = &pci_bus_dma_tag;
		mba.mba_pba.pba_domain = pci_ndomains++;
		mba.mba_pba.pba_bus = 0;
		mba.mba_pba.pba_bridgetag = NULL;
		config_found(self, &mba.mba_pba, mainbus_print);
	}
#endif

	if (!bcmp(ISA_HOLE_VADDR(EISA_ID_PADDR), EISA_ID, EISA_ID_LEN)) {
		mba.mba_eba.eba_busname = "eisa";
		mba.mba_eba.eba_iot = I386_BUS_SPACE_IO;
		mba.mba_eba.eba_memt = I386_BUS_SPACE_MEM;
#if NEISA > 0
		mba.mba_eba.eba_dmat = &eisa_bus_dma_tag;
#endif
		config_found(self, &mba.mba_eba, mainbus_print);
	}

	if (isa_has_been_seen == 0) {
		mba.mba_iba.iba_busname = "isa";
		mba.mba_iba.iba_iot = I386_BUS_SPACE_IO;
		mba.mba_iba.iba_memt = I386_BUS_SPACE_MEM;
#if NISADMA > 0
		mba.mba_iba.iba_dmat = &isa_bus_dma_tag;
#endif
		config_found(self, &mba.mba_iba, mainbus_print);
	}
}
Example #2
0
/*
 * Attach the mainbus.
 */
void
mainbus_attach(struct device *parent, struct device *self, void *aux)
{
#if NPCI > 0
    union mainbus_attach_args	mba;
#endif
    extern void			(*setperf_setup)(struct cpu_info *);

    printf("\n");

#if NBIOS > 0
    {
        mba.mba_bios.ba_name = "bios";
        mba.mba_bios.ba_iot = X86_BUS_SPACE_IO;
        mba.mba_bios.ba_memt = X86_BUS_SPACE_MEM;
        config_found(self, &mba.mba_bios, mainbus_print);
    }
#endif

#if NIPMI > 0
    {
        memset(&mba.mba_iaa, 0, sizeof(mba.mba_iaa));
        mba.mba_iaa.iaa_name = "ipmi";
        mba.mba_iaa.iaa_iot  = X86_BUS_SPACE_IO;
        mba.mba_iaa.iaa_memt = X86_BUS_SPACE_MEM;
        if (ipmi_probe(&mba.mba_iaa))
            config_found(self, &mba.mba_iaa, mainbus_print);
    }
#endif

    if ((cpu_info_primary.ci_flags & CPUF_PRESENT) == 0) {
        struct cpu_attach_args caa;

        memset(&caa, 0, sizeof(caa));
        caa.caa_name = "cpu";
        caa.cpu_number = 0;
        caa.cpu_role = CPU_ROLE_SP;
        caa.cpu_func = 0;

        config_found(self, &caa, mainbus_print);
    }

#if NACPI > 0
    if (!acpi_hasprocfvs)
#endif
    {
        if (setperf_setup != NULL)
            setperf_setup(&cpu_info_primary);
    }

#ifdef MULTIPROCESSOR
    mp_setperf_init();
#endif

#if NPVBUS > 0
    /* Probe first to hide the "not configured" message */
    if (pvbus_probe()) {
        mba.mba_pvba.pvba_busname = "pvbus";
        config_found(self, &mba.mba_pvba.pvba_busname, mainbus_print);
    }
#endif

#if NPCI > 0
    {
        pci_init_extents();

        bzero(&mba.mba_pba, sizeof(mba.mba_pba));
        mba.mba_pba.pba_busname = "pci";
        mba.mba_pba.pba_iot = X86_BUS_SPACE_IO;
        mba.mba_pba.pba_memt = X86_BUS_SPACE_MEM;
        mba.mba_pba.pba_dmat = &pci_bus_dma_tag;
        mba.mba_pba.pba_ioex = pciio_ex;
        mba.mba_pba.pba_memex = pcimem_ex;
        mba.mba_pba.pba_busex = pcibus_ex;
        mba.mba_pba.pba_domain = pci_ndomains++;
        mba.mba_pba.pba_bus = 0;
        config_found(self, &mba.mba_pba, mainbus_print);
#if NACPI > 0
        acpi_pciroots_attach(self, &mba.mba_pba, mainbus_print);
#endif
    }
#endif

#if NISA > 0
    if (isa_has_been_seen == 0)
        config_found(self, &mba_iba, mainbus_print);
#endif

}