qemu-devel
[Top][All Lists]
Advanced

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

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


From: Anthony Liguori
Subject: Re: [Qemu-devel] [PATCH 2/2] ac97: don't override the pci subsystem id
Date: Mon, 07 Nov 2011 10:00:25 -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 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<address@hidden>
Signed-off-by: Gerd Hoffmann<address@hidden>
---
  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 */ }
      },




reply via email to

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