All of lore.kernel.org
 help / color / mirror / Atom feed
* [U-Boot] [PATCH 2/5] x86: Make QEMU the default vendor
       [not found] <1430839470-22950-1-git-send-email-bmeng.cn@gmail.com>
@ 2015-05-05 15:24 ` Bin Meng
  2015-05-06  4:01   ` Simon Glass
  2015-05-05 15:24 ` [U-Boot] [PATCH 3/5] x86: qemu: Wrap E1000 driver only when DM_PCI is not used Bin Meng
                   ` (2 subsequent siblings)
  3 siblings, 1 reply; 10+ messages in thread
From: Bin Meng @ 2015-05-05 15:24 UTC (permalink / raw)
  To: u-boot

Now that we have QEMU support, make it the default vendor in the
'make menuconfig' screen.

Signed-off-by: Bin Meng <bmeng.cn@gmail.com>
---

 arch/x86/Kconfig | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/arch/x86/Kconfig b/arch/x86/Kconfig
index 3d02620..0b78f10 100644
--- a/arch/x86/Kconfig
+++ b/arch/x86/Kconfig
@@ -12,7 +12,7 @@ config SYS_VSNPRINTF
 
 choice
 	prompt "Mainboard vendor"
-	default VENDOR_COREBOOT
+	default VENDOR_EMULATION
 
 config VENDOR_COREBOOT
 	bool "coreboot"
-- 
1.8.2.1

^ permalink raw reply related	[flat|nested] 10+ messages in thread

* [U-Boot] [PATCH 3/5] x86: qemu: Wrap E1000 driver only when DM_PCI is not used
       [not found] <1430839470-22950-1-git-send-email-bmeng.cn@gmail.com>
  2015-05-05 15:24 ` [U-Boot] [PATCH 2/5] x86: Make QEMU the default vendor Bin Meng
@ 2015-05-05 15:24 ` Bin Meng
  2015-05-05 15:35   ` Bin Meng
  2015-05-05 15:24 ` [U-Boot] [PATCH 4/5] x86: Change coreboot default build configuration to QEMU Bin Meng
  2015-05-05 15:24 ` [U-Boot] [PATCH 5/5] x86: Update README.x86 for QEMU support Bin Meng
  3 siblings, 1 reply; 10+ messages in thread
From: Bin Meng @ 2015-05-05 15:24 UTC (permalink / raw)
  To: u-boot

E1000 driver has not been converted to driver model, so wrap it
only when DM_PCI is not used.

Signed-off-by: Bin Meng <bmeng.cn@gmail.com>
---

 include/configs/qemu-x86.h | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/include/configs/qemu-x86.h b/include/configs/qemu-x86.h
index 463620d..281aaa5 100644
--- a/include/configs/qemu-x86.h
+++ b/include/configs/qemu-x86.h
@@ -32,7 +32,9 @@
 #define CONFIG_PCI_IO_SIZE		0xe000
 
 #define CONFIG_PCI_PNP
+#ifndef CONFIG_DM_PCI
 #define CONFIG_E1000
+#endif
 
 #define CONFIG_STD_DEVICES_SETTINGS	"stdin=serial\0" \
 					"stdout=serial\0" \
-- 
1.8.2.1

^ permalink raw reply related	[flat|nested] 10+ messages in thread

* [U-Boot] [PATCH 4/5] x86: Change coreboot default build configuration to QEMU
       [not found] <1430839470-22950-1-git-send-email-bmeng.cn@gmail.com>
  2015-05-05 15:24 ` [U-Boot] [PATCH 2/5] x86: Make QEMU the default vendor Bin Meng
  2015-05-05 15:24 ` [U-Boot] [PATCH 3/5] x86: qemu: Wrap E1000 driver only when DM_PCI is not used Bin Meng
@ 2015-05-05 15:24 ` Bin Meng
  2015-05-06  4:01   ` Simon Glass
  2015-05-05 15:24 ` [U-Boot] [PATCH 5/5] x86: Update README.x86 for QEMU support Bin Meng
  3 siblings, 1 reply; 10+ messages in thread
From: Bin Meng @ 2015-05-05 15:24 UTC (permalink / raw)
  To: u-boot

QEMU is much easier for us test booting U-Boot as a coreboot payload
than having a real board like chromebook_link.

Signed-off-by: Bin Meng <bmeng.cn@gmail.com>
---

 board/coreboot/coreboot/Kconfig | 6 +++---
 configs/coreboot-x86_defconfig  | 1 +
 2 files changed, 4 insertions(+), 3 deletions(-)

diff --git a/board/coreboot/coreboot/Kconfig b/board/coreboot/coreboot/Kconfig
index 6a04158..69e3437 100644
--- a/board/coreboot/coreboot/Kconfig
+++ b/board/coreboot/coreboot/Kconfig
@@ -16,21 +16,21 @@ comment "coreboot-specific options"
 
 config SYS_CONFIG_NAME
 	string "Board configuration file"
-	default "chromebook_link"
+	default "qemu-x86"
 	help
 	  This option selects the board configuration file in include/configs/
 	  directory to be used to build U-Boot for coreboot.
 
 config DEFAULT_DEVICE_TREE
 	string "Board Device Tree Source (dts) file"
-	default "chromebook_link"
+	default "qemu-x86"
 	help
 	  This option selects the board Device Tree Source (dts) file in
 	  arch/x86/dts/ directory to be used to build U-Boot for coreboot.
 
 config SYS_CAR_ADDR
 	hex "Board specific Cache-As-RAM (CAR) address"
-	default 0x19200000
+	default 0x01920000
 	help
 	  This option specifies the board specific Cache-As-RAM (CAR) address.
 
diff --git a/configs/coreboot-x86_defconfig b/configs/coreboot-x86_defconfig
index 799853f..4af38f5 100644
--- a/configs/coreboot-x86_defconfig
+++ b/configs/coreboot-x86_defconfig
@@ -3,3 +3,4 @@ CONFIG_VENDOR_COREBOOT=y
 CONFIG_TARGET_COREBOOT=y
 CONFIG_OF_CONTROL=y
 CONFIG_DM_PCI=y
+CONFIG_TSC_CALIBRATION_BYPASS=y
-- 
1.8.2.1

^ permalink raw reply related	[flat|nested] 10+ messages in thread

* [U-Boot] [PATCH 5/5] x86: Update README.x86 for QEMU support
       [not found] <1430839470-22950-1-git-send-email-bmeng.cn@gmail.com>
                   ` (2 preceding siblings ...)
  2015-05-05 15:24 ` [U-Boot] [PATCH 4/5] x86: Change coreboot default build configuration to QEMU Bin Meng
@ 2015-05-05 15:24 ` Bin Meng
  2015-05-06  4:01   ` Simon Glass
  3 siblings, 1 reply; 10+ messages in thread
From: Bin Meng @ 2015-05-05 15:24 UTC (permalink / raw)
  To: u-boot

Document how to build and test U-Boot with QEMU.

Signed-off-by: Bin Meng <bmeng.cn@gmail.com>
---

 doc/README.x86 | 65 +++++++++++++++++++++++++++++++++++++++++++---------------
 1 file changed, 48 insertions(+), 17 deletions(-)

diff --git a/doc/README.x86 b/doc/README.x86
index ef13fb4..4a30f68 100644
--- a/doc/README.x86
+++ b/doc/README.x86
@@ -14,12 +14,13 @@ including supported boards, build instructions, todo list, etc.
 Status
 ------
 U-Boot supports running as a coreboot [1] payload on x86. So far only Link
-(Chromebook Pixel) has been tested, but it should work with minimal adjustments
-on other x86 boards since coreboot deals with most of the low-level details.
+(Chromebook Pixel) and QEMU [2] x86 targets have been tested, but it should
+work with minimal adjustments on other x86 boards since coreboot deals with
+most of the low-level details.
 
 U-Boot also supports booting directly from x86 reset vector without coreboot,
-aka raw support or bare support. Currently Link, Intel Crown Bay, Intel
-Minnowboard Max and Intel Galileo support running U-Boot 'bare metal'.
+aka raw support or bare support. Currently Link, QEMU x86 targets and all
+Intel boards support running U-Boot 'bare metal'.
 
 As for loading an OS, U-Boot supports directly booting a 32-bit or 64-bit
 Linux kernel as part of a FIT image. It also supports a compressed zImage.
@@ -32,15 +33,15 @@ on other architectures, like below:
 $ make coreboot-x86_defconfig
 $ make all
 
-Note this default configuration will build a U-Boot payload for the Link board.
+Note this default configuration will build a U-Boot payload for the QEMU board.
 To build a coreboot payload against another board, you can change the build
 configuration during the 'make menuconfig' process.
 
 x86 architecture  --->
 	...
-	(chromebook_link) Board configuration file
-	(chromebook_link) Board Device Tree Source (dts) file
-	(0x19200000) Board specific Cache-As-RAM (CAR) address
+	(qemu-x86) Board configuration file
+	(qemu-x86) Board Device Tree Source (dts) file
+	(0x01920000) Board specific Cache-As-RAM (CAR) address
 	(0x4000) Board specific Cache-As-RAM (CAR) size
 
 Change the 'Board configuration file' and 'Board Device Tree Source (dts) file'
@@ -78,7 +79,7 @@ Find the following files:
 * ./northbridge/intel/sandybridge/systemagent-r6.bin
 
 The 3rd one should be renamed to mrc.bin.
-As for the video ROM, you can get it here [2].
+As for the video ROM, you can get it here [3].
 Make sure all these binary blobs are put in the board directory.
 
 Now you can build U-Boot and obtain u-boot.rom:
@@ -88,8 +89,8 @@ $ make all
 
 Intel Crown Bay specific instructions:
 
-U-Boot support of Intel Crown Bay board [3] relies on a binary blob called
-Firmware Support Package [4] to perform all the necessary initialization steps
+U-Boot support of Intel Crown Bay board [4] relies on a binary blob called
+Firmware Support Package [5] to perform all the necessary initialization steps
 as documented in the BIOS Writer Guide, including initialization of the CPU,
 memory controller, chipset and certain bus interfaces.
 
@@ -178,6 +179,13 @@ Now you can build U-Boot and obtain u-boot.rom
 $ make galileo_defconfig
 $ make all
 
+QEMU x86 target instructions:
+
+To build u-boot.rom for QEMU x86 targets, just simply run
+
+$ make qemu-x86_defconfig
+$ make all
+
 Test with coreboot
 ------------------
 For testing U-Boot as the coreboot payload, there are things that need be paid
@@ -207,10 +215,33 @@ At present it seems that for Minnowboard Max, coreboot does not pass through
 the video information correctly (it always says the resolution is 0x0). This
 works correctly for link though.
 
+Test with QEMU
+--------------
+QEMU is a fancy emulator that can enable us to test U-Boot without access to
+a real x86 board. To launch QEMU with u-boot.rom, call QEMU as follows:
+
+$ qemu-system-i386 -nographic -bios path/to/u-boot.rom
+
+This will instantiate an emulated x86 board with i440FX and PIIX chipset. QEMU
+also supports emulating an x86 board with Q35 and ICH9 based chipset, which is
+also supported by U-Boot. To instantiate such a machine, call QEMU with:
+
+$ qemu-system-i386 -nographic -bios path/to/u-boot.rom -M q35
+
+Note by default QEMU instantiated boards only have 128 MiB system memory. But
+it is enough to have U-Boot boot and function correctly. You can increase the
+system memory by pass '-m' parameter to QEMU if you want more memory:
+
+$ qemu-system-i386 -nographic -bios path/to/u-boot.rom -m 1024
+
+This creates a board with 1 GiB system memory. Currently U-Boot for QEMU only
+supports 3 GiB maximum system memory and reserves the last 1 GiB address space
+for PCI device memory-mapped I/O and other stuff, so the maximum value of '-m'
+would be 3072.
 
 CPU Microcode
 -------------
-Modern CPUs usually require a special bit stream called microcode [5] to be
+Modern CPUs usually require a special bit stream called microcode [6] to be
 loaded on the processor after power up in order to function properly. U-Boot
 has already integrated these as hex dumps in the source tree.
 
@@ -227,7 +258,6 @@ arch/x86/dts/ for these device tree source files.
 
 Useful Commands
 ---------------
-
 In keeping with the U-Boot philosophy of providing functions to check and
 adjust internal settings, there are several x86-specific commands that may be
 useful:
@@ -314,7 +344,8 @@ TODO List
 References
 ----------
 [1] http://www.coreboot.org
-[2] http://www.coreboot.org/~stepan/pci8086,0166.rom
-[3] http://www.intel.com/content/www/us/en/embedded/design-tools/evaluation-platforms/atom-e660-eg20t-development-kit.html
-[4] http://www.intel.com/fsp
-[5] http://en.wikipedia.org/wiki/Microcode
+[2] http://www.qemu.org
+[3] http://www.coreboot.org/~stepan/pci8086,0166.rom
+[4] http://www.intel.com/content/www/us/en/embedded/design-tools/evaluation-platforms/atom-e660-eg20t-development-kit.html
+[5] http://www.intel.com/fsp
+[6] http://en.wikipedia.org/wiki/Microcode
-- 
1.8.2.1

^ permalink raw reply related	[flat|nested] 10+ messages in thread

* [U-Boot] [PATCH 3/5] x86: qemu: Wrap E1000 driver only when DM_PCI is not used
  2015-05-05 15:24 ` [U-Boot] [PATCH 3/5] x86: qemu: Wrap E1000 driver only when DM_PCI is not used Bin Meng
@ 2015-05-05 15:35   ` Bin Meng
  2015-05-05 15:43     ` Simon Glass
  0 siblings, 1 reply; 10+ messages in thread
From: Bin Meng @ 2015-05-05 15:35 UTC (permalink / raw)
  To: u-boot

Hi Simon,

On Tue, May 5, 2015 at 11:24 PM, Bin Meng <bmeng.cn@gmail.com> wrote:
> E1000 driver has not been converted to driver model, so wrap it
> only when DM_PCI is not used.
>
> Signed-off-by: Bin Meng <bmeng.cn@gmail.com>
> ---
>
>  include/configs/qemu-x86.h | 2 ++
>  1 file changed, 2 insertions(+)
>
> diff --git a/include/configs/qemu-x86.h b/include/configs/qemu-x86.h
> index 463620d..281aaa5 100644
> --- a/include/configs/qemu-x86.h
> +++ b/include/configs/qemu-x86.h
> @@ -32,7 +32,9 @@
>  #define CONFIG_PCI_IO_SIZE             0xe000
>
>  #define CONFIG_PCI_PNP
> +#ifndef CONFIG_DM_PCI
>  #define CONFIG_E1000

This is because E1000 driver is using pci_hose_phys_to_bus() API which
DM_PCI does not provide. Do you plan to fix this?

> +#endif
>
>  #define CONFIG_STD_DEVICES_SETTINGS    "stdin=serial\0" \
>                                         "stdout=serial\0" \
> --

Regards,
Bin

^ permalink raw reply	[flat|nested] 10+ messages in thread

* [U-Boot] [PATCH 3/5] x86: qemu: Wrap E1000 driver only when DM_PCI is not used
  2015-05-05 15:35   ` Bin Meng
@ 2015-05-05 15:43     ` Simon Glass
  2015-05-07 11:43       ` Bin Meng
  0 siblings, 1 reply; 10+ messages in thread
From: Simon Glass @ 2015-05-05 15:43 UTC (permalink / raw)
  To: u-boot

Hi Bin,

On 5 May 2015 at 09:35, Bin Meng <bmeng.cn@gmail.com> wrote:
> Hi Simon,
>
> On Tue, May 5, 2015 at 11:24 PM, Bin Meng <bmeng.cn@gmail.com> wrote:
>> E1000 driver has not been converted to driver model, so wrap it
>> only when DM_PCI is not used.
>>
>> Signed-off-by: Bin Meng <bmeng.cn@gmail.com>
>> ---
>>
>>  include/configs/qemu-x86.h | 2 ++
>>  1 file changed, 2 insertions(+)
>>
>> diff --git a/include/configs/qemu-x86.h b/include/configs/qemu-x86.h
>> index 463620d..281aaa5 100644
>> --- a/include/configs/qemu-x86.h
>> +++ b/include/configs/qemu-x86.h
>> @@ -32,7 +32,9 @@
>>  #define CONFIG_PCI_IO_SIZE             0xe000
>>
>>  #define CONFIG_PCI_PNP
>> +#ifndef CONFIG_DM_PCI
>>  #define CONFIG_E1000
>
> This is because E1000 driver is using pci_hose_phys_to_bus() API which
> DM_PCI does not provide. Do you plan to fix this?

That function can be moved to pci_compat.c to get things building.

However I believe it does not work and I don't have hardware to test
it. Do you have time to take a look?

>
>> +#endif
>>
>>  #define CONFIG_STD_DEVICES_SETTINGS    "stdin=serial\0" \
>>                                         "stdout=serial\0" \
>> --

Regards,
Simon

^ permalink raw reply	[flat|nested] 10+ messages in thread

* [U-Boot] [PATCH 2/5] x86: Make QEMU the default vendor
  2015-05-05 15:24 ` [U-Boot] [PATCH 2/5] x86: Make QEMU the default vendor Bin Meng
@ 2015-05-06  4:01   ` Simon Glass
  0 siblings, 0 replies; 10+ messages in thread
From: Simon Glass @ 2015-05-06  4:01 UTC (permalink / raw)
  To: u-boot

On 5 May 2015 at 09:24, Bin Meng <bmeng.cn@gmail.com> wrote:
> Now that we have QEMU support, make it the default vendor in the
> 'make menuconfig' screen.
>
> Signed-off-by: Bin Meng <bmeng.cn@gmail.com>
> ---
>
>  arch/x86/Kconfig | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/arch/x86/Kconfig b/arch/x86/Kconfig
> index 3d02620..0b78f10 100644
> --- a/arch/x86/Kconfig
> +++ b/arch/x86/Kconfig
> @@ -12,7 +12,7 @@ config SYS_VSNPRINTF
>
>  choice
>         prompt "Mainboard vendor"
> -       default VENDOR_COREBOOT
> +       default VENDOR_EMULATION
>
>  config VENDOR_COREBOOT
>         bool "coreboot"
> --
> 1.8.2.1
>

Acked-by: Simon Glass <sjg@chromium.org>
Tested-by: Simon Glass <sjg@chromium.org>

^ permalink raw reply	[flat|nested] 10+ messages in thread

* [U-Boot] [PATCH 4/5] x86: Change coreboot default build configuration to QEMU
  2015-05-05 15:24 ` [U-Boot] [PATCH 4/5] x86: Change coreboot default build configuration to QEMU Bin Meng
@ 2015-05-06  4:01   ` Simon Glass
  0 siblings, 0 replies; 10+ messages in thread
From: Simon Glass @ 2015-05-06  4:01 UTC (permalink / raw)
  To: u-boot

On 5 May 2015 at 09:24, Bin Meng <bmeng.cn@gmail.com> wrote:
> QEMU is much easier for us test booting U-Boot as a coreboot payload
> than having a real board like chromebook_link.
>
> Signed-off-by: Bin Meng <bmeng.cn@gmail.com>
> ---
>
>  board/coreboot/coreboot/Kconfig | 6 +++---
>  configs/coreboot-x86_defconfig  | 1 +
>  2 files changed, 4 insertions(+), 3 deletions(-)

Agreed.

Acked-by: Simon Glass <sjg@chromium.org>
Tested-by: Simon Glass <sjg@chromium.org>

^ permalink raw reply	[flat|nested] 10+ messages in thread

* [U-Boot] [PATCH 5/5] x86: Update README.x86 for QEMU support
  2015-05-05 15:24 ` [U-Boot] [PATCH 5/5] x86: Update README.x86 for QEMU support Bin Meng
@ 2015-05-06  4:01   ` Simon Glass
  0 siblings, 0 replies; 10+ messages in thread
From: Simon Glass @ 2015-05-06  4:01 UTC (permalink / raw)
  To: u-boot

On 5 May 2015 at 09:24, Bin Meng <bmeng.cn@gmail.com> wrote:
> Document how to build and test U-Boot with QEMU.
>
> Signed-off-by: Bin Meng <bmeng.cn@gmail.com>
> ---
>
>  doc/README.x86 | 65 +++++++++++++++++++++++++++++++++++++++++++---------------
>  1 file changed, 48 insertions(+), 17 deletions(-)

Acked-by: Simon Glass <sjg@chromium.org>

^ permalink raw reply	[flat|nested] 10+ messages in thread

* [U-Boot] [PATCH 3/5] x86: qemu: Wrap E1000 driver only when DM_PCI is not used
  2015-05-05 15:43     ` Simon Glass
@ 2015-05-07 11:43       ` Bin Meng
  0 siblings, 0 replies; 10+ messages in thread
From: Bin Meng @ 2015-05-07 11:43 UTC (permalink / raw)
  To: u-boot

Hi Simon,

On Tue, May 5, 2015 at 11:43 PM, Simon Glass <sjg@chromium.org> wrote:
> Hi Bin,
>
> On 5 May 2015 at 09:35, Bin Meng <bmeng.cn@gmail.com> wrote:
>> Hi Simon,
>>
>> On Tue, May 5, 2015 at 11:24 PM, Bin Meng <bmeng.cn@gmail.com> wrote:
>>> E1000 driver has not been converted to driver model, so wrap it
>>> only when DM_PCI is not used.
>>>
>>> Signed-off-by: Bin Meng <bmeng.cn@gmail.com>
>>> ---
>>>
>>>  include/configs/qemu-x86.h | 2 ++
>>>  1 file changed, 2 insertions(+)
>>>
>>> diff --git a/include/configs/qemu-x86.h b/include/configs/qemu-x86.h
>>> index 463620d..281aaa5 100644
>>> --- a/include/configs/qemu-x86.h
>>> +++ b/include/configs/qemu-x86.h
>>> @@ -32,7 +32,9 @@
>>>  #define CONFIG_PCI_IO_SIZE             0xe000
>>>
>>>  #define CONFIG_PCI_PNP
>>> +#ifndef CONFIG_DM_PCI
>>>  #define CONFIG_E1000
>>
>> This is because E1000 driver is using pci_hose_phys_to_bus() API which
>> DM_PCI does not provide. Do you plan to fix this?
>
> That function can be moved to pci_compat.c to get things building.
>
> However I believe it does not work and I don't have hardware to test
> it. Do you have time to take a look?
>

Looks like moving it to pci_common.c can fix this and the driver still
works. I will send a v2 soon.

Regards,
Bin

^ permalink raw reply	[flat|nested] 10+ messages in thread

end of thread, other threads:[~2015-05-07 11:43 UTC | newest]

Thread overview: 10+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
     [not found] <1430839470-22950-1-git-send-email-bmeng.cn@gmail.com>
2015-05-05 15:24 ` [U-Boot] [PATCH 2/5] x86: Make QEMU the default vendor Bin Meng
2015-05-06  4:01   ` Simon Glass
2015-05-05 15:24 ` [U-Boot] [PATCH 3/5] x86: qemu: Wrap E1000 driver only when DM_PCI is not used Bin Meng
2015-05-05 15:35   ` Bin Meng
2015-05-05 15:43     ` Simon Glass
2015-05-07 11:43       ` Bin Meng
2015-05-05 15:24 ` [U-Boot] [PATCH 4/5] x86: Change coreboot default build configuration to QEMU Bin Meng
2015-05-06  4:01   ` Simon Glass
2015-05-05 15:24 ` [U-Boot] [PATCH 5/5] x86: Update README.x86 for QEMU support Bin Meng
2015-05-06  4:01   ` Simon Glass

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.