On 16/10/2017 14:34, Laurent Vivier wrote: > On 13/10/2017 11:45, Thomas Huth wrote: >> On 12.10.2017 10:07, Laurent Vivier wrote: >>> Check if we can set the xive server and priority, and >>> check we get values that have been set. >>> Check we disable/enable interrupts. >>> >>> This patch also increases NR_CPUS from 8 to 16 >>> (maximum for KVM on POWER9, POWER8 allows 96) >>> >>> Signed-off-by: Laurent Vivier <lvivier@xxxxxxxxxx> >>> --- >>> Note: I send this as an RFC, because even if this test works well with >>> TCG and POWER8 KVM hosts, it detects some problems with POWER9 KVM hosts >> >> What kind of errors does it detect? Are they expected due to the >> different interrupt controllers? >> > > [I cc' Sam as he already did a fix for this part in the kernel] I finally found some time to debug this. > I have two kinds of error: > > - "xics: get-xive: irq #4351, expected cpu 15 prio 255, had cpu 0 prio > 255", > Priority 255 is set to disable the IRQs, I don't think it's really a > problem at this level, it could be only cosmetic, In this case, we have set priority to 255 with set-xive, and in the emulation, 255 is the "MASKED" value and in this case set-xive doesn't store the interrupt server, so get-xive always returns an invalid server. > - "xics: int-on: irq #4351, ret = -3", > but here it becomes more serious: as the IRQ server has been lost, it > seems we are not able to re-enable the interrupt. int-on explicitly checks the priority value, and if the value is "MASKED" (255, the value we set previously with set-xive) it returns an error. These errors can be fixed by two different ways: A- don't allow set-xive to set the priority to 255 (the MASKED value) and return an error value, and get-xive return an error value if priority is the MASKED value B- store the server in set-xive even it the value is the MASKED one, so we can get it with get-xive and use it with int-on (with the saved priority value) (A) follows the specs: Linux on Power Architecture Platform Reference, v1.1 R1–7.3.10.2–5. For the PowerPC External Interrupt option: The ibm,set-xive call must return the Status of -3 (Argument Error) for an unimplemented Interrupt number. (B) would behave like XICS with P8 and TCG. Any ideas? Thanks, Laurent