hyperv-fixes for 5.17-rc5
-----BEGIN PGP SIGNATURE----- iQFHBAABCAAxFiEEIbPD0id6easf0xsudhRwX5BBoF4FAmILjZgTHHdlaS5saXVA a2VybmVsLm9yZwAKCRB2FHBfkEGgXuPAB/96ls6ZaUrvAEseODu9N+qbCKCjqjGx LBqP5gzzG71LoFLlvvGp7quwDXkSlfzMmZM1oxBrsRN4TiexdQ4b9tR2jNqxUBS0 pR7efRpR4YN1TrvxCr0lgfbKV6F3EC4YqMwK2Tf7zMRkzAbMQmw500JTkAdtplUT opSZKlWt1Q66Iudz7vwz2e2D/NnAg03icB7lZUNulV1WTDfDfBUZyAphAnOqpty9 Y9UlVjFYSozOA6dv3HClYiJPjxhzUev88W/Sld81+2+gGCngWRT4a2OyUvCqNWXD P8EswLHuqECpkz6uxnbQOLDBgdiMXigtANNky/E4Za8r9MqpZT3+ueLf =/jBG -----END PGP SIGNATURE----- Merge tag 'hyperv-fixes-signed-20220215' of git://git.kernel.org/pub/scm/linux/kernel/git/hyperv/linux Pull hyperv fixes from Wei Liu: - Rework use of DMA_BIT_MASK in vmbus to work around a clang bug (Michael Kelley) - Fix NUMA topology (Long Li) - Fix a memory leak in vmbus (Miaoqian Lin) - One minor clean-up patch (Cai Huoqing) * tag 'hyperv-fixes-signed-20220215' of git://git.kernel.org/pub/scm/linux/kernel/git/hyperv/linux: Drivers: hv: utils: Make use of the helper macro LIST_HEAD() Drivers: hv: vmbus: Rework use of DMA_BIT_MASK(64) Drivers: hv: vmbus: Fix memory leak in vmbus_add_channel_kobj PCI: hv: Fix NUMA node assignment when kernel boots with custom NUMA topology
This commit is contained in:
commit
c24449b321
@ -13,7 +13,7 @@
|
||||
#include "hv_utils_transport.h"
|
||||
|
||||
static DEFINE_SPINLOCK(hvt_list_lock);
|
||||
static struct list_head hvt_list = LIST_HEAD_INIT(hvt_list);
|
||||
static LIST_HEAD(hvt_list);
|
||||
|
||||
static void hvt_reset(struct hvutil_transport *hvt)
|
||||
{
|
||||
|
@ -2028,8 +2028,10 @@ int vmbus_add_channel_kobj(struct hv_device *dev, struct vmbus_channel *channel)
|
||||
kobj->kset = dev->channels_kset;
|
||||
ret = kobject_init_and_add(kobj, &vmbus_chan_ktype, NULL,
|
||||
"%u", relid);
|
||||
if (ret)
|
||||
if (ret) {
|
||||
kobject_put(kobj);
|
||||
return ret;
|
||||
}
|
||||
|
||||
ret = sysfs_create_group(kobj, &vmbus_chan_group);
|
||||
|
||||
@ -2038,6 +2040,7 @@ int vmbus_add_channel_kobj(struct hv_device *dev, struct vmbus_channel *channel)
|
||||
* The calling functions' error handling paths will cleanup the
|
||||
* empty channel directory.
|
||||
*/
|
||||
kobject_put(kobj);
|
||||
dev_err(device, "Unable to set up channel sysfs files\n");
|
||||
return ret;
|
||||
}
|
||||
@ -2079,7 +2082,6 @@ struct hv_device *vmbus_device_create(const guid_t *type,
|
||||
return child_device_obj;
|
||||
}
|
||||
|
||||
static u64 vmbus_dma_mask = DMA_BIT_MASK(64);
|
||||
/*
|
||||
* vmbus_device_register - Register the child device
|
||||
*/
|
||||
@ -2120,8 +2122,9 @@ int vmbus_device_register(struct hv_device *child_device_obj)
|
||||
}
|
||||
hv_debug_add_dev_dir(child_device_obj);
|
||||
|
||||
child_device_obj->device.dma_mask = &vmbus_dma_mask;
|
||||
child_device_obj->device.dma_parms = &child_device_obj->dma_parms;
|
||||
child_device_obj->device.dma_mask = &child_device_obj->dma_mask;
|
||||
dma_set_mask(&child_device_obj->device, DMA_BIT_MASK(64));
|
||||
return 0;
|
||||
|
||||
err_kset_unregister:
|
||||
|
@ -2155,8 +2155,17 @@ static void hv_pci_assign_numa_node(struct hv_pcibus_device *hbus)
|
||||
if (!hv_dev)
|
||||
continue;
|
||||
|
||||
if (hv_dev->desc.flags & HV_PCI_DEVICE_FLAG_NUMA_AFFINITY)
|
||||
set_dev_node(&dev->dev, hv_dev->desc.virtual_numa_node);
|
||||
if (hv_dev->desc.flags & HV_PCI_DEVICE_FLAG_NUMA_AFFINITY &&
|
||||
hv_dev->desc.virtual_numa_node < num_possible_nodes())
|
||||
/*
|
||||
* The kernel may boot with some NUMA nodes offline
|
||||
* (e.g. in a KDUMP kernel) or with NUMA disabled via
|
||||
* "numa=off". In those cases, adjust the host provided
|
||||
* NUMA node to a valid NUMA node used by the kernel.
|
||||
*/
|
||||
set_dev_node(&dev->dev,
|
||||
numa_map_to_online_node(
|
||||
hv_dev->desc.virtual_numa_node));
|
||||
|
||||
put_pcichild(hv_dev);
|
||||
}
|
||||
|
@ -1262,6 +1262,7 @@ struct hv_device {
|
||||
struct vmbus_channel *channel;
|
||||
struct kset *channels_kset;
|
||||
struct device_dma_parameters dma_parms;
|
||||
u64 dma_mask;
|
||||
|
||||
/* place holder to keep track of the dir for hv device in debugfs */
|
||||
struct dentry *debug_dir;
|
||||
|
Loading…
Reference in New Issue
Block a user