From mboxrd@z Thu Jan 1 00:00:00 1970
From: Pavel Fedin
Subject: RE: [PATCH v4 0/4] KVM: arm64: BUG FIX: Correctly handle zero register
transfers
Date: Mon, 07 Dec 2015 11:36:28 +0300
Message-ID: <011601d130ca$64cc9070$2e65b150$@samsung.com>
References:
<20151205003334.GB3117@hawk.localdomain>
Mime-Version: 1.0
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit
Cc: 'Marc Zyngier' , kvmarm@lists.cs.columbia.edu,
kvm@vger.kernel.org
To: 'Andrew Jones'
Return-path:
In-reply-to: <20151205003334.GB3117@hawk.localdomain>
Content-language: ru
List-Unsubscribe: ,
List-Archive:
List-Post:
List-Help:
List-Subscribe: ,
Errors-To: kvmarm-bounces@lists.cs.columbia.edu
Sender: kvmarm-bounces@lists.cs.columbia.edu
List-Id: kvm.vger.kernel.org
Hello!
> FYI, I tried writing test cases for this issue with kvm-unit-tests. The
> issue didn't reproduce for me. It's quite possible my test cases are
> flawed, so I'm not making any claims about the validity of the series
This is indeed very interesting, so i'll take a look at it.
For now i've just only took a quick glance at the code, and i have at least one suggestion. Could you happen to have sp == 0 in
check_xzr_sysreg()? In this case it will magically work.
Also, you could try to write a test which tries to overwrite xzr. Something like:
volatile int *addr1;
volatile int *addr2;
asm volatile("str %3, [%1]\n\t"
"ldr wzr, [%1]\n\t"
"str wzr, [%2]\n\t",
"ldr %0, [%2]\n\t"
:"=r"(res):"r"(addr1), "r"(addr2), "r"(some_nonzero_val):"memory");
Then check for res == some_nonzero_val. If they are equal, you've got the bug :)
Kind regards,
Pavel Fedin
Expert Engineer
Samsung Electronics Research center Russia