From: "Andreas Färber" <afaerber@suse.de>
To: Leon Alrae <leon.alrae@imgtec.com>, aurelien@aurel32.net
Cc: paul.burton@imgtec.com, qemu-devel@nongnu.org,
Anthony Liguori <anthony@codemonkey.ws>,
yongbok.kim@imgtec.com, Paolo Bonzini <pbonzini@redhat.com>,
cristian.cuna@imgtec.com
Subject: Re: [Qemu-devel] [PATCH 2/6] mips_malta: correct reading MIPS revision at 0x1fc00010
Date: Mon, 29 Jul 2013 06:33:29 +0200 [thread overview]
Message-ID: <51F5F099.4030504@suse.de> (raw)
In-Reply-To: <1371195048-19618-3-git-send-email-leon.alrae@imgtec.com>
Am 14.06.2013 09:30, schrieb Leon Alrae:
> From: Paul Burton <paul.burton@imgtec.com>
>
> Rather than modifying the BIOS code at its original location, copy it
> for the 0x1fc00000 region & modify the copy. This means the original
> ROM code is correctly readable at 0x1e000010 whilst the MIPS revision
> is readable at 0x1fc00010.
>
> Additionally the code previously operated on target memory which would
> later be overwritten by the BIOS image upon CPU reset if the -bios
> argument was used to specify the BIOS image. This led to the written
> MIPS revision being lost. Copying using rom_copy when -bios is used
> fixes this issue.
>
> Signed-off-by: Paul Burton <paul.burton@imgtec.com>
> Signed-off-by: Leon Alrae <leon.alrae@imgtec.com>
> ---
> hw/mips/mips_malta.c | 25 +++++++++++++++++--------
> 1 files changed, 17 insertions(+), 8 deletions(-)
For some reason this commit breaks `make check`, please revert or fix.
Andreas
>
> diff --git a/hw/mips/mips_malta.c b/hw/mips/mips_malta.c
> index 4def898..9117ae4 100644
> --- a/hw/mips/mips_malta.c
> +++ b/hw/mips/mips_malta.c
> @@ -789,7 +789,7 @@ void mips_malta_init(QEMUMachineInitArgs *args)
> pflash_t *fl;
> MemoryRegion *system_memory = get_system_memory();
> MemoryRegion *ram = g_new(MemoryRegion, 1);
> - MemoryRegion *bios, *bios_alias = g_new(MemoryRegion, 1);
> + MemoryRegion *bios, *bios_copy = g_new(MemoryRegion, 1);
> target_long bios_size = FLASH_SIZE;
> int64_t kernel_entry;
> PCIBus *pci_bus;
> @@ -929,14 +929,23 @@ void mips_malta_init(QEMUMachineInitArgs *args)
> #endif
> }
>
> - /* Map the BIOS at a 2nd physical location, as on the real board. */
> - memory_region_init_alias(bios_alias, "bios.1fc", bios, 0, BIOS_SIZE);
> - memory_region_add_subregion(system_memory, RESET_ADDRESS, bios_alias);
> + /*
> + * Map the BIOS at a 2nd physical location, as on the real board.
> + * Copy it so that we can patch in the MIPS revision, which cannot be
> + * handled by an overlapping region as the resulting ROM code subpage
> + * regions are not executable.
> + */
> + memory_region_init_ram(bios_copy, "bios.1fc", BIOS_SIZE);
> + if (!rom_copy(memory_region_get_ram_ptr(bios_copy),
> + FLASH_ADDRESS, bios_size)) {
> + memcpy(memory_region_get_ram_ptr(bios_copy),
> + memory_region_get_ram_ptr(bios), bios_size);
> + }
> + memory_region_set_readonly(bios_copy, true);
> + memory_region_add_subregion(system_memory, RESET_ADDRESS, bios_copy);
>
> - /* Board ID = 0x420 (Malta Board with CoreLV)
> - XXX: theoretically 0x1e000010 should map to flash and 0x1fc00010 should
> - map to the board ID. */
> - stl_p(memory_region_get_ram_ptr(bios) + 0x10, 0x00000420);
> + /* Board ID = 0x420 (Malta Board with CoreLV) */
> + stl_p(memory_region_get_ram_ptr(bios_copy) + 0x10, 0x00000420);
>
> /* Init internal devices */
> cpu_mips_irq_init_cpu(env);
>
--
SUSE LINUX Products GmbH, Maxfeldstr. 5, 90409 Nürnberg, Germany
GF: Jeff Hawn, Jennifer Guild, Felix Imendörffer; HRB 16746 AG Nürnberg
next prev parent reply other threads:[~2013-07-29 4:33 UTC|newest]
Thread overview: 11+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-06-14 7:30 [Qemu-devel] [PATCH 0/6] mips_malta: fixes to support YAMON firmware Leon Alrae
2013-06-14 7:30 ` [Qemu-devel] [PATCH 1/6] mips_malta: fix BIOS endianness swapping Leon Alrae
2013-06-14 7:30 ` [Qemu-devel] [PATCH 2/6] mips_malta: correct reading MIPS revision at 0x1fc00010 Leon Alrae
2013-07-29 4:33 ` Andreas Färber [this message]
2013-06-14 7:30 ` [Qemu-devel] [PATCH 3/6] mips_malta: generate SPD EEPROM data at runtime Leon Alrae
2013-06-14 7:30 ` [Qemu-devel] [PATCH 4/6] mips_malta: cap BIOS endian swap length at 0x3e0000 bytes Leon Alrae
2013-06-14 7:30 ` [Qemu-devel] [PATCH 5/6] mips_malta: generate SMBUS EEPROM data Leon Alrae
2013-06-14 7:30 ` [Qemu-devel] [PATCH 6/6] pflash_cfi01: duplicate status byte from bits 23:16 for 32bit reads Leon Alrae
2013-06-28 13:20 ` [Qemu-devel] [PATCH 0/6] mips_malta: fixes to support YAMON firmware Leon Alrae
2013-07-18 7:34 ` Leon Alrae
2013-07-28 22:24 ` Aurelien Jarno
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=51F5F099.4030504@suse.de \
--to=afaerber@suse.de \
--cc=anthony@codemonkey.ws \
--cc=aurelien@aurel32.net \
--cc=cristian.cuna@imgtec.com \
--cc=leon.alrae@imgtec.com \
--cc=paul.burton@imgtec.com \
--cc=pbonzini@redhat.com \
--cc=qemu-devel@nongnu.org \
--cc=yongbok.kim@imgtec.com \
/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.