OK, I thought of another way to look at dmesg output. Since everything works when I boot from a live USB, I went ahead and did that and save the dmesg output, then diff-ed the two. There are a lot of little differences when I look at the diffs, but the thing that stands out to me is this:
$ grep -i sdhci dmesg.installed.txt dmesg.liveusb.txt
dmesg.installed.txt:sdhci: Secure Digital Host Controller Interface driver
dmesg.installed.txt:sdhci: Copyright(c) Pierre Ossman
dmesg.liveusb.txt:sdhci: Secure Digital Host Controller Interface driver
dmesg.liveusb.txt:sdhci: Copyright(c) Pierre Ossman
dmesg.liveusb.txt:sdhci-pci 0000:00:10.0: SDHCI controller found [8086:2294] (rev 21)
dmesg.liveusb.txt:sdhci-pci 0000:00:10.0: No vmmc regulator found
dmesg.liveusb.txt:sdhci-pci 0000:00:10.0: No vqmmc regulator found
dmesg.liveusb.txt:mmc0: SDHCI controller on PCI [0000:00:10.0] using ADMA
OK, so the installed version is failing to detect an "SDHCI controller." But why? All I could think of is that it's something PCI-related, based on the name "sdhci-pci", and when I grep out and diff all the PCI-related lines from the two dmesg files I do get some differences (see below), perhaps starting with the fact that the installed version (left file) is apparently not using mmconfig (although it's mentioned again two lines later). Can anyone advise on where to go from here?
1c1
< e820: [mem 0x7ee00000-0xe00f7fff] available for PCI devices
---
> e820: [mem 0x80000000-0xdfffffff] available for PCI devices
5,8c5
< PCI: not using MMCONFIG
< PCI: Using configuration type 1 for base access
< PCI: MMCONFIG for domain 0000 [bus 00-3f] at [mem 0xe0000000-0xe3ffffff] (base 0xe0000000)
< PCI: MMCONFIG at [mem 0xe0000000-0xe3ffffff] reserved in ACPI motherboard resources
---
> PCI: MMCONFIG at [mem 0xe0000000-0xe3ffffff] reserved in E820
9a7
> PCI: Using configuration type 1 for base access
29a28,30
> pci 0000:00:10.0: [8086:2294] type 00 class 0x080501
> pci 0000:00:10.0: reg 0x10: [mem 0x91321000-0x91321fff]
> pci 0000:00:10.0: PME# supported from D0 D3hot
33a35,38
> pci 0000:00:18.0: [8086:22c0] type 00 class 0x080102
> pci 0000:00:18.0: reg 0x10: [mem 0x91318000-0x9131bfff]
> pci 0000:00:18.1: [8086:22c1] type 00 class 0x0c8000
> pci 0000:00:18.1: reg 0x10: [mem 0x9131f000-0x9131ffff]
47a53,56
> pci 0000:00:1e.0: [8086:2286] type 00 class 0x080102
> pci 0000:00:1e.0: reg 0x10: [mem 0x91314000-0x91317fff]
> pci 0000:00:1e.4: [8086:228c] type 00 class 0x078000
> pci 0000:00:1e.4: reg 0x10: [mem 0x9131e000-0x9131efff]
60,66c69,75
< ACPI: PCI Interrupt Link [LNKA] (IRQs 3 4 5 6 10 11 12 14 15) *0, disabled.
< ACPI: PCI Interrupt Link [LNKB] (IRQs 3 4 5 6 10 11 12 14 15) *0, disabled.
< ACPI: PCI Interrupt Link [LNKC] (IRQs 3 4 5 6 10 11 12 14 15) *0, disabled.
< ACPI: PCI Interrupt Link [LNKD] (IRQs 3 4 5 6 10 11 12 14 15) *0, disabled.
< ACPI: PCI Interrupt Link [LNKE] (IRQs 3 4 5 6 10 11 12 14 15) *0, disabled.
< ACPI: PCI Interrupt Link [LNKF] (IRQs 3 4 5 6 10 11 12 14 15) *0, disabled.
< ACPI: PCI Interrupt Link [LNKG] (IRQs 3 4 5 6 10 11 12 14 15) *0, disabled.
---
> ACPI: PCI Interrupt Link [LNKA] (IRQs 3 4 5 6 10 11 12 14 15) *7
> ACPI: PCI Interrupt Link [LNKB] (IRQs 3 4 5 6 10 *11 12 14 15)
> ACPI: PCI Interrupt Link [LNKC] (IRQs 3 4 5 6 *10 11 12 14 15)
> ACPI: PCI Interrupt Link [LNKD] (IRQs 3 4 5 6 *10 11 12 14 15)
> ACPI: PCI Interrupt Link [LNKE] (IRQs 3 4 5 6 10 *11 12 14 15)
> ACPI: PCI Interrupt Link [LNKF] (IRQs 3 4 5 6 *10 11 12 14 15)
> ACPI: PCI Interrupt Link [LNKG] (IRQs 3 4 5 6 10 11 12 14 15) *7
107a117,120
> sdhci-pci 0000:00:10.0: SDHCI controller found [8086:2294] (rev 21)
> sdhci-pci 0000:00:10.0: No vmmc regulator found
> sdhci-pci 0000:00:10.0: No vqmmc regulator found
> mmc0: SDHCI controller on PCI [0000:00:10.0] using ADMA