From nobody Wed Dec 17 07:28:27 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1752226108949184.64400324345752; Fri, 11 Jul 2025 02:28:28 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1uaA3D-0003Qy-TF; Fri, 11 Jul 2025 05:28:15 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1uaA3B-0003Nl-0n for qemu-devel@nongnu.org; Fri, 11 Jul 2025 05:28:13 -0400 Received: from [218.76.62.146] (helo=ultrarisc.com) by eggs.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1uaA36-0005Tp-7U for qemu-devel@nongnu.org; Fri, 11 Jul 2025 05:28:12 -0400 Received: from xb$ultrarisc.com ( [192.168.100.1] ) by ajax-webmail-localhost.localdomain (Coremail) ; Fri, 11 Jul 2025 17:28:10 +0800 (GMT+08:00) X-Originating-IP: [192.168.100.1] Date: Fri, 11 Jul 2025 17:28:10 +0800 (GMT+08:00) X-CM-HeaderCharset: UTF-8 From: =?UTF-8?B?6LCi5rOi?= To: qemu-devel@nongnu.org Cc: alistair.francis@wdc.com, palmer@dabbelt.com, pbonzini@redhat.com, anup@brainfault.org, anup.patel@wdc.com Subject: [PATCH for v10.0.0] target/riscv/kvm/kvm-cpu: Fixed the issue of resume after QEMU+KVM migration X-Priority: 3 X-Mailer: Coremail Webmail Server Version 2024.1-cmXT6 build 20240625(a75f206e) Copyright (c) 2002-2025 www.mailtech.cn mispb-8cc425bc-7df6-4523-bb46-a48cc1a964e6-ultrarisc.com In-Reply-To: <7a1f4eee.1a1.1970b8e1ccb.Coremail.xb@ultrarisc.com> References: <58a08318.d0.196e7eb9068.Coremail.xb@ultrarisc.com> <7a1f4eee.1a1.1970b8e1ccb.Coremail.xb@ultrarisc.com> Content-Transfer-Encoding: quoted-printable X-CM-CTRLDATA: XoplGGZvb3Rlcl90eHQ9OTA4ODo4NDA= MIME-Version: 1.0 Message-ID: <5d1fb28d.7df.197f8d04ed8.Coremail.xb@ultrarisc.com> X-Coremail-Locale: zh_CN X-CM-TRANSID: AQAAfwCHsdAq2XBoEdwWAA--.1363W X-CM-SenderInfo: l0e63zxwud2x1vfou0bp/1tbiAQAAB2hwa2QAHgADsM X-Coremail-Antispam: 1Ur529EdanIXcx71UUUUU7IcSsGvfJ3iIAIbVAYjsxI4VW3Jw CS07vEb4IE77IF4wCS07vE1I0E4x80FVAKz4kxMIAIbVAFxVCaYxvI4VCIwcAKzIAtYxBI daVFxhVjvjDU= X-Host-Lookup-Failed: Reverse DNS lookup failed for 218.76.62.146 (failed) Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=218.76.62.146; envelope-from=xb@ultrarisc.com; helo=ultrarisc.com X-Spam_score_int: -10 X-Spam_score: -1.1 X-Spam_bar: - X-Spam_report: (-1.1 / 5.0 requ) BAYES_00=-1.9, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, RCVD_IN_VALIDITY_SAFE_BLOCKED=0.001, RDNS_NONE=0.793, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=no autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZM-MESSAGEID: 1752226111518116600 Content-Type: text/plain; charset="utf-8" This is v3 of this patch to fix patch format This patch fixes two critical issues in QEMU with KVM: 1. Post-Migration Failure in User Mode: When QEMU with KVM is running in us= er mode, the guest may fail to function correctly after migration. 2. Multi-Core Guest Inconsistency: After migration, only the first CPU (cor= e 0) remains functional, while all other cores become unresponsive. Changes include: - Properly restoring guest privileged state during register synchronization. - Correctly updating multi-core state after migration to ensure all cores a= re active. Signed-off-by: Xie Bo --- target/riscv/kvm/kvm-cpu.c | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/target/riscv/kvm/kvm-cpu.c b/target/riscv/kvm/kvm-cpu.c index 75724b6af4..a15caa20ce 100644 --- a/target/riscv/kvm/kvm-cpu.c +++ b/target/riscv/kvm/kvm-cpu.c @@ -576,6 +576,14 @@ static int kvm_riscv_get_regs_core(CPUState *cs) } env->pc =3D reg; + /*Restore the guest's privileged level after migration*/ + ret =3D kvm_get_one_reg(cs, RISCV_CORE_REG(env, mode), ®); + if (ret) { + return ret; + } + if(reg !=3D 3) { + env->priv =3D reg; + } for (i =3D 1; i < 32; i++) { uint64_t id =3D kvm_riscv_reg_id_ulong(env, KVM_REG_RISCV_CORE, i); ret =3D kvm_get_one_reg(cs, id, ®); @@ -601,6 +609,15 @@ static int kvm_riscv_put_regs_core(CPUState *cs) return ret; } + /*Save guest privilege level before migration*/ + reg =3D env->priv; + if(reg !=3D 3) { + ret =3D kvm_set_one_reg(cs, RISCV_CORE_REG(env, mode), ®); + if (ret) { + return ret; + } + } + for (i =3D 1; i < 32; i++) { uint64_t id =3D kvm_riscv_reg_id_ulong(env, KVM_REG_RISCV_CORE, i); reg =3D env->gpr[i]; @@ -1289,6 +1306,12 @@ int kvm_arch_put_registers(CPUState *cs, int level, = Error **errp) return ret; } + /*Ensure all non-core 0 CPUs are runnable after migration*/ + if((level =3D=3D KVM_PUT_FULL_STATE) && (cs->cpu_index !=3D 0)){ + RISCVCPU *cpu =3D RISCV_CPU(cs); + ret =3D kvm_riscv_sync_mpstate_to_kvm(cpu, KVM_MP_STATE_RUNNABLE); + } + if (KVM_PUT_RESET_STATE =3D=3D level) { RISCVCPU *cpu =3D RISCV_CPU(cs); if (cs->cpu_index =3D=3D 0) { -- 2.34.1 > -----=E5=8E=9F=E5=A7=8B=E9=82=AE=E4=BB=B6----- > =E5=8F=91=E4=BB=B6=E4=BA=BA: =E8=B0=A2=E6=B3=A2 > =E5=8F=91=E9=80=81=E6=97=B6=E9=97=B4:2025-05-26 15:45:52 (=E6=98=9F=E6=9C= =9F=E4=B8=80) > =E6=94=B6=E4=BB=B6=E4=BA=BA: qemu-devel@nongnu.org > =E6=8A=84=E9=80=81: alistair.francis@wdc.com, palmer@dabbelt.com, pbonzin= i@redhat.com, anup@brainfault.org, anup.patel@wdc.com > =E4=B8=BB=E9=A2=98: Re: [PATCH V2] target/riscv/kvm/kvm-cpu: Fixed the is= sue of resume after QEMU+KVM migration >=20 > This is v2 of this patch with no functional changes; adding CC. >=20 > --- > target/riscv/kvm/kvm-cpu.c | 23 +++++++++++++++++++++++ > 1 file changed, 23 insertions(+) >=20 > --- a/target/riscv/kvm/kvm-cpu.c > +++ b/target/riscv/kvm/kvm-cpu.c > @@ -576,6 +576,14 @@ static int kvm_riscv_get_regs_core(CPUState *cs) > } > env->pc =3D reg; >=20 > + /* Restore guest privilege level after migration */ > + ret =3D kvm_get_one_reg(cs, RISCV_CORE_REG(env, mode), ®); > + if (ret) { > + return ret; > + } > + if (reg !=3D 3) { > + env->priv =3D reg; > + } >=20 > for (i =3D 1; i < 32; i++) { > uint64_t id =3D kvm_riscv_reg_id_ulong(env, KVM_REG_RISCV_CORE, = i); > ret =3D kvm_get_one_reg(cs, id, ®); > @@ -601,6 +609,15 @@ static int kvm_riscv_put_regs_core(CPUState *cs) > return ret; > } >=20 > + /* Save guest privilege level before migration */ > + reg =3D env->priv; > + if (reg !=3D 3) { > + ret =3D kvm_set_one_reg(cs, RISCV_CORE_REG(env, mode), ®); > + if (ret) { > + return ret; > + } > + } > + > for (i =3D 1; i < 32; i++) { > uint64_t id =3D kvm_riscv_reg_id_ulong(env, KVM_REG_RISCV_CORE, = i); > reg =3D env->gpr[i]; > @@ -1289,6 +1306,12 @@ int kvm_arch_put_registers(CPUState *cs, int level= , Error **errp) > return ret; > } >=20 > + /* Ensure all non-core 0 CPUs are runnable after migration */ > + if ((level =3D=3D KVM_PUT_FULL_STATE) && (cs->cpu_index !=3D 0)) { > + RISCVCPU *cpu =3D RISCV_CPU(cs); > + ret =3D kvm_riscv_sync_mpstate_to_kvm(cpu, KVM_MP_STATE_RUNNABLE= ); > + if (ret) { > + return ret; > + } > + } >=20 > if (KVM_PUT_RESET_STATE =3D=3D level) { > RISCVCPU *cpu =3D RISCV_CPU(cs); > if (cs->cpu_index =3D=3D 0) { > --=20 > 2.34.1 >=20 >=20 >=20 >=20 > > -----=E5=8E=9F=E5=A7=8B=E9=82=AE=E4=BB=B6----- > > =E5=8F=91=E4=BB=B6=E4=BA=BA: =E8=B0=A2=E6=B3=A2 > > =E5=8F=91=E9=80=81=E6=97=B6=E9=97=B4:2025-05-19 17:41:36 (=E6=98=9F=E6= =9C=9F=E4=B8=80) > > =E6=94=B6=E4=BB=B6=E4=BA=BA: qemu-devel@nongnu.org > > =E6=8A=84=E9=80=81: alistair.francis@wdc.com, palmer@dabbelt.com, pbonz= ini@redhat.com > > =E4=B8=BB=E9=A2=98: [PATCH] target/riscv/kvm/kvm-cpu: Fixed the issue o= f resume after QEMU+KVM migration > >=20 > > This patch fixes two critical issues in QEMU with KVM: > >=20 > > 1. Post-Migration Failure in User Mode: When QEMU with KVM is running i= n user mode, the guest may fail to function correctly after migration due t= o incorrect privilege state restoration. > >=20 > > 2. Multi-Core Guest Inconsistency: After migration, only the first CPU = (core 0) remains functional, while all other cores become unresponsive. Thi= s patch ensures all cores are properly set to runnable state after migratio= n. > >=20 > > Changes include: > > - Properly restoring guest privileged state during register synchroniza= tion. > > - Correctly updating multi-core state after migration to ensure all cor= es are active. > >=20 > > Signed-off-by: Xie Bo > >=20 > > --- > > target/riscv/kvm/kvm-cpu.c | 23 +++++++++++++++++++++++ > > 1 file changed, 23 insertions(+) > >=20 > > --- a/target/riscv/kvm/kvm-cpu.c > > +++ b/target/riscv/kvm/kvm-cpu.c > > @@ -576,6 +576,14 @@ static int kvm_riscv_get_regs_core(CPUState *cs) > > } > > env->pc =3D reg; > >=20 > > + /* Restore guest privilege level after migration */ > > + ret =3D kvm_get_one_reg(cs, RISCV_CORE_REG(env, mode), ®); > > + if (ret) { > > + return ret; > > + } > > + if (reg !=3D 3) { > > + env->priv =3D reg; > > + } > >=20 > > for (i =3D 1; i < 32; i++) { > > uint64_t id =3D kvm_riscv_reg_id_ulong(env, KVM_REG_RISCV_CORE= , i); > > ret =3D kvm_get_one_reg(cs, id, ®); > > @@ -601,6 +609,15 @@ static int kvm_riscv_put_regs_core(CPUState *cs) > > return ret; > > } > >=20 > > + /* Save guest privilege level before migration */ > > + reg =3D env->priv; > > + if (reg !=3D 3) { > > + ret =3D kvm_set_one_reg(cs, RISCV_CORE_REG(env, mode), ®); > > + if (ret) { > > + return ret; > > + } > > + } > > + > > for (i =3D 1; i < 32; i++) { > > uint64_t id =3D kvm_riscv_reg_id_ulong(env, KVM_REG_RISCV_CORE= , i); > > reg =3D env->gpr[i]; > > @@ -1289,6 +1306,12 @@ int kvm_arch_put_registers(CPUState *cs, int lev= el, Error **errp) > > return ret; > > } > >=20 > > + /* Ensure all non-core 0 CPUs are runnable after migration */ > > + if ((level =3D=3D KVM_PUT_FULL_STATE) && (cs->cpu_index !=3D 0)) { > > + RISCVCPU *cpu =3D RISCV_CPU(cs); > > + ret =3D kvm_riscv_sync_mpstate_to_kvm(cpu, KVM_MP_STATE_RUNNAB= LE); > > + if (ret) { > > + return ret; > > + } > > + } > >=20 > > if (KVM_PUT_RESET_STATE =3D=3D level) { > > RISCVCPU *cpu =3D RISCV_CPU(cs); > > if (cs->cpu_index =3D=3D 0) { > > --=20 > > 2.34.1 > >=20 > > ______________________www.ultrarisc.com > > =E9=87=8D=E8=A6=81=E6=8F=90=E7=A4=BA=EF=BC=9A=E6=9C=AC=E9=82=AE=E4=BB= =B6=E5=8C=85=E6=8B=AC=E9=99=84=E4=BB=B6=E7=9A=84=E5=86=85=E5=AE=B9=E6=98=AF= =E5=8F=97=E6=B3=95=E5=BE=8B=E4=BF=9D=E6=8A=A4=E7=9A=84=E4=BF=9D=E5=AF=86=E4= =BF=A1=E6=81=AF=EF=BC=8C=E5=A6=82=E6=9E=9C=E6=82=A8=E4=B8=8D=E6=98=AF=E6=8C= =87=E5=AE=9A=E6=94=B6=E4=BB=B6=E4=BA=BA=EF=BC=8C=E8=AF=B7=E7=AB=8B=E5=8D=B3= =E5=B0=86=E6=9C=AC=E9=82=AE=E4=BB=B6=E5=88=A0=E9=99=A4=EF=BC=8C=E6=B3=95=E5= =BE=8B=E7=A6=81=E6=AD=A2=E4=BB=BB=E4=BD=95=E9=9D=9E=E6=B3=95=E7=9A=84=E6=8A= =AB=E9=9C=B2=E3=80=81=E5=A4=8D=E5=88=B6=E3=80=81=E4=BC=A0=E6=92=AD=E6=88=96= =E4=BB=A5=E4=BB=BB=E4=BD=95=E6=96=B9=E5=BC=8F=E4=BD=BF=E7=94=A8=E6=9C=AC=E9= =82=AE=E4=BB=B6=E3=80=82=E6=9C=AC=E9=82=AE=E4=BB=B6=E4=B8=AD=E5=8C=85=E5=90= =AB=E7=9A=84=E6=84=8F=E8=A7=81=E3=80=81=E5=BB=BA=E8=AE=AE=E6=98=AF=E5=9F=BA= =E4=BA=8E=E6=88=96=E5=8F=97=E5=88=B0=E6=88=91=E6=96=B9=E8=A1=A8=E8=BE=BE=E5= =92=8C=E5=AE=9A=E4=B9=89=E7=9A=84=E6=9D=A1=E6=AC=BE=E5=8F=8A=E6=9D=A1=E4=BB= =B6=E7=9A=84=E9=99=90=E5=AE=9A=EF=BC=8C=E5=A6=82=E6=97=A0=E6=88=91=E6=96=B9= =E7=9A=84=E6=AD=A3=E5=BC=8F=E4=B9=A6=E9=9D=A2=E6=BE=84=E6=B8=85=E6=88=96=E6= =8E=88=E6=9D=83=EF=BC=8C=E4=B8=8D=E5=8F=AF=E8=A2=AB=E5=8D=95=E7=8B=AC=E4=BD= =9C=E4=B8=BA=E4=BB=BB=E4=BD=95=E6=83=85=E5=BD=A2=E4=B8=8B=E7=9A=84=E8=AF=81= =E6=8D=AE=E6=88=96=E4=BE=9D=E6=8D=AE=E3=80=82=E6=84=9F=E8=B0=A2=E6=82=A8=E7= =9A=84=E7=90=86=E8=A7=A3=E4=B8=8E=E9=85=8D=E5=90=88=E3=80=82=E7=89=88=E6=9D= =83=E6=89=80=E6=9C=89=E3=80=82IMPORTANT NOTICE: This email, including its a= ttachment if any, is confidential. If you are not the intended recipient, p= lease delete it from your computer immediately. Any disclosure, copying, or= distribution of this message, or taking of any action based on it is stric= tly prohibited. Any opinions and suggestions contained in this email are s= ubject to the terms and conditions expressed and defined by us and should n= ot be relied upon unconditionally under any circumstances unless they are c= onfirmed in official written clarification or authorization from us. Thank= you for your understanding and cooperation.All rights reserved. >=20 >=20 > ______________________www.ultrarisc.com > =E9=87=8D=E8=A6=81=E6=8F=90=E7=A4=BA=EF=BC=9A=E6=9C=AC=E9=82=AE=E4=BB=B6= =E5=8C=85=E6=8B=AC=E9=99=84=E4=BB=B6=E7=9A=84=E5=86=85=E5=AE=B9=E6=98=AF=E5= =8F=97=E6=B3=95=E5=BE=8B=E4=BF=9D=E6=8A=A4=E7=9A=84=E4=BF=9D=E5=AF=86=E4=BF= =A1=E6=81=AF=EF=BC=8C=E5=A6=82=E6=9E=9C=E6=82=A8=E4=B8=8D=E6=98=AF=E6=8C=87= =E5=AE=9A=E6=94=B6=E4=BB=B6=E4=BA=BA=EF=BC=8C=E8=AF=B7=E7=AB=8B=E5=8D=B3=E5= =B0=86=E6=9C=AC=E9=82=AE=E4=BB=B6=E5=88=A0=E9=99=A4=EF=BC=8C=E6=B3=95=E5=BE= =8B=E7=A6=81=E6=AD=A2=E4=BB=BB=E4=BD=95=E9=9D=9E=E6=B3=95=E7=9A=84=E6=8A=AB= =E9=9C=B2=E3=80=81=E5=A4=8D=E5=88=B6=E3=80=81=E4=BC=A0=E6=92=AD=E6=88=96=E4= =BB=A5=E4=BB=BB=E4=BD=95=E6=96=B9=E5=BC=8F=E4=BD=BF=E7=94=A8=E6=9C=AC=E9=82= =AE=E4=BB=B6=E3=80=82=E6=9C=AC=E9=82=AE=E4=BB=B6=E4=B8=AD=E5=8C=85=E5=90=AB= =E7=9A=84=E6=84=8F=E8=A7=81=E3=80=81=E5=BB=BA=E8=AE=AE=E6=98=AF=E5=9F=BA=E4= =BA=8E=E6=88=96=E5=8F=97=E5=88=B0=E6=88=91=E6=96=B9=E8=A1=A8=E8=BE=BE=E5=92= =8C=E5=AE=9A=E4=B9=89=E7=9A=84=E6=9D=A1=E6=AC=BE=E5=8F=8A=E6=9D=A1=E4=BB=B6= =E7=9A=84=E9=99=90=E5=AE=9A=EF=BC=8C=E5=A6=82=E6=97=A0=E6=88=91=E6=96=B9=E7= =9A=84=E6=AD=A3=E5=BC=8F=E4=B9=A6=E9=9D=A2=E6=BE=84=E6=B8=85=E6=88=96=E6=8E= =88=E6=9D=83=EF=BC=8C=E4=B8=8D=E5=8F=AF=E8=A2=AB=E5=8D=95=E7=8B=AC=E4=BD=9C= =E4=B8=BA=E4=BB=BB=E4=BD=95=E6=83=85=E5=BD=A2=E4=B8=8B=E7=9A=84=E8=AF=81=E6= =8D=AE=E6=88=96=E4=BE=9D=E6=8D=AE=E3=80=82=E6=84=9F=E8=B0=A2=E6=82=A8=E7=9A= =84=E7=90=86=E8=A7=A3=E4=B8=8E=E9=85=8D=E5=90=88=E3=80=82=E7=89=88=E6=9D=83= =E6=89=80=E6=9C=89=E3=80=82IMPORTANT NOTICE: This email, including its atta= chment if any, is confidential. If you are not the intended recipient, plea= se delete it from your computer immediately. Any disclosure, copying, or di= stribution of this message, or taking of any action based on it is strictly= prohibited. Any opinions and suggestions contained in this email are subj= ect to the terms and conditions expressed and defined by us and should not = be relied upon unconditionally under any circumstances unless they are conf= irmed in official written clarification or authorization from us. Thank yo= u for your understanding and cooperation.All rights reserved. ______________________www.ultrarisc.com =E9=87=8D=E8=A6=81=E6=8F=90=E7=A4=BA=EF=BC=9A=E6=9C=AC=E9=82=AE=E4=BB=B6=E5= =8C=85=E6=8B=AC=E9=99=84=E4=BB=B6=E7=9A=84=E5=86=85=E5=AE=B9=E6=98=AF=E5=8F= =97=E6=B3=95=E5=BE=8B=E4=BF=9D=E6=8A=A4=E7=9A=84=E4=BF=9D=E5=AF=86=E4=BF=A1= =E6=81=AF=EF=BC=8C=E5=A6=82=E6=9E=9C=E6=82=A8=E4=B8=8D=E6=98=AF=E6=8C=87=E5= =AE=9A=E6=94=B6=E4=BB=B6=E4=BA=BA=EF=BC=8C=E8=AF=B7=E7=AB=8B=E5=8D=B3=E5=B0= =86=E6=9C=AC=E9=82=AE=E4=BB=B6=E5=88=A0=E9=99=A4=EF=BC=8C=E6=B3=95=E5=BE=8B= =E7=A6=81=E6=AD=A2=E4=BB=BB=E4=BD=95=E9=9D=9E=E6=B3=95=E7=9A=84=E6=8A=AB=E9= =9C=B2=E3=80=81=E5=A4=8D=E5=88=B6=E3=80=81=E4=BC=A0=E6=92=AD=E6=88=96=E4=BB= =A5=E4=BB=BB=E4=BD=95=E6=96=B9=E5=BC=8F=E4=BD=BF=E7=94=A8=E6=9C=AC=E9=82=AE= =E4=BB=B6=E3=80=82=E6=9C=AC=E9=82=AE=E4=BB=B6=E4=B8=AD=E5=8C=85=E5=90=AB=E7= =9A=84=E6=84=8F=E8=A7=81=E3=80=81=E5=BB=BA=E8=AE=AE=E6=98=AF=E5=9F=BA=E4=BA= =8E=E6=88=96=E5=8F=97=E5=88=B0=E6=88=91=E6=96=B9=E8=A1=A8=E8=BE=BE=E5=92=8C= =E5=AE=9A=E4=B9=89=E7=9A=84=E6=9D=A1=E6=AC=BE=E5=8F=8A=E6=9D=A1=E4=BB=B6=E7= =9A=84=E9=99=90=E5=AE=9A=EF=BC=8C=E5=A6=82=E6=97=A0=E6=88=91=E6=96=B9=E7=9A= =84=E6=AD=A3=E5=BC=8F=E4=B9=A6=E9=9D=A2=E6=BE=84=E6=B8=85=E6=88=96=E6=8E=88= =E6=9D=83=EF=BC=8C=E4=B8=8D=E5=8F=AF=E8=A2=AB=E5=8D=95=E7=8B=AC=E4=BD=9C=E4= =B8=BA=E4=BB=BB=E4=BD=95=E6=83=85=E5=BD=A2=E4=B8=8B=E7=9A=84=E8=AF=81=E6=8D= =AE=E6=88=96=E4=BE=9D=E6=8D=AE=E3=80=82=E6=84=9F=E8=B0=A2=E6=82=A8=E7=9A=84= =E7=90=86=E8=A7=A3=E4=B8=8E=E9=85=8D=E5=90=88=E3=80=82=E7=89=88=E6=9D=83=E6= =89=80=E6=9C=89=E3=80=82IMPORTANT NOTICE: This email, including its attachm= ent if any, is confidential. If you are not the intended recipient, please = delete it from your computer immediately. Any disclosure, copying, or distr= ibution of this message, or taking of any action based on it is strictly pr= ohibited. Any opinions and suggestions contained in this email are subject= to the terms and conditions expressed and defined by us and should not be = relied upon unconditionally under any circumstances unless they are confirm= ed in official written clarification or authorization from us. Thank you f= or your understanding and cooperation.All rights reserved.