* [Qemu-devel] [PATCH 1/2] loader: Add load_image_size() to replace load_image()
@ 2014-07-14 2:00 Benjamin Herrenschmidt
0 siblings, 0 replies; 3+ messages in thread
From: Benjamin Herrenschmidt @ 2014-07-14 2:00 UTC (permalink / raw)
To: qemu-devel; +Cc: Alexey Kardashevskiy, qemu-ppc, Alexander Graf, Paul Mackerras
A subsequent patch to ppc/spapr needs to load the RTAS blob into
qemu memory rather than target memory (so it can later be copied
into the right spot at machine reset time).
I would use load_image() but it is marked deprecated because it
doesn't take a buffer size as argument, so let's add load_image_size()
that does.
Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
---
hw/core/loader.c | 18 ++++++++++++++++++
include/hw/loader.h | 1 +
2 files changed, 19 insertions(+)
diff --git a/hw/core/loader.c b/hw/core/loader.c
index 2bf6b8f..06e8f1e 100644
--- a/hw/core/loader.c
+++ b/hw/core/loader.c
@@ -89,6 +89,24 @@ int load_image(const char *filename, uint8_t *addr)
return size;
}
+/* return the size or -1 if error */
+ssize_t load_image_size(const char *filename, void *addr, size_t size)
+{
+ int fd;
+ ssize_t actsize;
+
+ fd = open(filename, O_RDONLY | O_BINARY);
+ if (fd < 0)
+ return -1;
+ actsize = read(fd, addr, size);
+ if (actsize < 0) {
+ close(fd);
+ return -1;
+ }
+ close(fd);
+ return actsize;
+}
+
/* read()-like version */
ssize_t read_targphys(const char *name,
int fd, hwaddr dst_addr, size_t nbytes)
diff --git a/include/hw/loader.h b/include/hw/loader.h
index 796cbf9..991f84a 100644
--- a/include/hw/loader.h
+++ b/include/hw/loader.h
@@ -13,6 +13,7 @@
*/
int get_image_size(const char *filename);
int load_image(const char *filename, uint8_t *addr); /* deprecated */
+ssize_t load_image_size(const char *filename, void *addr, size_t size);
int load_image_targphys(const char *filename, hwaddr,
uint64_t max_sz);
^ permalink raw reply related [flat|nested] 3+ messages in thread
* [Qemu-devel] [PATCH 1/2] loader: Add load_image_size() to replace load_image()
@ 2014-07-14 2:00 Benjamin Herrenschmidt
0 siblings, 0 replies; 3+ messages in thread
From: Benjamin Herrenschmidt @ 2014-07-14 2:00 UTC (permalink / raw)
To: qemu-devel; +Cc: Alexey Kardashevskiy, qemu-ppc, Alexander Graf, Paul Mackerras
A subsequent patch to ppc/spapr needs to load the RTAS blob into
qemu memory rather than target memory (so it can later be copied
into the right spot at machine reset time).
I would use load_image() but it is marked deprecated because it
doesn't take a buffer size as argument, so let's add load_image_size()
that does.
Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
---
hw/core/loader.c | 18 ++++++++++++++++++
include/hw/loader.h | 1 +
2 files changed, 19 insertions(+)
diff --git a/hw/core/loader.c b/hw/core/loader.c
index 2bf6b8f..06e8f1e 100644
--- a/hw/core/loader.c
+++ b/hw/core/loader.c
@@ -89,6 +89,24 @@ int load_image(const char *filename, uint8_t *addr)
return size;
}
+/* return the size or -1 if error */
+ssize_t load_image_size(const char *filename, void *addr, size_t size)
+{
+ int fd;
+ ssize_t actsize;
+
+ fd = open(filename, O_RDONLY | O_BINARY);
+ if (fd < 0)
+ return -1;
+ actsize = read(fd, addr, size);
+ if (actsize < 0) {
+ close(fd);
+ return -1;
+ }
+ close(fd);
+ return actsize;
+}
+
/* read()-like version */
ssize_t read_targphys(const char *name,
int fd, hwaddr dst_addr, size_t nbytes)
diff --git a/include/hw/loader.h b/include/hw/loader.h
index 796cbf9..991f84a 100644
--- a/include/hw/loader.h
+++ b/include/hw/loader.h
@@ -13,6 +13,7 @@
*/
int get_image_size(const char *filename);
int load_image(const char *filename, uint8_t *addr); /* deprecated */
+ssize_t load_image_size(const char *filename, void *addr, size_t size);
int load_image_targphys(const char *filename, hwaddr,
uint64_t max_sz);
^ permalink raw reply related [flat|nested] 3+ messages in thread
* [Qemu-devel] [PATCH 0/2] spapr: Move rtas and device-tree higher
@ 2014-07-21 3:02 Alexey Kardashevskiy
2014-07-21 3:02 ` [Qemu-devel] [PATCH 1/2] loader: Add load_image_size() to replace load_image() Alexey Kardashevskiy
0 siblings, 1 reply; 3+ messages in thread
From: Alexey Kardashevskiy @ 2014-07-21 3:02 UTC (permalink / raw)
To: qemu-devel; +Cc: Alexey Kardashevskiy, qemu-ppc, Alexander Graf
At the moment RTAS and device tree are located at 256MB max
which leaves too little space for huge initramdisk images and kernels.
This relaxes the limitation.
This is checkpatch.pl'ed version of:
[PATCH 1/2] loader: Add load_image_size() to replace load_image()
[PATCH 2/2] ppc/spapr: Locate RTAS and device-tree based on real RMA
Please comment. Thanks.
Benjamin Herrenschmidt (2):
loader: Add load_image_size() to replace load_image()
spapr: Locate RTAS and device-tree based on real RMA
hw/core/loader.c | 21 +++++++++++++++++++++
hw/ppc/spapr.c | 32 +++++++++++++++++++++-----------
include/hw/loader.h | 1 +
include/hw/ppc/spapr.h | 3 ++-
4 files changed, 45 insertions(+), 12 deletions(-)
--
2.0.0
^ permalink raw reply [flat|nested] 3+ messages in thread
* [Qemu-devel] [PATCH 1/2] loader: Add load_image_size() to replace load_image()
2014-07-21 3:02 [Qemu-devel] [PATCH 0/2] spapr: Move rtas and device-tree higher Alexey Kardashevskiy
@ 2014-07-21 3:02 ` Alexey Kardashevskiy
0 siblings, 0 replies; 3+ messages in thread
From: Alexey Kardashevskiy @ 2014-07-21 3:02 UTC (permalink / raw)
To: qemu-devel; +Cc: Alexey Kardashevskiy, qemu-ppc, Alexander Graf
From: Benjamin Herrenschmidt <benh@kernel.crashing.org>
A subsequent patch to ppc/spapr needs to load the RTAS blob into
qemu memory rather than target memory (so it can later be copied
into the right spot at machine reset time).
I would use load_image() but it is marked deprecated because it
doesn't take a buffer size as argument, so let's add load_image_size()
that does.
Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
[aik: fixed errors from checkpatch.pl]
Signed-off-by: Alexey Kardashevskiy <aik@ozlabs.ru>
---
hw/core/loader.c | 21 +++++++++++++++++++++
include/hw/loader.h | 1 +
2 files changed, 22 insertions(+)
diff --git a/hw/core/loader.c b/hw/core/loader.c
index 2bf6b8f..5e2b6cd 100644
--- a/hw/core/loader.c
+++ b/hw/core/loader.c
@@ -89,6 +89,27 @@ int load_image(const char *filename, uint8_t *addr)
return size;
}
+/* return the size or -1 if error */
+ssize_t load_image_size(const char *filename, void *addr, size_t size)
+{
+ int fd;
+ ssize_t actsize;
+
+ fd = open(filename, O_RDONLY | O_BINARY);
+ if (fd < 0) {
+ return -1;
+ }
+
+ actsize = read(fd, addr, size);
+ if (actsize < 0) {
+ close(fd);
+ return -1;
+ }
+ close(fd);
+
+ return actsize;
+}
+
/* read()-like version */
ssize_t read_targphys(const char *name,
int fd, hwaddr dst_addr, size_t nbytes)
diff --git a/include/hw/loader.h b/include/hw/loader.h
index 796cbf9..991f84a 100644
--- a/include/hw/loader.h
+++ b/include/hw/loader.h
@@ -13,6 +13,7 @@
*/
int get_image_size(const char *filename);
int load_image(const char *filename, uint8_t *addr); /* deprecated */
+ssize_t load_image_size(const char *filename, void *addr, size_t size);
int load_image_targphys(const char *filename, hwaddr,
uint64_t max_sz);
--
2.0.0
^ permalink raw reply related [flat|nested] 3+ messages in thread
end of thread, other threads:[~2014-07-21 3:02 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2014-07-14 2:00 [Qemu-devel] [PATCH 1/2] loader: Add load_image_size() to replace load_image() Benjamin Herrenschmidt
-- strict thread matches above, loose matches on Subject: below --
2014-07-14 2:00 Benjamin Herrenschmidt
2014-07-21 3:02 [Qemu-devel] [PATCH 0/2] spapr: Move rtas and device-tree higher Alexey Kardashevskiy
2014-07-21 3:02 ` [Qemu-devel] [PATCH 1/2] loader: Add load_image_size() to replace load_image() Alexey Kardashevskiy
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).