Re: [PATCH V22 2/3] misc: dcc: Add driver support for Data Capture and Compare unit(DCC)

From: Trilok Soni
Date: Wed Apr 19 2023 - 12:10:37 EST


On 4/19/2023 9:08 AM, Trilok Soni wrote:
On 4/19/2023 3:20 AM, Souradeep Chowdhury wrote:


On 4/19/2023 1:00 PM, Arnd Bergmann wrote:
On Wed, Apr 19, 2023, at 09:00, Souradeep Chowdhury wrote:
On 4/18/2023 9:15 PM, Greg Kroah-Hartman wrote:

The following is the justification of using debugfs interface over the
other alternatives like sysfs/ioctls

i) As can be seen from the debugfs attribute descriptions, some of the
debugfs attribute files here contains multiple arguments which needs to
be accepted from the user. This goes against the design style of sysfs.

ii) The user input patterns have been made simple and convenient in this
case with the use of debugfs interface as user doesn't need to shuffle
between different files to execute one instruction as was the case on
using other alternatives.

Why do you have debugfs and also a misc device?  How are they related?
Why both?  Why not just one?  What userspace tools are going to use
either of these interfaces and where are they published to show how this
all was tested?

DCC has two fundamental steps of usage:-

1.Configuring the register addresses on the dcc_sram which is done by
user through the debugfs interface. For example:-

echo R 0x10c004 > /sys/kernel/debug/dcc/../3/config

Here we are configuring the register addresses for list 3, the 'R'
indicates a read operation, so this register value will be read
in case of a software trigger or kernel panic/watchdog bite and
dumped into the dcc_sram.

Can you describe why the register location needs to be
runtime configurable? I would have expected this type of setting
to be part of the devicetree, which already describes other
parts that interact with sram devices.

Register addresses are made runtime configurable to give the user the
option of going for a software trigger. So the user can debug issues
during run-time as well. These register locations are arbitrary
and is configured by the user for debugging purposes and is not related to the DCC hardware itself.

Please note that we don't want to recompile the devicetree for new settings since these registers can be set by team of engineers who are debugging system level issues with various IPs across the SOCs. You don't want to recompile the images while reproducing the system hangs/IP watchdogs etc;

...and also these registers list is not fixed, it will vary based on the problem you are seeing and debugging on the SOC across the IPs.

---Trilok Soni