All of lore.kernel.org
 help / color / mirror / Atom feed
From: Benjamin Herrenschmidt <benh@kernel.crashing.org>
To: Alexander Graf <agraf@suse.de>
Cc: blauwirbel@gmail.com, qemu-devel@nongnu.org,
	Gerd Hoffmann <kraxel@redhat.com>,
	afaerber@suse.de, "Michael S. Tsirkin" <mst@redhat.com>
Subject: Re: [Qemu-devel] [PATCH] pci: set memory type for memory behind the bridge
Date: Wed, 22 Feb 2012 12:53:15 +1100	[thread overview]
Message-ID: <1329875595.3980.84.camel@pasglop> (raw)
In-Reply-To: <4F43B084.6060402@suse.de>

On Tue, 2012-02-21 at 15:56 +0100, Alexander Graf wrote:
> On 02/21/2012 02:57 PM, Michael S. Tsirkin wrote:
> > As we make upper bits in IO and prefetcheable memory
> > registers writeable, we should declare support
> > for 64 bit prefetcheable memory and 32 bit io
> > in the bridge.
> >
> > This changes the default for apb, dec, but I'm guessing
> > they got the defaults wrong by accident.
> > Alternatively, we could let bridges declare lack of
> > 64 bit support and make the upper bits read-only zero.
> >
> > With this applied, we can drop these bits
> > from express code.
> 
> Ben, you know these devices better than us. Any comments? :)

I don't know that code very well, but Michael's explanation at least
makes sense to me :-)

Cheers,
Ben.

> Alex
> 
> > Reported-by: Gerd Hoffmann<kraxel@redhat.com>
> > Signed-off-by: Michael S. Tsirkin<mst@redhat.com>
> >
> > Could someone familiar with apb,dec ack this please?
> >
> > ---
> >   hw/pci.c |   15 +++++++++++++--
> >   1 files changed, 13 insertions(+), 2 deletions(-)
> >
> > diff --git a/hw/pci.c b/hw/pci.c
> > index 31d6a5f..3ca5f4c 100644
> > --- a/hw/pci.c
> > +++ b/hw/pci.c
> > @@ -611,7 +611,7 @@ static void pci_init_w1cmask(PCIDevice *dev)
> >                    PCI_STATUS_SIG_SYSTEM_ERROR | PCI_STATUS_DETECTED_PARITY);
> >   }
> >
> > -static void pci_init_wmask_bridge(PCIDevice *d)
> > +static void pci_init_mask_bridge(PCIDevice *d)
> >   {
> >       /* PCI_PRIMARY_BUS, PCI_SECONDARY_BUS, PCI_SUBORDINATE_BUS and
> >          PCI_SEC_LETENCY_TIMER */
> > @@ -632,6 +632,14 @@ static void pci_init_wmask_bridge(PCIDevice *d)
> >       /* PCI_PREF_BASE_UPPER32 and PCI_PREF_LIMIT_UPPER32 */
> >       memset(d->wmask + PCI_PREF_BASE_UPPER32, 0xff, 8);
> >
> > +    /* Supported memory and i/o types */
> > +    d->config[PCI_IO_BASE] |= PCI_IO_RANGE_TYPE_32;
> > +    d->config[PCI_IO_LIMIT] |= PCI_IO_RANGE_TYPE_32;
> > +    pci_word_test_and_set_mask(d->config + PCI_PREF_MEMORY_BASE,
> > +                               PCI_PREF_RANGE_TYPE_64);
> > +    pci_word_test_and_set_mask(d->config + PCI_PREF_MEMORY_LIMIT,
> > +                               PCI_PREF_RANGE_TYPE_64);
> > +
> >   /* TODO: add this define to pci_regs.h in linux and then in qemu. */
> >   #define  PCI_BRIDGE_CTL_VGA_16BIT	0x10	/* VGA 16-bit decode */
> >   #define  PCI_BRIDGE_CTL_DISCARD		0x100	/* Primary discard timer */
> > @@ -654,6 +662,9 @@ static void pci_init_wmask_bridge(PCIDevice *d)
> >        * completeness. */
> >       pci_set_word(d->w1cmask + PCI_BRIDGE_CONTROL,
> >                    PCI_BRIDGE_CTL_DISCARD_STATUS);
> > +    d->cmask[PCI_IO_BASE] |= PCI_IO_RANGE_TYPE_MASK;
> > +    pci_word_test_and_set_mask(d->cmask + PCI_PREF_MEMORY_BASE,
> > +                               PCI_PREF_RANGE_TYPE_MASK);
> >   }
> >
> >   static int pci_init_multifunction(PCIBus *bus, PCIDevice *dev)
> > @@ -775,7 +786,7 @@ static PCIDevice *do_pci_register_device(PCIDevice *pci_dev, PCIBus *bus,
> >       pci_init_wmask(pci_dev);
> >       pci_init_w1cmask(pci_dev);
> >       if (pc->is_bridge) {
> > -        pci_init_wmask_bridge(pci_dev);
> > +        pci_init_mask_bridge(pci_dev);
> >       }
> >       if (pci_init_multifunction(bus, pci_dev)) {
> >           pci_config_free(pci_dev);

  reply	other threads:[~2012-02-22  1:53 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-02-21 13:57 [Qemu-devel] [PATCH] pci: set memory type for memory behind the bridge Michael S. Tsirkin
2012-02-21 14:56 ` Alexander Graf
2012-02-22  1:53   ` Benjamin Herrenschmidt [this message]
2012-02-22 18:47 ` Anthony Liguori

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=1329875595.3980.84.camel@pasglop \
    --to=benh@kernel.crashing.org \
    --cc=afaerber@suse.de \
    --cc=agraf@suse.de \
    --cc=blauwirbel@gmail.com \
    --cc=kraxel@redhat.com \
    --cc=mst@redhat.com \
    --cc=qemu-devel@nongnu.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: 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.