Skip to contentSkip to conversation

Add more CONFIG switches to make the build more modular

PATCH In review Thomas Huth 5 participants 20 messages Oct 19, 2018 – Oct 20, 2018

lore
Share & tools
lore
#0 lore raw

cover Add more CONFIG switches to make the build more modular

We've got many devices that can not be created directly by the user and which are only used on some few target architectures. When the user does not compile the corresponding qemu-softmmu-xxx target, we should also not compile these devices. Add some CONFIG switches to make our build system a little bit more flexible here.

Thomas Huth (5):
configs: Add a CONFIG_OR_IRQ switch for the or-irq device
configs: Add a CONFIG_SPLIT_IRQ switch for the split-irq device
configs: Add a CONFIG_REGISTER switch for the "register" device
configs: Add a CONFIG_UNIMP switch for the "unimplemented-device"
configs: Add a CONFIG_SMC37C669 switch for the "smc37c669-superio"
device

 default-configs/alpha-softmmu.mak      | 1 +
 default-configs/arm-softmmu.mak        | 4 ++++
 default-configs/microblaze-softmmu.mak | 1 +
 default-configs/ppc-softmmu.mak        | 1 +
 hw/core/Makefile.objs                  | 6 +++---
 hw/isa/Makefile.objs                   | 3 ++-
 hw/misc/Makefile.objs                  | 2 +-
 7 files changed, 13 insertions(+), 5 deletions(-)
Signature · 1 line
1.8.3.1
#1 lore raw

PATCH 1/5 configs: Add a CONFIG_OR_IRQ switch for the or-irq device

If the user only wants to compile targets that do not require the "or-irq" device, we should also not compile or-irq.c. Add a proper CONFIG_OR_IRQ switch to be able to choose this more flexibly.

---
 default-configs/arm-softmmu.mak | 1 +
 default-configs/ppc-softmmu.mak | 1 +
 hw/core/Makefile.objs           | 2 +-
 3 files changed, 3 insertions(+), 1 deletion(-)
default-configs/arm-softmmu.mak +1 -0
index 2420491..dc6a581 100644
@@ -4,6 +4,7 @@ include pci.mak
 include usb.mak
 CONFIG_VGA=y
 CONFIG_NAND=y
+CONFIG_OR_IRQ=y
 CONFIG_ECC=y
 CONFIG_SERIAL=y
 CONFIG_SERIAL_ISA=y
default-configs/ppc-softmmu.mak +1 -0
index 3181bbf..83235af 100644
@@ -68,3 +68,4 @@ CONFIG_PC87312=y
 CONFIG_PCSPK=y
 CONFIG_IDE_ISA=y
 CONFIG_CS4231A=y
+CONFIG_OR_IRQ=y
hw/core/Makefile.objs +1 -1
index b736ce2..29b5cfd 100644
@@ -17,7 +17,7 @@ common-obj-$(CONFIG_SOFTMMU) += loader.o
 common-obj-$(CONFIG_FITLOADER) += loader-fit.o
 common-obj-$(CONFIG_SOFTMMU) += qdev-properties-system.o
 common-obj-$(CONFIG_SOFTMMU) += register.o
-common-obj-$(CONFIG_SOFTMMU) += or-irq.o
+common-obj-$(CONFIG_OR_IRQ) += or-irq.o
 common-obj-$(CONFIG_SOFTMMU) += split-irq.o
 common-obj-$(CONFIG_PLATFORM_BUS) += platform-bus.o
 common-obj-$(CONFIG_SOFTMMU) += generic-loader.o
Signature · 1 line
1.8.3.1
#2 lore raw

Re: [Qemu-arm] [PATCH 1/5] configs: Add a CONFIG_OR_IRQ switch for the or-irq device

Quoted 28 lines · Thomas Huth

If the user only wants to compile targets that do not require the "or-irq" device, we should also not compile or-irq.c. Add a proper CONFIG_OR_IRQ switch to be able to choose this more flexibly.

---
 default-configs/arm-softmmu.mak | 1 +
 default-configs/ppc-softmmu.mak | 1 +
 hw/core/Makefile.objs           | 2 +-
 3 files changed, 3 insertions(+), 1 deletion(-)
default-configs/arm-softmmu.mak +1 -0
index 2420491..dc6a581 100644
@@ -4,6 +4,7 @@ include pci.mak
 include usb.mak
 CONFIG_VGA=y
 CONFIG_NAND=y
+CONFIG_OR_IRQ=y
 CONFIG_ECC=y
 CONFIG_SERIAL=y
 CONFIG_SERIAL_ISA=y
default-configs/ppc-softmmu.mak +0 -0
index 3181bbf..83235af 100644

default-configs/ppc-softmmu.mak CONFIG_PC87312=y · line 71

Quoted 4 lines
default-configs/ppc-softmmu.mak +1 -0
@@ -68,3 +68,4 @@ CONFIG_PC87312=y
 CONFIG_PCSPK=y
 CONFIG_IDE_ISA=y
 CONFIG_CS4231A=y
+CONFIG_OR_IRQ=y

Again, this is generic. We shouldn't need to mess with default-configs files if we use it in some other architecture.

thanks
-- PMM

#3 lore raw

PATCH 2/5 configs: Add a CONFIG_SPLIT_IRQ switch for the split-irq device

In reply to Thomas Huth

If the user only wants to compile targets that do not require the "split-irq" device, we should also not compile split-irq.c. Add a proper CONFIG_SPLIT_IRQ switch to be able to choose this more flexibly.

---
 default-configs/arm-softmmu.mak | 1 +
 hw/core/Makefile.objs           | 2 +-
 2 files changed, 2 insertions(+), 1 deletion(-)
default-configs/arm-softmmu.mak +1 -0
index dc6a581..a3a3b66 100644
@@ -5,6 +5,7 @@ include usb.mak
 CONFIG_VGA=y
 CONFIG_NAND=y
 CONFIG_OR_IRQ=y
+CONFIG_SPLIT_IRQ=y
 CONFIG_ECC=y
 CONFIG_SERIAL=y
 CONFIG_SERIAL_ISA=y
hw/core/Makefile.objs +1 -1
index 29b5cfd..cafbe01 100644
@@ -18,7 +18,7 @@ common-obj-$(CONFIG_FITLOADER) += loader-fit.o
 common-obj-$(CONFIG_SOFTMMU) += qdev-properties-system.o
 common-obj-$(CONFIG_SOFTMMU) += register.o
 common-obj-$(CONFIG_OR_IRQ) += or-irq.o
-common-obj-$(CONFIG_SOFTMMU) += split-irq.o
+common-obj-$(CONFIG_SPLIT_IRQ) += split-irq.o
 common-obj-$(CONFIG_PLATFORM_BUS) += platform-bus.o
 common-obj-$(CONFIG_SOFTMMU) += generic-loader.o
 
Signature · 1 line
1.8.3.1
#4 lore raw

Re: [Qemu-arm] [PATCH 2/5] configs: Add a CONFIG_SPLIT_IRQ switch for the split-irq device

Quoted 15 lines · Thomas Huth

If the user only wants to compile targets that do not require the "split-irq" device, we should also not compile split-irq.c. Add a proper CONFIG_SPLIT_IRQ switch to be able to choose this more flexibly.

---
 default-configs/arm-softmmu.mak | 1 +
 hw/core/Makefile.objs           | 2 +-
 2 files changed, 2 insertions(+), 1 deletion(-)
default-configs/arm-softmmu.mak +0 -0
index dc6a581..a3a3b66 100644

default-configs/arm-softmmu.mak include usb.mak · line 11

Quoted 7 lines
default-configs/arm-softmmu.mak +1 -0
@@ -5,6 +5,7 @@ include usb.mak
 CONFIG_VGA=y
 CONFIG_NAND=y
 CONFIG_OR_IRQ=y
+CONFIG_SPLIT_IRQ=y
 CONFIG_ECC=y
 CONFIG_SERIAL=y
 CONFIG_SERIAL_ISA=y

Generic device, not arm-specific.

thanks
-- PMM

#5 lore raw

PATCH 3/5 configs: Add a CONFIG_REGISTER switch for the "register" device

In reply to Thomas Huth

If the user only wants to compile targets that do not require the "register" device, we should also not compile register.c. Add a proper CONFIG_REGISTER switch to be able to choose this more flexibly.

---
 default-configs/arm-softmmu.mak        | 1 +
 default-configs/microblaze-softmmu.mak | 1 +
 hw/core/Makefile.objs                  | 2 +-
 3 files changed, 3 insertions(+), 1 deletion(-)
default-configs/arm-softmmu.mak +1 -0
index a3a3b66..6f2ffc1 100644
@@ -6,6 +6,7 @@ CONFIG_VGA=y
 CONFIG_NAND=y
 CONFIG_OR_IRQ=y
 CONFIG_SPLIT_IRQ=y
+CONFIG_REGISTER=y
 CONFIG_ECC=y
 CONFIG_SERIAL=y
 CONFIG_SERIAL_ISA=y
default-configs/microblaze-softmmu.mak +1 -0
index 7fca8e4..b5c5659 100644
@@ -10,3 +10,4 @@ CONFIG_XILINX_ETHLITE=y
 CONFIG_SSI=y
 CONFIG_SSI_M25P80=y
 CONFIG_XLNX_ZYNQMP=y
+CONFIG_REGISTER=y
hw/core/Makefile.objs +1 -1
index cafbe01..cb7c149 100644
@@ -16,7 +16,7 @@ common-obj-$(CONFIG_SOFTMMU) += machine.o
 common-obj-$(CONFIG_SOFTMMU) += loader.o
 common-obj-$(CONFIG_FITLOADER) += loader-fit.o
 common-obj-$(CONFIG_SOFTMMU) += qdev-properties-system.o
-common-obj-$(CONFIG_SOFTMMU) += register.o
+common-obj-$(CONFIG_REGISTER) += register.o
 common-obj-$(CONFIG_OR_IRQ) += or-irq.o
 common-obj-$(CONFIG_SPLIT_IRQ) += split-irq.o
 common-obj-$(CONFIG_PLATFORM_BUS) += platform-bus.o
Signature · 1 line
1.8.3.1
#6 lore raw

Re: [Qemu-devel] [PATCH 3/5] configs: Add a CONFIG_REGISTER switch for the "register" device

Quoted 37 lines · Thomas Huth

If the user only wants to compile targets that do not require the "register" device, we should also not compile register.c. Add a proper CONFIG_REGISTER switch to be able to choose this more flexibly.

---
 default-configs/arm-softmmu.mak        | 1 +
 default-configs/microblaze-softmmu.mak | 1 +
 hw/core/Makefile.objs                  | 2 +-
 3 files changed, 3 insertions(+), 1 deletion(-)
default-configs/arm-softmmu.mak +1 -0
index a3a3b66..6f2ffc1 100644
@@ -6,6 +6,7 @@ CONFIG_VGA=y
 CONFIG_NAND=y
 CONFIG_OR_IRQ=y
 CONFIG_SPLIT_IRQ=y
+CONFIG_REGISTER=y
 CONFIG_ECC=y
 CONFIG_SERIAL=y
 CONFIG_SERIAL_ISA=y
default-configs/microblaze-softmmu.mak +1 -0
index 7fca8e4..b5c5659 100644
@@ -10,3 +10,4 @@ CONFIG_XILINX_ETHLITE=y
 CONFIG_SSI=y
 CONFIG_SSI_M25P80=y
 CONFIG_XLNX_ZYNQMP=y
+CONFIG_REGISTER=y
hw/core/Makefile.objs +0 -0
index cafbe01..cb7c149 100644

hw/core/Makefile.objs common-obj-$(CONFIG_SOFTMMU) += machine.o · line 22

Quoted 8 lines
hw/core/Makefile.objs +1 -1
@@ -16,7 +16,7 @@ common-obj-$(CONFIG_SOFTMMU) += machine.o
 common-obj-$(CONFIG_SOFTMMU) += loader.o
 common-obj-$(CONFIG_FITLOADER) += loader-fit.o
 common-obj-$(CONFIG_SOFTMMU) += qdev-properties-system.o
-common-obj-$(CONFIG_SOFTMMU) += register.o
+common-obj-$(CONFIG_REGISTER) += register.o
 common-obj-$(CONFIG_OR_IRQ) += or-irq.o
 common-obj-$(CONFIG_SPLIT_IRQ) += split-irq.o
 common-obj-$(CONFIG_PLATFORM_BUS) += platform-bus.o

Another generic facility.

thanks
-- PMM

#7 lore raw

PATCH 4/5 configs: Add a CONFIG_UNIMP switch for the "unimplemented-device"

In reply to Thomas Huth

The "unimplemented-device" is currently only used for one arm board. Let's add a CONFIG switch to make sure that we only compile it when it is really necessary.

---
 default-configs/arm-softmmu.mak | 1 +
 hw/misc/Makefile.objs           | 2 +-
 2 files changed, 2 insertions(+), 1 deletion(-)
default-configs/arm-softmmu.mak +1 -0
index 6f2ffc1..dc9730f 100644
@@ -7,6 +7,7 @@ CONFIG_NAND=y
 CONFIG_OR_IRQ=y
 CONFIG_SPLIT_IRQ=y
 CONFIG_REGISTER=y
+CONFIG_UNIMP=y
 CONFIG_ECC=y
 CONFIG_SERIAL=y
 CONFIG_SERIAL_ISA=y
hw/misc/Makefile.objs +1 -1
index 6d50b03..c604859 100644
@@ -9,7 +9,7 @@ common-obj-$(CONFIG_PCI_TESTDEV) += pci-testdev.o
 common-obj-$(CONFIG_EDU) += edu.o
 common-obj-$(CONFIG_PCA9552) += pca9552.o
 
-common-obj-y += unimp.o
+common-obj-$(CONFIG_UNIMP) += unimp.o
 common-obj-$(CONFIG_FW_CFG_DMA) += vmcoreinfo.o
 
 # ARM devices
Signature · 1 line
1.8.3.1
#8 lore raw

Re: [Qemu-arm] [PATCH 4/5] configs: Add a CONFIG_UNIMP switch for the "unimplemented-device"

Quoted 1 line · Thomas Huth

The "unimplemented-device" is currently only used for one arm board.

? It's used in all the MPS boards, several of the imx SoCs, the nrf51 SoC used by the microbit, and by the stellaris boards.

Quoted 14 lines

Let's add a CONFIG switch to make sure that we only compile it when it is really necessary.

---
 default-configs/arm-softmmu.mak | 1 +
 hw/misc/Makefile.objs           | 2 +-
 2 files changed, 2 insertions(+), 1 deletion(-)
default-configs/arm-softmmu.mak +0 -0
index 6f2ffc1..dc9730f 100644

default-configs/arm-softmmu.mak CONFIG_NAND=y · line 13

Quoted 7 lines
default-configs/arm-softmmu.mak +1 -0
@@ -7,6 +7,7 @@ CONFIG_NAND=y
 CONFIG_OR_IRQ=y
 CONFIG_SPLIT_IRQ=y
 CONFIG_REGISTER=y
+CONFIG_UNIMP=y
 CONFIG_ECC=y
 CONFIG_SERIAL=y
 CONFIG_SERIAL_ISA=y

This seems awkward to me. The 'unimplemented' device is supposed to be an entirely generic thing usable in any board model. If we only turn it on in the arm-softmmu.mak then it means faffing around with the default-configs/ whenever it gets used in a different architecture.

In particular, there's a pull request on the list that uses it in a sparc board, so this patch will break compile on sparc once that pullreq lands.

thanks
-- PMM

#9 lore raw

Re: [Qemu-arm] [PATCH 4/5] configs: Add a CONFIG_UNIMP switch for the "unimplemented-device"

Quoted 25 lines · Peter Maydell
Quoted 1 line · Thomas Huth

The "unimplemented-device" is currently only used for one arm board.

? It's used in all the MPS boards, several of the imx SoCs, the nrf51 SoC used by the microbit, and by the stellaris boards.

Quoted 19 lines

Let's add a CONFIG switch to make sure that we only compile it when it is really necessary.

---
 default-configs/arm-softmmu.mak | 1 +
 hw/misc/Makefile.objs           | 2 +-
 2 files changed, 2 insertions(+), 1 deletion(-)
default-configs/arm-softmmu.mak +1 -0
index 6f2ffc1..dc9730f 100644
@@ -7,6 +7,7 @@ CONFIG_NAND=y
 CONFIG_OR_IRQ=y
 CONFIG_SPLIT_IRQ=y
 CONFIG_REGISTER=y
+CONFIG_UNIMP=y
 CONFIG_ECC=y
Quoted 8 lines

default-configs/arm-softmmu.mak CONFIG_NAND=y · line 13

Quoted 2 lines
default-configs/arm-softmmu.mak +0 -0
 CONFIG_SERIAL=y
 CONFIG_SERIAL_ISA=y

This seems awkward to me. The 'unimplemented' device is supposed to be an entirely generic thing usable in any board model. If we only turn it on in the arm-softmmu.mak then it means faffing around with the default-configs/ whenever it gets used in a different architecture.

The device has been added 1.5 years ago, and so far no other target is using it yet. So it's very seldom that you've got to expect any changes, I think.

Anyway, it's also not only about speeding up the compilation process for people who don't want to use the corresponding targets, this is also very useful for downstream distributions of QEMU who want to make sure to not compile-in more devices than urgently needed. For example we disable this device here and the others in downstream RHEL version of QEMU, and I guess it might be interesting for nemu, too. So having more flexibility here in the Makefiles would be really great to decrease the burden with downstream-specific patches...

Quoted 3 lines

In particular, there's a pull request on the list that uses it in a sparc board, so this patch will break compile on sparc once that pullreq lands.

Ok, then please disregard this patch here, but it would be great if you could still consider the other patches of this series.

Thomas

#10 lore raw

Re: [Qemu-arm] [PATCH 4/5] configs: Add a CONFIG_UNIMP switch for the "unimplemented-device"

Quoted 8 lines · Thomas Huth

Anyway, it's also not only about speeding up the compilation process for people who don't want to use the corresponding targets, this is also very useful for downstream distributions of QEMU who want to make sure to not compile-in more devices than urgently needed. For example we disable this device here and the others in downstream RHEL version of QEMU, and I guess it might be interesting for nemu, too. So having more flexibility here in the Makefiles would be really great to decrease the burden with downstream-specific patches...

I think if we want to support this for downstreams we need to look at something better than the default-configs/ mechanism for it. (Perhaps the kconfig-alike Paolo mentioned in a previous thread?)

My dividing line for "should something go in a specific architecture's default-configs/ list" is "is this an SoC or real piece of hardware that is naturally limited to one or a few SoCs".

thanks
-- PMM

#11 lore raw

Re: [Qemu-arm] [PATCH 4/5] configs: Add a CONFIG_UNIMP switch for the "unimplemented-device"

Quoted 4 lines · Peter Maydell

I think if we want to support this for downstreams we need to look at something better than the default-configs/ mechanism for it. (Perhaps the kconfig-alike Paolo mentioned in a previous thread?)

True, but having more CONFIG_* symbols does not complicate the switch to a system like that one.

Quoted 4 lines

My dividing line for "should something go in a specific architecture's default-configs/ list" is "is this an SoC or real piece of hardware that is naturally limited to one or a few SoCs".

I tend to agree, but I'd rather have a separate CONFIG_* symbol as soon as two different *targets* (aka default-configs/*.mak files) use a device. So the SPARC change that you mention would actually be a good reason to introduce CONFIG_UNIMP, for example.

Paolo

#12 lore raw

Re: [Qemu-arm] [PATCH 4/5] configs: Add a CONFIG_UNIMP switch for the "unimplemented-device"

In reply to Thomas Huth
Quoted 36 lines · Thomas Huth
Quoted 25 lines · Peter Maydell
Quoted 1 line · Thomas Huth

The "unimplemented-device" is currently only used for one arm board.

? It's used in all the MPS boards, several of the imx SoCs, the nrf51 SoC used by the microbit, and by the stellaris boards.

Quoted 19 lines

Let's add a CONFIG switch to make sure that we only compile it when it is really necessary.

---
 default-configs/arm-softmmu.mak | 1 +
 hw/misc/Makefile.objs           | 2 +-
 2 files changed, 2 insertions(+), 1 deletion(-)
default-configs/arm-softmmu.mak +1 -0
index 6f2ffc1..dc9730f 100644
@@ -7,6 +7,7 @@ CONFIG_NAND=y
 CONFIG_OR_IRQ=y
 CONFIG_SPLIT_IRQ=y
 CONFIG_REGISTER=y
+CONFIG_UNIMP=y
 CONFIG_ECC=y
Quoted 8 lines

default-configs/arm-softmmu.mak CONFIG_NAND=y · line 13

Quoted 2 lines
default-configs/arm-softmmu.mak +0 -0
 CONFIG_SERIAL=y
 CONFIG_SERIAL_ISA=y

This seems awkward to me. The 'unimplemented' device is supposed to be an entirely generic thing usable in any board model. If we only turn it on in the arm-softmmu.mak then it means faffing around with the default-configs/ whenever it gets used in a different architecture.

Quoted 3 lines

The device has been added 1.5 years ago, and so far no other target is using it yet. So it's very seldom that you've got to expect any changes, I think.

I disagree with this (and this patch).

First because I'm using it heavily on MIPS and PPC boards, when no datashits are available.
I'll submit that during the next merge window, although the MIPS tree seems now reluctant to that kind of hobbyist work.

Second, because it is very clean when you implement a SoC to first start with an empty UNIMP region and a cpu core,
then declare the mmio regions for each device (still UNIMP), then you can slowly add devices one at a time.
This let you (me, so far) push at most a dozen of tiny patches in a working series, instead of a small series of a dozen of huge patches, or a series of 100 tiny patches.

See https://lists.gnu.org/archive/html/qemu-devel/2018-05/msg06094.html
about this approach.

Regards,

Phil.

Quoted 17 lines

Anyway, it's also not only about speeding up the compilation process for people who don't want to use the corresponding targets, this is also very useful for downstream distributions of QEMU who want to make sure to not compile-in more devices than urgently needed. For example we disable this device here and the others in downstream RHEL version of QEMU, and I guess it might be interesting for nemu, too. So having more flexibility here in the Makefiles would be really great to decrease the burden with downstream-specific patches...

Quoted 3 lines

In particular, there's a pull request on the list that uses it in a sparc board, so this patch will break compile on sparc once that pullreq lands.

Ok, then please disregard this patch here, but it would be great if you could still consider the other patches of this series.

Thomas

#13 lore raw

Re: [Qemu-devel] [PATCH 4/5] configs: Add a CONFIG_UNIMP switch for the "unimplemented-device"

Quoted 6 lines · Philippe Mathieu-Daudé

First because I'm using it heavily on MIPS and PPC boards, when no datashits are available.
I'll submit that during the next merge window, although the MIPS tree seems now reluctant to that kind of hobbyist work.

Quoted 7 lines

Second, because it is very clean when you implement a SoC to first start with an empty UNIMP region and a cpu core,
then declare the mmio regions for each device (still UNIMP), then you can slowly add devices one at a time.
This let you (me, so far) push at most a dozen of tiny patches in a working series, instead of a small series of a dozen of huge patches, or a series of 100 tiny patches.

I don't see however why it's a problem to add/remove CONFIG_UNIMP to default-configs though (in the Kconfig world the board would "select UNIMP").

Paolo

#14 lore raw

Re: [Qemu-devel] [PATCH 4/5] configs: Add a CONFIG_UNIMP switch for the "unimplemented-device"

Quoted 15 lines · Paolo Bonzini
Quoted 6 lines · Philippe Mathieu-Daudé

First because I'm using it heavily on MIPS and PPC boards, when no datashits are available.
I'll submit that during the next merge window, although the MIPS tree seems now reluctant to that kind of hobbyist work.

Quoted 7 lines

Second, because it is very clean when you implement a SoC to first start with an empty UNIMP region and a cpu core,
then declare the mmio regions for each device (still UNIMP), then you can slowly add devices one at a time.
This let you (me, so far) push at most a dozen of tiny patches in a working series, instead of a small series of a dozen of huge patches, or a series of 100 tiny patches.

Quoted 3 lines

I don't see however why it's a problem to add/remove CONFIG_UNIMP to default-configs though (in the Kconfig world the board would "select UNIMP").

Well, it's extra friction for people writing new board models, and the benefit of having CONFIG_UNIMP is all to downstream redistributors, not to upstream...

I'm not vetoing this patchset, but I do think that if RedHat wants to distribute significantly-cut-down binaries then it would be worth working on a mechanism for making that more conveniently doable, rather than just hacking up the very creaky default-configs/ stuff.

thanks
-- PMM

#15 lore raw

Re: [Qemu-arm] [Qemu-devel] [PATCH 4/5] configs: Add a CONFIG_UNIMP switch for the "unimplemented-device"

Quoted 24 lines · Peter Maydell
Quoted 15 lines · Paolo Bonzini
Quoted 6 lines · Philippe Mathieu-Daudé

First because I'm using it heavily on MIPS and PPC boards, when no datashits are available.
I'll submit that during the next merge window, although the MIPS tree seems now reluctant to that kind of hobbyist work.

Quoted 7 lines

Second, because it is very clean when you implement a SoC to first start with an empty UNIMP region and a cpu core,
then declare the mmio regions for each device (still UNIMP), then you can slowly add devices one at a time.
This let you (me, so far) push at most a dozen of tiny patches in a working series, instead of a small series of a dozen of huge patches, or a series of 100 tiny patches.

Quoted 3 lines

I don't see however why it's a problem to add/remove CONFIG_UNIMP to default-configs though (in the Kconfig world the board would "select UNIMP").

Well, it's extra friction for people writing new board models, and the benefit of having CONFIG_UNIMP is all to downstream redistributors, not to upstream...

Quoted 5 lines

I'm not vetoing this patchset, but I do think that if RedHat wants to distribute significantly-cut-down binaries then it would be worth working on a mechanism for making that more conveniently doable, rather than just hacking up the very creaky default-configs/ stuff.

Yes, we are going to meet the NEMU guys at KVM Forum and talk about the "mini-Kconfig" stuff; in the meanwhile, default-configs/ is what we have, it was enough while we were caring basically only about x86 and thus we only needed to disable PCI devices, but now it's showing its age.

Paolo

#16 lore raw

PATCH 5/5 configs: Add a CONFIG_SMC37C669 switch for the "smc37c669-superio" device

In reply to Thomas Huth

This device is not user-creatable and currently only used for the "alpha" target. So if the user does not want to compile alpha-softmmu, we should also not compile this device. Add a proper config switch to be able to compile this more flexibly.

---
 default-configs/alpha-softmmu.mak | 1 +
 hw/isa/Makefile.objs              | 3 ++-
 2 files changed, 3 insertions(+), 1 deletion(-)
default-configs/alpha-softmmu.mak +1 -0
index bbe361f..eb58b40 100644
@@ -19,3 +19,4 @@ CONFIG_IDE_CMD646=y
 CONFIG_I8259=y
 CONFIG_MC146818RTC=y
 CONFIG_ISA_TESTDEV=y
+CONFIG_SMC37C669=y
hw/isa/Makefile.objs +2 -1
index 83e06f6..9e106df 100644
@@ -1,9 +1,10 @@
 common-obj-$(CONFIG_ISA_BUS) += isa-bus.o
-common-obj-$(CONFIG_ISA_BUS) += isa-superio.o smc37c669-superio.o
+common-obj-$(CONFIG_ISA_BUS) += isa-superio.o
 common-obj-$(CONFIG_APM) += apm.o
 common-obj-$(CONFIG_I82378) += i82378.o
 common-obj-$(CONFIG_PC87312) += pc87312.o
 common-obj-$(CONFIG_PIIX4) += piix4.o
 common-obj-$(CONFIG_VT82C686) += vt82c686.o
+common-obj-$(CONFIG_SMC37C669) += smc37c669-superio.o
 
 obj-$(CONFIG_LPC_ICH9) += lpc_ich9.o
Signature · 1 line
1.8.3.1
Reviewed-by on v1 5/5
#17 lore raw

Re: [Qemu-arm] [PATCH 5/5] configs: Add a CONFIG_SMC37C669 switch for the "smc37c669-superio" device

Quoted 25 lines · Thomas Huth

This device is not user-creatable and currently only used for the "alpha" target. So if the user does not want to compile alpha-softmmu, we should also not compile this device. Add a proper config switch to be able to compile this more flexibly.

---
 default-configs/alpha-softmmu.mak | 1 +
 hw/isa/Makefile.objs              | 3 ++-
 2 files changed, 3 insertions(+), 1 deletion(-)
default-configs/alpha-softmmu.mak +1 -0
index bbe361f..eb58b40 100644
@@ -19,3 +19,4 @@ CONFIG_IDE_CMD646=y
 CONFIG_I8259=y
 CONFIG_MC146818RTC=y
 CONFIG_ISA_TESTDEV=y
+CONFIG_SMC37C669=y
hw/isa/Makefile.objs +0 -0
index 83e06f6..9e106df 100644

hw/isa/Makefile.objs line 8

Quoted 9 lines
hw/isa/Makefile.objs +2 -1
@@ -1,9 +1,10 @@
 common-obj-$(CONFIG_ISA_BUS) += isa-bus.o
-common-obj-$(CONFIG_ISA_BUS) += isa-superio.o smc37c669-superio.o
+common-obj-$(CONFIG_ISA_BUS) += isa-superio.o
 common-obj-$(CONFIG_APM) += apm.o
 common-obj-$(CONFIG_I82378) += i82378.o
 common-obj-$(CONFIG_PC87312) += pc87312.o
 common-obj-$(CONFIG_PIIX4) += piix4.o
 common-obj-$(CONFIG_VT82C686) += vt82c686.o
+common-obj-$(CONFIG_SMC37C669) += smc37c669-superio.o

Should isa-superio.o also go in its own config flag?

thanks
-- PMM

#18 lore raw

Re: [Qemu-arm] [Qemu-devel] [PATCH 5/5] configs: Add a CONFIG_SMC37C669 switch for the "smc37c669-superio" device

Quoted 38 lines · Peter Maydell
Quoted 25 lines · Thomas Huth

This device is not user-creatable and currently only used for the "alpha" target. So if the user does not want to compile alpha-softmmu, we should also not compile this device. Add a proper config switch to be able to compile this more flexibly.

---
 default-configs/alpha-softmmu.mak | 1 +
 hw/isa/Makefile.objs              | 3 ++-
 2 files changed, 3 insertions(+), 1 deletion(-)
default-configs/alpha-softmmu.mak +1 -0
index bbe361f..eb58b40 100644
@@ -19,3 +19,4 @@ CONFIG_IDE_CMD646=y
 CONFIG_I8259=y
 CONFIG_MC146818RTC=y
 CONFIG_ISA_TESTDEV=y
+CONFIG_SMC37C669=y
hw/isa/Makefile.objs +0 -0
index 83e06f6..9e106df 100644

hw/isa/Makefile.objs line 8

Quoted 9 lines
hw/isa/Makefile.objs +2 -1
@@ -1,9 +1,10 @@
 common-obj-$(CONFIG_ISA_BUS) += isa-bus.o
-common-obj-$(CONFIG_ISA_BUS) += isa-superio.o smc37c669-superio.o
+common-obj-$(CONFIG_ISA_BUS) += isa-superio.o
 common-obj-$(CONFIG_APM) += apm.o
 common-obj-$(CONFIG_I82378) += i82378.o
 common-obj-$(CONFIG_PC87312) += pc87312.o
 common-obj-$(CONFIG_PIIX4) += piix4.o
 common-obj-$(CONFIG_VT82C686) += vt82c686.o
+common-obj-$(CONFIG_SMC37C669) += smc37c669-superio.o
Quoted 1 line

Should isa-superio.o also go in its own config flag?

It could be, but pc87312/smc37c669/vt82c686 inherit of TYPE_ISA_SUPERIO so would require something like:

common-obj-$(call land,$(CONFIG_ISA_SUPERIO),$(CONFIG_PC87312)) \
            += pc87312.o
common-obj-$(call land,$(CONFIG_ISA_SUPERIO),$(CONFIG_VT82C686)) \
            += vt82c686.o
common-obj-$(call land,$(CONFIG_ISA_SUPERIO),$(CONFIG_SMC37C669)) \
            += smc37c669-superio.o
Quoted 4 lines

thanks
-- PMM

#19 lore raw

Re: [Qemu-arm] [Qemu-devel] [PATCH 5/5] configs: Add a CONFIG_SMC37C669 switch for the "smc37c669-superio" device

Quoted 6 lines · Philippe Mathieu-Daudé
Quoted 1 line · Peter Maydell

Should isa-superio.o also go in its own config flag?

It could be, but pc87312/smc37c669/vt82c686 inherit of TYPE_ISA_SUPERIO so would require something like:

Quoted 6 lines
common-obj-$(call land,$(CONFIG_ISA_SUPERIO),$(CONFIG_PC87312)) \
            += pc87312.o
common-obj-$(call land,$(CONFIG_ISA_SUPERIO),$(CONFIG_VT82C686)) \
            += vt82c686.o
common-obj-$(call land,$(CONFIG_ISA_SUPERIO),$(CONFIG_SMC37C669)) \
            += smc37c669-superio.o

This is where it would be nice to be able to say
"CONFIG_FOO requires CONFIG_BAR", indeed.

thanks
-- PMM