diff mbox

kvm tools: add status notification hook to virtio-mmio

Message ID 1369139376-11921-1-git-send-email-marc.zyngier@arm.com (mailing list archive)
State New, archived
Headers show

Commit Message

Marc Zyngier May 21, 2013, 12:29 p.m. UTC
Patch e03b449cbddf (kvm tools: add status notification hook for
virtio) converted virtio-net to use a new notification mechanism,
but unfortunately left virtio-mmio behind.

The direct consequence is that both arm and arm64 guests are left
without any form of networking. Not good.

Bring virtio-mmio into this brave new notified world, and feel the
power of being able to ping again.

Cc: Sasha Levin <sasha.levin@oracle.com>
Cc: Will Deacon <will.deacon@arm.com>
Signed-off-by: Marc Zyngier <marc.zyngier@arm.com>
---
 tools/kvm/virtio/mmio.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

Comments

Sasha Levin May 26, 2013, 3:33 p.m. UTC | #1
On 05/21/2013 08:29 AM, Marc Zyngier wrote:
> Patch e03b449cbddf (kvm tools: add status notification hook for
> virtio) converted virtio-net to use a new notification mechanism,
> but unfortunately left virtio-mmio behind.
> 
> The direct consequence is that both arm and arm64 guests are left
> without any form of networking. Not good.
> 
> Bring virtio-mmio into this brave new notified world, and feel the
> power of being able to ping again.
> 
> Cc: Sasha Levin <sasha.levin@oracle.com>
> Cc: Will Deacon <will.deacon@arm.com>
> Signed-off-by: Marc Zyngier <marc.zyngier@arm.com>
> ---
>  tools/kvm/virtio/mmio.c | 7 ++++++-
>  1 file changed, 6 insertions(+), 1 deletion(-)
> 
> diff --git a/tools/kvm/virtio/mmio.c b/tools/kvm/virtio/mmio.c
> index a4e4855..afa2692 100644
> --- a/tools/kvm/virtio/mmio.c
> +++ b/tools/kvm/virtio/mmio.c
> @@ -144,16 +144,21 @@ static void virtio_mmio_config_out(u64 addr, void *data, u32 len,
>  				   struct virtio_device *vdev)
>  {
>  	struct virtio_mmio *vmmio = vdev->virtio;
> +	struct kvm *kvm = vmmio->kvm;
>  	u32 val = 0;
>  
>  	switch (addr) {
>  	case VIRTIO_MMIO_HOST_FEATURES_SEL:
>  	case VIRTIO_MMIO_GUEST_FEATURES_SEL:
>  	case VIRTIO_MMIO_QUEUE_SEL:
> -	case VIRTIO_MMIO_STATUS:
>  		val = ioport__read32(data);
>  		*(u32 *)(((void *)&vmmio->hdr) + addr) = val;
>  		break;
> +	case VIRTIO_MMIO_STATUS:
> +		vmmio->hdr.status = ioport__read32(data);
> +		if (vdev->ops->notify_status)
> +			vdev->ops->notify_status(kvm, vmmio->dev, vmmio->hdr.status);
> +		break;
>  	case VIRTIO_MMIO_GUEST_FEATURES:
>  		if (vmmio->hdr.guest_features_sel == 0) {
>  			val = ioport__read32(data);
> 

Pekka, could you apply please?

	Acked-by: Sasha Levin <sasha.levin@oracle.com>


Thanks,
Sasha
--
To unsubscribe from this list: send the line "unsubscribe kvm" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Asias He May 27, 2013, 12:10 a.m. UTC | #2
On Sun, May 26, 2013 at 11:33 PM, Sasha Levin <sasha.levin@oracle.com> wrote:
> On 05/21/2013 08:29 AM, Marc Zyngier wrote:
>> Patch e03b449cbddf (kvm tools: add status notification hook for
>> virtio) converted virtio-net to use a new notification mechanism,
>> but unfortunately left virtio-mmio behind.
>>
>> The direct consequence is that both arm and arm64 guests are left
>> without any form of networking. Not good.
>>
>> Bring virtio-mmio into this brave new notified world, and feel the
>> power of being able to ping again.
>>
>> Cc: Sasha Levin <sasha.levin@oracle.com>
>> Cc: Will Deacon <will.deacon@arm.com>
>> Signed-off-by: Marc Zyngier <marc.zyngier@arm.com>

Acked-by: Asias He <asias.hejun@gmail.com>

>> ---
>>  tools/kvm/virtio/mmio.c | 7 ++++++-
>>  1 file changed, 6 insertions(+), 1 deletion(-)
>>
>> diff --git a/tools/kvm/virtio/mmio.c b/tools/kvm/virtio/mmio.c
>> index a4e4855..afa2692 100644
>> --- a/tools/kvm/virtio/mmio.c
>> +++ b/tools/kvm/virtio/mmio.c
>> @@ -144,16 +144,21 @@ static void virtio_mmio_config_out(u64 addr, void *data, u32 len,
>>                                  struct virtio_device *vdev)
>>  {
>>       struct virtio_mmio *vmmio = vdev->virtio;
>> +     struct kvm *kvm = vmmio->kvm;
>>       u32 val = 0;
>>
>>       switch (addr) {
>>       case VIRTIO_MMIO_HOST_FEATURES_SEL:
>>       case VIRTIO_MMIO_GUEST_FEATURES_SEL:
>>       case VIRTIO_MMIO_QUEUE_SEL:
>> -     case VIRTIO_MMIO_STATUS:
>>               val = ioport__read32(data);
>>               *(u32 *)(((void *)&vmmio->hdr) + addr) = val;
>>               break;
>> +     case VIRTIO_MMIO_STATUS:
>> +             vmmio->hdr.status = ioport__read32(data);
>> +             if (vdev->ops->notify_status)
>> +                     vdev->ops->notify_status(kvm, vmmio->dev, vmmio->hdr.status);
>> +             break;
>>       case VIRTIO_MMIO_GUEST_FEATURES:
>>               if (vmmio->hdr.guest_features_sel == 0) {
>>                       val = ioport__read32(data);
>>
>
> Pekka, could you apply please?
>
>         Acked-by: Sasha Levin <sasha.levin@oracle.com>
>
>
> Thanks,
> Sasha
> --
> To unsubscribe from this list: send the line "unsubscribe kvm" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html



--
Asias
--
To unsubscribe from this list: send the line "unsubscribe kvm" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Will Deacon June 10, 2013, 2:22 p.m. UTC | #3
On Mon, May 27, 2013 at 01:10:28AM +0100, Asias He wrote:
> On Sun, May 26, 2013 at 11:33 PM, Sasha Levin <sasha.levin@oracle.com> wrote:
> > On 05/21/2013 08:29 AM, Marc Zyngier wrote:
> >> Patch e03b449cbddf (kvm tools: add status notification hook for
> >> virtio) converted virtio-net to use a new notification mechanism,
> >> but unfortunately left virtio-mmio behind.
> >>
> >> The direct consequence is that both arm and arm64 guests are left
> >> without any form of networking. Not good.
> >>
> >> Bring virtio-mmio into this brave new notified world, and feel the
> >> power of being able to ping again.
> >>
> >> Cc: Sasha Levin <sasha.levin@oracle.com>
> >> Cc: Will Deacon <will.deacon@arm.com>
> >> Signed-off-by: Marc Zyngier <marc.zyngier@arm.com>
> 
> Acked-by: Asias He <asias.hejun@gmail.com>
> 
> >> ---
> >>  tools/kvm/virtio/mmio.c | 7 ++++++-
> >>  1 file changed, 6 insertions(+), 1 deletion(-)

Can you pick this one up please Pekka? If it helps:

  Acked-by: Will Deacon <will.deacon@arm.com>

Will
--
To unsubscribe from this list: send the line "unsubscribe kvm" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Pekka Enberg June 10, 2013, 2:39 p.m. UTC | #4
On Mon, Jun 10, 2013 at 5:22 PM, Will Deacon <will.deacon@arm.com> wrote:
> Can you pick this one up please Pekka? If it helps:
>
>   Acked-by: Will Deacon <will.deacon@arm.com>

CC'ing me helped even more! ;-) Applied, thanks guys!
--
To unsubscribe from this list: send the line "unsubscribe kvm" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
diff mbox

Patch

diff --git a/tools/kvm/virtio/mmio.c b/tools/kvm/virtio/mmio.c
index a4e4855..afa2692 100644
--- a/tools/kvm/virtio/mmio.c
+++ b/tools/kvm/virtio/mmio.c
@@ -144,16 +144,21 @@  static void virtio_mmio_config_out(u64 addr, void *data, u32 len,
 				   struct virtio_device *vdev)
 {
 	struct virtio_mmio *vmmio = vdev->virtio;
+	struct kvm *kvm = vmmio->kvm;
 	u32 val = 0;
 
 	switch (addr) {
 	case VIRTIO_MMIO_HOST_FEATURES_SEL:
 	case VIRTIO_MMIO_GUEST_FEATURES_SEL:
 	case VIRTIO_MMIO_QUEUE_SEL:
-	case VIRTIO_MMIO_STATUS:
 		val = ioport__read32(data);
 		*(u32 *)(((void *)&vmmio->hdr) + addr) = val;
 		break;
+	case VIRTIO_MMIO_STATUS:
+		vmmio->hdr.status = ioport__read32(data);
+		if (vdev->ops->notify_status)
+			vdev->ops->notify_status(kvm, vmmio->dev, vmmio->hdr.status);
+		break;
 	case VIRTIO_MMIO_GUEST_FEATURES:
 		if (vmmio->hdr.guest_features_sel == 0) {
 			val = ioport__read32(data);