> OK, some questions:
>  - What is the size of your base memory (reported by boot loader)?
>  - Does attached patches solve your problem?
>  - Is this problem specific to IBM Netvista?
> 
> Thanks
> 
> Index: locore.s
> ===================================================================
> RCS file: /home/ncvs/src/sys/i386/i386/locore.s,v

Oops, not this file.

Thanks

Index: machdep.c
===================================================================
RCS file: /home/ncvs/src/sys/i386/i386/machdep.c,v
retrieving revision 1.545
diff -u -r1.545 machdep.c
--- machdep.c   25 Oct 2002 19:10:56 -0000      1.545
+++ machdep.c   8 Nov 2002 04:50:05 -0000
@@ -1513,6 +1513,7 @@
        struct vm86context vmc;
        vm_offset_t pa, physmap[PHYSMAP_SIZE];
        pt_entry_t *pte;
+       pt_entry_t saved_pte[160];
        char *cp;
        struct bios_smap *smap;
 
@@ -1520,6 +1521,14 @@
        bzero(physmap, sizeof(physmap));
        basemem = 0;
 
+       for (pa = (4 << PAGE_SHIFT); pa < ISA_HOLE_START; pa += PAGE_SIZE)
+               pmap_kenter(KERNBASE + pa, pa);
+       pte = (pt_entry_t *)vm86paddr;
+       for (i = 4; i < 160; i++) {
+               saved_pte[i] = pte[i];
+               pte[i] |= PG_V | PG_RW | PG_U;
+       }
+
        /*
         * map page 1 R/W into the kernel page table so we can use it
         * as a buffer.  The kernel will unmap this page later.
@@ -1629,6 +1638,12 @@
         * pmap_mapdev, but since no memory needs to be
         * allocated we simply change the mapping.
         */
+       pte = (pt_entry_t *)vm86paddr;
+       for (i = 4; i < 160; i++)
+               pte[i] = saved_pte[i];
+       for (pa = (4 << PAGE_SHIFT); pa < ISA_HOLE_START; pa += PAGE_SIZE)
+               pmap_kremove(KERNBASE + pa);
+
        for (pa = trunc_page(basemem * 1024);
             pa < ISA_HOLE_START; pa += PAGE_SIZE)
                pmap_kenter(KERNBASE + pa, pa);

To Unsubscribe: send mail to [EMAIL PROTECTED]
with "unsubscribe freebsd-current" in the body of the message

Reply via email to