Sign Up
Log In
Log In
or
Sign Up
Places
All Projects
Status Monitor
Collapse sidebar
openSUSE:12.2:ARM
lilo
lilo.ppc-kvm.patch
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File lilo.ppc-kvm.patch of Package lilo
From 0ba80aae32aa1fa02fc4851e1bd45026f4cb72ae Mon Sep 17 00:00:00 2001 From: Dinar Valeev <dvaleev@suse.com> Date: Mon, 13 Aug 2012 13:03:08 +0200 Subject: [PATCH] get OF path for virtio. Don't run nvsetenv where /dev/nvram is not available (under KVM). Extend search of vscsi disks to disk@id,lun --- lilo-chrp.lib | 24 ++++++++++++------------ lilo.new | 8 +++++++- show_of_path.sh | 23 +++++++++++++++++++++-- 3 files changed, 40 insertions(+), 15 deletions(-) diff --git a/lilo-chrp.lib b/lilo-chrp.lib index 92cb2ad..f12b76d 100644 --- a/lilo-chrp.lib +++ b/lilo-chrp.lib @@ -649,7 +649,6 @@ function running_on_chrp () { fi if (( fat_boot == 1 )); then - nvsetenv bootinfo-linux "${boot_path},\\ppc\\bootinfo.txt" boot_path=${boot_path},yaboot elif [[ "${p_flags[*]}" != *type=41*type=41* ]]; then # open firmware is confused about more than one PReP partition, in that @@ -658,17 +657,18 @@ function running_on_chrp () { fi if [ "$OPTION_ACTIVATE" = "yes" ] ; then - echo "Prepending '$boot_path'" to open firmware variable boot-device - - local -a bootdevice=( $(nvsetenv boot-device) ) - bootdevice[0]=${bootdevice[0]#boot-device=} - for (( i=${#bootdevice[*]}; i-- >0; )); do - if [[ "${bootdevice[$i]}" == ${boot_path}* ]]; then - unset bootdevice[$i]; - fi - done - nvsetenv boot-device "$boot_path ${bootdevice[*]}" - + if [ is_nvram ];then + echo "Prepending '$boot_path'" to open firmware variable boot-device + + local -a bootdevice=( $(nvsetenv boot-device) ) + bootdevice[0]=${bootdevice[0]#boot-device=} + for (( i=${#bootdevice[*]}; i-- >0; )); do + if [[ "${bootdevice[$i]}" == ${boot_path}* ]]; then + unset bootdevice[$i]; + fi + done + nvsetenv boot-device "$boot_path ${bootdevice[*]}" + fi else warning "boot path not set to boot linux as requested" \ "please add '$boot_path' somewhere to your boot path manually" diff --git a/lilo.new b/lilo.new index 39aaa33..21d5180 100755 --- a/lilo.new +++ b/lilo.new @@ -672,7 +672,13 @@ while [ "$1" ]; do case "$1" in ;; esac; shift; done - +function is_nvram () { + if [ -e /dev/nvram ];then + return 0 + else + return 1 + fi +} function running_on_iseries () { source /lib/lilo/lilo-iseries.lib diff --git a/show_of_path.sh b/show_of_path.sh index 52ceb16..1beeace 100644 --- a/show_of_path.sh +++ b/show_of_path.sh @@ -327,7 +327,14 @@ case "$file_full_sysfs_path" in ide_port=$of_disk_scsi_host ide_channel=$of_disk_scsi_id - cd ../../.. + until test -f devspec + do + cd .. + if test "$PWD" = "/" + then + break + fi + done ;; */host+([0-9])/rport-+([0-9]):+([0-9])-+([0-9])/target+([0-9:])/+([0-9]):+([0-9]):+([0-9]):+([0-9])) # new sysfs layout starting with kernel 2.6.15 @@ -361,6 +368,11 @@ case "$file_full_sysfs_path" in fi done ;; + */pci+([0-9:])+([0-9]):*/virtio[0-9]) + declare spec="${file_full_sysfs_path##*/}" + dbg_show spec + cd .. + ;; *) # TODO check the rest of the (hardware) world : file_full_sysfs_path $file_full_sysfs_path @@ -481,6 +493,9 @@ if [ -f devspec ] ; then ;; ieee1394) ;; + block) + file_storage_type=virtio + ;; *) error "Unknown device type $(< ${file_of_hw_devtype}/device_type)" ;; @@ -610,7 +625,7 @@ if [ -f devspec ] ; then ;; vscsi) (( of_disk_vscsi_nr = ( (2 << 14) | (of_disk_scsi_chan<<5) | (of_disk_scsi_id<<8) | of_disk_scsi_lun ) <<48 )); # - if [ -d ${file_of_hw_devtype}/disk ]; then + if $(ls -d ${file_of_hw_devtype}/disk* >/dev/null 2>&1); then of_disk_vscsi_dir=disk elif [ -d ${file_of_hw_devtype}/sd ]; then of_disk_vscsi_dir=sd @@ -627,6 +642,10 @@ if [ -f devspec ] ; then # MacOS: boot-device=fw/node@1d20000038f29/sbp-2@c000/@0:7,\\:tbxi file_of_hw_path="${file_of_hw_devtype##/proc/device-tree}"/node@${ieee1394_id}/sbp-2/disk@0 ;; + virtio) + file_of_hw_path="${file_of_hw_devtype##/proc/device-tree}" + dbg_show file_of_hw_path + ;; *) error "Internal error, can't handle storage type '${file_storage_type}'" ;; -- 1.6.0.2
Locations
Projects
Search
Status Monitor
Help
OpenBuildService.org
Documentation
API Documentation
Code of Conduct
Contact
Support
@OBShq
Terms
openSUSE Build Service is sponsored by
The Open Build Service is an
openSUSE project
.
Sign Up
Log In
Places
Places
All Projects
Status Monitor