Changeset View
Changeset View
Standalone View
Standalone View
sys/dev/hyperv/vmbus/vmbus.c
Show First 20 Lines • Show All 1,210 Lines • ▼ Show 20 Lines | vmbus_get_crs(device_t dev, device_t vmbus_dev, enum parse_pass pass) | ||||
if (bootverbose && ACPI_FAILURE(status)) | if (bootverbose && ACPI_FAILURE(status)) | ||||
device_printf(dev, "_CRS: not found, pass=%d\n", pass); | device_printf(dev, "_CRS: not found, pass=%d\n", pass); | ||||
} | } | ||||
static void | static void | ||||
vmbus_get_mmio_res_pass(device_t dev, enum parse_pass pass) | vmbus_get_mmio_res_pass(device_t dev, enum parse_pass pass) | ||||
{ | { | ||||
device_t acpi0, pcib0 = NULL; | device_t acpi0; | ||||
device_t *children; | device_t *children; | ||||
const char *child_name; | |||||
int i, count; | int i, count; | ||||
/* Try to find _CRS on VMBus device */ | /* Try to find _CRS on VMBus device */ | ||||
vmbus_get_crs(dev, dev, pass); | vmbus_get_crs(dev, dev, pass); | ||||
/* Try to find _CRS on VMBus device's parent */ | /* Try to find _CRS on VMBus device's parent */ | ||||
acpi0 = device_get_parent(dev); | acpi0 = device_get_parent(dev); | ||||
vmbus_get_crs(acpi0, dev, pass); | vmbus_get_crs(acpi0, dev, pass); | ||||
/* Try to locate pcib0 and find _CRS on it */ | /* Try to locate pcib0 and acpi_syscontainer0, and use the _CRS */ | ||||
if (device_get_children(acpi0, &children, &count) != 0) | if (device_get_children(acpi0, &children, &count) != 0) | ||||
return; | return; | ||||
for (i = 0; i < count; i++) { | for (i = 0; i < count; i++) { | ||||
if (!device_is_attached(children[i])) | if (!device_is_attached(children[i])) | ||||
continue; | continue; | ||||
if (strcmp("pcib0", device_get_nameunit(children[i]))) | child_name = device_get_nameunit(children[i]); | ||||
continue; | if (!strcmp("pcib0", child_name) || | ||||
!strcmp("acpi_syscontainer0", child_name)) { | |||||
pcib0 = children[i]; | vmbus_get_crs(children[i], dev, pass); | ||||
break; | |||||
} | } | ||||
} | |||||
if (pcib0) | |||||
vmbus_get_crs(pcib0, dev, pass); | |||||
free(children, M_TEMP); | free(children, M_TEMP); | ||||
} | } | ||||
static void | static void | ||||
vmbus_get_mmio_res(device_t dev) | vmbus_get_mmio_res(device_t dev) | ||||
{ | { | ||||
struct vmbus_softc *sc = device_get_softc(dev); | struct vmbus_softc *sc = device_get_softc(dev); | ||||
▲ Show 20 Lines • Show All 266 Lines • Show Last 20 Lines |