qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
From: Blue Swirl <blauwirbel@gmail.com>
To: Richard Henderson <rth@twiddle.net>
Cc: agraf@suse.de, qemu-devel@nongnu.org, paul@codesourcery.com
Subject: Re: [Qemu-devel] [PATCH 0/2] [RFC] 64-bit io paths
Date: Thu, 22 Apr 2010 22:38:06 +0300	[thread overview]
Message-ID: <y2rf43fc5581004221238y46f4f200yb75edaa8af2cedfd@mail.gmail.com> (raw)
In-Reply-To: <cover.1271795219.git.rth@twiddle.net>

On 4/20/10, Richard Henderson <rth@twiddle.net> wrote:
> Step 1 to implementing alpha-softmmu is to properly handle 64-bit
>  I/O operations.  Tristan Gingold managed a hack where he buffered
>  half of the I/O operation in the host bridge; I think that's not
>  something we want to encourage.
>
>  I'm a bit confused about IO_MEM_SUBWIDTH and subpage_register, and
>  why things are done the way that they are.  The loop in subpage_register
>  appears to be written to support different devices at the same I/O
>  address so long as they use different access widths.  Is this really
>  a consideration to how this code is written?  Are there really systems
>  that need to support this?

Subpages are used when there are several devices on the same page.
It's needed for at least Sparc32.

Subwidth (with NULL) is used mainly to indicate that the device does
not accept accesses in some access widths. Sparc32 and Sparc64 need
this (or some other way to signal bus errors for bad access widths).

In fact, many system devices on Sparc64 should only accept 64 bit
accesses, but currently we can't enforce this.

>  From what I know about PCI this isn't possible with that bus, so this
>  isn't something that's going to appear on PCs.  So if true, it's got
>  to be some strange embedded weirdness.

I would not call for example Enterprise M9000 an embedded system.

>  I've reviewed all of the devices in hw/.  Almost all of them have
>  non-zero values for all entries.  The ones that do have zeros are:
>
>   axis_dev88.c; gpio
>   eccmemctl.c; ecc, ecc_diag
>   escc.c; escc
>   esp.c; esp
>   etraxfs_eth.c; eth
>   etraxfs_pic.c; pic
>   etraxfs_ser.c; ser
>   etraxfs_timer.c; timer
>   fdc.c; fdctrl_mem_read_strict
>   fw_cfg.c; fw_cfg_ctl_mem, fw_cfg_data_mem
>   hpet.c; hpet_ram
>   lance.c; lance_mem
>   mac_dbdma.c; dbdma
>   mips_jazz.c; dma_dummy_read
>   r2d.c; r2d_fpga
>   sbi.c; sbi_mem
>   sh_pci.c; sh_pci
>   slavio_intctl.c; slavio_intctl, slavio_intctlm
>   slabio_misc.c; slavio_cfg_mem, etc.
>   sm501.c; sm501_system_config, sm501_disp_ctrl
>   sparc32_dma.c; dma_mem
>   sun4c_intctl.c; sun4c_intctl
>   sun4m_iommu.c; iommu_mem
>   tcx.c; tcx_dac, tcx_dummy
>   xilinx_ethlite.c; eth, pic
>   xilinx_timer.c; timer
>
>  Some of the ones that are obviously to be used together (e.g. etraxfs*
>  and xilinx*) exclusively use one access method (e.g. readb or readl),
>  which indicates that they cannot be using overlapping addresses.
>
>  Some of the others (e.g. hpet.c) it is obvious via surrounding context
>  that the driver author assumed that the "functions may be NULL" comment
>  above cpu_register_io_memory meant that accesses that are undefined
>  need not be implemented.  (This is what I assumed when I first read
>  that comment as well.)
>
>  So...  What's supposed to be going on here?
>
>  For what it's worth, this patch series has been tested with arm-test,
>  sparc-test, coldfire-test from the qemu downloads page, as well as
>  with a full Fedora and WinNT system boots.  The second patch has not
>  been properly tested beyond compile, obviously, since there are not
>  yet any drivers that implement the hook.
>
>
>  r~
>
>
>  Richard Henderson (2):
>   io: Add CPUIOMemoryOps and use it.
>   io: Add readq/writeq hooks and use them.
>
>   cpu-common.h       |   19 ++-
>   exec-all.h         |    3 +-
>   exec.c             |  425 +++++++++++++++++++++++++++++++++-------------------
>   softmmu_template.h |   40 ++++--
>   4 files changed, 320 insertions(+), 167 deletions(-)
>
>
>
>

  parent reply	other threads:[~2010-04-22 19:38 UTC|newest]

Thread overview: 19+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2010-04-20 20:26 [Qemu-devel] [PATCH 0/2] [RFC] 64-bit io paths Richard Henderson
2010-04-20 19:54 ` [Qemu-devel] [PATCH 1/2] io: Add CPUIOMemoryOps and use it Richard Henderson
2010-04-20 20:22 ` [Qemu-devel] [PATCH 2/2] io: Add readq/writeq hooks and use them Richard Henderson
2010-04-22 19:38 ` Blue Swirl [this message]
2010-04-22 19:55   ` [Qemu-devel] [PATCH 0/2] [RFC] 64-bit io paths Richard Henderson
2010-04-22 20:01     ` Blue Swirl
2010-04-22 21:19       ` Richard Henderson
2010-04-23 18:30         ` Blue Swirl
2010-05-28 20:45         ` Paul Brook
2010-04-22 23:47     ` [Qemu-devel] [PATCH] Remove IO_MEM_SUBWIDTH Richard Henderson
2010-04-25 15:06       ` [Qemu-devel] " Blue Swirl
2010-04-26 21:54         ` Artyom Tarasenko
2010-04-27 18:30           ` Richard Henderson
2010-04-28 19:29             ` Artyom Tarasenko
2010-05-06 20:25               ` Artyom Tarasenko
2010-05-07 15:28                 ` Blue Swirl
2010-05-07 16:52                   ` [Qemu-devel] [PATCH] Fill in unassigned mem read/write callbacks Richard Henderson
2010-05-07 17:02                     ` [Qemu-devel] " Blue Swirl
  -- strict thread matches above, loose matches on Subject: below --
2010-05-28 21:03 [Qemu-devel] [PATCH 0/2] [RFC] 64-bit io paths Paul Brook

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=y2rf43fc5581004221238y46f4f200yb75edaa8af2cedfd@mail.gmail.com \
    --to=blauwirbel@gmail.com \
    --cc=agraf@suse.de \
    --cc=paul@codesourcery.com \
    --cc=qemu-devel@nongnu.org \
    --cc=rth@twiddle.net \
    /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).