Fix xen pci passthrough

Submitted by Wei Wang on July 10, 2012, 11:43 a.m.

Details

Message ID 1341920606-11942-1-git-send-email-wei.wang2@amd.com
State New
Headers show

Commit Message

Wei Wang July 10, 2012, 11:43 a.m.
Hi, I find a passthrough issue in qemu when pci device has multiple mmio 
regions. In this case, the last few bytes of qmp response string are trimmed 
and then passthru fails with following output.

*** glibc detected *** xl: realloc(): invalid pointer: 0x0000000002163f90 ***

Comments

Anthony PERARD July 10, 2012, 1:05 p.m.
On 10/07/12 12:43, Wei Wang wrote:
> Hi, I find a passthrough issue in qemu when pci device has multiple mmio
> regions. In this case, the last few bytes of qmp response string are trimmed
> and then passthru fails with following output.

Could you compile libxl with DEBUG_RECEIVED (uncomment the #define in 
tools/libxl/libxl_qmp.c) and then give the output of `xl -vvv create ...`.

Thanks,

> *** glibc detected *** xl: realloc(): invalid pointer: 0x0000000002163f90 ***
> ======= Backtrace: =========
> /lib64/libc.so.6(+0x74c06)[0x7f62970e4c06]
> /lib64/libc.so.6(+0x77d25)[0x7f62970e7d25]
> /lib/libxenlight.so.2.0(+0x28d02)[0x7f6297a78d02]
> /lib/libxenlight.so.2.0(+0x2eccf)[0x7f6297a7eccf]
> /lib/libxenlight.so.2.0(+0x2f2f6)[0x7f6297a7f2f6]
> /lib/libxenlight.so.2.0(+0x2fe18)[0x7f6297a7fe18]
> /lib/libxenlight.so.2.0(+0x20027)[0x7f6297a70027]
> /lib/libxenlight.so.2.0(+0x212a6)[0x7f6297a712a6]
> /lib/libxenlight.so.2.0(+0x19e82)[0x7f6297a69e82]
> /lib/libxenlight.so.2.0(+0x1c288)[0x7f6297a6c288]
> /lib/libxenlight.so.2.0(+0x1c2a8)[0x7f6297a6c2a8]
> /lib/libxenlight.so.2.0(+0x2657e)[0x7f6297a7657e]
> /lib/libxenlight.so.2.0(+0x34076)[0x7f6297a84076]
> /lib/libxenlight.so.2.0(libxl__fork_selfpipe_woken+0x92)[0x7f6297a84394]
> /lib/libxenlight.so.2.0(+0x3254a)[0x7f6297a8254a]
> /lib/libxenlight.so.2.0(+0x3276d)[0x7f6297a8276d]
> /lib/libxenlight.so.2.0(+0x33944)[0x7f6297a83944]
> /lib/libxenlight.so.2.0(+0x1c0a8)[0x7f6297a6c0a8]
> /lib/libxenlight.so.2.0(libxl_domain_create_new+0x14)[0x7f6297a6c14f]
> xl[0x40c1f2]
> xl[0x40fc94]
> xl[0x406c21]
> /lib64/libc.so.6(__libc_start_main+0xed)[0x7f629709123d]
> xl[0x406439]
>
> Attached patch can fix this issue.
>
> Thanks,
> Wei
>
> Signed-off-by: Wei Wang <wei.wang2@amd.com>
>
> ---
>   monitor.c |    2 +-
>   1 files changed, 1 insertions(+), 1 deletions(-)
>
> diff --git a/monitor.c b/monitor.c
> index f6107ba..9f30f5f 100644
> --- a/monitor.c
> +++ b/monitor.c
> @@ -165,7 +165,7 @@ struct Monitor {
>       int reset_seen;
>       int flags;
>       int suspend_cnt;
> -    uint8_t outbuf[1024];
> +    uint8_t outbuf[2048];
>       int outbuf_index;
>       ReadLineState *rs;
>       MonitorControl *mc;
>
Wei Wang July 10, 2012, 1:35 p.m.
On 07/10/2012 03:05 PM, Anthony PERARD wrote:
> On 10/07/12 12:43, Wei Wang wrote:
>> Hi, I find a passthrough issue in qemu when pci device has multiple mmio
>> regions. In this case, the last few bytes of qmp response string are
>> trimmed
>> and then passthru fails with following output.
>
> Could you compile libxl with DEBUG_RECEIVED (uncomment the #define in
> tools/libxl/libxl_qmp.c) and then give the output of `xl -vvv create ...`.
>
> Thanks,

Hi, Log file has been attached. Please check them.
Thanks,
Wei



>> *** glibc detected *** xl: realloc(): invalid pointer:
>> 0x0000000002163f90 ***
>> ======= Backtrace: =========
>> /lib64/libc.so.6(+0x74c06)[0x7f62970e4c06]
>> /lib64/libc.so.6(+0x77d25)[0x7f62970e7d25]
>> /lib/libxenlight.so.2.0(+0x28d02)[0x7f6297a78d02]
>> /lib/libxenlight.so.2.0(+0x2eccf)[0x7f6297a7eccf]
>> /lib/libxenlight.so.2.0(+0x2f2f6)[0x7f6297a7f2f6]
>> /lib/libxenlight.so.2.0(+0x2fe18)[0x7f6297a7fe18]
>> /lib/libxenlight.so.2.0(+0x20027)[0x7f6297a70027]
>> /lib/libxenlight.so.2.0(+0x212a6)[0x7f6297a712a6]
>> /lib/libxenlight.so.2.0(+0x19e82)[0x7f6297a69e82]
>> /lib/libxenlight.so.2.0(+0x1c288)[0x7f6297a6c288]
>> /lib/libxenlight.so.2.0(+0x1c2a8)[0x7f6297a6c2a8]
>> /lib/libxenlight.so.2.0(+0x2657e)[0x7f6297a7657e]
>> /lib/libxenlight.so.2.0(+0x34076)[0x7f6297a84076]
>> /lib/libxenlight.so.2.0(libxl__fork_selfpipe_woken+0x92)[0x7f6297a84394]
>> /lib/libxenlight.so.2.0(+0x3254a)[0x7f6297a8254a]
>> /lib/libxenlight.so.2.0(+0x3276d)[0x7f6297a8276d]
>> /lib/libxenlight.so.2.0(+0x33944)[0x7f6297a83944]
>> /lib/libxenlight.so.2.0(+0x1c0a8)[0x7f6297a6c0a8]
>> /lib/libxenlight.so.2.0(libxl_domain_create_new+0x14)[0x7f6297a6c14f]
>> xl[0x40c1f2]
>> xl[0x40fc94]
>> xl[0x406c21]
>> /lib64/libc.so.6(__libc_start_main+0xed)[0x7f629709123d]
>> xl[0x406439]
>>
>> Attached patch can fix this issue.
>>
>> Thanks,
>> Wei
>>
>> Signed-off-by: Wei Wang <wei.wang2@amd.com>
>>
>> ---
>> monitor.c | 2 +-
>> 1 files changed, 1 insertions(+), 1 deletions(-)
>>
>> diff --git a/monitor.c b/monitor.c
>> index f6107ba..9f30f5f 100644
>> --- a/monitor.c
>> +++ b/monitor.c
>> @@ -165,7 +165,7 @@ struct Monitor {
>> int reset_seen;
>> int flags;
>> int suspend_cnt;
>> - uint8_t outbuf[1024];
>> + uint8_t outbuf[2048];
>> int outbuf_index;
>> ReadLineState *rs;
>> MonitorControl *mc;
>>
>
>

Patch hide | download patch | download mbox

======= Backtrace: =========
/lib64/libc.so.6(+0x74c06)[0x7f62970e4c06]
/lib64/libc.so.6(+0x77d25)[0x7f62970e7d25]
/lib/libxenlight.so.2.0(+0x28d02)[0x7f6297a78d02]
/lib/libxenlight.so.2.0(+0x2eccf)[0x7f6297a7eccf]
/lib/libxenlight.so.2.0(+0x2f2f6)[0x7f6297a7f2f6]
/lib/libxenlight.so.2.0(+0x2fe18)[0x7f6297a7fe18]
/lib/libxenlight.so.2.0(+0x20027)[0x7f6297a70027]
/lib/libxenlight.so.2.0(+0x212a6)[0x7f6297a712a6]
/lib/libxenlight.so.2.0(+0x19e82)[0x7f6297a69e82]
/lib/libxenlight.so.2.0(+0x1c288)[0x7f6297a6c288]
/lib/libxenlight.so.2.0(+0x1c2a8)[0x7f6297a6c2a8]
/lib/libxenlight.so.2.0(+0x2657e)[0x7f6297a7657e]
/lib/libxenlight.so.2.0(+0x34076)[0x7f6297a84076]
/lib/libxenlight.so.2.0(libxl__fork_selfpipe_woken+0x92)[0x7f6297a84394]
/lib/libxenlight.so.2.0(+0x3254a)[0x7f6297a8254a]
/lib/libxenlight.so.2.0(+0x3276d)[0x7f6297a8276d]
/lib/libxenlight.so.2.0(+0x33944)[0x7f6297a83944]
/lib/libxenlight.so.2.0(+0x1c0a8)[0x7f6297a6c0a8]
/lib/libxenlight.so.2.0(libxl_domain_create_new+0x14)[0x7f6297a6c14f]
xl[0x40c1f2]
xl[0x40fc94]
xl[0x406c21]
/lib64/libc.so.6(__libc_start_main+0xed)[0x7f629709123d]
xl[0x406439]

Attached patch can fix this issue. 

Thanks,
Wei

Signed-off-by: Wei Wang <wei.wang2@amd.com>

---
 monitor.c |    2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)

diff --git a/monitor.c b/monitor.c
index f6107ba..9f30f5f 100644
--- a/monitor.c
+++ b/monitor.c
@@ -165,7 +165,7 @@  struct Monitor {
     int reset_seen;
     int flags;
     int suspend_cnt;
-    uint8_t outbuf[1024];
+    uint8_t outbuf[2048];
     int outbuf_index;
     ReadLineState *rs;
     MonitorControl *mc;