* [PATCH v3 00/46] Rework matching of network devices to -nic options
@ 2024-01-08 20:26 David Woodhouse
2024-01-08 20:26 ` [PATCH v3 01/46] net: add qemu_{configure, create}_nic_device(), qemu_find_nic_info() David Woodhouse
` (46 more replies)
0 siblings, 47 replies; 105+ messages in thread
From: David Woodhouse @ 2024-01-08 20:26 UTC (permalink / raw)
To: qemu-devel
Cc: Richard Henderson, Beniamino Galvani, Peter Maydell,
Strahinja Jankovic, Niek Linnenbank, Cédric Le Goater,
Andrew Jeffery, Joel Stanley, Igor Mitsyanko,
Jean-Christophe Dubois, Andrey Smirnov,
Philippe Mathieu-Daudé, Rob Herring, Subbaraya Sundeep,
Jan Kiszka, Tyrone Ting, Hao Wu, Radoslaw Biernacki,
Leif Lindholm, Marcin Juszkiewicz, Edgar E. Iglesias,
Alistair Francis, Helge Deller, Paolo Bonzini, Eduardo Habkost,
Michael S. Tsirkin, Marcel Apfelbaum, Song Gao, Thomas Huth,
Laurent Vivier, Huacai Chen, Jiaxun Yang, Hervé Poussineau,
Aleksandar Rikalo, Aurelien Jarno, Jason Wang, Jia Liu,
Stafford Horne, Mark Cave-Ayland, Nicholas Piggin,
Daniel Henrique Barboza, David Gibson, Harsh Prateek Bora,
Bin Meng, Palmer Dabbelt, Weiwei Li, Liu Zhiwei, Halil Pasic,
Christian Borntraeger, Eric Farman, David Hildenbrand,
Ilya Leoshkevich, Yoshinori Sato, Magnus Damm, Artyom Tarasenko,
Stefano Stabellini, Anthony Perard, Paul Durrant, Max Filippov,
qemu-arm, qemu-ppc, qemu-riscv, qemu-s390x, xen-devel
Most platforms iterating directly over the nd_table[] are doing one of
two things. Either they are creating the NIC for their platform and want
to find a matching -nic configuration for it, if such exists. Or they
are only going to create that platform NIC if a matching config *does*
exist.
All of those can be converted to the new qemu_configure_nic_device()
and qemu_create_nic_device() functions. The latter of which will call
qdev_new() to create the device (and apply the config) if a matching
NIC config does exist for it. The existing behaviour of each platform
has been preserved for now, despite it being apparently fairly random.
PCI and indeed XenBus can use a qemu_create_nic_bus_devices() which will
create all NICs that live on a given bus type. That covers most
platforms, but some PCI platforms do something special with the first
NIC of a given type, placing it in the slot where it would have been on
the real hardware. There were various inconsistencies in the way the
platforms did so, and whether they cared what model the NIC was. Those
subtle behavioural changes I *have* allowed to change, and now the
pci_init_nic_slot() function will pick the first NIC that the user
specified which isn't explicitly *not* the default type, and put that
in the specified slot.
The tests for npcm7xx used to lament that they had to instantiate both
NICs even when they wanted to test only the second, because there was
no way to specify which hardware devices gets which configuration. I
made that untrue, by allowing 'emc0' and 'emc1' aliases, and fixed up
the test accordingly.
There are one or two special cases which want to do special things with
the MAC address of the primary NIC, to set up a system identification
(or force it to use an Apple OUI, in the case of m68k/q400). All those
work out relatively cleanly too.
And I can clean up the ugly patch which fixed up the Xen network device
handling, and replace it with a simple call to the new
qemu_create_nic_bus_devices() function.
I suspect that we can remove the pci_init_nic_devices() from platform
code and just do it later, except for platforms which *care* which
PCI bus the dynamic devices go on (is that just sun4u which puts its
primary NIC onto a different bus?).
Finally, while we're at it, clean up -nic model=help to only print
the device models which are actually usable on the given platform
rather than just listing them *all*.
And now we can make nd_table[] and nb_nics static in net/net.c because
nothing else has any business poking at them directly.
v3: Rebase to 8.2
v2: Some build fixes after better coverage testing, revert the Xen fix
in this series because I'm putting the less invasive hack into 8.2
(hopefully).
David Woodhouse (46):
net: add qemu_{configure,create}_nic_device(), qemu_find_nic_info()
net: report list of available models according to platform
net: add qemu_create_nic_bus_devices()
hw/pci: add pci_init_nic_devices(), pci_init_nic_in_slot()
hw/i386/pc: use qemu_get_nic_info() and pci_init_nic_devices()
hw/xen: use qemu_create_nic_bus_devices() to instantiate Xen NICs
hw/alpha/dp264: use pci_init_nic_devices()
hw/arm/sbsa-ref: use pci_init_nic_devices()
hw/arm/virt: use pci_init_nic_devices()
hw/hppa: use pci_init_nic_devices()
hw/loongarch: use pci_init_nic_devices()
hw/mips/fuloong2e: use pci_init_nic_devices()
hw/mips/malta: use pci_init_nic_devices()
hw/mips/loongson3_virt: use pci_init_nic_devices()
hw/ppc/prep: use pci_init_nic_devices()
hw/ppc/spapr: use qemu_get_nic_info() and pci_init_nic_devices()
hw/ppc: use pci_init_nic_devices()
hw/sh4/r2d: use pci_init_nic_devices()
hw/sparc64/sun4u: use pci_init_nic_devices()
hw/xtensa/virt: use pci_init_nic_devices()
hw/arm/allwinner: use qemu_configure_nic_device()
hw/arm/aspeed: use qemu_configure_nic_device()
hw/arm/exynos4: use qemu_create_nic_device()
hw/arm/fsl: use qemu_configure_nic_device()
hw/net/smc91c111: use qemu_configure_nic_device()
hw/net/lan9118: use qemu_configure_nic_device()
hw/arm/highbank: use qemu_create_nic_device()
hw/arm/npcm7xx: use qemu_configure_nic_device, allow emc0/emc1 as aliases
hw/arm/stellaris: use qemu_find_nic_info()
hw/arm: use qemu_configure_nic_device()
hw/net/etraxfs-eth: use qemu_configure_nic_device()
hw/m68k/mcf5208: use qemu_create_nic_device()
hw/m68k/q800: use qemu_find_nic_info()
hw/microblaze: use qemu_configure_nic_device()
hw/mips/mipssim: use qemu_create_nic_device()
hw/mips/jazz: use qemu_find_nic_info()
hw/net/lasi_i82596: use qemu_configure_nic_device()
hw/openrisc/openrisc_sim: use qemu_create_nic_device()
hw/riscv: use qemu_configure_nic_device()
hw/s390x/s390-virtio-ccw: use qemu_create_nic_device()
hw/sparc/sun4m: use qemu_find_nic_info()
hw/xtensa/xtfpga: use qemu_create_nic_device()
net: remove qemu_check_nic_model()
hw/pci: remove pci_nic_init_nofail()
net: remove qemu_show_nic_models(), qemu_find_nic_model()
net: make nb_nics and nd_table[] static in net/net.c
hw/alpha/dp264.c | 4 +-
hw/arm/allwinner-a10.c | 6 +-
hw/arm/allwinner-h3.c | 6 +-
hw/arm/allwinner-r40.c | 27 +---
hw/arm/aspeed.c | 9 +-
hw/arm/exynos4_boards.c | 6 +-
hw/arm/fsl-imx25.c | 2 +-
hw/arm/fsl-imx6.c | 2 +-
hw/arm/fsl-imx6ul.c | 2 +-
hw/arm/fsl-imx7.c | 2 +-
hw/arm/gumstix.c | 6 +-
hw/arm/highbank.c | 12 +-
hw/arm/integratorcp.c | 5 +-
hw/arm/kzm.c | 4 +-
hw/arm/mainstone.c | 3 +-
hw/arm/mps2-tz.c | 8 +-
hw/arm/mps2.c | 2 +-
hw/arm/msf2-soc.c | 6 +-
hw/arm/musicpal.c | 3 +-
hw/arm/npcm7xx.c | 16 +-
hw/arm/realview.c | 25 ++-
hw/arm/sbsa-ref.c | 4 +-
hw/arm/stellaris.c | 30 +++-
hw/arm/versatilepb.c | 15 +-
hw/arm/vexpress.c | 4 +-
hw/arm/virt.c | 4 +-
hw/arm/xilinx_zynq.c | 11 +-
hw/arm/xlnx-versal.c | 7 +-
hw/arm/xlnx-zynqmp.c | 8 +-
hw/cris/axis_dev88.c | 9 +-
hw/hppa/machine.c | 7 +-
hw/i386/pc.c | 33 ++--
hw/i386/pc_piix.c | 2 +-
hw/i386/pc_q35.c | 2 +-
hw/loongarch/virt.c | 4 +-
hw/m68k/mcf5208.c | 19 +--
hw/m68k/q800.c | 29 ++--
hw/microblaze/petalogix_ml605_mmu.c | 3 +-
hw/microblaze/petalogix_s3adsp1800_mmu.c | 3 +-
hw/mips/fuloong2e.c | 16 +-
hw/mips/jazz.c | 15 +-
hw/mips/loongson3_virt.c | 4 +-
hw/mips/malta.c | 15 +-
hw/mips/mipssim.c | 13 +-
hw/net/etraxfs_eth.c | 5 +-
hw/net/lan9118.c | 5 +-
hw/net/lasi_i82596.c | 3 +-
hw/net/smc91c111.c | 5 +-
hw/openrisc/openrisc_sim.c | 18 +--
hw/pci/pci.c | 73 +++------
hw/ppc/e500.c | 4 +-
hw/ppc/mac_newworld.c | 4 +-
hw/ppc/mac_oldworld.c | 4 +-
hw/ppc/ppc440_bamboo.c | 14 +-
hw/ppc/prep.c | 8 +-
hw/ppc/spapr.c | 18 +--
hw/riscv/microchip_pfsoc.c | 14 +-
hw/riscv/sifive_u.c | 7 +-
hw/s390x/s390-virtio-ccw.c | 11 +-
hw/sh4/r2d.c | 6 +-
hw/sparc/sun4m.c | 20 ++-
hw/sparc64/sun4u.c | 27 +---
hw/xen/xen-bus.c | 6 +-
hw/xen/xen_devconfig.c | 25 ---
hw/xenpv/xen_machine_pv.c | 9 --
hw/xtensa/virt.c | 4 +-
hw/xtensa/xtfpga.c | 13 +-
include/hw/cris/etraxfs.h | 2 +-
include/hw/i386/pc.h | 4 +-
include/hw/net/lan9118.h | 2 +-
include/hw/net/ne2000-isa.h | 2 -
include/hw/net/smc91c111.h | 2 +-
include/hw/pci/pci.h | 7 +-
include/hw/xen/xen-bus.h | 2 +-
include/hw/xen/xen-legacy-backend.h | 1 -
include/net/net.h | 18 +--
net/net.c | 253 +++++++++++++++++++++++++------
system/globals.c | 2 -
tests/qtest/npcm7xx_emc-test.c | 18 +--
79 files changed, 479 insertions(+), 550 deletions(-)
^ permalink raw reply [flat|nested] 105+ messages in thread
* [PATCH v3 01/46] net: add qemu_{configure, create}_nic_device(), qemu_find_nic_info()
2024-01-08 20:26 [PATCH v3 00/46] Rework matching of network devices to -nic options David Woodhouse
@ 2024-01-08 20:26 ` David Woodhouse
2024-01-26 11:10 ` Thomas Huth
2024-01-26 14:43 ` Peter Maydell
2024-01-08 20:26 ` [PATCH v3 02/46] net: report list of available models according to platform David Woodhouse
` (45 subsequent siblings)
46 siblings, 2 replies; 105+ messages in thread
From: David Woodhouse @ 2024-01-08 20:26 UTC (permalink / raw)
To: qemu-devel
Cc: Richard Henderson, Beniamino Galvani, Peter Maydell,
Strahinja Jankovic, Niek Linnenbank, Cédric Le Goater,
Andrew Jeffery, Joel Stanley, Igor Mitsyanko,
Jean-Christophe Dubois, Andrey Smirnov,
Philippe Mathieu-Daudé, Rob Herring, Subbaraya Sundeep,
Jan Kiszka, Tyrone Ting, Hao Wu, Radoslaw Biernacki,
Leif Lindholm, Marcin Juszkiewicz, Edgar E. Iglesias,
Alistair Francis, Helge Deller, Paolo Bonzini, Eduardo Habkost,
Michael S. Tsirkin, Marcel Apfelbaum, Song Gao, Thomas Huth,
Laurent Vivier, Huacai Chen, Jiaxun Yang, Hervé Poussineau,
Aleksandar Rikalo, Aurelien Jarno, Jason Wang, Jia Liu,
Stafford Horne, Mark Cave-Ayland, Nicholas Piggin,
Daniel Henrique Barboza, David Gibson, Harsh Prateek Bora,
Bin Meng, Palmer Dabbelt, Weiwei Li, Liu Zhiwei, Halil Pasic,
Christian Borntraeger, Eric Farman, David Hildenbrand,
Ilya Leoshkevich, Yoshinori Sato, Magnus Damm, Artyom Tarasenko,
Stefano Stabellini, Anthony Perard, Paul Durrant, Max Filippov,
qemu-arm, qemu-ppc, qemu-riscv, qemu-s390x, xen-devel,
David Woodhouse
From: David Woodhouse <dwmw@amazon.co.uk>
Most code which directly accesses nd_table[] and nb_nics uses them for
one of two things. Either "I have created a NIC device and I'd like a
configuration for it", or "I will create a NIC device *if* there is a
configuration for it". With some variants on the theme around whether
they actually *check* if the model specified in the configuration is
the right one.
Provide functions which perform both of those, allowing platforms to
be a little more consistent and as a step towards making nd_table[]
and nb_nics private to the net code.
Also export the qemu_find_nic_info() helper, as some platforms have
special cases they need to handle.
Signed-off-by: David Woodhouse <dwmw@amazon.co.uk>
Reviewed-by: Paul Durrant <paul@xen.org>
---
include/net/net.h | 7 ++++++-
net/net.c | 51 +++++++++++++++++++++++++++++++++++++++++++++++
2 files changed, 57 insertions(+), 1 deletion(-)
diff --git a/include/net/net.h b/include/net/net.h
index ffbd2c8d56..25ea83fd12 100644
--- a/include/net/net.h
+++ b/include/net/net.h
@@ -207,7 +207,12 @@ int qemu_show_nic_models(const char *arg, const char *const *models);
void qemu_check_nic_model(NICInfo *nd, const char *model);
int qemu_find_nic_model(NICInfo *nd, const char * const *models,
const char *default_model);
-
+NICInfo *qemu_find_nic_info(const char *typename, bool match_default,
+ const char *alias);
+bool qemu_configure_nic_device(DeviceState *dev, bool match_default,
+ const char *alias);
+DeviceState *qemu_create_nic_device(const char *typename, bool match_default,
+ const char *alias);
void print_net_client(Monitor *mon, NetClientState *nc);
void net_socket_rs_init(SocketReadState *rs,
SocketReadStateFinalize *finalize,
diff --git a/net/net.c b/net/net.c
index 0520bc1681..aeb7f573fc 100644
--- a/net/net.c
+++ b/net/net.c
@@ -1087,6 +1087,57 @@ static int net_init_nic(const Netdev *netdev, const char *name,
return idx;
}
+NICInfo *qemu_find_nic_info(const char *typename, bool match_default,
+ const char *alias)
+{
+ NICInfo *nd;
+ int i;
+
+ for (i = 0; i < nb_nics; i++) {
+ nd = &nd_table[i];
+
+ if (!nd->used || nd->instantiated) {
+ continue;
+ }
+
+ if ((match_default && !nd->model) || !g_strcmp0(nd->model, typename)
+ || (alias && !g_strcmp0(nd->model, alias))) {
+ return nd;
+ }
+ }
+ return NULL;
+}
+
+
+/* "I have created a device. Please configure it if you can" */
+bool qemu_configure_nic_device(DeviceState *dev, bool match_default,
+ const char *alias)
+{
+ NICInfo *nd = qemu_find_nic_info(object_get_typename(OBJECT(dev)),
+ match_default, alias);
+
+ if (nd) {
+ qdev_set_nic_properties(dev, nd);
+ return true;
+ }
+ return false;
+}
+
+/* "Please create a device, if you have a configuration for it" */
+DeviceState *qemu_create_nic_device(const char *typename, bool match_default,
+ const char *alias)
+{
+ NICInfo *nd = qemu_find_nic_info(typename, match_default, alias);
+ DeviceState *dev;
+
+ if (!nd) {
+ return NULL;
+ }
+
+ dev = qdev_new(typename);
+ qdev_set_nic_properties(dev, nd);
+ return dev;
+}
static int (* const net_client_init_fun[NET_CLIENT_DRIVER__MAX])(
const Netdev *netdev,
--
2.41.0
^ permalink raw reply related [flat|nested] 105+ messages in thread
* [PATCH v3 02/46] net: report list of available models according to platform
2024-01-08 20:26 [PATCH v3 00/46] Rework matching of network devices to -nic options David Woodhouse
2024-01-08 20:26 ` [PATCH v3 01/46] net: add qemu_{configure, create}_nic_device(), qemu_find_nic_info() David Woodhouse
@ 2024-01-08 20:26 ` David Woodhouse
2024-01-26 14:33 ` Thomas Huth
2024-01-08 20:26 ` [PATCH v3 03/46] net: add qemu_create_nic_bus_devices() David Woodhouse
` (44 subsequent siblings)
46 siblings, 1 reply; 105+ messages in thread
From: David Woodhouse @ 2024-01-08 20:26 UTC (permalink / raw)
To: qemu-devel
Cc: Richard Henderson, Beniamino Galvani, Peter Maydell,
Strahinja Jankovic, Niek Linnenbank, Cédric Le Goater,
Andrew Jeffery, Joel Stanley, Igor Mitsyanko,
Jean-Christophe Dubois, Andrey Smirnov,
Philippe Mathieu-Daudé, Rob Herring, Subbaraya Sundeep,
Jan Kiszka, Tyrone Ting, Hao Wu, Radoslaw Biernacki,
Leif Lindholm, Marcin Juszkiewicz, Edgar E. Iglesias,
Alistair Francis, Helge Deller, Paolo Bonzini, Eduardo Habkost,
Michael S. Tsirkin, Marcel Apfelbaum, Song Gao, Thomas Huth,
Laurent Vivier, Huacai Chen, Jiaxun Yang, Hervé Poussineau,
Aleksandar Rikalo, Aurelien Jarno, Jason Wang, Jia Liu,
Stafford Horne, Mark Cave-Ayland, Nicholas Piggin,
Daniel Henrique Barboza, David Gibson, Harsh Prateek Bora,
Bin Meng, Palmer Dabbelt, Weiwei Li, Liu Zhiwei, Halil Pasic,
Christian Borntraeger, Eric Farman, David Hildenbrand,
Ilya Leoshkevich, Yoshinori Sato, Magnus Damm, Artyom Tarasenko,
Stefano Stabellini, Anthony Perard, Paul Durrant, Max Filippov,
qemu-arm, qemu-ppc, qemu-riscv, qemu-s390x, xen-devel,
David Woodhouse
From: David Woodhouse <dwmw@amazon.co.uk>
By noting the models for which a configuration was requested, we can give
the user an accurate list of which NIC models were actually available on
the platform/configuration that was otherwise chosen.
Signed-off-by: David Woodhouse <dwmw@amazon.co.uk>
Reviewed-by: Paul Durrant <paul@xen.org>
---
net/net.c | 94 +++++++++++++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 94 insertions(+)
diff --git a/net/net.c b/net/net.c
index aeb7f573fc..962904eaef 100644
--- a/net/net.c
+++ b/net/net.c
@@ -75,6 +75,8 @@ typedef QSIMPLEQ_HEAD(, NetdevQueueEntry) NetdevQueue;
static NetdevQueue nd_queue = QSIMPLEQ_HEAD_INITIALIZER(nd_queue);
+static GHashTable *nic_model_help;
+
/***********************************************************/
/* network device redirectors */
@@ -1087,12 +1089,94 @@ static int net_init_nic(const Netdev *netdev, const char *name,
return idx;
}
+static gboolean add_nic_result(gpointer key, gpointer value, gpointer user_data)
+{
+ GPtrArray *results = user_data;
+ GPtrArray *alias_list = value;
+ const char *model = key;
+ char *result;
+
+ if (!alias_list) {
+ result = g_strdup(model);
+ } else {
+ GString *result_str = g_string_new(model);
+ int i;
+
+ g_string_append(result_str, " (aka ");
+ for (i = 0; i < alias_list->len; i++) {
+ if (i) {
+ g_string_append(result_str, ", ");
+ }
+ g_string_append(result_str, alias_list->pdata[i]);
+ }
+ g_string_append(result_str, ")");
+ result = result_str->str;
+ g_string_free(result_str, false);
+ g_ptr_array_unref(alias_list);
+ }
+ g_ptr_array_add(results, result);
+ return true;
+}
+
+static int model_cmp(char **a, char **b)
+{
+ return strcmp(*a, *b);
+}
+
+static void show_nic_models(void)
+{
+ GPtrArray *results = g_ptr_array_new();
+ int i;
+
+ g_hash_table_foreach_remove(nic_model_help, add_nic_result, results);
+ g_ptr_array_sort(results, (GCompareFunc)model_cmp);
+
+ printf("Available NIC models for this configuration:\n");
+ for (i = 0 ; i < results->len; i++) {
+ printf("%s\n", (char *)results->pdata[i]);
+ }
+ g_hash_table_unref(nic_model_help);
+ nic_model_help = NULL;
+}
+
+static void add_nic_model_help(const char *model, const char *alias)
+{
+ GPtrArray *alias_list = NULL;
+
+ if (g_hash_table_lookup_extended(nic_model_help, model, NULL,
+ (gpointer *)&alias_list)) {
+ /* Already exists, no alias to add: return */
+ if (!alias) {
+ return;
+ }
+ if (alias_list) {
+ /* Check if this alias is already in the list. Add if not. */
+ if (!g_ptr_array_find_with_equal_func(alias_list, alias,
+ g_str_equal, NULL)) {
+ g_ptr_array_add(alias_list, g_strdup(alias));
+ }
+ return;
+ }
+ }
+ /* Either this model wasn't in the list already, or a first alias added */
+ if (alias) {
+ alias_list = g_ptr_array_new();
+ g_ptr_array_set_free_func(alias_list, g_free);
+ g_ptr_array_add(alias_list, g_strdup(alias));
+ }
+ g_hash_table_replace(nic_model_help, g_strdup(model), alias_list);
+}
+
NICInfo *qemu_find_nic_info(const char *typename, bool match_default,
const char *alias)
{
NICInfo *nd;
int i;
+ if (nic_model_help) {
+ add_nic_model_help(typename, alias);
+ }
+
for (i = 0; i < nb_nics; i++) {
nd = &nd_table[i];
@@ -1606,6 +1690,10 @@ void net_check_clients(void)
NetClientState *nc;
int i;
+ if (nic_model_help) {
+ show_nic_models();
+ exit(0);
+ }
net_hub_check_clients();
QTAILQ_FOREACH(nc, &net_clients, next) {
@@ -1685,6 +1773,12 @@ static int net_param_nic(void *dummy, QemuOpts *opts, Error **errp)
memset(ni, 0, sizeof(*ni));
ni->model = qemu_opt_get_del(opts, "model");
+ if (!nic_model_help && !g_strcmp0(ni->model, "help")) {
+ nic_model_help = g_hash_table_new_full(g_str_hash, g_str_equal,
+ g_free, NULL);
+ return 0;
+ }
+
/* Create an ID if the user did not specify one */
nd_id = g_strdup(qemu_opts_id(opts));
if (!nd_id) {
--
2.41.0
^ permalink raw reply related [flat|nested] 105+ messages in thread
* [PATCH v3 03/46] net: add qemu_create_nic_bus_devices()
2024-01-08 20:26 [PATCH v3 00/46] Rework matching of network devices to -nic options David Woodhouse
2024-01-08 20:26 ` [PATCH v3 01/46] net: add qemu_{configure, create}_nic_device(), qemu_find_nic_info() David Woodhouse
2024-01-08 20:26 ` [PATCH v3 02/46] net: report list of available models according to platform David Woodhouse
@ 2024-01-08 20:26 ` David Woodhouse
2024-01-26 14:41 ` Thomas Huth
2024-01-08 20:26 ` [PATCH v3 04/46] hw/pci: add pci_init_nic_devices(), pci_init_nic_in_slot() David Woodhouse
` (43 subsequent siblings)
46 siblings, 1 reply; 105+ messages in thread
From: David Woodhouse @ 2024-01-08 20:26 UTC (permalink / raw)
To: qemu-devel
Cc: Richard Henderson, Beniamino Galvani, Peter Maydell,
Strahinja Jankovic, Niek Linnenbank, Cédric Le Goater,
Andrew Jeffery, Joel Stanley, Igor Mitsyanko,
Jean-Christophe Dubois, Andrey Smirnov,
Philippe Mathieu-Daudé, Rob Herring, Subbaraya Sundeep,
Jan Kiszka, Tyrone Ting, Hao Wu, Radoslaw Biernacki,
Leif Lindholm, Marcin Juszkiewicz, Edgar E. Iglesias,
Alistair Francis, Helge Deller, Paolo Bonzini, Eduardo Habkost,
Michael S. Tsirkin, Marcel Apfelbaum, Song Gao, Thomas Huth,
Laurent Vivier, Huacai Chen, Jiaxun Yang, Hervé Poussineau,
Aleksandar Rikalo, Aurelien Jarno, Jason Wang, Jia Liu,
Stafford Horne, Mark Cave-Ayland, Nicholas Piggin,
Daniel Henrique Barboza, David Gibson, Harsh Prateek Bora,
Bin Meng, Palmer Dabbelt, Weiwei Li, Liu Zhiwei, Halil Pasic,
Christian Borntraeger, Eric Farman, David Hildenbrand,
Ilya Leoshkevich, Yoshinori Sato, Magnus Damm, Artyom Tarasenko,
Stefano Stabellini, Anthony Perard, Paul Durrant, Max Filippov,
qemu-arm, qemu-ppc, qemu-riscv, qemu-s390x, xen-devel,
David Woodhouse
From: David Woodhouse <dwmw@amazon.co.uk>
This will instantiate any NICs which live on a given bus type. Each bus
is allowed *one* substitution (for PCI it's virtio → virtio-net-pci, for
Xen it's xen → xen-net-device; no point in overengineering it unless we
actually want more).
Signed-off-by: David Woodhouse <dwmw@amazon.co.uk>
Reviewed-by: Paul Durrant <paul@xen.org>
---
include/net/net.h | 3 +++
net/net.c | 53 +++++++++++++++++++++++++++++++++++++++++++++++
2 files changed, 56 insertions(+)
diff --git a/include/net/net.h b/include/net/net.h
index 25ea83fd12..31e63d1f0d 100644
--- a/include/net/net.h
+++ b/include/net/net.h
@@ -213,6 +213,9 @@ bool qemu_configure_nic_device(DeviceState *dev, bool match_default,
const char *alias);
DeviceState *qemu_create_nic_device(const char *typename, bool match_default,
const char *alias);
+void qemu_create_nic_bus_devices(BusState *bus, const char *parent_type,
+ const char *default_model,
+ const char *alias, const char *alias_target);
void print_net_client(Monitor *mon, NetClientState *nc);
void net_socket_rs_init(SocketReadState *rs,
SocketReadStateFinalize *finalize,
diff --git a/net/net.c b/net/net.c
index 962904eaef..4651b3f443 100644
--- a/net/net.c
+++ b/net/net.c
@@ -1223,6 +1223,59 @@ DeviceState *qemu_create_nic_device(const char *typename, bool match_default,
return dev;
}
+void qemu_create_nic_bus_devices(BusState *bus, const char *parent_type,
+ const char *default_model,
+ const char *alias, const char *alias_target)
+{
+ GPtrArray *nic_models = qemu_get_nic_models(parent_type);
+ const char *model;
+ DeviceState *dev;
+ NICInfo *nd;
+ int i;
+
+ if (nic_model_help) {
+ if (alias_target) {
+ add_nic_model_help(alias_target, alias);
+ }
+ for (i = 0; i < nic_models->len - 1; i++) {
+ add_nic_model_help(nic_models->pdata[i], NULL);
+ }
+ }
+
+ /* Drop the NULL terminator which would make g_str_equal() unhappy */
+ nic_models->len--;
+
+ for (i = 0; i < nb_nics; i++) {
+ nd = &nd_table[i];
+
+ if (!nd->used || nd->instantiated) {
+ continue;
+ }
+
+ model = nd->model ? nd->model : default_model;
+ if (!model) {
+ continue;
+ }
+
+ /* Each bus type is allowed *one* substitution */
+ if (g_str_equal(model, alias)) {
+ model = alias_target;
+ }
+
+ if (!g_ptr_array_find_with_equal_func(nic_models, model,
+ g_str_equal, NULL)) {
+ /* This NIC does not live on this bus. */
+ continue;
+ }
+
+ dev = qdev_new(model);
+ qdev_set_nic_properties(dev, nd);
+ qdev_realize_and_unref(dev, bus, &error_fatal);
+ }
+
+ g_ptr_array_free(nic_models, true);
+}
+
static int (* const net_client_init_fun[NET_CLIENT_DRIVER__MAX])(
const Netdev *netdev,
const char *name,
--
2.41.0
^ permalink raw reply related [flat|nested] 105+ messages in thread
* [PATCH v3 04/46] hw/pci: add pci_init_nic_devices(), pci_init_nic_in_slot()
2024-01-08 20:26 [PATCH v3 00/46] Rework matching of network devices to -nic options David Woodhouse
` (2 preceding siblings ...)
2024-01-08 20:26 ` [PATCH v3 03/46] net: add qemu_create_nic_bus_devices() David Woodhouse
@ 2024-01-08 20:26 ` David Woodhouse
2024-01-08 20:26 ` [PATCH v3 05/46] hw/i386/pc: use qemu_get_nic_info() and pci_init_nic_devices() David Woodhouse
` (42 subsequent siblings)
46 siblings, 0 replies; 105+ messages in thread
From: David Woodhouse @ 2024-01-08 20:26 UTC (permalink / raw)
To: qemu-devel
Cc: Richard Henderson, Beniamino Galvani, Peter Maydell,
Strahinja Jankovic, Niek Linnenbank, Cédric Le Goater,
Andrew Jeffery, Joel Stanley, Igor Mitsyanko,
Jean-Christophe Dubois, Andrey Smirnov,
Philippe Mathieu-Daudé, Rob Herring, Subbaraya Sundeep,
Jan Kiszka, Tyrone Ting, Hao Wu, Radoslaw Biernacki,
Leif Lindholm, Marcin Juszkiewicz, Edgar E. Iglesias,
Alistair Francis, Helge Deller, Paolo Bonzini, Eduardo Habkost,
Michael S. Tsirkin, Marcel Apfelbaum, Song Gao, Thomas Huth,
Laurent Vivier, Huacai Chen, Jiaxun Yang, Hervé Poussineau,
Aleksandar Rikalo, Aurelien Jarno, Jason Wang, Jia Liu,
Stafford Horne, Mark Cave-Ayland, Nicholas Piggin,
Daniel Henrique Barboza, David Gibson, Harsh Prateek Bora,
Bin Meng, Palmer Dabbelt, Weiwei Li, Liu Zhiwei, Halil Pasic,
Christian Borntraeger, Eric Farman, David Hildenbrand,
Ilya Leoshkevich, Yoshinori Sato, Magnus Damm, Artyom Tarasenko,
Stefano Stabellini, Anthony Perard, Paul Durrant, Max Filippov,
qemu-arm, qemu-ppc, qemu-riscv, qemu-s390x, xen-devel,
David Woodhouse
From: David Woodhouse <dwmw@amazon.co.uk>
The loop over nd_table[] to add PCI NICs is repeated in quite a few
places. Add a helper function to do it.
Some platforms also try to instantiate a specific model in a specific
slot, to match the real hardware. Add pci_init_nic_in_slot() for that
purpose.
Signed-off-by: David Woodhouse <dwmw@amazon.co.uk>
Reviewed-by: Paul Durrant <paul@xen.org>
---
hw/pci/pci.c | 45 ++++++++++++++++++++++++++++++++++++++++++++
include/hw/pci/pci.h | 4 +++-
2 files changed, 48 insertions(+), 1 deletion(-)
diff --git a/hw/pci/pci.c b/hw/pci/pci.c
index 76080af580..5849606f66 100644
--- a/hw/pci/pci.c
+++ b/hw/pci/pci.c
@@ -1925,6 +1925,51 @@ PCIDevice *pci_nic_init_nofail(NICInfo *nd, PCIBus *rootbus,
return pci_dev;
}
+void pci_init_nic_devices(PCIBus *bus, const char *default_model)
+{
+ qemu_create_nic_bus_devices(&bus->qbus, TYPE_PCI_DEVICE, default_model,
+ "virtio", "virtio-net-pci");
+}
+
+bool pci_init_nic_in_slot(PCIBus *rootbus, const char *model,
+ const char *alias, const char *devaddr)
+{
+ NICInfo *nd = qemu_find_nic_info(model, true, alias);
+ int dom, busnr, devfn;
+ PCIDevice *pci_dev;
+ unsigned slot;
+ PCIBus *bus;
+
+ if (!nd) {
+ return false;
+ }
+
+ if (!devaddr || pci_parse_devaddr(devaddr, &dom, &busnr, &slot, NULL) < 0) {
+ error_report("Invalid PCI device address %s for device %s",
+ devaddr, model);
+ exit(1);
+ }
+
+ if (dom != 0) {
+ error_report("No support for non-zero PCI domains");
+ exit(1);
+ }
+
+ devfn = PCI_DEVFN(slot, 0);
+
+ bus = pci_find_bus_nr(rootbus, busnr);
+ if (!bus) {
+ error_report("Invalid PCI device address %s for device %s",
+ devaddr, model);
+ exit(1);
+ }
+
+ pci_dev = pci_new(devfn, model);
+ qdev_set_nic_properties(&pci_dev->qdev, nd);
+ pci_realize_and_unref(pci_dev, bus, &error_fatal);
+ return true;
+}
+
PCIDevice *pci_vga_init(PCIBus *bus)
{
vga_interface_created = true;
diff --git a/include/hw/pci/pci.h b/include/hw/pci/pci.h
index fa6313aabc..6ff0b95a02 100644
--- a/include/hw/pci/pci.h
+++ b/include/hw/pci/pci.h
@@ -317,7 +317,9 @@ void pci_device_reset(PCIDevice *dev);
PCIDevice *pci_nic_init_nofail(NICInfo *nd, PCIBus *rootbus,
const char *default_model,
const char *default_devaddr);
-
+void pci_init_nic_devices(PCIBus *bus, const char *default_model);
+bool pci_init_nic_in_slot(PCIBus *rootbus, const char *default_model,
+ const char *alias, const char *devaddr);
PCIDevice *pci_vga_init(PCIBus *bus);
static inline PCIBus *pci_get_bus(const PCIDevice *dev)
--
2.41.0
^ permalink raw reply related [flat|nested] 105+ messages in thread
* [PATCH v3 05/46] hw/i386/pc: use qemu_get_nic_info() and pci_init_nic_devices()
2024-01-08 20:26 [PATCH v3 00/46] Rework matching of network devices to -nic options David Woodhouse
` (3 preceding siblings ...)
2024-01-08 20:26 ` [PATCH v3 04/46] hw/pci: add pci_init_nic_devices(), pci_init_nic_in_slot() David Woodhouse
@ 2024-01-08 20:26 ` David Woodhouse
2024-01-26 10:43 ` Thomas Huth
2024-01-08 20:26 ` [PATCH v3 06/46] hw/xen: use qemu_create_nic_bus_devices() to instantiate Xen NICs David Woodhouse
` (41 subsequent siblings)
46 siblings, 1 reply; 105+ messages in thread
From: David Woodhouse @ 2024-01-08 20:26 UTC (permalink / raw)
To: qemu-devel
Cc: Richard Henderson, Beniamino Galvani, Peter Maydell,
Strahinja Jankovic, Niek Linnenbank, Cédric Le Goater,
Andrew Jeffery, Joel Stanley, Igor Mitsyanko,
Jean-Christophe Dubois, Andrey Smirnov,
Philippe Mathieu-Daudé, Rob Herring, Subbaraya Sundeep,
Jan Kiszka, Tyrone Ting, Hao Wu, Radoslaw Biernacki,
Leif Lindholm, Marcin Juszkiewicz, Edgar E. Iglesias,
Alistair Francis, Helge Deller, Paolo Bonzini, Eduardo Habkost,
Michael S. Tsirkin, Marcel Apfelbaum, Song Gao, Thomas Huth,
Laurent Vivier, Huacai Chen, Jiaxun Yang, Hervé Poussineau,
Aleksandar Rikalo, Aurelien Jarno, Jason Wang, Jia Liu,
Stafford Horne, Mark Cave-Ayland, Nicholas Piggin,
Daniel Henrique Barboza, David Gibson, Harsh Prateek Bora,
Bin Meng, Palmer Dabbelt, Weiwei Li, Liu Zhiwei, Halil Pasic,
Christian Borntraeger, Eric Farman, David Hildenbrand,
Ilya Leoshkevich, Yoshinori Sato, Magnus Damm, Artyom Tarasenko,
Stefano Stabellini, Anthony Perard, Paul Durrant, Max Filippov,
qemu-arm, qemu-ppc, qemu-riscv, qemu-s390x, xen-devel,
David Woodhouse
From: David Woodhouse <dwmw@amazon.co.uk>
Eliminate direct access to nd_table[] and nb_nics by processing the the
Xen and ISA NICs first and then calling pci_init_nic_devices() for the
rest.
Signed-off-by: David Woodhouse <dwmw@amazon.co.uk>
Reviewed-by: Paul Durrant <paul@xen.org>
---
hw/i386/pc.c | 26 ++++++++++++++++----------
include/hw/net/ne2000-isa.h | 2 --
2 files changed, 16 insertions(+), 12 deletions(-)
diff --git a/hw/i386/pc.c b/hw/i386/pc.c
index 496498df3a..d80c536d88 100644
--- a/hw/i386/pc.c
+++ b/hw/i386/pc.c
@@ -658,8 +658,11 @@ static void pc_init_ne2k_isa(ISABus *bus, NICInfo *nd)
{
static int nb_ne2k = 0;
- if (nb_ne2k == NE2000_NB_MAX)
+ if (nb_ne2k == NE2000_NB_MAX) {
+ error_setg(&error_fatal,
+ "maximum number of ISA NE2000 devices exceeded");
return;
+ }
isa_ne2000_init(bus, ne2000_io[nb_ne2k],
ne2000_irq[nb_ne2k], nd);
nb_ne2k++;
@@ -1297,23 +1300,26 @@ void pc_nic_init(PCMachineClass *pcmc, ISABus *isa_bus, PCIBus *pci_bus,
BusState *xen_bus)
{
MachineClass *mc = MACHINE_CLASS(pcmc);
- int i;
+ bool default_is_ne2k = g_str_equal(mc->default_nic, TYPE_ISA_NE2000);
+ NICInfo *nd;
rom_set_order_override(FW_CFG_ORDER_OVERRIDE_NIC);
- for (i = 0; i < nb_nics; i++) {
- NICInfo *nd = &nd_table[i];
- const char *model = nd->model ? nd->model : mc->default_nic;
- if (xen_bus && (!nd->model || g_str_equal(model, "xen-net-device"))) {
+ if (xen_bus) {
+ while (nc = qemu_find_nic_info("xen-net-device", true, NULL)) {
DeviceState *dev = qdev_new("xen-net-device");
qdev_set_nic_properties(dev, nd);
qdev_realize_and_unref(dev, xen_bus, &error_fatal);
- } else if (g_str_equal(model, "ne2k_isa")) {
- pc_init_ne2k_isa(isa_bus, nd);
- } else {
- pci_nic_init_nofail(nd, pci_bus, model, NULL);
}
}
+
+ while ((nd = qemu_find_nic_info(TYPE_ISA_NE2000, default_is_ne2k, NULL))) {
+ pc_init_ne2k_isa(isa_bus, nd);
+ }
+
+ /* Anything remaining should be a PCI NIC */
+ pci_init_nic_devices(pci_bus, mc->default_nic);
+
rom_reset_order_override();
}
diff --git a/include/hw/net/ne2000-isa.h b/include/hw/net/ne2000-isa.h
index af59ee0b02..73bae10ad1 100644
--- a/include/hw/net/ne2000-isa.h
+++ b/include/hw/net/ne2000-isa.h
@@ -22,8 +22,6 @@ static inline ISADevice *isa_ne2000_init(ISABus *bus, int base, int irq,
{
ISADevice *d;
- qemu_check_nic_model(nd, "ne2k_isa");
-
d = isa_try_new(TYPE_ISA_NE2000);
if (d) {
DeviceState *dev = DEVICE(d);
--
2.41.0
^ permalink raw reply related [flat|nested] 105+ messages in thread
* [PATCH v3 06/46] hw/xen: use qemu_create_nic_bus_devices() to instantiate Xen NICs
2024-01-08 20:26 [PATCH v3 00/46] Rework matching of network devices to -nic options David Woodhouse
` (4 preceding siblings ...)
2024-01-08 20:26 ` [PATCH v3 05/46] hw/i386/pc: use qemu_get_nic_info() and pci_init_nic_devices() David Woodhouse
@ 2024-01-08 20:26 ` David Woodhouse
2024-01-08 20:26 ` [PATCH v3 07/46] hw/alpha/dp264: use pci_init_nic_devices() David Woodhouse
` (40 subsequent siblings)
46 siblings, 0 replies; 105+ messages in thread
From: David Woodhouse @ 2024-01-08 20:26 UTC (permalink / raw)
To: qemu-devel
Cc: Richard Henderson, Beniamino Galvani, Peter Maydell,
Strahinja Jankovic, Niek Linnenbank, Cédric Le Goater,
Andrew Jeffery, Joel Stanley, Igor Mitsyanko,
Jean-Christophe Dubois, Andrey Smirnov,
Philippe Mathieu-Daudé, Rob Herring, Subbaraya Sundeep,
Jan Kiszka, Tyrone Ting, Hao Wu, Radoslaw Biernacki,
Leif Lindholm, Marcin Juszkiewicz, Edgar E. Iglesias,
Alistair Francis, Helge Deller, Paolo Bonzini, Eduardo Habkost,
Michael S. Tsirkin, Marcel Apfelbaum, Song Gao, Thomas Huth,
Laurent Vivier, Huacai Chen, Jiaxun Yang, Hervé Poussineau,
Aleksandar Rikalo, Aurelien Jarno, Jason Wang, Jia Liu,
Stafford Horne, Mark Cave-Ayland, Nicholas Piggin,
Daniel Henrique Barboza, David Gibson, Harsh Prateek Bora,
Bin Meng, Palmer Dabbelt, Weiwei Li, Liu Zhiwei, Halil Pasic,
Christian Borntraeger, Eric Farman, David Hildenbrand,
Ilya Leoshkevich, Yoshinori Sato, Magnus Damm, Artyom Tarasenko,
Stefano Stabellini, Anthony Perard, Paul Durrant, Max Filippov,
qemu-arm, qemu-ppc, qemu-riscv, qemu-s390x, xen-devel,
David Woodhouse
From: David Woodhouse <dwmw@amazon.co.uk>
When instantiating XenBus itself, for each NIC which is configured with
either the model unspecified, or set to to "xen" or "xen-net-device",
create a corresponding xen-net-device for it.
Now we can revert the previous more hackish version which relied on the
platform code explicitly registering the NICs on its own XenBus, having
returned the BusState* from xen_bus_init() itself.
This also fixes the setup for Xen PV guests, which was previously broken
in various ways and never actually managed to peer with the netdev.
Signed-off-by: David Woodhouse <dwmw@amazon.co.uk>
Reviewed-by: Paul Durrant <paul@xen.org>
---
hw/i386/pc.c | 13 ++-----------
hw/i386/pc_piix.c | 2 +-
hw/i386/pc_q35.c | 2 +-
hw/xen/xen-bus.c | 6 ++++--
hw/xen/xen_devconfig.c | 25 -------------------------
hw/xenpv/xen_machine_pv.c | 9 ---------
include/hw/i386/pc.h | 4 +---
include/hw/xen/xen-bus.h | 2 +-
include/hw/xen/xen-legacy-backend.h | 1 -
9 files changed, 10 insertions(+), 54 deletions(-)
diff --git a/hw/i386/pc.c b/hw/i386/pc.c
index d80c536d88..3d5e29ce22 100644
--- a/hw/i386/pc.c
+++ b/hw/i386/pc.c
@@ -1268,7 +1268,7 @@ void pc_basic_device_init(struct PCMachineState *pcms,
if (pcms->bus) {
pci_create_simple(pcms->bus, -1, "xen-platform");
}
- pcms->xenbus = xen_bus_init();
+ xen_bus_init();
xen_be_init();
}
#endif
@@ -1296,8 +1296,7 @@ void pc_basic_device_init(struct PCMachineState *pcms,
pcms->vmport != ON_OFF_AUTO_ON);
}
-void pc_nic_init(PCMachineClass *pcmc, ISABus *isa_bus, PCIBus *pci_bus,
- BusState *xen_bus)
+void pc_nic_init(PCMachineClass *pcmc, ISABus *isa_bus, PCIBus *pci_bus)
{
MachineClass *mc = MACHINE_CLASS(pcmc);
bool default_is_ne2k = g_str_equal(mc->default_nic, TYPE_ISA_NE2000);
@@ -1305,14 +1304,6 @@ void pc_nic_init(PCMachineClass *pcmc, ISABus *isa_bus, PCIBus *pci_bus,
rom_set_order_override(FW_CFG_ORDER_OVERRIDE_NIC);
- if (xen_bus) {
- while (nc = qemu_find_nic_info("xen-net-device", true, NULL)) {
- DeviceState *dev = qdev_new("xen-net-device");
- qdev_set_nic_properties(dev, nd);
- qdev_realize_and_unref(dev, xen_bus, &error_fatal);
- }
- }
-
while ((nd = qemu_find_nic_info(TYPE_ISA_NE2000, default_is_ne2k, NULL))) {
pc_init_ne2k_isa(isa_bus, nd);
}
diff --git a/hw/i386/pc_piix.c b/hw/i386/pc_piix.c
index 042c13cdbc..aaf2c2521f 100644
--- a/hw/i386/pc_piix.c
+++ b/hw/i386/pc_piix.c
@@ -342,7 +342,7 @@ static void pc_init1(MachineState *machine,
pc_basic_device_init(pcms, isa_bus, x86ms->gsi, rtc_state, true,
0x4);
- pc_nic_init(pcmc, isa_bus, pci_bus, pcms->xenbus);
+ pc_nic_init(pcmc, isa_bus, pci_bus);
if (pcmc->pci_enabled) {
pc_cmos_init(pcms, idebus[0], idebus[1], rtc_state);
diff --git a/hw/i386/pc_q35.c b/hw/i386/pc_q35.c
index f43d5142b8..7ca3f465e0 100644
--- a/hw/i386/pc_q35.c
+++ b/hw/i386/pc_q35.c
@@ -340,7 +340,7 @@ static void pc_q35_init(MachineState *machine)
/* the rest devices to which pci devfn is automatically assigned */
pc_vga_init(isa_bus, host_bus);
- pc_nic_init(pcmc, isa_bus, host_bus, pcms->xenbus);
+ pc_nic_init(pcmc, isa_bus, host_bus);
if (machine->nvdimms_state->is_enabled) {
nvdimm_init_acpi_state(machine->nvdimms_state, system_io,
diff --git a/hw/xen/xen-bus.c b/hw/xen/xen-bus.c
index 4973e7d9c9..fb82cc33e4 100644
--- a/hw/xen/xen-bus.c
+++ b/hw/xen/xen-bus.c
@@ -19,6 +19,7 @@
#include "qapi/error.h"
#include "qapi/qmp/qdict.h"
#include "sysemu/sysemu.h"
+#include "net/net.h"
#include "trace.h"
static char *xen_device_get_backend_path(XenDevice *xendev)
@@ -1133,7 +1134,7 @@ static void xen_register_types(void)
type_init(xen_register_types)
-BusState *xen_bus_init(void)
+void xen_bus_init(void)
{
DeviceState *dev = qdev_new(TYPE_XEN_BRIDGE);
BusState *bus = qbus_new(TYPE_XEN_BUS, dev, NULL);
@@ -1141,5 +1142,6 @@ BusState *xen_bus_init(void)
sysbus_realize_and_unref(SYS_BUS_DEVICE(dev), &error_fatal);
qbus_set_bus_hotplug_handler(bus);
- return bus;
+ qemu_create_nic_bus_devices(bus, TYPE_XEN_DEVICE, "xen-net-device",
+ "xen", "xen-net-device");
}
diff --git a/hw/xen/xen_devconfig.c b/hw/xen/xen_devconfig.c
index 3f77c675c6..2150869f60 100644
--- a/hw/xen/xen_devconfig.c
+++ b/hw/xen/xen_devconfig.c
@@ -46,31 +46,6 @@ static int xen_config_dev_all(char *fe, char *be)
/* ------------------------------------------------------------- */
-int xen_config_dev_nic(NICInfo *nic)
-{
- char fe[256], be[256];
- char mac[20];
- int vlan_id = -1;
-
- net_hub_id_for_client(nic->netdev, &vlan_id);
- snprintf(mac, sizeof(mac), "%02x:%02x:%02x:%02x:%02x:%02x",
- nic->macaddr.a[0], nic->macaddr.a[1], nic->macaddr.a[2],
- nic->macaddr.a[3], nic->macaddr.a[4], nic->macaddr.a[5]);
- xen_pv_printf(NULL, 1, "config nic %d: mac=\"%s\"\n", vlan_id, mac);
- xen_config_dev_dirs("vif", "qnic", vlan_id, fe, be, sizeof(fe));
-
- /* frontend */
- xenstore_write_int(fe, "handle", vlan_id);
- xenstore_write_str(fe, "mac", mac);
-
- /* backend */
- xenstore_write_int(be, "handle", vlan_id);
- xenstore_write_str(be, "mac", mac);
-
- /* common stuff */
- return xen_config_dev_all(fe, be);
-}
-
int xen_config_dev_vfb(int vdev, const char *type)
{
char fe[256], be[256];
diff --git a/hw/xenpv/xen_machine_pv.c b/hw/xenpv/xen_machine_pv.c
index 9f9f137f99..1130d1a147 100644
--- a/hw/xenpv/xen_machine_pv.c
+++ b/hw/xenpv/xen_machine_pv.c
@@ -32,8 +32,6 @@
static void xen_init_pv(MachineState *machine)
{
- int i;
-
setup_xen_backend_ops();
/* Initialize backend core & drivers */
@@ -62,13 +60,6 @@ static void xen_init_pv(MachineState *machine)
vga_interface_created = true;
}
- /* configure nics */
- for (i = 0; i < nb_nics; i++) {
- if (!nd_table[i].model || 0 != strcmp(nd_table[i].model, "xen"))
- continue;
- xen_config_dev_nic(nd_table + i);
- }
-
xen_bus_init();
/* config cleanup hook */
diff --git a/include/hw/i386/pc.h b/include/hw/i386/pc.h
index 916af29f7c..ec0e5efcb2 100644
--- a/include/hw/i386/pc.h
+++ b/include/hw/i386/pc.h
@@ -33,7 +33,6 @@ typedef struct PCMachineState {
/* Pointers to devices and objects: */
PCIBus *bus;
- BusState *xenbus;
I2CBus *smbus;
PFlashCFI01 *flash[2];
ISADevice *pcspk;
@@ -185,8 +184,7 @@ void pc_basic_device_init(struct PCMachineState *pcms,
void pc_cmos_init(PCMachineState *pcms,
BusState *ide0, BusState *ide1,
ISADevice *s);
-void pc_nic_init(PCMachineClass *pcmc, ISABus *isa_bus, PCIBus *pci_bus,
- BusState *xen_bus);
+void pc_nic_init(PCMachineClass *pcmc, ISABus *isa_bus, PCIBus *pci_bus);
void pc_i8259_create(ISABus *isa_bus, qemu_irq *i8259_irqs);
diff --git a/include/hw/xen/xen-bus.h b/include/hw/xen/xen-bus.h
index 334ddd1ff6..38d40afa37 100644
--- a/include/hw/xen/xen-bus.h
+++ b/include/hw/xen/xen-bus.h
@@ -75,7 +75,7 @@ struct XenBusClass {
OBJECT_DECLARE_TYPE(XenBus, XenBusClass,
XEN_BUS)
-BusState *xen_bus_init(void);
+void xen_bus_init(void);
void xen_device_backend_set_state(XenDevice *xendev,
enum xenbus_state state);
diff --git a/include/hw/xen/xen-legacy-backend.h b/include/hw/xen/xen-legacy-backend.h
index fc42146bc2..2cca174778 100644
--- a/include/hw/xen/xen-legacy-backend.h
+++ b/include/hw/xen/xen-legacy-backend.h
@@ -81,7 +81,6 @@ extern struct XenDevOps xen_usb_ops; /* xen-usb.c */
/* configuration (aka xenbus setup) */
void xen_config_cleanup(void);
-int xen_config_dev_nic(NICInfo *nic);
int xen_config_dev_vfb(int vdev, const char *type);
int xen_config_dev_vkbd(int vdev);
int xen_config_dev_console(int vdev);
--
2.41.0
^ permalink raw reply related [flat|nested] 105+ messages in thread
* [PATCH v3 07/46] hw/alpha/dp264: use pci_init_nic_devices()
2024-01-08 20:26 [PATCH v3 00/46] Rework matching of network devices to -nic options David Woodhouse
` (5 preceding siblings ...)
2024-01-08 20:26 ` [PATCH v3 06/46] hw/xen: use qemu_create_nic_bus_devices() to instantiate Xen NICs David Woodhouse
@ 2024-01-08 20:26 ` David Woodhouse
2024-01-26 15:28 ` Thomas Huth
2024-01-08 20:26 ` [PATCH v3 08/46] hw/arm/sbsa-ref: " David Woodhouse
` (39 subsequent siblings)
46 siblings, 1 reply; 105+ messages in thread
From: David Woodhouse @ 2024-01-08 20:26 UTC (permalink / raw)
To: qemu-devel
Cc: Richard Henderson, Beniamino Galvani, Peter Maydell,
Strahinja Jankovic, Niek Linnenbank, Cédric Le Goater,
Andrew Jeffery, Joel Stanley, Igor Mitsyanko,
Jean-Christophe Dubois, Andrey Smirnov,
Philippe Mathieu-Daudé, Rob Herring, Subbaraya Sundeep,
Jan Kiszka, Tyrone Ting, Hao Wu, Radoslaw Biernacki,
Leif Lindholm, Marcin Juszkiewicz, Edgar E. Iglesias,
Alistair Francis, Helge Deller, Paolo Bonzini, Eduardo Habkost,
Michael S. Tsirkin, Marcel Apfelbaum, Song Gao, Thomas Huth,
Laurent Vivier, Huacai Chen, Jiaxun Yang, Hervé Poussineau,
Aleksandar Rikalo, Aurelien Jarno, Jason Wang, Jia Liu,
Stafford Horne, Mark Cave-Ayland, Nicholas Piggin,
Daniel Henrique Barboza, David Gibson, Harsh Prateek Bora,
Bin Meng, Palmer Dabbelt, Weiwei Li, Liu Zhiwei, Halil Pasic,
Christian Borntraeger, Eric Farman, David Hildenbrand,
Ilya Leoshkevich, Yoshinori Sato, Magnus Damm, Artyom Tarasenko,
Stefano Stabellini, Anthony Perard, Paul Durrant, Max Filippov,
qemu-arm, qemu-ppc, qemu-riscv, qemu-s390x, xen-devel,
David Woodhouse
From: David Woodhouse <dwmw@amazon.co.uk>
Signed-off-by: David Woodhouse <dwmw@amazon.co.uk>
---
hw/alpha/dp264.c | 4 +---
1 file changed, 1 insertion(+), 3 deletions(-)
diff --git a/hw/alpha/dp264.c b/hw/alpha/dp264.c
index 03495e1e60..52a1fa310b 100644
--- a/hw/alpha/dp264.c
+++ b/hw/alpha/dp264.c
@@ -124,9 +124,7 @@ static void clipper_init(MachineState *machine)
pci_vga_init(pci_bus);
/* Network setup. e1000 is good enough, failing Tulip support. */
- for (i = 0; i < nb_nics; i++) {
- pci_nic_init_nofail(&nd_table[i], pci_bus, mc->default_nic, NULL);
- }
+ pci_init_nic_devices(pci_bus, mc->default_nic);
/* Super I/O */
isa_create_simple(isa_bus, TYPE_SMC37C669_SUPERIO);
--
2.41.0
^ permalink raw reply related [flat|nested] 105+ messages in thread
* [PATCH v3 08/46] hw/arm/sbsa-ref: use pci_init_nic_devices()
2024-01-08 20:26 [PATCH v3 00/46] Rework matching of network devices to -nic options David Woodhouse
` (6 preceding siblings ...)
2024-01-08 20:26 ` [PATCH v3 07/46] hw/alpha/dp264: use pci_init_nic_devices() David Woodhouse
@ 2024-01-08 20:26 ` David Woodhouse
2024-01-08 20:26 ` [PATCH v3 09/46] hw/arm/virt: " David Woodhouse
` (38 subsequent siblings)
46 siblings, 0 replies; 105+ messages in thread
From: David Woodhouse @ 2024-01-08 20:26 UTC (permalink / raw)
To: qemu-devel
Cc: Richard Henderson, Beniamino Galvani, Peter Maydell,
Strahinja Jankovic, Niek Linnenbank, Cédric Le Goater,
Andrew Jeffery, Joel Stanley, Igor Mitsyanko,
Jean-Christophe Dubois, Andrey Smirnov,
Philippe Mathieu-Daudé, Rob Herring, Subbaraya Sundeep,
Jan Kiszka, Tyrone Ting, Hao Wu, Radoslaw Biernacki,
Leif Lindholm, Marcin Juszkiewicz, Edgar E. Iglesias,
Alistair Francis, Helge Deller, Paolo Bonzini, Eduardo Habkost,
Michael S. Tsirkin, Marcel Apfelbaum, Song Gao, Thomas Huth,
Laurent Vivier, Huacai Chen, Jiaxun Yang, Hervé Poussineau,
Aleksandar Rikalo, Aurelien Jarno, Jason Wang, Jia Liu,
Stafford Horne, Mark Cave-Ayland, Nicholas Piggin,
Daniel Henrique Barboza, David Gibson, Harsh Prateek Bora,
Bin Meng, Palmer Dabbelt, Weiwei Li, Liu Zhiwei, Halil Pasic,
Christian Borntraeger, Eric Farman, David Hildenbrand,
Ilya Leoshkevich, Yoshinori Sato, Magnus Damm, Artyom Tarasenko,
Stefano Stabellini, Anthony Perard, Paul Durrant, Max Filippov,
qemu-arm, qemu-ppc, qemu-riscv, qemu-s390x, xen-devel,
David Woodhouse
From: David Woodhouse <dwmw@amazon.co.uk>
Signed-off-by: David Woodhouse <dwmw@amazon.co.uk>
Reviewed-by: Leif Lindholm <quic_llindhol@quicinc.com>
---
hw/arm/sbsa-ref.c | 4 +---
1 file changed, 1 insertion(+), 3 deletions(-)
diff --git a/hw/arm/sbsa-ref.c b/hw/arm/sbsa-ref.c
index 477dca0637..f0171176ea 100644
--- a/hw/arm/sbsa-ref.c
+++ b/hw/arm/sbsa-ref.c
@@ -671,9 +671,7 @@ static void create_pcie(SBSAMachineState *sms)
pci = PCI_HOST_BRIDGE(dev);
if (pci->bus) {
- for (i = 0; i < nb_nics; i++) {
- pci_nic_init_nofail(&nd_table[i], pci->bus, mc->default_nic, NULL);
- }
+ pci_init_nic_devices(pci->bus, mc->default_nic);
}
pci_create_simple(pci->bus, -1, "bochs-display");
--
2.41.0
^ permalink raw reply related [flat|nested] 105+ messages in thread
* [PATCH v3 09/46] hw/arm/virt: use pci_init_nic_devices()
2024-01-08 20:26 [PATCH v3 00/46] Rework matching of network devices to -nic options David Woodhouse
` (7 preceding siblings ...)
2024-01-08 20:26 ` [PATCH v3 08/46] hw/arm/sbsa-ref: " David Woodhouse
@ 2024-01-08 20:26 ` David Woodhouse
2024-01-26 15:30 ` Thomas Huth
2024-01-08 20:26 ` [PATCH v3 10/46] hw/hppa: " David Woodhouse
` (37 subsequent siblings)
46 siblings, 1 reply; 105+ messages in thread
From: David Woodhouse @ 2024-01-08 20:26 UTC (permalink / raw)
To: qemu-devel
Cc: Richard Henderson, Beniamino Galvani, Peter Maydell,
Strahinja Jankovic, Niek Linnenbank, Cédric Le Goater,
Andrew Jeffery, Joel Stanley, Igor Mitsyanko,
Jean-Christophe Dubois, Andrey Smirnov,
Philippe Mathieu-Daudé, Rob Herring, Subbaraya Sundeep,
Jan Kiszka, Tyrone Ting, Hao Wu, Radoslaw Biernacki,
Leif Lindholm, Marcin Juszkiewicz, Edgar E. Iglesias,
Alistair Francis, Helge Deller, Paolo Bonzini, Eduardo Habkost,
Michael S. Tsirkin, Marcel Apfelbaum, Song Gao, Thomas Huth,
Laurent Vivier, Huacai Chen, Jiaxun Yang, Hervé Poussineau,
Aleksandar Rikalo, Aurelien Jarno, Jason Wang, Jia Liu,
Stafford Horne, Mark Cave-Ayland, Nicholas Piggin,
Daniel Henrique Barboza, David Gibson, Harsh Prateek Bora,
Bin Meng, Palmer Dabbelt, Weiwei Li, Liu Zhiwei, Halil Pasic,
Christian Borntraeger, Eric Farman, David Hildenbrand,
Ilya Leoshkevich, Yoshinori Sato, Magnus Damm, Artyom Tarasenko,
Stefano Stabellini, Anthony Perard, Paul Durrant, Max Filippov,
qemu-arm, qemu-ppc, qemu-riscv, qemu-s390x, xen-devel,
David Woodhouse
From: David Woodhouse <dwmw@amazon.co.uk>
Signed-off-by: David Woodhouse <dwmw@amazon.co.uk>
---
hw/arm/virt.c | 4 +---
1 file changed, 1 insertion(+), 3 deletions(-)
diff --git a/hw/arm/virt.c b/hw/arm/virt.c
index 2793121cb4..8cf9237001 100644
--- a/hw/arm/virt.c
+++ b/hw/arm/virt.c
@@ -1454,9 +1454,7 @@ static void create_pcie(VirtMachineState *vms)
pci->bypass_iommu = vms->default_bus_bypass_iommu;
vms->bus = pci->bus;
if (vms->bus) {
- for (i = 0; i < nb_nics; i++) {
- pci_nic_init_nofail(&nd_table[i], pci->bus, mc->default_nic, NULL);
- }
+ pci_init_nic_devices(pci->bus, mc->default_nic);
}
nodename = vms->pciehb_nodename = g_strdup_printf("/pcie@%" PRIx64, base);
--
2.41.0
^ permalink raw reply related [flat|nested] 105+ messages in thread
* [PATCH v3 10/46] hw/hppa: use pci_init_nic_devices()
2024-01-08 20:26 [PATCH v3 00/46] Rework matching of network devices to -nic options David Woodhouse
` (8 preceding siblings ...)
2024-01-08 20:26 ` [PATCH v3 09/46] hw/arm/virt: " David Woodhouse
@ 2024-01-08 20:26 ` David Woodhouse
2024-01-26 15:38 ` Thomas Huth
2024-01-08 20:26 ` [PATCH v3 11/46] hw/loongarch: " David Woodhouse
` (36 subsequent siblings)
46 siblings, 1 reply; 105+ messages in thread
From: David Woodhouse @ 2024-01-08 20:26 UTC (permalink / raw)
To: qemu-devel
Cc: Richard Henderson, Beniamino Galvani, Peter Maydell,
Strahinja Jankovic, Niek Linnenbank, Cédric Le Goater,
Andrew Jeffery, Joel Stanley, Igor Mitsyanko,
Jean-Christophe Dubois, Andrey Smirnov,
Philippe Mathieu-Daudé, Rob Herring, Subbaraya Sundeep,
Jan Kiszka, Tyrone Ting, Hao Wu, Radoslaw Biernacki,
Leif Lindholm, Marcin Juszkiewicz, Edgar E. Iglesias,
Alistair Francis, Helge Deller, Paolo Bonzini, Eduardo Habkost,
Michael S. Tsirkin, Marcel Apfelbaum, Song Gao, Thomas Huth,
Laurent Vivier, Huacai Chen, Jiaxun Yang, Hervé Poussineau,
Aleksandar Rikalo, Aurelien Jarno, Jason Wang, Jia Liu,
Stafford Horne, Mark Cave-Ayland, Nicholas Piggin,
Daniel Henrique Barboza, David Gibson, Harsh Prateek Bora,
Bin Meng, Palmer Dabbelt, Weiwei Li, Liu Zhiwei, Halil Pasic,
Christian Borntraeger, Eric Farman, David Hildenbrand,
Ilya Leoshkevich, Yoshinori Sato, Magnus Damm, Artyom Tarasenko,
Stefano Stabellini, Anthony Perard, Paul Durrant, Max Filippov,
qemu-arm, qemu-ppc, qemu-riscv, qemu-s390x, xen-devel,
David Woodhouse
From: David Woodhouse <dwmw@amazon.co.uk>
Signed-off-by: David Woodhouse <dwmw@amazon.co.uk>
---
hw/hppa/machine.c | 7 ++-----
1 file changed, 2 insertions(+), 5 deletions(-)
diff --git a/hw/hppa/machine.c b/hw/hppa/machine.c
index c8da7c18d5..19d477105e 100644
--- a/hw/hppa/machine.c
+++ b/hw/hppa/machine.c
@@ -338,7 +338,6 @@ static void machine_HP_common_init_tail(MachineState *machine, PCIBus *pci_bus,
uint64_t kernel_entry = 0, kernel_low, kernel_high;
MemoryRegion *addr_space = get_system_memory();
MemoryRegion *rom_region;
- long i;
unsigned int smp_cpus = machine->smp.cpus;
SysBusDevice *s;
@@ -362,10 +361,8 @@ static void machine_HP_common_init_tail(MachineState *machine, PCIBus *pci_bus,
qdev_get_gpio_in(lasi_dev, LASI_IRQ_LAN_HPA));
}
- for (i = 0; i < nb_nics; i++) {
- if (!enable_lasi_lan()) {
- pci_nic_init_nofail(&nd_table[i], pci_bus, mc->default_nic, NULL);
- }
+ if (!enable_lasi_lan()) {
+ pci_init_nic_devices(pci_bus, mc->default_nic);
}
/* BMC board: HP Powerbar SP2 Diva (with console only) */
--
2.41.0
^ permalink raw reply related [flat|nested] 105+ messages in thread
* [PATCH v3 11/46] hw/loongarch: use pci_init_nic_devices()
2024-01-08 20:26 [PATCH v3 00/46] Rework matching of network devices to -nic options David Woodhouse
` (9 preceding siblings ...)
2024-01-08 20:26 ` [PATCH v3 10/46] hw/hppa: " David Woodhouse
@ 2024-01-08 20:26 ` David Woodhouse
2024-01-09 1:50 ` gaosong
2024-01-08 20:26 ` [PATCH v3 12/46] hw/mips/fuloong2e: " David Woodhouse
` (35 subsequent siblings)
46 siblings, 1 reply; 105+ messages in thread
From: David Woodhouse @ 2024-01-08 20:26 UTC (permalink / raw)
To: qemu-devel
Cc: Richard Henderson, Beniamino Galvani, Peter Maydell,
Strahinja Jankovic, Niek Linnenbank, Cédric Le Goater,
Andrew Jeffery, Joel Stanley, Igor Mitsyanko,
Jean-Christophe Dubois, Andrey Smirnov,
Philippe Mathieu-Daudé, Rob Herring, Subbaraya Sundeep,
Jan Kiszka, Tyrone Ting, Hao Wu, Radoslaw Biernacki,
Leif Lindholm, Marcin Juszkiewicz, Edgar E. Iglesias,
Alistair Francis, Helge Deller, Paolo Bonzini, Eduardo Habkost,
Michael S. Tsirkin, Marcel Apfelbaum, Song Gao, Thomas Huth,
Laurent Vivier, Huacai Chen, Jiaxun Yang, Hervé Poussineau,
Aleksandar Rikalo, Aurelien Jarno, Jason Wang, Jia Liu,
Stafford Horne, Mark Cave-Ayland, Nicholas Piggin,
Daniel Henrique Barboza, David Gibson, Harsh Prateek Bora,
Bin Meng, Palmer Dabbelt, Weiwei Li, Liu Zhiwei, Halil Pasic,
Christian Borntraeger, Eric Farman, David Hildenbrand,
Ilya Leoshkevich, Yoshinori Sato, Magnus Damm, Artyom Tarasenko,
Stefano Stabellini, Anthony Perard, Paul Durrant, Max Filippov,
qemu-arm, qemu-ppc, qemu-riscv, qemu-s390x, xen-devel,
David Woodhouse
From: David Woodhouse <dwmw@amazon.co.uk>
Signed-off-by: David Woodhouse <dwmw@amazon.co.uk>
---
hw/loongarch/virt.c | 4 +---
1 file changed, 1 insertion(+), 3 deletions(-)
diff --git a/hw/loongarch/virt.c b/hw/loongarch/virt.c
index 4b7dc67a2d..c48804ac38 100644
--- a/hw/loongarch/virt.c
+++ b/hw/loongarch/virt.c
@@ -504,9 +504,7 @@ static void loongarch_devices_init(DeviceState *pch_pic, LoongArchMachineState *
fdt_add_uart_node(lams);
/* Network init */
- for (i = 0; i < nb_nics; i++) {
- pci_nic_init_nofail(&nd_table[i], pci_bus, mc->default_nic, NULL);
- }
+ pci_init_nic_devices(pci_bus, mc->default_nic);
/*
* There are some invalid guest memory access.
--
2.41.0
^ permalink raw reply related [flat|nested] 105+ messages in thread
* [PATCH v3 12/46] hw/mips/fuloong2e: use pci_init_nic_devices()
2024-01-08 20:26 [PATCH v3 00/46] Rework matching of network devices to -nic options David Woodhouse
` (10 preceding siblings ...)
2024-01-08 20:26 ` [PATCH v3 11/46] hw/loongarch: " David Woodhouse
@ 2024-01-08 20:26 ` David Woodhouse
2024-01-26 13:53 ` Thomas Huth
2024-01-08 20:26 ` [PATCH v3 13/46] hw/mips/malta: " David Woodhouse
` (34 subsequent siblings)
46 siblings, 1 reply; 105+ messages in thread
From: David Woodhouse @ 2024-01-08 20:26 UTC (permalink / raw)
To: qemu-devel
Cc: Richard Henderson, Beniamino Galvani, Peter Maydell,
Strahinja Jankovic, Niek Linnenbank, Cédric Le Goater,
Andrew Jeffery, Joel Stanley, Igor Mitsyanko,
Jean-Christophe Dubois, Andrey Smirnov,
Philippe Mathieu-Daudé, Rob Herring, Subbaraya Sundeep,
Jan Kiszka, Tyrone Ting, Hao Wu, Radoslaw Biernacki,
Leif Lindholm, Marcin Juszkiewicz, Edgar E. Iglesias,
Alistair Francis, Helge Deller, Paolo Bonzini, Eduardo Habkost,
Michael S. Tsirkin, Marcel Apfelbaum, Song Gao, Thomas Huth,
Laurent Vivier, Huacai Chen, Jiaxun Yang, Hervé Poussineau,
Aleksandar Rikalo, Aurelien Jarno, Jason Wang, Jia Liu,
Stafford Horne, Mark Cave-Ayland, Nicholas Piggin,
Daniel Henrique Barboza, David Gibson, Harsh Prateek Bora,
Bin Meng, Palmer Dabbelt, Weiwei Li, Liu Zhiwei, Halil Pasic,
Christian Borntraeger, Eric Farman, David Hildenbrand,
Ilya Leoshkevich, Yoshinori Sato, Magnus Damm, Artyom Tarasenko,
Stefano Stabellini, Anthony Perard, Paul Durrant, Max Filippov,
qemu-arm, qemu-ppc, qemu-riscv, qemu-s390x, xen-devel,
David Woodhouse
From: David Woodhouse <dwmw@amazon.co.uk>
The previous behaviour was: *if* the first NIC specified on the command
line was an RTL8139 (or unspecified model) then it gets assigned to PCI
slot 7, which is where the Fuloong board had an RTL8139. All other
devices (including the first, if it was specified a anything other then
an rtl8319) get dynamically assigned on the bus.
The new behaviour is subtly different: If the first NIC was given a
specific model *other* than rtl8139, and a subsequent NIC was not,
then the rtl8139 (or unspecified) NIC will go to slot 7 and the rest
will be dynamically assigned.
Signed-off-by: David Woodhouse <dwmw@amazon.co.uk>
---
hw/mips/fuloong2e.c | 16 +++-------------
1 file changed, 3 insertions(+), 13 deletions(-)
diff --git a/hw/mips/fuloong2e.c b/hw/mips/fuloong2e.c
index 97b2c8ed8e..a45aac368c 100644
--- a/hw/mips/fuloong2e.c
+++ b/hw/mips/fuloong2e.c
@@ -201,19 +201,9 @@ static void main_cpu_reset(void *opaque)
/* Network support */
static void network_init(PCIBus *pci_bus)
{
- int i;
-
- for (i = 0; i < nb_nics; i++) {
- NICInfo *nd = &nd_table[i];
- const char *default_devaddr = NULL;
-
- if (i == 0 && (!nd->model || strcmp(nd->model, "rtl8139") == 0)) {
- /* The Fuloong board has a RTL8139 card using PCI SLOT 7 */
- default_devaddr = "07";
- }
-
- pci_nic_init_nofail(nd, pci_bus, "rtl8139", default_devaddr);
- }
+ /* The Fuloong board has a RTL8139 card using PCI SLOT 7 */
+ pci_init_nic_in_slot(pci_bus, "rtl8139", NULL, "07");
+ pci_init_nic_devices(pci_bus, "rtl8139");
}
static void mips_fuloong2e_init(MachineState *machine)
--
2.41.0
^ permalink raw reply related [flat|nested] 105+ messages in thread
* [PATCH v3 13/46] hw/mips/malta: use pci_init_nic_devices()
2024-01-08 20:26 [PATCH v3 00/46] Rework matching of network devices to -nic options David Woodhouse
` (11 preceding siblings ...)
2024-01-08 20:26 ` [PATCH v3 12/46] hw/mips/fuloong2e: " David Woodhouse
@ 2024-01-08 20:26 ` David Woodhouse
2024-01-26 13:57 ` Thomas Huth
2024-01-08 20:26 ` [PATCH v3 14/46] hw/mips/loongson3_virt: " David Woodhouse
` (33 subsequent siblings)
46 siblings, 1 reply; 105+ messages in thread
From: David Woodhouse @ 2024-01-08 20:26 UTC (permalink / raw)
To: qemu-devel
Cc: Richard Henderson, Beniamino Galvani, Peter Maydell,
Strahinja Jankovic, Niek Linnenbank, Cédric Le Goater,
Andrew Jeffery, Joel Stanley, Igor Mitsyanko,
Jean-Christophe Dubois, Andrey Smirnov,
Philippe Mathieu-Daudé, Rob Herring, Subbaraya Sundeep,
Jan Kiszka, Tyrone Ting, Hao Wu, Radoslaw Biernacki,
Leif Lindholm, Marcin Juszkiewicz, Edgar E. Iglesias,
Alistair Francis, Helge Deller, Paolo Bonzini, Eduardo Habkost,
Michael S. Tsirkin, Marcel Apfelbaum, Song Gao, Thomas Huth,
Laurent Vivier, Huacai Chen, Jiaxun Yang, Hervé Poussineau,
Aleksandar Rikalo, Aurelien Jarno, Jason Wang, Jia Liu,
Stafford Horne, Mark Cave-Ayland, Nicholas Piggin,
Daniel Henrique Barboza, David Gibson, Harsh Prateek Bora,
Bin Meng, Palmer Dabbelt, Weiwei Li, Liu Zhiwei, Halil Pasic,
Christian Borntraeger, Eric Farman, David Hildenbrand,
Ilya Leoshkevich, Yoshinori Sato, Magnus Damm, Artyom Tarasenko,
Stefano Stabellini, Anthony Perard, Paul Durrant, Max Filippov,
qemu-arm, qemu-ppc, qemu-riscv, qemu-s390x, xen-devel,
David Woodhouse
From: David Woodhouse <dwmw@amazon.co.uk>
The Malta board setup code would previously place the first NIC into PCI
slot 11 if was a PCNet card, and the rest (including the first if it was
anything other than a PCNet card) would be dynamically assigned.
Now it will place any PCNet NIC into slot 11, and then anything else will
be dynamically assigned.
Signed-off-by: David Woodhouse <dwmw@amazon.co.uk>
---
hw/mips/malta.c | 15 +++------------
1 file changed, 3 insertions(+), 12 deletions(-)
diff --git a/hw/mips/malta.c b/hw/mips/malta.c
index d22bb1edef..af74008c82 100644
--- a/hw/mips/malta.c
+++ b/hw/mips/malta.c
@@ -612,18 +612,9 @@ static MaltaFPGAState *malta_fpga_init(MemoryRegion *address_space,
/* Network support */
static void network_init(PCIBus *pci_bus)
{
- int i;
-
- for (i = 0; i < nb_nics; i++) {
- NICInfo *nd = &nd_table[i];
- const char *default_devaddr = NULL;
-
- if (i == 0 && (!nd->model || strcmp(nd->model, "pcnet") == 0))
- /* The malta board has a PCNet card using PCI SLOT 11 */
- default_devaddr = "0b";
-
- pci_nic_init_nofail(nd, pci_bus, "pcnet", default_devaddr);
- }
+ /* The malta board has a PCNet card using PCI SLOT 11 */
+ pci_init_nic_in_slot(pci_bus, "pcnet", NULL, "0b");
+ pci_init_nic_devices(pci_bus, "pcnet");
}
static void bl_setup_gt64120_jump_kernel(void **p, uint64_t run_addr,
--
2.41.0
^ permalink raw reply related [flat|nested] 105+ messages in thread
* [PATCH v3 14/46] hw/mips/loongson3_virt: use pci_init_nic_devices()
2024-01-08 20:26 [PATCH v3 00/46] Rework matching of network devices to -nic options David Woodhouse
` (12 preceding siblings ...)
2024-01-08 20:26 ` [PATCH v3 13/46] hw/mips/malta: " David Woodhouse
@ 2024-01-08 20:26 ` David Woodhouse
2024-01-26 13:58 ` Thomas Huth
2024-01-08 20:26 ` [PATCH v3 15/46] hw/ppc/prep: " David Woodhouse
` (32 subsequent siblings)
46 siblings, 1 reply; 105+ messages in thread
From: David Woodhouse @ 2024-01-08 20:26 UTC (permalink / raw)
To: qemu-devel
Cc: Richard Henderson, Beniamino Galvani, Peter Maydell,
Strahinja Jankovic, Niek Linnenbank, Cédric Le Goater,
Andrew Jeffery, Joel Stanley, Igor Mitsyanko,
Jean-Christophe Dubois, Andrey Smirnov,
Philippe Mathieu-Daudé, Rob Herring, Subbaraya Sundeep,
Jan Kiszka, Tyrone Ting, Hao Wu, Radoslaw Biernacki,
Leif Lindholm, Marcin Juszkiewicz, Edgar E. Iglesias,
Alistair Francis, Helge Deller, Paolo Bonzini, Eduardo Habkost,
Michael S. Tsirkin, Marcel Apfelbaum, Song Gao, Thomas Huth,
Laurent Vivier, Huacai Chen, Jiaxun Yang, Hervé Poussineau,
Aleksandar Rikalo, Aurelien Jarno, Jason Wang, Jia Liu,
Stafford Horne, Mark Cave-Ayland, Nicholas Piggin,
Daniel Henrique Barboza, David Gibson, Harsh Prateek Bora,
Bin Meng, Palmer Dabbelt, Weiwei Li, Liu Zhiwei, Halil Pasic,
Christian Borntraeger, Eric Farman, David Hildenbrand,
Ilya Leoshkevich, Yoshinori Sato, Magnus Damm, Artyom Tarasenko,
Stefano Stabellini, Anthony Perard, Paul Durrant, Max Filippov,
qemu-arm, qemu-ppc, qemu-riscv, qemu-s390x, xen-devel,
David Woodhouse
From: David Woodhouse <dwmw@amazon.co.uk>
Signed-off-by: David Woodhouse <dwmw@amazon.co.uk>
---
hw/mips/loongson3_virt.c | 4 +---
1 file changed, 1 insertion(+), 3 deletions(-)
diff --git a/hw/mips/loongson3_virt.c b/hw/mips/loongson3_virt.c
index 33eae01eca..caedde2df0 100644
--- a/hw/mips/loongson3_virt.c
+++ b/hw/mips/loongson3_virt.c
@@ -451,9 +451,7 @@ static inline void loongson3_virt_devices_init(MachineState *machine,
usb_create_simple(usb_bus_find(-1), "usb-tablet");
}
- for (i = 0; i < nb_nics; i++) {
- pci_nic_init_nofail(&nd_table[i], pci_bus, mc->default_nic, NULL);
- }
+ pci_init_nic_devices(pci_bus, mc->default_nic);
}
static void mips_loongson3_virt_init(MachineState *machine)
--
2.41.0
^ permalink raw reply related [flat|nested] 105+ messages in thread
* [PATCH v3 15/46] hw/ppc/prep: use pci_init_nic_devices()
2024-01-08 20:26 [PATCH v3 00/46] Rework matching of network devices to -nic options David Woodhouse
` (13 preceding siblings ...)
2024-01-08 20:26 ` [PATCH v3 14/46] hw/mips/loongson3_virt: " David Woodhouse
@ 2024-01-08 20:26 ` David Woodhouse
2024-01-26 14:06 ` Thomas Huth
2024-01-08 20:26 ` [PATCH v3 16/46] hw/ppc/spapr: use qemu_get_nic_info() and pci_init_nic_devices() David Woodhouse
` (31 subsequent siblings)
46 siblings, 1 reply; 105+ messages in thread
From: David Woodhouse @ 2024-01-08 20:26 UTC (permalink / raw)
To: qemu-devel
Cc: Richard Henderson, Beniamino Galvani, Peter Maydell,
Strahinja Jankovic, Niek Linnenbank, Cédric Le Goater,
Andrew Jeffery, Joel Stanley, Igor Mitsyanko,
Jean-Christophe Dubois, Andrey Smirnov,
Philippe Mathieu-Daudé, Rob Herring, Subbaraya Sundeep,
Jan Kiszka, Tyrone Ting, Hao Wu, Radoslaw Biernacki,
Leif Lindholm, Marcin Juszkiewicz, Edgar E. Iglesias,
Alistair Francis, Helge Deller, Paolo Bonzini, Eduardo Habkost,
Michael S. Tsirkin, Marcel Apfelbaum, Song Gao, Thomas Huth,
Laurent Vivier, Huacai Chen, Jiaxun Yang, Hervé Poussineau,
Aleksandar Rikalo, Aurelien Jarno, Jason Wang, Jia Liu,
Stafford Horne, Mark Cave-Ayland, Nicholas Piggin,
Daniel Henrique Barboza, David Gibson, Harsh Prateek Bora,
Bin Meng, Palmer Dabbelt, Weiwei Li, Liu Zhiwei, Halil Pasic,
Christian Borntraeger, Eric Farman, David Hildenbrand,
Ilya Leoshkevich, Yoshinori Sato, Magnus Damm, Artyom Tarasenko,
Stefano Stabellini, Anthony Perard, Paul Durrant, Max Filippov,
qemu-arm, qemu-ppc, qemu-riscv, qemu-s390x, xen-devel,
David Woodhouse
From: David Woodhouse <dwmw@amazon.co.uk>
Previously, the first PCI NIC would be placed in PCI slot 3 and the rest
would be dynamically assigned. Even if the user overrode the default NIC
type and made it something other than PCNet.
Now, the first PCNet NIC (that is, anything not explicitly specified
to be anything different) will go to slot 3 even if it isn't the first
NIC specified on the commnd line. And anything else will be dynamically
assigned.
Signed-off-by: David Woodhouse <dwmw@amazon.co.uk>
---
hw/ppc/prep.c | 8 +++-----
1 file changed, 3 insertions(+), 5 deletions(-)
diff --git a/hw/ppc/prep.c b/hw/ppc/prep.c
index 137276bcb9..1a6cd05c61 100644
--- a/hw/ppc/prep.c
+++ b/hw/ppc/prep.c
@@ -241,7 +241,6 @@ static void ibm_40p_init(MachineState *machine)
ISADevice *isa_dev;
ISABus *isa_bus;
void *fw_cfg;
- int i;
uint32_t kernel_base = 0, initrd_base = 0;
long kernel_size = 0, initrd_size = 0;
char boot_device;
@@ -336,10 +335,9 @@ static void ibm_40p_init(MachineState *machine)
/* XXX: s3-trio at PCI_DEVFN(2, 0) */
pci_vga_init(pci_bus);
- for (i = 0; i < nb_nics; i++) {
- pci_nic_init_nofail(&nd_table[i], pci_bus, mc->default_nic,
- i == 0 ? "3" : NULL);
- }
+ /* First PCNET device at PCI_DEVFN(3, 0) */
+ pci_init_nic_in_slot(pci_bus, mc->default_nic, NULL, "3");
+ pci_init_nic_devices(pci_bus, mc->default_nic);
}
/* Prepare firmware configuration for OpenBIOS */
--
2.41.0
^ permalink raw reply related [flat|nested] 105+ messages in thread
* [PATCH v3 16/46] hw/ppc/spapr: use qemu_get_nic_info() and pci_init_nic_devices()
2024-01-08 20:26 [PATCH v3 00/46] Rework matching of network devices to -nic options David Woodhouse
` (14 preceding siblings ...)
2024-01-08 20:26 ` [PATCH v3 15/46] hw/ppc/prep: " David Woodhouse
@ 2024-01-08 20:26 ` David Woodhouse
2024-01-26 14:09 ` Thomas Huth
2024-01-08 20:26 ` [PATCH v3 17/46] hw/ppc: use pci_init_nic_devices() David Woodhouse
` (30 subsequent siblings)
46 siblings, 1 reply; 105+ messages in thread
From: David Woodhouse @ 2024-01-08 20:26 UTC (permalink / raw)
To: qemu-devel
Cc: Richard Henderson, Beniamino Galvani, Peter Maydell,
Strahinja Jankovic, Niek Linnenbank, Cédric Le Goater,
Andrew Jeffery, Joel Stanley, Igor Mitsyanko,
Jean-Christophe Dubois, Andrey Smirnov,
Philippe Mathieu-Daudé, Rob Herring, Subbaraya Sundeep,
Jan Kiszka, Tyrone Ting, Hao Wu, Radoslaw Biernacki,
Leif Lindholm, Marcin Juszkiewicz, Edgar E. Iglesias,
Alistair Francis, Helge Deller, Paolo Bonzini, Eduardo Habkost,
Michael S. Tsirkin, Marcel Apfelbaum, Song Gao, Thomas Huth,
Laurent Vivier, Huacai Chen, Jiaxun Yang, Hervé Poussineau,
Aleksandar Rikalo, Aurelien Jarno, Jason Wang, Jia Liu,
Stafford Horne, Mark Cave-Ayland, Nicholas Piggin,
Daniel Henrique Barboza, David Gibson, Harsh Prateek Bora,
Bin Meng, Palmer Dabbelt, Weiwei Li, Liu Zhiwei, Halil Pasic,
Christian Borntraeger, Eric Farman, David Hildenbrand,
Ilya Leoshkevich, Yoshinori Sato, Magnus Damm, Artyom Tarasenko,
Stefano Stabellini, Anthony Perard, Paul Durrant, Max Filippov,
qemu-arm, qemu-ppc, qemu-riscv, qemu-s390x, xen-devel,
David Woodhouse
From: David Woodhouse <dwmw@amazon.co.uk>
Avoid directly referencing nd_table[] by first instantiating any
spapr-vlan devices using a qemu_get_nic_info() loop, then calling
pci_init_nic_devices() to do the rest.
No functional change intended.
Signed-off-by: David Woodhouse <dwmw@amazon.co.uk>
---
hw/ppc/spapr.c | 18 +++++-------------
1 file changed, 5 insertions(+), 13 deletions(-)
diff --git a/hw/ppc/spapr.c b/hw/ppc/spapr.c
index 4997aa4f1d..37604e7caf 100644
--- a/hw/ppc/spapr.c
+++ b/hw/ppc/spapr.c
@@ -2796,6 +2796,7 @@ static void spapr_machine_init(MachineState *machine)
MemoryRegion *sysmem = get_system_memory();
long load_limit, fw_size;
Error *resize_hpt_err = NULL;
+ NICInfo *nd;
if (!filename) {
error_report("Could not find LPAR firmware '%s'", bios_name);
@@ -2996,21 +2997,12 @@ static void spapr_machine_init(MachineState *machine)
phb = spapr_create_default_phb();
- for (i = 0; i < nb_nics; i++) {
- NICInfo *nd = &nd_table[i];
-
- if (!nd->model) {
- nd->model = g_strdup("spapr-vlan");
- }
-
- if (g_str_equal(nd->model, "spapr-vlan") ||
- g_str_equal(nd->model, "ibmveth")) {
- spapr_vlan_create(spapr->vio_bus, nd);
- } else {
- pci_nic_init_nofail(&nd_table[i], phb->bus, nd->model, NULL);
- }
+ while ((nd = qemu_find_nic_info("spapr-vlan", true, "ibmveth"))) {
+ spapr_vlan_create(spapr->vio_bus, nd);
}
+ pci_init_nic_devices(phb->bus, NULL);
+
for (i = 0; i <= drive_get_max_bus(IF_SCSI); i++) {
spapr_vscsi_create(spapr->vio_bus);
}
--
2.41.0
^ permalink raw reply related [flat|nested] 105+ messages in thread
* [PATCH v3 17/46] hw/ppc: use pci_init_nic_devices()
2024-01-08 20:26 [PATCH v3 00/46] Rework matching of network devices to -nic options David Woodhouse
` (15 preceding siblings ...)
2024-01-08 20:26 ` [PATCH v3 16/46] hw/ppc/spapr: use qemu_get_nic_info() and pci_init_nic_devices() David Woodhouse
@ 2024-01-08 20:26 ` David Woodhouse
2024-01-26 14:14 ` Thomas Huth
2024-01-08 20:26 ` [PATCH v3 18/46] hw/sh4/r2d: " David Woodhouse
` (29 subsequent siblings)
46 siblings, 1 reply; 105+ messages in thread
From: David Woodhouse @ 2024-01-08 20:26 UTC (permalink / raw)
To: qemu-devel
Cc: Richard Henderson, Beniamino Galvani, Peter Maydell,
Strahinja Jankovic, Niek Linnenbank, Cédric Le Goater,
Andrew Jeffery, Joel Stanley, Igor Mitsyanko,
Jean-Christophe Dubois, Andrey Smirnov,
Philippe Mathieu-Daudé, Rob Herring, Subbaraya Sundeep,
Jan Kiszka, Tyrone Ting, Hao Wu, Radoslaw Biernacki,
Leif Lindholm, Marcin Juszkiewicz, Edgar E. Iglesias,
Alistair Francis, Helge Deller, Paolo Bonzini, Eduardo Habkost,
Michael S. Tsirkin, Marcel Apfelbaum, Song Gao, Thomas Huth,
Laurent Vivier, Huacai Chen, Jiaxun Yang, Hervé Poussineau,
Aleksandar Rikalo, Aurelien Jarno, Jason Wang, Jia Liu,
Stafford Horne, Mark Cave-Ayland, Nicholas Piggin,
Daniel Henrique Barboza, David Gibson, Harsh Prateek Bora,
Bin Meng, Palmer Dabbelt, Weiwei Li, Liu Zhiwei, Halil Pasic,
Christian Borntraeger, Eric Farman, David Hildenbrand,
Ilya Leoshkevich, Yoshinori Sato, Magnus Damm, Artyom Tarasenko,
Stefano Stabellini, Anthony Perard, Paul Durrant, Max Filippov,
qemu-arm, qemu-ppc, qemu-riscv, qemu-s390x, xen-devel,
David Woodhouse
From: David Woodhouse <dwmw@amazon.co.uk>
Signed-off-by: David Woodhouse <dwmw@amazon.co.uk>
---
hw/ppc/e500.c | 4 +---
hw/ppc/mac_newworld.c | 4 +---
hw/ppc/mac_oldworld.c | 4 +---
hw/ppc/ppc440_bamboo.c | 14 +++++---------
4 files changed, 8 insertions(+), 18 deletions(-)
diff --git a/hw/ppc/e500.c b/hw/ppc/e500.c
index 566f1200dd..3bd12b54ab 100644
--- a/hw/ppc/e500.c
+++ b/hw/ppc/e500.c
@@ -1079,9 +1079,7 @@ void ppce500_init(MachineState *machine)
if (pci_bus) {
/* Register network interfaces. */
- for (i = 0; i < nb_nics; i++) {
- pci_nic_init_nofail(&nd_table[i], pci_bus, mc->default_nic, NULL);
- }
+ pci_init_nic_devices(pci_bus, mc->default_nic);
}
/* Register spinning region */
diff --git a/hw/ppc/mac_newworld.c b/hw/ppc/mac_newworld.c
index 535710314a..b36dbaf2b6 100644
--- a/hw/ppc/mac_newworld.c
+++ b/hw/ppc/mac_newworld.c
@@ -444,9 +444,7 @@ static void ppc_core99_init(MachineState *machine)
graphic_depth = 15;
}
- for (i = 0; i < nb_nics; i++) {
- pci_nic_init_nofail(&nd_table[i], pci_bus, mc->default_nic, NULL);
- }
+ pci_init_nic_devices(pci_bus, mc->default_nic);
/* The NewWorld NVRAM is not located in the MacIO device */
if (kvm_enabled() && qemu_real_host_page_size() > 4096) {
diff --git a/hw/ppc/mac_oldworld.c b/hw/ppc/mac_oldworld.c
index 9acc7adfc9..1981d3d8f6 100644
--- a/hw/ppc/mac_oldworld.c
+++ b/hw/ppc/mac_oldworld.c
@@ -277,9 +277,7 @@ static void ppc_heathrow_init(MachineState *machine)
pci_vga_init(pci_bus);
- for (i = 0; i < nb_nics; i++) {
- pci_nic_init_nofail(&nd_table[i], pci_bus, mc->default_nic, NULL);
- }
+ pci_init_nic_devices(pci_bus, mc->default_nic);
/* MacIO IDE */
ide_drive_get(hd, ARRAY_SIZE(hd));
diff --git a/hw/ppc/ppc440_bamboo.c b/hw/ppc/ppc440_bamboo.c
index a189942de4..c75c3083e6 100644
--- a/hw/ppc/ppc440_bamboo.c
+++ b/hw/ppc/ppc440_bamboo.c
@@ -161,7 +161,6 @@ static void bamboo_init(MachineState *machine)
DeviceState *uicdev;
SysBusDevice *uicsbd;
int success;
- int i;
if (kvm_enabled()) {
error_report("machine %s does not support the KVM accelerator",
@@ -234,14 +233,11 @@ static void bamboo_init(MachineState *machine)
}
if (pcibus) {
- /* Register network interfaces. */
- for (i = 0; i < nb_nics; i++) {
- /*
- * There are no PCI NICs on the Bamboo board, but there are
- * PCI slots, so we can pick whatever default model we want.
- */
- pci_nic_init_nofail(&nd_table[i], pcibus, mc->default_nic, NULL);
- }
+ /*
+ * There are no PCI NICs on the Bamboo board, but there are
+ * PCI slots, so we can pick whatever default model we want.
+ */
+ pci_init_nic_devices(pcibus, mc->default_nic);
}
/* Load kernel. */
--
2.41.0
^ permalink raw reply related [flat|nested] 105+ messages in thread
* [PATCH v3 18/46] hw/sh4/r2d: use pci_init_nic_devices()
2024-01-08 20:26 [PATCH v3 00/46] Rework matching of network devices to -nic options David Woodhouse
` (16 preceding siblings ...)
2024-01-08 20:26 ` [PATCH v3 17/46] hw/ppc: use pci_init_nic_devices() David Woodhouse
@ 2024-01-08 20:26 ` David Woodhouse
2024-01-08 20:26 ` [PATCH v3 19/46] hw/sparc64/sun4u: " David Woodhouse
` (28 subsequent siblings)
46 siblings, 0 replies; 105+ messages in thread
From: David Woodhouse @ 2024-01-08 20:26 UTC (permalink / raw)
To: qemu-devel
Cc: Richard Henderson, Beniamino Galvani, Peter Maydell,
Strahinja Jankovic, Niek Linnenbank, Cédric Le Goater,
Andrew Jeffery, Joel Stanley, Igor Mitsyanko,
Jean-Christophe Dubois, Andrey Smirnov,
Philippe Mathieu-Daudé, Rob Herring, Subbaraya Sundeep,
Jan Kiszka, Tyrone Ting, Hao Wu, Radoslaw Biernacki,
Leif Lindholm, Marcin Juszkiewicz, Edgar E. Iglesias,
Alistair Francis, Helge Deller, Paolo Bonzini, Eduardo Habkost,
Michael S. Tsirkin, Marcel Apfelbaum, Song Gao, Thomas Huth,
Laurent Vivier, Huacai Chen, Jiaxun Yang, Hervé Poussineau,
Aleksandar Rikalo, Aurelien Jarno, Jason Wang, Jia Liu,
Stafford Horne, Mark Cave-Ayland, Nicholas Piggin,
Daniel Henrique Barboza, David Gibson, Harsh Prateek Bora,
Bin Meng, Palmer Dabbelt, Weiwei Li, Liu Zhiwei, Halil Pasic,
Christian Borntraeger, Eric Farman, David Hildenbrand,
Ilya Leoshkevich, Yoshinori Sato, Magnus Damm, Artyom Tarasenko,
Stefano Stabellini, Anthony Perard, Paul Durrant, Max Filippov,
qemu-arm, qemu-ppc, qemu-riscv, qemu-s390x, xen-devel,
David Woodhouse
From: David Woodhouse <dwmw@amazon.co.uk>
Previously, the first PCI NIC would be assigned to slot 2 even if the
user override the model and made it something other than an rtl8139
which is the default. Everything else would be dynamically assigned.
Now, the first rtl8139 gets slot 2 and everything else is dynamic.
Signed-off-by: David Woodhouse <dwmw@amazon.co.uk>
Reviewed-by: Yoshinori Sato <ysato@users.sourceforge.jp>
---
hw/sh4/r2d.c | 6 ++----
1 file changed, 2 insertions(+), 4 deletions(-)
diff --git a/hw/sh4/r2d.c b/hw/sh4/r2d.c
index 4944994e9c..e9f316a6ce 100644
--- a/hw/sh4/r2d.c
+++ b/hw/sh4/r2d.c
@@ -240,7 +240,6 @@ static void r2d_init(MachineState *machine)
MemoryRegion *sdram = g_new(MemoryRegion, 1);
qemu_irq *irq;
DriveInfo *dinfo;
- int i;
DeviceState *dev;
SysBusDevice *busdev;
MemoryRegion *address_space_mem = get_system_memory();
@@ -309,9 +308,8 @@ static void r2d_init(MachineState *machine)
0x555, 0x2aa, 0);
/* NIC: rtl8139 on-board, and 2 slots. */
- for (i = 0; i < nb_nics; i++)
- pci_nic_init_nofail(&nd_table[i], pci_bus,
- mc->default_nic, i == 0 ? "2" : NULL);
+ pci_init_nic_in_slot(pci_bus, mc->default_nic, NULL, "2");
+ pci_init_nic_devices(pci_bus, mc->default_nic);
/* USB keyboard */
usb_create_simple(usb_bus_find(-1), "usb-kbd");
--
2.41.0
^ permalink raw reply related [flat|nested] 105+ messages in thread
* [PATCH v3 19/46] hw/sparc64/sun4u: use pci_init_nic_devices()
2024-01-08 20:26 [PATCH v3 00/46] Rework matching of network devices to -nic options David Woodhouse
` (17 preceding siblings ...)
2024-01-08 20:26 ` [PATCH v3 18/46] hw/sh4/r2d: " David Woodhouse
@ 2024-01-08 20:26 ` David Woodhouse
2024-01-26 14:21 ` Thomas Huth
2024-01-08 20:26 ` [PATCH v3 20/46] hw/xtensa/virt: " David Woodhouse
` (27 subsequent siblings)
46 siblings, 1 reply; 105+ messages in thread
From: David Woodhouse @ 2024-01-08 20:26 UTC (permalink / raw)
To: qemu-devel
Cc: Richard Henderson, Beniamino Galvani, Peter Maydell,
Strahinja Jankovic, Niek Linnenbank, Cédric Le Goater,
Andrew Jeffery, Joel Stanley, Igor Mitsyanko,
Jean-Christophe Dubois, Andrey Smirnov,
Philippe Mathieu-Daudé, Rob Herring, Subbaraya Sundeep,
Jan Kiszka, Tyrone Ting, Hao Wu, Radoslaw Biernacki,
Leif Lindholm, Marcin Juszkiewicz, Edgar E. Iglesias,
Alistair Francis, Helge Deller, Paolo Bonzini, Eduardo Habkost,
Michael S. Tsirkin, Marcel Apfelbaum, Song Gao, Thomas Huth,
Laurent Vivier, Huacai Chen, Jiaxun Yang, Hervé Poussineau,
Aleksandar Rikalo, Aurelien Jarno, Jason Wang, Jia Liu,
Stafford Horne, Mark Cave-Ayland, Nicholas Piggin,
Daniel Henrique Barboza, David Gibson, Harsh Prateek Bora,
Bin Meng, Palmer Dabbelt, Weiwei Li, Liu Zhiwei, Halil Pasic,
Christian Borntraeger, Eric Farman, David Hildenbrand,
Ilya Leoshkevich, Yoshinori Sato, Magnus Damm, Artyom Tarasenko,
Stefano Stabellini, Anthony Perard, Paul Durrant, Max Filippov,
qemu-arm, qemu-ppc, qemu-riscv, qemu-s390x, xen-devel,
David Woodhouse
From: David Woodhouse <dwmw@amazon.co.uk>
The first sunhme NIC gets placed a function 1 on slot 1 of PCI bus A,
and the rest are dynamically assigned on PCI bus B.
Previously, any PCI NIC would get the special treatment purely by
virtue of being first in the list.
Signed-off-by: David Woodhouse <dwmw@amazon.co.uk>
---
hw/sparc64/sun4u.c | 27 ++++++++-------------------
1 file changed, 8 insertions(+), 19 deletions(-)
diff --git a/hw/sparc64/sun4u.c b/hw/sparc64/sun4u.c
index 24d53bf5fd..eda9b58a21 100644
--- a/hw/sparc64/sun4u.c
+++ b/hw/sparc64/sun4u.c
@@ -639,29 +639,18 @@ static void sun4uv_init(MemoryRegion *address_space_mem,
memset(&macaddr, 0, sizeof(MACAddr));
onboard_nic = false;
- for (i = 0; i < nb_nics; i++) {
- PCIBus *bus;
- nd = &nd_table[i];
-
- if (!nd->model || strcmp(nd->model, mc->default_nic) == 0) {
- if (!onboard_nic) {
- pci_dev = pci_new_multifunction(PCI_DEVFN(1, 1), mc->default_nic);
- bus = pci_busA;
- memcpy(&macaddr, &nd->macaddr.a, sizeof(MACAddr));
- onboard_nic = true;
- } else {
- pci_dev = pci_new(-1, mc->default_nic);
- bus = pci_busB;
- }
- } else {
- pci_dev = pci_new(-1, nd->model);
- bus = pci_busB;
- }
+ nd = qemu_find_nic_info(mc->default_nic, true, NULL);
+ if (nd) {
+ pci_dev = pci_new_multifunction(PCI_DEVFN(1, 1), mc->default_nic);
dev = &pci_dev->qdev;
qdev_set_nic_properties(dev, nd);
- pci_realize_and_unref(pci_dev, bus, &error_fatal);
+ pci_realize_and_unref(pci_dev, pci_busA, &error_fatal);
+
+ memcpy(&macaddr, &nd->macaddr.a, sizeof(MACAddr));
+ onboard_nic = true;
}
+ pci_init_nic_devices(pci_busB, mc->default_nic);
/* If we don't have an onboard NIC, grab a default MAC address so that
* we have a valid machine id */
--
2.41.0
^ permalink raw reply related [flat|nested] 105+ messages in thread
* [PATCH v3 20/46] hw/xtensa/virt: use pci_init_nic_devices()
2024-01-08 20:26 [PATCH v3 00/46] Rework matching of network devices to -nic options David Woodhouse
` (18 preceding siblings ...)
2024-01-08 20:26 ` [PATCH v3 19/46] hw/sparc64/sun4u: " David Woodhouse
@ 2024-01-08 20:26 ` David Woodhouse
2024-01-26 14:47 ` Thomas Huth
2024-01-08 20:26 ` [PATCH v3 21/46] hw/arm/allwinner: use qemu_configure_nic_device() David Woodhouse
` (26 subsequent siblings)
46 siblings, 1 reply; 105+ messages in thread
From: David Woodhouse @ 2024-01-08 20:26 UTC (permalink / raw)
To: qemu-devel
Cc: Richard Henderson, Beniamino Galvani, Peter Maydell,
Strahinja Jankovic, Niek Linnenbank, Cédric Le Goater,
Andrew Jeffery, Joel Stanley, Igor Mitsyanko,
Jean-Christophe Dubois, Andrey Smirnov,
Philippe Mathieu-Daudé, Rob Herring, Subbaraya Sundeep,
Jan Kiszka, Tyrone Ting, Hao Wu, Radoslaw Biernacki,
Leif Lindholm, Marcin Juszkiewicz, Edgar E. Iglesias,
Alistair Francis, Helge Deller, Paolo Bonzini, Eduardo Habkost,
Michael S. Tsirkin, Marcel Apfelbaum, Song Gao, Thomas Huth,
Laurent Vivier, Huacai Chen, Jiaxun Yang, Hervé Poussineau,
Aleksandar Rikalo, Aurelien Jarno, Jason Wang, Jia Liu,
Stafford Horne, Mark Cave-Ayland, Nicholas Piggin,
Daniel Henrique Barboza, David Gibson, Harsh Prateek Bora,
Bin Meng, Palmer Dabbelt, Weiwei Li, Liu Zhiwei, Halil Pasic,
Christian Borntraeger, Eric Farman, David Hildenbrand,
Ilya Leoshkevich, Yoshinori Sato, Magnus Damm, Artyom Tarasenko,
Stefano Stabellini, Anthony Perard, Paul Durrant, Max Filippov,
qemu-arm, qemu-ppc, qemu-riscv, qemu-s390x, xen-devel,
David Woodhouse
From: David Woodhouse <dwmw@amazon.co.uk>
Signed-off-by: David Woodhouse <dwmw@amazon.co.uk>
---
hw/xtensa/virt.c | 4 +---
1 file changed, 1 insertion(+), 3 deletions(-)
diff --git a/hw/xtensa/virt.c b/hw/xtensa/virt.c
index a6cf646e99..5310a88861 100644
--- a/hw/xtensa/virt.c
+++ b/hw/xtensa/virt.c
@@ -102,9 +102,7 @@ static void create_pcie(MachineState *ms, CPUXtensaState *env, int irq_base,
pci = PCI_HOST_BRIDGE(dev);
if (pci->bus) {
- for (i = 0; i < nb_nics; i++) {
- pci_nic_init_nofail(&nd_table[i], pci->bus, mc->default_nic, NULL);
- }
+ pci_init_nic_devices(pci->bus, mc->default_nic);
}
}
--
2.41.0
^ permalink raw reply related [flat|nested] 105+ messages in thread
* [PATCH v3 21/46] hw/arm/allwinner: use qemu_configure_nic_device()
2024-01-08 20:26 [PATCH v3 00/46] Rework matching of network devices to -nic options David Woodhouse
` (19 preceding siblings ...)
2024-01-08 20:26 ` [PATCH v3 20/46] hw/xtensa/virt: " David Woodhouse
@ 2024-01-08 20:26 ` David Woodhouse
2024-01-26 14:58 ` Thomas Huth
2024-01-08 20:26 ` [PATCH v3 22/46] hw/arm/aspeed: " David Woodhouse
` (25 subsequent siblings)
46 siblings, 1 reply; 105+ messages in thread
From: David Woodhouse @ 2024-01-08 20:26 UTC (permalink / raw)
To: qemu-devel
Cc: Richard Henderson, Beniamino Galvani, Peter Maydell,
Strahinja Jankovic, Niek Linnenbank, Cédric Le Goater,
Andrew Jeffery, Joel Stanley, Igor Mitsyanko,
Jean-Christophe Dubois, Andrey Smirnov,
Philippe Mathieu-Daudé, Rob Herring, Subbaraya Sundeep,
Jan Kiszka, Tyrone Ting, Hao Wu, Radoslaw Biernacki,
Leif Lindholm, Marcin Juszkiewicz, Edgar E. Iglesias,
Alistair Francis, Helge Deller, Paolo Bonzini, Eduardo Habkost,
Michael S. Tsirkin, Marcel Apfelbaum, Song Gao, Thomas Huth,
Laurent Vivier, Huacai Chen, Jiaxun Yang, Hervé Poussineau,
Aleksandar Rikalo, Aurelien Jarno, Jason Wang, Jia Liu,
Stafford Horne, Mark Cave-Ayland, Nicholas Piggin,
Daniel Henrique Barboza, David Gibson, Harsh Prateek Bora,
Bin Meng, Palmer Dabbelt, Weiwei Li, Liu Zhiwei, Halil Pasic,
Christian Borntraeger, Eric Farman, David Hildenbrand,
Ilya Leoshkevich, Yoshinori Sato, Magnus Damm, Artyom Tarasenko,
Stefano Stabellini, Anthony Perard, Paul Durrant, Max Filippov,
qemu-arm, qemu-ppc, qemu-riscv, qemu-s390x, xen-devel,
David Woodhouse
From: David Woodhouse <dwmw@amazon.co.uk>
Signed-off-by: David Woodhouse <dwmw@amazon.co.uk>
---
hw/arm/allwinner-a10.c | 6 +-----
hw/arm/allwinner-h3.c | 6 +-----
hw/arm/allwinner-r40.c | 27 ++-------------------------
3 files changed, 4 insertions(+), 35 deletions(-)
diff --git a/hw/arm/allwinner-a10.c b/hw/arm/allwinner-a10.c
index b0ea3f7f66..57f52871ec 100644
--- a/hw/arm/allwinner-a10.c
+++ b/hw/arm/allwinner-a10.c
@@ -142,11 +142,7 @@ static void aw_a10_realize(DeviceState *dev, Error **errp)
sysbus_realize(SYS_BUS_DEVICE(&s->dramc), &error_fatal);
sysbus_mmio_map(SYS_BUS_DEVICE(&s->dramc), 0, AW_A10_DRAMC_BASE);
- /* FIXME use qdev NIC properties instead of nd_table[] */
- if (nd_table[0].used) {
- qemu_check_nic_model(&nd_table[0], TYPE_AW_EMAC);
- qdev_set_nic_properties(DEVICE(&s->emac), &nd_table[0]);
- }
+ qemu_configure_nic_device(DEVICE(&s->emac), true, NULL);
if (!sysbus_realize(SYS_BUS_DEVICE(&s->emac), errp)) {
return;
}
diff --git a/hw/arm/allwinner-h3.c b/hw/arm/allwinner-h3.c
index f05afddf7e..4f102ad082 100644
--- a/hw/arm/allwinner-h3.c
+++ b/hw/arm/allwinner-h3.c
@@ -369,11 +369,7 @@ static void allwinner_h3_realize(DeviceState *dev, Error **errp)
"sd-bus");
/* EMAC */
- /* FIXME use qdev NIC properties instead of nd_table[] */
- if (nd_table[0].used) {
- qemu_check_nic_model(&nd_table[0], TYPE_AW_SUN8I_EMAC);
- qdev_set_nic_properties(DEVICE(&s->emac), &nd_table[0]);
- }
+ qemu_configure_nic_device(DEVICE(&s->emac), true, NULL);
object_property_set_link(OBJECT(&s->emac), "dma-memory",
OBJECT(get_system_memory()), &error_fatal);
sysbus_realize(SYS_BUS_DEVICE(&s->emac), &error_fatal);
diff --git a/hw/arm/allwinner-r40.c b/hw/arm/allwinner-r40.c
index a0d367c60d..4d5661b014 100644
--- a/hw/arm/allwinner-r40.c
+++ b/hw/arm/allwinner-r40.c
@@ -294,7 +294,6 @@ static void allwinner_r40_init(Object *obj)
static void allwinner_r40_realize(DeviceState *dev, Error **errp)
{
- const char *r40_nic_models[] = { "gmac", "emac", NULL };
AwR40State *s = AW_R40(dev);
/* CPUs */
@@ -454,31 +453,8 @@ static void allwinner_r40_realize(DeviceState *dev, Error **errp)
sysbus_mmio_map(SYS_BUS_DEVICE(&s->dramc), 2,
s->memmap[AW_R40_DEV_DRAMPHY]);
- /* nic support gmac and emac */
- for (int i = 0; i < ARRAY_SIZE(r40_nic_models) - 1; i++) {
- NICInfo *nic = &nd_table[i];
-
- if (!nic->used) {
- continue;
- }
- if (qemu_show_nic_models(nic->model, r40_nic_models)) {
- exit(0);
- }
-
- switch (qemu_find_nic_model(nic, r40_nic_models, r40_nic_models[0])) {
- case 0: /* gmac */
- qdev_set_nic_properties(DEVICE(&s->gmac), nic);
- break;
- case 1: /* emac */
- qdev_set_nic_properties(DEVICE(&s->emac), nic);
- break;
- default:
- exit(1);
- break;
- }
- }
-
/* GMAC */
+ qemu_configure_nic_device(DEVICE(&s->gmac), true, "gmac");
object_property_set_link(OBJECT(&s->gmac), "dma-memory",
OBJECT(get_system_memory()), &error_fatal);
sysbus_realize(SYS_BUS_DEVICE(&s->gmac), &error_fatal);
@@ -487,6 +463,7 @@ static void allwinner_r40_realize(DeviceState *dev, Error **errp)
qdev_get_gpio_in(DEVICE(&s->gic), AW_R40_GIC_SPI_GMAC));
/* EMAC */
+ qemu_configure_nic_device(DEVICE(&s->emac), true, "emac");
sysbus_realize(SYS_BUS_DEVICE(&s->emac), &error_fatal);
sysbus_mmio_map(SYS_BUS_DEVICE(&s->emac), 0, s->memmap[AW_R40_DEV_EMAC]);
sysbus_connect_irq(SYS_BUS_DEVICE(&s->emac), 0,
--
2.41.0
^ permalink raw reply related [flat|nested] 105+ messages in thread
* [PATCH v3 22/46] hw/arm/aspeed: use qemu_configure_nic_device()
2024-01-08 20:26 [PATCH v3 00/46] Rework matching of network devices to -nic options David Woodhouse
` (20 preceding siblings ...)
2024-01-08 20:26 ` [PATCH v3 21/46] hw/arm/allwinner: use qemu_configure_nic_device() David Woodhouse
@ 2024-01-08 20:26 ` David Woodhouse
2024-01-16 13:32 ` Cédric Le Goater
2024-01-08 20:26 ` [PATCH v3 23/46] hw/arm/exynos4: use qemu_create_nic_device() David Woodhouse
` (24 subsequent siblings)
46 siblings, 1 reply; 105+ messages in thread
From: David Woodhouse @ 2024-01-08 20:26 UTC (permalink / raw)
To: qemu-devel
Cc: Richard Henderson, Beniamino Galvani, Peter Maydell,
Strahinja Jankovic, Niek Linnenbank, Cédric Le Goater,
Andrew Jeffery, Joel Stanley, Igor Mitsyanko,
Jean-Christophe Dubois, Andrey Smirnov,
Philippe Mathieu-Daudé, Rob Herring, Subbaraya Sundeep,
Jan Kiszka, Tyrone Ting, Hao Wu, Radoslaw Biernacki,
Leif Lindholm, Marcin Juszkiewicz, Edgar E. Iglesias,
Alistair Francis, Helge Deller, Paolo Bonzini, Eduardo Habkost,
Michael S. Tsirkin, Marcel Apfelbaum, Song Gao, Thomas Huth,
Laurent Vivier, Huacai Chen, Jiaxun Yang, Hervé Poussineau,
Aleksandar Rikalo, Aurelien Jarno, Jason Wang, Jia Liu,
Stafford Horne, Mark Cave-Ayland, Nicholas Piggin,
Daniel Henrique Barboza, David Gibson, Harsh Prateek Bora,
Bin Meng, Palmer Dabbelt, Weiwei Li, Liu Zhiwei, Halil Pasic,
Christian Borntraeger, Eric Farman, David Hildenbrand,
Ilya Leoshkevich, Yoshinori Sato, Magnus Damm, Artyom Tarasenko,
Stefano Stabellini, Anthony Perard, Paul Durrant, Max Filippov,
qemu-arm, qemu-ppc, qemu-riscv, qemu-s390x, xen-devel,
David Woodhouse
From: David Woodhouse <dwmw@amazon.co.uk>
Signed-off-by: David Woodhouse <dwmw@amazon.co.uk>
---
hw/arm/aspeed.c | 9 ++++-----
1 file changed, 4 insertions(+), 5 deletions(-)
diff --git a/hw/arm/aspeed.c b/hw/arm/aspeed.c
index cc59176563..bed5e4f40b 100644
--- a/hw/arm/aspeed.c
+++ b/hw/arm/aspeed.c
@@ -356,7 +356,6 @@ static void aspeed_machine_init(MachineState *machine)
AspeedMachineClass *amc = ASPEED_MACHINE_GET_CLASS(machine);
AspeedSoCClass *sc;
int i;
- NICInfo *nd = &nd_table[0];
bmc->soc = ASPEED_SOC(object_new(amc->soc_name));
object_property_add_child(OBJECT(machine), "soc", OBJECT(bmc->soc));
@@ -371,10 +370,10 @@ static void aspeed_machine_init(MachineState *machine)
&error_fatal);
for (i = 0; i < sc->macs_num; i++) {
- if ((amc->macs_mask & (1 << i)) && nd->used) {
- qemu_check_nic_model(nd, TYPE_FTGMAC100);
- qdev_set_nic_properties(DEVICE(&bmc->soc->ftgmac100[i]), nd);
- nd++;
+ if ((amc->macs_mask & (1 << i)) &&
+ !qemu_configure_nic_device(DEVICE(&bmc->soc->ftgmac100[i]),
+ true, NULL)) {
+ break; /* No configs left; stop asking */
}
}
--
2.41.0
^ permalink raw reply related [flat|nested] 105+ messages in thread
* [PATCH v3 23/46] hw/arm/exynos4: use qemu_create_nic_device()
2024-01-08 20:26 [PATCH v3 00/46] Rework matching of network devices to -nic options David Woodhouse
` (21 preceding siblings ...)
2024-01-08 20:26 ` [PATCH v3 22/46] hw/arm/aspeed: " David Woodhouse
@ 2024-01-08 20:26 ` David Woodhouse
2024-01-26 15:01 ` Thomas Huth
2024-01-08 20:26 ` [PATCH v3 24/46] hw/arm/fsl: use qemu_configure_nic_device() David Woodhouse
` (23 subsequent siblings)
46 siblings, 1 reply; 105+ messages in thread
From: David Woodhouse @ 2024-01-08 20:26 UTC (permalink / raw)
To: qemu-devel
Cc: Richard Henderson, Beniamino Galvani, Peter Maydell,
Strahinja Jankovic, Niek Linnenbank, Cédric Le Goater,
Andrew Jeffery, Joel Stanley, Igor Mitsyanko,
Jean-Christophe Dubois, Andrey Smirnov,
Philippe Mathieu-Daudé, Rob Herring, Subbaraya Sundeep,
Jan Kiszka, Tyrone Ting, Hao Wu, Radoslaw Biernacki,
Leif Lindholm, Marcin Juszkiewicz, Edgar E. Iglesias,
Alistair Francis, Helge Deller, Paolo Bonzini, Eduardo Habkost,
Michael S. Tsirkin, Marcel Apfelbaum, Song Gao, Thomas Huth,
Laurent Vivier, Huacai Chen, Jiaxun Yang, Hervé Poussineau,
Aleksandar Rikalo, Aurelien Jarno, Jason Wang, Jia Liu,
Stafford Horne, Mark Cave-Ayland, Nicholas Piggin,
Daniel Henrique Barboza, David Gibson, Harsh Prateek Bora,
Bin Meng, Palmer Dabbelt, Weiwei Li, Liu Zhiwei, Halil Pasic,
Christian Borntraeger, Eric Farman, David Hildenbrand,
Ilya Leoshkevich, Yoshinori Sato, Magnus Damm, Artyom Tarasenko,
Stefano Stabellini, Anthony Perard, Paul Durrant, Max Filippov,
qemu-arm, qemu-ppc, qemu-riscv, qemu-s390x, xen-devel,
David Woodhouse
From: David Woodhouse <dwmw@amazon.co.uk>
Signed-off-by: David Woodhouse <dwmw@amazon.co.uk>
---
hw/arm/exynos4_boards.c | 6 ++----
1 file changed, 2 insertions(+), 4 deletions(-)
diff --git a/hw/arm/exynos4_boards.c b/hw/arm/exynos4_boards.c
index b0e13eb4f0..003992189b 100644
--- a/hw/arm/exynos4_boards.c
+++ b/hw/arm/exynos4_boards.c
@@ -76,10 +76,8 @@ static void lan9215_init(uint32_t base, qemu_irq irq)
SysBusDevice *s;
/* This should be a 9215 but the 9118 is close enough */
- if (nd_table[0].used) {
- qemu_check_nic_model(&nd_table[0], "lan9118");
- dev = qdev_new(TYPE_LAN9118);
- qdev_set_nic_properties(dev, &nd_table[0]);
+ dev = qemu_create_nic_device(TYPE_LAN9118, true, NULL);
+ if (dev) {
qdev_prop_set_uint32(dev, "mode_16bit", 1);
s = SYS_BUS_DEVICE(dev);
sysbus_realize_and_unref(s, &error_fatal);
--
2.41.0
^ permalink raw reply related [flat|nested] 105+ messages in thread
* [PATCH v3 24/46] hw/arm/fsl: use qemu_configure_nic_device()
2024-01-08 20:26 [PATCH v3 00/46] Rework matching of network devices to -nic options David Woodhouse
` (22 preceding siblings ...)
2024-01-08 20:26 ` [PATCH v3 23/46] hw/arm/exynos4: use qemu_create_nic_device() David Woodhouse
@ 2024-01-08 20:26 ` David Woodhouse
2024-01-26 15:03 ` Thomas Huth
2024-01-08 20:26 ` [PATCH v3 25/46] hw/net/smc91c111: " David Woodhouse
` (22 subsequent siblings)
46 siblings, 1 reply; 105+ messages in thread
From: David Woodhouse @ 2024-01-08 20:26 UTC (permalink / raw)
To: qemu-devel
Cc: Richard Henderson, Beniamino Galvani, Peter Maydell,
Strahinja Jankovic, Niek Linnenbank, Cédric Le Goater,
Andrew Jeffery, Joel Stanley, Igor Mitsyanko,
Jean-Christophe Dubois, Andrey Smirnov,
Philippe Mathieu-Daudé, Rob Herring, Subbaraya Sundeep,
Jan Kiszka, Tyrone Ting, Hao Wu, Radoslaw Biernacki,
Leif Lindholm, Marcin Juszkiewicz, Edgar E. Iglesias,
Alistair Francis, Helge Deller, Paolo Bonzini, Eduardo Habkost,
Michael S. Tsirkin, Marcel Apfelbaum, Song Gao, Thomas Huth,
Laurent Vivier, Huacai Chen, Jiaxun Yang, Hervé Poussineau,
Aleksandar Rikalo, Aurelien Jarno, Jason Wang, Jia Liu,
Stafford Horne, Mark Cave-Ayland, Nicholas Piggin,
Daniel Henrique Barboza, David Gibson, Harsh Prateek Bora,
Bin Meng, Palmer Dabbelt, Weiwei Li, Liu Zhiwei, Halil Pasic,
Christian Borntraeger, Eric Farman, David Hildenbrand,
Ilya Leoshkevich, Yoshinori Sato, Magnus Damm, Artyom Tarasenko,
Stefano Stabellini, Anthony Perard, Paul Durrant, Max Filippov,
qemu-arm, qemu-ppc, qemu-riscv, qemu-s390x, xen-devel,
David Woodhouse
From: David Woodhouse <dwmw@amazon.co.uk>
Signed-off-by: David Woodhouse <dwmw@amazon.co.uk>
---
hw/arm/fsl-imx25.c | 2 +-
hw/arm/fsl-imx6.c | 2 +-
hw/arm/fsl-imx6ul.c | 2 +-
hw/arm/fsl-imx7.c | 2 +-
4 files changed, 4 insertions(+), 4 deletions(-)
diff --git a/hw/arm/fsl-imx25.c b/hw/arm/fsl-imx25.c
index 9d2fb75a68..a24fa7b443 100644
--- a/hw/arm/fsl-imx25.c
+++ b/hw/arm/fsl-imx25.c
@@ -170,7 +170,7 @@ static void fsl_imx25_realize(DeviceState *dev, Error **errp)
object_property_set_uint(OBJECT(&s->fec), "phy-num", s->phy_num,
&error_abort);
- qdev_set_nic_properties(DEVICE(&s->fec), &nd_table[0]);
+ qemu_configure_nic_device(DEVICE(&s->fec), true, NULL);
if (!sysbus_realize(SYS_BUS_DEVICE(&s->fec), errp)) {
return;
diff --git a/hw/arm/fsl-imx6.c b/hw/arm/fsl-imx6.c
index b2153022c0..02f3024090 100644
--- a/hw/arm/fsl-imx6.c
+++ b/hw/arm/fsl-imx6.c
@@ -380,7 +380,7 @@ static void fsl_imx6_realize(DeviceState *dev, Error **errp)
object_property_set_uint(OBJECT(&s->eth), "phy-num", s->phy_num,
&error_abort);
- qdev_set_nic_properties(DEVICE(&s->eth), &nd_table[0]);
+ qemu_configure_nic_device(DEVICE(&s->eth), true, NULL);
if (!sysbus_realize(SYS_BUS_DEVICE(&s->eth), errp)) {
return;
}
diff --git a/hw/arm/fsl-imx6ul.c b/hw/arm/fsl-imx6ul.c
index e37b69a5e1..ca3dd439ec 100644
--- a/hw/arm/fsl-imx6ul.c
+++ b/hw/arm/fsl-imx6ul.c
@@ -442,7 +442,7 @@ static void fsl_imx6ul_realize(DeviceState *dev, Error **errp)
s->phy_num[i], &error_abort);
object_property_set_uint(OBJECT(&s->eth[i]), "tx-ring-num",
FSL_IMX6UL_ETH_NUM_TX_RINGS, &error_abort);
- qdev_set_nic_properties(DEVICE(&s->eth[i]), &nd_table[i]);
+ qemu_configure_nic_device(DEVICE(&s->eth[i]), true, NULL);
sysbus_realize(SYS_BUS_DEVICE(&s->eth[i]), &error_abort);
sysbus_mmio_map(SYS_BUS_DEVICE(&s->eth[i]), 0,
diff --git a/hw/arm/fsl-imx7.c b/hw/arm/fsl-imx7.c
index 474cfdc87c..1acbe065db 100644
--- a/hw/arm/fsl-imx7.c
+++ b/hw/arm/fsl-imx7.c
@@ -446,7 +446,7 @@ static void fsl_imx7_realize(DeviceState *dev, Error **errp)
s->phy_num[i], &error_abort);
object_property_set_uint(OBJECT(&s->eth[i]), "tx-ring-num",
FSL_IMX7_ETH_NUM_TX_RINGS, &error_abort);
- qdev_set_nic_properties(DEVICE(&s->eth[i]), &nd_table[i]);
+ qemu_configure_nic_device(DEVICE(&s->eth[i]), true, NULL);
sysbus_realize(SYS_BUS_DEVICE(&s->eth[i]), &error_abort);
sysbus_mmio_map(SYS_BUS_DEVICE(&s->eth[i]), 0, FSL_IMX7_ENETn_ADDR[i]);
--
2.41.0
^ permalink raw reply related [flat|nested] 105+ messages in thread
* [PATCH v3 25/46] hw/net/smc91c111: use qemu_configure_nic_device()
2024-01-08 20:26 [PATCH v3 00/46] Rework matching of network devices to -nic options David Woodhouse
` (23 preceding siblings ...)
2024-01-08 20:26 ` [PATCH v3 24/46] hw/arm/fsl: use qemu_configure_nic_device() David Woodhouse
@ 2024-01-08 20:26 ` David Woodhouse
2024-01-26 15:14 ` Thomas Huth
2024-01-08 20:26 ` [PATCH v3 26/46] hw/net/lan9118: " David Woodhouse
` (21 subsequent siblings)
46 siblings, 1 reply; 105+ messages in thread
From: David Woodhouse @ 2024-01-08 20:26 UTC (permalink / raw)
To: qemu-devel
Cc: Richard Henderson, Beniamino Galvani, Peter Maydell,
Strahinja Jankovic, Niek Linnenbank, Cédric Le Goater,
Andrew Jeffery, Joel Stanley, Igor Mitsyanko,
Jean-Christophe Dubois, Andrey Smirnov,
Philippe Mathieu-Daudé, Rob Herring, Subbaraya Sundeep,
Jan Kiszka, Tyrone Ting, Hao Wu, Radoslaw Biernacki,
Leif Lindholm, Marcin Juszkiewicz, Edgar E. Iglesias,
Alistair Francis, Helge Deller, Paolo Bonzini, Eduardo Habkost,
Michael S. Tsirkin, Marcel Apfelbaum, Song Gao, Thomas Huth,
Laurent Vivier, Huacai Chen, Jiaxun Yang, Hervé Poussineau,
Aleksandar Rikalo, Aurelien Jarno, Jason Wang, Jia Liu,
Stafford Horne, Mark Cave-Ayland, Nicholas Piggin,
Daniel Henrique Barboza, David Gibson, Harsh Prateek Bora,
Bin Meng, Palmer Dabbelt, Weiwei Li, Liu Zhiwei, Halil Pasic,
Christian Borntraeger, Eric Farman, David Hildenbrand,
Ilya Leoshkevich, Yoshinori Sato, Magnus Damm, Artyom Tarasenko,
Stefano Stabellini, Anthony Perard, Paul Durrant, Max Filippov,
qemu-arm, qemu-ppc, qemu-riscv, qemu-s390x, xen-devel,
David Woodhouse
From: David Woodhouse <dwmw@amazon.co.uk>
Some callers instantiate the device unconditionally, others will do so only
if there is a NICInfo to go with it. This appears to be fairly random, but
preserve the existing behaviour for now.
Signed-off-by: David Woodhouse <dwmw@amazon.co.uk>
---
hw/arm/gumstix.c | 6 ++----
hw/arm/integratorcp.c | 5 +++--
hw/arm/mainstone.c | 3 +--
hw/arm/realview.c | 25 ++++++++++---------------
hw/arm/versatilepb.c | 15 ++++-----------
hw/net/smc91c111.c | 5 ++---
include/hw/net/smc91c111.h | 2 +-
7 files changed, 23 insertions(+), 38 deletions(-)
diff --git a/hw/arm/gumstix.c b/hw/arm/gumstix.c
index 2ca4140c9f..f58c4da7f9 100644
--- a/hw/arm/gumstix.c
+++ b/hw/arm/gumstix.c
@@ -74,8 +74,7 @@ static void connex_init(MachineState *machine)
FLASH_SECTOR_SIZE, 2, 0, 0, 0, 0, 0);
/* Interrupt line of NIC is connected to GPIO line 36 */
- smc91c111_init(&nd_table[0], 0x04000300,
- qdev_get_gpio_in(cpu->gpio, 36));
+ smc91c111_init(0x04000300, qdev_get_gpio_in(cpu->gpio, 36));
}
static void verdex_init(MachineState *machine)
@@ -98,8 +97,7 @@ static void verdex_init(MachineState *machine)
FLASH_SECTOR_SIZE, 2, 0, 0, 0, 0, 0);
/* Interrupt line of NIC is connected to GPIO line 99 */
- smc91c111_init(&nd_table[0], 0x04000300,
- qdev_get_gpio_in(cpu->gpio, 99));
+ smc91c111_init(0x04000300, qdev_get_gpio_in(cpu->gpio, 99));
}
static void connex_class_init(ObjectClass *oc, void *data)
diff --git a/hw/arm/integratorcp.c b/hw/arm/integratorcp.c
index 1830e1d785..c56a2c1353 100644
--- a/hw/arm/integratorcp.c
+++ b/hw/arm/integratorcp.c
@@ -666,8 +666,9 @@ static void integratorcp_init(MachineState *machine)
sysbus_mmio_map(SYS_BUS_DEVICE(dev), 0, 0x1d000000);
sysbus_connect_irq(SYS_BUS_DEVICE(dev), 0, pic[25]);
- if (nd_table[0].used)
- smc91c111_init(&nd_table[0], 0xc8000000, pic[27]);
+ if (qemu_find_nic_info("smc91c111", true, NULL)) {
+ smc91c111_init(0xc8000000, pic[27]);
+ }
sysbus_create_simple("pl110", 0xc0000000, pic[22]);
diff --git a/hw/arm/mainstone.c b/hw/arm/mainstone.c
index 68329c4617..84dbb6e525 100644
--- a/hw/arm/mainstone.c
+++ b/hw/arm/mainstone.c
@@ -153,8 +153,7 @@ static void mainstone_common_init(MachineState *machine,
qdev_get_gpio_in(mst_irq, S1_IRQ),
qdev_get_gpio_in(mst_irq, S1_CD_IRQ));
- smc91c111_init(&nd_table[0], MST_ETH_PHYS,
- qdev_get_gpio_in(mst_irq, ETHERNET_IRQ));
+ smc91c111_init(MST_ETH_PHYS, qdev_get_gpio_in(mst_irq, ETHERNET_IRQ));
mainstone_binfo.board_id = arm_id;
arm_load_kernel(mpu->cpu, machine, &mainstone_binfo);
diff --git a/hw/arm/realview.c b/hw/arm/realview.c
index 132217b2ed..6e7529d98f 100644
--- a/hw/arm/realview.c
+++ b/hw/arm/realview.c
@@ -89,7 +89,6 @@ static void realview_init(MachineState *machine,
I2CBus *i2c;
int n;
unsigned int smp_cpus = machine->smp.cpus;
- int done_nic = 0;
qemu_irq cpu_irq[4];
int is_mpcore = 0;
int is_pb = 0;
@@ -295,24 +294,20 @@ static void realview_init(MachineState *machine,
n--;
}
}
- for(n = 0; n < nb_nics; n++) {
- nd = &nd_table[n];
-
- if (!done_nic && (!nd->model ||
- strcmp(nd->model, is_pb ? "lan9118" : "smc91c111") == 0)) {
- if (is_pb) {
- lan9118_init(nd, 0x4e000000, pic[28]);
- } else {
- smc91c111_init(nd, 0x4e000000, pic[28]);
- }
- done_nic = 1;
+
+ nd = qemu_find_nic_info(is_pb ? "lan9118" : "smc91c111", true, NULL);
+ if (nd) {
+ if (is_pb) {
+ lan9118_init(nd, 0x4e000000, pic[28]);
} else {
- if (pci_bus) {
- pci_nic_init_nofail(nd, pci_bus, "rtl8139", NULL);
- }
+ smc91c111_init(0x4e000000, pic[28]);
}
}
+ if (pci_bus) {
+ pci_init_nic_devices(pci_bus, "rtl8139");
+ }
+
dev = sysbus_create_simple(TYPE_ARM_SBCON_I2C, 0x10002000, NULL);
i2c = (I2CBus *)qdev_get_child_bus(dev, "i2c");
i2c_slave_create_simple(i2c, "ds1338", 0x68);
diff --git a/hw/arm/versatilepb.c b/hw/arm/versatilepb.c
index 4b2257787b..0517a65601 100644
--- a/hw/arm/versatilepb.c
+++ b/hw/arm/versatilepb.c
@@ -192,10 +192,8 @@ static void versatile_init(MachineState *machine, int board_id)
SysBusDevice *busdev;
DeviceState *pl041;
PCIBus *pci_bus;
- NICInfo *nd;
I2CBus *i2c;
int n;
- int done_smc = 0;
DriveInfo *dinfo;
if (machine->ram_size > 0x10000000) {
@@ -263,16 +261,11 @@ static void versatile_init(MachineState *machine, int board_id)
sysbus_connect_irq(busdev, 3, sic[30]);
pci_bus = (PCIBus *)qdev_get_child_bus(dev, "pci");
- for(n = 0; n < nb_nics; n++) {
- nd = &nd_table[n];
-
- if (!done_smc && (!nd->model || strcmp(nd->model, "smc91c111") == 0)) {
- smc91c111_init(nd, 0x10010000, sic[25]);
- done_smc = 1;
- } else {
- pci_nic_init_nofail(nd, pci_bus, "rtl8139", NULL);
- }
+ if (qemu_find_nic_info("smc91c111", true, NULL)) {
+ smc91c111_init(0x10010000, sic[25]);
}
+ pci_init_nic_devices(pci_bus, "rtl8139");
+
if (machine_usb(machine)) {
pci_create_simple(pci_bus, -1, "pci-ohci");
}
diff --git a/hw/net/smc91c111.c b/hw/net/smc91c111.c
index 49b7c26102..702d0e8e83 100644
--- a/hw/net/smc91c111.c
+++ b/hw/net/smc91c111.c
@@ -818,14 +818,13 @@ static void smc91c111_register_types(void)
/* Legacy helper function. Should go away when machine config files are
implemented. */
-void smc91c111_init(NICInfo *nd, uint32_t base, qemu_irq irq)
+void smc91c111_init(uint32_t base, qemu_irq irq)
{
DeviceState *dev;
SysBusDevice *s;
- qemu_check_nic_model(nd, "smc91c111");
dev = qdev_new(TYPE_SMC91C111);
- qdev_set_nic_properties(dev, nd);
+ qemu_configure_nic_device(dev, true, NULL);
s = SYS_BUS_DEVICE(dev);
sysbus_realize_and_unref(s, &error_fatal);
sysbus_mmio_map(s, 0, base);
diff --git a/include/hw/net/smc91c111.h b/include/hw/net/smc91c111.h
index df5b11dcef..dba32a233f 100644
--- a/include/hw/net/smc91c111.h
+++ b/include/hw/net/smc91c111.h
@@ -13,6 +13,6 @@
#include "net/net.h"
-void smc91c111_init(NICInfo *, uint32_t, qemu_irq);
+void smc91c111_init(uint32_t, qemu_irq);
#endif
--
2.41.0
^ permalink raw reply related [flat|nested] 105+ messages in thread
* [PATCH v3 26/46] hw/net/lan9118: use qemu_configure_nic_device()
2024-01-08 20:26 [PATCH v3 00/46] Rework matching of network devices to -nic options David Woodhouse
` (24 preceding siblings ...)
2024-01-08 20:26 ` [PATCH v3 25/46] hw/net/smc91c111: " David Woodhouse
@ 2024-01-08 20:26 ` David Woodhouse
2024-01-08 20:26 ` [PATCH v3 27/46] hw/arm/highbank: use qemu_create_nic_device() David Woodhouse
` (20 subsequent siblings)
46 siblings, 0 replies; 105+ messages in thread
From: David Woodhouse @ 2024-01-08 20:26 UTC (permalink / raw)
To: qemu-devel
Cc: Richard Henderson, Beniamino Galvani, Peter Maydell,
Strahinja Jankovic, Niek Linnenbank, Cédric Le Goater,
Andrew Jeffery, Joel Stanley, Igor Mitsyanko,
Jean-Christophe Dubois, Andrey Smirnov,
Philippe Mathieu-Daudé, Rob Herring, Subbaraya Sundeep,
Jan Kiszka, Tyrone Ting, Hao Wu, Radoslaw Biernacki,
Leif Lindholm, Marcin Juszkiewicz, Edgar E. Iglesias,
Alistair Francis, Helge Deller, Paolo Bonzini, Eduardo Habkost,
Michael S. Tsirkin, Marcel Apfelbaum, Song Gao, Thomas Huth,
Laurent Vivier, Huacai Chen, Jiaxun Yang, Hervé Poussineau,
Aleksandar Rikalo, Aurelien Jarno, Jason Wang, Jia Liu,
Stafford Horne, Mark Cave-Ayland, Nicholas Piggin,
Daniel Henrique Barboza, David Gibson, Harsh Prateek Bora,
Bin Meng, Palmer Dabbelt, Weiwei Li, Liu Zhiwei, Halil Pasic,
Christian Borntraeger, Eric Farman, David Hildenbrand,
Ilya Leoshkevich, Yoshinori Sato, Magnus Damm, Artyom Tarasenko,
Stefano Stabellini, Anthony Perard, Paul Durrant, Max Filippov,
qemu-arm, qemu-ppc, qemu-riscv, qemu-s390x, xen-devel,
David Woodhouse
From: David Woodhouse <dwmw@amazon.co.uk>
Some callers instantiate the device unconditionally, others will do so only
if there is a NICInfo to go with it. This appears to be fairly random, but
preseve the existing behaviour for now.
Signed-off-by: David Woodhouse <dwmw@amazon.co.uk>
---
hw/arm/kzm.c | 4 ++--
hw/arm/mps2.c | 2 +-
hw/arm/realview.c | 6 ++----
hw/arm/vexpress.c | 4 ++--
hw/net/lan9118.c | 5 ++---
include/hw/net/lan9118.h | 2 +-
6 files changed, 10 insertions(+), 13 deletions(-)
diff --git a/hw/arm/kzm.c b/hw/arm/kzm.c
index 9be91ebeaa..2ccd6f8a76 100644
--- a/hw/arm/kzm.c
+++ b/hw/arm/kzm.c
@@ -113,8 +113,8 @@ static void kzm_init(MachineState *machine)
alias_offset += ram[i].size;
}
- if (nd_table[0].used) {
- lan9118_init(&nd_table[0], KZM_LAN9118_ADDR,
+ if (qemu_find_nic_info("lan9118", true, NULL)) {
+ lan9118_init(KZM_LAN9118_ADDR,
qdev_get_gpio_in(DEVICE(&s->soc.avic), 52));
}
diff --git a/hw/arm/mps2.c b/hw/arm/mps2.c
index bd873cc5de..50919ee46d 100644
--- a/hw/arm/mps2.c
+++ b/hw/arm/mps2.c
@@ -456,7 +456,7 @@ static void mps2_common_init(MachineState *machine)
/* In hardware this is a LAN9220; the LAN9118 is software compatible
* except that it doesn't support the checksum-offload feature.
*/
- lan9118_init(&nd_table[0], mmc->ethernet_base,
+ lan9118_init(mmc->ethernet_base,
qdev_get_gpio_in(armv7m,
mmc->fpga_type == FPGA_AN511 ? 47 : 13));
diff --git a/hw/arm/realview.c b/hw/arm/realview.c
index 6e7529d98f..1f88da3702 100644
--- a/hw/arm/realview.c
+++ b/hw/arm/realview.c
@@ -84,7 +84,6 @@ static void realview_init(MachineState *machine,
SysBusDevice *busdev;
qemu_irq pic[64];
PCIBus *pci_bus = NULL;
- NICInfo *nd;
DriveInfo *dinfo;
I2CBus *i2c;
int n;
@@ -295,10 +294,9 @@ static void realview_init(MachineState *machine,
}
}
- nd = qemu_find_nic_info(is_pb ? "lan9118" : "smc91c111", true, NULL);
- if (nd) {
+ if (qemu_find_nic_info(is_pb ? "lan9118" : "smc91c111", true, NULL)) {
if (is_pb) {
- lan9118_init(nd, 0x4e000000, pic[28]);
+ lan9118_init(0x4e000000, pic[28]);
} else {
smc91c111_init(0x4e000000, pic[28]);
}
diff --git a/hw/arm/vexpress.c b/hw/arm/vexpress.c
index fd981f4c33..1e02e0965f 100644
--- a/hw/arm/vexpress.c
+++ b/hw/arm/vexpress.c
@@ -679,8 +679,8 @@ static void vexpress_common_init(MachineState *machine)
memory_region_add_subregion(sysmem, map[VE_VIDEORAM], &vms->vram);
/* 0x4e000000 LAN9118 Ethernet */
- if (nd_table[0].used) {
- lan9118_init(&nd_table[0], map[VE_ETHERNET], pic[15]);
+ if (qemu_find_nic_info("lan9118", true, NULL)) {
+ lan9118_init(map[VE_ETHERNET], pic[15]);
}
/* VE_USB: not modelled */
diff --git a/hw/net/lan9118.c b/hw/net/lan9118.c
index 598dd79e17..47ff25b441 100644
--- a/hw/net/lan9118.c
+++ b/hw/net/lan9118.c
@@ -1408,14 +1408,13 @@ static void lan9118_register_types(void)
/* Legacy helper function. Should go away when machine config files are
implemented. */
-void lan9118_init(NICInfo *nd, uint32_t base, qemu_irq irq)
+void lan9118_init(uint32_t base, qemu_irq irq)
{
DeviceState *dev;
SysBusDevice *s;
- qemu_check_nic_model(nd, "lan9118");
dev = qdev_new(TYPE_LAN9118);
- qdev_set_nic_properties(dev, nd);
+ qemu_configure_nic_device(dev, true, NULL);
s = SYS_BUS_DEVICE(dev);
sysbus_realize_and_unref(s, &error_fatal);
sysbus_mmio_map(s, 0, base);
diff --git a/include/hw/net/lan9118.h b/include/hw/net/lan9118.h
index 3d0c67f339..4bf9da7a63 100644
--- a/include/hw/net/lan9118.h
+++ b/include/hw/net/lan9118.h
@@ -15,6 +15,6 @@
#define TYPE_LAN9118 "lan9118"
-void lan9118_init(NICInfo *, uint32_t, qemu_irq);
+void lan9118_init(uint32_t, qemu_irq);
#endif
--
2.41.0
^ permalink raw reply related [flat|nested] 105+ messages in thread
* [PATCH v3 27/46] hw/arm/highbank: use qemu_create_nic_device()
2024-01-08 20:26 [PATCH v3 00/46] Rework matching of network devices to -nic options David Woodhouse
` (25 preceding siblings ...)
2024-01-08 20:26 ` [PATCH v3 26/46] hw/net/lan9118: " David Woodhouse
@ 2024-01-08 20:26 ` David Woodhouse
2024-01-26 15:48 ` Thomas Huth
2024-01-08 20:26 ` [PATCH v3 28/46] hw/arm/npcm7xx: use qemu_configure_nic_device, allow emc0/emc1 as aliases David Woodhouse
` (19 subsequent siblings)
46 siblings, 1 reply; 105+ messages in thread
From: David Woodhouse @ 2024-01-08 20:26 UTC (permalink / raw)
To: qemu-devel
Cc: Richard Henderson, Beniamino Galvani, Peter Maydell,
Strahinja Jankovic, Niek Linnenbank, Cédric Le Goater,
Andrew Jeffery, Joel Stanley, Igor Mitsyanko,
Jean-Christophe Dubois, Andrey Smirnov,
Philippe Mathieu-Daudé, Rob Herring, Subbaraya Sundeep,
Jan Kiszka, Tyrone Ting, Hao Wu, Radoslaw Biernacki,
Leif Lindholm, Marcin Juszkiewicz, Edgar E. Iglesias,
Alistair Francis, Helge Deller, Paolo Bonzini, Eduardo Habkost,
Michael S. Tsirkin, Marcel Apfelbaum, Song Gao, Thomas Huth,
Laurent Vivier, Huacai Chen, Jiaxun Yang, Hervé Poussineau,
Aleksandar Rikalo, Aurelien Jarno, Jason Wang, Jia Liu,
Stafford Horne, Mark Cave-Ayland, Nicholas Piggin,
Daniel Henrique Barboza, David Gibson, Harsh Prateek Bora,
Bin Meng, Palmer Dabbelt, Weiwei Li, Liu Zhiwei, Halil Pasic,
Christian Borntraeger, Eric Farman, David Hildenbrand,
Ilya Leoshkevich, Yoshinori Sato, Magnus Damm, Artyom Tarasenko,
Stefano Stabellini, Anthony Perard, Paul Durrant, Max Filippov,
qemu-arm, qemu-ppc, qemu-riscv, qemu-s390x, xen-devel,
David Woodhouse
From: David Woodhouse <dwmw@amazon.co.uk>
Signed-off-by: David Woodhouse <dwmw@amazon.co.uk>
---
hw/arm/highbank.c | 12 +++++-------
1 file changed, 5 insertions(+), 7 deletions(-)
diff --git a/hw/arm/highbank.c b/hw/arm/highbank.c
index c21e18d08f..6a0e20e58d 100644
--- a/hw/arm/highbank.c
+++ b/hw/arm/highbank.c
@@ -296,19 +296,17 @@ static void calxeda_init(MachineState *machine, enum cxmachines machine_id)
sysbus_create_simple(TYPE_SYSBUS_AHCI, 0xffe08000, pic[83]);
- if (nd_table[0].used) {
- qemu_check_nic_model(&nd_table[0], "xgmac");
- dev = qdev_new("xgmac");
- qdev_set_nic_properties(dev, &nd_table[0]);
+ dev = qemu_create_nic_device("xgmac", true, NULL);
+ if (dev) {
sysbus_realize_and_unref(SYS_BUS_DEVICE(dev), &error_fatal);
sysbus_mmio_map(SYS_BUS_DEVICE(dev), 0, 0xfff50000);
sysbus_connect_irq(SYS_BUS_DEVICE(dev), 0, pic[77]);
sysbus_connect_irq(SYS_BUS_DEVICE(dev), 1, pic[78]);
sysbus_connect_irq(SYS_BUS_DEVICE(dev), 2, pic[79]);
+ }
- qemu_check_nic_model(&nd_table[1], "xgmac");
- dev = qdev_new("xgmac");
- qdev_set_nic_properties(dev, &nd_table[1]);
+ dev = qemu_create_nic_device("xgmac", true, NULL);
+ if (dev) {
sysbus_realize_and_unref(SYS_BUS_DEVICE(dev), &error_fatal);
sysbus_mmio_map(SYS_BUS_DEVICE(dev), 0, 0xfff51000);
sysbus_connect_irq(SYS_BUS_DEVICE(dev), 0, pic[80]);
--
2.41.0
^ permalink raw reply related [flat|nested] 105+ messages in thread
* [PATCH v3 28/46] hw/arm/npcm7xx: use qemu_configure_nic_device, allow emc0/emc1 as aliases
2024-01-08 20:26 [PATCH v3 00/46] Rework matching of network devices to -nic options David Woodhouse
` (26 preceding siblings ...)
2024-01-08 20:26 ` [PATCH v3 27/46] hw/arm/highbank: use qemu_create_nic_device() David Woodhouse
@ 2024-01-08 20:26 ` David Woodhouse
2024-01-08 20:26 ` [PATCH v3 29/46] hw/arm/stellaris: use qemu_find_nic_info() David Woodhouse
` (18 subsequent siblings)
46 siblings, 0 replies; 105+ messages in thread
From: David Woodhouse @ 2024-01-08 20:26 UTC (permalink / raw)
To: qemu-devel
Cc: Richard Henderson, Beniamino Galvani, Peter Maydell,
Strahinja Jankovic, Niek Linnenbank, Cédric Le Goater,
Andrew Jeffery, Joel Stanley, Igor Mitsyanko,
Jean-Christophe Dubois, Andrey Smirnov,
Philippe Mathieu-Daudé, Rob Herring, Subbaraya Sundeep,
Jan Kiszka, Tyrone Ting, Hao Wu, Radoslaw Biernacki,
Leif Lindholm, Marcin Juszkiewicz, Edgar E. Iglesias,
Alistair Francis, Helge Deller, Paolo Bonzini, Eduardo Habkost,
Michael S. Tsirkin, Marcel Apfelbaum, Song Gao, Thomas Huth,
Laurent Vivier, Huacai Chen, Jiaxun Yang, Hervé Poussineau,
Aleksandar Rikalo, Aurelien Jarno, Jason Wang, Jia Liu,
Stafford Horne, Mark Cave-Ayland, Nicholas Piggin,
Daniel Henrique Barboza, David Gibson, Harsh Prateek Bora,
Bin Meng, Palmer Dabbelt, Weiwei Li, Liu Zhiwei, Halil Pasic,
Christian Borntraeger, Eric Farman, David Hildenbrand,
Ilya Leoshkevich, Yoshinori Sato, Magnus Damm, Artyom Tarasenko,
Stefano Stabellini, Anthony Perard, Paul Durrant, Max Filippov,
qemu-arm, qemu-ppc, qemu-riscv, qemu-s390x, xen-devel,
David Woodhouse
From: David Woodhouse <dwmw@amazon.co.uk>
Also update the test to specify which device to attach the test socket
to, and remove the comment lamenting the fact that we can't do so.
Signed-off-by: David Woodhouse <dwmw@amazon.co.uk>
---
hw/arm/npcm7xx.c | 16 +++++++++-------
tests/qtest/npcm7xx_emc-test.c | 18 ++++--------------
2 files changed, 13 insertions(+), 21 deletions(-)
diff --git a/hw/arm/npcm7xx.c b/hw/arm/npcm7xx.c
index 15ff21d047..ee395864e4 100644
--- a/hw/arm/npcm7xx.c
+++ b/hw/arm/npcm7xx.c
@@ -655,8 +655,9 @@ static void npcm7xx_realize(DeviceState *dev, Error **errp)
/*
* EMC Modules. Cannot fail.
- * The mapping of the device to its netdev backend works as follows:
- * emc[i] = nd_table[i]
+ * Use the available NIC configurations in order, allowing 'emc0' and
+ * 'emc1' to by used as aliases for the model= parameter to override.
+ *
* This works around the inability to specify the netdev property for the
* emc device: it's not pluggable and thus the -device option can't be
* used.
@@ -664,12 +665,13 @@ static void npcm7xx_realize(DeviceState *dev, Error **errp)
QEMU_BUILD_BUG_ON(ARRAY_SIZE(npcm7xx_emc_addr) != ARRAY_SIZE(s->emc));
QEMU_BUILD_BUG_ON(ARRAY_SIZE(s->emc) != 2);
for (i = 0; i < ARRAY_SIZE(s->emc); i++) {
- s->emc[i].emc_num = i;
SysBusDevice *sbd = SYS_BUS_DEVICE(&s->emc[i]);
- if (nd_table[i].used) {
- qemu_check_nic_model(&nd_table[i], TYPE_NPCM7XX_EMC);
- qdev_set_nic_properties(DEVICE(sbd), &nd_table[i]);
- }
+ char alias[6];
+
+ s->emc[i].emc_num = i;
+ snprintf(alias, sizeof(alias), "emc%u", i);
+ qemu_configure_nic_device(DEVICE(sbd), true, alias);
+
/*
* The device exists regardless of whether it's connected to a QEMU
* netdev backend. So always instantiate it even if there is no
diff --git a/tests/qtest/npcm7xx_emc-test.c b/tests/qtest/npcm7xx_emc-test.c
index b046f1d76a..f7646fae2c 100644
--- a/tests/qtest/npcm7xx_emc-test.c
+++ b/tests/qtest/npcm7xx_emc-test.c
@@ -225,21 +225,11 @@ static int *packet_test_init(int module_num, GString *cmd_line)
g_assert_cmpint(ret, != , -1);
/*
- * KISS and use -nic. We specify two nics (both emc{0,1}) because there's
- * currently no way to specify only emc1: The driver implicitly relies on
- * emc[i] == nd_table[i].
+ * KISS and use -nic. The driver accepts 'emc0' and 'emc1' as aliases
+ * in the 'model' field to specify the device to match.
*/
- if (module_num == 0) {
- g_string_append_printf(cmd_line,
- " -nic socket,fd=%d,model=" TYPE_NPCM7XX_EMC " "
- " -nic user,model=" TYPE_NPCM7XX_EMC " ",
- test_sockets[1]);
- } else {
- g_string_append_printf(cmd_line,
- " -nic user,model=" TYPE_NPCM7XX_EMC " "
- " -nic socket,fd=%d,model=" TYPE_NPCM7XX_EMC " ",
- test_sockets[1]);
- }
+ g_string_append_printf(cmd_line, " -nic socket,fd=%d,model=emc%d ",
+ test_sockets[1], module_num);
g_test_queue_destroy(packet_test_clear, test_sockets);
return test_sockets;
--
2.41.0
^ permalink raw reply related [flat|nested] 105+ messages in thread
* [PATCH v3 29/46] hw/arm/stellaris: use qemu_find_nic_info()
2024-01-08 20:26 [PATCH v3 00/46] Rework matching of network devices to -nic options David Woodhouse
` (27 preceding siblings ...)
2024-01-08 20:26 ` [PATCH v3 28/46] hw/arm/npcm7xx: use qemu_configure_nic_device, allow emc0/emc1 as aliases David Woodhouse
@ 2024-01-08 20:26 ` David Woodhouse
2024-01-08 20:26 ` [PATCH v3 30/46] hw/arm: use qemu_configure_nic_device() David Woodhouse
` (17 subsequent siblings)
46 siblings, 0 replies; 105+ messages in thread
From: David Woodhouse @ 2024-01-08 20:26 UTC (permalink / raw)
To: qemu-devel
Cc: Richard Henderson, Beniamino Galvani, Peter Maydell,
Strahinja Jankovic, Niek Linnenbank, Cédric Le Goater,
Andrew Jeffery, Joel Stanley, Igor Mitsyanko,
Jean-Christophe Dubois, Andrey Smirnov,
Philippe Mathieu-Daudé, Rob Herring, Subbaraya Sundeep,
Jan Kiszka, Tyrone Ting, Hao Wu, Radoslaw Biernacki,
Leif Lindholm, Marcin Juszkiewicz, Edgar E. Iglesias,
Alistair Francis, Helge Deller, Paolo Bonzini, Eduardo Habkost,
Michael S. Tsirkin, Marcel Apfelbaum, Song Gao, Thomas Huth,
Laurent Vivier, Huacai Chen, Jiaxun Yang, Hervé Poussineau,
Aleksandar Rikalo, Aurelien Jarno, Jason Wang, Jia Liu,
Stafford Horne, Mark Cave-Ayland, Nicholas Piggin,
Daniel Henrique Barboza, David Gibson, Harsh Prateek Bora,
Bin Meng, Palmer Dabbelt, Weiwei Li, Liu Zhiwei, Halil Pasic,
Christian Borntraeger, Eric Farman, David Hildenbrand,
Ilya Leoshkevich, Yoshinori Sato, Magnus Damm, Artyom Tarasenko,
Stefano Stabellini, Anthony Perard, Paul Durrant, Max Filippov,
qemu-arm, qemu-ppc, qemu-riscv, qemu-s390x, xen-devel,
David Woodhouse
From: David Woodhouse <dwmw@amazon.co.uk>
Rather than just using qemu_configure_nic_device(), populate the MAC
address in the system-registers device by peeking at the NICInfo before
it's assigned to the device.
Generate the MAC address early, if there is no matching -nic option.
Otherwise the MAC address wouldn't be generated until net_client_init1()
runs.
Signed-off-by: David Woodhouse <dwmw@amazon.co.uk>
---
hw/arm/stellaris.c | 30 ++++++++++++++++++++++--------
1 file changed, 22 insertions(+), 8 deletions(-)
diff --git a/hw/arm/stellaris.c b/hw/arm/stellaris.c
index 729a8bf569..e8e1c83413 100644
--- a/hw/arm/stellaris.c
+++ b/hw/arm/stellaris.c
@@ -1027,7 +1027,8 @@ static void stellaris_init(MachineState *ms, stellaris_board_info *board)
DeviceState *ssys_dev;
int i;
int j;
- const uint8_t *macaddr;
+ NICInfo *nd;
+ MACAddr mac;
MemoryRegion *sram = g_new(MemoryRegion, 1);
MemoryRegion *flash = g_new(MemoryRegion, 1);
@@ -1050,12 +1051,22 @@ static void stellaris_init(MachineState *ms, stellaris_board_info *board)
* need its sysclk output.
*/
ssys_dev = qdev_new(TYPE_STELLARIS_SYS);
- /* Most devices come preprogrammed with a MAC address in the user data. */
- macaddr = nd_table[0].macaddr.a;
+
+ /*
+ * Most devices come preprogrammed with a MAC address in the user data.
+ * Generate a MAC address now, if there isn't a matching -nic for it.
+ */
+ nd = qemu_find_nic_info("stellaris_enet", true, "stellaris");
+ if (nd) {
+ memcpy(mac.a, nd->macaddr.a, sizeof(mac.a));
+ } else {
+ qemu_macaddr_default_if_unset(&mac);
+ }
+
qdev_prop_set_uint32(ssys_dev, "user0",
- macaddr[0] | (macaddr[1] << 8) | (macaddr[2] << 16));
+ mac.a[0] | (mac.a[1] << 8) | (mac.a[2] << 16));
qdev_prop_set_uint32(ssys_dev, "user1",
- macaddr[3] | (macaddr[4] << 8) | (macaddr[5] << 16));
+ mac.a[3] | (mac.a[4] << 8) | (mac.a[5] << 16));
qdev_prop_set_uint32(ssys_dev, "did0", board->did0);
qdev_prop_set_uint32(ssys_dev, "did1", board->did1);
qdev_prop_set_uint32(ssys_dev, "dc0", board->dc0);
@@ -1267,10 +1278,13 @@ static void stellaris_init(MachineState *ms, stellaris_board_info *board)
if (board->dc4 & (1 << 28)) {
DeviceState *enet;
- qemu_check_nic_model(&nd_table[0], "stellaris");
-
enet = qdev_new("stellaris_enet");
- qdev_set_nic_properties(enet, &nd_table[0]);
+ if (nd) {
+ qdev_set_nic_properties(enet, nd);
+ } else {
+ qdev_prop_set_macaddr(enet, "mac", mac.a);
+ }
+
sysbus_realize_and_unref(SYS_BUS_DEVICE(enet), &error_fatal);
sysbus_mmio_map(SYS_BUS_DEVICE(enet), 0, 0x40048000);
sysbus_connect_irq(SYS_BUS_DEVICE(enet), 0, qdev_get_gpio_in(nvic, 42));
--
2.41.0
^ permalink raw reply related [flat|nested] 105+ messages in thread
* [PATCH v3 30/46] hw/arm: use qemu_configure_nic_device()
2024-01-08 20:26 [PATCH v3 00/46] Rework matching of network devices to -nic options David Woodhouse
` (28 preceding siblings ...)
2024-01-08 20:26 ` [PATCH v3 29/46] hw/arm/stellaris: use qemu_find_nic_info() David Woodhouse
@ 2024-01-08 20:26 ` David Woodhouse
2024-01-08 20:27 ` [PATCH v3 31/46] hw/net/etraxfs-eth: " David Woodhouse
` (16 subsequent siblings)
46 siblings, 0 replies; 105+ messages in thread
From: David Woodhouse @ 2024-01-08 20:26 UTC (permalink / raw)
To: qemu-devel
Cc: Richard Henderson, Beniamino Galvani, Peter Maydell,
Strahinja Jankovic, Niek Linnenbank, Cédric Le Goater,
Andrew Jeffery, Joel Stanley, Igor Mitsyanko,
Jean-Christophe Dubois, Andrey Smirnov,
Philippe Mathieu-Daudé, Rob Herring, Subbaraya Sundeep,
Jan Kiszka, Tyrone Ting, Hao Wu, Radoslaw Biernacki,
Leif Lindholm, Marcin Juszkiewicz, Edgar E. Iglesias,
Alistair Francis, Helge Deller, Paolo Bonzini, Eduardo Habkost,
Michael S. Tsirkin, Marcel Apfelbaum, Song Gao, Thomas Huth,
Laurent Vivier, Huacai Chen, Jiaxun Yang, Hervé Poussineau,
Aleksandar Rikalo, Aurelien Jarno, Jason Wang, Jia Liu,
Stafford Horne, Mark Cave-Ayland, Nicholas Piggin,
Daniel Henrique Barboza, David Gibson, Harsh Prateek Bora,
Bin Meng, Palmer Dabbelt, Weiwei Li, Liu Zhiwei, Halil Pasic,
Christian Borntraeger, Eric Farman, David Hildenbrand,
Ilya Leoshkevich, Yoshinori Sato, Magnus Damm, Artyom Tarasenko,
Stefano Stabellini, Anthony Perard, Paul Durrant, Max Filippov,
qemu-arm, qemu-ppc, qemu-riscv, qemu-s390x, xen-devel,
David Woodhouse
From: David Woodhouse <dwmw@amazon.co.uk>
Signed-off-by: David Woodhouse <dwmw@amazon.co.uk>
---
hw/arm/mps2-tz.c | 8 ++------
hw/arm/msf2-soc.c | 6 +-----
hw/arm/musicpal.c | 3 +--
hw/arm/xilinx_zynq.c | 11 ++++-------
hw/arm/xlnx-versal.c | 7 +------
hw/arm/xlnx-zynqmp.c | 8 +-------
6 files changed, 10 insertions(+), 33 deletions(-)
diff --git a/hw/arm/mps2-tz.c b/hw/arm/mps2-tz.c
index 5d8cdc1a4c..a2d18afd79 100644
--- a/hw/arm/mps2-tz.c
+++ b/hw/arm/mps2-tz.c
@@ -503,14 +503,12 @@ static MemoryRegion *make_eth_dev(MPS2TZMachineState *mms, void *opaque,
const PPCExtraData *extradata)
{
SysBusDevice *s;
- NICInfo *nd = &nd_table[0];
/* In hardware this is a LAN9220; the LAN9118 is software compatible
* except that it doesn't support the checksum-offload feature.
*/
- qemu_check_nic_model(nd, "lan9118");
mms->lan9118 = qdev_new(TYPE_LAN9118);
- qdev_set_nic_properties(mms->lan9118, nd);
+ qemu_configure_nic_device(mms->lan9118, true, NULL);
s = SYS_BUS_DEVICE(mms->lan9118);
sysbus_realize_and_unref(s, &error_fatal);
@@ -528,7 +526,6 @@ static MemoryRegion *make_eth_usb(MPS2TZMachineState *mms, void *opaque,
* irqs[] is the ethernet IRQ.
*/
SysBusDevice *s;
- NICInfo *nd = &nd_table[0];
memory_region_init(&mms->eth_usb_container, OBJECT(mms),
"mps2-tz-eth-usb-container", 0x200000);
@@ -537,9 +534,8 @@ static MemoryRegion *make_eth_usb(MPS2TZMachineState *mms, void *opaque,
* In hardware this is a LAN9220; the LAN9118 is software compatible
* except that it doesn't support the checksum-offload feature.
*/
- qemu_check_nic_model(nd, "lan9118");
mms->lan9118 = qdev_new(TYPE_LAN9118);
- qdev_set_nic_properties(mms->lan9118, nd);
+ qemu_configure_nic_device(mms->lan9118, true, NULL);
s = SYS_BUS_DEVICE(mms->lan9118);
sysbus_realize_and_unref(s, &error_fatal);
diff --git a/hw/arm/msf2-soc.c b/hw/arm/msf2-soc.c
index b5fe9f364d..35bf1d64e1 100644
--- a/hw/arm/msf2-soc.c
+++ b/hw/arm/msf2-soc.c
@@ -197,12 +197,8 @@ static void m2sxxx_soc_realize(DeviceState *dev_soc, Error **errp)
g_free(bus_name);
}
- /* FIXME use qdev NIC properties instead of nd_table[] */
- if (nd_table[0].used) {
- qemu_check_nic_model(&nd_table[0], TYPE_MSS_EMAC);
- qdev_set_nic_properties(DEVICE(&s->emac), &nd_table[0]);
- }
dev = DEVICE(&s->emac);
+ qemu_configure_nic_device(dev, true, NULL);
object_property_set_link(OBJECT(&s->emac), "ahb-bus",
OBJECT(get_system_memory()), &error_abort);
if (!sysbus_realize(SYS_BUS_DEVICE(&s->emac), errp)) {
diff --git a/hw/arm/musicpal.c b/hw/arm/musicpal.c
index 3200c9f68a..8781e99d27 100644
--- a/hw/arm/musicpal.c
+++ b/hw/arm/musicpal.c
@@ -1286,9 +1286,8 @@ static void musicpal_init(MachineState *machine)
}
sysbus_create_simple(TYPE_MV88W8618_FLASHCFG, MP_FLASHCFG_BASE, NULL);
- qemu_check_nic_model(&nd_table[0], "mv88w8618");
dev = qdev_new(TYPE_MV88W8618_ETH);
- qdev_set_nic_properties(dev, &nd_table[0]);
+ qemu_configure_nic_device(dev, true, "mv88w8618");
object_property_set_link(OBJECT(dev), "dma-memory",
OBJECT(get_system_memory()), &error_fatal);
sysbus_realize_and_unref(SYS_BUS_DEVICE(dev), &error_fatal);
diff --git a/hw/arm/xilinx_zynq.c b/hw/arm/xilinx_zynq.c
index dbb9793aa1..73a6472b91 100644
--- a/hw/arm/xilinx_zynq.c
+++ b/hw/arm/xilinx_zynq.c
@@ -108,16 +108,13 @@ static void zynq_write_board_setup(ARMCPU *cpu,
static struct arm_boot_info zynq_binfo = {};
-static void gem_init(NICInfo *nd, uint32_t base, qemu_irq irq)
+static void gem_init(uint32_t base, qemu_irq irq)
{
DeviceState *dev;
SysBusDevice *s;
dev = qdev_new(TYPE_CADENCE_GEM);
- if (nd->used) {
- qemu_check_nic_model(nd, TYPE_CADENCE_GEM);
- qdev_set_nic_properties(dev, nd);
- }
+ qemu_configure_nic_device(dev, true, NULL);
object_property_set_int(OBJECT(dev), "phy-addr", 7, &error_abort);
s = SYS_BUS_DEVICE(dev);
sysbus_realize_and_unref(s, &error_fatal);
@@ -279,8 +276,8 @@ static void zynq_init(MachineState *machine)
sysbus_create_varargs("cadence_ttc", 0xF8002000,
pic[69-IRQ_OFFSET], pic[70-IRQ_OFFSET], pic[71-IRQ_OFFSET], NULL);
- gem_init(&nd_table[0], 0xE000B000, pic[54-IRQ_OFFSET]);
- gem_init(&nd_table[1], 0xE000C000, pic[77-IRQ_OFFSET]);
+ gem_init(0xE000B000, pic[54 - IRQ_OFFSET]);
+ gem_init(0xE000C000, pic[77 - IRQ_OFFSET]);
for (n = 0; n < 2; n++) {
int hci_irq = n ? 79 : 56;
diff --git a/hw/arm/xlnx-versal.c b/hw/arm/xlnx-versal.c
index 9600551c44..01965ddf99 100644
--- a/hw/arm/xlnx-versal.c
+++ b/hw/arm/xlnx-versal.c
@@ -254,18 +254,13 @@ static void versal_create_gems(Versal *s, qemu_irq *pic)
static const int irqs[] = { VERSAL_GEM0_IRQ_0, VERSAL_GEM1_IRQ_0};
static const uint64_t addrs[] = { MM_GEM0, MM_GEM1 };
char *name = g_strdup_printf("gem%d", i);
- NICInfo *nd = &nd_table[i];
DeviceState *dev;
MemoryRegion *mr;
object_initialize_child(OBJECT(s), name, &s->lpd.iou.gem[i],
TYPE_CADENCE_GEM);
dev = DEVICE(&s->lpd.iou.gem[i]);
- /* FIXME use qdev NIC properties instead of nd_table[] */
- if (nd->used) {
- qemu_check_nic_model(nd, "cadence_gem");
- qdev_set_nic_properties(dev, nd);
- }
+ qemu_configure_nic_device(dev, true, NULL);
object_property_set_int(OBJECT(dev), "phy-addr", 23, &error_abort);
object_property_set_int(OBJECT(dev), "num-priority-queues", 2,
&error_abort);
diff --git a/hw/arm/xlnx-zynqmp.c b/hw/arm/xlnx-zynqmp.c
index 5905a33015..4f1714e4a1 100644
--- a/hw/arm/xlnx-zynqmp.c
+++ b/hw/arm/xlnx-zynqmp.c
@@ -616,13 +616,7 @@ static void xlnx_zynqmp_realize(DeviceState *dev, Error **errp)
}
for (i = 0; i < XLNX_ZYNQMP_NUM_GEMS; i++) {
- NICInfo *nd = &nd_table[i];
-
- /* FIXME use qdev NIC properties instead of nd_table[] */
- if (nd->used) {
- qemu_check_nic_model(nd, TYPE_CADENCE_GEM);
- qdev_set_nic_properties(DEVICE(&s->gem[i]), nd);
- }
+ qemu_configure_nic_device(DEVICE(&s->gem[i]), true, NULL);
object_property_set_int(OBJECT(&s->gem[i]), "revision", GEM_REVISION,
&error_abort);
object_property_set_int(OBJECT(&s->gem[i]), "phy-addr", 23,
--
2.41.0
^ permalink raw reply related [flat|nested] 105+ messages in thread
* [PATCH v3 31/46] hw/net/etraxfs-eth: use qemu_configure_nic_device()
2024-01-08 20:26 [PATCH v3 00/46] Rework matching of network devices to -nic options David Woodhouse
` (29 preceding siblings ...)
2024-01-08 20:26 ` [PATCH v3 30/46] hw/arm: use qemu_configure_nic_device() David Woodhouse
@ 2024-01-08 20:27 ` David Woodhouse
2024-01-26 16:23 ` Thomas Huth
2024-01-08 20:27 ` [PATCH v3 32/46] hw/m68k/mcf5208: use qemu_create_nic_device() David Woodhouse
` (15 subsequent siblings)
46 siblings, 1 reply; 105+ messages in thread
From: David Woodhouse @ 2024-01-08 20:27 UTC (permalink / raw)
To: qemu-devel
Cc: Richard Henderson, Beniamino Galvani, Peter Maydell,
Strahinja Jankovic, Niek Linnenbank, Cédric Le Goater,
Andrew Jeffery, Joel Stanley, Igor Mitsyanko,
Jean-Christophe Dubois, Andrey Smirnov,
Philippe Mathieu-Daudé, Rob Herring, Subbaraya Sundeep,
Jan Kiszka, Tyrone Ting, Hao Wu, Radoslaw Biernacki,
Leif Lindholm, Marcin Juszkiewicz, Edgar E. Iglesias,
Alistair Francis, Helge Deller, Paolo Bonzini, Eduardo Habkost,
Michael S. Tsirkin, Marcel Apfelbaum, Song Gao, Thomas Huth,
Laurent Vivier, Huacai Chen, Jiaxun Yang, Hervé Poussineau,
Aleksandar Rikalo, Aurelien Jarno, Jason Wang, Jia Liu,
Stafford Horne, Mark Cave-Ayland, Nicholas Piggin,
Daniel Henrique Barboza, David Gibson, Harsh Prateek Bora,
Bin Meng, Palmer Dabbelt, Weiwei Li, Liu Zhiwei, Halil Pasic,
Christian Borntraeger, Eric Farman, David Hildenbrand,
Ilya Leoshkevich, Yoshinori Sato, Magnus Damm, Artyom Tarasenko,
Stefano Stabellini, Anthony Perard, Paul Durrant, Max Filippov,
qemu-arm, qemu-ppc, qemu-riscv, qemu-s390x, xen-devel,
David Woodhouse
From: David Woodhouse <dwmw@amazon.co.uk>
Signed-off-by: David Woodhouse <dwmw@amazon.co.uk>
---
hw/cris/axis_dev88.c | 9 ++++-----
hw/net/etraxfs_eth.c | 5 ++---
include/hw/cris/etraxfs.h | 2 +-
3 files changed, 7 insertions(+), 9 deletions(-)
diff --git a/hw/cris/axis_dev88.c b/hw/cris/axis_dev88.c
index d82050d927..5556634921 100644
--- a/hw/cris/axis_dev88.c
+++ b/hw/cris/axis_dev88.c
@@ -308,15 +308,14 @@ void axisdev88_init(MachineState *machine)
/* Add the two ethernet blocks. */
dma_eth = g_malloc0(sizeof dma_eth[0] * 4); /* Allocate 4 channels. */
- etraxfs_eth_init(&nd_table[0], 0x30034000, 1, &dma_eth[0], &dma_eth[1]);
- if (nb_nics > 1) {
- etraxfs_eth_init(&nd_table[1], 0x30036000, 2, &dma_eth[2], &dma_eth[3]);
- }
+ etraxfs_eth_init(0x30034000, 1, &dma_eth[0], &dma_eth[1]);
/* The DMA Connector block is missing, hardwire things for now. */
etraxfs_dmac_connect_client(etraxfs_dmac, 0, &dma_eth[0]);
etraxfs_dmac_connect_client(etraxfs_dmac, 1, &dma_eth[1]);
- if (nb_nics > 1) {
+
+ if (qemu_find_nic_info("etraxfs-eth", true, "fseth")) {
+ etraxfs_eth_init(0x30036000, 2, &dma_eth[2], &dma_eth[3]);
etraxfs_dmac_connect_client(etraxfs_dmac, 6, &dma_eth[2]);
etraxfs_dmac_connect_client(etraxfs_dmac, 7, &dma_eth[3]);
}
diff --git a/hw/net/etraxfs_eth.c b/hw/net/etraxfs_eth.c
index ba57a978d1..5faf20c782 100644
--- a/hw/net/etraxfs_eth.c
+++ b/hw/net/etraxfs_eth.c
@@ -647,15 +647,14 @@ static void etraxfs_eth_class_init(ObjectClass *klass, void *data)
/* Instantiate an ETRAXFS Ethernet MAC. */
DeviceState *
-etraxfs_eth_init(NICInfo *nd, hwaddr base, int phyaddr,
+etraxfs_eth_init(hwaddr base, int phyaddr,
struct etraxfs_dma_client *dma_out,
struct etraxfs_dma_client *dma_in)
{
DeviceState *dev;
- qemu_check_nic_model(nd, "fseth");
dev = qdev_new("etraxfs-eth");
- qdev_set_nic_properties(dev, nd);
+ qemu_configure_nic_device(dev, true, "fseth");
qdev_prop_set_uint32(dev, "phyaddr", phyaddr);
/*
diff --git a/include/hw/cris/etraxfs.h b/include/hw/cris/etraxfs.h
index 467b529dc0..012c4e9974 100644
--- a/include/hw/cris/etraxfs.h
+++ b/include/hw/cris/etraxfs.h
@@ -31,7 +31,7 @@
#include "hw/sysbus.h"
#include "qapi/error.h"
-DeviceState *etraxfs_eth_init(NICInfo *nd, hwaddr base, int phyaddr,
+DeviceState *etraxfs_eth_init(hwaddr base, int phyaddr,
struct etraxfs_dma_client *dma_out,
struct etraxfs_dma_client *dma_in);
--
2.41.0
^ permalink raw reply related [flat|nested] 105+ messages in thread
* [PATCH v3 32/46] hw/m68k/mcf5208: use qemu_create_nic_device()
2024-01-08 20:26 [PATCH v3 00/46] Rework matching of network devices to -nic options David Woodhouse
` (30 preceding siblings ...)
2024-01-08 20:27 ` [PATCH v3 31/46] hw/net/etraxfs-eth: " David Woodhouse
@ 2024-01-08 20:27 ` David Woodhouse
2024-01-26 15:51 ` Thomas Huth
2024-01-08 20:27 ` [PATCH v3 33/46] hw/m68k/q800: use qemu_find_nic_info() David Woodhouse
` (14 subsequent siblings)
46 siblings, 1 reply; 105+ messages in thread
From: David Woodhouse @ 2024-01-08 20:27 UTC (permalink / raw)
To: qemu-devel
Cc: Richard Henderson, Beniamino Galvani, Peter Maydell,
Strahinja Jankovic, Niek Linnenbank, Cédric Le Goater,
Andrew Jeffery, Joel Stanley, Igor Mitsyanko,
Jean-Christophe Dubois, Andrey Smirnov,
Philippe Mathieu-Daudé, Rob Herring, Subbaraya Sundeep,
Jan Kiszka, Tyrone Ting, Hao Wu, Radoslaw Biernacki,
Leif Lindholm, Marcin Juszkiewicz, Edgar E. Iglesias,
Alistair Francis, Helge Deller, Paolo Bonzini, Eduardo Habkost,
Michael S. Tsirkin, Marcel Apfelbaum, Song Gao, Thomas Huth,
Laurent Vivier, Huacai Chen, Jiaxun Yang, Hervé Poussineau,
Aleksandar Rikalo, Aurelien Jarno, Jason Wang, Jia Liu,
Stafford Horne, Mark Cave-Ayland, Nicholas Piggin,
Daniel Henrique Barboza, David Gibson, Harsh Prateek Bora,
Bin Meng, Palmer Dabbelt, Weiwei Li, Liu Zhiwei, Halil Pasic,
Christian Borntraeger, Eric Farman, David Hildenbrand,
Ilya Leoshkevich, Yoshinori Sato, Magnus Damm, Artyom Tarasenko,
Stefano Stabellini, Anthony Perard, Paul Durrant, Max Filippov,
qemu-arm, qemu-ppc, qemu-riscv, qemu-s390x, xen-devel,
David Woodhouse
From: David Woodhouse <dwmw@amazon.co.uk>
Signed-off-by: David Woodhouse <dwmw@amazon.co.uk>
---
hw/m68k/mcf5208.c | 19 ++++++-------------
1 file changed, 6 insertions(+), 13 deletions(-)
diff --git a/hw/m68k/mcf5208.c b/hw/m68k/mcf5208.c
index d22d8536db..0cfb806c20 100644
--- a/hw/m68k/mcf5208.c
+++ b/hw/m68k/mcf5208.c
@@ -206,16 +206,16 @@ static void mcf5208_sys_init(MemoryRegion *address_space, qemu_irq *pic)
}
}
-static void mcf_fec_init(MemoryRegion *sysmem, NICInfo *nd, hwaddr base,
- qemu_irq *irqs)
+static void mcf_fec_init(MemoryRegion *sysmem, hwaddr base, qemu_irq *irqs)
{
DeviceState *dev;
SysBusDevice *s;
int i;
- qemu_check_nic_model(nd, TYPE_MCF_FEC_NET);
- dev = qdev_new(TYPE_MCF_FEC_NET);
- qdev_set_nic_properties(dev, nd);
+ dev = qemu_create_nic_device(TYPE_MCF_FEC_NET, true, NULL);
+ if (!dev) {
+ return;
+ }
s = SYS_BUS_DEVICE(dev);
sysbus_realize_and_unref(s, &error_fatal);
@@ -267,14 +267,7 @@ static void mcf5208evb_init(MachineState *machine)
mcf5208_sys_init(address_space_mem, pic);
- if (nb_nics > 1) {
- error_report("Too many NICs");
- exit(1);
- }
- if (nd_table[0].used) {
- mcf_fec_init(address_space_mem, &nd_table[0],
- 0xfc030000, pic + 36);
- }
+ mcf_fec_init(address_space_mem, 0xfc030000, pic + 36);
g_free(pic);
--
2.41.0
^ permalink raw reply related [flat|nested] 105+ messages in thread
* [PATCH v3 33/46] hw/m68k/q800: use qemu_find_nic_info()
2024-01-08 20:26 [PATCH v3 00/46] Rework matching of network devices to -nic options David Woodhouse
` (31 preceding siblings ...)
2024-01-08 20:27 ` [PATCH v3 32/46] hw/m68k/mcf5208: use qemu_create_nic_device() David Woodhouse
@ 2024-01-08 20:27 ` David Woodhouse
2024-01-08 20:27 ` [PATCH v3 34/46] hw/microblaze: use qemu_configure_nic_device() David Woodhouse
` (13 subsequent siblings)
46 siblings, 0 replies; 105+ messages in thread
From: David Woodhouse @ 2024-01-08 20:27 UTC (permalink / raw)
To: qemu-devel
Cc: Richard Henderson, Beniamino Galvani, Peter Maydell,
Strahinja Jankovic, Niek Linnenbank, Cédric Le Goater,
Andrew Jeffery, Joel Stanley, Igor Mitsyanko,
Jean-Christophe Dubois, Andrey Smirnov,
Philippe Mathieu-Daudé, Rob Herring, Subbaraya Sundeep,
Jan Kiszka, Tyrone Ting, Hao Wu, Radoslaw Biernacki,
Leif Lindholm, Marcin Juszkiewicz, Edgar E. Iglesias,
Alistair Francis, Helge Deller, Paolo Bonzini, Eduardo Habkost,
Michael S. Tsirkin, Marcel Apfelbaum, Song Gao, Thomas Huth,
Laurent Vivier, Huacai Chen, Jiaxun Yang, Hervé Poussineau,
Aleksandar Rikalo, Aurelien Jarno, Jason Wang, Jia Liu,
Stafford Horne, Mark Cave-Ayland, Nicholas Piggin,
Daniel Henrique Barboza, David Gibson, Harsh Prateek Bora,
Bin Meng, Palmer Dabbelt, Weiwei Li, Liu Zhiwei, Halil Pasic,
Christian Borntraeger, Eric Farman, David Hildenbrand,
Ilya Leoshkevich, Yoshinori Sato, Magnus Damm, Artyom Tarasenko,
Stefano Stabellini, Anthony Perard, Paul Durrant, Max Filippov,
qemu-arm, qemu-ppc, qemu-riscv, qemu-s390x, xen-devel,
David Woodhouse
From: David Woodhouse <dwmw@amazon.co.uk>
If a corresponding NIC configuration was found, it will have a MAC address
already assigned, so use that. Else, generate and assign a default one.
Using qemu_find_nic_info() is simpler than the alternative of using
qemu_configure_nic_device() and then having to fetch the "mac" property
as a string and convert it.
Signed-off-by: David Woodhouse <dwmw@amazon.co.uk>
---
hw/m68k/q800.c | 29 ++++++++++++++++-------------
1 file changed, 16 insertions(+), 13 deletions(-)
diff --git a/hw/m68k/q800.c b/hw/m68k/q800.c
index 83d1571d02..c9e7bdf197 100644
--- a/hw/m68k/q800.c
+++ b/hw/m68k/q800.c
@@ -48,6 +48,7 @@
#include "hw/display/macfb.h"
#include "hw/block/swim.h"
#include "net/net.h"
+#include "net/util.h"
#include "qapi/error.h"
#include "qemu/error-report.h"
#include "sysemu/qtest.h"
@@ -271,6 +272,8 @@ static void q800_machine_init(MachineState *machine)
BusState *adb_bus;
NubusBus *nubus;
DriveInfo *dinfo;
+ NICInfo *nd;
+ MACAddr mac;
uint8_t rng_seed[32];
linux_boot = (kernel_filename != NULL);
@@ -371,13 +374,6 @@ static void q800_machine_init(MachineState *machine)
/* MACSONIC */
- if (nb_nics > 1) {
- error_report("q800 can only have one ethernet interface");
- exit(1);
- }
-
- qemu_check_nic_model(&nd_table[0], "dp83932");
-
/*
* MacSonic driver needs an Apple MAC address
* Valid prefix are:
@@ -387,14 +383,21 @@ static void q800_machine_init(MachineState *machine)
* 08:00:07 Apple
* (Q800 use the last one)
*/
- nd_table[0].macaddr.a[0] = 0x08;
- nd_table[0].macaddr.a[1] = 0x00;
- nd_table[0].macaddr.a[2] = 0x07;
-
object_initialize_child(OBJECT(machine), "dp8393x", &m->dp8393x,
TYPE_DP8393X);
dev = DEVICE(&m->dp8393x);
- qdev_set_nic_properties(dev, &nd_table[0]);
+ nd = qemu_find_nic_info(TYPE_DP8393X, true, "dp83932");
+ if (nd) {
+ qdev_set_nic_properties(dev, nd);
+ memcpy(mac.a, nd->macaddr.a, sizeof(mac.a));
+ } else {
+ qemu_macaddr_default_if_unset(&mac);
+ }
+ mac.a[0] = 0x08;
+ mac.a[1] = 0x00;
+ mac.a[2] = 0x07;
+ qdev_prop_set_macaddr(dev, "mac", mac.a);
+
qdev_prop_set_uint8(dev, "it_shift", 2);
qdev_prop_set_bit(dev, "big_endian", true);
object_property_set_link(OBJECT(dev), "dma_mr",
@@ -415,7 +418,7 @@ static void q800_machine_init(MachineState *machine)
prom = memory_region_get_ram_ptr(dp8393x_prom);
checksum = 0;
for (i = 0; i < 6; i++) {
- prom[i] = revbit8(nd_table[0].macaddr.a[i]);
+ prom[i] = revbit8(mac.a[i]);
checksum ^= prom[i];
}
prom[7] = 0xff - checksum;
--
2.41.0
^ permalink raw reply related [flat|nested] 105+ messages in thread
* [PATCH v3 34/46] hw/microblaze: use qemu_configure_nic_device()
2024-01-08 20:26 [PATCH v3 00/46] Rework matching of network devices to -nic options David Woodhouse
` (32 preceding siblings ...)
2024-01-08 20:27 ` [PATCH v3 33/46] hw/m68k/q800: use qemu_find_nic_info() David Woodhouse
@ 2024-01-08 20:27 ` David Woodhouse
2024-01-26 15:57 ` Thomas Huth
2024-01-08 20:27 ` [PATCH v3 35/46] hw/mips/mipssim: use qemu_create_nic_device() David Woodhouse
` (12 subsequent siblings)
46 siblings, 1 reply; 105+ messages in thread
From: David Woodhouse @ 2024-01-08 20:27 UTC (permalink / raw)
To: qemu-devel
Cc: Richard Henderson, Beniamino Galvani, Peter Maydell,
Strahinja Jankovic, Niek Linnenbank, Cédric Le Goater,
Andrew Jeffery, Joel Stanley, Igor Mitsyanko,
Jean-Christophe Dubois, Andrey Smirnov,
Philippe Mathieu-Daudé, Rob Herring, Subbaraya Sundeep,
Jan Kiszka, Tyrone Ting, Hao Wu, Radoslaw Biernacki,
Leif Lindholm, Marcin Juszkiewicz, Edgar E. Iglesias,
Alistair Francis, Helge Deller, Paolo Bonzini, Eduardo Habkost,
Michael S. Tsirkin, Marcel Apfelbaum, Song Gao, Thomas Huth,
Laurent Vivier, Huacai Chen, Jiaxun Yang, Hervé Poussineau,
Aleksandar Rikalo, Aurelien Jarno, Jason Wang, Jia Liu,
Stafford Horne, Mark Cave-Ayland, Nicholas Piggin,
Daniel Henrique Barboza, David Gibson, Harsh Prateek Bora,
Bin Meng, Palmer Dabbelt, Weiwei Li, Liu Zhiwei, Halil Pasic,
Christian Borntraeger, Eric Farman, David Hildenbrand,
Ilya Leoshkevich, Yoshinori Sato, Magnus Damm, Artyom Tarasenko,
Stefano Stabellini, Anthony Perard, Paul Durrant, Max Filippov,
qemu-arm, qemu-ppc, qemu-riscv, qemu-s390x, xen-devel,
David Woodhouse
From: David Woodhouse <dwmw@amazon.co.uk>
Signed-off-by: David Woodhouse <dwmw@amazon.co.uk>
---
hw/microblaze/petalogix_ml605_mmu.c | 3 +--
hw/microblaze/petalogix_s3adsp1800_mmu.c | 3 +--
2 files changed, 2 insertions(+), 4 deletions(-)
diff --git a/hw/microblaze/petalogix_ml605_mmu.c b/hw/microblaze/petalogix_ml605_mmu.c
index fb7889cf67..0f5fabc32e 100644
--- a/hw/microblaze/petalogix_ml605_mmu.c
+++ b/hw/microblaze/petalogix_ml605_mmu.c
@@ -133,7 +133,6 @@ petalogix_ml605_init(MachineState *machine)
sysbus_connect_irq(SYS_BUS_DEVICE(dev), 0, irq[TIMER_IRQ]);
/* axi ethernet and dma initialization. */
- qemu_check_nic_model(&nd_table[0], "xlnx.axi-ethernet");
eth0 = qdev_new("xlnx.axi-ethernet");
dma = qdev_new("xlnx.axi-dma");
@@ -145,7 +144,7 @@ petalogix_ml605_init(MachineState *machine)
"axistream-connected-target", NULL);
cs = object_property_get_link(OBJECT(dma),
"axistream-control-connected-target", NULL);
- qdev_set_nic_properties(eth0, &nd_table[0]);
+ qemu_configure_nic_device(eth0, true, NULL);
qdev_prop_set_uint32(eth0, "rxmem", 0x1000);
qdev_prop_set_uint32(eth0, "txmem", 0x1000);
object_property_set_link(OBJECT(eth0), "axistream-connected", ds,
diff --git a/hw/microblaze/petalogix_s3adsp1800_mmu.c b/hw/microblaze/petalogix_s3adsp1800_mmu.c
index 505639c298..dad46bd7f9 100644
--- a/hw/microblaze/petalogix_s3adsp1800_mmu.c
+++ b/hw/microblaze/petalogix_s3adsp1800_mmu.c
@@ -114,9 +114,8 @@ petalogix_s3adsp1800_init(MachineState *machine)
sysbus_mmio_map(SYS_BUS_DEVICE(dev), 0, TIMER_BASEADDR);
sysbus_connect_irq(SYS_BUS_DEVICE(dev), 0, irq[TIMER_IRQ]);
- qemu_check_nic_model(&nd_table[0], "xlnx.xps-ethernetlite");
dev = qdev_new("xlnx.xps-ethernetlite");
- qdev_set_nic_properties(dev, &nd_table[0]);
+ qemu_configure_nic_device(dev, true, NULL);
qdev_prop_set_uint32(dev, "tx-ping-pong", 0);
qdev_prop_set_uint32(dev, "rx-ping-pong", 0);
sysbus_realize_and_unref(SYS_BUS_DEVICE(dev), &error_fatal);
--
2.41.0
^ permalink raw reply related [flat|nested] 105+ messages in thread
* [PATCH v3 35/46] hw/mips/mipssim: use qemu_create_nic_device()
2024-01-08 20:26 [PATCH v3 00/46] Rework matching of network devices to -nic options David Woodhouse
` (33 preceding siblings ...)
2024-01-08 20:27 ` [PATCH v3 34/46] hw/microblaze: use qemu_configure_nic_device() David Woodhouse
@ 2024-01-08 20:27 ` David Woodhouse
2024-01-26 16:20 ` Thomas Huth
2024-01-08 20:27 ` [PATCH v3 36/46] hw/mips/jazz: use qemu_find_nic_info() David Woodhouse
` (11 subsequent siblings)
46 siblings, 1 reply; 105+ messages in thread
From: David Woodhouse @ 2024-01-08 20:27 UTC (permalink / raw)
To: qemu-devel
Cc: Richard Henderson, Beniamino Galvani, Peter Maydell,
Strahinja Jankovic, Niek Linnenbank, Cédric Le Goater,
Andrew Jeffery, Joel Stanley, Igor Mitsyanko,
Jean-Christophe Dubois, Andrey Smirnov,
Philippe Mathieu-Daudé, Rob Herring, Subbaraya Sundeep,
Jan Kiszka, Tyrone Ting, Hao Wu, Radoslaw Biernacki,
Leif Lindholm, Marcin Juszkiewicz, Edgar E. Iglesias,
Alistair Francis, Helge Deller, Paolo Bonzini, Eduardo Habkost,
Michael S. Tsirkin, Marcel Apfelbaum, Song Gao, Thomas Huth,
Laurent Vivier, Huacai Chen, Jiaxun Yang, Hervé Poussineau,
Aleksandar Rikalo, Aurelien Jarno, Jason Wang, Jia Liu,
Stafford Horne, Mark Cave-Ayland, Nicholas Piggin,
Daniel Henrique Barboza, David Gibson, Harsh Prateek Bora,
Bin Meng, Palmer Dabbelt, Weiwei Li, Liu Zhiwei, Halil Pasic,
Christian Borntraeger, Eric Farman, David Hildenbrand,
Ilya Leoshkevich, Yoshinori Sato, Magnus Damm, Artyom Tarasenko,
Stefano Stabellini, Anthony Perard, Paul Durrant, Max Filippov,
qemu-arm, qemu-ppc, qemu-riscv, qemu-s390x, xen-devel,
David Woodhouse
From: David Woodhouse <dwmw@amazon.co.uk>
The MIPS SIM platform instantiates its NIC only if a corresponding
configuration exists for it. Use qemu_create_nic_device() function for
that.
Signed-off-by: David Woodhouse <dwmw@amazon.co.uk>
---
hw/mips/mipssim.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/hw/mips/mipssim.c b/hw/mips/mipssim.c
index 01e323904d..16af31648e 100644
--- a/hw/mips/mipssim.c
+++ b/hw/mips/mipssim.c
@@ -118,13 +118,15 @@ static void main_cpu_reset(void *opaque)
}
}
-static void mipsnet_init(int base, qemu_irq irq, NICInfo *nd)
+static void mipsnet_init(int base, qemu_irq irq)
{
DeviceState *dev;
SysBusDevice *s;
- dev = qdev_new("mipsnet");
- qdev_set_nic_properties(dev, nd);
+ dev = qemu_create_nic_device("mipsnet", true, NULL);
+ if (!dev) {
+ return;
+ }
s = SYS_BUS_DEVICE(dev);
sysbus_realize_and_unref(s, &error_fatal);
@@ -225,9 +227,8 @@ mips_mipssim_init(MachineState *machine)
sysbus_mmio_get_region(SYS_BUS_DEVICE(dev), 0));
}
- if (nd_table[0].used)
- /* MIPSnet uses the MIPS CPU INT0, which is interrupt 2. */
- mipsnet_init(0x4200, env->irq[2], &nd_table[0]);
+ /* MIPSnet uses the MIPS CPU INT0, which is interrupt 2. */
+ mipsnet_init(0x4200, env->irq[2]);
}
static void mips_mipssim_machine_init(MachineClass *mc)
--
2.41.0
^ permalink raw reply related [flat|nested] 105+ messages in thread
* [PATCH v3 36/46] hw/mips/jazz: use qemu_find_nic_info()
2024-01-08 20:26 [PATCH v3 00/46] Rework matching of network devices to -nic options David Woodhouse
` (34 preceding siblings ...)
2024-01-08 20:27 ` [PATCH v3 35/46] hw/mips/mipssim: use qemu_create_nic_device() David Woodhouse
@ 2024-01-08 20:27 ` David Woodhouse
2024-01-26 16:29 ` Thomas Huth
2024-01-08 20:27 ` [PATCH v3 37/46] hw/net/lasi_i82596: use qemu_configure_nic_device() David Woodhouse
` (10 subsequent siblings)
46 siblings, 1 reply; 105+ messages in thread
From: David Woodhouse @ 2024-01-08 20:27 UTC (permalink / raw)
To: qemu-devel
Cc: Richard Henderson, Beniamino Galvani, Peter Maydell,
Strahinja Jankovic, Niek Linnenbank, Cédric Le Goater,
Andrew Jeffery, Joel Stanley, Igor Mitsyanko,
Jean-Christophe Dubois, Andrey Smirnov,
Philippe Mathieu-Daudé, Rob Herring, Subbaraya Sundeep,
Jan Kiszka, Tyrone Ting, Hao Wu, Radoslaw Biernacki,
Leif Lindholm, Marcin Juszkiewicz, Edgar E. Iglesias,
Alistair Francis, Helge Deller, Paolo Bonzini, Eduardo Habkost,
Michael S. Tsirkin, Marcel Apfelbaum, Song Gao, Thomas Huth,
Laurent Vivier, Huacai Chen, Jiaxun Yang, Hervé Poussineau,
Aleksandar Rikalo, Aurelien Jarno, Jason Wang, Jia Liu,
Stafford Horne, Mark Cave-Ayland, Nicholas Piggin,
Daniel Henrique Barboza, David Gibson, Harsh Prateek Bora,
Bin Meng, Palmer Dabbelt, Weiwei Li, Liu Zhiwei, Halil Pasic,
Christian Borntraeger, Eric Farman, David Hildenbrand,
Ilya Leoshkevich, Yoshinori Sato, Magnus Damm, Artyom Tarasenko,
Stefano Stabellini, Anthony Perard, Paul Durrant, Max Filippov,
qemu-arm, qemu-ppc, qemu-riscv, qemu-s390x, xen-devel,
David Woodhouse
From: David Woodhouse <dwmw@amazon.co.uk>
Extract the MAC address from the NICInfo, or generate one explicitly if
there was no corresponding NIC configuration, to put it in the PROM.
Signed-off-by: David Woodhouse <dwmw@amazon.co.uk>
---
hw/mips/jazz.c | 15 +++++++--------
1 file changed, 7 insertions(+), 8 deletions(-)
diff --git a/hw/mips/jazz.c b/hw/mips/jazz.c
index 0d2348aa5a..5bf3e328db 100644
--- a/hw/mips/jazz.c
+++ b/hw/mips/jazz.c
@@ -119,15 +119,19 @@ static const MemoryRegionOps dma_dummy_ops = {
.endianness = DEVICE_NATIVE_ENDIAN,
};
-static void mips_jazz_init_net(NICInfo *nd, IOMMUMemoryRegion *rc4030_dma_mr,
+static void mips_jazz_init_net(IOMMUMemoryRegion *rc4030_dma_mr,
DeviceState *rc4030, MemoryRegion *dp8393x_prom)
{
DeviceState *dev;
SysBusDevice *sysbus;
int checksum, i;
uint8_t *prom;
+ NICInfo *nd;
- qemu_check_nic_model(nd, "dp83932");
+ nd = qemu_find_nic_info("dp8393x", true, "dp82932");
+ if (!nd) {
+ return;
+ }
dev = qdev_new("dp8393x");
qdev_set_nic_properties(dev, nd);
@@ -324,12 +328,7 @@ static void mips_jazz_init(MachineState *machine,
}
/* Network controller */
- if (nb_nics == 1) {
- mips_jazz_init_net(&nd_table[0], rc4030_dma_mr, rc4030, dp8393x_prom);
- } else if (nb_nics > 1) {
- error_report("This machine only supports one NIC");
- exit(1);
- }
+ mips_jazz_init_net(rc4030_dma_mr, rc4030, dp8393x_prom);
/* SCSI adapter */
dev = qdev_new(TYPE_SYSBUS_ESP);
--
2.41.0
^ permalink raw reply related [flat|nested] 105+ messages in thread
* [PATCH v3 37/46] hw/net/lasi_i82596: use qemu_configure_nic_device()
2024-01-08 20:26 [PATCH v3 00/46] Rework matching of network devices to -nic options David Woodhouse
` (35 preceding siblings ...)
2024-01-08 20:27 ` [PATCH v3 36/46] hw/mips/jazz: use qemu_find_nic_info() David Woodhouse
@ 2024-01-08 20:27 ` David Woodhouse
2024-01-26 16:30 ` Thomas Huth
2024-01-08 20:27 ` [PATCH v3 38/46] hw/openrisc/openrisc_sim: use qemu_create_nic_device() David Woodhouse
` (9 subsequent siblings)
46 siblings, 1 reply; 105+ messages in thread
From: David Woodhouse @ 2024-01-08 20:27 UTC (permalink / raw)
To: qemu-devel
Cc: Richard Henderson, Beniamino Galvani, Peter Maydell,
Strahinja Jankovic, Niek Linnenbank, Cédric Le Goater,
Andrew Jeffery, Joel Stanley, Igor Mitsyanko,
Jean-Christophe Dubois, Andrey Smirnov,
Philippe Mathieu-Daudé, Rob Herring, Subbaraya Sundeep,
Jan Kiszka, Tyrone Ting, Hao Wu, Radoslaw Biernacki,
Leif Lindholm, Marcin Juszkiewicz, Edgar E. Iglesias,
Alistair Francis, Helge Deller, Paolo Bonzini, Eduardo Habkost,
Michael S. Tsirkin, Marcel Apfelbaum, Song Gao, Thomas Huth,
Laurent Vivier, Huacai Chen, Jiaxun Yang, Hervé Poussineau,
Aleksandar Rikalo, Aurelien Jarno, Jason Wang, Jia Liu,
Stafford Horne, Mark Cave-Ayland, Nicholas Piggin,
Daniel Henrique Barboza, David Gibson, Harsh Prateek Bora,
Bin Meng, Palmer Dabbelt, Weiwei Li, Liu Zhiwei, Halil Pasic,
Christian Borntraeger, Eric Farman, David Hildenbrand,
Ilya Leoshkevich, Yoshinori Sato, Magnus Damm, Artyom Tarasenko,
Stefano Stabellini, Anthony Perard, Paul Durrant, Max Filippov,
qemu-arm, qemu-ppc, qemu-riscv, qemu-s390x, xen-devel,
David Woodhouse
From: David Woodhouse <dwmw@amazon.co.uk>
Signed-off-by: David Woodhouse <dwmw@amazon.co.uk>
---
hw/net/lasi_i82596.c | 3 +--
1 file changed, 1 insertion(+), 2 deletions(-)
diff --git a/hw/net/lasi_i82596.c b/hw/net/lasi_i82596.c
index 6a3147fe2d..2bb4f2c4ca 100644
--- a/hw/net/lasi_i82596.c
+++ b/hw/net/lasi_i82596.c
@@ -125,11 +125,10 @@ SysBusI82596State *lasi_82596_init(MemoryRegion *addr_space,
static const MACAddr HP_MAC = {
.a = { 0x08, 0x00, 0x09, 0xef, 0x34, 0xf6 } };
- qemu_check_nic_model(&nd_table[0], TYPE_LASI_82596);
dev = qdev_new(TYPE_LASI_82596);
s = SYSBUS_I82596(dev);
s->state.irq = lan_irq;
- qdev_set_nic_properties(dev, &nd_table[0]);
+ qemu_configure_nic_device(dev, true, NULL);
sysbus_realize_and_unref(SYS_BUS_DEVICE(dev), &error_fatal);
s->state.conf.macaddr = HP_MAC; /* set HP MAC prefix */
--
2.41.0
^ permalink raw reply related [flat|nested] 105+ messages in thread
* [PATCH v3 38/46] hw/openrisc/openrisc_sim: use qemu_create_nic_device()
2024-01-08 20:26 [PATCH v3 00/46] Rework matching of network devices to -nic options David Woodhouse
` (36 preceding siblings ...)
2024-01-08 20:27 ` [PATCH v3 37/46] hw/net/lasi_i82596: use qemu_configure_nic_device() David Woodhouse
@ 2024-01-08 20:27 ` David Woodhouse
2024-01-26 16:34 ` Thomas Huth
2024-01-08 20:27 ` [PATCH v3 39/46] hw/riscv: use qemu_configure_nic_device() David Woodhouse
` (8 subsequent siblings)
46 siblings, 1 reply; 105+ messages in thread
From: David Woodhouse @ 2024-01-08 20:27 UTC (permalink / raw)
To: qemu-devel
Cc: Richard Henderson, Beniamino Galvani, Peter Maydell,
Strahinja Jankovic, Niek Linnenbank, Cédric Le Goater,
Andrew Jeffery, Joel Stanley, Igor Mitsyanko,
Jean-Christophe Dubois, Andrey Smirnov,
Philippe Mathieu-Daudé, Rob Herring, Subbaraya Sundeep,
Jan Kiszka, Tyrone Ting, Hao Wu, Radoslaw Biernacki,
Leif Lindholm, Marcin Juszkiewicz, Edgar E. Iglesias,
Alistair Francis, Helge Deller, Paolo Bonzini, Eduardo Habkost,
Michael S. Tsirkin, Marcel Apfelbaum, Song Gao, Thomas Huth,
Laurent Vivier, Huacai Chen, Jiaxun Yang, Hervé Poussineau,
Aleksandar Rikalo, Aurelien Jarno, Jason Wang, Jia Liu,
Stafford Horne, Mark Cave-Ayland, Nicholas Piggin,
Daniel Henrique Barboza, David Gibson, Harsh Prateek Bora,
Bin Meng, Palmer Dabbelt, Weiwei Li, Liu Zhiwei, Halil Pasic,
Christian Borntraeger, Eric Farman, David Hildenbrand,
Ilya Leoshkevich, Yoshinori Sato, Magnus Damm, Artyom Tarasenko,
Stefano Stabellini, Anthony Perard, Paul Durrant, Max Filippov,
qemu-arm, qemu-ppc, qemu-riscv, qemu-s390x, xen-devel,
David Woodhouse
From: David Woodhouse <dwmw@amazon.co.uk>
Signed-off-by: David Woodhouse <dwmw@amazon.co.uk>
---
hw/openrisc/openrisc_sim.c | 18 +++++++++---------
1 file changed, 9 insertions(+), 9 deletions(-)
diff --git a/hw/openrisc/openrisc_sim.c b/hw/openrisc/openrisc_sim.c
index 35da123aef..bffd6f721f 100644
--- a/hw/openrisc/openrisc_sim.c
+++ b/hw/openrisc/openrisc_sim.c
@@ -170,7 +170,7 @@ static void openrisc_create_fdt(Or1ksimState *state,
static void openrisc_sim_net_init(Or1ksimState *state, hwaddr base, hwaddr size,
int num_cpus, OpenRISCCPU *cpus[],
- int irq_pin, NICInfo *nd)
+ int irq_pin)
{
void *fdt = state->fdt;
DeviceState *dev;
@@ -178,8 +178,10 @@ static void openrisc_sim_net_init(Or1ksimState *state, hwaddr base, hwaddr size,
char *nodename;
int i;
- dev = qdev_new("open_eth");
- qdev_set_nic_properties(dev, nd);
+ dev = qemu_create_nic_device("open_eth", true, NULL);
+ if (!dev) {
+ return;
+ }
s = SYS_BUS_DEVICE(dev);
sysbus_realize_and_unref(s, &error_fatal);
@@ -313,12 +315,10 @@ static void openrisc_sim_init(MachineState *machine)
openrisc_create_fdt(state, or1ksim_memmap, smp_cpus, machine->ram_size,
machine->kernel_cmdline);
- if (nd_table[0].used) {
- openrisc_sim_net_init(state, or1ksim_memmap[OR1KSIM_ETHOC].base,
- or1ksim_memmap[OR1KSIM_ETHOC].size,
- smp_cpus, cpus,
- OR1KSIM_ETHOC_IRQ, nd_table);
- }
+ openrisc_sim_net_init(state, or1ksim_memmap[OR1KSIM_ETHOC].base,
+ or1ksim_memmap[OR1KSIM_ETHOC].size,
+ smp_cpus, cpus,
+ OR1KSIM_ETHOC_IRQ);
if (smp_cpus > 1) {
openrisc_sim_ompic_init(state, or1ksim_memmap[OR1KSIM_OMPIC].base,
--
2.41.0
^ permalink raw reply related [flat|nested] 105+ messages in thread
* [PATCH v3 39/46] hw/riscv: use qemu_configure_nic_device()
2024-01-08 20:26 [PATCH v3 00/46] Rework matching of network devices to -nic options David Woodhouse
` (37 preceding siblings ...)
2024-01-08 20:27 ` [PATCH v3 38/46] hw/openrisc/openrisc_sim: use qemu_create_nic_device() David Woodhouse
@ 2024-01-08 20:27 ` David Woodhouse
2024-01-26 16:36 ` Thomas Huth
2024-01-08 20:27 ` [PATCH v3 40/46] hw/s390x/s390-virtio-ccw: use qemu_create_nic_device() David Woodhouse
` (7 subsequent siblings)
46 siblings, 1 reply; 105+ messages in thread
From: David Woodhouse @ 2024-01-08 20:27 UTC (permalink / raw)
To: qemu-devel
Cc: Richard Henderson, Beniamino Galvani, Peter Maydell,
Strahinja Jankovic, Niek Linnenbank, Cédric Le Goater,
Andrew Jeffery, Joel Stanley, Igor Mitsyanko,
Jean-Christophe Dubois, Andrey Smirnov,
Philippe Mathieu-Daudé, Rob Herring, Subbaraya Sundeep,
Jan Kiszka, Tyrone Ting, Hao Wu, Radoslaw Biernacki,
Leif Lindholm, Marcin Juszkiewicz, Edgar E. Iglesias,
Alistair Francis, Helge Deller, Paolo Bonzini, Eduardo Habkost,
Michael S. Tsirkin, Marcel Apfelbaum, Song Gao, Thomas Huth,
Laurent Vivier, Huacai Chen, Jiaxun Yang, Hervé Poussineau,
Aleksandar Rikalo, Aurelien Jarno, Jason Wang, Jia Liu,
Stafford Horne, Mark Cave-Ayland, Nicholas Piggin,
Daniel Henrique Barboza, David Gibson, Harsh Prateek Bora,
Bin Meng, Palmer Dabbelt, Weiwei Li, Liu Zhiwei, Halil Pasic,
Christian Borntraeger, Eric Farman, David Hildenbrand,
Ilya Leoshkevich, Yoshinori Sato, Magnus Damm, Artyom Tarasenko,
Stefano Stabellini, Anthony Perard, Paul Durrant, Max Filippov,
qemu-arm, qemu-ppc, qemu-riscv, qemu-s390x, xen-devel,
David Woodhouse
From: David Woodhouse <dwmw@amazon.co.uk>
Signed-off-by: David Woodhouse <dwmw@amazon.co.uk>
---
hw/riscv/microchip_pfsoc.c | 14 ++------------
hw/riscv/sifive_u.c | 7 +------
2 files changed, 3 insertions(+), 18 deletions(-)
diff --git a/hw/riscv/microchip_pfsoc.c b/hw/riscv/microchip_pfsoc.c
index b775aa8946..7725dfbde5 100644
--- a/hw/riscv/microchip_pfsoc.c
+++ b/hw/riscv/microchip_pfsoc.c
@@ -202,7 +202,6 @@ static void microchip_pfsoc_soc_realize(DeviceState *dev, Error **errp)
MemoryRegion *envm_data = g_new(MemoryRegion, 1);
MemoryRegion *qspi_xip_mem = g_new(MemoryRegion, 1);
char *plic_hart_config;
- NICInfo *nd;
int i;
sysbus_realize(SYS_BUS_DEVICE(&s->e_cpus), &error_abort);
@@ -411,17 +410,8 @@ static void microchip_pfsoc_soc_realize(DeviceState *dev, Error **errp)
memmap[MICROCHIP_PFSOC_USB].size);
/* GEMs */
-
- nd = &nd_table[0];
- if (nd->used) {
- qemu_check_nic_model(nd, TYPE_CADENCE_GEM);
- qdev_set_nic_properties(DEVICE(&s->gem0), nd);
- }
- nd = &nd_table[1];
- if (nd->used) {
- qemu_check_nic_model(nd, TYPE_CADENCE_GEM);
- qdev_set_nic_properties(DEVICE(&s->gem1), nd);
- }
+ qemu_configure_nic_device(DEVICE(&s->gem0), true, NULL);
+ qemu_configure_nic_device(DEVICE(&s->gem1), true, NULL);
object_property_set_int(OBJECT(&s->gem0), "revision", GEM_REVISION, errp);
object_property_set_int(OBJECT(&s->gem0), "phy-addr", 8, errp);
diff --git a/hw/riscv/sifive_u.c b/hw/riscv/sifive_u.c
index ec76dce6c9..5207ec1fa5 100644
--- a/hw/riscv/sifive_u.c
+++ b/hw/riscv/sifive_u.c
@@ -789,7 +789,6 @@ static void sifive_u_soc_realize(DeviceState *dev, Error **errp)
MemoryRegion *l2lim_mem = g_new(MemoryRegion, 1);
char *plic_hart_config;
int i, j;
- NICInfo *nd = &nd_table[0];
qdev_prop_set_uint32(DEVICE(&s->u_cpus), "num-harts", ms->smp.cpus - 1);
qdev_prop_set_uint32(DEVICE(&s->u_cpus), "hartid-base", 1);
@@ -893,11 +892,7 @@ static void sifive_u_soc_realize(DeviceState *dev, Error **errp)
}
sysbus_mmio_map(SYS_BUS_DEVICE(&s->otp), 0, memmap[SIFIVE_U_DEV_OTP].base);
- /* FIXME use qdev NIC properties instead of nd_table[] */
- if (nd->used) {
- qemu_check_nic_model(nd, TYPE_CADENCE_GEM);
- qdev_set_nic_properties(DEVICE(&s->gem), nd);
- }
+ qemu_configure_nic_device(DEVICE(&s->gem), true, NULL);
object_property_set_int(OBJECT(&s->gem), "revision", GEM_REVISION,
&error_abort);
if (!sysbus_realize(SYS_BUS_DEVICE(&s->gem), errp)) {
--
2.41.0
^ permalink raw reply related [flat|nested] 105+ messages in thread
* [PATCH v3 40/46] hw/s390x/s390-virtio-ccw: use qemu_create_nic_device()
2024-01-08 20:26 [PATCH v3 00/46] Rework matching of network devices to -nic options David Woodhouse
` (38 preceding siblings ...)
2024-01-08 20:27 ` [PATCH v3 39/46] hw/riscv: use qemu_configure_nic_device() David Woodhouse
@ 2024-01-08 20:27 ` David Woodhouse
2024-01-16 13:26 ` Thomas Huth
2024-01-08 20:27 ` [PATCH v3 41/46] hw/sparc/sun4m: use qemu_find_nic_info() David Woodhouse
` (6 subsequent siblings)
46 siblings, 1 reply; 105+ messages in thread
From: David Woodhouse @ 2024-01-08 20:27 UTC (permalink / raw)
To: qemu-devel
Cc: Richard Henderson, Beniamino Galvani, Peter Maydell,
Strahinja Jankovic, Niek Linnenbank, Cédric Le Goater,
Andrew Jeffery, Joel Stanley, Igor Mitsyanko,
Jean-Christophe Dubois, Andrey Smirnov,
Philippe Mathieu-Daudé, Rob Herring, Subbaraya Sundeep,
Jan Kiszka, Tyrone Ting, Hao Wu, Radoslaw Biernacki,
Leif Lindholm, Marcin Juszkiewicz, Edgar E. Iglesias,
Alistair Francis, Helge Deller, Paolo Bonzini, Eduardo Habkost,
Michael S. Tsirkin, Marcel Apfelbaum, Song Gao, Thomas Huth,
Laurent Vivier, Huacai Chen, Jiaxun Yang, Hervé Poussineau,
Aleksandar Rikalo, Aurelien Jarno, Jason Wang, Jia Liu,
Stafford Horne, Mark Cave-Ayland, Nicholas Piggin,
Daniel Henrique Barboza, David Gibson, Harsh Prateek Bora,
Bin Meng, Palmer Dabbelt, Weiwei Li, Liu Zhiwei, Halil Pasic,
Christian Borntraeger, Eric Farman, David Hildenbrand,
Ilya Leoshkevich, Yoshinori Sato, Magnus Damm, Artyom Tarasenko,
Stefano Stabellini, Anthony Perard, Paul Durrant, Max Filippov,
qemu-arm, qemu-ppc, qemu-riscv, qemu-s390x, xen-devel,
David Woodhouse
From: David Woodhouse <dwmw@amazon.co.uk>
Signed-off-by: David Woodhouse <dwmw@amazon.co.uk>
---
hw/s390x/s390-virtio-ccw.c | 11 ++---------
1 file changed, 2 insertions(+), 9 deletions(-)
diff --git a/hw/s390x/s390-virtio-ccw.c b/hw/s390x/s390-virtio-ccw.c
index 1169e20b94..202c378131 100644
--- a/hw/s390x/s390-virtio-ccw.c
+++ b/hw/s390x/s390-virtio-ccw.c
@@ -221,16 +221,9 @@ static void s390_init_ipl_dev(const char *kernel_filename,
static void s390_create_virtio_net(BusState *bus, const char *name)
{
- int i;
-
- for (i = 0; i < nb_nics; i++) {
- NICInfo *nd = &nd_table[i];
- DeviceState *dev;
-
- qemu_check_nic_model(nd, "virtio");
+ DeviceState *dev;
- dev = qdev_new(name);
- qdev_set_nic_properties(dev, nd);
+ while ((dev = qemu_create_nic_device(name, true, "virtio"))) {
qdev_realize_and_unref(dev, bus, &error_fatal);
}
}
--
2.41.0
^ permalink raw reply related [flat|nested] 105+ messages in thread
* [PATCH v3 41/46] hw/sparc/sun4m: use qemu_find_nic_info()
2024-01-08 20:26 [PATCH v3 00/46] Rework matching of network devices to -nic options David Woodhouse
` (39 preceding siblings ...)
2024-01-08 20:27 ` [PATCH v3 40/46] hw/s390x/s390-virtio-ccw: use qemu_create_nic_device() David Woodhouse
@ 2024-01-08 20:27 ` David Woodhouse
2024-01-08 20:27 ` [PATCH v3 42/46] hw/xtensa/xtfpga: use qemu_create_nic_device() David Woodhouse
` (5 subsequent siblings)
46 siblings, 0 replies; 105+ messages in thread
From: David Woodhouse @ 2024-01-08 20:27 UTC (permalink / raw)
To: qemu-devel
Cc: Richard Henderson, Beniamino Galvani, Peter Maydell,
Strahinja Jankovic, Niek Linnenbank, Cédric Le Goater,
Andrew Jeffery, Joel Stanley, Igor Mitsyanko,
Jean-Christophe Dubois, Andrey Smirnov,
Philippe Mathieu-Daudé, Rob Herring, Subbaraya Sundeep,
Jan Kiszka, Tyrone Ting, Hao Wu, Radoslaw Biernacki,
Leif Lindholm, Marcin Juszkiewicz, Edgar E. Iglesias,
Alistair Francis, Helge Deller, Paolo Bonzini, Eduardo Habkost,
Michael S. Tsirkin, Marcel Apfelbaum, Song Gao, Thomas Huth,
Laurent Vivier, Huacai Chen, Jiaxun Yang, Hervé Poussineau,
Aleksandar Rikalo, Aurelien Jarno, Jason Wang, Jia Liu,
Stafford Horne, Mark Cave-Ayland, Nicholas Piggin,
Daniel Henrique Barboza, David Gibson, Harsh Prateek Bora,
Bin Meng, Palmer Dabbelt, Weiwei Li, Liu Zhiwei, Halil Pasic,
Christian Borntraeger, Eric Farman, David Hildenbrand,
Ilya Leoshkevich, Yoshinori Sato, Magnus Damm, Artyom Tarasenko,
Stefano Stabellini, Anthony Perard, Paul Durrant, Max Filippov,
qemu-arm, qemu-ppc, qemu-riscv, qemu-s390x, xen-devel,
David Woodhouse
From: David Woodhouse <dwmw@amazon.co.uk>
Obtain the MAC address from the NIC configuration if there is one, or
generate one explicitly so that it can be placed in the PROM.
Signed-off-by: David Woodhouse <dwmw@amazon.co.uk>
---
hw/sparc/sun4m.c | 20 ++++++++++++++------
1 file changed, 14 insertions(+), 6 deletions(-)
diff --git a/hw/sparc/sun4m.c b/hw/sparc/sun4m.c
index 550af01690..e782c8ec7a 100644
--- a/hw/sparc/sun4m.c
+++ b/hw/sparc/sun4m.c
@@ -299,13 +299,15 @@ static void *iommu_init(hwaddr addr, uint32_t version, qemu_irq irq)
static void *sparc32_dma_init(hwaddr dma_base,
hwaddr esp_base, qemu_irq espdma_irq,
- hwaddr le_base, qemu_irq ledma_irq, NICInfo *nd)
+ hwaddr le_base, qemu_irq ledma_irq,
+ MACAddr *mac)
{
DeviceState *dma;
ESPDMADeviceState *espdma;
LEDMADeviceState *ledma;
SysBusESPState *esp;
SysBusPCNetState *lance;
+ NICInfo *nd = qemu_find_nic_info("lance", true, NULL);
dma = qdev_new(TYPE_SPARC32_DMA);
espdma = SPARC32_ESPDMA_DEVICE(object_resolve_path_component(
@@ -320,7 +322,14 @@ static void *sparc32_dma_init(hwaddr dma_base,
lance = SYSBUS_PCNET(object_resolve_path_component(
OBJECT(ledma), "lance"));
- qdev_set_nic_properties(DEVICE(lance), nd);
+
+ if (nd) {
+ qdev_set_nic_properties(DEVICE(lance), nd);
+ memcpy(mac->a, nd->macaddr.a, sizeof(mac->a));
+ } else {
+ qemu_macaddr_default_if_unset(mac);
+ qdev_prop_set_macaddr(DEVICE(lance), "mac", mac->a);
+ }
sysbus_realize_and_unref(SYS_BUS_DEVICE(dma), &error_fatal);
sysbus_mmio_map(SYS_BUS_DEVICE(dma), 0, dma_base);
@@ -823,7 +832,7 @@ static void sun4m_hw_init(MachineState *machine)
unsigned int smp_cpus = machine->smp.cpus;
unsigned int max_cpus = machine->smp.max_cpus;
HostMemoryBackend *ram_memdev = machine->memdev;
- NICInfo *nd = &nd_table[0];
+ MACAddr hostid;
if (machine->ram_size > hwdef->max_mem) {
error_report("Too much memory for this machine: %" PRId64 ","
@@ -884,10 +893,9 @@ static void sun4m_hw_init(MachineState *machine)
hwdef->iommu_pad_base, hwdef->iommu_pad_len);
}
- qemu_check_nic_model(nd, TYPE_LANCE);
sparc32_dma_init(hwdef->dma_base,
hwdef->esp_base, slavio_irq[18],
- hwdef->le_base, slavio_irq[16], nd);
+ hwdef->le_base, slavio_irq[16], &hostid);
if (graphic_depth != 8 && graphic_depth != 24) {
error_report("Unsupported depth: %d", graphic_depth);
@@ -1039,7 +1047,7 @@ static void sun4m_hw_init(MachineState *machine)
machine->initrd_filename,
machine->ram_size, &initrd_size);
- nvram_init(nvram, (uint8_t *)&nd->macaddr, machine->kernel_cmdline,
+ nvram_init(nvram, hostid.a, machine->kernel_cmdline,
machine->boot_config.order, machine->ram_size, kernel_size,
graphic_width, graphic_height, graphic_depth,
hwdef->nvram_machine_id, "Sun4m");
--
2.41.0
^ permalink raw reply related [flat|nested] 105+ messages in thread
* [PATCH v3 42/46] hw/xtensa/xtfpga: use qemu_create_nic_device()
2024-01-08 20:26 [PATCH v3 00/46] Rework matching of network devices to -nic options David Woodhouse
` (40 preceding siblings ...)
2024-01-08 20:27 ` [PATCH v3 41/46] hw/sparc/sun4m: use qemu_find_nic_info() David Woodhouse
@ 2024-01-08 20:27 ` David Woodhouse
2024-01-26 16:43 ` Thomas Huth
2024-01-08 20:27 ` [PATCH v3 43/46] net: remove qemu_check_nic_model() David Woodhouse
` (4 subsequent siblings)
46 siblings, 1 reply; 105+ messages in thread
From: David Woodhouse @ 2024-01-08 20:27 UTC (permalink / raw)
To: qemu-devel
Cc: Richard Henderson, Beniamino Galvani, Peter Maydell,
Strahinja Jankovic, Niek Linnenbank, Cédric Le Goater,
Andrew Jeffery, Joel Stanley, Igor Mitsyanko,
Jean-Christophe Dubois, Andrey Smirnov,
Philippe Mathieu-Daudé, Rob Herring, Subbaraya Sundeep,
Jan Kiszka, Tyrone Ting, Hao Wu, Radoslaw Biernacki,
Leif Lindholm, Marcin Juszkiewicz, Edgar E. Iglesias,
Alistair Francis, Helge Deller, Paolo Bonzini, Eduardo Habkost,
Michael S. Tsirkin, Marcel Apfelbaum, Song Gao, Thomas Huth,
Laurent Vivier, Huacai Chen, Jiaxun Yang, Hervé Poussineau,
Aleksandar Rikalo, Aurelien Jarno, Jason Wang, Jia Liu,
Stafford Horne, Mark Cave-Ayland, Nicholas Piggin,
Daniel Henrique Barboza, David Gibson, Harsh Prateek Bora,
Bin Meng, Palmer Dabbelt, Weiwei Li, Liu Zhiwei, Halil Pasic,
Christian Borntraeger, Eric Farman, David Hildenbrand,
Ilya Leoshkevich, Yoshinori Sato, Magnus Damm, Artyom Tarasenko,
Stefano Stabellini, Anthony Perard, Paul Durrant, Max Filippov,
qemu-arm, qemu-ppc, qemu-riscv, qemu-s390x, xen-devel,
David Woodhouse
From: David Woodhouse <dwmw@amazon.co.uk>
Signed-off-by: David Woodhouse <dwmw@amazon.co.uk>
---
hw/xtensa/xtfpga.c | 13 ++++++-------
1 file changed, 6 insertions(+), 7 deletions(-)
diff --git a/hw/xtensa/xtfpga.c b/hw/xtensa/xtfpga.c
index fbad1c83a3..f49e6591dc 100644
--- a/hw/xtensa/xtfpga.c
+++ b/hw/xtensa/xtfpga.c
@@ -141,14 +141,16 @@ static void xtfpga_net_init(MemoryRegion *address_space,
hwaddr base,
hwaddr descriptors,
hwaddr buffers,
- qemu_irq irq, NICInfo *nd)
+ qemu_irq irq)
{
DeviceState *dev;
SysBusDevice *s;
MemoryRegion *ram;
- dev = qdev_new("open_eth");
- qdev_set_nic_properties(dev, nd);
+ dev = qemu_create_nic_device("open_eth", true, NULL);
+ if (!dev) {
+ return;
+ }
s = SYS_BUS_DEVICE(dev);
sysbus_realize_and_unref(s, &error_fatal);
@@ -301,10 +303,7 @@ static void xtfpga_init(const XtfpgaBoardDesc *board, MachineState *machine)
memory_region_add_subregion(system_memory, board->io[1], io);
}
xtfpga_fpga_init(system_io, 0x0d020000, freq);
- if (nd_table[0].used) {
- xtfpga_net_init(system_io, 0x0d030000, 0x0d030400, 0x0d800000,
- extints[1], nd_table);
- }
+ xtfpga_net_init(system_io, 0x0d030000, 0x0d030400, 0x0d800000, extints[1]);
serial_mm_init(system_io, 0x0d050020, 2, extints[0],
115200, serial_hd(0), DEVICE_NATIVE_ENDIAN);
--
2.41.0
^ permalink raw reply related [flat|nested] 105+ messages in thread
* [PATCH v3 43/46] net: remove qemu_check_nic_model()
2024-01-08 20:26 [PATCH v3 00/46] Rework matching of network devices to -nic options David Woodhouse
` (41 preceding siblings ...)
2024-01-08 20:27 ` [PATCH v3 42/46] hw/xtensa/xtfpga: use qemu_create_nic_device() David Woodhouse
@ 2024-01-08 20:27 ` David Woodhouse
2024-01-26 16:01 ` Thomas Huth
2024-01-08 20:27 ` [PATCH v3 44/46] hw/pci: remove pci_nic_init_nofail() David Woodhouse
` (3 subsequent siblings)
46 siblings, 1 reply; 105+ messages in thread
From: David Woodhouse @ 2024-01-08 20:27 UTC (permalink / raw)
To: qemu-devel
Cc: Richard Henderson, Beniamino Galvani, Peter Maydell,
Strahinja Jankovic, Niek Linnenbank, Cédric Le Goater,
Andrew Jeffery, Joel Stanley, Igor Mitsyanko,
Jean-Christophe Dubois, Andrey Smirnov,
Philippe Mathieu-Daudé, Rob Herring, Subbaraya Sundeep,
Jan Kiszka, Tyrone Ting, Hao Wu, Radoslaw Biernacki,
Leif Lindholm, Marcin Juszkiewicz, Edgar E. Iglesias,
Alistair Francis, Helge Deller, Paolo Bonzini, Eduardo Habkost,
Michael S. Tsirkin, Marcel Apfelbaum, Song Gao, Thomas Huth,
Laurent Vivier, Huacai Chen, Jiaxun Yang, Hervé Poussineau,
Aleksandar Rikalo, Aurelien Jarno, Jason Wang, Jia Liu,
Stafford Horne, Mark Cave-Ayland, Nicholas Piggin,
Daniel Henrique Barboza, David Gibson, Harsh Prateek Bora,
Bin Meng, Palmer Dabbelt, Weiwei Li, Liu Zhiwei, Halil Pasic,
Christian Borntraeger, Eric Farman, David Hildenbrand,
Ilya Leoshkevich, Yoshinori Sato, Magnus Damm, Artyom Tarasenko,
Stefano Stabellini, Anthony Perard, Paul Durrant, Max Filippov,
qemu-arm, qemu-ppc, qemu-riscv, qemu-s390x, xen-devel,
David Woodhouse
From: David Woodhouse <dwmw@amazon.co.uk>
Signed-off-by: David Woodhouse <dwmw@amazon.co.uk>
---
include/net/net.h | 1 -
net/net.c | 13 -------------
2 files changed, 14 deletions(-)
diff --git a/include/net/net.h b/include/net/net.h
index 31e63d1f0d..1be8b40074 100644
--- a/include/net/net.h
+++ b/include/net/net.h
@@ -204,7 +204,6 @@ int qemu_set_vnet_le(NetClientState *nc, bool is_le);
int qemu_set_vnet_be(NetClientState *nc, bool is_be);
void qemu_macaddr_default_if_unset(MACAddr *macaddr);
int qemu_show_nic_models(const char *arg, const char *const *models);
-void qemu_check_nic_model(NICInfo *nd, const char *model);
int qemu_find_nic_model(NICInfo *nd, const char * const *models,
const char *default_model);
NICInfo *qemu_find_nic_info(const char *typename, bool match_default,
diff --git a/net/net.c b/net/net.c
index 4651b3f443..ffd4b42d5a 100644
--- a/net/net.c
+++ b/net/net.c
@@ -992,19 +992,6 @@ int qemu_show_nic_models(const char *arg, const char *const *models)
return 1;
}
-void qemu_check_nic_model(NICInfo *nd, const char *model)
-{
- const char *models[2];
-
- models[0] = model;
- models[1] = NULL;
-
- if (qemu_show_nic_models(nd->model, models))
- exit(0);
- if (qemu_find_nic_model(nd, models, model) < 0)
- exit(1);
-}
-
int qemu_find_nic_model(NICInfo *nd, const char * const *models,
const char *default_model)
{
--
2.41.0
^ permalink raw reply related [flat|nested] 105+ messages in thread
* [PATCH v3 44/46] hw/pci: remove pci_nic_init_nofail()
2024-01-08 20:26 [PATCH v3 00/46] Rework matching of network devices to -nic options David Woodhouse
` (42 preceding siblings ...)
2024-01-08 20:27 ` [PATCH v3 43/46] net: remove qemu_check_nic_model() David Woodhouse
@ 2024-01-08 20:27 ` David Woodhouse
2024-01-26 16:03 ` Thomas Huth
2024-01-08 20:27 ` [PATCH v3 45/46] net: remove qemu_show_nic_models(), qemu_find_nic_model() David Woodhouse
` (2 subsequent siblings)
46 siblings, 1 reply; 105+ messages in thread
From: David Woodhouse @ 2024-01-08 20:27 UTC (permalink / raw)
To: qemu-devel
Cc: Richard Henderson, Beniamino Galvani, Peter Maydell,
Strahinja Jankovic, Niek Linnenbank, Cédric Le Goater,
Andrew Jeffery, Joel Stanley, Igor Mitsyanko,
Jean-Christophe Dubois, Andrey Smirnov,
Philippe Mathieu-Daudé, Rob Herring, Subbaraya Sundeep,
Jan Kiszka, Tyrone Ting, Hao Wu, Radoslaw Biernacki,
Leif Lindholm, Marcin Juszkiewicz, Edgar E. Iglesias,
Alistair Francis, Helge Deller, Paolo Bonzini, Eduardo Habkost,
Michael S. Tsirkin, Marcel Apfelbaum, Song Gao, Thomas Huth,
Laurent Vivier, Huacai Chen, Jiaxun Yang, Hervé Poussineau,
Aleksandar Rikalo, Aurelien Jarno, Jason Wang, Jia Liu,
Stafford Horne, Mark Cave-Ayland, Nicholas Piggin,
Daniel Henrique Barboza, David Gibson, Harsh Prateek Bora,
Bin Meng, Palmer Dabbelt, Weiwei Li, Liu Zhiwei, Halil Pasic,
Christian Borntraeger, Eric Farman, David Hildenbrand,
Ilya Leoshkevich, Yoshinori Sato, Magnus Damm, Artyom Tarasenko,
Stefano Stabellini, Anthony Perard, Paul Durrant, Max Filippov,
qemu-arm, qemu-ppc, qemu-riscv, qemu-s390x, xen-devel,
David Woodhouse
From: David Woodhouse <dwmw@amazon.co.uk>
This function is no longer used.
Signed-off-by: David Woodhouse <dwmw@amazon.co.uk>
---
hw/pci/pci.c | 72 --------------------------------------------
include/hw/pci/pci.h | 3 --
2 files changed, 75 deletions(-)
diff --git a/hw/pci/pci.c b/hw/pci/pci.c
index 5849606f66..449abfb182 100644
--- a/hw/pci/pci.c
+++ b/hw/pci/pci.c
@@ -1853,78 +1853,6 @@ const pci_class_desc *get_class_desc(int class)
return desc;
}
-/* Initialize a PCI NIC. */
-PCIDevice *pci_nic_init_nofail(NICInfo *nd, PCIBus *rootbus,
- const char *default_model,
- const char *default_devaddr)
-{
- const char *devaddr = nd->devaddr ? nd->devaddr : default_devaddr;
- GPtrArray *pci_nic_models;
- PCIBus *bus;
- PCIDevice *pci_dev;
- DeviceState *dev;
- int devfn;
- int i;
- int dom, busnr;
- unsigned slot;
-
- if (nd->model && !strcmp(nd->model, "virtio")) {
- g_free(nd->model);
- nd->model = g_strdup("virtio-net-pci");
- }
-
- pci_nic_models = qemu_get_nic_models(TYPE_PCI_DEVICE);
-
- if (qemu_show_nic_models(nd->model, (const char **)pci_nic_models->pdata)) {
- exit(0);
- }
-
- i = qemu_find_nic_model(nd, (const char **)pci_nic_models->pdata,
- default_model);
- if (i < 0) {
- exit(1);
- }
-
- if (!rootbus) {
- error_report("No primary PCI bus");
- exit(1);
- }
-
- assert(!rootbus->parent_dev);
-
- if (!devaddr) {
- devfn = -1;
- busnr = 0;
- } else {
- if (pci_parse_devaddr(devaddr, &dom, &busnr, &slot, NULL) < 0) {
- error_report("Invalid PCI device address %s for device %s",
- devaddr, nd->model);
- exit(1);
- }
-
- if (dom != 0) {
- error_report("No support for non-zero PCI domains");
- exit(1);
- }
-
- devfn = PCI_DEVFN(slot, 0);
- }
-
- bus = pci_find_bus_nr(rootbus, busnr);
- if (!bus) {
- error_report("Invalid PCI device address %s for device %s",
- devaddr, nd->model);
- exit(1);
- }
-
- pci_dev = pci_new(devfn, nd->model);
- dev = &pci_dev->qdev;
- qdev_set_nic_properties(dev, nd);
- pci_realize_and_unref(pci_dev, bus, &error_fatal);
- g_ptr_array_free(pci_nic_models, true);
- return pci_dev;
-}
-
void pci_init_nic_devices(PCIBus *bus, const char *default_model)
{
qemu_create_nic_bus_devices(&bus->qbus, TYPE_PCI_DEVICE, default_model,
diff --git a/include/hw/pci/pci.h b/include/hw/pci/pci.h
index 6ff0b95a02..eaa3fc99d8 100644
--- a/include/hw/pci/pci.h
+++ b/include/hw/pci/pci.h
@@ -314,9 +314,6 @@ void pci_device_set_intx_routing_notifier(PCIDevice *dev,
PCIINTxRoutingNotifier notifier);
void pci_device_reset(PCIDevice *dev);
-PCIDevice *pci_nic_init_nofail(NICInfo *nd, PCIBus *rootbus,
- const char *default_model,
- const char *default_devaddr);
void pci_init_nic_devices(PCIBus *bus, const char *default_model);
bool pci_init_nic_in_slot(PCIBus *rootbus, const char *default_model,
const char *alias, const char *devaddr);
--
2.41.0
^ permalink raw reply related [flat|nested] 105+ messages in thread
* [PATCH v3 45/46] net: remove qemu_show_nic_models(), qemu_find_nic_model()
2024-01-08 20:26 [PATCH v3 00/46] Rework matching of network devices to -nic options David Woodhouse
` (43 preceding siblings ...)
2024-01-08 20:27 ` [PATCH v3 44/46] hw/pci: remove pci_nic_init_nofail() David Woodhouse
@ 2024-01-08 20:27 ` David Woodhouse
2024-01-26 16:49 ` Thomas Huth
2024-01-08 20:27 ` [PATCH v3 46/46] net: make nb_nics and nd_table[] static in net/net.c David Woodhouse
2024-01-24 13:13 ` [PATCH v3 00/46] Rework matching of network devices to -nic options David Woodhouse
46 siblings, 1 reply; 105+ messages in thread
From: David Woodhouse @ 2024-01-08 20:27 UTC (permalink / raw)
To: qemu-devel
Cc: Richard Henderson, Beniamino Galvani, Peter Maydell,
Strahinja Jankovic, Niek Linnenbank, Cédric Le Goater,
Andrew Jeffery, Joel Stanley, Igor Mitsyanko,
Jean-Christophe Dubois, Andrey Smirnov,
Philippe Mathieu-Daudé, Rob Herring, Subbaraya Sundeep,
Jan Kiszka, Tyrone Ting, Hao Wu, Radoslaw Biernacki,
Leif Lindholm, Marcin Juszkiewicz, Edgar E. Iglesias,
Alistair Francis, Helge Deller, Paolo Bonzini, Eduardo Habkost,
Michael S. Tsirkin, Marcel Apfelbaum, Song Gao, Thomas Huth,
Laurent Vivier, Huacai Chen, Jiaxun Yang, Hervé Poussineau,
Aleksandar Rikalo, Aurelien Jarno, Jason Wang, Jia Liu,
Stafford Horne, Mark Cave-Ayland, Nicholas Piggin,
Daniel Henrique Barboza, David Gibson, Harsh Prateek Bora,
Bin Meng, Palmer Dabbelt, Weiwei Li, Liu Zhiwei, Halil Pasic,
Christian Borntraeger, Eric Farman, David Hildenbrand,
Ilya Leoshkevich, Yoshinori Sato, Magnus Damm, Artyom Tarasenko,
Stefano Stabellini, Anthony Perard, Paul Durrant, Max Filippov,
qemu-arm, qemu-ppc, qemu-riscv, qemu-s390x, xen-devel,
David Woodhouse
From: David Woodhouse <dwmw@amazon.co.uk>
These old functions can be removed now too. Let net_param_nic() print
the full set of network devices directly, and also make it note that a
list more specific to this platform/config will be available by using
'-nic model=help' instead.
Signed-off-by: David Woodhouse <dwmw@amazon.co.uk>
---
include/net/net.h | 3 ---
net/net.c | 39 ++++++---------------------------------
2 files changed, 6 insertions(+), 36 deletions(-)
diff --git a/include/net/net.h b/include/net/net.h
index 1be8b40074..19fb82833c 100644
--- a/include/net/net.h
+++ b/include/net/net.h
@@ -203,9 +203,6 @@ void qemu_set_vnet_hdr_len(NetClientState *nc, int len);
int qemu_set_vnet_le(NetClientState *nc, bool is_le);
int qemu_set_vnet_be(NetClientState *nc, bool is_be);
void qemu_macaddr_default_if_unset(MACAddr *macaddr);
-int qemu_show_nic_models(const char *arg, const char *const *models);
-int qemu_find_nic_model(NICInfo *nd, const char * const *models,
- const char *default_model);
NICInfo *qemu_find_nic_info(const char *typename, bool match_default,
const char *alias);
bool qemu_configure_nic_device(DeviceState *dev, bool match_default,
diff --git a/net/net.c b/net/net.c
index ffd4b42d5a..09ab0889f5 100644
--- a/net/net.c
+++ b/net/net.c
@@ -977,38 +977,6 @@ GPtrArray *qemu_get_nic_models(const char *device_type)
return nic_models;
}
-int qemu_show_nic_models(const char *arg, const char *const *models)
-{
- int i;
-
- if (!arg || !is_help_option(arg)) {
- return 0;
- }
-
- printf("Available NIC models:\n");
- for (i = 0 ; models[i]; i++) {
- printf("%s\n", models[i]);
- }
- return 1;
-}
-
-int qemu_find_nic_model(NICInfo *nd, const char * const *models,
- const char *default_model)
-{
- int i;
-
- if (!nd->model)
- nd->model = g_strdup(default_model);
-
- for (i = 0 ; models[i]; i++) {
- if (strcmp(nd->model, models[i]) == 0)
- return i;
- }
-
- error_report("Unsupported NIC model: %s", nd->model);
- return -1;
-}
-
static int net_init_nic(const Netdev *netdev, const char *name,
NetClientState *peer, Error **errp)
{
@@ -1791,9 +1759,14 @@ static int net_param_nic(void *dummy, QemuOpts *opts, Error **errp)
}
if (is_help_option(type)) {
GPtrArray *nic_models = qemu_get_nic_models(TYPE_DEVICE);
+ int i;
show_netdevs();
printf("\n");
- qemu_show_nic_models(type, (const char **)nic_models->pdata);
+ printf("Supported NIC models "
+ "(use -nic model=help for a filtered list):\n");
+ for (i = 0 ; nic_models->pdata[i]; i++) {
+ printf("%s\n", (char *)nic_models->pdata[i]);
+ }
g_ptr_array_free(nic_models, true);
exit(0);
}
--
2.41.0
^ permalink raw reply related [flat|nested] 105+ messages in thread
* [PATCH v3 46/46] net: make nb_nics and nd_table[] static in net/net.c
2024-01-08 20:26 [PATCH v3 00/46] Rework matching of network devices to -nic options David Woodhouse
` (44 preceding siblings ...)
2024-01-08 20:27 ` [PATCH v3 45/46] net: remove qemu_show_nic_models(), qemu_find_nic_model() David Woodhouse
@ 2024-01-08 20:27 ` David Woodhouse
2024-01-26 16:08 ` Thomas Huth
2024-01-24 13:13 ` [PATCH v3 00/46] Rework matching of network devices to -nic options David Woodhouse
46 siblings, 1 reply; 105+ messages in thread
From: David Woodhouse @ 2024-01-08 20:27 UTC (permalink / raw)
To: qemu-devel
Cc: Richard Henderson, Beniamino Galvani, Peter Maydell,
Strahinja Jankovic, Niek Linnenbank, Cédric Le Goater,
Andrew Jeffery, Joel Stanley, Igor Mitsyanko,
Jean-Christophe Dubois, Andrey Smirnov,
Philippe Mathieu-Daudé, Rob Herring, Subbaraya Sundeep,
Jan Kiszka, Tyrone Ting, Hao Wu, Radoslaw Biernacki,
Leif Lindholm, Marcin Juszkiewicz, Edgar E. Iglesias,
Alistair Francis, Helge Deller, Paolo Bonzini, Eduardo Habkost,
Michael S. Tsirkin, Marcel Apfelbaum, Song Gao, Thomas Huth,
Laurent Vivier, Huacai Chen, Jiaxun Yang, Hervé Poussineau,
Aleksandar Rikalo, Aurelien Jarno, Jason Wang, Jia Liu,
Stafford Horne, Mark Cave-Ayland, Nicholas Piggin,
Daniel Henrique Barboza, David Gibson, Harsh Prateek Bora,
Bin Meng, Palmer Dabbelt, Weiwei Li, Liu Zhiwei, Halil Pasic,
Christian Borntraeger, Eric Farman, David Hildenbrand,
Ilya Leoshkevich, Yoshinori Sato, Magnus Damm, Artyom Tarasenko,
Stefano Stabellini, Anthony Perard, Paul Durrant, Max Filippov,
qemu-arm, qemu-ppc, qemu-riscv, qemu-s390x, xen-devel,
David Woodhouse
From: David Woodhouse <dwmw@amazon.co.uk>
Signed-off-by: David Woodhouse <dwmw@amazon.co.uk>
---
include/net/net.h | 4 ----
net/net.c | 3 +++
system/globals.c | 2 --
3 files changed, 3 insertions(+), 6 deletions(-)
diff --git a/include/net/net.h b/include/net/net.h
index 19fb82833c..766201c62c 100644
--- a/include/net/net.h
+++ b/include/net/net.h
@@ -247,10 +247,6 @@ struct NICInfo {
int nvectors;
};
-extern int nb_nics;
-extern NICInfo nd_table[MAX_NICS];
-extern const char *host_net_devices[];
-
/* from net.c */
extern NetClientStateList net_clients;
bool netdev_is_modern(const char *optstr);
diff --git a/net/net.c b/net/net.c
index 09ab0889f5..71cccb19da 100644
--- a/net/net.c
+++ b/net/net.c
@@ -77,6 +77,9 @@ static NetdevQueue nd_queue = QSIMPLEQ_HEAD_INITIALIZER(nd_queue);
static GHashTable *nic_model_help;
+static int nb_nics;
+static NICInfo nd_table[MAX_NICS];
+
/***********************************************************/
/* network device redirectors */
diff --git a/system/globals.c b/system/globals.c
index e83b5428d1..b6d4e72530 100644
--- a/system/globals.c
+++ b/system/globals.c
@@ -36,8 +36,6 @@ int display_opengl;
const char* keyboard_layout;
bool enable_mlock;
bool enable_cpu_pm;
-int nb_nics;
-NICInfo nd_table[MAX_NICS];
int autostart = 1;
int vga_interface_type = VGA_NONE;
bool vga_interface_created;
--
2.41.0
^ permalink raw reply related [flat|nested] 105+ messages in thread
* Re: [PATCH v3 11/46] hw/loongarch: use pci_init_nic_devices()
2024-01-08 20:26 ` [PATCH v3 11/46] hw/loongarch: " David Woodhouse
@ 2024-01-09 1:50 ` gaosong
0 siblings, 0 replies; 105+ messages in thread
From: gaosong @ 2024-01-09 1:50 UTC (permalink / raw)
To: David Woodhouse; +Cc: qemu-devel
在 2024/1/9 上午4:26, David Woodhouse 写道:
> From: David Woodhouse <dwmw@amazon.co.uk>
>
> Signed-off-by: David Woodhouse <dwmw@amazon.co.uk>
> ---
> hw/loongarch/virt.c | 4 +---
> 1 file changed, 1 insertion(+), 3 deletions(-)
Reviewed-by: Song Gao <gaosong@loongson.cn>
Thanks.
Song Gao
> diff --git a/hw/loongarch/virt.c b/hw/loongarch/virt.c
> index 4b7dc67a2d..c48804ac38 100644
> --- a/hw/loongarch/virt.c
> +++ b/hw/loongarch/virt.c
> @@ -504,9 +504,7 @@ static void loongarch_devices_init(DeviceState *pch_pic, LoongArchMachineState *
> fdt_add_uart_node(lams);
>
> /* Network init */
> - for (i = 0; i < nb_nics; i++) {
> - pci_nic_init_nofail(&nd_table[i], pci_bus, mc->default_nic, NULL);
> - }
> + pci_init_nic_devices(pci_bus, mc->default_nic);
>
> /*
> * There are some invalid guest memory access.
^ permalink raw reply [flat|nested] 105+ messages in thread
* Re: [PATCH v3 40/46] hw/s390x/s390-virtio-ccw: use qemu_create_nic_device()
2024-01-08 20:27 ` [PATCH v3 40/46] hw/s390x/s390-virtio-ccw: use qemu_create_nic_device() David Woodhouse
@ 2024-01-16 13:26 ` Thomas Huth
0 siblings, 0 replies; 105+ messages in thread
From: Thomas Huth @ 2024-01-16 13:26 UTC (permalink / raw)
To: David Woodhouse, qemu-devel
Cc: Richard Henderson, Beniamino Galvani, Peter Maydell,
Strahinja Jankovic, Niek Linnenbank, Cédric Le Goater,
Andrew Jeffery, Joel Stanley, Igor Mitsyanko,
Jean-Christophe Dubois, Andrey Smirnov,
Philippe Mathieu-Daudé, Rob Herring, Subbaraya Sundeep,
Jan Kiszka, Tyrone Ting, Hao Wu, Radoslaw Biernacki,
Leif Lindholm, Marcin Juszkiewicz, Edgar E. Iglesias,
Alistair Francis, Helge Deller, Paolo Bonzini, Eduardo Habkost,
Michael S. Tsirkin, Marcel Apfelbaum, Song Gao, Thomas Huth,
Laurent Vivier, Huacai Chen, Jiaxun Yang, Hervé Poussineau,
Aleksandar Rikalo, Aurelien Jarno, Jason Wang, Jia Liu,
Stafford Horne, Mark Cave-Ayland, Nicholas Piggin,
Daniel Henrique Barboza, David Gibson, Harsh Prateek Bora,
Bin Meng, Palmer Dabbelt, Weiwei Li, Liu Zhiwei, Halil Pasic,
Christian Borntraeger, Eric Farman, David Hildenbrand,
Ilya Leoshkevich, Yoshinori Sato, Magnus Damm, Artyom Tarasenko,
Stefano Stabellini, Anthony Perard, Paul Durrant, Max Filippov,
qemu-arm, qemu-ppc, qemu-riscv, qemu-s390x, xen-devel,
David Woodhouse
On 08/01/2024 21.27, David Woodhouse wrote:
> From: David Woodhouse <dwmw@amazon.co.uk>
>
> Signed-off-by: David Woodhouse <dwmw@amazon.co.uk>
> ---
> hw/s390x/s390-virtio-ccw.c | 11 ++---------
> 1 file changed, 2 insertions(+), 9 deletions(-)
>
> diff --git a/hw/s390x/s390-virtio-ccw.c b/hw/s390x/s390-virtio-ccw.c
> index 1169e20b94..202c378131 100644
> --- a/hw/s390x/s390-virtio-ccw.c
> +++ b/hw/s390x/s390-virtio-ccw.c
> @@ -221,16 +221,9 @@ static void s390_init_ipl_dev(const char *kernel_filename,
>
> static void s390_create_virtio_net(BusState *bus, const char *name)
> {
> - int i;
> -
> - for (i = 0; i < nb_nics; i++) {
> - NICInfo *nd = &nd_table[i];
> - DeviceState *dev;
> -
> - qemu_check_nic_model(nd, "virtio");
> + DeviceState *dev;
>
> - dev = qdev_new(name);
> - qdev_set_nic_properties(dev, nd);
> + while ((dev = qemu_create_nic_device(name, true, "virtio"))) {
> qdev_realize_and_unref(dev, bus, &error_fatal);
> }
> }
Acked-by: Thomas Huth <thuth@redhat.com>
^ permalink raw reply [flat|nested] 105+ messages in thread
* Re: [PATCH v3 22/46] hw/arm/aspeed: use qemu_configure_nic_device()
2024-01-08 20:26 ` [PATCH v3 22/46] hw/arm/aspeed: " David Woodhouse
@ 2024-01-16 13:32 ` Cédric Le Goater
0 siblings, 0 replies; 105+ messages in thread
From: Cédric Le Goater @ 2024-01-16 13:32 UTC (permalink / raw)
To: David Woodhouse, qemu-devel
Cc: Richard Henderson, Beniamino Galvani, Peter Maydell,
Strahinja Jankovic, Niek Linnenbank, Andrew Jeffery, Joel Stanley,
Igor Mitsyanko, Jean-Christophe Dubois, Andrey Smirnov,
Philippe Mathieu-Daudé, Rob Herring, Subbaraya Sundeep,
Jan Kiszka, Tyrone Ting, Hao Wu, Radoslaw Biernacki,
Leif Lindholm, Marcin Juszkiewicz, Edgar E. Iglesias,
Alistair Francis, Helge Deller, Paolo Bonzini, Eduardo Habkost,
Michael S. Tsirkin, Marcel Apfelbaum, Song Gao, Thomas Huth,
Laurent Vivier, Huacai Chen, Jiaxun Yang, Hervé Poussineau,
Aleksandar Rikalo, Aurelien Jarno, Jason Wang, Jia Liu,
Stafford Horne, Mark Cave-Ayland, Nicholas Piggin,
Daniel Henrique Barboza, David Gibson, Harsh Prateek Bora,
Bin Meng, Palmer Dabbelt, Weiwei Li, Liu Zhiwei, Halil Pasic,
Christian Borntraeger, Eric Farman, David Hildenbrand,
Ilya Leoshkevich, Yoshinori Sato, Magnus Damm, Artyom Tarasenko,
Stefano Stabellini, Anthony Perard, Paul Durrant, Max Filippov,
qemu-arm, qemu-ppc, qemu-riscv, qemu-s390x, xen-devel,
David Woodhouse
On 1/8/24 21:26, David Woodhouse wrote:
> From: David Woodhouse <dwmw@amazon.co.uk>
>
> Signed-off-by: David Woodhouse <dwmw@amazon.co.uk>
> ---
> hw/arm/aspeed.c | 9 ++++-----
> 1 file changed, 4 insertions(+), 5 deletions(-)
>
> diff --git a/hw/arm/aspeed.c b/hw/arm/aspeed.c
> index cc59176563..bed5e4f40b 100644
> --- a/hw/arm/aspeed.c
> +++ b/hw/arm/aspeed.c
> @@ -356,7 +356,6 @@ static void aspeed_machine_init(MachineState *machine)
> AspeedMachineClass *amc = ASPEED_MACHINE_GET_CLASS(machine);
> AspeedSoCClass *sc;
> int i;
> - NICInfo *nd = &nd_table[0];
>
> bmc->soc = ASPEED_SOC(object_new(amc->soc_name));
> object_property_add_child(OBJECT(machine), "soc", OBJECT(bmc->soc));
> @@ -371,10 +370,10 @@ static void aspeed_machine_init(MachineState *machine)
> &error_fatal);
>
> for (i = 0; i < sc->macs_num; i++) {
> - if ((amc->macs_mask & (1 << i)) && nd->used) {
> - qemu_check_nic_model(nd, TYPE_FTGMAC100);
> - qdev_set_nic_properties(DEVICE(&bmc->soc->ftgmac100[i]), nd);
> - nd++;
> + if ((amc->macs_mask & (1 << i)) &&
> + !qemu_configure_nic_device(DEVICE(&bmc->soc->ftgmac100[i]),
> + true, NULL)) {
> + break; /* No configs left; stop asking */
> }
> }
>
Acked-by: Cédric Le Goater <clg@kaod.org>
Thanks,
C.
^ permalink raw reply [flat|nested] 105+ messages in thread
* Re: [PATCH v3 00/46] Rework matching of network devices to -nic options
2024-01-08 20:26 [PATCH v3 00/46] Rework matching of network devices to -nic options David Woodhouse
` (45 preceding siblings ...)
2024-01-08 20:27 ` [PATCH v3 46/46] net: make nb_nics and nd_table[] static in net/net.c David Woodhouse
@ 2024-01-24 13:13 ` David Woodhouse
2024-01-25 0:38 ` Jason Wang
46 siblings, 1 reply; 105+ messages in thread
From: David Woodhouse @ 2024-01-24 13:13 UTC (permalink / raw)
To: Jason Wang; +Cc: qemu-devel
[-- Attachment #1: Type: text/plain, Size: 12179 bytes --]
Hi Jason,
I think this series probably lives or dies with you. I think it's a
worthwhile cleanup, but I no longer have an immediate need for it; I
shipped a slightly ugly workaround in QEMU 8.2.
Please could you let me know if it's worth persisting with it?
Thanks.
On Mon, 2024-01-08 at 20:26 +0000, David Woodhouse wrote:
>
> Most platforms iterating directly over the nd_table[] are doing one of
> two things. Either they are creating the NIC for their platform and want
> to find a matching -nic configuration for it, if such exists. Or they
> are only going to create that platform NIC if a matching config *does*
> exist.
>
> All of those can be converted to the new qemu_configure_nic_device()
> and qemu_create_nic_device() functions. The latter of which will call
> qdev_new() to create the device (and apply the config) if a matching
> NIC config does exist for it. The existing behaviour of each platform
> has been preserved for now, despite it being apparently fairly random.
>
> PCI and indeed XenBus can use a qemu_create_nic_bus_devices() which will
> create all NICs that live on a given bus type. That covers most
> platforms, but some PCI platforms do something special with the first
> NIC of a given type, placing it in the slot where it would have been on
> the real hardware. There were various inconsistencies in the way the
> platforms did so, and whether they cared what model the NIC was. Those
> subtle behavioural changes I *have* allowed to change, and now the
> pci_init_nic_slot() function will pick the first NIC that the user
> specified which isn't explicitly *not* the default type, and put that
> in the specified slot.
>
> The tests for npcm7xx used to lament that they had to instantiate both
> NICs even when they wanted to test only the second, because there was
> no way to specify which hardware devices gets which configuration. I
> made that untrue, by allowing 'emc0' and 'emc1' aliases, and fixed up
> the test accordingly.
>
> There are one or two special cases which want to do special things with
> the MAC address of the primary NIC, to set up a system identification
> (or force it to use an Apple OUI, in the case of m68k/q400). All those
> work out relatively cleanly too.
>
> And I can clean up the ugly patch which fixed up the Xen network device
> handling, and replace it with a simple call to the new
> qemu_create_nic_bus_devices() function.
>
> I suspect that we can remove the pci_init_nic_devices() from platform
> code and just do it later, except for platforms which *care* which
> PCI bus the dynamic devices go on (is that just sun4u which puts its
> primary NIC onto a different bus?).
>
> Finally, while we're at it, clean up -nic model=help to only print
> the device models which are actually usable on the given platform
> rather than just listing them *all*.
>
> And now we can make nd_table[] and nb_nics static in net/net.c because
> nothing else has any business poking at them directly.
>
> v3: Rebase to 8.2
>
> v2: Some build fixes after better coverage testing, revert the Xen fix
> in this series because I'm putting the less invasive hack into 8.2
> (hopefully).
>
> David Woodhouse (46):
> net: add qemu_{configure,create}_nic_device(), qemu_find_nic_info()
> net: report list of available models according to platform
> net: add qemu_create_nic_bus_devices()
> hw/pci: add pci_init_nic_devices(), pci_init_nic_in_slot()
> hw/i386/pc: use qemu_get_nic_info() and pci_init_nic_devices()
> hw/xen: use qemu_create_nic_bus_devices() to instantiate Xen NICs
> hw/alpha/dp264: use pci_init_nic_devices()
> hw/arm/sbsa-ref: use pci_init_nic_devices()
> hw/arm/virt: use pci_init_nic_devices()
> hw/hppa: use pci_init_nic_devices()
> hw/loongarch: use pci_init_nic_devices()
> hw/mips/fuloong2e: use pci_init_nic_devices()
> hw/mips/malta: use pci_init_nic_devices()
> hw/mips/loongson3_virt: use pci_init_nic_devices()
> hw/ppc/prep: use pci_init_nic_devices()
> hw/ppc/spapr: use qemu_get_nic_info() and pci_init_nic_devices()
> hw/ppc: use pci_init_nic_devices()
> hw/sh4/r2d: use pci_init_nic_devices()
> hw/sparc64/sun4u: use pci_init_nic_devices()
> hw/xtensa/virt: use pci_init_nic_devices()
> hw/arm/allwinner: use qemu_configure_nic_device()
> hw/arm/aspeed: use qemu_configure_nic_device()
> hw/arm/exynos4: use qemu_create_nic_device()
> hw/arm/fsl: use qemu_configure_nic_device()
> hw/net/smc91c111: use qemu_configure_nic_device()
> hw/net/lan9118: use qemu_configure_nic_device()
> hw/arm/highbank: use qemu_create_nic_device()
> hw/arm/npcm7xx: use qemu_configure_nic_device, allow emc0/emc1 as aliases
> hw/arm/stellaris: use qemu_find_nic_info()
> hw/arm: use qemu_configure_nic_device()
> hw/net/etraxfs-eth: use qemu_configure_nic_device()
> hw/m68k/mcf5208: use qemu_create_nic_device()
> hw/m68k/q800: use qemu_find_nic_info()
> hw/microblaze: use qemu_configure_nic_device()
> hw/mips/mipssim: use qemu_create_nic_device()
> hw/mips/jazz: use qemu_find_nic_info()
> hw/net/lasi_i82596: use qemu_configure_nic_device()
> hw/openrisc/openrisc_sim: use qemu_create_nic_device()
> hw/riscv: use qemu_configure_nic_device()
> hw/s390x/s390-virtio-ccw: use qemu_create_nic_device()
> hw/sparc/sun4m: use qemu_find_nic_info()
> hw/xtensa/xtfpga: use qemu_create_nic_device()
> net: remove qemu_check_nic_model()
> hw/pci: remove pci_nic_init_nofail()
> net: remove qemu_show_nic_models(), qemu_find_nic_model()
> net: make nb_nics and nd_table[] static in net/net.c
>
> hw/alpha/dp264.c | 4 +-
> hw/arm/allwinner-a10.c | 6 +-
> hw/arm/allwinner-h3.c | 6 +-
> hw/arm/allwinner-r40.c | 27 +---
> hw/arm/aspeed.c | 9 +-
> hw/arm/exynos4_boards.c | 6 +-
> hw/arm/fsl-imx25.c | 2 +-
> hw/arm/fsl-imx6.c | 2 +-
> hw/arm/fsl-imx6ul.c | 2 +-
> hw/arm/fsl-imx7.c | 2 +-
> hw/arm/gumstix.c | 6 +-
> hw/arm/highbank.c | 12 +-
> hw/arm/integratorcp.c | 5 +-
> hw/arm/kzm.c | 4 +-
> hw/arm/mainstone.c | 3 +-
> hw/arm/mps2-tz.c | 8 +-
> hw/arm/mps2.c | 2 +-
> hw/arm/msf2-soc.c | 6 +-
> hw/arm/musicpal.c | 3 +-
> hw/arm/npcm7xx.c | 16 +-
> hw/arm/realview.c | 25 ++-
> hw/arm/sbsa-ref.c | 4 +-
> hw/arm/stellaris.c | 30 +++-
> hw/arm/versatilepb.c | 15 +-
> hw/arm/vexpress.c | 4 +-
> hw/arm/virt.c | 4 +-
> hw/arm/xilinx_zynq.c | 11 +-
> hw/arm/xlnx-versal.c | 7 +-
> hw/arm/xlnx-zynqmp.c | 8 +-
> hw/cris/axis_dev88.c | 9 +-
> hw/hppa/machine.c | 7 +-
> hw/i386/pc.c | 33 ++--
> hw/i386/pc_piix.c | 2 +-
> hw/i386/pc_q35.c | 2 +-
> hw/loongarch/virt.c | 4 +-
> hw/m68k/mcf5208.c | 19 +--
> hw/m68k/q800.c | 29 ++--
> hw/microblaze/petalogix_ml605_mmu.c | 3 +-
> hw/microblaze/petalogix_s3adsp1800_mmu.c | 3 +-
> hw/mips/fuloong2e.c | 16 +-
> hw/mips/jazz.c | 15 +-
> hw/mips/loongson3_virt.c | 4 +-
> hw/mips/malta.c | 15 +-
> hw/mips/mipssim.c | 13 +-
> hw/net/etraxfs_eth.c | 5 +-
> hw/net/lan9118.c | 5 +-
> hw/net/lasi_i82596.c | 3 +-
> hw/net/smc91c111.c | 5 +-
> hw/openrisc/openrisc_sim.c | 18 +--
> hw/pci/pci.c | 73 +++------
> hw/ppc/e500.c | 4 +-
> hw/ppc/mac_newworld.c | 4 +-
> hw/ppc/mac_oldworld.c | 4 +-
> hw/ppc/ppc440_bamboo.c | 14 +-
> hw/ppc/prep.c | 8 +-
> hw/ppc/spapr.c | 18 +--
> hw/riscv/microchip_pfsoc.c | 14 +-
> hw/riscv/sifive_u.c | 7 +-
> hw/s390x/s390-virtio-ccw.c | 11 +-
> hw/sh4/r2d.c | 6 +-
> hw/sparc/sun4m.c | 20 ++-
> hw/sparc64/sun4u.c | 27 +---
> hw/xen/xen-bus.c | 6 +-
> hw/xen/xen_devconfig.c | 25 ---
> hw/xenpv/xen_machine_pv.c | 9 --
> hw/xtensa/virt.c | 4 +-
> hw/xtensa/xtfpga.c | 13 +-
> include/hw/cris/etraxfs.h | 2 +-
> include/hw/i386/pc.h | 4 +-
> include/hw/net/lan9118.h | 2 +-
> include/hw/net/ne2000-isa.h | 2 -
> include/hw/net/smc91c111.h | 2 +-
> include/hw/pci/pci.h | 7 +-
> include/hw/xen/xen-bus.h | 2 +-
> include/hw/xen/xen-legacy-backend.h | 1 -
> include/net/net.h | 18 +--
> net/net.c | 253 +++++++++++++++++++++++++------
> system/globals.c | 2 -
> tests/qtest/npcm7xx_emc-test.c | 18 +--
> 79 files changed, 479 insertions(+), 550 deletions(-)
>
>
>
>
[-- Attachment #2: smime.p7s --]
[-- Type: application/pkcs7-signature, Size: 5965 bytes --]
^ permalink raw reply [flat|nested] 105+ messages in thread
* Re: [PATCH v3 00/46] Rework matching of network devices to -nic options
2024-01-24 13:13 ` [PATCH v3 00/46] Rework matching of network devices to -nic options David Woodhouse
@ 2024-01-25 0:38 ` Jason Wang
2024-01-26 16:51 ` Thomas Huth
0 siblings, 1 reply; 105+ messages in thread
From: Jason Wang @ 2024-01-25 0:38 UTC (permalink / raw)
To: David Woodhouse, Thomas Huth; +Cc: qemu-devel
On Wed, Jan 24, 2024 at 9:14 PM David Woodhouse <dwmw2@infradead.org> wrote:
>
> Hi Jason,
>
> I think this series probably lives or dies with you. I think it's a
> worthwhile cleanup, but I no longer have an immediate need for it; I
> shipped a slightly ugly workaround in QEMU 8.2.
>
> Please could you let me know if it's worth persisting with it?
Yes it is.
Thomas, I remember you've done tweaks for -nic in the past. would you
like to review this series?
Thanks
>
> Thanks.
>
> On Mon, 2024-01-08 at 20:26 +0000, David Woodhouse wrote:
> >
> > Most platforms iterating directly over the nd_table[] are doing one of
> > two things. Either they are creating the NIC for their platform and want
> > to find a matching -nic configuration for it, if such exists. Or they
> > are only going to create that platform NIC if a matching config *does*
> > exist.
> >
> > All of those can be converted to the new qemu_configure_nic_device()
> > and qemu_create_nic_device() functions. The latter of which will call
> > qdev_new() to create the device (and apply the config) if a matching
> > NIC config does exist for it. The existing behaviour of each platform
> > has been preserved for now, despite it being apparently fairly random.
> >
> > PCI and indeed XenBus can use a qemu_create_nic_bus_devices() which will
> > create all NICs that live on a given bus type. That covers most
> > platforms, but some PCI platforms do something special with the first
> > NIC of a given type, placing it in the slot where it would have been on
> > the real hardware. There were various inconsistencies in the way the
> > platforms did so, and whether they cared what model the NIC was. Those
> > subtle behavioural changes I *have* allowed to change, and now the
> > pci_init_nic_slot() function will pick the first NIC that the user
> > specified which isn't explicitly *not* the default type, and put that
> > in the specified slot.
> >
> > The tests for npcm7xx used to lament that they had to instantiate both
> > NICs even when they wanted to test only the second, because there was
> > no way to specify which hardware devices gets which configuration. I
> > made that untrue, by allowing 'emc0' and 'emc1' aliases, and fixed up
> > the test accordingly.
> >
> > There are one or two special cases which want to do special things with
> > the MAC address of the primary NIC, to set up a system identification
> > (or force it to use an Apple OUI, in the case of m68k/q400). All those
> > work out relatively cleanly too.
> >
> > And I can clean up the ugly patch which fixed up the Xen network device
> > handling, and replace it with a simple call to the new
> > qemu_create_nic_bus_devices() function.
> >
> > I suspect that we can remove the pci_init_nic_devices() from platform
> > code and just do it later, except for platforms which *care* which
> > PCI bus the dynamic devices go on (is that just sun4u which puts its
> > primary NIC onto a different bus?).
> >
> > Finally, while we're at it, clean up -nic model=help to only print
> > the device models which are actually usable on the given platform
> > rather than just listing them *all*.
> >
> > And now we can make nd_table[] and nb_nics static in net/net.c because
> > nothing else has any business poking at them directly.
> >
> > v3: Rebase to 8.2
> >
> > v2: Some build fixes after better coverage testing, revert the Xen fix
> > in this series because I'm putting the less invasive hack into 8.2
> > (hopefully).
> >
> > David Woodhouse (46):
> > net: add qemu_{configure,create}_nic_device(), qemu_find_nic_info()
> > net: report list of available models according to platform
> > net: add qemu_create_nic_bus_devices()
> > hw/pci: add pci_init_nic_devices(), pci_init_nic_in_slot()
> > hw/i386/pc: use qemu_get_nic_info() and pci_init_nic_devices()
> > hw/xen: use qemu_create_nic_bus_devices() to instantiate Xen NICs
> > hw/alpha/dp264: use pci_init_nic_devices()
> > hw/arm/sbsa-ref: use pci_init_nic_devices()
> > hw/arm/virt: use pci_init_nic_devices()
> > hw/hppa: use pci_init_nic_devices()
> > hw/loongarch: use pci_init_nic_devices()
> > hw/mips/fuloong2e: use pci_init_nic_devices()
> > hw/mips/malta: use pci_init_nic_devices()
> > hw/mips/loongson3_virt: use pci_init_nic_devices()
> > hw/ppc/prep: use pci_init_nic_devices()
> > hw/ppc/spapr: use qemu_get_nic_info() and pci_init_nic_devices()
> > hw/ppc: use pci_init_nic_devices()
> > hw/sh4/r2d: use pci_init_nic_devices()
> > hw/sparc64/sun4u: use pci_init_nic_devices()
> > hw/xtensa/virt: use pci_init_nic_devices()
> > hw/arm/allwinner: use qemu_configure_nic_device()
> > hw/arm/aspeed: use qemu_configure_nic_device()
> > hw/arm/exynos4: use qemu_create_nic_device()
> > hw/arm/fsl: use qemu_configure_nic_device()
> > hw/net/smc91c111: use qemu_configure_nic_device()
> > hw/net/lan9118: use qemu_configure_nic_device()
> > hw/arm/highbank: use qemu_create_nic_device()
> > hw/arm/npcm7xx: use qemu_configure_nic_device, allow emc0/emc1 as aliases
> > hw/arm/stellaris: use qemu_find_nic_info()
> > hw/arm: use qemu_configure_nic_device()
> > hw/net/etraxfs-eth: use qemu_configure_nic_device()
> > hw/m68k/mcf5208: use qemu_create_nic_device()
> > hw/m68k/q800: use qemu_find_nic_info()
> > hw/microblaze: use qemu_configure_nic_device()
> > hw/mips/mipssim: use qemu_create_nic_device()
> > hw/mips/jazz: use qemu_find_nic_info()
> > hw/net/lasi_i82596: use qemu_configure_nic_device()
> > hw/openrisc/openrisc_sim: use qemu_create_nic_device()
> > hw/riscv: use qemu_configure_nic_device()
> > hw/s390x/s390-virtio-ccw: use qemu_create_nic_device()
> > hw/sparc/sun4m: use qemu_find_nic_info()
> > hw/xtensa/xtfpga: use qemu_create_nic_device()
> > net: remove qemu_check_nic_model()
> > hw/pci: remove pci_nic_init_nofail()
> > net: remove qemu_show_nic_models(), qemu_find_nic_model()
> > net: make nb_nics and nd_table[] static in net/net.c
> >
> > hw/alpha/dp264.c | 4 +-
> > hw/arm/allwinner-a10.c | 6 +-
> > hw/arm/allwinner-h3.c | 6 +-
> > hw/arm/allwinner-r40.c | 27 +---
> > hw/arm/aspeed.c | 9 +-
> > hw/arm/exynos4_boards.c | 6 +-
> > hw/arm/fsl-imx25.c | 2 +-
> > hw/arm/fsl-imx6.c | 2 +-
> > hw/arm/fsl-imx6ul.c | 2 +-
> > hw/arm/fsl-imx7.c | 2 +-
> > hw/arm/gumstix.c | 6 +-
> > hw/arm/highbank.c | 12 +-
> > hw/arm/integratorcp.c | 5 +-
> > hw/arm/kzm.c | 4 +-
> > hw/arm/mainstone.c | 3 +-
> > hw/arm/mps2-tz.c | 8 +-
> > hw/arm/mps2.c | 2 +-
> > hw/arm/msf2-soc.c | 6 +-
> > hw/arm/musicpal.c | 3 +-
> > hw/arm/npcm7xx.c | 16 +-
> > hw/arm/realview.c | 25 ++-
> > hw/arm/sbsa-ref.c | 4 +-
> > hw/arm/stellaris.c | 30 +++-
> > hw/arm/versatilepb.c | 15 +-
> > hw/arm/vexpress.c | 4 +-
> > hw/arm/virt.c | 4 +-
> > hw/arm/xilinx_zynq.c | 11 +-
> > hw/arm/xlnx-versal.c | 7 +-
> > hw/arm/xlnx-zynqmp.c | 8 +-
> > hw/cris/axis_dev88.c | 9 +-
> > hw/hppa/machine.c | 7 +-
> > hw/i386/pc.c | 33 ++--
> > hw/i386/pc_piix.c | 2 +-
> > hw/i386/pc_q35.c | 2 +-
> > hw/loongarch/virt.c | 4 +-
> > hw/m68k/mcf5208.c | 19 +--
> > hw/m68k/q800.c | 29 ++--
> > hw/microblaze/petalogix_ml605_mmu.c | 3 +-
> > hw/microblaze/petalogix_s3adsp1800_mmu.c | 3 +-
> > hw/mips/fuloong2e.c | 16 +-
> > hw/mips/jazz.c | 15 +-
> > hw/mips/loongson3_virt.c | 4 +-
> > hw/mips/malta.c | 15 +-
> > hw/mips/mipssim.c | 13 +-
> > hw/net/etraxfs_eth.c | 5 +-
> > hw/net/lan9118.c | 5 +-
> > hw/net/lasi_i82596.c | 3 +-
> > hw/net/smc91c111.c | 5 +-
> > hw/openrisc/openrisc_sim.c | 18 +--
> > hw/pci/pci.c | 73 +++------
> > hw/ppc/e500.c | 4 +-
> > hw/ppc/mac_newworld.c | 4 +-
> > hw/ppc/mac_oldworld.c | 4 +-
> > hw/ppc/ppc440_bamboo.c | 14 +-
> > hw/ppc/prep.c | 8 +-
> > hw/ppc/spapr.c | 18 +--
> > hw/riscv/microchip_pfsoc.c | 14 +-
> > hw/riscv/sifive_u.c | 7 +-
> > hw/s390x/s390-virtio-ccw.c | 11 +-
> > hw/sh4/r2d.c | 6 +-
> > hw/sparc/sun4m.c | 20 ++-
> > hw/sparc64/sun4u.c | 27 +---
> > hw/xen/xen-bus.c | 6 +-
> > hw/xen/xen_devconfig.c | 25 ---
> > hw/xenpv/xen_machine_pv.c | 9 --
> > hw/xtensa/virt.c | 4 +-
> > hw/xtensa/xtfpga.c | 13 +-
> > include/hw/cris/etraxfs.h | 2 +-
> > include/hw/i386/pc.h | 4 +-
> > include/hw/net/lan9118.h | 2 +-
> > include/hw/net/ne2000-isa.h | 2 -
> > include/hw/net/smc91c111.h | 2 +-
> > include/hw/pci/pci.h | 7 +-
> > include/hw/xen/xen-bus.h | 2 +-
> > include/hw/xen/xen-legacy-backend.h | 1 -
> > include/net/net.h | 18 +--
> > net/net.c | 253 +++++++++++++++++++++++++------
> > system/globals.c | 2 -
> > tests/qtest/npcm7xx_emc-test.c | 18 +--
> > 79 files changed, 479 insertions(+), 550 deletions(-)
> >
> >
> >
> >
>
^ permalink raw reply [flat|nested] 105+ messages in thread
* Re: [PATCH v3 05/46] hw/i386/pc: use qemu_get_nic_info() and pci_init_nic_devices()
2024-01-08 20:26 ` [PATCH v3 05/46] hw/i386/pc: use qemu_get_nic_info() and pci_init_nic_devices() David Woodhouse
@ 2024-01-26 10:43 ` Thomas Huth
2024-01-26 11:13 ` David Woodhouse
0 siblings, 1 reply; 105+ messages in thread
From: Thomas Huth @ 2024-01-26 10:43 UTC (permalink / raw)
To: David Woodhouse, qemu-devel
Cc: Richard Henderson, Beniamino Galvani, Peter Maydell,
Strahinja Jankovic, Niek Linnenbank, Cédric Le Goater,
Andrew Jeffery, Joel Stanley, Igor Mitsyanko,
Jean-Christophe Dubois, Andrey Smirnov,
Philippe Mathieu-Daudé, Rob Herring, Subbaraya Sundeep,
Jan Kiszka, Tyrone Ting, Hao Wu, Radoslaw Biernacki,
Leif Lindholm, Marcin Juszkiewicz, Edgar E. Iglesias,
Alistair Francis, Helge Deller, Paolo Bonzini, Eduardo Habkost,
Michael S. Tsirkin, Marcel Apfelbaum, Song Gao, Thomas Huth,
Laurent Vivier, Huacai Chen, Jiaxun Yang, Hervé Poussineau,
Aleksandar Rikalo, Aurelien Jarno, Jason Wang, Jia Liu,
Stafford Horne, Mark Cave-Ayland, Nicholas Piggin,
Daniel Henrique Barboza, David Gibson, Harsh Prateek Bora,
Bin Meng, Palmer Dabbelt, Weiwei Li, Liu Zhiwei, Halil Pasic,
Christian Borntraeger, Eric Farman, David Hildenbrand,
Ilya Leoshkevich, Yoshinori Sato, Magnus Damm, Artyom Tarasenko,
Stefano Stabellini, Anthony Perard, Paul Durrant, Max Filippov,
qemu-arm, qemu-ppc, qemu-riscv, qemu-s390x, xen-devel,
David Woodhouse
On 08/01/2024 21.26, David Woodhouse wrote:
> From: David Woodhouse <dwmw@amazon.co.uk>
>
> Eliminate direct access to nd_table[] and nb_nics by processing the the
> Xen and ISA NICs first and then calling pci_init_nic_devices() for the
> rest.
>
> Signed-off-by: David Woodhouse <dwmw@amazon.co.uk>
> Reviewed-by: Paul Durrant <paul@xen.org>
> ---
> hw/i386/pc.c | 26 ++++++++++++++++----------
> include/hw/net/ne2000-isa.h | 2 --
> 2 files changed, 16 insertions(+), 12 deletions(-)
>
> diff --git a/hw/i386/pc.c b/hw/i386/pc.c
> index 496498df3a..d80c536d88 100644
> --- a/hw/i386/pc.c
> +++ b/hw/i386/pc.c
> @@ -658,8 +658,11 @@ static void pc_init_ne2k_isa(ISABus *bus, NICInfo *nd)
> {
> static int nb_ne2k = 0;
>
> - if (nb_ne2k == NE2000_NB_MAX)
> + if (nb_ne2k == NE2000_NB_MAX) {
> + error_setg(&error_fatal,
> + "maximum number of ISA NE2000 devices exceeded");
> return;
> + }
error_setg(&error_fatal, ...) quits QEMU, so the "return;" does not make
much sense anymore.
Now, according to include/qapi/error.h :
* Please don't error_setg(&error_fatal, ...), use error_report() and
* exit(), because that's more obvious.
So I'd suggest to do that instead.
Thanks,
Thomas
> isa_ne2000_init(bus, ne2000_io[nb_ne2k],
> ne2000_irq[nb_ne2k], nd);
> nb_ne2k++;
^ permalink raw reply [flat|nested] 105+ messages in thread
* Re: [PATCH v3 01/46] net: add qemu_{configure, create}_nic_device(), qemu_find_nic_info()
2024-01-08 20:26 ` [PATCH v3 01/46] net: add qemu_{configure, create}_nic_device(), qemu_find_nic_info() David Woodhouse
@ 2024-01-26 11:10 ` Thomas Huth
2024-01-26 14:16 ` David Woodhouse
2024-01-26 14:43 ` Peter Maydell
1 sibling, 1 reply; 105+ messages in thread
From: Thomas Huth @ 2024-01-26 11:10 UTC (permalink / raw)
To: David Woodhouse, qemu-devel
Cc: Richard Henderson, Beniamino Galvani, Peter Maydell,
Strahinja Jankovic, Niek Linnenbank, Cédric Le Goater,
Andrew Jeffery, Joel Stanley, Igor Mitsyanko,
Jean-Christophe Dubois, Andrey Smirnov,
Philippe Mathieu-Daudé, Rob Herring, Subbaraya Sundeep,
Jan Kiszka, Tyrone Ting, Hao Wu, Radoslaw Biernacki,
Leif Lindholm, Marcin Juszkiewicz, Edgar E. Iglesias,
Alistair Francis, Helge Deller, Paolo Bonzini, Eduardo Habkost,
Michael S. Tsirkin, Marcel Apfelbaum, Song Gao, Thomas Huth,
Laurent Vivier, Huacai Chen, Jiaxun Yang, Hervé Poussineau,
Aleksandar Rikalo, Aurelien Jarno, Jason Wang, Jia Liu,
Stafford Horne, Mark Cave-Ayland, Nicholas Piggin,
Daniel Henrique Barboza, David Gibson, Harsh Prateek Bora,
Bin Meng, Palmer Dabbelt, Weiwei Li, Liu Zhiwei, Halil Pasic,
Christian Borntraeger, Eric Farman, David Hildenbrand,
Ilya Leoshkevich, Yoshinori Sato, Magnus Damm, Artyom Tarasenko,
Stefano Stabellini, Anthony Perard, Paul Durrant, Max Filippov,
qemu-arm, qemu-ppc, qemu-riscv, qemu-s390x, xen-devel,
David Woodhouse
On 08/01/2024 21.26, David Woodhouse wrote:
> From: David Woodhouse <dwmw@amazon.co.uk>
>
> Most code which directly accesses nd_table[] and nb_nics uses them for
> one of two things. Either "I have created a NIC device and I'd like a
> configuration for it", or "I will create a NIC device *if* there is a
> configuration for it". With some variants on the theme around whether
> they actually *check* if the model specified in the configuration is
> the right one.
>
> Provide functions which perform both of those, allowing platforms to
> be a little more consistent and as a step towards making nd_table[]
> and nb_nics private to the net code.
>
> Also export the qemu_find_nic_info() helper, as some platforms have
> special cases they need to handle.
>
> Signed-off-by: David Woodhouse <dwmw@amazon.co.uk>
> Reviewed-by: Paul Durrant <paul@xen.org>
> ---
> include/net/net.h | 7 ++++++-
> net/net.c | 51 +++++++++++++++++++++++++++++++++++++++++++++++
> 2 files changed, 57 insertions(+), 1 deletion(-)
>
> diff --git a/include/net/net.h b/include/net/net.h
> index ffbd2c8d56..25ea83fd12 100644
> --- a/include/net/net.h
> +++ b/include/net/net.h
> @@ -207,7 +207,12 @@ int qemu_show_nic_models(const char *arg, const char *const *models);
> void qemu_check_nic_model(NICInfo *nd, const char *model);
> int qemu_find_nic_model(NICInfo *nd, const char * const *models,
> const char *default_model);
> -
> +NICInfo *qemu_find_nic_info(const char *typename, bool match_default,
> + const char *alias);
> +bool qemu_configure_nic_device(DeviceState *dev, bool match_default,
> + const char *alias);
> +DeviceState *qemu_create_nic_device(const char *typename, bool match_default,
> + const char *alias);
> void print_net_client(Monitor *mon, NetClientState *nc);
> void net_socket_rs_init(SocketReadState *rs,
> SocketReadStateFinalize *finalize,
> diff --git a/net/net.c b/net/net.c
> index 0520bc1681..aeb7f573fc 100644
> --- a/net/net.c
> +++ b/net/net.c
> @@ -1087,6 +1087,57 @@ static int net_init_nic(const Netdev *netdev, const char *name,
> return idx;
> }
>
> +NICInfo *qemu_find_nic_info(const char *typename, bool match_default,
> + const char *alias)
> +{
> + NICInfo *nd;
> + int i;
> +
> + for (i = 0; i < nb_nics; i++) {
> + nd = &nd_table[i];
> +
> + if (!nd->used || nd->instantiated) {
> + continue;
> + }
> +
> + if ((match_default && !nd->model) || !g_strcmp0(nd->model, typename)
> + || (alias && !g_strcmp0(nd->model, alias))) {
> + return nd;
> + }
> + }
> + return NULL;
> +}
> +
> +
> +/* "I have created a device. Please configure it if you can" */
> +bool qemu_configure_nic_device(DeviceState *dev, bool match_default,
> + const char *alias)
> +{
> + NICInfo *nd = qemu_find_nic_info(object_get_typename(OBJECT(dev)),
> + match_default, alias);
> +
> + if (nd) {
> + qdev_set_nic_properties(dev, nd);
> + return true;
> + }
> + return false;
> +}
> +
> +/* "Please create a device, if you have a configuration for it" */
> +DeviceState *qemu_create_nic_device(const char *typename, bool match_default,
> + const char *alias)
> +{
> + NICInfo *nd = qemu_find_nic_info(typename, match_default, alias);
> + DeviceState *dev;
> +
> + if (!nd) {
> + return NULL;
> + }
The qemu_check_nic_model() function that was used in some code that you
turned into qemu_create_nic_device() used to set:
if (!nd->model)
nd->model = g_strdup(default_model);
(in the qemu_find_nic_model() function that has been called by
qemu_check_nic_model())
Should we do that also here to make sure that nd->model is not NULL afterwards?
(same question likely applies to qemu_configure_nic_device() )
Apart from that, the patch looks fine to me.
Thomas
> + dev = qdev_new(typename);
> + qdev_set_nic_properties(dev, nd);
> + return dev;
> +}
>
> static int (* const net_client_init_fun[NET_CLIENT_DRIVER__MAX])(
> const Netdev *netdev,
^ permalink raw reply [flat|nested] 105+ messages in thread
* Re: [PATCH v3 05/46] hw/i386/pc: use qemu_get_nic_info() and pci_init_nic_devices()
2024-01-26 10:43 ` Thomas Huth
@ 2024-01-26 11:13 ` David Woodhouse
2024-01-26 11:20 ` Thomas Huth
0 siblings, 1 reply; 105+ messages in thread
From: David Woodhouse @ 2024-01-26 11:13 UTC (permalink / raw)
To: Thomas Huth, qemu-devel
Cc: Richard Henderson, Beniamino Galvani, Peter Maydell,
Strahinja Jankovic, Niek Linnenbank, Cédric Le Goater,
Andrew Jeffery, Joel Stanley, Igor Mitsyanko,
Jean-Christophe Dubois, Andrey Smirnov,
Philippe Mathieu-Daudé, Rob Herring, Subbaraya Sundeep,
Jan Kiszka, Tyrone Ting, Hao Wu, Radoslaw Biernacki,
Leif Lindholm, Marcin Juszkiewicz, Edgar E. Iglesias,
Alistair Francis, Helge Deller, Paolo Bonzini, Eduardo Habkost,
Michael S. Tsirkin, Marcel Apfelbaum, Song Gao, Thomas Huth,
Laurent Vivier, Huacai Chen, Jiaxun Yang, Hervé Poussineau,
Aleksandar Rikalo, Aurelien Jarno, Jason Wang, Jia Liu,
Stafford Horne, Mark Cave-Ayland, Nicholas Piggin,
Daniel Henrique Barboza, David Gibson, Harsh Prateek Bora,
Bin Meng, Palmer Dabbelt, Weiwei Li, Liu Zhiwei, Halil Pasic,
Christian Borntraeger, Eric Farman, David Hildenbrand,
Ilya Leoshkevich, Yoshinori Sato, Magnus Damm, Artyom Tarasenko,
Stefano Stabellini, Anthony Perard, Paul Durrant, Max Filippov,
qemu-arm, qemu-ppc, qemu-riscv, qemu-s390x, xen-devel
[-- Attachment #1: Type: text/plain, Size: 1878 bytes --]
On Fri, 2024-01-26 at 11:43 +0100, Thomas Huth wrote:
> On 08/01/2024 21.26, David Woodhouse wrote:
> > From: David Woodhouse <dwmw@amazon.co.uk>
> >
> > Eliminate direct access to nd_table[] and nb_nics by processing the the
> > Xen and ISA NICs first and then calling pci_init_nic_devices() for the
> > rest.
> >
> > Signed-off-by: David Woodhouse <dwmw@amazon.co.uk>
> > Reviewed-by: Paul Durrant <paul@xen.org>
> > ---
> > hw/i386/pc.c | 26 ++++++++++++++++----------
> > include/hw/net/ne2000-isa.h | 2 --
> > 2 files changed, 16 insertions(+), 12 deletions(-)
> >
> > diff --git a/hw/i386/pc.c b/hw/i386/pc.c
> > index 496498df3a..d80c536d88 100644
> > --- a/hw/i386/pc.c
> > +++ b/hw/i386/pc.c
> > @@ -658,8 +658,11 @@ static void pc_init_ne2k_isa(ISABus *bus, NICInfo *nd)
> > {
> > static int nb_ne2k = 0;
> >
> > - if (nb_ne2k == NE2000_NB_MAX)
> > + if (nb_ne2k == NE2000_NB_MAX) {
> > + error_setg(&error_fatal,
> > + "maximum number of ISA NE2000 devices exceeded");
> > return;
> > + }
>
> error_setg(&error_fatal, ...) quits QEMU, so the "return;" does not make
> much sense anymore.
> Now, according to include/qapi/error.h :
>
> * Please don't error_setg(&error_fatal, ...), use error_report() and
> * exit(), because that's more obvious.
>
> So I'd suggest to do that instead.
It's going slightly in the opposite direction to what's requested in
https://lore.kernel.org/qemu-devel/34e2c0c6-4e04-486a-8e1f-4afdc461a5d4@linaro.org/
I was thinking that a future patch would let the &error_fatal be an
Error** passed in by the caller, and not actually hard-coded to be
fatal at all.
But sure, unless Philippe objects I'm happy to do it as you show above.
[-- Attachment #2: smime.p7s --]
[-- Type: application/pkcs7-signature, Size: 5965 bytes --]
^ permalink raw reply [flat|nested] 105+ messages in thread
* Re: [PATCH v3 05/46] hw/i386/pc: use qemu_get_nic_info() and pci_init_nic_devices()
2024-01-26 11:13 ` David Woodhouse
@ 2024-01-26 11:20 ` Thomas Huth
2024-01-26 11:25 ` David Woodhouse
0 siblings, 1 reply; 105+ messages in thread
From: Thomas Huth @ 2024-01-26 11:20 UTC (permalink / raw)
To: David Woodhouse, qemu-devel
Cc: Richard Henderson, Beniamino Galvani, Peter Maydell,
Strahinja Jankovic, Niek Linnenbank, Cédric Le Goater,
Andrew Jeffery, Joel Stanley, Igor Mitsyanko,
Jean-Christophe Dubois, Andrey Smirnov,
Philippe Mathieu-Daudé, Rob Herring, Subbaraya Sundeep,
Jan Kiszka, Tyrone Ting, Hao Wu, Radoslaw Biernacki,
Leif Lindholm, Marcin Juszkiewicz, Edgar E. Iglesias,
Alistair Francis, Helge Deller, Paolo Bonzini, Eduardo Habkost,
Michael S. Tsirkin, Marcel Apfelbaum, Song Gao, Thomas Huth,
Laurent Vivier, Huacai Chen, Jiaxun Yang, Hervé Poussineau,
Aleksandar Rikalo, Aurelien Jarno, Jason Wang, Jia Liu,
Stafford Horne, Mark Cave-Ayland, Nicholas Piggin,
Daniel Henrique Barboza, David Gibson, Harsh Prateek Bora,
Bin Meng, Palmer Dabbelt, Weiwei Li, Liu Zhiwei, Halil Pasic,
Christian Borntraeger, Eric Farman, David Hildenbrand,
Ilya Leoshkevich, Yoshinori Sato, Magnus Damm, Artyom Tarasenko,
Stefano Stabellini, Anthony Perard, Paul Durrant, Max Filippov,
qemu-arm, qemu-ppc, qemu-riscv, qemu-s390x, xen-devel
On 26/01/2024 12.13, David Woodhouse wrote:
> On Fri, 2024-01-26 at 11:43 +0100, Thomas Huth wrote:
>> On 08/01/2024 21.26, David Woodhouse wrote:
>>> From: David Woodhouse <dwmw@amazon.co.uk>
>>>
>>> Eliminate direct access to nd_table[] and nb_nics by processing the the
>>> Xen and ISA NICs first and then calling pci_init_nic_devices() for the
>>> rest.
>>>
>>> Signed-off-by: David Woodhouse <dwmw@amazon.co.uk>
>>> Reviewed-by: Paul Durrant <paul@xen.org>
>>> ---
>>> hw/i386/pc.c | 26 ++++++++++++++++----------
>>> include/hw/net/ne2000-isa.h | 2 --
>>> 2 files changed, 16 insertions(+), 12 deletions(-)
>>>
>>> diff --git a/hw/i386/pc.c b/hw/i386/pc.c
>>> index 496498df3a..d80c536d88 100644
>>> --- a/hw/i386/pc.c
>>> +++ b/hw/i386/pc.c
>>> @@ -658,8 +658,11 @@ static void pc_init_ne2k_isa(ISABus *bus, NICInfo *nd)
>>> {
>>> static int nb_ne2k = 0;
>>>
>>> - if (nb_ne2k == NE2000_NB_MAX)
>>> + if (nb_ne2k == NE2000_NB_MAX) {
>>> + error_setg(&error_fatal,
>>> + "maximum number of ISA NE2000 devices exceeded");
>>> return;
>>> + }
>>
>> error_setg(&error_fatal, ...) quits QEMU, so the "return;" does not make
>> much sense anymore.
>> Now, according to include/qapi/error.h :
>>
>> * Please don't error_setg(&error_fatal, ...), use error_report() and
>> * exit(), because that's more obvious.
>>
>> So I'd suggest to do that instead.
>
> It's going slightly in the opposite direction to what's requested in
> https://lore.kernel.org/qemu-devel/34e2c0c6-4e04-486a-8e1f-4afdc461a5d4@linaro.org/
>
> I was thinking that a future patch would let the &error_fatal be an
> Error** passed in by the caller, and not actually hard-coded to be
> fatal at all.
>
> But sure, unless Philippe objects I'm happy to do it as you show above.
Now that you mention it, I'd also prefer having an Error** parameter to the
function instead, that's certainly cleaner. So if you don't mind, please
follow Philippe's suggestion instead!
Thanks,
Thomas
^ permalink raw reply [flat|nested] 105+ messages in thread
* Re: [PATCH v3 05/46] hw/i386/pc: use qemu_get_nic_info() and pci_init_nic_devices()
2024-01-26 11:20 ` Thomas Huth
@ 2024-01-26 11:25 ` David Woodhouse
2024-01-26 13:45 ` Thomas Huth
0 siblings, 1 reply; 105+ messages in thread
From: David Woodhouse @ 2024-01-26 11:25 UTC (permalink / raw)
To: Thomas Huth, qemu-devel
Cc: Richard Henderson, Beniamino Galvani, Peter Maydell,
Strahinja Jankovic, Niek Linnenbank, Cédric Le Goater,
Andrew Jeffery, Joel Stanley, Igor Mitsyanko,
Jean-Christophe Dubois, Andrey Smirnov,
Philippe Mathieu-Daudé, Rob Herring, Subbaraya Sundeep,
Jan Kiszka, Tyrone Ting, Hao Wu, Radoslaw Biernacki,
Leif Lindholm, Marcin Juszkiewicz, Edgar E. Iglesias,
Alistair Francis, Helge Deller, Paolo Bonzini, Eduardo Habkost,
Michael S. Tsirkin, Marcel Apfelbaum, Song Gao, Thomas Huth,
Laurent Vivier, Huacai Chen, Jiaxun Yang, Hervé Poussineau,
Aleksandar Rikalo, Aurelien Jarno, Jason Wang, Jia Liu,
Stafford Horne, Mark Cave-Ayland, Nicholas Piggin,
Daniel Henrique Barboza, David Gibson, Harsh Prateek Bora,
Bin Meng, Palmer Dabbelt, Weiwei Li, Liu Zhiwei, Halil Pasic,
Christian Borntraeger, Eric Farman, David Hildenbrand,
Ilya Leoshkevich, Yoshinori Sato, Magnus Damm, Artyom Tarasenko,
Stefano Stabellini, Anthony Perard, Paul Durrant, Max Filippov,
qemu-arm, qemu-ppc, qemu-riscv, qemu-s390x, xen-devel
[-- Attachment #1: Type: text/plain, Size: 2795 bytes --]
On Fri, 2024-01-26 at 12:20 +0100, Thomas Huth wrote:
> On 26/01/2024 12.13, David Woodhouse wrote:
> > On Fri, 2024-01-26 at 11:43 +0100, Thomas Huth wrote:
> > > On 08/01/2024 21.26, David Woodhouse wrote:
> > > > From: David Woodhouse <dwmw@amazon.co.uk>
> > > >
> > > > Eliminate direct access to nd_table[] and nb_nics by processing the the
> > > > Xen and ISA NICs first and then calling pci_init_nic_devices() for the
> > > > rest.
> > > >
> > > > Signed-off-by: David Woodhouse <dwmw@amazon.co.uk>
> > > > Reviewed-by: Paul Durrant <paul@xen.org>
> > > > ---
> > > > hw/i386/pc.c | 26 ++++++++++++++++----------
> > > > include/hw/net/ne2000-isa.h | 2 --
> > > > 2 files changed, 16 insertions(+), 12 deletions(-)
> > > >
> > > > diff --git a/hw/i386/pc.c b/hw/i386/pc.c
> > > > index 496498df3a..d80c536d88 100644
> > > > --- a/hw/i386/pc.c
> > > > +++ b/hw/i386/pc.c
> > > > @@ -658,8 +658,11 @@ static void pc_init_ne2k_isa(ISABus *bus, NICInfo *nd)
> > > > {
> > > > static int nb_ne2k = 0;
> > > >
> > > > - if (nb_ne2k == NE2000_NB_MAX)
> > > > + if (nb_ne2k == NE2000_NB_MAX) {
> > > > + error_setg(&error_fatal,
> > > > + "maximum number of ISA NE2000 devices exceeded");
> > > > return;
> > > > + }
> > >
> > > error_setg(&error_fatal, ...) quits QEMU, so the "return;" does not make
> > > much sense anymore.
> > > Now, according to include/qapi/error.h :
> > >
> > > * Please don't error_setg(&error_fatal, ...), use error_report() and
> > > * exit(), because that's more obvious.
> > >
> > > So I'd suggest to do that instead.
> >
> > It's going slightly in the opposite direction to what's requested in
> > https://lore.kernel.org/qemu-devel/34e2c0c6-4e04-486a-8e1f-4afdc461a5d4@linaro.org/
> >
> > I was thinking that a future patch would let the &error_fatal be an
> > Error** passed in by the caller, and not actually hard-coded to be
> > fatal at all.
> >
> > But sure, unless Philippe objects I'm happy to do it as you show above.
>
> Now that you mention it, I'd also prefer having an Error** parameter to the
> function instead, that's certainly cleaner. So if you don't mind, please
> follow Philippe's suggestion instead!
Right. There's a whole bunch of functions to untangle, that take an
Error** but don't return success/failure independently as they should.
Or don't even take the Error**.
Rather than trying to fix that as part of this series, this was my
compromise — making it easy to switch that explicit &error_fatal out
for a function parameter, but not trying to shave that part of the yak
myself just yet.
[-- Attachment #2: smime.p7s --]
[-- Type: application/pkcs7-signature, Size: 5965 bytes --]
^ permalink raw reply [flat|nested] 105+ messages in thread
* Re: [PATCH v3 05/46] hw/i386/pc: use qemu_get_nic_info() and pci_init_nic_devices()
2024-01-26 11:25 ` David Woodhouse
@ 2024-01-26 13:45 ` Thomas Huth
2024-01-26 13:56 ` David Woodhouse
0 siblings, 1 reply; 105+ messages in thread
From: Thomas Huth @ 2024-01-26 13:45 UTC (permalink / raw)
To: David Woodhouse, qemu-devel
Cc: Richard Henderson, Beniamino Galvani, Peter Maydell,
Strahinja Jankovic, Niek Linnenbank, Cédric Le Goater,
Andrew Jeffery, Joel Stanley, Igor Mitsyanko,
Jean-Christophe Dubois, Andrey Smirnov,
Philippe Mathieu-Daudé, Rob Herring, Subbaraya Sundeep,
Jan Kiszka, Tyrone Ting, Hao Wu, Radoslaw Biernacki,
Leif Lindholm, Marcin Juszkiewicz, Edgar E. Iglesias,
Alistair Francis, Helge Deller, Paolo Bonzini, Eduardo Habkost,
Michael S. Tsirkin, Marcel Apfelbaum, Song Gao, Thomas Huth,
Laurent Vivier, Huacai Chen, Jiaxun Yang, Hervé Poussineau,
Aleksandar Rikalo, Aurelien Jarno, Jason Wang, Jia Liu,
Stafford Horne, Mark Cave-Ayland, Nicholas Piggin,
Daniel Henrique Barboza, David Gibson, Harsh Prateek Bora,
Bin Meng, Palmer Dabbelt, Weiwei Li, Liu Zhiwei, Halil Pasic,
Christian Borntraeger, Eric Farman, David Hildenbrand,
Ilya Leoshkevich, Yoshinori Sato, Magnus Damm, Artyom Tarasenko,
Stefano Stabellini, Anthony Perard, Paul Durrant, Max Filippov,
qemu-arm, qemu-ppc, qemu-riscv, qemu-s390x, xen-devel
On 26/01/2024 12.25, David Woodhouse wrote:
> On Fri, 2024-01-26 at 12:20 +0100, Thomas Huth wrote:
>> On 26/01/2024 12.13, David Woodhouse wrote:
>>> On Fri, 2024-01-26 at 11:43 +0100, Thomas Huth wrote:
>>>> On 08/01/2024 21.26, David Woodhouse wrote:
>>>>> From: David Woodhouse <dwmw@amazon.co.uk>
>>>>>
>>>>> Eliminate direct access to nd_table[] and nb_nics by processing the the
>>>>> Xen and ISA NICs first and then calling pci_init_nic_devices() for the
>>>>> rest.
>>>>>
>>>>> Signed-off-by: David Woodhouse <dwmw@amazon.co.uk>
>>>>> Reviewed-by: Paul Durrant <paul@xen.org>
>>>>> ---
>>>>> hw/i386/pc.c | 26 ++++++++++++++++----------
>>>>> include/hw/net/ne2000-isa.h | 2 --
>>>>> 2 files changed, 16 insertions(+), 12 deletions(-)
>>>>>
>>>>> diff --git a/hw/i386/pc.c b/hw/i386/pc.c
>>>>> index 496498df3a..d80c536d88 100644
>>>>> --- a/hw/i386/pc.c
>>>>> +++ b/hw/i386/pc.c
>>>>> @@ -658,8 +658,11 @@ static void pc_init_ne2k_isa(ISABus *bus, NICInfo *nd)
>>>>> {
>>>>> static int nb_ne2k = 0;
>>>>>
>>>>> - if (nb_ne2k == NE2000_NB_MAX)
>>>>> + if (nb_ne2k == NE2000_NB_MAX) {
>>>>> + error_setg(&error_fatal,
>>>>> + "maximum number of ISA NE2000 devices exceeded");
>>>>> return;
>>>>> + }
>>>>
>>>> error_setg(&error_fatal, ...) quits QEMU, so the "return;" does not make
>>>> much sense anymore.
>>>> Now, according to include/qapi/error.h :
>>>>
>>>> * Please don't error_setg(&error_fatal, ...), use error_report() and
>>>> * exit(), because that's more obvious.
>>>>
>>>> So I'd suggest to do that instead.
>>>
>>> It's going slightly in the opposite direction to what's requested in
>>> https://lore.kernel.org/qemu-devel/34e2c0c6-4e04-486a-8e1f-4afdc461a5d4@linaro.org/
>>>
>>> I was thinking that a future patch would let the &error_fatal be an
>>> Error** passed in by the caller, and not actually hard-coded to be
>>> fatal at all.
>>>
>>> But sure, unless Philippe objects I'm happy to do it as you show above.
>>
>> Now that you mention it, I'd also prefer having an Error** parameter to the
>> function instead, that's certainly cleaner. So if you don't mind, please
>> follow Philippe's suggestion instead!
>
> Right. There's a whole bunch of functions to untangle, that take an
> Error** but don't return success/failure independently as they should.
> Or don't even take the Error**.
>
> Rather than trying to fix that as part of this series, this was my
> compromise — making it easy to switch that explicit &error_fatal out
> for a function parameter, but not trying to shave that part of the yak
> myself just yet.
I think the nicest compromise is to add the "Error **errp" to the
pc_init_ne2k_isa() and change the caller to pass in &error_fatal there ...
further clean-up (passing the error even up further in the stack) is out of
scope of this series, indeed.
Thomas
^ permalink raw reply [flat|nested] 105+ messages in thread
* Re: [PATCH v3 12/46] hw/mips/fuloong2e: use pci_init_nic_devices()
2024-01-08 20:26 ` [PATCH v3 12/46] hw/mips/fuloong2e: " David Woodhouse
@ 2024-01-26 13:53 ` Thomas Huth
0 siblings, 0 replies; 105+ messages in thread
From: Thomas Huth @ 2024-01-26 13:53 UTC (permalink / raw)
To: David Woodhouse, qemu-devel, Philippe Mathieu-Daudé
Cc: Richard Henderson, Beniamino Galvani, Peter Maydell,
Strahinja Jankovic, Niek Linnenbank, Cédric Le Goater,
Andrew Jeffery, Joel Stanley, Igor Mitsyanko,
Jean-Christophe Dubois, Andrey Smirnov, Rob Herring,
Subbaraya Sundeep, Jan Kiszka, Tyrone Ting, Hao Wu,
Radoslaw Biernacki, Leif Lindholm, Marcin Juszkiewicz,
Edgar E. Iglesias, Alistair Francis, Helge Deller, Paolo Bonzini,
Eduardo Habkost, Michael S. Tsirkin, Marcel Apfelbaum, Song Gao,
Thomas Huth, Laurent Vivier, Huacai Chen, Jiaxun Yang,
Hervé Poussineau, Aleksandar Rikalo, Aurelien Jarno,
Jason Wang, Jia Liu, Stafford Horne, Mark Cave-Ayland,
Nicholas Piggin, Daniel Henrique Barboza, David Gibson,
Harsh Prateek Bora, Bin Meng, Palmer Dabbelt, Weiwei Li,
Liu Zhiwei, Halil Pasic, Christian Borntraeger, Eric Farman,
David Hildenbrand, Ilya Leoshkevich, Yoshinori Sato, Magnus Damm,
Artyom Tarasenko, Stefano Stabellini, Anthony Perard,
Paul Durrant, Max Filippov, qemu-arm, qemu-ppc, qemu-riscv,
qemu-s390x, xen-devel, David Woodhouse
On 08/01/2024 21.26, David Woodhouse wrote:
> From: David Woodhouse <dwmw@amazon.co.uk>
>
> The previous behaviour was: *if* the first NIC specified on the command
> line was an RTL8139 (or unspecified model) then it gets assigned to PCI
> slot 7, which is where the Fuloong board had an RTL8139. All other
> devices (including the first, if it was specified a anything other then
> an rtl8319) get dynamically assigned on the bus.
>
> The new behaviour is subtly different: If the first NIC was given a
> specific model *other* than rtl8139, and a subsequent NIC was not,
> then the rtl8139 (or unspecified) NIC will go to slot 7 and the rest
> will be dynamically assigned.
Sounds fine for me ... Philippe, what do you think?
Reviewed-by: Thomas Huth <thuth@redhat.com>
>
> Signed-off-by: David Woodhouse <dwmw@amazon.co.uk>
> ---
> hw/mips/fuloong2e.c | 16 +++-------------
> 1 file changed, 3 insertions(+), 13 deletions(-)
>
> diff --git a/hw/mips/fuloong2e.c b/hw/mips/fuloong2e.c
> index 97b2c8ed8e..a45aac368c 100644
> --- a/hw/mips/fuloong2e.c
> +++ b/hw/mips/fuloong2e.c
> @@ -201,19 +201,9 @@ static void main_cpu_reset(void *opaque)
> /* Network support */
> static void network_init(PCIBus *pci_bus)
> {
> - int i;
> -
> - for (i = 0; i < nb_nics; i++) {
> - NICInfo *nd = &nd_table[i];
> - const char *default_devaddr = NULL;
> -
> - if (i == 0 && (!nd->model || strcmp(nd->model, "rtl8139") == 0)) {
> - /* The Fuloong board has a RTL8139 card using PCI SLOT 7 */
> - default_devaddr = "07";
> - }
> -
> - pci_nic_init_nofail(nd, pci_bus, "rtl8139", default_devaddr);
> - }
> + /* The Fuloong board has a RTL8139 card using PCI SLOT 7 */
> + pci_init_nic_in_slot(pci_bus, "rtl8139", NULL, "07");
> + pci_init_nic_devices(pci_bus, "rtl8139");
> }
>
> static void mips_fuloong2e_init(MachineState *machine)
^ permalink raw reply [flat|nested] 105+ messages in thread
* Re: [PATCH v3 05/46] hw/i386/pc: use qemu_get_nic_info() and pci_init_nic_devices()
2024-01-26 13:45 ` Thomas Huth
@ 2024-01-26 13:56 ` David Woodhouse
0 siblings, 0 replies; 105+ messages in thread
From: David Woodhouse @ 2024-01-26 13:56 UTC (permalink / raw)
To: Thomas Huth, qemu-devel
Cc: Richard Henderson, Beniamino Galvani, Peter Maydell,
Strahinja Jankovic, Niek Linnenbank, Cédric Le Goater,
Andrew Jeffery, Joel Stanley, Igor Mitsyanko,
Jean-Christophe Dubois, Andrey Smirnov,
Philippe Mathieu-Daudé, Rob Herring, Subbaraya Sundeep,
Jan Kiszka, Tyrone Ting, Hao Wu, Radoslaw Biernacki,
Leif Lindholm, Marcin Juszkiewicz, Edgar E. Iglesias,
Alistair Francis, Helge Deller, Paolo Bonzini, Eduardo Habkost,
Michael S. Tsirkin, Marcel Apfelbaum, Song Gao, Thomas Huth,
Laurent Vivier, Huacai Chen, Jiaxun Yang, Hervé Poussineau,
Aleksandar Rikalo, Aurelien Jarno, Jason Wang, Jia Liu,
Stafford Horne, Mark Cave-Ayland, Nicholas Piggin,
Daniel Henrique Barboza, David Gibson, Harsh Prateek Bora,
Bin Meng, Palmer Dabbelt, Weiwei Li, Liu Zhiwei, Halil Pasic,
Christian Borntraeger, Eric Farman, David Hildenbrand,
Ilya Leoshkevich, Yoshinori Sato, Magnus Damm, Artyom Tarasenko,
Stefano Stabellini, Anthony Perard, Paul Durrant, Max Filippov,
qemu-arm, qemu-ppc, qemu-riscv, qemu-s390x, xen-devel
[-- Attachment #1: Type: text/plain, Size: 574 bytes --]
On Fri, 2024-01-26 at 14:45 +0100, Thomas Huth wrote:
> I think the nicest compromise is to add the "Error **errp" to the
> pc_init_ne2k_isa() and change the caller to pass in &error_fatal there ...
> further clean-up (passing the error even up further in the stack) is out of
> scope of this series, indeed.
Yep. That's what I've done in my tree at
https://git.infradead.org/users/dwmw2/qemu.git/commitdiff/ec5be4aaf6d2
I've fixed up the LASI NIC support, and I'm now looking into what you
said about nd->model (I don't think it matters, but I'm checking).
[-- Attachment #2: smime.p7s --]
[-- Type: application/pkcs7-signature, Size: 5965 bytes --]
^ permalink raw reply [flat|nested] 105+ messages in thread
* Re: [PATCH v3 13/46] hw/mips/malta: use pci_init_nic_devices()
2024-01-08 20:26 ` [PATCH v3 13/46] hw/mips/malta: " David Woodhouse
@ 2024-01-26 13:57 ` Thomas Huth
0 siblings, 0 replies; 105+ messages in thread
From: Thomas Huth @ 2024-01-26 13:57 UTC (permalink / raw)
To: David Woodhouse, qemu-devel, Philippe Mathieu-Daudé
Cc: Richard Henderson, Beniamino Galvani, Peter Maydell,
Strahinja Jankovic, Niek Linnenbank, Cédric Le Goater,
Andrew Jeffery, Joel Stanley, Igor Mitsyanko,
Jean-Christophe Dubois, Andrey Smirnov, Rob Herring,
Subbaraya Sundeep, Jan Kiszka, Tyrone Ting, Hao Wu,
Radoslaw Biernacki, Leif Lindholm, Marcin Juszkiewicz,
Edgar E. Iglesias, Alistair Francis, Helge Deller, Paolo Bonzini,
Eduardo Habkost, Michael S. Tsirkin, Marcel Apfelbaum, Song Gao,
Thomas Huth, Laurent Vivier, Huacai Chen, Jiaxun Yang,
Hervé Poussineau, Aleksandar Rikalo, Aurelien Jarno,
Jason Wang, Jia Liu, Stafford Horne, Mark Cave-Ayland,
Nicholas Piggin, Daniel Henrique Barboza, David Gibson,
Harsh Prateek Bora, Bin Meng, Palmer Dabbelt, Weiwei Li,
Liu Zhiwei, Halil Pasic, Christian Borntraeger, Eric Farman,
David Hildenbrand, Ilya Leoshkevich, Yoshinori Sato, Magnus Damm,
Artyom Tarasenko, Stefano Stabellini, Anthony Perard,
Paul Durrant, Max Filippov, qemu-arm, qemu-ppc, qemu-riscv,
qemu-s390x, xen-devel, David Woodhouse
On 08/01/2024 21.26, David Woodhouse wrote:
> From: David Woodhouse <dwmw@amazon.co.uk>
>
> The Malta board setup code would previously place the first NIC into PCI
> slot 11 if was a PCNet card, and the rest (including the first if it was
> anything other than a PCNet card) would be dynamically assigned.
>
> Now it will place any PCNet NIC into slot 11, and then anything else will
> be dynamically assigned.
>
> Signed-off-by: David Woodhouse <dwmw@amazon.co.uk>
> ---
> hw/mips/malta.c | 15 +++------------
> 1 file changed, 3 insertions(+), 12 deletions(-)
>
> diff --git a/hw/mips/malta.c b/hw/mips/malta.c
> index d22bb1edef..af74008c82 100644
> --- a/hw/mips/malta.c
> +++ b/hw/mips/malta.c
> @@ -612,18 +612,9 @@ static MaltaFPGAState *malta_fpga_init(MemoryRegion *address_space,
> /* Network support */
> static void network_init(PCIBus *pci_bus)
> {
> - int i;
> -
> - for (i = 0; i < nb_nics; i++) {
> - NICInfo *nd = &nd_table[i];
> - const char *default_devaddr = NULL;
> -
> - if (i == 0 && (!nd->model || strcmp(nd->model, "pcnet") == 0))
> - /* The malta board has a PCNet card using PCI SLOT 11 */
> - default_devaddr = "0b";
> -
> - pci_nic_init_nofail(nd, pci_bus, "pcnet", default_devaddr);
> - }
> + /* The malta board has a PCNet card using PCI SLOT 11 */
> + pci_init_nic_in_slot(pci_bus, "pcnet", NULL, "0b");
> + pci_init_nic_devices(pci_bus, "pcnet");
> }
Reviewed-by: Thomas Huth <thuth@redhat.com>
Philippe, could you maybe have a look at this, too?
^ permalink raw reply [flat|nested] 105+ messages in thread
* Re: [PATCH v3 14/46] hw/mips/loongson3_virt: use pci_init_nic_devices()
2024-01-08 20:26 ` [PATCH v3 14/46] hw/mips/loongson3_virt: " David Woodhouse
@ 2024-01-26 13:58 ` Thomas Huth
0 siblings, 0 replies; 105+ messages in thread
From: Thomas Huth @ 2024-01-26 13:58 UTC (permalink / raw)
To: David Woodhouse, qemu-devel
Cc: Richard Henderson, Beniamino Galvani, Peter Maydell,
Strahinja Jankovic, Niek Linnenbank, Cédric Le Goater,
Andrew Jeffery, Joel Stanley, Igor Mitsyanko,
Jean-Christophe Dubois, Andrey Smirnov,
Philippe Mathieu-Daudé, Rob Herring, Subbaraya Sundeep,
Jan Kiszka, Tyrone Ting, Hao Wu, Radoslaw Biernacki,
Leif Lindholm, Marcin Juszkiewicz, Edgar E. Iglesias,
Alistair Francis, Helge Deller, Paolo Bonzini, Eduardo Habkost,
Michael S. Tsirkin, Marcel Apfelbaum, Song Gao, Thomas Huth,
Laurent Vivier, Huacai Chen, Jiaxun Yang, Hervé Poussineau,
Aleksandar Rikalo, Aurelien Jarno, Jason Wang, Jia Liu,
Stafford Horne, Mark Cave-Ayland, Nicholas Piggin,
Daniel Henrique Barboza, David Gibson, Harsh Prateek Bora,
Bin Meng, Palmer Dabbelt, Weiwei Li, Liu Zhiwei, Halil Pasic,
Christian Borntraeger, Eric Farman, David Hildenbrand,
Ilya Leoshkevich, Yoshinori Sato, Magnus Damm, Artyom Tarasenko,
Stefano Stabellini, Anthony Perard, Paul Durrant, Max Filippov,
qemu-arm, qemu-ppc, qemu-riscv, qemu-s390x, xen-devel,
David Woodhouse
On 08/01/2024 21.26, David Woodhouse wrote:
> From: David Woodhouse <dwmw@amazon.co.uk>
>
> Signed-off-by: David Woodhouse <dwmw@amazon.co.uk>
> ---
> hw/mips/loongson3_virt.c | 4 +---
> 1 file changed, 1 insertion(+), 3 deletions(-)
>
> diff --git a/hw/mips/loongson3_virt.c b/hw/mips/loongson3_virt.c
> index 33eae01eca..caedde2df0 100644
> --- a/hw/mips/loongson3_virt.c
> +++ b/hw/mips/loongson3_virt.c
> @@ -451,9 +451,7 @@ static inline void loongson3_virt_devices_init(MachineState *machine,
> usb_create_simple(usb_bus_find(-1), "usb-tablet");
> }
>
> - for (i = 0; i < nb_nics; i++) {
> - pci_nic_init_nofail(&nd_table[i], pci_bus, mc->default_nic, NULL);
> - }
> + pci_init_nic_devices(pci_bus, mc->default_nic);
> }
>
> static void mips_loongson3_virt_init(MachineState *machine)
Reviewed-by: Thomas Huth <thuth@redhat.com>
^ permalink raw reply [flat|nested] 105+ messages in thread
* Re: [PATCH v3 15/46] hw/ppc/prep: use pci_init_nic_devices()
2024-01-08 20:26 ` [PATCH v3 15/46] hw/ppc/prep: " David Woodhouse
@ 2024-01-26 14:06 ` Thomas Huth
0 siblings, 0 replies; 105+ messages in thread
From: Thomas Huth @ 2024-01-26 14:06 UTC (permalink / raw)
To: David Woodhouse, qemu-devel, Hervé Poussineau; +Cc: qemu-ppc
On 08/01/2024 21.26, David Woodhouse wrote:
> From: David Woodhouse <dwmw@amazon.co.uk>
>
> Previously, the first PCI NIC would be placed in PCI slot 3 and the rest
> would be dynamically assigned. Even if the user overrode the default NIC
> type and made it something other than PCNet.
>
> Now, the first PCNet NIC (that is, anything not explicitly specified
> to be anything different) will go to slot 3 even if it isn't the first
> NIC specified on the commnd line. And anything else will be dynamically
> assigned.
>
> Signed-off-by: David Woodhouse <dwmw@amazon.co.uk>
> ---
> hw/ppc/prep.c | 8 +++-----
> 1 file changed, 3 insertions(+), 5 deletions(-)
>
> diff --git a/hw/ppc/prep.c b/hw/ppc/prep.c
> index 137276bcb9..1a6cd05c61 100644
> --- a/hw/ppc/prep.c
> +++ b/hw/ppc/prep.c
> @@ -241,7 +241,6 @@ static void ibm_40p_init(MachineState *machine)
> ISADevice *isa_dev;
> ISABus *isa_bus;
> void *fw_cfg;
> - int i;
> uint32_t kernel_base = 0, initrd_base = 0;
> long kernel_size = 0, initrd_size = 0;
> char boot_device;
> @@ -336,10 +335,9 @@ static void ibm_40p_init(MachineState *machine)
> /* XXX: s3-trio at PCI_DEVFN(2, 0) */
> pci_vga_init(pci_bus);
>
> - for (i = 0; i < nb_nics; i++) {
> - pci_nic_init_nofail(&nd_table[i], pci_bus, mc->default_nic,
> - i == 0 ? "3" : NULL);
> - }
> + /* First PCNET device at PCI_DEVFN(3, 0) */
> + pci_init_nic_in_slot(pci_bus, mc->default_nic, NULL, "3");
> + pci_init_nic_devices(pci_bus, mc->default_nic);
> }
>
> /* Prepare firmware configuration for OpenBIOS */
Fine for me ... Hervé, could you maybe comment from a 40p point of view, too?
Reviewed-by: Thomas Huth <thuth@redhat.com>
^ permalink raw reply [flat|nested] 105+ messages in thread
* Re: [PATCH v3 16/46] hw/ppc/spapr: use qemu_get_nic_info() and pci_init_nic_devices()
2024-01-08 20:26 ` [PATCH v3 16/46] hw/ppc/spapr: use qemu_get_nic_info() and pci_init_nic_devices() David Woodhouse
@ 2024-01-26 14:09 ` Thomas Huth
0 siblings, 0 replies; 105+ messages in thread
From: Thomas Huth @ 2024-01-26 14:09 UTC (permalink / raw)
To: David Woodhouse, qemu-devel, qemu-ppc
Cc: Cédric Le Goater, Jason Wang, Mark Cave-Ayland,
Nicholas Piggin, Daniel Henrique Barboza, David Gibson,
Harsh Prateek Bora, David Woodhouse
On 08/01/2024 21.26, David Woodhouse wrote:
> From: David Woodhouse <dwmw@amazon.co.uk>
>
> Avoid directly referencing nd_table[] by first instantiating any
> spapr-vlan devices using a qemu_get_nic_info() loop, then calling
> pci_init_nic_devices() to do the rest.
>
> No functional change intended.
>
> Signed-off-by: David Woodhouse <dwmw@amazon.co.uk>
> ---
> hw/ppc/spapr.c | 18 +++++-------------
> 1 file changed, 5 insertions(+), 13 deletions(-)
>
> diff --git a/hw/ppc/spapr.c b/hw/ppc/spapr.c
> index 4997aa4f1d..37604e7caf 100644
> --- a/hw/ppc/spapr.c
> +++ b/hw/ppc/spapr.c
> @@ -2796,6 +2796,7 @@ static void spapr_machine_init(MachineState *machine)
> MemoryRegion *sysmem = get_system_memory();
> long load_limit, fw_size;
> Error *resize_hpt_err = NULL;
> + NICInfo *nd;
>
> if (!filename) {
> error_report("Could not find LPAR firmware '%s'", bios_name);
> @@ -2996,21 +2997,12 @@ static void spapr_machine_init(MachineState *machine)
>
> phb = spapr_create_default_phb();
>
> - for (i = 0; i < nb_nics; i++) {
> - NICInfo *nd = &nd_table[i];
> -
> - if (!nd->model) {
> - nd->model = g_strdup("spapr-vlan");
> - }
> -
> - if (g_str_equal(nd->model, "spapr-vlan") ||
> - g_str_equal(nd->model, "ibmveth")) {
> - spapr_vlan_create(spapr->vio_bus, nd);
> - } else {
> - pci_nic_init_nofail(&nd_table[i], phb->bus, nd->model, NULL);
> - }
> + while ((nd = qemu_find_nic_info("spapr-vlan", true, "ibmveth"))) {
> + spapr_vlan_create(spapr->vio_bus, nd);
> }
>
> + pci_init_nic_devices(phb->bus, NULL);
> +
> for (i = 0; i <= drive_get_max_bus(IF_SCSI); i++) {
> spapr_vscsi_create(spapr->vio_bus);
> }
Reviewed-by: Thomas Huth <thuth@redhat.com>
^ permalink raw reply [flat|nested] 105+ messages in thread
* Re: [PATCH v3 17/46] hw/ppc: use pci_init_nic_devices()
2024-01-08 20:26 ` [PATCH v3 17/46] hw/ppc: use pci_init_nic_devices() David Woodhouse
@ 2024-01-26 14:14 ` Thomas Huth
0 siblings, 0 replies; 105+ messages in thread
From: Thomas Huth @ 2024-01-26 14:14 UTC (permalink / raw)
To: David Woodhouse, qemu-devel, qemu-ppc
Cc: Cédric Le Goater, Subbaraya Sundeep, Hervé Poussineau,
Jason Wang, Stafford Horne, Mark Cave-Ayland, Nicholas Piggin,
Daniel Henrique Barboza, David Gibson, Harsh Prateek Bora,
David Woodhouse
On 08/01/2024 21.26, David Woodhouse wrote:
> From: David Woodhouse <dwmw@amazon.co.uk>
>
> Signed-off-by: David Woodhouse <dwmw@amazon.co.uk>
> ---
> hw/ppc/e500.c | 4 +---
> hw/ppc/mac_newworld.c | 4 +---
> hw/ppc/mac_oldworld.c | 4 +---
> hw/ppc/ppc440_bamboo.c | 14 +++++---------
> 4 files changed, 8 insertions(+), 18 deletions(-)
>
> diff --git a/hw/ppc/e500.c b/hw/ppc/e500.c
> index 566f1200dd..3bd12b54ab 100644
> --- a/hw/ppc/e500.c
> +++ b/hw/ppc/e500.c
> @@ -1079,9 +1079,7 @@ void ppce500_init(MachineState *machine)
>
> if (pci_bus) {
> /* Register network interfaces. */
> - for (i = 0; i < nb_nics; i++) {
> - pci_nic_init_nofail(&nd_table[i], pci_bus, mc->default_nic, NULL);
> - }
> + pci_init_nic_devices(pci_bus, mc->default_nic);
> }
>
> /* Register spinning region */
> diff --git a/hw/ppc/mac_newworld.c b/hw/ppc/mac_newworld.c
> index 535710314a..b36dbaf2b6 100644
> --- a/hw/ppc/mac_newworld.c
> +++ b/hw/ppc/mac_newworld.c
> @@ -444,9 +444,7 @@ static void ppc_core99_init(MachineState *machine)
> graphic_depth = 15;
> }
>
> - for (i = 0; i < nb_nics; i++) {
> - pci_nic_init_nofail(&nd_table[i], pci_bus, mc->default_nic, NULL);
> - }
> + pci_init_nic_devices(pci_bus, mc->default_nic);
>
> /* The NewWorld NVRAM is not located in the MacIO device */
> if (kvm_enabled() && qemu_real_host_page_size() > 4096) {
> diff --git a/hw/ppc/mac_oldworld.c b/hw/ppc/mac_oldworld.c
> index 9acc7adfc9..1981d3d8f6 100644
> --- a/hw/ppc/mac_oldworld.c
> +++ b/hw/ppc/mac_oldworld.c
> @@ -277,9 +277,7 @@ static void ppc_heathrow_init(MachineState *machine)
>
> pci_vga_init(pci_bus);
>
> - for (i = 0; i < nb_nics; i++) {
> - pci_nic_init_nofail(&nd_table[i], pci_bus, mc->default_nic, NULL);
> - }
> + pci_init_nic_devices(pci_bus, mc->default_nic);
>
> /* MacIO IDE */
> ide_drive_get(hd, ARRAY_SIZE(hd));
> diff --git a/hw/ppc/ppc440_bamboo.c b/hw/ppc/ppc440_bamboo.c
> index a189942de4..c75c3083e6 100644
> --- a/hw/ppc/ppc440_bamboo.c
> +++ b/hw/ppc/ppc440_bamboo.c
> @@ -161,7 +161,6 @@ static void bamboo_init(MachineState *machine)
> DeviceState *uicdev;
> SysBusDevice *uicsbd;
> int success;
> - int i;
>
> if (kvm_enabled()) {
> error_report("machine %s does not support the KVM accelerator",
> @@ -234,14 +233,11 @@ static void bamboo_init(MachineState *machine)
> }
>
> if (pcibus) {
> - /* Register network interfaces. */
> - for (i = 0; i < nb_nics; i++) {
> - /*
> - * There are no PCI NICs on the Bamboo board, but there are
> - * PCI slots, so we can pick whatever default model we want.
> - */
> - pci_nic_init_nofail(&nd_table[i], pcibus, mc->default_nic, NULL);
> - }
> + /*
> + * There are no PCI NICs on the Bamboo board, but there are
> + * PCI slots, so we can pick whatever default model we want.
> + */
> + pci_init_nic_devices(pcibus, mc->default_nic);
> }
>
> /* Load kernel. */
Reviewed-by: Thomas Huth <thuth@redhat.com>
^ permalink raw reply [flat|nested] 105+ messages in thread
* Re: [PATCH v3 01/46] net: add qemu_{configure, create}_nic_device(), qemu_find_nic_info()
2024-01-26 11:10 ` Thomas Huth
@ 2024-01-26 14:16 ` David Woodhouse
2024-01-26 14:24 ` Thomas Huth
0 siblings, 1 reply; 105+ messages in thread
From: David Woodhouse @ 2024-01-26 14:16 UTC (permalink / raw)
To: Thomas Huth, qemu-devel
Cc: Richard Henderson, Beniamino Galvani, Peter Maydell,
Strahinja Jankovic, Niek Linnenbank, Cédric Le Goater,
Andrew Jeffery, Joel Stanley, Igor Mitsyanko,
Jean-Christophe Dubois, Andrey Smirnov,
Philippe Mathieu-Daudé, Rob Herring, Subbaraya Sundeep,
Jan Kiszka, Tyrone Ting, Hao Wu, Radoslaw Biernacki,
Leif Lindholm, Marcin Juszkiewicz, Edgar E. Iglesias,
Alistair Francis, Helge Deller, Paolo Bonzini, Eduardo Habkost,
Michael S. Tsirkin, Marcel Apfelbaum, Song Gao, Thomas Huth,
Laurent Vivier, Huacai Chen, Jiaxun Yang, Hervé Poussineau,
Aleksandar Rikalo, Aurelien Jarno, Jason Wang, Jia Liu,
Stafford Horne, Mark Cave-Ayland, Nicholas Piggin,
Daniel Henrique Barboza, David Gibson, Harsh Prateek Bora,
Bin Meng, Palmer Dabbelt, Weiwei Li, Liu Zhiwei, Halil Pasic,
Christian Borntraeger, Eric Farman, David Hildenbrand,
Ilya Leoshkevich, Yoshinori Sato, Magnus Damm, Artyom Tarasenko,
Stefano Stabellini, Anthony Perard, Paul Durrant, Max Filippov,
qemu-arm, qemu-ppc, qemu-riscv, qemu-s390x, xen-devel
[-- Attachment #1: Type: text/plain, Size: 3753 bytes --]
On Fri, 2024-01-26 at 12:10 +0100, Thomas Huth wrote:
>
> > +/* "Please create a device, if you have a configuration for it" */
> > +DeviceState *qemu_create_nic_device(const char *typename, bool match_default,
> > + const char *alias)
> > +{
> > + NICInfo *nd = qemu_find_nic_info(typename, match_default, alias);
> > + DeviceState *dev;
> > +
> > + if (!nd) {
> > + return NULL;
> > + }
>
> The qemu_check_nic_model() function that was used in some code that you
> turned into qemu_create_nic_device() used to set:
>
> if (!nd->model)
> nd->model = g_strdup(default_model);
>
> (in the qemu_find_nic_model() function that has been called by
> qemu_check_nic_model())
>
> Should we do that also here to make sure that nd->model is not NULL afterwards?
Good question, but I don't think we care. The qdev_set_nic_properties()
function certainly doesn't propagate nd->model to anywhere.
I renamed nd->model to nd->modelname in a patch shown below, just to be
100% sure I'm not missing any other code paths which might consume it.
diff --git a/include/net/net.h b/include/net/net.h
index 766201c62c..ad6cd5b14b 100644
--- a/include/net/net.h
+++ b/include/net/net.h
@@ -238,7 +238,7 @@ GPtrArray *qemu_get_nic_models(const char *device_type);
struct NICInfo {
MACAddr macaddr;
- char *model;
+ char *modelname;
char *name;
char *devaddr;
NetClientState *netdev;
diff --git a/net/net.c b/net/net.c
index 71cccb19da..ab6185b4df 100644
--- a/net/net.c
+++ b/net/net.c
@@ -1012,7 +1012,7 @@ static int net_init_nic(const Netdev *netdev, const char *name,
}
nd->name = g_strdup(name);
if (nic->model) {
- nd->model = g_strdup(nic->model);
+ nd->modelname = g_strdup(nic->model);
}
if (nic->addr) {
nd->devaddr = g_strdup(nic->addr);
@@ -1142,8 +1142,8 @@ NICInfo *qemu_find_nic_info(const char *typename, bool match_default,
continue;
}
- if ((match_default && !nd->model) || !g_strcmp0(nd->model, typename)
- || (alias && !g_strcmp0(nd->model, alias))) {
+ if ((match_default && !nd->modelname) || !g_strcmp0(nd->modelname, typename)
+ || (alias && !g_strcmp0(nd->modelname, alias))) {
return nd;
}
}
@@ -1210,7 +1210,7 @@ void qemu_create_nic_bus_devices(BusState *bus, const char *parent_type,
continue;
}
- model = nd->model ? nd->model : default_model;
+ model = nd->modelname ? nd->modelname : default_model;
if (!model) {
continue;
}
@@ -1726,7 +1726,7 @@ void net_check_clients(void)
warn_report("requested NIC (%s, model %s) "
"was not created (not supported by this machine?)",
nd->name ? nd->name : "anonymous",
- nd->model ? nd->model : "unspecified");
+ nd->modelname ? nd->modelname : "unspecified");
}
}
}
@@ -1787,9 +1787,9 @@ static int net_param_nic(void *dummy, QemuOpts *opts, Error **errp)
ni = &nd_table[idx];
memset(ni, 0, sizeof(*ni));
- ni->model = qemu_opt_get_del(opts, "model");
+ ni->modelname = qemu_opt_get_del(opts, "model");
- if (!nic_model_help && !g_strcmp0(ni->model, "help")) {
+ if (!nic_model_help && !g_strcmp0(ni->modelname, "help")) {
nic_model_help = g_hash_table_new_full(g_str_hash, g_str_equal,
g_free, NULL);
return 0;
[-- Attachment #2: smime.p7s --]
[-- Type: application/pkcs7-signature, Size: 5965 bytes --]
^ permalink raw reply related [flat|nested] 105+ messages in thread
* Re: [PATCH v3 19/46] hw/sparc64/sun4u: use pci_init_nic_devices()
2024-01-08 20:26 ` [PATCH v3 19/46] hw/sparc64/sun4u: " David Woodhouse
@ 2024-01-26 14:21 ` Thomas Huth
0 siblings, 0 replies; 105+ messages in thread
From: Thomas Huth @ 2024-01-26 14:21 UTC (permalink / raw)
To: David Woodhouse, qemu-devel, Mark Cave-Ayland
Cc: Philippe Mathieu-Daudé, Jason Wang, David Woodhouse
On 08/01/2024 21.26, David Woodhouse wrote:
> From: David Woodhouse <dwmw@amazon.co.uk>
>
> The first sunhme NIC gets placed a function 1 on slot 1 of PCI bus A,
> and the rest are dynamically assigned on PCI bus B.
>
> Previously, any PCI NIC would get the special treatment purely by
> virtue of being first in the list.
>
> Signed-off-by: David Woodhouse <dwmw@amazon.co.uk>
> ---
> hw/sparc64/sun4u.c | 27 ++++++++-------------------
> 1 file changed, 8 insertions(+), 19 deletions(-)
>
> diff --git a/hw/sparc64/sun4u.c b/hw/sparc64/sun4u.c
> index 24d53bf5fd..eda9b58a21 100644
> --- a/hw/sparc64/sun4u.c
> +++ b/hw/sparc64/sun4u.c
> @@ -639,29 +639,18 @@ static void sun4uv_init(MemoryRegion *address_space_mem,
>
> memset(&macaddr, 0, sizeof(MACAddr));
> onboard_nic = false;
> - for (i = 0; i < nb_nics; i++) {
> - PCIBus *bus;
> - nd = &nd_table[i];
> -
> - if (!nd->model || strcmp(nd->model, mc->default_nic) == 0) {
> - if (!onboard_nic) {
> - pci_dev = pci_new_multifunction(PCI_DEVFN(1, 1), mc->default_nic);
> - bus = pci_busA;
> - memcpy(&macaddr, &nd->macaddr.a, sizeof(MACAddr));
> - onboard_nic = true;
> - } else {
> - pci_dev = pci_new(-1, mc->default_nic);
> - bus = pci_busB;
> - }
> - } else {
> - pci_dev = pci_new(-1, nd->model);
> - bus = pci_busB;
> - }
>
> + nd = qemu_find_nic_info(mc->default_nic, true, NULL);
> + if (nd) {
> + pci_dev = pci_new_multifunction(PCI_DEVFN(1, 1), mc->default_nic);
> dev = &pci_dev->qdev;
> qdev_set_nic_properties(dev, nd);
> - pci_realize_and_unref(pci_dev, bus, &error_fatal);
> + pci_realize_and_unref(pci_dev, pci_busA, &error_fatal);
> +
> + memcpy(&macaddr, &nd->macaddr.a, sizeof(MACAddr));
> + onboard_nic = true;
> }
> + pci_init_nic_devices(pci_busB, mc->default_nic);
>
> /* If we don't have an onboard NIC, grab a default MAC address so that
> * we have a valid machine id */
Reviewed-by: Thomas Huth <thuth@redhat.com>
^ permalink raw reply [flat|nested] 105+ messages in thread
* Re: [PATCH v3 01/46] net: add qemu_{configure, create}_nic_device(), qemu_find_nic_info()
2024-01-26 14:16 ` David Woodhouse
@ 2024-01-26 14:24 ` Thomas Huth
2024-01-26 14:34 ` David Woodhouse
0 siblings, 1 reply; 105+ messages in thread
From: Thomas Huth @ 2024-01-26 14:24 UTC (permalink / raw)
To: David Woodhouse, qemu-devel
Cc: Richard Henderson, Beniamino Galvani, Peter Maydell,
Strahinja Jankovic, Niek Linnenbank, Cédric Le Goater,
Andrew Jeffery, Joel Stanley, Igor Mitsyanko,
Jean-Christophe Dubois, Andrey Smirnov,
Philippe Mathieu-Daudé, Rob Herring, Subbaraya Sundeep,
Jan Kiszka, Tyrone Ting, Hao Wu, Radoslaw Biernacki,
Leif Lindholm, Marcin Juszkiewicz, Edgar E. Iglesias,
Alistair Francis, Helge Deller, Paolo Bonzini, Eduardo Habkost,
Michael S. Tsirkin, Marcel Apfelbaum, Song Gao, Thomas Huth,
Laurent Vivier, Huacai Chen, Jiaxun Yang, Hervé Poussineau,
Aleksandar Rikalo, Aurelien Jarno, Jason Wang, Jia Liu,
Stafford Horne, Mark Cave-Ayland, Nicholas Piggin,
Daniel Henrique Barboza, David Gibson, Harsh Prateek Bora,
Bin Meng, Palmer Dabbelt, Weiwei Li, Liu Zhiwei, Halil Pasic,
Christian Borntraeger, Eric Farman, David Hildenbrand,
Ilya Leoshkevich, Yoshinori Sato, Magnus Damm, Artyom Tarasenko,
Stefano Stabellini, Anthony Perard, Paul Durrant, Max Filippov,
qemu-arm, qemu-ppc, qemu-riscv, qemu-s390x, xen-devel
On 26/01/2024 15.16, David Woodhouse wrote:
> On Fri, 2024-01-26 at 12:10 +0100, Thomas Huth wrote:
>>
>>> +/* "Please create a device, if you have a configuration for it" */
>>> +DeviceState *qemu_create_nic_device(const char *typename, bool match_default,
>>> + const char *alias)
>>> +{
>>> + NICInfo *nd = qemu_find_nic_info(typename, match_default, alias);
>>> + DeviceState *dev;
>>> +
>>> + if (!nd) {
>>> + return NULL;
>>> + }
>>
>> The qemu_check_nic_model() function that was used in some code that you
>> turned into qemu_create_nic_device() used to set:
>>
>> if (!nd->model)
>> nd->model = g_strdup(default_model);
>>
>> (in the qemu_find_nic_model() function that has been called by
>> qemu_check_nic_model())
>>
>> Should we do that also here to make sure that nd->model is not NULL afterwards?
>
> Good question, but I don't think we care. The qdev_set_nic_properties()
> function certainly doesn't propagate nd->model to anywhere.
>
> I renamed nd->model to nd->modelname in a patch shown below, just to be
> 100% sure I'm not missing any other code paths which might consume it.
Ok, thanks for checking! Maybe mention it in the patch description in v4, so
that we've got it recorded somewhere that nd->model might be left at NULL
afterwards, but that there are no further consumers, so it should be fine?
Thomas
^ permalink raw reply [flat|nested] 105+ messages in thread
* Re: [PATCH v3 02/46] net: report list of available models according to platform
2024-01-08 20:26 ` [PATCH v3 02/46] net: report list of available models according to platform David Woodhouse
@ 2024-01-26 14:33 ` Thomas Huth
2024-01-26 14:46 ` David Woodhouse
0 siblings, 1 reply; 105+ messages in thread
From: Thomas Huth @ 2024-01-26 14:33 UTC (permalink / raw)
To: David Woodhouse, qemu-devel
Cc: Richard Henderson, Beniamino Galvani, Peter Maydell,
Strahinja Jankovic, Niek Linnenbank, Cédric Le Goater,
Andrew Jeffery, Joel Stanley, Igor Mitsyanko,
Jean-Christophe Dubois, Andrey Smirnov,
Philippe Mathieu-Daudé, Rob Herring, Subbaraya Sundeep,
Jan Kiszka, Tyrone Ting, Hao Wu, Radoslaw Biernacki,
Leif Lindholm, Marcin Juszkiewicz, Edgar E. Iglesias,
Alistair Francis, Helge Deller, Paolo Bonzini, Eduardo Habkost,
Michael S. Tsirkin, Marcel Apfelbaum, Song Gao, Thomas Huth,
Laurent Vivier, Huacai Chen, Jiaxun Yang, Hervé Poussineau,
Aleksandar Rikalo, Aurelien Jarno, Jason Wang, Jia Liu,
Stafford Horne, Mark Cave-Ayland, Nicholas Piggin,
Daniel Henrique Barboza, David Gibson, Harsh Prateek Bora,
Bin Meng, Palmer Dabbelt, Weiwei Li, Liu Zhiwei, Halil Pasic,
Christian Borntraeger, Eric Farman, David Hildenbrand,
Ilya Leoshkevich, Yoshinori Sato, Magnus Damm, Artyom Tarasenko,
Stefano Stabellini, Anthony Perard, Paul Durrant, Max Filippov,
qemu-arm, qemu-ppc, qemu-riscv, qemu-s390x, xen-devel,
David Woodhouse
On 08/01/2024 21.26, David Woodhouse wrote:
> From: David Woodhouse <dwmw@amazon.co.uk>
>
> By noting the models for which a configuration was requested, we can give
> the user an accurate list of which NIC models were actually available on
> the platform/configuration that was otherwise chosen.
>
> Signed-off-by: David Woodhouse <dwmw@amazon.co.uk>
> Reviewed-by: Paul Durrant <paul@xen.org>
> ---
> net/net.c | 94 +++++++++++++++++++++++++++++++++++++++++++++++++++++++
> 1 file changed, 94 insertions(+)
>
> diff --git a/net/net.c b/net/net.c
> index aeb7f573fc..962904eaef 100644
> --- a/net/net.c
> +++ b/net/net.c
> @@ -75,6 +75,8 @@ typedef QSIMPLEQ_HEAD(, NetdevQueueEntry) NetdevQueue;
>
> static NetdevQueue nd_queue = QSIMPLEQ_HEAD_INITIALIZER(nd_queue);
>
> +static GHashTable *nic_model_help;
> +
> /***********************************************************/
> /* network device redirectors */
>
> @@ -1087,12 +1089,94 @@ static int net_init_nic(const Netdev *netdev, const char *name,
> return idx;
> }
>
> +static gboolean add_nic_result(gpointer key, gpointer value, gpointer user_data)
> +{
> + GPtrArray *results = user_data;
> + GPtrArray *alias_list = value;
> + const char *model = key;
> + char *result;
> +
> + if (!alias_list) {
> + result = g_strdup(model);
> + } else {
> + GString *result_str = g_string_new(model);
> + int i;
> +
> + g_string_append(result_str, " (aka ");
It's an abbreviation, so I'd rather use "a.k.a." instead of "aka".
Apart from that, the patch looks reasonable to me.
Thomas
> + for (i = 0; i < alias_list->len; i++) {
> + if (i) {
> + g_string_append(result_str, ", ");
> + }
> + g_string_append(result_str, alias_list->pdata[i]);
> + }
> + g_string_append(result_str, ")");
> + result = result_str->str;
> + g_string_free(result_str, false);
> + g_ptr_array_unref(alias_list);
> + }
> + g_ptr_array_add(results, result);
> + return true;
> +}
...
^ permalink raw reply [flat|nested] 105+ messages in thread
* Re: [PATCH v3 01/46] net: add qemu_{configure, create}_nic_device(), qemu_find_nic_info()
2024-01-26 14:24 ` Thomas Huth
@ 2024-01-26 14:34 ` David Woodhouse
2024-01-26 14:39 ` Thomas Huth
0 siblings, 1 reply; 105+ messages in thread
From: David Woodhouse @ 2024-01-26 14:34 UTC (permalink / raw)
To: Thomas Huth, qemu-devel
Cc: Richard Henderson, Beniamino Galvani, Peter Maydell,
Strahinja Jankovic, Niek Linnenbank, Cédric Le Goater,
Andrew Jeffery, Joel Stanley, Igor Mitsyanko,
Jean-Christophe Dubois, Andrey Smirnov,
Philippe Mathieu-Daudé, Rob Herring, Subbaraya Sundeep,
Jan Kiszka, Tyrone Ting, Hao Wu, Radoslaw Biernacki,
Leif Lindholm, Marcin Juszkiewicz, Edgar E. Iglesias,
Alistair Francis, Helge Deller, Paolo Bonzini, Eduardo Habkost,
Michael S. Tsirkin, Marcel Apfelbaum, Song Gao, Thomas Huth,
Laurent Vivier, Huacai Chen, Jiaxun Yang, Hervé Poussineau,
Aleksandar Rikalo, Aurelien Jarno, Jason Wang, Jia Liu,
Stafford Horne, Mark Cave-Ayland, Nicholas Piggin,
Daniel Henrique Barboza, David Gibson, Harsh Prateek Bora,
Bin Meng, Palmer Dabbelt, Weiwei Li, Liu Zhiwei, Halil Pasic,
Christian Borntraeger, Eric Farman, David Hildenbrand,
Ilya Leoshkevich, Yoshinori Sato, Magnus Damm, Artyom Tarasenko,
Stefano Stabellini, Anthony Perard, Paul Durrant, Max Filippov,
qemu-arm, qemu-ppc, qemu-riscv, qemu-s390x, xen-devel
[-- Attachment #1: Type: text/plain, Size: 3208 bytes --]
On Fri, 2024-01-26 at 15:24 +0100, Thomas Huth wrote:
> On 26/01/2024 15.16, David Woodhouse wrote:
> > On Fri, 2024-01-26 at 12:10 +0100, Thomas Huth wrote:
> > >
> > > > +/* "Please create a device, if you have a configuration for it" */
> > > > +DeviceState *qemu_create_nic_device(const char *typename, bool match_default,
> > > > + const char *alias)
> > > > +{
> > > > + NICInfo *nd = qemu_find_nic_info(typename, match_default, alias);
> > > > + DeviceState *dev;
> > > > +
> > > > + if (!nd) {
> > > > + return NULL;
> > > > + }
> > >
> > > The qemu_check_nic_model() function that was used in some code that you
> > > turned into qemu_create_nic_device() used to set:
> > >
> > > if (!nd->model)
> > > nd->model = g_strdup(default_model);
> > >
> > > (in the qemu_find_nic_model() function that has been called by
> > > qemu_check_nic_model())
> > >
> > > Should we do that also here to make sure that nd->model is not NULL afterwards?
> >
> > Good question, but I don't think we care. The qdev_set_nic_properties()
> > function certainly doesn't propagate nd->model to anywhere.
> >
> > I renamed nd->model to nd->modelname in a patch shown below, just to be
> > 100% sure I'm not missing any other code paths which might consume it.
>
> Ok, thanks for checking! Maybe mention it in the patch description in v4, so
> that we've got it recorded somewhere that nd->model might be left at NULL
> afterwards, but that there are no further consumers, so it should be fine.
Makes sense.
https://git.infradead.org/?p=users/dwmw2/qemu.git;a=commitdiff;h=694f82bc09080
now says:
net: add qemu_{configure,create}_nic_device(), qemu_find_nic_info()
Most code which directly accesses nd_table[] and nb_nics uses them for
one of two things. Either "I have created a NIC device and I'd like a
configuration for it", or "I will create a NIC device *if* there is a
configuration for it". With some variants on the theme around whether
they actually *check* if the model specified in the configuration is
the right one.
Provide functions which perform both of those, allowing platforms to
be a little more consistent and as a step towards making nd_table[]
and nb_nics private to the net code.
One might argue that platforms ought to be consistent about whether
they create the unconfigured devices or not, but making significant
user-visible changes is explicitly *not* the intent right now.
The new functions leave the 'model' field of the NICInfo as NULL after
using it for the default NIC model, unlike the qemu_check_nic_model()
function which does set nd->model to match default_model explicitly.
This is acceptable because there is no code which consumes nd->model
except this NIC-matching code in net/net.c, and no reasonable excuse
for any code wanting to use nd->model in future.
Also export the qemu_find_nic_info() helper, as some platforms have
special cases they need to handle.
Signed-off-by: David Woodhouse <dwmw@amazon.co.uk>
Reviewed-by: Paul Durrant <paul@xen.org>
[-- Attachment #2: smime.p7s --]
[-- Type: application/pkcs7-signature, Size: 5965 bytes --]
^ permalink raw reply [flat|nested] 105+ messages in thread
* Re: [PATCH v3 01/46] net: add qemu_{configure, create}_nic_device(), qemu_find_nic_info()
2024-01-26 14:34 ` David Woodhouse
@ 2024-01-26 14:39 ` Thomas Huth
0 siblings, 0 replies; 105+ messages in thread
From: Thomas Huth @ 2024-01-26 14:39 UTC (permalink / raw)
To: David Woodhouse, qemu-devel
Cc: Richard Henderson, Beniamino Galvani, Peter Maydell,
Strahinja Jankovic, Niek Linnenbank, Cédric Le Goater,
Andrew Jeffery, Joel Stanley, Igor Mitsyanko,
Jean-Christophe Dubois, Andrey Smirnov,
Philippe Mathieu-Daudé, Rob Herring, Subbaraya Sundeep,
Jan Kiszka, Tyrone Ting, Hao Wu, Radoslaw Biernacki,
Leif Lindholm, Marcin Juszkiewicz, Edgar E. Iglesias,
Alistair Francis, Helge Deller, Paolo Bonzini, Eduardo Habkost,
Michael S. Tsirkin, Marcel Apfelbaum, Song Gao, Thomas Huth,
Laurent Vivier, Huacai Chen, Jiaxun Yang, Hervé Poussineau,
Aleksandar Rikalo, Aurelien Jarno, Jason Wang, Jia Liu,
Stafford Horne, Mark Cave-Ayland, Nicholas Piggin,
Daniel Henrique Barboza, David Gibson, Harsh Prateek Bora,
Bin Meng, Palmer Dabbelt, Weiwei Li, Liu Zhiwei, Halil Pasic,
Christian Borntraeger, Eric Farman, David Hildenbrand,
Ilya Leoshkevich, Yoshinori Sato, Magnus Damm, Artyom Tarasenko,
Stefano Stabellini, Anthony Perard, Paul Durrant, Max Filippov,
qemu-arm, qemu-ppc, qemu-riscv, qemu-s390x, xen-devel
On 26/01/2024 15.34, David Woodhouse wrote:
> On Fri, 2024-01-26 at 15:24 +0100, Thomas Huth wrote:
>> On 26/01/2024 15.16, David Woodhouse wrote:
>>> On Fri, 2024-01-26 at 12:10 +0100, Thomas Huth wrote:
>>>>
>>>>> +/* "Please create a device, if you have a configuration for it" */
>>>>> +DeviceState *qemu_create_nic_device(const char *typename, bool match_default,
>>>>> + const char *alias)
>>>>> +{
>>>>> + NICInfo *nd = qemu_find_nic_info(typename, match_default, alias);
>>>>> + DeviceState *dev;
>>>>> +
>>>>> + if (!nd) {
>>>>> + return NULL;
>>>>> + }
>>>>
>>>> The qemu_check_nic_model() function that was used in some code that you
>>>> turned into qemu_create_nic_device() used to set:
>>>>
>>>> if (!nd->model)
>>>> nd->model = g_strdup(default_model);
>>>>
>>>> (in the qemu_find_nic_model() function that has been called by
>>>> qemu_check_nic_model())
>>>>
>>>> Should we do that also here to make sure that nd->model is not NULL afterwards?
>>>
>>> Good question, but I don't think we care. The qdev_set_nic_properties()
>>> function certainly doesn't propagate nd->model to anywhere.
>>>
>>> I renamed nd->model to nd->modelname in a patch shown below, just to be
>>> 100% sure I'm not missing any other code paths which might consume it.
>>
>> Ok, thanks for checking! Maybe mention it in the patch description in v4, so
>> that we've got it recorded somewhere that nd->model might be left at NULL
>> afterwards, but that there are no further consumers, so it should be fine.
>
> Makes sense.
>
> https://git.infradead.org/?p=users/dwmw2/qemu.git;a=commitdiff;h=694f82bc09080
> now says:
>
>
> net: add qemu_{configure,create}_nic_device(), qemu_find_nic_info()
>
> Most code which directly accesses nd_table[] and nb_nics uses them for
> one of two things. Either "I have created a NIC device and I'd like a
> configuration for it", or "I will create a NIC device *if* there is a
> configuration for it". With some variants on the theme around whether
> they actually *check* if the model specified in the configuration is
> the right one.
>
> Provide functions which perform both of those, allowing platforms to
> be a little more consistent and as a step towards making nd_table[]
> and nb_nics private to the net code.
>
> One might argue that platforms ought to be consistent about whether
> they create the unconfigured devices or not, but making significant
> user-visible changes is explicitly *not* the intent right now.
>
> The new functions leave the 'model' field of the NICInfo as NULL after
> using it for the default NIC model, unlike the qemu_check_nic_model()
> function which does set nd->model to match default_model explicitly.
> This is acceptable because there is no code which consumes nd->model
> except this NIC-matching code in net/net.c, and no reasonable excuse
> for any code wanting to use nd->model in future.
With that feel free to add:
Reviewed-by: Thomas Huth <thuth@redhat.com>
^ permalink raw reply [flat|nested] 105+ messages in thread
* Re: [PATCH v3 03/46] net: add qemu_create_nic_bus_devices()
2024-01-08 20:26 ` [PATCH v3 03/46] net: add qemu_create_nic_bus_devices() David Woodhouse
@ 2024-01-26 14:41 ` Thomas Huth
0 siblings, 0 replies; 105+ messages in thread
From: Thomas Huth @ 2024-01-26 14:41 UTC (permalink / raw)
To: David Woodhouse, qemu-devel
Cc: Richard Henderson, Beniamino Galvani, Peter Maydell,
Strahinja Jankovic, Niek Linnenbank, Cédric Le Goater,
Andrew Jeffery, Joel Stanley, Igor Mitsyanko,
Jean-Christophe Dubois, Andrey Smirnov,
Philippe Mathieu-Daudé, Rob Herring, Subbaraya Sundeep,
Jan Kiszka, Tyrone Ting, Hao Wu, Radoslaw Biernacki,
Leif Lindholm, Marcin Juszkiewicz, Edgar E. Iglesias,
Alistair Francis, Helge Deller, Paolo Bonzini, Eduardo Habkost,
Michael S. Tsirkin, Marcel Apfelbaum, Song Gao, Thomas Huth,
Laurent Vivier, Huacai Chen, Jiaxun Yang, Hervé Poussineau,
Aleksandar Rikalo, Aurelien Jarno, Jason Wang, Jia Liu,
Stafford Horne, Mark Cave-Ayland, Nicholas Piggin,
Daniel Henrique Barboza, David Gibson, Harsh Prateek Bora,
Bin Meng, Palmer Dabbelt, Weiwei Li, Liu Zhiwei, Halil Pasic,
Christian Borntraeger, Eric Farman, David Hildenbrand,
Ilya Leoshkevich, Yoshinori Sato, Magnus Damm, Artyom Tarasenko,
Stefano Stabellini, Anthony Perard, Paul Durrant, Max Filippov,
qemu-arm, qemu-ppc, qemu-riscv, qemu-s390x, xen-devel,
David Woodhouse
On 08/01/2024 21.26, David Woodhouse wrote:
> From: David Woodhouse <dwmw@amazon.co.uk>
>
> This will instantiate any NICs which live on a given bus type. Each bus
> is allowed *one* substitution (for PCI it's virtio → virtio-net-pci, for
> Xen it's xen → xen-net-device; no point in overengineering it unless we
> actually want more).
>
> Signed-off-by: David Woodhouse <dwmw@amazon.co.uk>
> Reviewed-by: Paul Durrant <paul@xen.org>
> ---
> include/net/net.h | 3 +++
> net/net.c | 53 +++++++++++++++++++++++++++++++++++++++++++++++
> 2 files changed, 56 insertions(+)
Reviewed-by: Thomas Huth <thuth@redhat.com>
^ permalink raw reply [flat|nested] 105+ messages in thread
* Re: [PATCH v3 01/46] net: add qemu_{configure, create}_nic_device(), qemu_find_nic_info()
2024-01-08 20:26 ` [PATCH v3 01/46] net: add qemu_{configure, create}_nic_device(), qemu_find_nic_info() David Woodhouse
2024-01-26 11:10 ` Thomas Huth
@ 2024-01-26 14:43 ` Peter Maydell
2024-01-26 15:19 ` [PATCH v3 01/46] net: add qemu_{configure,create}_nic_device(), qemu_find_nic_info() David Woodhouse
1 sibling, 1 reply; 105+ messages in thread
From: Peter Maydell @ 2024-01-26 14:43 UTC (permalink / raw)
To: David Woodhouse
Cc: qemu-devel, Richard Henderson, Beniamino Galvani,
Strahinja Jankovic, Niek Linnenbank, Cédric Le Goater,
Andrew Jeffery, Joel Stanley, Igor Mitsyanko,
Jean-Christophe Dubois, Andrey Smirnov,
Philippe Mathieu-Daudé, Rob Herring, Subbaraya Sundeep,
Jan Kiszka, Tyrone Ting, Hao Wu, Radoslaw Biernacki,
Leif Lindholm, Marcin Juszkiewicz, Edgar E. Iglesias,
Alistair Francis, Helge Deller, Paolo Bonzini, Eduardo Habkost,
Michael S. Tsirkin, Marcel Apfelbaum, Song Gao, Thomas Huth,
Laurent Vivier, Huacai Chen, Jiaxun Yang, Hervé Poussineau,
Aleksandar Rikalo, Aurelien Jarno, Jason Wang, Jia Liu,
Stafford Horne, Mark Cave-Ayland, Nicholas Piggin,
Daniel Henrique Barboza, David Gibson, Harsh Prateek Bora,
Bin Meng, Palmer Dabbelt, Weiwei Li, Liu Zhiwei, Halil Pasic,
Christian Borntraeger, Eric Farman, David Hildenbrand,
Ilya Leoshkevich, Yoshinori Sato, Magnus Damm, Artyom Tarasenko,
Stefano Stabellini, Anthony Perard, Paul Durrant, Max Filippov,
qemu-arm, qemu-ppc, qemu-riscv, qemu-s390x, xen-devel,
David Woodhouse
On Mon, 8 Jan 2024 at 20:49, David Woodhouse <dwmw2@infradead.org> wrote:
>
> From: David Woodhouse <dwmw@amazon.co.uk>
>
> Most code which directly accesses nd_table[] and nb_nics uses them for
> one of two things. Either "I have created a NIC device and I'd like a
> configuration for it", or "I will create a NIC device *if* there is a
> configuration for it". With some variants on the theme around whether
> they actually *check* if the model specified in the configuration is
> the right one.
>
> Provide functions which perform both of those, allowing platforms to
> be a little more consistent and as a step towards making nd_table[]
> and nb_nics private to the net code.
>
> Also export the qemu_find_nic_info() helper, as some platforms have
> special cases they need to handle.
>
> Signed-off-by: David Woodhouse <dwmw@amazon.co.uk>
> Reviewed-by: Paul Durrant <paul@xen.org>
> ---
> include/net/net.h | 7 ++++++-
> net/net.c | 51 +++++++++++++++++++++++++++++++++++++++++++++++
> 2 files changed, 57 insertions(+), 1 deletion(-)
>
> diff --git a/include/net/net.h b/include/net/net.h
> index ffbd2c8d56..25ea83fd12 100644
> --- a/include/net/net.h
> +++ b/include/net/net.h
> @@ -207,7 +207,12 @@ int qemu_show_nic_models(const char *arg, const char *const *models);
> void qemu_check_nic_model(NICInfo *nd, const char *model);
> int qemu_find_nic_model(NICInfo *nd, const char * const *models,
> const char *default_model);
> -
> +NICInfo *qemu_find_nic_info(const char *typename, bool match_default,
> + const char *alias);
> +bool qemu_configure_nic_device(DeviceState *dev, bool match_default,
> + const char *alias);
> +DeviceState *qemu_create_nic_device(const char *typename, bool match_default,
> + const char *alias);
Could we have doc comments that document the purpose and API
for these new global functions, please?
thanks
-- PMM
^ permalink raw reply [flat|nested] 105+ messages in thread
* Re: [PATCH v3 02/46] net: report list of available models according to platform
2024-01-26 14:33 ` Thomas Huth
@ 2024-01-26 14:46 ` David Woodhouse
2024-01-26 14:50 ` Thomas Huth
0 siblings, 1 reply; 105+ messages in thread
From: David Woodhouse @ 2024-01-26 14:46 UTC (permalink / raw)
To: Thomas Huth, qemu-devel
Cc: Richard Henderson, Beniamino Galvani, Peter Maydell,
Strahinja Jankovic, Niek Linnenbank, Cédric Le Goater,
Andrew Jeffery, Joel Stanley, Igor Mitsyanko,
Jean-Christophe Dubois, Andrey Smirnov,
Philippe Mathieu-Daudé, Rob Herring, Subbaraya Sundeep,
Jan Kiszka, Tyrone Ting, Hao Wu, Radoslaw Biernacki,
Leif Lindholm, Marcin Juszkiewicz, Edgar E. Iglesias,
Alistair Francis, Helge Deller, Paolo Bonzini, Eduardo Habkost,
Michael S. Tsirkin, Marcel Apfelbaum, Song Gao, Thomas Huth,
Laurent Vivier, Huacai Chen, Jiaxun Yang, Hervé Poussineau,
Aleksandar Rikalo, Aurelien Jarno, Jason Wang, Jia Liu,
Stafford Horne, Mark Cave-Ayland, Nicholas Piggin,
Daniel Henrique Barboza, David Gibson, Harsh Prateek Bora,
Bin Meng, Palmer Dabbelt, Weiwei Li, Liu Zhiwei, Halil Pasic,
Christian Borntraeger, Eric Farman, David Hildenbrand,
Ilya Leoshkevich, Yoshinori Sato, Magnus Damm, Artyom Tarasenko,
Stefano Stabellini, Anthony Perard, Paul Durrant, Max Filippov,
qemu-arm, qemu-ppc, qemu-riscv, qemu-s390x, xen-devel
[-- Attachment #1: Type: text/plain, Size: 833 bytes --]
On Fri, 2024-01-26 at 15:33 +0100, Thomas Huth wrote:
>
> It's an abbreviation, so I'd rather use "a.k.a." instead of "aka".
>
> Apart from that, the patch looks reasonable to me.
I was going for shorter line length in the output.
I will note that we have only 47 instances of 'a\.k\.a' in the code
base, and about 117 instances of 'aka '. The latter does include a few
false positives, but it also includes *all* the user-visible
occurrences (mostly in CPU model names).
It is literally in the dictionary as "aka":
https://dictionary.cambridge.org/dictionary/english/aka
... unlike e.g. "e.g." which the dictionary does show as such, albeit
with a very reluctant "also eg" in very small letters:
https://dictionary.cambridge.org/dictionary/english/eg
Definitely not a hill I'm prepared to die on though :)
[-- Attachment #2: smime.p7s --]
[-- Type: application/pkcs7-signature, Size: 5965 bytes --]
^ permalink raw reply [flat|nested] 105+ messages in thread
* Re: [PATCH v3 20/46] hw/xtensa/virt: use pci_init_nic_devices()
2024-01-08 20:26 ` [PATCH v3 20/46] hw/xtensa/virt: " David Woodhouse
@ 2024-01-26 14:47 ` Thomas Huth
0 siblings, 0 replies; 105+ messages in thread
From: Thomas Huth @ 2024-01-26 14:47 UTC (permalink / raw)
To: David Woodhouse, qemu-devel, Max Filippov; +Cc: David Woodhouse, Jason Wang
On 08/01/2024 21.26, David Woodhouse wrote:
> From: David Woodhouse <dwmw@amazon.co.uk>
>
> Signed-off-by: David Woodhouse <dwmw@amazon.co.uk>
> ---
> hw/xtensa/virt.c | 4 +---
> 1 file changed, 1 insertion(+), 3 deletions(-)
>
> diff --git a/hw/xtensa/virt.c b/hw/xtensa/virt.c
> index a6cf646e99..5310a88861 100644
> --- a/hw/xtensa/virt.c
> +++ b/hw/xtensa/virt.c
> @@ -102,9 +102,7 @@ static void create_pcie(MachineState *ms, CPUXtensaState *env, int irq_base,
>
> pci = PCI_HOST_BRIDGE(dev);
> if (pci->bus) {
> - for (i = 0; i < nb_nics; i++) {
> - pci_nic_init_nofail(&nd_table[i], pci->bus, mc->default_nic, NULL);
> - }
> + pci_init_nic_devices(pci->bus, mc->default_nic);
> }
> }
Reviewed-by: Thomas Huth <thuth@redhat.com>
^ permalink raw reply [flat|nested] 105+ messages in thread
* Re: [PATCH v3 02/46] net: report list of available models according to platform
2024-01-26 14:46 ` David Woodhouse
@ 2024-01-26 14:50 ` Thomas Huth
0 siblings, 0 replies; 105+ messages in thread
From: Thomas Huth @ 2024-01-26 14:50 UTC (permalink / raw)
To: David Woodhouse, qemu-devel
Cc: Richard Henderson, Beniamino Galvani, Peter Maydell,
Strahinja Jankovic, Niek Linnenbank, Cédric Le Goater,
Andrew Jeffery, Joel Stanley, Igor Mitsyanko,
Jean-Christophe Dubois, Andrey Smirnov,
Philippe Mathieu-Daudé, Rob Herring, Subbaraya Sundeep,
Jan Kiszka, Tyrone Ting, Hao Wu, Radoslaw Biernacki,
Leif Lindholm, Marcin Juszkiewicz, Edgar E. Iglesias,
Alistair Francis, Helge Deller, Paolo Bonzini, Eduardo Habkost,
Michael S. Tsirkin, Marcel Apfelbaum, Song Gao, Thomas Huth,
Laurent Vivier, Huacai Chen, Jiaxun Yang, Hervé Poussineau,
Aleksandar Rikalo, Aurelien Jarno, Jason Wang, Jia Liu,
Stafford Horne, Mark Cave-Ayland, Nicholas Piggin,
Daniel Henrique Barboza, David Gibson, Harsh Prateek Bora,
Bin Meng, Palmer Dabbelt, Weiwei Li, Liu Zhiwei, Halil Pasic,
Christian Borntraeger, Eric Farman, David Hildenbrand,
Ilya Leoshkevich, Yoshinori Sato, Magnus Damm, Artyom Tarasenko,
Stefano Stabellini, Anthony Perard, Paul Durrant, Max Filippov,
qemu-arm, qemu-ppc, qemu-riscv, qemu-s390x, xen-devel
On 26/01/2024 15.46, David Woodhouse wrote:
> On Fri, 2024-01-26 at 15:33 +0100, Thomas Huth wrote:
>>
>> It's an abbreviation, so I'd rather use "a.k.a." instead of "aka".
>>
>> Apart from that, the patch looks reasonable to me.
>
> I was going for shorter line length in the output.
>
> I will note that we have only 47 instances of 'a\.k\.a' in the code
> base, and about 117 instances of 'aka '. The latter does include a few
> false positives, but it also includes *all* the user-visible
> occurrences (mostly in CPU model names).
>
> It is literally in the dictionary as "aka":
> https://dictionary.cambridge.org/dictionary/english/aka
> ... unlike e.g. "e.g." which the dictionary does show as such, albeit
> with a very reluctant "also eg" in very small letters:
> https://dictionary.cambridge.org/dictionary/english/eg
>
> Definitely not a hill I'm prepared to die on though :)
OK, I'm not a native speaker ... if "aka" is fine for you, then it's fine
for me, too ;-)
Thomas
^ permalink raw reply [flat|nested] 105+ messages in thread
* Re: [PATCH v3 21/46] hw/arm/allwinner: use qemu_configure_nic_device()
2024-01-08 20:26 ` [PATCH v3 21/46] hw/arm/allwinner: use qemu_configure_nic_device() David Woodhouse
@ 2024-01-26 14:58 ` Thomas Huth
0 siblings, 0 replies; 105+ messages in thread
From: Thomas Huth @ 2024-01-26 14:58 UTC (permalink / raw)
To: David Woodhouse, qemu-devel, qemu-arm, Peter Maydell
Cc: Beniamino Galvani, Strahinja Jankovic, Niek Linnenbank,
Philippe Mathieu-Daudé, Jason Wang, David Woodhouse
On 08/01/2024 21.26, David Woodhouse wrote:
> From: David Woodhouse <dwmw@amazon.co.uk>
>
> Signed-off-by: David Woodhouse <dwmw@amazon.co.uk>
> ---
> hw/arm/allwinner-a10.c | 6 +-----
> hw/arm/allwinner-h3.c | 6 +-----
> hw/arm/allwinner-r40.c | 27 ++-------------------------
> 3 files changed, 4 insertions(+), 35 deletions(-)
>
> diff --git a/hw/arm/allwinner-a10.c b/hw/arm/allwinner-a10.c
> index b0ea3f7f66..57f52871ec 100644
> --- a/hw/arm/allwinner-a10.c
> +++ b/hw/arm/allwinner-a10.c
> @@ -142,11 +142,7 @@ static void aw_a10_realize(DeviceState *dev, Error **errp)
> sysbus_realize(SYS_BUS_DEVICE(&s->dramc), &error_fatal);
> sysbus_mmio_map(SYS_BUS_DEVICE(&s->dramc), 0, AW_A10_DRAMC_BASE);
>
> - /* FIXME use qdev NIC properties instead of nd_table[] */
> - if (nd_table[0].used) {
> - qemu_check_nic_model(&nd_table[0], TYPE_AW_EMAC);
> - qdev_set_nic_properties(DEVICE(&s->emac), &nd_table[0]);
> - }
> + qemu_configure_nic_device(DEVICE(&s->emac), true, NULL);
> if (!sysbus_realize(SYS_BUS_DEVICE(&s->emac), errp)) {
> return;
> }
> diff --git a/hw/arm/allwinner-h3.c b/hw/arm/allwinner-h3.c
> index f05afddf7e..4f102ad082 100644
> --- a/hw/arm/allwinner-h3.c
> +++ b/hw/arm/allwinner-h3.c
> @@ -369,11 +369,7 @@ static void allwinner_h3_realize(DeviceState *dev, Error **errp)
> "sd-bus");
>
> /* EMAC */
> - /* FIXME use qdev NIC properties instead of nd_table[] */
> - if (nd_table[0].used) {
> - qemu_check_nic_model(&nd_table[0], TYPE_AW_SUN8I_EMAC);
> - qdev_set_nic_properties(DEVICE(&s->emac), &nd_table[0]);
> - }
> + qemu_configure_nic_device(DEVICE(&s->emac), true, NULL);
> object_property_set_link(OBJECT(&s->emac), "dma-memory",
> OBJECT(get_system_memory()), &error_fatal);
> sysbus_realize(SYS_BUS_DEVICE(&s->emac), &error_fatal);
> diff --git a/hw/arm/allwinner-r40.c b/hw/arm/allwinner-r40.c
> index a0d367c60d..4d5661b014 100644
> --- a/hw/arm/allwinner-r40.c
> +++ b/hw/arm/allwinner-r40.c
> @@ -294,7 +294,6 @@ static void allwinner_r40_init(Object *obj)
>
> static void allwinner_r40_realize(DeviceState *dev, Error **errp)
> {
> - const char *r40_nic_models[] = { "gmac", "emac", NULL };
> AwR40State *s = AW_R40(dev);
>
> /* CPUs */
> @@ -454,31 +453,8 @@ static void allwinner_r40_realize(DeviceState *dev, Error **errp)
> sysbus_mmio_map(SYS_BUS_DEVICE(&s->dramc), 2,
> s->memmap[AW_R40_DEV_DRAMPHY]);
>
> - /* nic support gmac and emac */
> - for (int i = 0; i < ARRAY_SIZE(r40_nic_models) - 1; i++) {
> - NICInfo *nic = &nd_table[i];
> -
> - if (!nic->used) {
> - continue;
> - }
> - if (qemu_show_nic_models(nic->model, r40_nic_models)) {
> - exit(0);
> - }
> -
> - switch (qemu_find_nic_model(nic, r40_nic_models, r40_nic_models[0])) {
> - case 0: /* gmac */
> - qdev_set_nic_properties(DEVICE(&s->gmac), nic);
> - break;
> - case 1: /* emac */
> - qdev_set_nic_properties(DEVICE(&s->emac), nic);
> - break;
> - default:
> - exit(1);
> - break;
> - }
> - }
> -
> /* GMAC */
> + qemu_configure_nic_device(DEVICE(&s->gmac), true, "gmac");
> object_property_set_link(OBJECT(&s->gmac), "dma-memory",
> OBJECT(get_system_memory()), &error_fatal);
> sysbus_realize(SYS_BUS_DEVICE(&s->gmac), &error_fatal);
> @@ -487,6 +463,7 @@ static void allwinner_r40_realize(DeviceState *dev, Error **errp)
> qdev_get_gpio_in(DEVICE(&s->gic), AW_R40_GIC_SPI_GMAC));
>
> /* EMAC */
> + qemu_configure_nic_device(DEVICE(&s->emac), true, "emac");
> sysbus_realize(SYS_BUS_DEVICE(&s->emac), &error_fatal);
> sysbus_mmio_map(SYS_BUS_DEVICE(&s->emac), 0, s->memmap[AW_R40_DEV_EMAC]);
> sysbus_connect_irq(SYS_BUS_DEVICE(&s->emac), 0,
Reviewed-by: Thomas Huth <thuth@redhat.com>
^ permalink raw reply [flat|nested] 105+ messages in thread
* Re: [PATCH v3 23/46] hw/arm/exynos4: use qemu_create_nic_device()
2024-01-08 20:26 ` [PATCH v3 23/46] hw/arm/exynos4: use qemu_create_nic_device() David Woodhouse
@ 2024-01-26 15:01 ` Thomas Huth
0 siblings, 0 replies; 105+ messages in thread
From: Thomas Huth @ 2024-01-26 15:01 UTC (permalink / raw)
To: David Woodhouse, qemu-devel, Peter Maydell, Igor Mitsyanko,
qemu-arm
Cc: Philippe Mathieu-Daudé, Jason Wang, David Woodhouse
On 08/01/2024 21.26, David Woodhouse wrote:
> From: David Woodhouse <dwmw@amazon.co.uk>
>
> Signed-off-by: David Woodhouse <dwmw@amazon.co.uk>
> ---
> hw/arm/exynos4_boards.c | 6 ++----
> 1 file changed, 2 insertions(+), 4 deletions(-)
>
> diff --git a/hw/arm/exynos4_boards.c b/hw/arm/exynos4_boards.c
> index b0e13eb4f0..003992189b 100644
> --- a/hw/arm/exynos4_boards.c
> +++ b/hw/arm/exynos4_boards.c
> @@ -76,10 +76,8 @@ static void lan9215_init(uint32_t base, qemu_irq irq)
> SysBusDevice *s;
>
> /* This should be a 9215 but the 9118 is close enough */
> - if (nd_table[0].used) {
> - qemu_check_nic_model(&nd_table[0], "lan9118");
> - dev = qdev_new(TYPE_LAN9118);
> - qdev_set_nic_properties(dev, &nd_table[0]);
> + dev = qemu_create_nic_device(TYPE_LAN9118, true, NULL);
> + if (dev) {
> qdev_prop_set_uint32(dev, "mode_16bit", 1);
> s = SYS_BUS_DEVICE(dev);
> sysbus_realize_and_unref(s, &error_fatal);
Reviewed-by: Thomas Huth <thuth@redhat.com>
^ permalink raw reply [flat|nested] 105+ messages in thread
* Re: [PATCH v3 24/46] hw/arm/fsl: use qemu_configure_nic_device()
2024-01-08 20:26 ` [PATCH v3 24/46] hw/arm/fsl: use qemu_configure_nic_device() David Woodhouse
@ 2024-01-26 15:03 ` Thomas Huth
0 siblings, 0 replies; 105+ messages in thread
From: Thomas Huth @ 2024-01-26 15:03 UTC (permalink / raw)
To: David Woodhouse, qemu-devel, qemu-arm
Cc: Richard Henderson, Beniamino Galvani, Peter Maydell,
Strahinja Jankovic, Niek Linnenbank, Cédric Le Goater,
Andrew Jeffery, Joel Stanley, Igor Mitsyanko,
Philippe Mathieu-Daudé, Jason Wang, David Woodhouse
On 08/01/2024 21.26, David Woodhouse wrote:
> From: David Woodhouse <dwmw@amazon.co.uk>
>
> Signed-off-by: David Woodhouse <dwmw@amazon.co.uk>
> ---
> hw/arm/fsl-imx25.c | 2 +-
> hw/arm/fsl-imx6.c | 2 +-
> hw/arm/fsl-imx6ul.c | 2 +-
> hw/arm/fsl-imx7.c | 2 +-
> 4 files changed, 4 insertions(+), 4 deletions(-)
>
> diff --git a/hw/arm/fsl-imx25.c b/hw/arm/fsl-imx25.c
> index 9d2fb75a68..a24fa7b443 100644
> --- a/hw/arm/fsl-imx25.c
> +++ b/hw/arm/fsl-imx25.c
> @@ -170,7 +170,7 @@ static void fsl_imx25_realize(DeviceState *dev, Error **errp)
>
> object_property_set_uint(OBJECT(&s->fec), "phy-num", s->phy_num,
> &error_abort);
> - qdev_set_nic_properties(DEVICE(&s->fec), &nd_table[0]);
> + qemu_configure_nic_device(DEVICE(&s->fec), true, NULL);
>
> if (!sysbus_realize(SYS_BUS_DEVICE(&s->fec), errp)) {
> return;
> diff --git a/hw/arm/fsl-imx6.c b/hw/arm/fsl-imx6.c
> index b2153022c0..02f3024090 100644
> --- a/hw/arm/fsl-imx6.c
> +++ b/hw/arm/fsl-imx6.c
> @@ -380,7 +380,7 @@ static void fsl_imx6_realize(DeviceState *dev, Error **errp)
>
> object_property_set_uint(OBJECT(&s->eth), "phy-num", s->phy_num,
> &error_abort);
> - qdev_set_nic_properties(DEVICE(&s->eth), &nd_table[0]);
> + qemu_configure_nic_device(DEVICE(&s->eth), true, NULL);
> if (!sysbus_realize(SYS_BUS_DEVICE(&s->eth), errp)) {
> return;
> }
> diff --git a/hw/arm/fsl-imx6ul.c b/hw/arm/fsl-imx6ul.c
> index e37b69a5e1..ca3dd439ec 100644
> --- a/hw/arm/fsl-imx6ul.c
> +++ b/hw/arm/fsl-imx6ul.c
> @@ -442,7 +442,7 @@ static void fsl_imx6ul_realize(DeviceState *dev, Error **errp)
> s->phy_num[i], &error_abort);
> object_property_set_uint(OBJECT(&s->eth[i]), "tx-ring-num",
> FSL_IMX6UL_ETH_NUM_TX_RINGS, &error_abort);
> - qdev_set_nic_properties(DEVICE(&s->eth[i]), &nd_table[i]);
> + qemu_configure_nic_device(DEVICE(&s->eth[i]), true, NULL);
> sysbus_realize(SYS_BUS_DEVICE(&s->eth[i]), &error_abort);
>
> sysbus_mmio_map(SYS_BUS_DEVICE(&s->eth[i]), 0,
> diff --git a/hw/arm/fsl-imx7.c b/hw/arm/fsl-imx7.c
> index 474cfdc87c..1acbe065db 100644
> --- a/hw/arm/fsl-imx7.c
> +++ b/hw/arm/fsl-imx7.c
> @@ -446,7 +446,7 @@ static void fsl_imx7_realize(DeviceState *dev, Error **errp)
> s->phy_num[i], &error_abort);
> object_property_set_uint(OBJECT(&s->eth[i]), "tx-ring-num",
> FSL_IMX7_ETH_NUM_TX_RINGS, &error_abort);
> - qdev_set_nic_properties(DEVICE(&s->eth[i]), &nd_table[i]);
> + qemu_configure_nic_device(DEVICE(&s->eth[i]), true, NULL);
> sysbus_realize(SYS_BUS_DEVICE(&s->eth[i]), &error_abort);
>
> sysbus_mmio_map(SYS_BUS_DEVICE(&s->eth[i]), 0, FSL_IMX7_ENETn_ADDR[i]);
Reviewed-by: Thomas Huth <thuth@redhat.com>
^ permalink raw reply [flat|nested] 105+ messages in thread
* Re: [PATCH v3 25/46] hw/net/smc91c111: use qemu_configure_nic_device()
2024-01-08 20:26 ` [PATCH v3 25/46] hw/net/smc91c111: " David Woodhouse
@ 2024-01-26 15:14 ` Thomas Huth
2024-01-26 15:37 ` David Woodhouse
0 siblings, 1 reply; 105+ messages in thread
From: Thomas Huth @ 2024-01-26 15:14 UTC (permalink / raw)
To: David Woodhouse, qemu-devel, qemu-arm
Cc: Richard Henderson, Beniamino Galvani, Peter Maydell,
Strahinja Jankovic, Niek Linnenbank, Cédric Le Goater,
Andrew Jeffery, Joel Stanley, Igor Mitsyanko,
Jean-Christophe Dubois, Andrey Smirnov,
Philippe Mathieu-Daudé, Rob Herring, Subbaraya Sundeep,
Jan Kiszka, Tyrone Ting, Hao Wu, Radoslaw Biernacki,
Leif Lindholm, Marcin Juszkiewicz, Edgar E. Iglesias,
Alistair Francis, Helge Deller, Paolo Bonzini, Eduardo Habkost,
Michael S. Tsirkin, Marcel Apfelbaum, Song Gao, Thomas Huth,
Laurent Vivier, Huacai Chen, Jiaxun Yang, Hervé Poussineau,
Aleksandar Rikalo, Aurelien Jarno, Jason Wang, Jia Liu,
Stafford Horne, Mark Cave-Ayland, Nicholas Piggin,
Daniel Henrique Barboza, David Gibson, Harsh Prateek Bora,
Bin Meng, Palmer Dabbelt, Weiwei Li, Liu Zhiwei, Halil Pasic,
Christian Borntraeger, Eric Farman, David Hildenbrand,
Ilya Leoshkevich, Yoshinori Sato, Magnus Damm, Artyom Tarasenko,
Stefano Stabellini, Anthony Perard, Paul Durrant, Max Filippov,
David Woodhouse
On 08/01/2024 21.26, David Woodhouse wrote:
> From: David Woodhouse <dwmw@amazon.co.uk>
>
> Some callers instantiate the device unconditionally, others will do so only
> if there is a NICInfo to go with it. This appears to be fairly random, but
> preserve the existing behaviour for now.
>
> Signed-off-by: David Woodhouse <dwmw@amazon.co.uk>
> ---
...
> diff --git a/hw/net/smc91c111.c b/hw/net/smc91c111.c
> index 49b7c26102..702d0e8e83 100644
> --- a/hw/net/smc91c111.c
> +++ b/hw/net/smc91c111.c
> @@ -818,14 +818,13 @@ static void smc91c111_register_types(void)
>
> /* Legacy helper function. Should go away when machine config files are
> implemented. */
> -void smc91c111_init(NICInfo *nd, uint32_t base, qemu_irq irq)
> +void smc91c111_init(uint32_t base, qemu_irq irq)
> {
> DeviceState *dev;
> SysBusDevice *s;
>
> - qemu_check_nic_model(nd, "smc91c111");
> dev = qdev_new(TYPE_SMC91C111);
> - qdev_set_nic_properties(dev, nd);
> + qemu_configure_nic_device(dev, true, NULL);
Wouldn't it be possible to use qemu_create_nic_device() here, too?
Anyway:
Reviewed-by: Thomas Huth <thuth@redhat.com>
> s = SYS_BUS_DEVICE(dev);
> sysbus_realize_and_unref(s, &error_fatal);
> sysbus_mmio_map(s, 0, base);
^ permalink raw reply [flat|nested] 105+ messages in thread
* Re: [PATCH v3 01/46] net: add qemu_{configure,create}_nic_device(), qemu_find_nic_info()
2024-01-26 14:43 ` Peter Maydell
@ 2024-01-26 15:19 ` David Woodhouse
2024-01-26 15:33 ` [PATCH v3 01/46] net: add qemu_{configure, create}_nic_device(), qemu_find_nic_info() Peter Maydell
0 siblings, 1 reply; 105+ messages in thread
From: David Woodhouse @ 2024-01-26 15:19 UTC (permalink / raw)
To: Peter Maydell
Cc: qemu-devel, Richard Henderson, Beniamino Galvani,
Strahinja Jankovic, Niek Linnenbank, Cédric Le Goater,
Andrew Jeffery, Joel Stanley, Igor Mitsyanko,
Jean-Christophe Dubois, Andrey Smirnov,
Philippe Mathieu-Daudé, Rob Herring, Subbaraya Sundeep,
Jan Kiszka, Tyrone Ting, Hao Wu, Radoslaw Biernacki,
Leif Lindholm, Marcin Juszkiewicz, Edgar E. Iglesias,
Alistair Francis, Helge Deller, Paolo Bonzini, Eduardo Habkost,
Michael S. Tsirkin, Marcel Apfelbaum, Song Gao, Thomas Huth,
Laurent Vivier, Huacai Chen, Jiaxun Yang, Hervé Poussineau,
Aleksandar Rikalo, Aurelien Jarno, Jason Wang, Jia Liu,
Stafford Horne, Mark Cave-Ayland, Nicholas Piggin,
Daniel Henrique Barboza, David Gibson, Harsh Prateek Bora,
Bin Meng, Palmer Dabbelt, Weiwei Li, Liu Zhiwei, Halil Pasic,
Christian Borntraeger, Eric Farman, David Hildenbrand,
Ilya Leoshkevich, Yoshinori Sato, Magnus Damm, Artyom Tarasenko,
Stefano Stabellini, Anthony Perard, Paul Durrant, Max Filippov,
qemu-arm, qemu-ppc, qemu-riscv, qemu-s390x, xen-devel
[-- Attachment #1: Type: text/plain, Size: 3336 bytes --]
On Fri, 2024-01-26 at 14:43 +0000, Peter Maydell wrote:
>
> > +NICInfo *qemu_find_nic_info(const char *typename, bool match_default,
> > + const char *alias);
> > +bool qemu_configure_nic_device(DeviceState *dev, bool match_default,
> > + const char *alias);
> > +DeviceState *qemu_create_nic_device(const char *typename, bool match_default,
> > + const char *alias);
>
> Could we have doc comments that document the purpose and API
> for these new global functions, please?
Like this? I deliberately fatfingered the argument names and didn't
even get a build warning, and I don't see any actual *documentation*
being generated with it...?
diff --git a/include/net/net.h b/include/net/net.h
index 25ea83fd12..14614b0a31 100644
--- a/include/net/net.h
+++ b/include/net/net.h
@@ -207,10 +207,46 @@ int qemu_show_nic_models(const char *arg, const char *const *models);
void qemu_check_nic_model(NICInfo *nd, const char *model);
int qemu_find_nic_model(NICInfo *nd, const char * const *models,
const char *default_model);
+/**
+ * qemu_find_nic_info: Obtain NIC configuration information
+ * @typename: Name of device object type
+ * @match_default: Match NIC configurations with no model specified
+ * @alias: Additional model string to match (for user convenience and
+ * backward compatibility).
+ *
+ * Search for a NIC configuration matching the NIC model constraints.
+ */
NICInfo *qemu_find_nic_info(const char *typename, bool match_default,
const char *alias);
+/**
+ * qemu_configure_nic_device: Apply NIC configuration to a given device
+ * @dev: Network device to be configured
+ * @match_default: Match NIC configurations with no model specified
+ * @alias: Additional model string to match
+ *
+ * Search for a NIC configuration for the provided device, using the
+ * additionally specified matching constraints. If found, apply the
+ * configuration using qdev_set_nic_properties() and return %true.
+ *
+ * This is used by platform code which creates the device anyway,
+ * regardless of whether there is a configuration for it. This tends
+ * to be platforms which ignore `--nodefaults` and create net devices
+ * anyway. This behaviour is not advised for new platforms; use the
+ * qemu_create_nic_device() function instead, which creates the device
+ * only when it is configured.
+ */
bool qemu_configure_nic_device(DeviceState *dev, bool match_default,
const char *alias);
+
+/**
+ * qemu_create_nic_device: Create a NIC device if a configuration exists for it
+ * @typename: Object typename of network device
+ * @match_default: Match NIC configurations with no model specified
+ * @alias: Additional model string to match
+ *
+ * Search for a NIC configuration for the provided device type. If found,
+ * create an object of the corresponding type and return it.
+ */
DeviceState *qemu_create_nic_device(const char *typename, bool match_default,
const char *alias);
void print_net_client(Monitor *mon, NetClientState *nc);
[-- Attachment #2: smime.p7s --]
[-- Type: application/pkcs7-signature, Size: 5965 bytes --]
^ permalink raw reply related [flat|nested] 105+ messages in thread
* Re: [PATCH v3 07/46] hw/alpha/dp264: use pci_init_nic_devices()
2024-01-08 20:26 ` [PATCH v3 07/46] hw/alpha/dp264: use pci_init_nic_devices() David Woodhouse
@ 2024-01-26 15:28 ` Thomas Huth
0 siblings, 0 replies; 105+ messages in thread
From: Thomas Huth @ 2024-01-26 15:28 UTC (permalink / raw)
To: David Woodhouse, qemu-devel, Richard Henderson
Cc: Jason Wang, David Woodhouse
On 08/01/2024 21.26, David Woodhouse wrote:
> From: David Woodhouse <dwmw@amazon.co.uk>
>
> Signed-off-by: David Woodhouse <dwmw@amazon.co.uk>
> ---
> hw/alpha/dp264.c | 4 +---
> 1 file changed, 1 insertion(+), 3 deletions(-)
>
> diff --git a/hw/alpha/dp264.c b/hw/alpha/dp264.c
> index 03495e1e60..52a1fa310b 100644
> --- a/hw/alpha/dp264.c
> +++ b/hw/alpha/dp264.c
> @@ -124,9 +124,7 @@ static void clipper_init(MachineState *machine)
> pci_vga_init(pci_bus);
>
> /* Network setup. e1000 is good enough, failing Tulip support. */
> - for (i = 0; i < nb_nics; i++) {
> - pci_nic_init_nofail(&nd_table[i], pci_bus, mc->default_nic, NULL);
> - }
> + pci_init_nic_devices(pci_bus, mc->default_nic);
>
> /* Super I/O */
> isa_create_simple(isa_bus, TYPE_SMC37C669_SUPERIO);
Reviewed-by: Thomas Huth <thuth@redhat.com>
^ permalink raw reply [flat|nested] 105+ messages in thread
* Re: [PATCH v3 09/46] hw/arm/virt: use pci_init_nic_devices()
2024-01-08 20:26 ` [PATCH v3 09/46] hw/arm/virt: " David Woodhouse
@ 2024-01-26 15:30 ` Thomas Huth
0 siblings, 0 replies; 105+ messages in thread
From: Thomas Huth @ 2024-01-26 15:30 UTC (permalink / raw)
To: David Woodhouse, qemu-devel, Peter Maydell, qemu-arm
Cc: Richard Henderson, Philippe Mathieu-Daudé, Jason Wang,
David Woodhouse
On 08/01/2024 21.26, David Woodhouse wrote:
> From: David Woodhouse <dwmw@amazon.co.uk>
>
> Signed-off-by: David Woodhouse <dwmw@amazon.co.uk>
> ---
> hw/arm/virt.c | 4 +---
> 1 file changed, 1 insertion(+), 3 deletions(-)
>
> diff --git a/hw/arm/virt.c b/hw/arm/virt.c
> index 2793121cb4..8cf9237001 100644
> --- a/hw/arm/virt.c
> +++ b/hw/arm/virt.c
> @@ -1454,9 +1454,7 @@ static void create_pcie(VirtMachineState *vms)
> pci->bypass_iommu = vms->default_bus_bypass_iommu;
> vms->bus = pci->bus;
> if (vms->bus) {
> - for (i = 0; i < nb_nics; i++) {
> - pci_nic_init_nofail(&nd_table[i], pci->bus, mc->default_nic, NULL);
> - }
> + pci_init_nic_devices(pci->bus, mc->default_nic);
> }
>
> nodename = vms->pciehb_nodename = g_strdup_printf("/pcie@%" PRIx64, base);
Reviewed-by: Thomas Huth <thuth@redhat.com>
^ permalink raw reply [flat|nested] 105+ messages in thread
* Re: [PATCH v3 01/46] net: add qemu_{configure, create}_nic_device(), qemu_find_nic_info()
2024-01-26 15:19 ` [PATCH v3 01/46] net: add qemu_{configure,create}_nic_device(), qemu_find_nic_info() David Woodhouse
@ 2024-01-26 15:33 ` Peter Maydell
2024-01-26 15:43 ` [PATCH v3 01/46] net: add qemu_{configure,create}_nic_device(), qemu_find_nic_info() David Woodhouse
0 siblings, 1 reply; 105+ messages in thread
From: Peter Maydell @ 2024-01-26 15:33 UTC (permalink / raw)
To: David Woodhouse
Cc: qemu-devel, Richard Henderson, Beniamino Galvani,
Strahinja Jankovic, Niek Linnenbank, Cédric Le Goater,
Andrew Jeffery, Joel Stanley, Igor Mitsyanko,
Jean-Christophe Dubois, Andrey Smirnov,
Philippe Mathieu-Daudé, Rob Herring, Subbaraya Sundeep,
Jan Kiszka, Tyrone Ting, Hao Wu, Radoslaw Biernacki,
Leif Lindholm, Marcin Juszkiewicz, Edgar E. Iglesias,
Alistair Francis, Helge Deller, Paolo Bonzini, Eduardo Habkost,
Michael S. Tsirkin, Marcel Apfelbaum, Song Gao, Thomas Huth,
Laurent Vivier, Huacai Chen, Jiaxun Yang, Hervé Poussineau,
Aleksandar Rikalo, Aurelien Jarno, Jason Wang, Jia Liu,
Stafford Horne, Mark Cave-Ayland, Nicholas Piggin,
Daniel Henrique Barboza, David Gibson, Harsh Prateek Bora,
Bin Meng, Palmer Dabbelt, Weiwei Li, Liu Zhiwei, Halil Pasic,
Christian Borntraeger, Eric Farman, David Hildenbrand,
Ilya Leoshkevich, Yoshinori Sato, Magnus Damm, Artyom Tarasenko,
Stefano Stabellini, Anthony Perard, Paul Durrant, Max Filippov,
qemu-arm, qemu-ppc, qemu-riscv, qemu-s390x, xen-devel
On Fri, 26 Jan 2024 at 15:20, David Woodhouse <dwmw2@infradead.org> wrote:
>
> On Fri, 2024-01-26 at 14:43 +0000, Peter Maydell wrote:
> >
> > > +NICInfo *qemu_find_nic_info(const char *typename, bool match_default,
> > > + const char *alias);
> > > +bool qemu_configure_nic_device(DeviceState *dev, bool match_default,
> > > + const char *alias);
> > > +DeviceState *qemu_create_nic_device(const char *typename, bool match_default,
> > > + const char *alias);
> >
> > Could we have doc comments that document the purpose and API
> > for these new global functions, please?
>
> Like this? I deliberately fatfingered the argument names and didn't
> even get a build warning, and I don't see any actual *documentation*
> being generated with it...?
We use the doc comment format to allow for potential future
documentation generation, but it's only actually generated
if there's a .rst file somewhere under docs/ that has a
kernel-doc:: directive referencing the .h file (for instance
there's one in docs/devel/memory.rst that results in
https://www.qemu.org/docs/master/devel/memory.html#api-reference )
For almost all internal functions, we set the relatively low
bar of "have a doc comment so people reading the header file
can see what the functions do". Where there's a more complex
subsystem that merits its own hand-written documentation
under docs/devel, then if the author of that documentation
is enthusiastic they can clean up and pull in specific headers
to add autogenerated docs. But the primary audience is the
human reader of the .h file.
> diff --git a/include/net/net.h b/include/net/net.h
> index 25ea83fd12..14614b0a31 100644
> --- a/include/net/net.h
> +++ b/include/net/net.h
> @@ -207,10 +207,46 @@ int qemu_show_nic_models(const char *arg, const char *const *models);
> void qemu_check_nic_model(NICInfo *nd, const char *model);
> int qemu_find_nic_model(NICInfo *nd, const char * const *models,
> const char *default_model);
> +/**
> + * qemu_find_nic_info: Obtain NIC configuration information
> + * @typename: Name of device object type
> + * @match_default: Match NIC configurations with no model specified
> + * @alias: Additional model string to match (for user convenience and
> + * backward compatibility).
> + *
> + * Search for a NIC configuration matching the NIC model constraints.
> + */
> NICInfo *qemu_find_nic_info(const char *typename, bool match_default,
> const char *alias);
> +/**
> + * qemu_configure_nic_device: Apply NIC configuration to a given device
> + * @dev: Network device to be configured
> + * @match_default: Match NIC configurations with no model specified
> + * @alias: Additional model string to match
> + *
> + * Search for a NIC configuration for the provided device, using the
> + * additionally specified matching constraints. If found, apply the
> + * configuration using qdev_set_nic_properties() and return %true.
> + *
> + * This is used by platform code which creates the device anyway,
> + * regardless of whether there is a configuration for it. This tends
> + * to be platforms which ignore `--nodefaults` and create net devices
> + * anyway. This behaviour is not advised for new platforms; use the
> + * qemu_create_nic_device() function instead, which creates the device
> + * only when it is configured.
I disagree about this paragraph. The behaviour we want for new
platforms is:
* If this is modelling some board where the ethernet device is
always present (eg it is soldered on to the board, or it is
a part of the SoC that the board uses), then always create
that device
* If the hardware being modelled has the ethernet device as an
optional device (eg physically removable like a PCI card),
then the board should arrange that --nodefaults causes it to
not be created
Basically if the guest OS is entitled to assume the ethernet
device is present then we shouldn't allow the machine to be
created with it not present, because all that will happen is
that the guest will fall over in bootup.
(Similar applies to things like whether the board should
honour the option to disable USB support or not.)
thanks
-- PMM
^ permalink raw reply [flat|nested] 105+ messages in thread
* Re: [PATCH v3 25/46] hw/net/smc91c111: use qemu_configure_nic_device()
2024-01-26 15:14 ` Thomas Huth
@ 2024-01-26 15:37 ` David Woodhouse
0 siblings, 0 replies; 105+ messages in thread
From: David Woodhouse @ 2024-01-26 15:37 UTC (permalink / raw)
To: Thomas Huth, qemu-devel, qemu-arm
Cc: Richard Henderson, Beniamino Galvani, Peter Maydell,
Strahinja Jankovic, Niek Linnenbank, Cédric Le Goater,
Andrew Jeffery, Joel Stanley, Igor Mitsyanko,
Jean-Christophe Dubois, Andrey Smirnov,
Philippe Mathieu-Daudé, Rob Herring, Subbaraya Sundeep,
Jan Kiszka, Tyrone Ting, Hao Wu, Radoslaw Biernacki,
Leif Lindholm, Marcin Juszkiewicz, Edgar E. Iglesias,
Alistair Francis, Helge Deller, Paolo Bonzini, Eduardo Habkost,
Michael S. Tsirkin, Marcel Apfelbaum, Song Gao, Thomas Huth,
Laurent Vivier, Huacai Chen, Jiaxun Yang, Hervé Poussineau,
Aleksandar Rikalo, Aurelien Jarno, Jason Wang, Jia Liu,
Stafford Horne, Mark Cave-Ayland, Nicholas Piggin,
Daniel Henrique Barboza, David Gibson, Harsh Prateek Bora,
Bin Meng, Palmer Dabbelt, Weiwei Li, Liu Zhiwei, Halil Pasic,
Christian Borntraeger, Eric Farman, David Hildenbrand,
Ilya Leoshkevich, Yoshinori Sato, Magnus Damm, Artyom Tarasenko,
Stefano Stabellini, Anthony Perard, Paul Durrant, Max Filippov
[-- Attachment #1: Type: text/plain, Size: 2372 bytes --]
On Fri, 2024-01-26 at 16:14 +0100, Thomas Huth wrote:
>
> > /* Legacy helper function. Should go away when machine config files are
> > implemented. */
> > -void smc91c111_init(NICInfo *nd, uint32_t base, qemu_irq irq)
> > +void smc91c111_init(uint32_t base, qemu_irq irq)
> > {
> > DeviceState *dev;
> > SysBusDevice *s;
> >
> > - qemu_check_nic_model(nd, "smc91c111");
> > dev = qdev_new(TYPE_SMC91C111);
> > - qdev_set_nic_properties(dev, nd);
> > + qemu_configure_nic_device(dev, true, NULL);
>
> Wouldn't it be possible to use qemu_create_nic_device() here, too?
Not easily.
The existing callers of smc91c111_init() differ. Some (e.g. mainstone)
just create the device unconditionally, ignoring --nodefaults. Others
(e.g. integratorcp) are better behaved and do it only if a
configuration exists. (Citation of existing patch reinstated below)
And even if we wanted to convert the well-behaved ones to use
qemu_create_nic_device() directly, we'd still have to explicitly set up
the base address and IRQ, which smc91c111_init() currently does for us.
> --- a/hw/arm/integratorcp.c
> +++ b/hw/arm/integratorcp.c
> @@ -666,8 +666,9 @@ static void integratorcp_init(MachineState *machine)
> sysbus_mmio_map(SYS_BUS_DEVICE(dev), 0, 0x1d000000);
> sysbus_connect_irq(SYS_BUS_DEVICE(dev), 0, pic[25]);
>
> - if (nd_table[0].used)
> - smc91c111_init(&nd_table[0], 0xc8000000, pic[27]);
> + if (qemu_find_nic_info("smc91c111", true, NULL)) {
> + smc91c111_init(0xc8000000, pic[27]);
> + }
>
> sysbus_create_simple("pl110", 0xc0000000, pic[22]);
>
> diff --git a/hw/arm/mainstone.c b/hw/arm/mainstone.c
> index 68329c4617..84dbb6e525 100644
> --- a/hw/arm/mainstone.c
> +++ b/hw/arm/mainstone.c
> @@ -153,8 +153,7 @@ static void mainstone_common_init(MachineState *machine,
> qdev_get_gpio_in(mst_irq, S1_IRQ),
> qdev_get_gpio_in(mst_irq, S1_CD_IRQ));
>
> - smc91c111_init(&nd_table[0], MST_ETH_PHYS,
> - qdev_get_gpio_in(mst_irq, ETHERNET_IRQ));
> + smc91c111_init(MST_ETH_PHYS, qdev_get_gpio_in(mst_irq, ETHERNET_IRQ));
>
> mainstone_binfo.board_id = arm_id;
> arm_load_kernel(mpu->cpu, machine, &mainstone_binfo);
[-- Attachment #2: smime.p7s --]
[-- Type: application/pkcs7-signature, Size: 5965 bytes --]
^ permalink raw reply [flat|nested] 105+ messages in thread
* Re: [PATCH v3 10/46] hw/hppa: use pci_init_nic_devices()
2024-01-08 20:26 ` [PATCH v3 10/46] hw/hppa: " David Woodhouse
@ 2024-01-26 15:38 ` Thomas Huth
0 siblings, 0 replies; 105+ messages in thread
From: Thomas Huth @ 2024-01-26 15:38 UTC (permalink / raw)
To: David Woodhouse, qemu-devel, Richard Henderson
Cc: Jason Wang, Jia Liu, David Woodhouse
On 08/01/2024 21.26, David Woodhouse wrote:
> From: David Woodhouse <dwmw@amazon.co.uk>
>
> Signed-off-by: David Woodhouse <dwmw@amazon.co.uk>
> ---
> hw/hppa/machine.c | 7 ++-----
> 1 file changed, 2 insertions(+), 5 deletions(-)
>
> diff --git a/hw/hppa/machine.c b/hw/hppa/machine.c
> index c8da7c18d5..19d477105e 100644
> --- a/hw/hppa/machine.c
> +++ b/hw/hppa/machine.c
> @@ -338,7 +338,6 @@ static void machine_HP_common_init_tail(MachineState *machine, PCIBus *pci_bus,
> uint64_t kernel_entry = 0, kernel_low, kernel_high;
> MemoryRegion *addr_space = get_system_memory();
> MemoryRegion *rom_region;
> - long i;
> unsigned int smp_cpus = machine->smp.cpus;
> SysBusDevice *s;
>
> @@ -362,10 +361,8 @@ static void machine_HP_common_init_tail(MachineState *machine, PCIBus *pci_bus,
> qdev_get_gpio_in(lasi_dev, LASI_IRQ_LAN_HPA));
> }
>
> - for (i = 0; i < nb_nics; i++) {
> - if (!enable_lasi_lan()) {
> - pci_nic_init_nofail(&nd_table[i], pci_bus, mc->default_nic, NULL);
> - }
> + if (!enable_lasi_lan()) {
> + pci_init_nic_devices(pci_bus, mc->default_nic);
> }
>
> /* BMC board: HP Powerbar SP2 Diva (with console only) */
Reviewed-by: Thomas Huth <thuth@redhat.com>
^ permalink raw reply [flat|nested] 105+ messages in thread
* Re: [PATCH v3 01/46] net: add qemu_{configure,create}_nic_device(), qemu_find_nic_info()
2024-01-26 15:33 ` [PATCH v3 01/46] net: add qemu_{configure, create}_nic_device(), qemu_find_nic_info() Peter Maydell
@ 2024-01-26 15:43 ` David Woodhouse
0 siblings, 0 replies; 105+ messages in thread
From: David Woodhouse @ 2024-01-26 15:43 UTC (permalink / raw)
To: Peter Maydell
Cc: qemu-devel, Richard Henderson, Beniamino Galvani,
Strahinja Jankovic, Niek Linnenbank, Cédric Le Goater,
Andrew Jeffery, Joel Stanley, Igor Mitsyanko,
Jean-Christophe Dubois, Andrey Smirnov,
Philippe Mathieu-Daudé, Rob Herring, Subbaraya Sundeep,
Jan Kiszka, Tyrone Ting, Hao Wu, Radoslaw Biernacki,
Leif Lindholm, Marcin Juszkiewicz, Edgar E. Iglesias,
Alistair Francis, Helge Deller, Paolo Bonzini, Eduardo Habkost,
Michael S. Tsirkin, Marcel Apfelbaum, Song Gao, Thomas Huth,
Laurent Vivier, Huacai Chen, Jiaxun Yang, Hervé Poussineau,
Aleksandar Rikalo, Aurelien Jarno, Jason Wang, Jia Liu,
Stafford Horne, Mark Cave-Ayland, Nicholas Piggin,
Daniel Henrique Barboza, David Gibson, Harsh Prateek Bora,
Bin Meng, Palmer Dabbelt, Weiwei Li, Liu Zhiwei, Halil Pasic,
Christian Borntraeger, Eric Farman, David Hildenbrand,
Ilya Leoshkevich, Yoshinori Sato, Magnus Damm, Artyom Tarasenko,
Stefano Stabellini, Anthony Perard, Paul Durrant, Max Filippov,
qemu-arm, qemu-ppc, qemu-riscv, qemu-s390x, xen-devel
[-- Attachment #1: Type: text/plain, Size: 5306 bytes --]
On Fri, 2024-01-26 at 15:33 +0000, Peter Maydell wrote:
> On Fri, 26 Jan 2024 at 15:20, David Woodhouse <dwmw2@infradead.org> wrote:
> >
> > On Fri, 2024-01-26 at 14:43 +0000, Peter Maydell wrote:
> > >
> > > > +NICInfo *qemu_find_nic_info(const char *typename, bool match_default,
> > > > + const char *alias);
> > > > +bool qemu_configure_nic_device(DeviceState *dev, bool match_default,
> > > > + const char *alias);
> > > > +DeviceState *qemu_create_nic_device(const char *typename, bool match_default,
> > > > + const char *alias);
> > >
> > > Could we have doc comments that document the purpose and API
> > > for these new global functions, please?
> >
> > Like this? I deliberately fatfingered the argument names and didn't
> > even get a build warning, and I don't see any actual *documentation*
> > being generated with it...?
>
> We use the doc comment format to allow for potential future
> documentation generation, but it's only actually generated
> if there's a .rst file somewhere under docs/ that has a
> kernel-doc:: directive referencing the .h file (for instance
> there's one in docs/devel/memory.rst that results in
> https://www.qemu.org/docs/master/devel/memory.html#api-reference )
>
> For almost all internal functions, we set the relatively low
> bar of "have a doc comment so people reading the header file
> can see what the functions do". Where there's a more complex
> subsystem that merits its own hand-written documentation
> under docs/devel, then if the author of that documentation
> is enthusiastic they can clean up and pull in specific headers
> to add autogenerated docs. But the primary audience is the
> human reader of the .h file.
Ack, thanks.
> > diff --git a/include/net/net.h b/include/net/net.h
> > index 25ea83fd12..14614b0a31 100644
> > --- a/include/net/net.h
> > +++ b/include/net/net.h
> > @@ -207,10 +207,46 @@ int qemu_show_nic_models(const char *arg, const char *const *models);
> > void qemu_check_nic_model(NICInfo *nd, const char *model);
> > int qemu_find_nic_model(NICInfo *nd, const char * const *models,
> > const char *default_model);
> > +/**
> > + * qemu_find_nic_info: Obtain NIC configuration information
> > + * @typename: Name of device object type
> > + * @match_default: Match NIC configurations with no model specified
> > + * @alias: Additional model string to match (for user convenience and
> > + * backward compatibility).
> > + *
> > + * Search for a NIC configuration matching the NIC model constraints.
> > + */
> > NICInfo *qemu_find_nic_info(const char *typename, bool match_default,
> > const char *alias);
> > +/**
> > + * qemu_configure_nic_device: Apply NIC configuration to a given device
> > + * @dev: Network device to be configured
> > + * @match_default: Match NIC configurations with no model specified
> > + * @alias: Additional model string to match
> > + *
> > + * Search for a NIC configuration for the provided device, using the
> > + * additionally specified matching constraints. If found, apply the
> > + * configuration using qdev_set_nic_properties() and return %true.
> > + *
> > + * This is used by platform code which creates the device anyway,
> > + * regardless of whether there is a configuration for it. This tends
> > + * to be platforms which ignore `--nodefaults` and create net devices
> > + * anyway. This behaviour is not advised for new platforms; use the
> > + * qemu_create_nic_device() function instead, which creates the device
> > + * only when it is configured.
>
> I disagree about this paragraph. The behaviour we want for new
> platforms is:
>
> * If this is modelling some board where the ethernet device is
> always present (eg it is soldered on to the board, or it is
> a part of the SoC that the board uses), then always create
> that device
> * If the hardware being modelled has the ethernet device as an
> optional device (eg physically removable like a PCI card),
> then the board should arrange that --nodefaults causes it to
> not be created
>
Ack. Scratch the 'better behaved' part of my last response to Thomas
about smc91c111 too then :)
How's this:
/**
* qemu_configure_nic_device: Apply NIC configuration to a given device
* @dev: Network device to be configured
* @match_default: Match NIC configurations with no model specified
* @alias: Additional model string to match
*
* Search for a NIC configuration for the provided device, using the
* additionally specified matching constraints. If found, apply the
* configuration using qdev_set_nic_properties() and return %true.
*
* This is used by platform code which creates the device anyway,
* regardless of whether there is a configuration for it. This tends
* to be platforms which ignore `--nodefaults` and create net devices
* anyway, for example because the Ethernet device on that board is
* always physically present.
*/
[-- Attachment #2: smime.p7s --]
[-- Type: application/pkcs7-signature, Size: 5965 bytes --]
^ permalink raw reply [flat|nested] 105+ messages in thread
* Re: [PATCH v3 27/46] hw/arm/highbank: use qemu_create_nic_device()
2024-01-08 20:26 ` [PATCH v3 27/46] hw/arm/highbank: use qemu_create_nic_device() David Woodhouse
@ 2024-01-26 15:48 ` Thomas Huth
0 siblings, 0 replies; 105+ messages in thread
From: Thomas Huth @ 2024-01-26 15:48 UTC (permalink / raw)
To: David Woodhouse, qemu-devel, Peter Maydell, Rob Herring
Cc: Richard Henderson, Jason Wang, qemu-arm, David Woodhouse
On 08/01/2024 21.26, David Woodhouse wrote:
> From: David Woodhouse <dwmw@amazon.co.uk>
>
> Signed-off-by: David Woodhouse <dwmw@amazon.co.uk>
> ---
> hw/arm/highbank.c | 12 +++++-------
> 1 file changed, 5 insertions(+), 7 deletions(-)
>
> diff --git a/hw/arm/highbank.c b/hw/arm/highbank.c
> index c21e18d08f..6a0e20e58d 100644
> --- a/hw/arm/highbank.c
> +++ b/hw/arm/highbank.c
> @@ -296,19 +296,17 @@ static void calxeda_init(MachineState *machine, enum cxmachines machine_id)
>
> sysbus_create_simple(TYPE_SYSBUS_AHCI, 0xffe08000, pic[83]);
>
> - if (nd_table[0].used) {
> - qemu_check_nic_model(&nd_table[0], "xgmac");
> - dev = qdev_new("xgmac");
> - qdev_set_nic_properties(dev, &nd_table[0]);
> + dev = qemu_create_nic_device("xgmac", true, NULL);
> + if (dev) {
> sysbus_realize_and_unref(SYS_BUS_DEVICE(dev), &error_fatal);
> sysbus_mmio_map(SYS_BUS_DEVICE(dev), 0, 0xfff50000);
> sysbus_connect_irq(SYS_BUS_DEVICE(dev), 0, pic[77]);
> sysbus_connect_irq(SYS_BUS_DEVICE(dev), 1, pic[78]);
> sysbus_connect_irq(SYS_BUS_DEVICE(dev), 2, pic[79]);
> + }
>
> - qemu_check_nic_model(&nd_table[1], "xgmac");
> - dev = qdev_new("xgmac");
> - qdev_set_nic_properties(dev, &nd_table[1]);
> + dev = qemu_create_nic_device("xgmac", true, NULL);
> + if (dev) {
> sysbus_realize_and_unref(SYS_BUS_DEVICE(dev), &error_fatal);
> sysbus_mmio_map(SYS_BUS_DEVICE(dev), 0, 0xfff51000);
> sysbus_connect_irq(SYS_BUS_DEVICE(dev), 0, pic[80]);
Reviewed-by: Thomas Huth <thuth@redhat.com>
^ permalink raw reply [flat|nested] 105+ messages in thread
* Re: [PATCH v3 32/46] hw/m68k/mcf5208: use qemu_create_nic_device()
2024-01-08 20:27 ` [PATCH v3 32/46] hw/m68k/mcf5208: use qemu_create_nic_device() David Woodhouse
@ 2024-01-26 15:51 ` Thomas Huth
0 siblings, 0 replies; 105+ messages in thread
From: Thomas Huth @ 2024-01-26 15:51 UTC (permalink / raw)
To: David Woodhouse, qemu-devel
Cc: Richard Henderson, Beniamino Galvani, Peter Maydell,
Strahinja Jankovic, Niek Linnenbank, Cédric Le Goater,
Andrew Jeffery, Joel Stanley, Igor Mitsyanko,
Jean-Christophe Dubois, Andrey Smirnov,
Philippe Mathieu-Daudé, Rob Herring, Subbaraya Sundeep,
Jan Kiszka, Tyrone Ting, Hao Wu, Radoslaw Biernacki,
Leif Lindholm, Marcin Juszkiewicz, Edgar E. Iglesias,
Alistair Francis, Helge Deller, Paolo Bonzini, Eduardo Habkost,
Michael S. Tsirkin, Marcel Apfelbaum, Song Gao, Thomas Huth,
Laurent Vivier, Huacai Chen, Jiaxun Yang, Hervé Poussineau,
Aleksandar Rikalo, Aurelien Jarno, Jason Wang, Jia Liu,
Stafford Horne, Mark Cave-Ayland, Nicholas Piggin,
Daniel Henrique Barboza, David Gibson, Harsh Prateek Bora,
Bin Meng, Palmer Dabbelt, Weiwei Li, Liu Zhiwei, Halil Pasic,
Christian Borntraeger, Eric Farman, David Hildenbrand,
Ilya Leoshkevich, Yoshinori Sato, Magnus Damm, Artyom Tarasenko,
Stefano Stabellini, Anthony Perard, Paul Durrant, Max Filippov,
qemu-arm, qemu-ppc, qemu-riscv, qemu-s390x, xen-devel,
David Woodhouse
On 08/01/2024 21.27, David Woodhouse wrote:
> From: David Woodhouse <dwmw@amazon.co.uk>
>
> Signed-off-by: David Woodhouse <dwmw@amazon.co.uk>
> ---
> hw/m68k/mcf5208.c | 19 ++++++-------------
> 1 file changed, 6 insertions(+), 13 deletions(-)
>
> diff --git a/hw/m68k/mcf5208.c b/hw/m68k/mcf5208.c
> index d22d8536db..0cfb806c20 100644
> --- a/hw/m68k/mcf5208.c
> +++ b/hw/m68k/mcf5208.c
> @@ -206,16 +206,16 @@ static void mcf5208_sys_init(MemoryRegion *address_space, qemu_irq *pic)
> }
> }
>
> -static void mcf_fec_init(MemoryRegion *sysmem, NICInfo *nd, hwaddr base,
> - qemu_irq *irqs)
> +static void mcf_fec_init(MemoryRegion *sysmem, hwaddr base, qemu_irq *irqs)
> {
> DeviceState *dev;
> SysBusDevice *s;
> int i;
>
> - qemu_check_nic_model(nd, TYPE_MCF_FEC_NET);
> - dev = qdev_new(TYPE_MCF_FEC_NET);
> - qdev_set_nic_properties(dev, nd);
> + dev = qemu_create_nic_device(TYPE_MCF_FEC_NET, true, NULL);
> + if (!dev) {
> + return;
> + }
>
> s = SYS_BUS_DEVICE(dev);
> sysbus_realize_and_unref(s, &error_fatal);
> @@ -267,14 +267,7 @@ static void mcf5208evb_init(MachineState *machine)
>
> mcf5208_sys_init(address_space_mem, pic);
>
> - if (nb_nics > 1) {
> - error_report("Too many NICs");
> - exit(1);
> - }
I wonder whether we'd need a different mechanism to specify the maximum
amount of on-board NICs now... Anyway, we can also think of that later, so:
Reviewed-by: Thomas Huth <thuth@redhat.com>
^ permalink raw reply [flat|nested] 105+ messages in thread
* Re: [PATCH v3 34/46] hw/microblaze: use qemu_configure_nic_device()
2024-01-08 20:27 ` [PATCH v3 34/46] hw/microblaze: use qemu_configure_nic_device() David Woodhouse
@ 2024-01-26 15:57 ` Thomas Huth
0 siblings, 0 replies; 105+ messages in thread
From: Thomas Huth @ 2024-01-26 15:57 UTC (permalink / raw)
To: David Woodhouse, qemu-devel
Cc: Richard Henderson, Beniamino Galvani, Peter Maydell,
Strahinja Jankovic, Niek Linnenbank, Cédric Le Goater,
Andrew Jeffery, Joel Stanley, Igor Mitsyanko,
Jean-Christophe Dubois, Andrey Smirnov,
Philippe Mathieu-Daudé, Rob Herring, Subbaraya Sundeep,
Jan Kiszka, Tyrone Ting, Hao Wu, Radoslaw Biernacki,
Leif Lindholm, Marcin Juszkiewicz, Edgar E. Iglesias,
Alistair Francis, Helge Deller, Paolo Bonzini, Eduardo Habkost,
Michael S. Tsirkin, Marcel Apfelbaum, Song Gao, Thomas Huth,
Laurent Vivier, Huacai Chen, Jiaxun Yang, Hervé Poussineau,
Aleksandar Rikalo, Aurelien Jarno, Jason Wang, Jia Liu,
Stafford Horne, Mark Cave-Ayland, Nicholas Piggin,
Daniel Henrique Barboza, David Gibson, Harsh Prateek Bora,
Bin Meng, Palmer Dabbelt, Weiwei Li, Liu Zhiwei, Halil Pasic,
Christian Borntraeger, Eric Farman, David Hildenbrand,
Ilya Leoshkevich, Yoshinori Sato, Magnus Damm, Artyom Tarasenko,
Stefano Stabellini, Anthony Perard, Paul Durrant, Max Filippov,
qemu-arm, qemu-ppc, qemu-riscv, qemu-s390x, xen-devel,
David Woodhouse
On 08/01/2024 21.27, David Woodhouse wrote:
> From: David Woodhouse <dwmw@amazon.co.uk>
>
> Signed-off-by: David Woodhouse <dwmw@amazon.co.uk>
> ---
> hw/microblaze/petalogix_ml605_mmu.c | 3 +--
> hw/microblaze/petalogix_s3adsp1800_mmu.c | 3 +--
> 2 files changed, 2 insertions(+), 4 deletions(-)
>
> diff --git a/hw/microblaze/petalogix_ml605_mmu.c b/hw/microblaze/petalogix_ml605_mmu.c
> index fb7889cf67..0f5fabc32e 100644
> --- a/hw/microblaze/petalogix_ml605_mmu.c
> +++ b/hw/microblaze/petalogix_ml605_mmu.c
> @@ -133,7 +133,6 @@ petalogix_ml605_init(MachineState *machine)
> sysbus_connect_irq(SYS_BUS_DEVICE(dev), 0, irq[TIMER_IRQ]);
>
> /* axi ethernet and dma initialization. */
> - qemu_check_nic_model(&nd_table[0], "xlnx.axi-ethernet");
> eth0 = qdev_new("xlnx.axi-ethernet");
> dma = qdev_new("xlnx.axi-dma");
>
> @@ -145,7 +144,7 @@ petalogix_ml605_init(MachineState *machine)
> "axistream-connected-target", NULL);
> cs = object_property_get_link(OBJECT(dma),
> "axistream-control-connected-target", NULL);
> - qdev_set_nic_properties(eth0, &nd_table[0]);
> + qemu_configure_nic_device(eth0, true, NULL);
> qdev_prop_set_uint32(eth0, "rxmem", 0x1000);
> qdev_prop_set_uint32(eth0, "txmem", 0x1000);
> object_property_set_link(OBJECT(eth0), "axistream-connected", ds,
> diff --git a/hw/microblaze/petalogix_s3adsp1800_mmu.c b/hw/microblaze/petalogix_s3adsp1800_mmu.c
> index 505639c298..dad46bd7f9 100644
> --- a/hw/microblaze/petalogix_s3adsp1800_mmu.c
> +++ b/hw/microblaze/petalogix_s3adsp1800_mmu.c
> @@ -114,9 +114,8 @@ petalogix_s3adsp1800_init(MachineState *machine)
> sysbus_mmio_map(SYS_BUS_DEVICE(dev), 0, TIMER_BASEADDR);
> sysbus_connect_irq(SYS_BUS_DEVICE(dev), 0, irq[TIMER_IRQ]);
>
> - qemu_check_nic_model(&nd_table[0], "xlnx.xps-ethernetlite");
> dev = qdev_new("xlnx.xps-ethernetlite");
> - qdev_set_nic_properties(dev, &nd_table[0]);
> + qemu_configure_nic_device(dev, true, NULL);
> qdev_prop_set_uint32(dev, "tx-ping-pong", 0);
> qdev_prop_set_uint32(dev, "rx-ping-pong", 0);
> sysbus_realize_and_unref(SYS_BUS_DEVICE(dev), &error_fatal);
Reviewed-by: Thomas Huth <thuth@redhat.com>
^ permalink raw reply [flat|nested] 105+ messages in thread
* Re: [PATCH v3 43/46] net: remove qemu_check_nic_model()
2024-01-08 20:27 ` [PATCH v3 43/46] net: remove qemu_check_nic_model() David Woodhouse
@ 2024-01-26 16:01 ` Thomas Huth
0 siblings, 0 replies; 105+ messages in thread
From: Thomas Huth @ 2024-01-26 16:01 UTC (permalink / raw)
To: David Woodhouse, qemu-devel
Cc: Richard Henderson, Beniamino Galvani, Peter Maydell,
Strahinja Jankovic, Niek Linnenbank, Cédric Le Goater,
Andrew Jeffery, Joel Stanley, Igor Mitsyanko,
Jean-Christophe Dubois, Andrey Smirnov,
Philippe Mathieu-Daudé, Rob Herring, Subbaraya Sundeep,
Jan Kiszka, Tyrone Ting, Hao Wu, Radoslaw Biernacki,
Leif Lindholm, Marcin Juszkiewicz, Edgar E. Iglesias,
Alistair Francis, Helge Deller, Paolo Bonzini, Eduardo Habkost,
Michael S. Tsirkin, Marcel Apfelbaum, Song Gao, Thomas Huth,
Laurent Vivier, Huacai Chen, Jiaxun Yang, Hervé Poussineau,
Aleksandar Rikalo, Aurelien Jarno, Jason Wang, Jia Liu,
Stafford Horne, Mark Cave-Ayland, Nicholas Piggin,
Daniel Henrique Barboza, David Gibson, Harsh Prateek Bora,
Bin Meng, Palmer Dabbelt, Weiwei Li, Liu Zhiwei, Halil Pasic,
Christian Borntraeger, Eric Farman, David Hildenbrand,
Ilya Leoshkevich, Yoshinori Sato, Magnus Damm, Artyom Tarasenko,
Stefano Stabellini, Anthony Perard, Paul Durrant, Max Filippov,
qemu-arm, qemu-ppc, qemu-riscv, qemu-s390x, xen-devel,
David Woodhouse
On 08/01/2024 21.27, David Woodhouse wrote:
> From: David Woodhouse <dwmw@amazon.co.uk>
Please add a short patch description à la "All callers have been converted
in the previous patches, so this is not required anymore".
With that:
Reviewed-by: Thomas Huth <thuth@redhat.com>
> Signed-off-by: David Woodhouse <dwmw@amazon.co.uk>
> ---
> include/net/net.h | 1 -
> net/net.c | 13 -------------
> 2 files changed, 14 deletions(-)
>
> diff --git a/include/net/net.h b/include/net/net.h
> index 31e63d1f0d..1be8b40074 100644
> --- a/include/net/net.h
> +++ b/include/net/net.h
> @@ -204,7 +204,6 @@ int qemu_set_vnet_le(NetClientState *nc, bool is_le);
> int qemu_set_vnet_be(NetClientState *nc, bool is_be);
> void qemu_macaddr_default_if_unset(MACAddr *macaddr);
> int qemu_show_nic_models(const char *arg, const char *const *models);
> -void qemu_check_nic_model(NICInfo *nd, const char *model);
> int qemu_find_nic_model(NICInfo *nd, const char * const *models,
> const char *default_model);
> NICInfo *qemu_find_nic_info(const char *typename, bool match_default,
> diff --git a/net/net.c b/net/net.c
> index 4651b3f443..ffd4b42d5a 100644
> --- a/net/net.c
> +++ b/net/net.c
> @@ -992,19 +992,6 @@ int qemu_show_nic_models(const char *arg, const char *const *models)
> return 1;
> }
>
> -void qemu_check_nic_model(NICInfo *nd, const char *model)
> -{
> - const char *models[2];
> -
> - models[0] = model;
> - models[1] = NULL;
> -
> - if (qemu_show_nic_models(nd->model, models))
> - exit(0);
> - if (qemu_find_nic_model(nd, models, model) < 0)
> - exit(1);
> -}
> -
> int qemu_find_nic_model(NICInfo *nd, const char * const *models,
> const char *default_model)
> {
^ permalink raw reply [flat|nested] 105+ messages in thread
* Re: [PATCH v3 44/46] hw/pci: remove pci_nic_init_nofail()
2024-01-08 20:27 ` [PATCH v3 44/46] hw/pci: remove pci_nic_init_nofail() David Woodhouse
@ 2024-01-26 16:03 ` Thomas Huth
0 siblings, 0 replies; 105+ messages in thread
From: Thomas Huth @ 2024-01-26 16:03 UTC (permalink / raw)
To: David Woodhouse, qemu-devel
Cc: Richard Henderson, Beniamino Galvani, Peter Maydell,
Strahinja Jankovic, Niek Linnenbank, Cédric Le Goater,
Andrew Jeffery, Joel Stanley, Igor Mitsyanko,
Jean-Christophe Dubois, Andrey Smirnov,
Philippe Mathieu-Daudé, Rob Herring, Subbaraya Sundeep,
Jan Kiszka, Tyrone Ting, Hao Wu, Radoslaw Biernacki,
Leif Lindholm, Marcin Juszkiewicz, Edgar E. Iglesias,
Alistair Francis, Helge Deller, Paolo Bonzini, Eduardo Habkost,
Michael S. Tsirkin, Marcel Apfelbaum, Song Gao, Thomas Huth,
Laurent Vivier, Huacai Chen, Jiaxun Yang, Hervé Poussineau,
Aleksandar Rikalo, Aurelien Jarno, Jason Wang, Jia Liu,
Stafford Horne, Mark Cave-Ayland, Nicholas Piggin,
Daniel Henrique Barboza, David Gibson, Harsh Prateek Bora,
Bin Meng, Palmer Dabbelt, Weiwei Li, Liu Zhiwei, Halil Pasic,
Christian Borntraeger, Eric Farman, David Hildenbrand,
Ilya Leoshkevich, Yoshinori Sato, Magnus Damm, Artyom Tarasenko,
Stefano Stabellini, Anthony Perard, Paul Durrant, Max Filippov,
qemu-arm, qemu-ppc, qemu-riscv, qemu-s390x, xen-devel,
David Woodhouse
On 08/01/2024 21.27, David Woodhouse wrote:
> From: David Woodhouse <dwmw@amazon.co.uk>
>
> This function is no longer used.
>
> Signed-off-by: David Woodhouse <dwmw@amazon.co.uk>
> ---
> hw/pci/pci.c | 72 --------------------------------------------
> include/hw/pci/pci.h | 3 --
> 2 files changed, 75 deletions(-)
Reviewed-by: Thomas Huth <thuth@redhat.com>
^ permalink raw reply [flat|nested] 105+ messages in thread
* Re: [PATCH v3 46/46] net: make nb_nics and nd_table[] static in net/net.c
2024-01-08 20:27 ` [PATCH v3 46/46] net: make nb_nics and nd_table[] static in net/net.c David Woodhouse
@ 2024-01-26 16:08 ` Thomas Huth
0 siblings, 0 replies; 105+ messages in thread
From: Thomas Huth @ 2024-01-26 16:08 UTC (permalink / raw)
To: David Woodhouse, qemu-devel
Cc: Richard Henderson, Beniamino Galvani, Peter Maydell,
Strahinja Jankovic, Niek Linnenbank, Cédric Le Goater,
Andrew Jeffery, Joel Stanley, Igor Mitsyanko,
Jean-Christophe Dubois, Andrey Smirnov,
Philippe Mathieu-Daudé, Rob Herring, Subbaraya Sundeep,
Jan Kiszka, Tyrone Ting, Hao Wu, Radoslaw Biernacki,
Leif Lindholm, Marcin Juszkiewicz, Edgar E. Iglesias,
Alistair Francis, Helge Deller, Paolo Bonzini, Eduardo Habkost,
Michael S. Tsirkin, Marcel Apfelbaum, Song Gao, Thomas Huth,
Laurent Vivier, Huacai Chen, Jiaxun Yang, Hervé Poussineau,
Aleksandar Rikalo, Aurelien Jarno, Jason Wang, Jia Liu,
Stafford Horne, Mark Cave-Ayland, Nicholas Piggin,
Daniel Henrique Barboza, David Gibson, Harsh Prateek Bora,
Bin Meng, Palmer Dabbelt, Weiwei Li, Liu Zhiwei, Halil Pasic,
Christian Borntraeger, Eric Farman, David Hildenbrand,
Ilya Leoshkevich, Yoshinori Sato, Magnus Damm, Artyom Tarasenko,
Stefano Stabellini, Anthony Perard, Paul Durrant, Max Filippov,
qemu-arm, qemu-ppc, qemu-riscv, qemu-s390x, xen-devel,
David Woodhouse
On 08/01/2024 21.27, David Woodhouse wrote:
> From: David Woodhouse <dwmw@amazon.co.uk>
Please add: "Also remove the leftover definition of host_net_devices which
has been forgotten to be removed in commit 7cc28cb061040cb089." (or so)
With that:
Reviewed-by: Thomas Huth <thuth@redhat.com>
> Signed-off-by: David Woodhouse <dwmw@amazon.co.uk>
> ---
> include/net/net.h | 4 ----
> net/net.c | 3 +++
> system/globals.c | 2 --
> 3 files changed, 3 insertions(+), 6 deletions(-)
>
> diff --git a/include/net/net.h b/include/net/net.h
> index 19fb82833c..766201c62c 100644
> --- a/include/net/net.h
> +++ b/include/net/net.h
> @@ -247,10 +247,6 @@ struct NICInfo {
> int nvectors;
> };
>
> -extern int nb_nics;
> -extern NICInfo nd_table[MAX_NICS];
> -extern const char *host_net_devices[];
> -
> /* from net.c */
> extern NetClientStateList net_clients;
> bool netdev_is_modern(const char *optstr);
> diff --git a/net/net.c b/net/net.c
> index 09ab0889f5..71cccb19da 100644
> --- a/net/net.c
> +++ b/net/net.c
> @@ -77,6 +77,9 @@ static NetdevQueue nd_queue = QSIMPLEQ_HEAD_INITIALIZER(nd_queue);
>
> static GHashTable *nic_model_help;
>
> +static int nb_nics;
> +static NICInfo nd_table[MAX_NICS];
> +
> /***********************************************************/
> /* network device redirectors */
>
> diff --git a/system/globals.c b/system/globals.c
> index e83b5428d1..b6d4e72530 100644
> --- a/system/globals.c
> +++ b/system/globals.c
> @@ -36,8 +36,6 @@ int display_opengl;
> const char* keyboard_layout;
> bool enable_mlock;
> bool enable_cpu_pm;
> -int nb_nics;
> -NICInfo nd_table[MAX_NICS];
> int autostart = 1;
> int vga_interface_type = VGA_NONE;
> bool vga_interface_created;
^ permalink raw reply [flat|nested] 105+ messages in thread
* Re: [PATCH v3 35/46] hw/mips/mipssim: use qemu_create_nic_device()
2024-01-08 20:27 ` [PATCH v3 35/46] hw/mips/mipssim: use qemu_create_nic_device() David Woodhouse
@ 2024-01-26 16:20 ` Thomas Huth
0 siblings, 0 replies; 105+ messages in thread
From: Thomas Huth @ 2024-01-26 16:20 UTC (permalink / raw)
To: David Woodhouse, qemu-devel, Philippe Mathieu-Daudé
Cc: Richard Henderson, Beniamino Galvani, Peter Maydell,
Strahinja Jankovic, Niek Linnenbank, Cédric Le Goater,
Andrew Jeffery, Joel Stanley, Igor Mitsyanko,
Jean-Christophe Dubois, Andrey Smirnov, Rob Herring,
Subbaraya Sundeep, Jan Kiszka, Tyrone Ting, Hao Wu,
Radoslaw Biernacki, Leif Lindholm, Marcin Juszkiewicz,
Edgar E. Iglesias, Alistair Francis, Helge Deller, Paolo Bonzini,
Eduardo Habkost, Michael S. Tsirkin, Marcel Apfelbaum, Song Gao,
Thomas Huth, Laurent Vivier, Huacai Chen, Jiaxun Yang,
Hervé Poussineau, Aleksandar Rikalo, Aurelien Jarno,
Jason Wang, Jia Liu, Stafford Horne, Mark Cave-Ayland,
Nicholas Piggin, Daniel Henrique Barboza, David Gibson,
Harsh Prateek Bora, Bin Meng, Palmer Dabbelt, Weiwei Li,
Liu Zhiwei, Halil Pasic, Christian Borntraeger, Eric Farman,
David Hildenbrand, Ilya Leoshkevich, Yoshinori Sato, Magnus Damm,
Artyom Tarasenko, Stefano Stabellini, Anthony Perard,
Paul Durrant, Max Filippov, qemu-arm, qemu-ppc, qemu-riscv,
qemu-s390x, xen-devel, David Woodhouse
On 08/01/2024 21.27, David Woodhouse wrote:
> From: David Woodhouse <dwmw@amazon.co.uk>
>
> The MIPS SIM platform instantiates its NIC only if a corresponding
> configuration exists for it. Use qemu_create_nic_device() function for
> that.
>
> Signed-off-by: David Woodhouse <dwmw@amazon.co.uk>
> ---
> hw/mips/mipssim.c | 13 +++++++------
> 1 file changed, 7 insertions(+), 6 deletions(-)
>
> diff --git a/hw/mips/mipssim.c b/hw/mips/mipssim.c
> index 01e323904d..16af31648e 100644
> --- a/hw/mips/mipssim.c
> +++ b/hw/mips/mipssim.c
> @@ -118,13 +118,15 @@ static void main_cpu_reset(void *opaque)
> }
> }
>
> -static void mipsnet_init(int base, qemu_irq irq, NICInfo *nd)
> +static void mipsnet_init(int base, qemu_irq irq)
> {
> DeviceState *dev;
> SysBusDevice *s;
>
> - dev = qdev_new("mipsnet");
> - qdev_set_nic_properties(dev, nd);
> + dev = qemu_create_nic_device("mipsnet", true, NULL);
> + if (!dev) {
> + return;
> + }
>
> s = SYS_BUS_DEVICE(dev);
> sysbus_realize_and_unref(s, &error_fatal);
> @@ -225,9 +227,8 @@ mips_mipssim_init(MachineState *machine)
> sysbus_mmio_get_region(SYS_BUS_DEVICE(dev), 0));
> }
>
> - if (nd_table[0].used)
> - /* MIPSnet uses the MIPS CPU INT0, which is interrupt 2. */
> - mipsnet_init(0x4200, env->irq[2], &nd_table[0]);
> + /* MIPSnet uses the MIPS CPU INT0, which is interrupt 2. */
> + mipsnet_init(0x4200, env->irq[2]);
> }
>
> static void mips_mipssim_machine_init(MachineClass *mc)
Reviewed-by: Thomas Huth <thuth@redhat.com>
^ permalink raw reply [flat|nested] 105+ messages in thread
* Re: [PATCH v3 31/46] hw/net/etraxfs-eth: use qemu_configure_nic_device()
2024-01-08 20:27 ` [PATCH v3 31/46] hw/net/etraxfs-eth: " David Woodhouse
@ 2024-01-26 16:23 ` Thomas Huth
0 siblings, 0 replies; 105+ messages in thread
From: Thomas Huth @ 2024-01-26 16:23 UTC (permalink / raw)
To: David Woodhouse, qemu-devel, Edgar E. Iglesias
Cc: Richard Henderson, Beniamino Galvani, Peter Maydell,
Strahinja Jankovic, Niek Linnenbank, Cédric Le Goater,
Andrew Jeffery, Joel Stanley, Igor Mitsyanko,
Jean-Christophe Dubois, Andrey Smirnov,
Philippe Mathieu-Daudé, Rob Herring, Subbaraya Sundeep,
Jan Kiszka, Tyrone Ting, Hao Wu, Radoslaw Biernacki,
Leif Lindholm, Marcin Juszkiewicz, Alistair Francis, Helge Deller,
Paolo Bonzini, Eduardo Habkost, Michael S. Tsirkin,
Marcel Apfelbaum, Song Gao, Thomas Huth, Laurent Vivier,
Huacai Chen, Jiaxun Yang, Hervé Poussineau,
Aleksandar Rikalo, Aurelien Jarno, Jason Wang, Jia Liu,
Stafford Horne, Mark Cave-Ayland, Nicholas Piggin,
Daniel Henrique Barboza, David Gibson, Harsh Prateek Bora,
Bin Meng, Palmer Dabbelt, Weiwei Li, Liu Zhiwei, Halil Pasic,
Christian Borntraeger, Eric Farman, David Hildenbrand,
Magnus Damm, Artyom Tarasenko, Stefano Stabellini, Anthony Perard,
Paul Durrant, Max Filippov, David Woodhouse
On 08/01/2024 21.27, David Woodhouse wrote:
> From: David Woodhouse <dwmw@amazon.co.uk>
>
> Signed-off-by: David Woodhouse <dwmw@amazon.co.uk>
> ---
> hw/cris/axis_dev88.c | 9 ++++-----
> hw/net/etraxfs_eth.c | 5 ++---
> include/hw/cris/etraxfs.h | 2 +-
> 3 files changed, 7 insertions(+), 9 deletions(-)
>
> diff --git a/hw/cris/axis_dev88.c b/hw/cris/axis_dev88.c
> index d82050d927..5556634921 100644
> --- a/hw/cris/axis_dev88.c
> +++ b/hw/cris/axis_dev88.c
> @@ -308,15 +308,14 @@ void axisdev88_init(MachineState *machine)
>
> /* Add the two ethernet blocks. */
> dma_eth = g_malloc0(sizeof dma_eth[0] * 4); /* Allocate 4 channels. */
> - etraxfs_eth_init(&nd_table[0], 0x30034000, 1, &dma_eth[0], &dma_eth[1]);
> - if (nb_nics > 1) {
> - etraxfs_eth_init(&nd_table[1], 0x30036000, 2, &dma_eth[2], &dma_eth[3]);
> - }
>
> + etraxfs_eth_init(0x30034000, 1, &dma_eth[0], &dma_eth[1]);
> /* The DMA Connector block is missing, hardwire things for now. */
> etraxfs_dmac_connect_client(etraxfs_dmac, 0, &dma_eth[0]);
> etraxfs_dmac_connect_client(etraxfs_dmac, 1, &dma_eth[1]);
> - if (nb_nics > 1) {
> +
> + if (qemu_find_nic_info("etraxfs-eth", true, "fseth")) {
> + etraxfs_eth_init(0x30036000, 2, &dma_eth[2], &dma_eth[3]);
> etraxfs_dmac_connect_client(etraxfs_dmac, 6, &dma_eth[2]);
> etraxfs_dmac_connect_client(etraxfs_dmac, 7, &dma_eth[3]);
> }
> diff --git a/hw/net/etraxfs_eth.c b/hw/net/etraxfs_eth.c
> index ba57a978d1..5faf20c782 100644
> --- a/hw/net/etraxfs_eth.c
> +++ b/hw/net/etraxfs_eth.c
> @@ -647,15 +647,14 @@ static void etraxfs_eth_class_init(ObjectClass *klass, void *data)
>
> /* Instantiate an ETRAXFS Ethernet MAC. */
> DeviceState *
> -etraxfs_eth_init(NICInfo *nd, hwaddr base, int phyaddr,
> +etraxfs_eth_init(hwaddr base, int phyaddr,
> struct etraxfs_dma_client *dma_out,
> struct etraxfs_dma_client *dma_in)
> {
> DeviceState *dev;
> - qemu_check_nic_model(nd, "fseth");
>
> dev = qdev_new("etraxfs-eth");
> - qdev_set_nic_properties(dev, nd);
> + qemu_configure_nic_device(dev, true, "fseth");
> qdev_prop_set_uint32(dev, "phyaddr", phyaddr);
>
> /*
> diff --git a/include/hw/cris/etraxfs.h b/include/hw/cris/etraxfs.h
> index 467b529dc0..012c4e9974 100644
> --- a/include/hw/cris/etraxfs.h
> +++ b/include/hw/cris/etraxfs.h
> @@ -31,7 +31,7 @@
> #include "hw/sysbus.h"
> #include "qapi/error.h"
>
> -DeviceState *etraxfs_eth_init(NICInfo *nd, hwaddr base, int phyaddr,
> +DeviceState *etraxfs_eth_init(hwaddr base, int phyaddr,
> struct etraxfs_dma_client *dma_out,
> struct etraxfs_dma_client *dma_in);
>
Reviewed-by: Thomas Huth <thuth@redhat.com>
^ permalink raw reply [flat|nested] 105+ messages in thread
* Re: [PATCH v3 36/46] hw/mips/jazz: use qemu_find_nic_info()
2024-01-08 20:27 ` [PATCH v3 36/46] hw/mips/jazz: use qemu_find_nic_info() David Woodhouse
@ 2024-01-26 16:29 ` Thomas Huth
2024-01-26 16:38 ` David Woodhouse
0 siblings, 1 reply; 105+ messages in thread
From: Thomas Huth @ 2024-01-26 16:29 UTC (permalink / raw)
To: David Woodhouse, qemu-devel, Philippe Mathieu-Daudé
Cc: Richard Henderson, Beniamino Galvani, Peter Maydell,
Strahinja Jankovic, Niek Linnenbank, Cédric Le Goater,
Andrew Jeffery, Edgar E. Iglesias, Alistair Francis, Helge Deller,
Paolo Bonzini, Eduardo Habkost, Michael S. Tsirkin,
Marcel Apfelbaum, Song Gao, Huacai Chen, Jiaxun Yang,
Hervé Poussineau, Aleksandar Rikalo, Aurelien Jarno,
Jason Wang, Jia Liu, Stafford Horne, Mark Cave-Ayland,
Nicholas Piggin, Daniel Henrique Barboza, David Gibson,
Harsh Prateek Bora, Bin Meng, Palmer Dabbelt, Weiwei Li,
Liu Zhiwei, Halil Pasic, Christian Borntraeger, Eric Farman,
David Hildenbrand, Ilya Leoshkevich, Yoshinori Sato,
David Woodhouse
On 08/01/2024 21.27, David Woodhouse wrote:
> From: David Woodhouse <dwmw@amazon.co.uk>
>
> Extract the MAC address from the NICInfo, or generate one explicitly if
> there was no corresponding NIC configuration, to put it in the PROM.
Uh, I don't see any MAC handling in the patch below? Is this the right
comment for this patch?
Thomas
> Signed-off-by: David Woodhouse <dwmw@amazon.co.uk>
> ---
> hw/mips/jazz.c | 15 +++++++--------
> 1 file changed, 7 insertions(+), 8 deletions(-)
>
> diff --git a/hw/mips/jazz.c b/hw/mips/jazz.c
> index 0d2348aa5a..5bf3e328db 100644
> --- a/hw/mips/jazz.c
> +++ b/hw/mips/jazz.c
> @@ -119,15 +119,19 @@ static const MemoryRegionOps dma_dummy_ops = {
> .endianness = DEVICE_NATIVE_ENDIAN,
> };
>
> -static void mips_jazz_init_net(NICInfo *nd, IOMMUMemoryRegion *rc4030_dma_mr,
> +static void mips_jazz_init_net(IOMMUMemoryRegion *rc4030_dma_mr,
> DeviceState *rc4030, MemoryRegion *dp8393x_prom)
> {
> DeviceState *dev;
> SysBusDevice *sysbus;
> int checksum, i;
> uint8_t *prom;
> + NICInfo *nd;
>
> - qemu_check_nic_model(nd, "dp83932");
> + nd = qemu_find_nic_info("dp8393x", true, "dp82932");
> + if (!nd) {
> + return;
> + }
>
> dev = qdev_new("dp8393x");
> qdev_set_nic_properties(dev, nd);
> @@ -324,12 +328,7 @@ static void mips_jazz_init(MachineState *machine,
> }
>
> /* Network controller */
> - if (nb_nics == 1) {
> - mips_jazz_init_net(&nd_table[0], rc4030_dma_mr, rc4030, dp8393x_prom);
> - } else if (nb_nics > 1) {
> - error_report("This machine only supports one NIC");
> - exit(1);
> - }
> + mips_jazz_init_net(rc4030_dma_mr, rc4030, dp8393x_prom);
>
> /* SCSI adapter */
> dev = qdev_new(TYPE_SYSBUS_ESP);
^ permalink raw reply [flat|nested] 105+ messages in thread
* Re: [PATCH v3 37/46] hw/net/lasi_i82596: use qemu_configure_nic_device()
2024-01-08 20:27 ` [PATCH v3 37/46] hw/net/lasi_i82596: use qemu_configure_nic_device() David Woodhouse
@ 2024-01-26 16:30 ` Thomas Huth
0 siblings, 0 replies; 105+ messages in thread
From: Thomas Huth @ 2024-01-26 16:30 UTC (permalink / raw)
To: David Woodhouse, qemu-devel
Cc: Richard Henderson, Beniamino Galvani, Peter Maydell,
Strahinja Jankovic, Niek Linnenbank, Cédric Le Goater,
Andrew Jeffery, Joel Stanley, Igor Mitsyanko,
Jean-Christophe Dubois, Andrey Smirnov,
Philippe Mathieu-Daudé, Rob Herring, Subbaraya Sundeep,
Jan Kiszka, Tyrone Ting, Hao Wu, Radoslaw Biernacki,
Leif Lindholm, Marcin Juszkiewicz, Edgar E. Iglesias,
Alistair Francis, Helge Deller, Paolo Bonzini, Eduardo Habkost,
Michael S. Tsirkin, Marcel Apfelbaum, Song Gao, Thomas Huth,
Laurent Vivier, Huacai Chen, Jiaxun Yang, Hervé Poussineau,
Aleksandar Rikalo, Aurelien Jarno, Jason Wang, Jia Liu,
Stafford Horne, Mark Cave-Ayland, Nicholas Piggin,
Daniel Henrique Barboza, David Gibson, Harsh Prateek Bora,
Bin Meng, Palmer Dabbelt, Weiwei Li, Liu Zhiwei, Halil Pasic,
Christian Borntraeger, Eric Farman, David Hildenbrand,
Ilya Leoshkevich, Yoshinori Sato, Magnus Damm, Artyom Tarasenko,
Stefano Stabellini, Anthony Perard, Paul Durrant, Max Filippov,
qemu-arm, qemu-ppc, David Woodhouse
On 08/01/2024 21.27, David Woodhouse wrote:
> From: David Woodhouse <dwmw@amazon.co.uk>
>
> Signed-off-by: David Woodhouse <dwmw@amazon.co.uk>
> ---
> hw/net/lasi_i82596.c | 3 +--
> 1 file changed, 1 insertion(+), 2 deletions(-)
>
> diff --git a/hw/net/lasi_i82596.c b/hw/net/lasi_i82596.c
> index 6a3147fe2d..2bb4f2c4ca 100644
> --- a/hw/net/lasi_i82596.c
> +++ b/hw/net/lasi_i82596.c
> @@ -125,11 +125,10 @@ SysBusI82596State *lasi_82596_init(MemoryRegion *addr_space,
> static const MACAddr HP_MAC = {
> .a = { 0x08, 0x00, 0x09, 0xef, 0x34, 0xf6 } };
>
> - qemu_check_nic_model(&nd_table[0], TYPE_LASI_82596);
> dev = qdev_new(TYPE_LASI_82596);
> s = SYSBUS_I82596(dev);
> s->state.irq = lan_irq;
> - qdev_set_nic_properties(dev, &nd_table[0]);
> + qemu_configure_nic_device(dev, true, NULL);
> sysbus_realize_and_unref(SYS_BUS_DEVICE(dev), &error_fatal);
> s->state.conf.macaddr = HP_MAC; /* set HP MAC prefix */
Reviewed-by: Thomas Huth <thuth@redhat.com>
^ permalink raw reply [flat|nested] 105+ messages in thread
* Re: [PATCH v3 38/46] hw/openrisc/openrisc_sim: use qemu_create_nic_device()
2024-01-08 20:27 ` [PATCH v3 38/46] hw/openrisc/openrisc_sim: use qemu_create_nic_device() David Woodhouse
@ 2024-01-26 16:34 ` Thomas Huth
0 siblings, 0 replies; 105+ messages in thread
From: Thomas Huth @ 2024-01-26 16:34 UTC (permalink / raw)
To: David Woodhouse, qemu-devel
Cc: Peter Maydell, Strahinja Jankovic, Niek Linnenbank,
Cédric Le Goater, Andrew Jeffery, Joel Stanley,
Igor Mitsyanko, Jean-Christophe Dubois, Andrey Smirnov,
Philippe Mathieu-Daudé, Rob Herring, Subbaraya Sundeep,
Jan Kiszka, Tyrone Ting, Hao Wu, Radoslaw Biernacki,
Leif Lindholm, Marcin Juszkiewicz, Edgar E. Iglesias,
Alistair Francis, Helge Deller, Paolo Bonzini, Eduardo Habkost,
Michael S. Tsirkin, Marcel Apfelbaum, Song Gao,
Hervé Poussineau, Aleksandar Rikalo, Aurelien Jarno,
Jason Wang, Jia Liu, Stafford Horne, Mark Cave-Ayland,
Nicholas Piggin, Daniel Henrique Barboza, David Gibson,
Harsh Prateek Bora, Bin Meng, Palmer Dabbelt, Weiwei Li,
Liu Zhiwei, Halil Pasic, Christian Borntraeger, Eric Farman,
David Hildenbrand, Ilya Leoshkevich, Yoshinori Sato, Magnus Damm,
Artyom Tarasenko, Stefano Stabellini, Anthony Perard,
Paul Durrant, David Woodhouse
On 08/01/2024 21.27, David Woodhouse wrote:
> From: David Woodhouse <dwmw@amazon.co.uk>
>
> Signed-off-by: David Woodhouse <dwmw@amazon.co.uk>
> ---
> hw/openrisc/openrisc_sim.c | 18 +++++++++---------
> 1 file changed, 9 insertions(+), 9 deletions(-)
>
> diff --git a/hw/openrisc/openrisc_sim.c b/hw/openrisc/openrisc_sim.c
> index 35da123aef..bffd6f721f 100644
> --- a/hw/openrisc/openrisc_sim.c
> +++ b/hw/openrisc/openrisc_sim.c
> @@ -170,7 +170,7 @@ static void openrisc_create_fdt(Or1ksimState *state,
>
> static void openrisc_sim_net_init(Or1ksimState *state, hwaddr base, hwaddr size,
> int num_cpus, OpenRISCCPU *cpus[],
> - int irq_pin, NICInfo *nd)
> + int irq_pin)
> {
> void *fdt = state->fdt;
> DeviceState *dev;
> @@ -178,8 +178,10 @@ static void openrisc_sim_net_init(Or1ksimState *state, hwaddr base, hwaddr size,
> char *nodename;
> int i;
>
> - dev = qdev_new("open_eth");
> - qdev_set_nic_properties(dev, nd);
> + dev = qemu_create_nic_device("open_eth", true, NULL);
> + if (!dev) {
> + return;
> + }
>
> s = SYS_BUS_DEVICE(dev);
> sysbus_realize_and_unref(s, &error_fatal);
> @@ -313,12 +315,10 @@ static void openrisc_sim_init(MachineState *machine)
> openrisc_create_fdt(state, or1ksim_memmap, smp_cpus, machine->ram_size,
> machine->kernel_cmdline);
>
> - if (nd_table[0].used) {
> - openrisc_sim_net_init(state, or1ksim_memmap[OR1KSIM_ETHOC].base,
> - or1ksim_memmap[OR1KSIM_ETHOC].size,
> - smp_cpus, cpus,
> - OR1KSIM_ETHOC_IRQ, nd_table);
> - }
> + openrisc_sim_net_init(state, or1ksim_memmap[OR1KSIM_ETHOC].base,
> + or1ksim_memmap[OR1KSIM_ETHOC].size,
> + smp_cpus, cpus,
> + OR1KSIM_ETHOC_IRQ);
>
> if (smp_cpus > 1) {
> openrisc_sim_ompic_init(state, or1ksim_memmap[OR1KSIM_OMPIC].base,
Reviewed-by: Thomas Huth <thuth@redhat.com>
^ permalink raw reply [flat|nested] 105+ messages in thread
* Re: [PATCH v3 39/46] hw/riscv: use qemu_configure_nic_device()
2024-01-08 20:27 ` [PATCH v3 39/46] hw/riscv: use qemu_configure_nic_device() David Woodhouse
@ 2024-01-26 16:36 ` Thomas Huth
0 siblings, 0 replies; 105+ messages in thread
From: Thomas Huth @ 2024-01-26 16:36 UTC (permalink / raw)
To: David Woodhouse, qemu-devel, qemu-riscv
Cc: Peter Maydell, Jiaxun Yang, Hervé Poussineau,
Aleksandar Rikalo, Aurelien Jarno, Jason Wang, Jia Liu,
Stafford Horne, Daniel Henrique Barboza, Bin Meng, Palmer Dabbelt,
Weiwei Li, Liu Zhiwei, Artyom Tarasenko, Stefano Stabellini,
David Woodhouse
On 08/01/2024 21.27, David Woodhouse wrote:
> From: David Woodhouse <dwmw@amazon.co.uk>
>
> Signed-off-by: David Woodhouse <dwmw@amazon.co.uk>
> ---
> hw/riscv/microchip_pfsoc.c | 14 ++------------
> hw/riscv/sifive_u.c | 7 +------
> 2 files changed, 3 insertions(+), 18 deletions(-)
>
> diff --git a/hw/riscv/microchip_pfsoc.c b/hw/riscv/microchip_pfsoc.c
> index b775aa8946..7725dfbde5 100644
> --- a/hw/riscv/microchip_pfsoc.c
> +++ b/hw/riscv/microchip_pfsoc.c
> @@ -202,7 +202,6 @@ static void microchip_pfsoc_soc_realize(DeviceState *dev, Error **errp)
> MemoryRegion *envm_data = g_new(MemoryRegion, 1);
> MemoryRegion *qspi_xip_mem = g_new(MemoryRegion, 1);
> char *plic_hart_config;
> - NICInfo *nd;
> int i;
>
> sysbus_realize(SYS_BUS_DEVICE(&s->e_cpus), &error_abort);
> @@ -411,17 +410,8 @@ static void microchip_pfsoc_soc_realize(DeviceState *dev, Error **errp)
> memmap[MICROCHIP_PFSOC_USB].size);
>
> /* GEMs */
> -
> - nd = &nd_table[0];
> - if (nd->used) {
> - qemu_check_nic_model(nd, TYPE_CADENCE_GEM);
> - qdev_set_nic_properties(DEVICE(&s->gem0), nd);
> - }
> - nd = &nd_table[1];
> - if (nd->used) {
> - qemu_check_nic_model(nd, TYPE_CADENCE_GEM);
> - qdev_set_nic_properties(DEVICE(&s->gem1), nd);
> - }
> + qemu_configure_nic_device(DEVICE(&s->gem0), true, NULL);
> + qemu_configure_nic_device(DEVICE(&s->gem1), true, NULL);
>
> object_property_set_int(OBJECT(&s->gem0), "revision", GEM_REVISION, errp);
> object_property_set_int(OBJECT(&s->gem0), "phy-addr", 8, errp);
> diff --git a/hw/riscv/sifive_u.c b/hw/riscv/sifive_u.c
> index ec76dce6c9..5207ec1fa5 100644
> --- a/hw/riscv/sifive_u.c
> +++ b/hw/riscv/sifive_u.c
> @@ -789,7 +789,6 @@ static void sifive_u_soc_realize(DeviceState *dev, Error **errp)
> MemoryRegion *l2lim_mem = g_new(MemoryRegion, 1);
> char *plic_hart_config;
> int i, j;
> - NICInfo *nd = &nd_table[0];
>
> qdev_prop_set_uint32(DEVICE(&s->u_cpus), "num-harts", ms->smp.cpus - 1);
> qdev_prop_set_uint32(DEVICE(&s->u_cpus), "hartid-base", 1);
> @@ -893,11 +892,7 @@ static void sifive_u_soc_realize(DeviceState *dev, Error **errp)
> }
> sysbus_mmio_map(SYS_BUS_DEVICE(&s->otp), 0, memmap[SIFIVE_U_DEV_OTP].base);
>
> - /* FIXME use qdev NIC properties instead of nd_table[] */
> - if (nd->used) {
> - qemu_check_nic_model(nd, TYPE_CADENCE_GEM);
> - qdev_set_nic_properties(DEVICE(&s->gem), nd);
> - }
> + qemu_configure_nic_device(DEVICE(&s->gem), true, NULL);
> object_property_set_int(OBJECT(&s->gem), "revision", GEM_REVISION,
> &error_abort);
> if (!sysbus_realize(SYS_BUS_DEVICE(&s->gem), errp)) {
Reviewed-by: Thomas Huth <thuth@redhat.com>
^ permalink raw reply [flat|nested] 105+ messages in thread
* Re: [PATCH v3 36/46] hw/mips/jazz: use qemu_find_nic_info()
2024-01-26 16:29 ` Thomas Huth
@ 2024-01-26 16:38 ` David Woodhouse
0 siblings, 0 replies; 105+ messages in thread
From: David Woodhouse @ 2024-01-26 16:38 UTC (permalink / raw)
To: Thomas Huth, qemu-devel, Philippe Mathieu-Daudé
Cc: Richard Henderson, Beniamino Galvani, Peter Maydell,
Strahinja Jankovic, Niek Linnenbank, Cédric Le Goater,
Andrew Jeffery, Edgar E. Iglesias, Alistair Francis, Helge Deller,
Paolo Bonzini, Eduardo Habkost, Michael S. Tsirkin,
Marcel Apfelbaum, Song Gao, Huacai Chen, Jiaxun Yang,
Hervé Poussineau, Aleksandar Rikalo, Aurelien Jarno,
Jason Wang, Jia Liu, Stafford Horne, Mark Cave-Ayland,
Nicholas Piggin, Daniel Henrique Barboza, David Gibson,
Harsh Prateek Bora, Bin Meng, Palmer Dabbelt, Weiwei Li,
Liu Zhiwei, Halil Pasic, Christian Borntraeger, Eric Farman,
David Hildenbrand, Ilya Leoshkevich, Yoshinori Sato
[-- Attachment #1: Type: text/plain, Size: 784 bytes --]
On Fri, 2024-01-26 at 17:29 +0100, Thomas Huth wrote:
> On 08/01/2024 21.27, David Woodhouse wrote:
> > From: David Woodhouse <dwmw@amazon.co.uk>
> >
> > Extract the MAC address from the NICInfo, or generate one explicitly if
> > there was no corresponding NIC configuration, to put it in the PROM.
>
> Uh, I don't see any MAC handling in the patch below? Is this the right
> comment for this patch?
Ah, that must be from an earlier iteration of the patch.
The code in mips_jazz_init_net() would only create the net device if a
corresponding configuration exists, so the "…or generate one
explicitly…" part went away.
The code to put the MAC address in the PROM *is* there, but I just
haven't touched it. I'll drop that sentence from the commit message.
[-- Attachment #2: smime.p7s --]
[-- Type: application/pkcs7-signature, Size: 5965 bytes --]
^ permalink raw reply [flat|nested] 105+ messages in thread
* Re: [PATCH v3 42/46] hw/xtensa/xtfpga: use qemu_create_nic_device()
2024-01-08 20:27 ` [PATCH v3 42/46] hw/xtensa/xtfpga: use qemu_create_nic_device() David Woodhouse
@ 2024-01-26 16:43 ` Thomas Huth
0 siblings, 0 replies; 105+ messages in thread
From: Thomas Huth @ 2024-01-26 16:43 UTC (permalink / raw)
To: David Woodhouse, qemu-devel, Max Filippov
Cc: Philippe Mathieu-Daudé, David Woodhouse, Jason Wang
On 08/01/2024 21.27, David Woodhouse wrote:
> From: David Woodhouse <dwmw@amazon.co.uk>
>
> Signed-off-by: David Woodhouse <dwmw@amazon.co.uk>
> ---
> hw/xtensa/xtfpga.c | 13 ++++++-------
> 1 file changed, 6 insertions(+), 7 deletions(-)
>
> diff --git a/hw/xtensa/xtfpga.c b/hw/xtensa/xtfpga.c
> index fbad1c83a3..f49e6591dc 100644
> --- a/hw/xtensa/xtfpga.c
> +++ b/hw/xtensa/xtfpga.c
> @@ -141,14 +141,16 @@ static void xtfpga_net_init(MemoryRegion *address_space,
> hwaddr base,
> hwaddr descriptors,
> hwaddr buffers,
> - qemu_irq irq, NICInfo *nd)
> + qemu_irq irq)
> {
> DeviceState *dev;
> SysBusDevice *s;
> MemoryRegion *ram;
>
> - dev = qdev_new("open_eth");
> - qdev_set_nic_properties(dev, nd);
> + dev = qemu_create_nic_device("open_eth", true, NULL);
> + if (!dev) {
> + return;
> + }
>
> s = SYS_BUS_DEVICE(dev);
> sysbus_realize_and_unref(s, &error_fatal);
> @@ -301,10 +303,7 @@ static void xtfpga_init(const XtfpgaBoardDesc *board, MachineState *machine)
> memory_region_add_subregion(system_memory, board->io[1], io);
> }
> xtfpga_fpga_init(system_io, 0x0d020000, freq);
> - if (nd_table[0].used) {
> - xtfpga_net_init(system_io, 0x0d030000, 0x0d030400, 0x0d800000,
> - extints[1], nd_table);
> - }
> + xtfpga_net_init(system_io, 0x0d030000, 0x0d030400, 0x0d800000, extints[1]);
>
> serial_mm_init(system_io, 0x0d050020, 2, extints[0],
> 115200, serial_hd(0), DEVICE_NATIVE_ENDIAN);
Reviewed-by: Thomas Huth <thuth@redhat.com>
^ permalink raw reply [flat|nested] 105+ messages in thread
* Re: [PATCH v3 45/46] net: remove qemu_show_nic_models(), qemu_find_nic_model()
2024-01-08 20:27 ` [PATCH v3 45/46] net: remove qemu_show_nic_models(), qemu_find_nic_model() David Woodhouse
@ 2024-01-26 16:49 ` Thomas Huth
2024-01-26 16:54 ` David Woodhouse
0 siblings, 1 reply; 105+ messages in thread
From: Thomas Huth @ 2024-01-26 16:49 UTC (permalink / raw)
To: David Woodhouse, qemu-devel
Cc: Richard Henderson, Beniamino Galvani, Peter Maydell,
Strahinja Jankovic, Niek Linnenbank, Cédric Le Goater,
Andrew Jeffery, Joel Stanley, Igor Mitsyanko,
Jean-Christophe Dubois, Andrey Smirnov,
Philippe Mathieu-Daudé, Rob Herring, Subbaraya Sundeep,
Jan Kiszka, Tyrone Ting, Hao Wu, Radoslaw Biernacki,
Leif Lindholm, Marcin Juszkiewicz, Edgar E. Iglesias,
Alistair Francis, Helge Deller, Paolo Bonzini, Eduardo Habkost,
Michael S. Tsirkin, Marcel Apfelbaum, Song Gao, Thomas Huth,
Laurent Vivier, Huacai Chen, Jiaxun Yang, Hervé Poussineau,
Aleksandar Rikalo, Aurelien Jarno, Jason Wang, Jia Liu,
Stafford Horne, Mark Cave-Ayland, Nicholas Piggin,
Daniel Henrique Barboza, David Gibson, Harsh Prateek Bora,
Bin Meng, Palmer Dabbelt, Weiwei Li, Liu Zhiwei, Halil Pasic,
Christian Borntraeger, Eric Farman, David Hildenbrand,
Ilya Leoshkevich, Yoshinori Sato, Magnus Damm, Artyom Tarasenko,
Stefano Stabellini, Anthony Perard, Paul Durrant, Max Filippov,
qemu-arm, qemu-ppc, qemu-riscv, qemu-s390x, xen-devel,
David Woodhouse
On 08/01/2024 21.27, David Woodhouse wrote:
> From: David Woodhouse <dwmw@amazon.co.uk>
>
> These old functions can be removed now too. Let net_param_nic() print
> the full set of network devices directly, and also make it note that a
> list more specific to this platform/config will be available by using
> '-nic model=help' instead.
>
> Signed-off-by: David Woodhouse <dwmw@amazon.co.uk>
> ---
> include/net/net.h | 3 ---
> net/net.c | 39 ++++++---------------------------------
> 2 files changed, 6 insertions(+), 36 deletions(-)
>
> diff --git a/include/net/net.h b/include/net/net.h
> index 1be8b40074..19fb82833c 100644
> --- a/include/net/net.h
> +++ b/include/net/net.h
> @@ -203,9 +203,6 @@ void qemu_set_vnet_hdr_len(NetClientState *nc, int len);
> int qemu_set_vnet_le(NetClientState *nc, bool is_le);
> int qemu_set_vnet_be(NetClientState *nc, bool is_be);
> void qemu_macaddr_default_if_unset(MACAddr *macaddr);
> -int qemu_show_nic_models(const char *arg, const char *const *models);
> -int qemu_find_nic_model(NICInfo *nd, const char * const *models,
> - const char *default_model);
> NICInfo *qemu_find_nic_info(const char *typename, bool match_default,
> const char *alias);
> bool qemu_configure_nic_device(DeviceState *dev, bool match_default,
> diff --git a/net/net.c b/net/net.c
> index ffd4b42d5a..09ab0889f5 100644
> --- a/net/net.c
> +++ b/net/net.c
> @@ -977,38 +977,6 @@ GPtrArray *qemu_get_nic_models(const char *device_type)
> return nic_models;
> }
>
> -int qemu_show_nic_models(const char *arg, const char *const *models)
> -{
> - int i;
> -
> - if (!arg || !is_help_option(arg)) {
> - return 0;
> - }
> -
> - printf("Available NIC models:\n");
> - for (i = 0 ; models[i]; i++) {
> - printf("%s\n", models[i]);
> - }
> - return 1;
> -}
> -
> -int qemu_find_nic_model(NICInfo *nd, const char * const *models,
> - const char *default_model)
> -{
> - int i;
> -
> - if (!nd->model)
> - nd->model = g_strdup(default_model);
> -
> - for (i = 0 ; models[i]; i++) {
> - if (strcmp(nd->model, models[i]) == 0)
> - return i;
> - }
> -
> - error_report("Unsupported NIC model: %s", nd->model);
> - return -1;
> -}
> -
> static int net_init_nic(const Netdev *netdev, const char *name,
> NetClientState *peer, Error **errp)
> {
> @@ -1791,9 +1759,14 @@ static int net_param_nic(void *dummy, QemuOpts *opts, Error **errp)
> }
> if (is_help_option(type)) {
> GPtrArray *nic_models = qemu_get_nic_models(TYPE_DEVICE);
> + int i;
> show_netdevs();
> printf("\n");
> - qemu_show_nic_models(type, (const char **)nic_models->pdata);
> + printf("Supported NIC models "
Can we please keep "Available" instead of "Supported" ? ... since not each
NIC is supported on each machine type...
Thomas
> + "(use -nic model=help for a filtered list):\n");
> + for (i = 0 ; nic_models->pdata[i]; i++) {
> + printf("%s\n", (char *)nic_models->pdata[i]);
> + }
> g_ptr_array_free(nic_models, true);
> exit(0);
> }
^ permalink raw reply [flat|nested] 105+ messages in thread
* Re: [PATCH v3 00/46] Rework matching of network devices to -nic options
2024-01-25 0:38 ` Jason Wang
@ 2024-01-26 16:51 ` Thomas Huth
2024-01-28 12:37 ` David Woodhouse
0 siblings, 1 reply; 105+ messages in thread
From: Thomas Huth @ 2024-01-26 16:51 UTC (permalink / raw)
To: Jason Wang, David Woodhouse; +Cc: qemu-devel
On 25/01/2024 01.38, Jason Wang wrote:
> On Wed, Jan 24, 2024 at 9:14 PM David Woodhouse <dwmw2@infradead.org> wrote:
>>
>> Hi Jason,
>>
>> I think this series probably lives or dies with you. I think it's a
>> worthwhile cleanup, but I no longer have an immediate need for it; I
>> shipped a slightly ugly workaround in QEMU 8.2.
>>
>> Please could you let me know if it's worth persisting with it?
>
> Yes it is.
Agreed! It would be great of getting rid of the ugly global nd_table[] finally!
> Thomas, I remember you've done tweaks for -nic in the past. would you
> like to review this series?
I tried to skim through the patches today, some nits here and there, but
nothing sever, so IMHO it should be fine once they are fixed.
HTH,
Thomas
^ permalink raw reply [flat|nested] 105+ messages in thread
* Re: [PATCH v3 45/46] net: remove qemu_show_nic_models(), qemu_find_nic_model()
2024-01-26 16:49 ` Thomas Huth
@ 2024-01-26 16:54 ` David Woodhouse
0 siblings, 0 replies; 105+ messages in thread
From: David Woodhouse @ 2024-01-26 16:54 UTC (permalink / raw)
To: Thomas Huth, qemu-devel
Cc: Richard Henderson, Beniamino Galvani, Peter Maydell,
Strahinja Jankovic, Niek Linnenbank, Cédric Le Goater,
Andrew Jeffery, Joel Stanley, Igor Mitsyanko,
Jean-Christophe Dubois, Andrey Smirnov,
Philippe Mathieu-Daudé, Rob Herring, Subbaraya Sundeep,
Jan Kiszka, Tyrone Ting, Hao Wu, Radoslaw Biernacki,
Leif Lindholm, Marcin Juszkiewicz, Edgar E. Iglesias,
Alistair Francis, Helge Deller, Paolo Bonzini, Eduardo Habkost,
Michael S. Tsirkin, Marcel Apfelbaum, Song Gao, Thomas Huth,
Laurent Vivier, Huacai Chen, Jiaxun Yang, Hervé Poussineau,
Aleksandar Rikalo, Aurelien Jarno, Jason Wang, Jia Liu,
Stafford Horne, Mark Cave-Ayland, Nicholas Piggin,
Daniel Henrique Barboza, David Gibson, Harsh Prateek Bora,
Bin Meng, Palmer Dabbelt, Weiwei Li, Liu Zhiwei, Halil Pasic,
Christian Borntraeger, Eric Farman, David Hildenbrand,
Ilya Leoshkevich, Yoshinori Sato, Magnus Damm, Artyom Tarasenko,
Stefano Stabellini, Anthony Perard, Paul Durrant, Max Filippov,
qemu-arm, qemu-ppc, qemu-riscv, qemu-s390x, xen-devel
[-- Attachment #1: Type: text/plain, Size: 199 bytes --]
On Fri, 2024-01-26 at 17:49 +0100, Thomas Huth wrote:
>
> Can we please keep "Available" instead of "Supported" ? ... since not each
> NIC is supported on each machine type...
Done, thanks.
[-- Attachment #2: smime.p7s --]
[-- Type: application/pkcs7-signature, Size: 5965 bytes --]
^ permalink raw reply [flat|nested] 105+ messages in thread
* Re: [PATCH v3 00/46] Rework matching of network devices to -nic options
2024-01-26 16:51 ` Thomas Huth
@ 2024-01-28 12:37 ` David Woodhouse
0 siblings, 0 replies; 105+ messages in thread
From: David Woodhouse @ 2024-01-28 12:37 UTC (permalink / raw)
To: Thomas Huth, Jason Wang; +Cc: qemu-devel
[-- Attachment #1: Type: text/plain, Size: 1043 bytes --]
On Fri, 2024-01-26 at 17:51 +0100, Thomas Huth wrote:
> On 25/01/2024 01.38, Jason Wang wrote:
> > On Wed, Jan 24, 2024 at 9:14 PM David Woodhouse <dwmw2@infradead.org> wrote:
> > >
> > > Hi Jason,
> > >
> > > I think this series probably lives or dies with you. I think it's a
> > > worthwhile cleanup, but I no longer have an immediate need for it; I
> > > shipped a slightly ugly workaround in QEMU 8.2.
> > >
> > > Please could you let me know if it's worth persisting with it?
> >
> > Yes it is.
>
> Agreed! It would be great of getting rid of the ugly global nd_table[] finally!
>
> > Thomas, I remember you've done tweaks for -nic in the past. would you
> > like to review this series?
>
> I tried to skim through the patches today, some nits here and there, but
> nothing sever, so IMHO it should be fine once they are fixed.
Thank you for the reviews! I think I've covered everything in v4 which
I posted yesterday, except possible one Reviewed-by: tag went AWOL
which I'll round up for next time.
[-- Attachment #2: smime.p7s --]
[-- Type: application/pkcs7-signature, Size: 5965 bytes --]
^ permalink raw reply [flat|nested] 105+ messages in thread
end of thread, other threads:[~2024-01-28 12:39 UTC | newest]
Thread overview: 105+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-01-08 20:26 [PATCH v3 00/46] Rework matching of network devices to -nic options David Woodhouse
2024-01-08 20:26 ` [PATCH v3 01/46] net: add qemu_{configure, create}_nic_device(), qemu_find_nic_info() David Woodhouse
2024-01-26 11:10 ` Thomas Huth
2024-01-26 14:16 ` David Woodhouse
2024-01-26 14:24 ` Thomas Huth
2024-01-26 14:34 ` David Woodhouse
2024-01-26 14:39 ` Thomas Huth
2024-01-26 14:43 ` Peter Maydell
2024-01-26 15:19 ` [PATCH v3 01/46] net: add qemu_{configure,create}_nic_device(), qemu_find_nic_info() David Woodhouse
2024-01-26 15:33 ` [PATCH v3 01/46] net: add qemu_{configure, create}_nic_device(), qemu_find_nic_info() Peter Maydell
2024-01-26 15:43 ` [PATCH v3 01/46] net: add qemu_{configure,create}_nic_device(), qemu_find_nic_info() David Woodhouse
2024-01-08 20:26 ` [PATCH v3 02/46] net: report list of available models according to platform David Woodhouse
2024-01-26 14:33 ` Thomas Huth
2024-01-26 14:46 ` David Woodhouse
2024-01-26 14:50 ` Thomas Huth
2024-01-08 20:26 ` [PATCH v3 03/46] net: add qemu_create_nic_bus_devices() David Woodhouse
2024-01-26 14:41 ` Thomas Huth
2024-01-08 20:26 ` [PATCH v3 04/46] hw/pci: add pci_init_nic_devices(), pci_init_nic_in_slot() David Woodhouse
2024-01-08 20:26 ` [PATCH v3 05/46] hw/i386/pc: use qemu_get_nic_info() and pci_init_nic_devices() David Woodhouse
2024-01-26 10:43 ` Thomas Huth
2024-01-26 11:13 ` David Woodhouse
2024-01-26 11:20 ` Thomas Huth
2024-01-26 11:25 ` David Woodhouse
2024-01-26 13:45 ` Thomas Huth
2024-01-26 13:56 ` David Woodhouse
2024-01-08 20:26 ` [PATCH v3 06/46] hw/xen: use qemu_create_nic_bus_devices() to instantiate Xen NICs David Woodhouse
2024-01-08 20:26 ` [PATCH v3 07/46] hw/alpha/dp264: use pci_init_nic_devices() David Woodhouse
2024-01-26 15:28 ` Thomas Huth
2024-01-08 20:26 ` [PATCH v3 08/46] hw/arm/sbsa-ref: " David Woodhouse
2024-01-08 20:26 ` [PATCH v3 09/46] hw/arm/virt: " David Woodhouse
2024-01-26 15:30 ` Thomas Huth
2024-01-08 20:26 ` [PATCH v3 10/46] hw/hppa: " David Woodhouse
2024-01-26 15:38 ` Thomas Huth
2024-01-08 20:26 ` [PATCH v3 11/46] hw/loongarch: " David Woodhouse
2024-01-09 1:50 ` gaosong
2024-01-08 20:26 ` [PATCH v3 12/46] hw/mips/fuloong2e: " David Woodhouse
2024-01-26 13:53 ` Thomas Huth
2024-01-08 20:26 ` [PATCH v3 13/46] hw/mips/malta: " David Woodhouse
2024-01-26 13:57 ` Thomas Huth
2024-01-08 20:26 ` [PATCH v3 14/46] hw/mips/loongson3_virt: " David Woodhouse
2024-01-26 13:58 ` Thomas Huth
2024-01-08 20:26 ` [PATCH v3 15/46] hw/ppc/prep: " David Woodhouse
2024-01-26 14:06 ` Thomas Huth
2024-01-08 20:26 ` [PATCH v3 16/46] hw/ppc/spapr: use qemu_get_nic_info() and pci_init_nic_devices() David Woodhouse
2024-01-26 14:09 ` Thomas Huth
2024-01-08 20:26 ` [PATCH v3 17/46] hw/ppc: use pci_init_nic_devices() David Woodhouse
2024-01-26 14:14 ` Thomas Huth
2024-01-08 20:26 ` [PATCH v3 18/46] hw/sh4/r2d: " David Woodhouse
2024-01-08 20:26 ` [PATCH v3 19/46] hw/sparc64/sun4u: " David Woodhouse
2024-01-26 14:21 ` Thomas Huth
2024-01-08 20:26 ` [PATCH v3 20/46] hw/xtensa/virt: " David Woodhouse
2024-01-26 14:47 ` Thomas Huth
2024-01-08 20:26 ` [PATCH v3 21/46] hw/arm/allwinner: use qemu_configure_nic_device() David Woodhouse
2024-01-26 14:58 ` Thomas Huth
2024-01-08 20:26 ` [PATCH v3 22/46] hw/arm/aspeed: " David Woodhouse
2024-01-16 13:32 ` Cédric Le Goater
2024-01-08 20:26 ` [PATCH v3 23/46] hw/arm/exynos4: use qemu_create_nic_device() David Woodhouse
2024-01-26 15:01 ` Thomas Huth
2024-01-08 20:26 ` [PATCH v3 24/46] hw/arm/fsl: use qemu_configure_nic_device() David Woodhouse
2024-01-26 15:03 ` Thomas Huth
2024-01-08 20:26 ` [PATCH v3 25/46] hw/net/smc91c111: " David Woodhouse
2024-01-26 15:14 ` Thomas Huth
2024-01-26 15:37 ` David Woodhouse
2024-01-08 20:26 ` [PATCH v3 26/46] hw/net/lan9118: " David Woodhouse
2024-01-08 20:26 ` [PATCH v3 27/46] hw/arm/highbank: use qemu_create_nic_device() David Woodhouse
2024-01-26 15:48 ` Thomas Huth
2024-01-08 20:26 ` [PATCH v3 28/46] hw/arm/npcm7xx: use qemu_configure_nic_device, allow emc0/emc1 as aliases David Woodhouse
2024-01-08 20:26 ` [PATCH v3 29/46] hw/arm/stellaris: use qemu_find_nic_info() David Woodhouse
2024-01-08 20:26 ` [PATCH v3 30/46] hw/arm: use qemu_configure_nic_device() David Woodhouse
2024-01-08 20:27 ` [PATCH v3 31/46] hw/net/etraxfs-eth: " David Woodhouse
2024-01-26 16:23 ` Thomas Huth
2024-01-08 20:27 ` [PATCH v3 32/46] hw/m68k/mcf5208: use qemu_create_nic_device() David Woodhouse
2024-01-26 15:51 ` Thomas Huth
2024-01-08 20:27 ` [PATCH v3 33/46] hw/m68k/q800: use qemu_find_nic_info() David Woodhouse
2024-01-08 20:27 ` [PATCH v3 34/46] hw/microblaze: use qemu_configure_nic_device() David Woodhouse
2024-01-26 15:57 ` Thomas Huth
2024-01-08 20:27 ` [PATCH v3 35/46] hw/mips/mipssim: use qemu_create_nic_device() David Woodhouse
2024-01-26 16:20 ` Thomas Huth
2024-01-08 20:27 ` [PATCH v3 36/46] hw/mips/jazz: use qemu_find_nic_info() David Woodhouse
2024-01-26 16:29 ` Thomas Huth
2024-01-26 16:38 ` David Woodhouse
2024-01-08 20:27 ` [PATCH v3 37/46] hw/net/lasi_i82596: use qemu_configure_nic_device() David Woodhouse
2024-01-26 16:30 ` Thomas Huth
2024-01-08 20:27 ` [PATCH v3 38/46] hw/openrisc/openrisc_sim: use qemu_create_nic_device() David Woodhouse
2024-01-26 16:34 ` Thomas Huth
2024-01-08 20:27 ` [PATCH v3 39/46] hw/riscv: use qemu_configure_nic_device() David Woodhouse
2024-01-26 16:36 ` Thomas Huth
2024-01-08 20:27 ` [PATCH v3 40/46] hw/s390x/s390-virtio-ccw: use qemu_create_nic_device() David Woodhouse
2024-01-16 13:26 ` Thomas Huth
2024-01-08 20:27 ` [PATCH v3 41/46] hw/sparc/sun4m: use qemu_find_nic_info() David Woodhouse
2024-01-08 20:27 ` [PATCH v3 42/46] hw/xtensa/xtfpga: use qemu_create_nic_device() David Woodhouse
2024-01-26 16:43 ` Thomas Huth
2024-01-08 20:27 ` [PATCH v3 43/46] net: remove qemu_check_nic_model() David Woodhouse
2024-01-26 16:01 ` Thomas Huth
2024-01-08 20:27 ` [PATCH v3 44/46] hw/pci: remove pci_nic_init_nofail() David Woodhouse
2024-01-26 16:03 ` Thomas Huth
2024-01-08 20:27 ` [PATCH v3 45/46] net: remove qemu_show_nic_models(), qemu_find_nic_model() David Woodhouse
2024-01-26 16:49 ` Thomas Huth
2024-01-26 16:54 ` David Woodhouse
2024-01-08 20:27 ` [PATCH v3 46/46] net: make nb_nics and nd_table[] static in net/net.c David Woodhouse
2024-01-26 16:08 ` Thomas Huth
2024-01-24 13:13 ` [PATCH v3 00/46] Rework matching of network devices to -nic options David Woodhouse
2024-01-25 0:38 ` Jason Wang
2024-01-26 16:51 ` Thomas Huth
2024-01-28 12:37 ` David Woodhouse
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).