From: Lior Weintraub <liorw@pliops.com>
To: Ahmad Fatoum <ahmad@a3f.at>,
"barebox@lists.infradead.org" <barebox@lists.infradead.org>
Subject: RE: [PATCH v2] Porting barebox to a new SoC
Date: Mon, 29 May 2023 13:34:25 +0000 [thread overview]
Message-ID: <PR3P195MB05555743B13DDCB43CEBA309C34A9@PR3P195MB0555.EURP195.PROD.OUTLOOK.COM> (raw)
In-Reply-To: <PR3P195MB05551AE3B3998B097BC90DCEC3459@PR3P195MB0555.EURP195.PROD.OUTLOOK.COM>
Hi Ahmad,
I have revised the addresses and used DRAM address @ 0 instead:
#define UARTBASE (0xD000307000)
#define DRAM_ADDR (0x00000000)
#define MY_STACK_TOP (0x00000000 + SZ_2M) // Set the stack 2MB from DRAM start
static inline void spider_serial_putc(void *base, int c)
{
*((volatile unsigned *)base) = c;
}
I will try to test it on QEMU using an initial QEMU machine we made for Spider.
In this machine we only have 3 memory regions and a PL011 UART:
spider_soc_memories soc_memories[] = {
{.name = "SPIDER_GPRAM", .add = 0xC000000000ULL, .size = 4 * MiB},
{.name = "SPIDER_ROM", .add = 0xC004000000ULL, .size = 128 * KiB},
{.name = "SPIDER_DRAM", .add = 0x0000000000ULL, .size = 1 * GiB},
};
This special QEMU machine can run our BL1 code from "ROM" address (we set the RVBAR to point there).
So my idea is to test the barebox image by the following steps:
1. Modify the QEMU code to have a "ROM" with the size of 128M.
2. Compile our BL1 code to include the barebox.bin as a const array, copy it to "DRAM" @ address 0 and jump there.
For this to work I wanted to understand how to call (i.e. what arguments to pass) to barebox.
So I checked the barebox.map and found the function "start" on address 0.
Then I went to arch/arm/cpu/start.c and realized that the code is compiled with CONFIG_PBL_IMAGE.
In that case I assume I need to pass 3 arguments and use this function prototype:
void start(unsigned long membase, unsigned long memsize, void *boarddata);
Few questions:
1. Will that call work:
typedef void (*barebox_start)(unsigned long , unsigned long , void *);
#define DRAM_START (0)
barebox_start p_barebox = (barebox_start)DRAM_START;
p_barebox(DRAM_START, DRAM_START+SZ_2M, (void *)(DRAM_START+SZ_4M));
This assumes that my BL1 code also copied the device tree (barebox-dt-2nd.img? start_dt_2nd.pblb? start_spider_mk1_evk.pblb?)
2. Do I want to have my code compiled with CONFIG_PBL_IMAGE?
If I understand correctly, it means that my code will provide a PBL (a.k.a BL2) which will set the DRAM and STACK among other things (MMU?).
In that case I assume it is OK.
3. If I try to remove it by having CONFIG_PBL_IMAGE=n on spider_defconfig this doesn't do anything
The build (make spider_defconfig) ignores it and say that " No change to .config ".
4. I also tried to understand how to implement PUTC_LL but not sure I understand.
4.1 When I set "CONFIG_DEBUG_LL=y" on spider_defconfig it is again not written to .config and I get " No change to .config " message.
4.2 Do I need to have my own debug_ll.h file?
5. When I make changes to spider_defconfig and try to regenerate the .config and I get " No change to .config " message, does it mean that those macros are "hidden" symbols like you said about the CONFIG_CPU_V8?
Apologize for so many questions :-)
Cheers,
Lior.
-----Original Message-----
From: Lior Weintraub
Sent: Sunday, May 28, 2023 11:16 PM
To: Ahmad Fatoum <ahmad@a3f.at>; barebox@lists.infradead.org
Subject: RE: [PATCH v2] Porting barebox to a new SoC
Hi Ahmad,
Thank you so much for your kind support!
Indeed we also have a 16GB DRAM that starts from address 0 (though currently we don't have the controller settings (under development)).
I also wrote the BootROM (BL1) for this SoC (128KB ROM @ address 0xC004000000).
I understand now that it would be best for me to develop BL2 that will run from our SRAM.
As this BL2 code is bare-metal I have no problem or limitations with the 40 bit addresses.
The BL2 code will initialize the DRAM controller and then copy Barebox image from NOR Flash to address 0 of the DRAM.
Our NOR Flash is 128MB in size and it is accessed via QSPI controller.
I tried applying your suggested patch but got an error while doing so:
$git apply 0002-Ahmad.patch
0002-Ahmad.patch:115: trailing whitespace.
.of_compatible = spider_board_of_match, };
error: corrupt patch at line 117
After some digging I found that my Outlook probably messed with the patch format (even though I am using text only and no HTML format).
When I went to the web and copied the patch from there (mailing list archive) it was working well (i.e. no compilation error).
Cheers,
Lior.
-----Original Message-----
From: Ahmad Fatoum <ahmad@a3f.at>
Sent: Sunday, May 28, 2023 6:38 PM
To: barebox@lists.infradead.org
Cc: Lior Weintraub <liorw@pliops.com>
Subject: [PATCH v2] Porting barebox to a new SoC
CAUTION: External Sender
From: Lior Weintraub <liorw@pliops.com>
Hi,
I tried to follow the porting guide on https://ddec1-0-en-ctp.trendmicro.com:443/wis/clicktime/v1/query?url=https%3a%2f%2fwww.barebox.org%2fdoc%2flatest%2fdevel%2fporting.html%23&umid=60097eda-f136-45a1-9c8e-cf6a76e45cf8&auth=860a7ebb9feba264acc79b6e38eb59582349362c-480ae23736add41c88ab8d30c090a75517ca7f9e but couldn't follow the instructions.
I would like to port barebox to a new SoC (which is not a derivative of any known SoC).
It has the following:
* Single Cortex A53
* SRAM (4MB) located on address 0xC000000000
The below patch shows my initial test to try and have a starting point.
I am setting env variables:
export ARCH=arm64
export CROSS_COMPILE=/home/pliops/workspace/ARM/arm-gnu-toolchain/bin/aarch64-none-elf-
Then I build with:
make spider_defconfig && make
This gives an error:
aarch64-none-elf-gcc: error: unrecognized argument in option '-mabi=apcs-gnu'
aarch64-none-elf-gcc: note: valid arguments to '-mabi=' are: ilp32 lp64
aarch64-none-elf-gcc: error: unrecognized command-line option '-msoft-float'
aarch64-none-elf-gcc: error: unrecognized command-line option '-mno-unaligned-access'
/home/pliops/workspace/simplest-linux-demo/barebox/scripts/Makefile.build:140: recipe for target 'scripts/mod/empty.o' failed
make[2]: *** [scripts/mod/empty.o] Error 1
Not sure why the compiler flags get -mabi=apcs-gnu when I explicitly set CONFIG_CPU_V8 and the arch/arm/Makefile has:
ifeq ($(CONFIG_CPU_V8), y)
CFLAGS_ABI :=-mabi=lp64
The changes I did:
>From 848b5f9b18bb1bb96d197cbc1b368ee0a729d581 Mon Sep 17 00:00:00 2001
---
arch/arm/Kconfig | 13 ++++++++
arch/arm/Makefile | 1 +
arch/arm/boards/Makefile | 1 +
arch/arm/boards/spider-evk/Makefile | 4 +++
arch/arm/boards/spider-evk/board.c | 26 +++++++++++++++
arch/arm/boards/spider-evk/lowlevel.c | 30 +++++++++++++++++
arch/arm/configs/spider_defconfig | 8 +++++
arch/arm/dts/Makefile | 1 +
arch/arm/dts/spider-mk1-evk.dts | 10 ++++++
arch/arm/dts/spider-mk1.dtsi | 46 +++++++++++++++++++++++++++
arch/arm/mach-spider/Kconfig | 16 ++++++++++
arch/arm/mach-spider/Makefile | 1 +
arch/arm/mach-spider/lowlevel.c | 14 ++++++++
images/Makefile | 1 +
images/Makefile.spider | 5 +++
include/mach/spider/lowlevel.h | 7 ++++
16 files changed, 184 insertions(+)
create mode 100644 arch/arm/boards/spider-evk/Makefile
create mode 100644 arch/arm/boards/spider-evk/board.c
create mode 100644 arch/arm/boards/spider-evk/lowlevel.c
create mode 100644 arch/arm/configs/spider_defconfig create mode 100644 arch/arm/dts/spider-mk1-evk.dts create mode 100644 arch/arm/dts/spider-mk1.dtsi create mode 100644 arch/arm/mach-spider/Kconfig create mode 100644 arch/arm/mach-spider/Makefile create mode 100644 arch/arm/mach-spider/lowlevel.c create mode 100644 images/Makefile.spider create mode 100644 include/mach/spider/lowlevel.h
diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig index e76ee0f6dfe1..e5dcf128447e 100644
--- a/arch/arm/Kconfig
+++ b/arch/arm/Kconfig
@@ -255,6 +255,18 @@ config ARCH_ROCKCHIP
select HAS_DEBUG_LL
imply GPIO_ROCKCHIP
+config ARCH_SPIDER
+ bool "Pliops Spider based"
+ depends on 64BIT
+ depends on ARCH_MULTIARCH
+ select GPIOLIB
+ select HAVE_PBL_MULTI_IMAGES
+ select COMMON_CLK
+ select CLKDEV_LOOKUP
+ select COMMON_CLK_OF_PROVIDER
+ select OFTREE
+ select OFDEVICE
+
config ARCH_STM32MP
bool "STMicroelectronics STM32MP"
depends on 32BIT
@@ -331,6 +343,7 @@ source "arch/arm/mach-omap/Kconfig"
source "arch/arm/mach-pxa/Kconfig"
source "arch/arm/mach-rockchip/Kconfig"
source "arch/arm/mach-socfpga/Kconfig"
+source "arch/arm/mach-spider/Kconfig"
source "arch/arm/mach-stm32mp/Kconfig"
source "arch/arm/mach-versatile/Kconfig"
source "arch/arm/mach-vexpress/Kconfig"
diff --git a/arch/arm/Makefile b/arch/arm/Makefile index 35ebc70f44e2..4c63dfee48f4 100644
--- a/arch/arm/Makefile
+++ b/arch/arm/Makefile
@@ -101,6 +101,7 @@ machine-$(CONFIG_ARCH_MXS) += mxs
machine-$(CONFIG_ARCH_MVEBU) += mvebu
machine-$(CONFIG_ARCH_NOMADIK) += nomadik
machine-$(CONFIG_ARCH_OMAP) += omap
+machine-$(CONFIG_ARCH_SPIDER) += spider
machine-$(CONFIG_ARCH_PXA) += pxa
machine-$(CONFIG_ARCH_ROCKCHIP) += rockchip
machine-$(CONFIG_ARCH_SAMSUNG) += samsung
diff --git a/arch/arm/boards/Makefile b/arch/arm/boards/Makefile index 2877debad535..6fe0a90c81ea 100644
--- a/arch/arm/boards/Makefile
+++ b/arch/arm/boards/Makefile
@@ -135,6 +135,7 @@ obj-$(CONFIG_MACH_SOCFPGA_TERASIC_DE10_NANO) += terasic-de10-nano/
obj-$(CONFIG_MACH_SOCFPGA_TERASIC_SOCKIT) += terasic-sockit/
obj-$(CONFIG_MACH_SOLIDRUN_CUBOX) += solidrun-cubox/
obj-$(CONFIG_MACH_SOLIDRUN_MICROSOM) += solidrun-microsom/
+obj-$(CONFIG_MACH_SPIDER_MK1_EVK) += spider-evk/
obj-$(CONFIG_MACH_STM32MP15XX_DKX) += stm32mp15xx-dkx/
obj-$(CONFIG_MACH_STM32MP13XX_DK) += stm32mp13xx-dk/
obj-$(CONFIG_MACH_LXA_MC1) += lxa-mc1/
diff --git a/arch/arm/boards/spider-evk/Makefile b/arch/arm/boards/spider-evk/Makefile
new file mode 100644
index 000000000000..da63d2625f7a
--- /dev/null
+++ b/arch/arm/boards/spider-evk/Makefile
@@ -0,0 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0-only
+
+obj-y += board.o
+lwl-y += lowlevel.o
diff --git a/arch/arm/boards/spider-evk/board.c b/arch/arm/boards/spider-evk/board.c
new file mode 100644
index 000000000000..3920e83b457d
--- /dev/null
+++ b/arch/arm/boards/spider-evk/board.c
@@ -0,0 +1,26 @@
+#include <bbu.h>
+#include <boot.h>
+#include <bootm.h>
+#include <common.h>
+#include <deep-probe.h>
+#include <environment.h>
+#include <fcntl.h>
+#include <globalvar.h>
+
+static int spider_board_probe(struct device *dev) {
+ /* Do some board-specific setup */
+ return 0;
+}
+
+static const struct of_device_id spider_board_of_match[] = {
+ { .compatible = "pliops,spider-mk1-evk" },
+ { /* sentinel */ },
+};
+
+static struct driver spider_board_driver = {
+ .name = "board-spider",
+ .probe = spider_board_probe,
+ .of_compatible = spider_board_of_match, };
+device_platform_driver(spider_board_driver);
diff --git a/arch/arm/boards/spider-evk/lowlevel.c b/arch/arm/boards/spider-evk/lowlevel.c
new file mode 100644
index 000000000000..e36fcde4208e
--- /dev/null
+++ b/arch/arm/boards/spider-evk/lowlevel.c
@@ -0,0 +1,30 @@
+#include <common.h>
+#include <asm/barebox-arm.h>
+#include <mach/spider/lowlevel.h>
+
+#define BASE_ADDR (0xD000307000)
+#define GPRAM_ADDR (0xC000000000)
+#define MY_STACK_TOP (0xC000000000 + SZ_2M) // Set the stack 2MB from GPRAM start (excatly in the middle)
+static inline void spider_serial_putc(void *base, int c) {
+// if (!(readl(base + UCR1) & UCR1_UARTEN))
+// return;
+//
+// while (!(readl(base + USR2) & USR2_TXDC));
+//
+// writel(c, base + URTX0);
+}
+
+ENTRY_FUNCTION_WITHSTACK(start_spider_mk1_evk, MY_STACK_TOP, r0, r1,
+r2) {
+ extern char __dtb_spider_mk1_evk_start[];
+
+ spider_lowlevel_init();
+
+ relocate_to_current_adr();
+ setup_c();
+
+ pbl_set_putc(spider_serial_putc, (void *)BASE_ADDR);
+
+ barebox_arm_entry(GPRAM_ADDR, SZ_2M,
+__dtb_spider_mk1_evk_start); }
diff --git a/arch/arm/configs/spider_defconfig b/arch/arm/configs/spider_defconfig
new file mode 100644
index 000000000000..c91bb889d97f
--- /dev/null
+++ b/arch/arm/configs/spider_defconfig
@@ -0,0 +1,8 @@
+CONFIG_ARCH_SPIDER=y
+CONFIG_MACH_SPIDER_MK1_EVK=y
+CONFIG_BOARD_ARM_GENERIC_DT=y
+CONFIG_MALLOC_TLSF=y
+CONFIG_KALLSYMS=y
+CONFIG_RELOCATABLE=y
+CONFIG_CONSOLE_ALLOW_COLOR=y
+CONFIG_PBL_CONSOLE=y
diff --git a/arch/arm/dts/Makefile b/arch/arm/dts/Makefile index 98f4c4e0194b..94b304d4878f 100644
--- a/arch/arm/dts/Makefile
+++ b/arch/arm/dts/Makefile
@@ -134,6 +134,7 @@ lwl-$(CONFIG_MACH_SOLIDRUN_CUBOX) += dove-cubox-bb.dtb.o
lwl-$(CONFIG_MACH_SOLIDRUN_MICROSOM) += imx6dl-hummingboard.dtb.o imx6q-hummingboard.dtb.o \
imx6dl-hummingboard2.dtb.o imx6q-hummingboard2.dtb.o \
imx6q-h100.dtb.o
+lwl-$(CONFIG_MACH_SPIDER_MK1_EVK) += spider-mk1-evk.dtb.o
lwl-$(CONFIG_MACH_SKOV_IMX6) += imx6s-skov-imx6.dtb.o imx6dl-skov-imx6.dtb.o imx6q-skov-imx6.dtb.o
lwl-$(CONFIG_MACH_SKOV_ARM9CPU) += at91-skov-arm9cpu.dtb.o
lwl-$(CONFIG_MACH_SEEED_ODYSSEY) += stm32mp157c-odyssey.dtb.o diff --git a/arch/arm/dts/spider-mk1-evk.dts b/arch/arm/dts/spider-mk1-evk.dts new file mode 100644 index 000000000000..b8081cb85bf8
--- /dev/null
+++ b/arch/arm/dts/spider-mk1-evk.dts
@@ -0,0 +1,10 @@
+// SPDX-License-Identifier: GPL-2.0 OR X11
+
+/dts-v1/;
+
+#include "spider-mk1.dtsi"
+
+/ {
+ model = "Pliops Spider MK-I EVK";
+ compatible = "pliops,spider-mk1-evk"; };
diff --git a/arch/arm/dts/spider-mk1.dtsi b/arch/arm/dts/spider-mk1.dtsi new file mode 100644 index 000000000000..d4613848169d
--- /dev/null
+++ b/arch/arm/dts/spider-mk1.dtsi
@@ -0,0 +1,46 @@
+// SPDX-License-Identifier: GPL-2.0 OR X11
+
+/ {
+ #address-cells = <2>;
+ #size-cells = <2>;
+
+ chosen {
+ stdout-path = &uart0;
+ };
+
+ aliases {
+ serial0 = &uart0;
+ };
+
+ cpus {
+ #address-cells = <1>;
+ #size-cells = <0>;
+
+ cpu0: cpu@0 {
+ device_type = "cpu";
+ compatible = "arm,cortex-a53";
+ reg = <0x0>;
+ };
+ };
+
+ memory@1000000 {
+ reg = <0x0 0x1000000 0x0 0x400000>; /* 128M */
+ device_type = "memory";
+ };
+
+ soc {
+ #address-cells = <2>;
+ #size-cells = <2>;
+ ranges;
+
+ sram@c000000000 {
+ compatible = "mmio-sram";
+ reg = <0xc0 0x0 0x0 0x400000>;
+ };
+
+ uart0: serial@d000307000 {
+ compatible = "pliops,spider-uart";
+ reg = <0xd0 0x307000 0 0x1000>;
+ };
+ };
+};
diff --git a/arch/arm/mach-spider/Kconfig b/arch/arm/mach-spider/Kconfig new file mode 100644 index 000000000000..6d2f888a5fd8
--- /dev/null
+++ b/arch/arm/mach-spider/Kconfig
@@ -0,0 +1,16 @@
+# SPDX-License-Identifier: GPL-2.0-only
+
+if ARCH_SPIDER
+
+config ARCH_SPIDER_MK1
+ bool
+ select CPU_V8
+ help
+ The first Cortex-A53-based SoC of the spider family.
+ This symbol is invisble and select by boards
+
+config MACH_SPIDER_MK1_EVK
+ bool "Pliops Spider Reference Design Board"
+ select ARCH_SPIDER_MK1
+
+endif
diff --git a/arch/arm/mach-spider/Makefile b/arch/arm/mach-spider/Makefile new file mode 100644 index 000000000000..b08c4a93ca27
--- /dev/null
+++ b/arch/arm/mach-spider/Makefile
@@ -0,0 +1 @@
+lwl-y += lowlevel.o
diff --git a/arch/arm/mach-spider/lowlevel.c b/arch/arm/mach-spider/lowlevel.c new file mode 100644 index 000000000000..5d62ef0f39e5
--- /dev/null
+++ b/arch/arm/mach-spider/lowlevel.c
@@ -0,0 +1,14 @@
+// SPDX-License-Identifier: GPL-2.0+
+
+#include <linux/types.h>
+#include <mach/spider/lowlevel.h>
+#include <asm/barebox-arm-head.h>
+
+void spider_lowlevel_init(void)
+{
+ arm_cpu_lowlevel_init();
+ /*
+ * not yet relocated, only do writel/readl for stuff that's
+ * critical to run early. No global variables allowed.
+ */
+}
diff --git a/images/Makefile b/images/Makefile index c93f9e268978..97521e713228 100644
--- a/images/Makefile
+++ b/images/Makefile
@@ -150,6 +150,7 @@ include $(srctree)/images/Makefile.mxs include $(srctree)/images/Makefile.omap3 include $(srctree)/images/Makefile.rockchip
include $(srctree)/images/Makefile.socfpga
+include $(srctree)/images/Makefile.spider
include $(srctree)/images/Makefile.stm32mp
include $(srctree)/images/Makefile.tegra include $(srctree)/images/Makefile.versatile
diff --git a/images/Makefile.spider b/images/Makefile.spider new file mode 100644 index 000000000000..c32f2762df04
--- /dev/null
+++ b/images/Makefile.spider
@@ -0,0 +1,5 @@
+# SPDX-License-Identifier: GPL-2.0-only
+
+pblb-$(CONFIG_MACH_SPIDER_MK1_EVK) += start_spider_mk1_evk
+FILE_barebox-spider-mk1-evk.img = start_spider_mk1_evk.pblb
+image-$(CONFIG_MACH_SPIDER_MK1_EVK) += barebox-spider-mk1-evk.img
diff --git a/include/mach/spider/lowlevel.h b/include/mach/spider/lowlevel.h new file mode 100644 index 000000000000..6e0ce1c77f7e
--- /dev/null
+++ b/include/mach/spider/lowlevel.h
@@ -0,0 +1,7 @@
+/* SPDX-License-Identifier: GPL-2.0+ */ #ifndef __MACH_SPIDER_H_
+#define __MACH_SPIDER_H_
+
+void spider_lowlevel_init(void);
+
+#endif
--
2.38.4
next prev parent reply other threads:[~2023-05-29 13:36 UTC|newest]
Thread overview: 40+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-05-28 13:04 Lior Weintraub
2023-05-28 15:35 ` Ahmad Fatoum
2023-05-28 15:37 ` [PATCH v2] " Ahmad Fatoum
2023-05-28 20:15 ` Lior Weintraub
2023-05-29 13:34 ` Lior Weintraub [this message]
2023-05-29 19:03 ` Ahmad Fatoum
2023-05-30 20:10 ` Lior Weintraub
2023-05-31 6:10 ` Ahmad Fatoum
2023-05-31 8:05 ` Lior Weintraub
2023-05-31 8:40 ` Ahmad Fatoum
2023-05-31 16:13 ` Lior Weintraub
2023-05-31 17:55 ` Ahmad Fatoum
2023-05-31 17:59 ` Ahmad Fatoum
2023-06-01 8:54 ` Lior Weintraub
2023-06-01 9:29 ` Ahmad Fatoum
2023-06-01 11:45 ` Lior Weintraub
2023-06-01 12:35 ` Ahmad Fatoum
2023-06-06 12:54 ` Lior Weintraub
2023-06-06 14:34 ` Ahmad Fatoum
2023-06-12 9:27 ` Lior Weintraub
2023-06-12 12:28 ` Ahmad Fatoum
2023-06-12 14:59 ` Lior Weintraub
2023-06-12 15:07 ` Ahmad Fatoum
2023-06-13 12:39 ` Lior Weintraub
2023-06-13 12:50 ` Ahmad Fatoum
2023-06-13 13:27 ` Lior Weintraub
2023-06-14 6:42 ` Lior Weintraub
2023-06-16 16:20 ` Ahmad Fatoum
2023-06-19 6:40 ` Lior Weintraub
2023-06-19 15:22 ` Ahmad Fatoum
2023-06-25 20:33 ` Lior Weintraub
2023-06-30 5:52 ` Ahmad Fatoum
2023-08-03 11:17 ` Lior Weintraub
2023-08-22 8:00 ` Ahmad Fatoum
2023-08-22 8:48 ` Lior Weintraub
2023-09-07 8:32 ` Ahmad Fatoum
2023-09-07 9:07 ` Lior Weintraub
2023-09-07 9:35 ` Ahmad Fatoum
2023-09-07 11:02 ` Lior Weintraub
2023-09-12 6:04 ` Lior Weintraub
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=PR3P195MB05555743B13DDCB43CEBA309C34A9@PR3P195MB0555.EURP195.PROD.OUTLOOK.COM \
--to=liorw@pliops.com \
--cc=ahmad@a3f.at \
--cc=barebox@lists.infradead.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox