[PowerPC] XIVE dispatch tweaks
* Only read the DPCPU pointer once per xive_dispatch call. * Optimize HE decoding for the common cases. Reported by: jhibbits (in irc) Reviewed by: jhibbits Sponsored by: Tag1 Consulting, Inc. Differential Revision: https://reviews.freebsd.org/D25545
This commit is contained in:
parent
b256d25c50
commit
60185d8965
Notes:
svn2git
2020-12-20 02:59:44 +00:00
svn path=/head/; revision=362965
@ -507,6 +507,7 @@ xive_dispatch(device_t dev, struct trapframe *tf)
|
|||||||
|
|
||||||
sc = device_get_softc(dev);
|
sc = device_get_softc(dev);
|
||||||
|
|
||||||
|
xive_cpud = DPCPU_PTR(xive_cpu_data);
|
||||||
for (;;) {
|
for (;;) {
|
||||||
ack = xive_read_2(sc, XIVE_TM_SPC_ACK);
|
ack = xive_read_2(sc, XIVE_TM_SPC_ACK);
|
||||||
cppr = (ack & 0xff);
|
cppr = (ack & 0xff);
|
||||||
@ -515,19 +516,17 @@ xive_dispatch(device_t dev, struct trapframe *tf)
|
|||||||
|
|
||||||
if (he == TM_QW3_NSR_HE_NONE)
|
if (he == TM_QW3_NSR_HE_NONE)
|
||||||
break;
|
break;
|
||||||
switch (he) {
|
|
||||||
case TM_QW3_NSR_HE_NONE:
|
else if (__predict_false(he != TM_QW3_NSR_HE_PHYS)) {
|
||||||
goto end;
|
/*
|
||||||
case TM_QW3_NSR_HE_POOL:
|
* We don't support TM_QW3_NSR_HE_POOL or
|
||||||
case TM_QW3_NSR_HE_LSI:
|
* TM_QW3_NSR_HE_LSI interrupts.
|
||||||
|
*/
|
||||||
device_printf(dev,
|
device_printf(dev,
|
||||||
"Unexpected interrupt he type: %d\n", he);
|
"Unexpected interrupt he type: %d\n", he);
|
||||||
goto end;
|
goto end;
|
||||||
case TM_QW3_NSR_HE_PHYS:
|
|
||||||
break;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
xive_cpud = DPCPU_PTR(xive_cpu_data);
|
|
||||||
xive_write_1(sc, XIVE_TM_CPPR, cppr);
|
xive_write_1(sc, XIVE_TM_CPPR, cppr);
|
||||||
|
|
||||||
for (;;) {
|
for (;;) {
|
||||||
|
Loading…
Reference in New Issue
Block a user