From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:50955) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ZQDUl-0003H4-JN for qemu-devel@nongnu.org; Fri, 14 Aug 2015 07:50:00 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1ZQDUi-0001NR-Bh for qemu-devel@nongnu.org; Fri, 14 Aug 2015 07:49:59 -0400 Received: from mail.sysgo.com ([176.9.53.133]:45691) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ZQDUi-0001NB-4g for qemu-devel@nongnu.org; Fri, 14 Aug 2015 07:49:56 -0400 Message-ID: <55CDD5E2.60405@sysgo.com> Date: Fri, 14 Aug 2015 13:49:54 +0200 From: Rudolf Marek MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="------------080404070008060701080805" Subject: [Qemu-devel] [PATCH] e500 ATMU register reads broken List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel@nongnu.org Cc: Alexander Graf This is a multi-part message in MIME format. --------------080404070008060701080805 Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: quoted-printable Hi all, I noticed that ATMU register reads on E500 are broken. Due to the wrong m= ask,=20 some registers cannot be read and instead some other registers are read. = Please=20 see attached patch which fixes the problem. I also noticed that if there was an intention to have 1:1 PCI/CPU space m= apping=20 for 0xC000_0000 for MPC8544DS without programming ATMUs - it does not wor= k,=20 unless ATMUs are programmed. Signed-off-by: Rudolf Marek Thanks, Rudolf --=20 S p=C5=99=C3=A1telsk=C3=BDm pozdravem / Best regards / Mit freundlichen G= r=C3=BC=C3=9Fen Ing. Rudolf Marek SYSGO s.r.o. Zelen=C3=BD pruh 99 CZ-14800 Praha 4 Phone: +420 222138 627, +49 6136 9948 627 Fax: +420 296374890, +49 6136 9948 1 627 rudolf.marek@sysgo.com http://www.sysgo.com | http://www.elinos.com | http://www.pikeos.com --------------080404070008060701080805 Content-Type: text/x-diff; name="0001-PPC-e500-pci-host-Fix-ATMUs-register-reads.patch" Content-Transfer-Encoding: 7bit Content-Disposition: attachment; filename="0001-PPC-e500-pci-host-Fix-ATMUs-register-reads.patch" >>From 75795e2bcc6ffbb245d192eb84e063d855dbf248 Mon Sep 17 00:00:00 2001 From: Rudolf Marek Date: Fri, 14 Aug 2015 13:38:55 +0200 Subject: [PATCH] PPC: e500 pci host: Fix ATMUs register reads There is a bug in the register mask when reading the ATMUs registers. As the result some registers cannot be read, and read is aliased to the other registers. Fix it. Signed-off-by: Rudolf Marek --- hw/pci-host/ppce500.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/hw/pci-host/ppce500.c b/hw/pci-host/ppce500.c index 613ba73..50add34 100644 --- a/hw/pci-host/ppce500.c +++ b/hw/pci-host/ppce500.c @@ -140,7 +140,7 @@ static uint64_t pci_reg_read4(void *opaque, hwaddr addr, case PPCE500_PCI_OW3: case PPCE500_PCI_OW4: idx = (addr >> 5) & 0x7; - switch (addr & 0xC) { + switch (addr & 0x1F) { case PCI_POTAR: value = pci->pob[idx].potar; break; @@ -162,7 +162,7 @@ static uint64_t pci_reg_read4(void *opaque, hwaddr addr, case PPCE500_PCI_IW2: case PPCE500_PCI_IW1: idx = ((addr >> 5) & 0x3) - 1; - switch (addr & 0xC) { + switch (addr & 0x1F) { case PCI_PITAR: value = pci->pib[idx].pitar; break; -- 1.9.1 --------------080404070008060701080805--