Changeset View
Changeset View
Standalone View
Standalone View
head/sys/x86/iommu/busdma_dmar.c
Show First 20 Lines • Show All 683 Lines • ▼ Show 20 Lines | for (i = 0; i < ma_cnt; i++) { | ||||
if (ma[i] == NULL || VM_PAGE_TO_PHYS(ma[i]) != paddr) { | if (ma[i] == NULL || VM_PAGE_TO_PHYS(ma[i]) != paddr) { | ||||
/* | /* | ||||
* If PHYS_TO_VM_PAGE() returned NULL or the | * If PHYS_TO_VM_PAGE() returned NULL or the | ||||
* vm_page was not initialized we'll use a | * vm_page was not initialized we'll use a | ||||
* fake page. | * fake page. | ||||
*/ | */ | ||||
if (fma == NULL) { | if (fma == NULL) { | ||||
fma = malloc(sizeof(struct vm_page) * ma_cnt, | fma = malloc(sizeof(struct vm_page) * ma_cnt, | ||||
M_DEVBUF, mflags); | M_DEVBUF, M_ZERO | mflags); | ||||
if (fma == NULL) { | if (fma == NULL) { | ||||
free(ma, M_DEVBUF); | free(ma, M_DEVBUF); | ||||
return (ENOMEM); | return (ENOMEM); | ||||
} | } | ||||
} | } | ||||
vm_page_initfake(&fma[i], pstart + i * PAGE_SIZE, | vm_page_initfake(&fma[i], pstart + i * PAGE_SIZE, | ||||
VM_MEMATTR_DEFAULT); | VM_MEMATTR_DEFAULT); | ||||
ma[i] = &fma[i]; | ma[i] = &fma[i]; | ||||
Show All 37 Lines | for (i = 0; i < ma_cnt; i++, pstart += PAGE_SIZE) { | ||||
if (ma[i] == NULL || VM_PAGE_TO_PHYS(ma[i]) != paddr) { | if (ma[i] == NULL || VM_PAGE_TO_PHYS(ma[i]) != paddr) { | ||||
/* | /* | ||||
* If PHYS_TO_VM_PAGE() returned NULL or the | * If PHYS_TO_VM_PAGE() returned NULL or the | ||||
* vm_page was not initialized we'll use a | * vm_page was not initialized we'll use a | ||||
* fake page. | * fake page. | ||||
*/ | */ | ||||
if (fma == NULL) { | if (fma == NULL) { | ||||
fma = malloc(sizeof(struct vm_page) * ma_cnt, | fma = malloc(sizeof(struct vm_page) * ma_cnt, | ||||
M_DEVBUF, mflags); | M_DEVBUF, M_ZERO | mflags); | ||||
if (fma == NULL) { | if (fma == NULL) { | ||||
free(ma, M_DEVBUF); | free(ma, M_DEVBUF); | ||||
return (ENOMEM); | return (ENOMEM); | ||||
} | } | ||||
} | } | ||||
vm_page_initfake(&fma[i], paddr, VM_MEMATTR_DEFAULT); | vm_page_initfake(&fma[i], paddr, VM_MEMATTR_DEFAULT); | ||||
ma[i] = &fma[i]; | ma[i] = &fma[i]; | ||||
} | } | ||||
▲ Show 20 Lines • Show All 185 Lines • Show Last 20 Lines |