Re: [Qemu-devel] [PATCH 00/28] target-ppc: Altivec 2.07

2014-02-20 Thread Thomas Huth
On Thu, 20 Feb 2014 12:34:00 +
"Richard W.M. Jones"  wrote:

[...]
> 
> The second bug is kind of interesting.  If you add ~ 256 disks (using
> virtio-scsi), then it looks as if the firmware crashes.  The total
> console output is below.  It looks as if "c >" is some kind of prompt.

Yes, that's the Open Firmware prompt of the SLOF firmware here. If you
know how to program in Forth, you can use it to debug the system.

> Populating /vdevice methods
> Populating /vdevice/vty@3000
> Populating /vdevice/nvram@7100
> C0580\b\b\b\b\bC05A0\b\b\b\b\bPopulating /pci@8002000
> ^M Adapters on 08002000
>  00  (D) : 106b 003fserial bus [ usb-ohci ]
>  00 0800 (D) : 1af4 1004virtio [ scsi ]
> Populating /pci@8002000/scsi@1
>SCSI: Looking for devices
>   100 DISK : "QEMU QEMU HARDDISK1.7."
>   101 DISK : "QEMU QEMU HARDDISK1.7."
>   102 DISK : "QEMU QEMU HARDDISK1.7."
>   103 DISK : "QEMU QEMU HARDDISK1.7."
>   104 DISK : "QEMU QEMU HARDDISK1.7."
>   105 DISK : "QEMU QEMU HARDDISK1.7."
>   106 DISK : "QEMU QEMU HARDDISK1.7."
>   107 DISK : "QEMU QEMU HARDDISK1.7."
>   108 DISK : "QEMU QEMU HARDDISK1.7."
> C0600\b\b\b\b\bC0640\b\b\b\b\bC0690\b\b\b\b\bC06A0\b\b\b\b\bC06A8\b\b\b\b\bC06B0\b\b\b\b\bC06B8\b\b\b\b\bC06C0\b\b\b\b\b
>  

So the last successful checkpoint seems to be C06C0 ? Looking at
https://github.com/aik/SLOF/blob/master/board-qemu/slof/tree.fs
there is not much critical stuff going on between that checkpoint and
the next one, so I guess the firmware just ran out of internal memory.

When you run into this crash again, could you try to enter the
following commands? They might help to confirm my suspicion:

 .free
 .available
 here .

Please also say how much memory you were using for the guest.

 Thomas




Re: [Qemu-devel] [PATCH 00/28] target-ppc: Altivec 2.07

2014-02-20 Thread Richard W.M. Jones
On Thu, Feb 20, 2014 at 10:23:42AM +, Richard W.M. Jones wrote:
> I am now running a full libguestfs test which will take several hours,
> but it looks as if -- even if this test fails -- it won't be because
> of lack of emulation / missing instructions in qemu.

The tests ran.  I hit two bugs, but neither seems to be related to
qemu emulation.  Please push these patches into upstream qemu :-)

One bug is in btrfs and is related to page size being different (and
much larger) on ppc64.

The second bug is kind of interesting.  If you add ~ 256 disks (using
virtio-scsi), then it looks as if the firmware crashes.  The total
console output is below.  It looks as if "c >" is some kind of prompt.
qemu spins using 100% of CPU after this.

--
Populating /vdevice methods
Populating /vdevice/vty@3000
Populating /vdevice/nvram@7100
C0580\b\b\b\b\bC05A0\b\b\b\b\bPopulating /pci@8002000
^M Adapters on 08002000
 00  (D) : 106b 003fserial bus [ usb-ohci ]
 00 0800 (D) : 1af4 1004virtio [ scsi ]
Populating /pci@8002000/scsi@1
   SCSI: Looking for devices
  100 DISK : "QEMU QEMU HARDDISK1.7."
  101 DISK : "QEMU QEMU HARDDISK1.7."
  102 DISK : "QEMU QEMU HARDDISK1.7."
  103 DISK : "QEMU QEMU HARDDISK1.7."
  104 DISK : "QEMU QEMU HARDDISK1.7."
  105 DISK : "QEMU QEMU HARDDISK1.7."
  106 DISK : "QEMU QEMU HARDDISK1.7."
  107 DISK : "QEMU QEMU HARDDISK1.7."
  108 DISK : "QEMU QEMU HARDDISK1.7."
C0600\b\b\b\b\bC0640\b\b\b\b\bC0690\b\b\b\b\bC06A0\b\b\b\b\bC06A8\b\b\b\b\bC06B0\b\b\b\b\bC06B8\b\b\b\b\bC06C0\b\b\b\b\b
 

( 700 ) Program Exception [ 2e51cb00 ]


R0 .. R7   R8 .. R15 R16 .. R23 R24 .. R31
2dca41ec   2dcfe058      0006   
2e5198e0   2e5a91c0      2dcb3900   
2dcbcb00   2dcb7b38   2dca0d10   2e51a050   
2e51cb00   2dd121f0   2dcbabd8   2dcb5e48   
2dcfe050   03d0   0056   0003   
2e51cb00      2dcf2e4e      
0007      2e5b0751   2e516010   
0003      2dca0c30   2e50fae0   

CR / XER   LR / CTR  SRR0 / SRR1DAR / DSISR
8488   2dca1d40   2dcb7b38      
   2dcb7b38   8008      


c > \x1b7
--

Rich.

-- 
Richard Jones, Virtualization Group, Red Hat http://people.redhat.com/~rjones
Read my programming blog: http://rwmj.wordpress.com
Fedora now supports 80 OCaml packages (the OPEN alternative to F#)



Re: [Qemu-devel] [PATCH 00/28] target-ppc: Altivec 2.07

2014-02-20 Thread Richard W.M. Jones
Tom,

I tested your patches [see below] and I found they work very well.
They solve all the immediate problems that libguestfs was hitting with
qemu not emulating certain POWER7 instructions.

I am now running a full libguestfs test which will take several hours,
but it looks as if -- even if this test fails -- it won't be because
of lack of emulation / missing instructions in qemu.

Thanks,
Rich.


1258017 (HEAD, master) target-ppc: Fix xxpermdi When T==A or T==B
a5a770e target-ppc: Altivec 2.07: Vector Permute and Exclusive OR
d2235b6 target-ppc: Altivec 2.07: Vector SHA Sigma Instructions
823d8bc target-ppc: Altivec 2.07: AES Instructions
de692f8 target-ppc: Altivec 2.07: Binary Coded Decimal Instructions
e57670e target-ppc: Altivec 2.07: Vector Polynomial Multiply Sum
7aa4e18 target-ppc: Altivec 2.07: Vector Gather Bits by Bytes
0407211 target-ppc: Altivec 2.07: Doubleword Compares
fa643cd target-ppc: Altivec 2.07: vbpermq Instruction
3eefbc5 target-ppc: Altivec 2.07: Quadword Addition and Subtracation
679b19f target-ppc: Altivec 2.07: Vector Doubleword Rotate and Shift 
Instructions
c33fb5a target-ppc: Altivec 2.07: Change Bit Masks to Support 64-bit Rotates 
and Shifts
0d0e6fc target-ppc: Altivec 2.07: Vector Merge Instructions
535ddb7 target-ppc: Altivec 2.07: Unpack Signed Word Instructions
7c25020 target-ppc: Altivec 2.07: Pack Doubleword Instructions
1bfa3da target-ppc: Altivec 2.07: Vector Min/Max Doubleword Instructions
46b62bf target-ppc: Altivec 2.07: Vector Population Count Instructions
1208e47 target-ppc: Altivec 2.07: Add Vector Count Leading Zeroes
7560038 target-ppc: Altivec 2.07: vmuluw Instruction
5219437 target-ppc: Altivec 2.07: Multiply Even/Odd Word Instructions
e6d9b50 target-ppc: Altivec 2.07: Change VMUL_DO to Support 64-bit Integers
b00c954 target-ppc: Altivec 2.07: Add/Subtract Unsigned Doubleword Modulo
59bae01 target-ppc: Altivec 2.07: Vector Logical Instructions
652fb6b target-ppc: Altivec 2.07: Add Support for R-Form Dual Instructions
1278f7d target-ppc: Altivec 2.07: Add Opcode Macro for VX Form Instructions
96645c6 target-ppc: Altivec 2.07: Add Support for Dual Altivec Instructions
c7dc903 target-ppc: Altivec 2.07: Add GEN_VXFORM3
cc356ef target-ppc: Altivec 2.07: Update AVR Structure
236fce3 target-ppc: Altivec 2.07: Add Instruction Flag
1963af7 target-ppc: Add Store Quadword Conditional
f74301d target-ppc: Add Load Quadword and Reserve
755065e target-ppc: Store Quadword
b278fa5 target-ppc: Load Quadword
aae0775 target-ppc: Add is_user_mode Utility Routine
702c075 target-ppc: Add Flag for ISA 2.07 Load/Store Quadword Instructions
c103fc8 target-ppc: Add bctar Instruction
cab1f12 target-ppc: Add Target Address SPR (TAR) to Power8
b904000 target-ppc: Add Flag for bctar
e1adfb7 target-ppc: Add ISA2.06 lfiwzx Instruction
ef84f63 target-ppc: Enable frsqrtes on Power7 and Power8
cfc3d6c target-ppc: Add ISA 2.06 ftsqrt
003634e target-ppc: Add ISA 2.06 ftdiv Instruction
8e28300 target-ppc: Add Flag for Power ISA V2.06 Floating Point Test 
Instructions
795d567 target-ppc: Fix and enable fri[mnpz]
7d69a6f target-ppc: Add ISA 2.06 fcfid[u][s] Instructions
18f088a target-ppc: Add ISA2.06 Float to Integer Instructions
6211a33 target-ppc: Add Flag for ISA V2.06 Floating Point Conversion
bb961d5 target-ppc: Add ISA 2.06 stbcx. and sthcx. Instructions
42cb1ee target-ppc: Add ISA2.06 lbarx, lharx Instructions
3ee50eb target-ppc: Add Flag for ISA2.06 Atomic Instructions
a38a0de target-ppc: Add ISA 2.06 divwe[o] Instructions
0964b12 target-ppc: Add ISA 2.06 divweu[o] Instructions
57c8cb1 target-ppc: Add ISA2.06 divde[o] Instructions
e711f0f target-ppc: Add ISA2.06 divdeu[o] Instructions
4360fcf target-ppc: Add Flag for ISA2.06 Divide Extended Instructions
3813bf9 target-ppc: Add ISA2.06 bpermd Instruction
07cafd8 target-ppc: Scalar Non-Signalling Conversions
e3b40b5 target-ppc: Scalar Round to Single Precision
622d9fc target-ppc: Floating Merge Word Instructions
aab0146 target-ppc: Move To/From VSR Instructions
f716b79 target-ppc: VSX Stage 4: Add xxleqv, xxlnand and xxlorc
613656c target-ppc: VSX Stage 4: Add xscvsxdsp and xscvuxdsp
a80fde4 target-ppc: VSX Stage 4: Add Scalar SP Fused Multiply-Adds
0ce9239 target-ppc: VSX Stage 4: add xsrsqrtesp
32dc58c target-ppc: VSX Stage 4: Add xssqrtsp
71b162a target-ppc: VSX Stage 4: Add xsresp
78a46d8 target-ppc: VSX Stage 4: Add xsdivsp
1c71eda target-ppc: VSX Stage 4: Add xsmulsp
c4ddfce target-ppc: VSX Stage 4: Add xsaddsp and xssubsp
76bec27 target-ppc: VSX Stage 4: Add stxsiwx and stxsspx
68de7cb target-ppc: VSX Stage 4: Refactor stxsdx
151f526 target-ppc: VSX Stage 4: Add lxsiwax, lxsiwzx and lxsspx
bdfbd58 target-ppc: VSX Stage 4: Refactor lxsdx
a918cda target-ppc: VSX Stage 4: Add VSX 2.07 Flag
18bf3f4 target-ppc: Add VSX Rounding Instructions
586ceee target-ppc: Add VSX ISA2.06 Integer Conversion Instructions
88d8f61 target-ppc: Add VSX Floating Point to Floating Point Conversion 
Instructions
3cd430d target-ppc: Add VSX Vector Compare In

Re: [Qemu-devel] [PATCH 00/28] target-ppc: Altivec 2.07

2014-02-18 Thread Tom Musta
On 2/18/2014 12:52 PM, Richard W.M. Jones wrote:
> Hi Tom,
> 
> I would love to test your latest non-upstream qemu patches, because
> the better emulation of VSX may enable me to get libguestfs working on
> ppc64p7.
> 
> Do you have a public git tree anywhere which contains something
> testable?  The published patches no longer cleanly apply to qemu.git.
> 
> Rich.
> 

Rich:

I think they still apply  well mostly.

There were some patches to softfloat that Peter had pulled in independently and 
they are
now in qemu.git master.  And I think there may be some conflicts now with 
those.  So,
specifically, you can ignore these from the VSX Stage 3 series 
(http://lists.nongnu.org/archive/html/qemu-devel/2014-01/msg00095.html):

  Subject: [V5 PATCH 04/22] softfloat: Fix float64_to_uint32
  Subject: [V5 PATCH 01/22] softfloat: Fix float64_to_uint64
  Subject: [V5 PATCH 03/22] softfloat: Fix float64_to_uint64_round_to_zero
  Subject: [V5 PATCH 02/22] softfloat: Add float32_to_uint64()
  Subject: [V5 PATCH 05/22] softfloat: Fix float64_to_uint32_round_to_zero

and these from the ISA 2.06 series 
(http://lists.nongnu.org/archive/html/qemu-devel/2014-01/msg00596.html)

  Subject: [V4 PATCH 15/22] softfloat: Refactor code handling various rounding 
modes
  Subject: [V4 PATCH 14/22] softfloat: Factor out RoundAndPackFloat16 and 
NormalizeFloat16Subnormal
  Subject: [V4 PATCH 13/22] softfloat: Fix exception flag handling for 
float32_to_float16()
  Subject: [V4 PATCH 16/22] softfloat: Add support for ties-away rounding

I will send you directly a tarball of patches that you may find convenient.




Re: [Qemu-devel] [PATCH 00/28] target-ppc: Altivec 2.07

2014-02-18 Thread Richard W.M. Jones
Hi Tom,

I would love to test your latest non-upstream qemu patches, because
the better emulation of VSX may enable me to get libguestfs working on
ppc64p7.

Do you have a public git tree anywhere which contains something
testable?  The published patches no longer cleanly apply to qemu.git.

Rich.

-- 
Richard Jones, Virtualization Group, Red Hat http://people.redhat.com/~rjones
libguestfs lets you edit virtual machines.  Supports shell scripting,
bindings from many languages.  http://libguestfs.org



[Qemu-devel] [PATCH 00/28] target-ppc: Altivec 2.07

2014-02-12 Thread Tom Musta
This patch series implements the changes to Altivec introduced by Power ISA
Version 2.07.

Tom Musta (28):
  target-ppc: Altivec 2.07: Add Instruction Flag
  target-ppc: Altivec 2.07: Update AVR Structure
  target-ppc: Altivec 2.07: Add GEN_VXFORM3
  target-ppc: Altivec 2.07: Add Support for Dual Altivec Instructions
  target-ppc: Altivec 2.07: Add Opcode Macro for VX Form Instructions
  target-ppc: Altivec 2.07: Add Support for R-Form Dual Instructions
  target-ppc: Altivec 2.07: Vector Logical Instructions
  target-ppc: Altivec 2.07: Add/Subtract Unsigned Doubleword Modulo
  target-ppc: Altivec 2.07: Change VMUL_DO to Support 64-bit Integers
  target-ppc: Altivec 2.07: Multiply Even/Odd Word Instructions
  target-ppc: Altivec 2.07: vmuluw Instruction
  target-ppc: Altivec 2.07: Add Vector Count Leading Zeroes
  target-ppc: Altivec 2.07: Vector Population Count Instructions
  target-ppc: Altivec 2.07: Vector Min/Max Doubleword Instructions
  target-ppc: Altivec 2.07: Pack Doubleword Instructions
  target-ppc: Altivec 2.07: Unpack Signed Word Instructions
  target-ppc: Altivec 2.07: Vector Merge Instructions
  target-ppc: Altivec 2.07: Change Bit Masks to Support 64-bit Rotates
and Shifts
  target-ppc: Altivec 2.07: Vector Doubleword Rotate and Shift
Instructions
  target-ppc: Altivec 2.07: Quadword Addition and Subtracation
  target-ppc: Altivec 2.07: vbpermq Instruction
  target-ppc: Altivec 2.07: Doubleword Compares
  target-ppc: Altivec 2.07: Vector Gather Bits by Bytes
  target-ppc: Altivec 2.07: Vector Polynomial Multiply Sum
  target-ppc: Altivec 2.07: Binary Coded Decimal Instructions
  target-ppc: Altivec 2.07: AES Instructions
  target-ppc: Altivec 2.07: Vector SHA Sigma Instructions
  target-ppc: Altivec 2.07: Vector Permute and Exclusive OR

 target-ppc/cpu.h|9 +-
 target-ppc/helper.h |   62 +++
 target-ppc/int_helper.c | 1278 +--
 target-ppc/translate.c  |  348 -
 target-ppc/translate_init.c |2 +-
 5 files changed, 1648 insertions(+), 51 deletions(-)