Re: [Qemu-devel] [PATCH 2/2] ac97: don't override the pci subsystem id

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

 



On 11/07/2011 09:33 AM, Gerd Hoffmann wrote:
This patch removes the code lines which set the subsystem id for the
emulated ac97 card to 8086:0000.  Due to the device id being zero the
subsystem id isn't vaild anyway.  With the patch applied the sound card
gets the default qemu subsystem id (1af4:1100) instead.

I don't like having a property of "use broken".

Wouldn't it be better to have the subsystem vendor and device id be configurable, set the default to the qemu subsystem ids, and then set it to 8086:0000 for < 1.0?

Regards,

Anthony Liguori


[ v2: old&  broken id is maintained for -M pc-$oldqemuversion ]

Cc: Takashi Iwai<tiwai@xxxxxxx>
Signed-off-by: Gerd Hoffmann<kraxel@xxxxxxxxxx>
---
  hw/ac97.c    |   16 +++++++++++-----
  hw/pc_piix.c |   16 ++++++++++++++++
  2 files changed, 27 insertions(+), 5 deletions(-)

diff --git a/hw/ac97.c b/hw/ac97.c
index 6800af4..0dbba3b 100644
--- a/hw/ac97.c
+++ b/hw/ac97.c
@@ -150,6 +150,7 @@ typedef struct AC97BusMasterRegs {
  typedef struct AC97LinkState {
      PCIDevice dev;
      QEMUSoundCard card;
+    uint32_t use_broken_id;
      uint32_t glob_cnt;
      uint32_t glob_sta;
      uint32_t cas;
@@ -1305,11 +1306,12 @@ static int ac97_initfn (PCIDevice *dev)
      c[PCI_BASE_ADDRESS_0 + 6] = 0x00;
      c[PCI_BASE_ADDRESS_0 + 7] = 0x00;

-    c[PCI_SUBSYSTEM_VENDOR_ID] = 0x86;      /* svid subsystem vendor id rwo */
-    c[PCI_SUBSYSTEM_VENDOR_ID + 1] = 0x80;
-
-    c[PCI_SUBSYSTEM_ID] = 0x00;      /* sid subsystem id rwo */
-    c[PCI_SUBSYSTEM_ID + 1] = 0x00;
+    if (s->use_broken_id) {
+        c[PCI_SUBSYSTEM_VENDOR_ID] = 0x86;
+        c[PCI_SUBSYSTEM_VENDOR_ID + 1] = 0x80;
+        c[PCI_SUBSYSTEM_ID] = 0x00;
+        c[PCI_SUBSYSTEM_ID + 1] = 0x00;
+    }

      c[PCI_INTERRUPT_LINE] = 0x00;      /* intr_ln interrupt line rw */
      c[PCI_INTERRUPT_PIN] = 0x01;      /* intr_pn interrupt pin ro */
@@ -1350,6 +1352,10 @@ static PCIDeviceInfo ac97_info = {
      .device_id    = PCI_DEVICE_ID_INTEL_82801AA_5,
      .revision     = 0x01,
      .class_id     = PCI_CLASS_MULTIMEDIA_AUDIO,
+    .qdev.props   = (Property[]) {
+        DEFINE_PROP_UINT32("use_broken_id", AC97LinkState, use_broken_id, 0),
+        DEFINE_PROP_END_OF_LIST(),
+    }
  };

  static void ac97_register (void)
diff --git a/hw/pc_piix.c b/hw/pc_piix.c
index 93e40d0..27ea570 100644
--- a/hw/pc_piix.c
+++ b/hw/pc_piix.c
@@ -347,6 +347,10 @@ static QEMUMachine pc_machine_v0_13 = {
              .driver   = "virtio-net-pci",
              .property = "event_idx",
              .value    = "off",
+        },{
+            .driver   = "AC97",
+            .property = "use_broken_id",
+            .value    = stringify(1),
          },
          { /* end of list */ }
      },
@@ -390,6 +394,10 @@ static QEMUMachine pc_machine_v0_12 = {
              .driver   = "virtio-net-pci",
              .property = "event_idx",
              .value    = "off",
+        },{
+            .driver   = "AC97",
+            .property = "use_broken_id",
+            .value    = stringify(1),
          },
          { /* end of list */ }
      }
@@ -441,6 +449,10 @@ static QEMUMachine pc_machine_v0_11 = {
              .driver   = "virtio-net-pci",
              .property = "event_idx",
              .value    = "off",
+        },{
+            .driver   = "AC97",
+            .property = "use_broken_id",
+            .value    = stringify(1),
          },
          { /* end of list */ }
      }
@@ -504,6 +516,10 @@ static QEMUMachine pc_machine_v0_10 = {
              .driver   = "virtio-net-pci",
              .property = "event_idx",
              .value    = "off",
+        },{
+            .driver   = "AC97",
+            .property = "use_broken_id",
+            .value    = stringify(1),
          },
          { /* end of list */ }
      },

--
To unsubscribe from this list: send the line "unsubscribe kvm" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[Index of Archives]     [KVM ARM]     [KVM ia64]     [KVM ppc]     [Virtualization Tools]     [Spice Development]     [Libvirt]     [Libvirt Users]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite Questions]     [Linux Kernel]     [Linux SCSI]     [XFree86]
  Powered by Linux