Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S932091AbbLRMNT (ORCPT ); Fri, 18 Dec 2015 07:13:19 -0500 Received: from mga09.intel.com ([134.134.136.24]:20198 "EHLO mga09.intel.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752021AbbLRMNQ (ORCPT ); Fri, 18 Dec 2015 07:13:16 -0500 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.20,446,1444719600"; d="scan'208";a="15502302" From: "Kweh, Hock Leong" To: Matt Fleming , Greg Kroah-Hartman , Matt Fleming Cc: Ong Boon Leong , LKML , linux-efi@vger.kernel.org, Sam Protsenko , Peter Jones , Andy Lutomirski , Roy Franz , Borislav Petkov , James Bottomley , Linux FS Devel , Anvin H Peter , "Kweh, Hock Leong" Subject: [PATCH v10 0/1] Enable capsule loader interface for efi firmware updating Date: Fri, 18 Dec 2015 20:13:00 +0800 Message-Id: <1450440782-5446-1-git-send-email-hock.leong.kweh@intel.com> X-Mailer: git-send-email 1.7.9.5 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 3031 Lines: 84 From: "Kweh, Hock Leong" Dear maintainers & communities, This patchset is created on top of Matt's patchset: 1.)https://lkml.org/lkml/2014/10/7/390 "[PATCH 1/2] efi: Move efi_status_to_err() to efi.h" 2.)https://lkml.org/lkml/2014/10/7/391 "[PATCH 2/2] efi: Capsule update support" It expose a misc char interface for user to upload the capsule binary and calling efi_capsule_update() API to pass the binary to EFI firmware. The steps to update efi firmware are: 1.) cat firmware.cap > /dev/efi_capsule_loader 2.) reboot Any failed upload error message will be returned while doing "cat" through file operation write() function call. Tested the code with Intel Quark Galileo GEN1 platform. Thanks. --- changelog v10: * rebase to v4.4 * added efi runtime services check at efi_capsule_loader_init() * fixed checkpatch issues * code clean up base on Borislav's comments changelog v9: * squash 2 patches to become 1 patch * change function param to pass in cap_info instead of file structure * perform both alloc inside efi_capsule_setup_info() * change to use multiple exit labels instead of one function call * further code clean up base on Matt's comments changelog v8: * further clean up on kunmap() & efi_free_all_buff_pages() * design enhanced to support 1st few writes are less than efi header size * removed support to padding capsule and flag error once the upload size bigger than header defined size changelog v7: * add successful message printed in dmesg * shorten the code in efi_capsule_write() by splitting out efi_capsule_setup_info() & efi_capsule_submit_update() functions * design added capability to support multiple file open action * re-write those comments by following standard format * design added the "uncomplete" error return through flush() file operation changelog v6: * clean up on error handling for better code flow and review * clean up on pr_err() for critical error only * design taking care writing block that below PAGE_SIZE * once error has occurred, design will return -EIO until file close * document design expectations/scenarios in the code * change the dynamic allocation cap_info struct to statically allocated changelog v5: * changed to new design without leveraging firmware_class API * use misc_char device interface instead of sysfs * error return through file Write() function call Kweh, Hock Leong (1): efi: a misc char interface for user to update efi firmware drivers/firmware/efi/Kconfig | 10 drivers/firmware/efi/Makefile | 1 drivers/firmware/efi/capsule-loader.c | 355 +++++++++++++++++++++++++++++++++ drivers/firmware/efi/capsule.c | 1 4 files changed, 367 insertions(+) create mode 100644 drivers/firmware/efi/capsule-loader.c -- 1.7.9.5 -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/