Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 31 Dec 2006 12:43:44 -0800 (PST)
From:      Matthew Dillon <dillon@apollo.backplane.com>
To:        freebsd-hackers@freebsd.org
Subject:   Confusion in acpi_sleep_machdep().
Message-ID:  <200612312043.kBVKhi7t095666@apollo.backplane.com>

next in thread | raw e-mail | index | archive | help
    I'm trying to figure out how the acpi_sleep_machdep() code works and
    there are a couple of lines I just don't understand:

        pm = vmspace_pmap(p->p_vmspace);
        cr3 = rcr3();
#ifdef PAE
        load_cr3(vtophys(pm->pm_pdpt));
#else
        load_cr3(vtophys(pm->pm_pdir));
#endif

        page = PHYS_TO_VM_PAGE(sc->acpi_wakephys);
        pmap_enter(pm, sc->acpi_wakephys, page,
                   VM_PROT_READ | VM_PROT_WRITE | VM_PROT_EXECUTE, 1);

    First, why isn't it just using kernel_pmap ?  What's all the load_cr3()
    stuff for ?

    Second, why is it entering the physical address sc->acpi_wakephys
    as the virtual address in the pmap ?  Shouldn't it be using
    sc->acpi_wakeaddr there?

    Anybody know ?

						-Matt



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200612312043.kBVKhi7t095666>