[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH v2 2/3] edu: mmio: allow mmio read dispatch acce
From: |
Li Qiang |
Subject: |
Re: [Qemu-devel] [PATCH v2 2/3] edu: mmio: allow mmio read dispatch accept 8 bytes |
Date: |
Mon, 22 Apr 2019 09:22:35 +0800 |
Philippe Mathieu-Daudé <address@hidden> 于2019年4月21日周日 下午6:44写道:
> Hi Li,
>
> On 4/20/19 6:14 PM, Li Qiang wrote:
> > The edu spec said when address >= 0x80, the MMIO area can
>
> "says"
>
> > be accessed by 8 bytes.
> >
> > Signed-off-by: Li Qiang <address@hidden>
> > ---
> > hw/misc/edu.c | 4 ++++
> > 1 file changed, 4 insertions(+)
> >
> > diff --git a/hw/misc/edu.c b/hw/misc/edu.c
> > index 65fc32b928..4018dddcb8 100644
> > --- a/hw/misc/edu.c
> > +++ b/hw/misc/edu.c
> > @@ -189,6 +189,10 @@ static uint64_t edu_mmio_read(void *opaque, hwaddr
> addr, unsigned size)
>
> Completing the diff ...:
>
> if (size != 4) {
>
> > return val;
> > }
> >
> > + if (addr >= 0x80 && size != 4 && size != 8) {
>
> ... to show this code is unreachable for size == 8.
>
>
Ohhh, yes
> > + return val;
> > + }
> > +
> > switch (addr) {
> > case 0x00:
> > val = 0x010000edu;
> >
>
> I think the change you wanted is:
>
> -- >8 --
> @@ -185,7 +185,11 @@ static uint64_t edu_mmio_read(void *opaque, hwaddr
> addr, unsigned size)
> EduState *edu = opaque;
> uint64_t val = ~0ULL;
>
> - if (size != 4) {
> + if (addr < 0x80 && size != 4) {
> + return val;
> + }
> +
> + if (addr >= 0x80 && size != 4 && size != 8) {
> return val;
> }
>
>
Yes, this is what I want. Thanks, will change to this in next revision.
Thanks,
Li Qiang
> ---
>
> Another cleaner way to solve this is use 2 MemoryRegionOps, one for the
> first 0x80 addresses and another for the rest.
>
> Regards,
>
> Phil.
>
[Qemu-devel] [PATCH v2 3/3] edu: uses uint64_t in dma operation, Li Qiang, 2019/04/20