Page Menu
Home
FreeBSD
Search
Configure Global Search
Log In
Files
F115727408
D44131.diff
No One
Temporary
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Flag For Later
Award Token
Size
67 KB
Referenced Files
None
Subscribers
None
D44131.diff
View Options
diff --git a/share/man/man9/bus_release_resource.9 b/share/man/man9/bus_release_resource.9
--- a/share/man/man9/bus_release_resource.9
+++ b/share/man/man9/bus_release_resource.9
@@ -40,7 +40,7 @@
.In sys/rman.h
.In machine/resource.h
.Ft int
-.Fn bus_release_resource "device_t dev" "int type" "int rid" "struct resource *r"
+.Fn bus_release_resource "device_t dev" "struct resource *r"
.Sh DESCRIPTION
Free a resource allocated by
.Xr bus_alloc_resource 9 .
@@ -53,20 +53,6 @@
.Fa dev
is the device that owns the resource.
.It
-.Fa type
-is the type of resource that is released.
-It must be of the same type you allocated it as before.
-See
-.Xr bus_alloc_resource 9
-for valid types.
-.It
-.Fa rid
-is the resource ID of the resource.
-The
-.Fa rid
-value must be the same as the one returned by
-.Xr bus_alloc_resource 9 .
-.It
.Fa r
is the pointer to
.Va struct resource ,
@@ -88,12 +74,10 @@
bus_teardown_intr(dev, foosoftc->irqres, foosoftc->irqid);
/* release IRQ resource */
- bus_release_resource(dev, SYS_RES_IRQ, foosoftc->irqid,
- foosoftc->irqres);
+ bus_release_resource(dev, foosoftc->irqres);
/* release I/O port resource */
- bus_release_resource(dev, SYS_RES_IOPORT, foosoftc->portid,
- foosoftc->portres);
+ bus_release_resource(dev, foosoftc->portres);
.Ed
.Sh SEE ALSO
.Xr bus_alloc_resource 9 ,
diff --git a/sys/arm/mv/mv_pci.c b/sys/arm/mv/mv_pci.c
--- a/sys/arm/mv/mv_pci.c
+++ b/sys/arm/mv/mv_pci.c
@@ -347,8 +347,7 @@
rman_res_t, rman_res_t, rman_res_t, u_int);
static int mv_pcib_adjust_resource(device_t, device_t, struct resource *,
rman_res_t, rman_res_t);
-static int mv_pcib_release_resource(device_t, device_t, int, int,
- struct resource *);
+static int mv_pcib_release_resource(device_t, device_t, struct resource *);
static int mv_pcib_activate_resource(device_t, device_t, struct resource *);
static int mv_pcib_deactivate_resource(device_t, device_t, struct resource *);
static int mv_pcib_map_resource(device_t, device_t, struct resource *,
@@ -962,25 +961,22 @@
}
static int
-mv_pcib_release_resource(device_t dev, device_t child, int type, int rid,
- struct resource *res)
+mv_pcib_release_resource(device_t dev, device_t child, struct resource *res)
{
#ifdef PCI_RES_BUS
struct mv_pcib_softc *sc = device_get_softc(dev);
#endif
- switch (type) {
+ switch (rman_get_type(res)) {
case SYS_RES_IOPORT:
case SYS_RES_MEMORY:
- return (bus_generic_rman_release_resource(dev, child, type,
- rid, res));
+ return (bus_generic_rman_release_resource(dev, child, res));
#ifdef PCI_RES_BUS
case PCI_RES_BUS:
- return (pci_domain_release_bus(sc->ap_segment, child, rid, res));
+ return (pci_domain_release_bus(sc->ap_segment, child, res));
#endif
default:
- return (BUS_RELEASE_RESOURCE(device_get_parent(dev), child,
- type, rid, res));
+ return (bus_generic_release_resource(dev, child, res));
}
}
diff --git a/sys/arm64/cavium/thunder_pcie_fdt.c b/sys/arm64/cavium/thunder_pcie_fdt.c
--- a/sys/arm64/cavium/thunder_pcie_fdt.c
+++ b/sys/arm64/cavium/thunder_pcie_fdt.c
@@ -57,7 +57,7 @@
static struct resource * thunder_pcie_fdt_alloc_resource(device_t, device_t,
int, int *, rman_res_t, rman_res_t, rman_res_t, u_int);
static int thunder_pcie_fdt_release_resource(device_t, device_t,
- int, int, struct resource*);
+ struct resource*);
#endif
static int thunder_pcie_fdt_attach(device_t);
static int thunder_pcie_fdt_probe(device_t);
@@ -288,14 +288,14 @@
}
static int
-thunder_pcie_fdt_release_resource(device_t dev, device_t child, int type,
- int rid, struct resource *res)
+thunder_pcie_fdt_release_resource(device_t dev, device_t child,
+ struct resource *res)
{
if ((int)ofw_bus_get_node(child) <= 0)
- return (pci_host_generic_core_release_resource(dev, child, type,
- rid, res));
+ return (pci_host_generic_core_release_resource(dev, child,
+ res));
- return (bus_generic_release_resource(dev, child, type, rid, res));
+ return (bus_generic_release_resource(dev, child, res));
}
#endif
diff --git a/sys/arm64/cavium/thunder_pcie_pem.c b/sys/arm64/cavium/thunder_pcie_pem.c
--- a/sys/arm64/cavium/thunder_pcie_pem.c
+++ b/sys/arm64/cavium/thunder_pcie_pem.c
@@ -149,8 +149,7 @@
int);
static int thunder_pem_read_ivar(device_t, device_t, int, uintptr_t *);
static void thunder_pem_release_all(device_t);
-static int thunder_pem_release_resource(device_t, device_t, int, int,
- struct resource *);
+static int thunder_pem_release_resource(device_t, device_t, struct resource *);
static struct rman * thunder_pem_get_rman(device_t, int, u_int);
static void thunder_pem_slix_s2m_regx_acc_modify(struct thunder_pem_softc *,
int, int);
@@ -716,28 +715,25 @@
}
static int
-thunder_pem_release_resource(device_t dev, device_t child, int type, int rid,
- struct resource *res)
+thunder_pem_release_resource(device_t dev, device_t child, struct resource *res)
{
device_t parent_dev;
#if defined(NEW_PCIB) && defined(PCI_RES_BUS)
struct thunder_pem_softc *sc = device_get_softc(dev);
#endif
- switch (type) {
+ switch (rman_get_type(res)) {
#if defined(NEW_PCIB) && defined(PCI_RES_BUS)
case PCI_RES_BUS:
- return (pci_domain_release_bus(sc->id, child, rid, res));
+ return (pci_domain_release_bus(sc->id, child, res));
#endif
case SYS_RES_MEMORY:
case SYS_RES_IOPORT:
- return (bus_generic_rman_release_resource(dev, child, type,
- rid, res));
+ return (bus_generic_rman_release_resource(dev, child, res));
default:
/* Find parent device. On ThunderX we know an exact path. */
parent_dev = device_get_parent(device_get_parent(dev));
- return (BUS_RELEASE_RESOURCE(parent_dev, child,
- type, rid, res));
+ return (BUS_RELEASE_RESOURCE(parent_dev, child, res));
}
}
diff --git a/sys/dev/acpica/acpi.c b/sys/dev/acpica/acpi.c
--- a/sys/dev/acpica/acpi.c
+++ b/sys/dev/acpica/acpi.c
@@ -1580,17 +1580,16 @@
}
static int
-acpi_release_resource(device_t bus, device_t child, int type, int rid,
- struct resource *r)
+acpi_release_resource(device_t bus, device_t child, struct resource *r)
{
/*
* If this resource belongs to one of our internal managers,
* deactivate it and release it to the local pool.
*/
if (acpi_is_resource_managed(bus, r))
- return (bus_generic_rman_release_resource(bus, child, type, rid, r));
+ return (bus_generic_rman_release_resource(bus, child, r));
- return (bus_generic_rl_release_resource(bus, child, type, rid, r));
+ return (bus_generic_rl_release_resource(bus, child, r));
}
static void
diff --git a/sys/dev/acpica/acpi_pcib_acpi.c b/sys/dev/acpica/acpi_pcib_acpi.c
--- a/sys/dev/acpica/acpi_pcib_acpi.c
+++ b/sys/dev/acpica/acpi_pcib_acpi.c
@@ -101,8 +101,7 @@
rman_res_t start, rman_res_t end);
#ifdef PCI_RES_BUS
static int acpi_pcib_acpi_release_resource(device_t dev,
- device_t child, int type, int rid,
- struct resource *r);
+ device_t child, struct resource *r);
static int acpi_pcib_acpi_activate_resource(device_t dev,
device_t child, struct resource *r);
static int acpi_pcib_acpi_deactivate_resource(device_t dev,
@@ -516,7 +515,7 @@
return (ENXIO);
}
sc->ap_bus = rman_get_start(bus_res);
- pci_domain_release_bus(sc->ap_segment, dev, rid, bus_res);
+ pci_domain_release_bus(sc->ap_segment, dev, bus_res);
}
} else {
/*
@@ -759,15 +758,15 @@
#ifdef PCI_RES_BUS
int
-acpi_pcib_acpi_release_resource(device_t dev, device_t child, int type, int rid,
+acpi_pcib_acpi_release_resource(device_t dev, device_t child,
struct resource *r)
{
struct acpi_hpcib_softc *sc;
sc = device_get_softc(dev);
- if (type == PCI_RES_BUS)
- return (pci_domain_release_bus(sc->ap_segment, child, rid, r));
- return (bus_generic_release_resource(dev, child, type, rid, r));
+ if (rman_get_type(r) == PCI_RES_BUS)
+ return (pci_domain_release_bus(sc->ap_segment, child, r));
+ return (bus_generic_release_resource(dev, child, r));
}
int
diff --git a/sys/dev/agp/agp_i810.c b/sys/dev/agp/agp_i810.c
--- a/sys/dev/agp/agp_i810.c
+++ b/sys/dev/agp/agp_i810.c
@@ -2053,8 +2053,8 @@
return;
BUS_DEACTIVATE_RESOURCE(device_get_parent(vga), dev,
sc->sc_flush_page_res);
- BUS_RELEASE_RESOURCE(device_get_parent(vga), dev, SYS_RES_MEMORY,
- sc->sc_flush_page_rid, sc->sc_flush_page_res);
+ BUS_RELEASE_RESOURCE(device_get_parent(vga), dev,
+ sc->sc_flush_page_res);
}
static int
diff --git a/sys/dev/ahci/ahci.h b/sys/dev/ahci/ahci.h
--- a/sys/dev/ahci/ahci.h
+++ b/sys/dev/ahci/ahci.h
@@ -656,8 +656,7 @@
int ahci_print_child(device_t dev, device_t child);
struct resource *ahci_alloc_resource(device_t dev, device_t child, int type, int *rid,
rman_res_t start, rman_res_t end, rman_res_t count, u_int flags);
-int ahci_release_resource(device_t dev, device_t child, int type, int rid,
- struct resource *r);
+int ahci_release_resource(device_t dev, device_t child, struct resource *r);
int ahci_setup_intr(device_t dev, device_t child, struct resource *irq,
int flags, driver_filter_t *filter, driver_intr_t *function,
void *argument, void **cookiep);
diff --git a/sys/dev/ahci/ahci.c b/sys/dev/ahci/ahci.c
--- a/sys/dev/ahci/ahci.c
+++ b/sys/dev/ahci/ahci.c
@@ -640,16 +640,15 @@
}
int
-ahci_release_resource(device_t dev, device_t child, int type, int rid,
- struct resource *r)
+ahci_release_resource(device_t dev, device_t child, struct resource *r)
{
- switch (type) {
+ switch (rman_get_type(r)) {
case SYS_RES_MEMORY:
rman_release_resource(r);
return (0);
case SYS_RES_IRQ:
- if (rid != ATA_IRQ_RID)
+ if (rman_get_rid(r) != ATA_IRQ_RID)
return (ENOENT);
return (0);
}
diff --git a/sys/dev/ata/ata-pci.h b/sys/dev/ata/ata-pci.h
--- a/sys/dev/ata/ata-pci.h
+++ b/sys/dev/ata/ata-pci.h
@@ -538,7 +538,7 @@
int ata_pci_print_child(device_t dev, device_t child);
int ata_pci_child_location(device_t dev, device_t child, struct sbuf *sb);
struct resource * ata_pci_alloc_resource(device_t dev, device_t child, int type, int *rid, rman_res_t start, rman_res_t end, rman_res_t count, u_int flags);
-int ata_pci_release_resource(device_t dev, device_t child, int type, int rid, struct resource *r);
+int ata_pci_release_resource(device_t dev, device_t child, struct resource *r);
int ata_pci_setup_intr(device_t dev, device_t child, struct resource *irq, int flags, driver_filter_t *filter, driver_intr_t *function, void *argument, void **cookiep);
int ata_pci_teardown_intr(device_t dev, device_t child, struct resource *irq, void *cookie);
int ata_pci_ch_attach(device_t dev);
diff --git a/sys/dev/ata/ata-pci.c b/sys/dev/ata/ata-pci.c
--- a/sys/dev/ata/ata-pci.c
+++ b/sys/dev/ata/ata-pci.c
@@ -273,24 +273,20 @@
}
int
-ata_pci_release_resource(device_t dev, device_t child, int type, int rid,
- struct resource *r)
+ata_pci_release_resource(device_t dev, device_t child, struct resource *r)
{
+ int rid = rman_get_rid(r);
+ int type = rman_get_type(r);
if (device_get_devclass(child) == ata_devclass) {
struct ata_pci_controller *controller = device_get_softc(dev);
- int unit = ((struct ata_channel *)device_get_softc(child))->unit;
if (type == SYS_RES_IOPORT) {
switch (rid) {
case ATA_IOADDR_RID:
- return BUS_RELEASE_RESOURCE(device_get_parent(dev), dev,
- SYS_RES_IOPORT,
- PCIR_BAR(0) + (unit << 3), r);
case ATA_CTLADDR_RID:
return BUS_RELEASE_RESOURCE(device_get_parent(dev), dev,
- SYS_RES_IOPORT,
- PCIR_BAR(1) + (unit << 3), r);
+ r);
default:
return ENOENT;
}
@@ -300,7 +296,7 @@
return ENOENT;
if (controller->legacy) {
return BUS_RELEASE_RESOURCE(device_get_parent(dev), child,
- SYS_RES_IRQ, rid, r);
+ r);
} else
return 0;
}
@@ -311,7 +307,7 @@
return (0);
} else {
return (BUS_RELEASE_RESOURCE(device_get_parent(dev), child,
- type, rid, r));
+ r));
}
}
return (EINVAL);
diff --git a/sys/dev/atkbdc/atkbdc_isa.c b/sys/dev/atkbdc/atkbdc_isa.c
--- a/sys/dev/atkbdc/atkbdc_isa.c
+++ b/sys/dev/atkbdc/atkbdc_isa.c
@@ -53,7 +53,7 @@
int type, int *rid, rman_res_t start, rman_res_t end,
rman_res_t count, u_int flags);
static int atkbdc_isa_release_resource(device_t dev, device_t child,
- int type, int rid, struct resource *r);
+ struct resource *r);
static device_method_t atkbdc_isa_methods[] = {
DEVMETHOD(device_probe, atkbdc_isa_probe),
@@ -306,15 +306,14 @@
}
static int
-atkbdc_isa_release_resource(device_t dev, device_t child, int type, int rid,
- struct resource *r)
+atkbdc_isa_release_resource(device_t dev, device_t child, struct resource *r)
{
atkbdc_softc_t *sc;
sc = *(atkbdc_softc_t **)device_get_softc(dev);
- if (type == SYS_RES_IRQ && rid == KBDC_RID_KBD && r == sc->irq)
+ if (r == sc->irq)
return (0);
- return (bus_generic_rl_release_resource(dev, child, type, rid, r));
+ return (bus_generic_rl_release_resource(dev, child, r));
}
DRIVER_MODULE(atkbdc, isa, atkbdc_isa_driver, 0, 0);
diff --git a/sys/dev/bhnd/bhnd_subr.c b/sys/dev/bhnd/bhnd_subr.c
--- a/sys/dev/bhnd/bhnd_subr.c
+++ b/sys/dev/bhnd/bhnd_subr.c
@@ -2241,7 +2241,7 @@
failed:
if (res != NULL)
- BUS_RELEASE_RESOURCE(dev, child, type, *rid, res);
+ BUS_RELEASE_RESOURCE(dev, child, res);
free(br, M_BHND);
return (NULL);
@@ -2259,7 +2259,7 @@
{
int error;
- if ((error = BUS_RELEASE_RESOURCE(dev, child, type, rid, r->res)))
+ if ((error = BUS_RELEASE_RESOURCE(dev, child, r->res)))
return (error);
free(r, M_BHND);
diff --git a/sys/dev/bhnd/bhndb/bhndb.c b/sys/dev/bhnd/bhndb/bhndb.c
--- a/sys/dev/bhnd/bhndb/bhndb.c
+++ b/sys/dev/bhnd/bhndb/bhndb.c
@@ -1034,8 +1034,7 @@
* Default bhndb(4) implementation of BUS_RELEASE_RESOURCE().
*/
static int
-bhndb_release_resource(device_t dev, device_t child, int type, int rid,
- struct resource *r)
+bhndb_release_resource(device_t dev, device_t child, struct resource *r)
{
struct bhndb_softc *sc;
struct resource_list_entry *rle;
@@ -1047,9 +1046,9 @@
/* Delegate to our parent device's bus if the requested resource type
* isn't handled locally. */
- if (bhndb_get_rman(sc, child, type) == NULL) {
+ if (bhndb_get_rman(sc, child, rman_get_type(r)) == NULL) {
return (BUS_RELEASE_RESOURCE(device_get_parent(sc->parent_dev),
- child, type, rid, r));
+ child, r));
}
/* Deactivate resources */
@@ -1065,7 +1064,7 @@
if (!passthrough) {
/* Clean resource list entry */
rle = resource_list_find(BUS_GET_RESOURCE_LIST(dev, child),
- type, rid);
+ rman_get_type(r), rman_get_rid(r));
if (rle != NULL)
rle->res = NULL;
}
diff --git a/sys/dev/bhnd/cores/chipc/chipc.c b/sys/dev/bhnd/cores/chipc/chipc.c
--- a/sys/dev/bhnd/cores/chipc/chipc.c
+++ b/sys/dev/bhnd/cores/chipc/chipc.c
@@ -873,8 +873,7 @@
}
static int
-chipc_release_resource(device_t dev, device_t child, int type, int rid,
- struct resource *r)
+chipc_release_resource(device_t dev, device_t child, struct resource *r)
{
struct chipc_softc *sc;
struct chipc_region *cr;
@@ -885,10 +884,9 @@
sc = device_get_softc(dev);
/* Handled by parent bus? */
- rm = chipc_get_rman(dev, type, rman_get_flags(r));
+ rm = chipc_get_rman(dev, rman_get_type(r), rman_get_flags(r));
if (rm == NULL || !rman_is_region_manager(r, rm)) {
- return (bus_generic_rl_release_resource(dev, child, type, rid,
- r));
+ return (bus_generic_rl_release_resource(dev, child, r));
}
/* Locate the mapping region */
@@ -897,7 +895,7 @@
return (EINVAL);
/* Deactivate resources */
- error = bus_generic_rman_release_resource(dev, child, type, rid, r);
+ error = bus_generic_rman_release_resource(dev, child, r);
if (error != 0)
return (error);
@@ -905,7 +903,8 @@
chipc_release_region(sc, cr, RF_ALLOCATED);
/* Clear reference from the resource list entry if exists */
- rle = resource_list_find(BUS_GET_RESOURCE_LIST(dev, child), type, rid);
+ rle = resource_list_find(BUS_GET_RESOURCE_LIST(dev, child),
+ rman_get_type(r), rman_get_rid(r));
if (rle != NULL)
rle->res = NULL;
diff --git a/sys/dev/bhnd/cores/usb/bhnd_usb.c b/sys/dev/bhnd/cores/usb/bhnd_usb.c
--- a/sys/dev/bhnd/cores/usb/bhnd_usb.c
+++ b/sys/dev/bhnd/cores/usb/bhnd_usb.c
@@ -69,8 +69,7 @@
rman_res_t start, rman_res_t end,
rman_res_t count, u_int flags);
static int bhnd_usb_release_resource(device_t dev,
- device_t child, int type, int rid,
- struct resource *r);
+ device_t child, struct resource *r);
static struct resource_list * bhnd_usb_get_reslist(device_t dev,
device_t child);
@@ -311,8 +310,8 @@
}
static int
-bhnd_usb_release_resource(device_t dev, device_t child, int type,
- int rid, struct resource *r)
+bhnd_usb_release_resource(device_t dev, device_t child,
+ struct resource *r)
{
struct bhnd_usb_softc *sc;
struct resource_list_entry *rle;
@@ -325,18 +324,17 @@
/* Delegate to our parent device's bus if the requested resource type
* isn't handled locally. */
if (type != SYS_RES_MEMORY) {
- return (bus_generic_rl_release_resource(dev, child, type, rid,
- r));
+ return (bus_generic_rl_release_resource(dev, child, r));
}
- error = bus_generic_rman_release_resource(dev, child, type, rid, r);
+ error = bus_generic_rman_release_resource(dev, child, r);
if (error != 0)
return (error);
if (!passthrough) {
/* Clean resource list entry */
rle = resource_list_find(BUS_GET_RESOURCE_LIST(dev, child),
- type, rid);
+ rman_get_type(r), rman_get_rid(r));
if (rle != NULL)
rle->res = NULL;
}
diff --git a/sys/dev/dpaa/fman.h b/sys/dev/dpaa/fman.h
--- a/sys/dev/dpaa/fman.h
+++ b/sys/dev/dpaa/fman.h
@@ -57,8 +57,7 @@
int *rid, rman_res_t start, rman_res_t end, rman_res_t count, u_int flags);
int fman_activate_resource(device_t bus, device_t child,
struct resource *res);
-int fman_release_resource(device_t bus, device_t child, int type, int rid,
- struct resource *res);
+int fman_release_resource(device_t bus, device_t child, struct resource *res);
int fman_attach(device_t dev);
int fman_detach(device_t dev);
int fman_suspend(device_t dev);
diff --git a/sys/dev/dpaa/fman.c b/sys/dev/dpaa/fman.c
--- a/sys/dev/dpaa/fman.c
+++ b/sys/dev/dpaa/fman.c
@@ -116,8 +116,7 @@
}
int
-fman_release_resource(device_t bus, device_t child, int type, int rid,
- struct resource *res)
+fman_release_resource(device_t bus, device_t child, struct resource *res)
{
struct resource_list *rl;
struct resource_list_entry *rle;
@@ -125,9 +124,9 @@
passthrough = (device_get_parent(child) != bus);
rl = BUS_GET_RESOURCE_LIST(bus, child);
- if (type != SYS_RES_IRQ) {
+ if (rman_get_type(res) != SYS_RES_IRQ) {
if ((rman_get_flags(res) & RF_ACTIVE) != 0 ){
- rv = bus_deactivate_resource(child, type, rid, res);
+ rv = bus_deactivate_resource(child, res);
if (rv != 0)
return (rv);
}
@@ -135,7 +134,8 @@
if (rv != 0)
return (rv);
if (!passthrough) {
- rle = resource_list_find(rl, type, rid);
+ rle = resource_list_find(rl, rman_get_type(res),
+ rman_get_rid(res));
KASSERT(rle != NULL,
("%s: resource entry not found!", __func__));
KASSERT(rle->res != NULL,
@@ -144,7 +144,7 @@
}
return (0);
}
- return (resource_list_release(rl, bus, child, type, rid, res));
+ return (resource_list_release(rl, bus, child, res));
}
struct resource *
diff --git a/sys/dev/dpaa2/dpaa2_mc.h b/sys/dev/dpaa2/dpaa2_mc.h
--- a/sys/dev/dpaa2/dpaa2_mc.h
+++ b/sys/dev/dpaa2/dpaa2_mc.h
@@ -185,8 +185,8 @@
u_int flags);
int dpaa2_mc_adjust_resource(device_t mcdev, device_t child,
struct resource *r, rman_res_t start, rman_res_t end);
-int dpaa2_mc_release_resource(device_t mcdev, device_t child, int type,
- int rid, struct resource *r);
+int dpaa2_mc_release_resource(device_t mcdev, device_t child,
+ struct resource *r);
int dpaa2_mc_activate_resource(device_t mcdev, device_t child,
struct resource *r);
int dpaa2_mc_deactivate_resource(device_t mcdev, device_t child,
diff --git a/sys/dev/dpaa2/dpaa2_mc.c b/sys/dev/dpaa2/dpaa2_mc.c
--- a/sys/dev/dpaa2/dpaa2_mc.c
+++ b/sys/dev/dpaa2/dpaa2_mc.c
@@ -356,16 +356,14 @@
}
int
-dpaa2_mc_release_resource(device_t mcdev, device_t child, int type, int rid,
- struct resource *r)
+dpaa2_mc_release_resource(device_t mcdev, device_t child, struct resource *r)
{
struct rman *rm;
- rm = dpaa2_mc_rman(mcdev, type, rman_get_flags(r));
+ rm = dpaa2_mc_rman(mcdev, rman_get_type(r), rman_get_flags(r));
if (rm)
- return (bus_generic_rman_release_resource(mcdev, child, type,
- rid, r));
- return (bus_generic_release_resource(mcdev, child, type, rid, r));
+ return (bus_generic_rman_release_resource(mcdev, child, r));
+ return (bus_generic_release_resource(mcdev, child, r));
}
int
diff --git a/sys/dev/dpaa2/dpaa2_rc.c b/sys/dev/dpaa2/dpaa2_rc.c
--- a/sys/dev/dpaa2/dpaa2_rc.c
+++ b/sys/dev/dpaa2/dpaa2_rc.c
@@ -263,19 +263,18 @@
}
static int
-dpaa2_rc_release_resource(device_t rcdev, device_t child, int type, int rid,
- struct resource *r)
+dpaa2_rc_release_resource(device_t rcdev, device_t child, struct resource *r)
{
struct resource_list *rl;
struct dpaa2_devinfo *dinfo;
if (device_get_parent(child) != rcdev)
return (BUS_RELEASE_RESOURCE(device_get_parent(rcdev), child,
- type, rid, r));
+ r));
dinfo = device_get_ivars(child);
rl = &dinfo->resources;
- return (resource_list_release(rl, rcdev, child, type, rid, r));
+ return (resource_list_release(rl, rcdev, child, r));
}
static void
diff --git a/sys/dev/fdt/simplebus.c b/sys/dev/fdt/simplebus.c
--- a/sys/dev/fdt/simplebus.c
+++ b/sys/dev/fdt/simplebus.c
@@ -46,8 +46,6 @@
static int simplebus_probe(device_t dev);
static struct resource *simplebus_alloc_resource(device_t, device_t, int,
int *, rman_res_t, rman_res_t, rman_res_t, u_int);
-static int simplebus_release_resource(device_t bus, device_t child,
- int type, int rid, struct resource *r);
static void simplebus_probe_nomatch(device_t bus, device_t child);
static int simplebus_print_child(device_t bus, device_t child);
static device_t simplebus_add_child(device_t dev, u_int order,
@@ -85,7 +83,7 @@
DEVMETHOD(bus_setup_intr, bus_generic_setup_intr),
DEVMETHOD(bus_teardown_intr, bus_generic_teardown_intr),
DEVMETHOD(bus_alloc_resource, simplebus_alloc_resource),
- DEVMETHOD(bus_release_resource, simplebus_release_resource),
+ DEVMETHOD(bus_release_resource, bus_generic_release_resource),
DEVMETHOD(bus_activate_resource, bus_generic_activate_resource),
DEVMETHOD(bus_deactivate_resource, bus_generic_deactivate_resource),
DEVMETHOD(bus_adjust_resource, bus_generic_adjust_resource),
@@ -485,16 +483,6 @@
count, flags));
}
-static int
-simplebus_release_resource(device_t bus, device_t child, int type, int rid,
- struct resource *r)
-{
-
- if (type == SYS_RES_IOPORT)
- type = SYS_RES_MEMORY;
- return (bus_generic_release_resource(bus, child, type, rid, r));
-}
-
static int
simplebus_print_res(struct simplebus_devinfo *di)
{
diff --git a/sys/dev/hyperv/pcib/vmbus_pcib.c b/sys/dev/hyperv/pcib/vmbus_pcib.c
--- a/sys/dev/hyperv/pcib/vmbus_pcib.c
+++ b/sys/dev/hyperv/pcib/vmbus_pcib.c
@@ -1724,19 +1724,18 @@
}
static int
-vmbus_pcib_release_resource(device_t dev, device_t child, int type, int rid,
- struct resource *r)
+vmbus_pcib_release_resource(device_t dev, device_t child, struct resource *r)
{
struct vmbus_pcib_softc *sc = device_get_softc(dev);
- if (type == PCI_RES_BUS)
- return (pci_domain_release_bus(sc->hbus->pci_domain, child,
- rid, r));
-
- if (type == SYS_RES_IOPORT)
+ switch (rman_get_type(r)) {
+ case PCI_RES_BUS:
+ return (pci_domain_release_bus(sc->hbus->pci_domain, child, r));
+ case SYS_RES_IOPORT:
return (EINVAL);
-
- return (bus_generic_release_resource(dev, child, type, rid, r));
+ default:
+ return (bus_generic_release_resource(dev, child, r));
+ }
}
static int
diff --git a/sys/dev/mvs/mvs_pci.c b/sys/dev/mvs/mvs_pci.c
--- a/sys/dev/mvs/mvs_pci.c
+++ b/sys/dev/mvs/mvs_pci.c
@@ -422,16 +422,15 @@
}
static int
-mvs_release_resource(device_t dev, device_t child, int type, int rid,
- struct resource *r)
+mvs_release_resource(device_t dev, device_t child, struct resource *r)
{
- switch (type) {
+ switch (rman_get_type(r)) {
case SYS_RES_MEMORY:
rman_release_resource(r);
return (0);
case SYS_RES_IRQ:
- if (rid != ATA_IRQ_RID)
+ if (rman_get_rid(r) != ATA_IRQ_RID)
return ENOENT;
return (0);
}
diff --git a/sys/dev/mvs/mvs_soc.c b/sys/dev/mvs/mvs_soc.c
--- a/sys/dev/mvs/mvs_soc.c
+++ b/sys/dev/mvs/mvs_soc.c
@@ -366,11 +366,10 @@
}
static int
-mvs_release_resource(device_t dev, device_t child, int type, int rid,
- struct resource *r)
+mvs_release_resource(device_t dev, device_t child, struct resource *r)
{
- switch (type) {
+ switch (rman_get_type(r)) {
case SYS_RES_MEMORY:
rman_release_resource(r);
return (0);
diff --git a/sys/dev/ofw/ofw_pcib.c b/sys/dev/ofw/ofw_pcib.c
--- a/sys/dev/ofw/ofw_pcib.c
+++ b/sys/dev/ofw/ofw_pcib.c
@@ -67,8 +67,7 @@
static struct rman *ofw_pcib_get_rman(device_t, int, u_int);
static struct resource * ofw_pcib_alloc_resource(device_t, device_t,
int, int *, rman_res_t, rman_res_t, rman_res_t, u_int);
-static int ofw_pcib_release_resource(device_t, device_t, int, int,
- struct resource *);
+static int ofw_pcib_release_resource(device_t, device_t, struct resource *);
static int ofw_pcib_activate_resource(device_t, device_t, struct resource *);
static int ofw_pcib_deactivate_resource(device_t, device_t, struct resource *);
static int ofw_pcib_adjust_resource(device_t, device_t,
@@ -444,27 +443,23 @@
}
static int
-ofw_pcib_release_resource(device_t bus, device_t child, int type, int rid,
- struct resource *res)
+ofw_pcib_release_resource(device_t bus, device_t child, struct resource *res)
{
#if defined(NEW_PCIB) && defined(PCI_RES_BUS)
struct ofw_pci_softc *sc;
sc = device_get_softc(bus);
#endif
- switch (type) {
+ switch (rman_get_type(res)) {
#if defined(NEW_PCIB) && defined(PCI_RES_BUS)
case PCI_RES_BUS:
- return (pci_domain_release_bus(sc->sc_pci_domain, child, rid,
- res));
+ return (pci_domain_release_bus(sc->sc_pci_domain, child, res));
#endif
case SYS_RES_MEMORY:
case SYS_RES_IOPORT:
- return (bus_generic_rman_release_resource(bus, child, type, rid,
- res));
+ return (bus_generic_rman_release_resource(bus, child, res));
default:
- return (bus_generic_release_resource(bus, child, type, rid,
- res));
+ return (bus_generic_release_resource(bus, child, res));
}
}
diff --git a/sys/dev/ofw/ofwbus.c b/sys/dev/ofw/ofwbus.c
--- a/sys/dev/ofw/ofwbus.c
+++ b/sys/dev/ofw/ofwbus.c
@@ -170,8 +170,7 @@
}
static int
-ofwbus_release_resource(device_t bus, device_t child, int type,
- int rid, struct resource *r)
+ofwbus_release_resource(device_t bus, device_t child, struct resource *r)
{
struct resource_list_entry *rle;
bool passthrough;
@@ -180,11 +179,11 @@
if (!passthrough) {
/* Clean resource list entry */
rle = resource_list_find(BUS_GET_RESOURCE_LIST(bus, child),
- type, rid);
+ rman_get_type(r), rman_get_rid(r));
if (rle != NULL)
rle->res = NULL;
}
/* Let nexus handle the release. */
- return (bus_generic_release_resource(bus, child, type, rid, r));
+ return (bus_generic_release_resource(bus, child, r));
}
diff --git a/sys/dev/pccbb/pccbb.c b/sys/dev/pccbb/pccbb.c
--- a/sys/dev/pccbb/pccbb.c
+++ b/sys/dev/pccbb/pccbb.c
@@ -162,7 +162,7 @@
device_t child, int type, int *rid, rman_res_t start,
rman_res_t end, rman_res_t count, u_int flags);
static int cbb_cardbus_release_resource(device_t brdev, device_t child,
- int type, int rid, struct resource *res);
+ struct resource *res);
static int cbb_cardbus_power_enable_socket(device_t brdev,
device_t child);
static int cbb_cardbus_power_disable_socket(device_t brdev,
@@ -1263,20 +1263,20 @@
}
static int
-cbb_cardbus_release_resource(device_t brdev, device_t child, int type,
- int rid, struct resource *res)
+cbb_cardbus_release_resource(device_t brdev, device_t child,
+ struct resource *res)
{
struct cbb_softc *sc = device_get_softc(brdev);
int error;
if (rman_get_flags(res) & RF_ACTIVE) {
- error = bus_deactivate_resource(child, type, rid, res);
+ error = bus_deactivate_resource(child, res);
if (error != 0)
return (error);
}
cbb_remove_res(sc, res);
return (BUS_RELEASE_RESOURCE(device_get_parent(brdev), child,
- type, rid, res));
+ res));
}
/************************************************************************/
@@ -1424,20 +1424,20 @@
}
static int
-cbb_pcic_release_resource(device_t brdev, device_t child, int type,
- int rid, struct resource *res)
+cbb_pcic_release_resource(device_t brdev, device_t child,
+ struct resource *res)
{
struct cbb_softc *sc = device_get_softc(brdev);
int error;
if (rman_get_flags(res) & RF_ACTIVE) {
- error = bus_deactivate_resource(child, type, rid, res);
+ error = bus_deactivate_resource(child, res);
if (error != 0)
return (error);
}
cbb_remove_res(sc, res);
return (BUS_RELEASE_RESOURCE(device_get_parent(brdev), child,
- type, rid, res));
+ res));
}
/************************************************************************/
@@ -1519,17 +1519,14 @@
}
int
-cbb_release_resource(device_t brdev, device_t child, int type, int rid,
- struct resource *r)
+cbb_release_resource(device_t brdev, device_t child, struct resource *r)
{
struct cbb_softc *sc = device_get_softc(brdev);
if (sc->flags & CBB_16BIT_CARD)
- return (cbb_pcic_release_resource(brdev, child, type,
- rid, r));
+ return (cbb_pcic_release_resource(brdev, child, r));
else
- return (cbb_cardbus_release_resource(brdev, child, type,
- rid, r));
+ return (cbb_cardbus_release_resource(brdev, child, r));
}
int
diff --git a/sys/dev/pccbb/pccbb_pci.c b/sys/dev/pccbb/pccbb_pci.c
--- a/sys/dev/pccbb/pccbb_pci.c
+++ b/sys/dev/pccbb/pccbb_pci.c
@@ -818,24 +818,23 @@
}
static int
-cbb_pci_release_resource(device_t bus, device_t child, int type, int rid,
- struct resource *r)
+cbb_pci_release_resource(device_t bus, device_t child, struct resource *r)
{
struct cbb_softc *sc;
int error;
sc = device_get_softc(bus);
- if (type == PCI_RES_BUS) {
+ if (rman_get_type(r) == PCI_RES_BUS) {
if (!rman_is_region_manager(r, &sc->bus.rman))
return (EINVAL);
if (rman_get_flags(r) & RF_ACTIVE) {
- error = bus_deactivate_resource(child, type, rid, r);
+ error = bus_deactivate_resource(child, r);
if (error)
return (error);
}
return (rman_release_resource(r));
}
- return (cbb_release_resource(bus, child, type, rid, r));
+ return (cbb_release_resource(bus, child, r));
}
#endif
diff --git a/sys/dev/pccbb/pccbbvar.h b/sys/dev/pccbb/pccbbvar.h
--- a/sys/dev/pccbb/pccbbvar.h
+++ b/sys/dev/pccbb/pccbbvar.h
@@ -130,7 +130,7 @@
int cbb_read_ivar(device_t brdev, device_t child, int which,
uintptr_t *result);
int cbb_release_resource(device_t brdev, device_t child,
- int type, int rid, struct resource *r);
+ struct resource *r);
int cbb_setup_intr(device_t dev, device_t child, struct resource *irq,
int flags, driver_filter_t *filt, driver_intr_t *intr, void *arg,
void **cookiep);
diff --git a/sys/dev/pci/hostb_pci.c b/sys/dev/pci/hostb_pci.c
--- a/sys/dev/pci/hostb_pci.c
+++ b/sys/dev/pci/hostb_pci.c
@@ -106,11 +106,10 @@
}
static int
-pci_hostb_release_resource(device_t dev, device_t child, int type, int rid,
- struct resource *r)
+pci_hostb_release_resource(device_t dev, device_t child, struct resource *r)
{
- return (bus_release_resource(dev, type, rid, r));
+ return (bus_release_resource(dev, r));
}
/* PCI interface. */
diff --git a/sys/dev/pci/isa_pci.c b/sys/dev/pci/isa_pci.c
--- a/sys/dev/pci/isa_pci.c
+++ b/sys/dev/pci/isa_pci.c
@@ -55,7 +55,7 @@
device_t child, int type, int *rid, rman_res_t start, rman_res_t end,
rman_res_t count, u_int flags);
static int isab_pci_release_resource(device_t dev, device_t child,
- int type, int rid, struct resource *r);
+ struct resource *r);
static device_method_t isab_methods[] = {
/* Device interface */
@@ -199,23 +199,22 @@
}
static int
-isab_pci_release_resource(device_t dev, device_t child, int type, int rid,
- struct resource *r)
+isab_pci_release_resource(device_t dev, device_t child, struct resource *r)
{
struct isab_pci_softc *sc;
int bar, error;
if (device_get_parent(child) != dev)
- return bus_generic_release_resource(dev, child, type, rid, r);
+ return bus_generic_release_resource(dev, child, r);
- switch (type) {
+ switch (rman_get_type(r)) {
case SYS_RES_MEMORY:
case SYS_RES_IOPORT:
/*
* For BARs, we release the resource from the PCI bus
* when the last child reference goes away.
*/
- bar = PCI_RID2BAR(rid);
+ bar = PCI_RID2BAR(rman_get_rid(r));
if (bar < 0 || bar > PCIR_MAX_BAR_0)
return (EINVAL);
sc = device_get_softc(dev);
@@ -229,7 +228,7 @@
}
KASSERT(sc->isab_pci_res[bar].ip_refs > 0,
("isa_pci resource reference count underflow"));
- error = bus_release_resource(dev, type, rid, r);
+ error = bus_release_resource(dev, r);
if (error == 0) {
sc->isab_pci_res[bar].ip_res = NULL;
sc->isab_pci_res[bar].ip_refs = 0;
@@ -237,6 +236,5 @@
return (error);
}
- return (BUS_RELEASE_RESOURCE(device_get_parent(dev), child, type,
- rid, r));
+ return (bus_generic_release_resource(dev, child, r));
}
diff --git a/sys/dev/pci/pci.c b/sys/dev/pci/pci.c
--- a/sys/dev/pci/pci.c
+++ b/sys/dev/pci/pci.c
@@ -5636,29 +5636,26 @@
}
int
-pci_release_resource(device_t dev, device_t child, int type, int rid,
- struct resource *r)
+pci_release_resource(device_t dev, device_t child, struct resource *r)
{
struct pci_devinfo *dinfo;
struct resource_list *rl;
pcicfgregs *cfg __unused;
if (device_get_parent(child) != dev)
- return (BUS_RELEASE_RESOURCE(device_get_parent(dev), child,
- type, rid, r));
+ return (bus_generic_release_resource(dev, child, r));
dinfo = device_get_ivars(child);
cfg = &dinfo->cfg;
#ifdef PCI_IOV
if (cfg->flags & PCICFG_VF) {
- switch (type) {
+ switch (rman_get_type(r)) {
/* VFs can't have I/O BARs. */
case SYS_RES_IOPORT:
return (EDOOFUS);
case SYS_RES_MEMORY:
- return (pci_vf_release_mem_resource(dev, child, rid,
- r));
+ return (pci_vf_release_mem_resource(dev, child, r));
}
/* Fall through for other types of resource allocations. */
@@ -5671,19 +5668,19 @@
* those allocations just pass the request up the tree.
*/
if (cfg->hdrtype == PCIM_HDRTYPE_BRIDGE &&
- (type == SYS_RES_IOPORT || type == SYS_RES_MEMORY)) {
- switch (rid) {
+ (rman_get_type(r) == SYS_RES_IOPORT ||
+ rman_get_type(r) == SYS_RES_MEMORY)) {
+ switch (rman_get_rid(r)) {
case PCIR_IOBASEL_1:
case PCIR_MEMBASE_1:
case PCIR_PMBASEL_1:
- return (bus_generic_release_resource(dev, child, type,
- rid, r));
+ return (bus_generic_release_resource(dev, child, r));
}
}
#endif
rl = &dinfo->resources;
- return (resource_list_release(rl, dev, child, type, rid, r));
+ return (resource_list_release(rl, dev, child, r));
}
int
diff --git a/sys/dev/pci/pci_host_generic.h b/sys/dev/pci/pci_host_generic.h
--- a/sys/dev/pci/pci_host_generic.h
+++ b/sys/dev/pci/pci_host_generic.h
@@ -95,7 +95,7 @@
int pci_host_generic_core_detach(device_t);
struct resource *pci_host_generic_core_alloc_resource(device_t, device_t, int,
int *, rman_res_t, rman_res_t, rman_res_t, u_int);
-int pci_host_generic_core_release_resource(device_t, device_t, int, int,
+int pci_host_generic_core_release_resource(device_t, device_t,
struct resource *);
#endif /* __PCI_HOST_GENERIC_H_ */
diff --git a/sys/dev/pci/pci_host_generic.c b/sys/dev/pci/pci_host_generic.c
--- a/sys/dev/pci/pci_host_generic.c
+++ b/sys/dev/pci/pci_host_generic.c
@@ -428,26 +428,24 @@
}
int
-pci_host_generic_core_release_resource(device_t dev, device_t child, int type,
- int rid, struct resource *res)
+pci_host_generic_core_release_resource(device_t dev, device_t child,
+ struct resource *res)
{
#if defined(NEW_PCIB) && defined(PCI_RES_BUS)
struct generic_pcie_core_softc *sc;
sc = device_get_softc(dev);
#endif
- switch (type) {
+ switch (rman_get_type(res)) {
#if defined(NEW_PCIB) && defined(PCI_RES_BUS)
case PCI_RES_BUS:
- return (pci_domain_release_bus(sc->ecam, child, rid, res));
+ return (pci_domain_release_bus(sc->ecam, child, res));
#endif
case SYS_RES_IOPORT:
case SYS_RES_MEMORY:
- return (bus_generic_rman_release_resource(dev, child, type, rid,
- res));
+ return (bus_generic_rman_release_resource(dev, child, res));
default:
- return (bus_generic_release_resource(dev, child, type, rid,
- res));
+ return (bus_generic_release_resource(dev, child, res));
}
}
diff --git a/sys/dev/pci/pci_iov.c b/sys/dev/pci/pci_iov.c
--- a/sys/dev/pci/pci_iov.c
+++ b/sys/dev/pci/pci_iov.c
@@ -778,9 +778,7 @@
for (i = 0; i <= PCIR_MAX_BAR_0; i++) {
if (iov->iov_bar[i].res != NULL) {
- pci_release_resource(bus, dev, SYS_RES_MEMORY,
- iov->iov_pos + PCIR_SRIOV_BAR(i),
- iov->iov_bar[i].res);
+ pci_release_resource(bus, dev, iov->iov_bar[i].res);
pci_delete_resource(bus, dev, SYS_RES_MEMORY,
iov->iov_pos + PCIR_SRIOV_BAR(i));
iov->iov_bar[i].res = NULL;
@@ -890,9 +888,7 @@
for (i = 0; i <= PCIR_MAX_BAR_0; i++) {
if (iov->iov_bar[i].res != NULL) {
- pci_release_resource(bus, dev, SYS_RES_MEMORY,
- iov->iov_pos + PCIR_SRIOV_BAR(i),
- iov->iov_bar[i].res);
+ pci_release_resource(bus, dev, iov->iov_bar[i].res);
pci_delete_resource(bus, dev, SYS_RES_MEMORY,
iov->iov_pos + PCIR_SRIOV_BAR(i));
iov->iov_bar[i].res = NULL;
@@ -1066,21 +1062,21 @@
}
int
-pci_vf_release_mem_resource(device_t dev, device_t child, int rid,
- struct resource *r)
+pci_vf_release_mem_resource(device_t dev, device_t child, struct resource *r)
{
struct pci_devinfo *dinfo;
struct resource_list_entry *rle;
- int error;
+ int error, rid;
dinfo = device_get_ivars(child);
if (rman_get_flags(r) & RF_ACTIVE) {
- error = bus_deactivate_resource(child, SYS_RES_MEMORY, rid, r);
+ error = bus_deactivate_resource(child, r);
if (error != 0)
return (error);
}
+ rid = rman_get_rid(r);
rle = resource_list_find(&dinfo->resources, SYS_RES_MEMORY, rid);
if (rle != NULL) {
rle->res = NULL;
diff --git a/sys/dev/pci/pci_pci.c b/sys/dev/pci/pci_pci.c
--- a/sys/dev/pci/pci_pci.c
+++ b/sys/dev/pci/pci_pci.c
@@ -2440,8 +2440,7 @@
}
static int
-pcib_release_resource(device_t dev, device_t child, int type, int rid,
- struct resource *r)
+pcib_release_resource(device_t dev, device_t child, struct resource *r)
{
struct pcib_softc *sc;
int error;
@@ -2449,13 +2448,13 @@
sc = device_get_softc(dev);
if (pcib_is_resource_managed(sc, r)) {
if (rman_get_flags(r) & RF_ACTIVE) {
- error = bus_deactivate_resource(child, type, rid, r);
+ error = bus_deactivate_resource(child, r);
if (error)
return (error);
}
return (rman_release_resource(r));
}
- return (bus_generic_release_resource(dev, child, type, rid, r));
+ return (bus_generic_release_resource(dev, child, r));
}
static int
diff --git a/sys/dev/pci/pci_private.h b/sys/dev/pci/pci_private.h
--- a/sys/dev/pci/pci_private.h
+++ b/sys/dev/pci/pci_private.h
@@ -117,8 +117,8 @@
struct resource *pci_alloc_resource(device_t dev, device_t child,
int type, int *rid, rman_res_t start, rman_res_t end,
rman_res_t count, u_int flags);
-int pci_release_resource(device_t dev, device_t child, int type,
- int rid, struct resource *r);
+int pci_release_resource(device_t dev, device_t child,
+ struct resource *r);
int pci_activate_resource(device_t dev, device_t child,
struct resource *r);
int pci_deactivate_resource(device_t dev, device_t child,
@@ -183,5 +183,5 @@
int *rid, rman_res_t start, rman_res_t end,
rman_res_t count, u_int flags);
int pci_vf_release_mem_resource(device_t dev, device_t child,
- int rid, struct resource *r);
+ struct resource *r);
#endif /* _PCI_PRIVATE_H_ */
diff --git a/sys/dev/pci/pci_subr.c b/sys/dev/pci/pci_subr.c
--- a/sys/dev/pci/pci_subr.c
+++ b/sys/dev/pci/pci_subr.c
@@ -366,7 +366,7 @@
}
int
-pci_domain_release_bus(int domain, device_t dev, int rid, struct resource *r)
+pci_domain_release_bus(int domain, device_t dev, struct resource *r)
{
#ifdef INVARIANTS
struct pci_domain *d;
diff --git a/sys/dev/pci/pcib_private.h b/sys/dev/pci/pcib_private.h
--- a/sys/dev/pci/pcib_private.h
+++ b/sys/dev/pci/pcib_private.h
@@ -158,7 +158,7 @@
rman_res_t start, rman_res_t end, rman_res_t count, u_int flags);
int pci_domain_adjust_bus(int domain, device_t dev,
struct resource *r, rman_res_t start, rman_res_t end);
-int pci_domain_release_bus(int domain, device_t dev, int rid,
+int pci_domain_release_bus(int domain, device_t dev,
struct resource *r);
int pci_domain_activate_bus(int domain, device_t dev,
struct resource *r);
diff --git a/sys/dev/pci/vga_pci.c b/sys/dev/pci/vga_pci.c
--- a/sys/dev/pci/vga_pci.c
+++ b/sys/dev/pci/vga_pci.c
@@ -69,8 +69,8 @@
static struct resource *vga_pci_alloc_resource(device_t dev, device_t child,
int type, int *rid, rman_res_t start, rman_res_t end, rman_res_t count,
u_int flags);
-static int vga_pci_release_resource(device_t dev, device_t child, int type,
- int rid, struct resource *r);
+static int vga_pci_release_resource(device_t dev, device_t child,
+ struct resource *r);
int vga_pci_default_unit = -1;
SYSCTL_INT(_hw_pci, OID_AUTO, default_vgapci_unit, CTLFLAG_RDTUN,
@@ -241,8 +241,7 @@
rom_addr |= rman_get_start(res) | 0x1;
pci_write_config(dev, rid, rom_addr, 4);
vr = lookup_res(device_get_softc(dev), rid);
- vga_pci_release_resource(dev, NULL, SYS_RES_MEMORY, rid,
- vr->vr_res);
+ vga_pci_release_resource(dev, NULL, vr->vr_res);
/*
* re-allocate
@@ -265,8 +264,7 @@
return (__DEVOLATILE(void *, bios));
device_printf(dev, "ROM mapping failed\n");
vr = lookup_res(device_get_softc(dev), rid);
- vga_pci_release_resource(dev, NULL, SYS_RES_MEMORY, rid,
- vr->vr_res);
+ vga_pci_release_resource(dev, NULL, vr->vr_res);
return (NULL);
}
@@ -309,8 +307,7 @@
KASSERT(vr->vr_res != NULL, ("vga_pci_unmap_bios: bios not mapped"));
KASSERT(rman_get_virtual(vr->vr_res) == bios,
("vga_pci_unmap_bios: mismatch"));
- vga_pci_release_resource(dev, NULL, SYS_RES_MEMORY, rid,
- vr->vr_res);
+ vga_pci_release_resource(dev, NULL, vr->vr_res);
}
int
@@ -478,20 +475,19 @@
}
static int
-vga_pci_release_resource(device_t dev, device_t child, int type, int rid,
- struct resource *r)
+vga_pci_release_resource(device_t dev, device_t child, struct resource *r)
{
struct vga_resource *vr;
int error;
- switch (type) {
+ switch (rman_get_type(r)) {
case SYS_RES_MEMORY:
case SYS_RES_IOPORT:
/*
* For BARs, we release the resource from the PCI bus
* when the last child reference goes away.
*/
- vr = lookup_res(device_get_softc(dev), rid);
+ vr = lookup_res(device_get_softc(dev), rman_get_rid(r));
if (vr == NULL)
return (EINVAL);
if (vr->vr_res == NULL)
@@ -503,7 +499,7 @@
}
KASSERT(vr->vr_refs > 0,
("vga_pci resource reference count underflow"));
- error = bus_release_resource(dev, type, rid, r);
+ error = bus_release_resource(dev, r);
if (error == 0) {
vr->vr_res = NULL;
vr->vr_refs = 0;
@@ -511,7 +507,7 @@
return (error);
}
- return (bus_release_resource(dev, type, rid, r));
+ return (bus_release_resource(dev, r));
}
/* PCI interface. */
diff --git a/sys/dev/ppc/ppc.c b/sys/dev/ppc/ppc.c
--- a/sys/dev/ppc/ppc.c
+++ b/sys/dev/ppc/ppc.c
@@ -1976,22 +1976,12 @@
}
int
-ppc_release_resource(device_t bus, device_t child, int type, int rid,
- struct resource *r)
+ppc_release_resource(device_t bus, device_t child, struct resource *r)
{
-#ifdef INVARIANTS
struct ppc_data *ppc = DEVTOSOFTC(bus);
-#endif
- switch (type) {
- case SYS_RES_IRQ:
- if (rid == 0) {
- KASSERT(r == ppc->res_irq,
- ("ppc child IRQ resource mismatch"));
- return (0);
- }
- break;
- }
+ if (r == ppc->res_irq)
+ return (0);
return (EINVAL);
}
diff --git a/sys/dev/ppc/ppcvar.h b/sys/dev/ppc/ppcvar.h
--- a/sys/dev/ppc/ppcvar.h
+++ b/sys/dev/ppc/ppcvar.h
@@ -42,8 +42,7 @@
struct resource *ppc_alloc_resource(device_t bus, device_t child, int type,
int *rid, rman_res_t start, rman_res_t end, rman_res_t count, u_int flags);
-int ppc_release_resource(device_t bus, device_t child, int type, int rid,
- struct resource *r);
+int ppc_release_resource(device_t bus, device_t child, struct resource *r);
int ppc_reset_epp(device_t);
int ppc_ecp_sync(device_t);
int ppc_setmode(device_t, int);
diff --git a/sys/dev/puc/puc.c b/sys/dev/puc/puc.c
--- a/sys/dev/puc/puc.c
+++ b/sys/dev/puc/puc.c
@@ -526,8 +526,7 @@
}
int
-puc_bus_release_resource(device_t dev, device_t child, int type, int rid,
- struct resource *res)
+puc_bus_release_resource(device_t dev, device_t child, struct resource *res)
{
struct puc_port *port;
device_t originator;
@@ -542,18 +541,13 @@
port = device_get_ivars(child);
KASSERT(port != NULL, ("%s %d", __func__, __LINE__));
- if (rid != 0 || res == NULL)
+ if (res == NULL)
return (EINVAL);
- if (type == port->p_bar->b_type) {
- if (res != port->p_rres)
- return (EINVAL);
- } else if (type == SYS_RES_IRQ) {
- if (res != port->p_ires)
- return (EINVAL);
+ if (res == port->p_ires) {
if (port->p_hasintr)
return (EBUSY);
- } else
+ } else if (res != port->p_rres)
return (EINVAL);
if (rman_get_device(res) != originator)
diff --git a/sys/dev/puc/puc_bfe.h b/sys/dev/puc/puc_bfe.h
--- a/sys/dev/puc/puc_bfe.h
+++ b/sys/dev/puc/puc_bfe.h
@@ -89,7 +89,7 @@
int puc_bus_get_resource(device_t, device_t, int, int, rman_res_t *, rman_res_t *);
int puc_bus_print_child(device_t, device_t);
int puc_bus_read_ivar(device_t, device_t, int, uintptr_t *);
-int puc_bus_release_resource(device_t, device_t, int, int, struct resource *);
+int puc_bus_release_resource(device_t, device_t, struct resource *);
int puc_bus_setup_intr(device_t, device_t, struct resource *, int,
driver_filter_t *, driver_intr_t *, void *, void **);
int puc_bus_teardown_intr(device_t, device_t, struct resource *, void *);
diff --git a/sys/dev/quicc/quicc_bfe.h b/sys/dev/quicc/quicc_bfe.h
--- a/sys/dev/quicc/quicc_bfe.h
+++ b/sys/dev/quicc/quicc_bfe.h
@@ -64,7 +64,7 @@
int quicc_bus_get_resource(device_t, device_t, int, int,
rman_res_t *, rman_res_t *);
int quicc_bus_read_ivar(device_t, device_t, int, uintptr_t *);
-int quicc_bus_release_resource(device_t, device_t, int, int, struct resource *);
+int quicc_bus_release_resource(device_t, device_t, struct resource *);
int quicc_bus_setup_intr(device_t, device_t, struct resource *, int,
driver_filter_t *, void (*)(void *), void *, void **);
int quicc_bus_teardown_intr(device_t, device_t, struct resource *, void *);
diff --git a/sys/dev/quicc/quicc_core.c b/sys/dev/quicc/quicc_core.c
--- a/sys/dev/quicc/quicc_core.c
+++ b/sys/dev/quicc/quicc_core.c
@@ -333,8 +333,7 @@
}
int
-quicc_bus_release_resource(device_t dev, device_t child, int type, int rid,
- struct resource *res)
+quicc_bus_release_resource(device_t dev, device_t child, struct resource *res)
{
struct quicc_device *qd;
struct resource_list_entry *rle;
@@ -343,7 +342,8 @@
return (EINVAL);
qd = device_get_ivars(child);
- rle = resource_list_find(&qd->qd_rlist, type, rid);
+ rle = resource_list_find(&qd->qd_rlist, rman_get_type(res),
+ rman_get_rid(res));
return ((rle == NULL) ? EINVAL : 0);
}
diff --git a/sys/dev/scc/scc_bfe.h b/sys/dev/scc/scc_bfe.h
--- a/sys/dev/scc/scc_bfe.h
+++ b/sys/dev/scc/scc_bfe.h
@@ -145,7 +145,7 @@
rman_res_t, rman_res_t, rman_res_t, u_int);
int scc_bus_get_resource(device_t, device_t, int, int, rman_res_t *, rman_res_t *);
int scc_bus_read_ivar(device_t, device_t, int, uintptr_t *);
-int scc_bus_release_resource(device_t, device_t, int, int, struct resource *);
+int scc_bus_release_resource(device_t, device_t, struct resource *);
int scc_bus_setup_intr(device_t, device_t, struct resource *, int,
driver_filter_t *, void (*)(void *), void *, void **);
int scc_bus_teardown_intr(device_t, device_t, struct resource *, void *);
diff --git a/sys/dev/scc/scc_core.c b/sys/dev/scc/scc_core.c
--- a/sys/dev/scc/scc_core.c
+++ b/sys/dev/scc/scc_core.c
@@ -495,8 +495,7 @@
}
int
-scc_bus_release_resource(device_t dev, device_t child, int type, int rid,
- struct resource *res)
+scc_bus_release_resource(device_t dev, device_t child, struct resource *res)
{
struct resource_list_entry *rle;
struct scc_chan *ch;
@@ -507,7 +506,8 @@
m = device_get_ivars(child);
ch = m->m_chan;
- rle = resource_list_find(&ch->ch_rlist, type, rid);
+ rle = resource_list_find(&ch->ch_rlist, rman_get_type(res),
+ rman_get_rid(res));
return ((rle == NULL) ? EINVAL : 0);
}
diff --git a/sys/dev/siis/siis.c b/sys/dev/siis/siis.c
--- a/sys/dev/siis/siis.c
+++ b/sys/dev/siis/siis.c
@@ -346,16 +346,15 @@
}
static int
-siis_release_resource(device_t dev, device_t child, int type, int rid,
- struct resource *r)
+siis_release_resource(device_t dev, device_t child, struct resource *r)
{
- switch (type) {
+ switch (rman_get_type(r)) {
case SYS_RES_MEMORY:
rman_release_resource(r);
return (0);
case SYS_RES_IRQ:
- if (rid != ATA_IRQ_RID)
+ if (rman_get_rid(r) != ATA_IRQ_RID)
return ENOENT;
return (0);
}
diff --git a/sys/dev/sound/pci/csa.c b/sys/dev/sound/pci/csa.c
--- a/sys/dev/sound/pci/csa.c
+++ b/sys/dev/sound/pci/csa.c
@@ -83,8 +83,7 @@
static struct resource *csa_alloc_resource(device_t bus, device_t child, int type, int *rid,
rman_res_t start, rman_res_t end,
rman_res_t count, u_int flags);
-static int csa_release_resource(device_t bus, device_t child, int type, int rid,
- struct resource *r);
+static int csa_release_resource(device_t bus, device_t child, struct resource *r);
static int csa_setup_intr(device_t bus, device_t child,
struct resource *irq, int flags,
driver_filter_t *filter,
@@ -430,8 +429,7 @@
}
static int
-csa_release_resource(device_t bus, device_t child, int type, int rid,
- struct resource *r)
+csa_release_resource(device_t bus, device_t child, struct resource *r)
{
return (0);
}
diff --git a/sys/dev/sound/pci/fm801.c b/sys/dev/sound/pci/fm801.c
--- a/sys/dev/sound/pci/fm801.c
+++ b/sys/dev/sound/pci/fm801.c
@@ -728,8 +728,7 @@
}
static int
-fm801_release_resource(device_t bus, device_t child, int type, int rid,
- struct resource *r)
+fm801_release_resource(device_t bus, device_t child, struct resource *r)
{
return (0);
}
diff --git a/sys/dev/vmd/vmd.c b/sys/dev/vmd/vmd.c
--- a/sys/dev/vmd/vmd.c
+++ b/sys/dev/vmd/vmd.c
@@ -480,15 +480,13 @@
}
static int
-vmd_release_resource(device_t dev, device_t child, int type, int rid,
- struct resource *r)
+vmd_release_resource(device_t dev, device_t child, struct resource *r)
{
- if (type == SYS_RES_IRQ) {
- return (bus_generic_release_resource(dev, child, type, rid,
- r));
+ if (rman_get_type(r) == SYS_RES_IRQ) {
+ return (bus_generic_release_resource(dev, child, r));
}
- return (bus_generic_rman_release_resource(dev, child, type, rid, r));
+ return (bus_generic_rman_release_resource(dev, child, r));
}
static int
diff --git a/sys/isa/isa_common.h b/sys/isa/isa_common.h
--- a/sys/isa/isa_common.h
+++ b/sys/isa/isa_common.h
@@ -72,6 +72,6 @@
int type, int *rid, rman_res_t start, rman_res_t end, rman_res_t count,
u_int flags);
extern int isa_release_resource(device_t bus, device_t child,
- int type, int rid, struct resource *r);
+ struct resource *r);
extern driver_t isa_driver;
diff --git a/sys/isa/isa_common.c b/sys/isa/isa_common.c
--- a/sys/isa/isa_common.c
+++ b/sys/isa/isa_common.c
@@ -909,8 +909,6 @@
STAILQ_FOREACH(rle, &idev->id_resources, link) {
if (rle->res)
resource_list_release(rl, dev, child,
- rle->type,
- rle->rid,
rle->res);
}
diff --git a/sys/kern/bus_if.m b/sys/kern/bus_if.m
--- a/sys/kern/bus_if.m
+++ b/sys/kern/bus_if.m
@@ -427,15 +427,11 @@
*
* @param _dev the parent device of @p _child
* @param _child the device which allocated the resource
- * @param _type the type of resource
- * @param _rid the resource identifier
* @param _r the resource to release
*/
METHOD int release_resource {
device_t _dev;
device_t _child;
- int _type;
- int _rid;
struct resource *_res;
};
diff --git a/sys/kern/subr_bus.c b/sys/kern/subr_bus.c
--- a/sys/kern/subr_bus.c
+++ b/sys/kern/subr_bus.c
@@ -3133,8 +3133,6 @@
* @param rl the resource list which was allocated from
* @param bus the parent device of @p child
* @param child the device which is requesting a release
- * @param type the type of resource to release
- * @param rid the resource identifier
* @param res the resource to release
*
* @retval 0 success
@@ -3143,7 +3141,7 @@
*/
int
resource_list_release(struct resource_list *rl, device_t bus, device_t child,
- int type, int rid, struct resource *res)
+ struct resource *res)
{
struct resource_list_entry *rle = NULL;
int passthrough = (device_get_parent(child) != bus);
@@ -3151,10 +3149,10 @@
if (passthrough) {
return (BUS_RELEASE_RESOURCE(device_get_parent(bus), child,
- type, rid, res));
+ res));
}
- rle = resource_list_find(rl, type, rid);
+ rle = resource_list_find(rl, rman_get_type(res), rman_get_rid(res));
if (!rle)
panic("resource_list_release: can't find resource");
@@ -3163,8 +3161,7 @@
if (rle->flags & RLE_RESERVED) {
if (rle->flags & RLE_ALLOCATED) {
if (rman_get_flags(res) & RF_ACTIVE) {
- error = bus_deactivate_resource(child, type,
- rid, res);
+ error = bus_deactivate_resource(child, res);
if (error)
return (error);
}
@@ -3174,8 +3171,7 @@
return (EINVAL);
}
- error = BUS_RELEASE_RESOURCE(device_get_parent(bus), child,
- type, rid, res);
+ error = BUS_RELEASE_RESOURCE(device_get_parent(bus), child, res);
if (error)
return (error);
@@ -3215,8 +3211,7 @@
RLE_RESERVED)
continue;
retval = EBUSY;
- error = resource_list_release(rl, bus, child, type,
- rman_get_rid(rle->res), rle->res);
+ error = resource_list_release(rl, bus, child, rle->res);
if (error != 0)
device_printf(bus,
"Failed to release active resource: %d\n", error);
@@ -3260,7 +3255,7 @@
if (rle->flags & RLE_ALLOCATED)
return (EBUSY);
rle->flags &= ~RLE_RESERVED;
- return (resource_list_release(rl, bus, child, type, rid, rle->res));
+ return (resource_list_release(rl, bus, child, rle->res));
}
/**
@@ -3928,13 +3923,11 @@
* BUS_RELEASE_RESOURCE() method of the parent of @p dev.
*/
int
-bus_generic_release_resource(device_t dev, device_t child, int type, int rid,
- struct resource *r)
+bus_generic_release_resource(device_t dev, device_t child, struct resource *r)
{
/* Propagate up the bus hierarchy until someone handles it. */
if (dev->parent)
- return (BUS_RELEASE_RESOURCE(dev->parent, child, type, rid,
- r));
+ return (BUS_RELEASE_RESOURCE(dev->parent, child, r));
return (EINVAL);
}
@@ -4180,20 +4173,19 @@
* BUS_GET_RESOURCE_LIST() to find a suitable resource list.
*/
int
-bus_generic_rl_release_resource(device_t dev, device_t child, int type,
- int rid, struct resource *r)
+bus_generic_rl_release_resource(device_t dev, device_t child,
+ struct resource *r)
{
struct resource_list * rl = NULL;
if (device_get_parent(child) != dev)
- return (BUS_RELEASE_RESOURCE(device_get_parent(dev), child,
- type, rid, r));
+ return (BUS_RELEASE_RESOURCE(device_get_parent(dev), child, r));
rl = BUS_GET_RESOURCE_LIST(dev, child);
if (!rl)
return (EINVAL);
- return (resource_list_release(rl, dev, child, type, rid, r));
+ return (resource_list_release(rl, dev, child, r));
}
/**
@@ -4284,8 +4276,8 @@
* allocated by bus_generic_rman_alloc_resource.
*/
int
-bus_generic_rman_release_resource(device_t dev, device_t child, int type,
- int rid, struct resource *r)
+bus_generic_rman_release_resource(device_t dev, device_t child,
+ struct resource *r)
{
#ifdef INVARIANTS
struct rman *rm;
@@ -4293,13 +4285,13 @@
int error;
#ifdef INVARIANTS
- rm = BUS_GET_RMAN(dev, type, rman_get_flags(r));
+ rm = BUS_GET_RMAN(dev, rman_get_type(r), rman_get_flags(r));
KASSERT(rman_is_region_manager(r, rm),
("%s: rman %p doesn't match for resource %p", __func__, rm, r));
#endif
if (rman_get_flags(r) & RF_ACTIVE) {
- error = bus_deactivate_resource(child, type, rid, r);
+ error = bus_deactivate_resource(child, r);
if (error != 0)
return (error);
}
@@ -4653,21 +4645,20 @@
* parent of @p dev.
*/
int
-bus_release_resource(device_t dev, int type, int rid, struct resource *r)
+bus_release_resource(device_t dev, struct resource *r)
{
int rv;
if (dev->parent == NULL)
return (EINVAL);
- rv = BUS_RELEASE_RESOURCE(dev->parent, dev, type, rid, r);
+ rv = BUS_RELEASE_RESOURCE(dev->parent, dev, r);
return (rv);
}
int
-bus_release_resource_new(device_t dev, struct resource *r)
+bus_release_resource_old(device_t dev, int type, int rid, struct resource *r)
{
- return (bus_release_resource(dev, rman_get_type(r), rman_get_rid(r),
- r));
+ return (bus_release_resource(dev, r));
}
/**
diff --git a/sys/powerpc/mpc85xx/isa.c b/sys/powerpc/mpc85xx/isa.c
--- a/sys/powerpc/mpc85xx/isa.c
+++ b/sys/powerpc/mpc85xx/isa.c
@@ -73,11 +73,10 @@
}
int
-isa_release_resource(device_t bus, device_t child, int type, int rid,
- struct resource *r)
+isa_release_resource(device_t bus, device_t child, struct resource *r)
{
struct isa_device* idev = DEVTOISA(child);
struct resource_list *rl = &idev->id_resources;
- return (resource_list_release(rl, bus, child, type, rid, r));
+ return (resource_list_release(rl, bus, child, r));
}
diff --git a/sys/powerpc/mpc85xx/lbc.c b/sys/powerpc/mpc85xx/lbc.c
--- a/sys/powerpc/mpc85xx/lbc.c
+++ b/sys/powerpc/mpc85xx/lbc.c
@@ -83,8 +83,7 @@
static int lbc_adjust_resource(device_t, device_t, struct resource *,
rman_res_t, rman_res_t);
static int lbc_print_child(device_t, device_t);
-static int lbc_release_resource(device_t, device_t, int, int,
- struct resource *);
+static int lbc_release_resource(device_t, device_t, struct resource *);
static const struct ofw_bus_devinfo *lbc_get_devinfo(device_t, device_t);
/*
@@ -776,18 +775,13 @@
}
static int
-lbc_release_resource(device_t dev, device_t child, int type, int rid,
- struct resource *res)
+lbc_release_resource(device_t dev, device_t child, struct resource *res)
{
- switch (type) {
- case SYS_RES_IOPORT:
- type = SYS_RES_MEMORY;
- /* FALLTHROUGH */
+ switch (rman_get_type(res)) {
case SYS_RES_MEMORY:
- return (bus_generic_rman_release_resource(dev, child, type,
- rid, res));
+ return (bus_generic_rman_release_resource(dev, child, res));
case SYS_RES_IRQ:
- return (bus_generic_release_resource(dev, child, type, rid, res));
+ return (bus_generic_release_resource(dev, child, res));
default:
return (EINVAL);
}
diff --git a/sys/powerpc/powermac/macio.c b/sys/powerpc/powermac/macio.c
--- a/sys/powerpc/powermac/macio.c
+++ b/sys/powerpc/powermac/macio.c
@@ -88,8 +88,7 @@
rman_res_t, rman_res_t);
static int macio_activate_resource(device_t, device_t, struct resource *);
static int macio_deactivate_resource(device_t, device_t, struct resource *);
-static int macio_release_resource(device_t, device_t, int, int,
- struct resource *);
+static int macio_release_resource(device_t, device_t, struct resource *);
static int macio_map_resource(device_t, device_t, struct resource *,
struct resource_map_request *,
struct resource_map *);
@@ -610,17 +609,14 @@
}
static int
-macio_release_resource(device_t bus, device_t child, int type, int rid,
- struct resource *res)
+macio_release_resource(device_t bus, device_t child, struct resource *res)
{
- switch (type) {
+ switch (rman_get_type(res)) {
case SYS_RES_IOPORT:
case SYS_RES_MEMORY:
- return (bus_generic_rman_release_resource(bus, child, type, rid,
- res));
+ return (bus_generic_rman_release_resource(bus, child, res));
case SYS_RES_IRQ:
- return (bus_generic_rl_release_resource(bus, child, type, rid,
- res));
+ return (bus_generic_rl_release_resource(bus, child, res));
default:
return (EINVAL);
}
diff --git a/sys/powerpc/powermac/uninorth.c b/sys/powerpc/powermac/uninorth.c
--- a/sys/powerpc/powermac/uninorth.c
+++ b/sys/powerpc/powermac/uninorth.c
@@ -87,8 +87,7 @@
struct resource_map *);
static int unin_chip_unmap_resource(device_t, device_t, struct resource *,
struct resource_map *);
-static int unin_chip_release_resource(device_t, device_t, int, int,
- struct resource *);
+static int unin_chip_release_resource(device_t, device_t, struct resource *);
static struct resource_list *unin_chip_get_resource_list (device_t, device_t);
/*
@@ -570,17 +569,14 @@
}
static int
-unin_chip_release_resource(device_t bus, device_t child, int type, int rid,
- struct resource *res)
+unin_chip_release_resource(device_t bus, device_t child, struct resource *res)
{
- switch (type) {
+ switch (rman_get_type(res)) {
case SYS_RES_IOPORT:
case SYS_RES_MEMORY:
- return (bus_generic_rman_release_resource(bus, child, type, rid,
- res));
+ return (bus_generic_rman_release_resource(bus, child, res));
case SYS_RES_IRQ:
- return (bus_generic_rl_release_resource(bus, child, type, rid,
- res));
+ return (bus_generic_rl_release_resource(bus, child, res));
default:
return (EINVAL);
}
diff --git a/sys/powerpc/psim/ata_iobus.c b/sys/powerpc/psim/ata_iobus.c
--- a/sys/powerpc/psim/ata_iobus.c
+++ b/sys/powerpc/psim/ata_iobus.c
@@ -61,8 +61,7 @@
struct resource *ata_iobus_alloc_resource(device_t, device_t, int, int *,
rman_res_t, rman_res_t, rman_res_t,
u_int);
-static int ata_iobus_release_resource(device_t, device_t, int, int,
- struct resource *);
+static int ata_iobus_release_resource(device_t, device_t, struct resource *);
static device_method_t ata_iobus_methods[] = {
/* Device interface */
@@ -192,8 +191,7 @@
}
static int
-ata_iobus_release_resource(device_t dev, device_t child, int type, int rid,
- struct resource *r)
+ata_iobus_release_resource(device_t dev, device_t child, struct resource *r)
{
/* no hotplug... */
return (0);
diff --git a/sys/powerpc/psim/iobus.c b/sys/powerpc/psim/iobus.c
--- a/sys/powerpc/psim/iobus.c
+++ b/sys/powerpc/psim/iobus.c
@@ -83,8 +83,7 @@
struct resource_map *);
static int iobus_unmap_resource(device_t, device_t, struct resource *,
struct resource_map *);
-static int iobus_release_resource(device_t, device_t, int, int,
- struct resource *);
+static int iobus_release_resource(device_t, device_t, struct resource *);
/*
* Bus interface definition
@@ -357,17 +356,15 @@
}
static int
-iobus_release_resource(device_t bus, device_t child, int type, int rid,
- struct resource *res)
+iobus_release_resource(device_t bus, device_t child, struct resource *res)
{
- switch (type) {
+ switch (rman_get_type(res)) {
case SYS_RES_MEMORY:
case SYS_RES_IOPORT:
- return (bus_generic_rman_release_resource(bus, child, type, rid,
- res));
+ return (bus_generic_rman_release_resource(bus, child, res));
case SYS_RES_IRQ:
- return (bus_generic_release_resource(bus, child, type, rid, res));
+ return (bus_generic_release_resource(bus, child, res));
default:
return (EINVAL);
}
diff --git a/sys/sys/bus.h b/sys/sys/bus.h
--- a/sys/sys/bus.h
+++ b/sys/sys/bus.h
@@ -396,7 +396,7 @@
rman_res_t count, u_int flags);
int resource_list_release(struct resource_list *rl,
device_t bus, device_t child,
- int type, int rid, struct resource *res);
+ struct resource *res);
int resource_list_release_active(struct resource_list *rl,
device_t bus, device_t child,
int type);
@@ -481,7 +481,7 @@
int bus_generic_read_ivar(device_t dev, device_t child, int which,
uintptr_t *result);
int bus_generic_release_resource(device_t bus, device_t child,
- int type, int rid, struct resource *r);
+ struct resource *r);
int bus_generic_resume(device_t dev);
int bus_generic_resume_child(device_t dev, device_t child);
int bus_generic_setup_intr(device_t dev, device_t child,
@@ -497,8 +497,7 @@
rman_res_t *);
int bus_generic_rl_set_resource (device_t, device_t, int, int, rman_res_t,
rman_res_t);
-int bus_generic_rl_release_resource (device_t, device_t, int, int,
- struct resource *);
+int bus_generic_rl_release_resource (device_t, device_t, struct resource *);
struct resource *
bus_generic_rman_alloc_resource(device_t dev, device_t child, int type,
int *rid, rman_res_t start,
@@ -508,7 +507,6 @@
struct resource *r, rman_res_t start,
rman_res_t end);
int bus_generic_rman_release_resource(device_t dev, device_t child,
- int type, int rid,
struct resource *r);
int bus_generic_rman_activate_resource(device_t dev, device_t child,
struct resource *r);
@@ -571,8 +569,7 @@
bus_dma_tag_t bus_get_dma_tag(device_t dev);
bus_space_tag_t bus_get_bus_tag(device_t dev);
int bus_get_domain(device_t dev, int *domain);
-int bus_release_resource(device_t dev, int type, int rid,
- struct resource *r);
+int bus_release_resource(device_t dev, struct resource *r);
int bus_free_resource(device_t dev, int type, struct resource *r);
int bus_setup_intr(device_t dev, struct resource *r, int flags,
driver_filter_t filter, driver_intr_t handler,
@@ -621,7 +618,8 @@
struct resource_map *map);
int bus_unmap_resource_old(device_t dev, int type, struct resource *r,
struct resource_map *map);
-int bus_release_resource_new(device_t dev, struct resource *r);
+int bus_release_resource_old(device_t dev, int type, int rid,
+ struct resource *r);
#define _BUS_API_MACRO(_1, _2, _3, _4, _5, NAME, ...) NAME
@@ -646,8 +644,8 @@
bus_unmap_resource)(__VA_ARGS__)
#define bus_release_resource(...) \
- _BUS_API_MACRO(__VA_ARGS__, INVALID, bus_release_resource, \
- INVALID, bus_release_resource_new)(__VA_ARGS__)
+ _BUS_API_MACRO(__VA_ARGS__, INVALID, bus_release_resource_old, \
+ INVALID, bus_release_resource)(__VA_ARGS__)
/*
* Access functions for device.
diff --git a/sys/x86/include/legacyvar.h b/sys/x86/include/legacyvar.h
--- a/sys/x86/include/legacyvar.h
+++ b/sys/x86/include/legacyvar.h
@@ -60,8 +60,8 @@
u_int flags);
int legacy_pcib_adjust_resource(device_t dev, device_t child,
struct resource *r, rman_res_t start, rman_res_t end);
-int legacy_pcib_release_resource(device_t dev, device_t child, int type,
- int rid, struct resource *r);
+int legacy_pcib_release_resource(device_t dev, device_t child,
+ struct resource *r);
int legacy_pcib_activate_resource(device_t dev, device_t child,
struct resource *r);
int legacy_pcib_deactivate_resource(device_t dev, device_t child,
diff --git a/sys/x86/isa/isa.c b/sys/x86/isa/isa.c
--- a/sys/x86/isa/isa.c
+++ b/sys/x86/isa/isa.c
@@ -130,13 +130,12 @@
}
int
-isa_release_resource(device_t bus, device_t child, int type, int rid,
- struct resource *r)
+isa_release_resource(device_t bus, device_t child, struct resource *r)
{
struct isa_device* idev = DEVTOISA(child);
struct resource_list *rl = &idev->id_resources;
- return resource_list_release(rl, bus, child, type, rid, r);
+ return resource_list_release(rl, bus, child, r);
}
/*
diff --git a/sys/x86/pci/pci_bus.c b/sys/x86/pci/pci_bus.c
--- a/sys/x86/pci/pci_bus.c
+++ b/sys/x86/pci/pci_bus.c
@@ -617,13 +617,12 @@
}
int
-legacy_pcib_release_resource(device_t dev, device_t child, int type, int rid,
- struct resource *r)
+legacy_pcib_release_resource(device_t dev, device_t child, struct resource *r)
{
- if (type == PCI_RES_BUS)
- return (pci_domain_release_bus(0, child, rid, r));
- return (bus_generic_release_resource(dev, child, type, rid, r));
+ if (rman_get_type(r) == PCI_RES_BUS)
+ return (pci_domain_release_bus(0, child, r));
+ return (bus_generic_release_resource(dev, child, r));
}
int
File Metadata
Details
Attached
Mime Type
text/plain
Expires
Mon, Apr 28, 6:43 PM (10 h, 54 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
17832636
Default Alt Text
D44131.diff (67 KB)
Attached To
Mode
D44131: new-bus: Remove the 'rid' and 'type' arguments from BUS_RELEASE_RESOURCE
Attached
Detach File
Event Timeline
Log In to Comment