[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH 08/12] spapr-rtas: use hypercall interface and remov
From: |
Anthony Liguori |
Subject: |
[Qemu-devel] [PATCH 08/12] spapr-rtas: use hypercall interface and remove special vty interfaces |
Date: |
Wed, 19 Jun 2013 15:40:31 -0500 |
Signed-off-by: Anthony Liguori <address@hidden>
---
hw/char/spapr_vty.c | 36 ++++++++++++++++++------------------
hw/ppc/spapr_rtas.c | 18 ++++++++++--------
include/hw/ppc/spapr_vio.h | 2 --
3 files changed, 28 insertions(+), 28 deletions(-)
diff --git a/hw/char/spapr_vty.c b/hw/char/spapr_vty.c
index ecc2bb5..4bac79e 100644
--- a/hw/char/spapr_vty.c
+++ b/hw/char/spapr_vty.c
@@ -63,7 +63,7 @@ static int vty_getchars(VIOsPAPRDevice *sdev, uint8_t *buf,
int max)
return n;
}
-void vty_putchars(VIOsPAPRDevice *sdev, uint8_t *buf, int len)
+static void vty_putchars(VIOsPAPRDevice *sdev, uint8_t *buf, int len)
{
VIOsPAPRVTYDevice *dev = VIO_SPAPR_VTY_DEVICE(sdev);
@@ -86,6 +86,23 @@ static int spapr_vty_init(VIOsPAPRDevice *sdev)
return 0;
}
+static VIOsPAPRDevice *vty_lookup(sPAPREnvironment *spapr, target_ulong reg)
+{
+ VIOsPAPRDevice *sdev;
+
+ sdev = spapr_vio_find_by_reg(spapr->vio_bus, reg);
+ if (!sdev && reg == 0) {
+ /* Hack for kernel early debug, which always specifies reg==0.
+ * We search all VIO devices, and grab the vty with the lowest
+ * reg. This attempts to mimic existing PowerVM behaviour
+ * (early debug does work there, despite having no vty with
+ * reg==0. */
+ return spapr_vty_get_default(spapr->vio_bus);
+ }
+
+ return sdev;
+}
+
/* Forward declaration */
static target_ulong h_put_term_char(PowerPCCPU *cpu, sPAPREnvironment *spapr,
target_ulong opcode, target_ulong *args)
@@ -211,23 +228,6 @@ VIOsPAPRDevice *spapr_vty_get_default(VIOsPAPRBus *bus)
return selected;
}
-VIOsPAPRDevice *vty_lookup(sPAPREnvironment *spapr, target_ulong reg)
-{
- VIOsPAPRDevice *sdev;
-
- sdev = spapr_vio_find_by_reg(spapr->vio_bus, reg);
- if (!sdev && reg == 0) {
- /* Hack for kernel early debug, which always specifies reg==0.
- * We search all VIO devices, and grab the vty with the lowest
- * reg. This attempts to mimic existing PowerVM behaviour
- * (early debug does work there, despite having no vty with
- * reg==0. */
- return spapr_vty_get_default(spapr->vio_bus);
- }
-
- return sdev;
-}
-
static void spapr_vty_register_types(void)
{
spapr_register_hypercall(H_PUT_TERM_CHAR, h_put_term_char);
diff --git a/hw/ppc/spapr_rtas.c b/hw/ppc/spapr_rtas.c
index 5887e04..019aed5 100644
--- a/hw/ppc/spapr_rtas.c
+++ b/hw/ppc/spapr_rtas.c
@@ -44,14 +44,16 @@ static void rtas_display_character(PowerPCCPU *cpu,
sPAPREnvironment *spapr,
uint32_t nret, target_ulong rets)
{
uint8_t c = rtas_ld(args, 0);
- VIOsPAPRDevice *sdev = vty_lookup(spapr, 0);
-
- if (!sdev) {
- rtas_st(rets, 0, -1);
- } else {
- vty_putchars(sdev, &c, sizeof(c));
- rtas_st(rets, 0, 0);
- }
+ target_ulong hargs[4] = {
+ 0, /* reg=0 */
+ 1, /* len=1 */
+ (uint64_t)c << 56, /* data */
+ 0 /* data */
+ };
+ target_ulong ret;
+
+ ret = spapr_hypercall(cpu, H_PUT_TERM_CHAR, hargs);
+ rtas_st(rets, 0, ret);
}
static void rtas_get_time_of_day(PowerPCCPU *cpu, sPAPREnvironment *spapr,
diff --git a/include/hw/ppc/spapr_vio.h b/include/hw/ppc/spapr_vio.h
index f98ec0a..817f5ff 100644
--- a/include/hw/ppc/spapr_vio.h
+++ b/include/hw/ppc/spapr_vio.h
@@ -123,8 +123,6 @@ static inline int spapr_vio_dma_set(VIOsPAPRDevice *dev,
uint64_t taddr,
int spapr_vio_send_crq(VIOsPAPRDevice *dev, uint8_t *crq);
-VIOsPAPRDevice *vty_lookup(sPAPREnvironment *spapr, target_ulong reg);
-void vty_putchars(VIOsPAPRDevice *sdev, uint8_t *buf, int len);
void spapr_vty_create(VIOsPAPRBus *bus, CharDriverState *chardev);
void spapr_vlan_create(VIOsPAPRBus *bus, NICInfo *nd);
void spapr_vscsi_create(VIOsPAPRBus *bus);
--
1.8.0
- Re: [Qemu-devel] [PATCH 06/12] spapr-vty: add copyright and license, (continued)
[Qemu-devel] [PATCH 08/12] spapr-rtas: use hypercall interface and remove special vty interfaces,
Anthony Liguori <=
[Qemu-devel] [PATCH 12/12] spapr-vty: remove unfixable FIXME, Anthony Liguori, 2013/06/19
[Qemu-devel] [PATCH 10/12] spapr-vty: refactor the code to improve consistency, Anthony Liguori, 2013/06/19
[Qemu-devel] [PATCH 04/12] qtest: add interface to save/restore, Anthony Liguori, 2013/06/19
[Qemu-devel] [PATCH 07/12] spapr-rtas: add CPU argument to RTAS calls, Anthony Liguori, 2013/06/19