From patchwork Sun Aug 19 22:17:02 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Laurent Vivier X-Patchwork-Id: 959460 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (mailfrom) smtp.mailfrom=nongnu.org (client-ip=2001:4830:134:3::11; helo=lists.gnu.org; envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org; receiver=) Authentication-Results: ozlabs.org; dmarc=none (p=none dis=none) header.from=vivier.eu Received: from lists.gnu.org (lists.gnu.org [IPv6:2001:4830:134:3::11]) (using TLSv1 with cipher AES256-SHA (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 41trvM3SJMz9s4c for ; Mon, 20 Aug 2018 08:19:11 +1000 (AEST) Received: from localhost ([::1]:44269 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1frW2P-0002OA-2Q for incoming@patchwork.ozlabs.org; Sun, 19 Aug 2018 18:19:09 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:38922) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1frW1Q-000226-Jy for qemu-devel@nongnu.org; Sun, 19 Aug 2018 18:18:11 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1frW1M-00039a-LK for qemu-devel@nongnu.org; Sun, 19 Aug 2018 18:18:08 -0400 Received: from mout.kundenserver.de ([212.227.17.13]:52285) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1frW1M-000395-Cz for qemu-devel@nongnu.org; Sun, 19 Aug 2018 18:18:04 -0400 Received: from localhost.localdomain ([78.238.229.36]) by mrelayeu.kundenserver.de (mreue105 [212.227.15.183]) with ESMTPSA (Nemesis) id 0Lb2eP-1gFGAf06Mz-00kcQG; Mon, 20 Aug 2018 00:17:24 +0200 From: Laurent Vivier To: qemu-devel@nongnu.org Date: Mon, 20 Aug 2018 00:17:02 +0200 Message-Id: <20180819221707.20693-2-laurent@vivier.eu> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20180819221707.20693-1-laurent@vivier.eu> References: <20180819221707.20693-1-laurent@vivier.eu> X-Provags-ID: V03:K1:gWamoH3rCSCQSSaSS+r4qghSTSm7vbyBOZiiRX/W6OOumJotyDW +2VlVikKDDo9Vd4WJU+MEAgvOHGtWC7XLEb0hAF7fsNKumYQuZ6D9Zz+59KUNOxIc1orFBM ND97LGBHHq7uUWU8ZinFWY58HIu+oL6AmqcnDeCjWr5dPjpk7BLELdZWSDW/+EdORdMYZOc PrD5kROqHsFHOa6OrXFpg== X-UI-Out-Filterresults: notjunk:1; V01:K0:zl8+b/8LCJU=:hYbNV1ZlR/9Wre39u8iGq7 QkFe8cag2HwdYYjPWxmbv8OlE/oufxzRqUrZvMtHvUoQQx8nhGKCwtIdRx3YZ0P9InBCkBV1Y 7/6M9nEVfCxjYC1KXyr9PxsZ7/Yokh/GamoAkVaFDFy+cvRYzNqQR4X8e8aXahx1gwG8J6ez4 RqeDZLcsi4Kb48JVaal5BUgNLqNpcELt21SypftZHeHnol7ebov0KijQZ2dc/27bsTLXpGb+6 qrqbwdtP/QZwfawU6SLnSuIQ5/T8IXj85NjXLyOHbZHeeY6vpMAhs+Ab1ZCjB+npYM6XYF8wl yldNEiWw1r7TUtuhkvYpwd+y9vNvy8oqqSDH0+k8KkBFtUW6cerIcXVH13yAGJb8kSUq+iXnV n3dPQGo7JSKp4WQPFHxbEYG16uFIYwH0JaGoWj2TFJ+I8J5v51pdKhvdPjJcqGIjmErQJZmqz DoeWF2Kp/uuPfdcfgD6sCW51sawUE5H+3ceuHEqBFkrnjoWFTyL/0paGXVzzJcZ1Kfmrn9iHL G2F2/re2wYVCvdjIpH1zIpLY3912wcIbPP5sWjAVFRGVtUyE6O053s2O6QKjOYIKrpd5Gjg9O 6js5RGMb7BmoDydmkuhi9IbVPOO5sTKjzG1gyJUJnbrg/FkmPfeNFLWaJHAJX/pFzh+nTgk+i W/JCt5aO2UaTy7LuwrxeI/p6VwHBQeI7S/vKXdCkukebDdx94y3CnPWz9mFAu9M+4qEk= X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 212.227.17.13 Subject: [Qemu-devel] [PULL 1/6] qemu-binfmt-conf.sh: add x86_64 target X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Peter Crosthwaite , Riku Voipio , Laurent Vivier , Paolo Bonzini , Aurelien Jarno , Richard Henderson Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: "Qemu-devel" Signed-off-by: Laurent Vivier Reviewed-by: Richard Henderson Reviewed-by: Thomas Huth Message-Id: <20180801102944.23457-1-laurent@vivier.eu> --- scripts/qemu-binfmt-conf.sh | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/scripts/qemu-binfmt-conf.sh b/scripts/qemu-binfmt-conf.sh index b0dc8a714a..b5a16742a1 100755 --- a/scripts/qemu-binfmt-conf.sh +++ b/scripts/qemu-binfmt-conf.sh @@ -4,7 +4,7 @@ qemu_target_list="i386 i486 alpha arm armeb sparc32plus ppc ppc64 ppc64le m68k \ mips mipsel mipsn32 mipsn32el mips64 mips64el \ sh4 sh4eb s390x aarch64 aarch64_be hppa riscv32 riscv64 xtensa xtensaeb \ -microblaze microblazeel or1k" +microblaze microblazeel or1k x86_64" i386_magic='\x7fELF\x01\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x03\x00' i386_mask='\xff\xff\xff\xff\xff\xfe\xfe\x00\xff\xff\xff\xff\xff\xff\xff\xff\xfe\xff\xff\xff' @@ -14,6 +14,10 @@ i486_magic='\x7fELF\x01\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x06\ i486_mask='\xff\xff\xff\xff\xff\xfe\xfe\x00\xff\xff\xff\xff\xff\xff\xff\xff\xfe\xff\xff\xff' i486_family=i386 +x86_64_magic='\x7fELF\x02\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x3e\x00' +x86_64_mask='\xff\xff\xff\xff\xff\xfe\xfe\x00\xff\xff\xff\xff\xff\xff\xff\xff\xfe\xff\xff\xff' +x86_64_family=i386 + alpha_magic='\x7fELF\x02\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x26\x90' alpha_mask='\xff\xff\xff\xff\xff\xfe\xfe\x00\xff\xff\xff\xff\xff\xff\xff\xff\xfe\xff\xff\xff' alpha_family=alpha From patchwork Sun Aug 19 22:17:03 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Laurent Vivier X-Patchwork-Id: 959458 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (mailfrom) smtp.mailfrom=nongnu.org (client-ip=2001:4830:134:3::11; helo=lists.gnu.org; envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org; receiver=) Authentication-Results: ozlabs.org; dmarc=none (p=none dis=none) header.from=vivier.eu Received: from lists.gnu.org (lists.gnu.org [IPv6:2001:4830:134:3::11]) (using TLSv1 with cipher AES256-SHA (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 41trv403zKz9s4c for ; Mon, 20 Aug 2018 08:18:56 +1000 (AEST) Received: from localhost ([::1]:44267 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1frW29-0001w7-IE for incoming@patchwork.ozlabs.org; Sun, 19 Aug 2018 18:18:53 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:38891) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1frW1N-0001qk-Hh for qemu-devel@nongnu.org; Sun, 19 Aug 2018 18:18:06 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1frW1K-000387-8t for qemu-devel@nongnu.org; Sun, 19 Aug 2018 18:18:05 -0400 Received: from mout.kundenserver.de ([212.227.17.24]:48487) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1frW1J-00037b-Vq for qemu-devel@nongnu.org; Sun, 19 Aug 2018 18:18:02 -0400 Received: from localhost.localdomain ([78.238.229.36]) by mrelayeu.kundenserver.de (mreue105 [212.227.15.183]) with ESMTPSA (Nemesis) id 0M3jZR-1g8dO9333J-00rJU4; Mon, 20 Aug 2018 00:17:25 +0200 From: Laurent Vivier To: qemu-devel@nongnu.org Date: Mon, 20 Aug 2018 00:17:03 +0200 Message-Id: <20180819221707.20693-3-laurent@vivier.eu> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20180819221707.20693-1-laurent@vivier.eu> References: <20180819221707.20693-1-laurent@vivier.eu> X-Provags-ID: V03:K1:ZEjwiQGnu9WCfTF9kFfmYqdDtrAE0JFX4gbasYVFmNAygnDC6Qx mqM2pjs8GWxg3uIpMIyWtmMIgjIUfQHbEgPohA0ncZTNRo+2Z2xaXguZPxUh+a/4IvnZIBz +kA+F/4acO+BfNfzh82yfFwRDr4DUyT19sXjDhzeQ6yBXFqwyuc3o9fYwdVTL/PC/7m7p9v c5OBghpo0XLoE8hqSvgYw== X-UI-Out-Filterresults: notjunk:1; V01:K0:eCKHGW+ZFwY=:wD4QksogZ9pdybXvuboH5I GoaqNCaviD/Cg+kw9mSSxHy0rcr8X/Ze5rlvloIZ4umlOLeXow+6ez9hJjoVGa6m+Qog0eFrX 7KTp1hctWdxK4VTh9H7JQh4UudYeFrFTq+c/H4+BHn0kCgQrKQcG/RSC/ADKYuZIE5hfDN66P U4uE/ZLgFAnpd+KPMd0SJ0PeJoIw7EaTGwT2yu+ZIl9nLnjhDSSt1SU6lzTYql6tbzE+9sUIg 8Nik9DiWtbQKIXUrdCU5c3e5Sk57Y1QO/s8PIRwi2gX9OOCAK5YK/QINLQ2rQtk3zqyNz3kNL GQt0n27B5In2UUbgxIJZ8LUf52p3bV/3iHtUOxRvSoAzPrng1XM49u2phiQ3FrjewMaRONq/B OLex8qEWLqfdu5RhQZlU3W1NaDOHAT+jBidP5WWPI88UBTzgPaJqY34X1QyRRn2PhQ8lkvJkp /06uaZ13he5sa/uw/MGdVVt2X6LRNAsvYHAbLL+5QZXf7cjIvwyQ9IQWc7LS1STR9kUgT/w7N tk8P19eS5V7MrS2i5xHdWXDak3mJUIF3yS/132oLUHCD7Eo2AIMGYF32qyTUGyoZSlxQTmxRG NnfZKHI8KIt/Qnmh4JLPuzcaIse01QcSBGOPtGutd+fMk7VSSACtYuu7OoeRFNTn0zA9wg+zV EvJ5KYFfwsQkOiG9IiTQ65akvTcsrjdM/g4W0UqTVxJrMTXLHGbZwHAl/kWtF0nxpEGE= X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 212.227.17.24 Subject: [Qemu-devel] [PULL 2/6] linux-user: fix 32bit g2h()/h2g() X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Peter Crosthwaite , Riku Voipio , Laurent Vivier , Paolo Bonzini , Aurelien Jarno , Richard Henderson Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: "Qemu-devel" sparc32plus has 64bit long type but only 32bit virtual address space. For instance, "apt-get upgrade" failed because of a mmap()/msync() sequence. mmap() returned 0xff252000 but msync() used g2h(0xffffffffff252000) to find the host address. The "(target_ulong)" in g2h() doesn't fix the address because it is 64bit long. This patch introduces an "abi_ptr" that is set to uint32_t if the virtual address space is addressed using 32bit in the linux-user case. It stays set to target_ulong with softmmu case. Signed-off-by: Laurent Vivier Message-Id: <20180814171217.14680-1-laurent@vivier.eu> Reviewed-by: Richard Henderson [lv: added "%" in TARGET_ABI_FMT_ptr "%"PRIx64] --- include/exec/cpu_ldst.h | 23 ++++++++++++++++++----- include/exec/cpu_ldst_useronly_template.h | 12 ++++++------ linux-user/syscall.c | 2 +- 3 files changed, 25 insertions(+), 12 deletions(-) diff --git a/include/exec/cpu_ldst.h b/include/exec/cpu_ldst.h index 0f2cb717b1..41ed0526e2 100644 --- a/include/exec/cpu_ldst.h +++ b/include/exec/cpu_ldst.h @@ -48,8 +48,19 @@ #define CPU_LDST_H #if defined(CONFIG_USER_ONLY) +/* sparc32plus has 64bit long but 32bit space address + * this can make bad result with g2h() and h2g() + */ +#if TARGET_VIRT_ADDR_SPACE_BITS <= 32 +typedef uint32_t abi_ptr; +#define TARGET_ABI_FMT_ptr "%x" +#else +typedef uint64_t abi_ptr; +#define TARGET_ABI_FMT_ptr "%"PRIx64 +#endif + /* All direct uses of g2h and h2g need to go away for usermode softmmu. */ -#define g2h(x) ((void *)((unsigned long)(target_ulong)(x) + guest_base)) +#define g2h(x) ((void *)((unsigned long)(abi_ptr)(x) + guest_base)) #define guest_addr_valid(x) ((x) <= GUEST_ADDR_MAX) #define h2g_valid(x) guest_addr_valid((unsigned long)(x) - guest_base) @@ -61,7 +72,7 @@ static inline int guest_range_valid(unsigned long start, unsigned long len) #define h2g_nocheck(x) ({ \ unsigned long __ret = (unsigned long)(x) - guest_base; \ - (abi_ulong)__ret; \ + (abi_ptr)__ret; \ }) #define h2g(x) ({ \ @@ -69,7 +80,9 @@ static inline int guest_range_valid(unsigned long start, unsigned long len) assert(h2g_valid(x)); \ h2g_nocheck(x); \ }) - +#else +typedef target_ulong abi_ptr; +#define TARGET_ABI_FMT_ptr TARGET_ABI_FMT_lx #endif #if defined(CONFIG_USER_ONLY) @@ -397,7 +410,7 @@ extern __thread uintptr_t helper_retaddr; * This is the equivalent of the initial fast-path code used by * TCG backends for guest load and store accesses. */ -static inline void *tlb_vaddr_to_host(CPUArchState *env, target_ulong addr, +static inline void *tlb_vaddr_to_host(CPUArchState *env, abi_ptr addr, int access_type, int mmu_idx) { #if defined(CONFIG_USER_ONLY) @@ -405,7 +418,7 @@ static inline void *tlb_vaddr_to_host(CPUArchState *env, target_ulong addr, #else int index = (addr >> TARGET_PAGE_BITS) & (CPU_TLB_SIZE - 1); CPUTLBEntry *tlbentry = &env->tlb_table[mmu_idx][index]; - target_ulong tlb_addr; + abi_ptr tlb_addr; uintptr_t haddr; switch (access_type) { diff --git a/include/exec/cpu_ldst_useronly_template.h b/include/exec/cpu_ldst_useronly_template.h index e30e58ed4a..0fd6019af0 100644 --- a/include/exec/cpu_ldst_useronly_template.h +++ b/include/exec/cpu_ldst_useronly_template.h @@ -62,7 +62,7 @@ #endif static inline RES_TYPE -glue(glue(cpu_ld, USUFFIX), MEMSUFFIX)(CPUArchState *env, target_ulong ptr) +glue(glue(cpu_ld, USUFFIX), MEMSUFFIX)(CPUArchState *env, abi_ptr ptr) { #if !defined(CODE_ACCESS) trace_guest_mem_before_exec( @@ -74,7 +74,7 @@ glue(glue(cpu_ld, USUFFIX), MEMSUFFIX)(CPUArchState *env, target_ulong ptr) static inline RES_TYPE glue(glue(glue(cpu_ld, USUFFIX), MEMSUFFIX), _ra)(CPUArchState *env, - target_ulong ptr, + abi_ptr ptr, uintptr_t retaddr) { RES_TYPE ret; @@ -86,7 +86,7 @@ glue(glue(glue(cpu_ld, USUFFIX), MEMSUFFIX), _ra)(CPUArchState *env, #if DATA_SIZE <= 2 static inline int -glue(glue(cpu_lds, SUFFIX), MEMSUFFIX)(CPUArchState *env, target_ulong ptr) +glue(glue(cpu_lds, SUFFIX), MEMSUFFIX)(CPUArchState *env, abi_ptr ptr) { #if !defined(CODE_ACCESS) trace_guest_mem_before_exec( @@ -98,7 +98,7 @@ glue(glue(cpu_lds, SUFFIX), MEMSUFFIX)(CPUArchState *env, target_ulong ptr) static inline int glue(glue(glue(cpu_lds, SUFFIX), MEMSUFFIX), _ra)(CPUArchState *env, - target_ulong ptr, + abi_ptr ptr, uintptr_t retaddr) { int ret; @@ -111,7 +111,7 @@ glue(glue(glue(cpu_lds, SUFFIX), MEMSUFFIX), _ra)(CPUArchState *env, #ifndef CODE_ACCESS static inline void -glue(glue(cpu_st, SUFFIX), MEMSUFFIX)(CPUArchState *env, target_ulong ptr, +glue(glue(cpu_st, SUFFIX), MEMSUFFIX)(CPUArchState *env, abi_ptr ptr, RES_TYPE v) { #if !defined(CODE_ACCESS) @@ -124,7 +124,7 @@ glue(glue(cpu_st, SUFFIX), MEMSUFFIX)(CPUArchState *env, target_ulong ptr, static inline void glue(glue(glue(cpu_st, SUFFIX), MEMSUFFIX), _ra)(CPUArchState *env, - target_ulong ptr, + abi_ptr ptr, RES_TYPE v, uintptr_t retaddr) { diff --git a/linux-user/syscall.c b/linux-user/syscall.c index bb42a225eb..1806b33b02 100644 --- a/linux-user/syscall.c +++ b/linux-user/syscall.c @@ -7644,7 +7644,7 @@ static int open_self_maps(void *cpu_env, int fd) if (h2g(min) == ts->info->stack_limit) { pstrcpy(path, sizeof(path), " [stack]"); } - dprintf(fd, TARGET_ABI_FMT_lx "-" TARGET_ABI_FMT_lx + dprintf(fd, TARGET_ABI_FMT_ptr "-" TARGET_ABI_FMT_ptr " %c%c%c%c %08" PRIx64 " %02x:%02x %d %s%s\n", h2g(min), h2g(max - 1) + 1, flag_r, flag_w, flag_x, flag_p, offset, dev_maj, dev_min, inode, From patchwork Sun Aug 19 22:17:04 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Laurent Vivier X-Patchwork-Id: 959461 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (mailfrom) smtp.mailfrom=nongnu.org (client-ip=2001:4830:134:3::11; helo=lists.gnu.org; envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org; receiver=) Authentication-Results: ozlabs.org; dmarc=none (p=none dis=none) header.from=vivier.eu Received: from lists.gnu.org (lists.gnu.org [IPv6:2001:4830:134:3::11]) (using TLSv1 with cipher AES256-SHA (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 41tryd0BTtz9s4c for ; Mon, 20 Aug 2018 08:22:01 +1000 (AEST) Received: from localhost ([::1]:44283 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1frW58-00052f-Md for incoming@patchwork.ozlabs.org; Sun, 19 Aug 2018 18:21:58 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:38909) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1frW1P-0001y7-PP for qemu-devel@nongnu.org; Sun, 19 Aug 2018 18:18:11 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1frW1M-00039J-3C for qemu-devel@nongnu.org; Sun, 19 Aug 2018 18:18:07 -0400 Received: from mout.kundenserver.de ([217.72.192.74]:55421) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1frW1L-00038m-R2 for qemu-devel@nongnu.org; Sun, 19 Aug 2018 18:18:04 -0400 Received: from localhost.localdomain ([78.238.229.36]) by mrelayeu.kundenserver.de (mreue105 [212.227.15.183]) with ESMTPSA (Nemesis) id 0LgGuK-1gESHZ1wii-00nehN; Mon, 20 Aug 2018 00:17:25 +0200 From: Laurent Vivier To: qemu-devel@nongnu.org Date: Mon, 20 Aug 2018 00:17:04 +0200 Message-Id: <20180819221707.20693-4-laurent@vivier.eu> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20180819221707.20693-1-laurent@vivier.eu> References: <20180819221707.20693-1-laurent@vivier.eu> X-Provags-ID: V03:K1:a7DLLDwKaWJb1yMnjRK6fCVasZN3JVN71jRl5nxfjsLejnWCs7Z VUjKx5PyDm24QsDW4twfYCZAiUPlzp6qDNQO5bExN60B3xZYUYOiUecXdauWExYaqEJfKd7 Ng4VYGpxkpgl6VpW3vz2h6Soqh9gv01mlYHzSBLN7wJAZ/4ofFdZ6muEn2NEnWPas91mOII HWhEKxIlDirGFJHGBJAeg== X-UI-Out-Filterresults: notjunk:1; V01:K0:wOznmNnbd4Q=:7cCkfJr0aVkShMSR47Pvvo WaTzfZWEqenqOB17PU+7bROhdMprEOHEVFW1azFg0aARxGLR3iZqaKStNphvA7zKL9vVWp+2l kGZTZqyGmuKM+c+IfI9ro1dMrNgTT9EA4IkvEUDRePlTG5b18SYA8n5x+8Hs6ZZUofAKwss6t 61tGZ4PS3KN1nFTSitrtnR+9sAf1sgxrKsFZd24L0RfHFiTWgeM+Y4N9QgsfpAgEfFkTiyv7L lKwm3iRA6CHwpI72cvtD/NmufetSUkUN2TevFpxi639C54B8SF2fdXcXZ+tKY9QkFOWFDNIea Tx2GdXQCsSUAGQkHavFRHbnvJ00njs89k5tLv5NIEk+5Y5fqA5uFaqBlORK0oq5Bapn4MDQhe j1HOI2+RFVcB9dz+9Bii4sU0ehn8eDggqQqqcnNSA34hiajVJX4P5LrkO9q7/ExmLFB6hSERf Gpei6cSQViV1tGs8+SgpMSDh71e4mwC/MwbkYMzI9JIYO06s/2IKKKlofyTNCJqvjp6jGY+xf 74FR+7RUsHBv69DBguVrJTfugYNu1XDMD413tPS5lVN8I6u6sKnJwPNOCZJZ2mcX7DUhAFMzM E2dwZHhkrUjUquWWiTwLU8sYr/HKBo6cvbCX8t5Oj1R3f40KC0FytLznPPhePSEkQzXJyVVBL yn0DW0yesSkrvRJTFz8qN1EQDhrLOrQi9pYC0kswrbOTLf64aMUik7DdnsMxd6tj/s2M= X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 217.72.192.74 Subject: [Qemu-devel] [PULL 3/6] sh4: fix use_icount with linux-user X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Peter Crosthwaite , Riku Voipio , Laurent Vivier , Paolo Bonzini , Aurelien Jarno , Richard Henderson Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: "Qemu-devel" This fixes java in a linux-user chroot: $ java --version qemu-sh4: .../accel/tcg/cpu-exec.c:634: cpu_loop_exec_tb: Assertion `use_icount' failed. qemu: uncaught target signal 6 (Aborted) - core dumped Aborted (core dumped) In gen_conditional_jump() in the GUSA_EXCLUSIVE part, we must reset base.is_jmp to DISAS_NEXT after the gen_goto_tb() as it is done in gen_delayed_conditional_jump() after the gen_jump(). Bug: https://bugs.launchpad.net/qemu/+bug/1768246 Fixes: 4834871bc95b67343248100e2a75ae0d287bc08b ("target/sh4: Convert to DisasJumpType") Reported-by: John Paul Adrian Glaubitz Signed-off-by: Laurent Vivier Reviewed-by: Richard Henderson Reviewed-by: Aurelien Jarno Message-Id: <20180811082328.11268-1-laurent@vivier.eu> --- target/sh4/translate.c | 1 + 1 file changed, 1 insertion(+) diff --git a/target/sh4/translate.c b/target/sh4/translate.c index 1b9a201d6d..ab254b0e8d 100644 --- a/target/sh4/translate.c +++ b/target/sh4/translate.c @@ -293,6 +293,7 @@ static void gen_conditional_jump(DisasContext *ctx, target_ulong dest, disallow it in use_goto_tb, but it handles exit + singlestep. */ gen_goto_tb(ctx, 0, dest); gen_set_label(l1); + ctx->base.is_jmp = DISAS_NEXT; return; } From patchwork Sun Aug 19 22:17:05 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Laurent Vivier X-Patchwork-Id: 959462 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (mailfrom) smtp.mailfrom=nongnu.org (client-ip=2001:4830:134:3::11; helo=lists.gnu.org; envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org; receiver=) Authentication-Results: ozlabs.org; dmarc=none (p=none dis=none) header.from=vivier.eu Received: from lists.gnu.org (lists.gnu.org [IPv6:2001:4830:134:3::11]) (using TLSv1 with cipher AES256-SHA (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 41tryf44ZKz9s4c for ; Mon, 20 Aug 2018 08:22:02 +1000 (AEST) Received: from localhost ([::1]:44284 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1frW5A-00055M-7Z for incoming@patchwork.ozlabs.org; Sun, 19 Aug 2018 18:22:00 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:38911) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1frW1Q-0001zH-1k for qemu-devel@nongnu.org; Sun, 19 Aug 2018 18:18:11 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1frW1O-0003Cd-DI for qemu-devel@nongnu.org; Sun, 19 Aug 2018 18:18:08 -0400 Received: from mout.kundenserver.de ([217.72.192.74]:41177) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1frW1O-0003B5-5H for qemu-devel@nongnu.org; Sun, 19 Aug 2018 18:18:06 -0400 Received: from localhost.localdomain ([78.238.229.36]) by mrelayeu.kundenserver.de (mreue105 [212.227.15.183]) with ESMTPSA (Nemesis) id 0MMWPG-1fmZWi0iUg-008Jbn; Mon, 20 Aug 2018 00:17:26 +0200 From: Laurent Vivier To: qemu-devel@nongnu.org Date: Mon, 20 Aug 2018 00:17:05 +0200 Message-Id: <20180819221707.20693-5-laurent@vivier.eu> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20180819221707.20693-1-laurent@vivier.eu> References: <20180819221707.20693-1-laurent@vivier.eu> X-Provags-ID: V03:K1:NYUYLD7SG3r8B5uaUMlqVguU1uwa98x55Q70lvWUIW1uConh4QA 2aE8XbESeIiq1iWfgGpfM/ViYz7PdwqPG14UokxyfUDnuwM2YVuV14IzdTWreyOnz9c+c/3 mSFPrDV9/Ssd770wWBw5kSEYo2F2p61tqteOHbmFB1F3CLlXMbAxazfLgVitfQBN6+PuZwv Wuj7ULps/XT2S7zmKynEw== X-UI-Out-Filterresults: notjunk:1; V01:K0:gegwxiplGAg=:6YdlDJjCdWIbo86vsU6QQN gClVBjfMq2vNaMC/xwayaqefNNKLgM0AxvZhjktslg01wNMTkLTYc+Dpi61IShiZrji57SVSS ch8YCAq5Bk4KBmjValHEx5+l7Zzf850k2fWeOOEik9PvwXVR8gTfKMtKdQQ9UObtQ21PNYD4F XU06MvZ5tSG8deEIE3eG4gHAzssSxdA4zZvQrl2Sv73to+BkIbomvnII2/QhDV9xCoO9XIA3f TjHkxUK4WtEti10wHu3GjDQxu4DgGcdt6YsZqUWg8WOhVmp86XdimEQ0dYruYI09eILi1dJiE +eznTEkq15VGOCd1aSNPO0NWVPe/gjp0gLDeV2UrsnA8Ws/3d/Lp6iG4/UCclKZVgnkv3b2Ir VcyDkEIx4YWNtxTRxuQZ1EAkDQy+YVm7JiQIQT1A3YecEFtAJsoBs64wccuastNS+hoZRFVCM 8az2jLrbRCmhWcd/3dPbltGIdE/Bb+FbegqU/6VtX8fBIFmdXh+YNdn54XwESO8yRsFXJ/gMG u5VNfaZ7HalIBrJm+lozJeof6ORYb9szuIOM1gGJTQVx1sxHohbZ4rzCKZIWAwvWec4XXGR3z XvmSYW7Jn97WtzVMwuwA1ZHejvsd9kj5wR5V03KMrMYNE2VobU+ISEPgy215EhpmeUylzPwLu /Nc8pzo1CFoFlqDpPs6Of2+iQr9np7xc/W1AhJjIb4c80qx29keaW2ZSARN3hEUrOUOw= X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 217.72.192.74 Subject: [Qemu-devel] [PULL 4/6] linux-user: fix recvmsg()/recvfrom() with netlink and MSG_TRUNC X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Peter Crosthwaite , Riku Voipio , Laurent Vivier , Paolo Bonzini , Aurelien Jarno , Richard Henderson Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: "Qemu-devel" If recvmsg()/recvfrom() are used with the MSG_TRUNC flag, they return the real length even if it was longer than the passed buffer. So when we translate the buffer we must check we don't go beyond the end of the buffer. Bug: https://github.com/vivier/qemu-m68k/issues/33 Reported-by: John Paul Adrian Glaubitz Signed-off-by: Laurent Vivier Reviewed-by: Peter Maydell Message-Id: <20180806211806.29845-1-laurent@vivier.eu> --- linux-user/syscall.c | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/linux-user/syscall.c b/linux-user/syscall.c index 1806b33b02..e66faf1c62 100644 --- a/linux-user/syscall.c +++ b/linux-user/syscall.c @@ -3892,7 +3892,7 @@ static abi_long do_sendrecvmsg_locked(int fd, struct target_msghdr *msgp, len = ret; if (fd_trans_host_to_target_data(fd)) { ret = fd_trans_host_to_target_data(fd)(msg.msg_iov->iov_base, - len); + MIN(msg.msg_iov->iov_len, len)); } else { ret = host_to_target_cmsg(msgp, &msg); } @@ -4169,7 +4169,12 @@ static abi_long do_recvfrom(int fd, abi_ulong msg, size_t len, int flags, } if (!is_error(ret)) { if (fd_trans_host_to_target_data(fd)) { - ret = fd_trans_host_to_target_data(fd)(host_msg, ret); + abi_long trans; + trans = fd_trans_host_to_target_data(fd)(host_msg, MIN(ret, len)); + if (is_error(trans)) { + ret = trans; + goto fail; + } } if (target_addr) { host_to_target_sockaddr(target_addr, addr, addrlen); From patchwork Sun Aug 19 22:17:06 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Laurent Vivier X-Patchwork-Id: 959459 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (mailfrom) smtp.mailfrom=nongnu.org (client-ip=2001:4830:134:3::11; helo=lists.gnu.org; envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org; receiver=) Authentication-Results: ozlabs.org; dmarc=none (p=none dis=none) header.from=vivier.eu Received: from lists.gnu.org (lists.gnu.org [IPv6:2001:4830:134:3::11]) (using TLSv1 with cipher AES256-SHA (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 41trv70mm6z9s4c for ; Mon, 20 Aug 2018 08:18:59 +1000 (AEST) Received: from localhost ([::1]:44268 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1frW2C-00028t-Nk for incoming@patchwork.ozlabs.org; Sun, 19 Aug 2018 18:18:56 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:38893) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1frW1N-0001ql-Ho for qemu-devel@nongnu.org; Sun, 19 Aug 2018 18:18:06 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1frW1J-00037j-I5 for qemu-devel@nongnu.org; Sun, 19 Aug 2018 18:18:05 -0400 Received: from mout.kundenserver.de ([212.227.17.24]:53057) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1frW1J-00037O-9T for qemu-devel@nongnu.org; Sun, 19 Aug 2018 18:18:01 -0400 Received: from localhost.localdomain ([78.238.229.36]) by mrelayeu.kundenserver.de (mreue105 [212.227.15.183]) with ESMTPSA (Nemesis) id 0MQOHk-1fPtu63dWe-00TmML; Mon, 20 Aug 2018 00:17:27 +0200 From: Laurent Vivier To: qemu-devel@nongnu.org Date: Mon, 20 Aug 2018 00:17:06 +0200 Message-Id: <20180819221707.20693-6-laurent@vivier.eu> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20180819221707.20693-1-laurent@vivier.eu> References: <20180819221707.20693-1-laurent@vivier.eu> X-Provags-ID: V03:K1:iWGP6zWkwqiEWKoqm7g0iZGytJd8aWrz4MmwhE74r7Lc9Zq3CCn PrbF3+ZtVPeti29D7PT8MZMDvFZNAPow62rns84vfdD9tplAyP5o+Wjrz7UMUbzUTx9gHN+ Mvjz4Pc27FpS+QNHT8l/r5/m1xqhNdh6owYE/BBS0TS0ts4MlYpJ654A2v3NhImeYSnX9lL oZ8rmohc0RTKWrOEfzTQA== X-UI-Out-Filterresults: notjunk:1; V01:K0:gSrcFSz6i1o=:r7J9VM2x30ubLQLJcQ3Jlp xq1IeWbkydvZ5zk7vYwcWE+Yy2FtpqMv7cPJwmsjofACXCFraEnTSACQSo1lh2t+xKh499dRC 7umeUnUgSsaGLIC5D/9703Lxp2AAxa3Pnop1QZupqXSXY9LbXSJiYrzFmBW2jjVSFpRXHlwXf EhAWqJlZz2FK0RPKi00ehnGd527r9+KQg9HPJW8KenKHvGvQJQ73jHJM/tlM2v+fTkNRUUIQ3 E9DMhJigo3dhj4pov05KAZCV7Ou8+vOaciFcvlMc/x5SXpB64TrDh/O0uNng6pdnAplbkl+9S Fj1xrour5DY46ZbjOMvOTSYHnFqW5lTRGSGMlpVOr9Nxf9HKO8WUI6jBo5vH8EgPKZQ3SFIMi S5HTSkI8n1fwrDEU7+oofVConMEjyPaVcxelWhU+Y4djC0ZOuyXs8Eq6Y4xhBOF8MBCFE+kvJ wLeYH1z/R9u/qBcWzqcNZ+NimJJFv2lL9orV0oa/2V0Z3HwqRuJXXAjr1UETRLdBsxSadjCyt VyAgQjBaf+tmKry/I8x/4zD9CV23HyKH5vat4HKFdnA8Sa8spRCe6+e05UACb48kNAgCILhkg of8Jewm70/zI+SwOeRtMsRIb0AfjphZKTQZTADB2ngnsBG/qX1nhchoDuC0M2VO64EyY7+CVm s4nW0jn69Tw9OKb5t+OvDPN/Imct8BHbi4IwHv/stIF6O+b+gBrsiSUpBsPp4rDqxyQ8= X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 212.227.17.24 Subject: [Qemu-devel] [PULL 5/6] linux-user: update netlink route types X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Peter Crosthwaite , Riku Voipio , Laurent Vivier , Paolo Bonzini , Aurelien Jarno , Richard Henderson Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: "Qemu-devel" Add RTA_PREF and RTA_CACHEINFO. Fix following errors when we start gedit: Unknown host RTA type: 12 Unknown host RTA type: 20 Signed-off-by: Laurent Vivier Message-Id: <20180814161904.12216-3-laurent@vivier.eu> --- linux-user/syscall.c | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/linux-user/syscall.c b/linux-user/syscall.c index e66faf1c62..da1fcaf4ca 100644 --- a/linux-user/syscall.c +++ b/linux-user/syscall.c @@ -2659,12 +2659,17 @@ static abi_long host_to_target_data_addr_rtattr(struct rtattr *rtattr) static abi_long host_to_target_data_route_rtattr(struct rtattr *rtattr) { uint32_t *u32; + struct rta_cacheinfo *ci; + switch (rtattr->rta_type) { /* binary: depends on family type */ case RTA_GATEWAY: case RTA_DST: case RTA_PREFSRC: break; + /* u8 */ + case RTA_PREF: + break; /* u32 */ case RTA_PRIORITY: case RTA_TABLE: @@ -2672,6 +2677,20 @@ static abi_long host_to_target_data_route_rtattr(struct rtattr *rtattr) u32 = RTA_DATA(rtattr); *u32 = tswap32(*u32); break; + /* struct rta_cacheinfo */ + case RTA_CACHEINFO: + ci = RTA_DATA(rtattr); + ci->rta_clntref = tswap32(ci->rta_clntref); + ci->rta_lastuse = tswap32(ci->rta_lastuse); + ci->rta_expires = tswap32(ci->rta_expires); + ci->rta_error = tswap32(ci->rta_error); + ci->rta_used = tswap32(ci->rta_used); +#if defined(RTNETLINK_HAVE_PEERINFO) + ci->rta_id = tswap32(ci->rta_id); + ci->rta_ts = tswap32(ci->rta_ts); + ci->rta_tsage = tswap32(ci->rta_tsage); +#endif + break; default: gemu_log("Unknown host RTA type: %d\n", rtattr->rta_type); break; From patchwork Sun Aug 19 22:17:07 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Laurent Vivier X-Patchwork-Id: 959463 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (mailfrom) smtp.mailfrom=nongnu.org (client-ip=2001:4830:134:3::11; helo=lists.gnu.org; envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org; receiver=) Authentication-Results: ozlabs.org; dmarc=none (p=none dis=none) header.from=vivier.eu Received: from lists.gnu.org (lists.gnu.org [IPv6:2001:4830:134:3::11]) (using TLSv1 with cipher AES256-SHA (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 41ts0p3Tqxz9s3Z for ; Mon, 20 Aug 2018 08:23:53 +1000 (AEST) Received: from localhost ([::1]:44292 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1frW6v-0006iJ-Ty for incoming@patchwork.ozlabs.org; Sun, 19 Aug 2018 18:23:49 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:38985) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1frW1k-0002T3-4E for qemu-devel@nongnu.org; Sun, 19 Aug 2018 18:18:28 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1frW1f-0003Pz-MQ for qemu-devel@nongnu.org; Sun, 19 Aug 2018 18:18:27 -0400 Received: from mout.kundenserver.de ([217.72.192.73]:58527) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1frW1f-0003Pc-EJ for qemu-devel@nongnu.org; Sun, 19 Aug 2018 18:18:23 -0400 Received: from localhost.localdomain ([78.238.229.36]) by mrelayeu.kundenserver.de (mreue105 [212.227.15.183]) with ESMTPSA (Nemesis) id 0LvkQW-1fuZx52Nye-017X1t; Mon, 20 Aug 2018 00:17:27 +0200 From: Laurent Vivier To: qemu-devel@nongnu.org Date: Mon, 20 Aug 2018 00:17:07 +0200 Message-Id: <20180819221707.20693-7-laurent@vivier.eu> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20180819221707.20693-1-laurent@vivier.eu> References: <20180819221707.20693-1-laurent@vivier.eu> X-Provags-ID: V03:K1:v+hZ+bn62vDDxwM3RH/sTptXefW//S7uYBeL8ULO39Gk4GsOIJ3 uX6KAyuEvs1B7nXB7HIG7knVncMzT+1Fe32Lkvd6CCieSQ3XpfqxoRrYEjPF0FCZ3PaAWJl r3pw2ndmiy6kq/v7egXJUpR+SNSq4shi1IatsNTid19CGPO8iSaYsxAtg6nTzk0gIijGb4x Qpbh8FSfAMRq1Zt3DjYeQ== X-UI-Out-Filterresults: notjunk:1; V01:K0:B+8+y344v60=:wwCSo2sF4u7eShMCqhNezY hnIJ1YSN50jRSGaV9fdupZkblLh1f7hgyOftIC2qqGSwAXcgi/Jmox85R4xIylkgQ65+VE6sv ipExdIY7Lk2FcOP6hwrCK3LWRLh94mERA2lGtnnewJEOQdxVhe2kNe7ASvvxWbL8OhXHBN7lW LiLYqm0pK8sbZj5UtHlQVznqtGr3Lv/Mj2KQj7EVwr9LO/JUmcERii8V5krbwFga6eWxQmLug z4Yrlr34DtdnkQxoYkErcFBR5jKY6c9TkDRI0P879DAqsuv+coHMUoksqo0a0EaOuuNKtqIX4 u0cSGUvratoUSCTZio6SM6xnsq1RhV996V+eRQP06WMW5ZaCuLa3L8tMJ2H5VyOPslmqDYGVC 8T5Xn47mqEAGDFKAareTMmjB3dL9DDgwY3tYEQ2a7j+WN9VtyoPupOCKIP/YlnMRVqeF8zHxJ S6ENQZoq7/cdzC+9fyltoNBL1H2l8xkn+GHnj+5eQ3aPPosDpmOg6vks/Ys8H99aSQ7jDn1Ix JHyyAt7kraa9bK4qduys3dbnboyRLYfjkurF406TY+5SprpgqI91bOMkea6S9W2bobf0+n65K zcDL4heFUpLTnjPUqFoVke0sZCBBdCKT6R3+7NTa4jYo+4RClnqDMb3W+agPIP2CWBgc630v1 wGvcaqSBWTIrFbL19pv+k82pUnF/tRU3+zVX4ZX/ghlqdDipJpUc8vs5zEaHTTCdCZDE= X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 217.72.192.73 Subject: [Qemu-devel] [PULL 6/6] linux-user: add QEMU_IFLA_INFO_KIND nested type for tun X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Peter Crosthwaite , Riku Voipio , Laurent Vivier , Paolo Bonzini , Aurelien Jarno , Richard Henderson Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: "Qemu-devel" Signed-off-by: Laurent Vivier Message-Id: <20180814161904.12216-4-laurent@vivier.eu> --- linux-user/syscall.c | 48 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 48 insertions(+) diff --git a/linux-user/syscall.c b/linux-user/syscall.c index da1fcaf4ca..424296d1a1 100644 --- a/linux-user/syscall.c +++ b/linux-user/syscall.c @@ -501,6 +501,20 @@ enum { QEMU___IFLA_BRPORT_MAX }; +enum { + QEMU_IFLA_TUN_UNSPEC, + QEMU_IFLA_TUN_OWNER, + QEMU_IFLA_TUN_GROUP, + QEMU_IFLA_TUN_TYPE, + QEMU_IFLA_TUN_PI, + QEMU_IFLA_TUN_VNET_HDR, + QEMU_IFLA_TUN_PERSIST, + QEMU_IFLA_TUN_MULTI_QUEUE, + QEMU_IFLA_TUN_NUM_QUEUES, + QEMU_IFLA_TUN_NUM_DISABLED_QUEUES, + QEMU___IFLA_TUN_MAX, +}; + enum { QEMU_IFLA_INFO_UNSPEC, QEMU_IFLA_INFO_KIND, @@ -2315,6 +2329,34 @@ static abi_long host_to_target_slave_data_bridge_nlattr(struct nlattr *nlattr, return 0; } +static abi_long host_to_target_data_tun_nlattr(struct nlattr *nlattr, + void *context) +{ + uint32_t *u32; + + switch (nlattr->nla_type) { + /* uint8_t */ + case QEMU_IFLA_TUN_TYPE: + case QEMU_IFLA_TUN_PI: + case QEMU_IFLA_TUN_VNET_HDR: + case QEMU_IFLA_TUN_PERSIST: + case QEMU_IFLA_TUN_MULTI_QUEUE: + break; + /* uint32_t */ + case QEMU_IFLA_TUN_NUM_QUEUES: + case QEMU_IFLA_TUN_NUM_DISABLED_QUEUES: + case QEMU_IFLA_TUN_OWNER: + case QEMU_IFLA_TUN_GROUP: + u32 = NLA_DATA(nlattr); + *u32 = tswap32(*u32); + break; + default: + gemu_log("Unknown QEMU_IFLA_TUN type %d\n", nlattr->nla_type); + break; + } + return 0; +} + struct linkinfo_context { int len; char *name; @@ -2349,6 +2391,12 @@ static abi_long host_to_target_data_linkinfo_nlattr(struct nlattr *nlattr, nlattr->nla_len, NULL, host_to_target_data_bridge_nlattr); + } else if (strncmp(li_context->name, "tun", + li_context->len) == 0) { + return host_to_target_for_each_nlattr(NLA_DATA(nlattr), + nlattr->nla_len, + NULL, + host_to_target_data_tun_nlattr); } else { gemu_log("Unknown QEMU_IFLA_INFO_KIND %s\n", li_context->name); }