diff options
author | Martin Schwidefsky <schwidefsky@de.ibm.com> | 2010-10-25 10:10:38 -0400 |
---|---|---|
committer | Martin Schwidefsky <sky@mschwide.boeblingen.de.ibm.com> | 2010-10-25 10:10:19 -0400 |
commit | f6649a7e5a9ee99e9623878f4a5579cc2f6cdd51 (patch) | |
tree | 183438313c7593565980a1445f208e0ba30162cd /drivers/s390/kvm | |
parent | 1e54622e0403891b10f2105663e0f9dd595a1f17 (diff) |
[S390] cleanup lowcore access from external interrupts
Read external interrupts parameters from the lowcore in the first
level interrupt handler in entry[64].S.
Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
Diffstat (limited to 'drivers/s390/kvm')
-rw-r--r-- | drivers/s390/kvm/kvm_virtio.c | 9 |
1 files changed, 5 insertions, 4 deletions
diff --git a/drivers/s390/kvm/kvm_virtio.c b/drivers/s390/kvm/kvm_virtio.c index 5a46b8c5d68a..375aeeaf9ea5 100644 --- a/drivers/s390/kvm/kvm_virtio.c +++ b/drivers/s390/kvm/kvm_virtio.c | |||
@@ -372,21 +372,22 @@ static void hotplug_devices(struct work_struct *dummy) | |||
372 | /* | 372 | /* |
373 | * we emulate the request_irq behaviour on top of s390 extints | 373 | * we emulate the request_irq behaviour on top of s390 extints |
374 | */ | 374 | */ |
375 | static void kvm_extint_handler(u16 code) | 375 | static void kvm_extint_handler(unsigned int ext_int_code, |
376 | unsigned int param32, unsigned long param64) | ||
376 | { | 377 | { |
377 | struct virtqueue *vq; | 378 | struct virtqueue *vq; |
378 | u16 subcode; | 379 | u16 subcode; |
379 | u32 param; | 380 | u32 param; |
380 | 381 | ||
381 | subcode = S390_lowcore.cpu_addr; | 382 | subcode = ext_int_code >> 16; |
382 | if ((subcode & 0xff00) != VIRTIO_SUBCODE_64) | 383 | if ((subcode & 0xff00) != VIRTIO_SUBCODE_64) |
383 | return; | 384 | return; |
384 | 385 | ||
385 | /* The LSB might be overloaded, we have to mask it */ | 386 | /* The LSB might be overloaded, we have to mask it */ |
386 | vq = (struct virtqueue *)(S390_lowcore.ext_params2 & ~1UL); | 387 | vq = (struct virtqueue *)(param64 & ~1UL); |
387 | 388 | ||
388 | /* We use ext_params to decide what this interrupt means */ | 389 | /* We use ext_params to decide what this interrupt means */ |
389 | param = S390_lowcore.ext_params & VIRTIO_PARAM_MASK; | 390 | param = param32 & VIRTIO_PARAM_MASK; |
390 | 391 | ||
391 | switch (param) { | 392 | switch (param) { |
392 | case VIRTIO_PARAM_CONFIG_CHANGED: | 393 | case VIRTIO_PARAM_CONFIG_CHANGED: |