On 02/06/12 10:06, John Baldwin wrote:
On Monday, February 06, 2012 10:40:54 am Nathan Whitehorn wrote:
On 02/06/12 06:53, John Baldwin wrote:
On Sunday, February 05, 2012 11:54:26 am Nathan Whitehorn wrote:
Author: nwhitehorn
Date: Sun Feb 5 16:54:26 2012
New Revision: 231026
URL: http://svn.freebsd.org/changeset/base/231026
Log:
Make sure to remap adjusted resources.
Hmm, I had considered remapping adjusted resources an invalid operation (i.e.
should fail with EINVAL). I believe that the NEW_PCIB code should only apply
this API to resources backing the resource windows in PCI-PCI bridges and that
those resources should never have RF_ACTIVE set. Are you seeing calls of it
for active resources?
No, I was just trying to be safe here, since it wasn't clear that that
was invalid. I'm happy to replace the contents of the if with return
EINVAL or something.
Yeah, I would do that, perhaps with a KASSERT() as well so it panics in HEAD.
How does this look? I've kept both the EINVAL and the KASSERT.
-Nathan
Index: ofw_pci.c
===================================================================
--- ofw_pci.c (revision 231026)
+++ ofw_pci.c (working copy)
@@ -431,8 +431,12 @@
{
struct rman *rm = NULL;
struct ofw_pci_softc *sc = device_get_softc(bus);
- int error;
+ KASSERT(!(rman_get_flags(res) & RF_ACTIVE),
+ ("active resources cannot be adjusted"));
+ if (rman_get_flags(res) & RF_ACTIVE)
+ return (EINVAL);
+
switch (type) {
case SYS_RES_MEMORY:
rm = &sc->sc_mem_rman;
@@ -447,21 +451,7 @@
if (!rman_is_region_manager(res, rm))
return (EINVAL);
- error = rman_adjust_resource(res, start, end);
- if (error)
- return (error);
-
- if (rman_get_flags(res) & RF_ACTIVE) {
- /* Remap memory resources */
- error = ofw_pci_deactivate_resource(bus, child, type,
- rman_get_rid(res), res);
- if (error)
- return (error);
- error = ofw_pci_activate_resource(bus, child, type,
- rman_get_rid(res), res);
- }
-
- return (error);
+ return (rman_adjust_resource(res, start, end));
}
_______________________________________________
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"