Re: [PATCH v3 4/7] acpi/ghes: Add a logic to handle block addresses and FW first ARM processor error injection
From: Jonathan Cameron
Date: Fri Jul 26 2024 - 08:47:00 EST
A few quick replies from me.
I'm sure Mauro will add more info.
> > + 'tlb-error',
> > + 'bus-error',
> > + 'micro-arch-error']
> > +}
> > +
> > +##
> > +# @arm-inject-error:
> > +#
> > +# Inject ARM Processor error.
> > +#
> > +# @errortypes: ARM processor error types to inject
> > +#
> > +# Features:
> > +#
> > +# @unstable: This command is experimental.
> > +#
> > +# Since: 9.1
> > +##
> > +{ 'command': 'arm-inject-error',
> > + 'data': { 'errortypes': ['ArmProcessorErrorType'] },
>
> Please separate words with dashes: 'error-types'.
>
> > + 'features': [ 'unstable' ]
> > +}
>
> Is this used only with TARGET_ARM?
>
> Why is being able to inject multiple error types at once useful?
It pokes a weird corner of the specification that I think previously
tripped up Linux.
>
> I'd expect at least some of these errors to come with additional
> information. For instance, I imagine a bus error is associated with
> some address.
Absolutely agree that in sane case you wouldn't have multiple errors
but we want to hit the insane ones :(
There is only prevision for one set of data in the record despite
it providing a bitmap for the type of error.
>
> If we encode the the error to inject as an enum value, adding more will
> be hard.
>
> If we wrap the enum in a struct
>
> { 'struct': 'ArmProcessorError',
> 'data': { 'type': 'ArmProcessorErrorType' } }
>
> we can later extend it like
>
> { 'union': 'ArmProcessorError',
> 'base: { 'type': 'ArmProcessorErrorType' }
> 'data': {
> 'bus-error': 'ArmProcessorBusErrorData' } }
>
> { 'struct': 'ArmProcessorBusErrorData',
> 'data': ... }
>
> > diff --git a/qapi/meson.build b/qapi/meson.build
> > index e7bc54e5d047..5927932c4be3 100644
> > --- a/qapi/meson.build
> > +++ b/qapi/meson.build
> > @@ -22,6 +22,7 @@ if have_system or have_tools or have_ga
> > endif
> >
> > qapi_all_modules = [
> > + 'arm-error-inject',
> > 'authz',
> > 'block',
> > 'block-core',
> > diff --git a/qapi/qapi-schema.json b/qapi/qapi-schema.json
> > index b1581988e4eb..479a22de7e43 100644
> > --- a/qapi/qapi-schema.json
> > +++ b/qapi/qapi-schema.json
> > @@ -81,3 +81,4 @@
> > { 'include': 'vfio.json' }
> > { 'include': 'cryptodev.json' }
> > { 'include': 'cxl.json' }
> > +{ 'include': 'arm-error-inject.json' }
>
>