From nobody Mon Dec 8 01:03:17 2025 Delivered-To: importer@patchew.org Received-SPF: none (zoho.com: 80.81.252.135 is neither permitted nor denied by domain of seabios.org) client-ip=80.81.252.135; envelope-from=seabios-bounces@seabios.org; helo=mail.coreboot.org; Authentication-Results: mx.zoho.com; spf=none (zoho.com: 80.81.252.135 is neither permitted nor denied by domain of seabios.org) smtp.mailfrom=seabios-bounces@seabios.org; Return-Path: Received: from mail.coreboot.org (mail.coreboot.org [80.81.252.135]) by mx.zohomail.com with SMTPS id 148764941706960.28574798812383; Mon, 20 Feb 2017 19:56:57 -0800 (PST) Received: from [127.0.0.1] (helo=ra.coresystems.de) by mail.coreboot.org with esmtp (Exim 4.86_2) (envelope-from ) id 1cg1ZF-0000rG-9I; Tue, 21 Feb 2017 04:56:45 +0100 Received: from mail-ot0-f174.google.com ([74.125.82.174]) by mail.coreboot.org with esmtps (TLSv1.2:ECDHE-RSA-AES128-GCM-SHA256:128) (Exim 4.86_2) (envelope-from ) id 1cg1Z0-0000ph-Ie for seabios@seabios.org; Tue, 21 Feb 2017 04:56:42 +0100 Received: by mail-ot0-f174.google.com with SMTP id x10so41402695otb.1 for ; Mon, 20 Feb 2017 19:56:30 -0800 (PST) Received: from Arrow.corp.skyportsystems.com (76-236-31-201.lightspeed.sntcca.sbcglobal.net. [76.236.31.201]) by smtp.gmail.com with ESMTPSA id r129sm1164838oih.31.2017.02.20.19.56.27 (version=TLS1 cipher=AES128-SHA bits=128/128); Mon, 20 Feb 2017 19:56:27 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=skyportsystems.com; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :in-reply-to:references; bh=4gdOtWJH9Fhr5of29y42xXNI2XorpLcqL4LtqRw2tIM=; b=PHiC8jdMBFf3Jn5vXy/vZhyf9dzk14V2yzVawIF62R5xyDMoXuIcPr1l8YPJ87WUDR dQKNPkjUj/TMbX6SsdtDtMA38ZwNpUqMAu2oXg6qb549JeKZtaaoUOkb2Ag+/UQEOOU3 s1oGj4wI8i4n3sbt0EazpCTaQTBBsmnXPY01k= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:in-reply-to:references; bh=4gdOtWJH9Fhr5of29y42xXNI2XorpLcqL4LtqRw2tIM=; b=tzYSljZSpSmVA32xhoEKukVfgAEWKAxmND8+xVSscQ3Q2jNgrjzPnzfFO0pZ8Q1EJO Rm3HqRLY4lHY4QvkwSm67mCf7wakCi9ibUZup1fz/CEtgqcMi9z/DtiITeIbS7+Jtn+s K3O9EUrZnoy/Q+XtXKCx9X8XJv31xD3BapY3l224XHK9xIjTGUgy4WOpjN0lv1wy1TX2 G/6FKzgcjH4w7t8+virj0S28imMYtPiwHISNjwOCkOXuxE1Jn4gkeg2jAwHZgYUZGl0x pkM1+PCV3+2tzV6Lpo2PL5Tqc0u2FyfkqSSr+K8thVuy+EPEA5KFfHESDruxe8LzJRRC R7wQ== X-Gm-Message-State: AMke39npj5r2NyGGNoFssKEcbYjjI4CGLay7x9C2TG6+eTKkuf0b+k7QKMX0x9L5+NIUmtxB X-Received: by 10.157.14.166 with SMTP id 35mr12650072otj.136.1487649388256; Mon, 20 Feb 2017 19:56:28 -0800 (PST) From: ben@skyportsystems.com To: seabios@seabios.org Date: Mon, 20 Feb 2017 19:56:18 -0800 Message-Id: <174fe258bf664a0c14cae93f3c953f85743db88f.1487648787.git.ben@skyportsystems.com> X-Mailer: git-send-email 2.10.1 (Apple Git-78) In-Reply-To: References: In-Reply-To: References: X-Spam-Score: -2.7 (--) Subject: [SeaBIOS] [PATCH v7 4/5] QEMU fw_cfg: Add functions for accessing files by key X-BeenThere: seabios@seabios.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: SeaBIOS mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: lersek@redhat.com, mst@redhat.com MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Errors-To: seabios-bounces@seabios.org Sender: "SeaBIOS" X-Duff: Orig. Duff, Duff Lite, Duff Dry, Duff Dark, Raspberry Duff, Lady Duff, Red Duff, Tartar Control Duff X-ZohoMail: RSF_4 Z_629925259 SPT_0 Content-Type: text/plain; charset="utf-8" From: Ben Warren Due to memory contraints, when resuming from S3 the fw_cfg "files" API isn't available. This adds a simple API to get a file 'key', and to write to the file using the key as a reference. Signed-off-by: Ben Warren Reviewed-by: Igor Mammedov Reviewed-by: Laszlo Ersek --- src/fw/paravirt.c | 41 ++++++++++++++++++++++++++++++----------- src/fw/paravirt.h | 2 ++ 2 files changed, 32 insertions(+), 11 deletions(-) diff --git a/src/fw/paravirt.c b/src/fw/paravirt.c index 4618647..707502d 100644 --- a/src/fw/paravirt.c +++ b/src/fw/paravirt.c @@ -329,6 +329,22 @@ qemu_cfg_read_file(struct romfile_s *file, void *dst, = u32 maxlen) return file->size; } =20 +// Bare-bones function for writing a file knowing only its unique +// identifying key (select) +int +qemu_cfg_write_file_simple(void *src, u16 key, u32 offset, u32 len) +{ + if (offset =3D=3D 0) { + /* Do it in one transfer */ + qemu_cfg_write_entry(src, key, len); + } else { + qemu_cfg_select(key); + qemu_cfg_skip(offset); + qemu_cfg_write(src, len); + } + return len; +} + int qemu_cfg_write_file(void *src, struct romfile_s *file, u32 offset, u32 len) { @@ -339,17 +355,8 @@ qemu_cfg_write_file(void *src, struct romfile_s *file,= u32 offset, u32 len) warn_internalerror(); return -1; } - struct qemu_romfile_s *qfile; - qfile =3D container_of(file, struct qemu_romfile_s, file); - if (offset =3D=3D 0) { - /* Do it in one transfer */ - qemu_cfg_write_entry(src, qfile->select, len); - } else { - qemu_cfg_select(qfile->select); - qemu_cfg_skip(offset); - qemu_cfg_write(src, len); - } - return len; + return qemu_cfg_write_file_simple(src, qemu_get_romfile_key(file), + offset, len); } =20 static void @@ -370,6 +377,18 @@ qemu_romfile_add(char *name, int select, int skip, int= size) } =20 u16 +qemu_get_romfile_key(struct romfile_s *file) +{ + struct qemu_romfile_s *qfile; + if (file->copy !=3D qemu_cfg_read_file) { + warn_internalerror(); + return 0; + } + qfile =3D container_of(file, struct qemu_romfile_s, file); + return qfile->select; +} + +u16 qemu_get_present_cpus_count(void) { u16 smp_count =3D 0; diff --git a/src/fw/paravirt.h b/src/fw/paravirt.h index fb220d8..16f3d9a 100644 --- a/src/fw/paravirt.h +++ b/src/fw/paravirt.h @@ -56,5 +56,7 @@ void qemu_cfg_init(void); =20 u16 qemu_get_present_cpus_count(void); int qemu_cfg_write_file(void *src, struct romfile_s *file, u32 offset, u32= len); +int qemu_cfg_write_file_simple(void *src, u16 key, u32 offset, u32 len); +u16 qemu_get_romfile_key(struct romfile_s *file); =20 #endif --=20 2.7.4 _______________________________________________ SeaBIOS mailing list SeaBIOS@seabios.org https://www.coreboot.org/mailman/listinfo/seabios