/* SPDX-License-Identifier: GPL-2.0+ WITH Linux-syscall-note */ /* * Copyright 2017 IBM Corp. * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; either version * 2 of the License, or (at your option) any later version. */ #ifndef _UAPI_LINUX_ASPEED_LPC_CTRL_H #define _UAPI_LINUX_ASPEED_LPC_CTRL_H #include #include /* Window types */ #define ASPEED_LPC_CTRL_WINDOW_FLASH 1 #define ASPEED_LPC_CTRL_WINDOW_MEMORY 2 /* * This driver provides a window for the host to access a BMC resource * across the BMC <-> Host LPC bus. * * window_type: The BMC resource that the host will access through the * window. BMC flash and BMC RAM. * * window_id: For each window type there may be multiple windows, * these are referenced by ID. * * flags: Reserved for future use, this field is expected to be * zeroed. * * addr: Address on the host LPC bus that the specified window should * be mapped. This address must be power of two aligned. * * offset: Offset into the BMC window that should be mapped to the * host (at addr). This must be a multiple of size. * * size: The size of the mapping. The smallest possible size is 64K. * This must be power of two aligned. * */ struct aspeed_lpc_ctrl_mapping { __u8 window_type; __u8 window_id; __u16 flags; __u32 addr; __u32 offset; __u32 size; }; #define __ASPEED_LPC_CTRL_IOCTL_MAGIC 0xb2 #define ASPEED_LPC_CTRL_IOCTL_GET_SIZE _IOWR(__ASPEED_LPC_CTRL_IOCTL_MAGIC, \ 0x00, struct aspeed_lpc_ctrl_mapping) #define ASPEED_LPC_CTRL_IOCTL_MAP _IOW(__ASPEED_LPC_CTRL_IOCTL_MAGIC, \ 0x01, struct aspeed_lpc_ctrl_mapping) #endif /* _UAPI_LINUX_ASPEED_LPC_CTRL_H */ separate AST is allocated for each one. The current data structure looks like this: FOO->dep ==> AND BAR->dep ==> AND BAZ->dep ==> OR / \ / \ / \ OR C OR C A B / \ / \ A B A B This is redundant; FOO->dep and BAR->dep have identical ASTs but different memory instances. We can optimize this; FOO->dep and BAR->dep can share the same AST, and BAZ->dep can reference its sub tree. The optimized data structure looks like this: FOO->dep, BAR->dep ==> AND / \ BAZ->dep ==> OR C / \ A B This commit introduces a hash table to keep track of allocated expressions. If an identical expression is found, it is reused. This does not necessarily result in memory savings, as menu_finalize() transforms expressions without freeing up stale ones. This will be addressed later. One optimization that can be easily implemented is caching the expression's value. Once FOO's dependency, (A || B) && C, is calculated, it can be cached, eliminating the need to recalculate it for BAR. This commit also reverts commit e983b7b17ad1 ("kconfig/menu.c: fix multiple references to expressions in menu_add_prop()"). Signed-off-by: Masahiro Yamada <masahiroy@kernel.org> kbuild: move some helper headers from scripts/kconfig/ to scripts/include/ 2024-07-21T14:10:43Z Masahiro Yamada masahiroy@kernel.org 2024-07-20T07:27:38Z urn:sha1:fbaf242c956aff6a07d9e97eaa3a0a48d947de33 Move array_size.h, hashtable.h, list.h, list_types.h from scripts/kconfig/ to scripts/include/. These headers will be useful for other host programs. Remove scripts/mod/list.h. Signed-off-by: Masahiro Yamada <masahiroy@kernel.org> kconfig: use generic macros to implement symbol hashtable 2024-02-20T11:47:45Z Masahiro Yamada masahiroy@kernel.org 2024-02-11T12:41:05Z urn:sha1:91b69454f93d1c905f3a56bb39856db9a220c791 Use helper macros in hashtable.h for generic hashtable implementation. We can git rid of the hash head index of for_all_symbols(). Signed-off-by: Masahiro Yamada <masahiroy@kernel.org> kconfig: remove zconf_curname() and zconf_lineno() 2024-02-19T09:20:40Z Masahiro Yamada masahiroy@kernel.org 2024-02-02T15:58:08Z urn:sha1:1d7c4f10baacbc658918f7ddec31e1d1962df6fc Now zconf_curname() and zconf_lineno() are so simple that they just return cur_filename, cur_lineno, respectively. Remove these functions, and then use cur_filename and cur_lineno directly. Signed-off-by: Masahiro Yamada <masahiroy@kernel.org>