[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH v2 13/14] spapr_events: event-scan RTAS interfac
From: |
Alexey Kardashevskiy |
Subject: |
Re: [Qemu-devel] [PATCH v2 13/14] spapr_events: event-scan RTAS interface |
Date: |
Mon, 16 Dec 2013 15:57:53 +1100 |
User-agent: |
Mozilla/5.0 (X11; Linux i686 on x86_64; rv:24.0) Gecko/20100101 Thunderbird/24.2.0 |
On 12/06/2013 09:33 AM, Michael Roth wrote:
> From: Tyrel Datwyler <address@hidden>
>
> We don't actually rely on this interface to surface hotplug events, and
> instead rely on the similar-but-interrupt-driven check-exception RTAS
> interface used for EPOW events. However, the existence of this interface
> is needed to ensure guest kernels initialize the event-reporting
> interfaces which will in turn be used by userspace tools to handle these
> events, so we implement this interface as a stub.
>
> Signed-off-by: Tyrel Datwyler <address@hidden>
> Signed-off-by: Michael Roth <address@hidden>
> ---
> hw/ppc/spapr.c | 1 +
> hw/ppc/spapr_events.c | 9 +++++++++
> include/hw/ppc/spapr.h | 2 ++
> 3 files changed, 12 insertions(+)
>
> diff --git a/hw/ppc/spapr.c b/hw/ppc/spapr.c
> index 7079e4e..e7a249b 100644
> --- a/hw/ppc/spapr.c
> +++ b/hw/ppc/spapr.c
> @@ -643,6 +643,7 @@ static void *spapr_create_fdt_skel(hwaddr initrd_base,
> refpoints, sizeof(refpoints))));
>
> _FDT((fdt_property_cell(fdt, "rtas-error-log-max", RTAS_ERROR_LOG_MAX)));
> + _FDT((fdt_property_cell(fdt, "rtas-event-scan-rate",
> RTAS_EVENT_SCAN_RATE)));
>
> _FDT((fdt_end_node(fdt)));
>
> diff --git a/hw/ppc/spapr_events.c b/hw/ppc/spapr_events.c
> index 9dfdbcf..69211c5 100644
> --- a/hw/ppc/spapr_events.c
> +++ b/hw/ppc/spapr_events.c
> @@ -453,10 +453,19 @@ static void check_exception(PowerPCCPU *cpu,
> sPAPREnvironment *spapr,
> }
> }
>
> +static void event_scan(PowerPCCPU *cpu, sPAPREnvironment *spapr,
> + uint32_t token, uint32_t nargs,
> + target_ulong args,
> + uint32_t nret, target_ulong rets)
> +{
> + rtas_st(rets, 0, 1); /* no error events found */
s/1/RTAS_OUT_NO_ERRORS_FOUND/ ?
> +}
> +
> void spapr_events_init(sPAPREnvironment *spapr)
> {
> spapr->check_exception_irq = spapr_allocate_msi(0);
> spapr->epow_notifier.notify = spapr_powerdown_req;
> qemu_register_powerdown_notifier(&spapr->epow_notifier);
> spapr_rtas_register("check-exception", check_exception);
> + spapr_rtas_register("event-scan", event_scan);
> }
> diff --git a/include/hw/ppc/spapr.h b/include/hw/ppc/spapr.h
> index 9eef2ce..293375b 100644
> --- a/include/hw/ppc/spapr.h
> +++ b/include/hw/ppc/spapr.h
> @@ -445,6 +445,8 @@ int spapr_rtas_device_tree_setup(void *fdt, hwaddr
> rtas_addr,
>
> #define RTAS_ERROR_LOG_MAX 2048
>
> +#define RTAS_EVENT_SCAN_RATE 1
> +
> typedef struct sPAPRTCETable sPAPRTCETable;
>
> #define TYPE_SPAPR_TCE_TABLE "spapr-tce-table"
>
--
Alexey
- Re: [Qemu-devel] [PATCH v2 11/14] spapr_pci: enable basic hotplug operations, (continued)
[Qemu-devel] [PATCH v2 12/14] spapr_events: re-use EPOW event infrastructure for hotplug events, Michael Roth, 2013/12/05
[Qemu-devel] [PATCH v2 13/14] spapr_events: event-scan RTAS interface, Michael Roth, 2013/12/05
- Re: [Qemu-devel] [PATCH v2 13/14] spapr_events: event-scan RTAS interface,
Alexey Kardashevskiy <=
[Qemu-devel] [PATCH v2 14/14] spapr_pci: emit hotplug add/remove events during hotplug, Michael Roth, 2013/12/05