Home | History | Annotate | Download | only in acpi
History log of /src/sys/dev/acpi/acpi_resource.c
RevisionDateAuthorComments
 1.44  02-Jan-2025  andvar acpi(4): validate IO/FixedIO resource base address and length.

Ensure that the base address and length of an IO/FixedIO resource reported by
ACPI do not exceed a 16-bit value plus one (to account for the length).
If an ACPI resource reports a base address of 0xFFFF, it likely indicates that
the device is inoperable or invalid for some reason.

This can cause a kernel with DIAGNOSTIC enabled to panic with the error:
extent_alloc_region: region lies outside extent, even on an otherwise fully
functional system.

In my case, the mpu(4) driver reported a 0xFFFF base address, likely due to
a missing MIDI port or the absence of an actual MIDI UART device,
despite the device being defined as an ACPI resource.

Since this issue affects only DIAGNOSTIC enabled kernels and appears to be rare
(likely caused by a buggy BIOS), I believe that pullups are unnecessary.

lgtm jmcneill
 1.43  30-Jun-2024  jmcneill acpi: Ignore producer/consumer bit for fixed memory resources.

The requirement to honour the producer/consumer bit in fixed memory
resource descriptors was dropped at some point in a revision to the ACPI
2.0 specification because too many firmware implementations got it wrong.
 1.42  07-Aug-2021  jmcneill branches: 1.42.6; 1.42.12;
acpi: Add acpi_resource_parse_any().

Like acpi_resource_parse(), but doesn't exclude "produced" resources.
 1.41  31-Dec-2019  jmcneill Rely on 32/64-bit overflow to calculate translation offsets. Store this
as a separate ar_xbase field in acpi_mem instead of having separate
ar_offset and ar_decode fields.
 1.40  31-Dec-2019  jmcneill Include device decoding type in acpi_mem resources
 1.39  31-Dec-2019  jmcneill Fetch bus_dma tags when acpi devnodes are created. They do not change
and this allows MD code to create more complex tags without being
concerned with the tag being destroyed later. While here, capture
translations offsets for address32/address64 resources.
 1.38  25-Oct-2018  jmcneill Add support for 64-bit memory resources.
 1.37  27-Jul-2015  msaitoh branches: 1.37.16; 1.37.18;
Add ACPI_RESOURCE_TYPE_END_TAG and ACPI_RESOURCE_TYPE_ADDRESS64.
 1.36  13-Apr-2015  christos sync with new acpica struct shuffling.
 1.35  30-Jun-2011  wiz branches: 1.35.12; 1.35.30;
dependant -> dependent
 1.34  15-Jun-2011  jruoho Do not entirely bypass the printfs during resource parsing, as many drivers
rely on those for their autoconf(9) messages. Instead add a "quiet" option.
 1.33  15-Jun-2011  jruoho Remove printouts that mess with the autoconf(9).
 1.32  05-Mar-2010  jruoho branches: 1.32.8;
Remove <dev/acpi/acpica.h> from all files. It is included from
<dev/acpi/acpivar.h>. Ditto for <dev/sysmon/sysmonvar.h>, <sys/bus.h>,
<dev/pci/pcivar.h>, and <dev/isa/isavar.h>.

Also nuke a lot of unused and invalid headers. Some of these are audibly
provided by standard headers (namely <sys/param.h> and <sys/device.h>), some
have nothing to do with ACPI devices (e.g. <sys/syslog.h>), and some are
nonexistent local includes (e.g. "mpu_ym.h"). Moreoever, try to group the
includes into their respective blocks.

Tested with GENERIC and ALL (i386). No functional change.
 1.31  02-Mar-2010  jruoho Format string cosmetics (mainly from %d to %u).
 1.30  16-Sep-2009  mlelstv branches: 1.30.2;
Allow for 'options ACPI_DEBUG' by providing module declarations
and using memory allocation macros instead of calling AcpiOs* stubs
directly.
 1.29  13-Jul-2009  kiyohara ACPI resource supports Extended IRQ From FreeBSD.
 1.28  12-May-2009  cegger struct device * -> device_t, no functional changes intended.
 1.27  17-Feb-2009  jmcneill Cut the amount of spam from acpi devices in roughly half by printing
resources on the same line as autoconf messages. Things like:
pcppi1 at acpi0 (SPKR, PNP0800)
pcppi1: io 0x61
become:
pcppi1 at acpi0 (SPKR, PNP0800): io 0x61
 1.26  07-Apr-2008  jmcneill branches: 1.26.4; 1.26.12; 1.26.14; 1.26.18; 1.26.22;
Cosmetic aprintification fix, as noted by Thomas Klausner on current-users
 1.25  05-Apr-2008  cegger use aprint_*_dev and device_xname
 1.24  15-Dec-2007  perry branches: 1.24.6;
__FUNCTION__ -> __func__
 1.23  01-Dec-2007  jmcneill branches: 1.23.2; 1.23.6;
aprintify
 1.22  28-Sep-2007  njoly branches: 1.22.4;
Add ACPI address32 resource type support (DWord Address Space
Descriptor), for fixed size io and mem.

Fix hpet@acpi attachement on Dell Poweredge 860.
Tested by Wouter Schoot, thanks.

While here:
- Update some indentation
- Correct function check
- Add missing break
- Update wrong debug message

Reviewed by cube.
 1.21  16-Nov-2006  christos branches: 1.21.8; 1.21.22; 1.21.24; 1.21.26;
__unused removal on arguments; approved by core.
 1.20  12-Oct-2006  christos - sprinkle __unused on function decls.
- fix a couple of unused bugs
- no more -Wno-unused for i386
 1.19  29-Jan-2006  kochi branches: 1.19.18; 1.19.20;
adapt for ACPI-CA 20060113
 1.18  11-Dec-2005  christos branches: 1.18.2;
merge ktrace-lwp.
 1.17  29-May-2005  christos branches: 1.17.2;
Sprinkle const freely and delete unnecessary casts.
 1.16  27-Feb-2005  perry nuke trailing whitespace
 1.15  12-Apr-2004  kochi branches: 1.15.4; 1.15.6;
fix compilation when ACPI_DEBUG is not set.
pointed out by Sverre Froyen.
 1.14  11-Apr-2004  kochi Clean up memory allocated during autoconfiguration
 1.13  11-Apr-2004  kochi + add prototype
+ designated initializers
+ call callback functions only when defined
 1.12  11-Apr-2004  kochi change acpi_resource_parse API to support _PRS parsing as well as _CRS
 1.11  11-Apr-2004  kochi return (x) -> return x
use consitent variable name for ACPI_STATUS
 1.10  10-Apr-2004  kochi whitespace nit
 1.9  03-Nov-2003  mycroft More cleanup:
* Use ACPI_FAILURE() and ACPI_SUCCESS().
* Output exception strings in a few more places.
 1.8  03-Nov-2003  mycroft Clean up some messages:
* Use AcpiFormatException() in a bunch of places.
* acpi_resource_parse() already prints an error, so don't do it in the callers.
 1.7  02-Nov-2003  jdolecek acpi_res_parse_ioport(): if the added entry is next to a previous I/O port
entry, just expand the previous entry instead of adding separate mapping

apparently some BIOSes make separate I/O port entries like this, and
some drivers then fail to attach; this change fixes mappings like

fdc0: io 0x3f2-0x3f3,0x3f4-0x3f5,0x3f7 irq 6 drq 2

to

fdc0: io 0x3f2-0x3f5,0x3f7 irq 6 drq 2

change tested by Bernd Ernesti
 1.6  05-Mar-2003  christos branches: 1.6.2;
use M_ACPI where appropriate.
 1.5  28-Dec-2002  matt Make sure we record the type of irq as well as its number.
 1.4  15-Jun-2002  thorpej Update for acpica-unix-20020612. From Takayoshi Kochi.
 1.3  01-Jun-2002  lukem SIMPLEQ rototill:
- implement SIMPLEQ_REMOVE(head, elm, type, field). whilst it's O(n),
this mirrors the functionality of SLIST_REMOVE() (the other
singly-linked list type) and FreeBSD's STAILQ_REMOVE()
- remove the unnecessary elm arg from SIMPLEQ_REMOVE_HEAD().
this mirrors the functionality of SLIST_REMOVE_HEAD() (the other
singly-linked list type) and FreeBSD's STAILQ_REMOVE_HEAD()
- remove notes about SIMPLEQ not supporting arbitrary element removal
- use SIMPLEQ_FOREACH() instead of home-grown for loops
- use SIMPLEQ_EMPTY() appropriately
- use SIMPLEQ_*() instead of accessing sqh_first,sqh_last,sqe_next directly
- reorder manual page; be consistent about how the types are listed
- other minor cleanups
 1.2  13-Nov-2001  lukem branches: 1.2.2; 1.2.10;
add RCSID
 1.1  29-Sep-2001  thorpej branches: 1.1.2; 1.1.4;
Add code to parse ACPI bus resources.
 1.1.4.5  29-Dec-2002  thorpej Sync with HEAD.
 1.1.4.4  20-Jun-2002  nathanw Catch up to -current.
 1.1.4.3  14-Nov-2001  nathanw Catch up to -current.
 1.1.4.2  08-Oct-2001  nathanw Catch up to -current.
 1.1.4.1  29-Sep-2001  nathanw file acpi_resource.c was added on branch nathanw_sa on 2001-10-08 21:18:06 +0000
 1.1.2.2  01-Oct-2001  fvdl Catch up with -current.
 1.1.2.1  29-Sep-2001  fvdl file acpi_resource.c was added on branch thorpej-devvp on 2001-10-01 12:44:16 +0000
 1.2.10.1  20-Jun-2002  gehenna catch up with -current.
 1.2.2.3  23-Jun-2002  jdolecek catch up with -current on kqueue branch
 1.2.2.2  10-Jan-2002  thorpej Sync kqueue branch with -current.
 1.2.2.1  13-Nov-2001  thorpej file acpi_resource.c was added on branch kqueue on 2002-01-10 19:52:53 +0000
 1.6.2.5  10-Nov-2005  skrll Sync with HEAD. Here we go again...
 1.6.2.4  04-Mar-2005  skrll Sync with HEAD.

Hi Perry!
 1.6.2.3  21-Sep-2004  skrll Fix the sync with head I botched.
 1.6.2.2  18-Sep-2004  skrll Sync with HEAD.
 1.6.2.1  03-Aug-2004  skrll Sync with HEAD
 1.15.6.1  19-Mar-2005  yamt sync with head. xen and whitespace. xen part is not finished.
 1.15.4.1  29-Apr-2005  kent sync with -current
 1.17.2.5  21-Jan-2008  yamt sync with head
 1.17.2.4  07-Dec-2007  yamt sync with head
 1.17.2.3  27-Oct-2007  yamt sync with head.
 1.17.2.2  30-Dec-2006  yamt sync with head.
 1.17.2.1  21-Jun-2006  yamt sync with head.
 1.18.2.1  01-Feb-2006  yamt sync with head.
 1.19.20.2  10-Dec-2006  yamt sync with head.
 1.19.20.1  22-Oct-2006  yamt sync with head
 1.19.18.1  18-Nov-2006  ad Sync with head.
 1.21.26.1  06-Oct-2007  yamt sync with head.
 1.21.24.2  09-Jan-2008  matt sync with HEAD
 1.21.24.1  06-Nov-2007  matt sync with HEAD
 1.21.22.2  01-Dec-2007  jmcneill Sync with HEAD.
 1.21.22.1  02-Oct-2007  joerg Sync with HEAD.
 1.21.8.1  09-Oct-2007  ad Sync with head.
 1.22.4.2  27-Dec-2007  mjf Sync with HEAD.
 1.22.4.1  08-Dec-2007  mjf Sync with HEAD.
 1.23.6.1  02-Jan-2008  bouyer Sync with HEAD
 1.23.2.1  26-Dec-2007  ad Sync with head.
 1.24.6.1  02-Jun-2008  mjf Sync with HEAD.
 1.26.22.1  21-Apr-2010  matt sync to netbsd-5
 1.26.18.2  23-Jul-2009  jym Sync with HEAD.
 1.26.18.1  13-May-2009  jym Sync with HEAD.

Commit is split, to avoid a "too many arguments" protocol error.
 1.26.14.1  01-May-2009  snj Pull up following revision(s) (requested by jmcneill in ticket #498):
sys/dev/acpi/acpi_ec.c: revision 1.53
sys/dev/acpi/acpi_resource.c: revision 1.27
sys/dev/acpi/atppc_acpi.c: revision 1.16
sys/dev/acpi/attimer_acpi.c: revision 1.12
sys/dev/acpi/com_acpi.c: revision 1.28
sys/dev/acpi/fdc_acpi.c: revision 1.35
sys/dev/acpi/hpet_acpi.c: revision 1.4
sys/dev/acpi/joy_acpi.c: revision 1.9
sys/dev/acpi/lpt_acpi.c: revision 1.18
sys/dev/acpi/mpu_acpi.c: revision 1.9
sys/dev/acpi/pckbc_acpi.c: revision 1.31
sys/dev/acpi/pcppi_acpi.c: revision 1.11
sys/dev/acpi/ug_acpi.c: revision 1.5
sys/dev/acpi/wss_acpi.c: revision 1.20
sys/dev/acpi/ym_acpi.c: revision 1.6
Cut the amount of spam from acpi devices in roughly half by printing
resources on the same line as autoconf messages. Things like:
pcppi1 at acpi0 (SPKR, PNP0800)
pcppi1: io 0x61
become:
pcppi1 at acpi0 (SPKR, PNP0800): io 0x61
 1.26.12.1  03-Mar-2009  skrll Sync with HEAD.
 1.26.4.4  11-Mar-2010  yamt sync with head
 1.26.4.3  18-Jul-2009  yamt sync with head.
 1.26.4.2  16-May-2009  yamt sync with head
 1.26.4.1  04-May-2009  yamt sync with head.
 1.30.2.1  30-Apr-2010  uebayasi Sync with HEAD.
 1.32.8.1  23-Jun-2011  cherry Catchup with rmind-uvmplock merge.
 1.35.30.2  22-Sep-2015  skrll Sync with HEAD
 1.35.30.1  06-Jun-2015  skrll Sync with HEAD
 1.35.12.1  03-Dec-2017  jdolecek update from HEAD
 1.37.18.2  08-Apr-2020  martin Merge changes from current as of 20200406
 1.37.18.1  10-Jun-2019  christos Sync with HEAD
 1.37.16.1  26-Nov-2018  pgoyette Sync with HEAD, resolve a couple of conflicts
 1.42.12.1  01-Jul-2024  perseant Sync with HEAD.
 1.42.6.1  03-Jul-2024  martin Pull up following revision(s) (requested by jmcneill in ticket #735):

sys/dev/pci/pci_resource.c: revision 1.5
sys/arch/arm/pci/pci_msi_machdep.c: revision 1.10
sys/arch/aarch64/include/vmparam.h: revision 1.21
sys/dev/acpi/acpi_resource.c: revision 1.43

pci_resource: Make unexpected bus numbers in bridges non-fatal.

Firmware bugs happen. Log a warning and continue instead of panicing.
acpi: Ignore producer/consumer bit for fixed memory resources.

The requirement to honour the producer/consumer bit in fixed memory
resource descriptors was dropped at some point in a revision to the ACPI
2.0 specification because too many firmware implementations got it wrong.

aarch64: Bump VM_PHYSSEG_MAX to match DRAM_BANKS / FDT_MEMORY_RANGES.

On aarch64 there is a single free list, so VM_PHYSSEG_MAX needs to be
the same as FDT_MEMORY_RANGES (which needs to be the same as DRAM_BANKS).

Future cleanup should be done to fold these into a single define.

arm: pci: Fix ITS ID lookup for MSIs.
pci_get_frameid expects a BDF requestor ID as input, not a Device ID.

Fixes MSI/MSI-X support on Ampere Altra systems.

RSS XML Feed