qemu-devel
[Top][All Lists]
Advanced

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

Re: [Qemu-devel] [PATCH for-2.3] powerpc: fix -machine usb=no for newwor


From: Marcel Apfelbaum
Subject: Re: [Qemu-devel] [PATCH for-2.3] powerpc: fix -machine usb=no for newworld and pseries machines
Date: Tue, 24 Mar 2015 00:00:18 +0200
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:31.0) Gecko/20100101 Thunderbird/31.5.0

On 03/23/2015 10:11 PM, Paolo Bonzini wrote:


On 23/03/2015 19:21, Alexander Graf wrote:
On 03/23/2015 07:20 PM, Marcel Apfelbaum wrote:
On 03/23/2015 07:05 PM, Paolo Bonzini wrote:
Capture the explicit setting of "usb=no" into a separate bool, and
use it to skip the update of machine->usb in the board init function.

Signed-off-by: Paolo Bonzini <address@hidden>
---
   hw/core/machine.c     | 1 +
   hw/ppc/mac_newworld.c | 2 +-
   hw/ppc/spapr.c        | 2 +-
   include/hw/boards.h   | 1 +
   4 files changed, 4 insertions(+), 2 deletions(-)

diff --git a/hw/core/machine.c b/hw/core/machine.c
index cb1185a..25c45e6 100644
--- a/hw/core/machine.c
+++ b/hw/core/machine.c
@@ -223,6 +223,7 @@ static void machine_set_usb(Object *obj, bool
value, Error **errp)
       MachineState *ms = MACHINE(obj);

       ms->usb = value;
+    ms->usb_disabled = !value;
Maybe is too late now, but I really not like this pollution of
MachineState
with 'usb_disabled'. (Imagine we have this kind of fields for lots of
objects and lots
of corner cases...)
I know it comes to solve a bug, but we talked about it in another mail
thread and
this change in semantics was approved.

Let me explain *why* I don't like it.
1. We add an "usb_disabled" field to a base class (actually object)
    of all the machines and the only place it is interesting is
    for 2 machines on ppc.

So we do for kernel_irqchip_requested/allowed.  Both approaches could be
replaced by a tri-state on/off/auto.
Personally I prefer this one, but out of the scope of this patch.


2. Even for these 2 machines, the scenario of defaults=on and usb=off
    is not practical.

Why?  For example you could add a virtio-input device instead of a USB
keyboard and mouse.
You got me there :)
From what I understood for those boards there is no need for this
combination but I don't know them enough (OK.. at all).


I'm personally fine either way, but I assumed that Paolo had a good
reason for writing the patch?

Actually, two.

One good reason is that no matter how you look at it, it's at least
surprising and at worst a bug that "-machine usb=no" includes a default
USB controller.

The second good reason is that it's a guest ABI change for the versioned
pSeries machines, and as such it breaks migration.
Always migration wins.

Bottom line, of course I don't have anything against fixing this bug,
my problem was only with the way we add those fields (usb_disabled), maybe a 
three state
QOM property (and variable behind it) is a solution, but not for now of course.

I also didn't like the required/allowed fields and I added them anyway...

Thanks,
Marcel



Paolo





reply via email to

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