[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH v1 for-2-12 09/15] s390x/tcg: implement TEST PEN
From: |
Cornelia Huck |
Subject: |
Re: [Qemu-devel] [PATCH v1 for-2-12 09/15] s390x/tcg: implement TEST PENDING INTERRUPTION |
Date: |
Tue, 12 Dec 2017 10:13:03 +0100 |
On Mon, 11 Dec 2017 21:32:58 +0100
David Hildenbrand <address@hidden> wrote:
> On 11.12.2017 19:01, Cornelia Huck wrote:
> > On Mon, 11 Dec 2017 14:47:34 +0100
> > David Hildenbrand <address@hidden> wrote:
> >
> >> Use s390_cpu_virt_mem_write() so we can actually revert what we did
> >> (re-inject the dequeued IO interrupt).
> >>
> >> Signed-off-by: David Hildenbrand <address@hidden>
> >> ---
> >> target/s390x/helper.h | 1 +
> >> target/s390x/insn-data.def | 1 +
> >> target/s390x/misc_helper.c | 53
> >> ++++++++++++++++++++++++++++++++++++++++++++++
> >> target/s390x/translate.c | 8 +++++++
> >> 4 files changed, 63 insertions(+)
> >>
> >
> >> +uint32_t HELPER(tpi)(CPUS390XState *env, uint64_t addr)
> >> +{
> >> + const uintptr_t ra = GETPC();
> >> + S390CPU *cpu = s390_env_get_cpu(env);
> >> + QEMUS390FLICState *flic = QEMU_S390_FLIC(s390_get_flic());
> >> + QEMUS390FlicIO *io = NULL;
> >> + LowCore *lowcore;
> >> +
> >> + if (addr & 0x3) {
> >> + s390_program_interrupt(env, PGM_SPECIFICATION, 4, ra);
> >> + }
> >> +
> >> + qemu_mutex_lock_iothread();
> >> + io = qemu_s390_flic_dequeue_io(flic, env->cregs[6]);
> >> + if (!io) {
> >> + qemu_mutex_unlock_iothread();
> >> + return 0;
> >> + }
> >> +
> >> + if (addr) {
> >> + struct {
> >> + uint16_t id;
> >> + uint16_t nr;
> >> + uint32_t parm;
> >> + } tmp = {
> >> + .id = cpu_to_be16(io->id),
> >> + .nr = cpu_to_be16(io->nr),
> >> + .parm = cpu_to_be32(io->parm),
> >> + };
> >
> > That's a two-word interruption code; can you call this something better
> > than 'tmp'?
>
> IMHO from the context we have here it should be pretty clear what is
> happening. I mean we are defining and initializing the temporary data
> structure.
>
> But I can change the name if you can come up with a catchy variable name. :)
>
int_code?
[Qemu-devel] [PATCH v1 for-2-12 08/15] s390x/flic: make floating interrupts on TCG actually floating, David Hildenbrand, 2017/12/11
[Qemu-devel] [PATCH v1 for-2-12 09/15] s390x/tcg: implement TEST PENDING INTERRUPTION, David Hildenbrand, 2017/12/11
[Qemu-devel] [PATCH v1 for-2-12 10/15] s390x/flic: implement qemu_s390_clear_io_flic(), David Hildenbrand, 2017/12/11
[Qemu-devel] [PATCH v1 for-2-12 11/15] s390x/flic: optimize CPU wakeup for TCG, David Hildenbrand, 2017/12/11
[Qemu-devel] [PATCH v1 for-2-12 14/15] s390x/tcg: remove SMP warning, David Hildenbrand, 2017/12/11
[Qemu-devel] [PATCH v1 for-2-12 13/15] s390x/tcg: STSI overhaul, David Hildenbrand, 2017/12/11
[Qemu-devel] [PATCH v1 for-2-12 12/15] s390x/tcg: fix size + content of STSI blocks, David Hildenbrand, 2017/12/11
[Qemu-devel] [PATCH v1 for-2-12 15/15] configure: s390x supports mttcg now, David Hildenbrand, 2017/12/11