Kernel KVM virtualization development
 help / color / mirror / Atom feed
* [PATCH v2 0/1] vfio: selftests: Find devices that have VFIO selftest drivers
@ 2026-04-14 23:09 Josh Hilke
  2026-04-14 23:09 ` [PATCH v2 1/1] " Josh Hilke
  0 siblings, 1 reply; 8+ messages in thread
From: Josh Hilke @ 2026-04-14 23:09 UTC (permalink / raw)
  To: Alex Williamson
  Cc: Sean Christopherson, David Matlack, Vipin Sharma,
	Raghavendra Rao Ananta, kvm, linux-kernel, Josh Hilke

v2 of this series is only a single patch which adds a new script to print the
segment:bus:device.function numbers of PCI devices on the user's system which
have a VFIO selftest driver. 

Example:
$ ./tools/testing/selftests/vfio/scripts/list_devices.sh
0000:6a:01.0
0000:6f:01.0
0000:74:01.0

The devices are compatible with all VFIO selftests. Other devices may be
compatible with VFIO selftests that don't use the driver functionality, but no
gaurantees.

User's can automate binding devices to VFIO (which is required in order to run
the selftests) by directing the output of list_devices.sh into
tools/testing/selftests/vfio/scripts/setup.sh.

Example:
$ ./tools/testing/selftests/vfio/scripts/setup.sh $(./tools/testing/selftests/vfio/scripts/list_devices.sh)
+ echo "0000:6a:01.0" > /sys/bus/pci/drivers/vfio-pci/unbind
+ echo "" > /sys/bus/pci/devices/0000:6a:01.0/driver_override
+ echo "0000:6a:01.0" > /sys/bus/pci/drivers/idxd/bind
+ echo "0000:6f:01.0" > /sys/bus/pci/drivers/vfio-pci/unbind
+ echo "" > /sys/bus/pci/devices/0000:6f:01.0/driver_override
+ echo "0000:6f:01.0" > /sys/bus/pci/drivers/idxd/bind
+ echo "0000:74:01.0" > /sys/bus/pci/drivers/vfio-pci/unbind
+ echo "" > /sys/bus/pci/devices/0000:74:01.0/driver_override
+ echo "0000:74:01.0" > /sys/bus/pci/drivers/idxd/bind

This series is based on top of the kvm/queue branch.

Changes from v1:
---
- Move the functionality to discover devices from setup.sh into its own script (Sean)
- Omit the patch which automates binding devices to VFIO (Sean, David)
- Change title of cover letter (Me)

v1: https://lore.kernel.org/kvm/20260409015139.2800185-1-jrhilke@google.com/

Josh Hilke (1):
  vfio: selftests: Find devices that have VFIO selftest drivers

 tools/testing/selftests/vfio/Makefile         |  1 +
 .../selftests/vfio/scripts/list_devices.sh    | 22 +++++++++++++++++++
 2 files changed, 23 insertions(+)
 create mode 100755 tools/testing/selftests/vfio/scripts/list_devices.sh

-- 
2.54.0.rc0.605.g598a273b03-goog


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

* [PATCH v2 1/1] vfio: selftests: Find devices that have VFIO selftest drivers
  2026-04-14 23:09 [PATCH v2 0/1] vfio: selftests: Find devices that have VFIO selftest drivers Josh Hilke
@ 2026-04-14 23:09 ` Josh Hilke
  2026-04-16 23:35   ` David Matlack
  2026-05-08 18:17   ` Sean Christopherson
  0 siblings, 2 replies; 8+ messages in thread
From: Josh Hilke @ 2026-04-14 23:09 UTC (permalink / raw)
  To: Alex Williamson
  Cc: Sean Christopherson, David Matlack, Vipin Sharma,
	Raghavendra Rao Ananta, kvm, linux-kernel, Josh Hilke

Add a new script, list_devices.sh, which prints out the
segment:bus:device.function numbers of devices on a machine that have a VFIO
selftest driver. This makes it easier to determine if the system is capable of
running VFIO selftests, because devices that have a VFIO selftest driver are
compatible with all VFIO selftests.

Example:
$ ./tools/testing/selftests/vfio/scripts/list_devices.sh
0000:6a:01.0
0000:6f:01.0
0000:74:01.0

Signed-off-by: Josh Hilke <jrhilke@google.com>
Suggested-by: Sean Christopherson <seanjc@google.com>
---
 tools/testing/selftests/vfio/Makefile         |  1 +
 .../selftests/vfio/scripts/list_devices.sh    | 22 +++++++++++++++++++
 2 files changed, 23 insertions(+)
 create mode 100755 tools/testing/selftests/vfio/scripts/list_devices.sh

diff --git a/tools/testing/selftests/vfio/Makefile b/tools/testing/selftests/vfio/Makefile
index 8e90e409e91d..d48ac967f1dc 100644
--- a/tools/testing/selftests/vfio/Makefile
+++ b/tools/testing/selftests/vfio/Makefile
@@ -15,6 +15,7 @@ TEST_GEN_PROGS += vfio_pci_driver_test
 
 TEST_FILES += scripts/cleanup.sh
 TEST_FILES += scripts/lib.sh
+TEST_FILES += scripts/list_devices.sh
 TEST_FILES += scripts/run.sh
 TEST_FILES += scripts/setup.sh
 
diff --git a/tools/testing/selftests/vfio/scripts/list_devices.sh b/tools/testing/selftests/vfio/scripts/list_devices.sh
new file mode 100755
index 000000000000..b56fa23d5657
--- /dev/null
+++ b/tools/testing/selftests/vfio/scripts/list_devices.sh
@@ -0,0 +1,22 @@
+#!/bin/bash
+# SPDX-License-Identifier: GPL-2.0-or-later
+
+# List of devices which have a VFIO selftest driver
+DEVICES=(
+	"8086:0b25" # Intel SPR DSA
+	"8086:11fb" # Intel GNR-D DSA
+	"8086:1212" # Intel DR DSA
+	"8086:0cf8" # Intel CBDMA
+)
+
+# Print the segment:bus:device.function numbers of PCI devices that can be used
+# to run VFIO selftests.
+function main() {
+	local vendor_device_id
+
+	for vendor_device_id in "${DEVICES[@]}"; do
+		lspci -D -d "${vendor_device_id}" | awk '{print $1}'
+	done
+}
+
+main "$@"
-- 
2.54.0.rc0.605.g598a273b03-goog


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

* Re: [PATCH v2 1/1] vfio: selftests: Find devices that have VFIO selftest drivers
  2026-04-14 23:09 ` [PATCH v2 1/1] " Josh Hilke
@ 2026-04-16 23:35   ` David Matlack
  2026-05-08 18:17   ` Sean Christopherson
  1 sibling, 0 replies; 8+ messages in thread
From: David Matlack @ 2026-04-16 23:35 UTC (permalink / raw)
  To: Josh Hilke
  Cc: Alex Williamson, Sean Christopherson, Vipin Sharma,
	Raghavendra Rao Ananta, kvm, linux-kernel

On 2026-04-14 11:09 PM, Josh Hilke wrote:
> Add a new script, list_devices.sh, which prints out the
> segment:bus:device.function numbers of devices on a machine that have a VFIO
> selftest driver. This makes it easier to determine if the system is capable of
> running VFIO selftests, because devices that have a VFIO selftest driver are
> compatible with all VFIO selftests.
> 
> Example:
> $ ./tools/testing/selftests/vfio/scripts/list_devices.sh
> 0000:6a:01.0
> 0000:6f:01.0
> 0000:74:01.0
> 
> Signed-off-by: Josh Hilke <jrhilke@google.com>
> Suggested-by: Sean Christopherson <seanjc@google.com>

Aside the nit below, looks good to me. But would like to get Sean's
feedback too since he requested it.

Reviewed-by: David Matlack <dmatlack@google.com>

> ---
>  tools/testing/selftests/vfio/Makefile         |  1 +
>  .../selftests/vfio/scripts/list_devices.sh    | 22 +++++++++++++++++++
>  2 files changed, 23 insertions(+)
>  create mode 100755 tools/testing/selftests/vfio/scripts/list_devices.sh
> 
> diff --git a/tools/testing/selftests/vfio/Makefile b/tools/testing/selftests/vfio/Makefile
> index 8e90e409e91d..d48ac967f1dc 100644
> --- a/tools/testing/selftests/vfio/Makefile
> +++ b/tools/testing/selftests/vfio/Makefile
> @@ -15,6 +15,7 @@ TEST_GEN_PROGS += vfio_pci_driver_test
>  
>  TEST_FILES += scripts/cleanup.sh
>  TEST_FILES += scripts/lib.sh
> +TEST_FILES += scripts/list_devices.sh
>  TEST_FILES += scripts/run.sh
>  TEST_FILES += scripts/setup.sh
>  
> diff --git a/tools/testing/selftests/vfio/scripts/list_devices.sh b/tools/testing/selftests/vfio/scripts/list_devices.sh
> new file mode 100755
> index 000000000000..b56fa23d5657
> --- /dev/null
> +++ b/tools/testing/selftests/vfio/scripts/list_devices.sh
> @@ -0,0 +1,22 @@
> +#!/bin/bash
> +# SPDX-License-Identifier: GPL-2.0-or-later
> +
> +# List of devices which have a VFIO selftest driver
> +DEVICES=(

nit: Use readonly here.

> +	"8086:0b25" # Intel SPR DSA
> +	"8086:11fb" # Intel GNR-D DSA
> +	"8086:1212" # Intel DR DSA
> +	"8086:0cf8" # Intel CBDMA
> +)
> +
> +# Print the segment:bus:device.function numbers of PCI devices that can be used
> +# to run VFIO selftests.
> +function main() {
> +	local vendor_device_id
> +
> +	for vendor_device_id in "${DEVICES[@]}"; do
> +		lspci -D -d "${vendor_device_id}" | awk '{print $1}'
> +	done
> +}
> +
> +main "$@"
> -- 
> 2.54.0.rc0.605.g598a273b03-goog
> 

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

* Re: [PATCH v2 1/1] vfio: selftests: Find devices that have VFIO selftest drivers
  2026-04-14 23:09 ` [PATCH v2 1/1] " Josh Hilke
  2026-04-16 23:35   ` David Matlack
@ 2026-05-08 18:17   ` Sean Christopherson
  2026-05-08 22:03     ` Josh Hilke
  1 sibling, 1 reply; 8+ messages in thread
From: Sean Christopherson @ 2026-05-08 18:17 UTC (permalink / raw)
  To: Josh Hilke
  Cc: Alex Williamson, David Matlack, Vipin Sharma,
	Raghavendra Rao Ananta, kvm, linux-kernel

On Tue, Apr 14, 2026, Josh Hilke wrote:
> +# Print the segment:bus:device.function numbers of PCI devices that can be used
> +# to run VFIO selftests.
> +function main() {
> +	local vendor_device_id
> +
> +	for vendor_device_id in "${DEVICES[@]}"; do
> +		lspci -D -d "${vendor_device_id}" | awk '{print $1}'

For ignorant people like me, it would be helpful to capture what device was actually
found.  I mean, I don't necessarily know exactly what these devices do, but as the
list grows, at least having a general sense of what device I'm going to be feeding
into VFIO would be helpful.

E.g. something like this (ignore my terrible script skills)?

#!/bin/bash
# SPDX-License-Identifier: GPL-2.0-or-later

# List of devices which have a VFIO selftest driver
DEVICES=(
	"8086:0b25","Intel SPR DSA"
	"8086:11fb","Intel GNR-D DSA"
	"8086:1212","Intel DR DSA"
	"8086:0cf8","Intel CBDMA"
)

# Print the segment:bus:device.function numbers of PCI devices that can be used
# to run VFIO selftests.
function main() {
	local found
	local i 

	OLDIFS=$IFS
	IFS=','

	for i in "${DEVICES[@]}"; do
		set -- $i
		found=$(lspci -D -d "$1" | cut -f 1 -d ' ')
		if [[ -n $found ]]; then
			echo "$2 ($1) Device IDs:"
			echo $found
		fi
	done

	IFS=$OLDIFS
}

main


# ./devices.sh 
Intel SPR DSA (8086:0b25) Device IDs:
0000:6a:01.0
0000:6f:01.0
0000:74:01.0
0000:79:01.0
0000:e7:01.0
0000:ec:01.0
0000:f1:01.0
0000:f6:01.0


> +	done
> +}
> +
> +main "$@"

Why pass along args?  The script doesn't actually recognize any arguments.

> -- 
> 2.54.0.rc0.605.g598a273b03-goog
> 

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

* Re: [PATCH v2 1/1] vfio: selftests: Find devices that have VFIO selftest drivers
  2026-05-08 18:17   ` Sean Christopherson
@ 2026-05-08 22:03     ` Josh Hilke
  2026-05-08 22:20       ` Sean Christopherson
  0 siblings, 1 reply; 8+ messages in thread
From: Josh Hilke @ 2026-05-08 22:03 UTC (permalink / raw)
  To: Sean Christopherson
  Cc: Alex Williamson, David Matlack, Vipin Sharma,
	Raghavendra Rao Ananta, kvm, linux-kernel

On Fri, May 8, 2026 at 11:17 AM Sean Christopherson <seanjc@google.com> wrote:
>
> On Tue, Apr 14, 2026, Josh Hilke wrote:
> > +# Print the segment:bus:device.function numbers of PCI devices that can be used
> > +# to run VFIO selftests.
> > +function main() {
> > +     local vendor_device_id
> > +
> > +     for vendor_device_id in "${DEVICES[@]}"; do
> > +             lspci -D -d "${vendor_device_id}" | awk '{print $1}'
>
> For ignorant people like me, it would be helpful to capture what device was actually
> found.  I mean, I don't necessarily know exactly what these devices do, but as the
> list grows, at least having a general sense of what device I'm going to be feeding
> into VFIO would be helpful.
>

Sure I can do that.

> # ./devices.sh
> Intel SPR DSA (8086:0b25) Device IDs:
> 0000:6a:01.0
> 0000:6f:01.0
> 0000:74:01.0
> 0000:79:01.0
> 0000:e7:01.0
> 0000:ec:01.0
> 0000:f1:01.0
> 0000:f6:01.0

How about a "-v" (verbose) option which prints the device name
alongside the BDF?

$ ./list_devices.sh -v
0000:6a:01.0 Intel SPR DSA (8086:0b25)
0000:6f:01.0 Intel SPR DSA (8086:0b25)

This approach preserves the ability to pipe the script output into
/tools/testing/selftests/vfio/scripts/setup.sh to automate binding the
devices to VFIO by excluding the -v arg since the setup script expects
a list of BDFs.

> > +main "$@"
>
> Why pass along args?  The script doesn't actually recognize any arguments.

It's a remnant from copying another script when creating this one.
I'll remove it if we don't add the -v argument.

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

* Re: [PATCH v2 1/1] vfio: selftests: Find devices that have VFIO selftest drivers
  2026-05-08 22:03     ` Josh Hilke
@ 2026-05-08 22:20       ` Sean Christopherson
  2026-05-08 22:49         ` David Matlack
  0 siblings, 1 reply; 8+ messages in thread
From: Sean Christopherson @ 2026-05-08 22:20 UTC (permalink / raw)
  To: Josh Hilke
  Cc: Alex Williamson, David Matlack, Vipin Sharma,
	Raghavendra Rao Ananta, kvm, linux-kernel

On Fri, May 08, 2026, Josh Hilke wrote:
> On Fri, May 8, 2026 at 11:17 AM Sean Christopherson <seanjc@google.com> wrote:
> >
> > On Tue, Apr 14, 2026, Josh Hilke wrote:
> > > +# Print the segment:bus:device.function numbers of PCI devices that can be used
> > > +# to run VFIO selftests.
> > > +function main() {
> > > +     local vendor_device_id
> > > +
> > > +     for vendor_device_id in "${DEVICES[@]}"; do
> > > +             lspci -D -d "${vendor_device_id}" | awk '{print $1}'
> >
> > For ignorant people like me, it would be helpful to capture what device was actually
> > found.  I mean, I don't necessarily know exactly what these devices do, but as the
> > list grows, at least having a general sense of what device I'm going to be feeding
> > into VFIO would be helpful.
> >
> 
> Sure I can do that.
> 
> > # ./devices.sh
> > Intel SPR DSA (8086:0b25) Device IDs:
> > 0000:6a:01.0
> > 0000:6f:01.0
> > 0000:74:01.0
> > 0000:79:01.0
> > 0000:e7:01.0
> > 0000:ec:01.0
> > 0000:f1:01.0
> > 0000:f6:01.0
> 
> How about a "-v" (verbose) option which prints the device name
> alongside the BDF?
> Works for me.  

> $ ./list_devices.sh -v
> 0000:6a:01.0 Intel SPR DSA (8086:0b25)
> 0000:6f:01.0 Intel SPR DSA (8086:0b25)

Maybe add a dash to visually separate things?  E.g.

  0000:6a:01.0 - Intel SPR DSA (8086:0b25)
 
> This approach preserves the ability to pipe the script output into
> /tools/testing/selftests/vfio/scripts/setup.sh to automate binding the
> devices to VFIO by excluding the -v arg since the setup script expects
> a list of BDFs.

Alternatively, -q for quiet?  Or:

  ./devices.sh | cut -f 1 -d ' ' | setup.sh

Or have setup.h do the cutting?  I'm a-ok with a -v, but if the script is mostly
going to be run by humans (no idea if this is true), it seems like it should use
the more verbose version by default.

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

* Re: [PATCH v2 1/1] vfio: selftests: Find devices that have VFIO selftest drivers
  2026-05-08 22:20       ` Sean Christopherson
@ 2026-05-08 22:49         ` David Matlack
  2026-05-11 16:12           ` Josh Hilke
  0 siblings, 1 reply; 8+ messages in thread
From: David Matlack @ 2026-05-08 22:49 UTC (permalink / raw)
  To: Sean Christopherson
  Cc: Josh Hilke, Alex Williamson, Vipin Sharma, Raghavendra Rao Ananta,
	kvm, linux-kernel

On Fri, May 8, 2026 at 3:20 PM Sean Christopherson <seanjc@google.com> wrote:
>
> On Fri, May 08, 2026, Josh Hilke wrote:
> > On Fri, May 8, 2026 at 11:17 AM Sean Christopherson <seanjc@google.com> wrote:
> > >
> > > On Tue, Apr 14, 2026, Josh Hilke wrote:
> > > > +# Print the segment:bus:device.function numbers of PCI devices that can be used
> > > > +# to run VFIO selftests.
> > > > +function main() {
> > > > +     local vendor_device_id
> > > > +
> > > > +     for vendor_device_id in "${DEVICES[@]}"; do
> > > > +             lspci -D -d "${vendor_device_id}" | awk '{print $1}'
> > >
> > > For ignorant people like me, it would be helpful to capture what device was actually
> > > found.  I mean, I don't necessarily know exactly what these devices do, but as the
> > > list grows, at least having a general sense of what device I'm going to be feeding
> > > into VFIO would be helpful.
> > >
> >
> > Sure I can do that.
> >
> > > # ./devices.sh
> > > Intel SPR DSA (8086:0b25) Device IDs:
> > > 0000:6a:01.0
> > > 0000:6f:01.0
> > > 0000:74:01.0
> > > 0000:79:01.0
> > > 0000:e7:01.0
> > > 0000:ec:01.0
> > > 0000:f1:01.0
> > > 0000:f6:01.0
> >
> > How about a "-v" (verbose) option which prints the device name
> > alongside the BDF?
> > Works for me.
>
> > $ ./list_devices.sh -v
> > 0000:6a:01.0 Intel SPR DSA (8086:0b25)
> > 0000:6f:01.0 Intel SPR DSA (8086:0b25)
>
> Maybe add a dash to visually separate things?  E.g.
>
>   0000:6a:01.0 - Intel SPR DSA (8086:0b25)
>
> > This approach preserves the ability to pipe the script output into
> > /tools/testing/selftests/vfio/scripts/setup.sh to automate binding the
> > devices to VFIO by excluding the -v arg since the setup script expects
> > a list of BDFs.
>
> Alternatively, -q for quiet?  Or:
>
>   ./devices.sh | cut -f 1 -d ' ' | setup.sh
>
> Or have setup.h do the cutting?  I'm a-ok with a -v, but if the script is mostly
> going to be run by humans (no idea if this is true), it seems like it should use
> the more verbose version by default.

Let's do -q. That makes the default (no arguments) usable by humans.
For scripting, it's easy enough to pass in -q.

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

* Re: [PATCH v2 1/1] vfio: selftests: Find devices that have VFIO selftest drivers
  2026-05-08 22:49         ` David Matlack
@ 2026-05-11 16:12           ` Josh Hilke
  0 siblings, 0 replies; 8+ messages in thread
From: Josh Hilke @ 2026-05-11 16:12 UTC (permalink / raw)
  To: David Matlack
  Cc: Sean Christopherson, Alex Williamson, Vipin Sharma,
	Raghavendra Rao Ananta, kvm, linux-kernel

On Fri, May 8, 2026 at 3:50 PM David Matlack <dmatlack@google.com> wrote:
>
> On Fri, May 8, 2026 at 3:20 PM Sean Christopherson <seanjc@google.com> wrote:
> >
> > On Fri, May 08, 2026, Josh Hilke wrote:
> > > On Fri, May 8, 2026 at 11:17 AM Sean Christopherson <seanjc@google.com> wrote:
> > > >
> > > > On Tue, Apr 14, 2026, Josh Hilke wrote:
> > > > > +# Print the segment:bus:device.function numbers of PCI devices that can be used
> > > > > +# to run VFIO selftests.
> > > > > +function main() {
> > > > > +     local vendor_device_id
> > > > > +
> > > > > +     for vendor_device_id in "${DEVICES[@]}"; do
> > > > > +             lspci -D -d "${vendor_device_id}" | awk '{print $1}'
> > > >
> > > > For ignorant people like me, it would be helpful to capture what device was actually
> > > > found.  I mean, I don't necessarily know exactly what these devices do, but as the
> > > > list grows, at least having a general sense of what device I'm going to be feeding
> > > > into VFIO would be helpful.
> > > >
> > >
> > > Sure I can do that.
> > >
> > > > # ./devices.sh
> > > > Intel SPR DSA (8086:0b25) Device IDs:
> > > > 0000:6a:01.0
> > > > 0000:6f:01.0
> > > > 0000:74:01.0
> > > > 0000:79:01.0
> > > > 0000:e7:01.0
> > > > 0000:ec:01.0
> > > > 0000:f1:01.0
> > > > 0000:f6:01.0
> > >
> > > How about a "-v" (verbose) option which prints the device name
> > > alongside the BDF?
> > > Works for me.
> >
> > > $ ./list_devices.sh -v
> > > 0000:6a:01.0 Intel SPR DSA (8086:0b25)
> > > 0000:6f:01.0 Intel SPR DSA (8086:0b25)
> >
> > Maybe add a dash to visually separate things?  E.g.
> >
> >   0000:6a:01.0 - Intel SPR DSA (8086:0b25)
> >
> > > This approach preserves the ability to pipe the script output into
> > > /tools/testing/selftests/vfio/scripts/setup.sh to automate binding the
> > > devices to VFIO by excluding the -v arg since the setup script expects
> > > a list of BDFs.
> >
> > Alternatively, -q for quiet?  Or:
> >
> >   ./devices.sh | cut -f 1 -d ' ' | setup.sh
> >
> > Or have setup.h do the cutting?  I'm a-ok with a -v, but if the script is mostly
> > going to be run by humans (no idea if this is true), it seems like it should use
> > the more verbose version by default.
>
> Let's do -q. That makes the default (no arguments) usable by humans.
> For scripting, it's easy enough to pass in -q.

-q sounds good to me. Will do in v3.

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

end of thread, other threads:[~2026-05-11 16:12 UTC | newest]

Thread overview: 8+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-04-14 23:09 [PATCH v2 0/1] vfio: selftests: Find devices that have VFIO selftest drivers Josh Hilke
2026-04-14 23:09 ` [PATCH v2 1/1] " Josh Hilke
2026-04-16 23:35   ` David Matlack
2026-05-08 18:17   ` Sean Christopherson
2026-05-08 22:03     ` Josh Hilke
2026-05-08 22:20       ` Sean Christopherson
2026-05-08 22:49         ` David Matlack
2026-05-11 16:12           ` Josh Hilke

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox