HomeFreeBSD

vmm/svm: contigmalloc of the whole svm_softc is excessive

Description

vmm/svm: contigmalloc of the whole svm_softc is excessive

This is a followup to r307903.

struct svm_softc takes more than 200 kilobytes while what we really need
is 3 contiguous pages for I/O permission map and 2 contiguous pages for
MSR permission map. Other physically mapped structures have a size of
a single page, so a proper alignment is sufficient for their correct
mapping.

Thus, only the permission maps are allocated with contigmalloc now,
the softc is allocated with a regular malloc.

Additionally, this commit adds a check that malloc returns memory with the
expected page alignment and that contigmalloc does not fail.
Unfortunately, at present svm_vminit() is expected to always succeed and
there is no way to report an error.
So, a contigmalloc failure leads to a panic.
We should probably fix this.

MFC after: 2 weeks

Details

Provenance
avgAuthored on
Parents
rS327725: zfs_mount: restore a bit of ifdef-out illumos code
Branches
Unknown
Tags
Unknown