On 30.07.19 20:04, Christian Borntraeger wrote:
On 30.07.19 19:11, Thomas Huth wrote:
On 30/07/2019 16.57, Christian Borntraeger wrote:
On 30.07.19 12:01, Thomas Huth wrote:
To run the dirty_log_test on s390x, we have to make sure that we access the dirty log bitmap with little endian byte ordering and we have to properly align the memslot of the guest. Also all dirty bits of a segment are set once on s390x when one of the pages of a segment are written to for the first time, so we have to make sure that we touch all pages during the first iteration to keep the test in sync here.
While this fixes the test (and the migration does work fine), it still means that s390x overindicates the dirty bit for sparsely populated 1M segments. It is just a performance issue, but maybe we should try to get this fixed.
I hope you don't expect me to fix this - the gmap code is really not my turf...
No, this is clearly on our turf.
FWIW, we share the pagetables with the userspace process. We mark a page as dirty (PGSTE_UC_BIT) when - We modify the storage key - We map a PTE as RW (pgste_set_pte())
I assume all PTEs of the segment are mapped RW (for example, if user space wrote to such a PTE), that is why we have the PGSTE_UC_BIT bit set.
As PGSTE_UC_BIT also tracks what userspace did, not only KVM via the GMAP, this might indeed be correct.