From: Thorsten Zitterell <the.real.hik@gmx.net>
To: qemu-devel@nongnu.org
Subject: [Qemu-devel] Fatal error on accessing IO memory of smc91c111 NIC
Date: Mon, 25 May 2009 13:53:24 +0200 [thread overview]
Message-ID: <4A1A86B4.4010200@gmx.net> (raw)
Hi,
there seems to be a problem when accessing the IO memory of an emulated gumstix
(PXA) with smc91c111 NIC. I suspect that it has to do with the base address
which is not a multiple of the page size. Here, the NIC is registered at base
address 0x04000300:
smc91c111_init(&nd_table[0], 0x04000300,
pxa2xx_gpio_in_get(cpu->gpio)[99]);
According to the last two lines of qemu.log, the NIC is correctly accessed
during guest system boot at address 0400030e (r4+#14):
0xa3f07fdc: strh r5, [r4, #14]
0xa3f07fe0: bl 0xa3f00f5c
Then, qemu panics:
qemu: fatal: smc91c111_write: Bad reg 0:30e
R00=a3ee01f0 R01=a3edefb8 R02=00000001 R03=00008000
R04=04000300 R05=00000000 R06=a3edefb8 R07=a3edefb8
R08=a3edefdc R09=a3ee0230 R10=a3ee01f0 R11=00000000
R12=a3f27488 R13=a3edec34 R14=a3f04148 R15=a3f07fac
PSR=600001d3 -ZC- A svc32
However, the correct reg should be 0:0e - not 0:30e. The fatal error also occurs
with disabled MMU. I have debugged the smc91c111 driver and it gets the wrong
offset value from the calling qemu core.
Could this wrong offset be related cpu_register_physical_memory_offset(...) as
addresses are rounded down to page boundaries?
exec.c:2325:
/* register physical memory. 'size' must be a multiple of the target
page size. If (phys_offset & ~TARGET_PAGE_MASK) != 0, then it is an
io memory page. The address used when calling the IO function is
the offset from the start of the region, plus region_offset. Both
start_addr and region_offset are rounded down to a page boundary
before calculating this offset. This should not be a problem unless
the low bits of start_addr and region_offset differ. */
Can this be fixed by another driver initialization?
Thorsten
reply other threads:[~2009-05-25 11:53 UTC|newest]
Thread overview: [no followups] expand[flat|nested] mbox.gz Atom feed
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=4A1A86B4.4010200@gmx.net \
--to=the.real.hik@gmx.net \
--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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.