svn commit: r276713 - head/sys/powerpc/pseries
Nathan Whitehorn
nwhitehorn at FreeBSD.org
Mon Jan 5 18:15:17 UTC 2015
Author: nwhitehorn
Date: Mon Jan 5 18:15:16 2015
New Revision: 276713
URL: https://svnweb.freebsd.org/changeset/base/276713
Log:
Revert r272109 locally, which is not quite equivalent in how it deals with
missing interrupt-parent properties. A better solution will come later,
but this restores pseries in QEMU for the time being.
Modified:
head/sys/powerpc/pseries/vdevice.c
Modified: head/sys/powerpc/pseries/vdevice.c
==============================================================================
--- head/sys/powerpc/pseries/vdevice.c Mon Jan 5 17:23:02 2015 (r276712)
+++ head/sys/powerpc/pseries/vdevice.c Mon Jan 5 18:15:16 2015 (r276713)
@@ -128,6 +128,8 @@ vdevice_attach(device_t dev)
{
phandle_t root, child;
device_t cdev;
+ int icells, i, nintr, *intr;
+ phandle_t iparent;
struct vdevice_devinfo *dinfo;
root = ofw_bus_get_node(dev);
@@ -142,7 +144,25 @@ vdevice_attach(device_t dev)
}
resource_list_init(&dinfo->mdi_resources);
- ofw_bus_intr_to_rl(dev, child, &dinfo->mdi_resources);
+ if (OF_searchprop(child, "#interrupt-cells", &icells,
+ sizeof(icells)) <= 0)
+ icells = 2;
+ if (OF_getprop(child, "interrupt-parent", &iparent,
+ sizeof(iparent)) <= 0)
+ iparent = -1;
+ nintr = OF_getprop_alloc(child, "interrupts", sizeof(*intr),
+ (void **)&intr);
+ if (nintr > 0) {
+ for (i = 0; i < nintr; i += icells) {
+ u_int irq = intr[i];
+ if (iparent != -1)
+ irq = ofw_bus_map_intr(dev, iparent,
+ icells, &intr[i]);
+
+ resource_list_add(&dinfo->mdi_resources,
+ SYS_RES_IRQ, i, irq, irq, i);
+ }
+ }
cdev = device_add_child(dev, NULL, -1);
if (cdev == NULL) {
More information about the svn-src-all
mailing list