qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
From: BALATON Zoltan <balaton@eik.bme.hu>
To: P J P <ppandit@redhat.com>
Cc: Ren Ding <rding@gatech.edu>, Yi Ren <c4tren@gmail.com>,
	Gerd Hoffmann <kraxel@redhat.com>,
	Hanqing Zhao <hanqing@gatech.edu>,
	QEMU Developers <qemu-devel@nongnu.org>
Subject: Re: [PATCH] ati-vga: increment mm_index in ati_mm_read/write
Date: Wed, 3 Jun 2020 17:38:31 +0200 (CEST)	[thread overview]
Message-ID: <alpine.BSF.2.22.395.2006031727180.57649@zero.eik.bme.hu> (raw)
In-Reply-To: <nycvar.YSQ.7.77.849.2006031952260.62159@xnncv>

On Wed, 3 Jun 2020, P J P wrote:
> +-- On Wed, 3 Jun 2020, Gerd Hoffmann wrote --+
> | Hmm, why modify mm_index?  Shouldn't we just check it is non-zero
> | before calling ati_mm_read/ati_mm_write?
>
>  if (s->regs.mm_index & BIT(31)) {
>     ...
>  } else {
>     ati_mm_write(s, s->regs.mm_index + addr - MM_DATA, data, size);
>  }
>
> Exit condition for recursion is to set (mm_index & BIT(31)), so recursion
> would continue even with non-zero values I think.

MM_INDEX and MM_DATA allows access to registers (or memory if BIT(31) is 
set) via only these two registers. This is called indexed access in docs. 
So it does not really make sense to allow access to these registers as 
well thus we can avoid infinite recursion. It's not meant to recurse until 
BIT(31) is set. I think you can do:

   if (s->regs.mm_index & BIT(31)) {
      ...
-  } else {
+  } else if (s->regs.mm_index >= BIOS_0_SCRATCH) {
      ati_mm_write(s, s->regs.mm_index + addr - MM_DATA, data, size);
   }

and do the same in ati_mm_read() as well.

Regards,
BALATON Zoltan


  parent reply	other threads:[~2020-06-03 15:39 UTC|newest]

Thread overview: 8+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-06-03 12:47 [PATCH] ati-vga: increment mm_index in ati_mm_read/write P J P
2020-06-03 13:44 ` Gerd Hoffmann
2020-06-03 13:56   ` BALATON Zoltan
2020-06-03 14:35   ` P J P
2020-06-03 15:32     ` Gerd Hoffmann
2020-06-03 15:38     ` BALATON Zoltan [this message]
2020-06-03 15:43       ` BALATON Zoltan
2020-06-03 19:08         ` P J P

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=alpine.BSF.2.22.395.2006031727180.57649@zero.eik.bme.hu \
    --to=balaton@eik.bme.hu \
    --cc=c4tren@gmail.com \
    --cc=hanqing@gatech.edu \
    --cc=kraxel@redhat.com \
    --cc=ppandit@redhat.com \
    --cc=qemu-devel@nongnu.org \
    --cc=rding@gatech.edu \
    /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).