Merge tag 'pull-ufs-20260709' of https://gitlab.com/jeuk20.kim/qemu into staging
hw/ufs: fix double unref of wrapped scsi-hd # -----BEGIN PGP SIGNATURE----- # # iQIzBAABCgAdFiEEUBfYMVl8eKPZB+73EuIgTA5dtgIFAmpO2osACgkQEuIgTA5d # tgJmPw//dnLJD2NEQN6M5kMJRE921idE8cwBaUYsuIjltONnoH0i3J1t/8HA8RVp # N27mzF2MP7cTJQfzWwncyb7+e7X6N/bv8+MeioTzRXZc7LeusZkHH8tSsXG+NvxI # cI2NwSbdj4T5g8E8QqGXdKnEpgJpu2BkSHeu7traoSholFGRC4vXj/bi8Gl9ZAQw # T736WijPkTg45OtVZ4jm/PXn3FIq5jlloXFmB0usdor+Srhimg/NrTFfxk4tUXF/ # ufpAqhUTlaX7ZEfOOhTZz3nmfUVOzjfNwtd1CtXbSgPxHpR3vgFNeJOiToz+RnyZ # JkIiGo7RAC6JvlNtYXNAtRXwsYp2uW4ktxu1jxaY2BGCNBeVHQ7g/1sd2APBQR9U # uyLpArFiuR2Ar83l5hshQw/pBhlC4C8XkzEpZHEN4m0XcsFKK3RPyn6tdGWpJ7/M # +BSLMNj0fj3vy0f6V9uMfhi+3qjpEQgqaTPE9plgIeivU4zvlcq29D74z9ZdlQWs # ii31j/eac5X/YksgpWNxWQDtYRQk1vGbYFIlKeE4xmmRhRg5OO7m3KQUi6NMCySi # p09gmENnZt+fOagGPK66AcPgFhO1IyuIffTGgSzVqoPT6AgB3wMt6aQhJXMHaOLF # Lh/sRWEI/1DFziizTA/yZPcBlxrQrRT1wkn9nMOsxY+Vud290A8= # =2JE2 # -----END PGP SIGNATURE----- # gpg: Signature made Thu 09 Jul 2026 01:17:31 CEST # gpg: using RSA key 5017D831597C78A3D907EEF712E2204C0E5DB602 # gpg: Good signature from "Jeuk Kim <jeuk20.kim@samsung.com>" [unknown] # gpg: aka "Jeuk Kim <jeuk20.kim@gmail.com>" [unknown] # gpg: WARNING: This key is not certified with a trusted signature! # gpg: There is no indication that the signature belongs to the owner. # Primary key fingerprint: 5017 D831 597C 78A3 D907 EEF7 12E2 204C 0E5D B602 * tag 'pull-ufs-20260709' of https://gitlab.com/jeuk20.kim/qemu: hw/ufs: avoid double unref of wrapped scsi-hd Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
This commit is contained in:
@@ -530,10 +530,7 @@ static void ufs_lu_unrealize(DeviceState *dev)
|
||||
{
|
||||
UfsLu *lu = DO_UPCAST(UfsLu, qdev, dev);
|
||||
|
||||
if (lu->scsi_dev) {
|
||||
object_unref(OBJECT(lu->scsi_dev));
|
||||
lu->scsi_dev = NULL;
|
||||
}
|
||||
lu->scsi_dev = NULL;
|
||||
}
|
||||
|
||||
static void ufs_lu_class_init(ObjectClass *oc, const void *data)
|
||||
|
||||
@@ -34,6 +34,8 @@
|
||||
#define TEST_QID 0
|
||||
#define QUEUE_SIZE 32
|
||||
#define UFS_MCQ_MAX_QNUM 32
|
||||
#define ACPI_PCIHP_ADDR 0xae00
|
||||
#define PCI_EJ_BASE 0x0008
|
||||
|
||||
typedef struct QUfs QUfs;
|
||||
|
||||
@@ -635,6 +637,17 @@ static void ufstest_reg_read(void *obj, void *data, QGuestAllocator *alloc)
|
||||
qpci_iounmap(&ufs->dev, ufs->bar);
|
||||
}
|
||||
|
||||
static void ufstest_acpi_eject(void *obj, void *data, QGuestAllocator *alloc)
|
||||
{
|
||||
QUfs *ufs = obj;
|
||||
QTestState *qts = ufs->dev.bus->qts;
|
||||
|
||||
qtest_outl(qts, ACPI_PCIHP_ADDR + PCI_EJ_BASE, 1 << 4);
|
||||
qtest_qmp_assert_success(qts, "{ 'execute': 'query-status' }");
|
||||
g_usleep(3 * G_USEC_PER_SEC);
|
||||
qtest_qmp_assert_success(qts, "{ 'execute': 'query-status' }");
|
||||
}
|
||||
|
||||
static void ufstest_init(void *obj, void *data, QGuestAllocator *alloc)
|
||||
{
|
||||
QUfs *ufs = obj;
|
||||
@@ -1682,6 +1695,7 @@ static void ufs_register_nodes(void)
|
||||
"mcq=false,nutrs=32,nutmrs=8,"
|
||||
"wb-max-size=1024,"
|
||||
"wb-min-size=256" };
|
||||
QOSGraphTestOptions acpi_eject_test_opts = { .subprocess = true };
|
||||
|
||||
add_qpci_address(&edge_opts, &(QPCIAddress){ .devfn = QPCI_DEVFN(4, 0) });
|
||||
|
||||
@@ -1700,6 +1714,10 @@ static void ufs_register_nodes(void)
|
||||
g_test_message("Skipping ufs io tests for ppc64");
|
||||
return;
|
||||
}
|
||||
if (!strcmp(arch, "i386") || !strcmp(arch, "x86_64")) {
|
||||
qos_add_test("acpi-eject", "ufs", ufstest_acpi_eject,
|
||||
&acpi_eject_test_opts);
|
||||
}
|
||||
qos_add_test("init", "ufs", ufstest_init, NULL);
|
||||
qos_add_test("legacy-read-write", "ufs", ufstest_read_write, &io_test_opts);
|
||||
qos_add_test("mcq-read-write", "ufs", ufstest_read_write, &mcq_test_opts);
|
||||
|
||||
Reference in New Issue
Block a user