From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from [140.186.70.92] (port=60958 helo=eggs.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1Q8IdH-0003kj-FP for qemu-devel@nongnu.org; Fri, 08 Apr 2011 16:50:22 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1Q8IdE-0001CW-Uy for qemu-devel@nongnu.org; Fri, 08 Apr 2011 16:50:18 -0400 Received: from mail-vx0-f173.google.com ([209.85.220.173]:41072) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Q8IdE-0001C9-Ns for qemu-devel@nongnu.org; Fri, 08 Apr 2011 16:50:16 -0400 Received: by vxb41 with SMTP id 41so3424642vxb.4 for ; Fri, 08 Apr 2011 13:50:16 -0700 (PDT) MIME-Version: 1.0 From: Blue Swirl Date: Fri, 8 Apr 2011 23:49:56 +0300 Message-ID: Content-Type: multipart/mixed; boundary=90e6ba53b442836bc504a06e5f78 Subject: [Qemu-devel] [PATCH 10/11] Introduce machine state v2 List-Id: qemu-devel.nongnu.org List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel --90e6ba53b442836bc504a06e5f78 Content-Type: text/plain; charset=UTF-8 Move generic machine state to machine-state.h. Signed-off-by: Blue Swirl --- machine-state.h | 102 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ sysemu.h | 93 +------------------------------------------------- 2 files changed, 103 insertions(+), 92 deletions(-) create mode 100644 machine-state.h diff --git a/machine-state.h b/machine-state.h new file mode 100644 index 0000000..52adbff --- /dev/null +++ b/machine-state.h @@ -0,0 +1,102 @@ +#ifndef QEMU_MACHINE_STATE_H +#define QEMU_MACHINE_STATE_H +/* + * Machine state: All generic machine state. + */ + +#include "notify.h" +#include "qemu-timer.h" +#include "qdict.h" + +extern const char *bios_name; +extern uint8_t qemu_uuid[]; +int qemu_uuid_parse(const char *str, uint8_t *uuid); +#define UUID_FMT "%02hhx%02hhx%02hhx%02hhx-%02hhx%02hhx-%02hhx%02hhx-%02hhx%02hhx-%02hhx%02hhx%02hhx%02hhx%02hhx%02hhx" + +void qemu_system_reset_request(void); +void qemu_system_shutdown_request(void); +void qemu_system_powerdown_request(void); +void qemu_system_debug_request(void); +int qemu_shutdown_requested(void); +int qemu_reset_requested(void); +int qemu_powerdown_requested(void); +extern qemu_irq qemu_system_powerdown; +void qemu_system_reset(void); + +void qemu_add_machine_init_done_notifier(Notifier *notify); + +extern int bios_size; + +typedef enum { + VGA_NONE, VGA_STD, VGA_CIRRUS, VGA_VMWARE, VGA_XENFB, VGA_QXL, +} VGAInterfaceType; + +extern int vga_interface_type; +#define cirrus_vga_enabled (vga_interface_type == VGA_CIRRUS) +#define std_vga_enabled (vga_interface_type == VGA_STD) +#define xenfb_enabled (vga_interface_type == VGA_XENFB) +#define vmsvga_enabled (vga_interface_type == VGA_VMWARE) +#define qxl_enabled (vga_interface_type == VGA_QXL) + +extern int graphic_width; +extern int graphic_height; +extern int graphic_depth; +extern uint8_t irq0override; +extern int win2k_install_hack; +extern int rtc_td_hack; +extern int usb_enabled; +extern int smp_cpus; +extern int max_cpus; +extern int graphic_rotate; +extern int semihosting_enabled; +extern int old_param; +extern int boot_menu; +extern QEMUClock *rtc_clock; + +#define MAX_NODES 64 +extern int nb_numa_nodes; +extern uint64_t node_mem[MAX_NODES]; +extern uint64_t node_cpumask[MAX_NODES]; + +#define MAX_OPTION_ROMS 16 +typedef struct QEMUOptionRom { + const char *name; + int32_t bootindex; +} QEMUOptionRom; +extern QEMUOptionRom option_rom[MAX_OPTION_ROMS]; +extern int nb_option_roms; + +#define MAX_PROM_ENVS 128 +extern const char *prom_envs[MAX_PROM_ENVS]; +extern unsigned int nb_prom_envs; + +/* pci-hotplug */ +void pci_device_hot_add(Monitor *mon, const QDict *qdict); +void drive_hot_add(Monitor *mon, const QDict *qdict); +void do_pci_device_hot_remove(Monitor *mon, const QDict *qdict); + +/* pcie aer error injection */ +void pcie_aer_inject_error_print(Monitor *mon, const QObject *data); +int do_pcie_aer_inejct_error(Monitor *mon, + const QDict *qdict, QObject **ret_data); + +/* serial ports */ + +#define MAX_SERIAL_PORTS 4 + +extern CharDriverState *serial_hds[MAX_SERIAL_PORTS]; + +/* parallel ports */ + +#define MAX_PARALLEL_PORTS 3 + +extern CharDriverState *parallel_hds[MAX_PARALLEL_PORTS]; + +void rtc_change_mon_event(struct tm *tm); + +void register_devices(void); + +void add_boot_device_path(int32_t bootindex, DeviceState *dev, + const char *suffix); +char *get_boot_devices_list(uint32_t *size); +#endif diff --git a/sysemu.h b/sysemu.h index 2d7a476..815ff34 100644 --- a/sysemu.h +++ b/sysemu.h @@ -9,97 +9,6 @@ #include "notify.h" #include "host-state.h" #include "emulator-state.h" +#include "machine-state.h" -/* vl.c */ -extern const char *bios_name; -extern uint8_t qemu_uuid[]; -int qemu_uuid_parse(const char *str, uint8_t *uuid); -#define UUID_FMT "%02hhx%02hhx%02hhx%02hhx-%02hhx%02hhx-%02hhx%02hhx-%02hhx%02hhx-%02hhx%02hhx%02hhx%02hhx%02hhx%02hhx" - -void qemu_system_reset_request(void); -void qemu_system_shutdown_request(void); -void qemu_system_powerdown_request(void); -void qemu_system_debug_request(void); -int qemu_shutdown_requested(void); -int qemu_reset_requested(void); -int qemu_powerdown_requested(void); -extern qemu_irq qemu_system_powerdown; -void qemu_system_reset(void); - -void qemu_add_machine_init_done_notifier(Notifier *notify); - -extern int bios_size; - -typedef enum { - VGA_NONE, VGA_STD, VGA_CIRRUS, VGA_VMWARE, VGA_XENFB, VGA_QXL, -} VGAInterfaceType; - -extern int vga_interface_type; -#define cirrus_vga_enabled (vga_interface_type == VGA_CIRRUS) -#define std_vga_enabled (vga_interface_type == VGA_STD) -#define xenfb_enabled (vga_interface_type == VGA_XENFB) -#define vmsvga_enabled (vga_interface_type == VGA_VMWARE) -#define qxl_enabled (vga_interface_type == VGA_QXL) - -extern int graphic_width; -extern int graphic_height; -extern int graphic_depth; -extern uint8_t irq0override; -extern int win2k_install_hack; -extern int rtc_td_hack; -extern int usb_enabled; -extern int smp_cpus; -extern int max_cpus; -extern int graphic_rotate; -extern int semihosting_enabled; -extern int old_param; -extern int boot_menu; -extern QEMUClock *rtc_clock; - -#define MAX_NODES 64 -extern int nb_numa_nodes; -extern uint64_t node_mem[MAX_NODES]; -extern uint64_t node_cpumask[MAX_NODES]; - -#define MAX_OPTION_ROMS 16 -typedef struct QEMUOptionRom { - const char *name; - int32_t bootindex; -} QEMUOptionRom; -extern QEMUOptionRom option_rom[MAX_OPTION_ROMS]; -extern int nb_option_roms; - -#define MAX_PROM_ENVS 128 -extern const char *prom_envs[MAX_PROM_ENVS]; -extern unsigned int nb_prom_envs; - -/* pci-hotplug */ -void pci_device_hot_add(Monitor *mon, const QDict *qdict); -void drive_hot_add(Monitor *mon, const QDict *qdict); -void do_pci_device_hot_remove(Monitor *mon, const QDict *qdict); - -/* pcie aer error injection */ -void pcie_aer_inject_error_print(Monitor *mon, const QObject *data); -int do_pcie_aer_inejct_error(Monitor *mon, - const QDict *qdict, QObject **ret_data); - -/* serial ports */ - -#define MAX_SERIAL_PORTS 4 - -extern CharDriverState *serial_hds[MAX_SERIAL_PORTS]; - -/* parallel ports */ - -#define MAX_PARALLEL_PORTS 3 - -extern CharDriverState *parallel_hds[MAX_PARALLEL_PORTS]; - -void rtc_change_mon_event(struct tm *tm); - -void register_devices(void); - -void add_boot_device_path(int32_t bootindex, DeviceState *dev, - const char *suffix); -char *get_boot_devices_list(uint32_t *size); #endif -- 1.7.2.5 --90e6ba53b442836bc504a06e5f78 Content-Type: text/x-diff; charset=US-ASCII; name="0010-Introduce-machine-state-v2.patch" Content-Disposition: attachment; filename="0010-Introduce-machine-state-v2.patch" Content-Transfer-Encoding: base64 X-Attachment-Id: f_gm9la2m20 RnJvbSBjZTBmNDFhOTk0YzkwM2QyNWQzNjYwNjEwM2ExMmVlZGU4NGE4MGRlIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpNZXNzYWdlLUlkOiA8Y2UwZjQxYTk5NGM5MDNkMjVkMzY2MDYxMDNhMTJl ZWRlODRhODBkZS4xMzAyMjk1NDE4LmdpdC5ibGF1d2lyYmVsQGdtYWlsLmNvbT4KSW4tUmVwbHkt VG86IDw2YTE3NDhjNTg3ZDM0YjBjZTM3NDg4NTk2YzY4YzRhZWU1OGE0NjM4LjEzMDIyOTU0MTgu Z2l0LmJsYXV3aXJiZWxAZ21haWwuY29tPgpSZWZlcmVuY2VzOiA8NmExNzQ4YzU4N2QzNGIwY2Uz NzQ4ODU5NmM2OGM0YWVlNThhNDYzOC4xMzAyMjk1NDE4LmdpdC5ibGF1d2lyYmVsQGdtYWlsLmNv bT4KRnJvbTogQmx1ZSBTd2lybCA8YmxhdXdpcmJlbEBnbWFpbC5jb20+CkRhdGU6IFNhdCwgMjYg TWFyIDIwMTEgMTg6NDE6MzYgKzAwMDAKU3ViamVjdDogW1BBVENIIDEwLzExXSBJbnRyb2R1Y2Ug bWFjaGluZSBzdGF0ZSB2MgoKTW92ZSBnZW5lcmljIG1hY2hpbmUgc3RhdGUgdG8gbWFjaGluZS1z dGF0ZS5oLgoKU2lnbmVkLW9mZi1ieTogQmx1ZSBTd2lybCA8YmxhdXdpcmJlbEBnbWFpbC5jb20+ Ci0tLQogbWFjaGluZS1zdGF0ZS5oIHwgIDEwMiArKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrCiBzeXNlbXUuaCAgICAgICAgfCAgIDkzICstLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAyIGZpbGVzIGNo YW5nZWQsIDEwMyBpbnNlcnRpb25zKCspLCA5MiBkZWxldGlvbnMoLSkKIGNyZWF0ZSBtb2RlIDEw MDY0NCBtYWNoaW5lLXN0YXRlLmgKCmRpZmYgLS1naXQgYS9tYWNoaW5lLXN0YXRlLmggYi9tYWNo aW5lLXN0YXRlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTJhZGJmZgot LS0gL2Rldi9udWxsCisrKyBiL21hY2hpbmUtc3RhdGUuaApAQCAtMCwwICsxLDEwMiBAQAorI2lm bmRlZiBRRU1VX01BQ0hJTkVfU1RBVEVfSAorI2RlZmluZSBRRU1VX01BQ0hJTkVfU1RBVEVfSAor LyoKKyAqIE1hY2hpbmUgc3RhdGU6IEFsbCBnZW5lcmljIG1hY2hpbmUgc3RhdGUuCisgKi8KKwor I2luY2x1ZGUgIm5vdGlmeS5oIgorI2luY2x1ZGUgInFlbXUtdGltZXIuaCIKKyNpbmNsdWRlICJx ZGljdC5oIgorCitleHRlcm4gY29uc3QgY2hhciAqYmlvc19uYW1lOworZXh0ZXJuIHVpbnQ4X3Qg cWVtdV91dWlkW107CitpbnQgcWVtdV91dWlkX3BhcnNlKGNvbnN0IGNoYXIgKnN0ciwgdWludDhf dCAqdXVpZCk7CisjZGVmaW5lIFVVSURfRk1UICIlMDJoaHglMDJoaHglMDJoaHglMDJoaHgtJTAy aGh4JTAyaGh4LSUwMmhoeCUwMmhoeC0lMDJoaHglMDJoaHgtJTAyaGh4JTAyaGh4JTAyaGh4JTAy aGh4JTAyaGh4JTAyaGh4IgorCit2b2lkIHFlbXVfc3lzdGVtX3Jlc2V0X3JlcXVlc3Qodm9pZCk7 Cit2b2lkIHFlbXVfc3lzdGVtX3NodXRkb3duX3JlcXVlc3Qodm9pZCk7Cit2b2lkIHFlbXVfc3lz dGVtX3Bvd2VyZG93bl9yZXF1ZXN0KHZvaWQpOwordm9pZCBxZW11X3N5c3RlbV9kZWJ1Z19yZXF1 ZXN0KHZvaWQpOworaW50IHFlbXVfc2h1dGRvd25fcmVxdWVzdGVkKHZvaWQpOworaW50IHFlbXVf cmVzZXRfcmVxdWVzdGVkKHZvaWQpOworaW50IHFlbXVfcG93ZXJkb3duX3JlcXVlc3RlZCh2b2lk KTsKK2V4dGVybiBxZW11X2lycSBxZW11X3N5c3RlbV9wb3dlcmRvd247Cit2b2lkIHFlbXVfc3lz dGVtX3Jlc2V0KHZvaWQpOworCit2b2lkIHFlbXVfYWRkX21hY2hpbmVfaW5pdF9kb25lX25vdGlm aWVyKE5vdGlmaWVyICpub3RpZnkpOworCitleHRlcm4gaW50IGJpb3Nfc2l6ZTsKKwordHlwZWRl ZiBlbnVtIHsKKyAgICBWR0FfTk9ORSwgVkdBX1NURCwgVkdBX0NJUlJVUywgVkdBX1ZNV0FSRSwg VkdBX1hFTkZCLCBWR0FfUVhMLAorfSBWR0FJbnRlcmZhY2VUeXBlOworCitleHRlcm4gaW50IHZn YV9pbnRlcmZhY2VfdHlwZTsKKyNkZWZpbmUgY2lycnVzX3ZnYV9lbmFibGVkICh2Z2FfaW50ZXJm YWNlX3R5cGUgPT0gVkdBX0NJUlJVUykKKyNkZWZpbmUgc3RkX3ZnYV9lbmFibGVkICh2Z2FfaW50 ZXJmYWNlX3R5cGUgPT0gVkdBX1NURCkKKyNkZWZpbmUgeGVuZmJfZW5hYmxlZCAodmdhX2ludGVy ZmFjZV90eXBlID09IFZHQV9YRU5GQikKKyNkZWZpbmUgdm1zdmdhX2VuYWJsZWQgKHZnYV9pbnRl cmZhY2VfdHlwZSA9PSBWR0FfVk1XQVJFKQorI2RlZmluZSBxeGxfZW5hYmxlZCAodmdhX2ludGVy ZmFjZV90eXBlID09IFZHQV9RWEwpCisKK2V4dGVybiBpbnQgZ3JhcGhpY193aWR0aDsKK2V4dGVy biBpbnQgZ3JhcGhpY19oZWlnaHQ7CitleHRlcm4gaW50IGdyYXBoaWNfZGVwdGg7CitleHRlcm4g dWludDhfdCBpcnEwb3ZlcnJpZGU7CitleHRlcm4gaW50IHdpbjJrX2luc3RhbGxfaGFjazsKK2V4 dGVybiBpbnQgcnRjX3RkX2hhY2s7CitleHRlcm4gaW50IHVzYl9lbmFibGVkOworZXh0ZXJuIGlu dCBzbXBfY3B1czsKK2V4dGVybiBpbnQgbWF4X2NwdXM7CitleHRlcm4gaW50IGdyYXBoaWNfcm90 YXRlOworZXh0ZXJuIGludCBzZW1paG9zdGluZ19lbmFibGVkOworZXh0ZXJuIGludCBvbGRfcGFy YW07CitleHRlcm4gaW50IGJvb3RfbWVudTsKK2V4dGVybiBRRU1VQ2xvY2sgKnJ0Y19jbG9jazsK KworI2RlZmluZSBNQVhfTk9ERVMgNjQKK2V4dGVybiBpbnQgbmJfbnVtYV9ub2RlczsKK2V4dGVy biB1aW50NjRfdCBub2RlX21lbVtNQVhfTk9ERVNdOworZXh0ZXJuIHVpbnQ2NF90IG5vZGVfY3B1 bWFza1tNQVhfTk9ERVNdOworCisjZGVmaW5lIE1BWF9PUFRJT05fUk9NUyAxNgordHlwZWRlZiBz dHJ1Y3QgUUVNVU9wdGlvblJvbSB7CisgICAgY29uc3QgY2hhciAqbmFtZTsKKyAgICBpbnQzMl90 IGJvb3RpbmRleDsKK30gUUVNVU9wdGlvblJvbTsKK2V4dGVybiBRRU1VT3B0aW9uUm9tIG9wdGlv bl9yb21bTUFYX09QVElPTl9ST01TXTsKK2V4dGVybiBpbnQgbmJfb3B0aW9uX3JvbXM7CisKKyNk ZWZpbmUgTUFYX1BST01fRU5WUyAxMjgKK2V4dGVybiBjb25zdCBjaGFyICpwcm9tX2VudnNbTUFY X1BST01fRU5WU107CitleHRlcm4gdW5zaWduZWQgaW50IG5iX3Byb21fZW52czsKKworLyogcGNp LWhvdHBsdWcgKi8KK3ZvaWQgcGNpX2RldmljZV9ob3RfYWRkKE1vbml0b3IgKm1vbiwgY29uc3Qg UURpY3QgKnFkaWN0KTsKK3ZvaWQgZHJpdmVfaG90X2FkZChNb25pdG9yICptb24sIGNvbnN0IFFE aWN0ICpxZGljdCk7Cit2b2lkIGRvX3BjaV9kZXZpY2VfaG90X3JlbW92ZShNb25pdG9yICptb24s IGNvbnN0IFFEaWN0ICpxZGljdCk7CisKKy8qIHBjaWUgYWVyIGVycm9yIGluamVjdGlvbiAqLwor dm9pZCBwY2llX2Flcl9pbmplY3RfZXJyb3JfcHJpbnQoTW9uaXRvciAqbW9uLCBjb25zdCBRT2Jq ZWN0ICpkYXRhKTsKK2ludCBkb19wY2llX2Flcl9pbmVqY3RfZXJyb3IoTW9uaXRvciAqbW9uLAor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBRRGljdCAqcWRpY3QsIFFPYmplY3Qg KipyZXRfZGF0YSk7CisKKy8qIHNlcmlhbCBwb3J0cyAqLworCisjZGVmaW5lIE1BWF9TRVJJQUxf UE9SVFMgNAorCitleHRlcm4gQ2hhckRyaXZlclN0YXRlICpzZXJpYWxfaGRzW01BWF9TRVJJQUxf UE9SVFNdOworCisvKiBwYXJhbGxlbCBwb3J0cyAqLworCisjZGVmaW5lIE1BWF9QQVJBTExFTF9Q T1JUUyAzCisKK2V4dGVybiBDaGFyRHJpdmVyU3RhdGUgKnBhcmFsbGVsX2hkc1tNQVhfUEFSQUxM RUxfUE9SVFNdOworCit2b2lkIHJ0Y19jaGFuZ2VfbW9uX2V2ZW50KHN0cnVjdCB0bSAqdG0pOwor Cit2b2lkIHJlZ2lzdGVyX2RldmljZXModm9pZCk7CisKK3ZvaWQgYWRkX2Jvb3RfZGV2aWNlX3Bh dGgoaW50MzJfdCBib290aW5kZXgsIERldmljZVN0YXRlICpkZXYsCisgICAgICAgICAgICAgICAg ICAgICAgICAgIGNvbnN0IGNoYXIgKnN1ZmZpeCk7CitjaGFyICpnZXRfYm9vdF9kZXZpY2VzX2xp c3QodWludDMyX3QgKnNpemUpOworI2VuZGlmCmRpZmYgLS1naXQgYS9zeXNlbXUuaCBiL3N5c2Vt dS5oCmluZGV4IDJkN2E0NzYuLjgxNWZmMzQgMTAwNjQ0Ci0tLSBhL3N5c2VtdS5oCisrKyBiL3N5 c2VtdS5oCkBAIC05LDk3ICs5LDYgQEAKICNpbmNsdWRlICJub3RpZnkuaCIKICNpbmNsdWRlICJo b3N0LXN0YXRlLmgiCiAjaW5jbHVkZSAiZW11bGF0b3Itc3RhdGUuaCIKKyNpbmNsdWRlICJtYWNo aW5lLXN0YXRlLmgiCiAKLS8qIHZsLmMgKi8KLWV4dGVybiBjb25zdCBjaGFyICpiaW9zX25hbWU7 Ci1leHRlcm4gdWludDhfdCBxZW11X3V1aWRbXTsKLWludCBxZW11X3V1aWRfcGFyc2UoY29uc3Qg Y2hhciAqc3RyLCB1aW50OF90ICp1dWlkKTsKLSNkZWZpbmUgVVVJRF9GTVQgIiUwMmhoeCUwMmho eCUwMmhoeCUwMmhoeC0lMDJoaHglMDJoaHgtJTAyaGh4JTAyaGh4LSUwMmhoeCUwMmhoeC0lMDJo aHglMDJoaHglMDJoaHglMDJoaHglMDJoaHglMDJoaHgiCi0KLXZvaWQgcWVtdV9zeXN0ZW1fcmVz ZXRfcmVxdWVzdCh2b2lkKTsKLXZvaWQgcWVtdV9zeXN0ZW1fc2h1dGRvd25fcmVxdWVzdCh2b2lk KTsKLXZvaWQgcWVtdV9zeXN0ZW1fcG93ZXJkb3duX3JlcXVlc3Qodm9pZCk7Ci12b2lkIHFlbXVf c3lzdGVtX2RlYnVnX3JlcXVlc3Qodm9pZCk7Ci1pbnQgcWVtdV9zaHV0ZG93bl9yZXF1ZXN0ZWQo dm9pZCk7Ci1pbnQgcWVtdV9yZXNldF9yZXF1ZXN0ZWQodm9pZCk7Ci1pbnQgcWVtdV9wb3dlcmRv d25fcmVxdWVzdGVkKHZvaWQpOwotZXh0ZXJuIHFlbXVfaXJxIHFlbXVfc3lzdGVtX3Bvd2VyZG93 bjsKLXZvaWQgcWVtdV9zeXN0ZW1fcmVzZXQodm9pZCk7Ci0KLXZvaWQgcWVtdV9hZGRfbWFjaGlu ZV9pbml0X2RvbmVfbm90aWZpZXIoTm90aWZpZXIgKm5vdGlmeSk7Ci0KLWV4dGVybiBpbnQgYmlv c19zaXplOwotCi10eXBlZGVmIGVudW0gewotICAgIFZHQV9OT05FLCBWR0FfU1RELCBWR0FfQ0lS UlVTLCBWR0FfVk1XQVJFLCBWR0FfWEVORkIsIFZHQV9RWEwsCi19IFZHQUludGVyZmFjZVR5cGU7 Ci0KLWV4dGVybiBpbnQgdmdhX2ludGVyZmFjZV90eXBlOwotI2RlZmluZSBjaXJydXNfdmdhX2Vu YWJsZWQgKHZnYV9pbnRlcmZhY2VfdHlwZSA9PSBWR0FfQ0lSUlVTKQotI2RlZmluZSBzdGRfdmdh X2VuYWJsZWQgKHZnYV9pbnRlcmZhY2VfdHlwZSA9PSBWR0FfU1REKQotI2RlZmluZSB4ZW5mYl9l bmFibGVkICh2Z2FfaW50ZXJmYWNlX3R5cGUgPT0gVkdBX1hFTkZCKQotI2RlZmluZSB2bXN2Z2Ff ZW5hYmxlZCAodmdhX2ludGVyZmFjZV90eXBlID09IFZHQV9WTVdBUkUpCi0jZGVmaW5lIHF4bF9l bmFibGVkICh2Z2FfaW50ZXJmYWNlX3R5cGUgPT0gVkdBX1FYTCkKLQotZXh0ZXJuIGludCBncmFw aGljX3dpZHRoOwotZXh0ZXJuIGludCBncmFwaGljX2hlaWdodDsKLWV4dGVybiBpbnQgZ3JhcGhp Y19kZXB0aDsKLWV4dGVybiB1aW50OF90IGlycTBvdmVycmlkZTsKLWV4dGVybiBpbnQgd2luMmtf aW5zdGFsbF9oYWNrOwotZXh0ZXJuIGludCBydGNfdGRfaGFjazsKLWV4dGVybiBpbnQgdXNiX2Vu YWJsZWQ7Ci1leHRlcm4gaW50IHNtcF9jcHVzOwotZXh0ZXJuIGludCBtYXhfY3B1czsKLWV4dGVy biBpbnQgZ3JhcGhpY19yb3RhdGU7Ci1leHRlcm4gaW50IHNlbWlob3N0aW5nX2VuYWJsZWQ7Ci1l eHRlcm4gaW50IG9sZF9wYXJhbTsKLWV4dGVybiBpbnQgYm9vdF9tZW51OwotZXh0ZXJuIFFFTVVD bG9jayAqcnRjX2Nsb2NrOwotCi0jZGVmaW5lIE1BWF9OT0RFUyA2NAotZXh0ZXJuIGludCBuYl9u dW1hX25vZGVzOwotZXh0ZXJuIHVpbnQ2NF90IG5vZGVfbWVtW01BWF9OT0RFU107Ci1leHRlcm4g dWludDY0X3Qgbm9kZV9jcHVtYXNrW01BWF9OT0RFU107Ci0KLSNkZWZpbmUgTUFYX09QVElPTl9S T01TIDE2Ci10eXBlZGVmIHN0cnVjdCBRRU1VT3B0aW9uUm9tIHsKLSAgICBjb25zdCBjaGFyICpu YW1lOwotICAgIGludDMyX3QgYm9vdGluZGV4OwotfSBRRU1VT3B0aW9uUm9tOwotZXh0ZXJuIFFF TVVPcHRpb25Sb20gb3B0aW9uX3JvbVtNQVhfT1BUSU9OX1JPTVNdOwotZXh0ZXJuIGludCBuYl9v cHRpb25fcm9tczsKLQotI2RlZmluZSBNQVhfUFJPTV9FTlZTIDEyOAotZXh0ZXJuIGNvbnN0IGNo YXIgKnByb21fZW52c1tNQVhfUFJPTV9FTlZTXTsKLWV4dGVybiB1bnNpZ25lZCBpbnQgbmJfcHJv bV9lbnZzOwotCi0vKiBwY2ktaG90cGx1ZyAqLwotdm9pZCBwY2lfZGV2aWNlX2hvdF9hZGQoTW9u aXRvciAqbW9uLCBjb25zdCBRRGljdCAqcWRpY3QpOwotdm9pZCBkcml2ZV9ob3RfYWRkKE1vbml0 b3IgKm1vbiwgY29uc3QgUURpY3QgKnFkaWN0KTsKLXZvaWQgZG9fcGNpX2RldmljZV9ob3RfcmVt b3ZlKE1vbml0b3IgKm1vbiwgY29uc3QgUURpY3QgKnFkaWN0KTsKLQotLyogcGNpZSBhZXIgZXJy b3IgaW5qZWN0aW9uICovCi12b2lkIHBjaWVfYWVyX2luamVjdF9lcnJvcl9wcmludChNb25pdG9y ICptb24sIGNvbnN0IFFPYmplY3QgKmRhdGEpOwotaW50IGRvX3BjaWVfYWVyX2luZWpjdF9lcnJv cihNb25pdG9yICptb24sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFFEaWN0 ICpxZGljdCwgUU9iamVjdCAqKnJldF9kYXRhKTsKLQotLyogc2VyaWFsIHBvcnRzICovCi0KLSNk ZWZpbmUgTUFYX1NFUklBTF9QT1JUUyA0Ci0KLWV4dGVybiBDaGFyRHJpdmVyU3RhdGUgKnNlcmlh bF9oZHNbTUFYX1NFUklBTF9QT1JUU107Ci0KLS8qIHBhcmFsbGVsIHBvcnRzICovCi0KLSNkZWZp bmUgTUFYX1BBUkFMTEVMX1BPUlRTIDMKLQotZXh0ZXJuIENoYXJEcml2ZXJTdGF0ZSAqcGFyYWxs ZWxfaGRzW01BWF9QQVJBTExFTF9QT1JUU107Ci0KLXZvaWQgcnRjX2NoYW5nZV9tb25fZXZlbnQo c3RydWN0IHRtICp0bSk7Ci0KLXZvaWQgcmVnaXN0ZXJfZGV2aWNlcyh2b2lkKTsKLQotdm9pZCBh ZGRfYm9vdF9kZXZpY2VfcGF0aChpbnQzMl90IGJvb3RpbmRleCwgRGV2aWNlU3RhdGUgKmRldiwK LSAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqc3VmZml4KTsKLWNoYXIgKmdl dF9ib290X2RldmljZXNfbGlzdCh1aW50MzJfdCAqc2l6ZSk7CiAjZW5kaWYKLS0gCjEuNy4yLjUK Cg== --90e6ba53b442836bc504a06e5f78--