From owner-freebsd-arm@freebsd.org Wed Dec 2 12:18:40 2015 Return-Path: Delivered-To: freebsd-arm@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 223CEA3F779 for ; Wed, 2 Dec 2015 12:18:40 +0000 (UTC) (envelope-from zbb@semihalf.com) Received: from mail-lf0-x22d.google.com (mail-lf0-x22d.google.com [IPv6:2a00:1450:4010:c07::22d]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (Client CN "smtp.gmail.com", Issuer "Google Internet Authority G2" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 8794F109B for ; Wed, 2 Dec 2015 12:18:39 +0000 (UTC) (envelope-from zbb@semihalf.com) Received: by lfaz4 with SMTP id z4so47991816lfa.0 for ; Wed, 02 Dec 2015 04:18:37 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=semihalf-com.20150623.gappssmtp.com; s=20150623; h=mime-version:in-reply-to:references:from:date:message-id:subject:to :cc:content-type; bh=sI9xwz+L2fkhWYoZ/krs4xkKuwtRlA63UyTTwYlSnmo=; b=1CDK/6KY2FMlrjibnjhI1rUZcXlftjgNErxQdFeOordHoUloCduU+2PdubCdsnKebW eqmToZrJhitXS8xxRZUVZMel4rQwiDgLJ5Wfi2r1W0BQi/56SlGXeF4PzxiEVg8ZTtep +ct9Ua0t4+6vrvw9HFNcbEyG8fIXpEAVguH+qC9UJR5Jtk0aDv6TBrx2B929sKeN6AwA ZqptQyw51B/Dp0U3S0JtfEBGCKRj8shocLrDOj26TwgiIyJpWyv0tS1UmghnAsKGh30v n1BJXI9BM0imXVYAR2SEXEW7nxDz83kBd9Rxq/ptjd4k1GaD0Raqriyol8xjd3Go93oY q70Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:mime-version:in-reply-to:references:from:date :message-id:subject:to:cc:content-type; bh=sI9xwz+L2fkhWYoZ/krs4xkKuwtRlA63UyTTwYlSnmo=; b=VIYGZ+XrYwirRK0R9SVN8DVU4IkOOHZMuwWgTU+FJmAsKgw45CyVxsQJETYsHCVqk1 8FuJEGPofLTZfpi1odwTaIdG10vNIga8hUeAh1FOELWMbHyJtkpbuK/OQZ62WdLa8Qol OPYVj+Zy7CVlYCKDCoM4lI1qvcsKEv66fmrrcknODYIeer7b23Fun/FFvZX5gPibBPhH 2AexFjvnglnjUwIOcf+oi772wkhMCYkeC3I7Qw65RSbbCoaYPWBzIZjXGgzLo5o/yJFe Azv1OL/8GXmVKRJQC+MHYYLx9aBxnGwvadHNFKJ+aWQxNlFhAdSUfVsry8xtkEyx8Zea +7pA== X-Gm-Message-State: ALoCoQmI+q2nQCDKXvZDaYPiiATGAJYMEPpfQznevV4Dis004fFvaEcAKr0tJbRUwLCbAp4/TgmL X-Received: by 10.112.168.70 with SMTP id zu6mr2389488lbb.26.1449058717000; Wed, 02 Dec 2015 04:18:37 -0800 (PST) MIME-Version: 1.0 Received: by 10.25.76.65 with HTTP; Wed, 2 Dec 2015 04:18:17 -0800 (PST) In-Reply-To: References: From: Zbigniew Bodek Date: Wed, 2 Dec 2015 13:18:17 +0100 Message-ID: Subject: Re: RFC: HW watchpoints and single stepping for ARMv6/v7 To: Russell Haley Cc: "freebsd-arm@freebsd.org" Content-Type: text/plain; charset=UTF-8 X-BeenThere: freebsd-arm@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "Porting FreeBSD to ARM processors." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 02 Dec 2015 12:18:40 -0000 Hello Russel, I think you are doing something wrong since I've just downloaded the latest patch from Phabricator, applied it on r291486 and built for IMX6 successfully (with and without DDB option). Did you use the latest patch? Best regards zbb 2015-12-02 8:19 GMT+01:00 Russell Haley : > Okay, so I wasn't too successfull: > > What I did: > - update to latest revision (291642) > - I couldn't get installworld to complete (separate email). Instead, I > downloaded the current image for the hummingboard and mounted the image and > was preparing to run installkernel > - I ran buildkernel to success > - I applied the patch. It applied successfully > - I ran buildkernel again and got the following error: > > cc -c -O -pipe -g -nostdinc -I. -I/usr/src/sys > -I/usr/src/sys/contrib/libfdt -I/usr/src/sys/gnu/dts/include -D_KERNEL > -DHAVE_KERNEL_OPTION_HEADERS -include opt_global.h -march=armv7a > -funwind-tables -ffreestanding -fwrapv -gdwarf-2 -Wall -Wredundant-decls > -Wnested-externs -Wstrict-prototypes -Wmissing-prototypes -Wpointer-arith > -Winline -Wcast-qual -Wundef -Wno-pointer-sign > -D__printf__=__freebsd_kprintf__ -Wmissing-include-dirs > -fdiagnostics-show-option -Wno-unknown-pragmas > -Wno-error-tautological-compare -Wno-error-empty-body > -Wno-error-parentheses-equality -Wno-error-unused-function > -Wno-error-pointer-sign -Wno-error-shift-negative-value -mfpu=none > -std=iso9899:1999 -Werror /usr/src/sys/arm/arm/db_trace.c > /usr/src/sys/arm/arm/db_trace.c:135:2: error: implicit declaration of > function 'dbg_show_watchpoint' is invalid in C99 > [-Werror,-Wimplicit-function-declaration] > dbg_show_watchpoint(); > ^ > /usr/src/sys/arm/arm/db_trace.c:135:2: note: did you mean > 'db_set_watchpoints'? > /usr/src/sys/ddb/ddb.h:216:7: note: 'db_set_watchpoints' declared here > void db_set_watchpoints(void); > ^ > /usr/src/sys/arm/arm/db_trace.c:142:10: error: implicit declaration of > function 'dbg_remove_watchpoint' is invalid in C99 > [-Werror,-Wimplicit-function-declaration] > return (dbg_remove_watchpoint(addr, size)); > ^ > /usr/src/sys/arm/arm/db_trace.c:142:10: note: did you mean > 'dbg_show_watchpoint'? > /usr/src/sys/arm/arm/db_trace.c:135:2: note: 'dbg_show_watchpoint' declared > here > dbg_show_watchpoint(); > ^ > /usr/src/sys/arm/arm/db_trace.c:149:10: error: implicit declaration of > function 'dbg_setup_watchpoint' is invalid in C99 > [-Werror,-Wimplicit-function-declaration] > return (dbg_setup_watchpoint(addr, size, HW_WATCHPOINT_RW)); > ^ > /usr/src/sys/arm/arm/db_trace.c:149:43: error: use of undeclared identifier > 'HW_WATCHPOINT_RW' > return (dbg_setup_watchpoint(addr, size, HW_WATCHPOINT_RW)); > ^ > 4 errors generated. > *** Error code 1 > > Stop. > make[2]: stopped in /usr/obj/arm.armv6/usr/src/sys/IMX6 > *** Error code 1 > > Stop. > make[1]: stopped in /usr/src > *** Error code 1 > > Stop. > make: stopped in /usr/src > ---------------------------------------------- > > I ran buildkernel in various configurations (with and without -DNO_CLEAN, > with and without -j10) and received variations on the same error. The last > one I tried was without NO_CLEAN and single threaded: > > > ctfconvert -L VERSION -g cpufunc_asm.o > cc -c -x assembler-with-cpp -DLOCORE -O -pipe -g -nostdinc -I. > -I/usr/src/sys -I/usr/src/sys/contrib/libfdt -I/usr/src/sys/gnu/dts/include > -D_KERNEL -DHAVE_KERNEL_OPTION_HEADERS -include opt_global.h -march=armv7a > -funwind-tables -ffreestanding -fwrapv -gdwarf-2 -Wall -Wredundant-decls > -Wnested-externs -Wstrict-prototypes -Wmissing-prototypes -Wpointer-arith > -Winline -Wcast-qual -Wundef -Wno-pointer-sign > -D__printf__=__freebsd_kprintf__ -Wmissing-include-dirs > -fdiagnostics-show-option -Wno-unknown-pragmas > -Wno-error-tautological-compare -Wno-error-empty-body > -Wno-error-parentheses-equality -Wno-error-unused-function > -Wno-error-pointer-sign -Wno-error-shift-negative-value -mfpu=none > -std=iso9899:1999 -Werror /usr/src/sys/arm/arm/cpufunc_asm_armv7.S > ctfconvert -L VERSION -g cpufunc_asm_armv7.o > cc -c -O -pipe -g -nostdinc -I. -I/usr/src/sys > -I/usr/src/sys/contrib/libfdt -I/usr/src/sys/gnu/dts/include -D_KERNEL > -DHAVE_KERNEL_OPTION_HEADERS -include opt_global.h -march=armv7a > -funwind-tables -ffreestanding -fwrapv -gdwarf-2 -Wall -Wredundant-decls > -Wnested-externs -Wstrict-prototypes -Wmissing-prototypes -Wpointer-arith > -Winline -Wcast-qual -Wundef -Wno-pointer-sign > -D__printf__=__freebsd_kprintf__ -Wmissing-include-dirs > -fdiagnostics-show-option -Wno-unknown-pragmas > -Wno-error-tautological-compare -Wno-error-empty-body > -Wno-error-parentheses-equality -Wno-error-unused-function > -Wno-error-pointer-sign -Wno-error-shift-negative-value -mfpu=none > -std=iso9899:1999 -Werror /usr/src/sys/arm/arm/cpuinfo.c > ctfconvert -L VERSION -g cpuinfo.o > cc -c -x assembler-with-cpp -DLOCORE -O -pipe -g -nostdinc -I. > -I/usr/src/sys -I/usr/src/sys/contrib/libfdt -I/usr/src/sys/gnu/dts/include > -D_KERNEL -DHAVE_KERNEL_OPTION_HEADERS -include opt_global.h -march=armv7a > -funwind-tables -ffreestanding -fwrapv -gdwarf-2 -Wall -Wredundant-decls > -Wnested-externs -Wstrict-prototypes -Wmissing-prototypes -Wpointer-arith > -Winline -Wcast-qual -Wundef -Wno-pointer-sign > -D__printf__=__freebsd_kprintf__ -Wmissing-include-dirs > -fdiagnostics-show-option -Wno-unknown-pragmas > -Wno-error-tautological-compare -Wno-error-empty-body > -Wno-error-parentheses-equality -Wno-error-unused-function > -Wno-error-pointer-sign -Wno-error-shift-negative-value -mfpu=none > -std=iso9899:1999 -Werror /usr/src/sys/arm/arm/cpu_asm-v6.S > ctfconvert -L VERSION -g cpu_asm-v6.o > cc -c -O -pipe -g -nostdinc -I. -I/usr/src/sys > -I/usr/src/sys/contrib/libfdt -I/usr/src/sys/gnu/dts/include -D_KERNEL > -DHAVE_KERNEL_OPTION_HEADERS -include opt_global.h -march=armv7a > -funwind-tables -ffreestanding -fwrapv -gdwarf-2 -Wall -Wredundant-decls > -Wnested-externs -Wstrict-prototypes -Wmissing-prototypes -Wpointer-arith > -Winline -Wcast-qual -Wundef -Wno-pointer-sign > -D__printf__=__freebsd_kprintf__ -Wmissing-include-dirs > -fdiagnostics-show-option -Wno-unknown-pragmas > -Wno-error-tautological-compare -Wno-error-empty-body > -Wno-error-parentheses-equality -Wno-error-unused-function > -Wno-error-pointer-sign -Wno-error-shift-negative-value -mfpu=none > -std=iso9899:1999 -Werror /usr/src/sys/arm/arm/db_disasm.c > ctfconvert -L VERSION -g db_disasm.o > cc -c -O -pipe -g -nostdinc -I. -I/usr/src/sys > -I/usr/src/sys/contrib/libfdt -I/usr/src/sys/gnu/dts/include -D_KERNEL > -DHAVE_KERNEL_OPTION_HEADERS -include opt_global.h -march=armv7a > -funwind-tables -ffreestanding -fwrapv -gdwarf-2 -Wall -Wredundant-decls > -Wnested-externs -Wstrict-prototypes -Wmissing-prototypes -Wpointer-arith > -Winline -Wcast-qual -Wundef -Wno-pointer-sign > -D__printf__=__freebsd_kprintf__ -Wmissing-include-dirs > -fdiagnostics-show-option -Wno-unknown-pragmas > -Wno-error-tautological-compare -Wno-error-empty-body > -Wno-error-parentheses-equality -Wno-error-unused-function > -Wno-error-pointer-sign -Wno-error-shift-negative-value -mfpu=none > -std=iso9899:1999 -Werror /usr/src/sys/arm/arm/db_interface.c > ctfconvert -L VERSION -g db_interface.o > cc -c -O -pipe -g -nostdinc -I. -I/usr/src/sys > -I/usr/src/sys/contrib/libfdt -I/usr/src/sys/gnu/dts/include -D_KERNEL > -DHAVE_KERNEL_OPTION_HEADERS -include opt_global.h -march=armv7a > -funwind-tables -ffreestanding -fwrapv -gdwarf-2 -Wall -Wredundant-decls > -Wnested-externs -Wstrict-prototypes -Wmissing-prototypes -Wpointer-arith > -Winline -Wcast-qual -Wundef -Wno-pointer-sign > -D__printf__=__freebsd_kprintf__ -Wmissing-include-dirs > -fdiagnostics-show-option -Wno-unknown-pragmas > -Wno-error-tautological-compare -Wno-error-empty-body > -Wno-error-parentheses-equality -Wno-error-unused-function > -Wno-error-pointer-sign -Wno-error-shift-negative-value -mfpu=none > -std=iso9899:1999 -Werror /usr/src/sys/arm/arm/db_trace.c > /usr/src/sys/arm/arm/db_trace.c:135:2: error: implicit declaration of > function 'dbg_show_watchpoint' is invalid in C99 > [-Werror,-Wimplicit-function-declaration] > dbg_show_watchpoint(); > ^ > /usr/src/sys/arm/arm/db_trace.c:135:2: note: did you mean > 'db_set_watchpoints'? > /usr/src/sys/ddb/ddb.h:216:7: note: 'db_set_watchpoints' declared here > void db_set_watchpoints(void); > ^ > /usr/src/sys/arm/arm/db_trace.c:142:10: error: implicit declaration of > function 'dbg_remove_watchpoint' is invalid in C99 > [-Werror,-Wimplicit-function-declaration] > return (dbg_remove_watchpoint(addr, size)); > ^ > /usr/src/sys/arm/arm/db_trace.c:142:10: note: did you mean > 'dbg_show_watchpoint'? > /usr/src/sys/arm/arm/db_trace.c:135:2: note: 'dbg_show_watchpoint' declared > here > dbg_show_watchpoint(); > ^ > /usr/src/sys/arm/arm/db_trace.c:149:10: error: implicit declaration of > function 'dbg_setup_watchpoint' is invalid in C99 > [-Werror,-Wimplicit-function-declaration] > return (dbg_setup_watchpoint(addr, size, HW_WATCHPOINT_RW)); > ^ > /usr/src/sys/arm/arm/db_trace.c:149:43: error: use of undeclared identifier > 'HW_WATCHPOINT_RW' > return (dbg_setup_watchpoint(addr, size, HW_WATCHPOINT_RW)); > ^ > 4 errors generated. > *** Error code 1 > > Stop. > make[2]: stopped in /usr/obj/arm.armv6/usr/src/sys/IMX6 > *** Error code 1 > > Stop. > make[1]: stopped in /usr/src > *** Error code 1 > > Stop. > make: stopped in /usr/src > > > So if it's NOT an undeclared identifier, then let me know what I've done > wrong. > > Cheers, > Russ > > > On Tue, Dec 1, 2015 at 3:28 AM, Zbigniew Bodek wrote: >> >> Hello Russell, >> >> That will be a good sign if it doesn't explode (if you see undefined >> instruction on boot then there's something wrong). >> More extended description what you can do with HW watchpoints is in >> this thread. For example you can check: >> https://lists.freebsd.org/pipermail/freebsd-arm/2015-November/012724.html >> >> Best regards >> zbb >> >> 2015-11-30 19:03 GMT+01:00 Russell Haley : >> > Cool. I have a hummingboard (iMX6). Do I need to know what I'm looking >> > for >> > or am I just making sure it doesn't explode? >> > >> > Russ >> > >> > On Mon, Nov 30, 2015 at 6:41 AM, Zbigniew Bodek >> > wrote: >> >> >> >> Hello again, >> >> >> >> It seems that this is the last chance to test this patch on other >> >> platforms than Rpi, Arndale and Pandaboard. >> >> Please check out this https://reviews.freebsd.org/D4037 >> >> I will be grateful if you had a chance to test this on something else >> >> than the above mentioned. >> >> >> >> Best regards >> >> zbb >> >> >> >> 2015-10-31 17:21 GMT+01:00 Zbigniew Bodek : >> >> > Hello again, >> >> > >> >> > I should have post some more information about testing this patch. >> >> > Here >> >> > it goes: >> >> > ------------------------------------------------------------------ >> >> > One can enter kernel debugger by one of those: >> >> > >> >> > press: ~, ctrl + b >> >> > or >> >> > type: sysctl -w debug.kdb.enter=1 >> >> > >> >> > You can then set a HW watchpoint on any memory location at
>> >> > by invoking following command in KDB: >> >> > db> hwatch
, >> >> > >> >> > parameter is optional, the default is 4. >> >> > >> >> > To display watchpoints: >> >> > db> show watch >> >> > >> >> > To remove watchpoint: >> >> > db> dhwatch
>> >> > >> >> > Press "c" to continue. >> >> > >> >> > ------------------------------------------------------------------ >> >> > While in KDB you can step through the kernel code using "s" BUT you >> >> > need to apply a dependent patch: https://reviews.freebsd.org/D4036 >> >> > otherwise you will cause the kernel panic. >> >> > >> >> > Thanks again >> >> > zbb >> >> > >> >> > 2015-10-30 17:25 GMT+01:00 Zbigniew Bodek : >> >> >> Hello, >> >> >> >> >> >> We would like to add HW watchpoints and HW single step support to >> >> >> ARMv6 >> >> >> kernel. >> >> >> Please check this review: https://reviews.freebsd.org/D4037 >> >> >> >> >> >> Since there are differences between debug architectures on ARM (v6, >> >> >> v6.1, v7, v7.1) I would like to ask for some testing on your >> >> >> machines. >> >> >> I was able to test this on Pandaboard and Arndale but please check >> >> >> whether this works on your targets as well. >> >> >> >> >> >> Rise a red flag if you see any issues or in worst case scenario - >> >> >> "undefined instruction" error. >> >> >> >> >> >> Best regards >> >> >> zbb >> >> _______________________________________________ >> >> freebsd-arm@freebsd.org mailing list >> >> https://lists.freebsd.org/mailman/listinfo/freebsd-arm >> >> To unsubscribe, send any mail to "freebsd-arm-unsubscribe@freebsd.org" >> > >> > > >