qemu-devel
[Top][All Lists]
Advanced

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

Re: [Qemu-devel] [PATCH v3 064/197] killall VIOsPAPRDeviceInfo


From: Anthony Liguori
Subject: Re: [Qemu-devel] [PATCH v3 064/197] killall VIOsPAPRDeviceInfo
Date: Mon, 12 Dec 2011 20:10:02 -0600
User-agent: Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.2.21) Gecko/20110831 Lightning/1.0b2 Thunderbird/3.1.13

On 12/12/2011 08:04 PM, Michael Ellerman wrote:
On Mon, 2011-12-12 at 14:19 -0600, Anthony Liguori wrote:
This was doing something evil building a dt tree so we broke the device.

@@ -711,8 +711,12 @@ VIOsPAPRBus *spapr_vio_bus_init(void)
      spapr_rtas_register("ibm,set-tce-bypass", rtas_set_tce_bypass);
      spapr_rtas_register("quiesce", rtas_quiesce);

+#if 0
+    /* Evil and broken */

By which you mean: works fine, broken by your patch?

These patches were never supposed to go out.  Ignore this series entirely.


+
      for (qinfo = device_info_list; qinfo; qinfo = qinfo->next) {
          VIOsPAPRDeviceInfo *info = (VIOsPAPRDeviceInfo *)qinfo;
+        VIOsPAPRDeviceClass *pc = VIO_SPAPR_DEVICE_GET_CLASS(dev);

          if (qinfo->bus_info !=&spapr_vio_bus_info) {
              continue;
@@ -722,6 +726,7 @@ VIOsPAPRBus *spapr_vio_bus_init(void)
              info->hcalls(bus);
          }
      }
+#endif

It's registering hcalls for each class of device we find on the spapr
vio bus. I don't understand why that is evil, but what do you suggest we
do instead?

I talked to David about this, the hcalls can just be registered as part the device_init entry points.

If you must initialize them via a per-device callback, then you should walk it from the bus's children, not by walking the entire device model. That was the bit that I was referring to as evil. It's a layering violation.

Regards,

Anthony Liguori


cheers






reply via email to

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