hercules-390 / hyperion

Hercules 390
Other
246 stars 69 forks source link

SIE WAITSTATE Assist broken #238

Open ivan-w opened 6 years ago

ivan-w commented 6 years ago

When a z/Arch hypervisor dedicates a processor to a guest and WAITSTATE Assist is enabled (via FEATURE_WAITSTATE_ASSIST in feats390.h and/or feat900.h), an error occurs in "sie.c" at line 1081 with rc=22 (EINVAL) (as of a304ff072e063ea309840feb4ba0fac8177b0aa7) on wait_timed_condition() (mapping to pthread_cond_timedwait() on POSIX systems).

This leads to the call to always wait for the timeout to occur (regardless of any interrupt) when a SIE guest enters a wait state and the processor is dedicated to the guest - and hence severly reduced performances.

Disabling the feature in feat390.h and feat900.h elaviates the issue (but forces the hypervisor to resolve guest wait states for dedicated processors when it shouldn't be necessary).

I am therefore commiting patch that disables the broken feature until it is corrected.