Revert "[Feature][API-794]when a/b slot broken, rollback and repair it.-2.system partition rollback"
This reverts commit f8bd52d8ed9a459830a7769799facede3a2b6dca.
Reason for revert: <INSERT REASONING HERE>
Change-Id: I7c038d205204e3d658932e27429a3268e7744563
diff --git a/src/kernel/linux/v4.19/drivers/Makefile b/src/kernel/linux/v4.19/drivers/Makefile
index 508c8da..6066d60 100644
--- a/src/kernel/linux/v4.19/drivers/Makefile
+++ b/src/kernel/linux/v4.19/drivers/Makefile
@@ -84,7 +84,6 @@
obj-$(CONFIG_ATA) += ata/
obj-$(CONFIG_TARGET_CORE) += target/
obj-$(CONFIG_MTD) += mtd/
-obj-y += lynq_bootctrl/
obj-$(CONFIG_SPI) += spi/
obj-$(CONFIG_SPMI) += spmi/
obj-$(CONFIG_HSI) += hsi/
diff --git a/src/kernel/linux/v4.19/drivers/lynq_bootctrl/Makefile b/src/kernel/linux/v4.19/drivers/lynq_bootctrl/Makefile
deleted file mode 100755
index 19063c1..0000000
--- a/src/kernel/linux/v4.19/drivers/lynq_bootctrl/Makefile
+++ /dev/null
@@ -1,2 +0,0 @@
-
-obj-y += lynq_bootctrl.o
diff --git a/src/kernel/linux/v4.19/drivers/lynq_bootctrl/lynq_bootctrl.c b/src/kernel/linux/v4.19/drivers/lynq_bootctrl/lynq_bootctrl.c
deleted file mode 100755
index f7169a1..0000000
--- a/src/kernel/linux/v4.19/drivers/lynq_bootctrl/lynq_bootctrl.c
+++ /dev/null
@@ -1,186 +0,0 @@
-#include <linux/init.h>
-#include <linux/kernel.h>
-#include <linux/module.h>
-#include <linux/of.h>
-#include <linux/fs.h>
-#include <linux/platform_device.h>
-#include <asm/uaccess.h>
-#include "lynq_bootctrl.h"
-#include <linux/string.h>
-#include <linux/slab.h>
-#include <linux/mtd/mtd.h>
-
-int bootctrl_read_metadata(AvbABData *bctrl);
-int bootctrl_write_metadata(AvbABData *bctrl);
-
-const char *mtd_name = "misc";
-int current_slot = -1;
-int current_slot_init = 0;
-
-int bootctrl_write_metadata(AvbABData *bctrl)
-{
- int err;
- ssize_t sz, size;
- char *buf = (char *)bctrl;
- struct mtd_info *mtd = NULL;
- loff_t pos = OFFSETOF_SLOT_SUFFIX;
-
- if(bctrl == NULL)
- {
- printk("ERROR: null pointer");
- return -1;
- }
- err = IS_ERR(bctrl);
- if(err != 0)
- {
- printk("ERROR: pointer: %d.", err);
- return err;
- }
- mtd = get_mtd_device_nm(mtd_name);
- err = IS_ERR(mtd);
- if(err != 0)
- {
- printk("ERROR: pointer: %d.", err);
- return err;
- }
-
- size = sizeof(AvbABData);
-
- do {
- err = mtd_write(mtd, pos, size, &sz, buf);
-
- if (err == 0)
- {
- break;
- }
- else if (err < 0)
- {
- printk("Error Writing metadata file\n");
- return err;
- }
- size -= sz;
- buf += sz;
- } while(size > 0);
- printk("BOOTCTRL:write new info to metadata\n");
- return 0;
-}
-
-int bootctrl_get_active_slot(void)
-{
- int slot = 0, ret = -1;
- AvbABData metadata;
-
- ret = bootctrl_read_metadata(&metadata);
- if(ret < 0)
- {
- printk("BOOTCTRL:read metadata error: %d", ret);
- }
- slot = (metadata.slots[0].priority >= metadata.slots[1].priority) ? 0 : 1;
- printk("the slot is %d", slot);
- return slot;
-}
-EXPORT_SYMBOL(bootctrl_get_active_slot);
-
-int bootctrl_read_metadata(AvbABData *bctrl)
-{
- int ret, err;
- loff_t pos = OFFSETOF_SLOT_SUFFIX;
- size_t sz, size;
- char *buf = (char *)bctrl;
- struct mtd_info *mtd = NULL;
-
- if(bctrl == NULL)
- {
- printk("ERROR: null pointer");
- return -1;
- }
- err = IS_ERR(bctrl);
- if(err != 0)
- {
- printk("ERROR: pointer: %d.", err);
- printk("error: %ld", PTR_ERR(mtd));
- return err;
- }
- mtd = get_mtd_device_nm(mtd_name);
- ret = IS_ERR(mtd);
- if(ret != 0)
- {
- printk("ERROR: pointer: %d.", ret);
- printk("error: %ld", PTR_ERR(mtd));
- return ret;
- }
-
- size = sizeof(AvbABData);
- do {
- ret = mtd_read(mtd, pos, size, &sz, buf);
- if (sz == 0)
- {
- break;
- }
- else if (sz < 0)
- {
- printk("BOOTCTRL:Error reading metadata file: %ld\n", sz);
- return sz;
- }
- size -= sz;
- buf += sz;
- } while(size > 0);
-
- /* Check bootctrl magic number */
- if (memcmp(bctrl->magic , AVB_AB_MAGIC, AVB_AB_MAGIC_LEN) != 0)
- {
- printk("BOOTCTRL:metadata is not initialised or corrupted %s.\n", bctrl->magic);
- return -EIO;
- }
- return 0;
-}
-EXPORT_SYMBOL(bootctrl_read_metadata);
-
-int bootctrl_mark_boot_unsuccessful(void)
-{
- int ret;
- int slot = 0;
- AvbABData metadata;
- AvbABSlotData *slotp;
-
- if(current_slot_init != 1)
- {
- printk("BOOTCTRL: current slot has not been init");
- return 0;
- }
- printk("BOOTCTRL:boot control bootctrl_mark_boot_unsuccessful\n");
- ret = bootctrl_read_metadata(&metadata);
- if (ret < 0)
- {
- printk("BOOTCTRL: read metadata error");
- return ret;
- }
-
- slot = current_slot;
-
- slotp = &metadata.slots[slot];
- printk("BOOTCTRL: currentslot = %d, retry time = %u",slot, slotp->tries_remaining);
- slotp->successful_boot = 0;
-
- return bootctrl_write_metadata(&metadata);
-}
-EXPORT_SYMBOL(bootctrl_mark_boot_unsuccessful);
-
-static int __init drv_init(void)
-{
- printk("BOOTCTRL: get current slot");
- current_slot = bootctrl_get_active_slot();
- if (current_slot < 0)
- {
- printk("bootctrl_get_active_slot fail , slot = %d\n", current_slot);
- return current_slot;
- }
- current_slot_init = 1;
- return 0;
-}
-
-module_init(drv_init);
-MODULE_AUTHOR("Mobiletek");
-MODULE_DESCRIPTION("driver for bootctrl");
-MODULE_LICENSE("GPL");
-
diff --git a/src/kernel/linux/v4.19/drivers/lynq_bootctrl/lynq_bootctrl.h b/src/kernel/linux/v4.19/drivers/lynq_bootctrl/lynq_bootctrl.h
deleted file mode 100755
index 5ca3ca6..0000000
--- a/src/kernel/linux/v4.19/drivers/lynq_bootctrl/lynq_bootctrl.h
+++ /dev/null
@@ -1,92 +0,0 @@
-#define BOOTCTRL_SUFFIX_A "_a"
-#define BOOTCTRL_SUFFIX_B "_b"
-#define BOOT_CONTROL_VERSION 1
-
-#define BOOTCTRL_PROPERTY "ro.boot.slot_suffix"
-#define SLOT_SUFFIX_STR "androidboot.slot_suffix="
-#define COMMAND_LINE_PATH "/proc/cmdline"
-#define COMMAND_LINE_SIZE 2048
-
-/* AVB20 */
-/* Magic for the A/B struct when serialized. */
-#define AVB_AB_MAGIC "\0AB0"
-#define AVB_AB_MAGIC_LEN 4
-
-/* Versioning for the on-disk A/B metadata - keep in sync with avbtool. */
-#define AVB_AB_MAJOR_VERSION 1
-#define AVB_AB_MINOR_VERSION 0
-
-/* Size of AvbABData struct. */
-#define AVB_AB_DATA_SIZE 32
-
-/* Maximum values for slot data */
-#define AVB_AB_MAX_PRIORITY 15
-#define AVB_AB_MAX_TRIES_REMAINING 7
-
-#define BOOTDEV_TYPE_NAND 1
-#define BOOTDEV_TYPE_EMMC 2
-
-#define OFFSETOF_SLOT_SUFFIX 2048
-
-/* Struct used for recording per-slot metadata.
- *
- * When serialized, data is stored in network byte-order.
- */
-typedef struct AvbABSlotData {
- /* Slot priority. Valid values range from 0 to AVB_AB_MAX_PRIORITY,
- * both inclusive with 1 being the lowest and AVB_AB_MAX_PRIORITY
- * being the highest. The special value 0 is used to indicate the
- * slot is unbootable.
- */
- uint8_t priority;
-
- /* Number of times left attempting to boot this slot ranging from 0
- * to AVB_AB_MAX_TRIES_REMAINING.
- */
- uint8_t tries_remaining;
-
- /* Non-zero if this slot has booted successfully, 0 otherwise. */
- uint8_t successful_boot;
- /* For lk anti rollback*/
- uint8_t efuse_write;
- uint8_t bl_ver;
- /* Reserved for future use. */
- uint8_t reserved[3];
-
-} AvbABSlotData;
-
-/* Struct used for recording A/B metadata.
- *
- * When serialized, data is stored in network byte-order.
- */
-typedef struct AvbABData {
- /* Magic number used for identification - see AVB_AB_MAGIC. */
- uint8_t magic[AVB_AB_MAGIC_LEN];
-
- /* Version of on-disk struct - see AVB_AB_{MAJOR,MINOR}_VERSION. */
- uint8_t version_major;
- uint8_t version_minor;
-
- /* Padding to ensure |slots| field start eight bytes in. */
- uint8_t reserved1[2];
-
- /* Per-slot metadata. */
- AvbABSlotData slots[2];
-
- /* Reserved for future use. */
- uint8_t reserved2[12];
-
- /* CRC32 of all 28 bytes preceding this field. */
- uint32_t crc32;
-} AvbABData;
-//static struct fstab* fstab = NULL;
-
-
-
-int bootctrl_get_active_slot(void);
-
-int bootctrl_read_metadata(AvbABData *bctrl);
-
-int bootctrl_write_metadata(AvbABData *bctrl);
-
-int bootctrl_mark_boot_unsuccessful(void);
\ No newline at end of file
diff --git a/src/kernel/linux/v4.19/drivers/md/dm-verity-target.c b/src/kernel/linux/v4.19/drivers/md/dm-verity-target.c
index 9a422a9..758b802 100644
--- a/src/kernel/linux/v4.19/drivers/md/dm-verity-target.c
+++ b/src/kernel/linux/v4.19/drivers/md/dm-verity-target.c
@@ -16,7 +16,6 @@
#include "dm-verity.h"
#include "dm-verity-fec.h"
-#include "../lynq_bootctrl/lynq_bootctrl.h"
#include <linux/module.h>
#include <linux/reboot.h>
@@ -216,7 +215,6 @@
char verity_env[DM_VERITY_ENV_LENGTH];
char *envp[] = { verity_env, NULL };
const char *type_str = "";
- int ret;
struct mapped_device *md = dm_table_get_md(v->ti->table);
/* Corruption should be visible in device status in all modes */
@@ -257,14 +255,6 @@
#ifdef CONFIG_DM_VERITY_AVB
dm_verity_avb_error_handler();
#endif
-//xf.li@20230313 modify for ab_rollback start
- printk("BOOTCTRL:dm-verity error, rollback");
- ret = bootctrl_mark_boot_unsuccessful();
- if(ret != 0)
- {
- printk("BOOTCTRL:error rollback\n");
- }
-//xf.li@20230313 modify for ab_rollback end
kernel_restart("dm-verity device corrupted");
}
diff --git a/src/kernel/linux/v4.19/init/do_mounts_dm.c b/src/kernel/linux/v4.19/init/do_mounts_dm.c
index 6df0b4c..cb63c62 100644
--- a/src/kernel/linux/v4.19/init/do_mounts_dm.c
+++ b/src/kernel/linux/v4.19/init/do_mounts_dm.c
@@ -11,7 +11,7 @@
#include <linux/fs.h>
#include <linux/string.h>
#include <linux/delay.h>
-#include "../drivers/lynq_bootctrl/lynq_bootctrl.h"
+
#include "do_mounts.h"
#define DM_MAX_DEVICES 256
@@ -373,9 +373,6 @@
}
if (!dm_dev) {
-//xf.li@20230313 modify for ab_rollback start
- printk("BOOTCTRL:can't find dm_dev.\n");
-//xf.li@20230313 modify for ab_rollback end
ret = -ENODEV;
goto free_dm_params;
}
@@ -396,7 +393,6 @@
char *uuid;
fmode_t fmode = FMODE_READ;
struct dm_device *devices;
- int ret;
devices = dm_parse_args();
@@ -429,9 +425,7 @@
target->type, target->params);
if (dm_wait_for_drive(target->params))
- {
goto add_target_fail;
- }
if (dm_table_add_target(table, target->type,
target->begin,
@@ -507,13 +501,6 @@
dm_create_fail:
DMWARN("starting dm-%d (%s) failed",
dev->minor, dev->name);
-//xf.li@20230313 modify for ab_rollback start
- ret = bootctrl_mark_boot_unsuccessful();
- if(ret != 0)
- {
- printk("BOOTCTRL:error rollback\n");
- }
-//xf.li@20230313 modify for ab_rollback end
dm_setup_cleanup(devices);
}