qemu-commits
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Qemu-commits] [qemu/qemu] 6c5f89: build: further refine build.ninja rul


From: Richard Henderson
Subject: [Qemu-commits] [qemu/qemu] 6c5f89: build: further refine build.ninja rules
Date: Mon, 26 Jun 2023 04:45:01 -0700

  Branch: refs/heads/staging
  Home:   https://github.com/qemu/qemu
  Commit: 6c5f893d1771edc49fe6d3f8580be19a42b3b118
      
https://github.com/qemu/qemu/commit/6c5f893d1771edc49fe6d3f8580be19a42b3b118
  Author: Paolo Bonzini <pbonzini@redhat.com>
  Date:   2023-06-26 (Mon, 26 Jun 2023)

  Changed paths:
    M Makefile
    M configure

  Log Message:
  -----------
  build: further refine build.ninja rules

In commit b0fcc6fc7fc1 ("build: rebuild build.ninja using
"meson setup --reconfigure"", 2023-05-19) I changed the build.ninja
rule in the Makefile to use "meson setup" so that the Makefile would
pick up a changed path to the meson binary.

However, there was a reason why build.ninja was rebuilt using $(NINJA)
itself.  Namely, ninja has its own cache of file modification times,
and if it does not know about the modification that was done outside
its control, it will *also* try to regenerate build.ninja.  This can be
simply by running "make" on a fresh tree immediately after "configure";
that will trigger an unnecessary meson run.

So, apply a refinement to the rule in order to cover both cases:

- track the meson binary that was used (and that is embedded in
  build.ninja's reconfigure rules); to do this, write build.ninja.stamp
  right after executing meson successfully

- if it changed, force usage of "$(MESON) setup --reconfigure" to
  update the path in the reconfigure rule

- if it didn't change, use "$(NINJA) build.ninja" just like before
  commit b0fcc6fc7fc1.

Reported-by: Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk>
Tested-by: Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>


  Commit: a0488cd0444101765744b8ea848fa4af7a2e850c
      
https://github.com/qemu/qemu/commit/a0488cd0444101765744b8ea848fa4af7a2e850c
  Author: Philippe Mathieu-Daudé <philmd@linaro.org>
  Date:   2023-06-26 (Mon, 26 Jun 2023)

  Changed paths:
    M hw/remote/proxy.c

  Log Message:
  -----------
  hw/remote/proxy: Remove dubious 'event_notifier-posix.c' include

event_notifier-posix.c is registered in meson's util_ss[] source
set, which is built as libqemuutil.a.p library. Both tools and
system emulation binaries are linked with qemuutil, so there is
no point in including this source file.

Introduced in commit bd36adb8df ("multi-process: create IOHUB
object to handle irq").

Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org>
Message-Id: <20230606134913.93724-1-philmd@linaro.org>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>


  Commit: a494fdb715832000ee9047a549a35aacfea8175e
      
https://github.com/qemu/qemu/commit/a494fdb715832000ee9047a549a35aacfea8175e
  Author: Gavin Shan <gshan@redhat.com>
  Date:   2023-06-26 (Mon, 26 Jun 2023)

  Changed paths:
    M hw/core/machine.c
    M include/hw/boards.h

  Log Message:
  -----------
  numa: Validate cluster and NUMA node boundary if required

For some architectures like ARM64, multiple CPUs in one cluster can be
associated with different NUMA nodes, which is irregular configuration
because we shouldn't have this in baremetal environment. The irregular
configuration causes Linux guest to misbehave, as the following warning
messages indicate.

  -smp 6,maxcpus=6,sockets=2,clusters=1,cores=3,threads=1 \
  -numa node,nodeid=0,cpus=0-1,memdev=ram0                \
  -numa node,nodeid=1,cpus=2-3,memdev=ram1                \
  -numa node,nodeid=2,cpus=4-5,memdev=ram2                \

  ------------[ cut here ]------------
  WARNING: CPU: 0 PID: 1 at kernel/sched/topology.c:2271 
build_sched_domains+0x284/0x910
  Modules linked in:
  CPU: 0 PID: 1 Comm: swapper/0 Not tainted 5.14.0-268.el9.aarch64 #1
  pstate: 00400005 (nzcv daif +PAN -UAO -TCO -DIT -SSBS BTYPE=--)
  pc : build_sched_domains+0x284/0x910
  lr : build_sched_domains+0x184/0x910
  sp : ffff80000804bd50
  x29: ffff80000804bd50 x28: 0000000000000002 x27: 0000000000000000
  x26: ffff800009cf9a80 x25: 0000000000000000 x24: ffff800009cbf840
  x23: ffff000080325000 x22: ffff0000005df800 x21: ffff80000a4ce508
  x20: 0000000000000000 x19: ffff000080324440 x18: 0000000000000014
  x17: 00000000388925c0 x16: 000000005386a066 x15: 000000009c10cc2e
  x14: 00000000000001c0 x13: 0000000000000001 x12: ffff00007fffb1a0
  x11: ffff00007fffb180 x10: ffff80000a4ce508 x9 : 0000000000000041
  x8 : ffff80000a4ce500 x7 : ffff80000a4cf920 x6 : 0000000000000001
  x5 : 0000000000000001 x4 : 0000000000000007 x3 : 0000000000000002
  x2 : 0000000000001000 x1 : ffff80000a4cf928 x0 : 0000000000000001
  Call trace:
   build_sched_domains+0x284/0x910
   sched_init_domains+0xac/0xe0
   sched_init_smp+0x48/0xc8
   kernel_init_freeable+0x140/0x1ac
   kernel_init+0x28/0x140
   ret_from_fork+0x10/0x20

Improve the situation to warn when multiple CPUs in one cluster have
been associated with different NUMA nodes. However, one NUMA node is
allowed to be associated with different clusters.

Signed-off-by: Gavin Shan <gshan@redhat.com>
Acked-by: Philippe Mathieu-Daudé <philmd@linaro.org>
Acked-by: Igor Mammedov <imammedo@redhat.com>
Message-Id: <20230509002739.18388-2-gshan@redhat.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>


  Commit: fecff672351ace5e39adf7dbcf7a8ee748b201cb
      
https://github.com/qemu/qemu/commit/fecff672351ace5e39adf7dbcf7a8ee748b201cb
  Author: Gavin Shan <gshan@redhat.com>
  Date:   2023-06-26 (Mon, 26 Jun 2023)

  Changed paths:
    M hw/arm/sbsa-ref.c
    M hw/arm/virt.c

  Log Message:
  -----------
  hw/arm: Validate cluster and NUMA node boundary

There are two ARM machines where NUMA is aware: 'virt' and 'sbsa-ref'.
Both of them are required to follow cluster-NUMA-node boundary. To
enable the validation to warn about the irregular configuration where
multiple CPUs in one cluster have been associated with different NUMA
nodes.

Signed-off-by: Gavin Shan <gshan@redhat.com>
Acked-by: Igor Mammedov <imammedo@redhat.com>
Message-Id: <20230509002739.18388-3-gshan@redhat.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>


  Commit: 3d9981cde964ea80f9c58072ddbb4df8b5a7183a
      
https://github.com/qemu/qemu/commit/3d9981cde964ea80f9c58072ddbb4df8b5a7183a
  Author: Gavin Shan <gshan@redhat.com>
  Date:   2023-06-26 (Mon, 26 Jun 2023)

  Changed paths:
    M hw/riscv/spike.c
    M hw/riscv/virt.c

  Log Message:
  -----------
  hw/riscv: Validate cluster and NUMA node boundary

There are two RISCV machines where NUMA is aware: 'virt' and 'spike'.
Both of them are required to follow cluster-NUMA-node boundary. To
enable the validation to warn about the irregular configuration where
multiple CPUs in one cluster has been associated with multiple NUMA
nodes.

Signed-off-by: Gavin Shan <gshan@redhat.com>
Reviewed-by: Daniel Henrique Barboza <dbarboza@ventanamicro.com>
Acked-by: Igor Mammedov <imammedo@redhat.com>
Acked-by: Alistair Francis <alistair.francis@wdc.com>
Message-Id: <20230509002739.18388-4-gshan@redhat.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>


  Commit: 3b6f485275ae95a81eec589d2773b86ca9ddec4d
      
https://github.com/qemu/qemu/commit/3b6f485275ae95a81eec589d2773b86ca9ddec4d
  Author: Marcelo Tosatti <mtosatti@redhat.com>
  Date:   2023-06-26 (Mon, 26 Jun 2023)

  Changed paths:
    M accel/kvm/kvm-all.c
    M include/hw/core/cpu.h

  Log Message:
  -----------
  kvm: reuse per-vcpu stats fd to avoid vcpu interruption

A regression has been detected in latency testing of KVM guests.
More specifically, it was observed that the cyclictest
numbers inside of an isolated vcpu (running on isolated pcpu) are:

Where a maximum of 50us is acceptable.

The implementation of KVM_GET_STATS_FD uses run_on_cpu to query
per vcpu statistics, which interrupts the vcpu (and is unnecessary).

To fix this, open the per vcpu stats fd on vcpu initialization,
and read from that fd from QEMU's main thread.

Signed-off-by: Marcelo Tosatti <mtosatti@redhat.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>


  Commit: 4d714d1a0bf1fca9576ee53a1a5dfa3fd5ddae99
      
https://github.com/qemu/qemu/commit/4d714d1a0bf1fca9576ee53a1a5dfa3fd5ddae99
  Author: Paolo Bonzini <pbonzini@redhat.com>
  Date:   2023-06-26 (Mon, 26 Jun 2023)

  Changed paths:
    M target/i386/tcg/translate.c

  Log Message:
  -----------
  target/i386: fix INVD vmexit

Due to a typo or perhaps a brain fart, the INVD vmexit was never generated.
Fix it (but not that fixing just the typo would break both INVD and WBINVD,
due to a case of two wrongs making a right).

Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>


  Commit: 8afce497e42bb279bcbc1637ecd30b70fc001947
      
https://github.com/qemu/qemu/commit/8afce497e42bb279bcbc1637ecd30b70fc001947
  Author: Paolo Bonzini <pbonzini@redhat.com>
  Date:   2023-06-26 (Mon, 26 Jun 2023)

  Changed paths:
    M target/i386/cpu.c

  Log Message:
  -----------
  target/i386: TCG supports 3DNow! prefetch(w)

The AMD prefetch(w) instructions have not been deprecated together with the rest
of 3DNow!, and in fact are even supported by newer Intel processor.  Mark them
as supported by TCG, as it supports all of 3DNow!.

Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>


  Commit: 691925e5a3215caa6096f56070734b95054f800b
      
https://github.com/qemu/qemu/commit/691925e5a3215caa6096f56070734b95054f800b
  Author: Paolo Bonzini <pbonzini@redhat.com>
  Date:   2023-06-26 (Mon, 26 Jun 2023)

  Changed paths:
    M target/i386/cpu.c

  Log Message:
  -----------
  target/i386: TCG supports RDSEED

TCG implements RDSEED, and in fact uses qcrypto_random_bytes which is
secure enough to match hardware behavior.  Expose it to guests.

Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>


  Commit: f9e0dbae7844738f2b7d8bdead7be506a8c7646d
      
https://github.com/qemu/qemu/commit/f9e0dbae7844738f2b7d8bdead7be506a8c7646d
  Author: Paolo Bonzini <pbonzini@redhat.com>
  Date:   2023-06-26 (Mon, 26 Jun 2023)

  Changed paths:
    M target/i386/tcg/translate.c

  Log Message:
  -----------
  target/i386: do not accept RDSEED if CPUID bit absent

Suggested-by: Richard Henderson <richard.henderson@linaro.org>
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>


  Commit: 1420dd6a19cfbdf444af5622797d5d95a24d9461
      
https://github.com/qemu/qemu/commit/1420dd6a19cfbdf444af5622797d5d95a24d9461
  Author: Paolo Bonzini <pbonzini@redhat.com>
  Date:   2023-06-26 (Mon, 26 Jun 2023)

  Changed paths:
    M target/i386/cpu.c

  Log Message:
  -----------
  target/i386: TCG supports XSAVEERPTR

XSAVEERPTR is actually a fix for an errata; TCG does not have the issue.

Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>


  Commit: 431c51e9d48faecbd2dd3ffc49b1636f280bfe8d
      
https://github.com/qemu/qemu/commit/431c51e9d48faecbd2dd3ffc49b1636f280bfe8d
  Author: Paolo Bonzini <pbonzini@redhat.com>
  Date:   2023-06-26 (Mon, 26 Jun 2023)

  Changed paths:
    M target/i386/cpu.c
    M target/i386/tcg/translate.c

  Log Message:
  -----------
  target/i386: TCG supports WBNOINVD

WBNOINVD is the same as INVD or WBINVD as far as TCG is concerned,
since there is no cache in TCG and therefore no invalidation side effect
in WBNOINVD.

With respect to SVM emulation, processors that do not support WBNOINVD
will ignore the prefix and treat it as WBINVD, while those that support
it will generate exactly the same vmexit.

Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>


  Commit: fd5dcb1ccd660e47fb9f74043a16539631f53386
      
https://github.com/qemu/qemu/commit/fd5dcb1ccd660e47fb9f74043a16539631f53386
  Author: Paolo Bonzini <pbonzini@redhat.com>
  Date:   2023-06-26 (Mon, 26 Jun 2023)

  Changed paths:
    M target/i386/cpu.c
    M target/i386/tcg/translate.c

  Log Message:
  -----------
  target/i386: Intel only supports SYSCALL/SYSRET in long mode

Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>


  Commit: 75a02adf81911c14ec51b11a8ecd6c8aabcbd049
      
https://github.com/qemu/qemu/commit/75a02adf81911c14ec51b11a8ecd6c8aabcbd049
  Author: Paolo Bonzini <pbonzini@redhat.com>
  Date:   2023-06-26 (Mon, 26 Jun 2023)

  Changed paths:
    M target/i386/tcg/translate.c

  Log Message:
  -----------
  target/i386: AMD only supports SYSENTER/SYSEXIT in 32-bit mode

Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>


  Commit: 53b9b4cc9fb956279c6494bfa7d7ea61f07bb214
      
https://github.com/qemu/qemu/commit/53b9b4cc9fb956279c6494bfa7d7ea61f07bb214
  Author: Paolo Bonzini <pbonzini@redhat.com>
  Date:   2023-06-26 (Mon, 26 Jun 2023)

  Changed paths:
    M target/i386/tcg/translate.c

  Log Message:
  -----------
  target/i386: sysret and sysexit are privileged

Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>


  Commit: 6750485bf42a9917a29487aec899687669104e07
      
https://github.com/qemu/qemu/commit/6750485bf42a9917a29487aec899687669104e07
  Author: Paolo Bonzini <pbonzini@redhat.com>
  Date:   2023-06-26 (Mon, 26 Jun 2023)

  Changed paths:
    M meson.build
    M target/i386/cpu.c
    M target/i386/helper.h
    M target/i386/tcg/misc_helper.c
    M target/i386/tcg/translate.c

  Log Message:
  -----------
  target/i386: implement RDPID in TCG

RDPID corresponds to a RDMSR(TSC_AUX); however, it is unprivileged
so for user-mode emulation we must provide the value that the kernel
places in the MSR.  For Linux, it is a combination of the current CPU
and the current NUMA node, both of which can be retrieved with getcpu(2).
Also try sched_getcpu(), which might be there on the BSDs.  If there is
no portable way to retrieve the current CPU id from userspace, return 0.

RDTSCP is reimplemented as RDTSC + RDPID ECX; the differences in terms
of serializability are not relevant to QEMU.

Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>


  Commit: 63fd8ef080351357c0cb0644ed63fd3e2a8833a8
      
https://github.com/qemu/qemu/commit/63fd8ef080351357c0cb0644ed63fd3e2a8833a8
  Author: Paolo Bonzini <pbonzini@redhat.com>
  Date:   2023-06-26 (Mon, 26 Jun 2023)

  Changed paths:
    M bsd-user/i386/target_arch_cpu.h
    M linux-user/i386/cpu_loop.c
    M target/i386/cpu.c
    M target/i386/helper.h
    M target/i386/tcg/seg_helper.c
    M target/i386/tcg/sysemu/seg_helper.c
    M target/i386/tcg/translate.c
    M target/i386/tcg/user/seg_helper.c

  Log Message:
  -----------
  target/i386: implement SYSCALL/SYSRET in 32-bit emulators

AMD supports both 32-bit and 64-bit SYSCALL/SYSRET, but the TCG only
exposes it for 64-bit targets.  For system emulation just reuse the
helper; for user-mode emulation the ABI is the same as "int $80".

The BSDs does not support any fast system call mechanism in 32-bit
mode so add to bsd-user the same stub that FreeBSD has for 64-bit
compatibility mode.

Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>


  Commit: 8edddaa23d75c57e093d99bf098a39f8cbd227c7
      
https://github.com/qemu/qemu/commit/8edddaa23d75c57e093d99bf098a39f8cbd227c7
  Author: Paolo Bonzini <pbonzini@redhat.com>
  Date:   2023-06-26 (Mon, 26 Jun 2023)

  Changed paths:
    M configure
    M scripts/git-submodule.sh

  Log Message:
  -----------
  git-submodule.sh: allow running in validate mode without previous update

The call to git-submodule.sh done in configure may happen without a
previous checkout of the roms/SLOF submodule, or even without a
previous run of the script.

So, handle creating a .git-submodule-status file even in validate
mode.  If git is absent, ensure that all passed directories exists
(because you should be in a fresh untar and will not have stale
arguments to git-submodule.sh) but do no other checks.  If git
is present, ensure that .git-submodule-status contains an entry
for all submodules passed on the command line.

With this change, "ignore" mode is not needed anymore.

Reported-by: Nina Schoetterl-Glausch <nsg@linux.ibm.com>
Fixes: b11f9bd96f4 ("configure: move SLOF submodule handling to 
pc-bios/s390-ccw", 2023-06-06)
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>


  Commit: cd041ddbc05a677d55981ff76ae2a373aee0b082
      
https://github.com/qemu/qemu/commit/cd041ddbc05a677d55981ff76ae2a373aee0b082
  Author: Richard Henderson <richard.henderson@linaro.org>
  Date:   2023-06-26 (Mon, 26 Jun 2023)

  Changed paths:
    M Makefile
    M accel/kvm/kvm-all.c
    M bsd-user/i386/target_arch_cpu.h
    M configure
    M hw/arm/sbsa-ref.c
    M hw/arm/virt.c
    M hw/core/machine.c
    M hw/remote/proxy.c
    M hw/riscv/spike.c
    M hw/riscv/virt.c
    M include/hw/boards.h
    M include/hw/core/cpu.h
    M linux-user/i386/cpu_loop.c
    M meson.build
    M scripts/git-submodule.sh
    M target/i386/cpu.c
    M target/i386/helper.h
    M target/i386/tcg/misc_helper.c
    M target/i386/tcg/seg_helper.c
    M target/i386/tcg/sysemu/seg_helper.c
    M target/i386/tcg/translate.c
    M target/i386/tcg/user/seg_helper.c

  Log Message:
  -----------
  Merge tag 'for-upstream' of https://gitlab.com/bonzini/qemu into staging

* kvm: reuse per-vcpu stats fd to avoid vcpu interruption
* Validate cluster and NUMA node boundary on ARM and RISC-V
* various small TCG features from newer processors
* Remove dubious 'event_notifier-posix.c' include
* fix git-submodule.sh in releases

# -----BEGIN PGP SIGNATURE-----
#
# iQFIBAABCAAyFiEE8TM4V0tmI4mGbHaCv/vSX3jHroMFAmSZS0IUHHBib256aW5p
# QHJlZGhhdC5jb20ACgkQv/vSX3jHroN+tgf/axJdG9NXKCyXgc0vzjKVhSR4Y+tC
# EPxkg7Rq7uOMgbph9oTS/2Kzh9LnP6kLt2qnS4igRHGuEBd58yD6fFNDv0LJsK/l
# B/d0WGHMKV0KMYOX24rkyfohVu37GhVRsiVSIlIiQVTC9JtYer7WxdnyoDaPKvY8
# dpbKgDrd59vAlsHrpj7ZubVQPcL3lXrLryimpDohMH6Ba+4wZq+7dKPpal97QOP2
# 3i7isUBTQiMOcVjW6GEiNcDLSJqj5DSgylhdFnaBsq/ThpC2PxWoXcCbV28QELzf
# 5+J+RXQavmeWKZMR0q98iBzWbrsVtaSxAkHHiwbUMMqQvkfY6Dpo5dMHWw==
# =WHE2
# -----END PGP SIGNATURE-----
# gpg: Signature made Mon 26 Jun 2023 10:24:34 AM CEST
# gpg:                using RSA key F13338574B662389866C7682BFFBD25F78C7AE83
# gpg:                issuer "pbonzini@redhat.com"
# gpg: Good signature from "Paolo Bonzini <bonzini@gnu.org>" [undefined]
# gpg:                 aka "Paolo Bonzini <pbonzini@redhat.com>" [undefined]
# gpg: WARNING: This key is not certified with a trusted signature!
# gpg:          There is no indication that the signature belongs to the owner.
# Primary key fingerprint: 46F5 9FBD 57D6 12E7 BFD4  E2F7 7E15 100C CD36 69B1
#      Subkey fingerprint: F133 3857 4B66 2389 866C  7682 BFFB D25F 78C7 AE83

* tag 'for-upstream' of https://gitlab.com/bonzini/qemu:
  git-submodule.sh: allow running in validate mode without previous update
  target/i386: implement SYSCALL/SYSRET in 32-bit emulators
  target/i386: implement RDPID in TCG
  target/i386: sysret and sysexit are privileged
  target/i386: AMD only supports SYSENTER/SYSEXIT in 32-bit mode
  target/i386: Intel only supports SYSCALL/SYSRET in long mode
  target/i386: TCG supports WBNOINVD
  target/i386: TCG supports XSAVEERPTR
  target/i386: do not accept RDSEED if CPUID bit absent
  target/i386: TCG supports RDSEED
  target/i386: TCG supports 3DNow! prefetch(w)
  target/i386: fix INVD vmexit
  kvm: reuse per-vcpu stats fd to avoid vcpu interruption
  hw/riscv: Validate cluster and NUMA node boundary
  hw/arm: Validate cluster and NUMA node boundary
  numa: Validate cluster and NUMA node boundary if required
  hw/remote/proxy: Remove dubious 'event_notifier-posix.c' include
  build: further refine build.ninja rules

Signed-off-by: Richard Henderson <richard.henderson@linaro.org>


Compare: https://github.com/qemu/qemu/compare/52ed34cbddde...cd041ddbc05a



reply via email to

[Prev in Thread] Current Thread [Next in Thread]