From patchwork Mon Aug 20 20:25:58 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Laurent Vivier X-Patchwork-Id: 959969 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 41vQZz4BjFz9s78 for ; Tue, 21 Aug 2018 06:36:59 +1000 (AEST) Received: from localhost ([::1]:49188 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1frqv3-0001fJ-8w for incoming@patchwork.ozlabs.org; Mon, 20 Aug 2018 16:36:57 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:51900) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1frqlY-00037R-P2 for qemu-devel@nongnu.org; Mon, 20 Aug 2018 16:27:13 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1frqlH-00038o-Im for qemu-devel@nongnu.org; Mon, 20 Aug 2018 16:26:59 -0400 Received: from mout.kundenserver.de ([212.227.126.131]:54931) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1frqlH-000349-0x for qemu-devel@nongnu.org; Mon, 20 Aug 2018 16:26:51 -0400 Received: from localhost.localdomain ([78.238.229.36]) by mrelayeu.kundenserver.de (mreue002 [212.227.15.167]) with ESMTPSA (Nemesis) id 0MP57v-1fnk9Z0lp1-006QwY; Mon, 20 Aug 2018 22:26:14 +0200 From: Laurent Vivier To: qemu-devel@nongnu.org Date: Mon, 20 Aug 2018 22:25:58 +0200 Message-Id: <20180820202604.14218-2-laurent@vivier.eu> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20180820202604.14218-1-laurent@vivier.eu> References: <20180820202604.14218-1-laurent@vivier.eu> X-Provags-ID: V03:K1:fLzLhKh4BE0e30uKQU/eXPl1V32jzxWaDpgadTTsFa8logiaRRw 0TQdXxu7MpTreQ3HXizfqZ5nOzfGJM5MWF5/mXHvX/4360ODkeUjRc0PVkf6k1mZ40VuSjo o7/CD5PX1kOqNRJX0KoFcASgO/HEiZZo2LV4kpwmA2vxZn2zl3CuTTXlcfy6a+ADOkUIQLQ 5mM+7fW92WZyZp3jqMi5A== X-UI-Out-Filterresults: notjunk:1; V01:K0:/AYKPo949G0=:dnO3NRDYqb5u/3Cro+StGa arKRPVGc0zZNGg7e+EM7l44SHaPVrEUDtvma0sE3ekCByXWbmQcB3JqKq/0cUCKBrt9FHHIFL prO5hnb79kGscobHcgZaf1Y/b28tdkmspZY9zz12giSCoBCOFp7Krsqbad33qeKLrTcHbmDdV 5fGtgXFeeVpnXGiuBaxjz4KlR6v4FpFvo94UcJjcqTcsWKO38Se1/sw16En3Z1t6CFUrVxeR3 c5r3arElX+88gRBGWjhSbRw6StDF9VlEn/AVSMPomQO1AU38HUkD0DXrcTzXa8ZZL85U3V7Hf hNRvEWZdZleS/MwEWv4n3e+L3X8F45p4Jr+lro6EO+dZPc/MB6V8HW7rPdTzkFLju03FQr7fc CFt6R+cLdpHYbymb4jDcf5M2JwUANDG0/LD2Z9EAt1CpVcAMbvIvO6sPbpk+dvsiGlj0Do7HR fCSv1JaToLUSrFk9b8KioJJSY1NVS9dygdD7Zq2KoAPywBh2JO2nszqS1H2WasElfu1bmy7bD PYC+9qo92OlmaTRcSw44XLVnRwB6fkH1PWxoNl5QUYQhIqLDIbOZBu7XCx61elqLB/X2f1zDA 4IuqBUUQ6g2BzBQyM5oHuh8nbPM+kpwiWiuUZ9HPEjYtEKUeL0/OVMnZKoIUVn6GJX52ZEYpz 2Qaq375Y9yboSSjfCV1CMEifGwVcaZESSrlnt/miSrTWyooVbW++K0fBeirSE9xjn4IA= X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 212.227.126.131 Subject: [Qemu-devel] [PULL 1/7] 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 Mon Aug 20 20:25:59 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Laurent Vivier X-Patchwork-Id: 959971 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 41vQbf05C5z9s78 for ; Tue, 21 Aug 2018 06:37:34 +1000 (AEST) Received: from localhost ([::1]:49191 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1frqvb-00027A-H5 for incoming@patchwork.ozlabs.org; Mon, 20 Aug 2018 16:37:31 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:51814) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1frqlM-0002x3-0q for qemu-devel@nongnu.org; Mon, 20 Aug 2018 16:26:57 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1frqlI-00039c-28 for qemu-devel@nongnu.org; Mon, 20 Aug 2018 16:26:55 -0400 Received: from mout.kundenserver.de ([212.227.126.130]:59385) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1frqlH-000365-HW for qemu-devel@nongnu.org; Mon, 20 Aug 2018 16:26:51 -0400 Received: from localhost.localdomain ([78.238.229.36]) by mrelayeu.kundenserver.de (mreue002 [212.227.15.167]) with ESMTPSA (Nemesis) id 0LnGP8-1gLAAC3hT4-00hhhn; Mon, 20 Aug 2018 22:26:15 +0200 From: Laurent Vivier To: qemu-devel@nongnu.org Date: Mon, 20 Aug 2018 22:25:59 +0200 Message-Id: <20180820202604.14218-3-laurent@vivier.eu> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20180820202604.14218-1-laurent@vivier.eu> References: <20180820202604.14218-1-laurent@vivier.eu> X-Provags-ID: V03:K1:ffVTIVCjSSP+ARFg278fyTXfezREpu8s6qAFL6lIGw/B8fbk83n VGDlTDlrQkhGt83Fi8XCS2Db6nsztXema93sBtjjQawmPXoTIwso97evb2YmcS6cFNnbT8x UYyNaVyuBh5UXwSO/PeW/jl5oDIi23vzkpBrC5x+wE2mUlrPH41qqXWSvGstTKrUjhoP7Wq 0sIVBqXZSLPuKpiyzEZ3Q== X-UI-Out-Filterresults: notjunk:1; V01:K0:+LG/hDZ2TIs=:5gWA+/xAZEKUDqoEUrPbRz hEYzARTnJR+CNRVMfKVE4Fjcf+TE1s3t/ZY2y24kXGGnj4EZgLL1G8Kv5lcyN3Cv2O5B7Rmbk tOLKJ2QXA9pRB6vMaiEuvJi7dL260vHxJ9bgNxNXI7ZtAqRbVcE+RYcunqtYM3aSlAXXImmjb 07NLoYCSlS+a3HXE7IfHS1wEtmFmtbgHR9L6wwc/BzKTDm0AHs2ASDTWdCoSsuBZclUu8tg1i LGsFcpLuA4qTyQjvF5Xc4sMRDKwhqwbFaLp9sj6QLvhtO4hMQcB4jfbQXRwPeyM+kq3Dxvlpq MjeppiSMRX9tSBN3AR9BLq8opm4rlspHMDtEkC10Eezp3OHqbc4cI6pjCt3oKtEyJI4ZTwdFj EYwTI10uRUOBSYL/f+x5blQjWQiWm9JHPXCXRTHJGVfIP3djZNygSQ0hQIYnHAdq0X6NNyK+P nAidZEvK9w+a88GEKz78XBspIlMIBOtlnu8TbkamtDNoyuZCCYGvj2XmEEczjet696xUb1cqL txJKOgH/+MqExrBblYeu0LK1uEFzQ81FHdc3bsdi6m5G5GO/vBJQ7YFALgwGKb52DJxyHLh/T qyQy3zB7rf6ht87A2ZlCX5g1ZPZRto7JRcbHn/t7vdM8keduHa3lByq93x0Zw+ktY8OLu222c Ppz7OcWOqOsgZVaEVJYMm2Gud2w+BWiiipmACR8cdATp1YPh7KcMh+qChTkkXqRmhvf4= X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 212.227.126.130 Subject: [Qemu-devel] [PULL 2/7] 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 Mon Aug 20 20:26:00 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Laurent Vivier X-Patchwork-Id: 959977 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 41vQk02tj4z9ryn for ; Tue, 21 Aug 2018 06:43:04 +1000 (AEST) Received: from localhost ([::1]:49224 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1frr0w-00011n-3L for incoming@patchwork.ozlabs.org; Mon, 20 Aug 2018 16:43:02 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:52066) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1frqlm-0003Hv-5A for qemu-devel@nongnu.org; Mon, 20 Aug 2018 16:27:27 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1frqlb-0003r6-Jf for qemu-devel@nongnu.org; Mon, 20 Aug 2018 16:27:18 -0400 Received: from mout.kundenserver.de ([212.227.126.187]:38036) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1frqlU-0003Pt-AA for qemu-devel@nongnu.org; Mon, 20 Aug 2018 16:27:07 -0400 Received: from localhost.localdomain ([78.238.229.36]) by mrelayeu.kundenserver.de (mreue002 [212.227.15.167]) with ESMTPSA (Nemesis) id 0MFljh-1ffSgE2Xyv-00Ee8a; Mon, 20 Aug 2018 22:26:15 +0200 From: Laurent Vivier To: qemu-devel@nongnu.org Date: Mon, 20 Aug 2018 22:26:00 +0200 Message-Id: <20180820202604.14218-4-laurent@vivier.eu> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20180820202604.14218-1-laurent@vivier.eu> References: <20180820202604.14218-1-laurent@vivier.eu> X-Provags-ID: V03:K1:IIvpkNfHeQzmbn6obzYrLcveVxuJ943A3sA5iNNb/vMZEWXyEbU C4x8CKsxCJteWQac3njaPi1gGJoaWweN0Ygw3qyfagRHP94Lka3mcGX1SdnfgvBVrOm2V+6 TPKcoAlMn5hvM9thtrQjdxm0sRRHk8xtxphAw9HmC+8WEha1z4bKwdOnIgCUfuCHRM0I+RA zp5oGco5KwRmME4iCDiOQ== X-UI-Out-Filterresults: notjunk:1; V01:K0:qChEMLJ0Tco=:rTdTgji28PvnotyVEPogHQ /WETwrPwz+qilrbr1yGVVzxiq4OkGgvR9S7HSENQqzzM7jxdPSW7A/EeYvmA5Bn+r8ufo6mPE LPNM+Z/f8bONBFQWmPsXD+kHrAE7Tp+WAU42Chi3LruEAgkpdyn9Z9rgV/Q6tJlsokQx3O6UD S/0I330G6Jp6X6dsC1nEmUtaf8CgAfmfBI7PCvvVpFMd9hD8IoWzzPlyZU+Y6JoC06WwdmlJf PubOUs8s/rKlnE3/ZXM88HfB78hqh4Kp9qnFt+X/c08ah2x0a5HIrfCDptAQK+lraAvPwwWVB Jz/ZuJspT2kWAp4/BRyv6H2WA0z5qoYIaDT+IQkxe75b3yAKU4Ls33GdHKmjTgQoUoZobVj1K YuoXo78Q+n5Ip8wV7k1lrbH/R+4O8EJalj5Ks9MhuBno8+ioPy4SnjgfylUKsF+xxQIzRy+nN 2k2I9QNWtVPQl2m0U5SstmXF6EzPFsN4c5B5j64xApf9KkUfMybrSejNWfRMCpc3eYYVmZr+q s7NrG0+SNNzk0/Ms2QpM4CGtB93WB5cDai/XhWbIIOBcLmeYYV+SkSTHjHa5NhFHyOGuTT0uz KlRa3yMmitNLJGeQbDdDn9DLup99kSwSCuuoxi/UXoCQ5jPQPf9mU2CsHcrZTbj90faCjKnO0 f+7aQF36Al6pCKb1wD99zK89hXZNaB3p/naN672AQnPzqKgwGPty3a6YQNy4Uux46jYI= X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 212.227.126.187 Subject: [Qemu-devel] [PULL 3/7] 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 Mon Aug 20 20:26:01 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Laurent Vivier X-Patchwork-Id: 959979 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 41vQmS2Yx0z9s4c for ; Tue, 21 Aug 2018 06:45:12 +1000 (AEST) Received: from localhost ([::1]:49235 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1frr30-00061R-2Z for incoming@patchwork.ozlabs.org; Mon, 20 Aug 2018 16:45:10 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:52177) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1frqlr-0003Mt-Vq for qemu-devel@nongnu.org; Mon, 20 Aug 2018 16:27:29 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1frqln-0004Gd-Ui for qemu-devel@nongnu.org; Mon, 20 Aug 2018 16:27:27 -0400 Received: from mout.kundenserver.de ([212.227.126.135]:56386) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1frqlj-0003Qu-Vt for qemu-devel@nongnu.org; Mon, 20 Aug 2018 16:27:21 -0400 Received: from localhost.localdomain ([78.238.229.36]) by mrelayeu.kundenserver.de (mreue002 [212.227.15.167]) with ESMTPSA (Nemesis) id 0MXi7y-1fNegQ1FHa-00WSEp; Mon, 20 Aug 2018 22:26:16 +0200 From: Laurent Vivier To: qemu-devel@nongnu.org Date: Mon, 20 Aug 2018 22:26:01 +0200 Message-Id: <20180820202604.14218-5-laurent@vivier.eu> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20180820202604.14218-1-laurent@vivier.eu> References: <20180820202604.14218-1-laurent@vivier.eu> X-Provags-ID: V03:K1:emRHv7r3Pf8z1r+U9F38ssq8kJqsC80P2beTDujP1vYXgE3oksW Zm0Rs8ttRpzHmqHzPDo9yR1/3TNZiKKQPFOh/i7Uh69VA6epoemvtezHVXgqlkolTIQkG4O qHr+i42/aFpd05RTVrJeYXKRYsITg1D/6fzUZpoVWGnjem2Q9MYNIMNYmtPwuY4vt7RubRJ 5+oL7H3br8oquj32zFH1w== X-UI-Out-Filterresults: notjunk:1; V01:K0:TP27bvk3RXI=:8Llz07q4l+o/ZNw8ncOsoR 5ChjBFG/jrKx5E1qCcDpE2StzX9FKoqmqm1fyLeAP7ankmNT+1NPAZQvoFk1aCvccCYHSc/xX x8uBVfP5qkbiuPrqv2j/MHjmqvK88ZN83zoTkVPspxWkxCg34ZQKzqJKOXUxT26WpGCe8WTo5 +nokk0w3SBUw7XnnNJhyO0wYcKGZeOXmEn4uoSoNes+P86vf0nPbVo47UBfw93xK4OY2Hx0O7 arKJLD3B85hDE0Gg7KlZFtosIbDJpV2AvXPuN0yh34X7kfWkZ0QHWqu/4MDBxQI1OvUtkk1Md lzxOjwY/9li+K/mIjaK3RPJI6JQFKujixNKqla/SGDSF6kVXz7TmdPUXjisofDWDC8eSXpCyW orBreNpTJSUZAPcOWjVH3OpXDRUXp6e9xt6fFLmDl0XLKmWP6x743/y0klHJ5/OQ+/E8fNEKz TZxC3NHQvFqCU1nMAJWnSz++yrtffi1IQ0iW2eS9S4l5ezM81j7fC9wHEDrP0YXwN1SdaodqS b5SI+WMY/+YB1uH9jba2IjpJjdJ2NP4ugC4MbuNA4cWgE8RYlGHCcYbKzkU0Hl1EvprZdIp24 bDI3yfgpPcBIQjHF8OCWvR6x/WwTEllV5MwGVQqe0izd7MiaO6S8KhkBUf8RQULikcSp+Z3yR Ahq4pY5mp1QiVH9rLsGIsBqSARW34bfmNgmaHnwrFSM7CnXQmw/ZD/5xaey3F2zDNeJ8= X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 212.227.126.135 Subject: [Qemu-devel] [PULL 4/7] 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: <20180820171557.7734-2-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 Mon Aug 20 20:26: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: 959978 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 41vQly5r1pz9s4c for ; Tue, 21 Aug 2018 06:44:46 +1000 (AEST) Received: from localhost ([::1]:49232 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1frr2a-0003ok-Dg for incoming@patchwork.ozlabs.org; Mon, 20 Aug 2018 16:44:44 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:51890) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1frqlY-00037Q-P4 for qemu-devel@nongnu.org; Mon, 20 Aug 2018 16:27:13 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1frqlL-0003Iy-M9 for qemu-devel@nongnu.org; Mon, 20 Aug 2018 16:26:59 -0400 Received: from mout.kundenserver.de ([212.227.126.130]:42857) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1frqlK-0003EI-JS for qemu-devel@nongnu.org; Mon, 20 Aug 2018 16:26:55 -0400 Received: from localhost.localdomain ([78.238.229.36]) by mrelayeu.kundenserver.de (mreue002 [212.227.15.167]) with ESMTPSA (Nemesis) id 0MClSU-1fiSok44sU-009RD9; Mon, 20 Aug 2018 22:26:17 +0200 From: Laurent Vivier To: qemu-devel@nongnu.org Date: Mon, 20 Aug 2018 22:26:02 +0200 Message-Id: <20180820202604.14218-6-laurent@vivier.eu> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20180820202604.14218-1-laurent@vivier.eu> References: <20180820202604.14218-1-laurent@vivier.eu> X-Provags-ID: V03:K1:zgjIT0C+tyUwnsjij74NRdA/oRr81X0K6PJQzV29wkaXGIbP0Bd KxxkvFkbnAhoVvXPtxmnq/USiCGrsFH+1/kA+B0mrtHXuPJ3lytYBPyuu5utegx8GDMqdt+ vCg8nrgA6L9LacplLgb6g170Mv6fSEH0scFWkK4iFi3n10318KQCaZr6xocAyYlNzHdNbhq nuBISZzvDycUFVZZM52wA== X-UI-Out-Filterresults: notjunk:1; V01:K0:HNWgfK4eCes=:yZPj713F+aBZeNGAb+egiV swiu6Zpu/IWf4KYbldGIwY2U//mTINXMiOmjH0uQcBmMcFQbeM20XzkpSxczFI2qLww5AJ/6p aQPZAS2H2GbL8L7BxpJfNvAIFYIypPlF+fGZj4NQ5ymW39ce8vAefY6QI2wcdBMcEE4MH0QOy D4xX1j4XRn9Mcn/h2RWktbJlFJ5e3HaN5tjp0AjNdC+sY/3GGIBQnNNh5Jbnkh8BWQUJTZdWW rT5G8nXBSaf8BGQrLed6EzDpsXweeyRxpD70GNlCoB7z2xnLQrQlDoSchaYp3BEwM8dLQgg8Z UHPWLHPgsowQ8rGxRr96XGQUv07aEqDcLr7MY8r029C0iM8Xyraog8oR6EFzqJ4EUCHnWIFJB NImhHcjNMZ6lf6fNBWWB3RnbTdJ83aDrWSxQJJen2H6iRUjMOrCAuXUSSUhjJmiBdUzXSDhHQ U2gJSw5vSO3/AcRWao9E7dxr5pofdS8GpEzPxjcAjgWjA31h5rRYxWAzg8nY6uEXao1PbzAbH ey5eoxHx9vWfncbIxe6fUthzXNynzZw7SXtiH6qv7fecJ6pWRWUm+PM2ObDOMZIXJP0Mv/raz RF3Hv2nIX3J+VONj4reB6bpRXB3ZOl6+LcFFuyFnVcMfe77dMaIeqThXaQaxMWz/WUn7/nZzL F/VzN8z23P1VidyJAvRcOQd+sAYpc9Wt/WouEFy/B6STJJUhSjntLoqa2Tmk+D/CxLKE= X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 212.227.126.130 Subject: [Qemu-devel] [PULL 5/7] linux-user: introduce QEMU_RTA_* to use with rtattr_type_t 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" Following commit will introduce RTA_PREF that appears only with kernel v4.1. To avoid to manage a specific case for it, this patch introduces the full list of rtattr_type_t prefixed with QEMU_ (as we did for IFLA values) Signed-off-by: Laurent Vivier Reviewed-by: Peter Maydell Message-Id: <20180820171557.7734-3-laurent@vivier.eu> [lv: added more RTA_* from linux v4.18] --- linux-user/syscall.c | 56 +++++++++++++++++++++++++++++++++++--------- 1 file changed, 45 insertions(+), 11 deletions(-) diff --git a/linux-user/syscall.c b/linux-user/syscall.c index e66faf1c62..9effbb316a 100644 --- a/linux-user/syscall.c +++ b/linux-user/syscall.c @@ -539,6 +539,40 @@ enum { QEMU___IFLA_XDP_MAX, }; +enum { + QEMU_RTA_UNSPEC, + QEMU_RTA_DST, + QEMU_RTA_SRC, + QEMU_RTA_IIF, + QEMU_RTA_OIF, + QEMU_RTA_GATEWAY, + QEMU_RTA_PRIORITY, + QEMU_RTA_PREFSRC, + QEMU_RTA_METRICS, + QEMU_RTA_MULTIPATH, + QEMU_RTA_PROTOINFO, /* no longer used */ + QEMU_RTA_FLOW, + QEMU_RTA_CACHEINFO, + QEMU_RTA_SESSION, /* no longer used */ + QEMU_RTA_MP_ALGO, /* no longer used */ + QEMU_RTA_TABLE, + QEMU_RTA_MARK, + QEMU_RTA_MFC_STATS, + QEMU_RTA_VIA, + QEMU_RTA_NEWDST, + QEMU_RTA_PREF, + QEMU_RTA_ENCAP_TYPE, + QEMU_RTA_ENCAP, + QEMU_RTA_EXPIRES, + QEMU_RTA_PAD, + QEMU_RTA_UID, + QEMU_RTA_TTL_PROPAGATE, + QEMU_RTA_IP_PROTO, + QEMU_RTA_SPORT, + QEMU_RTA_DPORT, + QEMU___RTA_MAX +}; + typedef abi_long (*TargetFdDataFunc)(void *, size_t); typedef abi_long (*TargetFdAddrFunc)(void *, abi_ulong, socklen_t); typedef struct TargetFdTrans { @@ -2661,14 +2695,14 @@ static abi_long host_to_target_data_route_rtattr(struct rtattr *rtattr) uint32_t *u32; switch (rtattr->rta_type) { /* binary: depends on family type */ - case RTA_GATEWAY: - case RTA_DST: - case RTA_PREFSRC: + case QEMU_RTA_GATEWAY: + case QEMU_RTA_DST: + case QEMU_RTA_PREFSRC: break; /* u32 */ - case RTA_PRIORITY: - case RTA_TABLE: - case RTA_OIF: + case QEMU_RTA_PRIORITY: + case QEMU_RTA_TABLE: + case QEMU_RTA_OIF: u32 = RTA_DATA(rtattr); *u32 = tswap32(*u32); break; @@ -2808,13 +2842,13 @@ static abi_long target_to_host_data_route_rtattr(struct rtattr *rtattr) uint32_t *u32; switch (rtattr->rta_type) { /* binary: depends on family type */ - case RTA_DST: - case RTA_SRC: - case RTA_GATEWAY: + case QEMU_RTA_DST: + case QEMU_RTA_SRC: + case QEMU_RTA_GATEWAY: break; /* u32 */ - case RTA_PRIORITY: - case RTA_OIF: + case QEMU_RTA_PRIORITY: + case QEMU_RTA_OIF: u32 = RTA_DATA(rtattr); *u32 = tswap32(*u32); break; From patchwork Mon Aug 20 20:26: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: 959966 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 41vQY211wLz9s4V for ; Tue, 21 Aug 2018 06:35:18 +1000 (AEST) Received: from localhost ([::1]:49172 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1frqtP-0000II-Jx for incoming@patchwork.ozlabs.org; Mon, 20 Aug 2018 16:35:15 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:51930) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1frqlb-00039a-EU for qemu-devel@nongnu.org; Mon, 20 Aug 2018 16:27:15 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1frqlL-0003J8-Qp for qemu-devel@nongnu.org; Mon, 20 Aug 2018 16:27:05 -0400 Received: from mout.kundenserver.de ([212.227.126.135]:54646) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1frqlK-0003Do-N5 for qemu-devel@nongnu.org; Mon, 20 Aug 2018 16:26:55 -0400 Received: from localhost.localdomain ([78.238.229.36]) by mrelayeu.kundenserver.de (mreue002 [212.227.15.167]) with ESMTPSA (Nemesis) id 0MDHpc-1fdXwD2j2S-00Ga57; Mon, 20 Aug 2018 22:26:17 +0200 From: Laurent Vivier To: qemu-devel@nongnu.org Date: Mon, 20 Aug 2018 22:26:03 +0200 Message-Id: <20180820202604.14218-7-laurent@vivier.eu> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20180820202604.14218-1-laurent@vivier.eu> References: <20180820202604.14218-1-laurent@vivier.eu> X-Provags-ID: V03:K1:2Dagc66lVC2pDcg7ZbJ8GLCYsGCLJvGzHvF0KtE65SVpuqnEEkm kRfKimThw7H7zJfrjl4CqZb6oGVzNS5H7VY4oXqZ6Ov11OokpCjDoBwtxF/TFgYHa/UHhRu ZOV+2h22nT0ycFVgfAKXZAYQcHjUAfsQYbhRfCD08TtuVx74NnzO0/U4McDqO2AM+nA0H7L 8NQdJxd+jNUp58R01CF6A== X-UI-Out-Filterresults: notjunk:1; V01:K0:HdVwdz2Q7Os=:K4k7y06gmhvLCiJVC7u8bZ bldyHRJNDlCifX2aikXyt1HG2gxPGwnzw/vms6p8DSpl2s1eUv37fEDGnrYM+byrYLppMtZva wBywidyyPxjvMbAXYiE7AO9uLSt1jpRiifuOLlfASYG+r7gbUCX0tTDjksUwx1cHDax3IUjDR +amqmmABgYmALjsQDrBKVOnsXw06xaIUh9JqQt+YiWgjmi5SCvPsWuupMZajJhxln0R233mFt J+ZD8H5dKYHxyRSim0R1L+UldKjZlA+xWQR9Qf9zapMBX3OKA2Tey+MmwTj9tG27PxL4DNOmz ThRqhAW4L6TV4XhksEH05jAp0KiWZNxJ6kMDvkVGPdR74oY+GC2CFsDC1Hgumvepm75V/YGYd 4siZ+fdiznNhr5RNmOT6xjtAYcRncoey7X4Q7aUqZuGCQjv7qmkaoU/SOHTvK7zBQLSBxboHw CmKY5FpPkyvxwLbXEjKTEtGm8MdbWGl8mIlQOo2to5zJ5bsRJfd5MDSB2x2kVsWbL9HQtCT5m Hopkn9rrv5lBgdenB0nD2JvlNw/PyGPsH/Ais2rNuZ+g05miPJ5+s5WvbC04u6wqT2O1vcfMh wKpYHBOigvj0s+ceg7cNgSFLpbMtnosEZ6/HQHR9vcxdoC47xynhcdnF6oq74qHESOdUk/Plg 85aHpEIJ+PyjPu7Sm+qNhXTy7Dbmy1Bk7pJwsvg/pMTHoqc1uCtKtbyGJBSjo4LmiZJ0= X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 212.227.126.135 Subject: [Qemu-devel] [PULL 6/7] 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 Reviewed-by: Peter Maydell Message-Id: <20180820171557.7734-4-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 9effbb316a..c0840107c9 100644 --- a/linux-user/syscall.c +++ b/linux-user/syscall.c @@ -2693,12 +2693,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 QEMU_RTA_GATEWAY: case QEMU_RTA_DST: case QEMU_RTA_PREFSRC: break; + /* u8 */ + case QEMU_RTA_PREF: + break; /* u32 */ case QEMU_RTA_PRIORITY: case QEMU_RTA_TABLE: @@ -2706,6 +2711,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 QEMU_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 Mon Aug 20 20:26: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: 959973 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 41vQfD2HhJz9s78 for ; Tue, 21 Aug 2018 06:39:48 +1000 (AEST) Received: from localhost ([::1]:49201 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1frqxl-0003tr-Uk for incoming@patchwork.ozlabs.org; Mon, 20 Aug 2018 16:39:46 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:51817) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1frqlM-0002x6-2U for qemu-devel@nongnu.org; Mon, 20 Aug 2018 16:26:57 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1frqlF-00032E-EH for qemu-devel@nongnu.org; Mon, 20 Aug 2018 16:26:55 -0400 Received: from mout.kundenserver.de ([212.227.126.130]:46756) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1frqlC-0002og-OG for qemu-devel@nongnu.org; Mon, 20 Aug 2018 16:26:47 -0400 Received: from localhost.localdomain ([78.238.229.36]) by mrelayeu.kundenserver.de (mreue002 [212.227.15.167]) with ESMTPSA (Nemesis) id 0MBezu-1fjZHQ1SVy-00AXfr; Mon, 20 Aug 2018 22:26:18 +0200 From: Laurent Vivier To: qemu-devel@nongnu.org Date: Mon, 20 Aug 2018 22:26:04 +0200 Message-Id: <20180820202604.14218-8-laurent@vivier.eu> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20180820202604.14218-1-laurent@vivier.eu> References: <20180820202604.14218-1-laurent@vivier.eu> X-Provags-ID: V03:K1:bIxifVFtYoP5V7+vG9nnBbF3JmAhIF1jNFtbGFxnUNBPj8Qo+IB vQm2IdNEGhgUatWYLuUGqQDmTq7tYOXismxD/Q3UcVcJyg6l2o58TLEwAgYwr9lOe+9Fqmm tQea4/lf3oeoMhQcukug6MrxprFaUVdT6ksFPRcBI38Qf9d8NTIlWJqdpHSpDuat/7xJRDh zN5XKb1KyeUo6iNEk9a7g== X-UI-Out-Filterresults: notjunk:1; V01:K0:JizmEGzGSA8=:u+GtIr0lup2zdFTYfG0+ZJ bsl8pMztvF1rG0lm+92DrJzsQ52OuKi1hRr2Tehw5iMSmbdMFEMpi59GzX6eFBXZ5PydEb8WK 9JGMF7elxqB51wXI8/MXThV4K3LfKueoCH3tZDS2gRQXSqzYMJp1O7KhowrEfdWTM/0BCq4v/ DYEXBcMunCkMak7EEceAopi2izgOTClHxITCxDLuxiWqu8IACAO7Z5v55dTsPOpKGpHSyseYp wGg8bNMRxaaCYIVD1lEAEfrdOcOSkfmRfTN/b7UOeSGtQqwOB/mp5dUtc6WUMvmQRTz9s7c1q UPNgP4DYvves+DkyxDwNHPE4yivQx00moXOurieQczcII7TTEpA7JEd47W16GI0enIjmPnNNN Dl5OWd+l/EJPeIcyEDt29DJxBUFBs7GjxVkhw4BlhZ6VWLDPXJhfFexE2GaaqoE+u/lkcdcVK qLQdCxBftcYrtnqckWy9lCBEgyzDl1HoOBqmaGX4ZWQrWGTW1BkH1pyUO/xxh/SUMV4av2CD/ zYIJVR+/LE+OdF/XugTeu1wVxPLl2gK7MOSFgkkrtOJdtkYTWkkedNQmNMB2Mev22Bp48sIxa +GnspGVR73GbjRUiWuCAB2BGZCjJ1lF65/SmPAQYdf7uvqbUL86md15XPAXxofOwAr48OYzo3 eFFhMQPxm/59uoTzxgpAvwzDIRHmVAjQeuxHPUBlZq19fVHy0/i4C+5iPhYSpTkYfeu0= X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 212.227.126.130 Subject: [Qemu-devel] [PULL 7/7] 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 Reviewed-by: Peter Maydell Message-Id: <20180820171557.7734-5-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 c0840107c9..202aa777ad 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, @@ -2349,6 +2363,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; @@ -2383,6 +2425,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); }