qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
From: "Hervé Poussineau" <hpoussin@reactos.org>
To: Peter Maydell <peter.maydell@linaro.org>
Cc: "Andreas Färber" <andreas.faerber@web.de>,
	"QEMU Developers" <qemu-devel@nongnu.org>
Subject: Re: [Qemu-devel] [PATCH 3/3] prep: improve Raven PCI host emulation
Date: Mon, 02 Sep 2013 23:18:01 +0200	[thread overview]
Message-ID: <52250089.3010901@reactos.org> (raw)
In-Reply-To: <CAFEAcA-Un3x=sC==FnBLQBUzHtoB26Qqv0edY28cNctaOOpNKg@mail.gmail.com>

Peter Maydell a écrit :
> On 23 August 2013 19:52, Hervé Poussineau <hpoussin@reactos.org> wrote:
> 
>> - let it load a firmware (raw or elf image)
>> - add a GPIO to let it handle the non-contiguous I/O address space
>> - provide a bus master address space
> 
>> Also move isa_mem_base from PCI host to machine board.
> 
>> Simplify prep board code by relying on Raven PCI host to handle
>> non-contiguous I/O, and to load BIOS (with a small hack required
>> for Open Hack'Ware).
> 
> That seems like quite a lot to be doing in a single patch. Does
> any of it split out for easier code review?

Yes, v2 is in preparation. This patch will be split in multiple patches.

> 
>> +static uint64_t prep_io_read(void *opaque, hwaddr addr,
>> +                             unsigned int size)
>> +{
>> +    PREPPCIState *s = opaque;
>> +    uint8_t buf[4];
>> +    uint64_t val;
>> +
>> +    if (s->contiguous_map == 0) {
>> +        /* 64 KB contiguous space for IOs */
>> +        addr &= 0xFFFF;
>> +    } else {
>> +        /* 8 MB non-contiguous space for IOs */
>> +        addr = (addr & 0x1F) | ((addr & 0x007FFF000) >> 7);
>> +    }
>> +
>> +    address_space_read(&s->pci_io_as, addr + 0x80000000, buf, size);
>> +    memcpy(&val, buf, size);
>> +    return val;
>> +}
> 
> Since this is just forwarding accesses to another address
> space, I'm fairly sure you could do it with a suitable collection
> of alias and container memory regions.

Yes, aliases should probably work, but it won't be handy to create lots 
of them. Moreover, this function needs to be expanded later to handle an 
additional endianness switch, which will change both addresses and values...

> 
>> +
>> +static void prep_io_write(void *opaque, hwaddr addr,
>> +                          uint64_t val, unsigned int size)
>> +{
>> +    PREPPCIState *s = opaque;
>> +    uint8_t buf[4];
>> +
>> +    if (s->contiguous_map == 0) {
>> +        /* 64 KB contiguous space for IOs */
>> +        addr &= 0xFFFF;
>> +    } else {
>> +        /* 8 MB non-contiguous space for IOs */
>> +        addr = (addr & 0x1F) | ((addr & 0x007FFF000) >> 7);
>> +    }
>> +
>> +    memcpy(buf, &val, size);
>> +    address_space_write(&s->pci_io_as, addr + 0x80000000, buf, size);
>> +}
> 
> ...if you don't do it that way, please at least factor out the
> address conversion code from the read and write routines.

... So, yes, I'll put conversion code in a common routine.

Hervé

  reply	other threads:[~2013-09-02 21:18 UTC|newest]

Thread overview: 10+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-08-23 18:52 [Qemu-devel] [PATCH 0/3] prep: improve Raven PCI host emulation Hervé Poussineau
2013-08-23 18:52 ` [Qemu-devel] [PATCH 1/3] pci: remove explicit check to 64K ioport size Hervé Poussineau
2013-08-23 18:52 ` [Qemu-devel] [PATCH 2/3] prep: kill get_system_io() usage Hervé Poussineau
2013-08-23 18:52 ` [Qemu-devel] [PATCH 3/3] prep: improve Raven PCI host emulation Hervé Poussineau
2013-08-23 19:56   ` Richard Henderson
2013-09-02 20:26     ` Hervé Poussineau
2013-09-02 20:48       ` Peter Maydell
2013-09-02 20:59   ` Peter Maydell
2013-09-02 21:18     ` Hervé Poussineau [this message]
2013-09-02 21:34       ` Peter Maydell

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=52250089.3010901@reactos.org \
    --to=hpoussin@reactos.org \
    --cc=andreas.faerber@web.de \
    --cc=peter.maydell@linaro.org \
    --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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).