CVSROOT:        /cvs
Module name:    src
Changes by:     o...@cvs.openbsd.org    2009/08/11 11:15:54

Modified files:
        sys/arch/amd64/amd64: bus_dma.c bus_space.c pmap.c 
        sys/arch/amd64/include: pmap.h 
        sys/arch/i386/i386: bus_dma.c machdep.c pmap.c 
        sys/arch/i386/include: pmap.h 

Log message:
fix some stupidity in x86 bus_space_map.

right now, we do a pmap_kenter_pa(), we then get the pte (behind pmap's
back) and check for the cache inhibit bit (if needed). If it isn't what
we want (this is the normal case) then we change it ourselves, and do a
manual tlb shootdown (i386 was a bit more stupid about it than amd64,
too).

Instead, make it so that like on some other archs (sparc64 comes to
mind) you can pass in flags in the low bits of the physical address,
pmap then does everything correctly for you.

Discovered this when I had some code doing a lot of bus_space_maps(), it
was incredibly slow, and profilling was dominated by
pmap_tlb_shootwait();

discussed with kettenis@, miod@, toby@ and a...@.

ok art@

Reply via email to