qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
* [PATCH v3] Add basic power management to raspi.
@ 2021-06-25 21:02 Nolan Leake
  2021-06-26 10:16 ` Philippe Mathieu-Daudé
  2021-06-26 17:33 ` Philippe Mathieu-Daudé
  0 siblings, 2 replies; 6+ messages in thread
From: Nolan Leake @ 2021-06-25 21:02 UTC (permalink / raw)
  To: qemu-devel
  Cc: Peter Maydell, Nolan Leake, Philippe Mathieu-Daudé, Andrew Baumann

This is just enough to make reboot and poweroff work. Works for
linux, u-boot, and the arm trusted firmware. Not tested, but should
work for plan9, and bare-metal/hobby OSes, since they seem to generally
do what linux does for reset.

The watchdog timer functionality is not yet implemented.

Resolves: https://gitlab.com/qemu-project/qemu/-/issues/64
Signed-off-by: Nolan Leake <nolan@sigbus.net>
---
 hw/arm/bcm2835_peripherals.c         |  13 ++-
 hw/misc/bcm2835_powermgt.c           | 160 +++++++++++++++++++++++++++
 hw/misc/meson.build                  |   1 +
 include/hw/arm/bcm2835_peripherals.h |   3 +-
 include/hw/misc/bcm2835_powermgt.h   |  29 +++++
 5 files changed, 204 insertions(+), 2 deletions(-)
 create mode 100644 hw/misc/bcm2835_powermgt.c
 create mode 100644 include/hw/misc/bcm2835_powermgt.h

diff --git hw/arm/bcm2835_peripherals.c hw/arm/bcm2835_peripherals.c
index dcff13433e..48538c9360 100644
--- hw/arm/bcm2835_peripherals.c
+++ hw/arm/bcm2835_peripherals.c
@@ -126,6 +126,10 @@ static void bcm2835_peripherals_init(Object *obj)
 
     object_property_add_const_link(OBJECT(&s->dwc2), "dma-mr",
                                    OBJECT(&s->gpu_bus_mr));
+
+    /* Power Management */
+    object_initialize_child(obj, "powermgt", &s->powermgt,
+                            TYPE_BCM2835_POWERMGT);
 }
 
 static void bcm2835_peripherals_realize(DeviceState *dev, Error **errp)
@@ -364,9 +368,16 @@ static void bcm2835_peripherals_realize(DeviceState *dev, Error **errp)
         qdev_get_gpio_in_named(DEVICE(&s->ic), BCM2835_IC_GPU_IRQ,
                                INTERRUPT_USB));
 
+    /* Power Management */
+    if (!sysbus_realize(SYS_BUS_DEVICE(&s->powermgt), errp)) {
+        return;
+    }
+
+    memory_region_add_subregion(&s->peri_mr, PM_OFFSET,
+                sysbus_mmio_get_region(SYS_BUS_DEVICE(&s->powermgt), 0));
+
     create_unimp(s, &s->txp, "bcm2835-txp", TXP_OFFSET, 0x1000);
     create_unimp(s, &s->armtmr, "bcm2835-sp804", ARMCTRL_TIMER0_1_OFFSET, 0x40);
-    create_unimp(s, &s->powermgt, "bcm2835-powermgt", PM_OFFSET, 0x114);
     create_unimp(s, &s->i2s, "bcm2835-i2s", I2S_OFFSET, 0x100);
     create_unimp(s, &s->smi, "bcm2835-smi", SMI_OFFSET, 0x100);
     create_unimp(s, &s->spi[0], "bcm2835-spi0", SPI0_OFFSET, 0x20);
diff --git hw/misc/bcm2835_powermgt.c hw/misc/bcm2835_powermgt.c
new file mode 100644
index 0000000000..dcdd6d1ea7
--- /dev/null
+++ hw/misc/bcm2835_powermgt.c
@@ -0,0 +1,160 @@
+/*
+ * BCM2835 Power Management emulation
+ *
+ * Copyright (C) 2017 Marcin Chojnacki <marcinch7@gmail.com>
+ * Copyright (C) 2021 Nolan Leake <nolan@sigbus.net>
+ *
+ * This work is licensed under the terms of the GNU GPL, version 2 or later.
+ * See the COPYING file in the top-level directory.
+ */
+
+#include "qemu/osdep.h"
+#include "qemu/log.h"
+#include "qemu/module.h"
+#include "hw/misc/bcm2835_powermgt.h"
+#include "migration/vmstate.h"
+#include "sysemu/runstate.h"
+
+#define PASSWORD 0x5a000000
+#define PASSWORD_MASK 0xff000000
+
+#define R_RSTC 0x1c
+#define V_RSTC_RESET 0x20
+#define R_RSTS 0x20
+#define V_RSTS_POWEROFF 0x555 /* Linux uses partition 63 to indicate halt. */
+#define R_WDOG 0x24
+
+static uint64_t bcm2835_powermgt_read(void *opaque, hwaddr offset,
+                                      unsigned size)
+{
+    BCM2835PowerMgtState *s = (BCM2835PowerMgtState *)opaque;
+    uint32_t res = 0;
+
+    switch (offset) {
+    case R_RSTC:
+        res = s->rstc;
+        break;
+    case R_RSTS:
+        res = s->rsts;
+        break;
+    case R_WDOG:
+        res = s->wdog;
+        break;
+
+    default:
+        qemu_log_mask(LOG_UNIMP,
+                      "bcm2835_powermgt_read: Unknown offset 0x%08"HWADDR_PRIx
+                      "\n", offset);
+        res = 0;
+        break;
+    }
+
+    return res;
+}
+
+static void bcm2835_powermgt_write(void *opaque, hwaddr offset,
+                                   uint64_t value, unsigned size)
+{
+    BCM2835PowerMgtState *s = (BCM2835PowerMgtState *)opaque;
+
+    if ((value & PASSWORD_MASK) != PASSWORD) {
+        qemu_log_mask(LOG_GUEST_ERROR,
+                      "bcm2835_powermgt_write: Bad password 0x%"PRIx64
+                      " at offset 0x%08"HWADDR_PRIx"\n",
+                      value, offset);
+        return;
+    }
+
+    value = value & ~PASSWORD_MASK;
+
+    switch (offset) {
+    case R_RSTC:
+        s->rstc = value;
+        if (value & V_RSTC_RESET) {
+            if ((s->rsts & 0xfff) == V_RSTS_POWEROFF) {
+                qemu_system_shutdown_request(SHUTDOWN_CAUSE_GUEST_SHUTDOWN);
+            } else {
+                qemu_system_reset_request(SHUTDOWN_CAUSE_GUEST_RESET);
+            }
+        }
+        break;
+    case R_RSTS:
+        qemu_log_mask(LOG_UNIMP,
+                      "bcm2835_powermgt_write: RSTS\n");
+        s->rsts = value;
+        break;
+    case R_WDOG:
+        qemu_log_mask(LOG_UNIMP,
+                      "bcm2835_powermgt_write: WDOG\n");
+        s->wdog = value;
+        break;
+
+    default:
+        qemu_log_mask(LOG_UNIMP,
+                      "bcm2835_powermgt_write: Unknown offset 0x%08"HWADDR_PRIx
+                      "\n", offset);
+        break;
+    }
+}
+
+static const MemoryRegionOps bcm2835_powermgt_ops = {
+    .read = bcm2835_powermgt_read,
+    .write = bcm2835_powermgt_write,
+    .endianness = DEVICE_NATIVE_ENDIAN,
+    .impl.min_access_size = 4,
+    .impl.max_access_size = 4,
+};
+
+static const VMStateDescription vmstate_bcm2835_powermgt = {
+    .name = TYPE_BCM2835_POWERMGT,
+    .version_id = 1,
+    .minimum_version_id = 1,
+    .fields = (VMStateField[]) {
+        VMSTATE_UINT32(rstc, BCM2835PowerMgtState),
+        VMSTATE_UINT32(rsts, BCM2835PowerMgtState),
+        VMSTATE_UINT32(wdog, BCM2835PowerMgtState),
+        VMSTATE_END_OF_LIST()
+    }
+};
+
+static void bcm2835_powermgt_init(Object *obj)
+{
+    BCM2835PowerMgtState *s = BCM2835_POWERMGT(obj);
+
+    memory_region_init_io(&s->iomem, obj, &bcm2835_powermgt_ops, s,
+                          TYPE_BCM2835_POWERMGT, 0x114);
+    sysbus_init_mmio(SYS_BUS_DEVICE(s), &s->iomem);
+}
+
+static void bcm2835_powermgt_reset(DeviceState *dev)
+{
+    BCM2835PowerMgtState *s = BCM2835_POWERMGT(dev);
+
+    /* https://elinux.org/BCM2835_registers#PM */
+    s->rstc = 0x00000102;
+    s->rsts = 0x00001000;
+    s->wdog = 0x00000000;
+}
+
+static void bcm2835_powermgt_class_init(ObjectClass *klass, void *data)
+{
+    DeviceClass *dc = DEVICE_CLASS(klass);
+
+    dc->reset = bcm2835_powermgt_reset;
+    dc->vmsd = &vmstate_bcm2835_powermgt;
+}
+
+static TypeInfo bcm2835_powermgt_info = {
+    .name          = TYPE_BCM2835_POWERMGT,
+    .parent        = TYPE_SYS_BUS_DEVICE,
+    .instance_size = sizeof(BCM2835PowerMgtState),
+    .class_init    = bcm2835_powermgt_class_init,
+    .instance_init = bcm2835_powermgt_init,
+};
+
+static void bcm2835_powermgt_register_types(void)
+{
+    type_register_static(&bcm2835_powermgt_info);
+}
+
+type_init(bcm2835_powermgt_register_types)
diff --git hw/misc/meson.build hw/misc/meson.build
index 66e1648533..f89b5c1643 100644
--- hw/misc/meson.build
+++ hw/misc/meson.build
@@ -82,6 +82,7 @@ softmmu_ss.add(when: 'CONFIG_RASPI', if_true: files(
   'bcm2835_rng.c',
   'bcm2835_thermal.c',
   'bcm2835_cprman.c',
+  'bcm2835_powermgt.c',
 ))
 softmmu_ss.add(when: 'CONFIG_SLAVIO', if_true: files('slavio_misc.c'))
 softmmu_ss.add(when: 'CONFIG_ZYNQ', if_true: files('zynq_slcr.c', 'zynq-xadc.c'))
diff --git include/hw/arm/bcm2835_peripherals.h include/hw/arm/bcm2835_peripherals.h
index 479e2346e8..d864879421 100644
--- include/hw/arm/bcm2835_peripherals.h
+++ include/hw/arm/bcm2835_peripherals.h
@@ -24,6 +24,7 @@
 #include "hw/misc/bcm2835_mphi.h"
 #include "hw/misc/bcm2835_thermal.h"
 #include "hw/misc/bcm2835_cprman.h"
+#include "hw/misc/bcm2835_powermgt.h"
 #include "hw/sd/sdhci.h"
 #include "hw/sd/bcm2835_sdhost.h"
 #include "hw/gpio/bcm2835_gpio.h"
@@ -48,7 +49,7 @@ struct BCM2835PeripheralState {
     BCM2835MphiState mphi;
     UnimplementedDeviceState txp;
     UnimplementedDeviceState armtmr;
-    UnimplementedDeviceState powermgt;
+    BCM2835PowerMgtState powermgt;
     BCM2835CprmanState cprman;
     PL011State uart0;
     BCM2835AuxState aux;
diff --git include/hw/misc/bcm2835_powermgt.h include/hw/misc/bcm2835_powermgt.h
new file mode 100644
index 0000000000..303b9a6f68
--- /dev/null
+++ include/hw/misc/bcm2835_powermgt.h
@@ -0,0 +1,29 @@
+/*
+ * BCM2835 Power Management emulation
+ *
+ * Copyright (C) 2017 Marcin Chojnacki <marcinch7@gmail.com>
+ * Copyright (C) 2021 Nolan Leake <nolan@sigbus.net>
+ *
+ * This work is licensed under the terms of the GNU GPL, version 2 or later.
+ * See the COPYING file in the top-level directory.
+ */
+
+#ifndef BCM2835_POWERMGT_H
+#define BCM2835_POWERMGT_H
+
+#include "hw/sysbus.h"
+#include "qom/object.h"
+
+#define TYPE_BCM2835_POWERMGT "bcm2835-powermgt"
+OBJECT_DECLARE_SIMPLE_TYPE(BCM2835PowerMgtState, BCM2835_POWERMGT)
+
+struct BCM2835PowerMgtState {
+    SysBusDevice busdev;
+    MemoryRegion iomem;
+
+    uint32_t rstc;
+    uint32_t rsts;
+    uint32_t wdog;
+};
+
+#endif
-- 
2.30.2



^ permalink raw reply related	[flat|nested] 6+ messages in thread

* Re: [PATCH v3] Add basic power management to raspi.
  2021-06-25 21:02 [PATCH v3] Add basic power management to raspi Nolan Leake
@ 2021-06-26 10:16 ` Philippe Mathieu-Daudé
  2021-06-28 17:38   ` Peter Maydell
  2021-06-26 17:33 ` Philippe Mathieu-Daudé
  1 sibling, 1 reply; 6+ messages in thread
From: Philippe Mathieu-Daudé @ 2021-06-26 10:16 UTC (permalink / raw)
  To: Nolan Leake, qemu-devel; +Cc: Peter Maydell, Andrew Baumann

Hi Nolan, Peter,

On 6/25/21 11:02 PM, Nolan Leake wrote:
> This is just enough to make reboot and poweroff work. Works for
> linux, u-boot, and the arm trusted firmware. Not tested, but should
> work for plan9, and bare-metal/hobby OSes, since they seem to generally
> do what linux does for reset.
> 
> The watchdog timer functionality is not yet implemented.
> 
> Resolves: https://gitlab.com/qemu-project/qemu/-/issues/64

Please carry the tags from previous versions (if the changes are minor).

Reviewed-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
Tested-by: Philippe Mathieu-Daudé <f4bug@amsat.org>

> Signed-off-by: Nolan Leake <nolan@sigbus.net>
> ---
>  hw/arm/bcm2835_peripherals.c         |  13 ++-
>  hw/misc/bcm2835_powermgt.c           | 160 +++++++++++++++++++++++++++
>  hw/misc/meson.build                  |   1 +
>  include/hw/arm/bcm2835_peripherals.h |   3 +-
>  include/hw/misc/bcm2835_powermgt.h   |  29 +++++
>  5 files changed, 204 insertions(+), 2 deletions(-)
>  create mode 100644 hw/misc/bcm2835_powermgt.c
>  create mode 100644 include/hw/misc/bcm2835_powermgt.h
> 
> diff --git hw/arm/bcm2835_peripherals.c hw/arm/bcm2835_peripherals.c

Odd, usually the diff line comes with a/ b/ prefix, I can not
apply your patch (git version 2.31.1, Fedora):

Applying: Add basic power management to raspi.
error: arm/bcm2835_peripherals.c: does not exist in index
error: misc/meson.build: does not exist in index
error: hw/arm/bcm2835_peripherals.h: does not exist in index
Patch failed at 0001 Add basic power management to raspi.

But patchew succeeded:
https://patchew.org/QEMU/20210625210209.1870217-1-nolan@sigbus.net/

Applying: Add basic power management to raspi.
Using index info to reconstruct a base tree...
A       arm/bcm2835_peripherals.c
A       hw/arm/bcm2835_peripherals.h
A       misc/meson.build
Falling back to patching base and 3-way merge...

So I tested patchew's commit 7856ac0e804:
https://github.com/patchew-project/qemu/commit/7856ac0e8045d006f1008a03e1d4d8710b9d0612

Peter, when queueing this patch (maybe prepending hw/arm: or
hw/arm/raspi: to the subject), can you take the corresponding
test along - which is already reviewed?
https://www.mail-archive.com/qemu-devel@nongnu.org/msg811909.html

Thanks both,

Phil.


^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [PATCH v3] Add basic power management to raspi.
  2021-06-25 21:02 [PATCH v3] Add basic power management to raspi Nolan Leake
  2021-06-26 10:16 ` Philippe Mathieu-Daudé
@ 2021-06-26 17:33 ` Philippe Mathieu-Daudé
  1 sibling, 0 replies; 6+ messages in thread
From: Philippe Mathieu-Daudé @ 2021-06-26 17:33 UTC (permalink / raw)
  To: Nolan Leake, qemu-devel; +Cc: Peter Maydell, Andrew Baumann

On 6/25/21 11:02 PM, Nolan Leake wrote:
> This is just enough to make reboot and poweroff work. Works for
> linux, u-boot, and the arm trusted firmware. Not tested, but should
> work for plan9, and bare-metal/hobby OSes, since they seem to generally
> do what linux does for reset.
> 
> The watchdog timer functionality is not yet implemented.
> 
> Resolves: https://gitlab.com/qemu-project/qemu/-/issues/64
> Signed-off-by: Nolan Leake <nolan@sigbus.net>
> ---
>  hw/arm/bcm2835_peripherals.c         |  13 ++-
>  hw/misc/bcm2835_powermgt.c           | 160 +++++++++++++++++++++++++++
>  hw/misc/meson.build                  |   1 +
>  include/hw/arm/bcm2835_peripherals.h |   3 +-
>  include/hw/misc/bcm2835_powermgt.h   |  29 +++++
>  5 files changed, 204 insertions(+), 2 deletions(-)
>  create mode 100644 hw/misc/bcm2835_powermgt.c
>  create mode 100644 include/hw/misc/bcm2835_powermgt.h

>      create_unimp(s, &s->txp, "bcm2835-txp", TXP_OFFSET, 0x1000);
>      create_unimp(s, &s->armtmr, "bcm2835-sp804", ARMCTRL_TIMER0_1_OFFSET, 0x40);
> -    create_unimp(s, &s->powermgt, "bcm2835-powermgt", PM_OFFSET, 0x114);
>      create_unimp(s, &s->i2s, "bcm2835-i2s", I2S_OFFSET, 0x100);
>      create_unimp(s, &s->smi, "bcm2835-smi", SMI_OFFSET, 0x100);
>      create_unimp(s, &s->spi[0], "bcm2835-spi0", SPI0_OFFSET, 0x20);
...

> +static void bcm2835_powermgt_init(Object *obj)
> +{
> +    BCM2835PowerMgtState *s = BCM2835_POWERMGT(obj);
> +
> +    memory_region_init_io(&s->iomem, obj, &bcm2835_powermgt_ops, s,
> +                          TYPE_BCM2835_POWERMGT, 0x114);

In case Peter asks you to resend your patch because can't apply it,
please use a region size of 0x200 here.

Alternatively you can increase the odds to get your patch merged by
resending it properly (I'm still not sure what broke it) before Peter
review the ARM patches next week.


^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [PATCH v3] Add basic power management to raspi.
  2021-06-26 10:16 ` Philippe Mathieu-Daudé
@ 2021-06-28 17:38   ` Peter Maydell
  2021-06-29  7:46     ` Philippe Mathieu-Daudé
  0 siblings, 1 reply; 6+ messages in thread
From: Peter Maydell @ 2021-06-28 17:38 UTC (permalink / raw)
  To: Philippe Mathieu-Daudé; +Cc: Nolan Leake, QEMU Developers, Andrew Baumann

On Sat, 26 Jun 2021 at 11:16, Philippe Mathieu-Daudé <f4bug@amsat.org> wrote:
>
> Hi Nolan, Peter,
>
> On 6/25/21 11:02 PM, Nolan Leake wrote:
> > diff --git hw/arm/bcm2835_peripherals.c hw/arm/bcm2835_peripherals.c
>
> Odd, usually the diff line comes with a/ b/ prefix, I can not
> apply your patch (git version 2.31.1, Fedora):
>
> Applying: Add basic power management to raspi.
> error: arm/bcm2835_peripherals.c: does not exist in index
> error: misc/meson.build: does not exist in index
> error: hw/arm/bcm2835_peripherals.h: does not exist in index
> Patch failed at 0001 Add basic power management to raspi.
>
> But patchew succeeded:
> https://patchew.org/QEMU/20210625210209.1870217-1-nolan@sigbus.net/
>
> Applying: Add basic power management to raspi.
> Using index info to reconstruct a base tree...
> A       arm/bcm2835_peripherals.c
> A       hw/arm/bcm2835_peripherals.h
> A       misc/meson.build
> Falling back to patching base and 3-way merge...
>
> So I tested patchew's commit 7856ac0e804:
> https://github.com/patchew-project/qemu/commit/7856ac0e8045d006f1008a03e1d4d8710b9d0612

It succeeded, but if you look at that tree you'll notice it
was confused enough to create a new top level directory misc/
to put the .c file in! I'm not sure how the result manages to build :-)

I have fixed this up locally. I have also moved the bcm2835_powermgt.h
file to include/hw/misc, to go with the other bcm2835 headers there,
and I have fixed the region size.

Applied to target-arm.next, thanks.

thanks
-- PMM


^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [PATCH v3] Add basic power management to raspi.
  2021-06-28 17:38   ` Peter Maydell
@ 2021-06-29  7:46     ` Philippe Mathieu-Daudé
  2021-06-29 15:47       ` Nolan
  0 siblings, 1 reply; 6+ messages in thread
From: Philippe Mathieu-Daudé @ 2021-06-29  7:46 UTC (permalink / raw)
  To: Peter Maydell; +Cc: Nolan Leake, QEMU Developers, Andrew Baumann

On 6/28/21 7:38 PM, Peter Maydell wrote:
> On Sat, 26 Jun 2021 at 11:16, Philippe Mathieu-Daudé <f4bug@amsat.org> wrote:
>>
>> Hi Nolan, Peter,
>>
>> On 6/25/21 11:02 PM, Nolan Leake wrote:
>>> diff --git hw/arm/bcm2835_peripherals.c hw/arm/bcm2835_peripherals.c
>>
>> Odd, usually the diff line comes with a/ b/ prefix, I can not
>> apply your patch (git version 2.31.1, Fedora):
>>
>> Applying: Add basic power management to raspi.
>> error: arm/bcm2835_peripherals.c: does not exist in index
>> error: misc/meson.build: does not exist in index
>> error: hw/arm/bcm2835_peripherals.h: does not exist in index
>> Patch failed at 0001 Add basic power management to raspi.
>>
>> But patchew succeeded:
>> https://patchew.org/QEMU/20210625210209.1870217-1-nolan@sigbus.net/
>>
>> Applying: Add basic power management to raspi.
>> Using index info to reconstruct a base tree...
>> A       arm/bcm2835_peripherals.c
>> A       hw/arm/bcm2835_peripherals.h
>> A       misc/meson.build
>> Falling back to patching base and 3-way merge...
>>
>> So I tested patchew's commit 7856ac0e804:
>> https://github.com/patchew-project/qemu/commit/7856ac0e8045d006f1008a03e1d4d8710b9d0612
> 
> It succeeded, but if you look at that tree you'll notice it
> was confused enough to create a new top level directory misc/
> to put the .c file in! I'm not sure how the result manages to build :-)

I had to do move bcm2835_peripherals.c to build (otherwise meson
complains and refuses to finish the configure script). I assumed it was
a problem on my side (or with my git version) and didn't noticed
bcm2835_peripherals.h was not under include/.

> I have fixed this up locally. I have also moved the bcm2835_powermgt.h
> file to include/hw/misc, to go with the other bcm2835 headers there,
> and I have fixed the region size.

Thank you.

Nolan, can you tell us what OS/distribution you are using? You used
git v2.30.2 which might be badly packaged there, and could deserve
a proper bug report.

Regards,

Phil.


^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [PATCH v3] Add basic power management to raspi.
  2021-06-29  7:46     ` Philippe Mathieu-Daudé
@ 2021-06-29 15:47       ` Nolan
  0 siblings, 0 replies; 6+ messages in thread
From: Nolan @ 2021-06-29 15:47 UTC (permalink / raw)
  To: Philippe Mathieu-Daudé, Peter Maydell
  Cc: QEMU Developers, Andrew Baumann

On 6/29/21 12:46 AM, Philippe Mathieu-Daudé wrote:
> I had to do move bcm2835_peripherals.c to build (otherwise meson
> complains and refuses to finish the configure script). I assumed it was
> a problem on my side (or with my git version) and didn't noticed
> bcm2835_peripherals.h was not under include/.

This must have been an artifact of my busted diff, in my tree:
$ find . -name bcm2835_peripherals.h
./include/hw/arm/bcm2835_peripherals.h

> Nolan, can you tell us what OS/distribution you are using? You used
> git v2.30.2 which might be badly packaged there, and could deserve
> a proper bug report.

Debian Bullseye. I had diff.noprefix=true set in my .gitconfig for some 
reason or another. I've removed it.


^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2021-06-29 15:48 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-06-25 21:02 [PATCH v3] Add basic power management to raspi Nolan Leake
2021-06-26 10:16 ` Philippe Mathieu-Daudé
2021-06-28 17:38   ` Peter Maydell
2021-06-29  7:46     ` Philippe Mathieu-Daudé
2021-06-29 15:47       ` Nolan
2021-06-26 17:33 ` Philippe Mathieu-Daudé

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).