* [Qemu-devel] [PATCH v2 1/1] hw: register: Run post_write hook on reset
@ 2018-02-05 18:44 Alistair Francis
2018-02-15 23:05 ` Alistair Francis
0 siblings, 1 reply; 4+ messages in thread
From: Alistair Francis @ 2018-02-05 18:44 UTC (permalink / raw)
To: qemu-devel, peter.maydell; +Cc: alistair.francis, alistair23, f4bug
Ensure that the post write hook is called during reset. This allows us
to rely on the post write functions instead of having to call them from
the reset() function.
Signed-off-by: Alistair Francis <alistair.francis@xilinx.com>
Reviewed-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
---
V2:
- Update the header documentation
include/hw/register.h | 6 +++---
hw/core/register.c | 8 ++++++++
2 files changed, 11 insertions(+), 3 deletions(-)
diff --git a/include/hw/register.h b/include/hw/register.h
index de2414e6b4..5796584588 100644
--- a/include/hw/register.h
+++ b/include/hw/register.h
@@ -34,7 +34,7 @@ typedef struct RegisterInfoArray RegisterInfoArray;
* immediately before the actual write. The returned value is what is written,
* giving the handler a chance to modify the written value.
* @post_write: Post write callback. Passed the written value. Most write side
- * effects should be implemented here.
+ * effects should be implemented here. This is called during device reset.
*
* @post_read: Post read callback. Passes the value that is about to be returned
* for a read. The return value from this function is what is ultimately read,
@@ -135,8 +135,8 @@ uint64_t register_read(RegisterInfo *reg, uint64_t re, const char* prefix,
bool debug);
/**
- * reset a register
- * @reg: register to reset
+ * Resets a register. This will also call the post_write hook if it exists.
+ * @reg: The register to reset.
*/
void register_reset(RegisterInfo *reg);
diff --git a/hw/core/register.c b/hw/core/register.c
index 900294b9c4..0741a1af32 100644
--- a/hw/core/register.c
+++ b/hw/core/register.c
@@ -159,13 +159,21 @@ uint64_t register_read(RegisterInfo *reg, uint64_t re, const char* prefix,
void register_reset(RegisterInfo *reg)
{
+ const RegisterAccessInfo *ac;
+
g_assert(reg);
if (!reg->data || !reg->access) {
return;
}
+ ac = reg->access;
+
register_write_val(reg, reg->access->reset);
+
+ if (ac->post_write) {
+ ac->post_write(reg, reg->access->reset);
+ }
}
void register_init(RegisterInfo *reg)
--
2.14.1
^ permalink raw reply related [flat|nested] 4+ messages in thread* Re: [Qemu-devel] [PATCH v2 1/1] hw: register: Run post_write hook on reset
2018-02-05 18:44 [Qemu-devel] [PATCH v2 1/1] hw: register: Run post_write hook on reset Alistair Francis
@ 2018-02-15 23:05 ` Alistair Francis
2018-02-22 19:45 ` Alistair Francis
0 siblings, 1 reply; 4+ messages in thread
From: Alistair Francis @ 2018-02-15 23:05 UTC (permalink / raw)
To: Alistair Francis
Cc: qemu-devel@nongnu.org Developers, Peter Maydell,
Philippe Mathieu-Daudé
On Mon, Feb 5, 2018 at 10:44 AM, Alistair Francis
<alistair.francis@xilinx.com> wrote:
> Ensure that the post write hook is called during reset. This allows us
> to rely on the post write functions instead of having to call them from
> the reset() function.
>
> Signed-off-by: Alistair Francis <alistair.francis@xilinx.com>
> Reviewed-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
Ping!
> ---
>
> V2:
> - Update the header documentation
>
> include/hw/register.h | 6 +++---
> hw/core/register.c | 8 ++++++++
> 2 files changed, 11 insertions(+), 3 deletions(-)
>
> diff --git a/include/hw/register.h b/include/hw/register.h
> index de2414e6b4..5796584588 100644
> --- a/include/hw/register.h
> +++ b/include/hw/register.h
> @@ -34,7 +34,7 @@ typedef struct RegisterInfoArray RegisterInfoArray;
> * immediately before the actual write. The returned value is what is written,
> * giving the handler a chance to modify the written value.
> * @post_write: Post write callback. Passed the written value. Most write side
> - * effects should be implemented here.
> + * effects should be implemented here. This is called during device reset.
> *
> * @post_read: Post read callback. Passes the value that is about to be returned
> * for a read. The return value from this function is what is ultimately read,
> @@ -135,8 +135,8 @@ uint64_t register_read(RegisterInfo *reg, uint64_t re, const char* prefix,
> bool debug);
>
> /**
> - * reset a register
> - * @reg: register to reset
> + * Resets a register. This will also call the post_write hook if it exists.
> + * @reg: The register to reset.
> */
>
> void register_reset(RegisterInfo *reg);
> diff --git a/hw/core/register.c b/hw/core/register.c
> index 900294b9c4..0741a1af32 100644
> --- a/hw/core/register.c
> +++ b/hw/core/register.c
> @@ -159,13 +159,21 @@ uint64_t register_read(RegisterInfo *reg, uint64_t re, const char* prefix,
>
> void register_reset(RegisterInfo *reg)
> {
> + const RegisterAccessInfo *ac;
> +
> g_assert(reg);
>
> if (!reg->data || !reg->access) {
> return;
> }
>
> + ac = reg->access;
> +
> register_write_val(reg, reg->access->reset);
> +
> + if (ac->post_write) {
> + ac->post_write(reg, reg->access->reset);
> + }
> }
>
> void register_init(RegisterInfo *reg)
> --
> 2.14.1
>
^ permalink raw reply [flat|nested] 4+ messages in thread* Re: [Qemu-devel] [PATCH v2 1/1] hw: register: Run post_write hook on reset
2018-02-15 23:05 ` Alistair Francis
@ 2018-02-22 19:45 ` Alistair Francis
2018-02-23 18:02 ` Peter Maydell
0 siblings, 1 reply; 4+ messages in thread
From: Alistair Francis @ 2018-02-22 19:45 UTC (permalink / raw)
To: Alistair Francis
Cc: qemu-devel@nongnu.org Developers, Peter Maydell,
Philippe Mathieu-Daudé
On Thu, Feb 15, 2018 at 3:05 PM, Alistair Francis <alistair23@gmail.com> wrote:
> On Mon, Feb 5, 2018 at 10:44 AM, Alistair Francis
> <alistair.francis@xilinx.com> wrote:
>> Ensure that the post write hook is called during reset. This allows us
>> to rely on the post write functions instead of having to call them from
>> the reset() function.
>>
>> Signed-off-by: Alistair Francis <alistair.francis@xilinx.com>
>> Reviewed-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
>
> Ping!
Ping^2
>
>> ---
>>
>> V2:
>> - Update the header documentation
>>
>> include/hw/register.h | 6 +++---
>> hw/core/register.c | 8 ++++++++
>> 2 files changed, 11 insertions(+), 3 deletions(-)
>>
>> diff --git a/include/hw/register.h b/include/hw/register.h
>> index de2414e6b4..5796584588 100644
>> --- a/include/hw/register.h
>> +++ b/include/hw/register.h
>> @@ -34,7 +34,7 @@ typedef struct RegisterInfoArray RegisterInfoArray;
>> * immediately before the actual write. The returned value is what is written,
>> * giving the handler a chance to modify the written value.
>> * @post_write: Post write callback. Passed the written value. Most write side
>> - * effects should be implemented here.
>> + * effects should be implemented here. This is called during device reset.
>> *
>> * @post_read: Post read callback. Passes the value that is about to be returned
>> * for a read. The return value from this function is what is ultimately read,
>> @@ -135,8 +135,8 @@ uint64_t register_read(RegisterInfo *reg, uint64_t re, const char* prefix,
>> bool debug);
>>
>> /**
>> - * reset a register
>> - * @reg: register to reset
>> + * Resets a register. This will also call the post_write hook if it exists.
>> + * @reg: The register to reset.
>> */
>>
>> void register_reset(RegisterInfo *reg);
>> diff --git a/hw/core/register.c b/hw/core/register.c
>> index 900294b9c4..0741a1af32 100644
>> --- a/hw/core/register.c
>> +++ b/hw/core/register.c
>> @@ -159,13 +159,21 @@ uint64_t register_read(RegisterInfo *reg, uint64_t re, const char* prefix,
>>
>> void register_reset(RegisterInfo *reg)
>> {
>> + const RegisterAccessInfo *ac;
>> +
>> g_assert(reg);
>>
>> if (!reg->data || !reg->access) {
>> return;
>> }
>>
>> + ac = reg->access;
>> +
>> register_write_val(reg, reg->access->reset);
>> +
>> + if (ac->post_write) {
>> + ac->post_write(reg, reg->access->reset);
>> + }
>> }
>>
>> void register_init(RegisterInfo *reg)
>> --
>> 2.14.1
>>
^ permalink raw reply [flat|nested] 4+ messages in thread* Re: [Qemu-devel] [PATCH v2 1/1] hw: register: Run post_write hook on reset
2018-02-22 19:45 ` Alistair Francis
@ 2018-02-23 18:02 ` Peter Maydell
0 siblings, 0 replies; 4+ messages in thread
From: Peter Maydell @ 2018-02-23 18:02 UTC (permalink / raw)
To: Alistair Francis
Cc: qemu-devel@nongnu.org Developers, Philippe Mathieu-Daudé
On 22 February 2018 at 19:45, Alistair Francis
<alistair.francis@xilinx.com> wrote:
> On Thu, Feb 15, 2018 at 3:05 PM, Alistair Francis <alistair23@gmail.com> wrote:
>> On Mon, Feb 5, 2018 at 10:44 AM, Alistair Francis
>> <alistair.francis@xilinx.com> wrote:
>>> Ensure that the post write hook is called during reset. This allows us
>>> to rely on the post write functions instead of having to call them from
>>> the reset() function.
>>>
>>> Signed-off-by: Alistair Francis <alistair.francis@xilinx.com>
>>> Reviewed-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
>>
>> Ping!
>
> Ping^2
Sorry, not sure why this one got lost -- I'll put it in target-arm.next.
thanks
-- PMM
^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2018-02-23 18:02 UTC | newest]
Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2018-02-05 18:44 [Qemu-devel] [PATCH v2 1/1] hw: register: Run post_write hook on reset Alistair Francis
2018-02-15 23:05 ` Alistair Francis
2018-02-22 19:45 ` Alistair Francis
2018-02-23 18:02 ` Peter Maydell
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).