From: "Michael S. Tsirkin" <mst@redhat.com>
To: Isaku Yamahata <yamahata@valinux.co.jp>
Cc: qemu-devel@nongnu.org
Subject: [Qemu-devel] Re: [PATCH V6 13/32] pci_host: consolidate pci config address access.
Date: Tue, 3 Nov 2009 15:45:12 +0200 [thread overview]
Message-ID: <20091103134512.GF4961@redhat.com> (raw)
In-Reply-To: <1256905286-25435-14-git-send-email-yamahata@valinux.co.jp>
On Fri, Oct 30, 2009 at 09:21:07PM +0900, Isaku Yamahata wrote:
> consolidate pci_config address access into pci_host.c
>
> Signed-off-by: Isaku Yamahata <yamahata@valinux.co.jp>
> ---
> hw/apb_pci.c | 43 +---------------------
> hw/grackle_pci.c | 45 +---------------------
> hw/pci_host.c | 108 ++++++++++++++++++++++++++++++++++++++++++++++++++++++
> hw/pci_host.h | 3 +
> hw/piix_pci.c | 15 +-------
> hw/ppce500_pci.c | 34 +----------------
> hw/prep_pci.c | 15 +-------
> hw/unin_pci.c | 81 ++--------------------------------------
> 8 files changed, 121 insertions(+), 223 deletions(-)
>
> diff --git a/hw/apb_pci.c b/hw/apb_pci.c
> index 560617a..3999879 100644
> --- a/hw/apb_pci.c
> +++ b/hw/apb_pci.c
> @@ -54,46 +54,6 @@ typedef struct APBState {
> PCIHostState host_state;
> } APBState;
>
> -static void pci_apb_config_writel (void *opaque, target_phys_addr_t addr,
> - uint32_t val)
> -{
> - APBState *s = opaque;
> -
> -#ifdef TARGET_WORDS_BIGENDIAN
> - val = bswap32(val);
> -#endif
> - APB_DPRINTF("config_writel addr " TARGET_FMT_plx " val %x\n", addr,
> - val);
> - s->host_state.config_reg = val;
> -}
> -
> -static uint32_t pci_apb_config_readl (void *opaque,
> - target_phys_addr_t addr)
> -{
> - APBState *s = opaque;
> - uint32_t val;
> -
> - val = s->host_state.config_reg;
> -#ifdef TARGET_WORDS_BIGENDIAN
> - val = bswap32(val);
> -#endif
> - APB_DPRINTF("config_readl addr " TARGET_FMT_plx " val %x\n", addr,
> - val);
> - return val;
> -}
> -
> -static CPUWriteMemoryFunc * const pci_apb_config_write[] = {
> - &pci_apb_config_writel,
> - &pci_apb_config_writel,
> - &pci_apb_config_writel,
> -};
> -
> -static CPUReadMemoryFunc * const pci_apb_config_read[] = {
> - &pci_apb_config_readl,
> - &pci_apb_config_readl,
> - &pci_apb_config_readl,
> -};
> -
> static void apb_config_writel (void *opaque, target_phys_addr_t addr,
> uint32_t val)
> {
> @@ -275,8 +235,7 @@ static int pci_pbm_init_device(SysBusDevice *dev)
> pci_apb_iowrite, s);
> sysbus_init_mmio(dev, 0x10000ULL, pci_ioport);
> /* mem_config */
> - pci_mem_config = cpu_register_io_memory(pci_apb_config_read,
> - pci_apb_config_write, s);
> + pci_mem_config = pci_host_config_register_io_memory(&s->host_state);
> sysbus_init_mmio(dev, 0x10ULL, pci_mem_config);
> /* mem_data */
> pci_mem_data = pci_host_data_register_io_memory(&s->host_state);
> diff --git a/hw/grackle_pci.c b/hw/grackle_pci.c
> index 8407cd2..58dcd11 100644
> --- a/hw/grackle_pci.c
> +++ b/hw/grackle_pci.c
> @@ -43,45 +43,6 @@ typedef struct GrackleState {
> PCIHostState host_state;
> } GrackleState;
>
> -static void pci_grackle_config_writel (void *opaque, target_phys_addr_t addr,
> - uint32_t val)
> -{
> - GrackleState *s = opaque;
> -
> - GRACKLE_DPRINTF("config_writel addr " TARGET_FMT_plx " val %x\n", addr,
> - val);
> -#ifdef TARGET_WORDS_BIGENDIAN
> - val = bswap32(val);
> -#endif
> - s->host_state.config_reg = val;
> -}
> -
> -static uint32_t pci_grackle_config_readl (void *opaque, target_phys_addr_t addr)
> -{
> - GrackleState *s = opaque;
> - uint32_t val;
> -
> - val = s->host_state.config_reg;
> -#ifdef TARGET_WORDS_BIGENDIAN
> - val = bswap32(val);
> -#endif
> - GRACKLE_DPRINTF("config_readl addr " TARGET_FMT_plx " val %x\n", addr,
> - val);
> - return val;
> -}
> -
> -static CPUWriteMemoryFunc * const pci_grackle_config_write[] = {
> - &pci_grackle_config_writel,
> - &pci_grackle_config_writel,
> - &pci_grackle_config_writel,
> -};
> -
> -static CPUReadMemoryFunc * const pci_grackle_config_read[] = {
> - &pci_grackle_config_readl,
> - &pci_grackle_config_readl,
> - &pci_grackle_config_readl,
> -};
> -
> /* Don't know if this matches real hardware, but it agrees with OHW. */
> static int pci_grackle_map_irq(PCIDevice *pci_dev, int irq_num)
> {
> @@ -147,8 +108,7 @@ static int pci_grackle_init_device(SysBusDevice *dev)
>
> s = FROM_SYSBUS(GrackleState, dev);
>
> - pci_mem_config = cpu_register_io_memory(pci_grackle_config_read,
> - pci_grackle_config_write, s);
> + pci_mem_config = pci_host_config_register_io_memory(&s->host_state);
> pci_mem_data = pci_host_data_register_io_memory(&s->host_state);
> sysbus_init_mmio(dev, 0x1000, pci_mem_config);
> sysbus_init_mmio(dev, 0x1000, pci_mem_data);
> @@ -167,8 +127,7 @@ static int pci_dec_21154_init_device(SysBusDevice *dev)
>
> s = FROM_SYSBUS(GrackleState, dev);
>
> - pci_mem_config = cpu_register_io_memory(pci_grackle_config_read,
> - pci_grackle_config_write, s);
> + pci_mem_config = pci_host_config_register_io_memory(&s->host_state);
> pci_mem_data = pci_host_data_register_io_memory(&s->host_state);
> sysbus_init_mmio(dev, 0x1000, pci_mem_config);
> sysbus_init_mmio(dev, 0x1000, pci_mem_data);
> diff --git a/hw/pci_host.c b/hw/pci_host.c
> index 45da1e7..6009e37 100644
> --- a/hw/pci_host.c
> +++ b/hw/pci_host.c
> @@ -32,6 +32,114 @@ do { printf("pci_host_data: " fmt , ## __VA_ARGS__); } while (0)
> #define PCI_DPRINTF(fmt, ...)
> #endif
>
> +static void pci_host_config_writel(void *opaque, target_phys_addr_t addr,
> + uint32_t val)
> +{
> + PCIHostState *s = opaque;
> +
> +#ifdef TARGET_WORDS_BIGENDIAN
> + val = bswap32(val);
> +#endif
I know you just copied it, but isn't this just
val = le32_to_cpu(val);
?
> + PCI_DPRINTF("%s addr " TARGET_FMT_plx " val %"PRIx32"\n",
> + __func__, addr, val);
> + s->config_reg = val;
> +}
> +
> +static uint32_t pci_host_config_readl(void *opaque, target_phys_addr_t addr)
> +{
> + PCIHostState *s = opaque;
> + uint32_t val = s->config_reg;
> +
> +#ifdef TARGET_WORDS_BIGENDIAN
> + val = bswap32(val);
> +#endif
same here.
> + PCI_DPRINTF("%s addr " TARGET_FMT_plx " val %"PRIx32"\n",
> + __func__, addr, val);
> + return val;
> +}
> +
> +static CPUWriteMemoryFunc * const pci_host_config_write[] = {
> + &pci_host_config_writel,
> + &pci_host_config_writel,
> + &pci_host_config_writel,
> +};
> +
> +static CPUReadMemoryFunc * const pci_host_config_read[] = {
> + &pci_host_config_readl,
> + &pci_host_config_readl,
> + &pci_host_config_readl,
> +};
> +
> +int pci_host_config_register_io_memory(PCIHostState *s)
> +{
> + return cpu_register_io_memory(pci_host_config_read,
> + pci_host_config_write, s);
> +}
> +
> +static void pci_host_config_writel_noswap(void *opaque,
> + target_phys_addr_t addr,
> + uint32_t val)
> +{
> + PCIHostState *s = opaque;
> +
> + PCI_DPRINTF("%s addr " TARGET_FMT_plx " val %"PRIx32"\n",
> + __func__, addr, val);
> + s->config_reg = val;
> +}
> +
> +static uint32_t pci_host_config_readl_noswap(void *opaque,
> + target_phys_addr_t addr)
> +{
> + PCIHostState *s = opaque;
> + uint32_t val = s->config_reg;
> +
> + PCI_DPRINTF("%s addr " TARGET_FMT_plx " val %"PRIx32"\n",
> + __func__, addr, val);
> + return val;
> +}
> +
> +static CPUWriteMemoryFunc * const pci_host_config_write_noswap[] = {
> + &pci_host_config_writel_noswap,
> + &pci_host_config_writel_noswap,
> + &pci_host_config_writel_noswap,
> +};
> +
> +static CPUReadMemoryFunc * const pci_host_config_read_noswap[] = {
> + &pci_host_config_readl_noswap,
> + &pci_host_config_readl_noswap,
> + &pci_host_config_readl_noswap,
> +};
> +
> +int pci_host_config_register_io_memory_noswap(PCIHostState *s)
This name is clearly too long,
as a result when you use it you run over the 80 character
limit. Let's not fix it, let's make name shorter.
io_memory -> memory?
> +{
> + return cpu_register_io_memory(pci_host_config_read_noswap,
> + pci_host_config_write_noswap, s);
> +}
Do you happen to know whether no swap is really needed? I suspect some
of these places really only happen to work because everyone uses intel,
so they simply would not work on ppc host.
> +
> +static void pci_host_config_writel_ioport(void *opaque,
> + uint32_t addr, uint32_t val)
> +{
> + PCIHostState *s = opaque;
> +
> + PCI_DPRINTF("%s addr %"PRIx32 " val %"PRIx32"\n", __func__, addr, val);
> + s->config_reg = val;
> +}
> +
> +static uint32_t pci_host_config_readl_ioport(void *opaque, uint32_t addr)
> +{
> + PCIHostState *s = opaque;
> + uint32_t val = s->config_reg;
> +
> + PCI_DPRINTF("%s addr %"PRIx32" val %"PRIx32"\n", __func__, addr, val);
> + return val;
> +}
> +
> +void pci_host_config_register_ioport(pio_addr_t ioport, PCIHostState *s)
> +{
> + register_ioport_write(ioport, 4, 4, pci_host_config_writel_ioport, s);
> + register_ioport_read(ioport, 4, 4, pci_host_config_readl_ioport, s);
> +}
> +
> #define PCI_ADDR_T target_phys_addr_t
> #define PCI_HOST_SUFFIX _mmio
>
> diff --git a/hw/pci_host.h b/hw/pci_host.h
> index 92a35f9..e5e877f 100644
> --- a/hw/pci_host.h
> +++ b/hw/pci_host.h
> @@ -37,9 +37,12 @@ typedef struct {
> } PCIHostState;
>
> /* for mmio */
> +int pci_host_config_register_io_memory(PCIHostState *s);
> +int pci_host_config_register_io_memory_noswap(PCIHostState *s);
> int pci_host_data_register_io_memory(PCIHostState *s);
>
> /* for ioio */
> +void pci_host_config_register_ioport(pio_addr_t ioport, PCIHostState *s);
> void pci_host_data_register_ioport(pio_addr_t ioport, PCIHostState *s);
>
> #endif /* PCI_HOST_H */
> diff --git a/hw/piix_pci.c b/hw/piix_pci.c
> index 866348d..bf0005e 100644
> --- a/hw/piix_pci.c
> +++ b/hw/piix_pci.c
> @@ -44,18 +44,6 @@ struct PCII440FXState {
> PIIX3State *piix3;
> };
>
> -static void i440fx_addr_writel(void* opaque, uint32_t addr, uint32_t val)
> -{
> - I440FXState *s = opaque;
> - s->config_reg = val;
> -}
> -
> -static uint32_t i440fx_addr_readl(void* opaque, uint32_t addr)
> -{
> - I440FXState *s = opaque;
> - return s->config_reg;
> -}
> -
> static void piix3_set_irq(void *opaque, int irq_num, int level);
>
> /* return the global irq number corresponding to a given device irq
> @@ -192,8 +180,7 @@ static int i440fx_pcihost_initfn(SysBusDevice *dev)
> {
> I440FXState *s = FROM_SYSBUS(I440FXState, dev);
>
> - register_ioport_write(0xcf8, 4, 4, i440fx_addr_writel, s);
> - register_ioport_read(0xcf8, 4, 4, i440fx_addr_readl, s);
> + pci_host_config_register_ioport(0xcf8, s);
>
> pci_host_data_register_ioport(0xcfc, s);
> return 0;
> diff --git a/hw/ppce500_pci.c b/hw/ppce500_pci.c
> index 7c8cdad..223de3a 100644
> --- a/hw/ppce500_pci.c
> +++ b/hw/ppce500_pci.c
> @@ -84,37 +84,6 @@ struct PPCE500PCIState {
>
> typedef struct PPCE500PCIState PPCE500PCIState;
>
> -static uint32_t pcie500_cfgaddr_readl(void *opaque, target_phys_addr_t addr)
> -{
> - PPCE500PCIState *pci = opaque;
> -
> - pci_debug("%s: (addr:" TARGET_FMT_plx ") -> value:%x\n", __func__, addr,
> - pci->pci_state.config_reg);
> - return pci->pci_state.config_reg;
> -}
> -
> -static CPUReadMemoryFunc * const pcie500_cfgaddr_read[] = {
> - &pcie500_cfgaddr_readl,
> - &pcie500_cfgaddr_readl,
> - &pcie500_cfgaddr_readl,
> -};
> -
> -static void pcie500_cfgaddr_writel(void *opaque, target_phys_addr_t addr,
> - uint32_t value)
> -{
> - PPCE500PCIState *controller = opaque;
> -
> - pci_debug("%s: value:%x -> (addr:" TARGET_FMT_plx ")\n", __func__, value,
> - addr);
> - controller->pci_state.config_reg = value & ~0x3;
> -}
> -
> -static CPUWriteMemoryFunc * const pcie500_cfgaddr_write[] = {
> - &pcie500_cfgaddr_writel,
> - &pcie500_cfgaddr_writel,
> - &pcie500_cfgaddr_writel,
> -};
> -
> static uint32_t pci_reg_read4(void *opaque, target_phys_addr_t addr)
> {
> PPCE500PCIState *pci = opaque;
> @@ -324,8 +293,7 @@ PCIBus *ppce500_pci_init(qemu_irq pci_irqs[4], target_phys_addr_t registers)
> controller->pci_dev = d;
>
> /* CFGADDR */
> - index = cpu_register_io_memory(pcie500_cfgaddr_read,
> - pcie500_cfgaddr_write, controller);
> + index = pci_host_config_register_io_memory_noswap(&controller->pci_state);
> if (index < 0)
> goto free;
> cpu_register_physical_memory(registers + PCIE500_CFGADDR, 4, index);
> diff --git a/hw/prep_pci.c b/hw/prep_pci.c
> index 5a5b3da..a338f81 100644
> --- a/hw/prep_pci.c
> +++ b/hw/prep_pci.c
> @@ -28,18 +28,6 @@
>
> typedef PCIHostState PREPPCIState;
>
> -static void pci_prep_addr_writel(void* opaque, uint32_t addr, uint32_t val)
> -{
> - PREPPCIState *s = opaque;
> - s->config_reg = val;
> -}
> -
> -static uint32_t pci_prep_addr_readl(void* opaque, uint32_t addr)
> -{
> - PREPPCIState *s = opaque;
> - return s->config_reg;
> -}
> -
> static inline uint32_t PPC_PCIIO_config(target_phys_addr_t addr)
> {
> int i;
> @@ -139,8 +127,7 @@ PCIBus *pci_prep_init(qemu_irq *pic)
> s->bus = pci_register_bus(NULL, "pci",
> prep_set_irq, prep_map_irq, pic, 0, 4);
>
> - register_ioport_write(0xcf8, 4, 4, pci_prep_addr_writel, s);
> - register_ioport_read(0xcf8, 4, 4, pci_prep_addr_readl, s);
> + pci_host_config_register_ioport(0xcf8, s);
>
> pci_host_data_register_ioport(0xcfc, s);
>
> diff --git a/hw/unin_pci.c b/hw/unin_pci.c
> index 6b8f98b..a9a62fd 100644
> --- a/hw/unin_pci.c
> +++ b/hw/unin_pci.c
> @@ -41,74 +41,6 @@ typedef struct UNINState {
> PCIHostState host_state;
> } UNINState;
>
> -static void pci_unin_main_config_writel (void *opaque, target_phys_addr_t addr,
> - uint32_t val)
> -{
> - UNINState *s = opaque;
> -
> - UNIN_DPRINTF("config_writel addr " TARGET_FMT_plx " val %x\n", addr, val);
> -#ifdef TARGET_WORDS_BIGENDIAN
> - val = bswap32(val);
> -#endif
> -
> - s->host_state.config_reg = val;
> -}
> -
> -static uint32_t pci_unin_main_config_readl (void *opaque,
> - target_phys_addr_t addr)
> -{
> - UNINState *s = opaque;
> - uint32_t val;
> -
> - val = s->host_state.config_reg;
> -#ifdef TARGET_WORDS_BIGENDIAN
> - val = bswap32(val);
> -#endif
> - UNIN_DPRINTF("config_readl addr " TARGET_FMT_plx " val %x\n", addr, val);
> -
> - return val;
> -}
> -
> -static CPUWriteMemoryFunc * const pci_unin_main_config_write[] = {
> - &pci_unin_main_config_writel,
> - &pci_unin_main_config_writel,
> - &pci_unin_main_config_writel,
> -};
> -
> -static CPUReadMemoryFunc * const pci_unin_main_config_read[] = {
> - &pci_unin_main_config_readl,
> - &pci_unin_main_config_readl,
> - &pci_unin_main_config_readl,
> -};
> -
> -static void pci_unin_config_writel (void *opaque, target_phys_addr_t addr,
> - uint32_t val)
> -{
> - UNINState *s = opaque;
> -
> - s->host_state.config_reg = val;
> -}
> -
> -static uint32_t pci_unin_config_readl (void *opaque,
> - target_phys_addr_t addr)
> -{
> - UNINState *s = opaque;
> -
> - return s->host_state.config_reg;
> -}
> -
> -static CPUWriteMemoryFunc * const pci_unin_config_write[] = {
> - &pci_unin_config_writel,
> - &pci_unin_config_writel,
> - &pci_unin_config_writel,
> -};
> -
> -static CPUReadMemoryFunc * const pci_unin_config_read[] = {
> - &pci_unin_config_readl,
> - &pci_unin_config_readl,
> - &pci_unin_config_readl,
> -};
> -
> /* Don't know if this matches real hardware, but it agrees with OHW. */
> static int pci_unin_map_irq(PCIDevice *pci_dev, int irq_num)
> {
> @@ -152,10 +84,8 @@ static int pci_unin_main_init_device(SysBusDevice *dev)
> /* Uninorth main bus */
> s = FROM_SYSBUS(UNINState, dev);
>
> - pci_mem_config = cpu_register_io_memory(pci_unin_main_config_read,
> - pci_unin_main_config_write, s);
> + pci_mem_config = pci_host_config_register_io_memory(&s->host_state);
> pci_mem_data = pci_host_data_register_io_memory(&s->host_state);
> -
> sysbus_init_mmio(dev, 0x1000, pci_mem_config);
> sysbus_init_mmio(dev, 0x1000, pci_mem_data);
>
> @@ -174,8 +104,7 @@ static int pci_dec_21154_init_device(SysBusDevice *dev)
> s = FROM_SYSBUS(UNINState, dev);
>
> // XXX: s = &pci_bridge[2];
> - pci_mem_config = cpu_register_io_memory(pci_unin_config_read,
> - pci_unin_config_write, s);
> + pci_mem_config = pci_host_config_register_io_memory_noswap(&s->host_state);
> pci_mem_data = pci_host_data_register_io_memory(&s->host_state);
> sysbus_init_mmio(dev, 0x1000, pci_mem_config);
> sysbus_init_mmio(dev, 0x1000, pci_mem_data);
> @@ -190,8 +119,7 @@ static int pci_unin_agp_init_device(SysBusDevice *dev)
> /* Uninorth AGP bus */
> s = FROM_SYSBUS(UNINState, dev);
>
> - pci_mem_config = cpu_register_io_memory(pci_unin_config_read,
> - pci_unin_config_write, s);
> + pci_mem_config = pci_host_config_register_io_memory_noswap(&s->host_state);
> pci_mem_data = pci_host_data_register_io_memory(&s->host_state);
> sysbus_init_mmio(dev, 0x1000, pci_mem_config);
> sysbus_init_mmio(dev, 0x1000, pci_mem_data);
> @@ -206,8 +134,7 @@ static int pci_unin_internal_init_device(SysBusDevice *dev)
> /* Uninorth internal bus */
> s = FROM_SYSBUS(UNINState, dev);
>
> - pci_mem_config = cpu_register_io_memory(pci_unin_config_read,
> - pci_unin_config_write, s);
> + pci_mem_config = pci_host_config_register_io_memory_noswap(&s->host_state);
> pci_mem_data = pci_host_data_register_io_memory(&s->host_state);
> sysbus_init_mmio(dev, 0x1000, pci_mem_config);
> sysbus_init_mmio(dev, 0x1000, pci_mem_data);
> --
> 1.6.0.2
next prev parent reply other threads:[~2009-11-03 13:47 UTC|newest]
Thread overview: 75+ messages / expand[flat|nested] mbox.gz Atom feed top
2009-10-30 12:20 [Qemu-devel] [PATCH V6 00/32] pci: various pci clean up and pci express support Isaku Yamahata
2009-10-30 12:20 ` [Qemu-devel] [PATCH V6 01/32] pci: fix PCI_DPRINTF() wrt variadic macro Isaku Yamahata
2009-10-30 12:20 ` [Qemu-devel] [PATCH V6 02/32] pci: introduce constant PCI_NUM_PINS for the number of interrupt pins, 4 Isaku Yamahata
2009-10-30 12:20 ` [Qemu-devel] [PATCH V6 03/32] pci: use PCI_SLOT() and PCI_FUNC() Isaku Yamahata
2009-10-30 12:20 ` [Qemu-devel] [PATCH V6 04/32] pci: define a constant to represent a unmapped bar and use it Isaku Yamahata
2009-10-30 12:20 ` [Qemu-devel] [PATCH V6 05/32] pci: helper functions to access PCIDevice::config Isaku Yamahata
2009-10-30 12:21 ` [Qemu-devel] [PATCH V6 06/32] pci: use helper functions to access pci config space Isaku Yamahata
2009-10-30 12:21 ` [Qemu-devel] [PATCH V6 07/32] pci/bridge: clean up of pci_bridge_initfn() Isaku Yamahata
2009-10-30 12:21 ` [Qemu-devel] [PATCH V6 08/32] pci: clean up pci_init_wmask() Isaku Yamahata
2009-11-03 13:22 ` [Qemu-devel] " Michael S. Tsirkin
2009-11-10 15:26 ` Michael S. Tsirkin
2009-10-30 12:21 ` [Qemu-devel] [PATCH V6 09/32] pci: s/PCI_ADDRESS_SPACE_/PCI_BASE_ADDRESS_SPACE_/ to match pci_regs.h Isaku Yamahata
2009-10-30 12:21 ` [Qemu-devel] [PATCH V6 10/32] pci: clean up of pci_default_read_config Isaku Yamahata
2009-10-30 12:21 ` [Qemu-devel] [PATCH V6 11/32] pci: make pci_bar() aware of header type 1 Isaku Yamahata
2009-10-30 12:21 ` [Qemu-devel] [PATCH V6 12/32] pci_host.h: move functions in pci_host.h into .c file Isaku Yamahata
2009-11-03 13:31 ` [Qemu-devel] " Michael S. Tsirkin
2009-11-03 13:35 ` Michael S. Tsirkin
2009-11-04 4:09 ` Isaku Yamahata
2009-10-30 12:21 ` [Qemu-devel] [PATCH V6 13/32] pci_host: consolidate pci config address access Isaku Yamahata
2009-11-03 13:45 ` Michael S. Tsirkin [this message]
2009-11-04 6:14 ` [Qemu-devel] " Isaku Yamahata
2009-11-04 11:50 ` Alexander Graf
2009-11-04 15:17 ` Aurelien Jarno
2009-11-04 15:37 ` Michael S. Tsirkin
2009-11-04 17:34 ` Aurelien Jarno
2009-10-30 12:21 ` [Qemu-devel] [PATCH V6 14/32] pci: introduce pcibus_t to represent pci bus address/size instead of uint32_t Isaku Yamahata
2009-10-30 12:21 ` [Qemu-devel] [PATCH V6 15/32] pci: introduce FMT_PCIBUS for printf format for pcibus_t Isaku Yamahata
2009-10-30 12:21 ` [Qemu-devel] [PATCH V6 16/32] pci: typedef pcibus_t as uint64_t instead of uint32_t Isaku Yamahata
2009-10-30 12:21 ` [Qemu-devel] [PATCH V6 17/32] pci: 64bit bar support Isaku Yamahata
2009-11-01 16:07 ` [Qemu-devel] " Michael S. Tsirkin
2009-11-03 3:52 ` Isaku Yamahata
2009-11-03 11:47 ` Michael S. Tsirkin
2009-11-03 12:22 ` Avi Kivity
2009-11-03 12:39 ` Michael S. Tsirkin
2009-11-03 13:21 ` Michael S. Tsirkin
2009-11-03 14:01 ` Isaku Yamahata
2009-11-03 14:09 ` Michael S. Tsirkin
2009-11-04 6:20 ` Isaku Yamahata
2009-11-04 12:19 ` Michael S. Tsirkin
2009-10-30 12:21 ` [Qemu-devel] [PATCH V6 18/32] pci: remove bus_num member from struct PCIBus Isaku Yamahata
2009-11-03 13:47 ` [Qemu-devel] " Michael S. Tsirkin
2009-11-10 15:33 ` Michael S. Tsirkin
2009-11-10 15:46 ` Michael S. Tsirkin
2009-11-12 3:12 ` Isaku Yamahata
2009-10-30 12:21 ` [Qemu-devel] [PATCH V6 19/32] pci: make pci configuration transaction more accurate Isaku Yamahata
2009-11-10 15:49 ` [Qemu-devel] " Michael S. Tsirkin
2009-11-12 3:27 ` Isaku Yamahata
2009-10-30 12:21 ` [Qemu-devel] [PATCH V6 20/32] pci: factor out the conversion logic from io port address into pci device Isaku Yamahata
2009-11-03 13:52 ` [Qemu-devel] " Michael S. Tsirkin
2009-11-10 15:56 ` Michael S. Tsirkin
2009-10-30 12:21 ` [Qemu-devel] [PATCH V6 21/32] pci: move pci host stuff from pci.c to pci_host.c Isaku Yamahata
2009-11-03 14:04 ` [Qemu-devel] " Michael S. Tsirkin
2009-10-30 12:21 ` [Qemu-devel] [PATCH V6 22/32] pci_host: change the signature of pci_data_{read, write} Isaku Yamahata
2009-11-10 15:57 ` [Qemu-devel] " Michael S. Tsirkin
2009-10-30 12:21 ` [Qemu-devel] [PATCH V6 23/32] vmstate: introduce VMSTATE_BUFFER_UNSAFE_INFO Isaku Yamahata
2009-10-30 12:21 ` [Qemu-devel] [PATCH V6 24/32] pci: pcie host and mmcfg support Isaku Yamahata
2009-11-03 14:50 ` [Qemu-devel] " Michael S. Tsirkin
2009-10-30 12:21 ` [Qemu-devel] [PATCH V6 25/32] pci: add helper functions to check ranges overlap Isaku Yamahata
2009-11-03 14:18 ` [Qemu-devel] " Michael S. Tsirkin
2009-10-30 12:21 ` [Qemu-devel] [PATCH V6 26/32] pci: use range helper functions Isaku Yamahata
2009-11-03 14:19 ` [Qemu-devel] " Michael S. Tsirkin
2009-11-10 15:59 ` Michael S. Tsirkin
2009-10-30 12:21 ` [Qemu-devel] [PATCH V6 27/32] pci: teach pci_default_config_write() ROM bar for normal/bridge device Isaku Yamahata
2009-11-03 14:20 ` [Qemu-devel] " Michael S. Tsirkin
2009-11-10 16:01 ` Michael S. Tsirkin
2009-10-30 12:21 ` [Qemu-devel] [PATCH V6 28/32] pci: initialize pci config headers depending it pci header type Isaku Yamahata
2009-11-03 14:27 ` [Qemu-devel] " Michael S. Tsirkin
2009-11-12 5:23 ` Isaku Yamahata
2009-10-30 12:21 ` [Qemu-devel] [PATCH V6 29/32] pci: cosmetic on pci_upadte_mappings() Isaku Yamahata
2009-11-03 14:17 ` [Qemu-devel] " Michael S. Tsirkin
2009-10-30 12:21 ` [Qemu-devel] [PATCH V6 30/32] pci: factor out pci_for_each_device() Isaku Yamahata
2009-11-03 14:29 ` [Qemu-devel] " Michael S. Tsirkin
2009-10-30 12:21 ` [Qemu-devel] [PATCH V6 31/32] pci: implement pci bridge filtering Isaku Yamahata
2009-11-03 15:01 ` [Qemu-devel] " Michael S. Tsirkin
2009-10-30 12:21 ` [Qemu-devel] [PATCH V6 32/32] pci/monitor: print out bridge's filtering values and so on Isaku Yamahata
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=20091103134512.GF4961@redhat.com \
--to=mst@redhat.com \
--cc=qemu-devel@nongnu.org \
--cc=yamahata@valinux.co.jp \
/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: link
Be 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.