Re: Loading vmm JTAG Board FLIRC JEFF PROBE or Tigard Probe

From: Fred L. Finster <fred_at_thegalacticzoo.com>
Date: Mon, 15 Apr 2024 11:00:11 UTC
> From: John F Carr <jfc_at_mit.edu>
> Date: Sun, 14 Apr 2024 12:17:22 UTC
> 
> See bug https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=277559.  It was suspected to be specific to the heterogenous Rockchip RK3399 but perhaps it is more widespread.
> 
> When I first hit the bug there was a 30-50% chance that the first kldload vmm would hang the system so hard I couldn't even invoke the debugger with break on a serial console.  Later, with no relevant changes to source code, it would take about 2,000 load/unload pairs to hang the system.  If that 1-in-2000 chance is typical this bug could affect all systems.  Give it a try on your 128 core system:
> 
> # while kldload vmm ; do echo -n . ; kldunload vmm ; done
> 
> If anybody can tell me how to debug at the hardware level using JTAG, I can give it a try on my RockPro64 and see where the kernel is stuck.  I have used hardware level debugging tools, but they were always black boxes my employer bought with instructions included.
I hope hardware debugging finds the problem and solution to your
kldload vmm  issue

Here i share a JTAG circuit board to purchase for interfacing with 
Raspberry Pi 4B, 3B, 400 with OpenOCD and aarch64-gdb
JTAG Hardware post at  forums.freebsd.org

https://forums.freebsd.org/threads/debugging-arm64-booting-of-freebsd-ghostbsd-kernel-for-raspberry-pi-4-what-tool-do-you-use-any-jtag-hardware-kernel-debug.90436/

 From reading the specifications  I like the FLIRC JEFF Probe that can 
be bought from Amazon or AliExpress.   It has a TTL UART Serial Port to 
USB and a TTL JTAG to USB that can be connected with OPENOCD.org  and 
GDB or LLDB connected to the OpenOCD

https://flirc.tv/products/flirc-jeffprobe?variant=43085036585192

https://macoy.me/blog/programming/RaspberryPi5Debugging
Using a Raspberry Pi PICO board or RP2040 for SWD Serial Wire Debug for 
Raspberry Pi 5 hardware.


~~~~~~~~~~~~~~~~~~~~~~~~~~~
I have used the Black Magic Probe  (BMP) 3.3V TTL Serial UART for 
connecting to  UART0 for the serial console boot up messages.  The BMP 
JTAG port interfaces with 32bit ARM and not 64 bit ARM, except for 
supporting OPENOCD onto the JTAG port of the BMP.

I also am presently using an orange colored Tigard Board from 
CrowdSupply.com
My Blogpost about connecting this up to Tigard Board.  Should be the 
same or similar for a FLIRC Jeff Probe
https://ghostbsd-arm64.blogspot.com/2024/02/tigard-ft232h-board-connectons-to.html

I welcome your questions, suggestions and improvements to my blogpost 
and other materials shared.   I, too, am starting blind and learning how 
to put all this together to be usable for debugging through JTAG 
software on the Raspberry Pi 4B  hardware.  Your feedback helps me too 
and make better documentation for others to use in the future.

https://ghostbsd-arm64.blogspot.com/2024/03/compile-gdb-for-aarch64-target-to-use.html 
  Compiling GDB for aarch64 target.   I need to add Python built into 
GDB.   Will update this blog post to include Python language.  Very 
useful for one tool that I found and wish to use, that requires the 
--with-python and --with-python-libdir  configuration of GDB.
https://forums.raspberrypi.com/viewtopic.php?t=364475

To keep the mailing list clean reading, I turn off the HTML  So you copy 
a URL and paste into your open browser window or use Lynx (links) 
browser for a quick easy view of a text URL link.

Hope, I did not forget a URL link to share while I was recompiling 
aarch64-gdb with python enabled.

Here is aarch64 GDB QEMU UEFI debugging explanation:
https://krinkinmu.github.io/2020/12/26/position-independent-executable.html

https://surma.dhev/postits/arm64/  Bootstrapping Arm64 hardware,  QEMU

https://www.vinnie.work/blog/2020-11-06-baremetal-rpi4-setup/  Very good 
explanations and setup of OpenOCD, aarch64-gdb

https://macoy.me/blog/programming/RaspberryPi5Debugging  Raspberry Pi 4B 
JTAG hardware debug setup , Raspberry Pi 5 SWD serial wired debug setup



Sending this email now

Fred L. Finster
https://ghostbsd-arm64.blogspot.com
http://ghostbsdarm64.hopto.org/packages/
https://ghostbsd-arm64.blogspot.com/2024/01/january-19-2024-howto-download.html 
  Create  your own bootable USB Flash drive stick.


> 
>> On Apr 14, 2024, at 04:50, tuexen@freebsd.org wrote:
>> 
>> Dear all,
>> 
>> using the sources for kernel/world of yesterday running
>> kldload vmm
>> on a 128 core Ampere system runs just fine:
>> 
>> CPU  0: ARM Neoverse-N1 r3p1 affinity: 18  0  0
>>                  Cache Type = <64 byte D-cacheline,64 byte I-cacheline,PIPT ICache,64 byte ERG,64 byte CWG,IDC>
>> Instruction Set Attributes 0 = <DP,RDM,Atomic,CRC32,SHA2,SHA1,AES+PMULL>
>> Instruction Set Attributes 1 = <RCPC-8.3,DCPoP>
>> Instruction Set Attributes 2 = <>
>>        Processor Features 0 = <CSV3,CSV2,RAS,GIC,AdvSIMD+HP,FP+HP,EL3,EL2,EL1,EL0 32>
>>        Processor Features 1 = <PSTATE.SSBS MSR>
>>     Memory Model Features 0 = <TGran4,TGran64,TGran16,SNSMem,BigEnd,16bit ASID,256TB PA>
>>     Memory Model Features 1 = <XNX,PAN+ATS1E1,LO,HPD+TTPBHA,VH,16bit VMID,HAF+DS>
>>     Memory Model Features 2 = <EVT-8.2,32bit CCIDX,48bit VA,UAO,CnP>
>>            Debug Features 0 = <DoubleLock,SPE,2 CTX BKPTs,4 Watchpoints,6 Breakpoints,PMUv3p1,Debugv8p2>
>>            Debug Features 1 = <>
>>        Auxiliary Features 0 = <>
>>        Auxiliary Features 1 = <>
>> AArch32 Instruction Set Attributes 5 = <RDM,CRC32,SHA2,SHA1,AES+VMULL,SEVL>
>> AArch32 Media and VFP Features 0 = <FPRound,FPSqrt,FPDivide,DP VFPv3+v4,SP VFPv3+v4,AdvSIMD>
>> AArch32 Media and VFP Features 1 = <SIMDFMAC,FPHP Arith,SIMDHP Arith,SIMDSP,SIMDInt,SIMDLS,FPDNaN,FPFtZ>
>> 
>> However, doing the same on a 32 core Ampere system results in
>> the system becoming unresponsive. No reaction on the console,
>> no message there, no response over the network.
>> 
>> CPU  0: APM eMAG 8180 r3p2 affinity:  0  0
>>                Cache Type = <64 byte D-cacheline,64 byte I-cacheline,PIPT ICache,64 byte ERG,64 byte CWG>
>> Instruction Set Attributes 0 = <CRC32,SHA2,SHA1,AES+PMULL>
>> Instruction Set Attributes 1 = <>
>> Instruction Set Attributes 2 = <>
>>      Processor Features 0 = <GIC,AdvSIMD,FP,EL3,EL2,EL1 32,EL0 32>
>>      Processor Features 1 = <>
>>   Memory Model Features 0 = <TGran4,TGran64,TGran16,SNSMem,BigEnd,16bit ASID,4TB PA>
>>   Memory Model Features 1 = <8bit VMID>
>> Trying to mount root from ufs:/dev/ada0p2 [rw]...
>>   Memory Model Features 2 = <32bit CCIDX,48bit VA>
>>          Debug Features 0 = <DoubleLock,2 CTX BKPTs,4 Watchpoints,6 Breakpoints,PMUv3,Debugv8>
>>          Debug Features 1 = <>
>>      Auxiliary Features 0 = <>
>>      Auxiliary Features 1 = <>
>> AArch32 Instruction Set Attributes 5 = <CRC32,SHA2,SHA1,AES+VMULL,SEVL>
>> AArch32 Media and VFP Features 0 = <FPRound,FPSqrt,FPDivide,DP VFPv3+v4,SP VFPv3+v4,AdvSIMD>
>> AArch32 Media and VFP Features 1 = <SIMDFMAC,FPHP DP Conv,SIMDHP SP Conv,SIMDSP,SIMDInt,SIMDLS,FPDNaN,FPFtZ>
>> 
>> Any idea, what is going wrong?
>> 
>> Best regards
>> Michael
> 

-- 
Fred Finster
GhostBSD-Arm64.blogspot.com
t.me/ghostbsd  Telegram Channel
GhostBSD.org  website
ghostbsdarm64.hopto.org/packages