From: Glauber Costa <glommer@redhat.com> To: "Michael S. Tsirkin" <mst@redhat.com> Cc: Paul Brook <paul@codesourcery.com>, Avi Kivity <avi@redhat.com>, qemu-devel@nongnu.org, Carsten Otte <cotte@de.ibm.com>, kvm@vger.kernel.org, Rusty Russell <rusty@rustcorp.com.au>, virtualization@lists.linux-foundation.org, Christian Borntraeger <borntraeger@de.ibm.com>, Blue Swirl <blauwirbel@gmail.com>, Anthony Liguori <anthony@codemonkey.ws> Subject: Re: [Qemu-devel] [PATCHv3 03/13] qemu: add routines to manage PCI capabilities Date: Tue, 9 Jun 2009 14:11:14 -0300 [thread overview] Message-ID: <20090609171114.GS11966@poweredge.glommer> (raw) In-Reply-To: <20090605102315.GD26770@redhat.com> On Fri, Jun 05, 2009 at 01:23:15PM +0300, Michael S. Tsirkin wrote: > Add routines to manage PCI capability list. First user will be MSI-X. > > Signed-off-by: Michael S. Tsirkin <mst@redhat.com> > --- > hw/pci.c | 98 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++------ > hw/pci.h | 18 +++++++++++- > 2 files changed, 106 insertions(+), 10 deletions(-) > > diff --git a/hw/pci.c b/hw/pci.c > index 361d741..ed011b5 100644 > --- a/hw/pci.c > +++ b/hw/pci.c > @@ -130,12 +130,13 @@ void pci_device_save(PCIDevice *s, QEMUFile *f) > int version = s->cap_present ? 3 : 2; > int i; > > - qemu_put_be32(f, version); /* PCI device version */ > + /* PCI device version and capabilities */ > + qemu_put_be32(f, version); > + if (version >= 3) > + qemu_put_be32(f, s->cap_present); > qemu_put_buffer(f, s->config, 256); > for (i = 0; i < 4; i++) > qemu_put_be32(f, s->irq_state[i]); > - if (version >= 3) > - qemu_put_be32(f, s->cap_present); > } What is it doing here? You should just do it right in the first patch, instead of doing in one way there, and fixing here. > > int pci_device_load(PCIDevice *s, QEMUFile *f) > @@ -146,12 +147,6 @@ int pci_device_load(PCIDevice *s, QEMUFile *f) > version_id = qemu_get_be32(f); > if (version_id > 3) > return -EINVAL; > - qemu_get_buffer(f, s->config, 256); > - pci_update_mappings(s); > - > - if (version_id >= 2) > - for (i = 0; i < 4; i ++) > - s->irq_state[i] = qemu_get_be32(f); > if (version_id >= 3) > s->cap_present = qemu_get_be32(f); > else ditto. > @@ -160,6 +155,18 @@ int pci_device_load(PCIDevice *s, QEMUFile *f) > if (s->cap_present & ~s->cap_supported) > return -EINVAL; > > + qemu_get_buffer(f, s->config, 256); > + pci_update_mappings(s); > + > + if (version_id >= 2) > + for (i = 0; i < 4; i ++) > + s->irq_state[i] = qemu_get_be32(f); > + /* Clear wmask and used bits for capabilities. > + Must be restored separately, since capabilities can > + be placed anywhere in config space. */ > + memset(s->used, 0, PCI_CONFIG_SPACE_SIZE); > + for (i = PCI_CONFIG_HEADER_SIZE; i < PCI_CONFIG_SPACE_SIZE; ++i) > + s->wmask[i] = 0xff; > return 0; > } Sorry, I don't exactly understand it. Although it can be anywhere, what do we actually lose by keeping it at the same place in config space? > > @@ -870,3 +877,76 @@ PCIDevice *pci_create_simple(PCIBus *bus, int devfn, const char *name) > > return (PCIDevice *)dev; > } > + > +static int pci_find_space(PCIDevice *pdev, uint8_t size) > +{ > + int offset = PCI_CONFIG_HEADER_SIZE; > + int i; > + for (i = PCI_CONFIG_HEADER_SIZE; i < PCI_CONFIG_SPACE_SIZE; ++i) > + if (pdev->used[i]) > + offset = i + 1; > + else if (i - offset + 1 == size) > + return offset; > + return 0; > +} > + > +static uint8_t pci_find_capability_list(PCIDevice *pdev, uint8_t cap_id, > + uint8_t *prev_p) > +{ > + uint8_t next, prev; > + > + if (!(pdev->config[PCI_STATUS] & PCI_STATUS_CAP_LIST)) > + return 0; > + > + for (prev = PCI_CAPABILITY_LIST; (next = pdev->config[prev]); > + prev = next + PCI_CAP_LIST_NEXT) > + if (pdev->config[next + PCI_CAP_LIST_ID] == cap_id) > + break; > + > + *prev_p = prev; > + return next; > +} I'd prefer to do: if (prev_p) *prev_p = prev; so we don't have to always pass a prev_p pointer. You have yourself a user where you don't need it in this very patch. > + > +/* Reserve space and add capability to the linked list in pci config space */ > +int pci_add_capability(PCIDevice *pdev, uint8_t cap_id, uint8_t size) > +{ > + uint8_t offset = pci_find_space(pdev, size); > + uint8_t *config = pdev->config + offset; > + if (!offset) > + return -ENOSPC; > + config[PCI_CAP_LIST_ID] = cap_id; > + config[PCI_CAP_LIST_NEXT] = pdev->config[PCI_CAPABILITY_LIST]; > + pdev->config[PCI_CAPABILITY_LIST] = offset; > + pdev->config[PCI_STATUS] |= PCI_STATUS_CAP_LIST; > + memset(pdev->used + offset, 0xFF, size); > + /* Make capability read-only by default */ > + memset(pdev->wmask + offset, 0, size); > + return offset; > +} > + > +/* Unlink capability from the pci config space. */ > +void pci_del_capability(PCIDevice *pdev, uint8_t cap_id, uint8_t size) > +{ > + uint8_t prev, offset = pci_find_capability_list(pdev, cap_id, &prev); > + if (!offset) > + return; > + pdev->config[prev] = pdev->config[offset + PCI_CAP_LIST_NEXT]; > + /* Make capability writeable again */ > + memset(pdev->wmask + offset, 0xff, size); > + memset(pdev->used + offset, 0, size); > + > + if (!pdev->config[PCI_CAPABILITY_LIST]) > + pdev->config[PCI_STATUS] &= ~PCI_STATUS_CAP_LIST; > +} > + > +/* Reserve space for capability at a known offset (to call after load). */ > +void pci_reserve_capability(PCIDevice *pdev, uint8_t offset, uint8_t size) > +{ > + memset(pdev->used + offset, 0xff, size); > +} > + > +uint8_t pci_find_capability(PCIDevice *pdev, uint8_t cap_id) > +{ > + uint8_t prev; > + return pci_find_capability_list(pdev, cap_id, &prev); > +} > diff --git a/hw/pci.h b/hw/pci.h > index 6f0803f..4838c59 100644 > --- a/hw/pci.h > +++ b/hw/pci.h > @@ -123,6 +123,10 @@ typedef struct PCIIORegion { > #define PCI_MIN_GNT 0x3e /* 8 bits */ > #define PCI_MAX_LAT 0x3f /* 8 bits */ > > +/* Capability lists */ > +#define PCI_CAP_LIST_ID 0 /* Capability ID */ > +#define PCI_CAP_LIST_NEXT 1 /* Next capability in the list */ > + > #define PCI_REVISION 0x08 /* obsolete, use PCI_REVISION_ID */ > #define PCI_SUBVENDOR_ID 0x2c /* obsolete, use PCI_SUBSYSTEM_VENDOR_ID */ > #define PCI_SUBDEVICE_ID 0x2e /* obsolete, use PCI_SUBSYSTEM_ID */ > @@ -130,7 +134,7 @@ typedef struct PCIIORegion { > /* Bits in the PCI Status Register (PCI 2.3 spec) */ > #define PCI_STATUS_RESERVED1 0x007 > #define PCI_STATUS_INT_STATUS 0x008 > -#define PCI_STATUS_CAPABILITIES 0x010 > +#define PCI_STATUS_CAP_LIST 0x010 > #define PCI_STATUS_66MHZ 0x020 > #define PCI_STATUS_RESERVED2 0x040 > #define PCI_STATUS_FAST_BACK 0x080 > @@ -160,6 +164,9 @@ struct PCIDevice { > /* Used to implement R/W bytes */ > uint8_t wmask[PCI_CONFIG_SPACE_SIZE]; > > + /* Used to allocate config space for capabilities. */ > + uint8_t used[PCI_CONFIG_SPACE_SIZE]; > + > /* the following fields are read only */ > PCIBus *bus; > int devfn; > @@ -194,6 +201,15 @@ void pci_register_io_region(PCIDevice *pci_dev, int region_num, > uint32_t size, int type, > PCIMapIORegionFunc *map_func); > > +int pci_add_capability(PCIDevice *pci_dev, uint8_t cap_id, uint8_t cap_size); > + > +void pci_del_capability(PCIDevice *pci_dev, uint8_t cap_id, uint8_t cap_size); > + > +void pci_reserve_capability(PCIDevice *pci_dev, uint8_t offset, uint8_t size); > + > +uint8_t pci_find_capability(PCIDevice *pci_dev, uint8_t cap_id); > + > + > uint32_t pci_default_read_config(PCIDevice *d, > uint32_t address, int len); > void pci_default_write_config(PCIDevice *d, > -- > 1.6.3.1.56.g79e1.dirty > > >
WARNING: multiple messages have this Message-ID (diff)
From: Glauber Costa <glommer@redhat.com> To: "Michael S. Tsirkin" <mst@redhat.com> Cc: Carsten Otte <cotte@de.ibm.com>, kvm@vger.kernel.org, Rusty Russell <rusty@rustcorp.com.au>, qemu-devel@nongnu.org, virtualization@lists.linux-foundation.org, Blue Swirl <blauwirbel@gmail.com>, Christian Borntraeger <borntraeger@de.ibm.com>, Paul Brook <paul@codesourcery.com>, Avi Kivity <avi@redhat.com> Subject: Re: [Qemu-devel] [PATCHv3 03/13] qemu: add routines to manage PCI capabilities Date: Tue, 9 Jun 2009 14:11:14 -0300 [thread overview] Message-ID: <20090609171114.GS11966@poweredge.glommer> (raw) In-Reply-To: <20090605102315.GD26770@redhat.com> On Fri, Jun 05, 2009 at 01:23:15PM +0300, Michael S. Tsirkin wrote: > Add routines to manage PCI capability list. First user will be MSI-X. > > Signed-off-by: Michael S. Tsirkin <mst@redhat.com> > --- > hw/pci.c | 98 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++------ > hw/pci.h | 18 +++++++++++- > 2 files changed, 106 insertions(+), 10 deletions(-) > > diff --git a/hw/pci.c b/hw/pci.c > index 361d741..ed011b5 100644 > --- a/hw/pci.c > +++ b/hw/pci.c > @@ -130,12 +130,13 @@ void pci_device_save(PCIDevice *s, QEMUFile *f) > int version = s->cap_present ? 3 : 2; > int i; > > - qemu_put_be32(f, version); /* PCI device version */ > + /* PCI device version and capabilities */ > + qemu_put_be32(f, version); > + if (version >= 3) > + qemu_put_be32(f, s->cap_present); > qemu_put_buffer(f, s->config, 256); > for (i = 0; i < 4; i++) > qemu_put_be32(f, s->irq_state[i]); > - if (version >= 3) > - qemu_put_be32(f, s->cap_present); > } What is it doing here? You should just do it right in the first patch, instead of doing in one way there, and fixing here. > > int pci_device_load(PCIDevice *s, QEMUFile *f) > @@ -146,12 +147,6 @@ int pci_device_load(PCIDevice *s, QEMUFile *f) > version_id = qemu_get_be32(f); > if (version_id > 3) > return -EINVAL; > - qemu_get_buffer(f, s->config, 256); > - pci_update_mappings(s); > - > - if (version_id >= 2) > - for (i = 0; i < 4; i ++) > - s->irq_state[i] = qemu_get_be32(f); > if (version_id >= 3) > s->cap_present = qemu_get_be32(f); > else ditto. > @@ -160,6 +155,18 @@ int pci_device_load(PCIDevice *s, QEMUFile *f) > if (s->cap_present & ~s->cap_supported) > return -EINVAL; > > + qemu_get_buffer(f, s->config, 256); > + pci_update_mappings(s); > + > + if (version_id >= 2) > + for (i = 0; i < 4; i ++) > + s->irq_state[i] = qemu_get_be32(f); > + /* Clear wmask and used bits for capabilities. > + Must be restored separately, since capabilities can > + be placed anywhere in config space. */ > + memset(s->used, 0, PCI_CONFIG_SPACE_SIZE); > + for (i = PCI_CONFIG_HEADER_SIZE; i < PCI_CONFIG_SPACE_SIZE; ++i) > + s->wmask[i] = 0xff; > return 0; > } Sorry, I don't exactly understand it. Although it can be anywhere, what do we actually lose by keeping it at the same place in config space? > > @@ -870,3 +877,76 @@ PCIDevice *pci_create_simple(PCIBus *bus, int devfn, const char *name) > > return (PCIDevice *)dev; > } > + > +static int pci_find_space(PCIDevice *pdev, uint8_t size) > +{ > + int offset = PCI_CONFIG_HEADER_SIZE; > + int i; > + for (i = PCI_CONFIG_HEADER_SIZE; i < PCI_CONFIG_SPACE_SIZE; ++i) > + if (pdev->used[i]) > + offset = i + 1; > + else if (i - offset + 1 == size) > + return offset; > + return 0; > +} > + > +static uint8_t pci_find_capability_list(PCIDevice *pdev, uint8_t cap_id, > + uint8_t *prev_p) > +{ > + uint8_t next, prev; > + > + if (!(pdev->config[PCI_STATUS] & PCI_STATUS_CAP_LIST)) > + return 0; > + > + for (prev = PCI_CAPABILITY_LIST; (next = pdev->config[prev]); > + prev = next + PCI_CAP_LIST_NEXT) > + if (pdev->config[next + PCI_CAP_LIST_ID] == cap_id) > + break; > + > + *prev_p = prev; > + return next; > +} I'd prefer to do: if (prev_p) *prev_p = prev; so we don't have to always pass a prev_p pointer. You have yourself a user where you don't need it in this very patch. > + > +/* Reserve space and add capability to the linked list in pci config space */ > +int pci_add_capability(PCIDevice *pdev, uint8_t cap_id, uint8_t size) > +{ > + uint8_t offset = pci_find_space(pdev, size); > + uint8_t *config = pdev->config + offset; > + if (!offset) > + return -ENOSPC; > + config[PCI_CAP_LIST_ID] = cap_id; > + config[PCI_CAP_LIST_NEXT] = pdev->config[PCI_CAPABILITY_LIST]; > + pdev->config[PCI_CAPABILITY_LIST] = offset; > + pdev->config[PCI_STATUS] |= PCI_STATUS_CAP_LIST; > + memset(pdev->used + offset, 0xFF, size); > + /* Make capability read-only by default */ > + memset(pdev->wmask + offset, 0, size); > + return offset; > +} > + > +/* Unlink capability from the pci config space. */ > +void pci_del_capability(PCIDevice *pdev, uint8_t cap_id, uint8_t size) > +{ > + uint8_t prev, offset = pci_find_capability_list(pdev, cap_id, &prev); > + if (!offset) > + return; > + pdev->config[prev] = pdev->config[offset + PCI_CAP_LIST_NEXT]; > + /* Make capability writeable again */ > + memset(pdev->wmask + offset, 0xff, size); > + memset(pdev->used + offset, 0, size); > + > + if (!pdev->config[PCI_CAPABILITY_LIST]) > + pdev->config[PCI_STATUS] &= ~PCI_STATUS_CAP_LIST; > +} > + > +/* Reserve space for capability at a known offset (to call after load). */ > +void pci_reserve_capability(PCIDevice *pdev, uint8_t offset, uint8_t size) > +{ > + memset(pdev->used + offset, 0xff, size); > +} > + > +uint8_t pci_find_capability(PCIDevice *pdev, uint8_t cap_id) > +{ > + uint8_t prev; > + return pci_find_capability_list(pdev, cap_id, &prev); > +} > diff --git a/hw/pci.h b/hw/pci.h > index 6f0803f..4838c59 100644 > --- a/hw/pci.h > +++ b/hw/pci.h > @@ -123,6 +123,10 @@ typedef struct PCIIORegion { > #define PCI_MIN_GNT 0x3e /* 8 bits */ > #define PCI_MAX_LAT 0x3f /* 8 bits */ > > +/* Capability lists */ > +#define PCI_CAP_LIST_ID 0 /* Capability ID */ > +#define PCI_CAP_LIST_NEXT 1 /* Next capability in the list */ > + > #define PCI_REVISION 0x08 /* obsolete, use PCI_REVISION_ID */ > #define PCI_SUBVENDOR_ID 0x2c /* obsolete, use PCI_SUBSYSTEM_VENDOR_ID */ > #define PCI_SUBDEVICE_ID 0x2e /* obsolete, use PCI_SUBSYSTEM_ID */ > @@ -130,7 +134,7 @@ typedef struct PCIIORegion { > /* Bits in the PCI Status Register (PCI 2.3 spec) */ > #define PCI_STATUS_RESERVED1 0x007 > #define PCI_STATUS_INT_STATUS 0x008 > -#define PCI_STATUS_CAPABILITIES 0x010 > +#define PCI_STATUS_CAP_LIST 0x010 > #define PCI_STATUS_66MHZ 0x020 > #define PCI_STATUS_RESERVED2 0x040 > #define PCI_STATUS_FAST_BACK 0x080 > @@ -160,6 +164,9 @@ struct PCIDevice { > /* Used to implement R/W bytes */ > uint8_t wmask[PCI_CONFIG_SPACE_SIZE]; > > + /* Used to allocate config space for capabilities. */ > + uint8_t used[PCI_CONFIG_SPACE_SIZE]; > + > /* the following fields are read only */ > PCIBus *bus; > int devfn; > @@ -194,6 +201,15 @@ void pci_register_io_region(PCIDevice *pci_dev, int region_num, > uint32_t size, int type, > PCIMapIORegionFunc *map_func); > > +int pci_add_capability(PCIDevice *pci_dev, uint8_t cap_id, uint8_t cap_size); > + > +void pci_del_capability(PCIDevice *pci_dev, uint8_t cap_id, uint8_t cap_size); > + > +void pci_reserve_capability(PCIDevice *pci_dev, uint8_t offset, uint8_t size); > + > +uint8_t pci_find_capability(PCIDevice *pci_dev, uint8_t cap_id); > + > + > uint32_t pci_default_read_config(PCIDevice *d, > uint32_t address, int len); > void pci_default_write_config(PCIDevice *d, > -- > 1.6.3.1.56.g79e1.dirty > > >
next prev parent reply other threads:[~2009-06-09 17:07 UTC|newest] Thread overview: 457+ messages / expand[flat|nested] mbox.gz Atom feed top [not found] <cover.1244192535.git.mst@redhat.com> 2009-06-05 10:22 ` [PATCHv3 01/13] qemu: make default_write_config use mask table Michael S. Tsirkin 2009-06-05 10:22 ` Michael S. Tsirkin 2009-06-05 10:22 ` [Qemu-devel] " Michael S. Tsirkin 2009-06-05 10:23 ` [PATCHv3 02/13] qemu: capability bits in pci save/restore Michael S. Tsirkin 2009-06-05 10:23 ` Michael S. Tsirkin 2009-06-05 10:23 ` [Qemu-devel] " Michael S. Tsirkin 2009-06-05 10:23 ` [PATCHv3 03/13] qemu: add routines to manage PCI capabilities Michael S. Tsirkin 2009-06-05 10:23 ` [Qemu-devel] " Michael S. Tsirkin 2009-06-09 17:11 ` Glauber Costa [this message] 2009-06-09 17:11 ` Glauber Costa 2009-06-10 9:54 ` Michael S. Tsirkin 2009-06-10 9:54 ` Michael S. Tsirkin 2009-06-10 9:54 ` Michael S. Tsirkin 2009-06-10 14:55 ` Glauber Costa 2009-06-10 14:55 ` Glauber Costa 2009-06-10 15:01 ` Michael S. Tsirkin 2009-06-10 15:01 ` Michael S. Tsirkin 2009-06-10 15:01 ` Michael S. Tsirkin 2009-06-10 15:24 ` Paul Brook 2009-06-10 15:24 ` Paul Brook 2009-06-10 15:50 ` Michael S. Tsirkin 2009-06-10 15:50 ` Michael S. Tsirkin 2009-06-10 15:50 ` Michael S. Tsirkin 2009-06-10 17:43 ` Jamie Lokier 2009-06-10 17:43 ` Jamie Lokier 2009-06-10 18:22 ` Michael S. Tsirkin 2009-06-10 18:22 ` Michael S. Tsirkin 2009-06-10 19:27 ` Jamie Lokier 2009-06-10 19:27 ` Jamie Lokier 2009-06-12 8:43 ` Configuration vs. compat hints [was Re: [Qemu-devel] [PATCHv3 03/13] qemu: add routines to manage PCI capabilities] Mark McLoughlin 2009-06-12 8:43 ` Mark McLoughlin 2009-06-12 8:43 ` Mark McLoughlin 2009-06-12 13:59 ` Michael S. Tsirkin 2009-06-12 13:59 ` Michael S. Tsirkin 2009-06-12 14:48 ` Mark McLoughlin 2009-06-12 14:48 ` Mark McLoughlin 2009-06-12 14:48 ` Mark McLoughlin 2009-06-12 13:59 ` Michael S. Tsirkin 2009-06-12 14:51 ` Anthony Liguori 2009-06-12 14:51 ` Anthony Liguori 2009-06-12 14:51 ` Anthony Liguori 2009-06-12 15:41 ` Mark McLoughlin 2009-06-12 15:41 ` Mark McLoughlin 2009-06-12 16:11 ` Anthony Liguori 2009-06-12 16:11 ` Anthony Liguori 2009-06-12 16:11 ` Anthony Liguori 2009-06-12 16:48 ` Mark McLoughlin 2009-06-12 16:48 ` Mark McLoughlin 2009-06-12 16:48 ` Mark McLoughlin 2009-06-12 17:00 ` Anthony Liguori 2009-06-12 17:00 ` Anthony Liguori 2009-06-12 17:00 ` Anthony Liguori 2009-06-12 17:31 ` Mark McLoughlin 2009-06-12 17:31 ` Mark McLoughlin 2009-06-12 17:44 ` Blue Swirl 2009-06-12 17:44 ` Blue Swirl 2009-06-12 17:44 ` Blue Swirl 2009-06-12 17:55 ` Mark McLoughlin 2009-06-12 17:55 ` Mark McLoughlin 2009-06-12 17:55 ` Mark McLoughlin 2009-06-16 18:38 ` Jamie Lokier 2009-06-16 18:38 ` Jamie Lokier 2009-06-16 18:38 ` Jamie Lokier 2009-06-12 17:31 ` Mark McLoughlin 2009-06-14 9:50 ` Michael S. Tsirkin 2009-06-14 9:50 ` Michael S. Tsirkin 2009-06-15 9:08 ` Mark McLoughlin 2009-06-15 9:08 ` Mark McLoughlin 2009-06-15 9:08 ` Mark McLoughlin 2009-06-15 9:27 ` Avi Kivity 2009-06-15 9:27 ` Avi Kivity 2009-06-15 10:32 ` Michael S. Tsirkin 2009-06-15 10:32 ` Michael S. Tsirkin 2009-06-15 10:44 ` Gleb Natapov 2009-06-15 10:44 ` Gleb Natapov 2009-06-15 10:44 ` Gleb Natapov 2009-06-15 10:46 ` Michael S. Tsirkin 2009-06-15 10:46 ` Michael S. Tsirkin 2009-06-15 10:52 ` Gleb Natapov 2009-06-15 10:52 ` Gleb Natapov 2009-06-15 11:07 ` Michael S. Tsirkin 2009-06-15 11:07 ` Michael S. Tsirkin 2009-06-15 11:07 ` Michael S. Tsirkin 2009-06-15 11:14 ` Gleb Natapov 2009-06-15 11:14 ` Gleb Natapov 2009-06-15 11:14 ` Gleb Natapov 2009-06-15 11:34 ` Michael S. Tsirkin 2009-06-15 11:34 ` Michael S. Tsirkin 2009-06-15 11:34 ` Michael S. Tsirkin 2009-06-15 10:52 ` Gleb Natapov 2009-06-15 10:46 ` Michael S. Tsirkin 2009-06-15 11:27 ` Avi Kivity 2009-06-15 11:27 ` Avi Kivity 2009-06-15 11:27 ` Avi Kivity 2009-06-15 11:48 ` Michael S. Tsirkin 2009-06-15 11:48 ` Michael S. Tsirkin 2009-06-15 11:48 ` Michael S. Tsirkin 2009-06-15 11:56 ` Avi Kivity 2009-06-15 11:56 ` Avi Kivity 2009-06-15 11:56 ` Avi Kivity 2009-06-15 12:41 ` Michael S. Tsirkin 2009-06-15 12:41 ` Michael S. Tsirkin 2009-06-15 12:50 ` Avi Kivity 2009-06-15 12:50 ` Avi Kivity 2009-06-15 12:50 ` Avi Kivity 2009-06-15 12:52 ` Anthony Liguori 2009-06-15 12:52 ` Anthony Liguori 2009-06-15 12:52 ` Anthony Liguori 2009-06-15 13:09 ` Avi Kivity 2009-06-15 13:09 ` Avi Kivity 2009-06-15 13:09 ` Avi Kivity 2009-06-15 13:23 ` Anthony Liguori 2009-06-15 13:23 ` Anthony Liguori 2009-06-15 13:42 ` Avi Kivity 2009-06-15 13:42 ` Avi Kivity 2009-06-15 13:42 ` Avi Kivity 2009-06-15 13:51 ` Anthony Liguori 2009-06-15 13:51 ` Anthony Liguori 2009-06-15 14:06 ` Dor Laor 2009-06-15 14:06 ` Dor Laor 2009-06-15 14:06 ` Dor Laor 2009-06-15 14:24 ` Anthony Liguori 2009-06-15 14:24 ` Anthony Liguori 2009-06-15 14:37 ` Michael S. Tsirkin 2009-06-15 14:37 ` Michael S. Tsirkin 2009-06-15 15:03 ` Anthony Liguori 2009-06-15 15:03 ` Anthony Liguori 2009-06-15 15:03 ` Anthony Liguori 2009-06-15 15:08 ` Daniel P. Berrange 2009-06-15 15:08 ` Daniel P. Berrange 2009-06-15 15:08 ` Daniel P. Berrange 2009-06-15 15:12 ` Dor Laor 2009-06-15 15:12 ` Dor Laor 2009-06-15 15:12 ` Dor Laor 2009-06-15 15:15 ` Avi Kivity 2009-06-15 15:15 ` Avi Kivity 2009-06-15 15:15 ` Avi Kivity 2009-06-16 18:32 ` Jamie Lokier 2009-06-16 18:32 ` Jamie Lokier 2009-06-17 6:38 ` Avi Kivity 2009-06-17 6:38 ` Avi Kivity 2009-06-17 11:51 ` Jamie Lokier 2009-06-17 11:51 ` Jamie Lokier 2009-06-17 11:51 ` Jamie Lokier 2009-06-17 6:38 ` Avi Kivity 2009-06-16 18:32 ` Jamie Lokier 2009-06-15 16:27 ` Mark McLoughlin 2009-06-15 16:27 ` Mark McLoughlin 2009-06-15 16:27 ` Mark McLoughlin 2009-06-15 17:13 ` Avi Kivity 2009-06-15 17:13 ` Avi Kivity 2009-06-15 14:37 ` Michael S. Tsirkin 2009-06-15 15:05 ` Avi Kivity 2009-06-15 15:05 ` Avi Kivity 2009-06-15 15:05 ` Avi Kivity 2009-06-15 15:11 ` Anthony Liguori 2009-06-15 15:11 ` Anthony Liguori 2009-06-15 15:11 ` Anthony Liguori 2009-06-15 16:27 ` Mark McLoughlin 2009-06-15 16:27 ` Mark McLoughlin 2009-06-15 17:09 ` Avi Kivity 2009-06-15 17:09 ` Avi Kivity 2009-06-15 18:12 ` Anthony Liguori 2009-06-15 18:12 ` Anthony Liguori 2009-06-15 18:21 ` Avi Kivity 2009-06-15 18:21 ` Avi Kivity 2009-06-15 18:24 ` Anthony Liguori 2009-06-15 18:24 ` Anthony Liguori 2009-06-15 18:24 ` Anthony Liguori 2009-06-15 18:44 ` Blue Swirl 2009-06-15 18:44 ` Blue Swirl 2009-06-16 8:56 ` Avi Kivity 2009-06-16 8:56 ` Avi Kivity 2009-06-16 8:56 ` Avi Kivity 2009-06-15 18:21 ` Avi Kivity 2009-06-16 12:14 ` Mark McLoughlin 2009-06-16 12:14 ` Mark McLoughlin 2009-06-16 12:14 ` Mark McLoughlin 2009-06-16 12:28 ` Avi Kivity 2009-06-16 12:28 ` Avi Kivity 2009-06-16 12:39 ` Mark McLoughlin 2009-06-16 12:39 ` Mark McLoughlin 2009-06-16 12:39 ` Mark McLoughlin 2009-06-16 12:51 ` Avi Kivity 2009-06-16 12:51 ` Avi Kivity 2009-06-16 12:51 ` Avi Kivity 2009-06-16 18:44 ` Jamie Lokier 2009-06-16 18:44 ` Jamie Lokier 2009-06-17 8:33 ` Mark McLoughlin 2009-06-17 8:33 ` Mark McLoughlin 2009-06-17 9:03 ` Avi Kivity 2009-06-17 9:03 ` Avi Kivity 2009-06-17 9:03 ` Avi Kivity 2009-06-17 9:18 ` Mark McLoughlin 2009-06-17 9:18 ` Mark McLoughlin 2009-06-17 9:26 ` Avi Kivity 2009-06-17 9:26 ` Avi Kivity 2009-06-17 11:58 ` Jamie Lokier 2009-06-17 11:58 ` Jamie Lokier 2009-06-17 11:58 ` Jamie Lokier 2009-06-17 9:26 ` Avi Kivity 2009-06-17 9:18 ` Mark McLoughlin 2009-06-17 8:33 ` Mark McLoughlin 2009-06-16 18:44 ` Jamie Lokier 2009-06-24 8:04 ` Dietmar Maurer 2009-06-16 12:28 ` Avi Kivity 2009-07-07 11:08 ` [Qemu-devel] [PATCH 0/3] Change virtio blk/console PCI classes and introduce compat machine type [was Re: Configuration vs. compat hints] Mark McLoughlin 2009-07-07 11:09 ` [Qemu-devel] [PATCH 1/3] Change default PCI class of virtio-blk to PCI_CLASS_STORAGE_SCSI Mark McLoughlin 2009-07-07 11:09 ` [Qemu-devel] [PATCH 2/3] Change default PCI class of virtio-console to PCI_CLASS_SERIAL_OTHER Mark McLoughlin 2009-07-07 11:10 ` [Qemu-devel] [PATCH 3/3] Add a pc-0-10 machine type for compatibility with 0.10.x Mark McLoughlin 2009-07-07 12:01 ` Avi Kivity 2009-07-08 10:46 ` Mark McLoughlin 2009-07-08 10:48 ` [Qemu-devel] [PATCH 3/3 v2] " Mark McLoughlin 2009-07-08 13:00 ` Gerd Hoffmann 2009-07-08 13:44 ` Anthony Liguori 2009-07-08 14:09 ` Gerd Hoffmann 2009-07-08 15:08 ` Mark McLoughlin 2009-07-08 19:07 ` Gerd Hoffmann 2009-07-08 21:45 ` Anthony Liguori 2009-07-09 7:56 ` Gerd Hoffmann 2009-07-09 8:39 ` Mark McLoughlin 2009-07-09 8:50 ` Avi Kivity 2009-07-09 8:57 ` Mark McLoughlin 2009-07-09 9:04 ` Avi Kivity 2009-07-09 9:05 ` Gerd Hoffmann 2009-07-09 10:01 ` Gerd Hoffmann 2009-07-09 13:31 ` Mark McLoughlin 2009-07-09 13:47 ` Gerd Hoffmann 2009-07-09 13:35 ` Anthony Liguori 2009-07-09 13:55 ` Gerd Hoffmann 2009-07-09 16:09 ` Paul Brook 2009-07-09 11:51 ` Avi Kivity 2009-07-09 13:29 ` Anthony Liguori 2009-07-09 13:59 ` Avi Kivity 2009-07-09 15:00 ` Anthony Liguori 2009-07-21 14:21 ` [Qemu-devel] [PATCH 0/4] Add pc-0.11 machine type and make pc an alias to it Mark McLoughlin 2009-07-21 14:21 ` [Qemu-devel] [PATCH 1/4] Remove the pc-0-10 machine type Mark McLoughlin 2009-07-21 14:49 ` Mark McLoughlin 2009-07-22 2:14 ` Anthony Liguori 2009-07-22 8:56 ` Gerd Hoffmann 2009-07-22 9:05 ` Mark McLoughlin 2009-07-22 9:02 ` Mark McLoughlin 2009-07-22 9:02 ` [Qemu-devel] [PATCH 1/2] Add machine type aliases Mark McLoughlin 2009-07-22 9:02 ` [Qemu-devel] [PATCH 2/2] Add a pc-0.11 machine type and make the pc type an alias Mark McLoughlin 2009-07-23 13:34 ` Mark McLoughlin 2009-07-21 14:21 ` [Qemu-devel] [PATCH 2/4] Remove the virtio-{blk, console}-pci-0-10 device types Mark McLoughlin 2009-07-21 14:21 ` [Qemu-devel] [PATCH 3/4] Add machine type aliases Mark McLoughlin 2009-07-21 14:21 ` [Qemu-devel] [PATCH 4/4] Add a pc-0.11 machine type and make the pc type an alias Mark McLoughlin 2009-07-09 8:00 ` [Qemu-devel] [PATCH 3/3 v2] Add a pc-0-10 machine type for compatibility with 0.10.x Avi Kivity 2009-07-15 11:27 ` [Qemu-devel] [PATCH 2/3] Change default PCI class of virtio-console to PCI_CLASS_SERIAL_OTHER Amit Shah 2009-06-15 18:12 ` Configuration vs. compat hints [was Re: [Qemu-devel] [PATCHv3 03/13] qemu: add routines to manage PCI capabilities] Anthony Liguori 2009-06-15 16:27 ` Mark McLoughlin 2009-06-15 13:51 ` Anthony Liguori 2009-06-15 13:23 ` Anthony Liguori 2009-06-15 12:41 ` Michael S. Tsirkin 2009-06-15 10:32 ` Michael S. Tsirkin 2009-06-15 11:35 ` Configuration vs. compat hints Markus Armbruster 2009-06-15 11:35 ` [Qemu-devel] " Markus Armbruster 2009-06-15 11:43 ` Avi Kivity 2009-06-15 11:43 ` Avi Kivity 2009-06-15 11:43 ` [Qemu-devel] " Avi Kivity 2009-06-15 11:59 ` Stefano Stabellini 2009-06-15 11:59 ` Stefano Stabellini 2009-06-15 11:59 ` [Qemu-devel] " Stefano Stabellini 2009-06-15 12:41 ` Markus Armbruster 2009-06-15 12:41 ` Markus Armbruster 2009-06-15 12:50 ` Anthony Liguori 2009-06-15 12:50 ` Anthony Liguori 2009-06-15 12:50 ` Anthony Liguori 2009-06-15 14:23 ` Javier Guerra 2009-06-15 14:23 ` [Qemu-devel] " Javier Guerra 2009-06-15 14:23 ` Javier Guerra 2009-06-15 11:35 ` Markus Armbruster 2009-06-15 12:41 ` Configuration vs. compat hints [was Re: [Qemu-devel] [PATCHv3 03/13] qemu: add routines to manage PCI capabilities] Anthony Liguori 2009-06-15 12:41 ` Anthony Liguori 2009-06-15 12:55 ` Avi Kivity 2009-06-15 12:55 ` Avi Kivity 2009-06-15 12:55 ` Avi Kivity 2009-06-15 13:04 ` Configuration vs. compat hints Markus Armbruster 2009-06-15 13:04 ` Markus Armbruster 2009-06-15 13:04 ` [Qemu-devel] " Markus Armbruster 2009-06-15 12:41 ` Configuration vs. compat hints [was Re: [Qemu-devel] [PATCHv3 03/13] qemu: add routines to manage PCI capabilities] Anthony Liguori 2009-06-15 9:27 ` Avi Kivity 2009-06-15 9:43 ` Avi Kivity 2009-06-15 9:43 ` Avi Kivity 2009-06-15 9:43 ` Avi Kivity 2009-06-15 10:29 ` Michael S. Tsirkin 2009-06-15 10:29 ` Michael S. Tsirkin 2009-06-15 10:29 ` Michael S. Tsirkin 2009-06-15 12:45 ` Anthony Liguori 2009-06-15 12:45 ` Anthony Liguori 2009-06-15 13:03 ` Avi Kivity 2009-06-15 13:03 ` Avi Kivity 2009-06-15 13:20 ` Anthony Liguori 2009-06-15 13:20 ` Anthony Liguori 2009-06-15 13:35 ` Avi Kivity 2009-06-15 13:35 ` Avi Kivity 2009-06-15 13:35 ` Avi Kivity 2009-06-15 13:45 ` Anthony Liguori 2009-06-15 13:45 ` Anthony Liguori 2009-06-15 13:54 ` Avi Kivity 2009-06-15 13:54 ` Avi Kivity 2009-06-15 15:07 ` Anthony Liguori 2009-06-15 15:07 ` Anthony Liguori 2009-06-15 15:07 ` Anthony Liguori 2009-06-15 15:11 ` Avi Kivity 2009-06-15 15:11 ` Avi Kivity 2009-06-15 15:20 ` Anthony Liguori 2009-06-15 15:20 ` Anthony Liguori 2009-06-15 15:20 ` Anthony Liguori 2009-06-15 15:26 ` Avi Kivity 2009-06-15 15:26 ` Avi Kivity 2009-06-15 15:26 ` Avi Kivity 2009-06-15 15:11 ` Avi Kivity 2009-06-15 13:54 ` Avi Kivity 2009-06-15 13:45 ` Anthony Liguori 2009-06-15 13:20 ` Anthony Liguori 2009-06-15 13:03 ` Avi Kivity 2009-06-15 13:17 ` Gerd Hoffmann 2009-06-15 13:17 ` Gerd Hoffmann 2009-06-15 13:17 ` Gerd Hoffmann 2009-06-15 12:45 ` Anthony Liguori 2009-06-14 9:50 ` Michael S. Tsirkin 2009-06-12 15:41 ` Mark McLoughlin 2009-06-14 7:55 ` Avi Kivity 2009-06-14 7:55 ` Avi Kivity 2009-06-14 7:55 ` Avi Kivity 2009-06-12 14:55 ` Anthony Liguori 2009-06-12 14:55 ` Anthony Liguori 2009-06-12 15:53 ` Mark McLoughlin 2009-06-12 15:53 ` Mark McLoughlin 2009-06-12 16:12 ` Anthony Liguori 2009-06-12 16:12 ` Anthony Liguori 2009-06-12 16:12 ` Anthony Liguori 2009-06-12 16:48 ` Mark McLoughlin 2009-06-12 16:48 ` Mark McLoughlin 2009-06-12 16:48 ` Mark McLoughlin 2009-06-14 7:58 ` Avi Kivity 2009-06-14 7:58 ` Avi Kivity 2009-06-14 7:58 ` Avi Kivity 2009-06-15 5:32 ` Configuration vs. compat hints Markus Armbruster 2009-06-15 5:32 ` Markus Armbruster 2009-06-15 5:32 ` [Qemu-devel] " Markus Armbruster 2009-06-15 9:09 ` Configuration vs. compat hints [was Re: [Qemu-devel] [PATCHv3 03/13] qemu: add routines to manage PCI capabilities] Mark McLoughlin 2009-06-15 9:09 ` Mark McLoughlin 2009-06-15 11:32 ` Avi Kivity 2009-06-15 11:32 ` Avi Kivity 2009-06-15 11:32 ` Avi Kivity 2009-06-15 12:48 ` Anthony Liguori 2009-06-15 12:48 ` Anthony Liguori 2009-06-15 12:48 ` Anthony Liguori 2009-06-15 13:12 ` Avi Kivity 2009-06-15 13:12 ` Avi Kivity 2009-06-15 13:24 ` Anthony Liguori 2009-06-15 13:24 ` Anthony Liguori 2009-06-15 13:43 ` Avi Kivity 2009-06-15 13:43 ` Avi Kivity 2009-06-15 13:43 ` Avi Kivity 2009-06-15 13:24 ` Anthony Liguori 2009-06-15 13:12 ` Avi Kivity 2009-06-15 14:00 ` Mark McLoughlin 2009-06-15 14:00 ` Mark McLoughlin 2009-06-15 14:20 ` Anthony Liguori 2009-06-15 14:20 ` Anthony Liguori 2009-06-15 14:34 ` Michael S. Tsirkin 2009-06-15 14:34 ` Michael S. Tsirkin 2009-06-15 15:11 ` Anthony Liguori 2009-06-15 15:11 ` Anthony Liguori 2009-06-15 15:11 ` Anthony Liguori 2009-06-15 14:34 ` Michael S. Tsirkin 2009-06-15 14:20 ` Anthony Liguori 2009-06-15 14:00 ` Mark McLoughlin 2009-06-15 9:09 ` Mark McLoughlin 2009-06-14 9:34 ` Michael S. Tsirkin 2009-06-14 9:34 ` Michael S. Tsirkin 2009-06-14 9:34 ` Michael S. Tsirkin 2009-06-14 9:37 ` Avi Kivity 2009-06-14 9:37 ` Avi Kivity 2009-06-14 9:37 ` Avi Kivity 2009-06-14 9:47 ` Michael S. Tsirkin 2009-06-14 9:47 ` Michael S. Tsirkin 2009-06-15 9:38 ` Avi Kivity 2009-06-15 9:38 ` Avi Kivity 2009-06-15 9:38 ` Avi Kivity 2009-06-14 9:47 ` Michael S. Tsirkin 2009-06-15 9:02 ` Mark McLoughlin 2009-06-15 9:02 ` Mark McLoughlin 2009-06-15 9:02 ` Mark McLoughlin 2009-06-12 15:53 ` Mark McLoughlin 2009-06-12 14:55 ` Anthony Liguori 2009-06-10 19:27 ` [Qemu-devel] [PATCHv3 03/13] qemu: add routines to manage PCI capabilities Jamie Lokier 2009-06-10 18:22 ` Michael S. Tsirkin 2009-06-10 17:43 ` Jamie Lokier 2009-06-10 15:24 ` Paul Brook 2009-06-10 14:55 ` Glauber Costa 2009-06-09 17:11 ` Glauber Costa 2009-06-05 10:23 ` Michael S. Tsirkin 2009-06-05 10:23 ` [PATCHv3 04/13] qemu: helper routines for pci access Michael S. Tsirkin 2009-06-05 10:23 ` [Qemu-devel] " Michael S. Tsirkin 2009-06-05 10:23 ` Michael S. Tsirkin 2009-06-05 10:23 ` [PATCHv3 05/13] qemu: MSI-X support functions Michael S. Tsirkin 2009-06-05 10:23 ` [Qemu-devel] " Michael S. Tsirkin 2009-06-09 17:26 ` Glauber Costa 2009-06-09 17:26 ` Glauber Costa 2009-06-09 17:26 ` Glauber Costa 2009-06-10 9:58 ` Michael S. Tsirkin 2009-06-10 9:58 ` Michael S. Tsirkin 2009-06-10 9:58 ` Michael S. Tsirkin 2009-06-05 10:23 ` Michael S. Tsirkin 2009-06-05 10:23 ` [PATCHv3 06/13] qemu: add flag to disable MSI-X by default Michael S. Tsirkin 2009-06-05 10:23 ` [Qemu-devel] " Michael S. Tsirkin 2009-06-05 10:23 ` Michael S. Tsirkin 2009-06-05 10:23 ` [PATCHv3 07/13] qemu: minimal MSI/MSI-X implementation for PC Michael S. Tsirkin 2009-06-05 10:23 ` [Qemu-devel] " Michael S. Tsirkin 2009-06-09 17:33 ` Glauber Costa 2009-06-09 17:33 ` Glauber Costa 2009-06-09 17:33 ` Glauber Costa 2009-06-10 9:59 ` Michael S. Tsirkin 2009-06-10 9:59 ` Michael S. Tsirkin 2009-06-10 9:59 ` Michael S. Tsirkin 2009-06-05 10:23 ` Michael S. Tsirkin 2009-06-05 10:23 ` [PATCHv3 08/13] qemu: add support for resizing regions Michael S. Tsirkin 2009-06-05 10:23 ` Michael S. Tsirkin 2009-06-05 10:23 ` [Qemu-devel] " Michael S. Tsirkin 2009-06-09 17:36 ` Glauber Costa 2009-06-09 17:36 ` Glauber Costa 2009-06-10 10:05 ` Michael S. Tsirkin 2009-06-10 10:05 ` Michael S. Tsirkin 2009-06-10 10:05 ` Michael S. Tsirkin 2009-06-10 10:46 ` Michael S. Tsirkin 2009-06-10 10:46 ` Michael S. Tsirkin 2009-06-10 10:46 ` Michael S. Tsirkin 2009-06-09 17:36 ` Glauber Costa 2009-06-05 10:24 ` [PATCHv3 09/13] qemu: virtio support for many interrupt vectors Michael S. Tsirkin 2009-06-05 10:24 ` Michael S. Tsirkin 2009-06-05 10:24 ` [Qemu-devel] " Michael S. Tsirkin 2009-06-05 10:24 ` [PATCHv3 10/13] qemu: MSI-X support in virtio PCI Michael S. Tsirkin 2009-06-05 10:24 ` [Qemu-devel] " Michael S. Tsirkin 2009-06-05 10:24 ` Michael S. Tsirkin 2009-06-05 10:24 ` [PATCHv3 11/13] qemu: request 3 vectors in virtio-net Michael S. Tsirkin 2009-06-05 10:24 ` [Qemu-devel] " Michael S. Tsirkin 2009-06-05 10:24 ` Michael S. Tsirkin 2009-06-05 10:24 ` [PATCHv3 12/13] qemu: virtio save/load bindings Michael S. Tsirkin 2009-06-05 10:24 ` Michael S. Tsirkin 2009-06-05 10:24 ` [Qemu-devel] " Michael S. Tsirkin 2009-06-09 17:45 ` Glauber Costa 2009-06-09 17:45 ` Glauber Costa 2009-06-09 17:45 ` Glauber Costa 2009-06-10 10:11 ` Michael S. Tsirkin 2009-06-10 10:11 ` Michael S. Tsirkin 2009-06-10 10:11 ` Michael S. Tsirkin 2009-06-10 11:33 ` Michael S. Tsirkin 2009-06-10 11:33 ` Michael S. Tsirkin 2009-06-10 11:33 ` Michael S. Tsirkin 2009-06-05 10:24 ` [PATCHv3 13/13] qemu: add pci_get/set_byte Michael S. Tsirkin 2009-06-05 10:24 ` [Qemu-devel] " Michael S. Tsirkin 2009-06-05 10:24 ` Michael S. Tsirkin
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=20090609171114.GS11966@poweredge.glommer \ --to=glommer@redhat.com \ --cc=anthony@codemonkey.ws \ --cc=avi@redhat.com \ --cc=blauwirbel@gmail.com \ --cc=borntraeger@de.ibm.com \ --cc=cotte@de.ibm.com \ --cc=kvm@vger.kernel.org \ --cc=mst@redhat.com \ --cc=paul@codesourcery.com \ --cc=qemu-devel@nongnu.org \ --cc=rusty@rustcorp.com.au \ --cc=virtualization@lists.linux-foundation.org \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: linkBe sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.