[pm:bleeding-edge] BUILD SUCCESS b2864f8ca01d373c62bbfe71fa01695b039edbbf
by kernel test robot
tree/branch: https://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm.git bleeding-edge
branch HEAD: b2864f8ca01d373c62bbfe71fa01695b039edbbf Merge branch 'pm-cpufreq' into linux-next
elapsed time: 725m
configs tested: 154
configs skipped: 2
The following configs have been built successfully.
More configs may be tested in the coming days.
gcc tested configs:
arm defconfig
arm64 allyesconfig
arm64 defconfig
arm allyesconfig
arm allmodconfig
m68k amcore_defconfig
mips jmr3927_defconfig
powerpc ppc44x_defconfig
mips nlm_xlp_defconfig
powerpc iss476-smp_defconfig
powerpc mpc866_ads_defconfig
xtensa virt_defconfig
arm ep93xx_defconfig
s390 defconfig
sh se7705_defconfig
powerpc maple_defconfig
arc nsimosci_hs_smp_defconfig
arm ezx_defconfig
arm alldefconfig
powerpc sam440ep_defconfig
sh edosk7760_defconfig
arm iop32x_defconfig
arm lpc32xx_defconfig
arm ixp4xx_defconfig
sh lboxre2_defconfig
sh sdk7780_defconfig
mips malta_kvm_defconfig
arm palmz72_defconfig
mips bmips_be_defconfig
arm sunxi_defconfig
powerpc tqm8560_defconfig
powerpc skiroot_defconfig
powerpc mpc8313_rdb_defconfig
arc nsimosci_hs_defconfig
mips tb0287_defconfig
arm64 alldefconfig
mips bcm47xx_defconfig
h8300 defconfig
sh sh7710voipgw_defconfig
mips ip22_defconfig
powerpc amigaone_defconfig
mips maltaup_xpa_defconfig
mips maltaup_defconfig
arm realview_defconfig
mips mpc30x_defconfig
arm collie_defconfig
m68k stmark2_defconfig
powerpc lite5200b_defconfig
powerpc mpc7448_hpc2_defconfig
powerpc tqm8548_defconfig
arm multi_v5_defconfig
mips e55_defconfig
mips omega2p_defconfig
arm mini2440_defconfig
arm badge4_defconfig
ia64 alldefconfig
powerpc mpc836x_mds_defconfig
arm jornada720_defconfig
powerpc mgcoge_defconfig
openrisc defconfig
mips loongson1c_defconfig
m68k allmodconfig
nios2 3c120_defconfig
sh kfr2r09_defconfig
arc axs103_smp_defconfig
arm cerfcube_defconfig
mips ci20_defconfig
xtensa cadence_csp_defconfig
arm omap2plus_defconfig
arc vdk_hs38_smp_defconfig
powerpc mpc83xx_defconfig
microblaze defconfig
arm qcom_defconfig
arm cns3420vb_defconfig
arc nsim_700_defconfig
mips nlm_xlr_defconfig
mips rt305x_defconfig
arm mvebu_v5_defconfig
powerpc bamboo_defconfig
sparc64 alldefconfig
mips maltaaprp_defconfig
x86_64 allnoconfig
ia64 allmodconfig
ia64 defconfig
ia64 allyesconfig
m68k defconfig
m68k allyesconfig
nios2 defconfig
arc allyesconfig
nds32 allnoconfig
nds32 defconfig
nios2 allyesconfig
csky defconfig
alpha defconfig
alpha allyesconfig
xtensa allyesconfig
h8300 allyesconfig
arc defconfig
sh allmodconfig
parisc defconfig
s390 allyesconfig
s390 allmodconfig
parisc allyesconfig
i386 allyesconfig
sparc allyesconfig
sparc defconfig
i386 defconfig
mips allyesconfig
mips allmodconfig
powerpc allyesconfig
powerpc allmodconfig
powerpc allnoconfig
x86_64 randconfig-a005-20210526
x86_64 randconfig-a001-20210526
x86_64 randconfig-a006-20210526
x86_64 randconfig-a003-20210526
x86_64 randconfig-a004-20210526
x86_64 randconfig-a002-20210526
i386 randconfig-a001-20210526
i386 randconfig-a002-20210526
i386 randconfig-a005-20210526
i386 randconfig-a004-20210526
i386 randconfig-a003-20210526
i386 randconfig-a006-20210526
i386 randconfig-a011-20210526
i386 randconfig-a016-20210526
i386 randconfig-a015-20210526
i386 randconfig-a012-20210526
i386 randconfig-a014-20210526
i386 randconfig-a013-20210526
riscv nommu_k210_defconfig
riscv nommu_virt_defconfig
riscv allnoconfig
riscv defconfig
riscv allyesconfig
riscv rv32_defconfig
riscv allmodconfig
um allmodconfig
um allnoconfig
um allyesconfig
um defconfig
x86_64 allyesconfig
x86_64 rhel-8.3-kselftests
x86_64 defconfig
x86_64 rhel-8.3
x86_64 rhel-8.3-kbuiltin
x86_64 kexec
clang tested configs:
x86_64 randconfig-b001-20210526
x86_64 randconfig-a013-20210526
x86_64 randconfig-a012-20210526
x86_64 randconfig-a014-20210526
x86_64 randconfig-a016-20210526
x86_64 randconfig-a015-20210526
x86_64 randconfig-a011-20210526
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/[email protected]
1 year, 1 month
Re: [PATCH v1 1/1] ACPI: utils: Fix reference counting in for_each_acpi_dev_match()
by Andy Shevchenko
On Wed, May 26, 2021 at 1:29 AM Daniel Scally <djrscally(a)gmail.com> wrote:
> On 20/05/2021 20:40, Rafael J. Wysocki wrote:
> > On Thu, May 20, 2021 at 9:13 PM Rafael J. Wysocki <rafael(a)kernel.org> wrote:
> >> On Wed, May 19, 2021 at 11:19 PM Andy Shevchenko
> >> <andy.shevchenko(a)gmail.com> wrote:
> >>> Currently it's possible to iterate over the dangling pointer in case the device
> >>> suddenly disappears. This may happen becase callers put it at the end of a loop.
> >>>
> >>> Instead, let's move that call inside acpi_dev_get_next_match_dev().
> >> Not really.
> > OK, I see what you want to achieve and the macro is actually buggy,
> > because it leaves unbalanced references behind.
>
>
> Yeah; I guess the originally intended use (which was "get all these
> devices") doesn't really tally with the naming or with the operation of
> similar functions in the kernel like the fwnode_handle ops; sorry about
> that. Anyway; I think Andy's fix is the right way to do it, so the
> calling code's responsible for holding onto a reference if it wants to
> keep it.
I think we need to postpone the fix till v5.14-rc1 is out. It appears
that some code has been changed in EFI and media subsystems so that
patch will be in conflict with.
--
With Best Regards,
Andy Shevchenko
1 year, 1 month
[pm:bleeding-edge] BUILD SUCCESS bf15f94bdcd8d77957c0649a2ea7e39705b699a1
by kernel test robot
tree/branch: https://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm.git bleeding-edge
branch HEAD: bf15f94bdcd8d77957c0649a2ea7e39705b699a1 Merge branch 'acpi-misc' into linux-next
elapsed time: 721m
configs tested: 252
configs skipped: 3
The following configs have been built successfully.
More configs may be tested in the coming days.
gcc tested configs:
arm defconfig
arm64 allyesconfig
arm allyesconfig
arm allmodconfig
arm64 defconfig
arc haps_hs_smp_defconfig
sh se7751_defconfig
arm sunxi_defconfig
parisc generic-64bit_defconfig
mips loongson1c_defconfig
arm milbeaut_m10v_defconfig
sh apsh4ad0a_defconfig
mips ath79_defconfig
arm cm_x300_defconfig
sh sh7724_generic_defconfig
sh sh03_defconfig
openrisc defconfig
x86_64 alldefconfig
powerpc mpc83xx_defconfig
powerpc mpc866_ads_defconfig
mips maltasmvp_eva_defconfig
powerpc tqm8548_defconfig
powerpc ppc44x_defconfig
sh se7780_defconfig
arm spear3xx_defconfig
powerpc ppc40x_defconfig
sh dreamcast_defconfig
powerpc stx_gp3_defconfig
powerpc mpc512x_defconfig
powerpc ksi8560_defconfig
powerpc tqm5200_defconfig
sh titan_defconfig
csky defconfig
arm multi_v4t_defconfig
mips ip22_defconfig
m68k allyesconfig
powerpc redwood_defconfig
mips omega2p_defconfig
arm xcep_defconfig
powerpc eiger_defconfig
xtensa generic_kc705_defconfig
arm mmp2_defconfig
powerpc ppc64_defconfig
um alldefconfig
mips loongson3_defconfig
mips nlm_xlp_defconfig
openrisc or1klitex_defconfig
powerpc walnut_defconfig
mips db1xxx_defconfig
mips maltaup_defconfig
arm spitz_defconfig
mips cavium_octeon_defconfig
powerpc obs600_defconfig
mips ar7_defconfig
sh se7712_defconfig
arm iop32x_defconfig
arc alldefconfig
powerpc ge_imp3a_defconfig
powerpc pq2fads_defconfig
arm at91_dt_defconfig
powerpc holly_defconfig
alpha alldefconfig
um x86_64_defconfig
arm s3c6400_defconfig
arc vdk_hs38_defconfig
arm pcm027_defconfig
arm mvebu_v5_defconfig
sh sdk7780_defconfig
arm pxa168_defconfig
sh lboxre2_defconfig
powerpc chrp32_defconfig
mips malta_qemu_32r6_defconfig
m68k sun3x_defconfig
arm oxnas_v6_defconfig
powerpc mpc85xx_cds_defconfig
powerpc klondike_defconfig
powerpc mpc832x_mds_defconfig
mips maltaup_xpa_defconfig
arm orion5x_defconfig
mips ip28_defconfig
arm vt8500_v6_v7_defconfig
nds32 alldefconfig
xtensa virt_defconfig
mips cu1830-neo_defconfig
xtensa xip_kc705_defconfig
powerpc taishan_defconfig
nios2 alldefconfig
arm jornada720_defconfig
powerpc mpc8272_ads_defconfig
powerpc sbc8548_defconfig
sh sh7770_generic_defconfig
arm am200epdkit_defconfig
alpha defconfig
riscv nommu_k210_defconfig
powerpc tqm8541_defconfig
powerpc mpc834x_itxgp_defconfig
mips capcella_defconfig
arm mps2_defconfig
nds32 defconfig
powerpc64 defconfig
powerpc bamboo_defconfig
mips bcm47xx_defconfig
arm spear6xx_defconfig
arm realview_defconfig
powerpc storcenter_defconfig
arm tegra_defconfig
arm pxa910_defconfig
mips rm200_defconfig
arm pleb_defconfig
sparc64 defconfig
arm omap1_defconfig
mips mpc30x_defconfig
arm lart_defconfig
powerpc rainier_defconfig
powerpc ppc6xx_defconfig
sh se7750_defconfig
mips pic32mzda_defconfig
mips tb0219_defconfig
m68k m5249evb_defconfig
riscv allnoconfig
sh se7206_defconfig
arm cns3420vb_defconfig
powerpc sequoia_defconfig
sh se7619_defconfig
s390 defconfig
m68k q40_defconfig
microblaze defconfig
arc axs101_defconfig
sh se7724_defconfig
parisc generic-32bit_defconfig
arm tct_hammer_defconfig
xtensa smp_lx200_defconfig
m68k multi_defconfig
sh se7705_defconfig
m68k mvme16x_defconfig
arm rpc_defconfig
arc hsdk_defconfig
riscv nommu_k210_sdcard_defconfig
mips e55_defconfig
sh microdev_defconfig
powerpc fsp2_defconfig
mips malta_defconfig
powerpc wii_defconfig
sh j2_defconfig
arm64 alldefconfig
sh secureedge5410_defconfig
sh edosk7705_defconfig
powerpc tqm8xx_defconfig
powerpc currituck_defconfig
mips ath25_defconfig
um allyesconfig
powerpc pasemi_defconfig
arc nsim_700_defconfig
arm dove_defconfig
arc nsimosci_hs_defconfig
s390 debug_defconfig
arm aspeed_g5_defconfig
mips rb532_defconfig
arm trizeps4_defconfig
m68k hp300_defconfig
x86_64 allnoconfig
ia64 allmodconfig
ia64 defconfig
ia64 allyesconfig
m68k allmodconfig
m68k defconfig
nios2 defconfig
arc allyesconfig
nds32 allnoconfig
nios2 allyesconfig
alpha allyesconfig
xtensa allyesconfig
h8300 allyesconfig
arc defconfig
sh allmodconfig
parisc defconfig
s390 allyesconfig
s390 allmodconfig
parisc allyesconfig
i386 allyesconfig
sparc allyesconfig
sparc defconfig
i386 defconfig
mips allyesconfig
mips allmodconfig
powerpc allyesconfig
powerpc allmodconfig
powerpc allnoconfig
x86_64 randconfig-a005-20210526
x86_64 randconfig-a001-20210526
x86_64 randconfig-a006-20210526
x86_64 randconfig-a003-20210526
x86_64 randconfig-a004-20210526
x86_64 randconfig-a002-20210526
i386 randconfig-a001-20210525
i386 randconfig-a002-20210525
i386 randconfig-a005-20210525
i386 randconfig-a006-20210525
i386 randconfig-a003-20210525
i386 randconfig-a004-20210525
i386 randconfig-a001-20210526
i386 randconfig-a002-20210526
i386 randconfig-a005-20210526
i386 randconfig-a004-20210526
i386 randconfig-a003-20210526
i386 randconfig-a006-20210526
x86_64 randconfig-a013-20210525
x86_64 randconfig-a012-20210525
x86_64 randconfig-a014-20210525
x86_64 randconfig-a016-20210525
x86_64 randconfig-a015-20210525
x86_64 randconfig-a011-20210525
i386 randconfig-a011-20210525
i386 randconfig-a016-20210525
i386 randconfig-a015-20210525
i386 randconfig-a012-20210525
i386 randconfig-a014-20210525
i386 randconfig-a013-20210525
i386 randconfig-a011-20210526
i386 randconfig-a016-20210526
i386 randconfig-a015-20210526
i386 randconfig-a012-20210526
i386 randconfig-a014-20210526
i386 randconfig-a013-20210526
riscv allyesconfig
riscv nommu_virt_defconfig
riscv defconfig
riscv rv32_defconfig
riscv allmodconfig
um allmodconfig
um allnoconfig
um defconfig
x86_64 allyesconfig
x86_64 rhel-8.3-kselftests
x86_64 defconfig
x86_64 rhel-8.3
x86_64 rhel-8.3-kbuiltin
x86_64 kexec
clang tested configs:
x86_64 randconfig-b001-20210526
x86_64 randconfig-b001-20210525
x86_64 randconfig-a005-20210525
x86_64 randconfig-a006-20210525
x86_64 randconfig-a001-20210525
x86_64 randconfig-a003-20210525
x86_64 randconfig-a004-20210525
x86_64 randconfig-a002-20210525
x86_64 randconfig-a013-20210526
x86_64 randconfig-a012-20210526
x86_64 randconfig-a014-20210526
x86_64 randconfig-a016-20210526
x86_64 randconfig-a015-20210526
x86_64 randconfig-a011-20210526
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/[email protected]
1 year, 1 month
[pm:bleeding-edge] BUILD SUCCESS 04e5775c09a2edfe8b310fd22099d46d98e0a5d2
by kernel test robot
tree/branch: https://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm.git bleeding-edge
branch HEAD: 04e5775c09a2edfe8b310fd22099d46d98e0a5d2 Merge branch 'acpi-misc' into bleeding-edge
i386-tinyconfig vmlinux size:
=======================================================================
TOTAL TEXT
=======================================================================
0 0 04e5775c09a2 Merge branch 'acpi-misc' into bleeding-edge
-172 -174 c4681547bcce..04e5775c09a2 (ALL COMMITS)
=======================================================================
elapsed time: 722m
configs tested: 98
configs skipped: 2
The following configs have been built successfully.
More configs may be tested in the coming days.
gcc tested configs:
arm64 defconfig
arm defconfig
arm64 allyesconfig
arm allyesconfig
arm allmodconfig
arm shannon_defconfig
powerpc ppc64e_defconfig
arm assabet_defconfig
powerpc eiger_defconfig
microblaze mmu_defconfig
powerpc skiroot_defconfig
powerpc tqm8xx_defconfig
sh defconfig
arm gemini_defconfig
powerpc linkstation_defconfig
mips tb0226_defconfig
powerpc maple_defconfig
arm qcom_defconfig
sh sh7724_generic_defconfig
arm integrator_defconfig
arm oxnas_v6_defconfig
sh microdev_defconfig
parisc generic-32bit_defconfig
x86_64 allnoconfig
ia64 allmodconfig
ia64 defconfig
ia64 allyesconfig
m68k allmodconfig
m68k defconfig
m68k allyesconfig
nios2 defconfig
arc allyesconfig
nds32 allnoconfig
nds32 defconfig
nios2 allyesconfig
csky defconfig
alpha defconfig
alpha allyesconfig
xtensa allyesconfig
h8300 allyesconfig
arc defconfig
sh allmodconfig
parisc defconfig
s390 allyesconfig
s390 allmodconfig
parisc allyesconfig
s390 defconfig
i386 allyesconfig
sparc allyesconfig
sparc defconfig
i386 defconfig
mips allyesconfig
mips allmodconfig
powerpc allyesconfig
powerpc allmodconfig
powerpc allnoconfig
i386 randconfig-a001-20210524
i386 randconfig-a002-20210524
i386 randconfig-a005-20210524
i386 randconfig-a006-20210524
i386 randconfig-a004-20210524
i386 randconfig-a003-20210524
i386 randconfig-a011-20210524
i386 randconfig-a016-20210524
i386 randconfig-a015-20210524
i386 randconfig-a012-20210524
i386 randconfig-a014-20210524
i386 randconfig-a013-20210524
x86_64 randconfig-a005-20210524
x86_64 randconfig-a001-20210524
x86_64 randconfig-a006-20210524
x86_64 randconfig-a003-20210524
x86_64 randconfig-a004-20210524
x86_64 randconfig-a002-20210524
riscv nommu_k210_defconfig
riscv allyesconfig
riscv nommu_virt_defconfig
riscv allnoconfig
riscv defconfig
riscv rv32_defconfig
riscv allmodconfig
um allmodconfig
um allnoconfig
um allyesconfig
um defconfig
x86_64 allyesconfig
x86_64 rhel-8.3-kselftests
x86_64 defconfig
x86_64 rhel-8.3
x86_64 rhel-8.3-kbuiltin
x86_64 kexec
clang tested configs:
x86_64 randconfig-b001-20210524
x86_64 randconfig-a013-20210524
x86_64 randconfig-a012-20210524
x86_64 randconfig-a014-20210524
x86_64 randconfig-a016-20210524
x86_64 randconfig-a015-20210524
x86_64 randconfig-a011-20210524
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/[email protected]
1 year, 1 month
[pm:bleeding-edge] BUILD SUCCESS 3e96bfcd74d28fa143840d41e24403eb50d45c38
by kernel test robot
tree/branch: https://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm.git bleeding-edge
branch HEAD: 3e96bfcd74d28fa143840d41e24403eb50d45c38 Merge branch 'acpi-ec' into bleeding-edge
elapsed time: 756m
configs tested: 89
configs skipped: 2
The following configs have been built successfully.
More configs may be tested in the coming days.
gcc tested configs:
arm defconfig
arm64 allyesconfig
arm64 defconfig
arm allyesconfig
arm allmodconfig
h8300 h8s-sim_defconfig
mips gcw0_defconfig
arm pxa910_defconfig
openrisc or1ksim_defconfig
m68k q40_defconfig
sh sh7763rdp_defconfig
powerpc katmai_defconfig
powerpc stx_gp3_defconfig
sh magicpanelr2_defconfig
x86_64 allnoconfig
ia64 allmodconfig
ia64 defconfig
ia64 allyesconfig
m68k allmodconfig
m68k defconfig
m68k allyesconfig
nios2 defconfig
arc allyesconfig
nds32 allnoconfig
nds32 defconfig
nios2 allyesconfig
csky defconfig
alpha defconfig
alpha allyesconfig
xtensa allyesconfig
h8300 allyesconfig
arc defconfig
sh allmodconfig
parisc defconfig
s390 allyesconfig
s390 allmodconfig
parisc allyesconfig
s390 defconfig
i386 allyesconfig
sparc allyesconfig
sparc defconfig
i386 defconfig
mips allyesconfig
mips allmodconfig
powerpc allyesconfig
powerpc allmodconfig
powerpc allnoconfig
i386 randconfig-a001-20210522
i386 randconfig-a005-20210522
i386 randconfig-a002-20210522
i386 randconfig-a004-20210522
i386 randconfig-a003-20210522
i386 randconfig-a006-20210522
i386 randconfig-a016-20210522
i386 randconfig-a011-20210522
i386 randconfig-a015-20210522
i386 randconfig-a012-20210522
i386 randconfig-a014-20210522
i386 randconfig-a013-20210522
x86_64 randconfig-a001-20210522
x86_64 randconfig-a006-20210522
x86_64 randconfig-a005-20210522
x86_64 randconfig-a003-20210522
x86_64 randconfig-a004-20210522
x86_64 randconfig-a002-20210522
riscv nommu_k210_defconfig
riscv allyesconfig
riscv nommu_virt_defconfig
riscv allnoconfig
riscv defconfig
riscv rv32_defconfig
riscv allmodconfig
um allmodconfig
um allnoconfig
um allyesconfig
um defconfig
x86_64 allyesconfig
x86_64 rhel-8.3-kselftests
x86_64 defconfig
x86_64 rhel-8.3
x86_64 rhel-8.3-kbuiltin
x86_64 kexec
clang tested configs:
x86_64 randconfig-b001-20210522
x86_64 randconfig-a013-20210522
x86_64 randconfig-a014-20210522
x86_64 randconfig-a012-20210522
x86_64 randconfig-a016-20210522
x86_64 randconfig-a015-20210522
x86_64 randconfig-a011-20210522
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/[email protected]
1 year, 1 month
[PATCH v1 1/1] ACPI: utils: Fix reference counting in for_each_acpi_dev_match()
by Andy Shevchenko
Currently it's possible to iterate over the dangling pointer in case the device
suddenly disappears. This may happen becase callers put it at the end of a loop.
Instead, let's move that call inside acpi_dev_get_next_match_dev().
Fixes: 803abec64ef9 ("media: ipu3-cio2: Add cio2-bridge to ipu3-cio2 driver")
Fixes: bf263f64e804 ("media: ACPI / bus: Add acpi_dev_get_next_match_dev() and helper macro")
Cc: Daniel Scally <djrscally(a)gmail.com>
Cc: Sakari Ailus <sakari.ailus(a)linux.intel.com>
Signed-off-by: Andy Shevchenko <andy.shevchenko(a)gmail.com>
---
drivers/acpi/utils.c | 5 +----
drivers/media/pci/intel/ipu3/cio2-bridge.c | 8 +++-----
include/acpi/acpi_bus.h | 5 -----
3 files changed, 4 insertions(+), 14 deletions(-)
diff --git a/drivers/acpi/utils.c b/drivers/acpi/utils.c
index 3b54b8fd7396..ccfc484dbffd 100644
--- a/drivers/acpi/utils.c
+++ b/drivers/acpi/utils.c
@@ -846,10 +846,6 @@ EXPORT_SYMBOL(acpi_dev_present);
* Return the next match of ACPI device if another matching device was present
* at the moment of invocation, or NULL otherwise.
*
- * FIXME: The function does not tolerate the sudden disappearance of @adev, e.g.
- * in the case of a hotplug event. That said, the caller should ensure that
- * this will never happen.
- *
* The caller is responsible for invoking acpi_dev_put() on the returned device.
*
* See additional information in acpi_dev_present() as well.
@@ -866,6 +862,7 @@ acpi_dev_get_next_match_dev(struct acpi_device *adev, const char *hid, const cha
match.hrv = hrv;
dev = bus_find_device(&acpi_bus_type, start, &match, acpi_dev_match_cb);
+ acpi_dev_put(adev);
return dev ? to_acpi_device(dev) : NULL;
}
EXPORT_SYMBOL(acpi_dev_get_next_match_dev);
diff --git a/drivers/media/pci/intel/ipu3/cio2-bridge.c b/drivers/media/pci/intel/ipu3/cio2-bridge.c
index e8511787c1e4..477417261b6e 100644
--- a/drivers/media/pci/intel/ipu3/cio2-bridge.c
+++ b/drivers/media/pci/intel/ipu3/cio2-bridge.c
@@ -178,13 +178,11 @@ static int cio2_bridge_connect_sensor(const struct cio2_sensor_config *cfg,
if (bridge->n_sensors >= CIO2_NUM_PORTS) {
dev_err(&cio2->dev, "Exceeded available CIO2 ports\n");
- cio2_bridge_unregister_sensors(bridge);
ret = -EINVAL;
- goto err_out;
+ goto err_put_adev;
}
sensor = &bridge->sensors[bridge->n_sensors];
- sensor->adev = adev;
strscpy(sensor->name, cfg->hid, sizeof(sensor->name));
ret = cio2_bridge_read_acpi_buffer(adev, "SSDB",
@@ -214,6 +212,7 @@ static int cio2_bridge_connect_sensor(const struct cio2_sensor_config *cfg,
goto err_free_swnodes;
}
+ sensor->adev = acpi_dev_get(adev);
adev->fwnode.secondary = fwnode;
dev_info(&cio2->dev, "Found supported sensor %s\n",
@@ -227,8 +226,7 @@ static int cio2_bridge_connect_sensor(const struct cio2_sensor_config *cfg,
err_free_swnodes:
software_node_unregister_nodes(sensor->swnodes);
err_put_adev:
- acpi_dev_put(sensor->adev);
-err_out:
+ acpi_dev_put(adev);
return ret;
}
diff --git a/include/acpi/acpi_bus.h b/include/acpi/acpi_bus.h
index 3a82faac5767..bff6a11bb21f 100644
--- a/include/acpi/acpi_bus.h
+++ b/include/acpi/acpi_bus.h
@@ -698,11 +698,6 @@ acpi_dev_get_first_match_dev(const char *hid, const char *uid, s64 hrv);
* @hrv: Hardware Revision of the device, pass -1 to not check _HRV
*
* The caller is responsible for invoking acpi_dev_put() on the returned device.
- *
- * FIXME: Due to above requirement there is a window that may invalidate @adev
- * and next iteration will use a dangling pointer, e.g. in the case of a
- * hotplug event. That said, the caller should ensure that this will never
- * happen.
*/
#define for_each_acpi_dev_match(adev, hid, uid, hrv) \
for (adev = acpi_dev_get_first_match_dev(hid, uid, hrv); \
--
2.31.1
1 year, 1 month
Re: [PATCH v4 2/8] ACPI: scan: Add function to fetch dependent of acpi device
by Rafael J. Wysocki
On Thu, May 20, 2021 at 4:11 PM Daniel Scally <djrscally(a)gmail.com> wrote:
>
> In some ACPI tables we encounter, devices use the _DEP method to assert
> a dependence on other ACPI devices as opposed to the OpRegions that the
> specification intends. We need to be able to find those devices "from"
> the dependee, so add a callback and a wrapper to walk over the
> acpi_dep_list and return the dependent ACPI device.
>
> Reviewed-by: Andy Shevchenko <andy.shevchenko(a)gmail.com>
> Signed-off-by: Daniel Scally <djrscally(a)gmail.com>
> ---
> Changes since v3:
>
> Both new functions were renamed.
>
> drivers/acpi/scan.c | 38 ++++++++++++++++++++++++++++++++++++++
> include/acpi/acpi_bus.h | 1 +
> 2 files changed, 39 insertions(+)
>
> diff --git a/drivers/acpi/scan.c b/drivers/acpi/scan.c
> index 195635c3462b..1a76fbdfa669 100644
> --- a/drivers/acpi/scan.c
> +++ b/drivers/acpi/scan.c
> @@ -2105,6 +2105,21 @@ static void acpi_bus_attach(struct acpi_device *device, bool first_pass)
> device->handler->hotplug.notify_online(device);
> }
>
> +static int acpi_return_dep_dev(struct acpi_dep_data *dep, void *data)
What about calling this acpi_get_first_consumer_cb()?
> +{
> + struct acpi_device *adev;
> + int ret;
> +
> + ret = acpi_bus_get_device(dep->consumer, &adev);
> + if (ret)
> + /* If we don't find an adev then we want to continue parsing */
> + return 0;
> +
> + *(struct acpi_device **)data = adev;
And it can do the get_device() here, can't it?
So maybe use acpi_bus_get_acpi_device() instead of
acpi_bus_get_device()? Would be simpler.
> +
> + return 1;
> +}
> +
> static int acpi_scan_clear_dep(struct acpi_dep_data *dep, void *data)
> {
> struct acpi_device *adev;
> @@ -2168,6 +2183,29 @@ void acpi_dev_clear_dependencies(struct acpi_device *supplier)
> }
> EXPORT_SYMBOL_GPL(acpi_dev_clear_dependencies);
>
> +/**
> + * acpi_dev_get_dependent_dev - Return ACPI device dependent on @supplier
And what about calling this acpi_get_first_consumer() ?
> + * @supplier: Pointer to the dependee device
> + *
> + * Returns the first &struct acpi_device which declares itself dependent on
> + * @supplier via the _DEP buffer, parsed from the acpi_dep_list.
> + *
> + * The caller is responsible for putting the reference to adev when it is no
> + * longer needed.
> + */
> +struct acpi_device *acpi_dev_get_dependent_dev(struct acpi_device *supplier)
> +{
> + struct acpi_device *adev = NULL;
> +
> + acpi_walk_dep_device_list(supplier->handle, acpi_return_dep_dev, &adev);
> +
> + if (adev)
> + get_device(&adev->dev);
> +
> + return adev;
> +}
> +EXPORT_SYMBOL_GPL(acpi_dev_get_dependent_dev);
> +
> /**
> * acpi_bus_scan - Add ACPI device node objects in a given namespace scope.
> * @handle: Root of the namespace scope to scan.
> diff --git a/include/acpi/acpi_bus.h b/include/acpi/acpi_bus.h
> index 0b2c4f170f4d..68d378207704 100644
> --- a/include/acpi/acpi_bus.h
> +++ b/include/acpi/acpi_bus.h
> @@ -692,6 +692,7 @@ static inline bool acpi_device_can_poweroff(struct acpi_device *adev)
> bool acpi_dev_hid_uid_match(struct acpi_device *adev, const char *hid2, const char *uid2);
>
> void acpi_dev_clear_dependencies(struct acpi_device *supplier);
> +struct acpi_device *acpi_dev_get_dependent_dev(struct acpi_device *supplier);
> struct acpi_device *
> acpi_dev_get_next_match_dev(struct acpi_device *adev, const char *hid, const char *uid, s64 hrv);
> struct acpi_device *
> --
> 2.25.1
>
1 year, 1 month
Re: [PATCH v4 1/8] ACPI: scan: Extend acpi_walk_dep_device_list()
by Rafael J. Wysocki
On Thu, May 20, 2021 at 4:11 PM Daniel Scally <djrscally(a)gmail.com> wrote:
>
> The acpi_walk_dep_device_list() is not as generalisable as its name
> implies, serving only to decrement the dependency count for each
> dependent device of the input. Extend the function to instead accept
> a callback which can be applied to all the dependencies in acpi_dep_list.
> Replace all existing calls to the function with calls to a wrapper, passing
> a callback that applies the same dependency reduction.
>
> Signed-off-by: Daniel Scally <djrscally(a)gmail.com>
LGTM, but I will have changes depending on it.
If that's fine by Hans, I'll take this one and expose it in a git
branch that won't be rebased.
> ---
> changes since v3:
>
> - Most of the functions got renamed
> - acpi_dev_get_dependent_dev() was altered to take a struct acpi_device
> This had some repurcussions in the other files, mostly switching from
> ACPI_HANDLE() to ACPI_COMPANION().
> - acpi_walk_dep_device_list() was altered to check the return value of
> the callback on each iteration of the loop, to allow for error handling
> of the callbacks or breaking the loop early to save time. Andy, Wolfram,
> I thought this change was significant enough to drop your R-b and Ack.
>
> drivers/acpi/ec.c | 2 +-
> drivers/acpi/pmic/intel_pmic_chtdc_ti.c | 2 +-
> drivers/acpi/scan.c | 69 ++++++++++++++-----
> drivers/gpio/gpiolib-acpi.c | 10 +--
> drivers/i2c/i2c-core-acpi.c | 8 +--
> drivers/platform/surface/aggregator/core.c | 6 +-
> drivers/platform/surface/surface3_power.c | 22 +++---
> .../platform/surface/surface_acpi_notify.c | 7 +-
> include/acpi/acpi_bus.h | 7 ++
> include/linux/acpi.h | 4 +-
> 10 files changed, 90 insertions(+), 47 deletions(-)
>
> diff --git a/drivers/acpi/ec.c b/drivers/acpi/ec.c
> index 13565629ce0a..3f7680a007a3 100644
> --- a/drivers/acpi/ec.c
> +++ b/drivers/acpi/ec.c
> @@ -1627,7 +1627,7 @@ static int acpi_ec_add(struct acpi_device *device)
> WARN(!ret, "Could not request EC cmd io port 0x%lx", ec->command_addr);
>
> /* Reprobe devices depending on the EC */
> - acpi_walk_dep_device_list(ec->handle);
> + acpi_dev_clear_dependencies(device);
>
> acpi_handle_debug(ec->handle, "enumerated.\n");
> return 0;
> diff --git a/drivers/acpi/pmic/intel_pmic_chtdc_ti.c b/drivers/acpi/pmic/intel_pmic_chtdc_ti.c
> index a5101b07611a..fef7831d0d63 100644
> --- a/drivers/acpi/pmic/intel_pmic_chtdc_ti.c
> +++ b/drivers/acpi/pmic/intel_pmic_chtdc_ti.c
> @@ -117,7 +117,7 @@ static int chtdc_ti_pmic_opregion_probe(struct platform_device *pdev)
> return err;
>
> /* Re-enumerate devices depending on PMIC */
> - acpi_walk_dep_device_list(ACPI_HANDLE(pdev->dev.parent));
> + acpi_dev_clear_dependencies(ACPI_COMPANION(pdev->dev.parent));
> return 0;
> }
>
> diff --git a/drivers/acpi/scan.c b/drivers/acpi/scan.c
> index 453eff8ec8c3..195635c3462b 100644
> --- a/drivers/acpi/scan.c
> +++ b/drivers/acpi/scan.c
> @@ -47,12 +47,6 @@ static DEFINE_MUTEX(acpi_hp_context_lock);
> */
> static u64 spcr_uart_addr;
>
> -struct acpi_dep_data {
> - struct list_head node;
> - acpi_handle supplier;
> - acpi_handle consumer;
> -};
> -
> void acpi_scan_lock_acquire(void)
> {
> mutex_lock(&acpi_scan_lock);
> @@ -2111,30 +2105,69 @@ static void acpi_bus_attach(struct acpi_device *device, bool first_pass)
> device->handler->hotplug.notify_online(device);
> }
>
> -void acpi_walk_dep_device_list(acpi_handle handle)
> +static int acpi_scan_clear_dep(struct acpi_dep_data *dep, void *data)
> {
> - struct acpi_dep_data *dep, *tmp;
> struct acpi_device *adev;
>
> + acpi_bus_get_device(dep->consumer, &adev);
> +
> + if (adev) {
> + adev->dep_unmet--;
> + if (!adev->dep_unmet)
> + acpi_bus_attach(adev, true);
> + }
> +
> + list_del(&dep->node);
> + kfree(dep);
> +
> + return 0;
> +}
> +
> +/**
> + * acpi_walk_dep_device_list - Apply a callback to every entry in acpi_dep_list
> + * @handle: The ACPI handle of the supplier device
> + * @callback: Pointer to the callback function to apply
> + * @data: Pointer to some data to pass to the callback
> + *
> + * The return value of the callback determines this function's behaviour. If 0
> + * is returned we continue to iterate over acpi_dep_list. If a positive value
> + * is returned then the loop is broken but this function returns 0. If a
> + * negative value is returned by the callback then the loop is broken and that
> + * value is returned as the final error.
> + */
> +int acpi_walk_dep_device_list(acpi_handle handle,
> + int (*callback)(struct acpi_dep_data *, void *),
> + void *data)
> +{
> + struct acpi_dep_data *dep, *tmp;
> + int ret;
> +
> mutex_lock(&acpi_dep_list_lock);
> list_for_each_entry_safe(dep, tmp, &acpi_dep_list, node) {
> if (dep->supplier == handle) {
> - acpi_bus_get_device(dep->consumer, &adev);
> -
> - if (adev) {
> - adev->dep_unmet--;
> - if (!adev->dep_unmet)
> - acpi_bus_attach(adev, true);
> - }
> -
> - list_del(&dep->node);
> - kfree(dep);
> + ret = callback(dep, data);
> + if (ret)
> + break;
> }
> }
> mutex_unlock(&acpi_dep_list_lock);
> +
> + return ret > 0 ? 0 : ret;
> }
> EXPORT_SYMBOL_GPL(acpi_walk_dep_device_list);
>
> +/**
> + * acpi_dev_clear_dependencies - Inform consumers that the device is now active
> + * @supplier: Pointer to the supplier &struct acpi_device
> + *
> + * Clear dependencies on the given device.
> + */
> +void acpi_dev_clear_dependencies(struct acpi_device *supplier)
> +{
> + acpi_walk_dep_device_list(supplier->handle, acpi_scan_clear_dep, NULL);
> +}
> +EXPORT_SYMBOL_GPL(acpi_dev_clear_dependencies);
> +
> /**
> * acpi_bus_scan - Add ACPI device node objects in a given namespace scope.
> * @handle: Root of the namespace scope to scan.
> diff --git a/drivers/gpio/gpiolib-acpi.c b/drivers/gpio/gpiolib-acpi.c
> index 3ef22a3c104d..5b4111e4be3f 100644
> --- a/drivers/gpio/gpiolib-acpi.c
> +++ b/drivers/gpio/gpiolib-acpi.c
> @@ -1233,14 +1233,14 @@ static void acpi_gpiochip_scan_gpios(struct acpi_gpio_chip *achip)
> void acpi_gpiochip_add(struct gpio_chip *chip)
> {
> struct acpi_gpio_chip *acpi_gpio;
> - acpi_handle handle;
> + struct acpi_device *adev;
> acpi_status status;
>
> if (!chip || !chip->parent)
> return;
>
> - handle = ACPI_HANDLE(chip->parent);
> - if (!handle)
> + adev = ACPI_COMPANION(chip->parent);
> + if (!adev)
> return;
>
> acpi_gpio = kzalloc(sizeof(*acpi_gpio), GFP_KERNEL);
> @@ -1254,7 +1254,7 @@ void acpi_gpiochip_add(struct gpio_chip *chip)
> INIT_LIST_HEAD(&acpi_gpio->events);
> INIT_LIST_HEAD(&acpi_gpio->deferred_req_irqs_list_entry);
>
> - status = acpi_attach_data(handle, acpi_gpio_chip_dh, acpi_gpio);
> + status = acpi_attach_data(adev->handle, acpi_gpio_chip_dh, acpi_gpio);
> if (ACPI_FAILURE(status)) {
> dev_err(chip->parent, "Failed to attach ACPI GPIO chip\n");
> kfree(acpi_gpio);
> @@ -1263,7 +1263,7 @@ void acpi_gpiochip_add(struct gpio_chip *chip)
>
> acpi_gpiochip_request_regions(acpi_gpio);
> acpi_gpiochip_scan_gpios(acpi_gpio);
> - acpi_walk_dep_device_list(handle);
> + acpi_dev_clear_dependencies(adev);
> }
>
> void acpi_gpiochip_remove(struct gpio_chip *chip)
> diff --git a/drivers/i2c/i2c-core-acpi.c b/drivers/i2c/i2c-core-acpi.c
> index 8ceaa88dd78f..6f0aa0ed3241 100644
> --- a/drivers/i2c/i2c-core-acpi.c
> +++ b/drivers/i2c/i2c-core-acpi.c
> @@ -259,8 +259,8 @@ static acpi_status i2c_acpi_add_device(acpi_handle handle, u32 level,
> */
> void i2c_acpi_register_devices(struct i2c_adapter *adap)
> {
> + struct acpi_device *adev;
> acpi_status status;
> - acpi_handle handle;
>
> if (!has_acpi_companion(&adap->dev))
> return;
> @@ -275,11 +275,11 @@ void i2c_acpi_register_devices(struct i2c_adapter *adap)
> if (!adap->dev.parent)
> return;
>
> - handle = ACPI_HANDLE(adap->dev.parent);
> - if (!handle)
> + adev = ACPI_COMPANION(adap->dev.parent);
> + if (!adev)
> return;
>
> - acpi_walk_dep_device_list(handle);
> + acpi_dev_clear_dependencies(adev);
> }
>
> static const struct acpi_device_id i2c_acpi_force_400khz_device_ids[] = {
> diff --git a/drivers/platform/surface/aggregator/core.c b/drivers/platform/surface/aggregator/core.c
> index 8dc2c267bcd6..517f774a6e60 100644
> --- a/drivers/platform/surface/aggregator/core.c
> +++ b/drivers/platform/surface/aggregator/core.c
> @@ -621,8 +621,8 @@ static const struct acpi_gpio_mapping ssam_acpi_gpios[] = {
>
> static int ssam_serial_hub_probe(struct serdev_device *serdev)
> {
> + struct acpi_device *ssh = ACPI_COMPANION(&serdev->dev);
> struct ssam_controller *ctrl;
> - acpi_handle *ssh = ACPI_HANDLE(&serdev->dev);
> acpi_status astatus;
> int status;
>
> @@ -652,7 +652,7 @@ static int ssam_serial_hub_probe(struct serdev_device *serdev)
> if (status)
> goto err_devopen;
>
> - astatus = ssam_serdev_setup_via_acpi(ssh, serdev);
> + astatus = ssam_serdev_setup_via_acpi(ssh->handle, serdev);
> if (ACPI_FAILURE(astatus)) {
> status = -ENXIO;
> goto err_devinit;
> @@ -706,7 +706,7 @@ static int ssam_serial_hub_probe(struct serdev_device *serdev)
> * For now let's thus default power/wakeup to false.
> */
> device_set_wakeup_capable(&serdev->dev, true);
> - acpi_walk_dep_device_list(ssh);
> + acpi_dev_clear_dependencies(ssh);
>
> return 0;
>
> diff --git a/drivers/platform/surface/surface3_power.c b/drivers/platform/surface/surface3_power.c
> index cc4f9cba6856..dea82aa1abd4 100644
> --- a/drivers/platform/surface/surface3_power.c
> +++ b/drivers/platform/surface/surface3_power.c
> @@ -446,12 +446,12 @@ mshw0011_space_handler(u32 function, acpi_physical_address command,
>
> static int mshw0011_install_space_handler(struct i2c_client *client)
> {
> - acpi_handle handle;
> + struct acpi_device *adev;
> struct mshw0011_handler_data *data;
> acpi_status status;
>
> - handle = ACPI_HANDLE(&client->dev);
> - if (!handle)
> + adev = ACPI_COMPANION(&client->dev);
> + if (!adev)
> return -ENODEV;
>
> data = kzalloc(sizeof(struct mshw0011_handler_data),
> @@ -460,25 +460,25 @@ static int mshw0011_install_space_handler(struct i2c_client *client)
> return -ENOMEM;
>
> data->client = client;
> - status = acpi_bus_attach_private_data(handle, (void *)data);
> + status = acpi_bus_attach_private_data(adev->handle, (void *)data);
> if (ACPI_FAILURE(status)) {
> kfree(data);
> return -ENOMEM;
> }
>
> - status = acpi_install_address_space_handler(handle,
> - ACPI_ADR_SPACE_GSBUS,
> - &mshw0011_space_handler,
> - NULL,
> - data);
> + status = acpi_install_address_space_handler(adev->handle,
> + ACPI_ADR_SPACE_GSBUS,
> + &mshw0011_space_handler,
> + NULL,
> + data);
> if (ACPI_FAILURE(status)) {
> dev_err(&client->dev, "Error installing i2c space handler\n");
> - acpi_bus_detach_private_data(handle);
> + acpi_bus_detach_private_data(adev->handle);
> kfree(data);
> return -ENOMEM;
> }
>
> - acpi_walk_dep_device_list(handle);
> + acpi_dev_clear_dependencies(adev);
> return 0;
> }
>
> diff --git a/drivers/platform/surface/surface_acpi_notify.c b/drivers/platform/surface/surface_acpi_notify.c
> index ef9c1f8e8336..8339988d95c1 100644
> --- a/drivers/platform/surface/surface_acpi_notify.c
> +++ b/drivers/platform/surface/surface_acpi_notify.c
> @@ -798,7 +798,7 @@ static int san_consumer_links_setup(struct platform_device *pdev)
>
> static int san_probe(struct platform_device *pdev)
> {
> - acpi_handle san = ACPI_HANDLE(&pdev->dev);
> + struct acpi_device *san = ACPI_COMPANION(&pdev->dev);
> struct ssam_controller *ctrl;
> struct san_data *data;
> acpi_status astatus;
> @@ -821,7 +821,8 @@ static int san_probe(struct platform_device *pdev)
>
> platform_set_drvdata(pdev, data);
>
> - astatus = acpi_install_address_space_handler(san, ACPI_ADR_SPACE_GSBUS,
> + astatus = acpi_install_address_space_handler(san->handle,
> + ACPI_ADR_SPACE_GSBUS,
> &san_opreg_handler, NULL,
> &data->info);
> if (ACPI_FAILURE(astatus))
> @@ -835,7 +836,7 @@ static int san_probe(struct platform_device *pdev)
> if (status)
> goto err_install_dev;
>
> - acpi_walk_dep_device_list(san);
> + acpi_dev_clear_dependencies(san);
> return 0;
>
> err_install_dev:
> diff --git a/include/acpi/acpi_bus.h b/include/acpi/acpi_bus.h
> index 3a82faac5767..0b2c4f170f4d 100644
> --- a/include/acpi/acpi_bus.h
> +++ b/include/acpi/acpi_bus.h
> @@ -280,6 +280,12 @@ struct acpi_device_power {
> struct acpi_device_power_state states[ACPI_D_STATE_COUNT]; /* Power states (D0-D3Cold) */
> };
>
> +struct acpi_dep_data {
> + struct list_head node;
> + acpi_handle supplier;
> + acpi_handle consumer;
> +};
> +
> /* Performance Management */
>
> struct acpi_device_perf_flags {
> @@ -685,6 +691,7 @@ static inline bool acpi_device_can_poweroff(struct acpi_device *adev)
>
> bool acpi_dev_hid_uid_match(struct acpi_device *adev, const char *hid2, const char *uid2);
>
> +void acpi_dev_clear_dependencies(struct acpi_device *supplier);
> struct acpi_device *
> acpi_dev_get_next_match_dev(struct acpi_device *adev, const char *hid, const char *uid, s64 hrv);
> struct acpi_device *
> diff --git a/include/linux/acpi.h b/include/linux/acpi.h
> index c60745f657e9..170b9bebdb2b 100644
> --- a/include/linux/acpi.h
> +++ b/include/linux/acpi.h
> @@ -666,7 +666,9 @@ extern bool acpi_driver_match_device(struct device *dev,
> const struct device_driver *drv);
> int acpi_device_uevent_modalias(struct device *, struct kobj_uevent_env *);
> int acpi_device_modalias(struct device *, char *, int);
> -void acpi_walk_dep_device_list(acpi_handle handle);
> +int acpi_walk_dep_device_list(acpi_handle handle,
> + int (*callback)(struct acpi_dep_data *, void *),
> + void *data);
>
> struct platform_device *acpi_create_platform_device(struct acpi_device *,
> struct property_entry *);
> --
> 2.25.1
>
1 year, 1 month
[pm:bleeding-edge] BUILD SUCCESS 31696a0a4ca5a5b29bf3fd87a936e27a89bbc9c8
by kernel test robot
tree/branch: https://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm.git bleeding-edge
branch HEAD: 31696a0a4ca5a5b29bf3fd87a936e27a89bbc9c8 Merge branch 'acpi-x86' into bleeding-edge
elapsed time: 723m
configs tested: 96
configs skipped: 2
The following configs have been built successfully.
More configs may be tested in the coming days.
gcc tested configs:
arm defconfig
arm64 allyesconfig
arm64 defconfig
arm allyesconfig
arm allmodconfig
um x86_64_defconfig
powerpc pseries_defconfig
powerpc taishan_defconfig
arm pxa910_defconfig
sh urquell_defconfig
powerpc arches_defconfig
mips maltaup_xpa_defconfig
sh shx3_defconfig
powerpc cell_defconfig
mips decstation_defconfig
mips lemote2f_defconfig
sh rsk7201_defconfig
arm lart_defconfig
mips malta_defconfig
m68k m5275evb_defconfig
powerpc tqm8548_defconfig
sh lboxre2_defconfig
x86_64 allnoconfig
ia64 allmodconfig
ia64 defconfig
ia64 allyesconfig
m68k allmodconfig
m68k defconfig
m68k allyesconfig
nios2 defconfig
arc allyesconfig
nds32 allnoconfig
nds32 defconfig
nios2 allyesconfig
csky defconfig
alpha defconfig
alpha allyesconfig
xtensa allyesconfig
h8300 allyesconfig
arc defconfig
sh allmodconfig
parisc defconfig
s390 allyesconfig
s390 allmodconfig
parisc allyesconfig
s390 defconfig
i386 allyesconfig
sparc allyesconfig
sparc defconfig
i386 defconfig
mips allyesconfig
mips allmodconfig
powerpc allyesconfig
powerpc allmodconfig
powerpc allnoconfig
i386 randconfig-a003-20210517
i386 randconfig-a001-20210517
i386 randconfig-a004-20210517
i386 randconfig-a005-20210517
i386 randconfig-a002-20210517
i386 randconfig-a006-20210517
x86_64 randconfig-a012-20210517
x86_64 randconfig-a015-20210517
x86_64 randconfig-a011-20210517
x86_64 randconfig-a013-20210517
x86_64 randconfig-a016-20210517
x86_64 randconfig-a014-20210517
i386 randconfig-a016-20210517
i386 randconfig-a014-20210517
i386 randconfig-a011-20210517
i386 randconfig-a012-20210517
i386 randconfig-a015-20210517
i386 randconfig-a013-20210517
riscv nommu_k210_defconfig
riscv allyesconfig
riscv nommu_virt_defconfig
riscv allnoconfig
riscv defconfig
riscv rv32_defconfig
riscv allmodconfig
um allmodconfig
um allnoconfig
um allyesconfig
um defconfig
x86_64 allyesconfig
x86_64 rhel-8.3-kselftests
x86_64 defconfig
x86_64 rhel-8.3
x86_64 rhel-8.3-kbuiltin
x86_64 kexec
clang tested configs:
x86_64 randconfig-a004-20210517
x86_64 randconfig-a003-20210517
x86_64 randconfig-a001-20210517
x86_64 randconfig-a005-20210517
x86_64 randconfig-a002-20210517
x86_64 randconfig-a006-20210517
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/[email protected]
1 year, 1 month
Re: [PATCH v3 5/6] platform/x86: Add intel_skl_int3472 driver
by Andy Shevchenko
On Tue, May 18, 2021 at 12:43 AM Daniel Scally <djrscally(a)gmail.com> wrote:
>
> Hi Andy
>
> On 22/02/2021 14:58, Andy Shevchenko wrote
> >> +#include <linux/clk-provider.h>
> >
> > This is definitely not for *.h. (Not all C files needed this)
> >
> >> +#include <linux/gpio/machine.h>
> >
> > Ditto.
> >
> >> +#include <linux/regulator/driver.h>
> >> +#include <linux/regulator/machine.h>
> >
> > Ditto.
>
> Bit more delayed than I wanted to be, but I'm just finishing off the v4
> of this. For these includes, I'm using the actual structs from them
> rather than pointers, so removing these would mean moving the definition
> of struct int3472_discrete_device into one of the source files; you're
> happy with that?
Either way, please send a v4 and we start over from a fresh view.
Thanks!
--
With Best Regards,
Andy Shevchenko
1 year, 1 month