Looking at the oops, the crash occurs in pci_msi_domain_supports() at
offset +0x54, specifically on the dereference of domain->host_data (stored
in the 'info' variable) when accessing info->flags. The domain pointer
itself is not NULL and passes irq_domain_is_hierarchy(), so the early-exit
guard is bypassed, but host_data is NULL on this platform.
I noticed a relevant change between 6.11 and 6.12 in that function. In 6.11
the early-exit path was unconditional:
if (!domain || !irq_domain_is_hierarchy(domain))
return mode == ALLOW_LEGACY;
In 6.12 it became conditional on CONFIG_PCI_MSI_ARCH_FALLBACKS:
if (!domain || !irq_domain_is_hierarchy(domain)) {
if (IS_ENABLED(CONFIG_PCI_MSI_ARCH_FALLBACKS))
return mode == ALLOW_LEGACY;
return false;
}
Perhaps CONFIG_PCI_MSI_ARCH_FALLBACKS=y isn't set for ppc64?