From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:46393) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1XRNLs-0002YS-Mt for qemu-devel@nongnu.org; Tue, 09 Sep 2014 11:29:10 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1XRNLZ-0001Rm-IL for qemu-devel@nongnu.org; Tue, 09 Sep 2014 11:29:04 -0400 Received: from mnementh.archaic.org.uk ([81.2.115.146]:46934) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1XRNLZ-0001RK-Cv for qemu-devel@nongnu.org; Tue, 09 Sep 2014 11:28:45 -0400 From: Peter Maydell Date: Tue, 9 Sep 2014 16:01:21 +0100 Message-Id: <1410274883-9578-1-git-send-email-peter.maydell@linaro.org> Subject: [Qemu-devel] [PATCH 0/2] target-arm: Implement TLB invalidate inner shareable ops properly List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel@nongnu.org Cc: Rob Herring , Ard Biesheuvel , Christoffer Dall , patches@linaro.org The ARM architecture defines that the "IS" variants of TLB maintenance operations must affect all TLBs in the Inner Shareable domain, which for us means all CPUs. We were incorrectly implementing these to only affect the current CPU, which meant that SMP TCG operation was unstable (especially noticeable on v8). These patches shove the legacy loosely-decoded wildcard TLB op definitions back from "not-v8" to "not-v7" so we can use the correct strict decode for v7 and v7MP (which is where the IS ops were introduced); this then gives us a place we can insert the correct behaviour. Without these patches, using Ard's PSCI emulation patches with lots of SMP CPUs tends to result in Oopses, processes crashing with illegal instruction exceptions, etc. Although we don't support SMP TCG in QEMU 2.1, I've cc'd these to stable because they also affect v7. Peter Maydell (2): target-arm: Push legacy wildcard TLB ops back into v6 target-arm: Make *IS TLB maintenance ops affect all CPUs target-arm/helper.c | 195 +++++++++++++++++++++++++++++++++++++--------------- 1 file changed, 140 insertions(+), 55 deletions(-) -- 1.9.1