Re: [Qemu-devel] [PATCH] Speedup 'tb_find_slow' by using the same heuristic as during memory page lookup
On 04.12.2010 23:11, Blue Swirl wrote: On Thu, Dec 2, 2010 at 1:12 PM, Kirill Batuzov wrote: Move the last found TB to the head of the list so it will be found more quickly next time it will be looked for. Signed-off-by: Kirill Batuzov Signed-off-by: Pavel Yushchenko --- This patch appeared during investigation of performance issues with S5PC110 emulation for Samsung. It increses OS startup speed significantly. The patch looks reasonable, but I didn't see any visible difference in my tests. Could you report your numbers? The exact numbers depend on complexity of guest system. - For basic Debian system (no X-server) on versatilepb we observed 25% decrease of boot time. - For to-be released Samsung LIMO platform on S5PC110 board we observed 2x (for older version) and 3x (for newer version) decrease of boot time. - Small CPU-intensive benchmarks are not affected because they are completely handled by 'tb_find_fast'. We also noticed better response time for heavyweight GUI applications, but I do not know how to measure it accurately. Kirill.
[Qemu-devel] Re: [PULL] More format checking
On Sat, Dec 4, 2010 at 9:02 PM, Stefan Weil wrote: > Am 04.12.2010 21:18, schrieb Blue Swirl: >> >> On Sat, Dec 4, 2010 at 7:24 PM, Stefan Weil wrote: >>> >>> Am 04.12.2010 19:35, schrieb Blue Swirl: On Wed, Dec 1, 2010 at 9:41 PM, Stefan Weil wrote: > > Am 24.11.2010 22:46, schrieb Stefan Weil: >> >> Hello, >> >> with these patches, hopefully all functions with printf like arguments >> use gcc's format checking, so the TODO comment in HACKING can be >> removed. >> >> The patch series was tested with a default build configuration on >> linux >> and windows hosts (including some cross compilations for arm, mips and >> powerpc), >> so chances are good that there remain few (if any) functions without >> format checking. >> >> If there remain such functions (and maybe also some related format >> bugs), >> the compiler will raise a warning now, so it should be easy to fix >> them. >> >> All patches were published on qemu-devel. There were two replies: >> >> * 1st patch: small typo in commit message, fixed now >> >> * last patch: breaks build >> >> It's normal that the last patch will break builds with warning = error >> as long as the other four patches (and maybe more format related >> fixes) >> are not applied. This is the intention of the last patch! >> >> Regards, >> Stefan Weil >> >> The following changes since commit >> f711df67d611e4762966a249742a5f7499e19f99: >> >> microblaze: target-ify target_ucontext (2010-11-23 10:04:30 +0100) >> >> are available in the git repository at: >> git://git.weilnetz.de/git/qemu for-blueswirl >> >> Stefan Weil (5): >> *-dis: Replace fprintf_ftype by fprintf_function (format checking) >> target-sparc: Use fprintf_function (format checking) >> audio: Use GCC_FMT_ATTR (format checking) >> darwin-user: Use GCC_FMT_ATTR (format checking) >> configure: Add compiler option -Wmissing-format-attribute >> >> HACKING | 3 --- >> alpha-dis.c | 3 +++ >> arm-dis.c | 14 +++--- >> audio/audio_pt_int.c | 3 ++- >> configure | 1 + >> darwin-user/machload.c | 2 +- >> darwin-user/qemu.h | 2 +- >> dis-asm.h | 10 ++ >> m68k-dis.c | 2 +- >> microblaze-dis.c | 2 +- >> mips-dis.c | 2 -- >> sh4-dis.c | 16 +--- >> target-sparc/cpu.h | 4 ++-- >> 13 files changed, 26 insertions(+), 38 deletions(-) >> > > > Is there anything missing, or can the patch series be applied finally? The last patch is not OK yet: CC qemu-img.o /src/qemu/qemu-img.c: In function 'error': /src/qemu/qemu-img.c:48:5: error: function might be possible candidate for 'ms_printf' format attribute [-Werror=missing-format-attribute] CC qemu-error.o /src/qemu/qemu-error.c: In function 'error_vprintf': /src/qemu/qemu-error.c:27:9: error: function might be possible candidate for 'ms_printf' format attribute [-Werror=missing-format-attribute] CC block/blkverify.o /src/qemu/block/blkverify.c: In function 'blkverify_err': /src/qemu/block/blkverify.c:65:5: error: function might be possible candidate for 'ms_printf' format attribute [-Werror=missing-format-attribute] CC json-parser.o /src/qemu/json-parser.c: In function 'parse_error': /src/qemu/json-parser.c:100:5: error: function might be possible candidate for 'ms_printf' format attribute [-Werror=missing-format-attribute] CC qerror.o /src/qemu/qerror.c: In function 'qerror_abort': /src/qemu/qerror.c:230:5: error: function might be possible candidate for 'ms_printf' format attribute [-Werror=missing-format-attribute] CC blockdev.o /src/qemu/blockdev.c: In function 'drive_add': /src/qemu/blockdev.c:52:5: error: function might be possible candidate for 'ms_printf' format attribute [-Werror=missing-format-attribute] CC qemu-char.o /src/qemu/qemu-char.c: In function 'qemu_chr_printf': /src/qemu/qemu-char.c:182:5: error: function might be possible candidate for 'ms_printf' format attribute [-Werror=missing-format-attribute] CC audio/audio.o /src/qemu/audio/audio.c: In function 'AUD_vlog': /src/qemu/audio/audio.c:346:9: error: function might be possible candidate for 'ms_printf' format attribute [-Werror=missing-format-attribute] This is with mingw32 compiler, it should be happy with gnu_printf instead of ms_printf in case you wonder that. >>> >>> As far as I know all those warnings are false warnings. >> >> No, for example qemu-img.c and blockdev.c cases are real. I don't >> understand blkverify.c an
[Qemu-devel] Re: [PULL] More format checking
Am 04.12.2010 21:18, schrieb Blue Swirl: On Sat, Dec 4, 2010 at 7:24 PM, Stefan Weil wrote: Am 04.12.2010 19:35, schrieb Blue Swirl: On Wed, Dec 1, 2010 at 9:41 PM, Stefan Weil wrote: Am 24.11.2010 22:46, schrieb Stefan Weil: Hello, with these patches, hopefully all functions with printf like arguments use gcc's format checking, so the TODO comment in HACKING can be removed. The patch series was tested with a default build configuration on linux and windows hosts (including some cross compilations for arm, mips and powerpc), so chances are good that there remain few (if any) functions without format checking. If there remain such functions (and maybe also some related format bugs), the compiler will raise a warning now, so it should be easy to fix them. All patches were published on qemu-devel. There were two replies: * 1st patch: small typo in commit message, fixed now * last patch: breaks build It's normal that the last patch will break builds with warning = error as long as the other four patches (and maybe more format related fixes) are not applied. This is the intention of the last patch! Regards, Stefan Weil The following changes since commit f711df67d611e4762966a249742a5f7499e19f99: microblaze: target-ify target_ucontext (2010-11-23 10:04:30 +0100) are available in the git repository at: git://git.weilnetz.de/git/qemu for-blueswirl Stefan Weil (5): *-dis: Replace fprintf_ftype by fprintf_function (format checking) target-sparc: Use fprintf_function (format checking) audio: Use GCC_FMT_ATTR (format checking) darwin-user: Use GCC_FMT_ATTR (format checking) configure: Add compiler option -Wmissing-format-attribute HACKING|3 --- alpha-dis.c|3 +++ arm-dis.c | 14 +++--- audio/audio_pt_int.c |3 ++- configure |1 + darwin-user/machload.c |2 +- darwin-user/qemu.h |2 +- dis-asm.h | 10 ++ m68k-dis.c |2 +- microblaze-dis.c |2 +- mips-dis.c |2 -- sh4-dis.c | 16 +--- target-sparc/cpu.h |4 ++-- 13 files changed, 26 insertions(+), 38 deletions(-) Is there anything missing, or can the patch series be applied finally? The last patch is not OK yet: CC qemu-img.o /src/qemu/qemu-img.c: In function 'error': /src/qemu/qemu-img.c:48:5: error: function might be possible candidate for 'ms_printf' format attribute [-Werror=missing-format-attribute] CC qemu-error.o /src/qemu/qemu-error.c: In function 'error_vprintf': /src/qemu/qemu-error.c:27:9: error: function might be possible candidate for 'ms_printf' format attribute [-Werror=missing-format-attribute] CC block/blkverify.o /src/qemu/block/blkverify.c: In function 'blkverify_err': /src/qemu/block/blkverify.c:65:5: error: function might be possible candidate for 'ms_printf' format attribute [-Werror=missing-format-attribute] CC json-parser.o /src/qemu/json-parser.c: In function 'parse_error': /src/qemu/json-parser.c:100:5: error: function might be possible candidate for 'ms_printf' format attribute [-Werror=missing-format-attribute] CC qerror.o /src/qemu/qerror.c: In function 'qerror_abort': /src/qemu/qerror.c:230:5: error: function might be possible candidate for 'ms_printf' format attribute [-Werror=missing-format-attribute] CC blockdev.o /src/qemu/blockdev.c: In function 'drive_add': /src/qemu/blockdev.c:52:5: error: function might be possible candidate for 'ms_printf' format attribute [-Werror=missing-format-attribute] CC qemu-char.o /src/qemu/qemu-char.c: In function 'qemu_chr_printf': /src/qemu/qemu-char.c:182:5: error: function might be possible candidate for 'ms_printf' format attribute [-Werror=missing-format-attribute] CC audio/audio.o /src/qemu/audio/audio.c: In function 'AUD_vlog': /src/qemu/audio/audio.c:346:9: error: function might be possible candidate for 'ms_printf' format attribute [-Werror=missing-format-attribute] This is with mingw32 compiler, it should be happy with gnu_printf instead of ms_printf in case you wonder that. As far as I know all those warnings are false warnings. No, for example qemu-img.c and blockdev.c cases are real. I don't understand blkverify.c and qerror cases, GCC_FMT_ATTR() attributes are in place. I'm sorry but I don't understand your "no". My patches added the necessary format attributes in qemu-img.c and blockdev.c (otherwise all builds would raise compiler warnings). It's a mingw32 problem that the compiler complains there. This is what I call a "false" warning. Where did you detect a missing format attribute?
[Qemu-devel] Re: [PATCH] *-dis: Replace fprintf_ftype by fprintf_function (format checking)
Thanks, applied. On Mon, Nov 15, 2010 at 6:39 PM, Stefan Weil wrote: > This patch adds more printf format checking. > > Additional modifications were needed for this code change: > > * alpha-dis.c: The local definition of MAX conflicts with > a previous definition from osdep.h, so add an #undef. > > * dis-asm.h: Add include for fprintf_function (qemu-common.h). > The standard (now redundant) includes are removed. > > * mis-dis.c: The definition of ARRAY_SIZE is no longer needed > and must be removed (conflict with previous definition from > qemu-common.h). > > * sh4-dis.c: Remove some unneeded forward declarations. > > Cc: Blue Swirl > Signed-off-by: Stefan Weil > --- > alpha-dis.c | 3 +++ > arm-dis.c | 14 +++--- > dis-asm.h | 10 ++ > m68k-dis.c | 2 +- > microblaze-dis.c | 2 +- > mips-dis.c | 2 -- > sh4-dis.c | 16 +--- > 7 files changed, 19 insertions(+), 30 deletions(-) > > diff --git a/alpha-dis.c b/alpha-dis.c > index 970da5b..8a2411e 100644 > --- a/alpha-dis.c > +++ b/alpha-dis.c > @@ -22,6 +22,9 @@ along with this file; see the file COPYING. If not, see > #include > #include "dis-asm.h" > > +/* MAX is redefined below, so remove any previous definition. */ > +#undef MAX > + > /* The opcode table is an array of struct alpha_opcode. */ > > struct alpha_opcode > diff --git a/arm-dis.c b/arm-dis.c > index fe7ac99..af21739 100644 > --- a/arm-dis.c > +++ b/arm-dis.c > @@ -1587,7 +1587,7 @@ arm_decode_bitfield (const char *ptr, unsigned long > insn, > } > > static void > -arm_decode_shift (long given, fprintf_ftype func, void *stream, > +arm_decode_shift (long given, fprintf_function func, void *stream, > int print_shift) > { > func (stream, "%s", arm_regnames[given & 0xf]); > @@ -1633,7 +1633,7 @@ print_insn_coprocessor (bfd_vma pc, struct > disassemble_info *info, long given, > { > const struct opcode32 *insn; > void *stream = info->stream; > - fprintf_ftype func = info->fprintf_func; > + fprintf_function func = info->fprintf_func; > unsigned long mask; > unsigned long value; > int cond; > @@ -2127,7 +2127,7 @@ static void > print_arm_address (bfd_vma pc, struct disassemble_info *info, long given) > { > void *stream = info->stream; > - fprintf_ftype func = info->fprintf_func; > + fprintf_function func = info->fprintf_func; > > if (((given & 0x000f) == 0x000f) > && ((given & 0x0200) == 0)) > @@ -,7 +,7 @@ print_insn_neon (struct disassemble_info *info, long > given, bfd_boolean thumb) > { > const struct opcode32 *insn; > void *stream = info->stream; > - fprintf_ftype func = info->fprintf_func; > + fprintf_function func = info->fprintf_func; > > if (thumb) > { > @@ -2676,7 +2676,7 @@ print_insn_arm_internal (bfd_vma pc, struct > disassemble_info *info, long given) > { > const struct opcode32 *insn; > void *stream = info->stream; > - fprintf_ftype func = info->fprintf_func; > + fprintf_function func = info->fprintf_func; > > if (print_insn_coprocessor (pc, info, given, false)) > return; > @@ -3036,7 +3036,7 @@ print_insn_thumb16 (bfd_vma pc, struct disassemble_info > *info, long given) > { > const struct opcode16 *insn; > void *stream = info->stream; > - fprintf_ftype func = info->fprintf_func; > + fprintf_function func = info->fprintf_func; > > for (insn = thumb_opcodes; insn->assembler; insn++) > if ((given & insn->mask) == insn->value) > @@ -3312,7 +3312,7 @@ print_insn_thumb32 (bfd_vma pc, struct disassemble_info > *info, long given) > { > const struct opcode32 *insn; > void *stream = info->stream; > - fprintf_ftype func = info->fprintf_func; > + fprintf_function func = info->fprintf_func; > > if (print_insn_coprocessor (pc, info, given, true)) > return; > diff --git a/dis-asm.h b/dis-asm.h > index 9b9657e..3fb4838 100644 > --- a/dis-asm.h > +++ b/dis-asm.h > @@ -9,11 +9,7 @@ > #ifndef DIS_ASM_H > #define DIS_ASM_H > > -#include > -#include > -#include > -#include > -#include > +#include "qemu-common.h" > > typedef void *PTR; > typedef uint64_t bfd_vma; > @@ -237,8 +233,6 @@ typedef struct symbol_cache_entry > } udata; > } asymbol; > > -typedef int (*fprintf_ftype) (FILE*, const char*, ...); > - > enum dis_insn_type { > dis_noninsn, /* Not a valid instruction */ > dis_nonbranch, /* Not a branch instruction */ > @@ -261,7 +255,7 @@ enum dis_insn_type { > by hand, or using one of the initialization macros below. */ > > typedef struct disassemble_info { > - fprintf_ftype fprintf_func; > + fprintf_function fprintf_func; > FILE *stream; > PTR application_data; > > diff --git a/m68k-dis.c b/m68k-dis.c > index d93943e..04f837a 100644 > --- a/m68k-dis.c > +++ b/m68k-dis.c > @@ -1732,7 +1732,7 @@ match_insn_m68k (bfd_vma memaddr, > const char *d; > > bfd_byte *buffer = priv->the_buffer; > - fprintf_ftype save_printer = in
[Qemu-devel] Re: [PATCH] darwin-user: Use GCC_FMT_ATTR (format checking)
Thanks, applied. On Mon, Nov 15, 2010 at 8:00 PM, Stefan Weil wrote: > The redundant forward declaration of qerror in machload.c > is removed because it should be taken from qemu.h. > > Please note that this patch is untested because > I have no matching environment to compile it. > > Cc: Blue Swirl > Signed-off-by: Stefan Weil > --- > darwin-user/machload.c | 2 +- > darwin-user/qemu.h | 2 +- > 2 files changed, 2 insertions(+), 2 deletions(-) > > diff --git a/darwin-user/machload.c b/darwin-user/machload.c > index 4bb5c72..3bc3b65 100644 > --- a/darwin-user/machload.c > +++ b/darwin-user/machload.c > @@ -82,7 +82,7 @@ void *macho_text_sect = 0; > int macho_offset = 0; > > int load_object(const char *filename, struct target_pt_regs * regs, void ** > mh); > -void qerror(const char *format, ...); > + > #ifdef TARGET_I386 > typedef struct mach_i386_thread_state { > unsigned int eax; > diff --git a/darwin-user/qemu.h b/darwin-user/qemu.h > index 0c5081b..b6d3e6c 100644 > --- a/darwin-user/qemu.h > +++ b/darwin-user/qemu.h > @@ -100,7 +100,7 @@ int do_sigaction(int sig, const struct sigaction *act, > int do_sigaltstack(const struct sigaltstack *ss, struct sigaltstack *oss); > > void gemu_log(const char *fmt, ...) GCC_FMT_ATTR(1, 2); > -void qerror(const char *fmt, ...); > +void qerror(const char *fmt, ...) GCC_FMT_ATTR(1, 2); > > void write_dt(void *ptr, unsigned long addr, unsigned long limit, int flags); > > -- > 1.7.2.3 > >
[Qemu-devel] Re: [PATCH] audio: Use GCC_FMT_ATTR (format checking)
Thanks, applied. On Mon, Nov 15, 2010 at 7:54 PM, Stefan Weil wrote: > Cc: Blue Swirl > Signed-off-by: Stefan Weil > --- > audio/audio_pt_int.c | 3 ++- > 1 files changed, 2 insertions(+), 1 deletions(-) > > diff --git a/audio/audio_pt_int.c b/audio/audio_pt_int.c > index f15cc70..908c569 100644 > --- a/audio/audio_pt_int.c > +++ b/audio/audio_pt_int.c > @@ -8,7 +8,8 @@ > > #include > > -static void logerr (struct audio_pt *pt, int err, const char *fmt, ...) > +static void GCC_FMT_ATTR(3, 4) logerr (struct audio_pt *pt, int err, > + const char *fmt, ...) > { > va_list ap; > > -- > 1.7.2.3 > >
[Qemu-devel] Re: [PATCH] target-sparc: Use fprintf_function (format checking)
Thanks, applied. On Mon, Nov 15, 2010 at 6:58 PM, Stefan Weil wrote: > This change was missing in commit > 9a78eead0c74333a394c0f7bbfc4423ac746fcd5. > > Cc: Blue Swirl > Signed-off-by: Stefan Weil > --- > target-sparc/cpu.h | 4 ++-- > 1 files changed, 2 insertions(+), 2 deletions(-) > > diff --git a/target-sparc/cpu.h b/target-sparc/cpu.h > index 7e0d17c..eb5d9c1 100644 > --- a/target-sparc/cpu.h > +++ b/target-sparc/cpu.h > @@ -2,6 +2,7 @@ > #define CPU_SPARC_H > > #include "config.h" > +#include "qemu-common.h" > > #if !defined(TARGET_SPARC64) > #define TARGET_LONG_BITS 32 > @@ -442,8 +443,7 @@ typedef struct CPUSPARCState { > /* helper.c */ > CPUSPARCState *cpu_sparc_init(const char *cpu_model); > void cpu_sparc_set_id(CPUSPARCState *env, unsigned int cpu); > -void sparc_cpu_list (FILE *f, int (*cpu_fprintf)(FILE *f, const char *fmt, > - ...)); > +void sparc_cpu_list(FILE *f, fprintf_function cpu_fprintf); > void cpu_lock(void); > void cpu_unlock(void); > int cpu_sparc_handle_mmu_fault(CPUSPARCState *env1, target_ulong address, > int rw, > -- > 1.7.2.3 > >
Re: [Qemu-devel] State of EHCI emulation for QEMU
On 12/04/10 02:05, Jan Kiszka wrote: > Am 04.12.2010 01:18, Gerd Hoffmann wrote: >> Hi, >> >>> as you may know, there is an experimental git repository at >>> >>> git://git.kiszka.org/qemu.git ehci >> >> Looking into this right now as I'm busy with various usb issues anyway. >> Current state: >> http://cgit.freedesktop.org/spice/qemu/log/?h=usb.1 >> It appears that the import of the ehci code to spice has completely lost the development history and code contributions - from the original version by Mark Burkley through the work I've done on it. Would you mind pulling in the patch history instead of just the final code? I'll respond in --verbose mode for the other questions later this weekend when I get more time. David
[Qemu-devel] Re: [PULL] More format checking
On Sat, Dec 4, 2010 at 7:24 PM, Stefan Weil wrote: > Am 04.12.2010 19:35, schrieb Blue Swirl: >> >> On Wed, Dec 1, 2010 at 9:41 PM, Stefan Weil wrote: >>> >>> Am 24.11.2010 22:46, schrieb Stefan Weil: Hello, with these patches, hopefully all functions with printf like arguments use gcc's format checking, so the TODO comment in HACKING can be removed. The patch series was tested with a default build configuration on linux and windows hosts (including some cross compilations for arm, mips and powerpc), so chances are good that there remain few (if any) functions without format checking. If there remain such functions (and maybe also some related format bugs), the compiler will raise a warning now, so it should be easy to fix them. All patches were published on qemu-devel. There were two replies: * 1st patch: small typo in commit message, fixed now * last patch: breaks build It's normal that the last patch will break builds with warning = error as long as the other four patches (and maybe more format related fixes) are not applied. This is the intention of the last patch! Regards, Stefan Weil The following changes since commit f711df67d611e4762966a249742a5f7499e19f99: microblaze: target-ify target_ucontext (2010-11-23 10:04:30 +0100) are available in the git repository at: git://git.weilnetz.de/git/qemu for-blueswirl Stefan Weil (5): *-dis: Replace fprintf_ftype by fprintf_function (format checking) target-sparc: Use fprintf_function (format checking) audio: Use GCC_FMT_ATTR (format checking) darwin-user: Use GCC_FMT_ATTR (format checking) configure: Add compiler option -Wmissing-format-attribute HACKING | 3 --- alpha-dis.c | 3 +++ arm-dis.c | 14 +++--- audio/audio_pt_int.c | 3 ++- configure | 1 + darwin-user/machload.c | 2 +- darwin-user/qemu.h | 2 +- dis-asm.h | 10 ++ m68k-dis.c | 2 +- microblaze-dis.c | 2 +- mips-dis.c | 2 -- sh4-dis.c | 16 +--- target-sparc/cpu.h | 4 ++-- 13 files changed, 26 insertions(+), 38 deletions(-) >>> >>> >>> Is there anything missing, or can the patch series be applied finally? >> >> The last patch is not OK yet: >> CC qemu-img.o >> /src/qemu/qemu-img.c: In function 'error': >> /src/qemu/qemu-img.c:48:5: error: function might be possible candidate >> for 'ms_printf' format attribute [-Werror=missing-format-attribute] >> CC qemu-error.o >> /src/qemu/qemu-error.c: In function 'error_vprintf': >> /src/qemu/qemu-error.c:27:9: error: function might be possible >> candidate for 'ms_printf' format attribute >> [-Werror=missing-format-attribute] >> CC block/blkverify.o >> /src/qemu/block/blkverify.c: In function 'blkverify_err': >> /src/qemu/block/blkverify.c:65:5: error: function might be possible >> candidate for 'ms_printf' format attribute >> [-Werror=missing-format-attribute] >> CC json-parser.o >> /src/qemu/json-parser.c: In function 'parse_error': >> /src/qemu/json-parser.c:100:5: error: function might be possible >> candidate for 'ms_printf' format attribute >> [-Werror=missing-format-attribute] >> CC qerror.o >> /src/qemu/qerror.c: In function 'qerror_abort': >> /src/qemu/qerror.c:230:5: error: function might be possible candidate >> for 'ms_printf' format attribute [-Werror=missing-format-attribute] >> CC blockdev.o >> /src/qemu/blockdev.c: In function 'drive_add': >> /src/qemu/blockdev.c:52:5: error: function might be possible candidate >> for 'ms_printf' format attribute [-Werror=missing-format-attribute] >> CC qemu-char.o >> /src/qemu/qemu-char.c: In function 'qemu_chr_printf': >> /src/qemu/qemu-char.c:182:5: error: function might be possible >> candidate for 'ms_printf' format attribute >> [-Werror=missing-format-attribute] >> CC audio/audio.o >> /src/qemu/audio/audio.c: In function 'AUD_vlog': >> /src/qemu/audio/audio.c:346:9: error: function might be possible >> candidate for 'ms_printf' format attribute >> [-Werror=missing-format-attribute] >> >> This is with mingw32 compiler, it should be happy with gnu_printf >> instead of ms_printf in case you wonder that. > > As far as I know all those warnings are false warnings. No, for example qemu-img.c and blockdev.c cases are real. I don't understand blkverify.c and qerror cases, GCC_FMT_ATTR() attributes are in place. > The mingw32 includes are broken because they always > use ms format specifiers for the PRI* macros, even > when the compiler was told to use ansi/posix format. > Sending a patch to mingw32 is on my todo list. I think that is unrelated. > qemu-common.h uses the same kind of wrong definitions > for
Re: [Qemu-devel] [PATCH] Speedup 'tb_find_slow' by using the same heuristic as during memory page lookup
On Thu, Dec 2, 2010 at 1:12 PM, Kirill Batuzov wrote: > Move the last found TB to the head of the list so it will be found more > quickly next time it will be looked for. > > Signed-off-by: Kirill Batuzov > Signed-off-by: Pavel Yushchenko > --- > > This patch appeared during investigation of performance issues with > S5PC110 emulation for Samsung. It increses OS startup speed significantly. The patch looks reasonable, but I didn't see any visible difference in my tests. Could you report your numbers?
[Qemu-devel] [PATCH] mingw32: Fix definitions for PRId64, PRIx64, PRIu64, PRIo64
QEMU always uses POSIX format specifiers, even with mingw32. Therefore the old definitions of the PRI*64 macros were wrong. They should be removed, but as long as the mingw32 system include inttypes.h provides wrong definitions, too, we correct them here. Cc: Blue Swirl Signed-off-by: Stefan Weil --- qemu-common.h | 16 1 files changed, 12 insertions(+), 4 deletions(-) diff --git a/qemu-common.h b/qemu-common.h index de82c2e..c739f45 100644 --- a/qemu-common.h +++ b/qemu-common.h @@ -96,10 +96,18 @@ static inline char *realpath(const char *path, char *resolved_path) return resolved_path; } -#define PRId64 "I64d" -#define PRIx64 "I64x" -#define PRIu64 "I64u" -#define PRIo64 "I64o" +/* inttypes.h (mingw32) provides wrong definitions, so fix them here. */ +/* TODO: remove this workaround as soon as mingw32 is fixed. */ + +#undef PRId64 +#undef PRIx64 +#undef PRIu64 +#undef PRIo64 + +#define PRId64 "lld" +#define PRIx64 "llx" +#define PRIu64 "llu" +#define PRIo64 "llo" #endif /* FIXME: Remove NEED_CPU_H. */ -- 1.7.2.3
[Qemu-devel] Re: [PULL] More format checking
Am 04.12.2010 19:35, schrieb Blue Swirl: On Wed, Dec 1, 2010 at 9:41 PM, Stefan Weil wrote: Am 24.11.2010 22:46, schrieb Stefan Weil: Hello, with these patches, hopefully all functions with printf like arguments use gcc's format checking, so the TODO comment in HACKING can be removed. The patch series was tested with a default build configuration on linux and windows hosts (including some cross compilations for arm, mips and powerpc), so chances are good that there remain few (if any) functions without format checking. If there remain such functions (and maybe also some related format bugs), the compiler will raise a warning now, so it should be easy to fix them. All patches were published on qemu-devel. There were two replies: * 1st patch: small typo in commit message, fixed now * last patch: breaks build It's normal that the last patch will break builds with warning = error as long as the other four patches (and maybe more format related fixes) are not applied. This is the intention of the last patch! Regards, Stefan Weil The following changes since commit f711df67d611e4762966a249742a5f7499e19f99: microblaze: target-ify target_ucontext (2010-11-23 10:04:30 +0100) are available in the git repository at: git://git.weilnetz.de/git/qemu for-blueswirl Stefan Weil (5): *-dis: Replace fprintf_ftype by fprintf_function (format checking) target-sparc: Use fprintf_function (format checking) audio: Use GCC_FMT_ATTR (format checking) darwin-user: Use GCC_FMT_ATTR (format checking) configure: Add compiler option -Wmissing-format-attribute HACKING|3 --- alpha-dis.c|3 +++ arm-dis.c | 14 +++--- audio/audio_pt_int.c |3 ++- configure |1 + darwin-user/machload.c |2 +- darwin-user/qemu.h |2 +- dis-asm.h | 10 ++ m68k-dis.c |2 +- microblaze-dis.c |2 +- mips-dis.c |2 -- sh4-dis.c | 16 +--- target-sparc/cpu.h |4 ++-- 13 files changed, 26 insertions(+), 38 deletions(-) Is there anything missing, or can the patch series be applied finally? The last patch is not OK yet: CC qemu-img.o /src/qemu/qemu-img.c: In function 'error': /src/qemu/qemu-img.c:48:5: error: function might be possible candidate for 'ms_printf' format attribute [-Werror=missing-format-attribute] CC qemu-error.o /src/qemu/qemu-error.c: In function 'error_vprintf': /src/qemu/qemu-error.c:27:9: error: function might be possible candidate for 'ms_printf' format attribute [-Werror=missing-format-attribute] CC block/blkverify.o /src/qemu/block/blkverify.c: In function 'blkverify_err': /src/qemu/block/blkverify.c:65:5: error: function might be possible candidate for 'ms_printf' format attribute [-Werror=missing-format-attribute] CC json-parser.o /src/qemu/json-parser.c: In function 'parse_error': /src/qemu/json-parser.c:100:5: error: function might be possible candidate for 'ms_printf' format attribute [-Werror=missing-format-attribute] CC qerror.o /src/qemu/qerror.c: In function 'qerror_abort': /src/qemu/qerror.c:230:5: error: function might be possible candidate for 'ms_printf' format attribute [-Werror=missing-format-attribute] CC blockdev.o /src/qemu/blockdev.c: In function 'drive_add': /src/qemu/blockdev.c:52:5: error: function might be possible candidate for 'ms_printf' format attribute [-Werror=missing-format-attribute] CC qemu-char.o /src/qemu/qemu-char.c: In function 'qemu_chr_printf': /src/qemu/qemu-char.c:182:5: error: function might be possible candidate for 'ms_printf' format attribute [-Werror=missing-format-attribute] CC audio/audio.o /src/qemu/audio/audio.c: In function 'AUD_vlog': /src/qemu/audio/audio.c:346:9: error: function might be possible candidate for 'ms_printf' format attribute [-Werror=missing-format-attribute] This is with mingw32 compiler, it should be happy with gnu_printf instead of ms_printf in case you wonder that. As far as I know all those warnings are false warnings. The mingw32 includes are broken because they always use ms format specifiers for the PRI* macros, even when the compiler was told to use ansi/posix format. Sending a patch to mingw32 is on my todo list. qemu-common.h uses the same kind of wrong definitions for PRI*64. I already have a patch for this and will send it to qemu-devel soon. Until mingw32 is fixed, I suggest to disable -Werror for windows builds. Is it possible to commit the previous patches (if you hesitate committing the last one)? That would help a lot. Thanks, Stefan
[Qemu-devel] Re: [PULL] More format checking
On Wed, Dec 1, 2010 at 9:41 PM, Stefan Weil wrote: > Am 24.11.2010 22:46, schrieb Stefan Weil: >> >> Hello, >> >> with these patches, hopefully all functions with printf like arguments >> use gcc's format checking, so the TODO comment in HACKING can be removed. >> >> The patch series was tested with a default build configuration on linux >> and windows hosts (including some cross compilations for arm, mips and >> powerpc), >> so chances are good that there remain few (if any) functions without >> format checking. >> >> If there remain such functions (and maybe also some related format bugs), >> the compiler will raise a warning now, so it should be easy to fix them. >> >> All patches were published on qemu-devel. There were two replies: >> >> * 1st patch: small typo in commit message, fixed now >> >> * last patch: breaks build >> >> It's normal that the last patch will break builds with warning = error >> as long as the other four patches (and maybe more format related fixes) >> are not applied. This is the intention of the last patch! >> >> Regards, >> Stefan Weil >> >> The following changes since commit >> f711df67d611e4762966a249742a5f7499e19f99: >> >> microblaze: target-ify target_ucontext (2010-11-23 10:04:30 +0100) >> >> are available in the git repository at: >> git://git.weilnetz.de/git/qemu for-blueswirl >> >> Stefan Weil (5): >> *-dis: Replace fprintf_ftype by fprintf_function (format checking) >> target-sparc: Use fprintf_function (format checking) >> audio: Use GCC_FMT_ATTR (format checking) >> darwin-user: Use GCC_FMT_ATTR (format checking) >> configure: Add compiler option -Wmissing-format-attribute >> >> HACKING | 3 --- >> alpha-dis.c | 3 +++ >> arm-dis.c | 14 +++--- >> audio/audio_pt_int.c | 3 ++- >> configure | 1 + >> darwin-user/machload.c | 2 +- >> darwin-user/qemu.h | 2 +- >> dis-asm.h | 10 ++ >> m68k-dis.c | 2 +- >> microblaze-dis.c | 2 +- >> mips-dis.c | 2 -- >> sh4-dis.c | 16 +--- >> target-sparc/cpu.h | 4 ++-- >> 13 files changed, 26 insertions(+), 38 deletions(-) >> > > > Is there anything missing, or can the patch series be applied finally? The last patch is not OK yet: CCqemu-img.o /src/qemu/qemu-img.c: In function 'error': /src/qemu/qemu-img.c:48:5: error: function might be possible candidate for 'ms_printf' format attribute [-Werror=missing-format-attribute] CCqemu-error.o /src/qemu/qemu-error.c: In function 'error_vprintf': /src/qemu/qemu-error.c:27:9: error: function might be possible candidate for 'ms_printf' format attribute [-Werror=missing-format-attribute] CCblock/blkverify.o /src/qemu/block/blkverify.c: In function 'blkverify_err': /src/qemu/block/blkverify.c:65:5: error: function might be possible candidate for 'ms_printf' format attribute [-Werror=missing-format-attribute] CCjson-parser.o /src/qemu/json-parser.c: In function 'parse_error': /src/qemu/json-parser.c:100:5: error: function might be possible candidate for 'ms_printf' format attribute [-Werror=missing-format-attribute] CCqerror.o /src/qemu/qerror.c: In function 'qerror_abort': /src/qemu/qerror.c:230:5: error: function might be possible candidate for 'ms_printf' format attribute [-Werror=missing-format-attribute] CCblockdev.o /src/qemu/blockdev.c: In function 'drive_add': /src/qemu/blockdev.c:52:5: error: function might be possible candidate for 'ms_printf' format attribute [-Werror=missing-format-attribute] CCqemu-char.o /src/qemu/qemu-char.c: In function 'qemu_chr_printf': /src/qemu/qemu-char.c:182:5: error: function might be possible candidate for 'ms_printf' format attribute [-Werror=missing-format-attribute] CCaudio/audio.o /src/qemu/audio/audio.c: In function 'AUD_vlog': /src/qemu/audio/audio.c:346:9: error: function might be possible candidate for 'ms_printf' format attribute [-Werror=missing-format-attribute] This is with mingw32 compiler, it should be happy with gnu_printf instead of ms_printf in case you wonder that.
[Qemu-devel] [Bug 532733] Re: apt/dpkg in qemu-system-arm hangs if a big task is installed
** Changed in: qemu-kvm (Ubuntu) Assignee: Dustin Kirkland (kirkland) => (unassigned) ** Changed in: qemu-kvm (Ubuntu Lucid) Assignee: Dustin Kirkland (kirkland) => (unassigned) -- You received this bug notification because you are a member of qemu- devel-ml, which is subscribed to QEMU. https://bugs.launchpad.net/bugs/532733 Title: apt/dpkg in qemu-system-arm hangs if a big task is installed Status in QEMU: Invalid Status in “qemu-kvm” package in Ubuntu: Incomplete Status in “qemu-kvm” source package in Lucid: Incomplete Bug description: Binary package hint: qemu-kvm running rootstock and installing ubuntu-netbook^ makes the VM hang in "unpacking iso-codes" this is reproducable every time in rootstock as well as in a standard qemu-system-arm vm that contains a minimal ubuntu with running apt-get install ubuntu-netbook
RE: [Qemu-devel] [PATCH 00/16] linux-user updates
>On 3 December 2010 13:36, wrote: >> Collection of recent linux-user patches that have been >> tested to be good. Patches have been sent to the list before, >> lets have a couple of days for comments and I'll request a pull >> from. > >I hate to quibble, but: > >> Peter Maydell (10): >> target-arm: remove unused functions cpu_lock(), cpu_unlock() >> target-sparc: remove unused functions cpu_lock(), cpu_unlock() > >these aren't linux-user related, really... Well, they kinda are. cpu_lock() was only ever used from linux-user code (IIRC) and the patches were trivial. But strictly speaking the patch would rather have been target-arm maintainers field. Riku
[Qemu-devel] Re: [PATCH 2/2] Do not register kvmclock savevm section if kvmclock is disabled.
On 12/03/2010 11:49 AM, Glauber Costa wrote: +/* This has to happen after vcpu setup*/ +void kvmclock_register_savevm(void) +{ +#ifdef KVM_CAP_ADJUST_CLOCK +if (kvmclock_enabled&& kvm_check_extension(kvm_state, KVM_CAP_ADJUST_CLOCK)) { +printf("registering kvmclock savevm section\n"); +vmstate_register(NULL, 0,&vmstate_kvmclock,&kvmclock_data); +} +#endif +} + You should use a state change notifier for patch 1. Even better, if you put this patch first adding the state change notifier will be very clean. Paolo
[Qemu-devel] Re: [PATCH 2/2] Do not register kvmclock savevm section if kvmclock is disabled.
On 12/03/2010 11:49 AM, Glauber Costa wrote: +/* This has to happen after vcpu setup*/ +void kvmclock_register_savevm(void) +{ +#ifdef KVM_CAP_ADJUST_CLOCK +if (kvmclock_enabled&& kvm_check_extension(kvm_state, KVM_CAP_ADJUST_CLOCK)) { +printf("registering kvmclock savevm section\n"); +vmstate_register(NULL, 0,&vmstate_kvmclock,&kvmclock_data); +} +#endif +} + You should use a state change notifier for patch 1. Even better, if you put this patch first adding the state change notifier will be very clean. Paolo
[Qemu-devel] Re: [PATCH 1/6] pci: untangle pci/msi dependency
On 12/02/2010 11:54 PM, Michael S. Tsirkin wrote: +bool assert = pcie_aer_root_does_trigger(root_cmd_set, root_status); Risky variable name, I think it would fail if someone includes assert.h. Paolo
Re: [Qemu-devel] [PATCH 02/14] ./block/iscsi/socket.c
On Fri, Dec 3, 2010 at 11:09 AM, wrote: > +int > +iscsi_connect_async(struct iscsi_context *iscsi, const char *portal, > + iscsi_command_cb cb, void *private_data) > +{ > + int tpgt = -1; > + int port = 3260; > + char *str; > + char *addr; > + struct sockaddr_storage s; > + struct sockaddr_in *sin = (struct sockaddr_in *)&s; > + int socksize; > + > + if (iscsi->fd != -1) { > + iscsi_set_error(iscsi, > + "Trying to connect but already connected."); > + return -1; > + } > + > + addr = strdup(portal); > + if (addr == NULL) { > + iscsi_set_error(iscsi, "Out-of-memory: " > + "Failed to strdup portal address."); > + return -2; Please use constants. -1, -2, ... don't tell me much and are undocumented. I think your strategy is a unique code for every error return inside a function? > + } > + > + /* check if we have a target portal group tag */ > + str = rindex(addr, ','); > + if (str != NULL) { > + tpgt = atoi(str+1); > + str[0] = 0; > + } > + > + /* XXX need handling for {ipv6 addresses} */ > + /* for now, assume all is ipv4 */ > + str = rindex(addr, ':'); > + if (str != NULL) { > + port = atoi(str+1); > + str[0] = 0; > + } > + > + sin->sin_family = AF_INET; > + sin->sin_port = htons(port); > + if (inet_pton(AF_INET, addr, &sin->sin_addr) != 1) { > + iscsi_set_error(iscsi, "Invalid target:%s " > + "Failed to convert to ip address.", addr); > + free(addr); > + return -3; > + } > + free(addr); > + > + switch (s.ss_family) { > + case AF_INET: > + iscsi->fd = socket(AF_INET, SOCK_STREAM, 0); > + socksize = sizeof(struct sockaddr_in); > + break; > + default: > + iscsi_set_error(iscsi, "Unknown address family :%d. " > + "Only IPv4 supported so far.", s.ss_family); > + return -4; > + > + } > + > + if (iscsi->fd == -1) { > + iscsi_set_error(iscsi, "Failed to open iscsi socket. " > + "Errno:%s(%d).", strerror(errno), errno); > + return -5; > + > + } > + > + iscsi->connect_cb = cb; > + iscsi->connect_data = private_data; > + > + set_nonblocking(iscsi->fd); > + > + if (connect(iscsi->fd, (struct sockaddr *)&s, socksize) != 0 > + && errno != EINPROGRESS) { > + iscsi_set_error(iscsi, "Connect failed with errno : " > + "%s(%d)\n", strerror(errno), errno); Since the function will return an error we should close(iscsi->fd) and set it to -1 again. > + return -6; > + } > + > + return 0; > +} > +static int > +iscsi_read_from_socket(struct iscsi_context *iscsi) > +{ > + int available; > + int size; > + unsigned char *buf; > + ssize_t count; > + > + if (ioctl(iscsi->fd, FIONREAD, &available) != 0) { > + iscsi_set_error(iscsi, "ioctl FIONREAD returned error : " > + "%d\n", errno); iscsi_set_error() newlines are used inconsistently. Some calls include the newline, some don't. > + return -1; > + } > + if (available == 0) { > + iscsi_set_error(iscsi, "no data readable in socket, " > + "socket is closed\n"); > + return -2; > + } > + size = iscsi->insize - iscsi->inpos + available; > + buf = malloc(size); > + if (buf == NULL) { > + iscsi_set_error(iscsi, "failed to allocate %d bytes for " > + "input buffer\n", size); > + return -3; > + } > + if (iscsi->insize > iscsi->inpos) { > + memcpy(buf, iscsi->inbuf + iscsi->inpos, > + iscsi->insize - iscsi->inpos); > + iscsi->insize -= iscsi->inpos; > + iscsi->inpos = 0; > + } > + > + count = read(iscsi->fd, buf + iscsi->insize, available); > + if (count == -1) { > + if (errno == EINTR) { > + free(buf); > + buf = NULL; > + return 0; If iscsi->insize > iscsi->inpos was true above then we've made insize, inpos, inbuf inconsistent by returning early here. > + } > + iscsi_set_error(iscsi, "read from socket failed, " > + "errno:%d\n", errno); > + free(buf); > + buf = NULL; > + return -4; Same issue here. > + } > + > + if (iscsi->inbuf != NULL) { > + fr
[Qemu-devel] [Bug 427612] Re: kvm sends caps lock key up event twice
** Tags added: verification-done ** Tags removed: verification-needed -- You received this bug notification because you are a member of qemu- devel-ml, which is subscribed to QEMU. https://bugs.launchpad.net/bugs/427612 Title: kvm sends caps lock key up event twice Status in QEMU: New Status in “libsdl1.2” package in Ubuntu: Invalid Status in “qemu-kvm” package in Ubuntu: Fix Released Status in “libsdl1.2” source package in Maverick: Invalid Status in “qemu-kvm” source package in Maverick: Fix Committed Status in “libsdl1.2” package in Debian: Fix Released Bug description: Binary package hint: qemu-kvm I have set the keyboard layout to German NEO 2 [1] in the host and the client (both current karmic). The caps lock is used as modifier (similar to shift) in NEO. When I press "caps lock" + "t", then the client prints a "t" instead of a "-". A caps lock key up event is sent to the client before I release the caps lock key. [1] http://www.neo-layout.org/ ProblemType: Bug Architecture: amd64 Date: Fri Sep 11 01:38:58 2009 DistroRelease: Ubuntu 9.10 KvmCmdLine: Error: command ['ps', '-C', 'kvm', '-F'] failed with exit code 1: UIDPID PPID CSZ RSS PSR STIME TTY TIME CMD Package: qemu-kvm 0.11.0~rc2-0ubuntu2 PccardctlIdent: PccardctlStatus: ProcCmdLine: BOOT_IMAGE=/boot/vmlinuz-2.6.31-10-generic root=UUID=37b01f5a-a578-49d6-a812-f166b103e68a ro quiet splash ProcEnviron: LANG=de_DE.UTF-8 SHELL=/bin/bash ProcVersionSignature: Ubuntu 2.6.31-10.31-generic SourcePackage: qemu-kvm Uname: Linux 2.6.31-10-generic x86_64 dmi.bios.date: 07/15/2009 dmi.bios.vendor: Intel Corp. dmi.bios.version: DPP3510J.86A.0572.2009.0715.2346 dmi.board.asset.tag: Base Board Asset Tag dmi.board.name: DG33TL dmi.board.vendor: Intel Corporation dmi.board.version: AAD89517-802 dmi.chassis.type: 3 dmi.modalias: dmi:bvnIntelCorp.:bvrDPP3510J.86A.0572.2009.0715.2346:bd07/15/2009:svn:pn:pvr:rvnIntelCorporation:rnDG33TL:rvrAAD89517-802:cvn:ct3:cvr: TEST CASE: Select NEO2 as keyboard layout in your guest system and press 'caps lock' + 't'. A '-' should appear.
Re: [Qemu-devel] State of EHCI emulation for QEMU
Am 04.12.2010 01:18, Gerd Hoffmann wrote: > Hi, > >> as you may know, there is an experimental git repository at >> >> git://git.kiszka.org/qemu.git ehci > > Looking into this right now as I'm busy with various usb issues anyway. > Current state: > http://cgit.freedesktop.org/spice/qemu/log/?h=usb.1 > >> - lacks integration with UHCI (currently, only EHCI is provided by >> that tree, breaking USB 1.1 devices) > > Sort-of fixed (see docs/usb2.txt). Very nice. Some remarks: - command line must look like this: ... -drive if=none,id=usbstick,file=/path/to/image \ -device usb-storage,bus=ehci.0,drive=usbstick ie. register driver device referencing it, and there was a typo id->if - long-term, "-usb" should become a shorthand for "-device usb-uhci,id=uhci -device usb-ehci,id=ehci" (at least for x86) Unfortunately, msd is not yet magically healed: non queue head request in async schedule processing error - resetting ehci HC > >> David furthermore provided the following to-dos: >> - lacks periodic frames support >> - lacks isochronous traffic support > > --verbose please. There seems to be some code for that? > >> - lacks split transactions support > > That would need a USB 2.0 HUB emulation to be useful. > We lack that one too ;) > >> - NAK/reload support is kludgy at best > > --verbose please. > Those are questions for David. Jan PS: Your tree lacks conversion of usb-musb.c. signature.asc Description: OpenPGP digital signature