Page MenuHomeFreeBSD

Enable XIVE XICS emulation mode for POWER9 interrupt controller
AbandonedPublic

Authored by jhibbits on May 6 2018, 9:48 PM.
Tags
None
Referenced Files
Unknown Object (File)
Tue, Mar 5, 3:19 PM
Unknown Object (File)
Feb 22 2024, 4:02 AM
Unknown Object (File)
Jan 15 2024, 2:47 AM
Unknown Object (File)
Jan 2 2024, 3:56 PM
Unknown Object (File)
Dec 20 2023, 2:32 AM
Unknown Object (File)
Dec 12 2023, 6:00 AM
Unknown Object (File)
Nov 24 2023, 5:14 PM
Unknown Object (File)
Nov 5 2023, 9:21 AM
Subscribers

Details

Summary

To ease transition to the new XIVE interrupt controller on POWER9 systems, IBM
added a XICS emulation mode, using OPAL calls in place of physical device
accesses. Add this capability to the existing XICS/XICP driver as a stopgap
measure before writing a full XIVE native driver.

Test Plan

In progress. Not yet sure if this is a complete implementation, no
external interrupts are currently generated, possibly due to PCI configuration
issues, to resolve separately.

Diff Detail

Repository
rS FreeBSD src repository - subversion
Lint
Lint Passed
Unit
No Test Coverage
Build Status
Buildable 16461
Build 16380: arc lint + arc unit

Event Timeline

sys/powerpc/pseries/xics.c
185

Should we attach at lower priority for opal-xics? It's pretty near the bottom already, but maybe should be adjusted?

230

This needs #ifdef POWERNV.

sys/powerpc/pseries/xics.c
185

I think the XIVE driver should instead attach at BUS_PROBE_DEFAULT, a higher priority than this.

230

Woops, fixing.

Tested with extra printfs last night, and saw no dispatches on IPI, but IPI sends. Something's not quite right yet, so more work is needed.

Hi Justin,

I put some comments regarding OPAL_ definition I was not able to find in this patch and even on the FreeBSD HEAD repository.

sys/powerpc/pseries/xics.c
221

Justin,

I am not able to find the declaration of OPAL_XIVE_RESET. I just rebased my tree, and I still do not find this declaration. The same thing seems to happen with OPAL_INT_GET_XIRR, OPAL_INT_EOI , OPAL_INT_SET_MFRR and OPAL_INT_SET_CPPR.

Where did these definitions come from?

Add the OPAL definitions. There's also some printf debugging in here, which will go away when I figure out what's going wrong.