[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH 10/11] s390x/sic: realize SIC handling
From: |
Cornelia Huck |
Subject: |
Re: [Qemu-devel] [PATCH 10/11] s390x/sic: realize SIC handling |
Date: |
Wed, 12 Jul 2017 17:40:40 +0200 |
On Wed, 12 Jul 2017 15:40:02 +0200
Thomas Huth <address@hidden> wrote:
> On 12.07.2017 14:57, Christian Borntraeger wrote:
> > From: Fei Li <address@hidden>
> >
> > Currently, we do nothing for the SIC instruction, but we need to
> > implement it properly. Let's add proper handling in the backend code.
> >
> > Co-authored-by: Yi Min Zhao <address@hidden>
> > Signed-off-by: Yi Min Zhao <address@hidden>
> > Signed-off-by: Fei Li <address@hidden>
> > Signed-off-by: Christian Borntraeger <address@hidden>
> > ---
> > hw/s390x/css.c | 26 ++++++++++++++++++++++++++
> > hw/s390x/trace-events | 1 +
> > include/hw/s390x/css.h | 2 ++
> > target/s390x/kvm.c | 16 +++++++++++++++-
> > 4 files changed, 44 insertions(+), 1 deletion(-)
> >
> > diff --git a/hw/s390x/css.c b/hw/s390x/css.c
> > index 1fcbc84..7b82176 100644
> > --- a/hw/s390x/css.c
> > +++ b/hw/s390x/css.c
> > @@ -521,6 +521,32 @@ void css_conditional_io_interrupt(SubchDev *sch)
> > }
> > }
> >
> > +int css_do_sic(CPUS390XState *env, uint8_t isc, uint16_t mode)
> > +{
> > + S390FLICState *fs = s390_get_flic();
> > + S390FLICStateClass *fsc = S390_FLIC_COMMON_GET_CLASS(fs);
> > + int r;
> > +
> > + if (env->psw.mask & PSW_MASK_PSTATE) {
> > + r = -PGM_PRIVILEGED;
> > + goto out;
>
> Why not simply:
>
> return -PGM_PRIVILEGED;
>
> ?
>
> Same for the other goto below ... and then you also do not need the "r"
> variable anymore.
I'm slightly in favour of the single exit style.
>
> > + }
> > +
> > + trace_css_do_sic(mode, isc);
> > + switch (mode) {
> > + case SIC_IRQ_MODE_ALL:
> > + case SIC_IRQ_MODE_SINGLE:
> > + break;
> > + default:
> > + r = -PGM_OPERAND;
> > + goto out;
> > + }
> > +
> > + r = fsc->modify_ais_mode(fs, isc, mode) ? -PGM_OPERATION : 0;
> > +out:
> > + return r;
> > +}
> > +
> > void css_adapter_interrupt(uint8_t isc)
> > {
> > uint32_t io_int_word = (isc << 27) | IO_INT_WORD_AI;
(...)
> > diff --git a/include/hw/s390x/css.h b/include/hw/s390x/css.h
> > index e028960..5ee6d52 100644
> > --- a/include/hw/s390x/css.h
> > +++ b/include/hw/s390x/css.h
> > @@ -12,6 +12,7 @@
> > #ifndef CSS_H
> > #define CSS_H
> >
> > +#include "cpu.h"
>
> Not sure, but it's a little bit strange that the channel sub-system now
> depends on the CPU ... maybe the check for problem state should rather
> be done in kvm.c instead?
This would mean that tcg would need to duplicate those checks should we
want to wire it up in the future. (FWIW, the sclp backend code in
hw/s390x/sclp.c also does the respective checks, probably for exactly
that reason.)
> Or should css_do_sic() rather reside in s390-pci-inst.c or in ioinst.c
> instead?
s390-pci-inst.c is only a good choice if we are sure that sic will be
applicable for pci only even in the future - and I don't think we can
be. (The ais stuff is tied to the adapter, who knows which adapter
types may arrive in the future...)
I/O interrupt injection is currently triggered from the css code (where
it belongs IMO), so I think the code should stay where it is now.
- [Qemu-devel] [PATCH 00/11] pending s390 patches part 1, Christian Borntraeger, 2017/07/12
- [Qemu-devel] [PATCH 01/11] s390x/kvm: Rework cmma management, Christian Borntraeger, 2017/07/12
- [Qemu-devel] [PATCH 10/11] s390x/sic: realize SIC handling, Christian Borntraeger, 2017/07/12
- [Qemu-devel] [PATCH 07/11] s390x: add flags field for registering I/O adapter, Christian Borntraeger, 2017/07/12
- [Qemu-devel] [PATCH 02/11] linux-headers: update to 4.13-rc0, Christian Borntraeger, 2017/07/12
- [Qemu-devel] [PATCH 09/11] s390x/flic: introduce inject_airq callback, Christian Borntraeger, 2017/07/12
- [Qemu-devel] [PATCH 06/11] s390x/cpumodel: provide compat handling for new cpu features, Christian Borntraeger, 2017/07/12
- [Qemu-devel] [PATCH 08/11] s390x/flic: introduce modify_ais_mode callback, Christian Borntraeger, 2017/07/12