aspeed, pnv, vfio queue:
* user device fixes for Aspeed and PowerNV machines * coverity fix for iommufd -----BEGIN PGP SIGNATURE----- iQIzBAABCAAdFiEEoPZlSPBIlev+awtgUaNDx8/77KEFAmX5mm0ACgkQUaNDx8/7 7KE/MQ/9GeX4yNBxY2iTATdmPXwjMw8AtKyfIQb605nIO0ch1Z98ywl5VMwCNohn ppY9L5bFpEASgRlFVm73X4DGxKyRGpRPqylsvINh0hKciRpmRkELHY3llhnXsd7P Q197pDtFr54FeX8j4+hSAu4paT97fPENlKn0J6lto2I1cXGcD1LYNDFhysoXdGme brJgo7KjQJZPZ560ZewskL5FWf3G9EkRjpqd8y0G5OtNmAPgAaahOMHhDCXan182 J89I9CHI5xN45MRfAs8JamSaj/GyNsr4h04WhPa0+VZQ5vsaeW2Ekt4ypj+oAV+p wykhYzQk4ALZcmmph2flSAtLa7uheI+imyqubMthQCDj3G8onSQBMd5/4WRK6O49 0oE1DpPDEfhlJEQYxaYhOeqeA9iaP+w6V+yE+L5oGlMO66cR7GZsPu0x7kXailbH IoHw9mO+vMkpuyeP7M3hA8WRFCdFpf1Nn1Ao5Jz3KoiTyJWlIvX5VSaj12sjddQ2 fU9SKu2Q5QqS5uQGakkY64EyUy7RkGIX6zY2NIscVe2lfAfKf3mZwu7OIuLjEy5O lRn35vWV8fOdRooKoDPTNcdBCaNPi+RApin8chOv5P+F+ie7+Twf9sb1AgH/pIcv HptvTXbvSFNbbdb+OE8a5qsqTvnrN8d31IXzrWRYsJB07x2IyoA= =zR3v -----END PGP SIGNATURE----- Merge tag 'pull-for-9.0-20240319' of https://github.com/legoater/qemu into staging aspeed, pnv, vfio queue: * user device fixes for Aspeed and PowerNV machines * coverity fix for iommufd # -----BEGIN PGP SIGNATURE----- # # iQIzBAABCAAdFiEEoPZlSPBIlev+awtgUaNDx8/77KEFAmX5mm0ACgkQUaNDx8/7 # 7KE/MQ/9GeX4yNBxY2iTATdmPXwjMw8AtKyfIQb605nIO0ch1Z98ywl5VMwCNohn # ppY9L5bFpEASgRlFVm73X4DGxKyRGpRPqylsvINh0hKciRpmRkELHY3llhnXsd7P # Q197pDtFr54FeX8j4+hSAu4paT97fPENlKn0J6lto2I1cXGcD1LYNDFhysoXdGme # brJgo7KjQJZPZ560ZewskL5FWf3G9EkRjpqd8y0G5OtNmAPgAaahOMHhDCXan182 # J89I9CHI5xN45MRfAs8JamSaj/GyNsr4h04WhPa0+VZQ5vsaeW2Ekt4ypj+oAV+p # wykhYzQk4ALZcmmph2flSAtLa7uheI+imyqubMthQCDj3G8onSQBMd5/4WRK6O49 # 0oE1DpPDEfhlJEQYxaYhOeqeA9iaP+w6V+yE+L5oGlMO66cR7GZsPu0x7kXailbH # IoHw9mO+vMkpuyeP7M3hA8WRFCdFpf1Nn1Ao5Jz3KoiTyJWlIvX5VSaj12sjddQ2 # fU9SKu2Q5QqS5uQGakkY64EyUy7RkGIX6zY2NIscVe2lfAfKf3mZwu7OIuLjEy5O # lRn35vWV8fOdRooKoDPTNcdBCaNPi+RApin8chOv5P+F+ie7+Twf9sb1AgH/pIcv # HptvTXbvSFNbbdb+OE8a5qsqTvnrN8d31IXzrWRYsJB07x2IyoA= # =zR3v # -----END PGP SIGNATURE----- # gpg: Signature made Tue 19 Mar 2024 14:00:13 GMT # gpg: using RSA key A0F66548F04895EBFE6B0B6051A343C7CFFBECA1 # gpg: Good signature from "Cédric Le Goater <clg@kaod.org>" [undefined] # 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: A0F6 6548 F048 95EB FE6B 0B60 51A3 43C7 CFFB ECA1 * tag 'pull-for-9.0-20240319' of https://github.com/legoater/qemu: aspeed/smc: Only wire flash devices at reset ppc/pnv: I2C controller is not user creatable vfio/iommufd: Fix memory leak Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
This commit is contained in:
commit
7e9595e415
@ -13,6 +13,7 @@
|
||||
#include "qemu/error-report.h"
|
||||
#include "qapi/error.h"
|
||||
#include "sysemu/device_tree.h"
|
||||
#include "hw/block/flash.h"
|
||||
#include "hw/boards.h"
|
||||
#include "hw/sysbus.h"
|
||||
#include "hw/arm/fdt.h"
|
||||
@ -759,7 +760,7 @@ static void versal_virt_init(MachineState *machine)
|
||||
flash_klass = object_class_by_name(s->ospi_model);
|
||||
if (!flash_klass ||
|
||||
object_class_is_abstract(flash_klass) ||
|
||||
!object_class_dynamic_cast(flash_klass, "m25p80-generic")) {
|
||||
!object_class_dynamic_cast(flash_klass, TYPE_M25P80)) {
|
||||
error_setg(&error_fatal, "'%s' is either abstract or"
|
||||
" not a subtype of m25p80", s->ospi_model);
|
||||
return;
|
||||
|
@ -515,7 +515,6 @@ struct M25P80Class {
|
||||
FlashPartInfo *pi;
|
||||
};
|
||||
|
||||
#define TYPE_M25P80 "m25p80-generic"
|
||||
OBJECT_DECLARE_TYPE(Flash, M25P80Class, M25P80)
|
||||
|
||||
static inline Manufacturer get_man(Flash *s)
|
||||
|
@ -557,6 +557,9 @@ static void pnv_i2c_class_init(ObjectClass *klass, void *data)
|
||||
|
||||
xscomc->dt_xscom = pnv_i2c_dt_xscom;
|
||||
|
||||
/* Reason: This device is part of the CPU and cannot be used separately */
|
||||
dc->user_creatable = false;
|
||||
|
||||
dc->desc = "PowerNV I2C";
|
||||
dc->realize = pnv_i2c_realize;
|
||||
device_class_set_props(dc, pnv_i2c_properties);
|
||||
|
@ -23,6 +23,7 @@
|
||||
*/
|
||||
|
||||
#include "qemu/osdep.h"
|
||||
#include "hw/block/flash.h"
|
||||
#include "hw/sysbus.h"
|
||||
#include "migration/vmstate.h"
|
||||
#include "qemu/log.h"
|
||||
@ -695,6 +696,14 @@ static void aspeed_smc_reset(DeviceState *d)
|
||||
for (i = 0; i < asc->cs_num_max; i++) {
|
||||
DeviceState *dev = ssi_get_cs(s->spi, i);
|
||||
if (dev) {
|
||||
Object *o = OBJECT(dev);
|
||||
|
||||
if (!object_dynamic_cast(o, TYPE_M25P80)) {
|
||||
warn_report("Aspeed SMC %s.%d : Invalid %s device type",
|
||||
BUS(s->spi)->name, i, object_get_typename(o));
|
||||
continue;
|
||||
}
|
||||
|
||||
qemu_irq cs_line = qdev_get_gpio_in_named(dev, SSI_GPIO_CS, 0);
|
||||
qdev_connect_gpio_out_named(DEVICE(s), "cs", i, cs_line);
|
||||
}
|
||||
|
@ -118,10 +118,12 @@ static int iommufd_cdev_getfd(const char *sysfs_path, Error **errp)
|
||||
{
|
||||
ERRP_GUARD();
|
||||
long int ret = -ENOTTY;
|
||||
char *path, *vfio_dev_path = NULL, *vfio_path = NULL;
|
||||
g_autofree char *path = NULL;
|
||||
g_autofree char *vfio_dev_path = NULL;
|
||||
g_autofree char *vfio_path = NULL;
|
||||
DIR *dir = NULL;
|
||||
struct dirent *dent;
|
||||
gchar *contents;
|
||||
g_autofree gchar *contents = NULL;
|
||||
gsize length;
|
||||
int major, minor;
|
||||
dev_t vfio_devt;
|
||||
@ -130,7 +132,7 @@ static int iommufd_cdev_getfd(const char *sysfs_path, Error **errp)
|
||||
dir = opendir(path);
|
||||
if (!dir) {
|
||||
error_setg_errno(errp, errno, "couldn't open directory %s", path);
|
||||
goto out_free_path;
|
||||
goto out;
|
||||
}
|
||||
|
||||
while ((dent = readdir(dir))) {
|
||||
@ -147,14 +149,13 @@ static int iommufd_cdev_getfd(const char *sysfs_path, Error **errp)
|
||||
|
||||
if (!g_file_get_contents(vfio_dev_path, &contents, &length, NULL)) {
|
||||
error_setg(errp, "failed to load \"%s\"", vfio_dev_path);
|
||||
goto out_free_dev_path;
|
||||
goto out_close_dir;
|
||||
}
|
||||
|
||||
if (sscanf(contents, "%d:%d", &major, &minor) != 2) {
|
||||
error_setg(errp, "failed to get major:minor for \"%s\"", vfio_dev_path);
|
||||
goto out_free_dev_path;
|
||||
goto out_close_dir;
|
||||
}
|
||||
g_free(contents);
|
||||
vfio_devt = makedev(major, minor);
|
||||
|
||||
vfio_path = g_strdup_printf("/dev/vfio/devices/%s", dent->d_name);
|
||||
@ -164,17 +165,13 @@ static int iommufd_cdev_getfd(const char *sysfs_path, Error **errp)
|
||||
}
|
||||
|
||||
trace_iommufd_cdev_getfd(vfio_path, ret);
|
||||
g_free(vfio_path);
|
||||
|
||||
out_free_dev_path:
|
||||
g_free(vfio_dev_path);
|
||||
out_close_dir:
|
||||
closedir(dir);
|
||||
out_free_path:
|
||||
out:
|
||||
if (*errp) {
|
||||
error_prepend(errp, VFIO_MSG_PREFIX, path);
|
||||
}
|
||||
g_free(path);
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
@ -78,6 +78,8 @@ extern const VMStateDescription vmstate_ecc_state;
|
||||
|
||||
/* m25p80.c */
|
||||
|
||||
#define TYPE_M25P80 "m25p80-generic"
|
||||
|
||||
BlockBackend *m25p80_get_blk(DeviceState *dev);
|
||||
|
||||
#endif
|
||||
|
Loading…
Reference in New Issue
Block a user