qemu-devel
[Top][All Lists]
Advanced

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

Re: [Qemu-devel] [RFC PATCH 3/6] RAMBlock: Add a name field


From: Alex Williamson
Subject: Re: [Qemu-devel] [RFC PATCH 3/6] RAMBlock: Add a name field
Date: Tue, 08 Jun 2010 22:19:03 -0600

On Wed, 2010-06-09 at 03:54 +0100, Paul Brook wrote:
> > On 06/08/2010 09:30 PM, Paul Brook wrote:
> > >> The offset given to a block created via qemu_ram_alloc/map() is
> > >> arbitrary, let the caller specify a name so we can make a positive
> > >> match.
> > >> 
> > >> 
> > >> @@ -1924,7 +1925,9 @@ static int pci_add_option_rom(PCIDevice *pdev)
> > >> +    snprintf(name, sizeof(name), "pci:%02x.%x.rom",
> > >> +             PCI_SLOT(pdev->devfn), PCI_FUNC(pdev->devfn));
> > >> +    pdev->rom_offset = qemu_ram_alloc(name, size);
> > > 
> > > This looks pretty bogus.  It should be associated with the device, rather
> > > than incorrectly trying to generate a globally unique name.
> > 
> > Not all ram is associated with a device.
> 
> Maybe not, but where it is we should be using that information.
> Absolute minimum we should be using the existing qdev address rather than 
> inventing a new one.  Duplicating this logic inside every device seems like a 
> bad idea so I suggest identifying ram blocks by a (name, device) pair. For 
> now 
> we can allow a NULL device for system memory.

I'm not sure if this is what you're after, but what if we change it to
something like:

+    snprintf(name, sizeof(name), "%s.%02x.%x.rom-%s",
+             pdev->bus->qbus.name, PCI_SLOT(pdev->devfn),
+             PCI_FUNC(pdev->devfn), pdev->qdev.info->name);

This gives us things like "pci.0.03.0.rom-rtl8139".  For pci-assign, we
can expand on the host details, such as:

+                snprintf(name, sizeof(name),
+                         "%s.%02x.%x.bar%d-%s(%04x:%02x:%02x.%d)",
+                         pci_dev->dev.bus->qbus.name,
+                         PCI_SLOT(pci_dev->dev.devfn),
+                         PCI_FUNC(pci_dev->dev.devfn), i,
+                         pci_dev->dev.qdev.info->name,
+                         pci_dev->host.seg, pci_dev->host.bus,
+                         pci_dev->host.dev, pci_dev->host.func);

Giving us "pci.0.04.0.bar0-pci-assign(0000:01:10.0)".  Anywhere closer?
Thanks,

Alex





reply via email to

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