Date: Thu, 26 Apr 2007 11:48:22 -0400 From: John Baldwin <jhb@freebsd.org> To: Nate Lawson <nate@root.org> Cc: cvs-src@freebsd.org, src-committers@freebsd.org, cvs-all@freebsd.org Subject: Re: cvs commit: src/sys/dev/acpica acpi.c Message-ID: <200704261148.23501.jhb@freebsd.org> In-Reply-To: <462FCEB9.40406@root.org> References: <20070425162233.8CCFC16A59E@hub.freebsd.org> <200704251356.35785.jhb@freebsd.org> <462FCEB9.40406@root.org>
next in thread | previous in thread | raw e-mail | index | archive | help
On Wednesday 25 April 2007 05:57:13 pm Nate Lawson wrote: > John Baldwin wrote: > > On Wednesday 25 April 2007 12:48:50 pm Nate Lawson wrote: > >> John Baldwin wrote: > >>> jhb 2007-04-25 16:22:18 UTC > >>> > >>> FreeBSD src repository > >>> > >>> Modified files: > >>> sys/dev/acpica acpi.c > >>> Log: > >>> Use a tighter check to see if a resource allocation request is for a > >>> specific request and thus should first try to be allocated from the > >>> sys_resource pool. This avoids using the sys_resource pool for wildcard > >>> requests that have bounded ranges coming from cbb(4) and Host-PCI > > pcib(4) > >>> drivers. > >>> > >>> Tested by: Andrea Bittau <a.bittau of cs.ucl.ac.uk fame> > >>> Sleuthing by: Andrea Bittau as well > >>> > >>> Revision Changes Path > >>> 1.235 +1 -1 src/sys/dev/acpica/acpi.c > >>> > >>> > >>> Index: src/sys/dev/acpica/acpi.c > >>> diff -u src/sys/dev/acpica/acpi.c:1.234 src/sys/dev/acpica/acpi.c:1.235 > >>> --- src/sys/dev/acpica/acpi.c:1.234 Thu Mar 22 18:16:40 2007 > >>> +++ src/sys/dev/acpica/acpi.c Wed Apr 25 16:22:18 2007 > >>> @@ -1034,7 +1034,7 @@ > >>> * the request from our system resource regions. If we can't, pass > > the > >>> * request up to the parent. > >>> */ > >>> - if (!(start == 0UL && end == ~0UL) && rm != NULL) > >>> + if (start + count - 1 == end && rm != NULL) > >>> res = rman_reserve_resource(rm, start, end, count, flags & ~RF_ACTIVE, > >>> child); > >>> if (res == NULL) { > >> I think I'll test this to see if it helps my via 8235 ata survive boot. > > > > I wonder if in fact the algorithm shouldn't be changed to always try to alloc > > the resource from the parent first, and only fall back to the sys_resource > > rmans if that fails? In theory any resource requests that should be done via > > sys_resource will fail the request in the parent, yes? > > > > Yes, that should be ok but why not do local first and then push up tree > if it fails? Semantically, a child of your bus requested the resource > so most of the time you should be able to handle it. Very few resources should really be alloc'd from sysresource though. No PCI device should be alloc'ing from that for example. It's really only for special drivers like IPMI (when it's not enumerated as an ACPI device, but only via SMBIOS tables) where a system resource is reserving it because it is in use and needs to keep another device (like on PCI where resources aren't fixed) from using it. Thus, really only a specific allocation of a resource in sys_resource should ever alloc from that, and all those specific allocations will fail up in nexus since sys_resource has already claimed those regions. -- John Baldwin
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200704261148.23501.jhb>