Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 26 Jan 2004 20:26:28 -0700 (MST)
From:      "M. Warner Losh" <imp@bsdimp.com>
To:        nate@root.org
Cc:        arch@freebsd.org
Subject:   Re: newbus ioport usage
Message-ID:  <20040126.202628.39465078.imp@bsdimp.com>
In-Reply-To: <20040126191657.B31071@root.org>
References:  <20040126165523.W30461@root.org> <20040126.181720.15264443.imp@bsdimp.com> <20040126191657.B31071@root.org>

next in thread | previous in thread | raw e-mail | index | archive | help
In message: <20040126191657.B31071@root.org>
            Nate Lawson <nate@root.org> writes:
: On Mon, 26 Jan 2004, M. Warner Losh wrote:
: > In message: <20040126165523.W30461@root.org>
: >             Nate Lawson <nate@root.org> writes:
: > : Ok, I'm doing the set/alloc and it works.  However, one weird thing.  If I
: > : allocate all ports at boot time, it succeeds.  My driver goes through
: > : multiple release/allocate cycles and it all works as expected.  However if
: > : I boot and attach to only one of the registers, subsequent attempts to
: > : attach the second one fail.  The resources are 2 IO ports, 0x101c and
: > : 0x101d.  Both are 1 byte.
: >
: > Deos devinfo -r show any cause for the problem?  Maybe you aren't
: > releasing them properly?  Also, why not allocate them as a block of 2?
: 
: Ok, I've found what's going on.  Apparently my acpi_sysresource0
: pseudo-device is claiming all resources in its _CRS method.  If I don't
: boot with 0x101c and 0x101d attached, it attaches to 0x1010-0x109d.  But
: if I boot attaching them, it reserves less of the range.
: 
:     acpi_cpu0
:         I/O ports:
:             0x101c
:             0x101d
: 
:     acpi_sysresource0
:         I/O ports:
:             0x10-0x1f
:             0x24-0x25
:             0x28-0x29
:             0x2c-0x2d
:             0x2e-0x2f
:             0x30-0x31
:             0x34-0x35
:             0x38-0x39
:             0x3c-0x3d
:             0x50-0x53
:             0x72-0x77
:             0x90-0x9f
:             0xa4-0xa5
:             0xa8-0xa9
:             0xac-0xad
:             0xb0-0xb5
:             0xb8-0xb9
:             0xbc-0xbd
:             0x101e-0x109d
:             0x1180-0x11bf
:             0x15e0-0x15ef
:             0x1600-0x167f
: 
: I'm not sure of a way around this.  All ASL I've seen keeps these
: registers contiguous so I could whack out a block of 8 of them, although
: that doesn't seem correct.  Perhaps acpi_cpu should be able to override
: the acpi_sysresource0 allocations, maybe by asking it for the resource if
: bus_resource_alloc returns NULL.  Thoughts?

Have acpi bus own the resources that acpi_sysresource0 uses.  Allow
children to get at parts of that as they see fit.

Warner



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20040126.202628.39465078.imp>