[Pdbg] [PATCH v2 14/15] main: Convert getscom/putscom to use path based targeting
Amitay Isaacs
amitay at ozlabs.org
Wed Nov 14 16:56:29 AEDT 2018
On Tue, 2018-11-13 at 16:09 +1100, Alistair Popple wrote:
> On Friday, 9 November 2018 6:10:10 PM AEDT Amitay Isaacs wrote:
> > +static bool scommable(struct pdbg_target *target)
> > {
> > - uint64_t value;
> > -
> > - if (pib_read(target, *addr, &value))
> > - return 0;
> > + char *classname;
> >
> > - printf("p%d:0x%" PRIx64 " = 0x%016" PRIx64 "\n", index, *addr,
> > value);
> > + classname = pdbg_target_class_name(target);
> > + if (!strcmp(classname, "pib") ||
> > + !strcmp(classname, "core") ||
> > + !strcmp(classname, "thread"))
> > + return true;
>
> As we've discussed/agreed this is suboptimal but will work for the
> time being
> until we come up with a better solution.
Just to confirm, does getscom/putscom work on thread class? Or it's
only pib and core classes?
>
> > - return 1;
> > + return false;
> > }
>
> <snip>
>
> > + /* TODO: Restore the <mask> functionality */
>
> We really should fix that at some point :-) I will take a look at it
> once this
> series is done.
>
> > + if (pib_write(target, addr, data)) {
> > + printf("%s: failed\n", path);
> > + free(path);
> > + continue;
> > + }
> > +
> > + count++;
> > + }
> > +
> > + return count;
> > }
> > OPTCMD_DEFINE_CMD_WITH_ARGS(putscom, putscom, (ADDRESS, DATA,
> > DEFAULT_DATA("0xffffffffffffffff"))); diff --git
> > a/tests/test_hw_bmc.sh
> > b/tests/test_hw_bmc.sh
> > index 9bc1deb..d656a3f 100755
> > --- a/tests/test_hw_bmc.sh
> > +++ b/tests/test_hw_bmc.sh
> > @@ -91,7 +91,7 @@ do_skip
> > test_run $PDBG -P fsi getcfam 0xc09
> >
> > test_result 0 <<EOF
> > -p0:0xf000f = HEX16
> > +/kernelfsi at 0/pib at 1000: 0xf000f = HEX16
>
> As mentioned in the previous patch I think for the time being we
> should try
> and maintain the same output if possible. I suspect printing the full
> path
> will just be confusing so perhaps we could add it as an option?
Sure. This means that if the selected target is a core, then it will
print "p0:c0:" and for a thread it will print "p0:c0:t0:".
Can we do getscom/putscom on non pib/core/thread targets? If yes, what
should be the prefix for those targets?
> Also I think we should print the complete translated SCOM address
> rather than
> the offset pdbg was called with. Thanks!
We need pdbg_target_address_translate() or something similar. IIRC,
there was a patch that added a public wrapper around
get_class_target_addr() but used a bad name. :-)
I can add that patch back.
Amitay.
--
Don't clutch the past so tightly to your chest that it leaves your arms
full to embrace the present. - Jan Gildwell
More information about the Pdbg
mailing list