Commit Graph

7 Commits

Author SHA1 Message Date
Nico Pache fd42c98246 kunit: unregister the device on error
commit fabd480b721eb30aa4e2c89507b53933069f9f6e
Author: Wander Lairson Costa <wander@redhat.com>
Date:   Fri Apr 19 10:25:01 2024 -0300

    kunit: unregister the device on error

    kunit_init_device() should unregister the device on bus register error,
    but mistakenly it tries to unregister the bus.

    Unregister the device instead of the bus.

    Signed-off-by: Wander Lairson Costa <wander@redhat.com>
    Fixes: d03c720e03bd ("kunit: Add APIs for managing devices")
    Reviewed-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Shuah Khan <skhan@linuxfoundation.org>

JIRA: https://issues.redhat.com/browse/RHEL-39303
Signed-off-by: Nico Pache <npache@redhat.com>
2024-07-31 20:32:29 -06:00
Nico Pache 36cfe9c384 kunit: make kunit_bus_type const
commit 2fadeb950f53c017bde9e156e443528265dd3629
Author: Ricardo B. Marliere <ricardo@marliere.net>
Date:   Wed Feb 14 16:15:00 2024 -0300

    kunit: make kunit_bus_type const

    Since commit d492cc2573a0 ("driver core: device.h: make struct
    bus_type a const *"), the driver core can properly handle constant
    struct bus_type, move the kunit_bus_type variable to be a constant
    structure as well, placing it into read-only memory which can not be
    modified at runtime.

    Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Suggested-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Ricardo B. Marliere <ricardo@marliere.net>
    Reviewed-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Reviewed-by: David Gow <davidgow@google.com>
    Signed-off-by: Shuah Khan <skhan@linuxfoundation.org>

JIRA: https://issues.redhat.com/browse/RHEL-39303
Signed-off-by: Nico Pache <npache@redhat.com>
2024-07-31 20:32:29 -06:00
Dave Airlie a7c0d90f9a kunit: Fix some comments which were mistakenly kerneldoc
JIRA: https://issues.redhat.com/browse/RHEL-24101
Upstream Status: v6.8-rc1

commit 539e582a375dedee95a4fa9ca3f37cdb25c441ec
Author:     David Gow <davidgow@google.com>
AuthorDate: Sat Dec 23 12:18:58 2023 +0800
Commit:     Shuah Khan <skhan@linuxfoundation.org>
CommitDate: Wed Jan  3 09:10:37 2024 -0700

    The KUnit device helpers are documented with kerneldoc in their header
    file, but also have short comments over their implementation. These were
    mistakenly formatted as kerneldoc comments, even though they're not
    valid kerneldoc. It shouldn't cause any serious problems -- this file
    isn't included in the docs -- but it could be confusing, and causes
    warnings.

    Remove the extra '*' so that these aren't treated as kerneldoc.

    Fixes: d03c720e03bd ("kunit: Add APIs for managing devices")
    Reported-by: kernel test robot <lkp@intel.com>
    Closes: https://lore.kernel.org/oe-kbuild-all/202312181920.H4EPAH20-lkp@intel.com/
    Signed-off-by: David Gow <davidgow@google.com>
    Reviewed-by: Randy Dunlap <rdunlap@infradead.org>
    Signed-off-by: Shuah Khan <skhan@linuxfoundation.org>

Signed-off-by: Dave Airlie <airlied@redhat.com>
2024-04-17 10:46:57 +10:00
Dave Airlie 94ecb4ef07 kunit: device: Fix a NULL vs IS_ERR() check in init()
JIRA: https://issues.redhat.com/browse/RHEL-24101
Upstream Status: v6.8-rc3

commit 083974ebb8fc65978d6cacd1bcfe9158d6234b98
Author:     Dan Carpenter <dan.carpenter@linaro.org>
AuthorDate: Wed Jan 10 21:55:14 2024 +0300
Commit:     Shuah Khan <skhan@linuxfoundation.org>
CommitDate: Mon Jan 22 07:58:22 2024 -0700

    The root_device_register() function does not return NULL, it returns
    error pointers.  Fix the check to match.

    Fixes: d03c720e03bd ("kunit: Add APIs for managing devices")
    Signed-off-by: Dan Carpenter <dan.carpenter@linaro.org>
    Reviewed-by: Rae Moar <rmoar@google.com>
    Reviewed-by: David Gow <davidgow@google.com>
    Signed-off-by: Shuah Khan <skhan@linuxfoundation.org>

Signed-off-by: Dave Airlie <airlied@redhat.com>
2024-04-17 10:46:57 +10:00
Dave Airlie 565a6c89f5 kunit: device: Unregister the kunit_bus on shutdown
JIRA: https://issues.redhat.com/browse/RHEL-24101
Upstream Status: v6.8-rc5

commit 829388b725f8d266ccec32a2f446717d8693eaba
Author:     David Gow <davidgow@google.com>
AuthorDate: Thu Feb  1 14:04:36 2024 +0800
Commit:     Shuah Khan <skhan@linuxfoundation.org>
CommitDate: Tue Feb  6 17:07:37 2024 -0700

    If KUnit is built as a module, and it's unloaded, the kunit_bus is not
    unregistered. This causes an error if it's then re-loaded later, as we
    try to re-register the bus.

    Unregister the bus and root_device on shutdown, if it looks valid.

    In addition, be more specific about the value of kunit_bus_device. It
    is:
    - a valid struct device* if the kunit_bus initialised correctly.
    - an ERR_PTR if it failed to initialise.
    - NULL before initialisation and after shutdown.

    Fixes: d03c720e03bd ("kunit: Add APIs for managing devices")
    Signed-off-by: David Gow <davidgow@google.com>
    Reviewed-by: Rae Moar <rmoar@google.com>
    Signed-off-by: Shuah Khan <skhan@linuxfoundation.org>

Signed-off-by: Dave Airlie <airlied@redhat.com>
2024-04-17 10:46:57 +10:00
Dave Airlie 09d8add7c9 kunit: Setup DMA masks on the kunit device
JIRA: https://issues.redhat.com/browse/RHEL-24101
Upstream Status: v6.9-rc1

commit c5215d54dc10e801a6cefef62445a00a4c28a515
Author:     Maxime Ripard <mripard@kernel.org>
AuthorDate: Wed Feb 21 13:53:24 2024 +0100
Commit:     Shuah Khan <skhan@linuxfoundation.org>
CommitDate: Tue Feb 27 14:46:35 2024 -0700

    Commit d393acce7b3f ("drm/tests: Switch to kunit devices") switched the
    DRM device creation helpers from an ad-hoc implementation to the new
    kunit device creation helpers introduced in commit d03c720e03bd ("kunit:
    Add APIs for managing devices").

    However, while the DRM helpers were using a platform_device, the kunit
    helpers are using a dedicated bus and device type.

    That situation creates small differences in the initialisation, and one
    of them is that the kunit devices do not have the DMA masks setup. In
    turn, this means that we can't do any kind of DMA buffer allocation
    anymore, which creates a regression on some (downstream for now) tests.

    Let's set up a default DMA mask that should work on any platform to fix
    it.

    Fixes: d03c720e03bd ("kunit: Add APIs for managing devices")
    Signed-off-by: Maxime Ripard <mripard@kernel.org>
    Tested-by: Guenter Roeck <linux@roeck-us.net>
    Reviewed-by: David Gow <davidgow@google.com>
    Signed-off-by: Shuah Khan <skhan@linuxfoundation.org>

Signed-off-by: Dave Airlie <airlied@redhat.com>
2024-04-17 10:46:57 +10:00
Dave Airlie 81864ed352 kunit: Add APIs for managing devices
JIRA: https://issues.redhat.com/browse/RHEL-24101
Upstream Status: v6.8-rc1

Conflicts:
        lib/kunit/kunit-test.c

commit d03c720e03bd9bf0b784d80b5d3ede7e2daf3b6e
Author:     davidgow@google.com <davidgow@google.com>
AuthorDate: Fri Dec 15 15:39:08 2023 +0800
Commit:     Shuah Khan <skhan@linuxfoundation.org>
CommitDate: Mon Dec 18 13:28:08 2023 -0700

    Tests for drivers often require a struct device to pass to other
    functions. While it's possible to create these with
    root_device_register(), or to use something like a platform device, this
    is both a misuse of those APIs, and can be difficult to clean up after,
    for example, a failed assertion.

    Add some KUnit-specific functions for registering and unregistering a
    struct device:
    - kunit_device_register()
    - kunit_device_register_with_driver()
    - kunit_device_unregister()

    These helpers allocate a on a 'kunit' bus which will either probe the
    driver passed in (kunit_device_register_with_driver), or will create a
    stub driver (kunit_device_register) which is cleaned up on test shutdown.

    Devices are automatically unregistered on test shutdown, but can be
    manually unregistered earlier with kunit_device_unregister() in order
    to, for example, test device release code.

    Reviewed-by: Matti Vaittinen <mazziesaccount@gmail.com>
    Reviewed-by: Maxime Ripard <mripard@kernel.org>
    Signed-off-by: David Gow <davidgow@google.com>
    Reviewed-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Shuah Khan <skhan@linuxfoundation.org>

Signed-off-by: Dave Airlie <airlied@redhat.com>
2024-04-17 10:46:57 +10:00