* [PATCH v2] hw/sensor: add stub for ADM1266 blackbox
@ 2025-08-28 18:49 Ben Hillier
2025-08-29 16:23 ` Philippe Mathieu-Daudé
0 siblings, 1 reply; 4+ messages in thread
From: Ben Hillier @ 2025-08-28 18:49 UTC (permalink / raw)
To: wuhaotsh, kfting; +Cc: philmd, qemu-arm, qemu-devel, Titus Rwantare
From: Titus Rwantare <titusr@google.com>
This patch fixes a bug that causes a kernel panic when calling ADM1266_BLACKBOX_INFORMATION.
Log Message:
adm1266 5-0042: Could not read blackbox!
Kernel panic - not syncing: stack-protector: Kernel stack is corrupted in: adm1266_nvmem_read+0x168/0x170
Signed-off-by: Titus Rwantare <titusr@google.com>
---
hw/sensor/adm1266.c | 15 +++++++++++++++
1 file changed, 15 insertions(+)
diff --git a/hw/sensor/adm1266.c b/hw/sensor/adm1266.c
index 9017ce6116..cd11526c2b 100644
--- a/hw/sensor/adm1266.c
+++ b/hw/sensor/adm1266.c
@@ -75,6 +75,7 @@ typedef struct ADM1266State {
static const uint8_t adm1266_ic_device_id[] = {0x03, 0x41, 0x12, 0x66};
static const uint8_t adm1266_ic_device_rev[] = {0x08, 0x01, 0x08, 0x07, 0x0,
0x0, 0x07, 0x41, 0x30};
+static const uint8_t adm1266_blackbox_info[] = {0x04, 0x00, 0x00, 0x00, 0x00};
static void adm1266_exit_reset(Object *obj, ResetType type)
{
@@ -125,6 +126,17 @@ static uint8_t adm1266_read_byte(PMBusDevice *pmdev)
pmbus_send(pmdev, adm1266_ic_device_rev, sizeof(adm1266_ic_device_rev));
break;
+ case ADM1266_BLACKBOX_CONFIG:
+ return 0;
+
+ case ADM1266_READ_BLACKBOX:
+ return 0;
+
+ case ADM1266_BLACKBOX_INFORMATION:
+ pmbus_send(pmdev, adm1266_blackbox_info,
+ sizeof(adm1266_blackbox_info));
+ break;
+
default:
qemu_log_mask(LOG_UNIMP,
"%s: reading from unimplemented register: 0x%02x\n",
@@ -154,6 +166,9 @@ static int adm1266_write_data(PMBusDevice *pmdev, const uint8_t *buf,
pmbus_receive_block(pmdev, (uint8_t *)s->mfr_rev, sizeof(s->mfr_rev));
break;
+ case ADM1266_BLACKBOX_CONFIG:
+ case ADM1266_READ_BLACKBOX:
+ case ADM1266_BLACKBOX_INFORMATION:
case ADM1266_SET_RTC: /* do nothing */
break;
--
2.51.0.rc0.155.g4a0f42376b-goog
^ permalink raw reply related [flat|nested] 4+ messages in thread* Re: [PATCH v2] hw/sensor: add stub for ADM1266 blackbox
2025-08-28 18:49 [PATCH v2] hw/sensor: add stub for ADM1266 blackbox Ben Hillier
@ 2025-08-29 16:23 ` Philippe Mathieu-Daudé
2025-09-08 17:17 ` Titus Rwantare
0 siblings, 1 reply; 4+ messages in thread
From: Philippe Mathieu-Daudé @ 2025-08-29 16:23 UTC (permalink / raw)
To: Ben Hillier, wuhaotsh, kfting; +Cc: qemu-arm, qemu-devel, Titus Rwantare
Hi Titus,
On 28/8/25 20:49, Ben Hillier wrote:
> From: Titus Rwantare <titusr@google.com>
>
> This patch fixes a bug that causes a kernel panic when calling ADM1266_BLACKBOX_INFORMATION.
But you also implement BLACKBOX_CONFIG / READ_BLACKBOX...
> Log Message:
>
> adm1266 5-0042: Could not read blackbox!
> Kernel panic - not syncing: stack-protector: Kernel stack is corrupted in: adm1266_nvmem_read+0x168/0x170
>
> Signed-off-by: Titus Rwantare <titusr@google.com>
> ---
> hw/sensor/adm1266.c | 15 +++++++++++++++
> 1 file changed, 15 insertions(+)
>
> diff --git a/hw/sensor/adm1266.c b/hw/sensor/adm1266.c
> index 9017ce6116..cd11526c2b 100644
> --- a/hw/sensor/adm1266.c
> +++ b/hw/sensor/adm1266.c
> @@ -75,6 +75,7 @@ typedef struct ADM1266State {
> static const uint8_t adm1266_ic_device_id[] = {0x03, 0x41, 0x12, 0x66};
> static const uint8_t adm1266_ic_device_rev[] = {0x08, 0x01, 0x08, 0x07, 0x0,
> 0x0, 0x07, 0x41, 0x30};
> +static const uint8_t adm1266_blackbox_info[] = {0x04, 0x00, 0x00, 0x00, 0x00};
{
0x04, /* length */
0x00, 0x00, /* latest ID */
0x00, /* latest record logic index */
0x00 /* latest record count */
};
>
> static void adm1266_exit_reset(Object *obj, ResetType type)
> {
> @@ -125,6 +126,17 @@ static uint8_t adm1266_read_byte(PMBusDevice *pmdev)
> pmbus_send(pmdev, adm1266_ic_device_rev, sizeof(adm1266_ic_device_rev));
> break;
>
> + case ADM1266_BLACKBOX_CONFIG:
> + return 0;
I'd was expecting pmbus_send(pmdev, "\0\0", 2) for CYCLIC_RECORD_DISABLED.
> +
> + case ADM1266_READ_BLACKBOX:
Here I'm confused, as len+data is 65bytes. Is the guest
reading a stream of 0xff?
> + return 0;
> +
> + case ADM1266_BLACKBOX_INFORMATION:
> + pmbus_send(pmdev, adm1266_blackbox_info,
> + sizeof(adm1266_blackbox_info));
> + break;
OK.
> default:
> qemu_log_mask(LOG_UNIMP,
> "%s: reading from unimplemented register: 0x%02x\n",
> @@ -154,6 +166,9 @@ static int adm1266_write_data(PMBusDevice *pmdev, const uint8_t *buf,
> pmbus_receive_block(pmdev, (uint8_t *)s->mfr_rev, sizeof(s->mfr_rev));
> break;
>
> + case ADM1266_BLACKBOX_CONFIG:
Do we want to check, if lduw_p(buf) != 0 -> log(UNIMP)?
> + case ADM1266_READ_BLACKBOX:
Do we want to check, if (buf[0] != 1) -> log(GUEST_ERROR),
and log(UNIMP) regardless?
> + case ADM1266_BLACKBOX_INFORMATION:
log(GUEST_ERROR);
> case ADM1266_SET_RTC: /* do nothing */
> break;
>
Regards,
Phil.
^ permalink raw reply [flat|nested] 4+ messages in thread* Re: [PATCH v2] hw/sensor: add stub for ADM1266 blackbox
2025-08-29 16:23 ` Philippe Mathieu-Daudé
@ 2025-09-08 17:17 ` Titus Rwantare
0 siblings, 0 replies; 4+ messages in thread
From: Titus Rwantare @ 2025-09-08 17:17 UTC (permalink / raw)
To: Philippe Mathieu-Daudé
Cc: Ben Hillier, wuhaotsh, kfting, qemu-arm, qemu-devel
On Fri, 29 Aug 2025 at 09:23, Philippe Mathieu-Daudé <philmd@linaro.org> wrote:
>
> Hi Titus,
>
> On 28/8/25 20:49, Ben Hillier wrote:
> > From: Titus Rwantare <titusr@google.com>
> >
> > This patch fixes a bug that causes a kernel panic when calling ADM1266_BLACKBOX_INFORMATION.
>
> But you also implement BLACKBOX_CONFIG / READ_BLACKBOX...
>
> > Log Message:
> >
> > adm1266 5-0042: Could not read blackbox!
> > Kernel panic - not syncing: stack-protector: Kernel stack is corrupted in: adm1266_nvmem_read+0x168/0x170
> >
> > Signed-off-by: Titus Rwantare <titusr@google.com>
> > ---
> > hw/sensor/adm1266.c | 15 +++++++++++++++
> > 1 file changed, 15 insertions(+)
> >
> > diff --git a/hw/sensor/adm1266.c b/hw/sensor/adm1266.c
> > index 9017ce6116..cd11526c2b 100644
> > --- a/hw/sensor/adm1266.c
> > +++ b/hw/sensor/adm1266.c
> > @@ -75,6 +75,7 @@ typedef struct ADM1266State {
> > static const uint8_t adm1266_ic_device_id[] = {0x03, 0x41, 0x12, 0x66};
> > static const uint8_t adm1266_ic_device_rev[] = {0x08, 0x01, 0x08, 0x07, 0x0,
> > 0x0, 0x07, 0x41, 0x30};
> > +static const uint8_t adm1266_blackbox_info[] = {0x04, 0x00, 0x00, 0x00, 0x00};
> {
> 0x04, /* length */
> 0x00, 0x00, /* latest ID */
> 0x00, /* latest record logic index */
> 0x00 /* latest record count */
> };
>
> >
> > static void adm1266_exit_reset(Object *obj, ResetType type)
> > {
> > @@ -125,6 +126,17 @@ static uint8_t adm1266_read_byte(PMBusDevice *pmdev)
> > pmbus_send(pmdev, adm1266_ic_device_rev, sizeof(adm1266_ic_device_rev));
> > break;
> >
> > + case ADM1266_BLACKBOX_CONFIG:
> > + return 0;
>
> I'd was expecting pmbus_send(pmdev, "\0\0", 2) for CYCLIC_RECORD_DISABLED.
>
> > +
> > + case ADM1266_READ_BLACKBOX:
>
> Here I'm confused, as len+data is 65bytes. Is the guest
> reading a stream of 0xff?
>
> > + return 0;
> > +
> > + case ADM1266_BLACKBOX_INFORMATION:
> > + pmbus_send(pmdev, adm1266_blackbox_info,
> > + sizeof(adm1266_blackbox_info));
> > + break;
>
> OK.
>
> > default:
> > qemu_log_mask(LOG_UNIMP,
> > "%s: reading from unimplemented register: 0x%02x\n",
> > @@ -154,6 +166,9 @@ static int adm1266_write_data(PMBusDevice *pmdev, const uint8_t *buf,
> > pmbus_receive_block(pmdev, (uint8_t *)s->mfr_rev, sizeof(s->mfr_rev));
> > break;
> >
> > + case ADM1266_BLACKBOX_CONFIG:
> Do we want to check, if lduw_p(buf) != 0 -> log(UNIMP)?
>
> > + case ADM1266_READ_BLACKBOX:
>
> Do we want to check, if (buf[0] != 1) -> log(GUEST_ERROR),
> and log(UNIMP) regardless?
>
> > + case ADM1266_BLACKBOX_INFORMATION:
>
> log(GUEST_ERROR);
>
> > case ADM1266_SET_RTC: /* do nothing */
> > break;
> >
> Regards,
>
> Phil.
Thanks for the feedback, I wound up implementing more of the blackbox
and implementing a test for it.
-Titus
^ permalink raw reply [flat|nested] 4+ messages in thread
* [PATCH v2] hw/sensor: add stub for ADM1266 blackbox
@ 2025-08-11 21:36 Ben Hillier
0 siblings, 0 replies; 4+ messages in thread
From: Ben Hillier @ 2025-08-11 21:36 UTC (permalink / raw)
To: wuhaotsh, kfting; +Cc: philmd, qemu-arm, qemu-devel, Titus Rwantare
From: Titus Rwantare <titusr@google.com>
This patch fixes a bug that causes a kernel panic when calling ADM1266_BLACKBOX_INFORMATION.
Log Message:
adm1266 5-0042: Could not read blackbox!
Kernel panic - not syncing: stack-protector: Kernel stack is corrupted in: adm1266_nvmem_read+0x168/0x170
Signed-off-by: Titus Rwantare <titusr@google.com>
---
hw/sensor/adm1266.c | 15 +++++++++++++++
1 file changed, 15 insertions(+)
diff --git a/hw/sensor/adm1266.c b/hw/sensor/adm1266.c
index 9017ce6116..cd11526c2b 100644
--- a/hw/sensor/adm1266.c
+++ b/hw/sensor/adm1266.c
@@ -75,6 +75,7 @@ typedef struct ADM1266State {
static const uint8_t adm1266_ic_device_id[] = {0x03, 0x41, 0x12, 0x66};
static const uint8_t adm1266_ic_device_rev[] = {0x08, 0x01, 0x08, 0x07, 0x0,
0x0, 0x07, 0x41, 0x30};
+static const uint8_t adm1266_blackbox_info[] = {0x04, 0x00, 0x00, 0x00, 0x00};
static void adm1266_exit_reset(Object *obj, ResetType type)
{
@@ -125,6 +126,17 @@ static uint8_t adm1266_read_byte(PMBusDevice *pmdev)
pmbus_send(pmdev, adm1266_ic_device_rev, sizeof(adm1266_ic_device_rev));
break;
+ case ADM1266_BLACKBOX_CONFIG:
+ return 0;
+
+ case ADM1266_READ_BLACKBOX:
+ return 0;
+
+ case ADM1266_BLACKBOX_INFORMATION:
+ pmbus_send(pmdev, adm1266_blackbox_info,
+ sizeof(adm1266_blackbox_info));
+ break;
+
default:
qemu_log_mask(LOG_UNIMP,
"%s: reading from unimplemented register: 0x%02x\n",
@@ -154,6 +166,9 @@ static int adm1266_write_data(PMBusDevice *pmdev, const uint8_t *buf,
pmbus_receive_block(pmdev, (uint8_t *)s->mfr_rev, sizeof(s->mfr_rev));
break;
+ case ADM1266_BLACKBOX_CONFIG:
+ case ADM1266_READ_BLACKBOX:
+ case ADM1266_BLACKBOX_INFORMATION:
case ADM1266_SET_RTC: /* do nothing */
break;
--
2.51.0.rc0.155.g4a0f42376b-goog
^ permalink raw reply related [flat|nested] 4+ messages in thread
end of thread, other threads:[~2025-09-08 17:19 UTC | newest]
Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-08-28 18:49 [PATCH v2] hw/sensor: add stub for ADM1266 blackbox Ben Hillier
2025-08-29 16:23 ` Philippe Mathieu-Daudé
2025-09-08 17:17 ` Titus Rwantare
-- strict thread matches above, loose matches on Subject: below --
2025-08-11 21:36 Ben Hillier
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).