Don't allow unmapped I/O. The pmap isn't quite up to the task. Add a

comment to this effect and switch the default. My old AT91SAM9G20
now boots, fsck's the SD card and runs w/o an issue for the first
time since a 9.1-ish stable build I did a few years ago.

Problems with unmapped I/O:
o un-page-aligned I/O requests to devices fail (notably fsck
  and newfs).
o write-back caching was totally broken. write-through caching
  needed to be enabled.
o Even page-aligned I/O requests sometimes failed for reasons
  not thoroughly investigated.

Suggested by: ian@
MFC after: 2 days
This commit is contained in:
imp 2015-05-16 21:24:32 +00:00
parent 844da2bca6
commit 545ec37cd0

View File

@ -4310,7 +4310,13 @@ pmap_copy_page(vm_page_t src, vm_page_t dst)
pmap_copy_page_func(VM_PAGE_TO_PHYS(src), VM_PAGE_TO_PHYS(dst));
}
int unmapped_buf_allowed = 1;
/*
* We have code to do unmapped I/O. However, it isn't quite right
* an causes un-page-aligned I/O to devices to fail (most notably
* newfs or fsck). We give up a little performance to do this, but
* we trade that for rock-solid stability so it is a good trade.
*/
int unmapped_buf_allowed = 0;
void
pmap_copy_pages(vm_page_t ma[], vm_offset_t a_offset, vm_page_t mb[],