"Fix" a problem that got copied from alpha to ia64 and broke there.

When we truncate the msgbuf size because the last chunk is too small,
correctly terminate the phys_avail[] array - the VM system tests
the *end* for zero, not the start.  This leads the VM startup to
attempt to recreate a duplicate set of pages for all physical memory.

XXX the msgbuf handling is suspiciously different on i386 vs
alpha/ia64...
This commit is contained in:
Peter Wemm 2001-11-02 00:41:00 +00:00
parent 00b8804712
commit 97c97bb16b
Notes: svn2git 2020-12-20 02:59:44 +00:00
svn path=/head/; revision=85850
2 changed files with 6 additions and 2 deletions

View File

@ -879,8 +879,10 @@ alpha_init(pfn, ptb, bim, bip, biv)
msgbufinit(msgbufp, sz);
/* Remove the last segment if it now has no pages. */
if (phys_avail[i] == phys_avail[i+1])
if (phys_avail[i] == phys_avail[i+1]) {
phys_avail[i] = 0;
phys_avail[i+1] = 0;
}
/* warn if the message buffer had to be shrunk */
if (sz != round_page(MSGBUF_SIZE))

View File

@ -748,8 +748,10 @@ ia64_init(u_int64_t arg1, u_int64_t arg2)
msgbufinit(msgbufp, sz);
/* Remove the last segment if it now has no pages. */
if (phys_avail[i] == phys_avail[i+1])
if (phys_avail[i] == phys_avail[i+1]) {
phys_avail[i] = 0;
phys_avail[i+] = 0;
}
/* warn if the message buffer had to be shrunk */
if (sz != round_page(MSGBUF_SIZE))