qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-devel] [PATCH 06/15] s390: Add channel I/O instructions.


From: Blue Swirl
Subject: Re: [Qemu-devel] [PATCH 06/15] s390: Add channel I/O instructions.
Date: Tue, 29 Jan 2013 20:12:21 +0000

On Tue, Jan 29, 2013 at 3:45 PM, Cornelia Huck <address@hidden> wrote:
> On Tue, 29 Jan 2013 16:09:38 +0100
> Alexander Graf <address@hidden> wrote:
>
>> On 01/28/2013 10:59 AM, Cornelia Huck wrote:
>> > On Fri, 25 Jan 2013 20:28:31 +0100
>> > Alexander Graf<address@hidden>  wrote:
>> >
>> >> However, I do agree that this duplicates logic. Cornelia, mind to instead 
>> >> call our map helper in css_do_tpi?
>> > Well, ioinst_handle_tpi() looks like the better place to do this.
>> >
>> > Can you put this into the series, or should I re-send?
>>
>> It still breaks for 32-bit targets. Could you please replace the set_bit
>> call by normal bit shift operations?
>>
>
> Here you are:
>
> From f85a2507c4c5887e308dcd7dfcfebc386d802ea5 Mon Sep 17 00:00:00 2001
> From: Cornelia Huck <address@hidden>
> Date: Tue, 29 Jan 2013 16:33:04 +0100
> Subject: [PATCH] s390: Drop set_bit usage in virtio_ccw.
>
> set_bit on indicators doesn't go well on 32 bit targets:
>
> note: expected 'long unsigned int *' but argument is of type 'uint64_t *'
>
> Switch to bit shifts instead.
>
> Signed-off-by: Cornelia Huck <address@hidden>
> ---
>  hw/s390x/virtio-ccw.c |    4 ++--
>  1 files changed, 2 insertions(+), 2 deletions(-)
>
> diff --git a/hw/s390x/virtio-ccw.c b/hw/s390x/virtio-ccw.c
> index 7d7f336..77e8f32 100644
> --- a/hw/s390x/virtio-ccw.c
> +++ b/hw/s390x/virtio-ccw.c
> @@ -662,12 +662,12 @@ static void virtio_ccw_notify(DeviceState *d, uint16_t 
> vector)
>
>      if (vector < VIRTIO_PCI_QUEUE_MAX) {
>          indicators = ldq_phys(dev->indicators);
> -        set_bit(vector, &indicators);
> +        indicators |= 1 << vector;

Probably 1ULL should be used to avoid truncation on 32 bit hosts.

>          stq_phys(dev->indicators, indicators);
>      } else {
>          vector = 0;
>          indicators = ldq_phys(dev->indicators2);
> -        set_bit(vector, &indicators);
> +        indicators |= 1 << vector;
>          stq_phys(dev->indicators2, indicators);
>      }
>
> --
> 1.7.6.2
>



reply via email to

[Prev in Thread] Current Thread [Next in Thread]