From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1MhOcc-0002Xm-Q4 for qemu-devel@nongnu.org; Sat, 29 Aug 2009 10:09:38 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1MhOcX-0002W9-UZ for qemu-devel@nongnu.org; Sat, 29 Aug 2009 10:09:38 -0400 Received: from [199.232.76.173] (port=47305 helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1MhOcX-0002W5-RH for qemu-devel@nongnu.org; Sat, 29 Aug 2009 10:09:33 -0400 Received: from mail-ew0-f223.google.com ([209.85.219.223]:57826) by monty-python.gnu.org with esmtp (Exim 4.60) (envelope-from ) id 1MhOcW-0003sC-VM for qemu-devel@nongnu.org; Sat, 29 Aug 2009 10:09:33 -0400 Received: by ewy23 with SMTP id 23so3203843ewy.8 for ; Sat, 29 Aug 2009 07:09:32 -0700 (PDT) MIME-Version: 1.0 From: Blue Swirl Date: Sat, 29 Aug 2009 17:09:12 +0300 Message-ID: Content-Type: multipart/mixed; boundary=00c09fc2bcc0882f1a04724859a8 Subject: [Qemu-devel] [PATCH, RFC 3/5] PCI: use device info List-Id: qemu-devel.nongnu.org List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel --00c09fc2bcc0882f1a04724859a8 Content-Type: text/plain; charset=UTF-8 Signed-off-by: Blue Swirl --- hw/pci.c | 46 +++++++++++++++++++++++----------------------- hw/pci.h | 2 -- monitor.c | 2 -- qemu-monitor.hx | 2 -- 4 files changed, 23 insertions(+), 29 deletions(-) diff --git a/hw/pci.c b/hw/pci.c index 41e99a9..93c9c62 100644 --- a/hw/pci.c +++ b/hw/pci.c @@ -100,6 +100,8 @@ static void pci_bus_reset(void *opaque) } } +static void pci_info(Monitor *mon, void *opaque); + PCIBus *pci_register_bus(DeviceState *parent, const char *name, pci_set_irq_fn set_irq, pci_map_irq_fn map_irq, qemu_irq *pic, int devfn_min, int nirq) @@ -118,6 +120,7 @@ PCIBus *pci_register_bus(DeviceState *parent, const char *name, first_bus = bus; vmstate_register(nbus++, &vmstate_pcibus, bus); qemu_register_reset(pci_bus_reset, bus); + monitor_register_device_info(name, pci_info, bus); return bus; } @@ -695,9 +698,24 @@ static const pci_class_desc pci_class_descriptions[] = { 0, NULL} }; -static void pci_info_device(PCIDevice *d) +static void pci_bus_for_each_device(PCIBus *bus, + void (*fn)(PCIDevice *d, void *fn_opaque), + void *fn_opaque) { - Monitor *mon = cur_mon; + PCIDevice *d; + int devfn; + + for(devfn = 0; devfn < 256; devfn++) { + d = bus->devices[devfn]; + if (d) { + fn(d, fn_opaque); + } + } +} + +static void pci_info_device(PCIDevice *d, void *opaque) +{ + Monitor *mon = opaque; int i, class; PCIIORegion *r; const pci_class_desc *desc; @@ -739,31 +757,13 @@ static void pci_info_device(PCIDevice *d) } } monitor_printf(mon, " id \"%s\"\n", d->qdev.id ? d->qdev.id : ""); - if (class == 0x0604 && d->config[0x19] != 0) { - pci_for_each_device(d->config[0x19], pci_info_device); - } } -void pci_for_each_device(int bus_num, void (*fn)(PCIDevice *d)) +static void pci_info(Monitor *mon, void *opaque) { - PCIBus *bus = first_bus; - PCIDevice *d; - int devfn; - - while (bus && bus->bus_num != bus_num) - bus = bus->next; - if (bus) { - for(devfn = 0; devfn < 256; devfn++) { - d = bus->devices[devfn]; - if (d) - fn(d); - } - } -} + PCIBus *bus = opaque; -void pci_info(Monitor *mon) -{ - pci_for_each_device(0, pci_info_device); + pci_bus_for_each_device(bus, pci_info_device, mon); } PCIDevice *pci_create(const char *name, const char *devaddr) diff --git a/hw/pci.h b/hw/pci.h index fd1d35c..a3e7ba9 100644 --- a/hw/pci.h +++ b/hw/pci.h @@ -250,14 +250,12 @@ PCIDevice *pci_nic_init(NICInfo *nd, const char *default_model, void pci_data_write(void *opaque, uint32_t addr, uint32_t val, int len); uint32_t pci_data_read(void *opaque, uint32_t addr, int len); int pci_bus_num(PCIBus *s); -void pci_for_each_device(int bus_num, void (*fn)(PCIDevice *d)); PCIBus *pci_find_bus(int bus_num); PCIDevice *pci_find_device(int bus_num, int slot, int function); int pci_read_devaddr(Monitor *mon, const char *addr, int *domp, int *busp, unsigned *slotp); -void pci_info(Monitor *mon); PCIBus *pci_bridge_init(PCIBus *bus, int devfn, uint16_t vid, uint16_t did, pci_map_irq_fn map_irq, const char *name); diff --git a/monitor.c b/monitor.c index d5b39eb..4f507f2 100644 --- a/monitor.c +++ b/monitor.c @@ -1799,8 +1799,6 @@ static const mon_cmd_t info_cmds[] = { "", "show infos for each CPU" }, { "history", "", do_info_history, "", "show the command line history", }, - { "pci", "", pci_info, - "", "show PCI info", }, #if defined(TARGET_I386) || defined(TARGET_SH4) { "tlb", "", tlb_info, "", "show virtual to physical memory mappings", }, diff --git a/qemu-monitor.hx b/qemu-monitor.hx index 2026921..6ad960e 100644 --- a/qemu-monitor.hx +++ b/qemu-monitor.hx @@ -45,8 +45,6 @@ show the cpu registers show infos for each CPU @item info history show the command line history -@item info pci -show emulated PCI device info @item info tlb show virtual to physical memory mappings (i386 only) @item info mem -- 1.6.2.4 --00c09fc2bcc0882f1a04724859a8 Content-Type: application/mbox; name="0003-PCI-use-device-info.patch" Content-Disposition: attachment; filename="0003-PCI-use-device-info.patch" Content-Transfer-Encoding: base64 X-Attachment-Id: f_fyyfhmcl0 RnJvbSBjNzc1ODg1NmMxOTM4ZTg1ZDQ0MzQxZDYyOWQwYzc4M2VmZjgwZmU2IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBCbHVlIFN3aXJsIDxibGF1d2lyYmVsQGdtYWlsLmNvbT4KRGF0 ZTogU2F0LCAyOSBBdWcgMjAwOSAxNDowMTo1NiArMDAwMApTdWJqZWN0OiBbUEFUQ0hdIFBDSTog dXNlIGRldmljZSBpbmZvCgpTaWduZWQtb2ZmLWJ5OiBCbHVlIFN3aXJsIDxibGF1d2lyYmVsQGdt YWlsLmNvbT4KLS0tCiBody9wY2kuYyAgICAgICAgfCAgIDQ2ICsrKysrKysrKysrKysrKysrKysr KysrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIGh3L3BjaS5oICAgICAgICB8ICAgIDIgLS0KIG1v bml0b3IuYyAgICAgICB8ICAgIDIgLS0KIHFlbXUtbW9uaXRvci5oeCB8ICAgIDIgLS0KIDQgZmls ZXMgY2hhbmdlZCwgMjMgaW5zZXJ0aW9ucygrKSwgMjkgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0 IGEvaHcvcGNpLmMgYi9ody9wY2kuYwppbmRleCA0MWU5OWE5Li45M2M5YzYyIDEwMDY0NAotLS0g YS9ody9wY2kuYworKysgYi9ody9wY2kuYwpAQCAtMTAwLDYgKzEwMCw4IEBAIHN0YXRpYyB2b2lk IHBjaV9idXNfcmVzZXQodm9pZCAqb3BhcXVlKQogICAgIH0KIH0KIAorc3RhdGljIHZvaWQgcGNp X2luZm8oTW9uaXRvciAqbW9uLCB2b2lkICpvcGFxdWUpOworCiBQQ0lCdXMgKnBjaV9yZWdpc3Rl cl9idXMoRGV2aWNlU3RhdGUgKnBhcmVudCwgY29uc3QgY2hhciAqbmFtZSwKICAgICAgICAgICAg ICAgICAgICAgICAgICBwY2lfc2V0X2lycV9mbiBzZXRfaXJxLCBwY2lfbWFwX2lycV9mbiBtYXBf aXJxLAogICAgICAgICAgICAgICAgICAgICAgICAgIHFlbXVfaXJxICpwaWMsIGludCBkZXZmbl9t aW4sIGludCBuaXJxKQpAQCAtMTE4LDYgKzEyMCw3IEBAIFBDSUJ1cyAqcGNpX3JlZ2lzdGVyX2J1 cyhEZXZpY2VTdGF0ZSAqcGFyZW50LCBjb25zdCBjaGFyICpuYW1lLAogICAgIGZpcnN0X2J1cyA9 IGJ1czsKICAgICB2bXN0YXRlX3JlZ2lzdGVyKG5idXMrKywgJnZtc3RhdGVfcGNpYnVzLCBidXMp OwogICAgIHFlbXVfcmVnaXN0ZXJfcmVzZXQocGNpX2J1c19yZXNldCwgYnVzKTsKKyAgICBtb25p dG9yX3JlZ2lzdGVyX2RldmljZV9pbmZvKG5hbWUsIHBjaV9pbmZvLCBidXMpOwogICAgIHJldHVy biBidXM7CiB9CiAKQEAgLTY5NSw5ICs2OTgsMjQgQEAgc3RhdGljIGNvbnN0IHBjaV9jbGFzc19k ZXNjIHBjaV9jbGFzc19kZXNjcmlwdGlvbnNbXSA9CiAgICAgeyAwLCBOVUxMfQogfTsKIAotc3Rh dGljIHZvaWQgcGNpX2luZm9fZGV2aWNlKFBDSURldmljZSAqZCkKK3N0YXRpYyB2b2lkIHBjaV9i dXNfZm9yX2VhY2hfZGV2aWNlKFBDSUJ1cyAqYnVzLAorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgdm9pZCAoKmZuKShQQ0lEZXZpY2UgKmQsIHZvaWQgKmZuX29wYXF1ZSksCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkICpmbl9vcGFxdWUpCiB7Ci0g ICAgTW9uaXRvciAqbW9uID0gY3VyX21vbjsKKyAgICBQQ0lEZXZpY2UgKmQ7CisgICAgaW50IGRl dmZuOworCisgICAgZm9yKGRldmZuID0gMDsgZGV2Zm4gPCAyNTY7IGRldmZuKyspIHsKKyAgICAg ICAgZCA9IGJ1cy0+ZGV2aWNlc1tkZXZmbl07CisgICAgICAgIGlmIChkKSB7CisgICAgICAgICAg ICBmbihkLCBmbl9vcGFxdWUpOworICAgICAgICB9CisgICAgfQorfQorCitzdGF0aWMgdm9pZCBw Y2lfaW5mb19kZXZpY2UoUENJRGV2aWNlICpkLCB2b2lkICpvcGFxdWUpCit7CisgICAgTW9uaXRv ciAqbW9uID0gb3BhcXVlOwogICAgIGludCBpLCBjbGFzczsKICAgICBQQ0lJT1JlZ2lvbiAqcjsK ICAgICBjb25zdCBwY2lfY2xhc3NfZGVzYyAqZGVzYzsKQEAgLTczOSwzMSArNzU3LDEzIEBAIHN0 YXRpYyB2b2lkIHBjaV9pbmZvX2RldmljZShQQ0lEZXZpY2UgKmQpCiAgICAgICAgIH0KICAgICB9 CiAgICAgbW9uaXRvcl9wcmludGYobW9uLCAiICAgICAgaWQgXCIlc1wiXG4iLCBkLT5xZGV2Lmlk ID8gZC0+cWRldi5pZCA6ICIiKTsKLSAgICBpZiAoY2xhc3MgPT0gMHgwNjA0ICYmIGQtPmNvbmZp Z1sweDE5XSAhPSAwKSB7Ci0gICAgICAgIHBjaV9mb3JfZWFjaF9kZXZpY2UoZC0+Y29uZmlnWzB4 MTldLCBwY2lfaW5mb19kZXZpY2UpOwotICAgIH0KIH0KIAotdm9pZCBwY2lfZm9yX2VhY2hfZGV2 aWNlKGludCBidXNfbnVtLCB2b2lkICgqZm4pKFBDSURldmljZSAqZCkpCitzdGF0aWMgdm9pZCBw Y2lfaW5mbyhNb25pdG9yICptb24sIHZvaWQgKm9wYXF1ZSkKIHsKLSAgICBQQ0lCdXMgKmJ1cyA9 IGZpcnN0X2J1czsKLSAgICBQQ0lEZXZpY2UgKmQ7Ci0gICAgaW50IGRldmZuOwotCi0gICAgd2hp bGUgKGJ1cyAmJiBidXMtPmJ1c19udW0gIT0gYnVzX251bSkKLSAgICAgICAgYnVzID0gYnVzLT5u ZXh0OwotICAgIGlmIChidXMpIHsKLSAgICAgICAgZm9yKGRldmZuID0gMDsgZGV2Zm4gPCAyNTY7 IGRldmZuKyspIHsKLSAgICAgICAgICAgIGQgPSBidXMtPmRldmljZXNbZGV2Zm5dOwotICAgICAg ICAgICAgaWYgKGQpCi0gICAgICAgICAgICAgICAgZm4oZCk7Ci0gICAgICAgIH0KLSAgICB9Ci19 CisgICAgUENJQnVzICpidXMgPSBvcGFxdWU7CiAKLXZvaWQgcGNpX2luZm8oTW9uaXRvciAqbW9u KQotewotICAgIHBjaV9mb3JfZWFjaF9kZXZpY2UoMCwgcGNpX2luZm9fZGV2aWNlKTsKKyAgICBw Y2lfYnVzX2Zvcl9lYWNoX2RldmljZShidXMsIHBjaV9pbmZvX2RldmljZSwgbW9uKTsKIH0KIAog UENJRGV2aWNlICpwY2lfY3JlYXRlKGNvbnN0IGNoYXIgKm5hbWUsIGNvbnN0IGNoYXIgKmRldmFk ZHIpCmRpZmYgLS1naXQgYS9ody9wY2kuaCBiL2h3L3BjaS5oCmluZGV4IGZkMWQzNWMuLmEzZTdi YTkgMTAwNjQ0Ci0tLSBhL2h3L3BjaS5oCisrKyBiL2h3L3BjaS5oCkBAIC0yNTAsMTQgKzI1MCwx MiBAQCBQQ0lEZXZpY2UgKnBjaV9uaWNfaW5pdChOSUNJbmZvICpuZCwgY29uc3QgY2hhciAqZGVm YXVsdF9tb2RlbCwKIHZvaWQgcGNpX2RhdGFfd3JpdGUodm9pZCAqb3BhcXVlLCB1aW50MzJfdCBh ZGRyLCB1aW50MzJfdCB2YWwsIGludCBsZW4pOwogdWludDMyX3QgcGNpX2RhdGFfcmVhZCh2b2lk ICpvcGFxdWUsIHVpbnQzMl90IGFkZHIsIGludCBsZW4pOwogaW50IHBjaV9idXNfbnVtKFBDSUJ1 cyAqcyk7Ci12b2lkIHBjaV9mb3JfZWFjaF9kZXZpY2UoaW50IGJ1c19udW0sIHZvaWQgKCpmbiko UENJRGV2aWNlICpkKSk7CiBQQ0lCdXMgKnBjaV9maW5kX2J1cyhpbnQgYnVzX251bSk7CiBQQ0lE ZXZpY2UgKnBjaV9maW5kX2RldmljZShpbnQgYnVzX251bSwgaW50IHNsb3QsIGludCBmdW5jdGlv bik7CiAKIGludCBwY2lfcmVhZF9kZXZhZGRyKE1vbml0b3IgKm1vbiwgY29uc3QgY2hhciAqYWRk ciwgaW50ICpkb21wLCBpbnQgKmJ1c3AsCiAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCAq c2xvdHApOwogCi12b2lkIHBjaV9pbmZvKE1vbml0b3IgKm1vbik7CiBQQ0lCdXMgKnBjaV9icmlk Z2VfaW5pdChQQ0lCdXMgKmJ1cywgaW50IGRldmZuLCB1aW50MTZfdCB2aWQsIHVpbnQxNl90IGRp ZCwKICAgICAgICAgICAgICAgICAgICAgICAgIHBjaV9tYXBfaXJxX2ZuIG1hcF9pcnEsIGNvbnN0 IGNoYXIgKm5hbWUpOwogCmRpZmYgLS1naXQgYS9tb25pdG9yLmMgYi9tb25pdG9yLmMKaW5kZXgg ZDViMzllYi4uNGY1MDdmMiAxMDA2NDQKLS0tIGEvbW9uaXRvci5jCisrKyBiL21vbml0b3IuYwpA QCAtMTc5OSw4ICsxNzk5LDYgQEAgc3RhdGljIGNvbnN0IG1vbl9jbWRfdCBpbmZvX2NtZHNbXSA9 IHsKICAgICAgICIiLCAic2hvdyBpbmZvcyBmb3IgZWFjaCBDUFUiIH0sCiAgICAgeyAiaGlzdG9y eSIsICIiLCBkb19pbmZvX2hpc3RvcnksCiAgICAgICAiIiwgInNob3cgdGhlIGNvbW1hbmQgbGlu ZSBoaXN0b3J5IiwgfSwKLSAgICB7ICJwY2kiLCAiIiwgcGNpX2luZm8sCi0gICAgICAiIiwgInNo b3cgUENJIGluZm8iLCB9LAogI2lmIGRlZmluZWQoVEFSR0VUX0kzODYpIHx8IGRlZmluZWQoVEFS R0VUX1NINCkKICAgICB7ICJ0bGIiLCAiIiwgdGxiX2luZm8sCiAgICAgICAiIiwgInNob3cgdmly dHVhbCB0byBwaHlzaWNhbCBtZW1vcnkgbWFwcGluZ3MiLCB9LApkaWZmIC0tZ2l0IGEvcWVtdS1t b25pdG9yLmh4IGIvcWVtdS1tb25pdG9yLmh4CmluZGV4IDIwMjY5MjEuLjZhZDk2MGUgMTAwNjQ0 Ci0tLSBhL3FlbXUtbW9uaXRvci5oeAorKysgYi9xZW11LW1vbml0b3IuaHgKQEAgLTQ1LDggKzQ1 LDYgQEAgc2hvdyB0aGUgY3B1IHJlZ2lzdGVycwogc2hvdyBpbmZvcyBmb3IgZWFjaCBDUFUKIEBp dGVtIGluZm8gaGlzdG9yeQogc2hvdyB0aGUgY29tbWFuZCBsaW5lIGhpc3RvcnkKLUBpdGVtIGlu Zm8gcGNpCi1zaG93IGVtdWxhdGVkIFBDSSBkZXZpY2UgaW5mbwogQGl0ZW0gaW5mbyB0bGIKIHNo b3cgdmlydHVhbCB0byBwaHlzaWNhbCBtZW1vcnkgbWFwcGluZ3MgKGkzODYgb25seSkKIEBpdGVt IGluZm8gbWVtCi0tIAoxLjUuNi41Cgo= --00c09fc2bcc0882f1a04724859a8--