From: Stefan Weil <Stefan.Weil@weilnetz.de>
To: qemu-devel@nongnu.org
Subject: Re: [Qemu-devel] [PATCH] Fix GT64120 PCI IO mapping update
Date: Wed, 18 Apr 2007 19:38:29 +0200 [thread overview]
Message-ID: <46265795.5090609@weilnetz.de> (raw)
In-Reply-To: <20070415144634.GA23661@amd64.aurel32.net>
[-- Attachment #1: Type: text/plain, Size: 1676 bytes --]
Hi,
Aurelien's patch is still missing in CVS HEAD.
I resend it here with a small address fix.
Please add this patch to CVS. It is needed for PCI devices like
those in eepro100.c.
Thank you
Stefan
Aurelien Jarno schrieb:
> I don't have such messages in the build log. I am using a 2.6.18 kernel,
> whereas you are using a 2.6.20. May that explain the difference? Or
> maybe you have enable some debug flags in the kernel?
I have enabled the debug flag for PCI.
>
> The problem may be due to the fact YAMON (and probably redboot)
> initializes the GT64120 BAR registers to different values than the
> default one. As we are booting the kernel directly, the values are
> wrong. The patch below does the same thing as YAMON in the pseudo
> bootloader.
... and it works!
>
> Cheers,
> Aurelien
>
>
> Index: hw/mips_malta.c
> ===================================================================
> RCS file: /sources/qemu/qemu/hw/mips_malta.c,v
> retrieving revision 1.23
> diff -u -d -p -r1.23 mips_malta.c
> --- hw/mips_malta.c 7 Apr 2007 18:14:41 -0000 1.23
> +++ hw/mips_malta.c 15 Apr 2007 14:40:34 -0000
> @@ -548,6 +548,50 @@ static void write_bootloader (CPUState *
> stl_raw(p++, 0x34c60000 | ((ENVP_ADDR + 8) & 0xffff)); /* ori a2, a2,
> low(ENVP_ADDR + 8) */
> stl_raw(p++, 0x3c070000 | (env->ram_size >> 16)); /* lui a3,
> high(env->ram_size) */
> stl_raw(p++, 0x34e70000 | (env->ram_size & 0xffff)); /* ori a3, a3,
> low(env->ram_size) */
> +
> + /* Load BAR registers as done by YAMON */
> + stl_raw(p++, 0x3c091be0); /* lui t1, 0x1be0 */
I had to replace 0x1be0 by 0xbbe0.
> +
> +#ifdef TARGET_WORDS_BIGENDIAN
> + stl_raw(p++, 0x3c08c000); /* lui t0, 0xc000 */
[-- Attachment #2: mips_malta.patch --]
[-- Type: text/x-diff, Size: 3010 bytes --]
Index: hw/mips_malta.c
===================================================================
RCS file: /sources/qemu/qemu/hw/mips_malta.c,v
retrieving revision 1.23
diff -u -b -B -r1.23 mips_malta.c
--- hw/mips_malta.c 7 Apr 2007 18:14:41 -0000 1.23
+++ hw/mips_malta.c 18 Apr 2007 17:26:44 -0000
@@ -548,6 +548,50 @@
stl_raw(p++, 0x34c60000 | ((ENVP_ADDR + 8) & 0xffff)); /* ori a2, a2, low(ENVP_ADDR + 8) */
stl_raw(p++, 0x3c070000 | (env->ram_size >> 16)); /* lui a3, high(env->ram_size) */
stl_raw(p++, 0x34e70000 | (env->ram_size & 0xffff)); /* ori a3, a3, low(env->ram_size) */
+
+ /* Load BAR registers as done by YAMON */
+ stl_raw(p++, 0x3c09bbe0); /* lui t1, 0xbbe0 */
+
+#ifdef TARGET_WORDS_BIGENDIAN
+ stl_raw(p++, 0x3c08c000); /* lui t0, 0xc000 */
+#else
+ stl_raw(p++, 0x340800c0); /* ori t0, r0, 0x00c0 */
+#endif
+ stl_raw(p++, 0xad280048); /* sw t0, 0x0048(t1) */
+#ifdef TARGET_WORDS_BIGENDIAN
+ stl_raw(p++, 0x3c084000); /* lui t0, 0x4000 */
+#else
+ stl_raw(p++, 0x34080040); /* ori t0, r0, 0x0040 */
+#endif
+ stl_raw(p++, 0xad280050); /* sw t0, 0x0050(t1) */
+
+#ifdef TARGET_WORDS_BIGENDIAN
+ stl_raw(p++, 0x3c088000); /* lui t0, 0x8000 */
+#else
+ stl_raw(p++, 0x34080080); /* ori t0, r0, 0x0080 */
+#endif
+ stl_raw(p++, 0xad280058); /* sw t0, 0x0058(t1) */
+#ifdef TARGET_WORDS_BIGENDIAN
+ stl_raw(p++, 0x3c083f00); /* lui t0, 0x3f00 */
+#else
+ stl_raw(p++, 0x3408003f); /* ori t0, r0, 0x003f */
+#endif
+ stl_raw(p++, 0xad280060); /* sw t0, 0x0060(t1) */
+
+#ifdef TARGET_WORDS_BIGENDIAN
+ stl_raw(p++, 0x3c08c100); /* lui t0, 0xc100 */
+#else
+ stl_raw(p++, 0x340800c1); /* ori t0, r0, 0x00c1 */
+#endif
+ stl_raw(p++, 0xad280080); /* sw t0, 0x0080(t1) */
+#ifdef TARGET_WORDS_BIGENDIAN
+ stl_raw(p++, 0x3c085e00); /* lui t0, 0x5e00 */
+#else
+ stl_raw(p++, 0x3408005e); /* ori t0, r0, 0x005e */
+#endif
+ stl_raw(p++, 0xad280088); /* sw t0, 0x0088(t1) */
+
+ /* Jump to kernel code */
stl_raw(p++, 0x3c1f0000 | ((kernel_entry >> 16) & 0xffff)); /* lui ra, high(kernel_entry) */
stl_raw(p++, 0x37ff0000 | (kernel_entry & 0xffff)); /* ori ra, ra, low(kernel_entry) */
stl_raw(p++, 0x03e00008); /* jr ra */
prev parent reply other threads:[~2007-04-18 17:43 UTC|newest]
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
2007-02-28 11:18 [Qemu-devel] [PATCH] Fix GT64120 PCI IO mapping update Aurelien Jarno
2007-04-15 13:07 ` Stefan Weil
2007-04-15 14:46 ` Aurelien Jarno
2007-04-15 15:36 ` Stefan Weil
2007-04-18 17:38 ` Stefan Weil [this message]
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=46265795.5090609@weilnetz.de \
--to=stefan.weil@weilnetz.de \
--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).