Re: linux-next: manual merge of the char-misc tree with the drivers-x86 tree

From: Stephen Rothwell
Date: Sun Feb 14 2021 - 15:45:39 EST


Hi all,

On Mon, 11 Jan 2021 13:08:51 +1100 Stephen Rothwell <sfr@xxxxxxxxxxxxxxxx> wrote:
>
> Today's linux-next merge of the char-misc tree got conflicts in:
>
> include/linux/mod_devicetable.h
> scripts/mod/devicetable-offsets.c
> scripts/mod/file2alias.c
>
> between commit:
>
> eb0e90a82098 ("platform/surface: aggregator: Add dedicated bus and device type")
>
> from the drivers-x86 tree and commits:
>
> 9326eecd9365 ("fpga: dfl: move dfl_device_id to mod_devicetable.h")
> 4a224acec597 ("fpga: dfl: add dfl bus support to MODULE_DEVICE_TABLE()")
>
> from the char-misc tree.
>
> I fixed it up (see below) and can carry the fix as necessary. This
> is now fixed as far as linux-next is concerned, but any non trivial
> conflicts should be mentioned to your upstream maintainer when your tree
> is submitted for merging. You may also want to consider cooperating
> with the maintainer of the conflicting tree to minimise any particularly
> complex conflicts.
>
> --
> Cheers,
> Stephen Rothwell
>
> diff --cc include/linux/mod_devicetable.h
> index 935060955152,b8dae34eca10..000000000000
> --- a/include/linux/mod_devicetable.h
> +++ b/include/linux/mod_devicetable.h
> @@@ -846,22 -846,28 +846,46 @@@ struct auxiliary_device_id
> kernel_ulong_t driver_data;
> };
>
> +/* Surface System Aggregator Module */
> +
> +#define SSAM_MATCH_TARGET 0x1
> +#define SSAM_MATCH_INSTANCE 0x2
> +#define SSAM_MATCH_FUNCTION 0x4
> +
> +struct ssam_device_id {
> + __u8 match_flags;
> +
> + __u8 domain;
> + __u8 category;
> + __u8 target;
> + __u8 instance;
> + __u8 function;
> +
> + kernel_ulong_t driver_data;
> +};
> +
> + /*
> + * DFL (Device Feature List)
> + *
> + * DFL defines a linked list of feature headers within the device MMIO space to
> + * provide an extensible way of adding features. Software can walk through these
> + * predefined data structures to enumerate features. It is now used in the FPGA.
> + * See Documentation/fpga/dfl.rst for more information.
> + *
> + * The dfl bus type is introduced to match the individual feature devices (dfl
> + * devices) for specific dfl drivers.
> + */
> +
> + /**
> + * struct dfl_device_id - dfl device identifier
> + * @type: DFL FIU type of the device. See enum dfl_id_type.
> + * @feature_id: feature identifier local to its DFL FIU type.
> + * @driver_data: driver specific data.
> + */
> + struct dfl_device_id {
> + __u16 type;
> + __u16 feature_id;
> + kernel_ulong_t driver_data;
> + };
> +
> #endif /* LINUX_MOD_DEVICETABLE_H */
> diff --cc scripts/mod/devicetable-offsets.c
> index f078eeb0a961,1b14f3cde4e5..000000000000
> --- a/scripts/mod/devicetable-offsets.c
> +++ b/scripts/mod/devicetable-offsets.c
> @@@ -246,13 -246,9 +246,17 @@@ int main(void
> DEVID(auxiliary_device_id);
> DEVID_FIELD(auxiliary_device_id, name);
>
> + DEVID(ssam_device_id);
> + DEVID_FIELD(ssam_device_id, match_flags);
> + DEVID_FIELD(ssam_device_id, domain);
> + DEVID_FIELD(ssam_device_id, category);
> + DEVID_FIELD(ssam_device_id, target);
> + DEVID_FIELD(ssam_device_id, instance);
> + DEVID_FIELD(ssam_device_id, function);
> +
> + DEVID(dfl_device_id);
> + DEVID_FIELD(dfl_device_id, type);
> + DEVID_FIELD(dfl_device_id, feature_id);
> +
> return 0;
> }
> diff --cc scripts/mod/file2alias.c
> index d21d2871387b,7ebabeb1e9c9..000000000000
> --- a/scripts/mod/file2alias.c
> +++ b/scripts/mod/file2alias.c
> @@@ -1375,28 -1375,18 +1375,40 @@@ static int do_auxiliary_entry(const cha
> return 1;
> }
>
> +/*
> + * Looks like: ssam:dNcNtNiNfN
> + *
> + * N is exactly 2 digits, where each is an upper-case hex digit.
> + */
> +static int do_ssam_entry(const char *filename, void *symval, char *alias)
> +{
> + DEF_FIELD(symval, ssam_device_id, match_flags);
> + DEF_FIELD(symval, ssam_device_id, domain);
> + DEF_FIELD(symval, ssam_device_id, category);
> + DEF_FIELD(symval, ssam_device_id, target);
> + DEF_FIELD(symval, ssam_device_id, instance);
> + DEF_FIELD(symval, ssam_device_id, function);
> +
> + sprintf(alias, "ssam:d%02Xc%02X", domain, category);
> + ADD(alias, "t", match_flags & SSAM_MATCH_TARGET, target);
> + ADD(alias, "i", match_flags & SSAM_MATCH_INSTANCE, instance);
> + ADD(alias, "f", match_flags & SSAM_MATCH_FUNCTION, function);
> +
> + return 1;
> +}
> +
> + /* Looks like: dfl:tNfN */
> + static int do_dfl_entry(const char *filename, void *symval, char *alias)
> + {
> + DEF_FIELD(symval, dfl_device_id, type);
> + DEF_FIELD(symval, dfl_device_id, feature_id);
> +
> + sprintf(alias, "dfl:t%04Xf%04X", type, feature_id);
> +
> + add_wildcard(alias);
> + return 1;
> + }
> +
> /* Does namelen bytes of name exactly match the symbol? */
> static bool sym_is(const char *name, unsigned namelen, const char *symbol)
> {
> @@@ -1472,7 -1462,7 +1484,8 @@@ static const struct devtable devtable[
> {"wmi", SIZE_wmi_device_id, do_wmi_entry},
> {"mhi", SIZE_mhi_device_id, do_mhi_entry},
> {"auxiliary", SIZE_auxiliary_device_id, do_auxiliary_entry},
> + {"ssam", SIZE_ssam_device_id, do_ssam_entry},
> + {"dfl", SIZE_dfl_device_id, do_dfl_entry},
> };
>
> /* Create MODULE_ALIAS() statements.

With the merge window about to open, this is a reminder that this
conflict still exists.

--
Cheers,
Stephen Rothwell

Attachment: pgptG6nvd3jYz.pgp
Description: OpenPGP digital signature