[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [PATCH v1 3/3] xen/common: move device initialization code to common code
On 11.09.2024 12:04, Oleksii Kurochko wrote: > --- a/xen/common/Makefile > +++ b/xen/common/Makefile > @@ -6,6 +6,7 @@ obj-$(CONFIG_HYPFS_CONFIG) += config_data.o > obj-$(CONFIG_CORE_PARKING) += core_parking.o > obj-y += cpu.o > obj-$(CONFIG_DEBUG_TRACE) += debugtrace.o > +obj-$(call or,$(CONFIG_HAS_DEVICE_TREE),$(CONFIG_HAS_ACPI)) += device.o I can't spot any HAS_ACPI in the tree. And if this was switched to CONFIG_ACPI I'd further ask why the file needs building on x86. Also I think I'd prefer to avoid the of the "or" macro here: obj-$(CONFIG_ACPI) += device.o obj-$(CONFIG_HAS_DEVICE_TREE) += device.o ought to be quite fine. There's de-duplication somewhere for what $(obj-y) lists. > --- /dev/null > +++ b/xen/common/device.c > @@ -0,0 +1,82 @@ > +/* SPDX-License-Identifier: GPL-2.0-or-later */ > +/* > + * Based on the code from: > + * xen/arch/arm/device.c > + */ > + > +#include <xen/bug.h> > +#include <xen/device_tree.h> > +#include <xen/errno.h> > +#include <xen/init.h> > + > +#include <asm-generic/device.h> > + > +#ifdef CONFIG_ACPI > +extern const struct acpi_device_desc _asdevice[], _aedevice[]; Why does this live separately here, rather than ... > +#endif > + > +#ifdef CONFIG_HAS_DEVICE_TREE > + > +extern const struct device_desc _sdevice[], _edevice[]; ... like this ... > +int __init device_init(struct dt_device_node *dev, enum device_class class, > + const void *data) > +{ > + const struct device_desc *desc; > + > + ASSERT(dev != NULL); > + > + if ( !dt_device_is_available(dev) || dt_device_for_passthrough(dev) ) > + return -ENODEV; > + > + for ( desc = _sdevice; desc != _edevice; desc++ ) > + { > + if ( desc->class != class ) > + continue; > + > + if ( dt_match_node(desc->dt_match, dev) ) > + { > + ASSERT(desc->init != NULL); > + > + return desc->init(dev, data); > + } > + } > + > + return -EBADF; > +} > + > +enum device_class device_get_class(const struct dt_device_node *dev) > +{ > + const struct device_desc *desc; > + > + ASSERT(dev != NULL); > + > + for ( desc = _sdevice; desc != _edevice; desc++ ) > + { > + if ( dt_match_node(desc->dt_match, dev) ) > + return desc->class; > + } > + > + return DEVICE_UNKNOWN; > +} > + > +#endif > + > +#ifdef CONFIG_ACPI ... in the section where it's needed? Leaving just one #ifdef for ACPI. Jan
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |