Author: jhb
Date: Mon May  2 14:13:12 2011
New Revision: 221324
URL: http://svn.freebsd.org/changeset/base/221324

Log:
  Add implementations of BUS_ADJUST_RESOURCE() to the PCI bus driver,
  generic PCI-PCI bridge driver, x86 nexus driver, and x86 Host to PCI bridge
  drivers.

Modified:
  head/sys/amd64/pci/pci_bus.c
  head/sys/dev/acpica/acpi_pcib_acpi.c
  head/sys/dev/pci/pci.c
  head/sys/dev/pci/pci_pci.c
  head/sys/i386/pci/pci_bus.c
  head/sys/x86/x86/mptable_pci.c
  head/sys/x86/x86/nexus.c

Modified: head/sys/amd64/pci/pci_bus.c
==============================================================================
--- head/sys/amd64/pci/pci_bus.c        Mon May  2 13:58:40 2011        
(r221323)
+++ head/sys/amd64/pci/pci_bus.c        Mon May  2 14:13:12 2011        
(r221324)
@@ -348,6 +348,7 @@ static device_method_t legacy_pcib_metho
        DEVMETHOD(bus_read_ivar,        legacy_pcib_read_ivar),
        DEVMETHOD(bus_write_ivar,       legacy_pcib_write_ivar),
        DEVMETHOD(bus_alloc_resource,   legacy_pcib_alloc_resource),
+       DEVMETHOD(bus_adjust_resource,  bus_generic_adjust_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),

Modified: head/sys/dev/acpica/acpi_pcib_acpi.c
==============================================================================
--- head/sys/dev/acpica/acpi_pcib_acpi.c        Mon May  2 13:58:40 2011        
(r221323)
+++ head/sys/dev/acpica/acpi_pcib_acpi.c        Mon May  2 14:13:12 2011        
(r221324)
@@ -100,6 +100,7 @@ static device_method_t acpi_pcib_acpi_me
     DEVMETHOD(bus_read_ivar,           acpi_pcib_read_ivar),
     DEVMETHOD(bus_write_ivar,          acpi_pcib_write_ivar),
     DEVMETHOD(bus_alloc_resource,      acpi_pcib_acpi_alloc_resource),
+    DEVMETHOD(bus_adjust_resource,     bus_generic_adjust_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),

Modified: head/sys/dev/pci/pci.c
==============================================================================
--- head/sys/dev/pci/pci.c      Mon May  2 13:58:40 2011        (r221323)
+++ head/sys/dev/pci/pci.c      Mon May  2 14:13:12 2011        (r221324)
@@ -142,6 +142,7 @@ static device_method_t pci_methods[] = {
        DEVMETHOD(bus_get_resource,     bus_generic_rl_get_resource),
        DEVMETHOD(bus_delete_resource,  pci_delete_resource),
        DEVMETHOD(bus_alloc_resource,   pci_alloc_resource),
+       DEVMETHOD(bus_adjust_resource,  bus_generic_adjust_resource),
        DEVMETHOD(bus_release_resource, bus_generic_rl_release_resource),
        DEVMETHOD(bus_activate_resource, pci_activate_resource),
        DEVMETHOD(bus_deactivate_resource, pci_deactivate_resource),

Modified: head/sys/dev/pci/pci_pci.c
==============================================================================
--- head/sys/dev/pci/pci_pci.c  Mon May  2 13:58:40 2011        (r221323)
+++ head/sys/dev/pci/pci_pci.c  Mon May  2 14:13:12 2011        (r221324)
@@ -73,6 +73,7 @@ static device_method_t pcib_methods[] = 
     DEVMETHOD(bus_read_ivar,           pcib_read_ivar),
     DEVMETHOD(bus_write_ivar,          pcib_write_ivar),
     DEVMETHOD(bus_alloc_resource,      pcib_alloc_resource),
+    DEVMETHOD(bus_adjust_resource,     bus_generic_adjust_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),

Modified: head/sys/i386/pci/pci_bus.c
==============================================================================
--- head/sys/i386/pci/pci_bus.c Mon May  2 13:58:40 2011        (r221323)
+++ head/sys/i386/pci/pci_bus.c Mon May  2 14:13:12 2011        (r221324)
@@ -565,6 +565,7 @@ static device_method_t legacy_pcib_metho
        DEVMETHOD(bus_read_ivar,        legacy_pcib_read_ivar),
        DEVMETHOD(bus_write_ivar,       legacy_pcib_write_ivar),
        DEVMETHOD(bus_alloc_resource,   legacy_pcib_alloc_resource),
+       DEVMETHOD(bus_adjust_resource,  bus_generic_adjust_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),

Modified: head/sys/x86/x86/mptable_pci.c
==============================================================================
--- head/sys/x86/x86/mptable_pci.c      Mon May  2 13:58:40 2011        
(r221323)
+++ head/sys/x86/x86/mptable_pci.c      Mon May  2 14:13:12 2011        
(r221324)
@@ -116,6 +116,7 @@ static device_method_t mptable_hostb_met
        DEVMETHOD(bus_read_ivar,        legacy_pcib_read_ivar),
        DEVMETHOD(bus_write_ivar,       legacy_pcib_write_ivar),
        DEVMETHOD(bus_alloc_resource,   legacy_pcib_alloc_resource),
+       DEVMETHOD(bus_adjust_resource,  bus_generic_adjust_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),

Modified: head/sys/x86/x86/nexus.c
==============================================================================
--- head/sys/x86/x86/nexus.c    Mon May  2 13:58:40 2011        (r221323)
+++ head/sys/x86/x86/nexus.c    Mon May  2 14:13:12 2011        (r221324)
@@ -100,6 +100,8 @@ static device_t nexus_add_child(device_t
                                int unit);
 static struct resource *nexus_alloc_resource(device_t, device_t, int, int *,
                                              u_long, u_long, u_long, u_int);
+static int nexus_adjust_resource(device_t, device_t, int, struct resource *,
+                                 u_long, u_long);
 #ifdef SMP
 static int nexus_bind_intr(device_t, device_t, struct resource *, int);
 #endif
@@ -144,6 +146,7 @@ static device_method_t nexus_methods[] =
        DEVMETHOD(bus_print_child,      nexus_print_child),
        DEVMETHOD(bus_add_child,        nexus_add_child),
        DEVMETHOD(bus_alloc_resource,   nexus_alloc_resource),
+       DEVMETHOD(bus_adjust_resource,  nexus_adjust_resource),
        DEVMETHOD(bus_release_resource, nexus_release_resource),
        DEVMETHOD(bus_activate_resource, nexus_activate_resource),
        DEVMETHOD(bus_deactivate_resource, nexus_deactivate_resource),
@@ -332,6 +335,23 @@ nexus_add_child(device_t bus, u_int orde
        return(child);
 }
 
+static struct rman *
+nexus_rman(int type)
+{
+       switch (type) {
+       case SYS_RES_IRQ:
+               return (&irq_rman);
+       case SYS_RES_DRQ:
+               return (&drq_rman);
+       case SYS_RES_IOPORT:
+               return (&port_rman);
+       case SYS_RES_MEMORY:
+               return (&mem_rman);
+       default:
+               return (NULL);
+       }
+}
+
 /*
  * Allocate a resource on behalf of child.  NB: child is usually going to be a
  * child of one of our descendants, not a direct child of nexus0.
@@ -364,27 +384,9 @@ nexus_alloc_resource(device_t bus, devic
        }
 
        flags &= ~RF_ACTIVE;
-
-       switch (type) {
-       case SYS_RES_IRQ:
-               rm = &irq_rman;
-               break;
-
-       case SYS_RES_DRQ:
-               rm = &drq_rman;
-               break;
-
-       case SYS_RES_IOPORT:
-               rm = &port_rman;
-               break;
-
-       case SYS_RES_MEMORY:
-               rm = &mem_rman;
-               break;
-
-       default:
-               return 0;
-       }
+       rm = nexus_rman(type);
+       if (rm == NULL)
+               return (NULL);
 
        rv = rman_reserve_resource(rm, start, end, count, flags, child);
        if (rv == 0)
@@ -402,6 +404,20 @@ nexus_alloc_resource(device_t bus, devic
 }
 
 static int
+nexus_adjust_resource(device_t bus, device_t child, int type,
+    struct resource *r, u_long start, u_long end)
+{
+       struct rman *rm;
+
+       rm = nexus_rman(type);
+       if (rm == NULL)
+               return (ENXIO);
+       if (!rman_is_region_manager(r, rm))
+               return (EINVAL);
+       return (rman_adjust_resource(r, start, end));
+}
+
+static int
 nexus_activate_resource(device_t bus, device_t child, int type, int rid,
                        struct resource *r)
 {
_______________________________________________
svn-src-head@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-head
To unsubscribe, send any mail to "svn-src-head-unsubscr...@freebsd.org"

Reply via email to