Enabling a ACPI eMMC device is causing kernel reboots with FreeBSD 11.2

Rajesh Kumar rajfbsd at gmail.com
Mon Jan 28 18:15:40 UTC 2019


I tried my luck with the FreeBSD 12.0 as well as the -CURRENT branch as of
date. I am still seeing the issue.

Looks like, I missed the earlier response from Kib (in link below) to this
thread (may be landed in my spam). Is there anything else I could try
debugging here?



On Fri, Nov 16, 2018 at 10:45 AM Rajesh Kumar <rajfbsd at gmail.com> wrote:

> Hi,
> I did some study on this. During acpi_attach, if MCFG table is present,
> FreeBSD tries to use it (That is to map the PCI Base address to virtual
> address space).  Setting hw.pci.mcfg=0, disables that mapping and lets the
> system use the type 1 config access (which is IO port based access).  So,
> this is what hw.pci.mcfg does.
> In our case, we are enabling a device on the ACPI bus and made sure no
> other ACPI device collides with the address range for PCI (which mcfg
> says). So, why enabling a device on ACPI, is causing the memory mapped PCI
> access go bad to panic/reboot the kernel?  I tried to collect more info
> enabling INVARIANTS, but in that case kernel panics much before in the boot
> process. So, how could I proceed in debugging this issue? Any suggestions?
> On Thu, Nov 8, 2018 at 4:14 PM Rajesh Kumar <rajfbsd at gmail.com> wrote:
>> Hi,
>> I have amd64 board, which has a eMMC device on the ACPI bus. When I try
>> booting FreeBSD 11.2 on this board, with eMMC device disabled in BIOS, it
>> boots without any issues.  But, when eMMC device is enabled in BIOS,
>> FreeBSD 11.2 continuously reboots.
>> When I have the following tunable set, FreeBSD 11.2 boots without any
>> issues with eMMC enabled.
>> hw.pci.mcfg=0
>> Observations :
>> a) We have verified the ACPI device addresses (from DSDT table) doesn't
>> conflict with the PCI address base (configured in MCFG table).
>> b) The PCI address base from MCFG table is read correctly by kernel
>> (Verbose boot prints that address). So, I don't think MCFG table pointer is
>> corrupted and getting read properly.
>> Questions :
>> a) What does hw.pci.mcfg=0 actually do to get the reboot issue resolved?
>> b) Why enabling a device on ACPI bus needs hw.pci.mcfg (PCI specific) to
>> boot?
>> Looks like the system reboots when the ACPI and PCI devices enumeration
>> starts during the boot. So, seems ACPI (or) PCI devices aren't getting
>> enough resources and so reboots.
>> Thanks,
>> Rajesh.

More information about the freebsd-amd64 mailing list