Re: [kvm-unit-tests PATCH v2 00/14] ppc64: initial drop

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 




On 12/02/2016 11:06, Andrew Jones wrote:
> On Thu, Feb 11, 2016 at 06:47:22PM +0100, Laurent Vivier wrote:
>>
>>
>> On 11/02/2016 18:22, Andrew Jones wrote:
>>> On Thu, Feb 11, 2016 at 05:44:00PM +0100, Laurent Vivier wrote:
>>>>
>>>>
>>>> On 11/02/2016 16:29, Andrew Jones wrote:
>>>>> On Thu, Feb 11, 2016 at 02:36:57PM +0100, Laurent Vivier wrote:
>>>>
>>>>>>
>>>>>> - On fedora 23 on PowerMac G5 (ppc64) kvm_pr, it doesn't work at all:
>>>>>>
>>>>>> lib/powerpc/setup.c:60: assert failed
>>>>>>  59         assert(freemem_start >= mem_start && freemem_start < mem_end);
>>>>>>
>>>>>> The values I have are:
>>>>>> freemem_start 434000 mem_start 8000000 mem_end 10000000
>>>>>
>>>>> That's interesting. I might know what the problem is though. If
>>>>> the spapr machine divides memory up into multiple regions in some
>>>>> kvm use cases, then I'll need to look at all of regions to either a)
>>>>> choose the one I want to use, or b) map them all for use. On that
>>>>> machine, can you run
>>>>>
>>>>> $ /usr/libexec/qemu-kvm -machine pseries,accel=kvm -machine dumpdtb=dtb
>>>>> $ dtc -I dtb -O dts dtb | less
>>>>>
>>>>> and then check if there are multiple memory regions?
>>>>
>>>> No output... fc23 has qemu-2.4.1, so this commit is missing:
>>>> ad440b4 spapr: add dumpdtb support
>>>>
>>>> So I've recompiled master (PPC970MP is not as fast as POWER8...), and:
>>>>
>>>>         memory@0000000010000000 {
>>>>                 ibm,associativity = <0x4 0x0 0x0 0x0 0x0>;
>>>>                 reg = <0x0 0x10000000 0x0 0x10000000>;
>>>>                 device_type = "memory";
>>>>         };
>>>>
>>>>         memory@0000000008000000 {
>>>>                 ibm,associativity = <0x4 0x0 0x0 0x0 0x0>;
>>>>                 reg = <0x0 0x8000000 0x0 0x8000000>;
>>>>                 device_type = "memory";
>>>>         };
>>>>
>>>>         memory@0000000000000000 {
>>>>                 ibm,associativity = <0x4 0x0 0x0 0x0 0x0>;
>>>>                 reg = <0x0 0x0 0x0 0x8000000>;
>>>>                 device_type = "memory";
>>>>         };
>>>
>>> OK, I can fix memory region mapping for v3 pretty easily.
>>>
>>>>
>>>> But master doesn't have the "assert()", it hangs, and in kernel logs:
>>>>
>>>> [  438.503410] kvmppc_handle_exit_pr: emulation at 700 failed (00000000)
>>>> [  438.503412] Couldn't emulate instruction 0x00000000 (op 0 xop 0)
>>>
>>> That 700 is what I got when I tried compiling with gcc-5.2, before
>>> changing the toc alignment. I guess that just means "we've gone off
>>> in the weeds." Unfortunately I don't have any idea why this time,
>>> assuming we've got the toc patched kvm-unit-tests. Does everything
>>> run except the rtas-poweroff command? If you comment the call to it
>>> out of exit(), and then just use ^C to quit, does it seem happy?
>>
>> Yes, it seems happy: nothing is displayed in terminal nor in the kernel
>> logs.
> 
> Thanks for the extra test. Just to be clear though, do you mean no
> errors are logged, but we still get the expected printf output? Or
> was nothing at all output (in which case we're badly broken)?
> 
> If it's the former, then I guess I screwed up the rtas call somehow,
> most likely by the way I tried to prepare the rtas entry function
> pointer for jumping into the blob provided in the DT.

I have nothing at all. It hangs.

The command I run is:
kvm-unit-tests]$ sudo  ./powerpc/run powerpc/selftest.elf -smp 2 -m 256
-append 'setup smp=2 mem=256'
qemu-system-ppc64 -machine pseries,accel=kvm -bios powerpc/boot_rom.bin
-display none -serial stdio -kernel powerpc/selftest.elf -smp 2 -m 256
-append setup smp=2 mem=256
^C
qemu: terminating on signal 2


The change I did:

--- a/lib/powerpc/io.c
+++ b/lib/powerpc/io.c
@@ -32,6 +32,6 @@ void exit(int code)
 // FIXME: change this print-exit/rtas-poweroff to chr_testdev_exit()
 //        Maybe by plugging chr-testdev into a spapr-vty.
        printf("\nEXIT: STATUS=%d\n", ((code) << 1) | 1);
-       rtas_power_off();
+       //rtas_power_off();
        halt(code);
 }

Laurent
--
To unsubscribe from this list: send the line "unsubscribe kvm" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html



[Index of Archives]     [KVM ARM]     [KVM ia64]     [KVM ppc]     [Virtualization Tools]     [Spice Development]     [Libvirt]     [Libvirt Users]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite Questions]     [Linux Kernel]     [Linux SCSI]     [XFree86]
  Powered by Linux