Messages in this thread Patch in this message | | | Date | Sat, 27 Apr 2002 01:56:23 +0200 | From | Andrea Arcangeli <> | Subject | Re: File corruption when running VMware. |
| |
On Sat, Apr 27, 2002 at 01:01:34AM +0200, Andrea Arcangeli wrote: > On Fri, Apr 26, 2002 at 05:30:37PM +0200, Petr Vandrovec wrote: > > On 24 Apr 02 at 2:01, Rik van Riel wrote: > > > On Wed, 24 Apr 2002, Hong-Gunn Chew wrote: > > > > > > > I have a repeatable problem when running VMware workstation 3.00 and > > > > 3.01. The cause is still unknown, and could be VMware itself, the > > > > hardware or the kernel. > > > > > > If you can reproduce it without VMware or with only the > > > open source part of VMware (ie without any of the binary > > > only parts) we might have a chance of debugging it. > > > > Hi again, > > one of 2.4.x kernel images available in SuSE's 8.0 has patched&enabled > > support for page tables in high memory, and this quickly revealed > > incompatibility between VMware's vmmon page table handling and > > ptes above directly mapped range. > > > > So if you have >890MB of RAM and your kernel is compiled with support > > for pte in high memory, please stop using VMware, or reconfigure your > > kernel to not use pte in high memory (4GB config without pte-in-highmem > > is OK). Using pte-in-highmem with vmmon will cause kernel oopses and/or > > passing to the kernel mem=850M in lilo at boot will be enough.
I downloaded your latest driver from your site (vmware-ws-any-update16 package) and I adjusted it this way:
--- vmware-ws-any-update16/vmmon-only/linux/hostif.c.~1~ Sun Mar 31 20:44:35 2002 +++ vmware-ws-any-update16/vmmon-only/linux/hostif.c Sat Apr 27 01:12:50 2002 @@ -176,7 +176,7 @@ unsigned long pagenr; pgd_t *pgd; pmd_t *pmd; - pte_t *pte; + pte_t *ptep, pte; pgd = pgd_offset(current->mm, addr); if (pgd_none(*pgd)) @@ -184,10 +184,12 @@ pmd = pmd_offset(pgd, addr); if (pmd_none(*pmd)) return 0; - pte = pte_offset(pmd, addr); - if (!pte_present(*pte)) + ptep = pte_offset_atomic(pmd, addr); + pte = *ptep; + pte_kunmap(ptep); + if (!pte_present(pte)) return 0; - pagenr = pte_pagenr(*pte); + pagenr = pte_pagenr(pte); return pagenr; #else int pdoffset = PFN_2_PDOFF(ppn); --- vmware-ws-any-update16/vmnet-only/vmnetInt.h.~1~ Sat Mar 23 04:27:54 2002 +++ vmware-ws-any-update16/vmnet-only/vmnetInt.h Sat Apr 27 01:16:43 2002 @@ -96,10 +96,8 @@ #endif -#ifndef KERNEL_2_5_5 -# define pte_offset_map(_dir, _address) pte_offset(_dir, _address) -# define pte_unmap(_pte) -#endif +# define pte_offset_map(_dir, _address) pte_offset_atomic(_dir, _address) +# define pte_unmap(_pte) pte_kunmap(_pte); #ifndef KERNEL_2_4_8
I'm running the patched driver right now with vmware 3.0 workstataion on my main desktop with 1G using 2.4.19-pre7 as kernel (pte-highmem enabled of course). If I'll find any instability of the host OS I'll let you know, so far it looks solid.
Hope this helps,
Andrea - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
| |